에듀테크 프로젝트 대시보드
TLS 핸드셰이크 (HTTPS)
브라우저 주소창의 자물쇠 아이콘은 이 사이트와 나 사이의 통신이
암호화되어 있고, 상대가 진짜 그 사이트임을 확인했다는 뜻이다.
https:// 로 접속하면 실제 데이터를 주고받기 전에 TLS 핸드셰이크라는
짧은 대화가 먼저 오간다. 이 과정에서 ① 서버 신원을 인증서로 검증하고
② 둘만 아는 세션 키를 안전하게 만든다. 아래에서 한 메시지씩 따라가 보자.
공개키로 잠그고 개인키로만 연다. 키를 미리 나눠 갖지 않아도 되지만
수학 연산이 무거워 느리다. 핸드셰이크에서 딱 한 번,
세션 키를 안전하게 합의하는 데만 쓴다. RSA, ECDHE
잠그는 키 = 여는 키. 매우 빠르지만 그 키를 상대에게
안전하게 전달하는 게 문제. 핸드셰이크로 키를 합의한 뒤,
실제 HTTP 데이터 전부를 이 키로 암호화한다. AES-256-GCM
즉 느리지만 안전한 비대칭키로 "빠른 대칭키"를 배달하고, 이후 통신은 대칭키로 처리한다. 두 방식의 장점만 취하는 하이브리드 암호다.
루트 CA → 중간 CA → 서버 로 이어지는
인증서 체인을 한 단계씩 확인한다.NET::ERR_CERT_* 경고 화면을 띄운다.
이 사이트 인증서는 Let's Encrypt가 발급한 무료 인증서다.# 서버가 실제로 보내는 인증서 들여다보기 openssl s_client -connect offset0xf.com:443 -servername offset0xf.com # 요약 정보만 echo | openssl s_client -connect offset0xf.com:443 2>/dev/null \ | openssl x509 -noout -subject -issuer -dates
ECDHE 방식은 매 접속마다
임시 키를 새로 만들어, 나중에 서버 개인키가 유출돼도
과거에 녹음된 트래픽은 못 푼다.Finished 메시지로 지금까지 주고받은 모든 메시지가
위변조되지 않았는지 서로 확인한다(중간자 공격 방지).| 구분 | HTTP | HTTPS (TLS) |
|---|---|---|
| 도청 | 평문 그대로 노출 | 암호문만 보임 |
| 위변조 | 중간에서 조작 가능 | 무결성 검증 |
| 신원 | 알 수 없음 | 인증서로 확인 |
| 포트 | 80 | 443 |