TLS
설명
- TLS는 "네트워크 통신 시 데이터를 암호화하여 안전하게 전송하기 위한 프로토콜"
- 인터넷에서 데이터를 기본적으로 "평문"으로 이동
- 중간에 누군가 패킷을 가로채면(스니핑) 내용이 그대로 노츨
- TLS는 이 문제를 해결하기 위해 "전송 계층" 위에서 동작하면서 세 가지를 보장
1. 기밀성
- 대칭키 암호화로 데이터를 암호화해서, 중간자가 가로채도 내용을 읽을 수 없음
2. 무결성
- MAC을 통해, 데이터가 전송 중 변조되지 않았음을 검증
3. 인증
- 인증서 기반으로 내가 통신하는 상대가 실제 그 서버가 맞는지 확인
TLS 통신(TLS 1.2)

[ 설명 ]
- 위 사진 흐름은 "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 통신
