Рейтинг:2

Argon2 допускает большую длину ключа на входе, но действительно ли он обеспечивает безопасность предоставленного ключа?

флаг pf

я читал Спецификация Аргона2.

В 3.1 (страница № 5) сказано:

Секретное значение K (служит в качестве ключа при необходимости, но мы не предполагаем использование ключа по умолчанию) может иметь любую длину от $0$ к $2^{32}\текст{-}1$ байт.

Предположим, я хочу преобразовать Argon2 в блочное шифрование, я предоставляю 8192-битный ключ (1024 байта) и предоставляю счетчик для каждого сгенерированного блока и, таким образом, XOR хешированных блоков в зашифрованном тексте.

Будет ли эта схема шифрования иметь свою безопасность в зависимости от длины ключа? Будет ли у меня 8192-битная стойкость шифрования?

Я спрашиваю об этом, потому что Argon2 использует Blake2b, размер состояния которого составляет 512 бит, и его безопасность ограничена этим пределом.

Maarten Bodewes avatar
флаг in
Интересный вопрос. 512-битное состояние Blake2b, вероятно, повлияет на уровень безопасности, но, поскольку Argon2 можно настроить так, чтобы он жестко обращался к памяти, его фактическое состояние может быть больше, чем это. SHA-256 состоит из 32-битных операций, но его состояние определенно выше этого. Я не уверен, что Argon2 может сделать что-то подобное. Конечно, любой размер защиты выше 256 бит уже довольно бессмысленен, поэтому на практике это не будет иметь большого значения.
Рейтинг:5
флаг in

Будет ли эта схема шифрования иметь свою безопасность в зависимости от длины ключа? Будет ли у меня 8192-битная стойкость шифрования?

Нет, безопасность ограничена

$$security = min\{\text{Argon2 input_size}\;, \;\text{Размер хеш-дайджеста}\}$$ В вашем случае с BLAKE2-512 это 512-битная безопасность, а не 8192.

Причина ясна. Аргон2 возвращается вернуть хэш (C, tagLength) (хэш-функция переменной длины) или см. из бумаги Аргон2 страница 6 *

               введите описание изображения здесь

А если используется BLAKE2, то первые 64 байта являются выходными данными BLAKE2.Если требования к выходу составляют > 64 байта, то оставшиеся байты получаются из вывода предыдущих вызовов BLAKE2.

   V1 – Blake2b(digestSize – FinalBlock, 64);
   Последующие блоки генерируются из предыдущих блоков
   для i 2 до r сделать
      Ви Blake2b(Ви-1, 64) 
   Возвращаются младшие 32 байта Vi.

Следовательно, безопасность не может быть больше, чем размер хеш-дайджеста, и этого должно быть достаточно даже для постквантовых противников.

И, 256-битной защиты хватит всем. Argon2 предназначен для хеширования паролей, хотя его можно использовать для режима CTR, но все же предпочтительнее xChaCha20-Poly1305 для обеспечения конфиденциальности, целостности и аутентификации. Это намного быстрее, чем Argon2 для шифрования. xChaCha20 — это расширение ChaCha20 со 192-битными одноразовыми номерами, которое позволяет использовать случайные одноразовые номера, не опасаясь проблемы повторного использования одноразовых номеров в режиме CTR.


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

kelalaka avatar
флаг in
Эээ, downvoter, в чем причина? Что тут не так?
phantomcraft avatar
флаг pf
Отличный ответ. Спасибо @kelalaka

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

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