Google 基礎設施安全實踐:如何構建一個可信賴的雲平台(硬體篇)
雖然一直以來都說計算機安全方面沒有絕對的安全,但我們仍然希望我們所設計、構建和運營的Google Cloud Platform(GCP),能夠去更好的保護客戶的代碼和數據。 事實上,我們分多層次的去強化了我們的架構,其中包括Google設計的硬體、Google控制的固件堆棧、Google策劃的操作系統映像、Google加固的虛擬機管理程序以及數據中心的物理安全和服務等。
在這篇文章中,我們將主要展示我們是如何使用我們的定製晶元Titan來建立一個值得信任的硬體root機制的。
Titan是一款安全,低功耗的微控制器,它最開始是在在Google Cloud Next 17上推出的,並且具有Google硬體安全要求和場景設計。 讓我們來看看Titan是如何工作,以確保機器使用可驗證的代碼來從已知的良好狀態啟動,並為數據中心中的加密操作確定值得信任的硬體root。
機器的boot基礎
與大多數現代計算機一樣,Google數據中心中的機器具有多個組件,包括一個或多個CPU、RAM、基板管理控制器(BMC)、NIC、引導固件、引導固件快閃記憶體和持久存儲。我們來看看這些組件如何交互以boot機器的:
1、當BMC配置機器硬體使CPU退出複位時,機器的boot過程開始。
2、然後,CPU將從引導固件快閃記憶體中載入基本固件(Boot或UEFI),從而執行進一步的硬體/軟體配置。
3、一旦機器配置充分,boot固件訪問機器的持久存儲器上的「boot扇區」,並將一個稱為「boot載入程序」的特殊程序載入到系統內存中。
4、boot固件隨後將執行控制傳遞給boot載入程序,boot載入程序將初始OS映像從存儲器載入到系統存儲器中,並將執行控制傳遞到操作系統。
在我們的數據中心,我們通過安全啟動來保護boot過程。我們的機器啟動一個已知的固件/軟體堆棧,加密地驗證此堆棧,然後根據該驗證的狀態獲取(或未能獲得)訪問我們網路上的資源。Titan集成了這個過程,並提供了額外的保護層。
隨著特權軟體攻擊的增加,Rootkit上的研究越來越多,我們致力於為基於我們的基礎架構的機器提供基於安全boot和基於硬體的信任根源,並託管我們的Google Cloud工作負載。
使用Titan安全boot
通常,安全啟動依賴於已驗證的boot固件和boot載入程序的組合以及數字簽名的boot文件,從而能夠提供一定的安全保證。另外,事實上在安全方面還可以提供私鑰存儲和管理。而Titan不僅滿足了這些期望,而且還超越了以上,提供了兩個重要的附加安全屬性:修復並且有第一指令完整性。如果發現Titan固件中的錯誤並修復了補丁,則可以通過修復重新建立信任,第一條指令完整性可以讓我們識別每台機器啟動周期上運行的最早的代碼。
為了實現這些安全特性,Titan還包含了幾個組件:安全應用處理器,加密協處理器,硬體隨機數發生器,複雜密鑰層次,嵌入式靜態RAM(SRAM),嵌入式快閃記憶體和只讀存儲器塊。 Titan通過串列外設介面(SPI)與主CPU進行通信,並插入第一個特權組件的boot固件快閃記憶體,例如BMC或平台控制器中樞(PCH),允許Titan觀察每個位元組的boot固件。
Titan的應用處理器在其主機通電後就會立即從其嵌入式只讀存儲器上執行代碼。在整個過程中會放下那些不可變的代碼,這一過程被稱為 boot ROM,在每個晶元複位時都會被隱含地驗證進行一次驗證。每當晶元啟動時,Titan都會運行內存自檢,以確保所有內存(包括ROM)未被篡改。下一步是載入Titan的固件。即使該固件嵌入在片上快閃記憶體中,Titan 的boot ROM也不會盲目信任。相反,boot ROM使用公共密鑰加密來驗證Titan的固件,並將該驗證代碼的身份混合到Titan的密鑰層次結構中。然後,boot ROM才會載入已驗證的固件。
一旦Titan以安全的方式boot 了自己的固件,它會將注意力轉移到主機的boot 固件快閃記憶體上,並使用公鑰加密來驗證其內容。 Titan可以將PCH / BMC門禁到啟動固件快閃記憶體,直到它已經驗證了快閃記憶體內容,此時它表示準備釋放機器的其餘部分重置。保持機器複位,而Titan加密驗證boot 固件為我們提供了第一條指令完整性屬性:我們知道從第一條指令boot 我們的機器上的啟動固件和操作系統。事實上,我們甚至知道在boot 固件的第一條指令之前可能會獲取哪些微代碼補丁。最後,Google驗證的boot 固件配置機器並載入引導載入程序,後者將驗證並載入操作系統。
使用Titan加密身份
除了啟用安全boot之外,我們還開發了一種基於Titan的端到端加密身份系統,可以作為數據中心不同加密操作的信任root。 Titan晶元製造過程為每個晶元生成唯一的鍵控材料,並將此材料與來源信息一起安全存儲到註冊表資料庫中。該資料庫的內容使用基於離線Quorum的Titan認證中心(CA)中維護的密鑰加密保護。個人Titan晶元可以生成針對Titan CA的證書籤名請求(CSR),在Titan身份管理員的法定人數的指導下,可以在簽發身份證書之前使用註冊表資料庫中的信息來驗證CSR的真實性。
基於Titan的身份系統不僅驗證了創建CSR的晶元的來源,而且還驗證了晶元上運行的固件,因為固件的代碼標識被嵌入到片上密鑰層次結構中。該屬性可以進行修復,並允許我們修復Titan固件中的錯誤,並頒發只能由修補的Titan晶元來執行的證書。基於Titan的身份系統使後端系統能夠為獨立的Titan boot的機器或在這些機器上運行的作業提供秘密和密鑰的安全的存儲。Titan還能夠鏈接和簽署關鍵的審核日誌,使這些日誌的篡改痕迹變得十分明顯。為了提供防篡改的記錄功能,Titan通過加密的方式將日誌消息與Titan維護的安全單調計數器的連續值相關聯,並使用其私鑰對這些關聯進行簽名。日誌消息與安全單調計數器值的綁定確保了審計日誌無法被更改或刪除,即使內部人員可以訪問相關的機器,也完全不需要擔心。
結論
我們的目標是通過使用一個設計成以預期方式行事的專用實體來保護boot過程。 而Titan通過boot對系統固件和軟體組件的驗證,提供了這種信任root,並建立了強大的,基於硬體的系統身份。 Google在內部設計了Titan的硬體邏輯,以減少硬體存在後門的機會。 Titan的生態系統確保生產基礎設施使用授權和可驗證的代碼安全地啟動。
簡而言之,Titan提供了基於硬體的可信任的root,建立了機器的強大身份,我們可以做出重要的安全決策,並驗證系統的「健康」與否。Titan還提供了固件和軟體組件的完整性驗證,該系統的強大身份確保我們對系統進行的任何更改都將具有不可否認的審核跟蹤。防篡改的記錄功能有助於識別內部人員使用root訪問執行的操作。
最後,有關如何加強環境的更多信息,可以訪問Google Cloud Platform Security了解。
本文翻譯自https://cloudplatform.googleblog.com/2017/08/Titan-in-depth-security-in-plaintext.html,如若轉載,請註明原文地址: http://www.4hou.com/info/industry/7425.html 更多內容請關注「嘶吼專業版」——Pro4hou
推薦閱讀:
※收銀系統的 POS 機是怎麼被黑客攻擊控制,並盜竊資料的?
※2013 年的互聯網安全嗎?
※iOS、Android、WP 哪個更能保護用戶的個人隱私數據?哪個系統更安全些?
※如何看待 2017 年 5 月 12 日中國大量高校及公共設備發生電腦中毒,勒索比特幣的事件?
※以太坊錢包Parity存在重大安全漏洞,2.85億美元的以太幣被凍結
TAG:信息安全 |