Trusted Platform Modules (TPMs) are small, inexpensive chips which provide a limited set of security functions. They are most commonly found as a motherboard component on laptops and desktops aimed at the corporate or government markets, but can also be found on many consumer-grade machines and servers, or purchased as independent components. Their role is to serve as a Root of Trust - a highly trusted component from which we can bootstrap trust in other parts of a system. TPMs are most useful for three kinds of tasks: remotely identifying a machine, or machine authentication; providing hardware protection of secrets, or data protection; and providing verifiable evidence about a machine's state, or attestation. This book describes the primary uses for TPMs, and practical considerations such as when TPMs can and should be used, when they shouldn't be, what advantages they provide, and how to actually make use of them, with use cases and worked examples of how to implement these use cases on a real system. Topics covered include when to use a TPM; TPM concepts and functionality; programming introduction; provisioning: getting the TPM ready to use; first steps: TPM keys; machine authentication; data protection; attestation; other TPM features; software and specifications; and troubleshooting. Appendices contain basic cryptographic concepts; command equivalence and requirements charts; and complete code samples.