2021 年 06 月 25 日
Root of Trust とは?その定義と用途
先般ご紹介した、「IEC62443-4-2」にて定義されるセキュリティ要件の一つとして「組込デバイスは、プロビジョニング(デバイスと認証情報の紐づけ)および機密性、整合性、および信頼性を担保する機能を提供するものとし、これらは、デバイスの製造時に 1 つ以上の "Root of Trust" によって保護された製品サプライヤーの鍵とデータを使用する必要があります。」と記載されています。本記事では「Root of Trust」(以下、RoT)について解説します。「Root of Trust(RoT)」とは、日本語に訳すと、「信頼の基点」となり、米国政府の調達基準等を策定する組織である「NIST(アメリカ国立標準技術研究所)」においては、以下のように定義されています。
RoT とは、デバイスの信頼性を保証するための、ハードウェア / ソフトウェアコンポーネントを指す。
- 物理・論理攻撃に対し、安全な設計がされていること。
- 小さく、かつ、保護されていること。
- ハードウェアで実装するか、ハードウェアで保護することが望ましい。
また、RoT は、セキュリティ上重要な、以下のような機能を提供する。
- ソフトウェアの完全性検証機能
- デバイス認証機能
- 検証、認証、暗号鍵、ホワイトリストの保護機能
図 1 RoT のイメージ
「ソフトウェアの完全性検証機能」とは、「セキュアブート」、および、「セキュアアップデート」を行う仕組みを指します。
- セキュアブート:デバイス起動時に、OS、アプリケーションが改ざんされていないことを検証してから起動する仕組み
- セキュアアップデート:OS、アプリケーション更新時に、更新情報が改ざんされていないこと、信頼できる開発元から提供されていることを検証する仕組み
これらの完全性を検証する際に使用する「検証鍵」、「ホワイトリスト」については、改ざんから保護する仕組みが求められます。
また、「デバイス認証機能」において使用する、「認証鍵」や、デバイス内部で扱うデータや通信するデータの機密性を担保するための「暗号鍵」については、改ざんからの保護だけでなく、不正アクセス(読取りや不正利用)に対して保護するする仕組みも必要となります。
なお、本記事においては、上記の内 「検証鍵」、「認証鍵」を「Trust Anchor」と呼ぶこととします。
Root of Trust はなぜ必要か
では、なぜ組込デバイスには、RoT が必要となるのでしょうか。
近年政府が推進する「Society 5.0」の世界においては、従来独立したネットワーク上で稼働していた、様々な機器が相互にデータ交換を行うようになります。そのような複雑なシステムでは、従来のセキュリティの考え方である「境界型セキュリティ(インターネットを境界としてファイアーウォールでアクセス制御する)」ではサイバー攻撃を防ぐことが難しくなり、今後は「Zero Trust Architecture(ネットワークに接続されるすべてのデバイスが個々にセキュリティ対策を行い、多層的に防御する)」が求められます。
「Zero Trust Architecture」に関する詳しい記事はこちらを参照ください。
図 2 Society5.0 時代のセキュリティ対策
「Zero Trust Architecture」においては、なりすまし困難な方法によるデバイスの認証が重要となりますが、人間の操作を介さずに自律的に動作する機器の場合、「基本的な機器の認証に加え、起動時に ID パスワードを入力する」といったような多要素の認証処理を行うことができません。
また、移動体や屋外等の第三者から物理的なアクセスが容易な場所に設置されるような機器については、近接や物理攻撃に対するセキュリティ対策を備える必要があり、具体的には、デバイスの中の認証情報や完全性を保証する機構について、物理的な攻撃に備え、認証情報の読取りや改ざんを防ぐ仕組みを持つ必要があります。
Trust Anchor を保護する仕組み
Trust Anchor を保護する仕組みとしては、概ね以下の 3 パターンが考えられます。
- OS 機能によって保護
- ハイパーバイザにより保護
- ハードウェアとして分離
「OS 機能によって保護」とは、Trust Anchor を通常のメモリ/ファイルシステム上に配置し、OS のアクセス制御機能によって保護する構成です。OS 制御外からの不正アクセス対策として、Trust Anchor の暗号化および暗号ライブラリの難読化が必須となります。また、OS、アプリケーションの完全性を担保するためセキュアブートと組合せることが推奨されます。
この構成では、脆弱性を突いた攻撃により、OS や暗号ライブラリを乗っ取られた場合、Trust Anchor の情報が漏洩するリスクがあります。
図 3 Trust Anchor を OS 機能によって保護
「ハイパーバイザにより保護」とは、OS およびメモリ領域の一部をハイパーバイザ等の機能によりアクセス制限し、そこに Trust Anchor を配置、保護する構成です。ハイパーバイザ、OS、アプリケーションの完全性を担保するためセキュアブートの実装、および、ハイパーバイザ制御外からの不正アクセス対策として、Trust Anchor の暗号化および暗号ライブラリの難読化も必須となります。
この構成の場合、脆弱性を突いた攻撃によりノーマル OS 側が乗っ取られた場合でも、Trust Anchor の情報が漏洩するリスクはありません。ただし、ハイパーバイザの脆弱性や 2018 年に報道された、「Spectre」、「Meltdown」のように、CPU やメモリを共用していることに起因する脆弱性に対しては、保護できないリスクがあります。
図 4 Trust Anchor をハイパーバイザにより保護
「ハードウェアとして分離」とは、ハードウェア的に独立したメモリ領域(セキュアエレメント内のストレージ)上に Trust Anchor を配置、保護する構成です。Trust Anchor は「セキュアエレメント」により保護されているため暗号化は必要ありませんが、Trust Anchor の不正利用から保護するため暗号ライブラリの難読化、および、ハイパーバイザ、OS、アプリケーションの完全性を担保するためセキュアブートの実装が推奨されます。
この構成の場合、「セキュアエレメント」は物理攻撃から保護されており、また、CPU やメモリを共用しないため、ソフトウェア的な脆弱性を突いた攻撃に対しても、Trust Anchor の情報が漏洩するリスクはありません。
なお、「セキュアエレメント」の実装方式として、主に 2 通りの方式があります。
- 独立した SoC として提供され、SPI や I2C 等の I/F で接続する方式
- セキュアエレメントの IP を同一 SoC 内に内蔵する方式
後者の方が、内部回路で接続されるため、物理攻撃に強く、処理速度が速いという利点があります。(SoC が専用設計となるためコストは高くなります。)
図 5 Trust Anchor をハードウェアとして分離
耐タンパ技術について
RoT を構成する重要な部品である「セキュアエレメント」において、IC チップの内部情報および内部構造の解析を目的とした攻撃に対して、情報を保護する技術を「耐タンパ技術」といいます。「耐タンパ技術」は、ソフトウェアによる実装技術と、ハードウェアによる実装技術があります。
- ハードウェア耐タンパ技術
サイドチャネル攻撃等、物理的な攻撃に対する防御技術。漏洩電磁波対策、シャーシの堅牢化、分解時における自己破壊機構などによって実現する。 - ソフトウェア耐タンパ技術
リバースエンジニアリングやマルウェア感染等、ソフトウェア的な攻撃に対する防御技術。デバッガ妨害処理、冗長処理の挿入、難読化・暗号化、セキュアブート等アクセス制御などによって実現する。
最後に
本記事では、Society 5.0 時代のセキュリティの考え方「Zero Trust Architecture」において、デバイスセキュリティ対策の基礎となる「Root of Trust」について解説しました。「Root of Trust」は、デバイス内の「検証鍵」や「認証鍵」等の「Trust Anchor」を保護する仕組みですが、別途、これらの鍵を安全に生成/書込み、更新、管理する仕組みが必要となることに注意が必要です。