Trusted Computing based services supporting TPM provisioning and supply chain validation concepts. #nsacyber
Go to file
5B96790E3664F40075A67E6ADF737EDB15B4408DBC91A81228B31537B0CE3E26 7c99b81b10
supplychainvalidationsummary will look up rims by ID (#805)
* Lookup here needed summary id from device object

* Portal linkage issue

* CertificatesUsed not working properly with RIM

* Maybe need to link to base rim

* Rim test 1 needed hw file

* Working on CI

* Connecting new tpm2_common

* Edited the way scripts called in docker exec

* TPM for reset each test

* Defining efi paths in CI env file

* Forgot to close while loops

* Connecting default test files

* Variable was wrong [no ci]

* Added ACA tests using uploaded artifacts

* Trying to chmod rim_setup.sh

* rim_setup chmod issues

* Added aca tests 9 and 10 to workflow

* Added cases 9 and 10 for aca policy tests

* Exit test scripts with error if one test fails

* Attempt to solve uploaded rim linkup

* Try only setting tagId if not null

* updateSupportRimInfo was not setting associated rim on base

* Attempt alternate lookup of rim by device name

* Trouble with event log archived

* Used wrong variable

* Fix spotbugs

* Try again

* Change SupplyChainValidation.message size to MAX_MESSAGE_LENGTH
2024-07-22 06:03:09 -04:00
.ci supplychainvalidationsummary will look up rims by ID (#805) 2024-07-22 06:03:09 -04:00
.github/workflows supplychainvalidationsummary will look up rims by ID (#805) 2024-07-22 06:03:09 -04:00
config/checkstyle Updated some more checkstyle issues and removed the line call from the 2024-02-05 13:29:24 -05:00
gradle/wrapper Updated gradle to v8.3 and nebula to 11.4.0 2023-09-06 16:10:16 -04:00
HIRS_AttestationCA supplychainvalidationsummary will look up rims by ID (#805) 2024-07-22 06:03:09 -04:00
HIRS_AttestationCAPortal supplychainvalidationsummary will look up rims by ID (#805) 2024-07-22 06:03:09 -04:00
HIRS_Provisioner Updated the code to print out the available Restful URIs. Added some 2023-09-14 09:14:11 -04:00
HIRS_Provisioner.NET [#787] Saving attestation certificate to file (#788) 2024-06-21 10:13:18 -04:00
HIRS_ProvisionerTPM2 Updated the code to print out the available Restful URIs. Added some 2023-09-14 09:14:11 -04:00
HIRS_Structs This commit sets up the suppression filter file. The locations previous 2024-02-05 10:50:12 -05:00
HIRS_Utils Move part of PciIds from AttestationCA back to Utils (#796) 2024-07-22 06:01:54 -04:00
images Updated images for version 1.1 2019-09-05 17:03:46 -04:00
package did final move of the vendor-table.json file after testing; fixed json-accepted quotes in spdm file 2024-06-05 12:30:01 -04:00
scripts Added switch to windows engine (#682) 2024-01-26 13:44:15 -05:00
tools Move part of PciIds from AttestationCA back to Utils (#796) 2024-07-22 06:01:54 -04:00
tpm_module [#14] Parallelize Subproject CI Builds and Pull Pre-Built Image 2018-10-12 12:01:46 -04:00
TPM_Utils Initial release 2018-09-06 09:47:33 -04:00
.gitignore Git ignore updates for the .NET provisioner (#695) 2024-01-31 21:11:28 -05:00
build.gradle Added additional checks during package install 2024-04-24 15:40:46 -04:00
CONTRIBUTING.md Updated CONTRIBUTING.md 2018-09-07 13:59:31 -04:00
DISCLAIMER.md Initial release 2018-09-06 09:47:33 -04:00
gradle.properties updated with package for tcg_rim_tool [no ci] 2023-03-17 14:47:10 -04:00
gradlew Updated gradle to v8.3 and nebula to 11.4.0 2023-09-06 16:10:16 -04:00
gradlew.bat Updated gradle to v8.3 and nebula to 11.4.0 2023-09-06 16:10:16 -04:00
LICENSE.md Initial release 2018-09-06 09:47:33 -04:00
NOTICE minor adjustments to the NOTICE file 2022-03-16 11:12:44 -04:00
README.md Added discussion link 2022-10-28 09:43:18 -04:00
settings.gradle Upgrade JCommander to support global argument validation. Replace CredentialArgumentValidator with CreateArgumentValidator. 2024-03-06 12:40:54 -05:00
VERSION Update VERSION 2022-09-02 12:50:53 -04:00

Host Integrity at Runtime and Start-up (HIRS)

Build Status

Attestation Certificate Authority (ACA) and TPM Provisioning with Trusted Computing-based Supply Chain Validation

The Host Integrity at Runtime and Start-up Attestation Certificate Authority is a Proof of Concept - Prototype intended to spur interest and adoption of the Trusted Platform Module (TPM). It's intended for testing and development purposes only and is not intended for production. The ACA's functionality supports the provisioning of both the TPM 1.2 and TPM 2.0 with an Attestation Identity Credential (AIC). The ACA can be configured to enforce the Validation of Endorsement and Platform Credentials to illustrate a supply chain validation capability.

The ACA provides a “provisioner” application to be installed on all devices which will be requesting Attestation Credentials. The ACA is a web based server which processes Attestation Identity Requests. TPM Provisioning

Version 1.1 added support for the Platform Certificate v1.1 Specification. This allows entities that are part of the supply chain (System integrators and Value Added Resellers) the ability to create Delta Platform Certificate to compliment the Base Platform Certificate created by the Platform Manufacturer. See the Article on Base and Delta Platform Certificates for details.

Version 2.0 added support for the PC Client Reference Integrity Manifest (RIM) Specification to provide firmware validation capability to the HIRS ACA. This requires that the manufacturer of a device provide a digitally signed RIM "Bundle" for each device. The HIRS ACA has a new page for uploading and viewing RIM Bundles and a policy setting for requiring Firmware validation.

To support the TCG RIM concept a new tools folder has been added to the HIRS project which contains a tcg_rim_tool command line application. The tcg_rim_tool can be used to create NISTIR 8060 compatible SWID tags that adhere to the TCG PC Client RIM specification. It also supports the ability to digitally sign the Base RIM file as the HIRS ACA will require a valid signature in order to upload any RIM file. See the tgc_rim_tool READ.md for more details.

Notice: Github Dicussions have been enabled for this repo. Please refer to the Dicussion entitled "HIRS development changes" for development and support notifications.

Features

  • TPM Provisioner
    • Requests an Attestation Identity Credential for the TPM from the ACA.
    • Takes ownership of TPM if not owned
    • Uses REST calls to complete the transaction with the ACA
    • Reads credentials from the TPM's NvRAM as part of the provisioning process.
    • Reads the device's hardware, network, firmware, and OS info for platform validation
  • Attestation Certificate Authority
    • Issues Attestation Identity Credentials to validated devices holding a TPM
    • Configures policies for enabling/disabling validation procedures
    • Performs TCG-based Supply Chain Validation of connecting clients
      • Optionally validates Endorsement and Platform Credentials
  • Endorsement Credential Certificate Chain Validation
  • Platform Credential Certificate Chain Validation
  • Attestation CA Dashboard
    • Displays all Validation Reports, Credentials, and Trust Chains
    • Enables ACA policy configuration for validation of Endorsement and Platform Credentials
    • Enables Import/Export of Certificate (Trust) Chains, Endorsement Credentials, and Platform Credentials
    • Optionally allows uploaded credentials to be used in validation for machines that have been reprovisioned by trusted parties since leaving the OEM
  • Firmware Integrity Validation
    • Checks that firmware and boot related file hashes match those provided by OEMs.
    • Validates the import of All RIM files imported to the ACA (insure all RIM files were signed by trusted sources)
    • Verifies that the firmware hashes captured by the TPMs Platform Configuration Registers (PCRs) match the firmware hashes obtained from the OEM(s).
    • Verifies TCG/UEFI boot variables (e.g. BIOS setup data) have not been altered (e.g secure boot).

Requirements

The HIRS Attestation Certificate Authority (ACA) supports installation on CentOS 6 and 7 instances.

The HIRS Provisioner supports both types of TPMs, 1.2 and 2.0. TPM 1.2 support is available on CentOS 6 and 7. Due to the limitations on the libraries available on Centos 6, TPM 2.0 support is only available on Centos 7.

Installation Instructions

For detailed instructions, see Installation notes.

Packages used for installation (e.g. HIRS_Provisioner*el7.noarch.rpm) can be found on the release page.

Installing the ACA

Simply run the command yum install HIRS_AttestationCA*el6.noarch.rpm or yum install HIRS_AttestationCA*el7.noarch.rpm based on your OS.

Installing the Provisioner

After enabling your TPM in BIOS/UEFI, determine if your machine has a TPM 1.2 or a TPM 2.0 by using the command:
dmesg | grep -i tpm_tis.

To install a TPM 1.2 Provisioner, run:
yum install tpm_module*.rpm
yum install HIRS_Provisioner*el6.noarch.rpm or yum install HIRS_Provisioner*el7.noarch.rpm based on OS
hirs-provisioner -c

To install a TPM 2.0 Provisioner, run:
yum install hirs-provisioner-tpm2*.rpm

To configure the provisioner, edit the hirs-site.config file in /etc/hirs/hirs-site.config. Edit the file to specify the ACA's fully qualified domain name and port.

Usage

To kick off a provision on the client, run the command sudo tpm_aca_provision.

To see the results and interact with the ACA, go to the ACA Portal at https://ACAPortalAddress:ACAPortalPort/HIRS_AttestationCAPortal/portal/index.