SSL과 TLS의 차이점


89

wikipedia에 따르면 : http://en.wikipedia.org/wiki/Transport_Layer_Security

TLS가 SSL을 대체하는 것처럼 보이지만 대부분의 웹 사이트는 여전히 SSL을 사용하고 있습니까?


4
"대부분의 웹 사이트는 여전히 SSL을 사용하고 있습니다." 다음은 프로토콜 지원의 좋은 조사의 trustworthyinternet.org/ssl-pulse/#chart-protocol-support은
대령 패닉

답변:


59

간단히 말해서 TLSv1.0은 SSLv3.1입니다. 이 질문에 대한 자세한 내용은 ServerFault 에서 찾을 수 있습니다 .

이 연구에서 알 수 있듯이 대부분의 웹 사이트는 실제로 SSLv3 및 TLSv1.0을 모두 지원합니다 (Lee, Malkin 및 Nahum의 논문 : SSL / TLS 서버의 암호화 강도 : 현재 및 최근 사례 , IMC 2007) ( IETF TLS 목록 에서 가져온 링크 ) ). 98 % 이상이 TLSv1 +를 지원합니다.

SSLv3가 여전히 사용되는 이유는 레거시 지원 때문이라고 생각합니다 (요즘 대부분의 브라우저가 TLSv1 및 일부 TLSv1.1 또는 심지어 TLSv1.2를 지원하지만). 얼마 전까지 만해도 일부 배포판에는 다른 배포판과 함께 SSLv2 (안전하지 않은 것으로 간주 됨)가 기본적으로 설정되어있었습니다.

( SSL 대 TLS가 아닌 TLS의 사용 패턴에 관한 것이 긴하지만 (실제로 SSL과 동일한 패턴을 가질 수 있음) 이 질문이 흥미로울 수 있습니다 . HTTPS는 SSL / TLS를 사용하므로 어쨌든 HTTPS에는 적용되지 않습니다. 연결 시작부터.)


23

에서 http://www.thoughtcrime.org/blog/ssl-and-the-future-of-authenticity/

90 년대 초, World Wide Web이 시작될 때 Netscape의 일부 엔지니어는 보안 HTTP 요청을 만들기위한 프로토콜을 개발했으며, 그들이 제안한 것을 SSL이라고했습니다. 당시 보안 프로토콜에 대한 지식이 상대적으로 부족 하고 Netscape의 모든 직원이 작업하고 있는 강렬한 압력을 감안할 때 이들의 노력은 엄청나게 영웅적이라고 볼 수 있습니다. 동일한 빈티지의 다른 여러 프로토콜과 달리 SSL이 오래 지속되었다는 것은 놀랍습니다. 우리는 그 이후로 많은 것을 확실히 배웠지 만 프로토콜과 API에 대한 것은 되돌아 갈 수 없다는 것입니다.

SSL 프로토콜에는 SSL 2 (1995)와 SSL 3 (1996)의 두 가지 주요 업데이트가 있습니다. 이는 채택을 용이하게하기 위해 이전 버전과 호환되도록 신중하게 수행되었습니다. 그러나 이전 버전과의 호환성은 이전 버전이 취약하다는 것을 의미 할 수 있는 보안 프로토콜의 제약입니다 .

따라서 이전 버전과의 호환성과 TLS 1.0 (1999) 이라는 새 프로토콜을 중단하기로 결정했습니다 . (돌아 보면 이름을 TLS 4로 지정하는 것이 더 명확했을 수 있습니다.)

이 프로토콜과 SSL 3.0의 차이는 크지 않지만 TLS 1.0과 SSL 3.0이 상호 운용되지 않을만큼 중요합니다.

TLS는 TLS 1.1 (2006) 및 TLS 1.2 (2008)로 두 번 수정되었습니다.

2015 년 현재 모든 SSL 버전이 손상되고 안전하지 않으며 (POODLE 공격) 브라우저가 지원을 제거하고 있습니다. TLS 1.0은 유비쿼터스이지만 사이트의 60 % 만이 TLS 1.1 및 1.2를 지원 합니다.


이 자료에 관심이 있으시면 https://www.youtube.com/watch?v=Z7Wl2FW2TcA 에서 Moxie Marlinspike의 영리하고 재미있는 이야기를 추천합니다.


1980 년대 후반에 유즈넷 뉴스 : comp.sources.unix 게시글이 Secure Sockets Layer라고 기억합니다. 이름 외에 넷스케이프가 한 일과의 관계가 많지 않다고 생각합니다.
Marquis of Lorne

11

tls1.0은 sslv3.1을 의미합니다.

tls1.1은 sslv3.2를 의미합니다.

tls1.2는 sslv3.3을 의미합니다.

rfc가 방금 이름을 변경했습니다. tls1.0의 16 진수 코드가 0x0301이며 이는 sslv3.1을 의미합니다.


2

TLS는 SSL과의 역 호환성을 유지하므로 통신 프로토콜은 여기에 언급 된 모든 버전에서 거의 동일합니다. SSL v.3, TLS 1.0 및 TLS 1.2 간의 두 가지 중요한 차이점은 PRF (pseudo-random function)와 HMAC 해싱 함수 (SHA, MD5, 핸드 셰이크)입니다.이 함수는 다음을위한 대칭 키 블록을 구성하는 데 사용됩니다. 애플리케이션 데이터 암호화 (서버 키 + 클라이언트 키 + IV). TLS 1.1과 TLS 1.2의 주요 차이점은 1.2가 CBC 공격으로부터 보호하기 위해 "명시 적"IV를 사용해야한다는 것입니다. PRF 나 프로토콜에 필요한 변경 사항은 없습니다. TLS 1.2 PRF는 암호 그룹에 따라 다르므로 핸드 셰이크 중에 PRF를 협상 할 수 있습니다. SSL은 원래 Netscape Communications (역사적)에서 개발했으며 나중에 IETF (현재의 IETF)에서 유지 관리했습니다. TLS는 네트워크 워킹 그룹에서 관리합니다. 다음은 TLS에서 PRF HMAC 함수의 차이점입니다.

