可信计算基础实验一——开发环境的搭建(kali)
可信计算基础实验一——开发环境的搭建(kali)
TPM仿真环境结构
上图即为TPM仿真环境软件包依赖关系图,按由下往上按部就班的进行安装。
安装步骤
1.m4与gmp的安装
依照软件包依赖关系图,我们看到安装gmp前,我们要先安装m4。
m4简介:m4 是一种宏处理器,它扫描用户输入的文本并将其输出,期间如果遇到宏就将其展开后输出。m4 可用作编译器的前端,或者单纯作为宏处理器来用。
m4的安装很简单,只需使用命令行即可安装:sudo apt-get install m4
gmp简介:gmp是一个可以进行任意精度算术的自由库,可以操作有符号整数、有理数和浮点数。gmp的主要目标应用是密码学应用与研究、互联网安全应用、代数系统、计算代数研究等。gmp基于m4,所以在安装gmp之前要先安装m4。
这里我下载的版本为gmp-6.2.0.tar.xz
依次执行以下命令(这里一般不会出现问题):
- xz -d gmp-6.2.0.tar.xz
- tar xvf gmp-6.2.0.tar
- cd gmp-6.2.0
- ./configure
- make
- make check
- make install
安装完成:
2.安装cmake
cmake简介:CMake 是一个跨平台的自动化建构系统,它使用一个名为 CMakeLists.txt 的文件来描述构建过程,可以产生标准的构建文件,如 Unix 的 Makefile 或Windows Visual C++ 的 projects/workspaces 。
安装cmake也使用命令行进行安装sudo apt-get install cmake
3.安装TPM-Emulator
选择tpm-emulator-0.7.5.tar.gz
进行下载
该程序主要包含三个部分:
(1)tpmd:实现 TPM 仿真器的用户空间应用程序,可以通过 Unix 域套接字(Unix)或命名管道(Windows)进行访问。
(2)tpmd_dev:一个内核模块,它提供设备 /dev/tpm 以实现向后兼容,并将收到的命令转发给 tpmd(仅限Unix和Mac OS X)。
(3)tddl:TPM 仿真器的 TSS 符合设备驱动程序库。
安装命令:
- tar -zxvf tpm-emulator-0.7.5.tar.gz
- cd tpm-emulator-0.7.5
- mkdir build
- cd build
- cmake ../
- make
- sudo make install
在make步骤中可能会出现以下错误
make: *** /lib/modules/5.4.0-kali4-amd64/build: 没有那个文件或目录。 停止。
make[3]: *** [all] 错误 2
make[2]: *** [tpmd_dev/linux/tpmd_dev.ko] 错误 2
make[1]: *** [tpmd_dev/CMakeFiles/tpmd_dev.dir/all] 错误 2
make: *** [all] 错误 2
这个错误原因就是缺少了5.4.0-kali4-amd64
这个文件,这个是kali的内核头文件。这里有两种可能,一是这个文件确实不存在,另一种可能是文件存在但是没有进行软链接。
这里我们可以使用cd /lib/modules/5.4.0-kali4-amd64
到目录中,输入ls -l
看到以下内容:
这里我们看到没有显示建立软链接。
然后我们输入cd /usr/src
,看到此目录下也没有任何文件,由此我们可以判断本机上并不存在此内核头文件,因此要进行安装,安装命令为:sudo apt-get install linux-headers-$(uname -r)
(可以先执行sudo apt-get update
)。
分支问题: 这里我还遇到了另一个问题,命令是没错的但始终无法进行下载,这里我使用uname -a
查看了我kali的内核版本为5.4.0-kali3-amd64
,使用sudo apt-get update
后执行sudo apt-get dist-upgrade
更新内核后解决(这个实际上是将所有内容都更新,速度会有点慢)这个问题在处理时没有进行截图,因此没能在过后继续研究,可能问题表述不是很正确,大致思路写在这里仅供参考。
成功安装好内核头文件后重新回到刚才查看的两个目录下,内容应该是这样的:
/lib/modules/5.4.0-kali4-amd64:
/usr/src:
重新进行回到tpm-emulator安装包中即可成功进行make
操作。
如果是有内核文件而没有进行软链接可以参考这个链接。
4.初始化并启动TPM-Emulator
初始化TPM-Emulator
使用以下命令进行初始化:
- tpmd deactivated
- killall tpmd
- tpmd clear
初始化的过程中也不会遇到什么问题。
启动TPM-Emulator
要想在 Unix 或 Mac OS X 上使用 TPM 仿真器,必须先启动 TPM 仿真器的守护程序(tpmd)并加载 TPM 设备转发模块(tpmd_dev)。
使用以下两条命令:
- modprobe tpmd_dev
- tpmd -f -d
如果在执行第一条命令的时候遇到:Module tpmd_dev not found
,则执行命令depmod -a
.
如果在执行第二条命令时遇到:failed: address already in use
,则sudo rm -f 括号中的内容
这里我遇到的问题其实是“modprobe”这条命令根本就找不到!上网搜索的结果没有特别明确针对此问题的解决措施,不过通过网页上对于此问题与linux-image
有关的说明,结合刚刚下载头文件的命令,我得出了以下命令:sudo apt-get install --reinstall linux-image-$(uname -r)
,输入后重新安装了本机的linux-image
,modprobe命令可用了!(如果还不可用记得加sudo)
5.安装TSS协议栈
下载地址
我下载的版本为:trousers-0.3.14.tar.gz
先为tousers创建一个目录,再对其进行解压
- mkdir trousers-0.3.14
- tar -zxvf trousers-0.3.14.tar.gz -C trousers-0.3.14
- cd trousers-0.3.14
安装如下依赖包
vi README
,我们可以看到有如下依赖包需要安装:
依次通过命令行进行安装即可,其中openssl我已经安装但是在过后还是报错,这里其实缺少的是“openssl-devel”包,使用sudo apt-get install libssl-dev
进行安装。还有几个包没有找到,但是不会出什么问题。
编译和安装
- sh bootstrap.sh(没有就不用执行)
- ./configure
- make
- sudo make install
注意⚠️: 实验指导书中有修改Makefile.am
和Makefile.in
的步骤,但都是针对trousers-0.3.8
左右版本的教程,当前版本无需进行这步操作。
TCSD启动方式
执行此条命令进行启动(首先要启动TPM_Emulator):tcsd -e -f
。
如果遇到错误:TCSD TCS ERROR: TCS GetCapability failed with result = 0x1c
就带上clear
参数重启TPM_Emulator。
安装tpm-tools
tpm-tools 是一组管理和利用可信计算组织的 TPM 硬件的工具。 TPM 硬件可以安全地创建,存储和使用 RSA密钥(不会暴露在内存中),使用加密哈希等来验证平台的软件状态。该程序包含的工具允许平台管理员管理和诊断平台的 TPM 硬件。
命令行输入sudo apt-get install tpm-tools
即可安装。
至此,我们的TPM实验环境就应该已经搭建完成了。
测试环境是否搭建成功
- 首先启动tpmd(启动方式见上)
- 再另一个终端启动tcsd(启动方式见上)
- 再开一个终端使用tpm-tools工具的命令进行测试
分别输入以下命令查看显示内容(记得加sudo):
- tpm_version
- tpm_getpubek
- tpm_takeownership
环境搭建成功!
实验感想
实验完成了TPM仿真环境的搭建,整体实验上,由于软件版本更新和机器状态的千差万别,遇到了许多许多错误。这里轻描淡写解决的问题实际上每个都花了很多时间去查相关的资料,这个刚解决马上又双叒叕遇到另一个问题了。不过在这个过程中也锤炼了解决问题的能力。
以下是我的参考材料:
搭建TPM过程中的常见错误