Рейтинг:2

Вопросы: Argon2, его внутреннее состояние и безопасность при генерации ключей размером более 256/512 бит.

флаг pf

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

Я могу хешировать с помощью sha-256 или sha-512 и повторять до тех пор, пока не будет достигнут размер ключа, но я не получу 8192 бит безопасности, поскольку внутреннее состояние этой хеш-функции ограничено 256 или 512 битами.

Я могу хэшировать с помощью XOF (расширяемой функции вывода), такой как Skein, SHAKE, KangarooTwelve, Blake3 или Blake2x, но опять же проблема заключается в том, что внутреннее состояние является небольшим и основано на итерациях в функции сжатия, они не обеспечивают безопасность больше, чем 256/512 бит, даже если вывод выбран произвольно.

Возможно, можно использовать специализированную функцию KDF, такую ​​как Argon2 или Scrypt.

Мой вопрос конкретно об Argon2.

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

Я скомпилировал программу времени выполнения argon2 для хеширования файлов в терминале, таких как фотографии, и я не вижу разницы во времени, когда размер вывода мал или велик.

$ время кошка ~/some_file | argon2-static 00000000 -d -t 2000000 -m 3 -p 1 -r -l 32 &>/dev/null

реальное 0m6.334s
пользователь 0m6.329s
система 0m0.004s

$ время кошка ~/some_file | argon2-static 00000000 -d -t 2000000 -m 3 -p 1 -r -l 1024 &>/dev/null

реальное 0м6.455с
пользователь 0m6.443s
система 0m0.008s

Выходные размеры 32 байта (256 бит) и 1024 (8192 бита) имеют почти одинаковые тайминги при хешировании с помощью Argon2.

Это позвольте мне сомневаться.

Имеет ли внутреннее состояние Argon2 такой же размер вывода? Или, может быть, это единственные итерации хэш-функции?

Я спрашиваю об этом, потому что Argon2 использует Blake2b в качестве хеш-функции и имеет 512-битное внутреннее состояние, а не 8192, как мне нужно.

Будет ли у меня 8192-битная безопасность, если некоторый ввод с высокой энтропией (равный или больший, чем вывод) обрабатывается до этого размера вывода в Argon2?

Maarten Bodewes avatar
флаг in
Вопрос в том, зачем вам больше 256 бит безопасности.
kelalaka avatar
флаг in
И, если у вас есть единый случайный 8192-битный ключ, вам не нужен KDF.Кроме того, пусть $h_0 = SHA-256(yourRandom)$, чем $h_i = SHA-256(yourRandom||h_{i-1})$, это простое решение для их смешивания. Для Argon2 прочтите [бумагу] (https://www.password-hashing.net/argon2-specs.pdf) и посмотрите, как все это смешивается.
Рейтинг:3
флаг cn

Подавляющее большинство времени в Argon2 тратится на заполнение вектора (или векторов) в памяти и повторение по нему. Вывод генерируется путем хэширования последнего блока. Если вывод длиннее 512 бит, то несколько раз выполняется только Blake2b. Это не имеет никакого значения с точки зрения времени по сравнению с предыдущими шагами. Поэтому вы не заметите никакой разницы во времени.

Я бы сказал, что Argon2 не может обеспечить 8192-битную защиту, только 512-битную защиту Blake2b. Однако это не совсем актуально. В настоящее время 256 бит считаются безопасными, даже когда появляются квантовые компьютеры. Я думаю, что это еще долго не изменится. Никто из нас не увидит время, когда 512-битной защиты будет недостаточно.

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

kelalaka avatar
флаг in
Да, это правда, что для атаки можно рассматривать только 512-битные входные данные для Blake2, конечно, это бессмысленно.

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

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