Kompania Google shpalli hapjen e specifikimeve dhe implementimit referencë të protokollit PSP (PSP Security Protocol), i cili përdoret për encryptimin e trafikët mes qendrave të të dhënave. Protokolli përdor një arkitekturë të ngjashme me IPsec ESP (Encapsulating Security Payloads) për të inkapsuluar trafikun mbi IP, duke ofruar encryptim, kontrollin kriptografik të integritetit dhe autentikim të burimit. Kodi i implementimit të PSP është i shkruar në gjuhën C dhe shpërndahen nën licencën Apache 2.0.
Veçoria e PSP është optimizimi i protokollit për të acceleruar llogaritjet dhe për të reduktuar ngarkesën mbi procesorin qendror duke transferuar operacionet e encryptimit dhe decryptimit në kartat rrjet (offload). Për të aplikuar përshpejtimin harduerik kërkohet që të ketë karta rrjeti speciale, të pajtueshme me PSP. Për sistemet me karta rrjeti që nuk mbështesin PSP, është propozuar implementimi softuerik SoftPSP.
Për transportin e të dhënave përdoret protokolli UDP. Paketa PSP fillon me një header IP, pas të cilit vjen një header UDP dhe më pas vetë header PSP me të dhëna për encryptimin dhe autentikimin. Më pas bashkangjitet përmbajtja e paketës origjinale TCP/UDP, e cila përfundon me një blok përfundimtar PSP me një kontroll sumë për të konfirmuar integritetin. Headeri PSP, si dhe headeri dhe të dhënat e paketës së inkapsuluar gjithmonë janë autentikuar për të konfirmuar autenticitetin e paketës. Të dhënat e paketës së inkapsuluar mund të jenë të encryptuara, duke lejuar mundësinë e aplikimit selektiv të encryptimit duke lënë disa pjesë të headerit TCP në një formë të hapur (duke ruajtur kontrollin e autenticitetit), për shembull, për të lejuar inspektimin e paketave në pajisjet rrjet transit.

PSP nuk është i lidhur me një protokoll të caktuar për këmbimin e çelësave, ofron disa variante të formatit të paketave dhe mbështet përdorimin e algoritheve të ndryshme kriptografike. Për shembull, ofrohet mbështetje për algorin e AES-GCM për encryptim dhe verifikim të autenticitetit (autentikim) dhe AES-GMAC për verifikimin e autenticitetit pa encryptimin e të dhënave të drejtpërdrejta, për shembull kur të dhënat nuk përbëjnë vlerë, por është e nevojshme të garantosh që ato nuk janë manipuluar gjatë transferimit dhe janë ato që janë dërguar fillimisht.
Në krahasim me tipiket VPN-Për protokollet në PSP, përdoret enkriptimi në nivelin e lidhjeve të veçanta të rrjetit, dhe jo të gjithë kanalit të komunikimit; dmth. PSP përdor çelësa enkriptimi të ndarë për lidhje të ndryshme UDP dhe TCP të tuneluar. Ky qasje ofron mundësinë të arrihet një izolim më të fortë të trafikut nga aplikacione dhe përpunues të ndryshëm, që është e rëndësishme gjatë ekzekutimit të një server aplikacionesh dhe shërbimesh të përdoruesve të ndryshëm.
Në Google, protokolli PSP përdoret si për mbrojtjen e komunikimeve të brendshme, ashtu edhe për mbrojtjen e trafikut të klientëve të Google Cloud. Protokolli është projektuar fillimisht për të punuar në mënyrë efikase në infrastrukturën e nivelit Google dhe duhet të sigurojë përshpejtimin harduerik të enkriptimit në kushte të pranishëm me miliona lidhje aktive të rrjetit dhe krijimin e qindra mijëra lidhjeve të reja në sekondë.
Mundësohen dy mënyra funksionimi - 'stateful' dhe 'stateless'. Në mënyrën 'stateless', çelësat për enkriptim dërgohen në kartën e rrjetit në deshkrimin e paketës, ndërsa për dekriptim nxirren nga fusha SPI (Security Parameter Index) të pranishme në paketë përmes çelësit të masterit (256-bit AES, ruhet në memorien e kartës së rrjetit dhe zëvendësohet çdo 24 orë), që lejon ruajtjen e memories së kartës së rrjetit dhe minimizon informacionin për gjendjen e lidhjeve të enkriptuara, të cilat ruhen nga pajisja. Në mënyrën 'stateful', çelësat për çdo lidhje ruhen në këtë kartë në një tabelë të veçantë, siç realizohet përshpejtimi harduerik në IPsec.

PSP ofron një kombinim të veçantive të protokolleve TLS dhe IPsec/VPN. TLS i përshtatet Google nga ana e mbrojtjes në nivelin e lidhjeve të veçanta, por nuk i ofronte fleksibilitetin e nevojshëm për përshpejtim harduerik dhe mbështetje për UDP. IPsec siguronte pavarësi nga protokollet dhe mbështeste mirë përshpejtimin harduerik, por nuk mbështeste lidhjen e çelësave me lidhje të veçanta, ishte i përshtatur vetëm për një numër të vogël tunelesh të krijuara dhe kishte probleme me përmasimin e përshpejtimit harduerik për shkak të ruajtjes së gjendjes së plotë të enkriptimit në tabela që janë ruajtur në memorien e kartës së rrjetit (p.sh. për përpunimin e 10 milion lidhjeve kërkohen 5 GB memorje).
Në rastin e PSP, informacioni mbi gjendjen e enkriptimit (çelësat, vektorët e inicializimit, numrat rendorë, etj.) mund të transmetohet në deshifruesin TX të paketës ose në formën e një treguesi në memorien e sistemit host, pa zënë memorien e kartës rrjetë. Sipas të dhënave të Google, më parë, enkriptimi i trafikëve RPC në infrastrukturën e kompanisë konsumonte rreth 0.7% të kapacitetit të llogaritjes dhe një volum të madh memorien. Zbatimi i PSP-së përmes tërheqjes së mjeteve të përshpejtimit harduerik ka lejuar uljen e këtij treguesi në 0.2%.
Burimi: opennet.ru
