SSL을 계승하며 CA와 PKI를 기반으로 동작하는 TLS(transport layer protocol)
인터넷에서 암호화와 보안을 제공하는 프로토콜
e.g. if you want to buy a book at amazom?
ⓐ Amazon과 내가 상호 인증을 수행하여야함 (Authentication)
ⓑ 둘 간의 정보 교환 내용의 기밀성이 유지되어야 하며, 누군가 이를 위변조 하지 않아야함 (confidentiality & integrity)
TLS 프로토콜에서 서버와 클라이언트 간의 인증, 암호화 방식, 세션 키 등을 협상하여 보안 연결을 설정하는 과정
- Cipher Suite negotiation
- Authentication
- Key Exchange
각 단계를 자세히 살펴보자.
클라이언트와 서버는 상호 지원하는 암호화 방식(Cipher Suite)을 협상
Cipher Suite란?
collection of cryptographic functions & techniques (protocol에 사용 할 암호화 기술, 메커니즘 등의 집합)
다음 4가지 요소를 포함
① Key Exchange
② Authentication Algorithms
③ Data Encryption Algorithms
④ Data Integrity Algorithms
e.g. TLS1.2 ECDHE-ECDSA-AES123-GCM-SHA256 < 하나의 set
- ECDHE (Key Exchange)
- ECDSA (Auth)
- AES128-GCN (Data Encrypt)
- SHA256 (Data Integrity)
여러개의 set로 구성된 suite를 사용해 어떤 암호화 메커니즘을 사용할지 상호 협의하는 단계
클라이언트와 서버가 서로의 신원을 확인
클라이언트는 서버의 인증서를 검증 & 서버의 신원 증명
서버는 클라이언트가 신원을 증명할 수 있는 인증 수단을 제공
RSA(소인수분해 기반)와 ECDSA(타원곡선암호화를 사용한 DSA) 2가지의 디지털 서명에 기반한 인증을 수행
클라이언트와 서버 간의 비밀키를 생성하고 교환
Simplified Protocol
- C=>S : cipher list, RA(nonce of client)
- S=>C : cipher(one of cipher list), RB(nonce of server), certificate
- C=>S : pre-master secret(비밀키)생성하여 서버의 공개키로 암호화
- S=>C : C가 생성한 pre-master secret을 복호화하여 K를 도출하여 C에 확인 메시지를 전달(is this our K?)
① RSA 키 교환 (removed in TLS 1.3)
② DH 키 교환 (Ephermal DH, PFS 보장)
다음 글에서 TLS1.2와 TLS1.3에 관한 내용과 TLS 프로토콜의 취약점에 대해 다룬다.
① outmoded algorithm과 cipher를 지원하지 않음
② RSA암호화를 제거하고 ECDHE or DHE만을 허용(PFS를 보장하고자)
③ Reduces num of negotiations
cipher suite negotiation 과정에서 암호화(키교환, 서명 인증 ,암호화) 별로 협의하도록 함. 알고리즘과 방법이 많아질수록 조합의 개수가 많아지므로 이를 막고자, 각 카테고리별로 협의하도록 함
TLS 1.2
TLS 1.3
TLS 1.2 보다 안전한 프로토콜을 제공
: attack to TLS protocol
: add signature (negotiation 단계) => 중간 공격이 개입하지 못하도록