Chapter 17 전송층 보안: SSL과 TLS Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display.
Chapter 17 학습목표 ❏ 인터넷 모델의 전송층에서 제공하는 보안 서비스에 대한 요구를 살펴본다 ❏ SSL의 일반적인 구조를 살펴본다 ❏ TLS의 일반적인 구조를 살펴본다 ❏ SSL와 TLS를 비교해서 살펴본다
17 Continued 인터넷 모델에서 SSL와 TLS의 위치
17-1 SSL 구조 SSL은 응용층에서 생성된 데이터에 대한 보안과 압축 서비스를 제공하기 위해 설계되었다. 이 절에서 살펴보는 주요 주제: 17.1.1 서비스 17.1.2 키 교환 알고리즘 17.1.3 암/복호화 알고리즘 17.1.4 해쉬 알고리즘 17.1.5 암호 그룹 17.1.6 압축 알고리즘 17.1.7 암호 파라메터 생성 17.1.8 세션과 연결
17.1.1 서비스 단편화(Fragmentation) 압축(Compression) 17.1.1 서비스 단편화(Fragmentation) 압축(Compression) 메시지 무결성(Message Integrity) 기밀성(Confidentiality) 프레임 구성(Framing)
17.1.2 키 교환 알고리즘 그림 17.2 키-교환 방법
클라이언트와 서버는 사전-마스터 비밀 값을 알 필요가 있다. 17.1.2 Continued Null 이 방법에는 키 교환이 없다. 클라이언트와 서버간에 설정된 사전-마스터 비밀(pre-master secret)이 없다. Note 클라이언트와 서버는 사전-마스터 비밀 값을 알 필요가 있다.
17.1.2 Continued RSA 그림 17.3 RSA 키 교환: 서버 공개키
17.1.2 Continued Anonymous Diffie-Hellman
17.1.2 Continued 임시 Diffie-Hellman 키 교환 그림 17.5 임시 Diffie-Hellman 키 교환
17.1.2 Continued 고정(Fixed) Diffie-Hellman 또 다른 해는 고정 Diffie-Hellman 방법이다. 그룹에 있는 모든 개체는 고정 Diffie-Hellman 파라메터(g and p)를 준비할 수 있다. Fortezza Fortezza 는 미국 국방부(NSA; National Security Agency)의 등록된 상표이다. 이는 국방부를 위해 개발된 보안 프로토콜이다.
17.1.3 Encryption/Decryption Algorithms 그림 17.6 암/복호화 알고리즘
17.1.3 Continued NULL The NULL category simply defines the lack of an encryption/decryption algorithm. Stream RC Two RC algorithms are defined in stream mode. Block RC One RC algorithm is defined in block mode. DES All DES algorithms are defined in block mode.
17.1.3 Continued 블록 모드에서 규정된 IDEA 알고리즘은 128비트 키를 갖는 IDEA_CBC 이다. Fortezza 블록 모드에서 규정한 유일한 Fortezza 알고리즘은 FORTEZZA_CBC.
17.1.4 Hash Algorithm 그림 17.7 메시지 무결성을 위한 해쉬 알고리즘
17.1.4 Continued NULL 두 당사자가 알고리즘의 사용을 선언할 수 있다. 이 경우에, 해쉬 함수는 없고 메시지는 인증되지 않는다. MD5 두 당사자가 해쉬 알고리즘으로 MD5 알고리즘을 선택할 수 있다. 이 경우에, 128비트-키 MD5 해쉬 알고리즘이 사용된다. SHA-1 두 당사자가 해쉬 알고리즘으로 SHA를 선택할 수 있다. 이 경우에, 160-비트 SHA-1 해쉬 알고리즘이 사용된다.
17.1.5 Cipher Suite 키 교환, 해쉬, 그리고 암호 알고리즘의 조합은 각 SSL 세션에 대한 암호 그룹을 지정한다.
17.1.5 Continued 표 17.1 SSL 암호 그룹 목록
17.1.6 Compression Algorithms 압축(Compression)은 SSLv3에서 선택적이다. No 특정 압축 알고리즘은 SSLv3에 대해 지정한 것이 없다. 그러므로 기본 압축 방법은 NULL이다.
17.1.7 Cryptographic Parameter Generation 그림 17.8 사전-마스터 비밀에서 마스터 비밀의 계산
17.1.7 Continued 그림 17.9 마스터 비밀로부터 키 재료 계산
17.1.7 Continued 그림 17.10 키 재료로부터 암호학적 비밀 추출
17.1.8 Sessions and Connections Note 세션에서, 한 당사자는 클라이언트 역할을 다른 당사자는 서버 역할을 가지고 있다; 연결에서, 양 당사자는 같은 역할을 가지고 있어서 이들은 서로 대등(peer)이다.
17.1.8 Continued 그림 17.11 세션과 연결
17.1.8 Continued 세션 상태(Session State) Table 17.2 Session state parameters
17.1.8 Continued 연결 상태(Connection State) Table 17.3 Connection state parameters
클라이언트와 서버는 6개의 서로 다른 암호 비밀을 갖는다: 3개는 읽기 비밀이고 3개는 쓰기 비밀이다. 17.1.8 Continued Note 클라이언트와 서버는 6개의 서로 다른 암호 비밀을 갖는다: 3개는 읽기 비밀이고 3개는 쓰기 비밀이다. 클라이언트의 읽기 비밀은 서버에 대한 쓰기 비밀과 같고 그 역도 마찬가지이다.
17-2 4개의 프로토콜 SSL이 어떻게 자신의 임무를 달성하는지를 보여주지 않고 SSL의 개념을 살펴보았다. SSL은 그림 17.12에 나타나 있는 것 처럼 2개의 계층에 4개의 프로토콜을 규정하였다. 이 절에서 논의된 주제: 17.2.1 Handshake 프로토콜 17.2.2 ChangeCipher Spec 프로토콜 17.2.3 Alert 프로토콜 17.2.4 Record 프로토콜
17.2. Continued 그림 17.12 4개의 SSL 프로토콜
17.2.1 Handshake 프로토콜 그림 17.13 Handshake 프로토콜
17.2.1 Continued 그림 17.14 Handshake 프로토콜의 Phase 1
Phase I 후에, 클라이언트와 서버는 다음 내용을 알게 된다: ❏ SSL의 버전 17.2.1 Continued Note Phase I 후에, 클라이언트와 서버는 다음 내용을 알게 된다: ❏ SSL의 버전 ❏ 키 교환, 메시지 인증, 암호를 위한 알고리즘 ❏ 압축 방법 ❏ 키 생성을 위한 2개의 난수 값
17.2.1 Continued 그림 Handshake Protocol의 Phase II
❏ 클라이언트는 요구되면 서버의 공개 키를 알게 된다. 17.2.1 Continued Note Phase II 후에, ❏ 서버는 클라이언트에 대해 인증된다. ❏ 클라이언트는 요구되면 서버의 공개 키를 알게 된다.
17.2.1 Continued 그림 17.16 Phase II에서 4가지 경우
17.2.1 Continued 그림 17.17 Handshake 프러토콜의 Phase III
❏ 클라이언트와 서버는 사전-마스터 비밀을 안다. 17.2.1 Continued Note Phase III 후에, ❏ 클라이언트는 서버에 대해 인증된다. ❏ 클라이언트와 서버는 사전-마스터 비밀을 안다.
17.2.1 Continued 그림 17.18 Phase III에서 4가지 경우
17.2.1 Continued 그림 17.19 Handshake 프로토콜의 Phase IV
Phase IV 후에, 클라이언트와 서버는 데이터를 교환할 준비가 되어있다. 17.2.1 Continued Note Phase IV 후에, 클라이언트와 서버는 데이터를 교환할 준비가 되어있다.
17.2.2 ChangeCipherSpec Protocol 그림 17.20 대기(pending) 상태에서 동적( active)상태로 파라메터 이동
17.2.3 Alert 프로토콜 표 17.4 SSL에 대해 규정된 경고
17.2.4 Record 프로토콜 그림 17.21 Record 프로토콜에 의해 진행된 과정
17.2.4 Continued 그림 17.22 MAC 계산
17-3 SSL 메시지 형식 살펴본 것처럼, 3개의 프로토콜에서 온 메시지와 응용층으로부터 온 데이터가 Record 프로토콜 메시지에 캡슐화된다. 이 절에서 논의된 주제: 17.3.1 ChangeCipherSpec 프로토콜 17.3.2 Alert 프로토콜 17.3.3 Handshake 프로토콜 17.3.4 Application 데이터
17.3 Continued 그림 17.23 Record 프로토콜 일반 헤더
17.3.1 ChangeCipherSpec 프로토콜
17.3.2 Alert 프로토콜 그림 17.25 Alert 메시지
17.3.3 Handshake 프로토콜 그림 17.26 Handshake 프로토콜의 일반 헤더
17.3.3 Continued 표 17.5 Handshake 메시지 유형
17.3.3 Continued 그림 17.27 Virtual tributary types
17.3.3 Continued 그림 17.28 ClientHello 메시지
17.3.3 Continued 그림 17.29 ServerHello 메시지
17.3.3 Continued 그림 17.30 Certificate 메시지
17.3.3 Continued 그림 17.31 ServerKeyExchange 메시지
17.3.3 Continued 그림 17.32 CertificateRequest 메시지
17.3.3 Continued 그림 17.33 ServerHelloDone 메시지
17.3.3 Continued 그림 17.34 CertificateVerify 메시지
17.3.3 Continued 그림 17.35 CertificateVerify 메시지에 대한 해쉬 계산
17.3.3 Continued 그림 17.36 ClientKeyExchange 메시지
17.3.3 Continued 그림 17.37 Finished 메시지
17.3.3 Continued 그림 17.38 Finished 메시지에 대한 해쉬 계산
17.3.3 Application Data 그림 17.39 응용 데이터를 위한 Record 프로토콜 메시지
17-4 전송층 보안(TLS) 전송층 보안(TLS; Transport Layer Security) 프로토콜은 SSL 프로토콜의 IETF 표준 버전이다. 이들 둘은 매우 비슷하지만 약간 차이점이 있다. 이 절에서 논의된 주제: 17.4.1 버전(Version) 17.4.2 암호 그룹(Cipher Suite) 17.4.3 암호학적 비밀 생성 17.4.4 Alert 프로토콜 17.4.5 Handshake 프로토콜 17.4.6 Record 프로토콜
17.4.1 Version 첫번 째 차이점은 버전 번호(major and minor)이다. SSL의 현재 버전은 3.0; TLS의 현재 버전은 1.0. 다시 말하면, SSLv3.0은 TLSv1.0과 호환된다.
17.4.2 암호 그룹(Cipher Suite) Another minor difference between SSL과 TLS간의 또 다른 차이점은 Fortezza 방법에 대한 지원의 결함이다. TLS은 키 교환이나 암/복호화를 위한 Fortezza를 지원하지 않는다. 표 17.6은 TLS에 대한 암호 그룹 목록을 보여준다 (without export entries).
17.4.2 Continued Table 17.6 Cipher Suite for TLS
17.4.3 암호학적 비밀 생성 그림 17.40 데이터-확장 함수
17.4.3 Continued 그림 17.41 PRF
17.4.3 Continued 그림 17.42 마스터 비밀 생성
17.4.3 Continued 그림 17.43 키 재료 생성
17.4.4 Alert 프로토콜 TLS는 NoCertificate 외에는 SSL에서 규정한 모든 경고를 지원한다. TLS는 목록에 새로운 것을 하나 추가하였다. 표 17.7은 TLS에 의해 지원되는 경로은 전체 목록이다.
17.4.4 Continued 표 17.7 TLS에서 지정한 경고
17.4.5 Handshake 프로토콜 그림 17.44 TLS에서 CertificateVerify 메시지에 대한 해쉬
17.4.5 Continued 그림 17.45 TLS에서 Finished 메시지에 대한 해쉬
17.4.6 Record Protocol 그림 17.46 TLS에 대한 HMAC