Рейтинг:1

Пытаюсь понять режим SIV

флаг jp

Я пытаюсь осмыслить концепцию SIV в контексте шифрования. Я понимаю аспект неправильного использования nonce и т. д. И я понимаю, что ключевой особенностью SIV является то, что они гарантируют, что при шифровании одного и того же сообщения одним и тем же ключом будет обнаружено, что оно идентично, но не будет обнаружено ничего другого.

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

Если я правильно понимаю, вы можете построить режим работы SIV, используя:

def encrypt(msg, ключ):
   siv = hash_shake256 (биты = 192, сообщение)
   вернуть xchacha20 (ключ, siv, msg), siv

Другими словами, мы сначала вычисляем хэш сообщения с ключом, а затем используем это значение в качестве одноразового номера для фактического шифрования.

Результатом является зашифрованный текст, а также сгенерированный сив, ими можно безопасно делиться, ничего не раскрывая противнику.

Безопасность исходит из необратимого характера хэш-функции с ключом и того факта, что для каждого сообщение мы передаем в качестве входных данных, мы гарантируем, что у нас не будет повторяющегося одноразового номера.

  • Я правильно понимаю вещи?
  • Безопасно ли использовать один и тот же ключ как для хэша с ключом, так и для шифрования?
  • я предполагаю фактический сив использование немного больше, чем просто хеширование ввода?
kelalaka avatar
флаг in
Уже есть HS1-SIV; [Преимущества HS1-SIV по сравнению с ChaCha20-Poly1305-SIV?](https://crypto.stackexchange.com/q/33068/18298) также [Было бы безопасно использовать хэш сообщения в качестве IV в ChaCha?]( https://crypto.stackexchange.com/q/59886/18298)
kelalaka avatar
флаг in
Я видел режим SIV для ChaCha, однако не смог найти документ.
Maarten Bodewes avatar
флаг in
Чего я не понимаю из вопроса, так это того, что `hash_shake256` используется только для сообщения, но вы говорите о том, что «безопасность исходит из хеш-функции с **ключом**». SHAKE256 вообще не является хэш-функцией с ключом, вы бы использовали, например. KMAC для этого (это в основном то же самое, что и SHA-256 против HMAC-SHA-256).
Maarten Bodewes avatar
флаг in
Обратите внимание, что HS1-SIV использует хеш-функцию с ключом и что на самом деле это результат операции XOR с ключом перед шифрованием. Да, просто использовать простой хэш — плохая идея. Любой может знать хеш, и любой может знать зашифрованный текст. Это означает, что вы можете просто поменять местами биты в хэш-выводе и сообщении, чтобы получить правильный результат. Абсолютно необходимо, чтобы вы использовали хэш с ключом.
kelalaka avatar
флаг in
И обратите внимание, что с XChaCha20, ChaCha20 не нуждается в режиме SIV, поскольку он имеет 192-битные одноразовые номера, а случайные одноразовые номера свободны от коллизий одноразовых номеров, и никогда не ожидал их увидеть!
SAI Peregrinus avatar
флаг si
@kelalaka https://eprint.iacr.org/2020/067, возможно, была газетой, которую вы видели.
kelalaka avatar
флаг in
@SAIPeregrinus да, именно так, спасибо.
Рейтинг:1
флаг cn

Я правильно понимаю вещи?

SIV требует MAC, а не только хеш. Хэш с ключом может использоваться как MAC. Однако в вашем примере у вас нет хэша с ключом (но вы говорите хеш с ключом).

Безопасно ли использовать один и тот же ключ как для хэша с ключом, так и для шифрования?

Как правило, для MAC и шифрования следует использовать разные ключи. Хотя в некоторых случаях это может быть хорошо с одним и тем же ключом, если MAC и шифрование достаточно разные. Например, если вы используете CBC-MAC и CTR вместе с AES, использование одного и того же ключа недопустимо. Режим SIV определяет, как вы получаете ключи из главного ключа.

Я предполагаю, что фактическое использование siv - это немного больше, чем просто хеширование ввода?

Ну, опять же, вы должны использовать MAC. Вы должны проверить фактический вариант SIV для более подробной информации. Например, SIV с AES (CMAC и CTR): https://datatracker.ietf.org/doc/html/rfc5297

Ответить или комментировать

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