可信平台模块/1.2
< 可信平台模块
TPM 1.2 使用 IBM 开发的 “TrouSerS” TSS (TCG软件栈) 。该软件栈包主要包含两个主要部分:trousersAUR (提供tcsd守护进程) 和tpm-toolsAUR (提供用户空间工具) 。所有软件都通过tcsd守护进程访问 TPM。
驱动程序
现代内核已原生支持 TPM 驱动程序,但可能需要手动加载:
# modprobe tpm
根据芯片组的不同,你可能还需要加载以下驱动程序之一:
# modprobe -a tpm_{atmel,infineon,nsc,tis,crb}
使用方法
TPM 1.2 由tcsd管理,这是一个管理可信计算机资源的普通用户空间守护进程。根据 TSS 规范,它是访问 TPM 设备驱动程序的唯一门户。tcsd是trousersAUR软件包的一部分 (由 IBM 创建并发布) ,可以通过/etc/tcsd.conf进行配置。
若要启动tcsd并查看输出,请运行:
# tcsd -f
当tcsd运行后,你可能还想安装tpm-toolsAUR,它提供了许多用于管理 TPM 的命令行工具。
其他值得关注的工具:
- tpmmanager — tpm-tools的 Qt 图形界面前端
- opencryptoki — Linux下的 PKCS#11 实现。它包含启用 IBM 加密硬件的驱动程序和库,以及用于测试软件的令牌 (Token)。
基础操作
首先,获取基础版本信息:
$ tpm_version
接着运行自检 (selftest):
$ tpm_selftest -l info
TPM Test Results: 00000000 ... tpm_selftest succeeded
保护 SSH 密钥
利用 TPM 保护密钥的方法有很多种,这里介绍一种基于simple-tpm-pk11-gitAUR的简便方法。
首先,创建一个新目录并生成密钥:
$ mkdir ~/.simple-tpm-pk11 $ stpm-keygen -o ~/.simple-tpm-pk11/my.key
在配置文件中指向该密钥:
~/.simple-tpm-pk11/config
key my.key
现在配置 SSH 以使用正确的 PKCS11提供程序 (Provider):
~/.ssh/config
Host *
PKCS11Provider /usr/lib/libsimple-tpm-pk11.so
之后便可以使用该 PKCS11 提供程序来生成密钥 (用于提取公钥):
$ ssh-keygen -D /usr/lib/libsimple-tpm-pk11.so
注意:该方法目前不支持生成和使用多个密钥。
故障排除
tcsd.service 启动失败
安装trousersAUR后,由于权限问题,tcsd.service服务可能无法正常启动。你可以通过重启系统或触发trousersAUR软件包中包含的udev规则来解决此问题:
# udevadm control --reload-rules # udevadm trigger