HTTP와 HTTPS의 차이는 무엇인가요?
면접용 답변
HTTP와 HTTPS는 웹에서 데이터를 주고받는 프로토콜로 둘의 가장 큰 차이는 보안입니다. HTTP는 데이터를 암호화하지 않고 전송하기 때문에 제3자가 데이터를 가로채고 읽을 수 있습니다. 반면 HTTPS는 모든 요청 및 응답을 SSL및 TLS 프로토콜에 따라 암호화합니다. 따라서 사용자의 개인정보나 로그인 정보처럼 민감한 데이터를 다룰 때 HTTPS를 사용하면 중간에서 도청이나 변조를 막을 수 있습니다.
개념 설명
1. HTTP (HyperText Transfer Protocol)
웹에서 클라이언트와 서버 간의 요청/응답 통신에 사용되는 프로토콜
특징
비연결성(Connectionless): 요청 후 연결이 끊김
무상태성(Stateless): 요청 간 상태를 유지하지 않음
단방향성 : 클라이언트 -> 서버
보안 없음: 평문으로 데이터를 전송 ➡️ 도청, 위조, 변조 위험
2. HTTPS (Hypertext Transfer Protocol Secure)
HTTP에 SSL/TLS 보안 계층을 추가한 버전
암호화 방식
대칭키 : 암호화와 복호화에 같은 키를 사용하는 방식
장점) 속도 빠름
단점) 키 전달이 보안상 취약 → 그래서 비대칭키로 보호함
공개키 : 암호화와 복호화에 다른 키를 사용하는 방식 (공개키&개인키)
장점) 키 공유 과정에서 안전
단점) 속도 느림 → 본문 전체 암호화에 비효율적
대칭키 + 공개키 : 공개키(서버의 인증서)로 대칭키를 암호화해서 전달한 후, 대칭키로 본문 통신
HTTPS 통신 흐름
사용자가 HTTPS 웹 사이트 방문
웹 사이트 : 서버의 SSL 인증서 요청
서버 : 공개 키가 포함된 SSL 인증서를 회신
웹 사이트 : 서버 인증서 검증 브라우저가 퍼블릭 키로 비밀 세션 키가 포함된 메시지를 암호화하고 전송
웹 사이트 : 세션 키를 공개키로 암호화해 전송
이후 대칭키 기반으로 본문 통신 시작
SSL과 TLS
두 개 모두 암호화된 데이터 전송을 위한 프로토콜
SSL은 현재 안쓰임 / TLS가 표준
그러나 두개 모두 같은 의미로 통용됨
3. SSL 인증서
SSL 인증서: 서버의 공개키, 도메인 정보, 인증서 발급자, 유효기간 등이 담긴 디지털 문서
CA : 디지털 인증서를 발급해주는 기관. SSL/TLS 기반 통신을 하기 위해서는 CA로부터 인증서를 발급받아야 한다.
SSL/TLS 인증서 발급 과정
웹 사이트에서 공개키 - 개인키 쌍을 생성
웹 사이트의 정보와 공개키를 바탕으로 CSR을 작성하여 CA에게 전송
CA는 웹 사이트의 공개키를 해시 후 CA의 개인키로 암호화해서 디지털 서명 생성
웹 사이트 정보와 디지털 서명 정보를 포함하는 인증서 발급
SSL/TLS 통신 과정
TCP 3 way handshaking 과정을 통해 연결을 확인
클라이언트 - 인증서 요청/ 서버 - 인증서 전송
인증서를 발급한 기관을 브라우저의 CA 목록에서 찾아 CA의 공개키를 가져옴
CA 공개키로 서명을 복호화
서버의 공개키를 해시하여 서명을 복호화 한 값과 일치한지 확인
클라이언트는 대칭키를 서버와 교환
새끼 질문
HTTPS 통신에서 사용되는 암호화 방식은 어떻게 구성되어 있나요?
SSL 인증서는 어떤 역할을 하며, 신뢰할 수 있는지 어떻게 판단하나요?
Reference
https://docs.tosspayments.com/resources/glossary/http-protocol https://kdeon.tistory.com/132#대칭키%20방식(Symmetric%20Key%20Cryptosystem)-1
Last updated