TLS 1.0 및 1.1

PRF (비밀, 레이블, 시드) = P_MD5 (S1, 레이블 + 시드) XOR P_SHA-1 (S2, 레이블 + 시드);

TLS 1.2

PRF (비밀, 레이블, 시드) = P_hash (비밀, 레이블 + 시드)


0

"깨지지 않았다면 만지지 마십시오". SSL3은 대부분의 시나리오에서 잘 작동합니다 (10 월에 SSL / TLS 프로토콜에서 발견 된 근본적인 결함이 있었지만 이것은 프로토콜 자체보다 응용 프로그램의 결함입니다). 따라서 개발자는 SSL 모듈 업그레이드를 서두르지 않습니다. TLS는 여러 가지 유용한 확장 및 보안 알고리즘을 제공하지만 꼭 필요한 것은 아니며 편리한 추가 기능입니다. 따라서 대부분의 서버에서 TLS는 옵션으로 남아 있습니다. 서버와 클라이언트가 모두 지원하는 경우 사용됩니다.

업데이트 : '2016 년 SSL 3에서 TLS 1.2까지 다양한 공격에 취약한 것으로 밝혀졌으며 TLS 1.2 로의 마이그레이션을 권장합니다. TLS 1.2 구현에 대한 공격도 있지만 서버에 따라 다릅니다. TLS 1.3은 현재 개발 중입니다. 그리고 이제 TLS 1.2는 필수입니다.


2
아니요, 이것은 프로토콜 결함이며 개발자는 SSL 스택을 업그레이드해야합니다. 즉, SSLv3 용 RFC 5746 의 재협상 확장을 사용하기위한 지침 과 TLS 용 확장 프로그램을 사용하기위한 지침 이 있습니다.
브루노

칼로 누군가를 죽이면 이것은 칼의 결함이 아니라 뇌의 결함입니다. 여기도 마찬가지입니다. 프로토콜이 설계되지 않은 방식으로 사용 되었다면 프로토콜의 결함이 아닙니다.
Eugene Mayevski '콜백

1
프로토콜은 그 위에있는 응용 프로그램이 가능한 한 일반 소켓으로 취급하도록 설계되었습니다. 새로운 확장이없는 재협상 문제는 애플리케이션 계층 (예 : HTTP)에서 인식을 강제합니다. IETF TLS 메일 링리스트에이 주제에 대한 관심있는 스레드가 있습니다 : ietf.org/mail-archive/web/tls/current/msg04000.html
Bruno

1
일부는 애플리케이션 수준에서 수행되어야한다는 데 동의하지만 구현 및 프로토콜이이를 고려한다는 사실을 알지 못합니다. 스택은 일반적으로 합법적으로 시작하는 재협상에 대처할 수 있지만 MITM이 시작하는 경우에는 그다지 많지 않습니다 (문제). 이것이 IETF TLS 그룹이 TLS 수준에서 문제를 해결하기로 선택한 이유이며, 사람들이 실제로 해당 확장을 켜거나 재협상을 모두 비활성화해야하는 이유이기도합니다.
Bruno

1
SSL 3.0에는 언급 한 것보다 더 근본적인 문제가 있습니다. 예 : CBC 패딩 오라클, IV 또는 이전 레코드의 재사용. 전자는 여전히 TLS를 괴롭히지 만 해결할 수있는 반면 후자는 TLS 1.1에서 수정되었습니다.
Nikos 2013

0

https://hpbn.co/transport-layer-security-tls/ 는 좋은 소개입니다.

SSL 프로토콜은 원래 웹에서 전자 상거래 보안을 가능하게하기 위해 Netscape에서 개발되었으며, 이는 고객의 개인 데이터를 보호하기위한 암호화와 안전한 거래를 보장하기위한 인증 및 무결성 보장이 필요했습니다. 이를 달성하기 위해 SSL 프로토콜은 TCP (그림 4-1) 바로 위에있는 애플리케이션 계층에서 구현되어 상위 프로토콜 (HTTP, 이메일, 인스턴트 메시징 등)이 변경되지 않은 상태로 작동하고 통신 보안을 제공합니다. 네트워크를 통해 통신합니다.

SSL이 올바르게 사용되면 타사 관찰자는 연결 끝점, 암호화 유형, 전송 빈도 및 대략적인 데이터 양만 추론 할 수 있지만 실제 데이터를 읽거나 수정할 수는 없습니다.

SSL 2.0은 공개적으로 공개 된 최초의 프로토콜 버전 이었지만 발견 된 여러 보안 결함으로 인해 SSL 3.0으로 빠르게 대체되었습니다. SSL 프로토콜이 Netscape에 독점 되었기 때문에 IETF는 프로토콜을 표준화하기위한 노력을 기울 였고, 그 결과 1999 년 1 월에 발표되어 TLS 1.0으로 알려지게 된 RFC 2246이 탄생했습니다. 그 이후로 IETF는 보안 결함을 해결하고 기능을 확장하기 위해 프로토콜을 계속 반복 해 왔습니다. TLS 1.3을 정의하는 중입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.