Interested Article - Luffa (хеш-функция)

Lúffa (хеш-функция, произносится как «люффа») — криптографический алгоритм (семейство алгоритмов) хеширования переменной разрядности, разработанный Даи Ватанабэ ( англ. Dai Watanabe ), Хисайоши Сато ( англ. Hisayoshi Sato ) из Hitachi и Кристофом Де Канньере ( нидерл. Christophe De Cannière ) из исследовательской группы COSIC ( ) Лёвенского католического университета для участия в конкурсе , Национального института стандартов и технологий США ( NIST ). Lúffa является вариантом функции губки , предложенной Гвидо Бертони ( англ. Guido Bertoni ) и соавторами, криптостойкость которой основана только на случайности основной перестановки. В отличие от оригинальной функции губки , Lúffa использует множественное число параллельных перестановок и функции инжекции сообщений.

История участия в конкурсе NIST SHA-3

  • 9 декабря 2008 года Luffa в числе 51 кандидата прошла в первый раунд конкурса SHA-3 .
  • 25-28 февраля 2009 года хеш-функция была представлена на конференция NIST .
  • 24 июля 2009 года был опубликован список из 14 кандидатов прошедших во второй раунд, в который вошла Luffa.
  • 23-24 августа 2010 года состоялась конференция , на которой были рассмотрены кандидаты , прошедшие во второй раунд.
  • 10 декабря 2010 года произошло объявление 5 кандидатов последнего тура конкурса SHA-3 , Luffa выбыла из соревнования из-за низкой криптостойкости функции сжатия .

Алгоритм Lúffa

Структура хеш-функции Lúffa

Обработка сообщения производится цепочкой раундовых функций смешивания с фиксированной входной и выходной длиной, которая представляет собой функцию губку . Цепочка состоит из блоков промежуточного смешивания C’ (раундовых функций) и блока завершения C’’. Раундовые функции образованы семейством нелинейных перестановок, так называемых шаговых функций. На вход функции первого раунда подается : первый блок сообщения и инициализирующие значения , где — количество перестановок. Входными параметрами -го раунда является : выход предыдущего раунда и -й блок сообщения .

Дополнение сообщения

Дополнение сообщения длины до кратности 256 битам производится строкой , где число нулей определяется из сравнения

Инициализация

Кроме первого блока сообщения на вход функции первого раунда в качестве инициализурующих значений подаются векторы .

i j
0 1 2 3 4 5 6 7
0 0x 6d251e69 0x 44b051e0 0x 4eaa6fb4 0x dbf78465 0x 6e292011 0x 90152df4 0x ee058139 0x def610bb
1 0x c3b44b95 0x d9d2f256 0x 70eee9a0 0x de099fa3 0x 5d9b0557 0x 8fc944b3 0x cf1ccf0e 0x 746cd581
2 0x f7efc89d 0x 5dba5781 0x 04016ce5 0x ad659c05 0x 0306194f 0x 666d1836 0x 24aa230a 0x 8b264ae7
3 0x 858075d5 0x 36d79cce 0x e571f7d7 0x 204b1f67 0x 35870c6a 0x 57e9e923 0x 14bcb808 0x 7cde72ce
4 0x 6c68e9be 0x 5ec41e22 0x c825b7c7 0x affb4363 0x f5df3999 0x 0fc688f1 0x b07224cc 0x 03e86cea

Раундовая функция

Схема раундовой функции Luffa

Раундовая функция является последовательным применением функции инжекции сообщения MI и перестановочной функции P.

Функции инжекции сообщения

Функция инжекции сообщения может быть представлена в виде матрицы преобразования над кольцом . Порождающий полином поля .

Функции инжекции сообщения

где числа соответственно обозначают полиномы

Функции инжекции сообщения

Функции инжекции сообщения

Функция перестановки

Нелинейная функция перестановки имеет битовый вход, длина суб-перестановки — фиксирована в спецификации Lúffa , ; количество — перестановок зависит от размера хеша и приведено в таблице.

Длина хеша Количество перестановок
224 3
256 3
384 4
512 5
Шаговая функция Luffa

Функция перестановки является восьмикратным повторением шаговой функции над блоком , полученным из функции инжекции сообщения . Блок представляется в виде 8 32-битных слов: . Шаговая функция состоит из 3 функций: SubCrumb, MixWord, AddConstant.

Permute(a[8], j){ //Permutation Q_j
  for (r = 0; r < 8; r++){
    SubCrumb(a[0],a[1],a[2],a[3]);
    SubCrumb(a[5],a[6],a[7],a[4]);
    for (k = 0; k < 4; k++)
      MixWord(a[k],a[k+4]);
    AddConstant(a, j, r);
  }
}
SubCrumb

SubCrumb — функция замены l-х битов в или по S-блоку , результатом выполнения является замена , индекс S-блока получается в результате конкатенации соответствующих битов : , биты заменяются на соответствующие биты из по следующей схеме:

MixWord

MixWord — линейная функция перестановки, на вход принимает и , ; выходом являются и , полученные по алгоритму:

  1. , (<<< 2 — циклический сдвиг влево на 2 бита)
AddConstant

AddConstant — функция добавления константы к

