SSL (Secure Socket Layer) 중부대학교 정보보호학과 이병천 교수
웹 보안 구현방법 네트워크 계층에서의 구현방법 특징 IP 계층에 보안 기능을 둠 IP Sec 응용계층의 모든 응용서비스에 보안성 제공 VPN(Virtual Private Network) 에 적합 Transport IP Sec Application Physical
웹 보안 구현방법 트랜스포트계층에서의 구현방법 특징 Transport 계층 위에 SSL 에 의한 구현 응용계층의 모든 응용서비스에 보안성 제공 종단간 (End-to-End) 보안성 제공 잘 정의된 보안 프로토콜 부인방지 기능이 없음 ( 전자서명 서비스를 제공 못함 ) Transport Network Application Physical SSL
웹 보안 구현방법 응용계층에서의 구현방법 : SET, PGP, S/MIME 특징 응용계층의 응용서비스 프로토콜 내에서 보안성 구현 특정 응용서비스에 한정된 보안 요구사항을 수용 부인방지 기능 등 다양한 보안 서비스 제공 ( 전자서명 서비스 제공 ) Transport Network Application Physical SET PGP S/MIME
Secure Socket Layer SSL 개요 특징 Secure Socket Layer : de facto Standard ( 산업계 표준 ) 2 개의 Layer 로 구성 1994 년 Netscape 사가 웹 보안 프로토콜로 제안 현재 SSL 버전 3 이 발표 1999 년 IETF 에서 TLS Working Group 에서 TLS 로 발표 응용계층과 TCP 계층사이에 위치 SSL Lower layer SSL Higher Layer TCP HTTP
Secure Socket Layer SSL 기능 특징 클라이언트 및 서버간 안전한 채널 (Secure Channel) 형성 종단간 (End-to-End) 보안 서비스 제공 클라이언트 및 서버 인증 (Authentication) : we know who each other are 공개키 알고리즘 (RSA, DSS, Diffie-Hellman) X. 509 공개키 인증서 기밀성 제공 : only you and I can see it Handshake Protocol 에 의한 비밀키 ( 세션키 ) 공유 DES, RC2, RC4, 3-DES 등 무결성 제공 : no one else can change it Hashed MAC(Message Authentication Code) SHA-1(160 비트 ), MD5(128 비트 )
Secure Socket Layer SSL 구조 SSL Higher Layer( 제어 프로토콜 ) Handshake Protocol Change Cipher Spec Protocol Alert Protocol SSL Lower Layer( 레코드 프로토콜 ) Record Protocol Record Layer TCP HTTP Handshake Protocol Change Cipher Spec Alert protocol
Secure Socket Layer SSL Handshake Protocol 특징 클라이언트 및 서버간 데이터를 통신하기 위한 Session 설정 클라이언트 및 서버간 Session 설정을 위하여 많은 메시지를 주고 받음 클라이언트와 서버 서로의 인증 (Authentication) 과정 Record Protocol 에 선행하여 수행 클라이언트와 서버 간 암호화 통신을 위한 파라메터 생성 Protocol Version (SSL) Session ID 암호화 알고리즘, 해쉬 알고리즘 상호인증 (Option, X.509) 공개키 암호알고리즘에 의한 pre-master-secret 공유
SSL 처리절차 SSL Handshake Protocol Server Hello Server Certificate Server Key Exchange Client Certificate Request Client Hello 4 Client Certificate Client Key Exchange 4 Certificate Verify Change Cipher Spec Server 준비 완료 상태를 알림 Server 의 Certificate 를 전송함 Session Key 를 위한 Premaster 값을 암호 할 때 이용될 키교환용 Public Key 전송 Client 의 Certificate 를 요청함. Server 의 전송 작업 완료를 알림 Session Key 를 위한 Premaster 값을 Server 의 키교환용 Public Key 로 암호화하여 전송함. 4 Client 의 Certificate 를 전송함. 4 Client Certificate 유효성 검증 Data 암호화에 사용될 알고리즘 정보 전달 Data 암호화에 사용될 알고리즘 정보 전달 Change Cipher Spec Application DATA Application Data 를 암호화 하여 전송함. Server 전송 전송 내용 설명 4 부분이 사용자 인증을 위해 사용됨 Client 전송 Connection 설정 요청을 알림 Server authenticate Client authenticate Server Hello done
Full Handshake
Resume Session
Secure Socket Layer SSL Change Cipher Spec Protocol 특징 Record Layer 에서 데이터 암호화 때 클라이언트와 서버간 서로 약속한 암호화 알고리즘 (Encryption) 으로 암호화 한다는 것을 상대방에게 통보 Change Cipher Spec 메시지를 받으면 자신의 pending read state 를 Active read state 로 바꿈 (Cipher Spec 변경함 ) DES Write Act nullEnc Read Pnd Act Pnd Mac Key null MD5 XXX DES MD5 XXX Write Act Enc Read Pnd Act Pnd Mac Key null DES MD5 XXX DES MD5 XXX null
Secure Socket Layer SSL Alert Protocol 특징 클라이언트와 서버간 보안상 문제발생시 Error Message 전달 Level 에는 “fatal” 과 “warning” 이 있음 클라이언트와 서버는 fatal level 의 alert 을 받으면 즉시 Connection 중단되고 Session ID 도 무효 LevelDescription 1 byte level description w F... 0 close-notify 10 Unexpected_message 20 Bad_record_mac 30 Decompression_failure …
Secure Socket Layer SSL Record Protocol 특징 클라이언트와 서버 사이에 데이터 ( 블록 단위 ) 를 주고 받는 역할 한번에 주고 받을 수 있는 최대 블록 크기는 2 (16,384 바이트 ) 기능 합의된 MAC(Message Authentication Code) 를 이용한 무결성 제공 Handshake 과정에서 합의된 암호 알고리즘과 암호 키를 이용한 암호화 기능으로 기밀성 (Confidentiality) 제공 합의된 압축알고리즘을 이용한 메시지 압축 (Compression) 기능 제공 14
Secure Socket Layer SSL Record Protocol Ciphertext decompressio n Compression Encryption MAC Verification Security Parameters Handshake Change Cipher Spec App. Data Alert SSL Plaintext Handshake Change Cipher Spec App. Data Alert Reassembly MAC Calculation MAC Compressed Fragment … Ciphertext Fragment SSL Header Ciphertext Header 제거 MAC Compressed Decryption Compressed Fragment … SSL Plaintext
Fragmentation
TLS TLS 란 ? SSL 3.0 을 표준화하기 위해 제안 IETF TLS WG 에서 표준화 V1.0 이 발표 SSL 3.0 과 차이점 Fortezza 알고리즘이 삭제 RSA 알고리즘을 선택적으로 사용 ( 특허문제 ) DSS 와 D-H 를 반드시 등재 HMAC 이용 HMAC_MD5, HMAC_SHA-1 Master_secret 의 계산식이 틀려짐 PRF (pseudo-random function)
WTLS WTLS 란 ? WAP (Wireless Application Protocol) 에서 사용되는 TLS TLS 와의 차이점 키 교환 프로토콜로 ECC 추가 Record 단계에서 Fragmentation 및 Compression 을 하지 않음 여러 가지 인증서 패턴 사용 X.509 Cert, WTLS Cert, X968 Cert 랜덤 수 크기의 차이 Pre_master_secret 와 Master_secret 는 20 byte Server, Client random 는 16 byte Key_block 의 계산식이 틀려짐
SSL 에서 사용하는 포트 키워드포트번호설명 https443/tcp SSL 기반의 HTTP 를 위한 포트 ssmtp465/tcp SSL 기반의 SMTP 를 위한 포트 snews563/tcp SSL 기반의 NEWS 를 위한 포트 ssl-ldap636/tcp SSL 기반의 LDAP 를 위한 포트 spop3995/tcp SSL 기반의 POP3 을 위한 포트
SSL 구현 라이브러리 SSLeay 호주의 Eric A. Young, Tim J. Hudson 개발 현재 RSA 사에서 연구 개발 RSA BSAFE SSL-C OpenSSL 1998 년 12 월부터 공개됨 SSLeay library 에 기초함 SSL v2/v3, TLS v1