可信計算基礎實驗一——開發環境的搭建(kali)
TPM仿真環境結構
上圖即為TPM仿真環境軟件包依賴關系圖,按由下往上按部就班的進行安裝。
安裝步驟
1.m4與gmp的安裝
依照軟件包依賴關系圖,我們看到安裝gmp前,我們要先安裝m4。
m4簡介:m4 是一種宏處理器,它掃描用戶輸入的文本並將其輸出,期間如果遇到宏就將其展開后輸出。m4 可用作編譯器的前端,或者單純作為宏處理器來用。
m4的安裝很簡單,只需使用命令行即可安裝:sudo apt-get install m4
gmp簡介:gmp是一個可以進行任意精度算術的自由庫,可以操作有符號整數、有理數和浮點數。gmp的主要目標應用是密碼學應用與研究、互聯網安全應用、代數系統、計算代數研究等。gmp基於m4,所以在安裝gmp之前要先安裝m4。
這里我下載的版本為gmp-6.2.0.tar.xz
依次執行以下命令(這里一般不會出現問題):
- xz -d gmp-6.2.0.tar.xz
- tar xvf gmp-6.2.0.tar
- cd gmp-6.2.0
- ./configure
- make
- make check
- make install
安裝完成:
2.安裝cmake
cmake簡介:CMake 是一個跨平台的自動化建構系統,它使用一個名為 CMakeLists.txt 的文件來描述構建過程,可以產生標准的構建文件,如 Unix 的 Makefile 或Windows Visual C++ 的 projects/workspaces 。
安裝cmake也使用命令行進行安裝sudo apt-get install cmake
3.安裝TPM-Emulator
選擇tpm-emulator-0.7.5.tar.gz
進行下載
該程序主要包含三個部分:
(1)tpmd:實現 TPM 仿真器的用戶空間應用程序,可以通過 Unix 域套接字(Unix)或命名管道(Windows)進行訪問。
(2)tpmd_dev:一個內核模塊,它提供設備 /dev/tpm 以實現向后兼容,並將收到的命令轉發給 tpmd(僅限Unix和Mac OS X)。
(3)tddl:TPM 仿真器的 TSS 符合設備驅動程序庫。
安裝命令:
- tar -zxvf tpm-emulator-0.7.5.tar.gz
- cd tpm-emulator-0.7.5
- mkdir build
- cd build
- cmake ../
- make
- sudo make install
在make步驟中可能會出現以下錯誤
make: *** /lib/modules/5.4.0-kali4-amd64/build: 沒有那個文件或目錄。 停止。
make[3]: *** [all] 錯誤 2
make[2]: *** [tpmd_dev/linux/tpmd_dev.ko] 錯誤 2
make[1]: *** [tpmd_dev/CMakeFiles/tpmd_dev.dir/all] 錯誤 2
make: *** [all] 錯誤 2
這個錯誤原因就是缺少了5.4.0-kali4-amd64
這個文件,這個是kali的內核頭文件。這里有兩種可能,一是這個文件確實不存在,另一種可能是文件存在但是沒有進行軟鏈接。
這里我們可以使用cd /lib/modules/5.4.0-kali4-amd64
到目錄中,輸入ls -l
看到以下內容:
這里我們看到沒有顯示建立軟鏈接。
然后我們輸入cd /usr/src
,看到此目錄下也沒有任何文件,由此我們可以判斷本機上並不存在此內核頭文件,因此要進行安裝,安裝命令為:sudo apt-get install linux-headers-$(uname -r)
(可以先執行sudo apt-get update
)。
分支問題: 這里我還遇到了另一個問題,命令是沒錯的但始終無法進行下載,這里我使用uname -a
查看了我kali的內核版本為5.4.0-kali3-amd64
,使用sudo apt-get update
后執行sudo apt-get dist-upgrade
更新內核后解決(這個實際上是將所有內容都更新,速度會有點慢)這個問題在處理時沒有進行截圖,因此沒能在過后繼續研究,可能問題表述不是很正確,大致思路寫在這里僅供參考。
成功安裝好內核頭文件后重新回到剛才查看的兩個目錄下,內容應該是這樣的:
/lib/modules/5.4.0-kali4-amd64:
/usr/src:
重新進行回到tpm-emulator安裝包中即可成功進行make
操作。
如果是有內核文件而沒有進行軟鏈接可以參考這個鏈接。
4.初始化並啟動TPM-Emulator
初始化TPM-Emulator
使用以下命令進行初始化:
- tpmd deactivated
- killall tpmd
- tpmd clear
初始化的過程中也不會遇到什么問題。
啟動TPM-Emulator
要想在 Unix 或 Mac OS X 上使用 TPM 仿真器,必須先啟動 TPM 仿真器的守護程序(tpmd)並加載 TPM 設備轉發模塊(tpmd_dev)。
使用以下兩條命令:
- modprobe tpmd_dev
- tpmd -f -d
如果在執行第一條命令的時候遇到:Module tpmd_dev not found
,則執行命令depmod -a
.
如果在執行第二條命令時遇到:failed: address already in use
,則sudo rm -f 括號中的內容
這里我遇到的問題其實是“modprobe”這條命令根本就找不到!上網搜索的結果沒有特別明確針對此問題的解決措施,不過通過網頁上對於此問題與linux-image
有關的說明,結合剛剛下載頭文件的命令,我得出了以下命令:sudo apt-get install --reinstall linux-image-$(uname -r)
,輸入后重新安裝了本機的linux-image
,modprobe命令可用了!(如果還不可用記得加sudo)
5.安裝TSS協議棧
下載地址
我下載的版本為:trousers-0.3.14.tar.gz
先為tousers創建一個目錄,再對其進行解壓
- mkdir trousers-0.3.14
- tar -zxvf trousers-0.3.14.tar.gz -C trousers-0.3.14
- cd trousers-0.3.14
安裝如下依賴包
vi README
,我們可以看到有如下依賴包需要安裝:
依次通過命令行進行安裝即可,其中openssl我已經安裝但是在過后還是報錯,這里其實缺少的是“openssl-devel”包,使用sudo apt-get install libssl-dev
進行安裝。還有幾個包沒有找到,但是不會出什么問題。
編譯和安裝
- sh bootstrap.sh(沒有就不用執行)
- ./configure
- make
- sudo make install
注意⚠️: 實驗指導書中有修改Makefile.am
和Makefile.in
的步驟,但都是針對trousers-0.3.8
左右版本的教程,當前版本無需進行這步操作。
TCSD啟動方式
執行此條命令進行啟動(首先要啟動TPM_Emulator):tcsd -e -f
。
如果遇到錯誤:TCSD TCS ERROR: TCS GetCapability failed with result = 0x1c
就帶上clear
參數重啟TPM_Emulator。
安裝tpm-tools
tpm-tools 是一組管理和利用可信計算組織的 TPM 硬件的工具。 TPM 硬件可以安全地創建,存儲和使用 RSA密鑰(不會暴露在內存中),使用加密哈希等來驗證平台的軟件狀態。該程序包含的工具允許平台管理員管理和診斷平台的 TPM 硬件。
命令行輸入sudo apt-get install tpm-tools
即可安裝。
至此,我們的TPM實驗環境就應該已經搭建完成了。
測試環境是否搭建成功
- 首先啟動tpmd(啟動方式見上)
- 再另一個終端啟動tcsd(啟動方式見上)
- 再開一個終端使用tpm-tools工具的命令進行測試
分別輸入以下命令查看顯示內容(記得加sudo):
- tpm_version
- tpm_getpubek
- tpm_takeownership
環境搭建成功!
實驗感想
實驗完成了TPM仿真環境的搭建,整體實驗上,由於軟件版本更新和機器狀態的千差萬別,遇到了許多許多錯誤。這里輕描淡寫解決的問題實際上每個都花了很多時間去查相關的資料,這個剛解決馬上又雙叒叕遇到另一個問題了。不過在這個過程中也錘煉了解決問題的能力。
以下是我的參考材料:
搭建TPM過程中的常見錯誤