SSL과 TLS의 정확한 프로토콜 수준 차이는 무엇입니까?


40

개요 질문을 한 후에 이것은 기술적 인 심층 다이빙 입니다.

SSL과 TLS의 프로토콜 차이점은 무엇입니까?
이름 변경을 보증하기에 충분한 차이가 있습니까? (최신 버전의 TLS의 경우 "SSLv4"또는 SSLv5라고 부르는 것)


3
나는 당신이 정말로 깊이있는 이해를 원한다면 스펙을 읽기 시작해야한다고 생각합니다. 위키 페이지를 확인 하십시오 . RFC 및 사양에 대한 링크가 포함되어 있습니다.
Zoredache

7
@Zoredache, "wiki"를 "Wikipedia"의 줄임말로 사용하지 마십시오.
Spiff

답변:


36

SSLv2와 SSLv3은 완전히 다릅니다 (둘 다 안전하지 않은 것으로 간주 됨). SSLv3 및 TLSv1.0은 매우 유사하지만 몇 가지 차이점이 있습니다.

TLSv1.0을 SSLv3.1로 간주 할 수 있습니다 (사실 교환 된 레코드 내에서 발생 함). 그것은 비교하는 단지 쉽게 TLSv1.0을 함께 TLSv1.1TLSv1.2 그들은 모두 IETF 내에서 편집하고 더 많거나 적은 동일한 구조를 따라했습니다 때문이다. 다른 기관 (Netscape)에서 SSLv3를 편집하면 차이점을 찾기가 좀 더 어려워집니다.

몇 가지 차이점이 있지만 모두 나열 할 수는 없습니다.

  • 에서 ClientHello메시지 (첫 번째 메시지는 핸드 쉐이크를 시작하기 위해, 클라이언트가 보낸) 버전은 {3,0}, SSLv3에 대한 {3,1}TLSv1.0과 {3,2}TLSv1.1을 위해.
  • ClientKeyExchange다릅니다.
  • MAC / HMAC는 다릅니다 (TLS는 HMAC를 사용하지만 SSL은 이전 버전의 HMAC를 사용합니다).
  • 키 파생이 다릅니다.
  • FinishedSSLv3에서 SSL / TLS 메시지를 보낸 후 클라이언트 응용 프로그램 데이터를 바로 보낼 수 있습니다 . TLSv1에서는 서버 Finished메시지를 기다려야 합니다.
  • 암호 슈트의리스트는 다르다 (그 중 몇몇은 변경되었다 SSL_*TLS_*동일한 식별 번호를 유지).
  • 새로운 재협상 확장 에 관한 차이점도 있습니다 .

Eric Rescorla의 저서 -SSL 및 TLS : 보안 시스템 설계 및 구축 , Addison-Wesley, 2001 ISBN 0-201-61598-3 을 강력히 추천 합니다. 이 책에서 위에서 언급 한 몇 가지 요점에 대해 배웠습니다. 저자는 일부 SSL / TLS 메시지를 설명 할 때 SSLv3과 TLS (책이 작성된 시점에만 v1.0 만 해당)의 차이점을 언급하지만이 메시지에 대한 배경 설명이 필요합니다. 이 책에서 복사 / 붙여 넣기는 여기에 적합하지 않습니다.)


TLS 확장이 SSL이 아닌 TLS에만 적용되는 것 같습니다. 맞습니까? 예를 들어, TLS 클라이언트는 확장 된 ' ClientHello'레코드를 보내는 반면 SSL3 전용 클라이언트는 원래 ' ClientHello' 만 보냅니다 .
culix

@culix는 일반적으로 정확합니다 (주로 TLS 확장이 IETF의 프레임 워크에 정의되어 있기 때문에). SSLv3는 또한 ClientHello 레코드에 추가 데이터를 보유 할 수있었습니다 (TLS 1.0 및 1.1과 동일). ( 앞으로 호환성을 위해 ...draft302.txt 및 TLS 사양의 7.4.1.2 단원을 비교하십시오.) 이를 지원하지 않는 스택에 대처하기 위해 재협상 확장의 SCSV 의사 암호 스위트와 같은 해결 방법도 있습니다.
Bruno

