Google宣布開源offload友好協議PSP
Google 今天宣布PSP(PSP Security Protocol 的簡寫)協議開源。該協議旨在處理數據中心規模的加密硬件offloading,目前該協議已經部署到Google 的生產中。
為了更好地保護用戶隱私,Google 早在十多年前就對數據中心之間的流量進行加密。在隨後的發展中,幾乎所有Google 傳輸的數據都進行了加密。雖然這項工作提供了寶貴的隱私和安全優勢,但軟件加密付出了巨大的代價:加密和解密RPC 需要大約0.7% 的Google 處理能力,以及相應的內存量。
這些成本促使Google 使用PSP(PSP Security Protocol 的簡寫)將加密Offload 到網絡接口卡(NIC)上。所謂的Offload 就是將本來該操作系統進行的一些數據包處理(如TCP 分段、IP分片、重組、checksum、TCP協議處理等)放到網卡硬件中去做, 降低系統CPU 消耗的同時,提高處理的性能。
鑑於TLS 不夠友好,缺乏對UDP 的支持,同時在IPsec 上也存在一些缺陷,因此Google 自主研發了自己的Offload 友好協議。PSP 作為他們的解決方案被描述為一種類似TLS 的、獨立於傳輸的協議,用於每個連接的安全性和Offload 友好。
對於PSP,Google Cloud 團隊的Amin Vahdat 解釋道
PSP 旨在滿足大規模數據中心流量的要求。它不強制要求特定的密鑰交換協議,並且為數據包格式和加密算法提供了很少的選擇。它通過允許每個第4 層連接(例如TCP 連接)使用加密密鑰來實現每個連接的安全性。
它支持無狀態操作,因為加密狀態可以在傳輸數據包時通過數據包描述符傳遞給設備,並且可以在使用安全參數索引(SPI) 和設備上的主密鑰接收數據包。這使我們能夠在硬件中保持最小狀態,與維護大型設備表的典型狀態加密技術相比,避免了硬件狀態爆炸。
PSP 使用帶有自定義標頭和尾標的用戶數據報協議(UDP) 封裝。一個PSP 數據包以原始IP 頭開始,然後是預先指定的目標端口上的UDP 頭,然後是包含PSP 信息的PSP 頭,然後是原始TCP/UDP 數據包(包括頭和有效負載),並以包含完整性校驗和值(ICV) 的PSP 預告片。
第4 層數據包(標頭和有效負載)可以根據用戶提供的稱為Crypt Offset 的偏移量進行加密或驗證。例如,此字段可用於保留部分TCP 標頭在傳輸過程中經過身份驗證但未加密,同時保持數據包的其餘部分加密以支持網絡中的數據包採樣和檢查(如有必要)。
Google 將PSP 修補到他們的生產Linux 內核、他們的Andromeda 網絡虛擬化堆棧和他們的Snap 網絡系統中。據報導,PSP 加密卸載可節省約0.5% 的Google 整體處理能力。今天,他們將PSP 安全協議開源,以鼓勵其進一步採用。他們已經發布了他們的架構規範、參考軟件實現和一套測試用例。