Интернет магазин китайских планшетных компьютеров |
||||||||||||||||
Компьютеры - Hamsi - Описание27 апреля 2011Оглавление: 1. Hamsi 2. Описание Общая структураHamsi использует такие преобразования, как конкатенация, перестановка и округление, которые также используются в других алгоритмах хэширования, например Snefru и Grindahl. В алгоритме также применяется функции расширения текста сообщения и распространения связывающего значения на каждой итерации. Для нелинейных перестановок используются линейные преобразования и один S-box из блочного шифрования Serpent. Общую структуру Hamsi можно представить в виде:
Обозначения:
Значения m, n и s для различных вариантов Hamsi представлены в следующей таблице:
Пусть уже дополненное сообщение, тогда разновидности Hamsi могут быть описаны следующим образом: Hamsi-256: hi =, hi−1)) ⊕ hi−1, h0 = iv256, 0 < i < h =, h−1)) ⊕ h−1 Hamsi-512: hi =, hi−1)) ⊕ hi−1, h0 = iv512, 0 < i < h =, h−1)) ⊕ h−1 Начальные значенияНачальным значением для алгоритма является начальное значение связывающего значения h0. Оно получено с помощью кодировки UTF-8 следующего сообщения: «Ozgul Kucuk, Katholieke Universiteit Leuven, Departement Elektrotechniek, Computer Security and Industrial Cryptography, Kasteelpark Arenberg 10, bus 2446, B-3001 Leuven-Heverlee, Belgium.» Начальные значения для различных разновидностей алгоритма представлены в следующей таблице:
Дополнение сообщенияHamsi оперирует с блоками сообщений длиной 32 и 64 бита для алгоритмов Hamsi-256 и Hamsi-512 соответственно. Если длина блока меньше чем необходимо, тогда происходит дополнение сообщения. Дополнение происходит следующим образом. К сообщению справа добавляется один бит значением '1', а затем добавляются биты со значениями равными '0' до тех пор пока длина сообщения не станет равной 32 или 64. Пример: Есть сообщение длиной 24 бита
После дополнения до 32-х битного оно будет выглядеть так
Расширение сообщенияHamsi использует линейные коды для расширения сообщений. Для Hamsi-256 расширение сообщения длиной 32 бита в сообщение длиной 256 бит производится с помощью кода над полем F4. Для Hamsi-512 расширение сообщения длиной 64 бита в сообщение длиной 512 бит производится с помощью кода над полем F4. КонкатенацияК словам расширенного сообщения приписывается связывающее значение. Значения i и j равны 7 для Hamsi-256 и 15 для Hamsi-512. Затем над полученным сообщением будет произведена нелинейная перестановка P. Метод конкатенации определяет порядок следования битов на входе Р. В Hamsi-256 C: {0, 1}x{0, 1} → {0, 1}, а подробнее C = Порядок слов легче всего запомнить с помощью следующей таблицы, результат из которой можно получить построчным считыванием:
В Hamsi-512 C: {0, 1} × {0, 1} → {0, 1}, а подробнее C = Нелинейная перестановка PНелинейная перестановка состоит из трех этапов
Все это повторяется столько раз, сколько задано количество циклов. На вход каждый раз поступает сообщение, где j равно 15 для Hamsi-256 и 31 для Hamsi-512. 1) Прибавление констант и счетчикаНа этом этапе над входным сообщением, константами и счетчиком выполняется операция XOR. Счетчик определяет номер выполненного цикла. Для первого цикла c равен 0, для второго с = 1 и так далее. Используемые константы приведены в следующей таблице:
:= В Hamsi-512 := 2) Этап подстановкиНа этом этапе происходит подстановка 4-битных S-боксов, взятых из алгоритма Serpent. Hamsi очень удобно спроектирован для параллельного вычисления. Все 128 идентичных S-боксов могут обсчитываться в одно и то же время, что ускоряет работу алгоритма. S-box используемый в Hamsi:
3) Этап преобразованияЭтап преобразования основан на нескольких применениях линейного преобразования L: {0, 1} → {0, 1}. L оперирует с 32-битными словами. В общем виде преобразование можно записать в виде := L. Более подробное описание преобразования L: a := a <<< 13 c := c <<< 3 b := b ⊕ a ⊕ c d := d ⊕ c ⊕ b := b <<< 1 d := d <<< 7 a := a ⊕ b ⊕ d c := c ⊕ d ⊕ a := a <<< 5 c := c <<< 22 ОкруглениеОкругление T : {0, 1} → {0, 1} в Hamsi-256 определяется следующим образом: T = В Hamsi-512 округление T : {0, 1} → {0, 1} определяется так: T = Округление осуществляется после финального цикла нелинейной перестановки. Нелинейная перестановка PfНелинейные перестановки P и Pf отличаются только константами. Также Pf применяется только к последнему блоку сообщений как финальное преобразование. Константы для Pf:
Количество цикловКоличество циклов для различных вариантов Hamsi приведены в таблице:
Во втором туре соревнования SHA-3 появилась новая модификация алгоритма под названием Hamsi-256/8. Ее отличие от Hamsi-256 в том, что количество Pf циклов теперь равно 8. Просмотров: 1735
|