2023年必見!NSAが推奨するサプライチェーンセキュリティ対策とは?

国家安全保障局(NSA)は、国家安全保障システムのセキュリティを強化するため、サプライチェーン・リスクマネジメントのための受入テストに関するガイダンスというタイトルのプレスリリースを発表しました。

この記事では、プレスリリース文のリンク先にあるガイダンス「サーバー、ラップトップ、デスクトップコンピュータの調達と受入試験ガイド」で言及されている主要な技術に焦点を当てて説明します。このガイダンスは米国政府の調達プロセスに関連し、幾つかの大手コンピューターメーカーが既に対応を完了しています。また、システムインテグレータもこのガイダンスの対象となり、日本においても将来的に同様の動向が見られる可能性があります。

1. はじめに

私たちは日常的にウイルス対策ソフトやパスワードの管理に気を配っています。しかし、パソコンが工場から手元に届くまでのセキュリティリスクについては、あまり考えられていないかもしれません。

ガイダンス「サーバー、ラップトップ、デスクトップコンピュータの調達と受入試験ガイド」では連邦政府の各省庁が堅牢なセキュリティ対策が施されている製品調達と、完全性検証プロセスの自動化の必要性について述べています。

完全性検証プロセスの自動化を実現する為の技術規格としてとして、トラステッド・プラットフォーム・モジュール(以下TPM)、エンドースメント証明書、プラットフォーム証明書が利用されています。これら技術規格は、Trusted Computing Group(以下TCG)で規格策定されており、NSAはNISTなど様々な米国政府組織と共にTCGのリエゾンとして参加しており仕様の策定に関与しています。

筆者はTCGのメンバーとして活動しており、公開前の作業中の仕様やドラフト段階の仕様、TCGのワーキンググループに参加できる立場ですが秘密保持の関係上、本文は公開されている情報のみをご紹介します。

2. ガイダンスで述べられている各技術の説明

TPMとは

TPMは、Trusted Computing Groupによって規格された技術規格です。TPMはマイクロプロセッサの一部(fTPM)として、または小さな半導体チップ(ディスクリートTPM)としてコンピューターに組み込まれます。Windows 11以降ではTPMバージョン2.0がラップトップとデスクトップに必須となります。サーバーでは、注文時にアドオンコンポーネントとしてTPMの構成指定が必要な場合があります。大抵のTPMにはエンドースメント証明書が封入されており、TPMが正規品で信頼できることを証明するための電子証明書として利用されます。この証明書はデバイスの認証やセキュリティ機能の検証に使用され、TPMのセキュリティと信頼性を高める重要な要素となりRoot Of Trust(信頼の起点)と言われています。エンドースメント証明書もTrusted Computing Groupによって規格された技術です。なおTPM 2.0は正式な国際標準として承認されており、ISO/IEC 11889:2015 として公開されています。

出典: Infineon OPTIGA™ TPM SLM 9670

なお国防総省(DoD)指令(Instraction)8500.01「サイバーセキュリティ」では、TPMが組み込まれたコンピュータ構成が必須と規定されています。またNSAが、DoDがTPMの機能を活用するためのユースケース、標準実装、計画を行うことと明記されており、TPMはデバイスの識別、認証、暗号化、およびデバイスの完全性検証に使用することを想定しています。つまり本ガイダンスは今後もしくは既にDoDにおいて適応されていると考える事が出来ます。

セキュアブートとは

現在のサーバー、ラップトップ、デスクトップコンピュータには、OSよりも前に起動しOSの権限外で動作するファームウェアとファームウェアのアプリケーションが含まれています。多くはUEFIと呼ばれるファームウェアがマザーボードに組み込まれています。

パソコンの電源起動からOSが起動するまでに以下の手順で進行します:

  1. 電源オン:パソコンの電源が入り、UEFIがフラッシュから読み込まれ起動します。

  2. POST(Power-On Self-Test):UEFIによるハードウェアの自己診断が行われます。

  3. ブートデバイスの選択:UEFIに設定されたブート順序に基づき、OSを読み込む起動デバイスを識別します。

  4. ブートローダーの起動:起動デバイスからブートローダーが読み込まれます。ブートローダーは、OSを起動するために必要なファイルやドライバをロードする役割を持ちます。

  5. OSのロード:ブートローダーがOSをメモリに読み込み、初期化を開始します。

  6. OSの起動:OSが起動し、ログイン画面やデスクトップが表示されます。

セキュアブートは、OSが起動するまでに改ざんされていないファームウェア、ソフトウエアによって起動された事を保証するセキュリティ機能です。この機能により不正なソフトウェアやマルウェアによる介入を防ぎます。

なおUEFIのセキュアブートは、NIST SP800-147「BIOS保護ガイドライン」またはNIST SP800-147b「サーバー用BIOS保護ガイドライン」のガイダンスに沿って実装されています。

出典: SP800-147

メジャードブートとは

メジャードブート(Measured Boot)は、セキュアブートで示されたパソコンの電源起動からOSが起動するまでの各プロセスを測定し、これらの測定値をTPM内部のPlatform Configuration Register(PCR)にハッシュ値として保存するセキュリティ機能です。

出典: TCG TCG PC Client Platform Firmware Integrity Measurement

出典: 筆者作成

出典: tianocore : UNDERSTANDING THE TRUSTED BOOT CHAIN IMPLEMENTATION

コマンド実行の参考例

