La société Google a annoncé l'ouverture des spécifications et de l'implémentation de référence du protocole PSP (PSP Security Protocol), utilisé pour le chiffrement du trafic entre les centres de données. Le protocole utilise une architecture semblable à l'ESP (Encapsulating Security Payloads) d'IPsec pour encapsuler le trafic au-dessus d'IP, garantissant le chiffrement, le contrÎle cryptographique d'intégrité et l'authentification de la source. Le code de l'implémentation PSP est écrit en langage C et distribué sous la licence Apache 2.0.
Une caractéristique du PSP est l'optimisation du protocole pour accélérer les calculs et réduire la charge sur le processeur central en déchargeant les opérations de chiffrement et de déchiffrement vers les cartes réseau (offload). Pour appliquer l'accélération matérielle, des cartes réseau spéciales compatibles avec le PSP sont nécessaires. Pour les systÚmes avec des cartes réseau ne supportant pas le PSP, une implémentation logicielle SoftPSP est proposée.
Le protocole UDP est utilisĂ© comme transport pour la transmission des donnĂ©es. Un paquet PSP dĂ©bute par un en-tĂȘte IP, suivi d'un en-tĂȘte UDP, puis de l'en-tĂȘte PSP lui-mĂȘme contenant des informations sur le chiffrement et l'authentification. Ensuite, le contenu du paquet TCP/UDP d'origine est attachĂ©, se terminant par un bloc PSP final avec une somme de contrĂŽle pour confirmer l'intĂ©gritĂ©. L'en-tĂȘte PSP, ainsi que l'en-tĂȘte et les donnĂ©es du paquet encapsulĂ©, sont toujours authentifiĂ©s pour confirmer l'authenticitĂ© du paquet. Les donnĂ©es du paquet encapsulĂ© peuvent ĂȘtre chiffrĂ©es, permettant l'application sĂ©lective du chiffrement en laissant une partie de l'en-tĂȘte TCP en clair (tout en maintenant un contrĂŽle d'authenticitĂ©), par exemple, pour permettre l'inspection des paquets sur le matĂ©riel rĂ©seau de transit.

Le PSP n'est pas liĂ© Ă un protocole de distribution de clĂ©s particulier, propose plusieurs formats de paquets et prend en charge l'utilisation de divers algorithmes cryptographiques. Par exemple, il prend en charge l'algorithme AES-GCM pour le chiffrement et l'authentification, ainsi que l'AES-GMAC pour l'authentification sans chiffrement des donnĂ©es elles-mĂȘmes, par exemple lorsque les donnĂ©es n'ont pas de valeur, mais qu'il est nĂ©cessaire de garantir qu'elles n'ont pas Ă©tĂ© altĂ©rĂ©es lors du transfert et que ce sont bien celles qui ont Ă©tĂ© envoyĂ©es initialement.
Contrairement aux types classiques VPN-dans le protocole PSP, le chiffrement est appliquĂ© au niveau des connexions rĂ©seau individuelles, et non Ă l'ensemble du canal de communication, c'est-Ă -dire que le PSP utilise des clĂ©s de chiffrement distinctes pour diffĂ©rentes connexions UDP et TCP. Cette approche permet d'obtenir une isolation plus stricte du trafic entre diffĂ©rentes applications et gestionnaires, ce qui est pertinent lors de l'exĂ©cution sur un mĂȘme le serveur ensemble d'applications et de services pour diffĂ©rents utilisateurs.
Chez Google, le protocole PSP est utilisĂ© Ă la fois pour protĂ©ger ses propres communications internes et pour sĂ©curiser le trafic des clients de Google Cloud. Le protocole est initialement conçu pour fonctionner efficacement dans des infrastructures de niveau Google et doit offrir une accĂ©lĂ©ration matĂ©rielle du chiffrement, mĂȘme en prĂ©sence de millions de connexions rĂ©seau actives et de centaines de milliers de nouvelles connexions par seconde.
Deux modes de fonctionnement sont pris en charge : « stateful » et « stateless ». En mode « stateless », les clés de chiffrement sont transmises à la carte réseau dans le descripteur de paquet, et pour le déchiffrement, elles sont extraites du champ SPI (Security Parameter Index) présent dans le paquet à l'aide d'une clé maßtresse (AES 256 bits, stockée en mémoire de la carte réseau et remplacée toutes les 24 heures), ce qui permet d'économiser la mémoire de la carte réseau et de minimiser les informations sur l'état des connexions chiffrées stockées du cÎté du matériel. En mode « stateful », les clés de chaque connexion sont stockées sur la carte réseau dans une table spéciale, similaire à la maniÚre dont l'accélération matérielle est réalisée dans IPsec.

Le PSP offre une sorte de combinaison des fonctionnalités des protocoles TLS et IPsec/VPN. TLS convenait à Google en termes de protection au niveau des connexions individuelles, mais n'était pas satisfaisant en raison d'un manque de flexibilité pour l'accélération matérielle et de l'absence de support pour UDP. IPsec fournissait une indépendance vis-à -vis des protocoles et supportait bien l'accélération matérielle, mais ne permettait pas de lier les clés à des connexions individuelles, était conçu pour un nombre limité de tunnels créés et posait des problÚmes d'évolutivité de l'accélération matérielle en raison du stockage d'un état complet de chiffrement dans des tables situées dans la mémoire de la carte réseau (par exemple, pour traiter 10 millions de connexions, 5 Go de mémoire sont nécessaires).
Dans le cas du PSP, les informations sur l'Ă©tat du chiffrement (clĂ©s, vecteurs d'initialisation, numĂ©ros d'ordre, etc.) peuvent ĂȘtre transmises dans le descripteur TX du paquet ou sous forme de pointeur vers la mĂ©moire du systĂšme hĂŽte, sans occuper de mĂ©moire sur la carte rĂ©seau. Selon Google, le chiffrement du trafic RPC dans l'infrastructure de l'entreprise nĂ©cessitait auparavant environ 0,7 % de puissance de calcul et un volume important de mĂ©moire. L'implĂ©mentation du PSP grĂące Ă l'accĂ©lĂ©ration matĂ©rielle a permis de rĂ©duire ce chiffre Ă 0,2 %.
Source : opennet.ru
