Контрольный вопрос SHA256

#security #math #sha256 #sha

#Безопасность #математика #sha256 #sha

Вопрос:

Имея это, результат для некоторой строки STR был:

 SHA256(STR)=3f7c54571faee024e3fd68603c5c95f6a4c8ef73a398840b974f3f57737a116f 
  

Возможно ли было бы получить результат SHA256(myOwnString STR) ? (‘ ‘ используется в качестве конкатенации)

Известны ли какие-либо атаки по этому сценарию?

Комментарии:

1. Безопасные алгоритмы хэширования явно разработаны для предотвращения этого, хотя, конечно, всегда возможно, что успешная атака (успешная = значительно быстрее, чем грубая сила) будет найдена. Пока что не известно ни одной разумной атаки, «разумная» означает настолько, насколько «возможно с нашим пониманием физики».

2. Неясно, с какой точки зрения вы это спрашиваете. Но если вы пытаетесь обеспечить подлинность сообщения, вам действительно следует использовать HMAC (или даже подпись на основе открытого ключа). en.wikipedia.org/wiki/HMAC Это должно защитить от случая, когда обнаружена коллизионная атака на SHA-256.

Ответ №1:

myOwnString STR это была бы совершенно другая строка, чем STR — таким образом, у этих двух были бы совершенно разные хэши; и, глядя на эти хэши, у вас не было бы способа угадать, что они являются результатом применения вашей функции хеширования к STR и чему-то основанному на STR .

Именно поэтому мы обычно рекомендуем использовать соль при хэшировании паролей — см. об этом Соль (криптография).

Ответ №2:

То, что вы описываете, — это оценка «свойства лавины» хэш-функции; если вы немного измените входные данные, насколько изменится результат? Любая приличная функция хеширования должна быть способна полностью исказить результат, даже если входные данные изменяются всего на один бит. Вот почему такие вещи, как соли и одноразовые номера, работают хорошо, потому что добавление нескольких байтов к начальной строке (которая сама по себе может быть слабой, короткой или предсказуемой, например, пароли) изменяет результат хэша на что-то совершенно другое и не связанное с оригиналом.

чтобы ответить на ваш вопрос более прямо, чем:

Атака 2008 года нарушает устойчивость к прообразу в 46 из 80 раундов SHA-512 и 41 из 64 раундов SHA-256.[1] Коллизионные атаки на 24 шага SHA-256

и

Против SHA-2 проведены две атаки с использованием промежуточного прообраза с уменьшенным количеством раундов. Первый из них атакует SHA-256 в 41 раунде из 64 раундов с временной сложностью 2253,5 и пространственной сложностью 216, и SHA-512 в 46 раундах из 80 раундов со временем 2511,5 и пространством 23. Второй атакует 42-раундовый SHA-256 с временной сложностью 2251,7 и пространственной сложностью 212, и 42-раундовый SHA-512 со временем 2502 и пространством 222.

Итак, да, он ослаблен, но пока он далеко не бесполезен. И я не нашел никаких атак, связанных с расширением длины ввода.