Эта почта говорит, что Blake2b из Argon2 — это уменьшенный один, который также согласован Спецификации Argon2 поскольку в нем говорится, что он использует только 2 раунда Blake2b.
Но, с другой стороны, стр. 15
в спецификациях Argon2 говорится, что он модифицирует Blake2b, чтобы добавить 32-битные умножения для увеличения задержки (я думаю, они имеют в виду необходимость ждать дополнительных циклов процессора?).
Мои вопросы:
- Если Argon2 хочет сделать Blake2b сложнее, зачем сокращать 12 раундов до 2?
- Есть ли какие-либо другие различия, которые я не упомянул здесь?
- Каким образом эти различия влияют на безопасность Blake2b Argon2 по сравнению со стандартным Blake2b, найденным, скажем, в
либнатрия
?
Мои мысли
Я думаю, что использование Argon2 функции хэширования (Blake2b) для заполнения блока памяти - не лучший выбор. Поскольку при заполнении памяти не используется сжатие; 1024 байта ввода становятся еще 1024 байтами вывода. Никакого сжатия не происходит, поэтому все агрессивные раунды хэш-функции, которая пытается сохранить максимальную входную энтропию при сжатии в гораздо меньшее количество байтов, совершенно не нужны.
Я думаю, именно поэтому Argon2 создал свой собственный уменьшенный вариант Blake2b всего с 2 раундами вместо 12: потому что очевидно, что хеширование не нужно.
Фактически, модифицировав Blake2b, Argon2 создал вариант симметричного блочного шифра, и они продолжали использовать его как один (фиксированный ввод становится фиксированным выходом равного размера).
Я думаю, что лучший подход, чем подход Argon2, вместо того, чтобы заново изобретать симметричный блочный шифр на основе хэш-функции (путем модификации Blake2b), состоит в том, чтобы отказаться от погони и использовать существующий симметричный шифр, такой как ChaCha20.
Использование симметричного шифра, такого как ChaCha20, будет примерно таким же быстрым, как заново изобретенный симметричный шифр Argon2 (сокращенный Blake2b), даже несмотря на то, что это ChaCha20 с 20 раундами. ChaCha20, согласно моим тестам, лишь немного медленнее, чем Argon2, для выполнения той же работы. Плюс другие преимущества: использование преимуществ существующих библиотек и дополнительных исследований в области криптоанализа, которые уже проводились с существующими шифрами.