WAP 보안 솔루션 분석 2000. 9. 류재철 충남대학교 정보통신공학부
목 차 1. 개요 2. WTLS 소개 3. WTLS 안전성 분석 4. 결론 충남대 WAP 보안 솔루션 분석
1. 개요 주요 무선인터넷 솔루션 개발주도업체 컨텐츠 기술 언어 전송 프로토콜 단말기 브라우저 보안 메커니즘 WAP Forum (Nokia, Phone.com, Ericsson 등) 마이크로소프트 NTT Docomo 컨텐츠 기술 언어 WML/WMLScript Mobile-HTML Compact-HTML 전송 프로토콜 WSP/WTP/WDP HTTP HTTP 단말기 브라우저 WAP 브라우저 Mobile Explorer Compact NetFront 보안 메커니즘 WTLS SSL SSL 충남대 WAP 보안 솔루션 분석
WAP (Wireless Application Protocol) WAP Forum 1997년 설립 최초 설립시 멤버(단말기 업체 중심) Ericsson, Motorola, Nokia, Phone.com 인터넷 중심의 데이터 서비스를 무선 환경(휴대폰, 호출기, PDA)에서 효율적으로 처리하기 위한 산업체 표준 목적 기본 원칙 무선 환경에 맞는 프로토콜 고품질의 인터넷/전화 부가가치 서비스 제공 이동통신 인프라의 표준화 관련 표준화 단체에 대한 압력 서비스 개발 촉진 현존 표준과의 호환성(IP, XML 기반) 새로운 무선 데이터 서비스 표준 확립 다양한 Bearer 지원 다양한 Device 지원 충남대 WAP 보안 솔루션 분석
현재 200여개 업체 참여 충남대 WAP 보안 솔루션 분석
WAP Architecture 충남대 WAP 보안 솔루션 분석 Origin Server (Web Server) Client WAP Gateway WAE User Agent Encoded Request/Response WML Compiler Image Translator HTML Filter Request/Response Contents CGI, etc. WSP WSP HTTP HTTP WTP WTP WTLS WTLS SSL/TLS SSL/TLS WDP/UDP WDP/UDP TCP TCP IP IP IP IP Bearer GSM, CDMA, …. Internet 충남대 WAP 보안 솔루션 분석
WAP 보안 메커니즘 PKI WTLS SSL Signed WML Signed HTML 클라이언트 Web 서버 WAP G/W X.509 cert. WAP Cert. Or X.509 Cert. WAP Cert. Or X.509 Cert WIM PKI IC Card 충남대 WAP 보안 솔루션 분석
Implementation Class Class 1 – Anonymous No Authentication Class 2 Feature Class 1 Class 2 Class 3 Public-key exchange M M M ? ? 서버 인증서 O M M 클라이언트 인증서 O O M Class 2 Server Authentication ONLY Shared-secret handshake O O O Compression - O O ? Encryption M M M MAC M M M Smart card interface - O O Class 3 Client & Server Authentication X.509 certificate WAP certificate ANSI X9.68 충남대 WAP 보안 솔루션 분석
2. WTLS 소개 Session State 1. Pending State 1. Handshake Protocol 클라이언트 서 버 Session State 1. Pending State HP가 진행중 1. Handshake Protocol 1. Pending State HP가 진행중 2. Change Cipher Spec Protocol 2. Current State 현재 세션 상태 2. Current State 현재 세션 상태 세션 ID 인증서 압축 방법 Cipher Spec Master_Secret 세션 ID 인증서 압축 방법 Cipher Spec Master_Secret 3. Alert Protocol Connection State Server&client random server write MAC Secret client write MAC Secret server write key client write key Initialization Vector sequence numbers Server&client random server write MAC Secret client write MAC Secret server write key client write key Initialization Vector sequence numbers 4. Record Protocol 충남대 WAP 보안 솔루션 분석
Handshake & Change Cipher Spec Protocol 클라이언트 서버 1. Client Hello 암호 알고리즘 결정 암호 알고리즘 결정 2. Server Hello 서버 공개키 확보 3. Server Certificate* Server Key Exchange* 4. Certificate Request* 5. Server Hello Done 6. Client Certificate* Client Key Exchange* Certificate Verify* Pre-master secret 설정 [Change Cipher Spec] 세션 정보 생성 완료/확인 7. Finished [Change Cipher Spec] 세션 정보 생성 완료/확인 8. Finished 충남대 WAP 보안 솔루션 분석
Full Handshake (1) WTLS 클라이언트 WTLS 서버 1. 버전, session_id, client key id, trusted key id,압축방법, cipher_suite, seq. # mode, key refresh, ClientHello.random 2. 버전, session_id, 서버가 선택한 cipher suite, client key id, 압축방법, seq # mode, key refresh, ServerHello.random 버전 key exchange suit cipher suit 압축방법 key refresh 주기 seq # mode 난수 버전 key exchange suit cipher suit 압축방법 key refresh 주기 seq # mode 난수 Client key ids A list of cryptographic key exchange options and identities supported by the client Trusted_key_ids A list of trusted certificates known by the client, with the client’s first preference first. Cipher suite struct { BulkCipherAlgorithm bulk_cipher_algorithm; MACAlgorithm mac_algorithm } Key refresh 몇 개의 메시지가 전송될 때마다 encryption key, MAC secret, IV를 업데이트할 것인지 결정 Seq. # mode Sequence numbering을 어떻게 할 것인지 결정(off, implicit, explicit) 충남대 WAP 보안 솔루션 분석
Full Handshake (2) WTLS 클라이언트 WTLS 서버 서버의 공개키 정보 서버 인증서 X.509 v3 인증서 3. 서버 인증서* WTLS 서버 4. Server Key Exchange* 서버의 공개키 정보 5. Client Certificate Request* 6. Server Hello done 서버 인증서 X.509 v3 인증서 ANSI X9.68 인증서(Draft) WTLS 인증서 Server Key Exchange 서버 인증서가 없는 경우에, 랜덤하게 공개키를 생성하여 전송한다. 충남대 WAP 보안 솔루션 분석
Full Handshake (3) EKUs[pre_master_secret] EKRc[H(handshake_message)] WTLS 클라이언트 WTLS 서버 7. 클라이언트 인증서* 8. Client Key Exchange* 9. Certificate Verify* 10. Change Cipher Spec 11. Finished 12. Change Cipher Spec pre_master_secret 클라이언트의 공개키 정보 pre_master_secret 13. Finished Client Key Exchange EKUs[pre_master_secret] Certificate Verify EKRc[H(handshake_message)] Finished PRF(master_secret, finished_label, H(handshake_messages)) [0..11] 충남대 WAP 보안 솔루션 분석
Abbreviated Handshake W T L S 클 라 이 언 트 W T L S 서 버 1. Client Hello (resume하려는 session_id 전송) 2. Server Hello Server&client random server write MAC Secret client write MAC Secret server write key client write key Initialization Vector sequence numbers Change Cipher Specs Server&client random server write MAC Secret client write MAC Secret server write key client write key Initialization Vector sequence numbers 3. Finished Change Cipher Specs 4. Finished Master_Secret 변동 없음 Random number만 변화 세션키 재생성 충남대 WAP 보안 솔루션 분석
Record Protocol 가나다라마바사아자 가나다 라마바 사아자 SSL Record 계층 어플리케이션 데이터 1. 단편화 2. 압축 3. MAC 생성 4. 암호화 5. SSL 헤더 생성 SSL Record 계층 충남대 WAP 보안 솔루션 분석
Secret 교환 및 세션키 생성 절차 Client Server HP: Client Key Exchange EKUS[pre_master_ secret] pre_master_ secret (various length) pre_master_ secret (various length) master_ secret 20byte master_ secret 20byte Client-Mac-secret server-Mac-secret client-write-key server-write-key client-write-IV server-write-IV Client-Mac-secret server-Mac-secret client-write-key server-write-key client-write-IV server-write-IV 충남대 WAP 보안 솔루션 분석
Master Secret 계산 Pre_master_secret RSA 클라이언트가 생성한 난수 Diffie-Hellman, ECDH Negotiated Key(Z) Master Secret HMAC_hash(pre_master_secret,A(1)+“master secret”+ClientHello.random+ServerHello.random) + HMAC_hash(pre_master_secret,A(2)+“master secret”+ClientHello.random+ServerHello.random) + HMAC_hash(pre_master_secret,A(3)+“master secret”+ClientHello.random+ServerHello.random) + . . . * A(0) = ClientHello.random + ServerHello.random A(i) = HMAC_hash(pre_master_secret, A(i-1)) 충남대 WAP 보안 솔루션 분석
Key block 생성 필요한 길이만큼 생성 분할 HMAC_hash(master_secret,A(1)+expansion_label+ seq_num+ClientHello.random+ServerHello.random) HMAC_hash(master_secret,A(2)+expansion_label+ seq_num+ClientHello.random+ServerHello.random) 필요한 길이만큼 생성 HMAC_hash(master_secret,A(3)+expansion_label+ seq_num+ClientHello.random+ServerHello.random) . Client_write_MAC_secret[mac_key_size] Client_write_encryption_key[key_material_length] Client_write_ IV[IV_size] 분할 Server_write_MAC_secret[mac_key_size] Server_write_encryption_key[key_material_length] Server_write_ IV[IV_size] 충남대 WAP 보안 솔루션 분석
수출 모드에서의 키 생성 write keys IVs 충남대 WAP 보안 솔루션 분석 final_client_write_encryption_key = PRF(SecurityParameters.client_write_encryption_key, “client write key”, SecurityParameters.client_random + SecurityParameters.server_random); final_server_write_encryption_key = PRF(SecurityParameters.server_write_encryption_key, “server write key”, SecurityParameters.client_random + SecurityParameters.server_random); IVs client_write_iv = PRF(“”, “client write IV”, client_write_seq_num + SecurityParameters.client_random + SecurityPArameters.server_random); server_write_iv = PRF(“”, “server write IV”, server_write_seq_num + SecurityParameters.client_random + SEcurityPArameters.server_random); 충남대 WAP 보안 솔루션 분석
사용 암호 알고리즘 Key Exchange Algorithms DH_anon, DH_anon_512, DH_anon_768 RSA_anon, RSA_anon_512, RSA_anon_768, RSA, RSA_512, RSA_768 ECDH_anon, ECDH_anon_113, ECDH_anon_131, ECDH_ECDSA 충남대 WAP 보안 솔루션 분석
Bulk Encryption Algorithms 충남대 WAP 보안 솔루션 분석
MAC Algorithms 충남대 WAP 보안 솔루션 분석
3. WTLS 안전성 분석 프로토콜 안전성 분석 충남대 WAP 보안 솔루션 분석 기밀성 무결성 사용자 인증 부인 봉쇄 Traffic Analysis Spoofing Dropping etc. 보안 서비스 분석 알려진 공격에 대한 대응 방안 분석 프로토콜 안전성 분석 공개키 알고리즘 관용 알고리즘 해쉬 알고리즘 보안 헛점을 최소화 시키는 구현 암호 알고리즘의 안전성 올바른 구현 충남대 WAP 보안 솔루션 분석
3.1 WTLS 핸드쉐이크 프로토콜 안전성 분석 클라이언트 서버 평문을 도청, 조작, 유실 시키는 공격 1. Client Hello 2. Server Hello 3. Server Certificate* Server Key Exchange* 4. Certificate Request* 5. Server Hello Done pre master secret, master secret을 알아내기 위한 공격 6. Client Certificate* Client Key Exchange* Certificate Verify* [Change Cipher Spec] 7. Finished [Change Cipher Spec] 8. Finished 충남대 WAP 보안 솔루션 분석
(1) Ciphersuite Rollback 공격 WTLS 클라이언트 WTLS 서버 1. 버전, session_id, client key id, trusted key id,압축방법, cipher_suite, seq. # mode, key refresh, ClientHello.random Export-weakened-mode로 조작 Certificate Verify, Finished 메시지에서 핸드쉐이크 메시지에 대한 무결성 제공 - Certificate Verify: EKRc[H(handshake_message)] - Finished: PRF(master_secret, finished_label, H(handshake_messages)) [0..11] * Change Cipher Spec 메시지를 제외한 이전에 전송된 모든 핸드쉐이크 메시지 충남대 WAP 보안 솔루션 분석
(2) Server Key Exchange Algorithm Rollback struct { ParameterSpecifier parameter_specifier; select (KeyExchangeAlgorithm) { case rsa_anon: RSAPublicKey params; case dh_anon: DHPublicKey params; case ecdh_anon: ECPublicKey params; }; } ServerKeyExchange 변경이 가능하다. 예) Key Exchange 알고리즘으로 RSA를 선택했으나, “KeyExchangeAlgorithm” 부분을 DH로 변경한다면? Certificate Verify, Finished 메시지에서 핸드쉐이크 메시지에 대한 무결성 제공 충남대 WAP 보안 솔루션 분석
(3) Dropping the Change Cipher Spec Message WTLS 클라이언트 WTLS 서버 7. 클라이언트 인증서* 8. Client Key Exchange* 9. Certificate Verify* 10. Change Cipher Spec 11. Finished 12. Change Cipher Spec 13. Finished 핸드쉐이크 메시지에 포함되지 않으므로, 유실된다 하더라도, Finished 메시지에서 그 사실을 알 수 없다. Pending state에서 current state로 전환을 못함 충남대 WAP 보안 솔루션 분석
In WTLS 1.2 Implementations MUST check that the change cipher spec message is sent or received before sending or receiving the verifying finished message. 충남대 WAP 보안 솔루션 분석
(4) Safeguard the master_secret In Abbreviated Handshake Attacker Server Client Hello (requesting the resumption or the target session) Client Hello (requesting the resumption or the target session) Finished Finished Finished: PRF(master_secret, finished_label, H(handshake_messages)) [0..11] 해쉬의 출력값으로부터 입력값을 알아내기는 어렵다. 충남대 WAP 보안 솔루션 분석
3.2 WTLS 레코드 프로토콜 안전성 분석 (1) Confidentiality: Eavesdropping 클라이언트 서버 Record Type(1) Sequence #(2) Length(2) Server write key 암호화 데이터 Client write key Short-term session key independent key for each direction 충남대 WAP 보안 솔루션 분석
(2) Confidentiality: Traffic Analysis Random length padding bit Random length padding bit Request: URL (encrypted) WTLS는 block cipher에 대해서는 random padding을 지원하지만, stream cipher에 대해서는 지원하지 않는다. 그러나 현재 지원하는 stream cipher가 없음. Response: Contents (encrypted) 클라이언트 서버 암호화된 URL의 길이 분석 암호화된 웹페이지의 길이 분석 접근한 웹 페이지 분석 충남대 WAP 보안 솔루션 분석
Stream Cipher Block Cipher stream-ciphered struct { opaque content[WTLSCompressed.length]; opaque MAC[SecurityParameters.mac_size]; } GenericStreamCipher; Block Cipher block-ciphered struct { opaque content[WTLSCompressed.length]; opaque MAC[SecurityParameters.mac_size]; unit8 padding[padding_length]; unit padding_length; } GenericBlockCipher; 충남대 WAP 보안 솔루션 분석
(3) 수출 모드에서 IV의 노출 문제 알려진 정보 도청 가능한 정보 client_write_iv = PRF(“”,”client write IV”, client_write_seq_num + SecurityParameters.client_Random+SecurityParameters.server_random); server_write_iv = PRF(“”, “server write IV”, server_write_seq_num + SecurityParameters.client_Random+SecurityParameters.server_random); 도청 가능한 정보 충남대 WAP 보안 솔루션 분석
(4) record_type field is sent unencrypted struct { opaque record_type[1]; select (SequenceNumberIndication) { case without: struct {}; case with : unit16 sequence_number; } select (FragmentLengthIndication) { case without: struct { }; case with : unit16 length; select (SecurityParameters.cipher_type) { case stream: GenericStreamCipher; case block : GenericBLockCIpher; } fragment } WTLSCiphertext; 암호화 되지 않음. 키가 바뀐 사실 등을 알 수 있음 Ciphertext의 길이를 알 수 있음 충남대 WAP 보안 솔루션 분석
(5) Confidentiality: Active Attacks URL CUT PASTE WTLS 헤더 Booby-trap URL 암호화된 데이터 Independent session keys for each different context strong authentication on all encrypted packets MAC MAC 비교 무결성 검사 충남대 WAP 보안 솔루션 분석
(6) Message Authentication WTLS protects the integrity of application data by using a cryptographic MAC. HMAC_hash( MAC_secret, seq_# + WTLSCompressed.record_type + WTLSCompressed.length + WTLSCompressed.fragment) 충남대 WAP 보안 솔루션 분석
(7) Replay Attack MAC 생성식: User name Password User name Password 216-1 보다 작은 seq_# 각각의 connection 및 전송 방향에 따라 다르게 유지 key-exchange 때마다 refresh User name Password MAC 생성식: HMAC_hash( MAC_secret, seq_# + WTLSCompressed.record_type + WTLSCompressed.length + WTLSCompressed.fragment) 충남대 WAP 보안 솔루션 분석
3.3 구현시 문제점 (1) Anonymous Key Exchange가 사용될 경우, Man-in-the-middle attack에 대한 방어책이 없음. (2) Denial of Services Attack UDP Spoofing에 의해 Denial of Service Attack이 쉽게 이루어질 수 있음. 충남대 WAP 보안 솔루션 분석
(ver. rollback 공격과 병행할 경우) 4. 결론 Summary of WTLS Handshake Protocol 공격 내용 SSL 3.0 WTLS Ciphersuite Rollback Attack 안전 안전 Dropping the Change Cipher Spec 잠재적 문제 안전 Safeguarding master secret 안전 안전 Server Key-exchange Algorithm Rollback 잠재적 문제 (ver. rollback 공격과 병행할 경우) 안전 Anonymous Key-exchange (Sign an empty structure) 잠재적 문제 N/A Version Rollback 잠재적 문제 N/A 충남대 WAP 보안 솔루션 분석
Message Authentication Summary of WTLS Record Protocol 공격 내용 SSL WTLS Confidentiality eavesdropping 안전 안전 Traffic Analysis Stream cipher의 경우 문제 Stream cipher의 경우 문제 record_type field is unencrypted 잠재적 문제 잠재적 문제 IV 노출 안전 수출용일 경우 문제 Cut-and-paste Attack 안전 안전 Message Authentication 안전 안전 Replay Attack 안전 안전 충남대 WAP 보안 솔루션 분석
WTLS는 안전한 프로토콜 암호 알고리즘 프로토콜 설계의 안전성 안전한 것으로 알려진 알고리즘들이 사용됨 비교적 안전한 것으로 판단됨 WTLS는 안전한 프로토콜 * 단, DoS 공격으로부터 취약하며, Anonymous Key Exchange의 경우, Man-in-the-middle 공격으로부터 매우 취약 충남대 WAP 보안 솔루션 분석
관련 업체 동향 회사명 주요 활동 내용 Baltimore Telepathy (영국) 인증 서비스/ 인증 시스템 개발 업체(UniCert) WAP CA/RA, WAP Security Toolkit, Digital Signature Toolkit, Validation System 등 개발 현재 국내 및 아시아 진출 모색중 VeriSign (미국) 대표적인 인증 서비스 업체 WTLS 서버용 인증서 발행 서비스 제공중(795$/년) Nokia, Motorola, Phone.com 서버 지원 Motorola와의 MOU(2000년 1월)를 통해 무선인터넷 시장 진출 Sonera (핀란드) 세계 최초의 무선 뱅킹 서비스 제공 업체 무선 뱅킹 및 무선 PKI 시스템 제공중 래디치오(Radicchio: 유럽, 미국, 일본 등 36개 통신업체로 구성된 컨소시움)에서 Sonera PKI 지원 Certicom (캐나다) PKI 시스템 제공/ ECC 기반의 암호 솔루션 제공 PDA 기반으로 WTLS/SSL 모두 지원 Mobile CA/RA/PKI Client 제공 Entrust (캐나다) PKI 시스템 및 서비스 제공 업체 WTLS 서버용 인증서 발행 서비스 제공중(695$/년) WAP 기반 PKI 솔루션 제공 예정 RSA Data Security (미국) WTLS Development Toolkit인 RSA B-SAFE WTLS 판매예정(295$) 충남대 WAP 보안 솔루션 분석
End-to-End Security 보장 방안 현재 이슈 단말기 WAP G/W Web 서버 WTLS SSL End-to-End Security 보장 방안 무선인터넷 환경에 적합한 PKI 구축 방안 정보보호 솔루션의 경량화 제품 간의 상호운용성 확보 충남대 WAP 보안 솔루션 분석
End-to-End Security Solution 방안 1 Secure WAP G/W 클라이언트 WAP G/W Web 서버 WTLS 방안 2 클라이언트 WAP G/W Web 서버 응용 레벨에서 모든 암호 연산 처리 방안 3 클라이언트 Web 서버 SSL 충남대 WAP 보안 솔루션 분석