1*4ad1ba03SShuo Zhao.. SPDX-License-Identifier: GPL-2.0 2*4ad1ba03SShuo Zhao.. include:: ../../disclaimer-zh_CN.rst 3*4ad1ba03SShuo Zhao 4*4ad1ba03SShuo Zhao:Original: Documentation/security/tpm/tpm_event_log.rst 5*4ad1ba03SShuo Zhao 6*4ad1ba03SShuo Zhao:翻译: 7*4ad1ba03SShuo Zhao 赵硕 Shuo Zhao <zhaoshuo@cqsoftware.com.cn> 8*4ad1ba03SShuo Zhao 9*4ad1ba03SShuo Zhao=========== 10*4ad1ba03SShuo ZhaoTPM事件日志 11*4ad1ba03SShuo Zhao=========== 12*4ad1ba03SShuo Zhao 13*4ad1ba03SShuo Zhao本文档简要介绍了什么是TPM日志,以及它是如何从预启动固件移交到操作系统的。 14*4ad1ba03SShuo Zhao 15*4ad1ba03SShuo Zhao介绍 16*4ad1ba03SShuo Zhao==== 17*4ad1ba03SShuo Zhao 18*4ad1ba03SShuo Zhao预启动固件维护一个事件日志,每当它将某些内容哈希到任何一个PCR寄存器时,该 19*4ad1ba03SShuo Zhao日志会添加新条目。这些事件按类型分类,并包含哈希后的PCR寄存器值。通常,预 20*4ad1ba03SShuo Zhao启动固件会哈希那些即将移交执行权或与启动过程相关的组件。 21*4ad1ba03SShuo Zhao 22*4ad1ba03SShuo Zhao其主要应用是远程认证,而它之所以有用的原因在[1]中第一部分很好地阐述了: 23*4ad1ba03SShuo Zhao 24*4ad1ba03SShuo Zhao认证用于向挑战者提供有关平台状态的信息。然而,PCR的内容难以解读;因此,当 25*4ad1ba03SShuo ZhaoPCR内容附有测量日志时,认证通常会更有用。尽管测量日志本身并不可信,但它们 26*4ad1ba03SShuo Zhao包含比PCR内容更为丰富的信息集。PCR内容用于对测量日志进行验证。 27*4ad1ba03SShuo Zhao 28*4ad1ba03SShuo ZhaoUEFI事件日志 29*4ad1ba03SShuo Zhao============ 30*4ad1ba03SShuo Zhao 31*4ad1ba03SShuo ZhaoUEFI提供的事件日志有一些比较奇怪的特性。 32*4ad1ba03SShuo Zhao 33*4ad1ba03SShuo Zhao在调用ExitBootServices()之前,Linux EFI引导加载程序会将事件日志复制到由 34*4ad1ba03SShuo Zhao引导加载程序自定义的配置表中。不幸的是,通过ExitBootServices()生成的事件 35*4ad1ba03SShuo Zhao并不会出现在这个表里。 36*4ad1ba03SShuo Zhao 37*4ad1ba03SShuo Zhao固件提供了一个所谓的最终事件配置表排序来解决这个问题。事件会在第一次调用 38*4ad1ba03SShuo ZhaoEFI_TCG2_PROTOCOL.GetEventLog()后被镜像到这个表中。 39*4ad1ba03SShuo Zhao 40*4ad1ba03SShuo Zhao这引出了另一个问题:无法保证它不会在 Linux EFI stub 开始运行之前被调用。 41*4ad1ba03SShuo Zhao因此,在 stub 运行时,它需要计算并将最终事件表的大小保存到自定义配置表中, 42*4ad1ba03SShuo Zhao以便TPM驱动程序可以在稍后连接来自自定义配置表和最终事件表的两个事件日志时 43*4ad1ba03SShuo Zhao跳过这些事件。 44*4ad1ba03SShuo Zhao 45*4ad1ba03SShuo Zhao参考文献 46*4ad1ba03SShuo Zhao======== 47*4ad1ba03SShuo Zhao 48*4ad1ba03SShuo Zhao- [1] https://trustedcomputinggroup.org/resource/pc-client-specific-platform-firmware-profile-specification/ 49*4ad1ba03SShuo Zhao- [2] The final concatenation is done in drivers/char/tpm/eventlog/efi.c 50