本文更新于2018-08-11

手动编译 TPM2.0-TSS

sudo apt-get install -y git-coregit clone --branch=1.x --depth=1 https://github.com/tpm2-software/tpm2-tss.git
pushd tpm2-tss
wget http://ftpmirror.gnu.org/autoconf-archive/autoconf-archive-2017.09.28.tar.xz
tar xJf autoconf-archive-2017.09.28.tar.xz
cp autoconf-archive-2017.09.28/m4/ax_code_coverage.m4 m4/nproc=4
./bootstrap && ./configure && make -j$(nproc)
make install DESTDIR=$HOME/my-tpm2-tss-installation-dir
popd

Ubuntu 17.04 PC机 或 Ubuntu Snap 嵌入式开发板下如何借助 snapcraft 编译安装 TPM2.0-TSS

sudo apt-get install -y git-core snapcraftgit clone --depth=1 https://git.launchpad.net/~snappy-hwe-team/snappy-hwe-snaps/+git/tpm2cd tpm2
snapcraftsnap try
ls ~/tpm2/prime/sbin

如何编译 TPM Simulator (532版本)

# 以ibmtpm532版本为例(本方法仅x86能编译通过)
wget https://downloads.sourceforge.net/project/ibmswtpm2/ibmtpm532.tar
sha256sum ibmtpm532.tar | grep -q ^abc0b420257917ccb42a9750588565d5e84a2b4e99a6f9f46c3dad1f9912864f
mkdir ibmtpm532
tar axf ibmtpm532.tar -C ibmtpm532
make "CC=gcc -Wno-tautological-compare" -C ibmtpm532/src

后台运行编译好的 TPM Simulator

ibmtpm532/src/tpm_server &

树莓派自带openssl.h版本不允许src/CpriHash.c创建EVP_MD_CTX实例

# ibmtpm974存在另一个bug, 当本机为32位树莓派开发板时无法编译报错openssl宏定义为64位
wget https://downloads.sourceforge.net/project/ibmswtpm2/ibmtpm974.tar.gz
sha256sum ibmtpm974.tar.gz | grep -q ^8e45d86129a0adb95fee4cee51f4b1e5b2d81ed3e55af875df53f98f39eb7ad7
mkdir ibmtpm974
tar axf ibmtpm974.tar.gz -C ibmtpm974
make -C ibmtpm974/src

Ubuntu 17.04 x86_64 环境下编译 TPM2-TSS 1.x 分支共生成以下文件

  • TSS 动态连接库libsapi(必须安装), 主要包括3个so文件: libsapi.so libtcti-device.so libtcti-socket.so
    合计约160KB
usr/lib/
└──x86_64-linux-gnu├── [  16B]  libsapi.so.0 -> libsapi.so.0.0.0├── [119KB]  libsapi.so.0.0.0├── [  23B]  libtcti-device.so.0 -> libtcti-device.so.0.0.0├── [ 15KB]  libtcti-device.so.0.0.0├── [  23B]  libtcti-socket.so.0 -> libtcti-socket.so.0.0.0└── [ 19KB]  libtcti-socket.so.0.0.0
  • TSS 开发包libsapi-dev(包括头文件和静态库, 只需开发者安装在交叉编译环境下)
usr/include/
├──sapi
│ ├── [ 54KB]  implementation.h
│ ├── [ 60KB]  sys_api_part3.h
│ ├── [1.9KB]  tpm20.h
│ ├── [3.9KB]  tpmb.h
│ ├── [ 12KB]  tss2_common.h
│ ├── [4.5KB]  tss2_sys.h
│ ├── [6.6KB]  tss2_tcti.h
│ └── [136KB]  tss2_tpm2_types.h
├──tcti
│ ├── [1.8KB]  common.h
│ ├── [1.9KB]  tcti_device.h
│ ├── [2.9KB]  tcti_socket.h
│ └── [1.5KB]  tcti-tabrmd.h
└──tss2└── [2.8KB]  tabrmd.h
  • 开发者辅助工具包(用于调试 TPM 模块, 可选择是否安装到目标机): tpm2-tools
    其中每个独立的工具均可在命令行下执行, 每个可执行文件大小约为 30KB, 合计约 1MB.
    组合起来使用是很强大的

    组合使用tpm2-tools中的四条命令测试RSA公钥加密

