
안녕하세요, 이력서 기반 면접 준비를 도와드리는 QueryDaily 팀입니다.
.
.
.
"HTTP랑 HTTPS 차이가 뭔가요?"
"HTTPS는 보안이 적용된 HTTP입니다!"
여기까지는 누구나 대답할 수 있습니다. 그런데 면접관이 고개를 끄덕이며 이렇게 묻는다면요?
"그럼 어떻게 보안이 적용되는 건가요? 구체적으로 설명해주실 수 있나요?"
혹시 "SSL/TLS를 사용해서요..."라고 말하고 멈칫한 경험, 없으신가요? 오늘은 HTTPS의 동작 원리를 면접관 앞에서 자신 있게 설명할 수 있도록, 암호화의 핵심 개념부터 TLS Handshake 과정까지 깊이 파헤쳐 보겠습니다.
먼저 왜 HTTPS가 필요한지부터 짚어봅시다. HTTP(HyperText Transfer Protocol)는 웹에서 데이터를 주고받는 프로토콜입니다. 문제는 HTTP가 평문(Plain Text)으로 데이터를 전송한다는 것입니다.
[사용자] ---> "id=admin&password=1234" ---> [서버]
↑
중간에서 훔쳐볼 수 있음! 👀
공용 와이파이에서 로그인할 때, 누군가 네트워크 패킷을 도청한다면? 여러분의 아이디와 비밀번호가 그대로 노출됩니다. 이것이 바로 Man-in-the-Middle(MITM) 공격의 시작입니다.
HTTPS는 이 문제를 해결하기 위해 TLS(Transport Layer Security) 프로토콜을 HTTP 위에 얹어, 데이터를 암호화합니다.
HTTPS를 이해하려면 먼저 암호화의 두 가지 핵심 개념을 알아야 합니다.
하나의 키로 암호화와 복호화를 모두 수행합니다.
암호화: "Hello" + [비밀키] → "X#@!2"
복호화: "X#@!2" + [비밀키] → "Hello"
비유하자면, 같은 열쇠로 잠그고 여는 자물쇠와 같습니다. 문제는 그 열쇠를 상대방에게 어떻게 안전하게 전달하느냐입니다.
두 개의 키(공개키 + 개인키)를 사용합니다.
암호화: "Hello" + [공개키] → "X#@!2"
복호화: "X#@!2" + [개인키] → "Hello"
[클라이언트] [서버]
| |
| "서버야, 공개키 좀 줘" |
| -------------------------------------> |
| |
| "여기 내 공개키야" |
| <------------------------------------- |
| |
| "비밀 메시지" + [공개키] = "암호화됨" |
| -------------------------------------> |
| |
| "암호화됨" + [개인키] = "비밀 메시지"
비유하자면, 누구나 편지를 넣을 수 있는 우체통(공개키)과 오직 집주인만 열 수 있는 열쇠(개인키)의 관계입니다.
여기서 핵심 질문이 나옵니다.
"그럼 HTTPS는 대칭키와 비대칭키 중 뭘 사용하나요?"
정답은 둘 다 사용합니다!
이 과정을 TLS Handshake라고 부릅니다. 클라이언트와 서버가 "악수"를 통해 신뢰를 확인하고, 암호화 통신을 위한 준비를 마치는 과정입니다.

[클라이언트] [서버]
| |
| 1. Client Hello |
| (지원하는 암호화 방식 목록, 랜덤 데이터) |
| ------------------------------------------------> |
| |
| 2. Server Hello |
| (선택한 암호화 방식, 서버 인증서, 랜덤 데이터) |
| <------------------------------------------------ |
| |
| 3. 인증서 검증 |
| (CA를 통해 서버가 진짜인지 확인) |
| |
| 4. 대칭키 재료 전송 |
| (Pre-Master Secret을 서버 공개키로 암호화) |
| ------------------------------------------------> |
| |
| 5. 양쪽 모두 동일한 대칭키(Session Key) 생성 |
| (랜덤 데이터들 + Pre-Master Secret 조합) |
| |
| 6. "Finished" - 이제부터 암호화 통신 시작! |
| <----------------------------------------------> |
1~2. Hello 단계
3. 인증서 검증
4~5. 대칭키 생성
6. 암호화 통신 시작
자, 이제 면접관의 깊이 있는 질문들에 대비해 봅시다.

Q1. "대칭키가 빠른데, 왜 비대칭키를 함께 사용하나요?"
A: "대칭키는 암호화/복호화 속도가 빠르지만, 키를 안전하게 공유하는 것이 어렵습니다. 반면 비대칭키는 공개키를 누구에게나 공개해도 되지만 속도가 느립니다. 따라서 TLS는 처음에 비대칭키로 대칭키를 안전하게 교환한 뒤, 이후 통신은 빠른 대칭키로 진행하는 하이브리드 방식을 사용합니다."
Q2. "CA(인증기관)는 왜 필요한가요?"
A: "공개키만으로는 서버가 '진짜 네이버'인지 '가짜 피싱 사이트'인지 구분할 수 없습니다. CA는 신뢰할 수 있는 제3자로서, 서버의 신원을 검증하고 인증서를 발급합니다. 브라우저는 미리 설치된 Root CA 목록을 통해 인증서의 유효성을 검증하여, MITM 공격을 방어합니다."
Q3. "HTTPS를 사용하면 성능이 떨어지나요?"
A: "과거에는 TLS Handshake 오버헤드로 인해 성능 저하가 있었습니다. 하지만 TLS 1.3에서는 Handshake가 1-RTT로 단축되었고, 세션 재개(Session Resumption) 시에는 0-RTT까지 가능합니다. 또한 HTTP/2와 HTTP/3은 HTTPS를 기본으로 요구하면서도 멀티플렉싱 등으로 오히려 성능을 개선했습니다."
Q4. "SSL과 TLS의 차이는 뭔가요?"
A: "SSL(Secure Sockets Layer)은 TLS의 전신입니다. SSL 3.0 이후 TLS 1.0으로 이름이 바뀌었고, 현재 SSL은 보안 취약점으로 인해 사용이 권장되지 않습니다. 하지만 관습적으로 'SSL 인증서', 'SSL/TLS'라는 표현이 혼용되고 있습니다. 실제로는 TLS 1.2 또는 TLS 1.3을 사용해야 안전합니다."
✅ HTTP는 평문 통신으로 도청과 변조에 취약합니다.
✅ HTTPS는 TLS 프로토콜을 통해 암호화된 통신을 제공합니다.
✅ TLS는 비대칭키로 대칭키를 교환하고, 대칭키로 데이터를 암호화하는 하이브리드 방식입니다.
✅ CA 인증서를 통해 서버의 신원을 검증하여 MITM 공격을 방어합니다.
오늘 다룬 내용처럼, "HTTPS는 보안이 적용된 HTTP예요"라는 답변에서 한 걸음 더 나아가 동작 원리까지 설명할 수 있다면, 면접관에게 깊은 인상을 남길 수 있습니다. 이력서에 적힌 기술 스택 하나하나에서 이런 꼬리 질문들이 이어질 수 있다는 것, 알고 계시죠? QueryDaily는 여러분의 이력서를 분석하여 이런 깊이 있는 질문들을 매일 제공해 드립니다.

#HTTPS #TLS #SSL #네트워크 #보안 #백엔드면접 #CS기초
좋은 글 잘 보고 갑니다~!