$ tpm2_pcrread
  sha1:
    0 : 0x8EE36552E54E166784AB007032CA24531E96B268
    1 : 0x338D404C77811BF3F917DD5486D763B30608DC7F
    2 : 0xB2A83B0EBF2F8374299A5B2BDFC31EA955AD7236
    3 : 0xB2A83B0EBF2F8374299A5B2BDFC31EA955AD7236
    4 : 0xFC446EA16139D18AD80CCBC56C5EC97CF512CF0D
    5 : 0x4F3930572E79B5F869AF9434C27BC7872A42F275
    6 : 0xB2A83B0EBF2F8374299A5B2BDFC31EA955AD7236
    7 : 0x0790912D81A42DB422F938BE74F9B94475887732
    8 : 0x3C42EA68EFE547CDF1620FE3A7179AA7C56678C6
    9 : 0x2542A9E42681BABF257583EECD751C051B6DBC86
    10: 0x4DFEBA36E836D237151114F3D4C991CA35B898CD
    11: 0x0000000000000000000000000000000000000000
    12: 0x0000000000000000000000000000000000000000
    13: 0x0000000000000000000000000000000000000000
    14: 0x77DB66D60AA0C2CD1CEA6C34FED4F2AA014BF285
    15: 0x0000000000000000000000000000000000000000
    16: 0x0000000000000000000000000000000000000000
    17: 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    18: 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    19: 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    20: 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    21: 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    22: 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    23: 0x0000000000000000000000000000000000000000
  sha256:
    0 : 0xEEF54CF22BF4906273A90FE71CB36AC8268F5E7D1E0D620A97F104E207740989
    1 : 0x348CAF1653D652993EAEEF933E82ED3086A42156C37408E8223A22DDE5F29183
    2 : 0x3D458CFE55CC03EA1F443F1562BEEC8DF51C75E14A9FCF9A7234A13F198E7969
    3 : 0x3D458CFE55CC03EA1F443F1562BEEC8DF51C75E14A9FCF9A7234A13F198E7969
    4 : 0x8A4C98FDA27640E69651DE9136FE7B84EA817C03D01C9C2FB5E02906E6FC97F5
    5 : 0x908575CC5BD5A11860A456B9BB1100EA3BFCC0E276F86AE73E949EDE91CBA157
    6 : 0x3D458CFE55CC03EA1F443F1562BEEC8DF51C75E14A9FCF9A7234A13F198E7969
    7 : 0xEF9B3B8F814BAFF59B5C1A3D66DDBB16A3FA7A419FEE8A24685BDE13D5603B31
    8 : 0xCA42697EE18A2831BA2DF17F0B69F0E5155AB899AB81837F4565C6BD6FCA5EA4
    9 : 0x3A8C7447A7D24864A5E0EC50FABBF92359798C9EBE1D4EDC7435F133F654F5D7
    10: 0xA80A3271ADDB19FB6ADF081D93814A2965C8896A321E4F8288F8279E6B113123
    11: 0x0000000000000000000000000000000000000000000000000000000000000000
    12: 0x0000000000000000000000000000000000000000000000000000000000000000
    13: 0x0000000000000000000000000000000000000000000000000000000000000000
    14: 0xE3991B7DDD47BE7E92726A832D6874C5349B52B789FA0DB8B558C69FEA29574E
    15: 0x0000000000000000000000000000000000000000000000000000000000000000
    16: 0x0000000000000000000000000000000000000000000000000000000000000000
    17: 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    18: 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    19: 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    20: 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    21: 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    22: 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
    23: 0x0000000000000000000000000000000000000000000000000000000000000000

この機能により、起動時の各プロセスが想定状態であるかどうかを後で確認できます。起動状態の想定測定値と実測値を比較し、不正な変更や介入の検出、攻撃などを特定できます。この機能は、システムの起動状態の透明性を保ち、セキュリティを強化します。

WindowsのBitlockerはこの仕組みを利用してディスクの暗号化および起動時の正常性確認を行っています。詳しくは弊社記事に詳細の解説がありますので興味のある方はご覧下さい。

なおNIST SP800-155「BIOS完全性測定ガイドライン」ではTPMを利用したメジャードブートの実装について言及がされています。

リファレンス・インテグリティ・マニフェスト(RIM)

PCクライアント・リファレンス・インテグリティ・マニフェスト(RIM)は、Trusted Computing Groupによって規格された技術でありコンピューターが想定通りに信頼できる状態で起動したことを証明する為に利用されます。RIMはメジャードブートの想定値(ハッシュ値の集合)が記載されており電子署名済のマスターデータ(いわゆるゴールデンイメージ)となります。

出典: TCG Reference Integrity Manifest (RIM) Information Model

出典: TCG Reference Integrity Manifest (RIM) Information Model

RIMはSWID(Software Identification Tag)フォーマットをベースとしており、SWIDは経済産業省が注目しているソフトウェアのセキュリティ確保のための管理手法SBOM(ソフトウェア部品表)として記載されています。RIMはソフトウェアの詳細情報(例えば、ハッシュ値)を含んでいます。このため、RIMを利用することで、コンピューター上で実行されたソフトウェアを特定することが可能になります。

具体的な実現方法としてLinuxではIMAという機能がKernelバージョン2.6.30から含まれており、その機能を有効化した上でTPMを利用しファイルや実行したソフトウエア情報のハッシュ値を計測(いわゆるメジャードブート)することが可能になります。この情報を収集することでコンピューターで実行されたソフトウエアの確認が可能になります。

IMAに興味があるかたは

に詳細が記載されていますのでご覧下さい。

またUEFI 2021 Virtual Plugfestで講演された資料が公開されているのでファームウェアのトレーザビリティに興味があるかたは技術の詳細を理解出来るかと思います。

プラットフォーム証明書とは

プラットフォーム証明書(Platform Certificate)は、Trusted Computing Groupによって規格された技術でありコンピューターの構成を保証します。この証明書には、製造業者のモデル、シリアル番号、デバイスのハードウェア部品表(いわゆるH-BOM)などが含まれます。ハードウェア部品表に記載される内容はCPU、メモリー、SSD、ハードディスク、NICなど様々なコンポーネントが記載されます。この証明書を利用する事で偽造デバイス、偽造内部コンポーネント、交換されたコンポーネントやデバイスへの許可されていない設定変更を検出するなどセキュリティを強化が図れます。システムインテグレータがハードウェア構成を変更する場合、ファームウェアやOSソフトウエアをインストールやカスタマイズする場合デルタ・プラットフォーム証明書を作成し変更内容を記録することで、トレーサビリティを確保することが可能となります。コンピューターを調達する組織はこの証明書を利用することで、受領したコンピューターの検収テストを自動化することが可能となります。

出典: SP800-155

またプラットフォーム証明書にRIMデータの参照先が記載されている場合、メジャードブート時におけるコンピューターの想定起動状態を確認することが可能となりハードウェアからOSまで完全性を検証できます。Linux IMAを利用する事でさらにOS上で稼働するソフトウエアや保存されたファイルの完全性も全て検証することが可能になります。

残念ながら、プラットフォーム証明書は属性証明書(RFC5755)という、X509とは異なるデータフォーマットであるため、OpenSSLなどの暗号ソフトウェアでは対応していません。現在、弊社では属性証明書に対応するコードをOpenSSLに寄贈し、メインブランチに統合されるよう取り組んでいます。

参考までにTCGが公開する仕様書にサンプルのプラットフォーム証明書が掲載されているのでOpenSSLでデータを読み取ってみました。

-----BEGIN ATTRIBUTE CERTIFICATE-----
MIIJmDCCCIACAQEwgZaggZMwgYqkgYcwgYQxCzAJBgNVBAYTAlVTMQswCQYDVQQI
DAJDQTEUMBIGA1UEBwwLU2FudGEgQ2xhcmExGjAYBgNVBAoMEUludGVsIENvcnBv
cmF0aW9uMR4wHAYDVQQLDBVFSyBDZXJ0aWZpY2F0ZSBJc3N1ZXIxFjAUBgNVBAMM
DXd3dy5pbnRlbC5jb20CBDdAg3SggZ0wgZqkgZcwgZQxCzAJBgNVBAYTAlVTMQsw
CQYDVQQIDAJDQTEUMBIGA1UEBwwLU2FudGEgQ2xhcmExGjAYBgNVBAoMEUludGVs
IENvcnBvcmF0aW9uMS4wLAYDVQQLDCVQbGF0Zm9ybSBBdHRyaWJ1dGUgQ2VydGlm
aWNhdGUgSXNzdWVyMRYwFAYDVQQDDA13d3cuaW50ZWwuY29tMA0GCSqGSIb3DQEB
CwUAAhRgKWfqeST97mzBULkeg3d9H0J5mTAiGA8yMDE3MDgyMDIxMDc0OFoYDzIw
MjAwODIwMjEwNzQ4WjCCBK4wHAYFZ4EFAhExEzARMAkCAQICAQACASsEBAAAAAEw
EgYFZ4EFAhkxCTAHBgVngQUIAjAUBgVngQUCFzELMAkCAQECAQECAQswgccGBWeB
BQITMYG9MIG6AgEAoHQWAzMuMQoBBwoBAgEBAIABAYEFKgMEBQaiLRYraHR0cHM6
Ly93d3cuaW50ZWwuY29tL3Byb3RlY3Rpb25wcm9maWxlLnBkZoMFUwQFBgekJBYi
aHR0cHM6Ly93d3cuaW50ZWwuY29tL2NjdGFyZ2V0LnBkZqENFgUxNDAtMgoBBAEB
AIIBAwEBABYqaHR0cHM6Ly93d3cuaW50ZWwuY29tL2lzb2NlcnRpZmljYXRpb24u
cGRmMIIDagYHZ4EFBQEHAjGCA10wggNZoIIC1zCCAXYwDgYGZ4EFEgMBBAQAAAAK
DAdBQkMgT0VNDAxXUjA2WDc4NzFGVEyACUE1NTU1LTk5OYEDMS4xggcrBgEEAYIs
gwH/pDIwFwYFZ4EFEQEMDkFGOjNBOjk0OjEwOkE1MBcGBWeBBRECDA5BRjozNzox
MDpEMjpBOKWBz6AxMA0GCysGAQQBgbAaAQIBBCBgA6M0Mv2RS2ADozQy/ZFLYAOj
NDL9kUtgA6M0Mv2RS6GBmTCBj6SBjDCBiTELMAkGA1UEBhMCVVMxCzAJBgNVBAgM
AkZMMRcwFQYDVQQHDA5GdC4gTGF1ZGVyZGFsZTEYMBYGA1UECgwPQUJDIENvcnBv
cmF0aW9uMSQwIgYDVQQLDBtQbGF0Zm9ybSBDZXJ0aWZpY2F0ZSBJc3N1ZXIxFDAS
BgNVBAMMC3d3dy5hYmMuY29tAgUKNUzN26YrFilodHRwczovL3d3dy5hYmMuY29t
L2NlcnRzLzQzODQzODk4ODQzLmNlcjCCAVkwDgYGZ4EFEgMBBAQAAAAvDAdYWVog
T0VNDA5MTUJUMzkwNERXMVQxR4AJQzU1NTUtNTU1gQMzLjGCBysGAQQBgiyDAQCk
MjAXBgVngQURAQwOODI6ODk6RkE6RDM6NjEwFwYFZ4EFEQIMDkQ0OjgzOkI0OkYy
Ojc4pYG1oCUwDQYLKwYBBAGBsBoBAgEEFDQy4UFLYJc0NDI0MuFBS2CXNDQyoYGL
MIGDpIGAMH4xCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJBWjEQMA4GA1UEBwwHUGhv
ZW5peDEUMBIGA1UECgwLWFlDIENvbXBhbnkxJDAiBgNVBAsMG1BsYXRmb3JtIENl
cnRpZmljYXRlIElzc3VlcjEUMBIGA1UEAwwLd3d3Lnh5ei5jb20CAw5TsKYmFiRo
dHRwczovL3d3dy54eXouY29tL2NlcnRzLzkzODkyOC5jZXKhLxYtaHR0cHM6Ly93
d3cuaW50ZWwuY29tL3BsYXRmb3JtaWRlbnRpZmllcnMueG1sohswDAwEdlBybwwE
dHJ1ZTALDANBTVQMBHRydWWjLhYsaHR0cHM6Ly93d3cuaW50ZWwuY29tL3BsYXRm
b3JtcHJvcGVydGllcy54bWwwLAYGZ4EFBQEDMSIwIBYeaHR0cHM6Ly93d3cuaW50
ZWwuY29tL1BDUnMueG1sMIICRTB8BgNVHSAEdTBzMHEGCiqGSIb4TQEFAgQwYzAx
BggrBgEFBQcCARYlaHR0cHM6Ly93d3cuaW50ZWwuY29tL3BsYXRjZXJ0Y3BzLnBk
ZjAuBggrBgEFBQcCAjAiDCBUQ0cgVHJ1c3RlZCBQbGF0Zm9ybSBFbmRvcnNlbWVu
dDB+BgNVHREEdzB1pHMwcTERMA8GBmeBBQUBAQwFSW50ZWwxFTATBgZngQUFAQIw
CQYHKwYBBAGCVzETMBEGBmeBBQUBBAwHUzI2MDBLUDEWMBQGBmeBBQUBBQwKSDc2
OTYyLTM1MDEYMBYGBmeBBQUBBgwMQlFLUDk5OTQwNjQzMIGyBgNVHTcBAf8Egacw
gaQwgaGggZ6kgZswgZgxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJDQTEUMBIGA1UE
BwwLU2FudGEgQ2xhcmExGjAYBgNVBAoMEUludGVsIENvcnBvcmF0aW9uMR4wHAYD
VQQLDBVFSyBDZXJ0aWZpY2F0ZSBJc3N1ZXIxFjAUBgNVBAMMDXd3dy5pbnRlbC5j
b20xEjAQBgNVBAUTCTEyODk0Mzc4NzAfBgNVHSMEGDAWgBTUaZAmAoHVXoNLA5du
q4qfj4TJgzA2BggrBgEFBQcBAQQqMCgwJgYIKwYBBQUHMAGGGmh0dHBzOi8vd3d3
LmludGVsLmNvbS9vY3NwMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHBzOi8vd3d3Lmlu
dGVsLmNvbS9wbGF0Zm9ybWNlcnQuY3JsMA0GCSqGSIb3DQEBCwUAA4IBAQCq6w/S
/cuB8mUjIlVli2JPfkbS+v2TmBf0sIUPdPfU/aH16NPctavfiEvpPl1uWGty7/oY
8sAq5ChEU3/KbI0zaY7X0Yjpcp5YfYqZZFqgrDmye+o5T5+sAnJOjNrHdIEUGyYH
G47IsogmJj7i1lRcF7JVCJTUOGQpWqVMKF3/VffWJ84XKE+nbTYCYufyYHRxUQ1T
rSx5sQn0dAnW8Bdljc+zpaNJBDxdlCdhKefZSwf3Yc550d3QDqMekH/3++9MJhJO
79BiL0CkXi5gAYLi5NUl4X9S/Jv+hcaDWi/gEtB5s7c3rtEyoYByj//QycQhxMIb
L2ciOd1FDte7CSyC
-----END ATTRIBUTE CERTIFICATE-----

パース結果は以下の様になります。

$ openssl asn1parse -in  /tmp/plat.pem 
    0:d=0  hl=4 l=2456 cons: SEQUENCE          
    4:d=1  hl=4 l=2176 cons: SEQUENCE          
    8:d=2  hl=2 l=   1 prim: INTEGER           :01
   11:d=2  hl=3 l= 150 cons: SEQUENCE          
   14:d=3  hl=3 l= 147 cons: cont [ 0 ]        
   17:d=4  hl=3 l= 138 cons: SEQUENCE          
   20:d=5  hl=3 l= 135 cons: cont [ 4 ]        
   23:d=6  hl=3 l= 132 cons: SEQUENCE          
   26:d=7  hl=2 l=  11 cons: SET               
   28:d=8  hl=2 l=   9 cons: SEQUENCE          
   30:d=9  hl=2 l=   3 prim: OBJECT            :countryName
   35:d=9  hl=2 l=   2 prim: PRINTABLESTRING   :US
   39:d=7  hl=2 l=  11 cons: SET               
   41:d=8  hl=2 l=   9 cons: SEQUENCE          
   43:d=9  hl=2 l=   3 prim: OBJECT            :stateOrProvinceName
   48:d=9  hl=2 l=   2 prim: UTF8STRING        :CA
   52:d=7  hl=2 l=  20 cons: SET               
   54:d=8  hl=2 l=  18 cons: SEQUENCE          
   56:d=9  hl=2 l=   3 prim: OBJECT            :localityName
   61:d=9  hl=2 l=  11 prim: UTF8STRING        :Santa Clara
   74:d=7  hl=2 l=  26 cons: SET               
   76:d=8  hl=2 l=  24 cons: SEQUENCE          
   78:d=9  hl=2 l=   3 prim: OBJECT            :organizationName
   83:d=9  hl=2 l=  17 prim: UTF8STRING        :Intel Corporation
  102:d=7  hl=2 l=  30 cons: SET               
  104:d=8  hl=2 l=  28 cons: SEQUENCE          
  106:d=9  hl=2 l=   3 prim: OBJECT            :organizationalUnitName
  111:d=9  hl=2 l=  21 prim: UTF8STRING        :EK Certificate Issuer
  134:d=7  hl=2 l=  22 cons: SET               
  136:d=8  hl=2 l=  20 cons: SEQUENCE          
  138:d=9  hl=2 l=   3 prim: OBJECT            :commonName
  143:d=9  hl=2 l=  13 prim: UTF8STRING        :www.intel.com
  158:d=4  hl=2 l=   4 prim: INTEGER           :37408374
  164:d=2  hl=3 l= 157 cons: cont [ 0 ]        
  167:d=3  hl=3 l= 154 cons: SEQUENCE          
  170:d=4  hl=3 l= 151 cons: cont [ 4 ]        
  173:d=5  hl=3 l= 148 cons: SEQUENCE          
  176:d=6  hl=2 l=  11 cons: SET               
  178:d=7  hl=2 l=   9 cons: SEQUENCE          
  180:d=8  hl=2 l=   3 prim: OBJECT            :countryName
  185:d=8  hl=2 l=   2 prim: PRINTABLESTRING   :US
  189:d=6  hl=2 l=  11 cons: SET               
  191:d=7  hl=2 l=   9 cons: SEQUENCE          
  193:d=8  hl=2 l=   3 prim: OBJECT            :stateOrProvinceName
  198:d=8  hl=2 l=   2 prim: UTF8STRING        :CA
  202:d=6  hl=2 l=  20 cons: SET               
  204:d=7  hl=2 l=  18 cons: SEQUENCE          
  206:d=8  hl=2 l=   3 prim: OBJECT            :localityName
  211:d=8  hl=2 l=  11 prim: UTF8STRING        :Santa Clara
  224:d=6  hl=2 l=  26 cons: SET               
  226:d=7  hl=2 l=  24 cons: SEQUENCE          
  228:d=8  hl=2 l=   3 prim: OBJECT            :organizationName
  233:d=8  hl=2 l=  17 prim: UTF8STRING        :Intel Corporation
  252:d=6  hl=2 l=  46 cons: SET               
  254:d=7  hl=2 l=  44 cons: SEQUENCE          
  256:d=8  hl=2 l=   3 prim: OBJECT            :organizationalUnitName
  261:d=8  hl=2 l=  37 prim: UTF8STRING        :Platform Attribute Certificate Issuer
  300:d=6  hl=2 l=  22 cons: SET               
  302:d=7  hl=2 l=  20 cons: SEQUENCE          
  304:d=8  hl=2 l=   3 prim: OBJECT            :commonName
  309:d=8  hl=2 l=  13 prim: UTF8STRING        :www.intel.com
  324:d=2  hl=2 l=  13 cons: SEQUENCE          
  326:d=3  hl=2 l=   9 prim: OBJECT            :sha256WithRSAEncryption
  337:d=3  hl=2 l=   0 prim: NULL              
  339:d=2  hl=2 l=  20 prim: INTEGER           :602967EA7924FDEE6CC150B91E83777D1F427999
  361:d=2  hl=2 l=  34 cons: SEQUENCE          
  363:d=3  hl=2 l=  15 prim: GENERALIZEDTIME   :20170820210748Z
  380:d=3  hl=2 l=  15 prim: GENERALIZEDTIME   :20200820210748Z
  397:d=2  hl=4 l=1198 cons: SEQUENCE          
  401:d=3  hl=2 l=  28 cons: SEQUENCE          
  403:d=4  hl=2 l=   5 prim: OBJECT            :2.23.133.2.17
  410:d=4  hl=2 l=  19 cons: SET               
  412:d=5  hl=2 l=  17 cons: SEQUENCE          
  414:d=6  hl=2 l=   9 cons: SEQUENCE          
  416:d=7  hl=2 l=   1 prim: INTEGER           :02
  419:d=7  hl=2 l=   1 prim: INTEGER           :00
  422:d=7  hl=2 l=   1 prim: INTEGER           :2B
  425:d=6  hl=2 l=   4 prim: OCTET STRING      [HEX DUMP]:00000001
  431:d=3  hl=2 l=  18 cons: SEQUENCE          
  433:d=4  hl=2 l=   5 prim: OBJECT            :2.23.133.2.25
  440:d=4  hl=2 l=   9 cons: SET               
  442:d=5  hl=2 l=   7 cons: SEQUENCE          
  444:d=6  hl=2 l=   5 prim: OBJECT            :2.23.133.8.2
  451:d=3  hl=2 l=  20 cons: SEQUENCE          
  453:d=4  hl=2 l=   5 prim: OBJECT            :2.23.133.2.23
  460:d=4  hl=2 l=  11 cons: SET               
  462:d=5  hl=2 l=   9 cons: SEQUENCE          
  464:d=6  hl=2 l=   1 prim: INTEGER           :01
  467:d=6  hl=2 l=   1 prim: INTEGER           :01
  470:d=6  hl=2 l=   1 prim: INTEGER           :0B
  473:d=3  hl=3 l= 199 cons: SEQUENCE          
  476:d=4  hl=2 l=   5 prim: OBJECT            :2.23.133.2.19
  483:d=4  hl=3 l= 189 cons: SET               
  486:d=5  hl=3 l= 186 cons: SEQUENCE          
  489:d=6  hl=2 l=   1 prim: INTEGER           :00
  492:d=6  hl=2 l= 116 cons: cont [ 0 ]        
  494:d=7  hl=2 l=   3 prim: IA5STRING         :3.1
  499:d=7  hl=2 l=   1 prim: ENUMERATED        :07
  502:d=7  hl=2 l=   1 prim: ENUMERATED        :02
  505:d=7  hl=2 l=   1 prim: BOOLEAN           :0
  508:d=7  hl=2 l=   1 prim: cont [ 0 ]        
  511:d=7  hl=2 l=   5 prim: cont [ 1 ]        
  518:d=7  hl=2 l=  45 cons: cont [ 2 ]        
  520:d=8  hl=2 l=  43 prim: IA5STRING         :https://www.intel.com/protectionprofile.pdf
  565:d=7  hl=2 l=   5 prim: cont [ 3 ]        
  572:d=7  hl=2 l=  36 cons: cont [ 4 ]        
  574:d=8  hl=2 l=  34 prim: IA5STRING         :https://www.intel.com/cctarget.pdf
  610:d=6  hl=2 l=  13 cons: cont [ 1 ]        
  612:d=7  hl=2 l=   5 prim: IA5STRING         :140-2
  619:d=7  hl=2 l=   1 prim: ENUMERATED        :04
  622:d=7  hl=2 l=   1 prim: BOOLEAN           :0
  625:d=6  hl=2 l=   1 prim: cont [ 2 ]        
  628:d=6  hl=2 l=   1 prim: BOOLEAN           :0
  631:d=6  hl=2 l=  42 prim: IA5STRING         :https://www.intel.com/isocertification.pdf
  675:d=3  hl=4 l= 874 cons: SEQUENCE          
  679:d=4  hl=2 l=   7 prim: OBJECT            :2.23.133.5.1.7.2
  688:d=4  hl=4 l= 861 cons: SET               
  692:d=5  hl=4 l= 857 cons: SEQUENCE          
  696:d=6  hl=4 l= 727 cons: cont [ 0 ]        
  700:d=7  hl=4 l= 374 cons: SEQUENCE          
  704:d=8  hl=2 l=  14 cons: SEQUENCE          
  706:d=9  hl=2 l=   6 prim: OBJECT            :2.23.133.18.3.1
  714:d=9  hl=2 l=   4 prim: OCTET STRING      [HEX DUMP]:0000000A
  720:d=8  hl=2 l=   7 prim: UTF8STRING        :ABC OEM
  729:d=8  hl=2 l=  12 prim: UTF8STRING        :WR06X7871FTL
  743:d=8  hl=2 l=   9 prim: cont [ 0 ]        
  754:d=8  hl=2 l=   3 prim: cont [ 1 ]        
  759:d=8  hl=2 l=   7 prim: cont [ 2 ]        
  768:d=8  hl=2 l=   1 prim: cont [ 3 ]        
  771:d=8  hl=2 l=  50 cons: cont [ 4 ]        
  773:d=9  hl=2 l=  23 cons: SEQUENCE          
  775:d=10 hl=2 l=   5 prim: OBJECT            :2.23.133.17.1
  782:d=10 hl=2 l=  14 prim: UTF8STRING        :AF:3A:94:10:A5
  798:d=9  hl=2 l=  23 cons: SEQUENCE          
  800:d=10 hl=2 l=   5 prim: OBJECT            :2.23.133.17.2
  807:d=10 hl=2 l=  14 prim: UTF8STRING        :AF:37:10:D2:A8
  823:d=8  hl=3 l= 207 cons: cont [ 5 ]        
  826:d=9  hl=2 l=  49 cons: cont [ 0 ]        
  828:d=10 hl=2 l=  13 cons: SEQUENCE          
  830:d=11 hl=2 l=  11 prim: OBJECT            :1.3.6.1.4.1.22554.1.2.1
  843:d=10 hl=2 l=  32 prim: OCTET STRING      [HEX DUMP]:6003A33432FD914B6003A33432FD914B6003A33432FD914B6003A33432FD914B
  877:d=9  hl=3 l= 153 cons: cont [ 1 ]        
  880:d=10 hl=3 l= 143 cons: SEQUENCE          
  883:d=11 hl=3 l= 140 cons: cont [ 4 ]        
  886:d=12 hl=3 l= 137 cons: SEQUENCE          
  889:d=13 hl=2 l=  11 cons: SET               
  891:d=14 hl=2 l=   9 cons: SEQUENCE          
  893:d=15 hl=2 l=   3 prim: OBJECT            :countryName
  898:d=15 hl=2 l=   2 prim: PRINTABLESTRING   :US
  902:d=13 hl=2 l=  11 cons: SET               
  904:d=14 hl=2 l=   9 cons: SEQUENCE          
  906:d=15 hl=2 l=   3 prim: OBJECT            :stateOrProvinceName
  911:d=15 hl=2 l=   2 prim: UTF8STRING        :FL
  915:d=13 hl=2 l=  23 cons: SET               
  917:d=14 hl=2 l=  21 cons: SEQUENCE          
  919:d=15 hl=2 l=   3 prim: OBJECT            :localityName
  924:d=15 hl=2 l=  14 prim: UTF8STRING        :Ft. Lauderdale
  940:d=13 hl=2 l=  24 cons: SET               
  942:d=14 hl=2 l=  22 cons: SEQUENCE          
  944:d=15 hl=2 l=   3 prim: OBJECT            :organizationName
  949:d=15 hl=2 l=  15 prim: UTF8STRING        :ABC Corporation
  966:d=13 hl=2 l=  36 cons: SET               
  968:d=14 hl=2 l=  34 cons: SEQUENCE          
  970:d=15 hl=2 l=   3 prim: OBJECT            :organizationalUnitName
  975:d=15 hl=2 l=  27 prim: UTF8STRING        :Platform Certificate Issuer
 1004:d=13 hl=2 l=  20 cons: SET               
 1006:d=14 hl=2 l=  18 cons: SEQUENCE          
 1008:d=15 hl=2 l=   3 prim: OBJECT            :commonName
 1013:d=15 hl=2 l=  11 prim: UTF8STRING        :www.abc.com
 1026:d=10 hl=2 l=   5 prim: INTEGER           :0A354CCDDB
 1033:d=8  hl=2 l=  43 cons: cont [ 6 ]        
 1035:d=9  hl=2 l=  41 prim: IA5STRING         :https://www.abc.com/certs/43843898843.cer
 1078:d=7  hl=4 l= 345 cons: SEQUENCE          
 1082:d=8  hl=2 l=  14 cons: SEQUENCE          
 1084:d=9  hl=2 l=   6 prim: OBJECT            :2.23.133.18.3.1
 1092:d=9  hl=2 l=   4 prim: OCTET STRING      [HEX DUMP]:0000002F
 1098:d=8  hl=2 l=   7 prim: UTF8STRING        :XYZ OEM
 1107:d=8  hl=2 l=  14 prim: UTF8STRING        :LMBT3904DW1T1G
 1123:d=8  hl=2 l=   9 prim: cont [ 0 ]        
 1134:d=8  hl=2 l=   3 prim: cont [ 1 ]        
 1139:d=8  hl=2 l=   7 prim: cont [ 2 ]        
 1148:d=8  hl=2 l=   1 prim: cont [ 3 ]        
 1151:d=8  hl=2 l=  50 cons: cont [ 4 ]        
 1153:d=9  hl=2 l=  23 cons: SEQUENCE          
 1155:d=10 hl=2 l=   5 prim: OBJECT            :2.23.133.17.1
 1162:d=10 hl=2 l=  14 prim: UTF8STRING        :82:89:FA:D3:61
 1178:d=9  hl=2 l=  23 cons: SEQUENCE          
 1180:d=10 hl=2 l=   5 prim: OBJECT            :2.23.133.17.2
 1187:d=10 hl=2 l=  14 prim: UTF8STRING        :D4:83:B4:F2:78
 1203:d=8  hl=3 l= 181 cons: cont [ 5 ]        
 1206:d=9  hl=2 l=  37 cons: cont [ 0 ]        
 1208:d=10 hl=2 l=  13 cons: SEQUENCE          
 1210:d=11 hl=2 l=  11 prim: OBJECT            :1.3.6.1.4.1.22554.1.2.1
 1223:d=10 hl=2 l=  20 prim: OCTET STRING      [HEX DUMP]:3432E1414B60973434323432E1414B6097343432
 1245:d=9  hl=3 l= 139 cons: cont [ 1 ]        
 1248:d=10 hl=3 l= 131 cons: SEQUENCE          
 1251:d=11 hl=3 l= 128 cons: cont [ 4 ]        
 1254:d=12 hl=2 l= 126 cons: SEQUENCE          
 1256:d=13 hl=2 l=  11 cons: SET               
 1258:d=14 hl=2 l=   9 cons: SEQUENCE          
 1260:d=15 hl=2 l=   3 prim: OBJECT            :countryName
 1265:d=15 hl=2 l=   2 prim: PRINTABLESTRING   :US
 1269:d=13 hl=2 l=  11 cons: SET               
 1271:d=14 hl=2 l=   9 cons: SEQUENCE          
 1273:d=15 hl=2 l=   3 prim: OBJECT            :stateOrProvinceName
 1278:d=15 hl=2 l=   2 prim: UTF8STRING        :AZ
 1282:d=13 hl=2 l=  16 cons: SET               
 1284:d=14 hl=2 l=  14 cons: SEQUENCE          
 1286:d=15 hl=2 l=   3 prim: OBJECT            :localityName
 1291:d=15 hl=2 l=   7 prim: UTF8STRING        :Phoenix
 1300:d=13 hl=2 l=  20 cons: SET               
 1302:d=14 hl=2 l=  18 cons: SEQUENCE          
 1304:d=15 hl=2 l=   3 prim: OBJECT            :organizationName
 1309:d=15 hl=2 l=  11 prim: UTF8STRING        :XYC Company
 1322:d=13 hl=2 l=  36 cons: SET               
 1324:d=14 hl=2 l=  34 cons: SEQUENCE          
 1326:d=15 hl=2 l=   3 prim: OBJECT            :organizationalUnitName
 1331:d=15 hl=2 l=  27 prim: UTF8STRING        :Platform Certificate Issuer
 1360:d=13 hl=2 l=  20 cons: SET               
 1362:d=14 hl=2 l=  18 cons: SEQUENCE          
 1364:d=15 hl=2 l=   3 prim: OBJECT            :commonName
 1369:d=15 hl=2 l=  11 prim: UTF8STRING        :www.xyz.com
 1382:d=10 hl=2 l=   3 prim: INTEGER           :0E53B0
 1387:d=8  hl=2 l=  38 cons: cont [ 6 ]        
 1389:d=9  hl=2 l=  36 prim: IA5STRING         :https://www.xyz.com/certs/938928.cer
 1427:d=6  hl=2 l=  47 cons: cont [ 1 ]        
 1429:d=7  hl=2 l=  45 prim: IA5STRING         :https://www.intel.com/platformidentifiers.xml
 1476:d=6  hl=2 l=  27 cons: cont [ 2 ]        
 1478:d=7  hl=2 l=  12 cons: SEQUENCE          
 1480:d=8  hl=2 l=   4 prim: UTF8STRING        :vPro
 1486:d=8  hl=2 l=   4 prim: UTF8STRING        :true
 1492:d=7  hl=2 l=  11 cons: SEQUENCE          
 1494:d=8  hl=2 l=   3 prim: UTF8STRING        :AMT
 1499:d=8  hl=2 l=   4 prim: UTF8STRING        :true
 1505:d=6  hl=2 l=  46 cons: cont [ 3 ]        
 1507:d=7  hl=2 l=  44 prim: IA5STRING         :https://www.intel.com/platformproperties.xml
 1553:d=3  hl=2 l=  44 cons: SEQUENCE          
 1555:d=4  hl=2 l=   6 prim: OBJECT            :2.23.133.5.1.3
 1563:d=4  hl=2 l=  34 cons: SET               
 1565:d=5  hl=2 l=  32 cons: SEQUENCE          
 1567:d=6  hl=2 l=  30 prim: IA5STRING         :https://www.intel.com/PCRs.xml
 1599:d=2  hl=4 l= 581 cons: SEQUENCE          
 1603:d=3  hl=2 l= 124 cons: SEQUENCE          
 1605:d=4  hl=2 l=   3 prim: OBJECT            :X509v3 Certificate Policies
 1610:d=4  hl=2 l= 117 prim: OCTET STRING      [HEX DUMP]:30733071060A2A864886F84D010502043063303106082B06010505070201162568747470733A2F2F7777772E696E74656C2E636F6D2F706C6174636572746370732E706466302E06082B0601050507020230220C20544347205472757374656420506C6174666F726D20456E646F7273656D656E74
 1729:d=3  hl=2 l= 126 cons: SEQUENCE          
 1731:d=4  hl=2 l=   3 prim: OBJECT            :X509v3 Subject Alternative Name
 1736:d=4  hl=2 l= 119 prim: OCTET STRING      [HEX DUMP]:3075A47330713111300F06066781050501010C05496E74656C311530130606678105050102300906072B0601040182573113301106066781050501040C0753323630304B503116301406066781050501050C0A4837363936322D3335303118301606066781050501060C0C42514B503939393430363433
 1857:d=3  hl=3 l= 178 cons: SEQUENCE          
 1860:d=4  hl=2 l=   3 prim: OBJECT            :X509v3 AC Targeting
 1865:d=4  hl=2 l=   1 prim: BOOLEAN           :255
 1868:d=4  hl=3 l= 167 prim: OCTET STRING      [HEX DUMP]:3081A43081A1A0819EA4819B308198310B3009060355040613025553310B300906035504080C0243413114301206035504070C0B53616E746120436C617261311A3018060355040A0C11496E74656C20436F72706F726174696F6E311E301C060355040B0C15454B204365727469666963617465204973737565723116301406035504030C0D7777772E696E74656C2E636F6D3112301006035504051309313238393433373837
 2038:d=3  hl=2 l=  31 cons: SEQUENCE          
 2040:d=4  hl=2 l=   3 prim: OBJECT            :X509v3 Authority Key Identifier
 2045:d=4  hl=2 l=  24 prim: OCTET STRING      [HEX DUMP]:30168014D46990260281D55E834B03976EAB8A9F8F84C983
 2071:d=3  hl=2 l=  54 cons: SEQUENCE          
 2073:d=4  hl=2 l=   8 prim: OBJECT            :Authority Information Access
 2083:d=4  hl=2 l=  42 prim: OCTET STRING      [HEX DUMP]:3028302606082B06010505073001861A68747470733A2F2F7777772E696E74656C2E636F6D2F6F637370
 2127:d=3  hl=2 l=  55 cons: SEQUENCE          
 2129:d=4  hl=2 l=   3 prim: OBJECT            :X509v3 CRL Distribution Points
 2134:d=4  hl=2 l=  48 prim: OCTET STRING      [HEX DUMP]:302E302CA02AA028862668747470733A2F2F7777772E696E74656C2E636F6D2F706C6174666F726D636572742E63726C
 2184:d=1  hl=2 l=  13 cons: SEQUENCE          
 2186:d=2  hl=2 l=   9 prim: OBJECT            :sha256WithRSAEncryption
 2197:d=2  hl=2 l=   0 prim: NULL              
 2199:d=1  hl=4 l= 257 prim: BIT STRING    