usr/sbin
├── [ 34K]  tpm2_activatecredential
├── [ 30K]  tpm2_akparse
├── [ 34K]  tpm2_certify
├── [ 35K]  tpm2_create
├── [ 34K]  tpm2_createprimary
├── [ 30K]  tpm2_encryptdecrypt
├── [ 30K]  tpm2_evictcontrol
├── [ 43K]  tpm2_getmanufec
├── [ 39K]  tpm2_getpubak
├── [ 34K]  tpm2_getpubek
├── [ 30K]  tpm2_getrandom
├── [ 30K]  tpm2_hash
├── [ 30K]  tpm2_hmac
├── [ 34K]  tpm2_listpcrs
├── [ 30K]  tpm2_listpersistent
├── [ 30K]  tpm2_load
├── [ 30K]  tpm2_loadexternal
├── [ 30K]  tpm2_makecredential
├── [ 34K]  tpm2_nvdefine
├── [ 30K]  tpm2_nvlist
├── [ 30K]  tpm2_nvread
├── [ 30K]  tpm2_nvreadlock
├── [ 30K]  tpm2_nvrelease
├── [ 30K]  tpm2_nvwrite
├── [ 34K]  tpm2_quote
├── [ 29K]  tpm2_rc_decode
├── [ 30K]  tpm2_readpublic
├── [ 30K]  tpm2_rsadecrypt
├── [ 30K]  tpm2_rsaencrypt
├── [ 34K]  tpm2_sign
├── [ 34K]  tpm2_takeownership
├── [ 30K]  tpm2_unseal
└── [ 35K]  tpm2_verifysignature

软件仿真器IBM Software TPM2.0 Simulator

英特尔 TPM2.0-TSS 源码包提供了几个脚本, 快速下载并编译 IBM 开源的仿真器 tpm_server
make simulator
make simulator-start

TPM2.0 的资源管理器守护进程

resourcemgr 是老版本的资源管理器, 虽然接口简陋但作为开发工具还是够用了. 英特尔官方已经不再维护这个工具的源代码.
tabrmd 是新版本的资源管理器, 但想要正确的从源码编译她并不容易, Ubuntu和Debian目前(2017年)都还没有deb格式的安装包可用. 我只能从源码编译她. 暂时不将她作为我们的首选工具.

TPM 资源管理器守护进程 tpm2-abrmd (运行在目标开发板上, 可选安装), 包括可执行文件、内部动态库、配置文件以及man手册:
合计约占用 1.3MB 硬盘空间

usr
├──sbin
│ └── [620KB]  tpm2-abrmd
├──lib
│ ├── [  23B]  libtcti-tabrmd.so -> libtcti-tabrmd.so.0.0.0
│ ├── [  23B]  libtcti-tabrmd.so.0 -> libtcti-tabrmd.so.0.0.0
│ ├── [680KB]  libtcti-tabrmd.so.0.0.0
│ ├──systemd/system
│ │ └── [ 347B]  tpm2-abrmd.service
│ └──udev/rules.d
│     └── [ 111B]  tpm-udev.rules
├──etc/dbus-1/system.d
│ └──[ 546B]  tpm2-abrmd.conf
└──share└──man├──man3│ └── [3.7KB]  tss2_tcti_tabrmd_init.3├──man7│ └── [ 932B]  tcti-tabrmd.7└──man8└── [2.9KB]  tpm2-abrmd.8

另外, 有下列基础软件包(动态库so文件)需要安装到目标机, 资源管理器tabrmd在目标机运行时依赖他们的存在:
gobject-2.0(libgobject-2.0.so或libgobject-2.0.a)
glib-2.0(libglib-2.0.so或libglib-2.0.a)
gio-unix-2.0(libgio-2.0.so或libgio-2.0.a)
上述静态库以及头文件位于 libglib2.0-dev 开发包

最后, 下列开发包需要开发者安装到Ubuntu交叉编译环境
/usr/bin/gdbus-codegen
位于 libdbus-1-dev 开发包

sudo apt-get install libglib2.0-dev
sudo apt-get install libdbus-1-dev

或fedora下

yum install glib2-devel glib2-static
yum install dbus-devel

英飞凌 TPM2.0 评估板

这个国内无能力生产, 欧洲限制对华出口. 必须求助海外代购绕道才能夹带回国内.

海外代购 TPM2.0 评估板

树莓派 3 Model B 开发板

很便宜, 树莓派裸板只需要¥300元不到. 国内到处可以买

树莓派

树莓派通过SPI接口连接TPM2.0模块

树莓派成功加载 Peter Huewe 编写的英飞凌 TPM2.0 驱动模块

Infineon SLB9670 on Secure96 Mezzanine Board

放大图

Secure96 是一款支持 TPM2.0 规范的安全扩展板,可作为服务器、物联设备、工控等领域的硬件加密卡,有效保障系统和数据传输的安全性,能够满足不同行业开发者的个性化需求。http://www.hihope.org/product/Secure96


下一篇:

  • 《树莓派Linux内核编译选项如何开启TPM 2.0》http://www.jianshu.com/p/174844b99716

