TIL#15 SSL/TLS (HTTPS)

ahn__jh·2021년 7월 26일
0
post-thumbnail

SSL이란?

SSL은 웹서버와 웹브라우저간의 보안을 위해 만들어졌으며, 공개키(Public Key)/개인키(Private Key) 대칭키 기반으로 사용한다.

TLS란?

SSL 3.0의 기반이 TLS 1.0 SSL의 상위호환이라고 보면 될 것 같다.

HTTPS란?

SSL protocol 위에 HTTP가 얹어진 형태로 HTTP 통신에서 보다 보안상 안전하게 암호화 하여 통신을 하기위한 protocol

HTTPS통신 과정

SSL Hand Shake

1.Client가 Server로 접속 (Client Hello)
랜덤한 데이터와 Client의 브라우저에서 지원하는 암호화방식을 Server로 전송한다.
(server로 랜덤데이터,암호화 방식 전송)


2.Server는 Client와 협상 (Server Hello)
Server측 또한 랜덤한 데이터와 Client측에서 보낸 암호화 방식을 선택하여 인증서를 전송 응답
(Client에게 선택된 랜덤데이터,암호화방식,인증서 전송)


3.인증서를 받은 Client는 브라우저에 내장되어있는 CA에 의해서 인증서가 유효한지 확인 하게되고
브라우저는 검증된 인증서에 대한 공개키를 이미 갖고있기 때문에 공개키로
인증서를 복호화에 성공하면 인증서를 전송한 서버를 신뢰 할 수 있는 서버를 증명한다.

인증서를 통해 얻은 서버의 공개키로 1번,2번 에서 전송한 랜덤 데이터를 Pre master secret이라는 값을 생성해 인증서를 통해 얻은 서버의 공개키로 암호화 하여 서버로 전송한다.
(CA에 의해 인증서 검증후 브라우저에 내장된 인증서 공개키로 인증서 복호화하여 서버 공개키 흭득 1,2번에서 생성된 랜덤 데이터로 Pre master secret값 생성해서 서버 공개키로 암호화 하여 서버측으로 전송)


4.서버가 전달받은 Pre master secret이라는 값을 서버의 비공개키로 복호화하여 Pre master secret 값으로 Client와 Server는 master secret이라는 값을 생성해 이값으로 Session Key(대칭키) 생성
(서버와 클라이언트는 받은 랜덤 값으로 Session Key 생성)

CA(Certificate Authority) : 각 브라우저사 마다 인증서를 인증해주는 기업체
인증서 역할 :
1. 클라이언트가 접속한 서버가 신뢰 할 수 있는 서버인지 보장
2. 인증서를 복호화 하여 서버의 공개키 흭득용


5.클라이언트와 서버간 Hand Shake를 마치고 종료

SSL Session

1.생성된 Session Key를 통해 Client는 암호화하여 전송하고 Sever측에서 그값을 Session Key로 복호화하며 통신

SSL Session 종료

1.데이터의 전송이 끝나면 SSL통신이 끝났음을 알리고 Session Key(대칭키)를 폐기한다.

복잡한데 왜 대칭키를 굳이 사용하는가?

공개키 사용시 컴퓨터 파워를 많이 소모하게 되어 대칭키로 사용한다고 합니다.



참고한 강의 :https://youtu.be/8R0FUF_t_zk

0개의 댓글