Рейтинг:1

Является ли рекурсивное хеширование циклическим?

флаг cn

Если я верну вывод H обратно в H, будет ли он покрывать все выходное пространство H перед повторением?

Рассмотрим следующий сценарий:

А=1;
Пока(){
   А=Н(А);
   печать(А)
}

Будут ли короткие циклы? Например. Существуют ли значения A, при которых H(A) = A (цикл из 1) Значения A, при которых H(A) = B и H(B) = A (цикл из 2)

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

У Дугласа Хофштадтера в одной из его книг (то ли «Я разума», то ли «Метаматематические темы», я думаю) есть предложение

В этом предложении одна буква "а", одна буква "б",...

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

Итак, как это связано с криптографией.

Я подозреваю, но не продемонстрировал, что приведенный выше «странный аттрактор» довольно произволен.

{Весь текст Войны и мира} Это утверждение...

также будет сходиться к правильному утверждению.

Рассмотрим хэш H. Предположим, что существуют короткие циклы H. Будут ли также циклы (D+H), где D — произвольный блок данных. Будут ли они одинаковой длины? (Я не вижу веской причины, почему они должны быть)

Если заметная часть хэшей является членами короткого цикла (для некоторого значения short: 1 миллион? 1 миллиард?), тогда существует следующая уязвимость:

Возьмите файл Д.

  • Измените D в соответствии с вашими целями. Частью этого процесса должно быть сокращение по длине (хэш-значение). Назовите этот файл D'.

+ стенды или конкатенация

  • Вычислить A = H(D)
  • Вычислить A2 = H(A+D')
  • Вычислить A3 = H(A2+D')

Если A является циклическим, вы в конечном итоге достигнете некоторого A_n, следующая итерация которого производит A.

  • Заменить файл D на A_n+D'

С точки зрения безопасности нам нужно знать, какова вероятность того, что данный A будет циклическим в разумное время. Конечно, разумность зависит от того, насколько важен документ. Но если вы можете показать, что существует исчезающе малая вероятность найти цикл меньше 10 ^ 15 или около того, то такая атака нецелесообразна. Если существует 2%-ная вероятность того, что заданный хэш будет циклически выполнен менее чем за миллион итераций, существует потенциальная проблема.

флаг cn
Короткие циклы существуют, но они охватывают лишь небольшую часть пространства, так что вы никогда их не найдете.
fgrieu avatar
флаг ng
Часть _"Если заметная часть хэшей является членами короткого цикла..."_ необходимо переформулировать. Хэш — это функция, а не значение, достигнутое этим хешем, которое может принадлежать циклам этого хэша. Возможно, это имелось в виду: _если конкретная хэш-функция была такова, что заметная часть значений, которых она достигает при хешировании входных данных из множества возможных выходных, являются членами короткого цикла..._. Эта переформулированная гипотеза имеет смысл, но для криптографического хэша она исчезающе маловероятна.
Рейтинг:2
флаг ng

При изучении такой проблемы криптографы уподобляют криптографический хэш $Ч$ к случайная функция или же случайный оракул (или же случайное отображение хотя это немного устарело) это повторяется. Вероятности вычисляются по набору всех возможных хэшей. Это приближение, но если бы фактические результаты заметно отличались, это был бы способ отличить хэш от случайной функции, таким образом, разрыв хеша с современными определениями. Следовательно, указанное приближение является удовлетворительным и лучшим, что может быть для непрерывного криптографического хэша.

Будут ли короткие циклы?

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

Существуют ли значения $А$ такой, что $Ч(А)=А$ (цикл 1)

Если целевой набор хеша имеет размер $n$ (куда $n=2^b$ для $b$-битный хеш, например. $n=2^{256}$ для SHA-256), то вероятность существования цикла размера 1 легко вычисляется как дополнение к вероятности того, что ни один из $n$ указывает хэши на себя, т.е. $p_1(n)=1-(1-1/n)^n$. Это начинается с $p_1(1)=1$, $p_1(2)=3/4=0,75$, $p_1(3)=19/27\приблизительно 0,7037$, и $p_1$ быстро сходится к $1-1/е\ок.0,6321$.

Таким образом, существует вероятность> 63,2%, что существует цикл размера 1 в данном криптографическом хеше, таком как SHA-256, SHA-384 или SHA-512. И мы не можем сказать лучше ни для одного из этих хэшей.

Я не знаю, как правильно сделать то же самое для циклов размера 2, но не сомневаюсь, что это осуществимо, и вероятность значительна для $n\ge2$.

Можно вычислить ожидаемое значение многих характеристик циклов для итерированной случайной функции/хэша. В частности, для больших $n$, ожидаемое количество шагов до достижения предыдущего значения, начиная со случайной точки, равно $\приблизительно\sqrt{\pi\,n/2}$, а ожидаемая длина достигнутого цикла вдвое меньше. Классический пример - Филипп Флажоле и Эндрю М. Одлызко. Статистика случайного сопоставления, в разбирательства Eurocrypt 1989, и Отчет об исследовании RR-1114, INRIA, 1989 г..

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

Нет, для неразорванного криптографического хэша достаточно большого выходного размера, который устойчив к коллизиям (т. е. $\кв.п$ настолько велико, что это количество хэшей не может быть вычислено); скажем, любой непрерывный хеш 256-бит или шире. Что касается части вопроса, можно ли доказать, что такого цикла не существует, нам даже нужно вычислить $n$ хэши (до последнего мы не можем быть уверены, что нет цикла размером 1), поэтому подойдет любой неразрывный хеш 128-бит или шире.

Так как же (повторяющаяся конструкция Дугласа Хофштадтера) связана с криптографией?

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

Обратите внимание, что ни функция, описанная выше, ни функция, созданная Дугласом Хофштадтером, не представляют собой безопасный криптографический хэш. Это потому, что мы не можем найти цикл и решить проблему под рукой.

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

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