1. HTTPS (HTTP + SSL/TLS)
0️⃣ 필기

1️⃣ HTTPS의 목적
- 기밀성: 데이터 도청 방지
- 무결성: 데이터 위·변조 방지
- 인증: 서버가 진짜인지 확인
➡️ 이를 위해 암호화 + 인증서 + CA를 사용
2️⃣ 등장 요소 정리
1) 브라우저 (Client)
- 서버에 접속하려는 사용자
- CA 공개키 목록을 이미 내장하고 있음 (중요)
2) 서버 (예: Naver, 443 포트)
- 비밀키(S 개인키): 외부에 절대 공개 ❌
- 공개키(S 공개키): 인증서를 통해 배포
3) CA 기관 (Certificate Authority)
- 완전히 신뢰 가능한 제3자
- 서버의 공개키가 진짜인지 서명(Sign) 해줌
3️⃣ HTTPS 인증서 구조 (그림 기준)
인증서 안에 들어있는 것:
- 서버의 공개키 (S 공개키)
- 도메인 정보 (naver.com)
- CA 정보
- CA의 개인키로 만든 서명
➡️ 인증서 자체는 암호화가 아니라 서명된 문서
4️⃣ HTTPS 동작 흐름 (필기 기준)
① 서버 → 브라우저
“내 공개키(S 공개키)야!” + 인증서 전송
② 브라우저 → CA
“이 공개키 진짜야?”
- 브라우저는 인증서에 있는 CA 서명을
- 자기가 이미 알고 있는 CA 공개키로 검증
③ CA → 브라우저
“맞아. 이 공개키는 naver.com 거야”
✔️ CA 서명 검증 성공
✔️ 도메인 일치 확인
④ 브라우저
- 서버의 공개키(S 공개키)를 신뢰함
- 이제 안전한 통신 준비 완료
⑤ 브라우저 → 서버
대칭키(BN 등)를 S 공개키로 암호화해서 전송
S 공개키로 암호화
→ 서버만 S 개인키로 복호화 가능➡️ 이후 실제 데이터(body)는 대칭키로 암호화해서 통신
5️⃣ ⭐ 필기에는 없지만 반드시 알아야 할 핵심 개념
1) ✅ 공개키 암호는 “인증 + 키 교환” 용도
- 공개키 암호는 느림
- 그래서 실제 데이터는 ❌ 공개키 암호 사용 안 함
- 대칭키를 안전하게 전달하기 위한 용도
👉 실제 통신 = 대칭키 암호
2) ✅ HTTPS = SSL ❌ → TLS ⭕
- 현재는 TLS (Transport Layer Security) 사용
- “SSL”은 옛날 용어 (관습적으로 아직 사용)
3) ✅ CA는 하나가 아니다 (인증서 체인)
- Root CA
- Intermediate CA
- Server Certificate
👉 브라우저는 Root CA만 신뢰
👉 체인을 따라가며 신뢰 검증
4) ✅ HTTPS가 보장하지 않는 것
- 서버 내부 보안 ❌
- 악성 서버 여부 ❌
- 데이터가 “선한 내용인지” ❌
👉 통신 과정만 안전
5) ✅ HTTPS(443) vs HTTP(80)
구분 | HTTP | HTTPS |
암호화 | ❌ | ⭕ |
인증 | ❌ | ⭕ |
포트 | 80 | 443 |
MITM 공격 | 취약 | 방어 |
6️⃣ 한 줄 요약 (시험용)
HTTPS는 CA가 보증한 서버 공개키를 이용해 대칭키를 안전하게 교환하고, 이후 대칭키로 통신하는 보안 프로토콜이다.
Share article