SSL/TLS란?
Secure Socket Layer, Transport Layer Security
- 전송 계층 상에서 클라이언트, 서버에 대한 인증 및 데이터 암호화 수행
- 클라이언트와 서버 양단 간 응용계층 및 TCP 전송계층 사이에서 안전한 보안 채널을 형성해 주는 역할을 수행하는 보안용 프로토콜
- 주요 응용
- HTTP(HTTPS), FTP(FTPS), TELEMENT, SMTP, SIP, POP, IMAP 등에서 사용 가능
- 주로, 웹 브라우저와 웹 서버사이의 안전한 보안 채널을 제공하기 위해 많이 사용된다
OpenSSL
*DTLS는 TLS프로토콜은 UDP에 적용가능하게 해주는 UDP를 위한 프로토콜이다. 그러므로 UDP기반의 애플리케이션들은 이 DTLS를 사용함으로 도청, 간섭, 메시지 변조 등 네트워크 상에서 발생할 수 있는 공격들을 막을 수 있다. 특히나 UDP를 사용하는 IoT에 보안성을 추가해줄 수 있는 프로토콜로 제시되고 있다.*
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)따라서, SSL 및 TLS는 본질적으로 같으며 버전이 다른 정도임
SSL/TLS 주요 기능
상호 인증
- 공개키 인증서를 이용하여 서버, 클라이언트의 상호 인증
- 즉, 클라이언트/서버 두 응용 간에 상대방에 대한 인증
메세지 압축
디폴트는 Null(즉, 무 압축)
압축 알고리즘은 미리 정해지지 않고 협상으로 지정 가능
메세지 인증(메세지 무결성)
- 메세지 인증 코드
HMAC
에 의한 메세지 무결성 제공(HMAC MD5
,HMAC SHA-1
등)
- 메세지 인증 코드
암호화용 세션 키 생성(대칭 키 합의)을 위한 키 교환
- RSA : 두 키(공개 키 및 개인 키)가 하나의 수 체계를 형성(서버 공개 키 사용)
- Diffie-Hellman :
Diffie-Hellman
프로토콜을 기반으로 한 키 교환 방식
생성된 공유 비밀키에 의해 암호화된 종당간 안전한 연결 통로 제공
- 스트링 암호화 : 40, 128 비트의 RC4
- 블록 암호화 : IDEA, 40, 56비트의 DES, 168 비트의 3DES 등
SSL/TLS 특징
클라리언트/서버 기반의 프로토콜
응용 프로그램(어플리케이션) 자체 구현 가능
- 대부분의 다른 보안 프로토콜(EAP,IPsec 등)은 운영체제 등에 밀접하게 관련됨
인증 구조 : X.509
- X.509에서 규정된 공개키 인증서 교환에 의해 상대방에 대한 인증 수행
키 교환 방식 : (협상 선택 가능)
- Null, RSA 공개 키 교환, Anonymous Diffie-Hellman 키 교환,
Ephermeral Diffie-Hellman 키 교환, Fixed Diffie-Hellman 키 교환, Fortezza
- Null, RSA 공개 키 교환, Anonymous Diffie-Hellman 키 교환,
대칭키 암호화 방식 : (협상 선택 가능)
- RC2 (40), RC4 (40), RC4 (128), DES, Triple DES, IDEA 등
해쉬 알고리즘 : (협상 선택 가능)
- Null, MD5, SHA-1
SSL/TLS 프로토콜 스택
전송계층 TCP 위에서,
보안 소켓/보안 채널/터널링
을 구성응용계층에서 생성된 데이터에 대한 보안(인증,무결성,기밀성),압축 등의 서비스 제공
SSL/TLS 보안 터널을 위한 TCP/UDP 포트번호
ex) 보안
HTTP
를 위한 포트번호 4433 ( HTPS )한편, UDP 상에서도 가능한 버전으로
- DTLS (Datagram Transport Layer Security) RFC 6347(2012년)가 있음
SSL/TLS의 상세 프로토콜 스택 : ☞ SSL/TLS 구성 프로토콜 참조
=> 크게, 하위 레코드 계층 프로토콜(단편화,압축,무결성,암호화,인증 기능 제공)과
위 핸드세이크 관련 프로토콜들로 구성*
SSL/TLC 핸드세이크
초기 협상 단계 => 인증 단계 => 보안 채널 형성 => 상호 암호화 통신 시작
- 초기 협상 단계
- 클라이언트, 서버 간에 Client Hello, Server Hello 메세지 교환
- 클라이언트가 서버에게 Cipher Suite(사용 가능 암호화, 해싱 방식 등)을 보내고 서버 인증서를 요구
- 인증단계
- 서버에서 공개키, 서버명, 인증기관 주소 등을 포함한 인증서를 클라이언트에게 전송
- 이 때, 서버는 클라이언트가 제시한 것 중 자신이 선택한 암호화 방식 및 인증서를 보냄
- 필요히 클라이언트는, 인증서를 발급한 인증기관 서버에 접속하여 서버 인증서의 유효성 확인
- 보안채널 형성
- 클라이언트는 보안 채널 형성에 필요한 세션키를 만들기 위해,
- 서버의 공개키를 이용하여 임의의 수(Pre Master Key)를 암호화시켜 서버에게 전송하고,
- 서버는 자신의 비밀키(개인키)로 이를 해독(역암호화)하게 됨
- 이때 임의의 수(Pre Master Key)로부터 Master Key를 유도하고,
- 이 Master Key로부터 양측은 암호화,복호화에 필요한 세션키를 생성함
- 상호 암호화 통신 시작
- 즉, 보안성이 확립된 TLS 터널 내에서 상호 통신
'Computer Science > [ Network ]' 카테고리의 다른 글
[ Network ] 08. FTP(File Transfer Protocol) (0) | 2020.10.07 |
---|---|
[ Network ] 07. 핸드세이크(Handshake) (0) | 2020.09.22 |
[ Network ] 05. TCP와 UDP (0) | 2020.09.22 |
[ Network ] 04. 전송계층(Transport Layer) (0) | 2020.09.22 |
[ Network ] 03. CAN통신에 관하여 (0) | 2020.08.14 |