現状プラットフォーム証明書を作る方法はNSAから公開されているPaccorのみであり、プロダクション環境で利用する場合秘密鍵の保護や、証明書出力結果の履歴等様々な対応が必要となりますが、現状対応していません。さてシステムインテグレータはどうするべきでしょうか。

各技術の関係性と整理

  • TPM内部にはエンドースメント証明書が封入されている。
  • プラットフォーム証明書はエンドースメント証明書をリンクしている。
  • プラットフォーム証明書には機器の構成が記載されている。
  • RIMはファームウェアを含む、各種ソフトウエアの製造者、バージョン、ソフトウエア名、ハッシュ値を含むSBOMの一種であり、プラットフォーム証明書にRIMリンク先が記載される。

検証方法例

  • 検証対象となるコンピューターのTPMからエンドースメント証明書を取り出す。
  • プラットフォーム証明書とエンドースメント証明書のリンクが正しいか、各証明書が信頼できるか検証を行う。
  • Linuxであればdmidecodeコマンドを利用し現在の機器構成と、プラットフォーム証明書に記載された機器構成情報の比較検証を行う。
  • プラットフォーム証明書に記載されたRIMのリンク先をたどりRIMを取得する。
  • RIMに記載された内容とTPM PCRを検証し値が一致するか比較検証を行う。

