Fast Syndrome Based Hash

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
Fast Syndrome Based Hash
Разработчики Даниэль Огот, Мэтью Финиаш, Николя Сандрие
Создан 2003
Опубликован 2008
Размер хеша 160, 224, 256, 384, 512
Тип хеш-функция

FSB(Fast Syndrome-Based Hash Function) — это наборкриптографических хеш-функций,созданный в 2003 году и представленный в 2008 году как кандидат наконкурс SHA-3[1].В отличие от многих хеш-функций, используемых на текущий момент,криптографическая стойкостьFSB может быть доказана в определённой степени. Доказывает стойкость FSB то, что взломать FSB столь же трудно, как решить некоторуюNP-полную задачу,известную как регулярное синдромное декодирование. Хоть всё же и не известно, являются ли NP-полные задачи разрешимы заполиномиальное время,как правило считается, что нет.

В процессе разработки было предложено несколько версий FSB, последняя из которых была представлена на конкурсе SHA-3, но в первом туре была отклонена. Хотя все версии FSB утверждаютстойкость[англ.],некоторые предварительные версии в конечном итоге взломать удалось[2].При разработке последней версии FSB, все уязвимости были приняты во внимание, и на текущий момент алгоритм остается криптографически стойким ко всем известным в настоящее время атакам.

Но с другой стороны, стойкость сопряжена и с определёнными издержками. FSB медленнее традиционных хеш-функций, да и использует он довольно много оперативной памяти, что делает его непрактичным в средах, где она ограничена. Кроме того, функция сжатия используемая в FSB требует большой размер выходящего сообщения для гарантии криптостойкости. Эта проблема была решена в последних версиях, где выходные данные сжимались функциейWhirlpool.Тем не менее, хотя авторы утверждают, что добавление этого последнего сжатия стойкость не снижает, однако оно делает невозможным его формальное доказательство[3].

Описание хеш-функции

[править|править код]

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

Основой этой функции состоит из (случайно выбранной)двоичной матрицыкоторая взаимодействует с сообщением избитов путёмматричного умножения.Здесь мыкодируем-битное сообщение в качествевекторав,-мерного векторного пространства над полем из двух элементов, так что выход будет сообщение избитов.

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

Определения

[править|править код]

Сообщением называется слово весаи длины,если он состоит избитов и именноиз этих битов являются ненулевыми.

Слово весаи длиныназывается регулярным, если в каждом интервалесодержитcя ровно один ненулевой элемент для всех.Это означает, что если мы делим сообщение наwравных частей, то каждая часть содержит ровно один ненулевой элемент.

Функция сжатия

[править|править код]

Существует точноразличных регулярных слов весаи длины,таким образом, нам нужно точнобит данных для кодирования этих регулярных слов. Зафиксируем взаимно-однозначное соответствие между множеством битовых строк длиныи множествому регулярных слов весаи длины,затем определим функцию сжатия FSB следующим образом:

  1. На вход подаётся сообщение размера
  2. Преобразование его в регулярное слово весаи длины
  3. Перемножение с матрицей
  4. На выходе получаем хеш размера

Эта версия, как правило, называется синдромное сжатие. Это довольно медленно, и на практике делается другим, и более быстрым способом, называемым быстрым синдромным сжатием. Мы делимна подматрицыразмераи фиксируем взаимно-однозначное соответствие между битовыми строками длинойи набором последовательностейчисел от 1 до.Это эквивалентно взаимно-однозначное соответствию к множеству регулярных слов длиныи веса,с того момента как можно видеть то слово как последовательность чисел от 1 до.Функция сжатия выглядит следующим образом:

  1. На вход подаётся сообщение размера
  2. Преобразование его в последовательностьчиселот 1 до
  3. Добавляем соответствующие столбцы матрицдля получения двоичной строки длины
  4. На выходе получаем хеш размера

Теперь мы можем использоватьструктуру Меркла-Дамгардадля обобщения функции сжатия, чтобы входные данные могли быть произвольной длины.

Пример сжатия

[править|править код]

Начальные условия:

Хешируемсообщение,используяматрицу

которая делится наподматрицы,,.

Алгоритм:

  1. Делим входящее сообщениеначасти длиныи получаем,,.
  2. Преобразуем каждую строкув число и получаем,,.
  3. Из первой подматрицыберём второй столбец, из второйберём первый, из третьей— четвёртый.
  4. Добавляем выбранные столбцы и получаем результат:.

