将密钥封存至 TPM  [draft]

创建主键 tpm2_createprimary -Q -C o -c ~/tpm/primary.context 创建当前 TPM 的签名 (可选) pcr_bank 可选 sha1 sha256 pcr_id 功能如下表,一般来说 “0,1,3,7” 即可 PCR USE NOTES PCR0 核心系统固件可执行代码(又名固件) 如果您升级 UEFI,可能会发生变化 PCR1 核心系统固件数据(又名 UEFI 设置) PCR2 扩展或可插入的可执行代码 PCR3 扩展或可插拔固件数据 在 Boot Device Select UEFI 引导阶段设置 PCR4 引导管理器代码和引导尝试 测量引导管理器和固件尝试从中引导的设备 PCR5 引导管理器配置和数据 可以测量引导加载程序的配置;包括 GPT 分区表 PCR6 从 S4 和 S5 电源状态事件恢复 PCR7 安全启动状态 包含 PK/KEK/db 的全部内容,以及用于验证每个启动应用程序的特定证书 PCR8 内核命令行的哈希 由grub和systemd-boot支持 PCR9 initrd 的哈希 预定 linux v5.17 PCR10 保留供将来使用 PCR11 BitLocker 访问控制 PCR12 数据事件和高波动事件 PCR13 引导模块详细信息 PCR14 引导权限 PCR15-23 保留供将来使用 tpm2_pcrread -Q "sha256":"0,1,2,3,7" -o "$TMP"/pcr....

June 25, 2022 · 1 min · 张某

使用 Grub 构建统一内核映像

统一内核映像是单个可执行文件,可以直接从 UEFI 固件启动,或者由引导加载程序自动获取,只需很少或没有配置。 准备 Grub 配置文件 此配置文件和普通 Grub 配置文件一样,一下只是适配我电脑的配置,默认情况下 Grub 的 root 为 (memdisk). ~/SecureBoot/grub.cfg ----- menuentry 'Gentoo' --class gentoo --class gnu-linux --class gnu --class os{ insmod all_video linux /vmlinuz root=/dev/sda1 initrd /initramfs.img } 构建 EFI 文件 使用 grub-mkstandalone 构建单一的内核映像, 将命令中的 vmlinuz-5.15.41-gentoo 以及 iniramfs-5.14.41-gentoo 替换为自己的内核及 initramfs. grub-mkstandalone --direcotry /usr/lib/grub/x86_64-efi --format x86_64-efi --disable-shim-lock --output grub.efi /vmlinuz=/boot/vmlinuz-5.15.41-gentoo /initramfs.img=/boot/initramfs-5.14.41-gentoo /boot/grub/grub.cfg=~/SecureBoot/grub.cfg 签名 EFI 文件 (可选) 如果使用了安全启动,可以对 EFI 文件进行签名. sbsign --key ~/keys/db.key --cert ~/keys/db.crt --output grub....

June 25, 2022 · 1 min · 张某

自签名安全启动 Grub 设置

最近配置了自签名的安全启动。生成证书可以参考 ArchWiki 因为启用安全启动grub会启动验证模式,会对所有从硬盘读取的文件进行签名验证,如果要从硬盘读取模块需要给所有的模块签名。为了避免麻烦可以生成 standalone 的 efi 文件,该文件包含一个 memdisk 其包含了所有的模块。并且我们没有使用垫片,可以关闭垫片验证程序( disable-shim-lock ),所以生成命令如下。 grub-mkstandalone --directroy /usr/lib/grub/x86_64-efi --format x86_64-efi --disable-shim-lock --output grub.efi /boot/grub/grub.cfg=grub-pre.cfg 其中 /boot/grub/grub.cfg=grub-pre.cfg 代表将 grub-pre.cfg 放入 memdisk 的 /boot/grub/grub.cfg 中。grub-pre.cfq 为grub启动后执行的第一个配置,负责基础的模块调用。内容如下。其中必须要加载 tpm 模块对内核进行验证。 insmod part_gpt insmod mdraid09 insmod mdraid1x insmod ext2 insmod lvm insmod luks insmod tpm cryptomount .... set root=... configfile /grub/grub.cfg 参考 Grub 帮助论坛 Gentoo 帮助论坛

April 20, 2022 · 1 min · 张某