TPM Emulator 安装与使用教程
1. 项目的目录结构及介绍
TPM Emulator 项目采用模块化设计,主要包含以下核心目录:
- crypto/:加密算法实现模块,包含RSA、HMAC、SHA1等加密相关源码
- tpm/:TPM核心功能模块,实现TPM 1.2标准的各种命令和处理逻辑
- mtm/:移动可信模块(MTM)支持,可选编译模块
- tddl/:TSS设备驱动库,提供与上层应用的接口
- tpmd/:TPM守护进程,包含Unix和Windows平台的实现
- tpmd_dev/:内核模块,提供/dev/tpm设备接口支持
项目采用CMake构建系统,根目录下的CMakeLists.txt定义了整个项目的构建配置。
2. 项目的启动文件介绍
TPM Emulator的启动主要涉及以下关键文件:
核心守护进程:tpmd目录下的tpmd.c文件实现了TPM模拟器守护进程,支持以下启动参数:
tpmd [-d] [-f] [-s storage file] [-u unix socket name]
[-o user name] [-g group name] [-h] [startup mode]
Windows控制脚本:tpmd/windows/control_tpmd.bat提供了Windows平台的服务管理功能:
control_tpmd.bat install # 安装服务
control_tpmd.bat start # 启动服务
control_tpmd.bat stop # 停止服务
Linux内核模块:tpmd_dev/linux/tpmd_dev.c实现了/dev/tpm设备转发模块。
3. 项目的配置文件介绍
TPM Emulator主要通过编译时配置和运行时参数进行配置:
编译配置:config.h.in模板文件生成config.h,定义平台相关的路径和设置:
- TPM_STORAGE_NAME:TPM状态存储文件路径
- TPM_SOCKET_NAME:Unix域套接字路径
- TPM_DEVICE_NAME:设备文件路径
设备规则:tpmd_dev/linux/tpmd_dev.rules.in包含udev规则配置,确保正确的设备权限。
构建选项:通过CMake选项控制功能:
cmake ../ -DMTM_EMULATOR=ON # 启用MTM支持
cmake ../ -DBUILD_DEV=OFF # 禁用内核模块构建
4. 安装与编译步骤
前提条件
- CMake 2.6或更高版本
- GNU MP库(gmp)4.0或更高版本
- 开发工具链(gcc、make等)
编译安装
# 克隆项目
git clone https://gitcode.com/gh_mirrors/tp/tpm-emulator
# 创建构建目录
cd tpm-emulator
mkdir build
cd build
# 配置和编译
cmake ../
make
# 安装
sudo make install
启动TPM模拟器
Linux系统:
# 加载内核模块
sudo modprobe tpmd_dev
# 启动守护进程
sudo tpmd
Windows系统:
# 安装并启动服务
control_tpmd.bat install
control_tpmd.bat start
5. 使用示例
测试TPM功能
使用内置的测试工具验证TPM功能:
cd tddl/
make test_tddl
./test_tddl
与TPM/J集成示例
# 设置类路径
export CLASSPATH=tpmj.jar:bcprov-jdk15-131.jar:$CLASSPATH
# 运行TPM信息工具
java edu.mit.csail.tpmj.tools.TPMInfo
6. 故障排除
常见问题
-
首次启动失败:首次运行需使用clear模式
tpmd clear -
权限问题:确保对/dev/tpm有访问权限
-
存储文件问题:删除旧的存储文件重新初始化
恢复模式
如果TPM进入fail-stop模式:
tpmd deactivated
killall tpmd
tpmd clear
TPM Emulator提供了一个完整的软件TPM解决方案,支持TPM 1.2标准的所有功能,适用于开发、测试和教育用途。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



