Compania Google a anunțat deschiderea specificațiilor și a implementării de referință a protocolului PSP (PSP Security Protocol), utilizat pentru criptarea traficului între centrele de date. Protocolul folosește o arhitectură de tip ESP (Encapsulating Security Payloads) similară cu IPsec pentru a înfășura traficul deasupra IP, oferind criptare, control criptografic al integrității și autentificarea sursei. Codul de implementare PSP este scris în limbajul C și este distribuit sub licența Apache 2.0.
O caracteristică a PSP este optimizarea protocolului pentru a accelera calculul și a reduce încărcătura procesorului central prin descărcarea operațiunilor de criptare și decriptare către plăcile de rețea (offload). Pentru utilizarea accelerării hardware este necesară existența unor plăci de rețea speciale, compatibile cu PSP. Pentru sistemele cu plăci de rețea care nu suportă PSP, este propusă o implementare software numită SoftPSP.
Protocolul UDP este utilizat ca transport pentru transmiterea datelor. Pachetul PSP începe cu un header IP, urmat de un header UDP și apoi de headerul propriu-zis PSP cu informații despre criptare și autentificare. Apoi se atașează conținutul pachetului original TCP/UDP, care se finalizează cu un bloc PSP cu o sumă de control pentru confirmarea integrității. Headerul PSP, precum și headerul și datele pachetului înfășurat, sunt întotdeauna autentificate pentru a confirma autenticitatea pachetului. Datele pachetului înfășurat pot fi criptate, permițând campania selectivă de criptare, păstrând o parte din headerul TCP în format deschis (în timp ce se păstrează controlul autentic), de exemplu, pentru a permite inspectarea pachetelor pe echipamentele de rețea de tranziție.

PSP nu se leagă de un protocol specific de schimb de chei, oferind mai multe opțiuni de format pentru pachete și susține utilizarea diferitelor algoritmi criptografici. De exemplu, se oferă suport pentru algoritmul AES-GCM pentru criptarea și verificarea autenticității (autentificare) și AES-GMAC pentru autentificarea fără criptarea datelor directe, de exemplu, atunci când datele nu au valoare, dar trebuie garantat că nu au fost modificate în timpul transmiterii și că sunt exact cele care au fost trimise inițial.
Spre deosebire de tipice VPN-protocole PSP utilizează criptarea la nivelul conexiunilor de rețea individuale, nu pentru întreaga bandă de comunicare, adică PSP folosește chei de criptare separate pentru diferitele conexiuni tunelate UDP și TCP. Această abordare permite obținerea unei izolații mai stricte a traficului între aplicații și gestionări diferite, ceea ce este relevant atunci când se execută pe un singur server aplicații și servicii ale diferitelor utilizatori.
În Google, protocolul PSP este utilizat atât pentru protejarea comunicărilor interne, cât și pentru protecția traficului clienților Google Cloud. Protocolul a fost inițial conceput pentru a funcționa eficient în infrastructuri la nivel Google și trebuie să asigure accelerarea hardware-ului criptării în condițiile existenței a milioane de conexiuni de rețea active și stabilirea de sute de mii de noi conexiuni pe secundă.
Sunt susținute două moduri de operare - „stateful” și „stateless”. În modul „stateless”, cheile pentru criptare sunt transmise plăcii de rețea în descriptorul pachetului, iar pentru decriptare sunt extrase din câmpul SPI (Security Parameter Index) prezent în pachet, folosind cheia principală (AES de 256 biți, stocată în memoria plăcii de rețea și înlocuită la fiecare 24 de ore), ceea ce permite economisirea memoriei plăcii de rețea și minimizarea informațiilor despre starea conexiunilor criptate, stocate de partea de hardware. În modul „stateful”, cheile pentru fiecare conexiune sunt stocate pe placa de rețea într-un tabel special, similar cu modul în care este realizată accelerarea hardware în IPsec.

PSP oferă o combinație unică de funcționalități ale protocoalelor TLS și IPsec/VPN. TLS a fost adecvat pentru Google din punct de vedere al protecției la nivel de conexiuni individuale, dar nu a fost satisfăcător din cauza lipsei de flexibilitate pentru accelerarea hardware-ului și a absenței suportului pentru UDP. IPsec asigura independența față de protocoale și susținea bine accelerarea hardware-ului, dar nu oferea legătura cheilor cu conexiunile individuale, era destinat doar unui număr mic de tuneluri create și avea probleme de scalabilitate a accelerării hardware din cauza stocării întregului stadiu de criptare în tabele plasate în memoria plăcii de rețea (de exemplu, pentru procesarea a 10 milioane de conexiuni sunt necesari 5 GB de memorie).
În cazul PSP, informațiile despre starea criptării (chei, vectori de inițializare, numere de ordine etc.) pot fi transmise în descriptorul TX al pachetului sau sub formă de pointer la memoria sistemului gazdă, fără a ocupa memoria plăcii de rețea. Conform celor de la Google, anterior, criptarea traficului RPC în infrastructura companiei consuma aproximativ 0,7% din puterea de calcul și un volum mare de memorie. Implementarea PSP prin atragerea de fonduri de accelerare hardware a permis reducerea acestei valori la 0,2%.
Sursa: opennet.ro
