본문 바로가기
🤓 면접

[개발자면접] HTTP, HTTPS 프로토콜 비교 차이점(SSL handshake, SSL 인증서)

by 비타민찌 2022. 11. 25.
728x90

1. HTTP 프로토콜에 대해 설명해주세요.

Hyper Text Transfer Protocol 로, 웹에서 데이터를 주고 받기 위한 프로토콜입니다.

상태 정보를 저장하지 않는 Stateless의 특징과,

클라이언트의 요청에 응답을 보낸 후 연결을 끊는 특징을 가지고 있습니다.

그래서 이전 통신의 정보를 모르기 때문에 매번 인증을 해줘야 하고 이를 해결하기 위해 쿠키(cookie)나 세션(session)을 사용합니다.

 

HTTP의 특징 (Stateful과 Stateless, 쿠키, 세션, 토큰, 인증방식 비교)

 

2. HTTP와 HTTPS의 차이점은 무엇인가요?

HTTP는 평문으로 데이터를 전송하기 때문에, 이걸로 아이디나 패스워드 같은 정보를 주고 받으면 패킷 캡쳐를 했을때 그 내용을 다 볼 수 있습니다. 그래서 HTTP에 SSL 프로토콜을 추가한 HTTPS 사용해서 데이터를 암호화하여 안전한 통신을 할 수 있습니다.

HTTPS 는 내가 사이트에 보내는 정보들을 제 3자가 못보게 하고, 접속한 사이트가 믿을 만한 곳인지 알려주는 점 때문에 HTTP보다 안전합니다.

 

3. SSL 인증서 암호화 기법인 대칭키 암호화 기법, 공개키 암호화 기법에 대해 설명해보세요.

대칭키는 데이터 암복호화에 동일한 키를 활용하는 기법이고

공개키는 공개키와 비밀키 두 개의 키를 가지고 진행합니다.

공개키는 모든 사람이 접근 하능한 키고 비밀키는 각 사용자만이 가지고 있는 키로, 공개키를 가지고 데이터를 암호화해서 해당 키 주인에게 전달하는데요. 그럼 키 주인은 자기 자신만 갖고 있는 개인키로 받은 데이터를 복호화할 수 있습니다.

 

+ SSL 인증서의 역할?

클라이언트가 접속한 서버가 신뢰할 수 있는 서버임을 보장하고, SSL 통신에 사용할 공개키를 클라이언트에게 제공 합니다.

공개키 기반 인증 방식은 누구나 공개키를 받아갈 수 있기 때문에 MITM 공격에 취약합니다. 그래서 내가 접속하려고 하는 사이트의 공개키가 해당 도메인의 공개키가 맞는지 확인이 필요한데, 인증서는 제3 기관이 이를 인증해주는 것입니다.

[SSL 인증서란? (SSL 인증서가 안전한 연결을 만드는 법, 공개키, 개인키, 세션키)]

 

4. HTTPS는 어떻게 안전한 연결을 만드나?

SSL 프로토콜의 동작 방식

아래 그림의 파란색과 노란색 선은 네크워크 상에서 전달되는 IP 패킷입니다. 파란색은 TCP layer의 3 way handshake로 HTTPS가 TCP 기반의 프로토콜이기 때문에 SSL handshake에 앞서 연결을 생성하기 위해 실시하는 과정이고, 노란색 선이  SSL handshake 입니다.

SSL Handshake 이미지 출처 Cloudflare

(인증서랑 받아가는 공개키가 해당 사이트의 공개키가 맞다고 CA에서 인증을 해준 것)

 

[1] ClientHello(암호화 알고리즘 나열 및 전달)

                      [2] Serverhello(암호화 알고리즘 선택)

                            Server Certificate(인증서 전달)

                           *인증서 안에 공개키가 있음

[3] Client Key Exchange(데이터를 암호화할 대칭키를, 받아온 인증서 안에 들어있는 공개키로 암호화해서 전달)

- [4] Client / ServerHello done (정보 전달 완료) Fisnied (SSL Handshake 종료) -

 

 

더 자세한 과정: https://aws-hyoh.tistory.com/39

728x90

댓글