[security] SSL과 TLS의 차이점

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

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



답변

간단히 말해서 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에는 적용되지 않습니다. 연결 시작부터.)


답변

에서 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의 영리하고 재미있는 이야기를 추천합니다.


답변

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

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

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

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


답변

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 (비밀, 레이블 + 시드)


답변

“깨지지 않았다면 만지지 마십시오”. 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는 필수입니다.


답변

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을 정의하는 중입니다.


답변