tpm

https://blog.csdn.net/jianming21/article/details/107942585

 

https://docs.microsoft.com/en-us/windows/security/information-protection/tpm/switch-pcr-banks-on-tpm-2-0-devices

 

 

目录
TPM、TSS以及TPM模拟器简介与安装
TPM简介
TSS简介
TPM模拟器安装环境
TPM模拟器安装
intel tpm软件包介绍、安装和配置
intel tpm 介绍
各个包功能
Inter tpm软件安装
Tpm2-tss安装
tpm2_abrmd安装
tpm2_tools安装
TPM、TSS以及TPM模拟器简介与安装
TPM简介
TPM(Trusted Platform Module,可信平台模块)是可信计算平台的信任根,是整个平台可信的基点,也是可信计算的关键技术之一。可信平台模块(TPM)是最早实现产业化的可信计算产品,其中2.0为最新版本。

TPM由CPU、储存器、I/O、密码运算器、随机数产生器和嵌入式操作系统等部件组成。同时TPM继承了肯计算平台所需要的大部分安全功能,为平台的可信提供重要支撑。

TSS简介
TSS(TCG Software Stack,TCG软件栈)又称为可信软件栈,他是可信计算平台上TPM的支撑软件。TSS的主要作用是为操作系统和应用软件提供使用TPM的接口。TSS的结构可分为内核层、系统服务层和用户程序层。
TPM模拟器安装环境
本实验使用TPM模拟器搭建的实验环境进行实验,模拟器为IBM推出的TPM2.0模拟器。软件栈采用Intel推出的TSS相关组件。

环境搭建:

Ubuntu 18.04.4 LTS
IBM TPM Emulator 2.0
Intel tpm2-tss 2.1.0
Intel tpm2-abrmd 2.0.2
Intel tpm2-tools
Openssl lib
TPM模拟器安装
安装配置所需依赖:
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
1
2
从官网下载TPM模拟器程序ibmtpm1332.tar.gz
wget https://jaist.dl.sourceforge.net/project/ibmswtpm2/ibmtpm1332.tar.gz
1
创建安装目录并将源码解压到对应目录:
mkdir ibmtpm1332
cd ibmtpm1332/
tar zxvf ../ibmtpm1332.tar.gz
1
2
3
进入解压后的目录,然后执行安装命令:
cd src/
sudo make
1
2
将tpm服务器添加到Linux系统执行目录下:
sudo cp tpm_server /usr/local/bin/
1
在ubuntu中配置TPM服务(创建tpm.server.service文件和配置服务):
sudo vim /lib/systemd/system/tpm-server.service
1
在文件中添加以下内容

