
다음은 기술적 심층 분석입니다.이 개요질문이 주어졌습니다.
SSL과 TLS의 프로토콜 차이점은 무엇입니까?
실제로 이름 변경을 보장할 만큼 충분한 차이가 있습니까? (최신 버전의 TLS에서는 "SSLv4" 또는 SSLv5라고 부릅니다.)
답변1
SSLv2와 SSLv3은 완전히 다릅니다(현재 둘 다 안전하지 않은 것으로 간주됩니다). SSLv3과 TLSv1.0은 매우 유사하지만 몇 가지 차이점이 있습니다.
TLSv1.0을 SSLv3.1로 간주할 수 있습니다(실제로 교환된 레코드 내에서 발생하는 일입니다). 그냥 비교하는게 더 쉬울듯TLSv1.0~와 함께TLSv1.1그리고TLSv1.2왜냐하면 그것들은 모두 IETF 내에서 편집되었고 거의 동일한 구조를 따르기 때문입니다. SSLv3을 다른 기관(Netscape)에서 편집하면 차이점을 발견하기가 조금 더 어려워집니다.
여기에 몇 가지 차이점이 있지만 모두 나열할 수는 없을 것 같습니다.
ClientHello
메시지(핸드셰이크를 시작하기 위해 클라이언트가 보낸 첫 번째 메시지) 에서 버전은{3,0}
SSLv3,{3,1}
TLSv1.0 및{3,2}
TLSv1.1용입니다.- 다릅니다
ClientKeyExchange
. - MAC/HMAC는 다릅니다(TLS는 HMAC를 사용하는 반면 SSL은 이전 버전의 HMAC를 사용함).
- 핵심 파생이 다릅니다.
Finished
SSLv3에서 SSL/TLS 메시지를 보낸 후 바로 클라이언트 애플리케이션 데이터를 보낼 수 있습니다 . TLSv1에서는 서버의 메시지를 기다려야 합니다Finished
.- 암호 제품군 목록은 다릅니다(일부는 동일한 ID 번호를 유지하면서 에서 로 이름이 변경되었습니다)
SSL_*
.TLS_*
- 신제품에 대해서도 차이점이 있다.재협상 연장.
나는 강력히 추천하고 싶다에릭 레스콜라(Eric Rescorla)의 책 -SSL 및 TLS: 보안 시스템 설계 및 구축, 애디슨-웨슬리, 2001 ISBN 0-201-61598-3, 정말로 더 자세한 내용을 원하신다면요. 나는 이 책을 통해 위에서 언급한 몇 가지 사항에 대해 배웠습니다. 저자는 일부 SSL/TLS 메시지를 설명할 때 SSLv3와 TLS(책이 집필 당시만 v1.0)의 차이점을 가끔 언급하지만, 이해하려면 이러한 메시지에 대한 배경 설명이 필요합니다( 이 책의 내용을 여기에 복사하여 붙여넣는 것은 적절하지 않습니다.)
답변2
나는 다른 답변을 반향할 것이지만 아마도 약간 다른 강조점을 가질 것입니다.
SSL 버전 2라고 하는 Netscape가 "소유"한 보안 소켓 프로토콜이 있었습니다. Netscape가 "소유"한 다른 레코드 구조와 보안 개선 사항을 갖춘 새 버전이 출시되어 SSL 버전 3이라고 합니다. 프로토콜 내부에는 여러 가지가 있습니다. 장소는 바이너리 버전 번호 필드입니다. SSL 버전 3의 경우 이 필드는 0x03 0x00, 즉 버전 3.0으로 설정됩니다. 그런 다음 IETF는 자체 표준을 만들기로 결정했습니다. 아마도 "SSL"이 Netscape 상표인지 여부를 포함하여 SSL에 대한 일부 지적 재산권 불확실성이 있었기 때문에 IETF는 이 프로토콜의 다음 버전을 출시했을 때 자체 이름인 Transport Layer Security 프로토콜 또는 TLS 버전 1.0을 부여했습니다. 레코드 형식과 전체 구조는 SSL v3과 동일하고 일관성이 있습니다. 바이너리 버전 번호는 0x03 0x01로 개정되었으며 다른 사람들이 지적했듯이 약간의 암호화 변경이 있었습니다. 이후 내부 프로토콜 번호는 0x03 0x02 및 0x03 0x03인 TLS 버전 1.1 및 1.2가 있습니다.
SSLv2를 무시하면 기본적으로 사람들이 보안과 성능에 대해 더 똑똑해짐에 따라 발생하는 일반적인 프로토콜 미세 조정과 함께 발생하는 이름 변경일 뿐입니다.
답변3
기본적으로 이는 최신 버전의 프로토콜에 대한 이름 변경일 뿐입니다. 나는 그 주된 이유가 공식 IETF 표준 트랙 프로토콜이 된 후 Netscape가 주로 설계한 오래되고 비공식적인 표준과 차별화하기 위한 것이라고 생각합니다.
이전 질문에 대한 답변에서 말했듯이 이는 SSLv3과 TLSv1.0이 호환된다는 의미는 아닙니다. RFC 2246에서 인용:
이 프로토콜과 SSL 3.0의 차이점은 극적이지는 않지만 TLS 1.0과 SSL 3.0이 상호 운용되지 않을 정도로 중요합니다.
프로토콜의 정확한 차이점을 알고 싶다면 표준을 읽고 비교해야 할 것 같습니다.
답변4
차이점:
- TLS는 표준 프로토콜 위에서 실행됩니다. TLS 연결은 표준 서비스의 암호화되지 않은 세션처럼 시작되지만 어느 시점에서는 암호화 협상을 시작합니다. 이 협상을 위해서는 표준 프로토콜을 확장해야 합니다.
- 표준 프로토콜은 SSL 위에서 실행됩니다. SSL 연결은 먼저 암호화를 협상한 다음 이를 통해 기본 프로토콜을 실행합니다.