Secuer Socket Layer (= TLS, Transport Layer Security Protocol)
우리가 흔히 사용하는 HTTPS에 적용되는 프로토콜이다.
즉 이 사진처럼, SSL 위에 여러 프로토콜이 동작함을 의미하는 사진이다.
HTTPS = (HyperText Transfer Protocol over Secure Socket Layer)
Port = 443
예전 산업보안관리사 취득, 정보통신기술, 전자정보보안기술 강의를 들었을 때를 잘 상기하면 좋겠다. Client(=Browser)가 인증서의 유효를 CA를 거쳐 확인을 하고 Server와 통신을 하는 그 과정을 떠올리면서 게시글을 작성하자.
SSL은 CA (Certificate Authority), Server, Client 간의 인증을 위해 사용된다.
우리는 Internet을 무의식적으로 사용하고 있지만 , 그 뒤에는 보안을 위한 여러가지 기술들이 적용되는데 SSL은 그 중 하나다. 가끔 구글링을 하다보면, HTTPS 적용이 안되었다고 경고창이 뜨는 것을 본 적이 있을 것이다.
HTTPS가 아니라 HTTP가 적용되어 있기에 그렇다.
이게 왜 문제냐면,
1. 우리는 별다른 절차 없이는 Server가 "진짜" 인지 아닌지 구분이 불가능하다. 그니까, Phihsing이나 Pharming의 위험을 가진다는 뜻이다.
2. 암호화되지 않은 방법으로 Data가 전송된다. 그래서 누가 감청하면 다 보인다.
이러한 문제를 해결하기 위해서 SSL이 적용된 HTTP를 사용하고, 그 결과 우리는 (1) 신뢰할 수 있는 Site에 정보를 전송하면서, (2) 누가 Packet을 감청하더라도 어떤 내용인지 알 수 없도록 암호화 Key를 주고 받고 암호화를 통해 정보를 주고받아야한다.
그럼, HTTPS의 동작과정을 먼저 살펴보자.
이게 전체적인 HTTPS의 동작과정인데, 그럼 SSL은 도대체 "정확"하게 어디에 사용되는거냐? 라고 물어본다는 질문에 대답하기 위해서 실제 packet을 통해서 살펴보자
Client Hello ~ ChangeCipherSpec은 HTTPS를 위해 Key를 주고받는 과정이다.
한다. 3-way 하고 나서, SSL Handshake가 이루어진다.
그럼 이제 SSL Handshake를 살펴보자.
Cipher Suite 구조 : Protocol_Key교환 방식_암호화 방식_WITH_Block 암호화 방식_Block 암호 공유 방식_Hash함수
이 과정에 있어서, client certificate request는 선택적으로 포함된다.
Certificate, 즉 인증서를 Server가 Client에게 전달한다. 이 인증서는 CA의 비공개 Key(=개인 Key)로 암호화되어 있으니, CA의 공개 Key로 복호화하여 Server의 신뢰성을 검증한다.
이 과정에서 Server Key Exchange는 포함 될 수도, 아닐 수도 있다. 만약 인증서 내부에 Server의 공개 Key가 있으면 생략되는 것. 만약 없다면 존재할 것이다.
http://www.ktword.co.kr/word/abbr_view.php?m_temp1=1957&id=831&nav=2