본문 바로가기
네트워크

[네트워크] 네트워크 보안

by doflamingo 2019. 10. 24.

1. HTTP vs HTTPs

HTTP는 HyperText Transfer Protocol로 HTML 문서를 전송하기 위한 프로토콜이다. 그러나 이 프로토콜은 보안이 되어있지 않기 때문에 로그인 같은 기능을 사용할 때 비밀번호 등의 감청이 되기 쉽다. 

HTTPS HyperText Transfer Protocol over Secure Socket Layer로 HTTP의 보안이 강화된 버전이다. 

 

2. SSL

SSL은 Secure Socket Layer로 컴퓨터 네트워크에 통신보안을 제공하기 위해 설계된 통신 규약 프로토콜이다.

그리고 TLS(Transport Layer Secure)이라는 이름은 SSL(Secure Socket Layer)가 표준화 되면서 바뀐 이름이다. 

 

 

SSL 레이어

→ HTTPS는 SSL 프로토콜 위에서 HTTP프로토콜이 이뤄지는 것을 말한다. 

 

3. 암호화 종류

- 대칭키

  1. 암호화와 복호화에 사용하는 Key가 동일하다. 
  2. 비대칭키에 비해 속도가 빠르고 컴퓨팅 파워가 적게든다.

    ▶ 그러나 Key를 보내는 과정에서 Key의 정보가 노출되면 문제가 생긴다.

 

- 비대칭키

  1. 암호화 복호화에 사용하는 키의 종류가 다르다. 

    A로 암호화 한것을 B로 복호화 할 수 있고, B로 암호화 한것을 A로 복호화 할 수 있다.  
  2. 그 중 하나를 Private Key로 지정하고 또 다른 하나는 Public Key로 지정한다. 개인키는 본인이 가지고 있고 공개키는 타인에게 제공한다. 
  3. 대칭키에 비해 복잡하고 컴퓨팅 파워가 더 많이든다.

 

SSL 인증서

 

  1. 클라이언트가 접속한 서버는 신뢰할 수 있는 서버임을 보장한다. 
  2. SSL 통신에 사용할 공개키를 클라이언트에게 제공한다. 

CA(Certificate Authority)

 

SSL 인증서를 제공해주는 인증기관이다. 즉, 클라이언트가 접속한 서버가 클라이언트가 원한 서버가 맞는지 보장해주는 기관이다. 

Root Certificate라고도 한다. 

 

SSL 인증서의 내용

 

  1. 서비스의 정보(인증서를 발급한 CA, 서비스의 도메인)
  2. 서버가 제공하는 공개키(공개키의 내용, 공개키의 암호화 방법)

SSL 인증서 

 

SSL 인증 방법

 

 


1. HandShake

 

- 클라이언트: 클라이언트가 서버에 접속, 접속시 아래의 내용들을 데이터에 담아서 전송 (Client Hello)

  • 클라이언트 측에서 생성한 랜덤데이터
  • 클라이언트가 지원하는 암호화 방식 전송
  • 세션 아이디

- 서버: 서버는 클라이언트에게 응답을 보낸다.(Server Hello)

  • 서버측에서 생성한 랜덤데이터
  • 서버가 선택한 클라이언트의 암호화 방식
  • 인증서

- 클라이언트: 클라이언트는 서버의 인증서가 CA에 의해 발급되었는지 클라이언트에 내장된 CA리스트에서 확인한다. 
  확인이 된 후, 인증서 안에 서버의 공개키를 획득한다. 

   → CA의 공개키로 복호화에 성공했다면 CA에서 발급한 인증서란 것을 보증한다. 

 

  클라이언트: 클라이언트는 서버의 랜덤데이터와 클라이언트가 생성한 랜덤데이터를 조합해서 pre-master secret을 생성한다. 

  클라이언트: pre-master secret을 서버의 공개키로 암호화하고 서버에게 전송한다. 

 

- 서버: 서버는 pre-master secret을  서버의 개인키로 복호화한다. 

 

- 서버, 클라이언트: 서버와 클라이언트는 일련의 과정을 거쳐서, pre-master secret으로 master secret생성, master secret은 세션키를 생성. 서버 클라이언트 모두는 세션키를 통해서 대칭키 암호화로 데이터를 전송할 수 있다. 

 

- Handshake 종료 

 

2. Transfer

 

- 세션을 열어서, 세션키를 통해서 암호화 대칭키 암호화 복호화 과정을 거치고 데이터를 주고 받는다. 

 

3. Session End

 

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

 

 

주의할 점: SSL Handshake는 TCP 위에서 동작하기 때문에 TCP연결이 성립된 상태에서 동작한다. 따라서 SSL Handshake를 진행하기 위해서는 TCP 3-way Handshake를 통해 TCP 연결이 수립되어 있어야 한다.

 

 

 

출처:

https://opentutorials.org/course/228/4894

https://www.leafcats.com/202

https://tutorialspedia.com/an-overview-of-one-way-ssl-and-two-way-ssl/

'네트워크' 카테고리의 다른 글

[네트워크] 네트워크 면접 준비  (0) 2019.10.30
[네트워크] 네트워크 정리  (0) 2019.10.15
[네트워크] 네트워크 정리  (0) 2019.10.15
[네트워크] 네트워크 정리  (0) 2019.10.09
네트워크 정리  (0) 2019.10.09

댓글