📌 면접 답변
- HTTP는 클라이언트와 서버 간 통신을 위한 통신 규약
- 하지만 HTTP는 암호화되지 않는 평문 데이터를 전송하여 제3자가 정보 조회 위험
- 이러한 문제를 해결하기 위해 HTTPS 등장
- HTTPS는 데이터 암호화를 추가하여 암호화된 데이터를 전송
HTTPS 동작 원리 (TLS 핸드쉐이크)
1. Client Hello (클라이언트의 최초 요청)
- 클라이언트는 서버에게 최초 요청할 때, 암호화 알고리즘, 프로토콜 버전 등을 무작위 값으로 전달
2. Server Hello (서버 응답)
- 서버는 클라이언트에게 암호화 알고리즘, 인증서, 무작위 값 전달
3. 클라이언트 인증서 검증
- 클라이언트는 서버의 인증서를 CA 공개키로 복호화하여 검증
4. Pre-Master Secret 생성
- 클라이언트는 Pre-Master Secret 생성하고, 서버의 Public Key로 암호화하여 전달
5. 서버 Pre-Master Secret 복호화
- 서버는 자신의 Private Key로 Pre-Master Secret 복호화 후 Master Secret 생성
- 서버와 클라이언트가 동일한 알고리즘을 통해 같은 Session Key를 독립적으로 생성
6. Finished 메시지 교환
- 클라이언트와서버는 Session Key 로 암호화된 메시지를 주고 받으며 공유 확인
- 이후 데이터는 Session Key 기반으로 대칭키 암호화로 데이터 통신
생각보다 HTTPS에서 TLS 핸드쉐이크 과정이 복잡한 것 같다.
그리고 TCP 3-Way HandShake와 TLS Handshake는 완전 다른 것이니 헷갈리면 안된다 !!
📌 내 답변
HTTP는 HyperText Transfer Protocol 의 약자로, 웹 통신 프로토콜이다.
HTTP 프로토콜을 통해 클라이언트와 서버는 통신을 할 수 있게 된다.
하지만 HTTP 통신 과정에서 제 3자가 데이터를 탈취하여 변조 할 가능 성이 있다.
이러한 문제를 보안하는 것이 Secure을 더한 HTTPS 이다.
브라우저는 서버에게 CA로부터 (SSL 또는 TSL과 같은) 인증받은 증명서의 Secret Key를 요청하고,
요청에 대한 응답으로 Public Key를 서버에게 보낸다.
그리고 Public key로 데이터를 암호화하여 보내고 Secret Key로 복호화를 하는 것이 HTTPS이다.
추가 보완
- HTTP는 평문(Pain Text)으로 데이터를 주고받기 때문에, 네트워크 중간에 제 3자가 데이터 가로챌 수 있음
- HTTPS는 TLS (Transport Layer Security, 과거에는 SSL) 프로토콜을 기반으로 데이터 암호화, 무결성, 서버 인증 기능 제공
- 서버는 CA로 부터 발급받은 인증서를 브라우저에게 전달
- 해당 인증서에는 Public Key와 CA의 서명이 포함
- 브라우저는 인증서 검증 후, TLS 핸드셰이크를 통해 Session Key 생성
- 이후 데이터 전송은 Session Key를 통해 대칭키 암호화
- 여기서 대칭키 암호화란 하나의 동일한 키(Session Key)를 사용하여 데이터 암·복호화
HTTPS의 핵심은 Session Key를 서버와 클라이언트가 안전하게 공유하는 것 !!
매일메일 - 기술 면접 질문 구독 서비스
기술 면접 질문을 매일매일 메일로 보내드릴게요!
www.maeil-mail.kr
매일 메일의 면접 질문 정리
'😀 Jerry > 면접 질문' 카테고리의 다른 글
[1분 면접] WAS와 웹 서버의 차이점 (0) | 2025.03.05 |
---|---|
[1분 면접] SSR과 CSR 차이점 (0) | 2025.03.04 |
[1분 면접] (Connection, Socket, Read) Timeout 차이점 (0) | 2025.02.28 |
[1분 면접] 얕은 복사와 깊은 복사의 차이 (0) | 2025.02.27 |
[1분 면접] 포워드 프록시와 리버스 프록시의 차이점 (0) | 2025.02.26 |