본문 바로가기
서버 & 네트워크

HTTPS 와 SSL 인증서

by 자바지기 2021. 9. 25.
반응형
 

HTTPS 적용하기

HTTP와 HTTPS의 차이점 HTTP란? HyperText Transfer Protocol의 줄임말이다. 클라이언트와 서버 사이에 이루어지는 요청/응답 프로토콜이다. 웹 브라우저가 HTTP를 통하여 서버로부터 HTML(hyper text markup la..

park-algorithm.tistory.com

지난주에 HTTP에 HTTPS를 적용해보았다.

HTTPS에 대해 더 자세하게 공부해본다.


HTTPS는 HTTP + SSL/TLS로 보안이 강화된 HTTP이다. HTTPS는 SSL/TLS 프로토콜 위에서 돌아가는 프로토콜이다.

출처 https://www.leafcats.com/202


SSL 디지털 인증서

SSL 인증서는 클라이언트와 서버 간의 통신을 제삼자가 보증해주는 전자화된 문서다.

이 인증서를 통해 클라이언트는 서버가 신뢰할 수 있는지 검증한다.


SSL에서 사용하는 암호화의 종류

암호를 만드는 행위를 암호화라고 하고 해독하는 행위를 복호화라고 한다.

암호화를 하는 방법에는 대칭키 방법과 공개키 방법이 있다.

 

  • 대칭키

암호화와 복호화를 동일한 키로 하는 방법이다.

예를 들어 암호화를 할 때 '111111'이라는 값을 사용했다면 복호화를 할 때도 '111111'을 사용해야 한다.

대칭키를 사용할 때 단점이 있다. 암호화된 정보를 주고받을 때 대칭키가 유출되면 암호화를 한 의미가 없어진다.

따라서 이를 해결하기 위해 공개 키 방식이 등장했다.

 

 

  • 공개키 

공개키는 두 개의 키로 암호화와 복호화를 하는 방법이다.

이 두개의 키를 공개키와 비공개 키라고 한다.

공개키로 암호화를 하고 비공개키로 복호화를 한다. 또는 비공개키로 암호화를 하고 공개키로 복호화를 한다.

 

비공개 키는 자신만이 가지고 있고 공개키를 타인에게 제공한다.

타인은 공개키를 이용해 정보를 암호화하고 암호화된 정보를 자신에게 돌려보낸다.

자신은 비공개키를 이용하여 정보를 복호화한다.

자신타인사이에  정보 교환 과정에서 공개키가 유출되어도 정보를 복호화할 수 없다.

정보는 비공개키를 가지고 있는 자신만이 복호화할 수 있다.

 


이 방식을 역으로 생각하여 전자 서명에도 적용할 수 있다.

 

비공개키를 가지고 있는 소유자가 비공개키로 정보를 암호화를 한다.

암호화된 정보와 공개키를 타인에게 전송한다.

타인은 공개키를 이용하여 정보를 복호화한다.

이 과정에서 공개키가 유출된다면 정보가 유출될 위험이 있다.

그렇다면 왜 이런 방식을 사용하는 것일까 

 

전자 서명에서는  정보를 암호화하는 것이 정보를 보호하기 위함이 아니다.

암호화된 정보를 타인이 공개키를 통해 복호화한다는 것은 정보가 암호화되었다는 것을 의미한다. 

즉 이 의미를 전달하기 위한 수단으로 이런 방식을 사용한 것이다.

정보가 암호화되었다는 것은 정보를 제공한 사람의 신원을 보장해주는 것이다.


SSL 인증서의 기능 

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

이 SSL인증서는 CA를 통해 구입할 수 있다.

CA는 인증서를 제공하는 인증된 기관이다.

서버가 자신의 서비스와 서버의 공개키를 CA에게 보낸다. 

CA는 문제가 없다고 판단되면 서버에게 인증서를 보내게 된다.

 

SSL 인증서의 내용

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

 

SSL 인증서의 동작방법

1. 브라우저가 서버에 접속할 때 서버가 브라우저에게 인증서를 제공한다.

2. 브라우저는 이 인증서를 발급한 CA가 자신이 내장한 CA의 리스트에 있는지 확인한다. 

   (브라우저는 내부적으로 CA의 리스트와 각 CA의 공개키를 가지고 있다.)

3. 확인한 CA의 공개키를 이용하여 인증서를 복호화한다.

  (CA의 공개키에 의해 복호화한다는 것은 서버가 CA에 의해서 발급된 인증서라는 것을 의미한다.)


SSL의 동작방법

SSL은 암호화된 데이터를 전송하기 위해서 공개키대칭키를 혼합해서 사용한다. 공개키가 이상적인 통신 방법이지만 공개키는 많은 컴퓨터 자원을 사용하기 때문이다.

SSL의 동작 방법은 다음과 같다.

 

1.  Handshake

1) Client Hello : 클라이언트가 서버에 접속한다. 클라이언트와 어떤 암호화 방식을 사용할 것인지 협상한다. 

 

2) Server Hello : 서버가 Client Hello의 응답으로 Server Hello를 한다. 서버 쪽에서 3가지 정보를 응답한다. (인증서, 랜덤 데이터, 암호화 방식)

 

3) 클라이언트는 CA의 공개키를 이용하여 인증서를 복호화한다. 인증서를 통해 서버를 신뢰하게 된다.

 

4) 클라이언트는 서버에서 받은 랜덤 데이터클라이언트의 랜덤 데이터를 조합하여 pre master secret 키를 생성한다.

pre master secret 키는 대칭키 암호화에 사용된다. 

 

클라이언트에서 pre master secret key로 대칭키 암호화를 진행할 것인데  pre master secret key로 암호화된 정보를 서버에서 복호화하려면 pre master secret key를 알아야한다.  그렇다면 서버에서  pre master secret key를 알아야하는데

클라이언트에서 서버에게  pre master secret key를 어떤 방식으로 전달할 것인가?

 

앞서 서버가 CA에게 서버의 공개키를 보낸다고 했었다. 따라서 CA에서 발급받은 인증서 내부에는 서버의 공개키가 존재한다. 클라이언트는 이 인증서 내부의 서버의 공개키를 이용하여 pre master secret key를 공개키 방식의 암호화를 한다.

그러고 나서 서버에게  전송하면 안전하게 전송할 수 있다. 서버에만 있는 비공개키를 이용해  pre master secret key를 복호화한다.

 

이렇게 하여 서버와 클라이언트가 pre master secret key를 공유하게 되었다. 

서버와 클라이언트는 pre master secret 키를 통해 session key 값을 만든다.

 

5) 클라이언트와 서버는 핸드 셰이크 단계의 종료를 서로에게 알린다.

 

 

2. 세션 

앞서 만든 session key를 통해 서버와 클라이언트는 대칭키 방식으로 정보를 암호화를 한 후에 주고받는다.

서로 session key를 알기 때문에 암호를 복호화할 수 있다. 

 

3. 세션 종료

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

Reference 생활코딩 https://opentutorials.org/course/228/4894#signiture

 

반응형

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

AWS RDS 구축하기  (0) 2021.09.29
ARP 프로토콜  (0) 2021.09.25
3계층  (0) 2021.09.24
2계층  (0) 2021.09.23
네트워크 모델  (0) 2021.09.22

댓글