Доказательство криптостойкости FSB

[править|править код]

Структура Меркла-Дамгардаосновывает свою криптостойкость только на криптостойкости используемой функции сжатия. Таким образом, мы должны лишь показать, что функция сжатияустойчива ккриптоанализу.

Криптографическая хеш-функция должна быть устойчивой в трёх различных аспектах:

  1. Первая устойчивость к нахождению прообраза: имея хешh,должно быть трудно найти сообщениеmтакое, что Hash(m)=h.
  2. Вторая устойчивость к нахождению прообраза: имея сообщениеm1должно быть трудно найти сообщениеm2,такое что Hash(m1) = Hash(m2).
  3. Устойчивость к коллизиям: должно быть трудно найти два различных сообщенияm1иm2такие, что Hash(m1)=Hash(m2).

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

Обычно в криптографии трудно означает что-то вроде «почти наверняка за пределами досягаемости любого противника, системный взлом которого должен быть предотвращён», но определим это понятие более точно. Будем принимать: «время выполнения любого алгоритма, который находит столкновение или прообраз, экспоненциально зависит от размера хеш-значения». Это означает, что относительно небольшими добавками к размеру хеша, мы можем быстро добраться до высокого уровня криптостойкости.

Устойчивость к нахождению прообраза

[править|править код]

Как было сказано ранее, криптостойкость FSB, зависит от задачи называемой регулярное синдромное декодирование. Будучи первоначально проблемой втеории кодирования,но егоNP-полнотасделала его удобным приложением для криптографии. Оно является частным случаем декодирования по синдрому и определяется следующим образом:

Даныматрицразмерностии битовая строкадлинытакие, что существует наборстолбцов, по одному в каждой,составляющих.Нужно найти такой набор столбцов.

Было доказано, что эта проблема NP-полна уйдя от трёхмерного паросочетания. Опять же, хоть и не известно, существуют ли полиномиальные алгоритмы для решения временных NP-полных задач, ни один из них не известен и его нахождение будет огромным открытием.

Легко видеть, что нахождение прообраза данного хешав точности эквивалентно этой проблеме, так что задача нахождения прообразов в FSB также должна быть NP-полной.

Нам все ещё необходимо доказать устойчивость от коллизий. Для этого нам нужна другая NP-полная вариация регулярного синдромного кодирования, называемая «двурегулярное нулевое синдромной декодирование».

Устойчивость к коллизиям

[править|править код]

Даныматрицразмерностии битовая строкадлины.Тогда существует множествостолбцов, либо два, либо ни одного в каждом,составляющих 0, где.Нужно найти такой набор столбцов. Было доказано, что этот метод NP-полон, уходом от трёхмерного паросочетания.

Так же, как регулярное синдромное декодирование, в сущности, эквивалентно нахождению регулярного словатакого, что,двурегулярное нулевое синдромное декодирование эквивалентно нахождению двурегулярного словатакого, что.Двурегулярное слово длиныи весаесть битовая строка длинытакая, что в каждом интервалев точности либо две записи равны 1, либо ни одной. Отметим, что 2-регулярное слово это просто сумма двух правильных слов.

Предположим, что мы нашли коллизию: Hash(m1) = Hash(m2) при.Тогда мы можем найти два регулярных словаитакие, что.Мы тогда получаем,гдеявляется суммой двух разных регулярных слов и она должна быть двурегулярным словом, хеш которого нуль, так что мы решили задачу двурегулярного нулевого синдромного декодирования. Мы пришли к выводу, что найти столкновения в FSB по крайней мере так же сложно, как решить задачу двурегулярного нулевого синдромного декодирования, и поэтому алгоритм NP-полон.

Последние версии FSB использовали функцию сжатия Whirlpool для дальнейшего сжатия выхода хеш-функции. Хоть криптостойкость при таком случае не может быть доказана, авторы утверждают, что это последнее сжатие её не снижает. Стоит обратите внимание, что даже если было бы возможно найти столкновения в Whirpool, по-прежнему будет необходимо найти столкновения прообразов в исходной функции сжатия FSB, чтобы найти столкновения в FSB.

