Гибридное шифрование

Примитив гибридного шифрования сочетает в себе эффективность симметричного шифрования с удобством криптографии с открытым ключом (асимметричной). Любой может зашифровать данные с помощью открытого ключа, но расшифровать данные могут только пользователи с закрытым ключом.

При гибридном шифровании отправитель генерирует новый симметричный ключ для шифрования открытого текста каждого сообщения и получения зашифрованного текста. Этот симметричный ключ инкапсулируется с открытым ключом получателя. При гибридном дешифровании симметричный ключ декапсулируется получателем, а затем используется для расшифровки зашифрованного текста и восстановления исходного открытого текста. См. Формат провода гибридного шифрования Tink для получения подробной информации о том, как хранить или передавать зашифрованный текст вместе с инкапсуляцией ключа.

Гибридное шифрование имеет следующие свойства:

  • Секретность : никто не сможет получить какую-либо информацию о зашифрованном открытом тексте (кроме длины), если у него нет доступа к закрытому ключу.
  • Асимметрия : шифрование зашифрованного текста может быть выполнено с помощью открытого ключа, но для дешифрования требуется закрытый ключ.
  • Рандомизация : шифрование рандомизировано. Два сообщения с одинаковым открытым текстом не дадут одинаковый зашифрованный текст. Это не позволяет злоумышленникам узнать, какой зашифрованный текст соответствует данному открытому тексту.

Гибридное шифрование представлено в Tink парой примитивов:

  • HybridEncrypt для шифрования
  • HybridDecrypt для расшифровки

Информационный параметр контекста

В дополнение к открытому тексту гибридное шифрование принимает дополнительный параметр context_info , который обычно является общедоступными данными, неявно вытекающими из контекста, но должен быть привязан к результирующему зашифрованному тексту. Это означает, что зашифрованный текст позволяет подтвердить целостность контекстной информации, но нет никаких гарантий ее секретности или подлинности. Фактическая информация о контексте может быть пустой или нулевой, но для обеспечения правильного дешифрования результирующего зашифрованного текста для расшифровки необходимо предоставить то же значение информации о контексте.

Конкретная реализация гибридного шифрования может привязывать контекстную информацию к зашифрованному тексту различными способами, например:

  • Используйте context_info в качестве связанного ввода данных для симметричного шифрования AEAD (см. RFC 5116 ).
  • Используйте context_info в качестве входных данных «CtxInfo» для HKDF (если реализация использует HKDF в качестве функции получения ключа, см. RFC 5869 ).

Выберите тип ключа

В большинстве случаев мы рекомендуем использовать тип ключа DHKEM_X25519_HKDF_SHA256_HKDF_SHA256_AES_256_GCM . Этот тип ключа реализует стандарт гибридного шифрования с открытым ключом (HPKE), как указано в RFC 9180 . HPKE состоит из механизма инкапсуляции ключей (KEM), функции деривации ключей (KDF) и алгоритма шифрования с проверкой подлинности и связанными данными (AEAD).

DHKEM_X25519_HKDF_SHA256_HKDF_SHA256_AES_256_GCM конкретно использует:

  • KEM: Диффи-Хеллман через Curve25519 с HKDF-SHA-256 для получения общего секрета.
  • KDF: HKDF-SHA-256 для получения контекста отправителя и получателя.
  • AEAD: AES-256-GCM с 12-байтовыми одноразовыми номерами, созданными в соответствии со стандартом HPKE.

Другие поддерживаемые типы ключей HPKE включают, помимо прочего, следующие:

  • DHKEM_X25519_HKDF_SHA256_HKDF_SHA256_AES_128_GCM
  • DHKEM_X25519_HKDF_SHA256_HKDF_SHA256_CHACHA20_POLY1305
  • DHKEM_P256_HKDF_SHA256_HKDF_SHA256_AES_128_GCM
  • DHKEM_P521_HKDF_SHA512_HKDF_SHA512_AES_256_GCM

См. RFC 9180 для получения более подробной информации о выборе алгоритма для KEM, KDF и AEAD.

Хотя Tink больше не рекомендуется, он также поддерживает некоторые варианты ECIES, как описано в стандарте Виктора Шупа ISO 18033-2 . Некоторые поддерживаемые типы ключей ECIES перечислены ниже:

  • ECIES_P256_HKDF_HMAC_SHA256_AES128_GCM
  • ECIES_P256_COMPRESSED_HKDF_HMAC_SHA256_AES128_GCM
  • ECIES_P256_HKDF_HMAC_SHA256_AES128_CTR_HMAC_SHA256
  • ECIES_P256_COMPRESSED_HKDF_HMAC_SHA256_AES128_CTR_HMAC_SHA256

Минимальные свойства

  • Открытый текст и контекстная информация могут иметь произвольную длину (в диапазоне 0..2–32 байта).
  • Защита от атак с использованием адаптивного выбранного зашифрованного текста
  • 128-битная безопасность для схем на основе эллиптических кривых

Примеры использования

См. Я хочу обменяться данными .