[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
1
2
3
4
5
6
7
8
9
测试TPM配置情况,启动TPM服务:
systemctl daemon-reload
systemctl start tpm-server.service
service tpm-server status
1
2
3


注 q 退出TPM服务查看状态

此时TPM 模拟器已经成功配置,并启动服务。

intel tpm软件包介绍、安装和配置
intel tpm 介绍
为了方便使用TPM,开发者开发了许多TPM应用软件来实现对TPM更好地使用。
各个包功能
Tpm-tss该存储库托管实现可信赖计算组(TCG)TPM2软件堆栈(TSS)的源代码。此堆栈由上至下包含以下几层:
TSS 2.0功能API规范 以及TSS 2.0 JSON数据类型和策略语言规范中描述的功能API(FAPI) 此API设计为非常高级的API,旨在使使用TPM的编程尽可能简单。API函数通过单个库libtss2-fapi公开。
如《TSS 2.0增强系统API(ESAPI)规范》中所述的增强系统API(ESAPI)。该API是TPM2规范的第3部分中记录的TPM2命令的一对一映射。此外,每个命令都有异步版本。除SAPI之外,ESAPI还执行对TPM对象的元数据的跟踪以及基于会话的授权和加密值的自动计算。同步和异步API都通过一个库libtss2-esys公开。
如系统级API和TPM命令传输接口规范中所述的系统API(SAPI)。该API是TPM2规范的第3部分中记录的TPM2命令的一对一映射。此外,每个命令都有异步版本。这些异步变量对于集成到事件驱动的编程环境中可能很有用。同步和异步API都通过一个库libtss2-sys公开。
如TCG TSS 2.0 Marshaling / Unmarshaling API Specification中所述的封送/拆组(MU)。该API为TPM库规范定义的所有数据类型提供了一组封送和解封功能。通过称为libtss2-mu的库公开了Marshaling / Unmarshaling API。
在同一规范中描述的TPM命令传输接口(TCTI)。该API提供了一个标准接口来发送/接收TPM命令/响应缓冲区。预计将实现任何实现TCTI API的库,作为抽象各种平台特定IPC机制的一种方式。当前,此存储库提供了四个TCTI实现:libtss2-tcti-device,libtss2-tcti-tbs(对于Windows),libtss2-tcti-swtpm和libtss2-tcti-mssim。前者应用于通过Linux内核驱动程序直接访问TPM。后者实现了Microsoft软件TPM2仿真器公开的协议。
该TCG TSS 2.0概述和常用结构规格形成了在这个项目中的所有实现的基础。注意:我们通过将TPM2_NUM_PCR_BANKS的值从3增加到16,以确保与TPM2实现的兼容性(实现了比典型数量更多的PCR库)而偏离了该规范草案。TPM2_NUM_PCR_BANKS的较大值预计将包含在该规范的将来版本中。
tpm2-abrmd是一个守护进程。它应该在操作系统启动过程中启动。使用TPM,守护程序和客户端之间的通信是通过DBus和Unix管道的组合完成的。DBus用于发现,会话管理以及“取消”,“ setLocality”和“ getPollHandles” API调用(大多数尚未实现)。管道用于分别在客户端和服务器之间发送和接收TPM命令和响应。
守护程序在dbus上拥有com.intel.tss2.Tabrmd名称。可以将其配置为连接到系统或会话总线。配置名称选择将是一个方便的功能,但这是将来的工作。

Tpm2-tools为tpm调用其进行可信计算的命令行工具。

Inter tpm软件安装
Tpm软件需按照 tpm2-tss、tpm2-abrmd、tpm2-tools顺序进行安装。
三个软件在github上网址 https://github.com/tpm2-software
Tpm2-tss安装
添加tss用户
由于tss套件必须在用户为tss和root下面使用,因此在系统用户中添加tss用户。
sudo useradd --system --user-group tss
1

2. 从官网下载tpm-tss-2.1.0.tar.gz

wget https://github.com/tpm2-software/tpm2-tss/releases/download/2.1.0/tpm2-tss-2.1.0.tar.gz
1
解压tpm-tss源码:
tar zxvf tpm2-tss-2.1.0.tar.gz
1
进入软件目录并进行配置查询。

为了测试各种TCTI、SAPI和ESAPI api等接口,通过定制配置构建来测试单个和整体接口情况,并利用check来构建出目标。

cd tpm2-tss-2.1.0/
./configure --enable-unit --enable-integration
sudo make check
1
2
3


执行安装并配置动态链接
sudo make install
sudo ldconfig
1
2

tpm2-tss 2.1.0 官网(下载)地址
tpm2-tss 2.1.0 安装指导文件地址

tpm2_abrmd安装
从官网下载tpm2_abrmd安装包
wget https://github.com/tpm2-software/tpm2-abrmd/releases/download/2.0.2/tpm2-abrmd-2.0.2.tar.gz
1
解压文件并进入目录
tar zxvf tpm2-abrmd-2.0.2.tar.gz
cd tpm2-abrmd-2.0.2/
sudo ldconfig
1
2
3
设置安装配置
./configure --with-dbuspolicydir=/etc/dbus-1/system.d --with-systemdsystemunitdir=/lib/systemd/system
1
在配置过程中,添加–with-dbuspolicydir=/etc/dbus-1/system.d选项,这样可以将tpm2-abrmd声明到系统总线上,允许tss账户声明该策略。
同时将tpm2-abrmd添加进系统引导:–with-systemdsystemunitdir=/lib/systemd/system

执行安装make
sudo make install
1
添加tpm2-abrmd进入系统服务
sudo cp /usr/local/share/dbus-1/system-services/com.intel.tss2.Tabrmd.service /usr/share/dbus-1/system-services/
1
重启DBUS
sudo pkill -HUP dbus-daemon
1
修改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
1
服务配置文件位置:/lib/systemd/system

 

测试服务:
systemctl daemon-reload
systemctl start tpm2-abrmd.service
service tpm2-abrmd status
1
2
3



tpm2-abrmd 2.0.2 官方(下载)地址
tpm2-abrmd 2.0.2 官方安装文件地址

tpm2_tools安装
tpm2_tools为用户提供了使用TPM资源的几个命令,如:
tpm2_create : 创建key
tpm2_sign : startup TPM, 相于初始化TPM
tpm2_listpcrs: 打印出TPM中所有的pcrs值
tpm2_send_command: 可以发送字节流命令
tpm2_hash : hash
等等
从官方下载tpm2_tools,由于版本需要与tp2-tss以及tpm2-abrmd,下载版本为tpm2-tools 3.x

关于版本的选择参考网址

git clone -b 3.X https://github.com/tpm2-software/tpm2-tools.git
1
注 克隆分支下载

进入目录中:
cd tpm2-tools/
1
执行bootstarp、config和make
./bootstrap
./configure
make
1
2
3
测试tpm2-tools工具连接abrmd服务是否正常
./tools/tpm2_getrandom 4
1


执行安装
sudo make install
1
打印pcr情况,查看输出是否正常
tpm2_pcrlist
1

————————————————
版权声明:本文为CSDN博主「jianming21」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/jianming21/article/details/107942585

posted @ 2021-03-02 16:15  zJanly  阅读(1312)  评论(0编辑  收藏  举报