TLS handshake

HTTP를 보내기 전에 버전, 신원, 트래픽 키를 합의한다

TLS 핸드셰이크는 사용할 암호 조합, 서버 인증서의 신뢰성, 이번 연결에만 쓸 트래픽 키를 같은 transcript 안에서 확정합니다.

핸드셰이크 진행

ordered steps
1 ClientHello

지원 버전, cipher suite, SNI, ALPN, 난수와 key_share를 보낸다.

2 ServerHello + Certificate

선택한 규칙, 서버 인증서, 서버 key_share와 검증 메시지를 돌려준다.

3 Verify + Finished

이름, 체인, 서명, 기간을 확인하고 transcript 검증을 끝낸다.

4 Encrypted data

HTTP 요청과 응답은 파생된 트래픽 키로 보호된 record에 실린다.

확정되는 세 가지

matrix
결과무엇을 정하나왜 필요한가
협상 결과TLS 버전, AEAD, 해시, ALPN양쪽이 같은 규칙으로 record를 읽기 위해
서버 신원SAN 이름, 체인, 서명, 유효기간중간자가 서버인 척하지 못하게 하기 위해
트래픽 키ECDHE 공유 비밀에서 파생한 송수신 키이번 연결 데이터만 보호하기 위해

핵심 감각

checkpoints
순서

핸드셰이크가 끝나기 전에는 보호된 HTTP 데이터가 열리지 않는다.

검증

중간자가 메시지를 바꾸면 Finished transcript 검증에서 드러난다.

분리

공개키 기술은 인증과 키 합의에, 대칭키는 실제 데이터 보호에 쓰인다.