{"id":426012,"date":"2017-09-21T08:27:54","date_gmt":"2017-09-21T15:27:54","guid":{"rendered":"https:\/\/www.microsoft.com\/en-us\/research\/?post_type=msr-project&#038;p=426012"},"modified":"2020-03-13T09:27:25","modified_gmt":"2020-03-13T16:27:25","slug":"the-trusted-platform-module-tpm","status":"publish","type":"msr-project","link":"https:\/\/www.microsoft.com\/en-us\/research\/project\/the-trusted-platform-module-tpm\/","title":{"rendered":"Trusted Platform Module (TPM)"},"content":{"rendered":"<h2>Overview<\/h2>\n<p>Microsoft has led the architecture and adoption of the TPM since its inception.\u00a0 Microsoft invented and contributed the <em>attestation, sealing<\/em> and <em>Platform Configuration Register<\/em> (PCR) features to the original TPM, and contributed to the overall design.<\/p>\n<p>More recently, Microsoft architected and and edited the <a class=\"msr-external-link glyph-append glyph-append-open-in-new-tab glyph-append-xsmall\" href=\"https:\/\/trustedcomputinggroup.org\/tpm-library-specification\/\" target=\"_blank\" rel=\"noopener noreferrer\">TPM2.0 specification<span class=\"sr-only\"> (opens in new tab)<\/span><\/a>. \u00a0Many new concepts and features were introduced with TPM2.0, including crypto-agility, easier management, a more flexible authorization model, and better extensibility. \u00a0TPM2.0 devices are now available from many vendors, and are incorporated into most business class PCs and many servers.\u00a0 TPM2.0 is also making increasing inroads into network equipment, mobile and IoT devices.<\/p>\n<p>The TPM2.0 specification is unique in that it is <em>machine readable<\/em>.\u00a0 Most of the normative behavioral specification is written in a subset of the C programming language, and the TPM programming interface is defined in machine-readable tables.\u00a0 This allows vendors to quickly build high-quality and interoperable TPM implementations.<\/p>\n<p>The TPM is an evolving standard:\u00a0 Individuals, organizations and governments that would like to participate in its growth should join the <a class=\"msr-external-link glyph-append glyph-append-open-in-new-tab glyph-append-xsmall\" href=\"https:\/\/trustedcomputinggroup.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">Trusted Computing Group<span class=\"sr-only\"> (opens in new tab)<\/span><\/a> (TCG.)\u00a0 TCG has many TPM-related standards activities, including specifications that describe how TPMs are <a class=\"msr-external-link glyph-append glyph-append-open-in-new-tab glyph-append-xsmall\" href=\"https:\/\/trustedcomputinggroup.org\/pc-client-specific-platform-firmware-profile-specification\/\" target=\"_blank\" rel=\"noopener noreferrer\">built into platforms<span class=\"sr-only\"> (opens in new tab)<\/span><\/a>, standardized <a class=\"msr-external-link glyph-append glyph-append-open-in-new-tab glyph-append-xsmall\" href=\"https:\/\/trustedcomputinggroup.org\/work-groups\/software-stack\/\" target=\"_blank\" rel=\"noopener noreferrer\">software-stacks<span class=\"sr-only\"> (opens in new tab)<\/span><\/a> for building TPM applications, as well as <a class=\"msr-external-link glyph-append glyph-append-open-in-new-tab glyph-append-xsmall\" rel=\"noopener noreferrer\" target=\"_blank\" href=\"https:\/\/trustedcomputinggroup.org\/tcg-infrastructure-working-group-cmc-profile-aik-certificate-enrollment\">protocol design<span class=\"sr-only\"> (opens in new tab)<\/span><\/a> and <a class=\"msr-external-link glyph-append glyph-append-open-in-new-tab glyph-append-xsmall\" rel=\"noopener noreferrer\" target=\"_blank\" href=\"https:\/\/trustedcomputinggroup.org\/tcg-ek-credential-profile-tpm-family-2-0\/\">digital certificate<span class=\"sr-only\"> (opens in new tab)<\/span><\/a> profiles.<\/p>\n<p>The TPM is both an <a class=\"msr-external-link glyph-append glyph-append-open-in-new-tab glyph-append-xsmall\" href=\"https:\/\/trustedcomputinggroup.org\/tpm-library-specification\/\" target=\"_blank\" rel=\"noopener noreferrer\">industry<span class=\"sr-only\"> (opens in new tab)<\/span><\/a> and <a class=\"msr-external-link glyph-append glyph-append-open-in-new-tab glyph-append-xsmall\" href=\"https:\/\/www.iso.org\/standard\/66510.html\" target=\"_blank\" rel=\"noopener noreferrer\">international standard<span class=\"sr-only\"> (opens in new tab)<\/span><\/a> (ISO\/IEC) specification with <a class=\"msr-external-link glyph-append glyph-append-open-in-new-tab glyph-append-xsmall\" href=\"https:\/\/blogs.microsoft.com\/microsoftsecure\/2015\/06\/29\/governments-recognize-the-importance-of-tpm-2-0-through-iso-adoption\/\" target=\"_blank\" rel=\"noopener noreferrer\">wide international support<span class=\"sr-only\"> (opens in new tab)<\/span><\/a>.<\/p>\n<h2>TPM in a Nutshell<\/h2>\n<p>The TPM is a low-cost, but powerful and flexible, crypto-processor.\u00a0 A TPM does many of the things that a smart-card or hardware security module (HSM) does \u2013 for example, it is able to create, manage and use cryptographic keys, as well as store confidential data.\u00a0 But a TPM is intimately tied into how a computer boots and runs, which means it is far more powerful and useful than a simple \u201csmart-card on the motherboard.\u201d<\/p>\n<p>For example, platforms that incorporate TPMs \u201cmeasure\u201d and log the software that boots on the device.\u00a0 The resulting boot-log can be used to verify that devices are running known-software and are up-to-date using a TPM feature called <em>quoting<\/em> or <em>attestation<\/em>.\u00a0 The boot-log can also be used to protect keys for disk encryption, because the TPM incorporates a feature called <em>sealing <\/em>that can be used to make sure that the encryption key is only disclosed to authorized software, and not to disk-cracking tools.<\/p>\n<p>Other advanced TPM features include a secure clock, monotonic counters, a non-volatile storage facility, and very flexible and secure mechanisms for key management operations like key import and export.<\/p>\n<p>More information on how TPMs work and how that they can be used to solve common security problems can be found in <a class=\"msr-external-link glyph-append glyph-append-open-in-new-tab glyph-append-xsmall\" href=\"http:\/\/www.apress.com\/us\/book\/9781430265832\" target=\"_blank\" rel=\"noopener noreferrer\">A Practical Guide to TPM2.0<span class=\"sr-only\"> (opens in new tab)<\/span><\/a>.<\/p>\n<h2>Microsoft Research TPM Resources<\/h2>\n<p>In addition to continuing to develop and maintain the TPM reference implementation, Microsoft has open-sourced software libraries and solutions that allow TPM-based applications to be built.<\/p>\n<ul>\n<li>A pre-built <a href=\"https:\/\/www.microsoft.com\/en-us\/download\/confirmation.aspx?id=52507\">TPM simulator<\/a><\/li>\n<li>TSS.NET, for programming the TPM in C# (part of <a class=\"msr-external-link glyph-append glyph-append-open-in-new-tab glyph-append-xsmall\" href=\"https:\/\/github.com\/Microsoft\/TSS.MSR\" target=\"_blank\" rel=\"noopener noreferrer\">TSS.MSR<span class=\"sr-only\"> (opens in new tab)<\/span><\/a>)<\/li>\n<li>TSS.C++, for programming a TPM in C++ (part of <a class=\"msr-external-link glyph-append glyph-append-open-in-new-tab glyph-append-xsmall\" href=\"https:\/\/github.com\/Microsoft\/TSS.MSR\" target=\"_blank\" rel=\"noopener noreferrer\">TSS.MSR<span class=\"sr-only\"> (opens in new tab)<\/span><\/a>)<\/li>\n<li>TSS.Java, for programming a TPM in Java (preliminary release \u2013 part of <a class=\"msr-external-link glyph-append glyph-append-open-in-new-tab glyph-append-xsmall\" href=\"https:\/\/github.com\/Microsoft\/TSS.MSR\" target=\"_blank\" rel=\"noopener noreferrer\">TSS.MSR<span class=\"sr-only\"> (opens in new tab)<\/span><\/a>)<\/li>\n<li><a class=\"msr-external-link glyph-append glyph-append-open-in-new-tab glyph-append-xsmall\" href=\"https:\/\/github.com\/ms-iot\/security\/tree\/master\/Urchin\" target=\"_blank\" rel=\"noopener noreferrer\">Urchin<span class=\"sr-only\"> (opens in new tab)<\/span><\/a>: A simple library for accessing the TPM on resource-constrained devices<\/li>\n<li>The Platform Crypto Provider Toolkit and PCPTool, for programming a TPM in C (part of <a class=\"msr-external-link glyph-append glyph-append-open-in-new-tab glyph-append-xsmall\" href=\"https:\/\/github.com\/Microsoft\/TSS.MSR\" target=\"_blank\" rel=\"noopener noreferrer\">TSS.MSR<span class=\"sr-only\"> (opens in new tab)<\/span><\/a>)<\/li>\n<\/ul>\n<h2>Microsoft Features using the TPM<\/h2>\n<p>Microsoft products and services lead the world in the use of international standards-based security solutions based on the TPM.\u00a0 \u00a0\u00a0Products and services that use the TPM include:<\/p>\n<ul>\n<li><a class=\"msr-external-link glyph-append glyph-append-open-in-new-tab glyph-append-xsmall\" href=\"https:\/\/technet.microsoft.com\/en-us\/library\/cc732774(v=ws.11).aspx\" target=\"_blank\" rel=\"noopener noreferrer\">Bitlocker Full Disk Encryption<span class=\"sr-only\"> (opens in new tab)<\/span><\/a><\/li>\n<li><a class=\"msr-external-link glyph-append glyph-append-open-in-new-tab glyph-append-xsmall\" href=\"https:\/\/blogs.windows.com\/buildingapps\/2016\/01\/26\/convenient-two-factor-authentication-with-microsoft-passport-and-windows-hello\/\" target=\"_blank\" rel=\"noopener noreferrer\">Windows Hello (password-less secure logon)<span class=\"sr-only\"> (opens in new tab)<\/span><\/a><\/li>\n<li><a class=\"msr-external-link glyph-append glyph-append-open-in-new-tab glyph-append-xsmall\" href=\"https:\/\/docs.microsoft.com\/en-us\/windows\/client-management\/mdm\/healthattestation-csp\" target=\"_blank\" rel=\"noopener noreferrer\">Device Health Attestation<span class=\"sr-only\"> (opens in new tab)<\/span><\/a><\/li>\n<li><a class=\"msr-external-link glyph-append glyph-append-open-in-new-tab glyph-append-xsmall\" href=\"https:\/\/technet.microsoft.com\/en-us\/library\/dn593708(v=ws.11).aspx\" target=\"_blank\" rel=\"noopener noreferrer\">Virtual Smart Card<span class=\"sr-only\"> (opens in new tab)<\/span><\/a><\/li>\n<li><a class=\"msr-external-link glyph-append glyph-append-open-in-new-tab glyph-append-xsmall\" href=\"https:\/\/blogs.technet.microsoft.com\/ash\/2016\/03\/02\/windows-10-device-guard-and-credential-guard-demystified\/\" target=\"_blank\" rel=\"noopener noreferrer\">Credential Guard<span class=\"sr-only\"> (opens in new tab)<\/span><\/a><\/li>\n<li><a class=\"msr-external-link glyph-append glyph-append-open-in-new-tab glyph-append-xsmall\" href=\"https:\/\/deploywindows.info\/2015\/11\/13\/add-virtual-tpm-in-windows-10-hyper-v-guest-with-powershell\/\" target=\"_blank\" rel=\"noopener noreferrer\">Virtual TPM in Hyper-V<span class=\"sr-only\"> (opens in new tab)<\/span><\/a><\/li>\n<li><a class=\"msr-external-link glyph-append glyph-append-open-in-new-tab glyph-append-xsmall\" href=\"https:\/\/docs.microsoft.com\/en-us\/windows-server\/virtualization\/guarded-fabric-shielded-vm\/guarded-fabric-and-shielded-vms\" target=\"_blank\" rel=\"noopener noreferrer\">Hyper-V Guarded Fabric and Shielded VM<span class=\"sr-only\"> (opens in new tab)<\/span><\/a><\/li>\n<li><a class=\"msr-external-link glyph-append glyph-append-open-in-new-tab glyph-append-xsmall\" href=\"https:\/\/social.technet.microsoft.com\/wiki\/contents\/articles\/13964.creating-a-certificate-template-that-includes-the-microsoft-platform-crypto-provider-on-a-ca-with-no-tpm.aspx\" target=\"_blank\" rel=\"noopener noreferrer\">Programming the TPM through the Platform Crypto Provider<span class=\"sr-only\"> (opens in new tab)<\/span><\/a><\/li>\n<li><a class=\"msr-external-link glyph-append glyph-append-open-in-new-tab glyph-append-xsmall\" href=\"https:\/\/docs.microsoft.com\/en-us\/windows\/iot-core\/secure-your-device\/TPM\" target=\"_blank\" rel=\"noopener noreferrer\">TPM for Windows 10 IoT Core<span class=\"sr-only\"> (opens in new tab)<\/span><\/a><\/li>\n<li><a class=\"msr-external-link glyph-append glyph-append-open-in-new-tab glyph-append-xsmall\" href=\"https:\/\/azure.microsoft.com\/en-us\/blog\/azure-iot-supports-new-security-hardware-to-strengthen-iot-security\/\" target=\"_blank\" rel=\"noopener noreferrer\">TPM Support in Azure IoT<span class=\"sr-only\"> (opens in new tab)<\/span><\/a><\/li>\n<\/ul>\n<p>Other useful Windows resources include:<\/p>\n<ul>\n<li>Programming the TPM with <a class=\"msr-external-link glyph-append glyph-append-open-in-new-tab glyph-append-xsmall\" href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/windows\/desktop\/aa446796(v=vs.85).aspx\" target=\"_blank\" rel=\"noopener noreferrer\">TPM Base Services<span class=\"sr-only\"> (opens in new tab)<\/span><\/a><\/li>\n<li>TPM management with <a class=\"msr-external-link glyph-append glyph-append-open-in-new-tab glyph-append-xsmall\" href=\"https:\/\/technet.microsoft.com\/en-us\/library\/jj603116(v=wps.620).aspx\" target=\"_blank\" rel=\"noopener noreferrer\">Powershell<span class=\"sr-only\"> (opens in new tab)<\/span><\/a><\/li>\n<li>TPM management with <a class=\"msr-external-link glyph-append glyph-append-open-in-new-tab glyph-append-xsmall\" href=\"https:\/\/technet.microsoft.com\/en-us\/library\/cc749022(v=ws.10).aspx\" target=\"_blank\" rel=\"noopener noreferrer\">Control Panel<span class=\"sr-only\"> (opens in new tab)<\/span><\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>The TPM is a low-cost, but powerful and flexible, crypto-processor.\u00a0 A TPM does many of the things that a smart-card or hardware security module (HSM) does \u2013 for example, it is able to create, manage and use cryptographic keys, as well as store confidential data.<\/p>\n","protected":false},"featured_media":0,"template":"","meta":{"msr-url-field":"","msr-podcast-episode":"","msrModifiedDate":"","msrModifiedDateEnabled":false,"ep_exclude_from_search":false,"_classifai_error":"","footnotes":""},"research-area":[13558],"msr-locale":[268875],"msr-impact-theme":[],"msr-pillar":[],"class_list":["post-426012","msr-project","type-msr-project","status-publish","hentry","msr-research-area-security-privacy-cryptography","msr-locale-en_us","msr-archive-status-active"],"msr_project_start":"2000-01-01","related-publications":[],"related-downloads":[],"related-videos":[],"related-groups":[],"related-events":[],"related-opportunities":[],"related-posts":[],"related-articles":[],"tab-content":[],"slides":[],"related-researchers":[{"type":"user_nicename","display_name":"Dennis Mattoon","user_id":31607,"people_section":"Section name 1","alias":"dennisma"}],"msr_research_lab":[199565],"msr_impact_theme":[],"_links":{"self":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-project\/426012","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-project"}],"about":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/types\/msr-project"}],"version-history":[{"count":9,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-project\/426012\/revisions"}],"predecessor-version":[{"id":642942,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-project\/426012\/revisions\/642942"}],"wp:attachment":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/media?parent=426012"}],"wp:term":[{"taxonomy":"msr-research-area","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/research-area?post=426012"},{"taxonomy":"msr-locale","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-locale?post=426012"},{"taxonomy":"msr-impact-theme","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-impact-theme?post=426012"},{"taxonomy":"msr-pillar","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-pillar?post=426012"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}