HTTPS SSL 복호화는 어디서 진행될까?

김태인·2022년 10월 28일
0
post-thumbnail

금번 기술면접을 진행하면서 https 복호화가 어디서 진행되냐는 질문을 받았다

복호화는 대칭키와 비대칭키 시스템을 활용해 클라이언트와 서버 모두 암복호화를 진행하는것으로 알고있었고, 이와 관련된 답변을 하였으나 면접관이 원한 답변은 아니였고 이후 관련하여 공부한것을 기록해본다


HTTP 동작과정

먼저 http의 동작과정을 살펴보자

  1. 클라이언트 URL 주소를 입력 및 DNS 서버를 통해 IP를 획득
  2. 웹 서버와 TCP 연결 시도 (3-way handshaking)을 통해 통신 연결 수립, 소켓 개방진행
  3. 클라이언트가 서버에게 요청 (Request)
  4. 서버는 클라이언트에게 응답 (Response)
  5. 연결 종료 (4-way handshaking)
  6. 클라이언트는 응답을 기반하여 웹 문서 출력
  • 그렇다면 https는 어떻게 진행될까?

HTTPS 동작 과정

  1. 클라이언트 URL 주소를 입력 및 DNS 서버를 통해 IP를 획득
  2. 웹 서버와 TCP 연결 시도 (3-way handshaking)을 통해 통신 연결 수립, 소켓 개방진행
    3. Handshaking 과정에서 SSL인증서 확인
    **4. 서버와 클라이언트는 Session Key(서버 생성)를 활용해 데이터 암복호화 요청 (Request / Response)
  3. 클라이언트가 서버에게 요청 (Request)
  4. 서버는 클라이언트에게 응답 (Response)
  5. 연결 종료 (4-way handshaking) 및 session key 폐기
  6. 클라이언트는 응답을 기반하여 웹 문서 출력

http와의 차이라면 3,4번이 추가되어 보안기능을 추가하는것을 알 수 있다
그렇다면 SSL인증은 어떤 과정으로 동작하게 되는걸까?

Handshaking 과정에서 SSL인증을 확인하는 과정

  1. 클라이언트는 랜덤데이터 생성하여 서버 전달
  2. 서버측에서 생성한 무작위 데이터와 해당 서버 인증서를 실어서 클라이언트에게 보냄
  3. 브라우저에 내장된 CA정보로 서버 인증서를 비대칭키 시스템을 통해 확인
  4. 브라우저에 저장된 CA의 공개키로 인증서 복호화 (*CA인증을 받은 인증서들은 해당 CA의 개인키로 암호화 되어있음) / 만약 복호화가 되지 않는다면 정상적인 서버 인증서가 아님으로 브라우저 주소창에 Not secure뜸
  5. 복호화된 인증서로 서버 공개키 획득
  6. 핸드쉐이킹 과정을 통해 주고받은 데이터를 혼합해서 임시키를 생성
  7. 서버의 공개키로 암호화되서 서버로 보내짐
  8. 양쪽에서 일련의 과정을 거쳐 동일한 대칭키 획득
    9 이후 서로 주고받는 메시지는 대칭키로 보안유지

해당 과정을 통해 SSL 인증이 진행되며
면접관님의 질문의 복호화가 어디서 이루어지는지에 대한 원하셨던 답변은
아무래도 첫 공개키를 획득하는 클라이언트 부분이 아니였을까? 생각 된다

무튼 금번 면접을 통해 https 인증과정을 좀더 자세히 살펴보게 된 것 같다
단순히 동작만 하는 코드를 짜는것이 아닌, 원리와 과정을 이해하는게 중요하다는것을 오늘도 깊이 느낀다

profile
코딩이 취미가 되는 그날까지

0개의 댓글