본문 바로가기

Linux

ssl tls

ssl/tls 정리

SSL/TLS 프로토콜은 클라이언트와 서버 사이에 인증 및 암호화 통신을 위해 사용되는 프로토콜이다. 
SSL 프로토콜은 미국의 Netscape사에 의해 개발되었다. TLS는 IETF(Internet Engineering Task Force)에서 
개발한 프로토콜로 SSL 프로토콜의 표준화 버전으로 생각할 수 있으며, SSL v3.0과 비슷한 형태를 갖는다. 
또한 TLS 프로토콜은 SSL 프로토콜을 사용할 수 있도록 구성되어 있으므로 우리는 SSL/TLS 프로토콜이라는 용어를 사용한다. 
우리가 현재 사용하는 Web 브라우저는 SSL/TLS 프로토콜을 지원한다. SSL/TLS 프로토콜은 지금까지 보아왔던 프로토콜과 
다르게 여러 가지 선택 요소들을 가지고 있다. SSL/TLS 프로토콜의 특징은 다음과 같다. 
우선, 공개키 인증서 기반 인증 방식을 사용한다는 점이다. SSl/TLS는 공개키 인증서에 기반을 
둔 인증 방법을 사용한다. SSL/TLS에서 지원하는 공개키 인증서는, 서버에서는 DH인증서 RSA서명 인증서, 
DSA서명 인증서, 그리고 RSA 암호화 인증서를 가질 수 있으며, 클라이언트에서는 DH인증서, RSA 또는 DSA서명 
인증서를 가질 수 있다. 여기서 클라이언트의 DH인증서는 서버의 DH인증서와 동일한 parameter를 가질 경우에만 동작이 가능하다. 
둘째, 3가지 인증모드(AM, Authentication Mode)를 지원한다. SSL/TLS는 익명모드(An, Anonymous), 
서버 인증모드(SA, Server authenticated), 그리고 클라이언트-서버 인증모드(MA, mutual authenticated)를 갖는다. 
SSL/TLS는 인증모드를 서버가 선택할 수 있도록 규정하고 있다. 
셋째, 암호 알고리즘을 선택적으로 사용할 수 있다는 것이다. SSL/TLS는 여러 종류의 암호 알고리즘을 지원한다. 
그리고, 실행과정에서 이들을 선택하여 사용할 수 있다. 알고리즘의 선택은 클라이언트가 사용 가능한 암호 
알고리즘의 리스트를 보내고, 서버가 이 들 중에서 선택하는 방법을 사용한다. 
지원하는 알고리즘을 잠시 살펴보면, 여기서 해쉬함수의 경우는 MD5나 SHA-1을 지원한다. 
키를 갖는 해쉬함수의 구성에 있어서는 SSL과 TLS는 다른 방법을 사용한다. 이들 중, TLS는 HMAC 방식을 이용한다. 
비밀키 암호 알고리즘은 record protocol에서만 사용을 하는데, 대표적으로 지원하는 것이 DES, 
3DES(DES를 세 번 연속해서 사용하는 암호 알고리즘), RC4 등이 있다. 또한 서로 키를 교환할 때에는 RSA 공개키 
암호 알고리즘을 이용한 방법과 DH 키 교환 알고리즘을 이용한 방법, 두 가지를 지원한다. SSL/TLS는 클라이언트 
또는 서버의 인증서가 전자서명 인증서인 경우에는 키 교환 알고리즘에 사용할 수 있는 값을 생성한 후, 
이 값을 전자서명을 통하여 서명한 후 보내는 방법을 사용한다