Примитив детерминированного шифрования с аутентификацией и ассоциированными данными (детерминированное AEAD) обеспечивает шифрование с детерминированным свойством: шифрование одних и тех же данных всегда даёт один и тот же шифртекст. Этот тип шифрования полезен для упаковки ключей или некоторых схем поиска в зашифрованных данных (подробнее см. RFC 5297, раздел 1.3 ). Из-за детерминированного свойства реализации этого примитива могут привести к потере секретности, поскольку злоумышленнику достаточно узнать шифртекст заданного сообщения, чтобы идентифицировать другие его экземпляры.
Детерминированный AEAD обладает следующими свойствами:
- Секретность : об открытом тексте ничего не известно, кроме его длины и одинаковости повторяющихся открытых текстов.
- Подлинность : невозможно изменить зашифрованный открытый текст, лежащий в основе шифртекста, без обнаружения.
- Симметричный : шифрование открытого текста и расшифровка зашифрованного текста выполняется одним и тем же ключом.
- Детерминированный : пока первичный ключ не изменен, шифрование открытого текста дважды с теми же параметрами приводит к получению одного и того же шифротекста.
Связанные данные
Детерминированный алгоритм AEAD можно использовать для привязки шифротекста к определённым связанным данным . Предположим, у вас есть база данных с полями user-id и encrypted-medical-history . В этом случае user-id можно использовать в качестве связанных данных при шифровании encrypted-medical-history . Это предотвращает передачу злоумышленником истории болезни от одного пользователя к другому.
Связанные данные необязательны. Если они указаны, расшифровка будет успешной только в том случае, если одни и те же связанные данные передаются как в вызовы шифрования, так и в вызовы дешифрования.
Выберите тип ключа
Мы рекомендуем тип ключа AES256_SIV для всех случаев использования.
Гарантии безопасности
- Уровень стойкости аутентификации не менее 80 бит.
- Открытый текст и связанные с ним данные могут иметь произвольную длину (в диапазоне 0..2 32 байта).
- Уровень безопасности 128 бит против атак с восстановлением ключа, а также при многопользовательских атаках с использованием до 2 32 ключей — это означает, что если злоумышленник получает 2 32 шифртекста одного и того же сообщения, зашифрованного с использованием 2 32 ключей, ему необходимо выполнить 2 128 вычислений, чтобы получить один ключ.
- Возможность безопасного шифрования 238 сообщений, при условии, что длина каждого менее 1 МБ.
Пример использования
Смотрите, я хочу детерминированно зашифровать данные и привязать шифротекст к его контексту .