Таблица констант приведена в дополнении B к спецификации Lúffa .

Блок завершения

Блок завершения Luffa

Завершающий этап формирования дайджеста сообщения состоит из последовательных итераций функции выхода и раундовой функции с нулевым блоком сообщения 0x00 0 на входе. Функция выхода представляет собой XOR всех промежуточных значений, а в качестве результата представляет 256-битное слово . На i -й итерации значение выходной функции определяется как

, где , если , иначе

Через обозначим 32-битные слова в , тогда выходом Lúffa являются составленные последовательно . Символ "||" обозначает конкатенацию.

Длина хеша Значение хеша
224
256
384
512

Хеш Lúffa-224 фактически представляет собой хеш Lúffa-256 без последнего 32-битного слова.

Тестовые векторы

Дайджесты сообщения «abc» при различном размере хеша .

224 256 384 512
Z 0,0 0x f29311b8 0x f29311b8 0x 9a7abb79 0x f4024597
Z 0,1 0x 7e9e40de 0x 7e9e40de 0x 7a840e2d 0x 3e80d79d
Z 0,2 0x 7699be23 0x 7699be23 0x 423c34c9 0x 0f4b9b20
Z 0,3 0x fbeb5a47 0x fbeb5a47 0x 1f559f68 0x 2ddd4505
Z 0,4 0x cb16ea4f 0x cb16ea4f 0x 09bdb291 0x b81b8830
Z 0,5 0x 5556d47c 0x 5556d47c 0x 6fb2e9ef 0x 501bea31
Z 0,6 0x a40c12ad 0x a40c12ad 0x fec2fa0a 0x 612b5817
Z 0,7 0x 764a73bd 0x 7a69881b 0x aae38792
Z 1,0 0x e9872480 0x 1dcefd80
Z 1,1 0x c635d20d 0x 8ca2c780
Z 1,2 0x 2fd6e95d 0x 20aff593
Z 1,3 0x 046601a7 0x 45d6f91f
Z 1,4 0x 0ee6b2ee
Z 1,5 0x e113f0cb
Z 1,6 0x cf22b643
Z 1,7 0x 81387e8a

Криптоанализ

В ходе второго тура конкурса SHA-3 Luffa-224 и Luffa-256 в первоначальном варианте показали низкую криптостойкость, для успешной атаки потребовалось сообщений. После чего, алгоритм был модифицирован Даи Ватанабэ и получил название Luffa v.2. Изменения Luffa v.2 :

  • добавлен пустой раунд функции завершения для всех размеров хеша
  • изменен S-блок
  • увеличено количество повторений шаговой функции с 7 до 8

Барт Пренель (Bart Preneel) представил успешную атаку по поиску коллизий для 4 раундов шаговой функции Luffa за операций хеширования и для 5-раундовой, показав тем самым границу стойкости дизайна к диференциальному поиску коллизий.

Производительность

В 2010 году Томас Оливиера и Джулио Лопез провели успешные исследования возможности увеличения производительности оригинальной реализации Luffa. Оптимизированная реализация алгоритма имеет 20 % увеличение производительности вычисления хеша Luffa-512 при исполнении в 1 потоке, для Luffa-256/384 прирост производительности однопоточной реализации в различных тестах составляет не более 5 %. Результаты тестов приведены в таблице в :

  • На 64-битных платформах без SSE:
Реализация алгоритма Luffa-256 Luffa-384 Luffa-512
Оригинальная реализация 2009 год
Однопоточная реализация 27 42 58
Томас Оливиера 2010 год
Однопоточная реализация 24 42 46
Многопоточная реализация 20 24 36
  • С использованием SSE:
Реализация алгоритма Luffa-256 Luffa-384 Luffa-512
Оригинальная реализация 2009 год
Однопоточная реализация 17 19 30
Томас Оливиера 2010 год
Однопоточная реализация 15 16 24
Многопоточная реализация 15 18 25

Для сравнения, реализация Keccak (победитель конкурса SHA-3 ) в тестах на аналогичном процессоре c использованием SSE показала следующие результаты: Keccak-256 — 15 c/b, Keccak-512 — 12 c/b.

Примечания

  1. . Дата обращения: 22 ноября 2013. 28 декабря 2013 года.
  2. . Дата обращения: 22 ноября 2013. 9 июля 2011 года.
  3. . Дата обращения: 28 декабря 2013. 10 апреля 2012 года.
  4. . Дата обращения: 28 декабря 2013. 12 января 2014 года.
  5. . Дата обращения: 28 декабря 2013. 14 марта 2011 года.
  6. . Дата обращения: 29 ноября 2013. 20 февраля 2013 года.
  7. . Дата обращения: 4 января 2014. 20 февраля 2013 года.
  8. . Дата обращения: 28 декабря 2013. 21 марта 2014 года.
  9. . Дата обращения: 4 января 2014. 4 января 2014 года.

Литература

  • Hisayoshi Sato, Dai Watanabe, Christophe De Canni`ere. .
  • . — С. 19-20 .
  • Bart Preneel, Hirotaka Yoshida, Dai Watanabe. .
  • Thomaz Oliveira, Julio Lopez. .

Ссылки

Источник —

Same as Luffa (хеш-функция)