pm君第一次通過各種摸索,成功搭建了tpm模擬環境,本篇博客記錄了如何去搭建tpm模擬環境,希望能給大家一些幫助。
參考資料(推薦看)
- ubuntu下安裝TPM模擬器 --成功步驟:參考至第2節-安裝GNU MP library
- Ubuntu 16.10 / 樹莓派3 安裝TPM_emulator:從第4節-安裝TPM_emulator 參考至 第6節-與TPM_emulator交互(強烈推薦看)
准備
1.有一個Ubuntu環境的虛擬機
我用的虛擬機是VMware Workstation,Ubuntu鏡像用的是官網上的。
2.搭建tpm所需的安裝包
大家可以先下好安裝包再進行搭建
- cmake安裝包
- GNU MPlibrary安裝包:tar.lz的安裝包不好使,建議下載tar.bz2或者tar.xz安裝包
- Tpm_emulator安裝包:官網的tpm_emulator是在2011年開發的,在linux內核更新后,net.h里面的一些函數進行了更新,用官網的會報錯,這個安裝包是修改后的版本(從PeterHuewe那兒fork的)。(參考自Ubuntu 16.10 / 樹莓派3 安裝TPM_emulator)
- trouser安裝包
搭建步驟
1.安裝m4
在終端輸入命令sudo apt-get install m4
2.安裝CMake
(1)解壓:tar -zxf cmake-XXX.tar.gz
(2)安裝:
cd cmake-XXX
./bootstrap
make
sudo make install
- 參考其中的Readme.txt文件
3.安裝GNU MPlibrary
(1)解壓:tar -jxf gmp-XXX.tar.bz2
(2)安裝:
./configure
make
make check
sudo make install
- 參考其中的INSTALL文件
4.安裝TPM_emulator
(1)解壓:unzip master.zip
(2)安裝:
cd tpm-emulator-master/
mkdir build;
cd build
cmake ../
make
sudo make install
【試驗】初始化、啟動TPM_emulator
(1)初始化tpm:
tpmd deactivated
killall tpmd
tpmd clear
**(2)啟動tpm: **
sudo depmod -a
sudo modprobe tpmd_dev
sudo tpmd -f -d
- 如果成功,會不斷打印:
Debug: waiting for connections…
5.安裝TSS協議棧
5.1 安裝trouser
(1)解壓:
mkdir trousers
cd trousers
tar -xzvf trousers-XXX.tar.gz
(2)安裝依賴(參考安裝包里的README):
Packages needed to build:
automake > 1.4
autoconf > 1.4
pkgconfig
libtool
gtk2-devel
openssl-devel >= 0.9.7
pthreads library (glibc-devel)
這些都是建議安裝的,我參考的是【Ubuntu 16.10 / 樹莓派3 安裝TPM_emulator】,使用的命令是:apt-get install -y automake1.9 autoconf2.64 pkgconf pkg-config libtool gtk2-engines openssl
(3)編譯安裝前的修改:
- 我們需要把它的tddl庫改成tpm_emulator提供的庫,
- tpm_emulator提供的庫的路徑為:
/usr/local/lib/libtddl.so
- 大家可以看一下自己的libtddl.so是不是在這里
- 我們需要修改以下兩個文件:
./src/tcsd/Makefile.am文件
第四行:
tcsd_LDADD=${top_builddir}/src/tcs/libtcs.a ${top_builddir}/src/tcs/libtddl.so -lpthread @CRYPTOLIB@
修改為:
tcsd_LDADD=${top_builddir}/src/tcs/libtcs.a /usr/local/lib/libtddl.so -lpthread @CRYPTOLIB@
./src/tcsd/Makefile.in文件
第55,56行:
tcsd_DEPENDENCIES = ${top_builddir}/src/tcs/libtcs.a \
${top_builddir}/src/tddl/libtddl.a
修改為:
tcsd_DEPENDENCIES = ${top_builddir}/src/tcs/libtcs.a \
/usr/local/lib/libtddl.so
- 注:該版本文件夾中沒有bootstrap,因此省略sh bootstrap.sh步驟
(4)編譯安裝:
./configure
make
sudo make install
5.2 安裝tpm_tools
sudo apt-get install tpm-tools
【試驗】啟動tcsd
(1)先開一個終端,啟動TPM_emulator(上文有):
sudo depmod -a
sudo modprobe tpmd_dev
sudo tpmd -f -d
(2)再開一個終端,啟動tcsd:
sudo tcsd -e -f
- 別關,接着試驗一下tpm_tools是否安裝成功
【試驗】tpm_tools是否安裝成功
在上一個試驗的基礎上,再開一個終端,輸入如下命令測試運行:
在/usr/sbin目錄下有3個關於tpm的命令運行如下
cd /usr/sbin
./tpm_version #查看版本號
./tpm_getpubek #查看ek公鑰
./tpm_takeownership #獲取owner