TPM(Trusted Platform Module,可信平台模块)是可信计算平台的信任根,是整个平台可信的基点,也是可信计算的关键技术之一。可信平台模块(TPM)是最早实现产业化的可信计算产品,其中2.0为最新版本。
TPM由CPU、储存器、I/O、密码运算器、随机数产生器和嵌入式操作系统等部件组成。同时TPM继承了肯计算平台所需要的大部分安全功能,为平台的可信提供重要支撑。
本实验使用TPM模拟器搭建的实验环境进行实验,模拟器为IBM推出的TPM2.0模拟器。软件栈采用Intel推出的TSS相关组件。
环境搭建:
sudo apt install lcov pandoc autoconf-archive liburiparser-dev libdbus-1-dev libglib2.0-dev dbus-x11 libssl-dev \
autoconf automake libtool pkg-config gcc libcurl4-gnutls-dev libgcrypt20-dev libcmocka-dev uthash-dev
wget https://jaist.dl.sourceforge.net/project/ibmswtpm2/ibmtpm1332.tar.gz
mkdir ibmtpm1332
cd ibmtpm1332/
tar zxvf ../ibmtpm1332.tar.gz
cd src/
sudo make
sudo cp tpm_server /usr/local/bin/
sudo vim /lib/systemd/system/tpm-server.service
在文件中添加以下内容
[Unit]
Description=TPM2.0 Simulator Server Daemon
Before=tpm2-abrmd.service
[Service]
ExecStart=/usr/local/bin/tpm_server
Restart=always
Environment=PATH=/usr/bin:/usr/local/bin
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl start tpm-server.service
service tpm-server status
注 q 退出TPM服务查看状态
此时TPM 模拟器已经成功配置,并启动服务。
tpm2-abrmd是一个守护进程。它应该在操作系统启动过程中启动。使用TPM,守护程序和客户端之间的通信是通过DBus和Unix管道的组合完成的。DBus用于发现,会话管理以及“取消”,“ setLocality”和“ getPollHandles” API调用(大多数尚未实现)。管道用于分别在客户端和服务器之间发送和接收TPM命令和响应。
守护程序在dbus上拥有com.intel.tss2.Tabrmd名称。可以将其配置为连接到系统或会话总线。配置名称选择将是一个方便的功能,但这是将来的工作。
Tpm2-tools为tpm调用其进行可信计算的命令行工具。
sudo useradd --system --user-group tss
wget https://github.com/tpm2-software/tpm2-tss/releases/download/2.1.0/tpm2-tss-2.1.0.tar.gz
tar zxvf tpm2-tss-2.1.0.tar.gz
进入软件目录并进行配置查询。
为了测试各种TCTI、SAPI和ESAPI api等接口,通过定制配置构建来测试单个和整体接口情况,并利用check来构建出目标。
cd tpm2-tss-2.1.0/
./configure --enable-unit --enable-integration
sudo make check
sudo make install
sudo ldconfig
注
tpm2-tss 2.1.0 官网(下载)地址
tpm2-tss 2.1.0 安装指导文件地址
wget https://github.com/tpm2-software/tpm2-abrmd/releases/download/2.0.2/tpm2-abrmd-2.0.2.tar.gz
tar zxvf tpm2-abrmd-2.0.2.tar.gz
cd tpm2-abrmd-2.0.2/
sudo ldconfig
./configure --with-dbuspolicydir=/etc/dbus-1/system.d --with-systemdsystemunitdir=/lib/systemd/system
在配置过程中,添加–with-dbuspolicydir=/etc/dbus-1/system.d选项,这样可以将tpm2-abrmd声明到系统总线上,允许tss账户声明该策略。
同时将tpm2-abrmd添加进系统引导:–with-systemdsystemunitdir=/lib/systemd/system
sudo make install
sudo cp /usr/local/share/dbus-1/system-services/com.intel.tss2.Tabrmd.service /usr/share/dbus-1/system-services/
sudo pkill -HUP dbus-daemon
修改tpm2-abrmd.service服务配置:
在启动服务时加载tss动态库并将服务启动到本地2321端口。
将“ExecStart=/usr/local/sbin/tpm2-abrmd”修改为“ExecStart=/usr/local/sbin/tpm2-abrmd --tcti=“libtss2-tcti-mssim.so.0:host=127.0.0.1,port=2321””
--tcti="libtss2-tcti-mssim.so.0:host=127.0.0.1,port=2321
服务配置文件位置:/lib/systemd/system
systemctl daemon-reload
systemctl start tpm2-abrmd.service
service tpm2-abrmd status
注
tpm2-abrmd 2.0.2 官方(下载)地址
tpm2-abrmd 2.0.2 官方安装文件地址
从官方下载tpm2_tools,由于版本需要与tp2-tss以及tpm2-abrmd,下载版本为tpm2-tools 3.x
关于版本的选择参考网址
git clone -b 3.X https://github.com/tpm2-software/tpm2-tools.git
注 克隆分支下载
cd tpm2-tools/
./bootstrap
./configure
make
./tools/tpm2_getrandom 4
sudo make install
tpm2_pcrlist