話說大家做了許多事情,架了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)
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 意見:
張貼留言