可信平臺模塊TPM(Trusted Platform Module)是一種植於計算機內部爲計算機提供可信根的芯片。該芯片的規格由可信計算組(Trusted Computing Group)來制定。 中國國內研究的TCM(trusted cryptography module,可信密碼模塊),與之對應。
文獻
google開發的一個tpm開源工具。非常好的文檔和測試用例。可在網頁直接測試。
- https://google.github.io/tpm-js
微軟相關介紹
- https://docs.microsoft.com/en-us/windows/security/information-protection/tpm/trusted-platform-module-top-node
相關書籍
Intel TPM2 Software Stack (TSS)等安裝使用
- tpm2-tss是根據TCG(Trusted Computing Group)組織定義的TPM2.0的一比一實現。
- tpm2-abrmd是實現了TPM2 access broker (TAB) & Resource Manager (RM)的守護進程
- tpm2-tools是命令行工具
檢查依賴包:包的依賴關係
tpm2-tools version | tpm2-tss version | tpm2-abrmd version |
---|---|---|
master | master | master |
4.2 | >=2.4.0 | >=2.3.1 |
安裝TPM工具
具體安裝過程及依賴包的安裝可參考
- 安裝tss包 https://github.com/tpm2-software/tpm2-tss/blob/master/INSTALL.md
- 安裝abrmd包 https://github.com/tpm2-software/tpm2-abrmd/blob/master/INSTALL.md
- 安裝tools包 https://github.com/tpm2-software/tpm2-tools/blob/master/doc/INSTALL.md
注意,如果沒有使用tpm模擬器,文檔提到最好不要單元測試,不然對tpm硬件可能造成無法恢復的損傷。
若依然有缺乏的依賴,可以參考如下命令
sudo apt-get install lcov pandoc autoconf-archive
sudo apt-get install liburiparser-dev
sudo apt-get install libdbus-1-dev libglib2.0-dev dbus-x11
sudo apt-get install -y automake
sudo apt install autoconf -y
sudo apt install libtool -y
sudo apt-get install libjson-c-dev -y
sudo apt-get install libcurl3 -y
sudo apt-get install libcurl4 libcurl4-openssl-dev -y
sudo apt-get install -y doxygen
## How Install gio-unix-2.0
sudo apt-get install libglib2.0-dev
abrmd的安裝和啓動比較麻煩
按照文檔,依然失敗了很多次,要麼dbus報錯,要麼*abrmd.service沒起來,經測試,如下命令可行,下面命令來自參考自TOOLS-INSTALL.md
cd tpm2-abrmd
./bootstrap
./configure --with-dbuspolicydir=/etc/dbus-1/system.d --with-udevrulesdir=/usr/lib/udev/rules.d --with-systemdsystemunitdir=/usr/lib/systemd/system
make -j5
sudo make install
run
如果主板上有TPM,則可以不用模擬器。root權限啓動abrmd。
sudo tpm2-abrmd --allow-root &
hello world
tpm2_pcrread
sha1:
0 : 0xAAAB2F9467FB088B67F29B5437200FB631E92CC9
1 : 0xD633C974C89C0B51CED6660BBBBAA7D4313A06D2
2 : 0xB2A83B0EBF2F8374299A5B2BDFC31EA955AD7236
3 : 0xB2A83B0EBF2F8374299A5B2BDFC31EA955AD7236
4 : 0x3B5569D8B67CC4DF6228B9F5F0D24B0547762096
5 : 0xC6B78F833B5A77B4CA16C72C5636981A08040CEC
6 : 0xB2A83B0EBF2F8374299A5B2BDFC31EA955AD7236
7 : 0x6653ABA680BF45C7130D897EA1D8A18FD32CADE6
8 : 0x0000000000000000000000000000000000000000
9 : 0x0000000000000000000000000000000000000000
10: 0x517927AF9D3726175B51C021F190F089CDD186B4
11: 0x0000000000000000000000000000000000000000
12: 0x0000000000000000000000000000000000000000
13: 0x0000000000000000000000000000000000000000
<snip>
如果使用了tpm模擬器
ibmtpm
$ mkdir ibmtpm && cd ibmtpm
$ wget https://sourceforge.net/projects/ibmswtpm2/files/latest/download -O ibmtpm.tar.gz
$ tar -zxvf ibmtpm.tar.gz
$ cd src
$ make -j5
啓動模擬器
./tpm_server &
TPM command server listening on port 2321
Platform server listening on port 2322
啓動 abrmd
tpm2-abrmd --allow-root --tcti=mssim
測試
tpm2_pcrread
sha1 :
0 : 0000000000000000000000000000000000000003
1 : 0000000000000000000000000000000000000000
2 : 0000000000000000000000000000000000000000
3 : 0000000000000000000000000000000000000000
4 : 0000000000000000000000000000000000000000
5 : 0000000000000000000000000000000000000000
<snip>
tpm2-tools的使用教程在man目錄下,github wiki中的教程可能年久失修了。
參考https://github.com/tpm2-software/tpm2-tools/wiki/Getting-Started#installing