星期四, 8月 04, 2005

略談信賴運算(四)

先複習一下上次信賴運算的內容:傳統上,內容供應商一旦把內容傳送到本地機器以後就完全失去控制(因為使用者可以「招降」官方的程式,還有可以看透電腦內部所有地方的「千里眼」)。在信賴運算的世界裡,你的機器裡面還有另外一個「值得信賴」的晶片-TPM老大。內容供應商不是把內容直接傳給你,而是利用密碼學的原理,首先由TPM出示血統證明書,內容供應商再把內容利用只有TPM知道的秘密金鑰包起來再傳送給你(當然金鑰會寄給你的TPM)。現在你的機器雖然有內容,但是打開的金鑰在TPM老大那裡....

話說大家做了許多事情,架了CA焉,發了好多血統證書焉,使用了一大堆密碼學焉才把金鑰安全的傳送給你的TPM老大。萬一TPM老大在替內容解密的時候不慎給「內奸」看到解密後的內容,那麼整個保護不就煙飛灰滅,所有努力付諸東流哉?

所以提完TPM在網路上的運作方式後,接下來就應該提到TPM如何安全的掌控金鑰,避免讓宵小(也就是各位使用者)偷走。

TPM會在電腦開機的時候進行一連串的自我測試以確定自己還是「清白之身」。倘若TPM發現自己已經被「招降」了,TPM就會毫不猶豫的把自己所儲藏的東西全部毀滅。電腦裡面有三個東西是一定要確保沒有被使用者修改的:
  • RTM(Root of Trust for Measurement)
  • RTS(Root of Trust for Storage)
  • RTR(Root of Trust for Reporting)
RTM負責進行資料的計算(也就是雜湊),RTS負責可靠的儲存、RTR負責可靠的報告。機器開機以後,TPM會使用儲存於 BIOS的CRTM(Core of Root of Trusted for Measurement),按照TCG的Trusted Computing Overview的說法,CRTM是「the instructions executed by the platform when it acts as the RTM」,而RTM是負責雜湊的核心。RTM、RTR、RTS倘若被破解,整個系賴運算立即宣告破功。

TPM會利用「Inductive Trust」的原理來檢驗程式碼。TPM會檢驗OS loader的程式碼是否可以信賴,而OS loader會檢驗作業系統的程式碼是否可以信賴。作業系統會檢查應用程式的程式碼是否可以信賴,如此一來TPM可以確保一些重要的程式碼存在且正常工作。這樣TPM就不必很辛苦的把所有程式碼通通都塞在小小的晶片裡面。

接下來,TPM會利用某些方法(也許用到上面的Inductive Trust),將整個平台所有重要元件的雜湊都記錄下來並且記錄在SML(Store Measurement Log)中,SML本身放在硬碟(因為可能會有一大堆雜湊碼),但是SML的雜湊會被儲存於TPM的安全暫存器-PCR(Platform Configuration Register),所以想要修改SML?別傻了。

做了這麼多努力以後,TPM可以掌握平台全部或部份的雜湊碼(這我不大清楚,可能要看詳細的實作)。內容供應商這時候就可以使用所謂「Sealing」的功能,該功能會把金鑰送到TPM,同時給定幾組PCR值,如果TPM發現自己的PCR值不符合內容供應商給的PCR值,那麼TPM就不會把金鑰交給任何人。講白話點,未來內容供應商可以在把金鑰送給你之前先確定你有沒有Windows Media Player,有的話是否有被動過手腳等等。依我猜測內容供應商應該有辦法在Sealing的步驟指定TPM哪些應用程式可以進行解密。大概是這樣,運作細節我還不是很清楚。

現在內容供應商已經確定你的電腦的程式完全沒有受到「招降」,就可以放心的把金鑰傳送給你,而且擁有優良血統證明書的TPM只會替指定的應用程式進行解密的動作。

接下來的部份可能就超過信賴運算,不過像是Intel和AMD都提供了隔離記憶體的功能,也就是說應用程式可以取得一塊只有自己看的見的記憶體。如此一來當被信賴的應用程式在處理敏感內容(比如內容供應商給的影片)的時候就可以完全不必擔心有別的程式會偷看。未來作業系統也有可能提供類似PUMA還有PVP-OPM的功能,確保資料經過PCI-express的時候有被加密,替偉大的DRM系統再添一筆奇蹟。

這些大概就是我所知的內容了,想要繼續深入研究的話,可以去拜訪Trusted Computing Group的網站,或是下載TCG Architecture Overview:https: //www.trustedcomputinggroup.org/downloads/TCG_1_0_Architecture_Overview.pdf 來看。注意TCG不是Taipei City Government喔XD。 全文連結

0 意見: