SSL handshake, 대칭키 & 비대칭키

대칭키(비밀키) 암호화 방식

하나의 키로 데이터를 암호화 및 복호화하는 방식이다

  • 장점

    • 암복호화에 드는 비용이 적다.

    • 속도가 빠르다

  • 단점

    • 대칭키가 노출되면 보안상 치명적인 문제가 발생한다

    • 대칭키를 전달하는 과정이 어렵다 → 대칭키을 안전하게 전달하기 위해 “비대칭키” 방식이 등장

비대칭키(공개키) 암호화 방식

두 개의 키로 데이터를 암호화 및 복호화하는 방식이다

  • 두 개의 키 : 공개키, 개인키

    • 공개키로 암호화하면 개인키로만 복호화할 수 있다. → 데이터를 암호화하여 보호하기 위한 목적

    • 개인키로 암호화하면 공개키로만 복호화할 수 있다. → 인증의 목적

  • 장점

    • 보안성이 좋다

  • 단점

    • 구현이 어렵다

    • 속도가 느리다

대칭키 + 비대칭키 혼합 방식

대칭키는 데이터 암호화하기 위해 사용하고, 비대칭키는 대칭키를 안전하게 전달하기 위해 사용한다.

SSL(Secure Socket Layer)

웹 사이트와 웹 브라우저 혹은 두 서버 사이에서 주고 받는 데이터를 암호화를 담당하는 계층이다.

  • OSI 7계층과 4계층 사이에 위치해 있다.

  • TCP보다 상위 계층에 있으므로 TCP 기반의 모든 어플리케이션에서 SSL 계층이 적용될 수 있다. (HTTP 전용으로만 사용되지 않는다.)

    • FTP over SSL, SMTP over SSL

SSL Handshake

클라이언트와 서버가 암호화 통신을 하기위해 서로의 신분을 확인하고, 필요한 정보를 교환하는 과정이다.

  1. 서버는 CA(Certificate Authority)에게 인증 요청을 한다 (자신의 정보와 공개키를 전달)

  2. CA는 CA의 개인키로 서버의 정보 + 서버의 공개키를 암호화하여 서버의 CA 인증서를 생성하고, 이를 서버에게 전달한다

  3. 클라이언트는 서버에게 ClientHello패킷을 전달하여 접속을 요청한다

    • ClientHello에 클라이언트에서 사용 가능한 Cipher Suite 목록, Session ID, SSL 프로토콜 버전, Random Byte 등이 담겨있다.

  4. 서버는 클라이언트의 Cipher Suite 리스트 중 사용할 암호화 알고리즘서버의 SSL 프로토콜 버전ServerHello패킷에 담아 클라이언트에게 알린다

  5. 서버는 클라이언트에게 CA 인증서를 전송한다 (Certificate)

  6. 클라이언트는 브라우저에 내장된 CA 공개키로 CA 인증서를 복호화하여 서버의 공개키를 얻는다 (Certificate & ServerHello Done)

  7. 클라이언트는 클라이언트의 대칭키서버의 공개키로 암호화하여 서버로 전달한다. (클라이언트 입장 : ChangeCipherSpec, Finished)

  8. 서버는 서버의 개인키 로 이를 복호화하여 클라이언트의 대칭키 를 얻는다. (서버 입장 : ChangeCiperSepc, Finished)

  9. 서버와 클라이언트는 각자 전달할 데이터를 대칭키로 암복호화하면서 안전하게 통신한다.

Last updated