TPM模拟器和TPM2-TSS安装

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相关组件。

  • 环境搭建:

  1. Ubuntu 18.04.4 LTS
  2. IBM TPM Emulator 2.0
  3. Intel tpm2-tss 2.1.0
  4. Intel tpm2-abrmd 2.0.2
  5. Intel tpm2-tools
  6. Openssl lib

TPM模拟器安装

  1. 安装配置所需依赖:
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. 从官网下载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. 进入解压后的目录,然后执行安装命令:
cd src/
sudo make
  1. 将tpm服务器添加到Linux系统执行目录下:
sudo cp tpm_server /usr/local/bin/
  1. 在ubuntu中配置TPM服务(创建tpm.server.service文件和配置服务):
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
  1. 测试TPM配置情况,启动TPM服务:
systemctl daemon-reload
systemctl start tpm-server.service
service tpm-server status

在这里插入图片描述

注 q 退出TPM服务查看状态

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

intel tpm软件包介绍、安装和配置

intel tpm 介绍

  • 为了方便使用TPM,开发者开发了许多TPM应用软件来实现对TPM更好地使用。

各个包功能

  • Tpm-tss该存储库托管实现可信赖计算组(TCG)TPM2软件堆栈(TSS)的源代码。此堆栈由上至下包含以下几层:
  1. TSS 2.0功能API规范 以及TSS 2.0 JSON数据类型和策略语言规范中描述的功能API(FAPI) 此API设计为非常高级的API,旨在使使用TPM的编程尽可能简单。API函数通过单个库libtss2-fapi公开。
  2. 如《TSS 2.0增强系统API(ESAPI)规范》中所述的增强系统API(ESAPI)。该API是TPM2规范的第3部分中记录的TPM2命令的一对一映射。此外,每个命令都有异步版本。除SAPI之外,ESAPI还执行对TPM对象的元数据的跟踪以及基于会话的授权和加密值的自动计算。同步和异步API都通过一个库libtss2-esys公开。
  3. 如系统级API和TPM命令传输接口规范中所述的系统API(SAPI)。该API是TPM2规范的第3部分中记录的TPM2命令的一对一映射。此外,每个命令都有异步版本。这些异步变量对于集成到事件驱动的编程环境中可能很有用。同步和异步API都通过一个库libtss2-sys公开。
  4. 如TCG TSS 2.0 Marshaling / Unmarshaling API Specification中所述的封送/拆组(MU)。该API为TPM库规范定义的所有数据类型提供了一组封送和解封功能。通过称为libtss2-mu的库公开了Marshaling / Unmarshaling API。
  5. 在同一规范中描述的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仿真器公开的协议。
  6. 该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软件安装

Tpm2-tss安装

  1. 添加tss用户
    由于tss套件必须在用户为tss和root下面使用,因此在系统用户中添加tss用户。
sudo useradd --system --user-group tss

在这里插入图片描述
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. 执行安装并配置动态链接
sudo make install
sudo ldconfig


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

tpm2_abrmd安装

  1. 从官网下载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. 设置安装配置
./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

  1. 执行安装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

服务配置文件位置:/lib/systemd/system

在这里插入图片描述

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

在这里插入图片描述


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
    等等
  1. 从官方下载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. 测试tpm2-tools工具连接abrmd服务是否正常
./tools/tpm2_getrandom 4

在这里插入图片描述

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

在这里插入图片描述

  • 23
    点赞
  • 93
    收藏
    觉得还不错? 一键收藏
  • 25
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值