跳到主要内容

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 中的示例所示的只有一个.