Real-World Authenticated Key Exchange
Tibor Jager Paderborn University Summer School on Real-World Crypto and Privacy Šibenik, Croatia June 17th, 2019
Real-World Authenticated Key Exchange Tibor Jager Paderborn - - PowerPoint PPT Presentation
Real-World Authenticated Key Exchange Tibor Jager Paderborn University Summer School on Real-World Crypto and Privacy ibenik, Croatia June 17 th , 2019 Outline Security of the Diffie-Hellman Key Exchange Man-in-the-Middle attacks
Tibor Jager Paderborn University Summer School on Real-World Crypto and Privacy Šibenik, Croatia June 17th, 2019
2
3
Public parameters: Group description (G,g,q) a ß {0, …, q-1} tA := ga b ß {0, …, q-1} tB = gb tA tB kAB := tBa kAB := tAb
4
a ß {0, …, q-1} tA := ga b ß {0, …, q-1} tB = gb tA a’ ß {0, …, q-1} tA’ := ga’ tA’
5
a ß {0, …, q-1} tA := ga b ß {0, …, q-1} tB = gb tA tB a’ ß {0, …, q-1} tA’ := ga’ tA’ b’ ß {0, …, q-1} tB’ := gb’ tB’
6
a ß {0, …, q-1} tA := ga b ß {0, …, q-1} tB = gb tA tB a’ ß {0, …, q-1} tA’ := ga’ tA’ b’ ß {0, …, q-1} tB’ := gb’ tB’
7
a ß {0, …, q-1} tA := ga b ß {0, …, q-1} tB = gb tA tB a’ ß {0, …, q-1} tA’ := ga’ tA’ b’ ß {0, …, q-1} tB’ := gb’ tB’
8
Public parameters: Group description (G,g,q) pkA, pkB (pkB, skB) ß SigKeyGen() (pkA, skA) ß SigKeyGen()
9
Public parameters: Group description (G,g,q) pkA, pkB a ß {0, …, q-1} tA := ga sA := Sign(skA,tA) tA, sA (pkB, skB) ß SigKeyGen() (pkA, skA) ß SigKeyGen()
10
Public parameters: Group description (G,g,q) pkA, pkB a ß {0, …, q-1} tA := ga sA := Sign(skA,tA) b ß {0, …, q-1} tB = gb sB := Sign(skB,tB) tA, sA tB, sB (pkB, skB) ß SigKeyGen() (pkA, skA) ß SigKeyGen()
11
Public parameters: Group description (G,g,q) pkA, pkB a ß {0, …, q-1} tA := ga sA := Sign(skA,tA) b ß {0, …, q-1} tB = gb sB := Sign(skB,tB) tA, sA tB, sB If Vfy(pkB, tB, sB) = TRUE then: kAB := tBa If Vfy(pkA, tA, sA) = TRUE then: kAB := tAb (pkB, skB) ß SigKeyGen() (pkA, skA) ß SigKeyGen()
12
Public parameters: Group description (G,g,q) pkA, pkB a ß {0, …, q-1} tA := ga sA := Sign(skA,tA) b ß {0, …, q-1} tB = gb sB := Sign(skB,tB) tA, sA tB, sB If Vfy(pkB, tB, sB) = TRUE then: kAB := tBa If Vfy(pkA, tA, sA) = TRUE then: kAB := tAb (pkB, skB) ß SigKeyGen() (pkA, skA) ß SigKeyGen()
13
14
Session 1 with Alice Session 3 with Charlie Session 2 with Bob Session 4 with Alice
15
Secret key Session 1 with Alice Session 3 with Charlie Session 2 with Bob Session 4 with Alice
16
Secret key Session 1 with Alice Session 3 with Charlie Session 2 with Bob Session 4 with Alice
17
Secret key Session 1 with Alice Session 3 with Charlie Session 2 with Bob Session 4 with Alice
18
Secret key Session 1 with Alice Session 3 with Charlie Session 2 with Bob Session 4 with Alice
19
Public parameters: Group description (G,g,q) pkA, pkB a ß {0, …, q-1} tA := ga sA := Sign(skA,tA) b ß {0, …, q-1} tB = gb sB := Sign(skB,tB) tA, sA tB, sB If Vfy(pkBob, tB, sB) = TRUE then: kAB := tBa If Vfy(pkAlice, tA, sA) = TRUE then: kAB := tAb (pkB, skB) ß SigKeyGen() (pkA, skA) ß SigKeyGen()
23
Network Transport Link Application Network Transport Link Application
24
TLS http, smtp, imap, pop3, ftp, sip, … Client Server Physical communication
Network Transport Link Application Network Transport Link Application
25
TLS http, smtp, imap, pop3, ftp, sip, … Client Server Network communication
26
1994 1995
1999
2006 2008
2018
27
https://www.ssllabs.com/ssl-pulse/
June 2019
28
https://www.ssllabs.com/ssl-pulse/
June 2019
29
https://www.ssllabs.com/ssl-pulse/
June 2019
30
Client Server
31
Client Server
Server S
pk
Client
32
Server S
pk
Client
35 pkC
Optional
Server S
pk
Client
33
Server S
pk
Client
35
Server S
pk
Client
34
ClientHello:
sigs, (DH groups)
Server S
pk
Client
35
ServerHello:
ClientHello:
sigs, (DH groups)
Server S
pk
Client
36
ServerHello:
Replaced with HelloRetryRequest, if necessary
ClientHello:
sigs, (DH groups)
Server S
pk
Client
37
ServerHello:
k = KDF(gcs, rC, rS) k’ = KDF’(gcs, rC, rS) k = KDF(gcs, rC, rS) k’ = KDF’(gcs, rC, rS)
ClientHello:
sigs, (DH groups)
Server S
pk
Client
38
Signature over all previous messages
ServerHello:
Certified public key Certificate Verify
k = KDF(gcs, rC, rS) k’ = KDF’(gcs, rC, rS) k = KDF(gcs, rC, rS) k’ = KDF’(gcs, rC, rS) Encrypted with k
ClientHello:
sigs, (DH groups)
Server S
pk
Client
39
Signature over all previous messages
ServerHello:
Certified public key Certificate Verify
k = KDF(gcs, rC, rS) k’ = KDF’(gcs, rC, rS) k = KDF(gcs, rC, rS) k’ = KDF’(gcs, rC, rS)
Server Finished SFIN
Encrypted with k SFIN = MAC(k’, all prev. msgs.)
ClientHello:
sigs, (DH groups)
Server S
pk
Client
40
Signature over all previous messages
ServerHello:
Certified public key Certificate Verify
k = KDF(gcs, rC, rS) k’ = KDF’(gcs, rC, rS) k = KDF(gcs, rC, rS) k’ = KDF’(gcs, rC, rS)
Server Finished SFIN Client Finished CFIN
Encrypted with k SFIN = MAC(k’, all prev. msgs.) CFIN = MAC(k’, all prev. msgs.)
ClientHello:
sigs, (DH groups)
Server S
pk
Client
41
Signature over all previous messages
ServerHello:
Certified public key Certificate Verify
k = KDF(gcs, rC, rS) k’ = KDF’(gcs, rC, rS) k = KDF(gcs, rC, rS) k’ = KDF’(gcs, rC, rS)
Server Finished SFIN Client Finished CFIN
Encrypted with k SFIN = MAC(k’, all prev. msgs.) CFIN = MAC(k’, all prev. msgs.)
ClientHello:
sigs, (DH groups)
Server S
pk
Client
42
Signature over all previous messages
ServerHello:
Certified public key Certificate Verify
k = KDF(gcs, rC, rS) k’ = KDF’(gcs, rC, rS) k = KDF(gcs, rC, rS) k’ = KDF’(gcs, rC, rS)
Server Finished SFIN Client Finished CFIN
Encrypted with k SFIN = MAC(k’, all prev. msgs.) CFIN = MAC(k’, all prev. msgs.)
ClientHello:
sigs, (DH groups)
Server S
pk
Client
43
Signature over all previous messages
ServerHello:
Certified public key Certificate Verify
k = KDF(gcs, rC, rS) k’ = KDF’(gcs, rC, rS) k = KDF(gcs, rC, rS) k’ = KDF’(gcs, rC, rS)
Server Finished SFIN Client Finished CFIN
Encrypted with k SFIN = MAC(k’, all prev. msgs.) CFIN = MAC(k’, all prev. msgs.)
ClientHello:
sigs, (DH groups)
Server S
pk
Client
44
Signature over all previous messages
ServerHello:
ClientHello:
sigs, (DH groups)
Certified public key Certificate Verify
k = KDF(gcs, rC, rS) k’ = KDF’(gcs, rC, rS) k = KDF(gcs, rC, rS) k’ = KDF’(gcs, rC, rS)
Server Finished SFIN Client Finished CFIN
Encrypted with k SFIN = MAC(k’, all prev. msgs.) CFIN = MAC(k’, all prev. msgs.)
45
46
47
48
49
Server S TLS 1.3 TLS 1.0
(Backwards compatibility)
RSA
TLS 1.0 TLS 1.3
50
Server S TLS 1.3 TLS 1.0
(Backwards compatibility)
RSA
TLS 1.0 TLS 1.3 Assumption Secure?
51
Server S TLS 1.3 TLS 1.0
(Backwards compatibility)
RSA
Bleichenbacher‘s Attack
52
TLS 1.3 Server S TLS 1.3 TLS 1.0
(Backwards compatibility)
RSA
[J., Schwenk, Somorovsky; ACM CCS 2015]
53
TLS 1.3 Server S TLS 1.3 TLS 1.0
(Backwards compatibility)
RSA
ServerHello ClientHello Certificate
[J., Schwenk, Somorovsky; ACM CCS 2015]
54
TLS 1.3 Server S TLS 1.3 TLS 1.0
(Backwards compatibility)
RSA
CertVerify ServerHello ClientHello Certificate
[J., Schwenk, Somorovsky; ACM CCS 2015]
55
TLS 1.3 Server S TLS 1.3 TLS 1.0
(Backwards compatibility)
RSA
Bleichenbacher‘s Attack CertVerify ServerHello ClientHello Certificate
[J., Schwenk, Somorovsky; ACM CCS 2015]
56
TLS 1.3 Server S TLS 1.3 TLS 1.0
(Backwards compatibility)
RSA
Bleichenbacher‘s Attack CertVerify ServerHello ClientHello Certificate S-Finished C-Finished
[J., Schwenk, Somorovsky; ACM CCS 2015]
57
TLS 1.3 Server S TLS 1.3 TLS 1.0
(Backwards compatibility)
RSA
Bleichenbacher‘s Attack CertVerify ServerHello ClientHello Certificate S-Finished C-Finished
[J., Schwenk, Somorovsky; ACM CCS 2015]
58
(cf. Jager, Paterson, Somorovsky, NDSS 2013)
(Bardou et al., CRYPTO 2012)
(Aviram et al., USENIX Security 2016)
59
(cf. Jager, Paterson, Somorovsky, NDSS 2013)
(Bardou et al., CRYPTO 2012)
(Aviram et al., USENIX Security 2016)
60
(cf. Jager, Paterson, Somorovsky, NDSS 2013)
(Bardou et al., CRYPTO 2012)
(Aviram et al., USENIX Security 2016)
61
TLS 1.3
RSA1
Server S TLS 1.3 TLS 1.0
(Backwards compatibility)
RSA1 RSA2
Bleichenbacher‘s Attack
62
TLS 1.3
RSA2
Server S TLS 1.3 TLS 1.0
(Backwards compatibility)
RSA1 RSA2
Bleichenbacher‘s Attack
66
67
Figure from ETSI TS 103 523-3 V1.2.1 (03/2019)
68
Figure from ETSI TS 103 523-3 V1.2.1 (03/2019)
69
70
71
Server S
pk
Client
72
ServerHello:
ClientHello:
Certified public key Certificate Verify Server Finished SFIN Client Finished CFIN
Exponent s
73
Figure from ETSI TS 103 523-3 V1.2.1 (03/2019)
74
https://www.eff.org/deeplinks/2019/02/ets- isnt-tls-and-you-shouldnt-use-it
additional supported_versions extension
75
additional supported_versions extension
76
additional supported_versions extension
77
78
Protocol Candidates https://eprint.iacr.org/2015/914.pdf
https://eprint.iacr.org/2016/1178.pdf
PKCS#1 v1.5 Encryption https://www.nds.ruhr-uni- bochum.de/media/nds/veroeffentlichungen/2015/08/21/Tls13QuicAtt acks.pdf
https://drownattack.com/
https://www.iacr.org/cryptodb/archive/2002/FSE/3091/3091.pdf
79
80
81
82
83
84
85