TLS

설명

- TLS는 "네트워크 통신 시 데이터를 암호화하여 안전하게 전송하기 위한 프로토콜"

- 인터넷에서 데이터를 기본적으로 "평문"으로 이동

- 중간에 누군가 패킷을 가로채면(스니핑) 내용이 그대로 노츨

- TLS는 이 문제를 해결하기 위해 "전송 계층" 위에서 동작하면서 세 가지를 보장
		1. 기밀성
			- 대칭키 암호화로 데이터를 암호화해서, 중간자가 가로채도 내용을 읽을 수 없음
		2. 무결성
			- MAC을 통해, 데이터가 전송 중 변조되지 않았음을 검증
		3. 인증
			- 인증서 기반으로 내가 통신하는 상대가 실제 그 서버가 맞는지 확인

TLS 통신(TLS 1.2)

image.png

[ 설명 ]
- 위 사진 흐름은 "TLS 1.2"에 따른 통신 과정

- 핵심은 "비대칭 키"를 통해서 "공개키"를 교환하고, 이를 사용해서 "대칭키"를 교환하여
	앞으로 통신은 대칭키로 가벼운 연산으로 암호화 설정
	
- 여기서 인증 과정은 3번으로
		1. 서버가 인증서를 보냄
		2. 클라이언트가 CA의 공개키로 인증서의 서명을 검증
		3. 도메인 일치 여부, 유효기간, 폐기 여부 등 확인
		4. "이 서버를 신뢰 가능하다" 파단
		+
		- 서버의 공개키는 인증서 안에 들어있는 것이지 인증하는 과정은 아님

TLS 통신(TLS 1.3)

1. ClienHello(클라이언트 -> 서버)
	- 자원 암호화 스위트
	- DH 공개값
	- 클라이언트 랜덤

2. ServerHello(서버 -> 클라이언트)
	- DH 공개값 (이 시점부터 양쪽 대칭키 도출 완료)
	- 여기서부터 암호화 시작
	- 인증서
	- 인증서 검증용(CertificateVerify) <- TLS 1.2에서는 안보냄
	- Finished

3. Finished(클라이언트 -> 서버)
	- 인증서 검증 완료 후 Finished 전송
	- 바로 애플리케이션 데이터 전송 가능
	
=> 1 RTT

mTLS

mTLS 통신

image.png