Self-Improvement

TLS(SSL 3.0) 통신 과정 본문

개인

TLS(SSL 3.0) 통신 과정

JoGeun 2018. 10. 20. 14:40

https://blog.hangadac.com/2017/07/28/%ED%99%88%EC%84%9C%EB%B2%84-%EA%B5%AC%EC%B6%95%EA%B8%B0-https%EC%99%80-ssl-%EC%9D%B8%EC%A6%9D%EC%84%9C-%EC%9D%B4%EB%A1%A0/

https://blog.hangadac.com/2017/07/31/%ED%99%88%EC%84%9C%EB%B2%84-%EA%B5%AC%EC%B6%95%EA%B8%B0-ssl-%EC%9D%B8%EC%A6%9D%EC%84%9C-%EB%A7%8C%EB%93%A4%EA%B8%B0-%EC%97%B0%EC%8A%B5/


TLS Handshake 과정 (https://opentutorials.org/course/228/4894)

1. Client Hello
 -클라이언트가 랜덤한 데이터와 SSL 통신을 하기 위해서 현재 지원가능한 암호화 방식을 서버에게 전송한다.
2. Server Hello
 -서버에서 생성한 랜덤한 데이터와 클라이언트가 지원가능한 암호화 방식에 맞춰 현재 서버에서 제공할 수 있는 가장 안전한 암호화 수단 방식을 클라이언트에 전송한다.
 -인증서
※서버가 인증서를 클라이언트에게 전송하면 클라이언트는 인증서에서 CA를 확인하고 웹 브라우저 CA List에 있는지 확인한다. 해당 CA를 브라우저가 가지고 있으면 CA에 대한 공개 키로 복호화를 한다.(복호화가 이루어진다면 해당 인증서는 CA의 비밀키에 의해서 암호화 된 것을 의미하여 신뢰할 수 있게된다) 

※클라이언트는 서버로부터 받은 랜덤데이터와 본인이 생성한 랜덤데이터를 조합해서 pre master secret라는 키를 생성한다.(대칭키로 사용)
이러한 pre master secret를 서버에 전송하기 위해 서버가 전송한 인증서 안에 공개키가 존재한다. 이러한 서버의 공개키를 이용하여 pre master secret값을 암호화하고 서버로 전송하게 된다.
서버는 클라이언트가 전송한 pre master secret값을 자신의 비공개키로 복호화한다. 그리고 서버와 클라이언트는 모두 일련의 과정을 거쳐서 pre master secret값을 master secret값으로 만든다. master secret는 session key를 생성하며 이 값을 이용하여 데이터를 대칭키 방식으로 암호화하여 주고받는다.



--------------------------------------------------------------------------------------

웹 브라우저가 SSL 세션 연결을 웹 서버에 요청하면 웹 서버는 유효한 공인된 서버인증서를 웹 브라우저로 전달합니다.
서버 인증서를 전달받은 웹 브라우저는 인증서가 유효한지 확인한 후 이상이 없으면 다음과 같은 단계로 세션 암호키를 생성한 후 서버로 전달한다.
1. 1회용 암호키를 생성
2. 서버인증서에 포함된 서버 공개키로 1회용 암호키를 암호화함
3. 암호화한 1회용 암호키를 웹 서버로 전달함
4. 웹 서버는 서버 개인키로 암호화된 1회용 암호키를 복호화함

이후 1회용 암호키로 암호화를 하고 데이터를 전송하며 데이터를 수신한 쪽에서 1회용 암호키를 이용해 복호화 합니다


'개인' 카테고리의 다른 글

웹 소스 난독화 사이트  (0) 2018.11.05
TLS 1.2 VS 1.3  (0) 2018.10.20
CVE  (0) 2018.10.20
IPS/IDS  (0) 2018.10.20
UTM (United Threat Management)  (0) 2018.10.20