@Bruno, Book link down .....
Pacerier

4

나는 다른 답변을 에코하지만 아마도 약간 다른 강조를 할 것입니다.

Netscape에서 "소유 한"SSL 버전 2라는 보안 소켓 프로토콜이있었습니다. 다른 레코드 구조와 보안 개선 사항을 가진 새로운 버전도 Netscape에서 "소유"되었으며 SSL 버전 3이라고 발표되었습니다. places는 이진 버전 번호 필드입니다. 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이 상호 운용되지 않을 정도로 중요합니다.

프로토콜의 정확한 차이점을 정말로 알고 싶다면 표준을 읽고 자신을 비교해야합니다.

Netscape TLSv1.0 RFC 2246의 SSLv3 프로토콜 초안


@SvenW 나는 나 자신을 위해 비교할 것이지만 내가 수행하고 싶지 않은 것은 큰 도전입니다. 그 표준은 10 년 전부터 존재 해 왔습니다. 분명히 누군가 나와 같은 사람들이 이해할 수 있도록 예쁜 그래픽으로 이미 비교를 수행했습니다.
goodguys_activate 1

@ MakerOfThings7 불행히도이 질문은 파이 차트로 요약 할 수있는 것이 아닙니다. 차트에 넣을 수있는 유일한 것은 암호화 비트 레이트 또는 (여기서 스트레칭하고 있습니다) 보안 부여 수준 (SSLv3은 "-"이고 TLS는 "="...)입니다. 실제로 사양을 읽거나 적어도 Wikipedia 페이지 (이전 질문에서 내가 제공 한 페이지)를 통해 얻을 수 있습니다.
gWaldo

@SvenW 두 사양을 모두 읽고 이해 했습니까?
goodguys_activate

아니요. 왜해야합니까? 저는이 사양에 맞는 소프트웨어를 작성하는 개발자가 아닙니다. 이것이 제가 생각할 수있는 유일한 이유입니다. SSL / TLS를 사용해야 할 경우 OpenSSL 등에 대한 문서를 읽으면 사용자와 관리자에게 충분합니다.
Sven

@SvenW 악의는 없지만 사양을 읽고 이해 한 사람으로부터 응답을 얻을 때까지 이것을 열어 두겠습니다 ... 내 질문에 대해서는 합리적입니다.
goodguys_activate

0

암호화 프로토콜 SSL의 이름은 이제 TLS로 지정되어 동일한 프로토콜의 이름이 두 개가됩니다. 현재 소프트웨어는 TLS 버전 1 또는 SSL 버전 3을 자동으로 협상합니다. 반면에 인간은 공식 TLS 지정에 비해 더 잘 알려진 SSL 용어를 사용하도록 결정해야합니다.

SSL은 TLS의 전신입니다.

TLS 및 SSL은 전송 계층에서 안전한 종단 간 전송을 보장하기 위해 응용 프로그램 계층에서 네트워크 연결 세그먼트를 암호화합니다.


이름이 바뀌 었나요? 그게 다야?
goodguys_activate

예 TLS는 최신 버전입니다. 필요한 경우 TLS가 SSL3로 자체 변환 할 수 있습니다.
aleroot

3
아니요 이름이 바뀌지 않았습니다. TLSv1은 SSLv3과 상호 운용 가능하며 대체 될 수 있지만 반드시 그렇지는 않습니다. TLSv1은 SSLv4와 같습니다. 참고 : 여러 버전의 TLS도 있습니다.
Philip Reynolds

-2

차이점 :

  • TLS는 표준 프로토콜 위에서 실행됩니다. TLS 연결은 표준 서비스의 암호화되지 않은 세션처럼 시작하지만 어느 시점에서 암호화 협상을 시작합니다. 이 협상을 위해 표준 프로토콜을 확장해야합니다.
  • 표준 프로토콜은 SSL 위에서 실행됩니다. SSL 연결은 먼저 암호화를 협상 한 다음 기본 프로토콜을 실행합니다.

맞지 않습니다. SSL / TLS로 시작하는 것과 STARTTLS와 같은 명령을 통해 프로토콜 내에서 TLS로 전환하는 것의 차이점에 대해 이야기하고 있습니다.
Bruno
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.