Ubuntu 安装 TPM-2.0 TSS 软件栈相关推荐

  1. Ubuntu安装MySQL 8.0 - APT(结尾附视频)

    写在前面:博主是一只经过实战开发历练后投身培训事业的"小山猪",昵称取自动画片<狮子王>中的"彭彭",总是以乐观.积极的心态对待周边的事物.本人的技 ...

  2. Linux/ubuntu 安装 redis 4.0报错解决:redis-server.service: Can't open PID file /var/run/redis/redis-server.

    此文首发于我的个人博客:Linux/ubuntu 安装 redis 4.0报错解决:redis-server.service: Can't open PID file /var/run/redis/r ...

  3. ubuntu安装微信,QQ等软件

    ubuntu安装微信,QQ等软件 1.添加仓库 2.安装微信只需要运行下面的命令 3. 安装QQ 其他一些软件 1.添加仓库 首次使用时,你需要运行如下一条命令将移植仓库添加到系统中. wget -O ...

  4. acrobat linux 下载地址,在ubuntu安装Adobe Acrobat7.0

    在ubuntu安装Adobe Acrobat7.0 发布时间:2007-03-17 01:11:11来源:红联作者:Gpoyinsnbo 首先,安装Adobe Reader吧.在"sudo ...

  5. 通过TSS软件栈使用TPM——获取并改变TPM寄存器-学习笔记1

    实验使用TPM_Emulator代替TPM硬件,原理是一样的.(学习网站:http://blog.csdn.net/buaa_shang/article/details/26157253) 1.登录系 ...

  6. centos/Ubuntu安装python3.7.0安装mysql5.7/5.6

    Python3.7 1. 下载安装所需要的包,不然安装时或者以后使用python时报错 yum install -y libffi-devel zlib-devel bzip2-devel opens ...

  7. Ubuntu安装MySQL及一些其他软件出现问题

    今天尝试在Ubuntu上安装MySQL,但出现了以下问题: 正在读取软件包列表... 完成 正在分析软件包的依赖关系树 正在读取状态信息... 完成 将会同时安装下列软件:apport libsqli ...

  8. Ubuntu 安装 Tomcat 7.0.40

    来源:http://www.cnblogs.com/rayz/archive/2013/05/20/3089302.html 因为源上的版本问题,所以没有使用源上的自动安装包,老规矩,Tomcat 7 ...

  9. ubuntu安装Kubernetes1.20.0

    一.概述 由于业务需求,需要安装版本比较高的k8s,比如:1.20.0 二.环境介绍 操作系统:ubuntu-18.04.6-server-amd64 配置:2核3g ip地址:192.168.1.1 ...

最新文章

  1. GoF23种设计模式之行为型模式之解释器模式
  2. python数据库模糊查询_python中数据库like模糊查询方式
  3. [NPUCTF2020]Baby Obfuscation [HDCTF2019]MFC
  4. 计算机设备间使用面积,【IBE】综合布线设计中的常用计算公式
  5. Python实训day12pm【答辩要求、定时器】
  6. linux指向域同步时间,linux在局域网下设置时间同步
  7. 主叫号码未显示怎么设置_微信未授权抖音,应该怎么设置?
  8. 安装容器编排工具 Docker Compose
  9. java栈编程题_Java实现栈和队列面试题
  10. iPad Air PSD设计模板
  11. 计算机知识竞赛的策划案,计算机趣味知识竞赛活动策划书
  12. fn1-call-call-fn2-面试题
  13. 青年与计算机比赛,我市首届青少年电脑机器人竞赛精彩上演
  14. linpack测试软件,【分享】linpack ——intel的pc算力测试软件
  15. OAS正式开放注册,元宇宙链游掘金时代震撼来袭
  16. C++读取netcdf文件
  17. 安装某考试软件提示MDAC没有安装或者出错
  18. 关于Linux和Windows一个对比
  19. HDU6287 口算训练(唯一分解定理+二分)
  20. 推荐一个超好用的免费屏幕录制软件

热门文章

  1. 日期格式转换,正则匹配后转换;指定时间增加天数加转格式;js时间转换格式
  2. 暗影之枪显示连接服务器失败,暗影之枪传奇进不去怎么办?游戏更新进不去问题详解[多图]...
  3. java 累进计费率计算_税点点分享第198期:案例解答个人所得税的计算公式
  4. 快速生成CSS样式语法(HTML、CSS)
  5. AWT_方位布局(Java)
  6. Angular自定义管道(过滤器)方法
  7. ReactNative 使用SectionList时出现一个黄色警告VirtualizedList:missing keys for items解决方法
  8. git之配置在Terminal显示git分支
  9. Ubuntu 14.04/16.04 (使用apt-get进行安装) 安装Docker
  10. vbS访问mysql语句_关于VBS连接MySQL与连接Excel