It's easy, if you try

[보안] SSL의 동작 방법 본문

etc.

[보안] SSL의 동작 방법

s5he2 2021. 2. 14. 21:24
반응형

SSL의 동작 방법

생활코딩에서 SSL의 동작 방법을 읽으며 내가 이해하기 쉬우려고 정리하였다.

더 정확하고 자세한 정보를 알고 싶거나 HTTPS와 암호화 방법에 대한 사전지식이 없다면 아래 링크를 참고 !

[ 출처: https://opentutorials.org/course/228/4894 ]

1. 악수 (handshake)

실제 데이터를 주고 받기 전 client와 server가 나누는 일종의 인사

이 과정을 통해 서로 상대방이 존재하는지, 데이터를 주고 받기 위해 어떤 방법을 사용할지 파악한다.

  1. client hello

    • client측에서 생성한 랜덤 데이터

    • client가 지원하는 암호화 방식들

    • 세션 아이디

  2. server hello

    • server 측에서 생성한 랜덤 데이터

    • server가 선택한 client의 암호화 방식

    • 인증서

  3. client는 server의 인증서가 CA에 의해서 발급된 것인지 확인하기 위해 client에 내장된 CA 리스트를 확인

    • client에 내장된 CA의 공개키를 이용하여 인증서 복호화 -> 복호화에 성공했다면 인증서는 CA의 개인키로 암호화된 문서임이 암시적으로 보증된다.

  4. client는 client 랜덤 데이터 + server 랜덤 데이터 = pre master secret 생성

  5. client가 server의 공개키를 이용하여 pre master secret값을 암호화하여 server에 전달 (공개키 방식)

  6. server는 비공개키를 이용하여 pre master secret값을 복호화 한 후 master secret값으로 만듬 (공개키 방식)

    • master secret은 session key를 생성한다.

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

  7. client와 server는 핸드쉐이크 단계의 종료를 서로에게 알림

2. 세션

실제로 서버와 클라이언트가 데이터를 주고 받는 단계

이 단계에서 정보를 상대방에 전송하기 전 session key 값을 이용하여 대칭키 방식으로 암호화 한다.

  • 대칭키 방식을 사용하는 이유

    공개키 방식의 많은 컴퓨터 파워 사용, 공개키 사용시 많은 접속이 몰려 서버의 비용 증가

  • SSL이 대칭키와 공개키를 조합해서 사용하는 이유

    대칭키를 상대에게 전송할 때 암호화 되지 않은 인터넷을 통해서 키를 전송하는 것이 위험하기 때문.

따라서, 속도는 느리지만 데이터를 안전하게 주고 받을 수 있는 공개키 방식으로 대칭키를 암호화하고, 실제 데이터를 주고 받을 때는 대칭키를 이용해서 데이터를 주고 받는다.

3. 세션종료

데이터의 전송이 끝나면 SSL 통신이 끝났음을 서로에게 알려준다. 이 때 통신에서 사용한 대칭키인 session key를 폐기한다.

최초 발행 날짜: 2020-08-08 23:32:00

반응형
Comments