Интернет магазин китайских планшетных компьютеров



Компьютеры - SHABAL - Алгоритм

16 июня 2011


Оглавление:
1. SHABAL
2. Алгоритм
3. Примеры результатов
4. Криптоанализ



Shabal.PNG

По утверждению разработчиков, SHABAL является одним из самых быстрых кандидатов конкурса SHA-3.

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

Принцип работы

SHABAL называется SHABAL-512 , SHABAL-384, SHABAL-256, SHABAL-224, SHABAL-192 в зависимости от длины получаемого хэша lh, соответственно равного 512, 384, 256, 224, 192 бит.

После того как на вход алгоритма приходит битовая последовательность, она разбивается на блоки по 512 бит вне зависимости от используемой вариации SHABAL. Отметим, что размер блока кратен 32. К последнему блоку, если его битовая длина не равна 512 битам, приписывается одна битовая единица и необходимое число нулей для достижения заданного размера блока.

При вычислении хэш-функции используется буфер, поделенный на три части \in\mathcal{f}0,1\mathcal{g}^{l_a}\times\mathcal{f}0,1\mathcal{g}^{l_b}\times\mathcal{f}0,1\mathcal{g}^{l_c}, где \!l_a и \!l_b и \!l_c — это длины буферов \!A, \!B и \!C соответственно. Также используется вспомогательный буфер W размером в 64 бита, который является счетчиком номера блока. Длины буферов \!l_b и \!l_c равны \!l_m, где \!l_m — это длина блока на которые разбивается поданное на вход сообщение.

SHABAL обладает двумя настраиваемыми параметрами \!r\geqslant2 и \!p\geqslant2. Длина буфера \!A определяется через \!r, а именно \!l_a=32r. Параметр \!p — количество раундов в преобразовании \!P, чем больше это значение, тем гарантируется большая безопасность. Заявленный на конкурс алгоритм SHABAL строго определяет \!=

SHABAL — итеративный алгоритм. Количество повторений равно количеству блоков исходной битовой последовательности плюс две итерации на добавляемые в начало сообщения блоки, плюс ещё три финальные итерации. На каждой итерации происходит преобразование P_{M,C}\rightarrow. При каждом повторении кроме трех финальных число, хранимое в \!W, увеличивается на 1, то есть как уже упоминалось \!W — это счетчик.

Действие алгоритма по шагам

Отметим, что операции суммирования и вычитания далее производятся в пределах слов и без переноса.

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

В \! заносятся нули. В начало основного сообщения \!M добавляются два блока, в каждый 4-байтовый фрагмент которых записываются фиксированные числа варьирующиеся от \!l_h до \!l_h+31, где \!l_h — это длина выхода хеш-функции l_h\in\mathcal{f}192,224,256,384,512\mathcal{g}. Если более подробно, то в два добавленных блока, которые мы назовем \!M_{-1} и \!M_0, записываются следующие слова: \!M_{-1}=l_h , \!M_{-1}=l_h+15 , \!M_0=l_h+16 , \!M_0=l_h+31. Промежуточные слова \!M_{-1} и \!M_0 заполняются по аналогии.

Числу в \!W присваивается значение −1, таким образом после обработки добавленных в начало блоков, первому блоку входного сообщения будет соответствовать \!W, равная 1.

Разбиение на блоки

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

Обычные итерации

Для всех w от −1 до k сделать следующее:

  • сложить B и M по словам, результат заносим в B
B\leftarrow B+M_w
  • применить XOR на счетчике и A
A\leftarrow A\oplus W, A\leftarrow A \oplus W
  • сделать преобразование P
\leftarrow P_{M_w,C}
  • вычесть из C M по словам
C\leftarrow C-M_w
  • поменять местами B и С
\leftarrow

Заключительные итерации

После выполнения обычных итераций нужно выполнить еще три финальных итерациях. Они отличаются от обычных тем, что за блок \!M принимается последний блок сообщения \!M_k, значение счетчика фиксируется и равняется k общему числу блоков.

Результат

Выходные слова от \!C до \!C являются результатом. \!A и \!B игнорируются.

Примечание

Стоит отметить, что рассчитывать преобразования от двух первых добавленных блоков каждый раз при использовании SHABAL совершенно необязательно. С таким же успехом, значения \! от этих двух блоков можно рассчитать один раз и потом использовать их как IV.

Список IV для разных версий SHABAL

SHABAL-192:

A :

