Secured Component Verification (on Device)証明書を検証する方法
Summary: デバイスでのセキュア コンポーネント検証のためにプラットフォーム証明書と検証ツール プラットフォームを使用して、デバイスの整合性を検証する方法について説明します。
Instructions
Dell製コンピューターの整合性と信頼性は、プラットフォーム証明書および検証ツール プラットフォームを使用して検証できます。これは、デバイスと一緒にSecured Component Verification (On Device)を注文した場合に実現できます。米国国防総省 (DoD) は、検証ツール プラットフォームを開発しました。検証プラットフォームは、Host Integrity at Runtime and Start-up (HIRS) ツールとして知られています。HIRS ツールは、構成証明機関 (ACA) ポータルと HIRS プロビジョナーの 2 つのコンポーネントで構成されています。HIRSプロビジョナーが結果を確認するには、次の設定を行う必要があります。
- HIRS ツール
- Windows 10またはWindows 11を実行しているエンドポイント デバイス
- HIRSプロビジョナー構成済み
- ACAポータル
- ACAにアップロードされた署名証明書とプラットフォーム証明書
- デバイスと証明書のどの部分を検証するかを指定するために ACA 内で設定されたポリシー
デバイスの整合性を検証するには、 HIRS ACA ポータルをインストールし、 証明書を収集し、 ACA ポータルに証明書をアップロードし、 ACA ポリシーを設定し、 HIRS Provisioner をダウンロードしてインストールし、 Provisioner を実行し、 結果を確認する必要があります。
HIRS ACAポータルのインストール
テスト対象システムに HIRS ACA ポータルをインストールするということは、構成証明をローカルで実行することを意味します。この方法は、おそらく最も簡単な導入モデルですが、最も安全ではありません。より安全な方法として、HIRS ACA ポータルをリモート デバイスまたはサーバーにインストールします。
- テスト対象またはサーバーにDocker Desktopをダウンロードしてインストールします。
注:テスト対象のシステムで ACA 検証ツールを実行することは、ローカル検証と呼ばれ、ネットワーク サーバーでの ACA の実行とは異なる脅威モデルです。
- Windows PowerShellを検索して右クリックし、[ 管理者として実行]を選択し、次のコマンドを入力してEnterを押します。
docker pull ghcr.io/nsacyber/hirs/aca:616fc06 - Dockerで、HIRS ACAイメージが作成されたことを確認するには、次のコマンドを入力してEnterを押します。
docker images
- PowerShellでリポジトリーを確認するには、 REPOSITORY で
repository gchr.io/nsacyber/hirs/aca.
- PowerShell で、次のコマンドを入力し、Enter キーを押します。
docker run --name=aca -p 8443:8443 ghcr.io/nsacyber/hirs/aca:616fc06 - Dockerで、サーバー イメージがコンテナー内で実行されていることを確認するには、次のコマンドを入力してEnterキーを押します。
docker container ls -a - 次のことを確認します。
acaが [名前 ] カテゴリの下に表示されます。
- ブラウザーを開き、ACA ポータルに移動して、Docker イメージが機能していることを確認します。ローカル検証を実行している場合は、ローカル ホストのIPアドレス127.0.0.1を使用します。
注:- ローカル検証を実行している場合は、 https://127.0.0.1:8443/HIRS_AttestationCAPortal/
に進みます。
- ポータル サイトがオンラインになるまでに数分かかる場合があります。
- ポータル サイトがオンラインになると、「接続はプライベートではありません」というメッセージが表示される場合があります。これは、ローカル検証を実行する際に想定される動作です。
- ローカル検証を実行している場合は、 https://127.0.0.1:8443/HIRS_AttestationCAPortal/
証明書の収集
- SCVプラットフォーム属性証明書を収集します。SCV(デバイス上)は、ハード ドライブのUEFIパーティションに証明書を保存します。
- 「コマンド プロンプト」を検索して右クリックし、[ 管理者として実行]を選択します。
- 次のコマンドを入力し、Enterを押します。
mountvol o: /S - 次のコマンドを入力し、Enterを押します。
copy o:\EFI\tcg\cert\platform\*.cer c:\dell\platcert}注:SCV(クラウド上)を購入した場合、証明書はDell Trusted Deviceにあり、HIRS ACAによる検証のためにローカルで使用することはできません。
- Dell中間CA署名証明書を収集します。
- 工場出荷時に、属性証明書と署名証明書はSCVプラットフォーム証明書内で連結されており、HIRS ACAポータルにアップロードする前に分離する必要があります。PowerShellから次のコマンドを実行し、Enterを押します。
PowerShell :> $i=0; Get-Content c:\dell\platcert\*.cer -ReadCount 3 | %{$i++; $_ | Out-File out_$i.crt} - ファイル名を収集する
out_1.crtとout _2.crt.
- 工場出荷時に、属性証明書と署名証明書はSCVプラットフォーム証明書内で連結されており、HIRS ACAポータルにアップロードする前に分離する必要があります。PowerShellから次のコマンドを実行し、Enterを押します。
- Trusted Deviceのサポート |Drivers & DownloadsおよびSecure Component Validatorのダウンロード。
- 次のソースから、環境内の TPM モデルの TPM ルート署名証明書および中間署名証明書を収集します。
- STMicro: https://www.st.com/resource/en/technical_note/tn1330-st-trusted-platform-module-tpm-endorsement-key-ek-certificates-stmicroelectronics.pdf
- Nuvoton: https://www.nuvoton.com/export/sites/nuvoton/files/security/Nuvoton_TPM_EK_Certificate_Chain.pdf注:システム管理者は、環境内で使用されているTPMモデルのレコードを保有していない可能性があります。この問題が発生した場合、管理者は、STMicroおよびNuvotonの提供ドキュメントに記載されているすべてのTPMルート署名証明書および中間署名証明書をダウンロードできます。
- STMicro: https://www.st.com/resource/en/technical_note/tn1330-st-trusted-platform-module-tpm-endorsement-key-ek-certificates-stmicroelectronics.pdf
ACAポータルへの証明書のアップロード
- Dell SCVプラットフォーム属性証明書(
c:\dell\platcert\out_1.crt)をACAポータルにダウンロードするには、[Platform Certificates]タブの+記号をクリックします。
注:ローカル検証を実行している場合は、 https://127.0.0.1:8443/HIRS_AttestationCAPortal/portal/certificate-request/platform-credentialsに移動します。
- Dell工場出荷時中間CA署名証明書(
c:\dell\platcert\out_2.crt)、CA 署名ルート証明書 (PROD-CSG-SCV-Root.cer)、TPMルート署名証明書を選択して、トラスト チェーン管理タブのトラスト チェーンCA証明書の横にある+記号をクリックします。
注:ローカル検証を実行している場合は、 https://127.0.0.1:8443/HIRS_AttestationCAPortal/portal/certificate-request/trust-chainに移動します。
ACAポリシーの設定
- [Policy]タブに移動します。
- 鉛筆アイコンをクリックして、以下を [Enabled]に設定します。
- 承認認定資格の検証
- プラットフォーム認証情報の検証
- プラットフォーム属性認証情報の検証
注:ローカル検証を実行している場合は、 https://127.0.0.1:8443/HIRS_AttestationCAPortal/portal/policyに移動します。
HIRS Provisioner のダウンロードとインストール
このステップは、証明書を含む各システムで実行する必要があります。
- HIRS Provisioner Releases
から最新バージョンのProvisionerをダウンロードしてインストールします。
- Windowsエクスプローラーから、
c:\Program Files(x86)\HIRS_Provisioner.NET\plugins\scripts\windows. - 右クリックして、
allcomponents.ps1をクリックし、[ メモ帳で編集] を選択し、15 行目をコメントアウトします。#記号が行の前に表示されます。注:例#$NVME_SCRIPT="$APP_HOME/nvme.ps1" # For NVMe. - 30行目をコメントアウトするには、
#記号が行の前に表示されます。注:例#. $NVME_SCRIPT. - すべての「
### Gather HDD details" (669 行目から 744 行目) を次のテキストに置き換えます。### Gather HDD details Write-Progress -Id 1 -Activity "Gathering component details" -PercentComplete 70 Write-Progress -Id 2 -ParentId 1 -Activity "Gathering HDD information" -CurrentOperation "Querying" -PercentComplete 0 function parseHddData() { $RS=(Get-CimInstance -ClassName CIM_DiskDrive | select serialnumber,mediatype,pnpdeviceid,manufacturer,model | where mediatype -eq "Fixed hard disk media") $component="" $replaceable=(jsonFieldReplaceable "true") $numRows=1 if ($RS.Count -gt 1) { $numRows=($RS.Count)} for($i=0;$i -lt $numRows;$i++) { Write-Progress -Id 2 -ParentId 1 -Activity "Gathering Hard Disk information" -CurrentOperation ("Cleaning output for HDD " + ($i+1)) -PercentComplete ((($i+1) / $numRows) * 100) $hddClass=(jsonComponentClass "$COMPCLASS_REGISTRY_TCG" "$COMPCLASS_HDD") $pnpDevID="" if(isIDE($RS[$i].PNPDeviceID)) { $pnpDevID=(ideDiskParse $RS[$i].PNPDeviceID) } elseif(isSCSI($RS[$i].PNPDeviceID)) { $pnpDevID=(scsiDiskParse $RS[$i].PNPDeviceID) } else {Continue } if(($pnpDevID -eq $null) -or (($pnpDevID -eq "(Standard disk drives)") -and ($pnpDevID.product -eq $null))) { $regex="^.{,16}$" $pnpDevID=[pscustomobject]@{ product=($RS[$i].model -replace '^(.{0,16}).*$','$1') # Strange behavior for this case, will return } } $tmpManufacturer=$pnpDevID.vendor # PCI Vendor ID $tmpModel=$pnpDevID.product # PCI Device Hardware ID $tmpSerial=$RS[$i].serialnumber $tmpRevision=$pnpDevID.revision if ([string]::IsNullOrEmpty($tmpManufacturer) -or ($tmpManufacturer.Trim().Length -eq 0)) { $tmpManufacturer="$NOT_SPECIFIED" } $tmpManufacturer=$(jsonManufacturer "$tmpManufacturer".Trim()) if ([string]::IsNullOrEmpty($tmpModel) -or ($tmpModel.Trim().Length -eq 0)) { $tmpModel="$NOT_SPECIFIED" } $tmpModel=$(jsonModel "$tmpModel".Trim()) if (![string]::IsNullOrEmpty($tmpSerial) -and ($tmpSerial.Trim().Length -ne 0)) { $tmpSerial=(jsonSerial "$tmpSerial".Trim()) } else { $tmpSerial="" } if (![string]::IsNullOrEmpty($tmpRevision) -and ($tmpRevision.Trim().Length -ne 0)) { $tmpRevision=(jsonRevision "$tmpRevision".Trim()) } else { $tmpRevision="" } $tmpComponent=(jsonComponent $hddClass $tmpManufacturer $tmpModel $replaceable $tmpSerial $tmpRevision) $component+="$tmpComponent," } Write-Progress -Id 2 -ParentId 1 -Activity "Gathering Hard Disk information" -CurrentOperation "Done" -PercentComplete 100 return "$component".Trim(",") }
Provisionerの実行
Provisionerを右クリックし、証明書が含まれているシステムで Run as administratorを選択します。
c:\Program Files(x86)\HIRS_Provisioner.NET\tpm_aca_provision.exe.
結果の確認
合格結果については、 検証レポートACA ポータル ページを確認してください。