그 외 공부/네트워크

[네트워크] HTTPS, SSL HandShake란?

SeongOnion 2021. 5. 22. 22:20
728x90

HTTPS

HTTPS란?

  • HTTP 프로토콜의 보안버전 - S(Secure)

HTTP의 약점

  • 암호화가 되지 않은 평문 통신으로, 도청이 가능하다.
  • 통신하려는 상대를 확인하지 않는다

HTTP의 약점을 보완하기 위해선 암호화가 필요하다 🔑

암호화 알고리즘

1. 대칭키

암호화와 복호화에 동일한 키를 사용하는 것

 

대칭키의 장점

  • 송신자와 수신자가 동일한 키를 가지고 있기 때문에, 암호화 - 복호화 과정이 단순하며 속도가 빠르다.

대칭키의 단점

  • 어쨌든 송신자와 수신자 간 키 교환이 이루어져야한다.
  • 키 교환 과정에서 키가 노출되면 암호가 무력해진다.
  • 수신자와 송신자가 늘어날수록 그만큼 관리해야할 키가 하나 씩 증가해 관리가 어려울 수 있다.

 

2. 비대칭키(공개키)

암호화와 복호화에 다른 키를 사용하는 것

비대칭키의 장점

  • 단 하나의 공개키를 사용함으로써 모든 수신자와 개별 키를 만들 필요가 없다.
  • 암호화 후 데이터를 송신하는 과정에서 키를 탈취당하더라도 해당 키로 복호화는 할 수 없기 때문에 공개키 방식보다 안전하다.

비대칭키의 단점

  • 암호화 - 복호화에 서로 다른 키를 사용하므로 대칭키와 비교해 속도가 느리다.

 

HTTPS의 암호화 방식

SSL 이란?

  • 기존 OSI 7계층에서 '보안 계층' 이라는 독립적인 프로토콜 계층을 만들어, 응용계층과 전송계층 사이에 위치
  • TLS는 SSL의 후속버전이지만 일반적으로 SSL이 더 많이 사용되는 용어
  • CA(Certificate Authority)라는 인증기간에서 발급
  • 웹사이트가 신뢰할 수 있는 곳이라는 인증서

SSL HandShake

HandShake의 흐름

1) TCP 3 way HandShake를 우선적으로 거친다.

2) C(Client)👦 : 컴퓨터가 자신의 버전, 암호 알고리즘 목록, 사용 가능한 압축 방식을 "Client Hello" 메시지에 담아 서버로 전송

3) S(Server)💻 : 클라이언트가 제공한 암호 알고리즘 목록, 압축 방식 목록 중 선택 / 세션 ID, CA에서 사인한 서버의 공개 인증서를 "ServerHello"에 담아 전송

4) C👦 : 서버가 보낸 SSL 인증서가 CA 목록에 있는지 확인 (크롬, 사파리 등 브라우저에 CA 목록이 탑재) -> SSL이 확인되면 클라이언트와 서버가 사용할 대칭키를 형성하기 위해 난수 바이트를 생성해 서버의 공개키로 암호화 후 전송

5) S💻 : 클라이언트가 보낸 대칭키를 서버의 개인키로 복호화

HandShake에서 사용하는 암호화 방식

1) 서버가 "ServerHello"에서 보내는 SSL 인증서를 브라우저에 내장되어 있는 CA의 공개키로 복호화

2) CA의 공개키로 복호화 된 SSL 인증서에는 서버의 공개키가 들어있음

3) 클라이언트가 대칭키를 생성하고, 이를 SSL 인증서에서 얻은 서버의 공개키로 암호화 후 서버에 전송

4) 서버는 자신의 개인키로 클라이언트에게 받은 대칭키를 복호화

✅ 결론

대칭키를 전달하기 위해 비대칭키를 사용한다 - 대칭키 / 비대칭키를 모두 사용한다!
  • 보안성 ⬆
  • 효율성 ⬆