国家安全保障局(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が起動するまでに以下の手順で進行します:
-
電源オン:パソコンの電源が入り、UEFIがフラッシュから読み込まれ起動します。
-
POST(Power-On Self-Test):UEFIによるハードウェアの自己診断が行われます。
-
ブートデバイスの選択:UEFIに設定されたブート順序に基づき、OSを読み込む起動デバイスを識別します。
-
ブートローダーの起動:起動デバイスからブートローダーが読み込まれます。ブートローダーは、OSを起動するために必要なファイルやドライバをロードする役割を持ちます。
-
OSのロード:ブートローダーがOSをメモリに読み込み、初期化を開始します。
-
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を記載しましたご案内をメールでいたします。
プライベート認証局「PIV Gateway™ CA」
弊社ではX.509 証明書の発行に加え、プラットフォーム証明書の発行にも対応するプライベート認証局「PIV Gateway™ CA」を開発いたしました。
クラウド環境を利用したプライベート認証局であるため、高額なHSMサーバ費用、環境構築、運用のための人的コストが不要で、クラウドサービスならではのコストパフォーマンスとスケーラビリティを実現しながらサプライチェーンセキュリティの強化が可能になります。
詳細ページよりお気軽にお問い合わせください。