Public-Key 0-RTT Protocols
Tibor Jager Paderborn University Summer School on Real-World Crypto and Privacy Šibenik, Croatia June 20th, 2019
Public-Key 0-RTT Protocols Tibor Jager Paderborn University Summer - - PowerPoint PPT Presentation
Public-Key 0-RTT Protocols Tibor Jager Paderborn University Summer School on Real-World Crypto and Privacy ibenik, Croatia June 20 th , 2019 Outline Mass surveillance and Forward Security 0-RTT Protocols and their Forward Security
Tibor Jager Paderborn University Summer School on Real-World Crypto and Privacy Šibenik, Croatia June 20th, 2019
2
Internet
3
Encrypted = Not encrypted =
Internet
4
Encrypted = Not encrypted =
5 https://searchengineland.com/google-to-begin-encrypting-searches-outbound-clicks-by-default-97435
6 https://searchengineland.com/google-to-begin-encrypting-searches-outbound-clicks-by-default-97435 https://www.facebook.com/notes/facebook-engineering/secure- browsing-by-default/10151590414803920/
7 https://searchengineland.com/google-to-begin-encrypting-searches-outbound-clicks-by-default-97435 https://blog.whatsapp.com/10000618/end-to-end-encryption?l=en https://www.facebook.com/notes/facebook-engineering/secure- browsing-by-default/10151590414803920/ April 5, 2016
Internet
8
Encrypted = Not encrypted =
Internet
9
Encrypted = Not encrypted = Database
Internet
10
Encrypted = Not encrypted =
Google, we need your secret key.
Database
Internet
11
Encrypted = Not encrypted =
Google, we need your secret key.
Database
12
https://en.wikipedia.org/wiki/Lavabit#Connection_to_Edward_Snowden
13
https://en.wikipedia.org/wiki/Lavabit#Connection_to_Edward_Snowden
14 https://arstechnica.com/tech-policy/2014/04/lavabit-held-in-contempt-of-court-for- printing-crypto-key-in-tiny-font/
15 https://techcrunch.com/2016/01/14/no-backdoors-but-uk-government- still-wants-encryption-decrypted-on-request/ https://www.forbes.com/sites/kenrapoza/2017/10/16/russia-fines- cryptocurrency-worlds-preferred-messaging-app-telegram/#767569eef765 https://zoomapps.club/whatsapp-threema-and-co- seehofer-wants-to-enforce-decryption-of-chats/
16
Secret key Session 1 with Alice Session 3 with Charlie Session 2 with Bob Session 4 with Alice
*aka. Forward Secrecy, aka. Perfect Forward Secrecy/Security, aka. pre-compromise security
17
Server S
Client
18
ServerHello ClientHello Cert, Cert Vfy., SFIN Client Finished CFIN
Compute session key k
Enck(Payload)
Server S
Client
19
ServerHello ClientHello Cert, Cert Vfy., SFIN Client Finished CFIN
1 RTT Compute session key k
Enck(Payload)
Server S
Client
20
ServerHello ClientHello Cert, Cert Vfy., SFIN Client Finished CFIN
1 RTT Compute session key k
SYN SYN/ACK ACK
1 RTT
Enck(Payload)
Server S
Client
21
ServerHello ClientHello Cert, Cert Vfy., SFIN Client Finished CFIN
1 RTT Compute session key k
SYN SYN/ACK ACK
1 RTT
Enck(Payload)
Server S
Client
22
ServerHello ClientHello Cert, Cert Vfy., SFIN Client Finished CFIN
1 RTT Compute session key k
Enck(Payload)
SYN SYN/ACK ACK
1 RTT
Enck(Payload)
Server S
Client
23
ServerHello ClientHello Cert, Cert Vfy., SFIN Client Finished CFIN
1 RTT Compute session key k
Enck(Payload)
SYN SYN/ACK ACK
1 RTT
Enck(Payload)
(Amazon, 2006)
24
(*) http://glinden.blogspot.se/2006/11/marissa-mayer-at-web-20.html
(Amazon, 2006)
25
(*) http://glinden.blogspot.se/2006/11/marissa-mayer-at-web-20.html
Yearly revenue in 2018: 232.9 billion USD
(Amazon, 2006)
26
(*) http://glinden.blogspot.se/2006/11/marissa-mayer-at-web-20.html
Yearly revenue in 2018: 232.9 billion USD
(Amazon, 2006)
27
(*) http://glinden.blogspot.se/2006/11/marissa-mayer-at-web-20.html
Yearly revenue in 2018: 232.9 billion USD
C = Encpk(k) SymEnc(k, payload) k = Decsk(C)
28
(pk, sk) Client Server
C = Encpk(k) SymEnc(k, payload) k = Decsk(C)
29
(pk, sk) Client Server
C = Encpk(k) SymEnc(k, payload) (pk, sk) k = Decsk(C)
30
C = Encpk(k) SymEnc(k, payload) (pk, sk) k = Decsk(C) C = Encpk(k) SymEnc(k, payload)
31
C = Encpk(k) SymEnc(k, payload) (pk, sk) k = Decsk(C) C = Encpk(k) SymEnc(k, payload) C = Encpk(k) SymEnc(k, payload)
32
33
Web Server GoodCitizensManual.pdf DissidentsHandbook.pdf Colm MacCárthaigh, Security Review of TLS1.3 0-RTT, https://github.com/tlswg/tls13-spec/issues/1001
34
GET DissidentsHandbook.pdf Web Server GoodCitizensManual.pdf DissidentsHandbook.pdf Colm MacCárthaigh, Security Review of TLS1.3 0-RTT, https://github.com/tlswg/tls13-spec/issues/1001
35
GET DissidentsHandbook.pdf Web Server GoodCitizensManual.pdf DissidentsHandbook.pdf DissidentsHandbook.pdf Colm MacCárthaigh, Security Review of TLS1.3 0-RTT, https://github.com/tlswg/tls13-spec/issues/1001
36
GET DissidentsHandbook.pdf Web Server GoodCitizensManual.pdf DissidentsHandbook.pdf DissidentsHandbook.pdf GET DissidentsHandbook.pdf Colm MacCárthaigh, Security Review of TLS1.3 0-RTT, https://github.com/tlswg/tls13-spec/issues/1001
37
GET DissidentsHandbook.pdf Web Server GoodCitizensManual.pdf DissidentsHandbook.pdf GET DissidentsHandbook.pdf DissidentsHandbook.pdf Colm MacCárthaigh, Security Review of TLS1.3 0-RTT, https://github.com/tlswg/tls13-spec/issues/1001
38
GET DissidentsHandbook.pdf Web Server GoodCitizensManual.pdf DissidentsHandbook.pdf GET DissidentsHandbook.pdf DissidentsHandbook.pdf Colm MacCárthaigh, Security Review of TLS1.3 0-RTT, https://github.com/tlswg/tls13-spec/issues/1001
39
GET DissidentsHandbook.pdf Web Server GoodCitizensManual.pdf DissidentsHandbook.pdf GET DissidentsHandbook.pdf ERROR 404 not found DissidentsHandbook.pdf Colm MacCárthaigh, Security Review of TLS1.3 0-RTT, https://github.com/tlswg/tls13-spec/issues/1001
40
(*) http://web.stanford.edu/class/ee380/Abstracts/151118-slides.pdf
41
(*) http://web.stanford.edu/class/ee380/Abstracts/151118-slides.pdf
42
(*) http://web.stanford.edu/class/ee380/Abstracts/151118-slides.pdf
43
C SymEnc(k, payload) (C, k) = F(pk) (pk, sk) k = G(C, sk) Corruption of sk allows to compute k
44
(https://mailarchive.ietf.org/arch/msg/tls/OZwGgVhySbVhU36BMX1elQ9x0GE)
C SymEnc(k, payload) (C, k) = F(pk) (pk, sk) k = G(C, sk) Corruption of sk allows to compute k
45
46
(Günther, Hale, Jager, Lauer; EUROCRYPT 2017)
k = Decsk(C)
47
C = Encpk(k) Enc(k, data)
(Günther, Hale, Jager, Lauer; EUROCRYPT 2017)
k = Decsk(C) sk\C = Puncture(sk, C) Delete sk
48
C = Encpk(k) Enc(k, data)
(Günther, Hale, Jager, Lauer; EUROCRYPT 2017)
k = Decsk(C) sk\C = Puncture(sk, C) Delete sk
49
C = Encpk(k) Enc(k, data)
k = Decsk(C) sk\C = Puncture(sk, C) Delete sk
50
C = Encpk(k) Enc(k, data)
(Günther, Hale, Jager, Lauer; EUROCRYPT 2017)
k = Decsk(C) sk\C = Puncture(sk, C) Delete sk
51
C = Encpk(k) Enc(k, data)
(Günther, Hale, Jager, Lauer; EUROCRYPT 2017)
(Günther, Hale, Jager, Lauer; EUROCRYPT 2017)
52
53
(Günther, Hale, Jager, Lauer; EUROCRYPT 2017)
54
(Günther, Hale, Jager, Lauer; EUROCRYPT 2017)
55
(Günther, Hale, Jager, Lauer; EUROCRYPT 2017)
skε sk0 sk1 sk000 sk001 sk010 sk011
sk
0000
sk
0001
sk
0010
sk
0011
sk
0100
sk
0110
sk
0111
sk
1000
sk
1001
sk
1010
sk
1011
sk
1100
sk
1101
sk
1110
sk
1111
sk100 sk101 sk110 sk111 sk00 sk01 sk10 sk11
56
sk
0101
pk
skε sk0 sk1 sk000 sk001 sk010 sk011
sk
0000
sk
0001
sk
0010
sk
0011
sk
0100
sk
0110
sk
0111
sk
1000
sk
1001
sk
1010
sk
1011
sk
1100
sk
1101
sk
1110
sk
1111
sk100 sk101 sk110 sk111 sk00 sk01 sk10 sk11
57
sk
0101
pk
(Inspired by constrained PRFs [BW13, BGI13, KPTZ13])
skε sk0 sk1 sk000 sk001 sk010 sk011
sk
0000
sk
0001
sk
0010
sk
0011
sk
0100
sk
0110
sk
0111
sk
1000
sk
1001
sk
1010
sk
1011
sk
1100
sk
1101
sk
1110
sk
1111
sk100 sk101 sk110 sk111 sk00 sk01 sk10 sk11
58
sk
0101
pk
(Inspired by constrained PRFs [BW13, BGI13, KPTZ13])
skε sk0 sk1 sk000 sk001 sk010 sk011
sk
0000
sk
0001
sk
0010
sk
0011
sk
0100
sk
0110
sk
0111
sk
1000
sk
1001
sk
1010
sk
1011
sk
1100
sk
1101
sk
1110
sk
1111
sk100 sk101 sk110 sk111 sk00 sk01 sk10 sk11
59
sk
0101
pk
(Inspired by constrained PRFs [BW13, BGI13, KPTZ13])
skε sk0 sk1 sk000 sk001 sk010 sk011
sk
0000
sk
0001
sk
0010
sk
0011
sk
0100
sk
0110
sk
0111
sk
1000
sk
1001
sk
1010
sk
1011
sk
1100
sk
1101
sk
1110
sk
1111
sk100 sk101 sk110 sk111 sk00 sk01 sk10 sk11
60
sk
0101
pk
(Inspired by constrained PRFs [BW13, BGI13, KPTZ13])
skε sk0 sk1 sk000 sk001 sk010 sk011
sk
0000
sk
0001
sk
0010
sk
0011
sk
0100
sk
0101
sk
0110
sk
0111
sk
1000
sk
1001
sk
1010
sk
1011
sk
1100
sk
1101
sk
1110
sk
1111
sk100 sk101 sk110 sk111 sk00 sk01 sk10 sk11
61
pk
(Inspired by constrained PRFs [BW13, BGI13, KPTZ13])
skε sk0 sk1 sk000 sk001 sk010 sk011
sk
0000
sk
0001
sk
0010
sk
0011
sk
0100
sk
0101
sk
0110
sk
0111
sk
1000
sk
1001
sk
1010
sk
1011
sk
1100
sk
1101
sk
1110
sk
1111
sk100 sk101 sk110 sk111 sk00 sk01 sk10 sk11
62
pk
skε sk0 sk1 sk000 sk001 sk010 sk011
sk
0000
sk
0001
sk
0010
sk
0011
sk
0100
sk
0101
sk
0110
sk
0111
sk
1000
sk
1001
sk
1010
sk
1011
sk
1100
sk
1101
sk
1110
sk
1111
sk100 sk101 sk110 sk111 sk00 sk01 sk10 sk11
63
pk
skε sk0 sk1 sk000 sk001 sk010 sk011
sk
0000
sk
0001
sk
0010
sk
0011
sk
0100
sk
0101
sk
0110
sk
0111
sk
1000
sk
1001
sk
1010
sk
1011
sk
1100
sk
1101
sk
1110
sk
1111
sk100 sk101 sk110 sk111 sk00 sk01 sk10 sk11
64
pk
65
66
skε sk0 sk1 sk000 sk001 sk010 sk011
sk
0000
sk
0001
sk
0010
sk
0011
sk
0100
sk
0101
sk
0110
sk
0111
sk
1000
sk
1001
sk
1010
sk
1011
sk
1100
sk
1101
sk
1110
sk
1111
sk100 sk101 sk110 sk111 sk00 sk01 sk10 sk11 4 Time slots
67
pk
skε sk0 sk1 sk000 sk001 sk010 sk011
sk
0000
sk
0001
sk
0010
sk
0011
sk
0100
sk
0101
sk
0110
sk
0111
sk
1000
sk
1001
sk
1010
sk
1011
sk
1100
sk
1101
sk
1110
sk
1111
sk100 sk101 sk110 sk111 sk00=t00 sk01 sk10 sk11 Puncture here at “time 1” 4 Time slots
68
Following [CHK03]
pk
skε sk0 sk1 sk000 sk001 sk010 sk011
sk
0000
sk
0001
sk
0010
sk
0011
sk
0100
sk
0101
sk
0110
sk
0111
sk
1000
sk
1001
sk
1010
sk
1011
sk
1100
sk
1101
sk
1110
sk
1111
sk100 sk101 sk110 sk111 sk00=t00 sk01 sk10 sk11 Puncture here at “time 2” 4 Time slots
69
Following [CHK03]
pk
skε sk0 sk1 sk000 sk001 sk010 sk011
sk
0000
sk
0001
sk
0010
sk
0011
sk
0100
sk
0101
sk
0110
sk
0111
sk
1000
sk
1001
sk
1010
sk
1011
sk
1100
sk
1101
sk
1110
sk
1111
sk100 sk101 sk110 sk111 sk00=t00 sk01 sk10 sk11 Puncture here at “time 2” 4 Time slots
70
Following [CHK03]
pk
71
72
(Derler, Jager, Slamanig, Striecks; EUROCRYPT 2018)
73 pk1 pk2 pk3 … pkm … … … … … … … … … sk1 sk2 sk3 … skm … … … … … … … … …
Secret key = Public key =
(Derler, Jager, Slamanig, Striecks; EUROCRYPT 2018)
74 pk1 pk2 pk3 … pkm … … … … … … … … … sk1 sk2 sk3 … skm … … … … … … … … …
Secret key = Public key = Can be compressed to a single pk using e.g. IBE
75 pk1 pk2 pk3 … pkm … … … … … … … … … sk1 sk2 sk3 … skm … … … … … … … … …
(Derler, Jager, Slamanig, Striecks; EUROCRYPT 2018)
Ciphertext C
Secret key = Public key =
76 pk1 pk2 pk3 … pkm … … … … … … … … … sk1 sk3 … … … … … … … … …
(Derler, Jager, Slamanig, Striecks; EUROCRYPT 2018)
Ciphertext C
Secret key = Public key =
77 pk1 pk2 pk3 … pkm … … … … … … … … … sk1 sk3 … … … … … … … … …
(Derler, Jager, Slamanig, Striecks; EUROCRYPT 2018)
Ciphertext C
Secret key = Public key =
78 pk1 pk2 pk3 … pkm … … … … … … … … … sk1 sk3 … … … … … … … … …
(Derler, Jager, Slamanig, Striecks; EUROCRYPT 2018)
Ciphertext C Ciphertext CB
Secret key = Public key =
79
80
81
82
83
Server Client (pk,sk) Tag Key T1 k1 T2 k2 … …
84
Server Client Initial protocol session (not 0-RTT) Store: (k, T) T (pk,sk) Tag Key T1 k1 T2 k2 … …
85
Server Client Initial protocol session (not 0-RTT) Store: (k, T) T, SymEnc(k, 0-RTT payload) kßDec(tk,T) T (pk,sk) Tag Key T1 k1 T2 k2 … …
86
Server Client Initial protocol session (not 0-RTT) Store: (k, T) T, SymEnc(k, 0-RTT payload), ga kßDec(tk,T) gb, SymEnc(gab, payload) T (pk,sk) Tag Key T1 k1 T2 k2 … …
87
Server Client Initial protocol session (not 0-RTT) Store: (k, T) T, SymEnc(k, 0-RTT payload), ga kßDec(tk,T)
gb, SymEnc(gab, payload) T (pk,sk) Tag Key T1 k1 T2 k2 … …
88
Server Client Initial protocol session (not 0-RTT) Store: (k, T) T, SymEnc(k, 0-RTT payload), ga kßDec(tk,T)
gb, SymEnc(gab, payload) T (pk,sk) Tag Key T1 k1 T2 k2 … …
89
Server Client Initial protocol session (not 0-RTT) Store: (k, T) T = Enc(tk, k) (pk,sk) Token key tk
90
Server Client Initial protocol session (not 0-RTT) Store: (k, T) T, SymEnc(k, 0-RTT payload), ga kßDec(tk,T) gb, SymEnc(gab, payload) T = Enc(tk, k) (pk,sk) Token key tk
91
Server Client Initial protocol session (not 0-RTT) Store: (k, T) T, SymEnc(k, 0-RTT payload), ga kßDec(tk,T)
gb, SymEnc(gab, payload) T = Enc(tk, k) (pk,sk) Token key tk
92
Server Client Initial protocol session (not 0-RTT) Store: (k, T) T, SymEnc(k, 0-RTT payload), ga kßDec(tk,T) gb, SymEnc(gab, payload) T = Enc(tk, k) (pk,sk) Ticket key tk tk\C = Puncture(sk, C) Delete tk
93
Server Client Initial protocol session (not 0-RTT) Store: (k, T) T, SymEnc(k, 0-RTT payload), ga kßDec(tk,T) gb, SymEnc(gab, payload) T = Enc(tk, k) (pk,sk) Ticket key tk tk\C = Puncture(sk, C) Delete tk
94
95
96