Можно ли получить хэш SHA-256 из хэша SHA-512 тех же данных?

Я применяю SHA-512 к данным. Возможно ли теоретически/практически получить хэш SHA-256 для исходных данных из его хэша SHA-512?


person Erik    schedule 13.02.2011    source источник
comment
Какой путь вас на самом деле интересует? Название говорит от 256 до 512; текст говорит от 512 до 256.   -  person Jon Skeet    schedule 13.02.2011
comment
В вашем заголовке написано 512 из 256; тело вашего вопроса говорит 256 из 512. Что это?!   -  person Oliver Charlesworth    schedule 13.02.2011
comment
Вы имеете в виду найти некоторую функцию F, чтобы SHA256(n) == F(SHA512(n))?   -  person Eugene Mayevski 'Callback    schedule 13.02.2011
comment
@GregS: Очевидно, что невозможно получить 512 из 256 (из-за принципа сортировки). Неужели все однозначно, а не наоборот?   -  person Oliver Charlesworth    schedule 13.02.2011
comment
На самом деле это сводится к тому, что для всех входов x и y таких, что SHA512(x) == SHA512(y), верно ли, что SHA256(x) == SHA256(y)? Все, что нам нужно, это один-единственный контрпример...   -  person Oliver Charlesworth    schedule 13.02.2011
comment
Каждая 2^256-я пара должна иметь это свойство. Но ни в одной из этих хеш-функций нет известных коллизий. Но они, конечно, есть.   -  person CodesInChaos    schedule 13.02.2011


Ответы (1)


Поскольку у них разное количество раундов, разный размер внутреннего состояния и разный размер блока, я почти уверен, что результат SHA-256 и SHA-512 настолько различен, что вы не можете вывести ни один из них из другого.

Но если вы параноик, вы можете добавлять/добавлять разные данные для разных хэш-функций. то есть вы вычисляете SHA-256("A"+data+"B") и SHA-512("D"+data+"E") (конечно, с более длинными строками вместо ABCD).

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

person CodesInChaos    schedule 13.02.2011
comment
Возможно, вы не сможете получить его с помощью какого-то выражения в закрытой форме, но все еще существует теоретическая возможность простого использования огромной таблицы поиска. - person Oliver Charlesworth; 13.02.2011
comment
Я не понимаю, как таблица поиска может быть здесь полезна. ИМО, пытающаяся угадать ввод, является единственной жизнеспособной атакой, кроме почти полного взлома криптографии, происходящей внутри хэшей. - person CodesInChaos; 13.02.2011
comment
Я согласен. Вы не можете получить SHA-256, зная только SHA-512, потому что алгоритмы работают с блоками разного размера и выполняются в течение разного количества раундов. Хэш SHA-256 — это не просто короткая версия хэша SHA-512. Такова природа (и полезность) криптографических хеш-функций. - person MDaubs; 13.02.2011
comment
теоретически достаточно большая справочная таблица решит практически любую проблему... сколько времени потребуется на создание такой таблицы и насколько она будет велика? Я думаю о 10 ^ 142 ТБ для полной таблицы SHA-512, верно? Ха-ха... возможно, мы немного отклонились от осуществимости. - person MDaubs; 13.02.2011
comment
@MDaubs Даже эта таблица не решит проблему. Поскольку вы получаете только один ввод, который соответствует заданному хешу SHA512. И не обязательно тот, который был изначально хеширован. И, таким образом, вы все еще не можете вычислить хэш SHA-256 исходных данных. - person CodesInChaos; 13.02.2011
comment
SHA-256("A"+data+"B") не удовлетворяет параноиков. Просто используйте HMAC. Криптографы в целом согласны с тем, что "A"+data+"B" относится к области, в которой у нас нет никаких атак для этого, но мы собираемся предположить, что они существуют. -1 - person Jonathan Dickinson; 29.05.2013