1. SSL (Secure Socket Layer) 및 TLS (Transport Layer Security)
ㅇ 전송계층 상에서 클라이언트,서버에 대한 인증 및 데이터 암호화 수행
- 클라이언트와 서버 양단 간 응용계층 및 TCP 전송계층 사이에서,
- 안전한 보안 채널을 형성해 주는 역할을 하는, 보안용 프로토콜
ㅇ 주요 응용
- HTTP (HTTPS), FTP (FTPS), TELNET, SMTP, SIP, POP, IMAP 등 에서 사용 가능
- 주로, 웹 브라우저와 웹 서버 사이의 안전한 보안 채널을 제공하기 위해 많이 사용됨
ㅇ 오픈 소스 구현 例) OpenSSL
- 암호화,보안 통신을 위한 다양한 기능 지원 및 여러 프로그래밍 언어와 플랫폼 상에서 실행되며,
- 보안 관련 소프트웨어의 기반 라이브러리로 널리 사용됨
2. SSL/TLS 역사
ㅇ 최초 제안 : 넷스케이프사
- 버젼 : SSL v1.0 (1994.7), SSL v2.0 (1994.12), SSL v3.0 (1996.11)
* SSL v3.0은 그 당시 사실상의 웹 보안 표준이었음
ㅇ SSL의 표준화 기여 => TLS 표준
- SSL v3.0 을 참고로하여 RFC 2246(1999년)으로 표준화된 것이 TLS 임
- 버젼 : TLS 1.0 (RFC 2246,1999) : SSL v3.1에 해당,
TLS 1.1 (RFC 4346, 2006), TLS 1.2 (RFC 5246, 2008), TLS 1.3 (RFC 8446, 2018)
※ 따라서, SSL 및 TLS는 본질적으로 같으며 버전이 다른 정도임
3. SSL/TLS의 특징
ㅇ 클라이언트/서버 기반의 프로토콜
- 클라이언트/서버 두 응용 상대방 간에, 연결 전 동적 협상에 의한 보안 연결 수립
ㅇ 응용 프로그램(어플리케이션) 자체 구현 가능
- 대부분의 다른 보안 프로토콜(EAP,IPsec 등)은 운영체제 등에 밀접하게 관련됨
ㅇ 계층 위치
- 응용계층 및 전송계층 사이에 위치하나, 전송계층과 보다 밀접하게 동작 함
- 소켓 지향적인 프로토콜
ㅇ 운반용 프로토콜 및 포트번호
- 운반용 프로토콜 : TCP 또는 UDP
. 한편, UDP 상에서도 가능한 버젼은,
.. DTLS (Datagram Transport Layer Security) RFC 6347(2012년)가 있음
- 사용 포트 : 응용 마다 다름
. HTTPS의 경우에, HTTP를 위한 SSL/TLS 보안 터널 형성을 위해, 포트번호 443 를 사용
ㅇ 인증 구조 : X.509
- X.509에서 규정된 공개키 인증서 교환에 의해 상대방에 대한 인증 수행
ㅇ (암호 스위트 3개) : (협상 선택 가능, 지속적으로 추가되고 있음)
- 키 교환 방식
. Null, RSA 공개 키 교환, Anonymous Diffie-Hellman 키 교환,
Ephermeral Diffie-Hellman 키 교환, Fixed Diffie-Hellman 키 교환, Fortezza 등
- 대칭키 암호화 방식
. RC2 (40), RC4 (40), RC4 (128), DES, Triple DES, IDEA 등
- 해쉬 알고리즘
. Null, MD5, SHA-1 등
4. SSL/TLS의 주요 기능
ㅇ 상호 인증
- 공개키 인증서를 이용하여 서버,클라이언트의 상호 인증
- 즉, 클라이언트/서버 두 응용 간에 상대방에 대한 인증
ㅇ 메세지 인증 (메세지 무결성)
- 메세지 인증 코드 HMAC에 의한 메세지 무결성 제공 (HMAC MD5, HMAC SHA-1 등)
ㅇ 메세지 압축
- 디폴트는 Null (즉, 무 압축)
. (압축 알고리즘은 미리 정해지지 않고 협상으로 지정 가능)
ㅇ 암호화용 세션 키 생성(대칭 키 합의)을 위한 키 교환
- RSA : 두 키(공개 키 및 개인 키)가 하나의 수 체계를 형성 (서버 공개 키 사용)
- Diffie-Hellman : Diffie-Hellman 프로토콜을 기반으로 한 키 교환 방식
ㅇ 생성된 공유 비밀키에 의해 암호화된 종단간 안전한 연결 통로 제공
- 스트림 암호화 : 40, 128 비트의 RC4
- 블록 암호화 : IDEA, 40,56 비트의 DES, 168 비트의 3DES 등
5. SSL/TLS의 프로토콜 스택
ㅇ 전송계층 TCP 위에서, `보안 소켓/보안 채널/터널링`을 구성
- 응용계층에서 생성된 데이터에 대한 보안(인증,무결성,기밀성),압축 등의 서비스 제공
※ SSL/TLS의 상세 프로토콜 스택 ☞ SSL/TLS 구성 프로토콜 참조
- 크게, 상위 핸드세이크 관련 프로토콜과
하위 레코드 프로토콜(단편화,압축,무결성,암호화,인증 기능 제공)들로 구성됨
6. SSL/TLS의 핸드세이크 단계
※ ☞ SSL/TLS 핸드세이크 참조
- 초기 협상 단계 => 인증 단계 => 보안 채널 형성 => 상호 암호화 통신 시작