3.2. 分层认证环境
3.2. 分层认证环境
根据定义,Attester 角色生成 Evidence。Attester 可能由一个或多个嵌套环境(层)组成。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 包含两组 Claims:一组是关于引导加载程序的 Claims,由 BIOS 测量和签名;另一组是关于内核的 Claims,由引导加载程序测量和签名。
此示例可以进一步扩展,使内核成为应用程序的另一个 Attesting Environment,而应用程序作为另一个 Target Environment。这将导致 Evidence 中关于该应用程序的第三组 Claims。
此示例的本质是一系列分段环境。每个环境都有责任在启动下一个环境之前测量下一个环境。通常,层数可能因设备或实现而异,并且 Attesting Environment 甚至可能有多个它测量的 Target Environments,而不是像图 3 中的示例所示的只有一个。