上記の手順を行うことによってコンピューターの本体、コンポーネント構成、およびファームウェア、必要に応じてOSの完全性を検証できます。

以下に一部となりますが、TPMおよびエンドースメント証明書、プラットフォーム証明書の関係性を表す画像を紹介いたします。

出典 : NIST 1800-34

3. ゼロトラストとの関係性

本ガイダンスで述べられている技術、TPM、RIM、プラットフォーム証明書は、NSA Shares Recommendations to Advance Device Security Within a Zero Trust Frameworkでも言及されており、ゼロトラストフレームワーク内でのデバイスセキュリティ対策となります。これらの技術は、今後米国連邦政府の各省庁で推進されるゼロトラストセキュリティ対策に組み込まれることが考えられます。

4. 適応領域と期待される効果

現在のサプライチェーンセキュリティ対策では、チェックリスト方式や人海戦術が主流ですが、これらの方法では実際には十分な確認ができていないと考えられます。コンピューターの構成情報やファームウェアの状態を目視で検証することは、手間とコストがかかり非常に困難です。しかし、新しいガイダンスに対応することで、継続的なモニタリングとリスク評価を自動化し、この問題を解決することが可能になります。

5. 結論と今後の見通し

コンピューター機器、組み込まれたソフトウエアのトレーザビリティ対応が進みサプライチェーンセキュリティの強化が図られます。

