heyday2024 님의 블로그
heyday2024
heyday2024 님의 블로그
HTTP, HTTPS 본문
프론트엔드 부트캠프
HTTP, HTTPS
heyday2024
2024. 11. 28. 21:51
1. HTTP란?
- HTTP(Hypertext Transfer Protocol)는 서버와 클라이언트 간 데이터를 주고받는 통신 프로토콜.
- 특징:
- 80번 포트를 사용.
- 데이터를 평문(Plain Text)으로 전송.
- 빠르고 효율적이지만 보안이 취약.
- 사용 사례:
- 뉴스, 공개된 정보와 같은 민감하지 않은 데이터 전송.
HTTP의 문제점
- 도청 가능: 데이터가 암호화되지 않아 네트워크에서 쉽게 읽힘.
- 데이터 변조 가능: 전송 중 데이터가 손쉽게 변조될 수 있음.
- 신원 위조 가능: 클라이언트가 서버의 신뢰성을 검증할 수 없음.
2. HTTPS란?
- HTTPS(Hypertext Transfer Protocol Secure)는 HTTP에 SSL/TLS 암호화를 추가하여 보안을 강화한 프로토콜.
- 특징:
- 443번 포트를 사용.
- 데이터를 암호화해 제3자가 도청하거나 변조하지 못하도록 보호.
- TLS(Transport Layer Security)를 통해 기밀성, 무결성, 인증을 제공.
- 사용 사례:
3. HTTP와 HTTPS의 주요 차이점
특징HTTPHTTPS
포트 번호 |
80번 |
443번 |
보안 수준 |
암호화 없음 (평문 데이터) |
암호화 (TLS 사용) |
속도 |
빠름 |
암호화 과정 때문에 약간 느림 |
비용 |
무료 |
인증서 발급 및 유지 비용 발생 |
도청 가능성 |
높음 |
매우 낮음 |
사용 사례 |
공개된 정보 |
민감한 데이터 |
4. HTTPS 통신 암호화 과정
1단계: 웹서버와 CA 간 인증서 발급
- 웹서버에서 공개키(A)와 비공개키(A') 생성:
- 서버는 A(Public Key)와 A'(Private Key)를 생성.
- CSR 파일 작성 및 제출:
- 서버는 CSR(Certificate Signing Request)을 작성해 CA에 제출.
- CSR에는 서버의 공개키(A)와 서버 정보가 포함되며, 서버의 비공개키(A')로 서명.
- CA에서 인증서 발급:
- CA는 서버 정보를 검증한 뒤, 인증서를 생성.
- 인증서에는 서버의 공개키(A)와 CA의 서명(D')이 포함됨.
- 웹서버로 인증서 전송:
- CA는 인증서를 서버로 전달. 서버는 인증서와 자신의 비공개키(A')를 보관.
2단계: 브라우저와 웹서버 간 TLS Handshake
- 브라우저가 HTTPS 요청 전송:
- 사용자가 HTTPS URL에 접속하면 브라우저가 서버에 연결 요청.
- 서버에서 인증서 제공:
- 서버는 인증서를 브라우저에 전송. 인증서에는:
- 서버의 Public Key(A).
- CA의 서명(D').
- 브라우저에서 인증서 검증:
- 브라우저는 미리 설치된 CA의 **Public Key(D)**를 사용해 CA의 서명(D')을 검증.
- 검증이 성공하면 서버의 **Public Key(A)**가 신뢰할 수 있음을 확인.
3단계: 세션 키(C) 교환
- 브라우저에서 세션 키(C) 생성:
- 브라우저는 임의의 세션 키(C)를 생성.
- 서버의 **Public Key(A)**로 C를 암호화.
- 암호화된 세션 키 전송:
- 브라우저는 A로 암호화된 세션 키(C)를 서버로 전송.
- 서버에서 세션 키 복호화:
- 서버는 자신의 비공개키(A')로 세션 키(C)를 복호화.
- 세션 키(C) 공유 완료:
- 서버와 브라우저는 동일한 세션 키(C)를 공유.
4단계: 데이터 암호화 통신
- 대칭 암호화로 데이터 전송:
- 서버와 브라우저는 공유된 세션 키(C)를 사용해 데이터를 암호화 및 복호화.
- 안전한 통신:
- 네트워크를 통해 전송되는 데이터는 암호화되어, 도청 및 변조 방지.
5. HTTPS의 보안 문제 해결
- 도청 방지:
- TLS 암호화를 통해 데이터를 보호. 공격자가 데이터를 가로채도 내용을 알 수 없음.
- 변조 방지:
- TLS는 데이터의 무결성을 보장해 변조된 데이터를 탐지 가능.
- 신원 위조 방지:
- CA 인증서를 통해 서버의 신뢰성을 검증. 가짜 서버로 유도 방지.
6. 중간자 공격(MITM) 방지
중간자 공격이란?
- 공격자가 클라이언트와 서버 간 통신을 가로채, 가짜 공개키(A')를 전송하여 대칭키(C)를 생성.
- 결과적으로 공격자는 데이터를 가로채고 변조 가능.
HTTPS의 방어 방법
- CA 인증서 사용:
- 브라우저는 CA의 **Public Key(D)**로 서버 인증서를 검증.
- 공격자는 CA 서명을 위조할 수 없으므로 신뢰를 얻을 수 없음.
- 세션 키 교환 보호:
- 브라우저는 서버의 **진짜 공개키(A)**로만 세션 키(C)를 암호화.
- 공격자는 서버의 비공개키(A') 없이 C를 복호화할 수 없음.
- 이전에 보안 관련 수업에서 E2EE, 대칭/비대칭 암호화 등을 배운 기억이 있는데 조금씩 그 기억이 잊혀질 때쯤 다시 HTTP, HTTPS를 찾아보면서, 이전의 기억들 다시 조금 살아났다.