A Google bejelentette a PSP (PSP Security Protocol) protokoll specifikációinak és referenciaváltozatának közzétételét, amelyet az adatközpontok közötti forgalom titkosítására használnak. A protokoll hasonló az IPsec ESP (Encapsulating Security Payloads) architektúrához, amely a forgalom IP fölötti kapszulázását biztosítja, titkosítást, kriptográfiai integritás-ellenőrzést és forrás-igazolást nyújtva. A PSP megvalósító kódja C nyelven íródott, és Apache 2.0 licenc alatt terjesztik.
A PSP jellemzője a protokoll optimalizálása a számítási teljesítmény felgyorsítása és a központi feldolgozóegység terhelésének csökkentése érdekében a titkosítási és visszafejtési műveletek hálózati kártyákra történő áthelyezésével (offload). A hardveres gyorsításhoz speciális, PSP-vel kompatibilis hálózati kártyákra van szükség. Azok számára, akik nem támogatják a PSP-t, a SoftPSP szoftveres megvalósítást kínál.
Az adatok továbbításához UDP protokollt használnak. A PSP csomag egy IP fejlécvel kezdődik, amelyet egy UDP fejléc követ, majd pedig a PSP saját fejlécével, amely tartalmazza a titkosítással és hitelesítéssel kapcsolatos információkat. Ezt követi az eredeti TCP/UDP csomag tartalma, amelyet a végső PSP blokk zár le, amely tartalmazza az integritás ellenőrzésének ellenőrző összegét. A PSP fejléc, valamint a kapszulázott csomag fejléc és adatok mindig hitelesítve vannak a csomag hitelességének megerősítése érdekében. A kapszulázott csomag adatai titkosíthatók, emellett lehetőség van a titkosítás szelektív alkalmazására is, amely megengedi, hogy a TCP fejléc egy része nyitva maradjon (a hitelesség ellenőrzésének megőrzésével), például a csomagok átvizsgálásának lehetővé tétele érdekében az átmeneti hálózati eszközökön.

A PSP nem kötődik egy adott kulcscsere protokollhoz, hanem több csomagformátumot kínál, és támogatja különböző kriptográfiai algoritmusok használatát. Például támogatja az AES-GCM algoritmust az adatok titkosításához és az autentikációhoz, valamint az AES-GMAC-ot az adatok titkosítása nélküli hitelesítéshez, például amikor az adatok nem értékesek, de garantálni kell, hogy azokat nem módosították a továbbítás során, és azok pontosan azok, amelyeket eredetileg elküldtek.
A szokásos VPN-protokollokkal ellentétben a PSP titkosítást alkalmaz az egyes hálózati kapcsolatok szintjén, nem pedig az egész kommunikációs csatorna szintjén, azaz a PSP különböző titkosítási kulcsokat használ az eltérő alagútba helyezett UDP- és TCP-kapcsolatokhoz. Ez a megközelítés lehetővé teszi a forgalom szigorúbb elszigetelését különböző alkalmazások és feldolgozók között, ami releváns, ha egy szerveren felhasználók különböző alkalmazásait és szolgáltatásait futtatják.
A Google-nél a PSP protokollt nemcsak a saját belső kommunikációk védelmére, hanem a Google Cloud ügyfeleinek forgalmának védelmére is alkalmazzák. A protokoll alapvetően hatékony működésre lett tervezve a Google szintű infrastruktúrákban, és biztosítania kell a titkosítás hardveres gyorsítását olyan környezetekben, ahol milliók aktív hálózati kapcsolatának kezelése és százezer új kapcsolat másodpercenkénti felépítése zajlik.
Két üzemmódot támogat — „stateful” és „stateless”. A „stateless” üzemmódban a titkosításhoz szükséges kulcsokat a hálózati kártyának a csomag leírójában továbbítják, a visszafejtéshez pedig a csomagban található SPI (Security Parameter Index) mezőből kerülnek kiolvasásra a master kulcs segítségével (256-bites AES, a hálózati kártya memóriájában tárolva, és 24 óránként cserélve), ami lehetővé teszi a hálózati kártya memóriafogyasztásának csökkentését és a titkosított kapcsolatokról tárolt állapotinformáció minimalizálását a hardver oldalán. A „stateful” üzemmódban pedig minden kapcsolat kulcsai a hálózati kártyán egy speciális táblázatban kerülnek tárolásra, hasonlóan ahhoz, ahogyan az IPsec esetében a hardveres gyorsítást megvalósítják.

A PSP egy különleges kombinációt kínál a TLS és az IPsec/VPN protokollok lehetőségeiből. A TLS megfelelő volt a Google számára az egyes kapcsolatok szintjén történő védelme szempontjából, de nem volt elég rugalmas a hardveres gyorsítás támogatására és nem támogatta az UDP-t. Az IPsec függetlenséget biztosított a protokolloktól és jól támogatta a hardveres gyorsítást, de nem támogatta a kulcsok egyes kapcsolatokhoz való kötését, csak korlátozott számú alagút létrehozására volt alkalmas, és problémái voltak a hardveres gyorsítás skálázhatóságával, mivel a titkosítás teljes állapotának tárolása a hálózati kártyában elhelyezett táblázatokban (például 10 millió kapcsolat feldolgozásához 5 GB memória szükséges).
A PSP esetében a titkosítási állapot információi (kulcsok, inicializáló vektorok, sorrend számok stb.) átkonvertálhatóak a TX-csomag leíróban, vagy a host rendszer memória mutatójaként továbbíthatóak, anélkül, hogy a hálózati kártya memóriáját igénybe vennék. A Google korábbi adatai szerint a RPC-forgalom titkosítása a cég infrastruktúrájában körülbelül 0,7%-át tette ki a számítási teljesítménynek és jelentős memóriát igényelt. A PSP bevezetése a hardveres gyorsítás segítségével lehetővé tette ennek a mutatónak a csökkentését 0,2%-ra.
Forrás: opennet.ru
