Если вы знаете, что получатель публикует c ключ RSA, вы можете использовать RSA-KEM (KEM: механизм инкапсуляции ключей). RSA-KEM для одного получателя с AES-GCM просто следующим образом:
Примечание 1: На самом деле это композиция KEM и DEM (механизм инкапсуляции данных; аутентифицированный шифр служит DEM). Это обеспечивает стандарт IND-CCA2 / NM-CCA2 - неразличимость и несгибаемость зашифрованного текста при адаптивной атаке с использованием выбранного зашифрованного текста. Это минимальное требование для современной криптографии.
Примечание 2: Если вы хотите отправить сам ключ, как вы описали, чтобы предотвратить атаки на учебник RSA, вам понадобится схема заполнения как OAEP или PKCS # v1.5. RSA-KEM устраняет это, используя полный модуль в качестве сообщения.
Примечание 3: Вышеописанный RSA-KEM работает для случая одного пользователя. RSA-KEM для нескольких пользователей попадет в широковещательную атаку Хостада . Вместо этого используйте RSAES-OAEP, это делает его безопасным для нескольких получателей с одинаковым x
, зашифрованным для разных получателей. Это сделает очень полезным отправку сообщения нескольким получателям вместо создания нового x
для каждого получателя и шифрования сообщения для каждого производного ключа (как это делает PGP / GPG).