본문 바로가기
기초 튼튼탄탄탄/네트워크

SSL 통신과정(handshake) 그림으로 이해하기

by 잇서니 2021. 1. 11.
반응형

 

SSL(Secure Sockets Layer)이란

암호화 기반의 통신 프로토콜이다. HTTPS는 HTTP에 SSL이 결합된 개념이다.

 

SSL 주요 특징

  • SSL 인증서를 통해 클라이언트와 서버 간의 통신을 보증한다.
  • 암호화된 데이터를 주고 받는다. 주로 대칭키(공개키) 방식, 비대칭키(비밀키) 암호화방식이 사용된다.
  • SSL 통신과정은 handshake라는 과정을 거친다. (handshake -> 데이터전송 -> 세션종료)

 

SSL 통신과정 (handshake 과정)

브라우저에 URL(https://~~)을 입력하여 접속한 이후의 과정이라고 보면 된다. 

1) 클라언트 -> 서버

  • 클라이언트는 랜덤데이터를 만들어 서버에 보낸다.
  • 클라이언트에서 사용 가능한 암호화방식들을 서버에 보낸다.

2) 서버 -> 클라이언트

  • 서버 또한 랜덤데이터를 만들어 클라이언트에 보낸다.
  • 클라이언트가 보낸 암호화방식들 중에 사용할 방식을 선정하여 클라이언트에 보낸다. 
  • SSL 인증서도 같이 보낸다.
SSL 인증서에는 공개키, 인증서 발급자(CA), 도메인 등등의 정보가 담겨있다.

 

3) 클라이언트 -> (공인/사설) CA

  • 서버에게 받은 인증서를 CA를 통해 확인한다. (믿을만한 서버인가 확인하는 과정)
  • 공인된 CA(브라우저에 저장된 CA리스트)에서 발급받은 인증서라면 인증서의 공개키로 복호화할 수 있다. 왜냐하면 제대로된 인증서라면 공인CA의 비밀키로 암호화되었기 때문이다. (비대칭키 암호화 방식)  즉, 서버에게 받은 인증서가 믿을만하다는 것이 보증된 것이다. 그러면 브라우저에도 https가 안전하게 연결됐다는 표시가 뜬다.
  • 그러나 공인된 CA가 아닌 사설 CA에서 발급받은 인증서라면? 사설 CA는 브라우저에 저장된 CA 리스트에 없을 것이다. 그러니 믿을만한 인증서라고 판단이 되지 않는다. 브라우저에는 https 경고 표시가 뜨게 된다.
공인CA 인증서
- 유료
- 많은 사람에게 오픈되는 사이트일 때 사용 (ex. Google, Naver 등)
- 브라우저에 안전함 표시가 뜸

사설CA 인증서
- 무료 (keytool, openssl 등을 사용하여 발급 가능)
- 브라우저에 안전하지 않음 표시가 뜸
- 공인 인증서에 금지된 정보를 포함할 수 있음

자체서명된 인증서
- CA없이 발급된 인증서
- 인증서 자체가 CA역할을 하게 됨
- 보안은 약하지만 사용이 쉬움

 

4) 클라이언트

  • 1), 2) 에서 생성된 랜덤데이터들을 조합하여 임시key를 만든다.

 

5) 클라이언트

  • 임시key를 인증서의 공개키로 암호화한다.

 

6) 클라이언트 -> 서버

  • 암호화한 임시key를 서버에 전송한다.

 

7) 서버

  • 임시key는 서버에 저장된 비밀키로 복호화할 수 있다. 왜냐하면 인증서의 공개키로 암호화 되었기 때문이다. (비대칭키 암호화방식)

 

드디어!

서버와 클라이언트가 임시key를 공유하게 되었다. 이후 서버와 클라이언트에서 일련의 과정을 거친 후에 최종 key를 만든다. (주황색 동그라미 key)

이후부터는 주황색 동그라미 key로 암호화된 데이터를 주고 받는다. (대칭키 암호화 방식)

 


 

참고링크

 

 

 

 

반응형

'기초 튼튼탄탄탄 > 네트워크' 카테고리의 다른 글

DHCP ignore MAC Address (dhcpd.conf)  (2) 2020.07.02

댓글