食品や製薬業界では品質管理の重要な一環として、トレーザビリティ対応が長らく進められてきました。これにより、製品の原材料から最終製品に至るまでの透明性が担保され、消費者の信頼を確保しています(参照:農林水産省 食品トレーサビリティについて)。しかし、コンピューター業界ではこのような取り組みがなぜか遅れていました。

今後、コンピューター業界でもトレーザビリティ対応が進むことにより、システム利用者は使用しているコンピューターの真正性を検証できるようになる見込みです。これは、コンピューターのハードウェアやファームウェアが購入時(工場出荷時)から想定外に変更されていないことを保証する上で重要なステップとなります。特にリモートワークやメンテナンスのアウトソーシングなどにより、想定外の変更の可能性が高まる現代においては、このような対策が不可欠です。

さらに、完全性検証プロセスの自動化が進めば、これまで対応できなかったセキュリティ課題に取り組むことが可能になります。これにより、セキュリティ対策の高度化とともに、セキュリティ対策コストの低減が実現するでしょう。実際に、大手コンピューターメーカーは既に、NSAが公開した「サーバー、ノートパソコン、デスクトップパソコンの調達および受入試験ガイド」の技術要件に対応しており、完全性検証プロセスの自動化に関する実証実験のレポートも、NIST 1800-34として公開されています。興味のある方は、ぜひこのレポートをご覧ください。

このような動きは、コンピューター業界におけるトレーザビリティ対応の重要性を示しています。今後、業界全体がこれらの技術を取り入れ、透明性とセキュリティを一層強化していくことが期待されます。

参考までに「サーバー、ラップトップ、デスクトップコンピュータの調達と受入試験ガイド」の日本語訳を作成いたしました。

こちらのフォームにお問い合わせ種別はその他、所属情報と名前、etc. メールアドレス、お問い合わせ内容に"「サーバー、ラップトップ、デスクトップコンピュータの調達と受入試験ガイド」の日本語訳"を書いてもらうと、ダウンロードURLを記載しましたご案内をメールでいたします。

© 2016 - 2024 DARK MATTER / Built with Hugo / Theme Stack designed by Jimmy