TPM-Fail
TPM meets Timing and Lattice Attacks
Daniel Moghimi
Berk Sunar Thomas Eisenbarth Nadia Heninger
01/08/2020 Real World Crypto
TPM-Fail TPM meets Timing and Lattice Attacks Daniel Moghimi Berk - - PowerPoint PPT Presentation
TPM-Fail TPM meets Timing and Lattice Attacks Daniel Moghimi Berk Sunar Thomas Eisenbarth Nadia Heninger 01/08/2020 Real World Crypto TPM 2 Trusted Platform Module (TPM) Software is Hackers? insecure. Bad Guys? Heartbleed? Rootkits?
TPM meets Timing and Lattice Attacks
Daniel Moghimi
Berk Sunar Thomas Eisenbarth Nadia Heninger
01/08/2020 Real World Crypto
TPM
2
Software is insecure. Heartbleed? Computers are just Evil?! Hackers? Bad Guys?
3
Rootkits? Ransomware?
Software is insecure. Heartbleed? Computers are just Evil?! Hackers? Bad Guys? Hardware-based Root of Trust?!
4
Rootkits? Ransomware?
5
Trusted Computing Base
6
7
.org/membership/certification/
.org/membership/certification/ tpm-certified-products/
8
9
10
11
Management Engine (CSME)
driver
12 CPU PCH CSME
Management Engine (CSME)
13 CPU PCH CSME
Histogram
14 CPU PCH CSME
15
Length Leakage
16
17
18
𝑗, 𝑡𝑗) and timing samples 𝑢𝑗.
𝑗, 𝑡𝑗) with a known bias.
with biased nonce 𝑙𝑗.
19
20
−1𝑠 𝑗𝑒 − 𝑡𝑗 −1𝑨 ≡ 0 𝑛𝑝𝑒 𝑜
21
−1𝑠 𝑗𝑒 − 𝑡𝑗 −1𝑨 ≡ 0 𝑛𝑝𝑒 𝑜
−1𝑠 𝑗, 𝐶𝑗 = −𝑡𝑗 −1𝑨 → ki + Aid + Bi = 0
22
−1𝑠 𝑗𝑒 − 𝑡𝑗 −1𝑨 ≡ 0 𝑛𝑝𝑒 𝑜
−1𝑠 𝑗, 𝐶𝑗 = −𝑡𝑗 −1𝑨 → ki + Aid + Bi = 0
23
[8] Dan Boneh and Ramarathnam Venkatesan. Hardness of Computing the Most Significant Bits of Secret Keys in Diffie-Hellman and Related Schemes
−1𝑠 𝑗𝑒 − 𝑡𝑗 −1𝑨 ≡ 0 𝑛𝑝𝑒 𝑜
−1𝑠 𝑗, 𝐶𝑗 = −𝑡𝑗 −1𝑨 → ki + Aid + Bi = 0
𝑜 𝑜 ⋱ 𝑜 𝐵1 𝐵2 … 𝐵𝑢
𝑌 𝑜
𝐶1 𝐶2 … 𝐶𝑢 𝑌
LLL/BKZ 24
25
26
VPN Client VPN Server TPM Device
27
𝐽𝐿𝐹_𝐽𝑂𝐽𝑈[ 𝑞𝑠𝑝𝑞𝑝𝑡𝑏𝑚, 𝑦, 𝑜𝐽, … ]
VPN Client VPN Server TPM Device
28
𝐽𝐿𝐹_𝐽𝑂𝐽𝑈[ 𝑞𝑠𝑝𝑞𝑝𝑡𝑏𝑚, 𝑦, 𝑜𝐽, … ]
VPN Client VPN Server TPM Device
𝐽𝐿𝐹_𝐽𝑂𝐽𝑈
𝑠𝑓𝑡𝑞𝑝𝑜𝑡𝑓[ 𝑞𝑠𝑝𝑞𝑝𝑡𝑏𝑚, 𝑦, 𝑜𝑆, … ]
𝑡𝑡ℎ𝑏𝑠𝑓𝑒−𝑡𝑓𝑑𝑠𝑓𝑢 = 𝑄𝑆𝐺ℎ(𝑦𝑧) 29
𝐽𝐿𝐹_𝐽𝑂𝐽𝑈[ 𝑞𝑠𝑝𝑞𝑝𝑡𝑏𝑚, 𝑦, 𝑜𝐽, … ]
VPN Client VPN Server TPM Device
𝐽𝐿𝐹_𝐽𝑂𝐽𝑈
𝑠𝑓𝑡𝑞𝑝𝑜𝑡𝑓[ 𝑞𝑠𝑝𝑞𝑝𝑡𝑏𝑚, 𝑦, 𝑜𝑆, … ]
𝑡𝑡ℎ𝑏𝑠𝑓𝑒−𝑡𝑓𝑑𝑠𝑓𝑢 = 𝑄𝑆𝐺ℎ(𝑦𝑧) 𝐽𝐿𝐹_𝐵𝑣𝑢ℎ[ 𝑇𝑗𝑜𝑡𝑙𝐽, (𝑜𝑆, … ) ] 30
𝐽𝐿𝐹_𝐽𝑂𝐽𝑈[ 𝑞𝑠𝑝𝑞𝑝𝑡𝑏𝑚, 𝑦, 𝑜𝐽, … ]
VPN Client VPN Server TPM Device
𝐽𝐿𝐹_𝐽𝑂𝐽𝑈
𝑠𝑓𝑡𝑞𝑝𝑜𝑡𝑓[ 𝑞𝑠𝑝𝑞𝑝𝑡𝑏𝑚, 𝑦, 𝑜𝑆, … ]
𝑡𝑡ℎ𝑏𝑠𝑓𝑒−𝑡𝑓𝑑𝑠𝑓𝑢 = 𝑄𝑆𝐺ℎ(𝑦𝑧) 𝐽𝐿𝐹_𝐵𝑣𝑢ℎ[ 𝑇𝑗𝑜𝑡𝑙𝐽, (𝑜𝑆, … ) ] 𝐽𝐿𝐹_𝐵𝑣𝑢ℎ𝑠𝑓𝑡𝑞𝑝𝑜𝑡𝑓[ 𝑇𝑗𝑜𝑡𝑙𝑆, (𝑜𝑆, … ) ] 31
𝐽𝐿𝐹_𝐽𝑂𝐽𝑈[ 𝑞𝑠𝑝𝑞𝑝𝑡𝑏𝑚, 𝑦, 𝑜𝐽, … ]
VPN Client VPN Server TPM Device
𝐽𝐿𝐹_𝐽𝑂𝐽𝑈
𝑠𝑓𝑡𝑞𝑝𝑜𝑡𝑓[ 𝑞𝑠𝑝𝑞𝑝𝑡𝑏𝑚, 𝑦, 𝑜𝑆, … ]
𝑡𝑡ℎ𝑏𝑠𝑓𝑒−𝑡𝑓𝑑𝑠𝑓𝑢 = 𝑄𝑆𝐺ℎ(𝑦𝑧) 𝐽𝐿𝐹_𝐵𝑣𝑢ℎ[ 𝑇𝑗𝑜𝑡𝑙𝐽, (𝑜𝑆, … ) ] 32
𝐽𝐿𝐹_𝐽𝑂𝐽𝑈[ 𝑞𝑠𝑝𝑞𝑝𝑡𝑏𝑚, 𝑦, 𝑜𝐽, … ]
VPN Client VPN Server TPM Device
𝐽𝐿𝐹_𝐽𝑂𝐽𝑈
𝑠𝑓𝑡𝑞𝑝𝑜𝑡𝑓[ 𝑞𝑠𝑝𝑞𝑝𝑡𝑏𝑚, 𝑦, 𝑜𝑆, … ]
𝑡𝑡ℎ𝑏𝑠𝑓𝑒−𝑡𝑓𝑑𝑠𝑓𝑢 = 𝑄𝑆𝐺ℎ(𝑦𝑧) 𝐽𝐿𝐹_𝐵𝑣𝑢ℎ[ 𝑇𝑗𝑜𝑡𝑙𝐽, (𝑜𝑆, … ) ] 𝐽𝐿𝐹_𝐵𝑣𝑢ℎ𝑠𝑓𝑡𝑞𝑝𝑜𝑡𝑓[ 𝑇𝑗𝑜𝑡𝑙𝑆, (𝑜𝑆, … ) ] 33
34
35
System Adversary User Adversary Remote Synthetical Remote StrongSwan VPN
36
37
38
https://tpm.fail/ https://www.usenix.org/conference/us enixsecurity20/presentation/moghimi
TPM-FAIL
39 https://github.com/ VernamLab/TPM-Fail