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

Documentos relacionados