https://blog.csdn.net/jianming21/article/details/107942585
https://docs.microsoft.com/en-us/windows/security/information-protection/tpm/switch-pcr-banks-on-tpm-2-0-devices
目錄
TPM、TSS以及TPM模擬器簡介與安裝
TPM簡介
TSS簡介
TPM模擬器安裝環境
TPM模擬器安裝
intel tpm軟件包介紹、安裝和配置
intel tpm 介紹
各個包功能
Inter tpm軟件安裝
Tpm2-tss安裝
tpm2_abrmd安裝
tpm2_tools安裝
TPM、TSS以及TPM模擬器簡介與安裝
TPM簡介
TPM(Trusted Platform Module,可信平台模塊)是可信計算平台的信任根,是整個平台可信的基點,也是可信計算的關鍵技術之一。可信平台模塊(TPM)是最早實現產業化的可信計算產品,其中2.0為最新版本。
TPM由CPU、儲存器、I/O、密碼運算器、隨機數產生器和嵌入式操作系統等部件組成。同時TPM繼承了肯計算平台所需要的大部分安全功能,為平台的可信提供重要支撐。
TSS簡介
TSS(TCG Software Stack,TCG軟件棧)又稱為可信軟件棧,他是可信計算平台上TPM的支撐軟件。TSS的主要作用是為操作系統和應用軟件提供使用TPM的接口。TSS的結構可分為內核層、系統服務層和用戶程序層。
TPM模擬器安裝環境
本實驗使用TPM模擬器搭建的實驗環境進行實驗,模擬器為IBM推出的TPM2.0模擬器。軟件棧采用Intel推出的TSS相關組件。
環境搭建:
Ubuntu 18.04.4 LTS
IBM TPM Emulator 2.0
Intel tpm2-tss 2.1.0
Intel tpm2-abrmd 2.0.2
Intel tpm2-tools
Openssl lib
TPM模擬器安裝
安裝配置所需依賴:
sudo apt install lcov pandoc autoconf-archive liburiparser-dev libdbus-1-dev libglib2.0-dev dbus-x11 libssl-dev \
autoconf automake libtool pkg-config gcc libcurl4-gnutls-dev libgcrypt20-dev libcmocka-dev uthash-dev
1
2
從官網下載TPM模擬器程序ibmtpm1332.tar.gz
wget https://jaist.dl.sourceforge.net/project/ibmswtpm2/ibmtpm1332.tar.gz
1
創建安裝目錄並將源碼解壓到對應目錄:
mkdir ibmtpm1332
cd ibmtpm1332/
tar zxvf ../ibmtpm1332.tar.gz
1
2
3
進入解壓后的目錄,然后執行安裝命令:
cd src/
sudo make
1
2
將tpm服務器添加到Linux系統執行目錄下:
sudo cp tpm_server /usr/local/bin/
1
在ubuntu中配置TPM服務(創建tpm.server.service文件和配置服務):
sudo vim /lib/systemd/system/tpm-server.service
1
在文件中添加以下內容
[Unit]
Description=TPM2.0 Simulator Server Daemon
Before=tpm2-abrmd.service
[Service]
ExecStart=/usr/local/bin/tpm_server
Restart=always
Environment=PATH=/usr/bin:/usr/local/bin
[Install]
WantedBy=multi-user.target
1
2
3
4
5
6
7
8
9
測試TPM配置情況,啟動TPM服務:
systemctl daemon-reload
systemctl start tpm-server.service
service tpm-server status
1
2
3
注 q 退出TPM服務查看狀態
此時TPM 模擬器已經成功配置,並啟動服務。
intel tpm軟件包介紹、安裝和配置
intel tpm 介紹
為了方便使用TPM,開發者開發了許多TPM應用軟件來實現對TPM更好地使用。
各個包功能
Tpm-tss該存儲庫托管實現可信賴計算組(TCG)TPM2軟件堆棧(TSS)的源代碼。此堆棧由上至下包含以下幾層:
TSS 2.0功能API規范 以及TSS 2.0 JSON數據類型和策略語言規范中描述的功能API(FAPI) 此API設計為非常高級的API,旨在使使用TPM的編程盡可能簡單。API函數通過單個庫libtss2-fapi公開。
如《TSS 2.0增強系統API(ESAPI)規范》中所述的增強系統API(ESAPI)。該API是TPM2規范的第3部分中記錄的TPM2命令的一對一映射。此外,每個命令都有異步版本。除SAPI之外,ESAPI還執行對TPM對象的元數據的跟蹤以及基於會話的授權和加密值的自動計算。同步和異步API都通過一個庫libtss2-esys公開。
如系統級API和TPM命令傳輸接口規范中所述的系統API(SAPI)。該API是TPM2規范的第3部分中記錄的TPM2命令的一對一映射。此外,每個命令都有異步版本。這些異步變量對於集成到事件驅動的編程環境中可能很有用。同步和異步API都通過一個庫libtss2-sys公開。
如TCG TSS 2.0 Marshaling / Unmarshaling API Specification中所述的封送/拆組(MU)。該API為TPM庫規范定義的所有數據類型提供了一組封送和解封功能。通過稱為libtss2-mu的庫公開了Marshaling / Unmarshaling API。
在同一規范中描述的TPM命令傳輸接口(TCTI)。該API提供了一個標准接口來發送/接收TPM命令/響應緩沖區。預計將實現任何實現TCTI API的庫,作為抽象各種平台特定IPC機制的一種方式。當前,此存儲庫提供了四個TCTI實現:libtss2-tcti-device,libtss2-tcti-tbs(對於Windows),libtss2-tcti-swtpm和libtss2-tcti-mssim。前者應用於通過Linux內核驅動程序直接訪問TPM。后者實現了Microsoft軟件TPM2仿真器公開的協議。
該TCG TSS 2.0概述和常用結構規格形成了在這個項目中的所有實現的基礎。注意:我們通過將TPM2_NUM_PCR_BANKS的值從3增加到16,以確保與TPM2實現的兼容性(實現了比典型數量更多的PCR庫)而偏離了該規范草案。TPM2_NUM_PCR_BANKS的較大值預計將包含在該規范的將來版本中。
tpm2-abrmd是一個守護進程。它應該在操作系統啟動過程中啟動。使用TPM,守護程序和客戶端之間的通信是通過DBus和Unix管道的組合完成的。DBus用於發現,會話管理以及“取消”,“ setLocality”和“ getPollHandles” API調用(大多數尚未實現)。管道用於分別在客戶端和服務器之間發送和接收TPM命令和響應。
守護程序在dbus上擁有com.intel.tss2.Tabrmd名稱。可以將其配置為連接到系統或會話總線。配置名稱選擇將是一個方便的功能,但這是將來的工作。
Tpm2-tools為tpm調用其進行可信計算的命令行工具。
Inter tpm軟件安裝
Tpm軟件需按照 tpm2-tss、tpm2-abrmd、tpm2-tools順序進行安裝。
三個軟件在github上網址 https://github.com/tpm2-software
Tpm2-tss安裝
添加tss用戶
由於tss套件必須在用戶為tss和root下面使用,因此在系統用戶中添加tss用戶。
sudo useradd --system --user-group tss
1
2. 從官網下載tpm-tss-2.1.0.tar.gz
wget https://github.com/tpm2-software/tpm2-tss/releases/download/2.1.0/tpm2-tss-2.1.0.tar.gz
1
解壓tpm-tss源碼:
tar zxvf tpm2-tss-2.1.0.tar.gz
1
進入軟件目錄並進行配置查詢。
為了測試各種TCTI、SAPI和ESAPI api等接口,通過定制配置構建來測試單個和整體接口情況,並利用check來構建出目標。
cd tpm2-tss-2.1.0/
./configure --enable-unit --enable-integration
sudo make check
1
2
3
執行安裝並配置動態鏈接
sudo make install
sudo ldconfig
1
2
注
tpm2-tss 2.1.0 官網(下載)地址
tpm2-tss 2.1.0 安裝指導文件地址
tpm2_abrmd安裝
從官網下載tpm2_abrmd安裝包
wget https://github.com/tpm2-software/tpm2-abrmd/releases/download/2.0.2/tpm2-abrmd-2.0.2.tar.gz
1
解壓文件並進入目錄
tar zxvf tpm2-abrmd-2.0.2.tar.gz
cd tpm2-abrmd-2.0.2/
sudo ldconfig
1
2
3
設置安裝配置
./configure --with-dbuspolicydir=/etc/dbus-1/system.d --with-systemdsystemunitdir=/lib/systemd/system
1
在配置過程中,添加–with-dbuspolicydir=/etc/dbus-1/system.d選項,這樣可以將tpm2-abrmd聲明到系統總線上,允許tss賬戶聲明該策略。
同時將tpm2-abrmd添加進系統引導:–with-systemdsystemunitdir=/lib/systemd/system
執行安裝make
sudo make install
1
添加tpm2-abrmd進入系統服務
sudo cp /usr/local/share/dbus-1/system-services/com.intel.tss2.Tabrmd.service /usr/share/dbus-1/system-services/
1
重啟DBUS
sudo pkill -HUP dbus-daemon
1
修改tpm2-abrmd.service服務配置:
在啟動服務時加載tss動態庫並將服務啟動到本地2321端口。
將“ExecStart=/usr/local/sbin/tpm2-abrmd”修改為“ExecStart=/usr/local/sbin/tpm2-abrmd --tcti=“libtss2-tcti-mssim.so.0:host=127.0.0.1,port=2321””
--tcti="libtss2-tcti-mssim.so.0:host=127.0.0.1,port=2321
1
服務配置文件位置:/lib/systemd/system
測試服務:
systemctl daemon-reload
systemctl start tpm2-abrmd.service
service tpm2-abrmd status
1
2
3
注
tpm2-abrmd 2.0.2 官方(下載)地址
tpm2-abrmd 2.0.2 官方安裝文件地址
tpm2_tools安裝
tpm2_tools為用戶提供了使用TPM資源的幾個命令,如:
tpm2_create : 創建key
tpm2_sign : startup TPM, 相於初始化TPM
tpm2_listpcrs: 打印出TPM中所有的pcrs值
tpm2_send_command: 可以發送字節流命令
tpm2_hash : hash
等等
從官方下載tpm2_tools,由於版本需要與tp2-tss以及tpm2-abrmd,下載版本為tpm2-tools 3.x
關於版本的選擇參考網址
git clone -b 3.X https://github.com/tpm2-software/tpm2-tools.git
1
注 克隆分支下載
進入目錄中:
cd tpm2-tools/
1
執行bootstarp、config和make
./bootstrap
./configure
make
1
2
3
測試tpm2-tools工具連接abrmd服務是否正常
./tools/tpm2_getrandom 4
1
執行安裝
sudo make install
1
打印pcr情況,查看輸出是否正常
tpm2_pcrlist
1
————————————————
版權聲明:本文為CSDN博主「jianming21」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/jianming21/article/details/107942585