Ubuntu环境下TPM-Emulator的安装


一、 安装准备

1. 环境

虚拟机平台:VMware Workstation Pro 15.0

虚拟机:Ubuntu 18.04 LTS

Linux 系统下,内核 2.6.12 版本及以上提供了对 TPM 芯片的支持

如果不能满足,请下载满足要求的版本:中科大Ubuntu镜像站

2. 依赖

终端执行如下命令:

sudo su
apt-get install g++
apt-get install m4

#安装openssl-devel
apt-get install openssl
apt-get install libssl-dev

apt-get install tpm-tools

3. 下载

gmp-6.2.0.tar.xz
tpm-emulator-master.zip
trousers-0.3.14.tar.gz
由于有些软件包打包压缩前没有文件夹包裹,解压后会解压到软件包所在文件夹。

所以下载完之后,应该创建三个文件夹分别存入并解压,或指定解压路径。

二、 软件安装

由于软件依赖性,请按步骤依次安装:

1. CMake

sudo -s 
apt-get install cmake

2. tpm-tools

sudo apt-get install tpm-tools 

3. gmp

sudo su
tar xvJf gmp-6.2.0.tar.xz #之前下载的
cd gmp-6.2.0
./configure
make
make check
make install

4. tpm-emulator

  • 安装tpm-emulator

    unzip tpm-emulator-master.zip
    cd tpm-emulator-master
    
    mkdir build
    cd build
    export ARCH=x86
    cmake ../
    make install
    
  • 初始化tpm-emulator

    tpmd deactivated
    killall tpmd
    tpmd clear
    
  • 启动tpm-emulator

    modprobe tpmd_dev
    tpmd -f -d clear
    

    若成功,则显示:

    tpm_startup.c:43: Info: TPM_Startup(1)
    tpmd.c:416: Debug: waiting for connections...
    

    若出现Module tpmd_dev not found,则先运行命令:

    depmod -a
    
    rm /var/run/tpm/tpmd_socket:0
    

5. trousers

tar zxvf trousers-0.3.14.tar.gz
#由于无文件夹包裹,直接在软件包目录进行
./configure
make
make install

0.3.8版本的trousers才需要修改Makefile.amMakefile.in文件 , 会遇到Werror、ld链接库等报错问题 。

推荐本文使用的 0.3.14版本。

三、 启动与检验

1. 启动顺序:

tpm-emulator -> tcsd

  1. 准备两个终端

  2. 一个终端启动tpm-emulator: tpmd -f -d

  3. 另一个终端启动tcsd:tcsd -e -f

  4. 2个终端

成功:

#tpm-emulator终端循环显示
tpmd.c:456: Debug: waiting for commands...

#tcsd终端显示
TCSD TDDL ioctl: (25) Inappropriate ioctl for device
TCSD TDDL Falling back to Read/Write device support.
TCSD trousers 0.3.14: TCSD up and running.

失败:

#tcsd终端显示
TCSD TDDL ioctl: (25) Inappropriate ioctl for device
TCSD TDDL Falling back to Read/Write device support.
TCSD TCS ERROR: TCS GetCapability failed with result = 0x1c

#在tpm-emulator终端输入
tpmd -f -d clear

2. 检验

在tpm与tcsd均启动的前提下输入:

cd /usr/sbin
./tpm_version         #查看版本号
./tpm_getpubek        #查看ek公钥
./tpm_takeownership   #获取owner

如果成功显示相关信息,证明TPM模拟环境搭建成功。

四、参考


文章作者: Haro Wang
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Haro Wang !