Slides 95 Tls 2
Slides 95 Tls 2
3
draft-ietf-tls-tls13-12
Eric Rescorla
Mozilla
[email protected]
IETF 95 TLS 1
Overview
IETF 95 TLS 2
Changes since draft-10
IETF 95 TLS 3
Restructuring Authentication
IETF 95 TLS 4
TLS 1.3 Authentication Block
• Finished =
HMAC(finished_key, Handshake Context + Certificate + CertVerify)
IETF 95 TLS 5
Eye Chart
+----------------+-----------------------------------------+--------+
| Mode | Handshake Context | Base |
| | | Key |
+----------------+-----------------------------------------+--------+
| 0-RTT | ClientHello + ServerConfiguration + | xSS |
| | Server Certificate + CertificateRequest | |
| | (where ServerConfiguration, etc. are | |
| | from the previous handshake) | |
| | | |
| 1-RTT (Server) | ClientHello ... ServerConfiguration | master |
| | | secret |
| | | |
| 1-RTT (Client) | ClientHello ... ServerFinished | master |
| | | secret |
| | | |
| Post-Handshake | ClientHello ... ClientFinished + | master |
| | CertificateRequest | secret |
+----------------+-----------------------------------------+--------+
IETF 95 TLS 6
Restructure 0-RTT Record Structure
IETF 95 TLS 7
Revised Signature Algorithm Negotiation (I)
(davidben)
• TLS 1.2:
struct {
HashAlgorithm hash;
SignatureAlgorithm signature;
} SignatureAndHashAlgorithm;
IETF 95 TLS 8
Revised Signature Algorithm Negotiation (II)
enum {
// RSASSA-PKCS-v1_5 algorithms.
rsa_pkcs1_sha1 (0x0201),
rsa_pkcs1_sha256 (0x0401),
rsa_pkcs1_sha384 (0x0501),
rsa_pkcs1_sha512 (0x0601),
...
} SignatureScheme;
IETF 95 TLS 9
Define Exporters
IETF 95 TLS 10
Anti-Downgrade Mechanism I (Green/Bhargavan)
• TLS 1.2 and below downgrade defense was tied to the Finished
message
• TLS 1.3 downgrade is tied to both Finished and server
CertificateVerify
– So TLS 1.3 resists downgrade even when the key exchange is
weak
– ... but what about downgrade to TLS 1.2 or 1.1
IETF 95 TLS 11
Anti-Downgrade Mechanism II (Green/Bhargavan)
IETF 95 TLS 12
Mailing List Recap: 0-RTT Client Authentication
IETF 95 TLS 13
(EC)DHE-based 0-RTT
IETF 95 TLS 14
Objection: What about out-of-band priming?
IETF 95 TLS 15
Objection: Security impact of client-side storage
IETF 95 TLS 16
Objection: PFS
IETF 95 TLS 17
Objection: WebRTC
IETF 95 TLS 18
Objection: Server Proof of Private Key
• The DHE 0-RTT mode forces the server to re-sign every time
– The point of PSK is to avoid the server doing that
• This creates a tradeoff between 0-RTT and continuing proof of
server key
• Solution: Allow 0-RTT PSK to be used with signed (EC)DHE
exchange∗
∗ Details TBD.
IETF 95 TLS 19
Proposal: Remove 0-RTT DHE-based mode
IETF 95 TLS 20
NewSessionTicket Format (Bhargavan)
uint32 ticket_lifetime;
opaque ticket<0..2^16-1>;
CipherSuite cipher_suites<2..2^16-2>;
EarlyDataType early_data_type
} NewSessionTicket;
IETF 95 TLS 21
0-RTT PSK Extensions I
IETF 95 TLS 22
0-RTT PSK Extensions II: Where do they go?
IETF 95 TLS 23
0-RTT PSK Extensions III: Semantics
IETF 95 TLS 24
Rejection of 0-RTT: HelloRetryRequest (Bhargavan)
IETF 95 TLS 25
Rejection of 0-RTT: Finding the next handshake
block
IETF 95 TLS 26
0-RTT Exporters
• Construction needed...
IETF 95 TLS 27
End of Day 1
IETF 95 TLS 28
Key Separation: A Layman’s View
IETF 95 TLS 29
TLS Key Separation Issues
• TLS 1.2 used the same keys to encrypt handshake and application
data
– Specifically, Finished message
– This can still be proven secure but its far more difficult
• TLS 1.3 generally has different handshake and application keys
• Exceptional cases
– NewSessionTicket
– Post-handshake authentication
– KeyUpdate
• Also, 0.5RTT vs. 1RTT data
IETF 95 TLS 30
What is 0.5 RTT Data?
Client Server
ClientHello [Random, g c ]
/
ServerHello [Random, g s ]...Finished
o
Application data (”0.5RTT”)
o
Finished /
Application data (”1RTT”)
o /
IETF 95 TLS 31
With client auth?
Client Server
ClientHello [Random, g c ]
/
ServerHello [Random, g s ]...Finished
o
Application data (to anonymous user)
o
Certificate...Finished /
Application data (to authenticated user)
o /
IETF 95 TLS 32
Non-digression: Retroactive authentication
IETF 95 TLS 33
One more thing about 0.5 RTT Data
IETF 95 TLS 34
Possible Resolutions
1. No change
2. Warn against/forbid 0.5 RTT data when client auth is used
• Possibly relax this if we get analysis that it is safe
3. Include client’s second flight in 1RTT application keys
• So you can’t do 0.5 RTT with client auth
4. Change keys between 0.5RTT and 1RTT
• Proposal: #2.
IETF 95 TLS 35
Key Separation: Post-handshake Messages
IETF 95 TLS 36
Demuxing Options
IETF 95 TLS 37
What would be encrypted under handshake keys?
NewSessionTicket Yes
Client Authentication Yes
KeyUpdate ???
Alerts No
IETF 95 TLS 38
Which key?
IETF 95 TLS 39
IETF 95 TLS 40
Key Context (yes, yes, more context)
IETF 95 TLS 41
What do we mean by context?
IETF 95 TLS 42
Explicit Binding
struct {
opaque psk_identity<0..2^16-1>;
opaque context<0..255>;
} PreSharedKeyInfo;
struct {
select (Role) {
case client:
PreSharedKeyInfo keys<2..2^16-1>;
case server:
uint16 index; // The selected index
}
} PreSharedKeyExtension;
IETF 95 TLS 43
Implicit Binding
IETF 95 TLS 44
0
|
SS -> HKDF
Simplified Key Schedule | \
| \
v v
X1 0-RTT Traffic Keys *
|
|
• The current key schedule is ag-
v
nostic about the order when ES -> HKDF [ClientHello, ServerHello]
| \
we get SS and ES
| \
– But for all known modes we v v
X2 1-RTT Traffic Keys *
get SS (if at all) then ES (if |
at all) |
v
• This suggests a simpler (linear) 0 -> HKDF [ClientHello...ClientFinished]
|
key schedule |
v
RMS, EMS
IETF 95 TLS 45
Issue #215: Let servers send known groups
IETF 95 TLS 46
Issue #426: Receive Generation field in KeyUpdate
IETF 95 TLS 47
IETF 95 TLS 48
Implementation Status
IETF 95 TLS 49