pre-master secret
Transcrição
pre-master secret
SSL / TLS Kapitel 9 SSL / TLS auch als Open Source: OpenSSL Secure Socket Layer (SSL) – von Netscape zur Absicherung der Internet-Kommunikation entwickelt (HTTP, SMTP, …) – SSL v1.0 und v2.0 von Netscape 1994 – stark geänderte Version v3.0 anno 1996 Transport Layer Security (TLS) – – – – – herstellerunabhängige Weiterentwicklung von SSL v1.0 von Internet Engineering Task Force (IETF) 1999 (RFC 2246) TLS v1.0 = SSL v3.1 (nominell) TLS v1.0 = SSL v3.0 (technisch) (im wesentlichen) aktuelle Version: v1.1 (v1.2 als RFC Draft 4346 im Nov 2007) Einführung in die Kryptographie • TU Darmstadt, WS 07/08 • Marc Fischlin • www.minicrypt.de • Page 2 SSL/TLS-Protokoll (mit Server-Authentisierung) ClientHello client server ServerHello Certificate ServerKeyExchange ServerHelloDone Handshake ClientKeyExchange ChangeCipherSpec Finished ChangeCipherSpec Finished master secret master secret Data (secured) Einführung in die Kryptographie • TU Darmstadt, WS 07/08 • Marc Fischlin • www.minicrypt.de • Page 3 SSL/TLS-Protokoll (mit Server-Authentisierung) ClientHello client server ServerHello enthält (unverschlüsselten) 32-Byte Wert Certificate ClientRandom ServerKeyExchange = Datum (4 Bytes) || PRG (28 Byte) ServerHelloDone & Informationen über mögliche ClientKeyExchange Kompressionsund Krypto-Algorithmen Handshake ChangeCipherSpec … SSL_RSA_EXPORT_WITH_DES40_CBC_SHA Finished SSL_RSA_WITH_DES_CBC_SHA SSL_RSA_WITH_3DES_EDE_CBC_SHA ChangeCipherSpec … SSL_DH_DSS_EXPORT_WITH_DES40_CBC_SHA Finished SSL_DH_DSS_WITH_DES_CBC_SHA master secret SSL_DH_DSS_WITH_3DES_EDE_CBC_SHA … Data (secured) master secret Einführung in die Kryptographie • TU Darmstadt, WS 07/08 • Marc Fischlin • www.minicrypt.de • Page 4 SSL/TLS-Protokoll (mit Server-Authentisierung) ClientHello client server ServerHello Certificate enthält (unverschlüsselten) 32-Byte Wert ServerKeyExchange ServerRandom =Datum (4 ServerHelloDone Bytes) || PRG (28 Byte) Handshake ClientKeyExchange & Wahl des ChangeCipherSpec Kompressions- und des Krypto-Algorithmus’ Finished ChangeCipherSpec Finished master secret master secret Data (secured) Einführung in die Kryptographie • TU Darmstadt, WS 07/08 • Marc Fischlin • www.minicrypt.de • Page 5 SSL/TLS-Protokoll (mit Server-Authentisierung) ClientHello client server ServerHello Certificate ServerKeyExchange ServerHelloDone Handshake ClientKeyExchange ChangeCipherSpec Finished ChangeCipherSpec Finished master secret master secret Data (secured) Einführung in die Kryptographie • TU Darmstadt, WS 07/08 • Marc Fischlin • www.minicrypt.de • Page 6 RSA (encryption cert): SSL/TLS-Protokoll (mit Server-Authentisierung) Client sendet 48-Bytes pre-master secret ClientHello = Version (2 Bytes) || PRG (46 Bytes) client server ServerHello verschlüsselt mit RSA-pk aus Zertifikat (RSA PKCS #1) Certificate ServerKeyExchange ServerHelloDone Handshake ClientKeyExchange ChangeCipherSpecDH (sign-only cert): Finished Server und Client erzeugen ChangeCipherSpec pre-master secret (=DH-Key) mittels DH-Key-Exchange Finished master secret Einführung in die Kryptographie • TU Darmstadt, WS 07/08 master secret Server sendet dazu in ServerKeyExchange gb, s s=Sig(p,g,gb,ClientRandom,ServerRandom) Datamit (secured) unter Signatur-Verfahren in Zertifikat; Client antwortet in ClientKeyExchange mit ga • Marc Fischlin • www.minicrypt.de • Page 7 SSL/TLS-Protokoll (mit Server-Authentisierung) ClientHello client server ServerHello Certificate ServerKeyExchange bestätige Umschalten auf ServerHelloDone vereinbarte Verfahren Handshake ClientKeyExchange ChangeCipherSpec Finished ChangeCipherSpec Finished master secret master secret Data (secured) Einführung in die Kryptographie • TU Darmstadt, WS 07/08 • Marc Fischlin • www.minicrypt.de • Page 8 Berechnung des Master Secrets (SSL) gegeben: pre-master secret und ClientRandom, ServerRandom master secret =MD5(pre-master secret || SHA-1(‘A’|| pre-master secret || ClientRandom || ServerRandom)) || MD5(pre-master secret || SHA-1(‘BB’|| pre-master secret || ClientRandom || ServerRandom)) || MD5(pre-master secret || SHA-1(‘CCC’|| pre-master secret || ClientRandom || ServerRandom)) aus S.Thomas, SSL and TLS Essentials, Wiley Einführung in die Kryptographie • TU Darmstadt, WS 07/08 • Marc Fischlin • www.minicrypt.de • Page 9 Berechnung des Master Secrets (TLS) gegeben: pre-master secret und ClientRandom, ServerRandom master secret =HMAC-MD5(pre-master secret (links) || ‘master secret’ || ClientRandom || ServerRandom) ⊕ HMAC-SHA-1(pre-master secret (rechts) || ‘master secret’ || ClientRandom || ServerRandom) Design-Idee: sicher, sofern HMAC-MD5 oder HMAC-SHA-1 gute PRF Einführung in die Kryptographie • TU Darmstadt, WS 07/08 • Marc Fischlin • www.minicrypt.de • Page 10 Ableiten der benötigten Schlüssel (SSL) gegeben: master secret und ClientRandom, ServerRandom Einführung in die Kryptographie • TU Darmstadt, WS 07/08 • Marc Fischlin • www.minicrypt.de • Page 11 Ableiten der benötigten Schlüssel (TLS) gegeben: master secret und ClientRandom, ServerRandom PRF = HMAC-MD5 ⊕ HMAC-SHA1 Einführung in die Kryptographie • TU Darmstadt, WS 07/08 • Marc Fischlin • www.minicrypt.de • Page 12 SSL/TLS-Protokoll (mit Server-Authentisierung) client ClientHello server schützt Handshake Messages (und ist bereits verschlüsselt) ServerHello (leichte Abwandlung von HMAC) Certificate SSL: HMAC-MD5*(master secret, handshake messages) || HMAC-SHA-1*(master secret, handshake messages) ServerKeyExchange ServerHelloDone TLS: Handshake HMAC-MD5(master secret (links), MD5(handshake messages) || SHA-1(handshake messages)) ClientKeyExchange ⊕ HMAC-SHA-1(master secret (rechts), MD5(handshake messages) || SHA-1(handshake messages)) ChangeCipherSpec Finished ChangeCipherSpec Finished master secret master secret Data (secured) Einführung in die Kryptographie • TU Darmstadt, WS 07/08 • Marc Fischlin • www.minicrypt.de • Page 13 Absichern der Daten Mit Key-Exchange-Phase quasi Hybrid-Verfahren Prinzip: “MAC-then-Encrypt” vs. Vorlesung: “Encrypt-then-MAC” sicher (Padding nur bei Verschlüsselung mit Blockcipher) Krawczyk, 2001: MAC-then-Encrypt im Allgemeinen nicht sicher, aber für CBC-Verfahren und Streamciphers in SSL/TLS sicher (sofern keine detaillierten Fehlermeldung bei Entschlüsselungsfehler an Angreifer) Einführung in die Kryptographie • TU Darmstadt, WS 07/08 • Marc Fischlin • www.minicrypt.de • Page 14