HTTPS : 웹 통신 보안 프로세스 이해하기

1. HTTPS HyperText Transfer Protocol secure
- HTTPS는 보안된 하이퍼텍스트 전송 프로토콜입니다. 이는 웹 브라우저와 웹 서버 간의 통신을 암호화하여 데이터의 기밀성, 무결성, 그리고 인증을 제공합니다.
- HTTPS에서 SSL/TLS 프로토콜을 사용하여 클라이언트와 서버 간 통신을 보호합니다. 이 프로토콜은 핸드셰이크 과정을 통해 시작되며, 이 과정에서 공개키(비대칭키) 암호화를 사용하여 인증과 초기 키 교환을 수행합니다. 그 후 실제 데이터 전송에는 협의된 대칭키 암호화를 사용합니다.
2. SSL / TLS
- 인터넷에서 데이터를 안전하게 전송하기 위해 사용되는 암호화 프로토콜입니다.
SSL Secure Sockets Layer
- 초기에 넷스케이프에 의해 개발된 프로토콜입니다.
- 현재는 더이상 사용하지 않습니다.
TLS Transport Layer Security
- SSL의 업그레이드 버전입니다.
- IETF* 에서 유지, 관리하는 웹의 보안 암호화를 위한 새로운 프로토콜
- IETF(Internet Engineering Task Force): 인터넷의 기술 표준을 개발하고 촉진하는 국제적인 비영리 단체
3. HTTPS의 주요 보안 기능
기밀성 Privacy
- 제 3자가 통신 내용을 읽을 수 없게 합니다.
무결성 Integrity
- 데이터가 전송 중에 변경되지 않았음을 보장합니다.
식별 Identification
- SSL/TLS 인증서로 웹 사이트의 신원을 확인합니다.
4. 암호화 메커니즘
대칭키 암호화
- 동일한 키로 암호화하고 복호화합니다.
- 키 공유가 어렵습니다.
공개키 암호화
- 받는 사람의 공개키를 사용하여 암호화합니다.
- 받은 사람은 자신의 개인키로 복호화합니다.
5. CA Certificate Authority
- CA는 디지털 인증서를 발급하는 신뢰할 수 있는 제3자 기관입니다.
- 핸드셰이크 과정에서 서버는 CA에서 발급 받은 디지털 인증서를 클라이언트에게 제공합니다.
6. HTTPS 핸드셰이크 프로세스

- TLS 연결이 시작될 때 클라이언트와 서버는 '핸드셰이크'를 수행합니다.
- 클라이언트가 서버에 암호화 방식 목록, 랜덤 값을 전송합니다.
- 서버는 암호화 방식을 선택하고, 자신의 공개키가 포함된 TLS 인증서와 랜덤 값을 전송합니다.
- 클라이언트는 공개키를 사용해서 서버 신원을 확인합니다.
- 클라이언트는 pre-master secret을 생성하고, 서버 공개키로 암호화하여 서버에 전송합니다.
- 서버는 개인키로 복호화하고, 서버와 클라이언트는 pre-master secret으로 master secret을 생성합니다.
- Master secret = Pre-master secret + 클라이언트 랜덤 + 서버 랜덤
- 최종 세션 키(대칭키) 생성:
- 세션 키 = Master secret + 추가 매개변수