Interested Article - Fast Syndrome Based Hash

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

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

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

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

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

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

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

Определения

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

Слово веса и длины называется регулярным, если в каждом интервале содержит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. Вторая устойчивость к нахождению прообраза: имея сообщение m 1 должно быть трудно найти сообщение m 2 , такое что Hash( m 1 ) = Hash( m 2 ).
  3. Устойчивость к коллизиям: должно быть трудно найти два различных сообщения m 1 и m 2 такие, что Hash( m 1 )=Hash( m 2 ).

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

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

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

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

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

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

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

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

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

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

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

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

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

Примеры

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

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

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

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

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

Размер выхода (бит) Сложность поиска коллизий Сложность инверсии
160 2 100.3 2 163.6
224 2 135.3 2 229.0
256 2 190.0 2 261.0
384 2 215.5 2 391.5
512 2 285.6 2 527.4

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

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

Варианты

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

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

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

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

Примечания

  1. Augot, D.; Finiasz, M.; Sendrier, N. (2003). Дата обращения: 10 декабря 2015. 3 марта 2016 года.
  2. Saarinen, Markku-Juhani O. (2007). Дата обращения: 10 декабря 2015. 4 марта 2016 года.
  3. Finiasz, M.; Gaborit, P.; Sendrier, N. (2007). Дата обращения: 10 декабря 2015. Архивировано из 3 марта 2016 года.
  4. Finiasz, M.; Gaborit, P.; Sendrier, N. (2007). Дата обращения: 12 декабря 2015. 22 декабря 2015 года.
  5. Meziani M.; Dagdelen Ö.; Cayrel P.L.; El Yousfi Alaoui S.M. (2010). Дата обращения: 12 декабря 2015. Архивировано из 22 декабря 2015 года.
  6. Bernstein, D. J., Lange, T.; Peters C.; Schwabe P.;. (2011). Дата обращения: 12 декабря 2015. 14 декабря 2014 года.
  7. Von Maurich, I.; Güneysu, T.;. (2011). Дата обращения: 12 декабря 2015. Архивировано из 2 мая 2015 года.
Источник —

Same as Fast Syndrome Based Hash