FD749ED4 B798E530 33904B6F 46BDA85E 076934B4 454B4058 77F74527 FB4CF465

62931DA9 E778C8DB 22B3998E AC15CFB9

B :

58BCBAC4 EC47A08E AEE933B2 DFCBC824 A7944804 BF65BDB0 5A9D4502 59979AF7

C5CEA54E 4B6B8150 16E71909 7D632319 930573A0 F34C63D1 CAF914B4 FDD6612C

C :

61550878 89EF2B75 A1660C46 7EF3855B 7297B58C 1BC67793 7FB1C723 B66FC640

1A48B71C F0976D17 088CE80A A454EDF3 1C096BF4 AC76224B 5215781C CD5D2669


SHABAL-224:

A :

A5201467 A9B8D94A D4CED997 68379D7B A7FC73BA F1A2546B 606782BF E0BCFD0F

2F25374E 069A149F 5E2DFF25 FAECF061

B :

EC9905D8 F21850CF C0A746C8 21DAD498 35156EEB 088C97F2 26303E40 8A2D4FB5

FEEE44B6 8A1E9573 7B81111A CBC139F0 A3513861 1D2C362E 918C580E B58E1B9C

C :

E4B573A1 4C1A0880 1E907C51 04807EFD 3AD8CDE5 16B21302 02512C53 2204CB18

99405F2D E5B648A1 70AB1D43 A10C25C2 16F1AC05 38BBEB56 9B01DC60 B1096D83


SHABAL-256:

A :

52F84552 E54B7999 2D8EE3EC B9645191 E0078B86 BB7C44C9 D2B5C1CA B0D2EB8C

14CE5A45 22AF50DC EFFDBC6B EB21B74A

B :

B555C6EE 3E710596 A72A652F 9301515F DA28C1FA 696FD868 9CB6BF72 0AFE4002

A6E03615 5138C1D4 BE216306 B38B8890 3EA8B96B 3299ACE4 30924DD4 55CB34A5

C :

B405F031 C4233EBA B3733979 C0DD9D55 C51C28AE A327B8E1 56C56167 ED614433

88B59D60 60E2CEBA 758B4B8B 83E82A7F BC968828 E6E00BF7 BA839E55 9B491C60


SHABAL-384:

A :

C8FCA331 E55C504E 003EBF26 BB6B8D83 7B0448C1 41B82789 0A7C9601 8D659CFF

B6E2673E CA54C77B 1460FD7E 3FCB8F2D

B :

527291FC 2A16455F 78E627E5 944F169F 1CA6F016 A854EA25 8DB98ABE F2C62641

30117DCB CF5C4309 93711A25 F9F671B8 B01D2116 333F4B89 B285D165 86829B36

C :

F764B11A 76172146 CEF6934D C6D28399 FE095F61 5E6018B4 5048ECF5 51353261

6E6E36DC 63130DAD A9C69BD6 1E90EA0C 7C35073B 28D95E6D AA340E0D CB3DEE70


SHABAL-512:

A :

20728DFD 46C0BD53 E782B699 55304632 71B4EF90 0EA9E82C DBB930F1 FAD06B8B

BE0CAE40 8BD14410 76D2ADAC 28ACAB7F

B :

C1099CB7 07B385F3 E7442C26 CC8AD640 EB6F56C7 1EA81AA9 73B9D314 1DE85D08

48910A5A 893B22DB C5A0DF44 BBC4324E 72D2F240 75941D99 6D8BDE82 A1A7502B

C :

D9BF68D1 58BAD750 56028CB2 8134F359 B5D469D8 941A8CC2 418B2A6E 04052780

7F07D787 5194358F 3C60D665 BE97D79A 950C3434 AED9A06D 2537DC8D 7CDB5969

Описание преобразования \!P

Входные данные: M,A,B,C

Выход: A,B

Преобразование представлено для наглядности в псевдокоде:

For i from 0 to 15, do:
B\leftarrow B\lll 17
Next i;
For j from 0 to p-1, do:

  • For i from 0 to 15, do:
A\leftarrow U\oplus C)
\oplus B
\oplus
\oplus M

где \!=

B\leftarrow\oplus \overline{A}
  • Next i;
Next j;
For j from 0 to 35, do:
A\leftarrow A + C
Next j;

Где функции U и V определяются следующим образом:

U=3\times x\mod 2^{32}

V=5\times x\mod 2^{32}



Просмотров: 3021


<<< SHA-2
Skein >>>