Google відкрив напрацювання, пов'язані із захищеним мережевим протоколом PSP

Компанія Google оголосила про відкриття специфікацій та еталонної реалізації протоколу PSP (PSP Security Protocol), який використовується для шифрування трафіку між датацентрами. Протокол використовує схожу на IPsec ESP (Encapsulating Security Payloads) архітектуру інкапсуляції трафіку поверх IP, забезпечуючи шифрування, криптографічний контроль цілісності та аутентифікацію джерела. Код реалізації PSP написаний мовою Сі та поширюється під ліцензією Apache 2.0.

Особливістю PSP є оптимізація протоколу для прискорення обчислень та зниження навантаження на центральний процесор через винесення операцій шифрування та розшифрування на бік мережевих карток (offload). Для використання апаратного прискорення потрібна наявність спеціальних мережевих карток, сумісних з PSP. Для систем з мережевими картами, які не підтримують PSP, запропоновано програмну реалізацію SoftPSP.

Як транспорт для передачі даних використовується протокол UDP. Пакет PSP починається з заголовка IP, після якого слідує заголовок UDP і потім власний заголовок PSP з інформацією про шифрування та аутентифікацію. Далі прикріплюється вміст оригінального пакету TCP/UDP, який завершується фінальним блоком PSP із контрольною сумою для підтвердження цілісності. Заголовок PSP, а також заголовок і дані пакета, що інкапсулюється завжди автентифіковані для підтвердження справжності пакета. Дані пакета, що інкапсулюється, можуть бути зашифровані, при цьому допускається можливість вибіркового застосування шифрування з залишенням частини TCP-заголовка у відкритому вигляді (при збереженні контролю справжності), наприклад, для надання можливості інспектування пакетів на транзитному мережевому обладнанні.

Google відкрив напрацювання, пов'язані із захищеним мережевим протоколом PSP

PSP не прив'язується до певного протоколу обміну ключами, пропонує кілька варіантів формату пакетів і підтримує використання різних криптоалгоритмів. Наприклад, надається підтримка алгоритму AES-GCM для шифрування та автентифікації та AES-GMAC для перевірки автентичності без шифрування безпосередніх даних, наприклад коли дані не представляють цінності, але потрібно гарантувати, що вони не були підмінені під час передачі і саме ті , що були відправлені спочатку.

На відміну від типових VPN-протоколів PSP застосовується шифрування лише на рівні окремих мережевих з'єднань, а чи не всього каналу зв'язку, тобто. PSP використовує окремі ключі шифрування для різних тунельованих UDP-і TCP-з'єднань. Подібний підхід дає можливість досягти суворішої ізоляції трафіку від різних додатків та обробників, що актуально при виконанні на одному сервері додатків та сервісів різних користувачів.

У Google протокол PSP застосовується як захисту своїх внутрішніх комунікацій, так захисту трафіку клієнтів Google Cloud. Протокол спочатку розрахований на ефективну роботу в інфраструктурах рівня Google та повинен забезпечувати апаратне прискорення шифрування в умовах наявності мільйонів активних мережевих з'єднань та встановлення сотень тисяч нових з'єднань за секунду.

Підтримується два режими роботи - "stateful" і "stateless". У режимі «stateless» ключі для шифрування передаються мережевій карті в дескрипторі пакета, а для розшифровки витягуються з пакета поля SPI (Security Parameter Index) за допомогою майстер-ключа (256-bit AES, зберігається в пам'яті мережевої карти і замінюється кожні 24 години), що дозволяє заощаджувати пам'ять мережної карти та мінімізувати інформацію про стан шифрованих з'єднань, що зберігається на боці обладнання. У режимі "stateful" ключі для кожного з'єднання зберігаються на мережній карті в спеціальній таблиці, за аналогією з тим, як реалізовано апаратне прискорення в IPsec.

Google відкрив напрацювання, пов'язані із захищеним мережевим протоколом PSP

PSP надає своєрідну комбінацію можливостей протоколів TLS та IPsec/VPN. TLS підходив Google з точки зору захисту на рівні окремих з'єднань, але не влаштовував через недостатню гнучкість для апаратного прискорення та відсутності підтримки UDP. IPsec забезпечував незалежність від протоколів і добре підтримував апаратне прискорення, але не підтримував прив'язку ключів до окремих з'єднань, був розрахований лише на невелику кількість тунелів, що створювалися, і мав проблеми з масштабуванням апаратного прискорення через зберігання повного стану шифрування в таблицях, що розміщуються в пам'яті мережевої карти (Наприклад, для обробки 10 млн з'єднань потрібно 5 ГБ пам'яті).

У разі PSP інформація про стан шифрування (ключі, вектори ініціалізації, порядкові номери тощо) може передаватися в TX-дескрипторі пакета або у формі покажчика на згадку про хост-систему, не займаючи пам'ять мережної карти. За даними Google раніше, на шифрування RPC-трафіку в інфраструктурі компанії витрачалося приблизно 0.7% обчислювальної потужності і великий обсяг пам'яті. Використання PSP рахунок залучення коштів апаратного прискорення дозволило знизити цей показник до 0.2%.

Джерело: opennet.ru

Додати коментар або відгук