클라이언트와 서버의 통신에 메세지 인증, 기밀성, 가용성을 제공한다.
HTTPS = HTTP + SSL/TLS + TCP
Application data를 보호하는 기술이다 (헤더 제외)
Layer: Application - TLS - Transport(TCP)
Protocol: Handshake, ChangeCipherSpec, Aler, Record
Server <-> Client
각종 버전/알고리즘과 키교환
서버 -> Client
client의 서버 인증
client는 서버의 공개키를 알게됨
Anonymous DH
Certificate: x
ServerKeyExchange: g, p,
대부분 사용하지 않는 방식이지만, 이미 Client가 인증된 상태에서 사용한다.
Ephemeral DH
Certificate: RSA or DSS Sig-cert
ServerKeyExchange: (g,p,)
인증서에 서버의 서명용 공개키가 포함되어 있음. client는 상위기관의 개인키로 풀어서 키교환에 쓰인 서명 검증 가능
g: 랜덤값
p: 소수
s1: 서버의 공개키
s2: 디피헬만 키교환에 사용할 서버의 랜덤값
Fixed DH
Certificate: DH cert
ServerKeyExchange: x
인증서 안에 서버 공개키가 박혀있는 형태
인증서를 변경하지 않는 한 영원히 Fixed된 공개키와 개인키 쌍
Client -> Server
서버로부터 Certificate Request 수신시, Client의 인증서 전송하여 서버가 클라이언트 인증
디피헬만 키교환 특성을 통해 pre-master secret(PM) 공유
RSA
Certificate: x
ServerKeyExchange: 서버의 공개키로 암호화된 PM 전송
Anonymous DH
Certificate: x
ServerKeyExchange: g, p,
Ephemeral DH
Certificate: RSA or DSS Certificate
ServerKeyExchange: (g,p,)
를 받은 서버는 PM 생성 가능
g: 서버가 사용한 랜덤값
c1: 클라이언트의 서명
c2: 서버의 랜덤값
Fixed DH
Certificate: DH cert
ServerKeyExchange: x
Client <-> Server
암호 알고리즘과 보안 파라미터 변경하는 메세지 주고받은 후 HanShake END
이제 서로 공유한 PM으로 데이터 교환 가능
index + PM + CR + SR
SHA1, MD5.. 이용하여 48bit Master Secret(48bit) 생성 가능
-> 고정된 index 개수
index + M + CR + SR
동일한 방식으로 Key Material 생성 가능
-> index 개수 늘려나갈 수 있기 때문에 여러 key를 생성할 수 있다.
key matreial로 목적 / 개체에 따라 분류된 여러가지의 키(IV) 생성
Application Layer으로부터 온 데이터 암호화
1. 데이터 압축 (복원가능한 압축)
2. Hash해서 MAC값 생성
3. 압축한 데이터 + MAC을 암호화
4. 암호화된 Application data