美文网首页TPM 2.0及密码学入门
Ubuntu 17.04 安装 TPM-2.0 TSS 软件栈

Ubuntu 17.04 安装 TPM-2.0 TSS 软件栈

作者: 阿群1986 | 来源:发表于2017-06-02 10:55 被阅读1139次

    2017-12-11更新:

    手动编译 TPM2.0-TSS

    sudo apt-get install -y git-core
    
    git clone --branch=1.x --depth=1 https://github.com/01org/TPM2.0-TSS.git
    pushd TPM2.0-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 / Ubuntu Snap 下如何借助 snapcraft 编译安装 TPM2.0-TSS

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

    如何编译 TPM Simulator

    # 以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 环境下编译 TSS 共生成以下文件

    • 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 驱动模块

    下一篇:

    相关文章

      网友评论

      • cherish_1609:博主,我刚刚根据TPM20_Embedded_SLB_9670_AppNote_Rev1.0_2017-03-16.pdf 文档里面要求的依赖包都安装了一遍,再执行./configure命令就成功了,感谢感谢。
        阿群1986:@cherish_1609 恭喜成功!从GitHub下载回来的TPM2-TSS源码包有N种版本,./configure具体配置选项每个月都有变化,我自己只测试过一部分
      • cherish_1609:博主,您好!
        我又来问问题了,就是我在Ubuntu14.04 LTS上手动编译安装TPM2.0 TSS时,参照您博文的步骤,在执行./configure命令时 root@Ubuntu14:/home/shm/TPM2.0-TSS# ./configure,
        报了以下的错误,我不知道该如何解决了,您能帮我看看吗?非常感谢!

        checking Checking for simulator binary: ... ./configure: line 15352: syntax error near unexpected token `with_simulatorbin'
        ./configure: line 15352: ` AX_NORMALIZE_PATH(with_simulatorbin)'
        root@Ubuntu14:/home/shm/TPM2.0-TSS#
        阿群1986:@cherish_1609 sudo apt-get install autoconf-archive
        cherish_1609:我觉得是缺了 simulator binary这个东西,但是我不知道该怎么去安装和设置呢?
      • 阿群1986:下一篇:《树莓派Linux内核编译选项如何开启TPM 2.0》
        http://www.jianshu.com/p/174844b99716

      本文标题:Ubuntu 17.04 安装 TPM-2.0 TSS 软件栈

      本文链接:https://www.haomeiwen.com/subject/rvgyfxtx.html