メインコンテンツまでスキップ

3.2. 階層化認証環境

3.2. 階層化認証環境

定義により、Attester ロールは Evidence を生成します。Attester は、1 つ以上のネストされた環境(レイヤー)で構成される場合があります。Attester の最下層には、通常、悪意のあるコードによって変更できない、または変更が困難になるように設計された Attesting Environment があります。Attester によって生成された Evidence を評価するために、Verifier は最下層の Attesting Environment を含むさまざまなレイヤーを信頼する必要があります。最下層を含む Attester のレイヤーへの信頼は、セクション 7.4 で説明されているように、さまざまな方法で確立できます。

階層化認証では、Claims は初期レイヤーから始まる各レイヤーから、または各レイヤーについて収集できます。対応する Claims は、Attester のレイヤーのネストを反映したネストされた方法で構造化できます。通常、Claims は自己主張されません。むしろ、前のレイヤーが次のレイヤーの Attesting Environment として機能します。初期レイヤーに関する Claims は通常、Endorser によって主張されます。

図 3 に示す例のデバイスには、(A) 読み取り専用メモリに格納された BIOS、(B) ブートローダー、および (C) オペレーティングシステムカーネルが含まれています。

          .-------------.   Endorsement for ROM
| Endorser +-----------------------.
'-------------' |
v
.-------------. Reference .----------.
| Reference | Values for | |
| Value +----------------->| Verifier |
| Provider(s) | ROM, bootloader, | |
'-------------' and kernel '----------'
^
.------------------------------------. |
| | |
| .---------------------------. | |
| | Kernel(C) | | |
| | | | | Layered
| | Target | | | Evidence
| | Environment | | | for
| '---------------+-----------' | | bootloader
| Collect | | | and
| Claims | | | kernel
| .---------------|-----------. | |
| | Bootloader(B) v | | |
| | .-----------. | | |
| | Target | Attesting | | | |
| | Environment |Environment+-----------'
| | | | | |
| | '-----------' | |
| | ^ | |
| '--------------+--|---------' |
| Collect | | Evidence for |
| Claims v | bootloader |
| .-----------------+---------. |
| | ROM(A) | |
| | | |
| | Attesting | |
| | Environment | |
| '---------------------------' |
| |
'------------------------------------'

図 3: 階層化 Attester

最初の Attesting Environment(この例では ROM)は、ブートローダー(最初の Target Environment)の完全性を保証する必要があります。起動する可能性のあるカーネルは複数ある可能性があり、決定はブートローダーに任されています。完全性が保たれたブートローダーのみが適切な決定を行います。したがって、ブートローダーの完全性に関連する Claims は安全に測定される必要があります。デバイスの起動サイクルのこの段階では、収集された Claims は通常、Evidence に構成することはできません。

起動シーケンスが開始された後、BIOS は階層化認証の最も重要で定義的な機能を実行します。正常に測定されたブートローダーが、次のレイヤーの Attesting Environment になります(または含みます)。階層化認証におけるこの手順は、「ステージング」と呼ばれることがあります。ブートローダーが BIOS によって収集された自身に関する Claims を変更できないようにすることが重要です。これは、これらの Claims を BIOS によって署名するか、BIOS によって改ざん防止方式で保存することで保証できます。

この例を続けると、ブートローダーの Attesting Environment は、次の Target Environment に関する Claims を収集する責任を負います。この例では、起動されるカーネルです。したがって、最終的な Evidence には 2 つの Claims セットが含まれます。1 つは BIOS によって測定および署名されたブートローダーに関する Claims セット、もう 1 つはブートローダーによって測定および署名されたカーネルに関する Claims セットです。

この例は、カーネルをアプリケーションの別の Attesting Environment にし、アプリケーションを別の Target Environment にすることで、さらに拡張できます。これにより、そのアプリケーションに関する第 3 の Claims セットが Evidence に含まれることになります。

この例の本質は、段階的な環境のカスケードです。各環境は、次の環境が開始される前に次の環境を測定する責任があります。一般に、レイヤーの数はデバイスや実装によって異なる場合があり、Attesting Environment は、図 3 の例に示されているように 1 つだけでなく、測定する複数の Target Environments を持つ場合もあります。