Примитив гибридного шифрования сочетает в себе эффективность симметричного шифрования с удобством криптографии с открытым ключом (асимметричной). Любой может зашифровать данные с помощью открытого ключа, но расшифровать данные могут только пользователи с закрытым ключом.
При гибридном шифровании отправитель генерирует новый симметричный ключ для шифрования открытого текста каждого сообщения и получения зашифрованного текста. Этот симметричный ключ инкапсулируется с открытым ключом получателя. При гибридном дешифровании симметричный ключ декапсулируется получателем, а затем используется для расшифровки зашифрованного текста и восстановления исходного открытого текста. См. Формат провода гибридного шифрования 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-битная безопасность для схем на основе эллиптических кривых
Примеры использования
См. Я хочу обменяться данными .