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