TPM 踩坑实录

文章目录

  • TPM踩坑实录
      • 0.需要安装的软件
      • 1. 安装
          • TSS
          • TPM2-tool
      • 2.环境变量
      • 3.TPM的初始化:
      • 5. debug
      • 4.杂

TPM踩坑实录

因为要做byzantine容错,需要用到TPM进行签名以及recover。所以来搞一下TPM
下载TSS:https://github.com/tpm2-software/tpm2-tss
按照要求装好,如果用常规的.configure脚本生成,因为里面有docxygen文件,会导致后面make install的时候失败

0.需要安装的软件

TSS:https://github.com/tpm2-software/tpm2-tss
Tpm-tools: https://github.com/tpm2-software/tpm2-tools

1. 安装

TSS

安装TSS的时候,生成makefile的时候忽略doxygen-doc

 ./configure --disable-doxygen-doc
TPM2-tool
  1. 安装Tpm-tools的时候,因为没有管理员权限,所以很有可能你的包安装不在/usr目录下,这个时候要设置环境变量,不然tools找不到相关的config文件,参考:https://github.com/tpm2-software/tpm2-tools/issues/1302
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
  1. 在make的时候,会有warning,编译的时候自动设置的是有warning就当成error对待,此时编译就会失败。要设置环境变量 cflag
export CFLAGS="-Wno-error"

2.环境变量

TSS默认是安装在/usr/local下, 也就是说会在相应的/etc下生成fapi的配置文件,但是如果你没有按照约定安装,一定要重新设置环境变量,其中包括:

  • 静态链接库
  • include
  • 动态链接库
  • 配置文件
    以下是配置文件的路径添加,这是在TSS里翻源码才知道的。变量名TSS_FAPICONF
 -export TSS2_FAPICONF="/afs/cs.pitt.edu/projects/babay/local/etc/tpm2-tss/fapi-config.json"

可以将其添加进~/.bashrc里

3.TPM的初始化:

TPM首先应该在bios里初始化,这块是机房管理员做的,不同的Bios有不同的初始化方式,我不是很了解这块。
硬件初始化完成之后,在使用TPM前,要执行 tpm2_provision,可以理解为软件初始化。
但是在provision的时候,需要进行ek certificate的校对。这里有两个问题:
1.有些TPM是没有ek certificate的
2.库的问题(还未调查清楚) //TODO
如果嫌麻烦,并且认为TPM是靠谱的,那么可以直接在fapi的配置文件中配置跳过check EK certificate这一步骤:
更改默认配置文件,位于你安装TSS的 /etc/tpm2-tss/fapi-profiles

{
     "profile_name": "P_ECCP256SHA256",
     "profile_dir": "/afs/cs.pitt.edu/projects/babay/local/etc/tpm2-tss/fapi-profiles/",
     "user_dir": "~/.local/share/tpm2-tss/user/keystore",
     "system_dir": "/afs/cs.pitt.edu/projects/babay/local/var/lib/tpm2-tss/system/keystore",
     "tcti": "",
     "system_pcrs" : [],
     "log_dir" : "/afs/cs.pitt.edu/projects/babay/local/var/run/tpm2-tss/eventlog/",
      "ek_cert_less": "yes"
}

5. debug

若要debug, 在编译的时候就要加入断点symble进程序
tool

./configure --prefix=/opt/tpm_dev --disable-hardening CFLAGS="$CFLAGS -std=gnu99" --enable-debug=yes

tss lib

./configure --prefix=/opt/tpm_dev --disable-doxygen-doc —enable-debug=yes

4.杂

安装完成之后,写个小测试代码会发现出问题,如果编译的时候出先找不到 /dev/tpm*和无法和TCTI通信这样的提示,说明没有配置好TPM芯片。可以用qemu以及swTPM进行模拟,但是后面硬件TPM教授配置好了,我就没继续搞, 模拟这东西有一堆麻烦事。

reference:
tpm-tools: https://tpm2-tools.readthedocs.io/en/latest/INSTALL/#building-tpm2-tools

你可能感兴趣的:(可信计算)