PROV_RSA_AES
PROV_RSA_AES — это условное обозначение гипотетической или тестовой криптографической схемы, объединяющей алгоритмы RSA (асимметричное шифрование) и AES (симметричное шифрование) для обеспечения конфиденциальности и целостности данных. В реальной практике подобные комбинации используются в протоколах защиты информации, таких как TLS, PGP, S/MIME, где RSA применяется для шифрования сеансового ключа, а AES — для шифрования основного потока данных. Термин «PROV_RSA_AES» может встречаться в контексте тестирования, моделирования или учебных материалов, а также в спецификациях программных библиотек (например, OpenSSL, Crypto++), где требуется обозначить конкретный набор алгоритмов для проверки корректности реализации.
История и происхождение
Развитие криптографии с открытым ключом
Асимметричное шифрование, основанное на алгоритме RSA, было предложено в 1977 году Роном Ривестом, Ади Шамиром и Леонардом Адлеманом. RSA позволяет безопасно передавать ключи по незащищённым каналам, но обладает низкой производительностью при шифровании больших объёмов данных. Симметричное шифрование AES, принятое в 2001 году как стандарт NIST, напротив, обеспечивает высокую скорость обработки, но требует предварительного согласования ключа.
Появление гибридных схем
Для преодоления ограничений каждого из методов в 1980–1990-х годах стали активно разрабатываться гибридные криптосистемы. В них асимметричный алгоритм (RSA) используется для шифрования случайного сеансового ключа, а симметричный (AES) — для шифрования самих данных. Такая комбинация, иногда обозначаемая как «RSA + AES», стала основой многих протоколов, включая SSL/TLS (с 1995 года) и OpenPGP (с 1997 года). Термин «PROV_RSA_AES» не является официальным стандартом, но может быть введён разработчиками для внутреннего обозначения тестовых векторов или профилей безопасности.
Технические характеристики
Алгоритм RSA
- Тип: асимметричное шифрование с открытым ключом.
- Длина ключа: обычно 1024, 2048 или 4096 бит (рекомендуется не менее 2048 бит для современных применений).
- Скорость: медленное шифрование/дешифрование (порядка 1–10 Мбит/с на современных процессорах для ключа 2048 бит).
- Использование в гибридной схеме: шифрование сеансового ключа длиной 128–256 бит.
Алгоритм AES
- Тип: симметричное блочное шифрование.
- Длина ключа: 128, 192 или 256 бит (AES-128, AES-192, AES-256).
- Режимы работы: ECB, CBC, CTR, GCM, CCM и другие (в гибридных схемах чаще используется GCM для обеспечения аутентификации).
- Скорость: высокая (до 1–5 Гбит/с на аппаратных ускорителях или современных процессорах с поддержкой AES-NI).
Гибридная схема PROV_RSA_AES
В типовой реализации:
- Генерируется случайный сеансовый ключ (например, 256 бит для AES-256).
- Этот ключ шифруется открытым ключом RSA получателя (RSA-OAEP или RSA-PKCS#1 v1.5).
- Зашифрованный ключ передаётся вместе с данными.
- Данные шифруются с использованием AES в выбранном режиме (например, AES-256-GCM).
- Получатель расшифровывает сеансовый ключ своим закрытым ключом RSA, затем расшифровывает данные с помощью AES.
Такая схема обеспечивает как конфиденциальность, так и (при использовании режимов с аутентификацией) целостность данных.
Применение
Протоколы защиты передачи данных
- TLS/SSL: в версиях до 1.3 использовались комбинации RSA для обмена ключами и AES для шифрования (например, TLS_RSA_WITH_AES_128_CBC_SHA). В TLS 1.3 RSA для обмена ключами заменён на ECDHE, но гибридный принцип сохраняется.
- IPsec: в режиме ESP может применяться RSA для аутентификации и AES для шифрования.
- SSH: в протоколе SSH-2 используется RSA для аутентификации и AES для шифрования канала.
Шифрование данных на диске и в хранилищах
- PGP/GPG: в OpenPGP (RFC 4880) гибридная схема (RSA + AES) является стандартной для шифрования файлов и электронной почты.
- BitLocker (Windows): использует RSA для защиты ключей восстановления и AES для шифрования томов.
- LUKS (Linux): поддерживает гибридные схемы с RSA для защиты мастер-ключа.
Криптографические библиотеки
- OpenSSL: предоставляет функции для комбинированного использования RSA и AES (например, через EVP интерфейс). В тестовых наборах могут встречаться обозначения типа «PROV_RSA_AES» для проверки корректности.
- Crypto++: в документации упоминаются тестовые векторы, где RSA и AES используются совместно.
- Bouncy Castle: реализует гибридные схемы для Java и .NET.
Критика и ограничения
Уязвимости RSA
- Атаки на короткие ключи: ключи RSA менее 2048 бит считаются ненадёжными (рекомендации NIST, 2023).
- Квантовая угроза: алгоритм RSA уязвим к атакам с использованием квантовых компьютеров (алгоритм Шора), что может сделать гибридные схемы небезопасными в будущем. В связи с этим разрабатываются постквантовые криптосистемы (например, CRYSTALS-Kyber).
Проблемы реализации
- Неправильное заполнение (padding): использование устаревших схем (RSA-PKCS#1 v1.5) может привести к атакам Bleichenbacher. Рекомендуется RSA-OAEP.
- Управление ключами: безопасность схемы зависит от сохранности закрытого ключа RSA и случайности сеансового ключа AES.
Альтернативы
- ECDH + AES: более эффективная и современная замена RSA в гибридных схемах (например, в TLS 1.3).
- Постквантовые гибриды: комбинации постквантовых алгоритмов с AES (например, Kyber + AES) для защиты от квантовых атак.
Примеры реализации
Псевдокод гибридного шифрования (RSA + AES)
``` // Генерация ключей RSA (r_pub, r_priv) = RSA_KeyGen(2048)
// Генерация сеансового ключа AES aes_key = RandomBytes(32) // 256 бит
// Шифрование данных ciphertext_aes = AES_Encrypt(plaintext, aes_key, mode="GCM")
// Шифрование сеансового ключа RSA encrypted_key = RSA_Encrypt(aes_key, r_pub, padding="OAEP")
// Передача зашифрованного ключа и данных Send(encrypted_key + ciphertext_aes) ```
Пример в OpenSSL (командная строка)
```
Генерация ключей RSA
openssl genrsa -out private.pem 2048 openssl rsa -in private.pem -pubout -out public.pem
Шифрование данных с помощью AES (сеансовый ключ генерируется автоматически)
openssl enc -aes-256-gcm -in plain.txt -out cipher.bin -pass file:public.pem
Дешифрование
openssl enc -d -aes-256-gcm -in cipher.bin -out decrypted.txt -pass file:private.pem ```
Интересные факты
- В спецификации TLS 1.2 (RFC 5246) комбинация RSA + AES была одной из самых распространённых, но в TLS 1.3 (RFC 8446, 2018) RSA для обмена ключами исключён из-за уязвимостей.
- Алгоритм AES был разработан бельгийскими криптографами Джоан Даймен и Винсентом Рэйменом и первоначально назывался Rijndael.
- В России для государственных нужд вместо AES используется стандарт ГОСТ 28147-89 (с 2015 года — ГОСТ Р 34.12-2015), а для асимметричного шифрования — ГОСТ Р 34.10-2012. Гибридные схемы с этими алгоритмами также применяются в системах, сертифицированных ФСБ России.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →