About the Authors |
|
xxi | |
About the Technical Reviewers |
|
xxiii | |
Acknowledgments |
|
xxv | |
Introduction |
|
xxvii | |
|
Chapter 1 History of the TPM |
|
|
1 | (6) |
|
|
1 | (1) |
|
History of Development of the TPM Specification from 1.1b to 1.2 |
|
|
2 | (1) |
|
How TPM 2.0 Developed from TPM 1.2 |
|
|
3 | (1) |
|
History of TPM 2.0 Specification Development |
|
|
4 | (1) |
|
|
5 | (2) |
|
Chapter 2 Basic Security Concepts |
|
|
7 | (16) |
|
|
8 | (2) |
|
|
8 | (2) |
|
Attacks on the Algorithm Itself |
|
|
10 | (1) |
|
|
10 | (2) |
|
|
12 | (8) |
|
|
12 | (1) |
|
|
13 | (1) |
|
HMAC: Message Authentication Code |
|
|
14 | (1) |
|
KDF: Key Derivation Function |
|
|
14 | (1) |
|
Authentication or Authorization Ticket |
|
|
15 | (1) |
|
|
15 | (2) |
|
|
17 | (1) |
|
|
18 | (2) |
|
|
20 | (2) |
|
|
22 | (1) |
|
Chapter 3 Quick Tutorial on TPM 2.0 |
|
|
23 | (16) |
|
Scenarios for Using TPM 1.2 |
|
|
24 | (5) |
|
|
24 | (2) |
|
|
26 | (1) |
|
|
26 | (1) |
|
|
27 | (1) |
|
|
27 | (1) |
|
Platform Configuration Registers |
|
|
28 | (1) |
|
|
28 | (1) |
|
Scenarios for Using Additional TPM 2.0 Capabilities |
|
|
29 | (8) |
|
Algorithm Agility (New in 2.0) |
|
|
29 | (2) |
|
Enhanced Authorization (New in 2.0) |
|
|
31 | (3) |
|
Quick Key Loading (new in 2.0) |
|
|
34 | (1) |
|
Non-Brittle PCRs (New in 2.0) |
|
|
34 | (1) |
|
Flexible Management (New in 2.0) |
|
|
35 | (1) |
|
Identifying Resources by Name (New in 2.0) |
|
|
36 | (1) |
|
|
37 | (2) |
|
Chapter 4 Existing Applications That Use TPMs |
|
|
39 | (12) |
|
Application Interfaces Used to Talk to TPMs |
|
|
39 | (3) |
|
TPM Administration and WMI |
|
|
42 | (1) |
|
The Platform Crypto Provider |
|
|
42 | (1) |
|
|
42 | (1) |
|
Applications That Use TPMs |
|
|
42 | (3) |
|
Applications That Should Use the TPM but Don't |
|
|
45 | (1) |
|
Building Applications for TPM 1.2 |
|
|
46 | (1) |
|
|
46 | (1) |
|
Wave Systems Embassy Suite |
|
|
47 | (1) |
|
Rocks to Avoid When Developing TPM Applications |
|
|
48 | (1) |
|
|
48 | (1) |
|
IBM File and Folder Encryption |
|
|
49 | (1) |
|
New Manageability Solutions in TPM 2.0 |
|
|
49 | (1) |
|
|
50 | (1) |
|
Chapter 5 Navigating the Specification |
|
|
51 | (20) |
|
TPM 2.0 Library Specification: The Parts |
|
|
52 | (1) |
|
|
53 | (2) |
|
|
53 | (1) |
|
Definitions of the Major Fields of the Command Byte Stream |
|
|
54 | (1) |
|
Definitions of the Major Fields of the Response Byte Stream |
|
|
55 | (1) |
|
Getting Started in Part 3: the Commands |
|
|
55 | (5) |
|
|
60 | (3) |
|
Common Structure Constructs |
|
|
61 | (1) |
|
|
61 | (1) |
|
|
62 | (1) |
|
|
63 | (1) |
|
|
63 | (1) |
|
|
64 | (1) |
|
Commonly Used Sections of the Specification |
|
|
65 | (1) |
|
How to Find Information in the Specification |
|
|
66 | (1) |
|
Strategies for Ramping Up on TPM 2.0 |
|
|
66 | (3) |
|
|
66 | (2) |
|
|
68 | (1) |
|
|
68 | (1) |
|
Other TPM 2.0 Specifications |
|
|
69 | (1) |
|
|
69 | (2) |
|
Chapter 6 Execution Environment |
|
|
71 | (6) |
|
|
71 | (4) |
|
|
71 | (1) |
|
Building the Simulator from Source Code |
|
|
72 | (1) |
|
Setting Up a Binary Version of the Simulator |
|
|
72 | (1) |
|
|
72 | (1) |
|
|
73 | (2) |
|
Setting Up the Software Stack |
|
|
75 | (1) |
|
|
75 | (1) |
|
|
75 | (1) |
|
|
76 | (1) |
|
Chapter 7 TPM Software Stack |
|
|
77 | (20) |
|
The Stack: a High-Level View |
|
|
77 | (2) |
|
|
79 | (6) |
|
|
85 | (9) |
|
Command Context Allocation Functions |
|
|
86 | (2) |
|
Command Preparation Functions |
|
|
88 | (1) |
|
Command Execution Functions |
|
|
89 | (1) |
|
Command Completion Functions |
|
|
90 | (1) |
|
|
91 | (2) |
|
|
93 | (1) |
|
|
94 | (1) |
|
|
95 | (1) |
|
|
95 | (1) |
|
|
96 | (1) |
|
|
96 | (1) |
|
|
97 | (8) |
|
|
97 | (2) |
|
|
97 | (1) |
|
|
98 | (1) |
|
Dictionary Attack Lockout Reset |
|
|
98 | (1) |
|
Platform Configuration Registers (PCRs) |
|
|
98 | (1) |
|
|
99 | (1) |
|
Password Authorization Session |
|
|
99 | (1) |
|
|
99 | (1) |
|
|
99 | (1) |
|
|
100 | (1) |
|
|
100 | (1) |
|
|
101 | (1) |
|
|
102 | (2) |
|
|
104 | (1) |
|
|
105 | (14) |
|
Three Persistent Hierarchies |
|
|
105 | (3) |
|
|
106 | (1) |
|
|
107 | (1) |
|
|
108 | (1) |
|
|
108 | (5) |
|
|
109 | (2) |
|
Other Privacy Considerations |
|
|
111 | (2) |
|
|
113 | (1) |
|
|
113 | (5) |
|
|
114 | (1) |
|
|
114 | (2) |
|
|
116 | (1) |
|
|
117 | (1) |
|
|
117 | (1) |
|
|
118 | (1) |
|
|
119 | (18) |
|
|
119 | (1) |
|
|
120 | (1) |
|
|
120 | (3) |
|
|
123 | (1) |
|
|
123 | (1) |
|
|
124 | (1) |
|
|
125 | (1) |
|
|
125 | (1) |
|
|
125 | (4) |
|
Symmetric and Asymmetric Keys Attributes |
|
|
126 | (1) |
|
|
126 | (2) |
|
|
128 | (1) |
|
Restricted Decryption Key |
|
|
129 | (1) |
|
Context Management vs. Loading |
|
|
129 | (1) |
|
|
130 | (1) |
|
|
130 | (2) |
|
|
132 | (3) |
|
|
135 | (2) |
|
|
137 | (14) |
|
|
138 | (11) |
|
|
141 | (1) |
|
|
141 | (1) |
|
|
142 | (1) |
|
|
143 | (1) |
|
|
144 | (1) |
|
|
145 | (1) |
|
|
146 | (1) |
|
|
147 | (2) |
|
|
149 | (1) |
|
|
149 | (1) |
|
|
150 | (1) |
|
Chapter 12 Platform Configuration Registers |
|
|
151 | (12) |
|
|
151 | (5) |
|
|
153 | (1) |
|
|
153 | (1) |
|
|
154 | (2) |
|
|
156 | (5) |
|
|
158 | (1) |
|
|
159 | (1) |
|
PCR Authorization and Policy |
|
|
160 | (1) |
|
|
160 | (1) |
|
|
161 | (2) |
|
Chapter 13 Authorizations and Sessions |
|
|
163 | (54) |
|
Session-Related Definitions |
|
|
164 | (1) |
|
Password, HMAC, and Policy Sessions: What Are They? |
|
|
165 | (2) |
|
Session and Authorization: Compared and Contrasted |
|
|
167 | (3) |
|
|
170 | (2) |
|
Command and Response Authorization Area Details |
|
|
172 | (4) |
|
Command Authorization Area |
|
|
172 | (2) |
|
Command Authorization Structures |
|
|
174 | (1) |
|
Response Authorization Structures |
|
|
175 | (1) |
|
Password Authorization: The Simplest Authorization |
|
|
176 | (6) |
|
Password Authorization Lifecycle |
|
|
176 | (1) |
|
Creating a Password Authorized Entity |
|
|
177 | (1) |
|
Changing a Password Authorization for an Already Created Entity |
|
|
177 | (1) |
|
Using a Password Authorization |
|
|
178 | (1) |
|
Code Example: Password Session |
|
|
178 | (4) |
|
Starting HMAC and Policy Sessions |
|
|
182 | (7) |
|
TPM2_StartAuthSession Command |
|
|
183 | (2) |
|
Session Key and HMAC Key Details |
|
|
185 | (2) |
|
Guidelines for TPM2_StartAuthSession Handles and Parameters |
|
|
187 | (1) |
|
|
187 | (2) |
|
HMAC and Policy Sessions: Differences |
|
|
189 | (1) |
|
|
190 | (17) |
|
HMAC Authorization Lifecycle |
|
|
190 | (3) |
|
HMAC and Policy Session Code Example |
|
|
193 | (10) |
|
Using an HMAC Session to Send Multiple Commands (Rolling Nonces) |
|
|
203 | (2) |
|
|
205 | (1) |
|
HMAC Session Data Structure |
|
|
206 | (1) |
|
|
207 | (8) |
|
|
207 | (2) |
|
Policy Authorization Time Intervals |
|
|
209 | (1) |
|
Policy Authorization Lifecycle |
|
|
210 | (5) |
|
Combined Authorization Lifecycle |
|
|
215 | (1) |
|
|
216 | (1) |
|
Chapter 14 Extended Authorization (EA) Policies |
|
|
217 | (32) |
|
|
218 | (1) |
|
Why Extended Authorization? |
|
|
218 | (2) |
|
Multiple Varieties of Authentication |
|
|
219 | (1) |
|
Multifactor Authentication |
|
|
219 | (1) |
|
How Extended Authorization Works |
|
|
220 | (2) |
|
|
222 | (11) |
|
Simple Assertion Policies |
|
|
222 | (11) |
|
|
233 | (1) |
|
Multifactor Authentication |
|
|
234 | (3) |
|
Example 1 Smart card and Password |
|
|
234 | (3) |
|
Compound Policies: Using Logical OR in a Policy |
|
|
237 | (4) |
|
|
240 | (1) |
|
Example: A Policy for Work or Home Computers |
|
|
240 | (1) |
|
Considerations in Creating Policies |
|
|
241 | (1) |
|
|
241 | (1) |
|
|
242 | (1) |
|
|
242 | (1) |
|
|
242 | (1) |
|
|
242 | (1) |
|
Using a Policy to Authorize a Command |
|
|
242 | (5) |
|
|
243 | (1) |
|
|
243 | (1) |
|
If the Policy Is Compound |
|
|
244 | (2) |
|
If the Policy Is Flexible (Uses a Wild Card) |
|
|
246 | (1) |
|
|
247 | (1) |
|
|
248 | (1) |
|
Chapter 15 Key Management |
|
|
249 | (14) |
|
|
249 | (3) |
|
|
252 | (1) |
|
Key Trees: Keeping Keys in a Tree with the Same Algorithm Set |
|
|
252 | (1) |
|
|
253 | (2) |
|
|
255 | (1) |
|
|
256 | (1) |
|
|
257 | (1) |
|
|
258 | (3) |
|
Example 1 Simple Key Management |
|
|
258 | (1) |
|
Example 2 An Enterprise IT Organization with Windows TPM 2.0 Enabled Systems |
|
|
259 | (2) |
|
|
261 | (2) |
|
Chapter 16 Auditing TPM Commands |
|
|
263 | (8) |
|
|
263 | (2) |
|
|
265 | (1) |
|
|
265 | (2) |
|
|
265 | (1) |
|
|
266 | (1) |
|
|
267 | (1) |
|
|
268 | (1) |
|
|
268 | (1) |
|
|
269 | (2) |
|
Chapter 17 Decrypt/Encrypt Sessions |
|
|
271 | (18) |
|
What Do Encrypt/Decrypt Sessions Do? |
|
|
271 | (1) |
|
|
271 | (1) |
|
Decrypt/Encrypt Limitations |
|
|
272 | (1) |
|
|
273 | (14) |
|
|
273 | (2) |
|
|
275 | (12) |
|
|
287 | (2) |
|
Chapter 18 Context Management |
|
|
289 | (12) |
|
TAB and the Resource Manager: A High-Level Description |
|
|
289 | (5) |
|
|
290 | (1) |
|
|
291 | (1) |
|
Resource Manager Operations |
|
|
291 | (3) |
|
Management of Objects, Sessions, and Sequences |
|
|
294 | (5) |
|
TPM Context-Management Features |
|
|
294 | (2) |
|
Special Rules Related to Power and Shutdown Events |
|
|
296 | (1) |
|
|
297 | (2) |
|
|
299 | (2) |
|
Chapter 19 Startup, Shutdown, and Provisioning |
|
|
301 | (10) |
|
|
301 | (3) |
|
|
303 | (1) |
|
|
304 | (5) |
|
TPM Manufacturer Provisioning |
|
|
305 | (1) |
|
Platform OEM Provisioning |
|
|
306 | (1) |
|
|
307 | (1) |
|
|
308 | (1) |
|
|
309 | (2) |
|
|
311 | (12) |
|
Low-Level Application Debugging |
|
|
311 | (6) |
|
|
312 | (1) |
|
|
312 | (1) |
|
|
313 | (2) |
|
|
315 | (1) |
|
|
315 | (2) |
|
|
317 | (1) |
|
Debugging High-level Applications |
|
|
317 | (4) |
|
|
318 | (1) |
|
|
318 | (3) |
|
|
321 | (2) |
|
Chapter 21 Solving Bigger Problems with the TPM 2.0 |
|
|
323 | (8) |
|
Remote Provisioning of PCs with IDevIDs Using the EK |
|
|
323 | (4) |
|
|
324 | (1) |
|
|
325 | (2) |
|
|
327 | (1) |
|
|
327 | (1) |
|
|
328 | (1) |
|
Securing a Server's Logon |
|
|
329 | (1) |
|
Locking Firmware in an Embedded System, but Allowing for Upgrades |
|
|
330 | (1) |
|
|
330 | (1) |
|
Chapter 22 Platform Security Technologies That Use TPM 2.0 |
|
|
331 | (18) |
|
|
331 | (2) |
|
|
332 | (1) |
|
Intel® Trusted Execution Technology (Intel® TXT) |
|
|
333 | (8) |
|
|
333 | (6) |
|
How TPM 2.0 Devices Are Used |
|
|
339 | (2) |
|
|
341 | (5) |
|
|
341 | (2) |
|
Implementation of TrustZone |
|
|
343 | (3) |
|
|
346 | (2) |
|
|
347 | (1) |
|
|
348 | (1) |
|
|
348 | (1) |
|
|
348 | (1) |
Index |
|
349 | |