HTTPS 동작방식

리리티·2022년 11월 28일
0

HTTPS

HTTP를 통해 주고 받던 정보를 SSL을 사용하여 HTML 정보를 암호화 시켜 외부 사용자로부터 지킨다.

HTTPS는 HTTP에 Secure Socket Layer(SSL)을 더한 것

SSL

웹사이트와 브라우저 사이(또는 두 서버 사이)에 전송되는 데이터를 암호화하여 인터넷 연결을 보호하기 위한 표준 기술

TCP/IP 네트워크에서 통신할 때 사용되는 암호화 기반 프로토콜

SSL 구조

Application계층에서 사용되는 http프로토콜에 SSL을 더한 구조

SSL 동작방법

공개키 암호화 방식과 공개키의 단점을 보완한 대칭키 암호화 방식을 함께 사용

  1. Client -> Server(Client Hello)

    • 클라이언트에서 통신하고 싶은 서버로 연결을 시도하는 패킷을 전송
    • 클라이언트 측에서 생성한 랜덤 데이터
    • 클라이언트가 지원하는 암호화 방식
    • 세션 아이디
  2. Sever -> Client(Server Hello)

    • 서버에서 성생된 랜덤 데이터
    • 서버가 선택한 클라이언트의 암호화 방식
    • 인증서
  3. Client에서 일어나는 일

    • 클라이언트는 서버의 인증서가 인증기관에 의해서 발급된 것인지 확인하기 위해서 클라이언트에 내장된 인증기관리스트를 확인
    • 인증기관리스트에 인증서가 없다면 사용자에게 경고메시지를 출력
    • 확인 결과 서버를 통해서 다운받은 인증서가 내장된 인증기관 리스트에 포함되어 있다면 해당 CA의 공개키를 이용해서 암호화되어있는 인증서를 복호화
    • 복호화를 통해 클라이언트는 인증서에 들어있는 서버 공개키를 획득 (인증서를 전송한 서버를 신뢰)
    • 클라이언트는 주고받은 랜덤 데이터를 조합해 키를 생성
  4. Client -> Server

    • 인증서에서 복호화해낸 서버의 공개키로 키를 암호화해서 서버로 전송
  5. Server

    • 클라이언트가 전송한 값을 자신의 비공개키로 복호화하여 값을 얻는다
  6. Client, Server

    • session key로 생성
  7. session key를 이용해서 서버와 클라이언트는 데이터를 대칭키 방식으로 암호화한 후에 주고 받는다.

  8. 세션이 종료되면 session key는 폐기

profile
remind

0개의 댓글