Google har meddelat att de öppnar specifikationer och en referensimplementation av PSP-protokollet (PSP Security Protocol), som anvÀnds för att kryptera trafiken mellan datacenter. Protokollet anvÀnder en arkitektur för inkapsling av trafik över IP som liknar IPsec ESP (Encapsulating Security Payloads), vilket sÀkerstÀller kryptering, kryptografisk integritetskontroll och autentisering av kÀllan. Koden för realiseringen av PSP Àr skriven i C och distribueras under Apache 2.0-licensen.
En sÀrskild funktion hos PSP Àr optimeringen av protokollet för att pÄskynda berÀkningarna och minska belastningen pÄ centralprocessorn genom att flytta krypterings- och dekrypteringsoperationer till nÀtverkskortens sida (offload). För att anvÀnda hÄrdvaruaccelerering krÀvs speciella nÀtverkskort som Àr kompatibla med PSP. För system med nÀtverkskort som inte stöder PSP har en mjukvarurealisation, SoftPSP, föreslagits.
UDP-protokollet anvÀnds som transport för datatransfer. PSP-paketet inleds med en IP-header, följt av en UDP-header och sedan den egna PSP-headern med information om kryptering och autentisering. DÀrefter bifogas innehÄllet i det ursprungliga TCP/UDP-paketet, som avslutas med en slutblock för PSP med en kontrollsumma för att bekrÀfta integriteten. PSP-headern, liksom headern och data för det inkapslade paketet, autentiseras alltid för att bekrÀfta paketets Àkthet. Data i det inkapslade paketet kan krypteras, och det Àr tillÄtet att selektivt tillÀmpa kryptering, sÄ att en del av TCP-headern förblir i klartext (med bibehÄllen autentiseringskontroll), till exempel för att möjliggöra paketinspektion pÄ transitnÀtverksutrustning.

PSP Àr inte knutet till nÄgot specifikt nyckelbytesprotokoll, erbjuder flera alternativ för paketformat och stöder anvÀndningen av olika kryptografiska algoritmer. Till exempel erbjuds stöd för algoritmen AES-GCM för kryptering och autentisering, samt AES-GMAC för autentisering utan kryptering av de faktiska data, till exempel nÀr data inte har nÄgot vÀrde men det Àr viktigt att garantera att de inte har manipulerats under överföringen och Àr exakt de som ursprungligen skickades.
I motsats till typiska VPN-protokoll i PSP tillÀmpar kryptering pÄ nivÄn av individuella nÀtverksanslutningar, och inte pÄ hela kommunikationskanalen, dvs. PSP anvÀnder separata krypteringsnycklar för olika tunnelbundna UDP- och TCP-anslutningar. Denna metod möjliggör en striktare isolering av trafik frÄn olika applikationer och handhavare, vilket Àr relevant nÀr flera servern applikationer och tjÀnster anvÀnds av olika anvÀndare.
I Google anvÀnds PSP-protokollet bÄde för att skydda interna kommunikationer och för att skydda kundtrafik i Google Cloud. Protokollet Àr ursprungligen avsett för effektiv drift i infrastrukturer av Googles nivÄ och ska sÀkerstÀlla hÄrdvaruacceleration av kryptering under förhÄllanden med miljontals aktiva nÀtverksanslutningar och hundratusentals nya anslutningar per sekund.
TvÄ driftslÀgen stöds - "stateful" och "stateless". I lÀget "stateless" överförs nycklarna för kryptering till nÀtverkskortet i paketets deskriptor och för avkryptering extraheras de frÄn fÀltet SPI (Security Parameter Index) som finns i paketet, med hjÀlp av masternyckeln (256-bit AES, lagras i nÀtverkskortets minne och byts ut var 24:e timme), vilket sparar minne i nÀtverkskortet och minimerar informationen om tillstÄndet för krypterade anslutningar som lagras pÄ enhetens sida. I lÀget "stateful" lagras nycklarna för varje anslutning pÄ nÀtverkskortet i en speciell tabell, pÄ liknande sÀtt som hÄrdvaruacceleration i IPsec.

PSP erbjuder en unik kombination av funktioner frÄn TLS- och IPsec/VPN-protokoll. TLS passade Google nÀr det gÀllde att skydda pÄ nivÄn för individuella anslutningar, men var otillrÀcklig pÄ grund av bristande flexibilitet för hÄrdvaruacceleration och bristen pÄ stöd för UDP. IPsec sÀkerstÀllde protokolloberoende och stödde hÄrdvaruacceleration bra, men hade ingen möjlighet att koppla nycklar till individuella anslutningar, var endast avsett för ett litet antal skapade tunnlar och hade skalningsproblem av hÄrdvaruacceleration pÄ grund av lagring av fullstÀndigt krypteringstillstÄnd i tabeller som placeras i nÀtverkskortets minne (till exempel, för att hantera 10 miljoner anslutningar krÀvs 5 GB minne).
I fallet med PSP kan information om krypteringstillstÄndet (nycklar, initialiseringsvektorer, sekvensnummer osv.) överföras i TX-deskriptorn för paketet eller i form av en pekare till vÀrden i vÀrdsystemet, utan att anvÀnda nÀtverkskortets minne. Enligt Google gick det tidigare Ät cirka 0,7 % av den berÀkningskraft som anvÀndes till att kryptera RPC-trafik inom företagets infrastruktur, vilket krÀvde en stor mÀngd minne. Genom att implementera PSP med hjÀlp av hÄrdvaruaccelerering har denna siffra kunnat sÀnkas till 0,2 %.
KĂ€lla: opennet.ru
