完整性度量架構(IMA)介紹與分析


前言: 2004年,IBM在13th USENIXSecurity Symposium上發表文章《Design and Implementation of a TCG-based Integrity MeasurementArchitecture》,第一次提出了IMA架構。該架構通過在內核中進行patch,實現當應用程序運行、動態鏈接庫加載、內核模塊加載時,將用到的代碼和關鍵數據(如配置文件和結構化數據)做一次度量,將度量結果擴展到PCR10,並創建與維護一個度量列表ML。當挑戰者發起挑戰時,將度量列表與TPM簽名的PCR度量值發送給挑戰者,以此來判斷平台是否可信。

 

第1章           完整性度量介紹

可信計算的實現方案依賴於TPM。TPM擁有三個可信根:

 

1)可信度量根:負責對平台進行度量;
2)可信存儲根:負責密鑰等的存儲;
3)可信報告根:將度量的結果與日志反饋給挑戰者,挑戰者在收到度量結果與度量日志后可進行重新計算並與預期做對比,進而驗證平台是否可信。


可信計算方案的一個重要環節就是對系統平台進行完整性度量,從系統啟動開始,對BIOS、grub、kernel以及操作系統啟動后的應用程序等均需進行度量。TPM中使用PCR(Platform Configure Register)對度量結果進行記錄。

PCR主要操作有兩種:重置與擴展。在系統上電時對24個PCR(TPM1.2版本)進行清零,此后每次度量結果的存儲均依靠擴展運算SHA1(PCR|| new measurement)實現,同時將度量的文件名稱、路徑以及度量結果存入度量日志/列表(Measurement Log/List)這樣從理論上來說,PCR能夠度量無限次,但會導致ML過大。

 

 

 

第2章           IMA的三個機制

2.1           Measurement Mechanism

IMA的度量機制依靠TPM的PCR(重置與擴展)完成,每個PCR有160bit,IMA采用的是PCR10,其運算如下:

 

SHA1(..SHA1(SHA1(0|| m1)|| m2)..|| mi)

 

TPM的PCR寄存器只支持重置與擴展,因此惡意代碼無法進行“任意”的篡改。而在執行惡意操作前,系統已經將惡意代碼的度量值寫入到PCR中,因此惡意代碼是無法繞過度量機制的。

 

2.2           Integrity Challenge Mechanism

2.2.1       Integrity Challenge Protocol(文中提出的)

完整性挑戰協議:
用於挑戰者與平台之間傳輸數據,最主要的數據就是ML和TPM Aggregate,該協議通過TPM和密碼學理論保證傳輸的數據是機密的、完整的。該協議號稱能夠阻止:1)重放攻擊;2)篡改攻擊;3)假面攻擊。

 

目前該部分現在通常稱為“遠程證實”。

遠程證實包括兩種方式:1)隱私簽證機構PCA;2)直接匿名認證DAA。比較讓人不太理解的是,文章中並沒有提到PCA或者DAA,也許是由於文章行文時間較早,還沒有考慮相關問題。

 

 

 

完整性挑戰協議時序:(C為挑戰者,AS:為證實服務端)
 

C :create non-predictable 160bit nonce
2. C → AS : ChReq(nonce)
3a. AS : load protected AIKpriv into TPM
3b. AS : retrieve Quote = sig{P CR, nonce}AIKpriv
3c. AS : retrieve Measurement List ML
4. AS → C: ChRes(Quote, ML)
5a. C : determine trusted cert(AIKpub)
5b. C : validate sig{P CR, nonce}AIKpriv
5c. C : validate nonce and ML using P CR

2.2.2       遠程證實

在IMA能夠對應用程序運行時加載的模塊、動態鏈接庫及程序本身進行度量,以及TPM能夠實現可信啟動(將平台上電到操作系統啟動進行度量並寫入度量日志)的條件下,挑戰者由遠程挑戰平台是否可信的過程稱為遠程證實。TCG對遠程證實提供兩種方案,一種借助隱私簽證機構PCA(Privacy CA),通過PCA對TPM身份驗證、頒發證書AIK,並且對網內的TPM密鑰管理分發、注銷等等,然而,由於TCG組織假定PCA為完全可信的第三方,在PCA與平台串通后,挑戰者無法知道挑戰的平台是否已經被篡改,PCA與挑戰者串通后,遠程證實也失去存在的意義。另一種做法稱為直接匿名認證(DAA),根據零知識證明技術進行TPM身份的認證。

 

遠程證實流程:


1)平台向PCA申請AIK證書

 


2)PCA頒發AIK證書

 


3)平台響應挑戰者

 


2.3           Integrity Validation Mechanism

挑戰者通過完整性挑戰協議獲得了平台的TPM Aggregate和ML,可以實施很多策略來驗證平台的信息是否可信。如通過與可信的度量值進行比較,就是一種最簡單的驗證策略。

更復雜的驗證策略包括:多測量值評估等。

新的程序版本、未知程序、修改后的惡意程序都會產生未知指紋,位置指紋會被挑戰者發現,從而判斷該平台不可信。

 

第3章           原型實現

1)實驗環境:

在Redhat 9.0基礎上基於LSM實現,內核版本為2.6.5。

 

2)時間效率:

采用度量緩存技術,緩存命中率為99.9%,因此總的開銷非常小。

 

3)防繞過安全措施:


1)加入檢查點來防止文件系統的卸載后篡改;

2)度量失敗會直接使TPMAggregate無效化;

3)利用度量計數器來防止ToC-ToU攻擊;

4)利用busy lock防止sysfs文件系統被卸載;

5)加入檢查點來防止篡改dirtyflag。
————————————————
版權聲明:本文為CSDN博主「食肉大灰兔」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/hsluoyc/article/details/46045875


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM