MACs, Authenticated Encryption, and PRNGs
CS 161 Spring 2022 - Lecture 9
Computer Science 161
Nicholas Weaver
Message Authentication Codes (MACs)
2
Textbook Chapter 8.1–8.3 & 8.5–8.6
Computer Science 161
Nicholas Weaver
Cryptography Roadmap
3
| Symmetric-key | Asymmetric-key |
Confidentiality |
|
|
Integrity,�Authentication |
|
|
Computer Science 161
Nicholas Weaver
How to Provide Integrity
4
Computer Science 161
Nicholas Weaver
MACs: Usage
5
Message
Key
MAC
Message
Key
Verify
Message
Alice
Bob
Insecure Channel
T
Computer Science 161
Nicholas Weaver
MACs: Definition
6
Computer Science 161
Nicholas Weaver
Defining Integrity: EU-CPA
7
Computer Science 161
Nicholas Weaver
Defining Integrity: EU-CPA
8
M
MAC(K, M)
(repeat)
Alice (challenger)
Mallory (adversary)
Output (M', T')
Computer Science 161
Nicholas Weaver
Example: NMAC
9
Computer Science 161
Nicholas Weaver
Example: HMAC
10
Computer Science 161
Nicholas Weaver
Example: HMAC
11
Computer Science 161
Nicholas Weaver
HMAC Properties
12
Computer Science 161
Nicholas Weaver
Do MACs provide integrity?
13
Computer Science 161
Nicholas Weaver
Authenticated Encryption
14
Textbook Chapter 8.7 & 8.8
Computer Science 161
Nicholas Weaver
Cryptography Roadmap
15
| Symmetric-key | Asymmetric-key |
Confidentiality |
|
|
Integrity,�Authentication |
|
|
Computer Science 161
Nicholas Weaver
Authenticated Encryption: Definition
16
Computer Science 161
Nicholas Weaver
Combining Schemes: Let’s design it together
17
Computer Science 161
Nicholas Weaver
MAC-then-Encrypt or Encrypt-then-MAC?
18
Computer Science 161
Nicholas Weaver
Key Reuse
19
Computer Science 161
Nicholas Weaver
Key Reuse
20
Computer Science 161
Nicholas Weaver
TLS 1.0 “Lucky 13” Attack
21
Computer Science 161
Nicholas Weaver
AEAD Encryption
22
Computer Science 161
Nicholas Weaver
AEAD Example: Galois Counter Mode (GCM)
23
Computer Science 161
Nicholas Weaver
AEAD Example: Galois Counter Mode (GCM)
24
Computer Science 161
Nicholas Weaver
Hashes: Summary
25
Computer Science 161
Nicholas Weaver
MACs: Summary
26
Computer Science 161
Nicholas Weaver
Authenticated Encryption: Summary
27
Computer Science 161
Nicholas Weaver
Next: PRNGs
28
Computer Science 161
Nicholas Weaver
Pseudorandom Number Generators (PRNGs)
29
Textbook Chapter 9
Computer Science 161
Nicholas Weaver
Cryptography Roadmap
30
| Symmetric-key | Asymmetric-key |
Confidentiality |
|
|
Integrity,�Authentication |
|
|
Computer Science 161
Nicholas Weaver
Randomness
31
Computer Science 161
Nicholas Weaver
Entropy
32
Computer Science 161
Nicholas Weaver
Breaking Bitcoin Wallets
33
Computer Science 161
Nicholas Weaver
True Randomness
34
Exotic entropy source: Cloudflare has a wall of lava lamps that are recorded by an HD video camera that views the lamps through a rotating prism
Computer Science 161
Nicholas Weaver
Pseudorandom Number Generators (PRNGs)
35
Computer Science 161
Nicholas Weaver
PRNG: Definition
36
Computer Science 161
Nicholas Weaver
PRNG: Security
37
Computer Science 161
Nicholas Weaver
PRNG: Rollback Resistance
Computer Science 161
Nicholas Weaver
Breaking Slot Machines
39
Computer Science 161
Nicholas Weaver
Insecure PRNGs: OpenSSL PRNG bug
40
Computer Science 161
Nicholas Weaver
CTR-DRBG
41
Randomness,
PRNG output
Computer Science 161
Nicholas Weaver
HMAC-DRBG
42
Computer Science 161
Nicholas Weaver
HMAC-DRBG
Seed(s):
K = 0
V = 0
K = HMAC(K, V || 0x00 || s)
V = HMAC(K, V)
K = HMAC(K, V || 0x01 || s)
V = HMAC(K, V)
Initialize internal state
Update internal state with provided entropy
Computer Science 161
Nicholas Weaver
HMAC-DRBG
Reseed(s):
K = HMAC(K, V || 0x00 || s)
V = HMAC(K, V)
K = HMAC(K, V || 0x01 || s)
V = HMAC(K, V)
Update internal state with provided entropy
Computer Science 161
Nicholas Weaver
HMAC-DRBG
Generate(n):
output = ''
while len(output) < n do
V = HMAC(K, V)
output = output || V
end while�
K = HMAC(K, V || 0x00)
V = HMAC(K, V)
return output[:n]
Call HMAC repeatedly to generate random-looking output
Update internal state with no extra entropy
Computer Science 161
Nicholas Weaver
HMAC-DRBG: Security
Computer Science 161
Nicholas Weaver
Insecure PRNGs: CVE-2019-16303
47
Computer Science 161
Nicholas Weaver
Insecure PRNGs: Rust Rand_Core
48
Computer Science 161
Nicholas Weaver
Application: Universally Unique Identifiers (UUIDs)
49
Computer Science 161
Nicholas Weaver
PRNGs: Summary
50
Computer Science 161
Nicholas Weaver
Stream Ciphers
51
Textbook Chapter 9.5
Computer Science 161
Nicholas Weaver
Stream Ciphers
52
Computer Science 161
Nicholas Weaver
Stream Ciphers
53
⊕
Generate(n)
Seed(k)
Seed(k)
Generate(n)
⊕
Plaintext
Ciphertext
Plaintext
Alice
Bob
Computer Science 161
Nicholas Weaver
Stream Ciphers: Encrypting Multiple Messages
54
⊕
Generate(n)
Seed(k)
Alice
Bob
Seed(k)
Generate(n)
⊕
Plaintext
Ciphertext
Plaintext
Computer Science 161
Nicholas Weaver
Stream Ciphers: Encrypting Multiple Messages
55
⊕
Generate(n)
Seed(k | IV)
Alice
Bob
Seed(k | IV)
Generate(n)
⊕
Plaintext
Ciphertext
Plaintext
IV
IV
Computer Science 161
Nicholas Weaver
Application of PRNG: Stream ciphers
56
Computer Science 161
Nicholas Weaver
Stream Ciphers: Security
57
Computer Science 161
Nicholas Weaver
Stream Ciphers: Encryption Efficiency
58
Computer Science 161
Nicholas Weaver
Stream Ciphers: Decryption Efficiency
59
Computer Science 161
Nicholas Weaver
Next: Diffie-Hellman Key Exchange
60
Computer Science 161
Nicholas Weaver
Diffie-Hellman Key Exchange
61
Textbook Chapter 10
Computer Science 161
Nicholas Weaver
Cryptography Roadmap
62
| Symmetric-key | Asymmetric-key |
Confidentiality |
|
|
Integrity,�Authentication |
|
|
Computer Science 161
Nicholas Weaver
Secure Color Sharing
Computer Science 161
Nicholas Weaver
Discrete Log Problem and Diffie-Hellman Problem
64
Computer Science 161
Nicholas Weaver
Diffie-Hellman Key Exchange
65
Alice
Mallory
Bob
Generate a
Calculate ga mod p
Receive gb mod p
Calculate (gb)a mod p
Generate b
Calculate gb mod p
Receive ga mod p
Calculate (ga)b mod p
ga
gb
a, ga, gb ⇒ gab
b, ga, gb ⇒ gab
ga, gb ⇒ gab
Eve
Public: g, p
Shared symmetric key is gab
Secret key
Public key
Computer Science 161
Nicholas Weaver
Ephemerality of Diffie-Hellman
66
Computer Science 161
Nicholas Weaver