HTTPS는 인터넷 상에서 안전한 통신을 보장하기 위해 사용하는 프로토콜.
HTTP에 SSL/TLS 프로토콜을 결합해 통신 내용을 암호화 하고, 통신 상대의 신원을 보장.
이를 통해 중간자 공격(MITM) 과 같은 위협으로부터 데이터를 보호.
1. HTTPS의 목적과 주요 개념
(1). 암호화: 데이터를 안전하게 보호
- 암호화: 서버와 클라이언트 간 데이터를 암호화 하여, 도청(Sniffing)이나 패킷 가로채기(Session Hijacking)등을 방지
- 복호화: 암호화된 데이터를 해독할 수 있는 권한은 해당 통신 상대방에게만 있음.
(2). 인증: 상대가 진짜인지 확인
- HTTPS는 신뢰할 수 있는 CA(인증 기관)를 통해 서버가 진짜임을 보장
- 인증서에는 서버의 정보(도메인, 소유자 등)와 공개키가 포함
- 이를 통해 사용자가 피싱 사이트나 악성 서버와 통신하지 않도록 보호
2. HTTPS의 암호화 방식
- HTTPS는 비대칭키와 대칭키의 장점을 결합해서 사용.
(1). 비대칭키 암호화
(2). 대칭키 암호화
왜 비대칭키와 대칭키를 모두 사용할까?
HTTPS는 속도와 보안을 모두 충족시키기 위해 두 방식을 결합해서 사용
1. 비대칭키로 세션키를 안전하게 공유:
- 클라이언트와 서버는 대칭키를 주고받지 않고, 대신 비대칭키를 이용해 안전하게 세션키를 교환
- 서버의 공개키로 세션키를 암호화하여 서버로 전송 → 서버는 비공개키로 이를 복호화
- 이렇게 공유된 세션키는 이후 통신에 사용
2. 대칭키로 빠르게 암호화 통신:
- 세션키가 공유된 이후부터는 대칭키 암호화를 사용하여 데이터를 교환
- 대칭키는 연산 속도가 빠르기 때문에 HTTPS 통신 성능을 유지할 수 있음.
3. HTTPS 동작 과정(HTTPS Handshake)
(1) 서버 인증서 전달
- 클라이언트가 HTTPS 요청을 보냄.
- 서버는 자신의 인증서(SSL/TLS 인증서)를 클라이언트에게 보냄.
- 이 인증서에는 서버의 공개키와 서버 정보가 포함되어 있음.
- 인증서는 CA의 비공개키로 암호화되어 신뢰성을 보장.
(2) 클라이언트가 인증서 확인
- 클라이언트는 CA의 공개키를 사용해 서버 인증서를 복호화하고 확인
- CA의 공개키는 모든 주요 웹 브라우저에 기본적으로 저장되어 있음.
- CA(Certificate Authority)는 인증서 발급 기관으로, 인터넷에서 안전한 통신이 이루어지도록 서버의 신원을 보증해 주는 역할
CA → 이 서버는 믿을만한 서버입니다! 라고 도장을 찍어주는 공인된 신뢰 기관
- 서버의 도메인과 인증서 정보가 일치하는지 확인.
(3) 세션키 생성 및 공유
- 클라이언트는 임의의 대칭키(세션키)를 생성.
- 이 세션키를 서버의 공개키로 암호화하여 서버로 전송
(4) 서버가 세션키 수신
- 서버는 자신의 비공개키를 사용해 세션키를 복호화.
- 이제 클라이언트와 서버는 동일한 세션키를 공유하게 됨.
(5) 대칭키로 안전한 통신
- 이후 통신은 대칭키(세션키)를 사용하여 암호화/복호화 진행.
- 클라이언트와 서버만 해당 데이터를 읽을 수 있음.
(6) HTTPS Handshake 과정 이후
- 클라이언트와 서버는 공유한 세션키(대칭키)를 사용해 암호화된 통신을 시작
- 이후 데이터 전송은 빠르고 효율적인 대칭키 암호화를 사용
HTTPS 동작과정(그림)
