aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation/security
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2019-09-17 19:22:26 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2019-09-17 19:22:26 -0400
commit7c672abc120a55f678e5571ae2ee93f06ca4d7f9 (patch)
tree7beebc09f9626ca8d5f7df4dded0a553de479323 /Documentation/security
parent1902314157b19754e0ff25b44527654847cfd127 (diff)
parentfe013f8bc160d79c6e33bb66d9bb0cd24949274c (diff)
Merge tag 'docs-5.4' of git://git.lwn.net/linux
Pull documentation updates from Jonathan Corbet: "It's a somewhat calmer cycle for docs this time, as the churn of the mass RST conversion is happily mostly behind us. - A new document on reproducible builds. - We finally got around to zapping the documentation for hardware support that was removed in 2004; one doesn't want to rush these things. - The usual assortment of fixes, typo corrections, etc" * tag 'docs-5.4' of git://git.lwn.net/linux: (67 commits) Documentation: kbuild: Add document about reproducible builds docs: printk-formats: Stop encouraging use of unnecessary %h[xudi] and %hh[xudi] Documentation: Add "earlycon=sbi" to the admin guide doc:lock: remove reference to clever use of read-write lock devices.txt: improve entry for comedi (char major 98) docs: mtd: Update spi nor reference driver doc: arm64: fix grammar dtb placed in no attributes region Documentation: sysrq: don't recommend 'S' 'U' before 'B' mailmap: Update email address for Quentin Perret docs: ftrace: clarify when tracing is disabled by the trace file docs: process: fix broken link Documentation/arm/samsung-s3c24xx: Remove stray U+FEFF character to fix title Documentation/arm/sa1100/assabet: Fix 'make assabet_defconfig' command Documentation/arm/sa1100: Remove some obsolete documentation docs/zh_CN: update Chinese howto.rst for latexdocs making Documentation: virt: Fix broken reference to virt tree's index docs: Fix typo on pull requests guide kernel-doc: Allow anonymous enum Documentation: sphinx: Don't parse socket() as identifier reference Documentation: sphinx: Add missing comma to list of strings ...
Diffstat (limited to 'Documentation/security')
-rw-r--r--Documentation/security/tpm/index.rst1
-rw-r--r--Documentation/security/tpm/tpm_event_log.rst55
2 files changed, 56 insertions, 0 deletions
diff --git a/Documentation/security/tpm/index.rst b/Documentation/security/tpm/index.rst
index 487852fda33e..fc40e9f23c85 100644
--- a/Documentation/security/tpm/index.rst
+++ b/Documentation/security/tpm/index.rst
@@ -4,6 +4,7 @@ Trusted Platform Module documentation
4 4
5.. toctree:: 5.. toctree::
6 6
7 tpm_event_log
7 tpm_vtpm_proxy 8 tpm_vtpm_proxy
8 xen-tpmfront 9 xen-tpmfront
9 tpm_ftpm_tee 10 tpm_ftpm_tee
diff --git a/Documentation/security/tpm/tpm_event_log.rst b/Documentation/security/tpm/tpm_event_log.rst
new file mode 100644
index 000000000000..f00f7a1d5e92
--- /dev/null
+++ b/Documentation/security/tpm/tpm_event_log.rst
@@ -0,0 +1,55 @@
1.. SPDX-License-Identifier: GPL-2.0
2
3=============
4TPM Event Log
5=============
6
7This document briefly describes what TPM log is and how it is handed
8over from the preboot firmware to the operating system.
9
10Introduction
11============
12
13The preboot firmware maintains an event log that gets new entries every
14time something gets hashed by it to any of the PCR registers. The events
15are segregated by their type and contain the value of the hashed PCR
16register. Typically, the preboot firmware will hash the components to
17who execution is to be handed over or actions relevant to the boot
18process.
19
20The main application for this is remote attestation and the reason why
21it is useful is nicely put in the very first section of [1]:
22
23"Attestation is used to provide information about the platform’s state
24to a challenger. However, PCR contents are difficult to interpret;
25therefore, attestation is typically more useful when the PCR contents
26are accompanied by a measurement log. While not trusted on their own,
27the measurement log contains a richer set of information than do the PCR
28contents. The PCR contents are used to provide the validation of the
29measurement log."
30
31UEFI event log
32==============
33
34UEFI provided event log has a few somewhat weird quirks.
35
36Before calling ExitBootServices() Linux EFI stub copies the event log to
37a custom configuration table defined by the stub itself. Unfortunately,
38the events generated by ExitBootServices() don't end up in the table.
39
40The firmware provides so called final events configuration table to sort
41out this issue. Events gets mirrored to this table after the first time
42EFI_TCG2_PROTOCOL.GetEventLog() gets called.
43
44This introduces another problem: nothing guarantees that it is not called
45before the Linux EFI stub gets to run. Thus, it needs to calculate and save the
46final events table size while the stub is still running to the custom
47configuration table so that the TPM driver can later on skip these events when
48concatenating two halves of the event log from the custom configuration table
49and the final events table.
50
51References
52==========
53
54- [1] https://trustedcomputinggroup.org/resource/pc-client-specific-platform-firmware-profile-specification/
55- [2] The final concatenation is done in drivers/char/tpm/eventlog/efi.c