Рейтинг:3

Снижает ли добавление известного текста к вводу хеш-безопасность?

флаг cn

Представьте, что я хочу хэшировать закрытый ключ K (т.е. хэш(К)), но что, если я хеширую конкатенацию ключа K и имени пользователя, скажем, следующий хеш: хеш ("Джон Сина" + К)

Предположим, что все (даже хакеры) знают, что "john cena" используется для создания хэша: может ли это помочь хакерам перевернуть хэш?

Другими словами, есть ли разница в безопасности выполнения хэш(К) или же хеш ("Джон Сина" + К) (где "Джон Сина" известен всем)?
Потому что кажется, что интуитивное предоставление информации о вводе должно помочь при атаке любого рода.

kelalaka avatar
флаг in
Связанный даже обман [Дает ли знание SHA256 (секрет - известная константа) в дополнение к SHA256 (секрет) какую-либо информацию о секрете?] (https://crypto.stackexchange.com/q/66743/18298)
Рейтинг:3
флаг fr

Безопасная криптографическая хеш-функция обеспечивает сопротивление прообраза, который Википедия так определяет:

[F]или, по существу, все предварительно указанные выходные данные, с точки зрения вычислений невозможно найти какие-либо входные данные, которые хэшируют этот выход; т. е. для заданного y трудно найти такой x, что h(x) = y.

Это означает, что для безопасной криптографической хэш-функции наиболее эффективным способом определения входных данных является грубая сила. Насколько легко использовать грубую силу, зависит от энтропии на входе. Если ваш криптографический ключ имеет длину 128 бит и вы используете SHA-256, обеспечивающий 256-битную защиту от атак с прообразом, то лучшая атака методом грубой силы — угадать 128-битный ввод.

Когда вы используете фиксированную строку, она не добавляет энтропии к хешу, поэтому не усложняет задачу. Но это также не облегчает угадывание входных данных, потому что угадывание входных данных (выполнение атаки прообраза) в любом случае считается невыполнимым с вычислительной точки зрения.

Следует отметить, что SHA-256 уязвим для атак с расширением длины, когда злоумышленник, зная один вывод, может создавать действительные хэши, начинающиеся с одного и того же префикса, не зная этого префикса. Если это имеет значение в вашей ситуации, используйте хеш, который не подвержен этому, например один из хэшей SHA-3 или BLAKE2.

poncho avatar
флаг my
Просто заткни меня...
Loris Foe avatar
флаг cn
Спасибо за ваш ответ! Но: «при заданном y трудно найти такое x, что h(x) = y». Остается ли часть «трудно найти x» верной, даже если мы знаем **часть x** (т.е. строка "john cena") ?
bk2204 avatar
флаг fr
Да, это остается правдой. На практике можно показать, что если бы знание части входных данных ослабляло хэш, то он больше не соответствовал бы его гарантиям безопасности.
флаг za
в BLAKE2 нет ничего плохого, но есть [лучшая альтернатива] (https://github.com/BLAKE3-team/BLAKE3/blob/master/README.md) ^^
bk2204 avatar
флаг fr
BLAKE3 быстрее, но лично мне он кажется недостаточно консервативным, и я не нашел достаточного количества криптоанализа, чтобы изменить свое мнение по этому поводу. В результате я решил не рекомендовать его здесь.
Рейтинг:2
флаг cn

кажется, что интуитивное предоставление информации о вводе должно помочь при атаке любого рода.

Ну да, но на самом деле нет. Если вы знаете, что h = хеш ("Джон Сина" + K), то у вас есть некоторая информация о прообразе час. Но эта информация заключается в том, что она начинается с "Джон Сина". Это не помогает найти К.

(Точнее, час вероятно, имеет несколько прообразов, и вы знаете, что один из прообразов начинается с К. Это не очень важно, так как для хэш-функции вы не можете найти столкновение.)

Обычно используемые хэш-функции вычисляются в потоковом режиме слева направо: вычисление хеш (P + K) состоит из обработки п, затем обработка Ки применить функцию завершения. При таком расчете хеш (P + Ki) для многих значений Ки точно так же дорого, как вычислить хэш (Ки), плюс одно вычисление для обработки п который не нужно повторять для каждого Ки. С другой стороны, расчет хэш (Ки + S) для многих значений Ки требует обработки С каждый раз заново, так что это несколько дороже, чем вычислять Ки.

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

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