공부, 기록

SSL/TLS 본문

공부/CS 영역

SSL/TLS

무는빼주세요 2021. 12. 18. 16:30

SSL ( Secure Socket Layer) / TLS (Transport Layer Security Protocol) : 브라우저와 서버간의 통신에서 보안을 위한 방법

SSL이 먼저 발명되고 TLS로 이름이 바뀌었다(SSL 3.0을 계승한 TLS 1.0)

 

 

SSL을 대칭키와 공개키 두 가지의 방식을 사용

 

대칭키 : 하나의 동일한 Key를 통하여 복호화와 암호화 모두를 진행. 대칭키 전달이 어렵다는 단점이 있음.

 

공개키 : 개인이 사용하는 Private Key와 타인에게 제공하는 Public Key 총 2가지의 Key를 사용하는 방식.

Public Key로 암호화 된 정보는 Private Key를 통해서 복호화 된다. Public Key로는 복호화를 할 수 없으므로 공개키가 유출이 되어도 안전. 

 

SSL 인증서 : 공인된 CA가 제공하는 인증서와 사설 SSL이 있다. 사설 SSL은 자신이 직접 CA 역할을 하는 방식으로 개발이나 사적인 목적으로 사용된다.

SSL 인증서의 내용은 서비스의 정보와 서버 측 공개키가 있다. 서비스의 정보는 클라이언트가 접속한 서버가 클라이언트가 의도한 서버가 맞는지에 대한 내용이며 서버 측 공개키는 서버와 통신을 할 때 사용할 공개키와 공개키의 암호화 방법의 정보가 있다.

 

SSL의 동작 방법 : SSL은 암호화된 데이터를 전송하기 위해서 공개키와 대칭키를 혼합해서 사용한다. 클라이언트와 서버가 주고 받는 실제 정보는 대칭키 방식으로 암호화하고, 대칭키 방식으로 암호화된 실제 정보를 복호화할 때사용할 대칭키는 공개키 방식으로 암호화해서 클라이언트와 서버가 주고 받는다. 그 과정에서 핸드세이크, 세션, 세션종료가 이루어진다

핸드세이크 : 실제 데이터를 주고 받기 전에 클라이언트와 서버가 서로 확인하는 단계(SSL 인증서를 주고 받음)

  1. 클라이언트가 서버에 접속하는 Client Hello 단계/ 클라이언트 측에서 생성한 랜덤 데이터, 클라이언트가 지원하는 암호화 방식들 ,세션 아이디 정보를 주고 받음
  2. 서버가 응답하는 Server Hello 단계/ 서버 측에서 생성한 랜덤 데이터, 서버가 선택한 클라이언트의 암호화 방식을 주고 받음
  3. 클라이언트가 서버의 인증서가 CA에 의해서 발급된 것인지를 확인함. 주고 받은 램더 데이터를 합해서 pre master secret key 생성(대칭키) 후 서버로 부터 받은 인증서에 들어있는 공개키로 암호화 하여 서버로 전송(서버에서는 자신의 비공개키로 복호화하여 확인)
  4. 클라이언트에서 제공받은 pre master secret 값을 서버에서 복호화하여 session key 생성
  5. 종료

세션 : 서버와 클라이언트가 데이터를 주고 받는 단계. 생성된 session key 값을 이용하여 대칭키 방식으로 암호화.

 

세션종료 : 데이터의 전송이 끝난 후 SSL 통신이 끝났음을 서로에게 알리는 단계 session key를 폐기함.

 

 

 

참조 :

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

'공부 > CS 영역' 카테고리의 다른 글

메모리 관리 기법  (0) 2022.01.29
프로세스, 쓰레드  (0) 2022.01.16
핸드셰이킹  (0) 2021.11.13
로드 밸런싱  (0) 2021.11.06
OSI 7 계층  (0) 2021.11.06