Решая задачу регулярного синдромного декодирования, мы находимся как бы в противоположно, относительно хеширования. Используя те же значения, что и в предыдущем примере, нам даетсяразделеная наподблока и строка.Нам нужно найти в каждом подблоке по одному столбцу, так что они будут представлять собой.Таким образом, ожидаемый ответ будет,,.Это, как известно, трудно вычислить для больших матриц. В двурегулярном нулевом синдромном декодировании мы хотим найти в каждом подблоке не одну колонку, а либо две, либо ни одну так, что они будут приводить к(а не к). В примере, мы могли бы использовать второй и третий столбец (считая от 0) из,ни одного столбца из,нулевой и второй из.Ещё решения возможны, например, не используя ни один столбец из.

Линейный криптоанализ

[править|править код]

Доказуемая криптостойкость FSB означает, что нахождение коллизий NP-полно. Но доказательством является сведение к более сложной задаче. Но это дает лишь ограниченные гарантии безопасности, поскольку все ещё может существовать алгоритм, который легко решает проблему для подмножества данного пространства. Например, существуютметод линеаризации,которые могут быть использованы для получения столкновений в считанные секунды на настольном ПК для ранних вариантов FSB с заявленной 2128степенью безопасности. Показано, что когда пространство сообщений выбрано определённым образом, хеш-функция обеспечивает минимальный прообраз или устойчивость к коллизиям.

Результаты безопасности на практике

[править|править код]

Таблица показывает сложность наиболее известных аттак против FSB:

Размер выхода (бит) Сложность поиска коллизий Сложность инверсии
160 2100.3 2163.6
224 2135.3 2229.0
256 2190.0 2261.0
384 2215.5 2391.5
512 2285.6 2527.4

Другие свойства

[править|править код]
  • Размер входного и выходного блока хеш-функции полностью масштабируемы.
  • Скорость можно регулировать путём изменения количества битовых операций, используемых FSB на входной бит.
  • Безопасность может быть отрегулирован путём регулировки выходного размера.
  • Плохие случаи всё же существуют, и необходимо позаботиться при выборе матрицы.
  • Матрица, используемая в функции сжатия, может стать огромной в определённых случаях.

Последнее может создавать затруднения при использовании FSB на устройствах с относительно небольшой памятью.

Эта проблема была решена в 2007 году, в соответствующей хеш-функции, называемой IFSB (Improved Fast Syndrome Based Hash)[4],которая до сих пор доказуемо безопасна, но полагается на несколько более сильные предположения.

В 2010 году была представлена S-FSB, имеющая скорость, на 30 % превышающую FSB[5].

В 2011 годуДэниел Джулиус Бернштейн[англ.]и Таня Ланге представили RFSB, что 10-кратно превышало скорость FSB-256[6].RFSB, будучи запущеным на машине Spartan 6 FPGA, достигал пропускной способности до 5 Гбит/с[7].

  1. Augot, D.; Finiasz, M.; Sendrier, N.A Fast Provably Secure Cryptographic Hash Function(2003). Дата обращения: 10 декабря 2015.Архивировано3 марта 2016 года.
  2. Saarinen, Markku-Juhani O.Linearization Attacks Against Syndrome Based Hashes(2007). Дата обращения: 10 декабря 2015.Архивировано4 марта 2016 года.
  3. Finiasz, M.; Gaborit, P.; Sendrier, N.Improved Fast Syndrome Based Cryptographic Hash Functions(2007). Дата обращения: 10 декабря 2015. Архивировано изоригинала3 марта 2016 года.
  4. Finiasz, M.; Gaborit, P.; Sendrier, N.Improved Fast Syndrome Based Cryptographic Hash Functions(2007). Дата обращения: 12 декабря 2015.Архивировано22 декабря 2015 года.
  5. Meziani M.; Dagdelen Ö.; Cayrel P.L.; El Yousfi Alaoui S.M.S-FSB: An Improved Variant of the FSB Hash Family(2010). Дата обращения: 12 декабря 2015. Архивировано изоригинала22 декабря 2015 года.
  6. Bernstein, D. J., Lange, T.; Peters C.; Schwabe P.;.Really fast syndrome-based hashing(2011). Дата обращения: 12 декабря 2015.Архивировано14 декабря 2014 года.
  7. Von Maurich, I.; Güneysu, T.;.Embedded Syndrome-Based Hashing(2011). Дата обращения: 12 декабря 2015. Архивировано изоригинала2 мая 2015 года.