Ssup2 Blog logo Ssup2 Blog

SSL (Secure Socket Layer), TLS (Transport Layer Security)를 분석한다.

1. SSL (Secure Socket Layer), TLS (Transport Layer Security)

SSL (Secure Socket Layer), TLS (Transport Layer Security)는 TCP위에서 동작하는 표준 보안 Protocol이다. HTTPS가 SSL,TLS 위에서 동작하는 대표적인 Protocol이다. SSL/TLS는 비대칭키에 이용되는 알고리즘인 RSA의 Overhead를 줄이기 위해 대칭키와 비대칭키 둘다 이용한다. Client는 Data 암호화에 이용할 대칭키를 Server의 비대칭 Public Key로 암호화 한뒤 Server에게 전달한다. 그 후 Server는 비대칭 Private Key로 대칭키를 얻어낸뒤 Client와 통신한다. 대칭키를 암호화/복호화 할 때만 비대칭키를 이용하고 Data는 대칭키를 이용하는 방식으로 비대칭키 연산 Overhead를 줄인다.

1.1. Handshake

[그림 1] SSL/TLS Handshake 과정

[그림 1]은 SSL/TLS의 첫 Handshake 과정을 나타낸다.

아래는 Optional 과정에 대한 설명이다.

1.2. Resumed Session

[그림 2] SSL/TLS Session 재구성

[그림 2]는 Client가 이전에 Handshake가 완료된 Session에 연결하면서 수행하는 간소화된 Handshake 과정을 나타내고 있다. Client는 이전 Session ID와 이전 Session에서 이용하는 Master Secret을 저장하고 있어야 한다. Server 또한 이전 Session ID와 이전 Session에서 이용하는 Master Secret을 저장하고 있어야 한다.

1.3. CA (Certificate Authority), Certificate

[그림 3] Certificate Tree

CA(Certificate Authority)는 Certificate를 발행하고 인증하는 기관이다. CA중에서 최상위 Certificate를 발급하는 CA는 Root CA라고 하며 Root CA에 발급하는 Certificate를 Root Certificate라고 한다. Root Certificate는 자기 자신이 서명하기 때문에 Self-signed Certificate이기도 하다. Root Certificate는 웹브라우저에 기본적으로 설치된다.

Root CA의 Private Key를 이용하여 하위 CA가 발행한 Certificate에 서명을 하면, Root Certificate의 신뢰 때문에 하위 CA의 Certificate에게도 신뢰가 부여된다. 또한 신뢰도를 얻은 하위 CA의 Private Key를 이용하여 또다른 하위 CA가 발행한 Certificate에게 신뢰를 부여 할 수 있다. 이처럼 Certificate의 관계는 Root Certificate가 Root가 되어 Tree 구조의 관계를 갖는다. 따라서 Tree의 Leaf에 가까운 Certificate일수록 다수의 상위 Certificate가 필요하게 된다.

2. 참조