Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
37
Добавлен:
19.02.2016
Размер:
326.66 Кб
Скачать

9.3 Обчислення крокової функції стиску

Геш-функція побудована на ітеративній процедурі. Повідомлення обробляється блоками у 256 бітів, справа наліво. Останній короткий блок розширюється вліво нулями. На обробку блока витрачається одна ітерація (крок) процедури.

На кожній ітерації використовуються значення крокової функції : , що відображає пари блоків довжини по 256 бітів у блок довжини 256. Аргументи функції формуються у процесі ітерацій, зокрема, - черговий блок повідомлення , - проміжне значення геш-коду.

Крокова функція використовує складні перетворення, одним з которих є шифрування за схемою ГОСТ 28147-89 проміжних результатів в режимі простої заміни на несекретних ключах, залежних від повідомлення і стартового вектора. Таким чином, обчислення геш–функції безпосередньо пов’язано з алгоритмом ГОСТ 28147-89.

Обчислення крокової функції складається з трьох етапів:

- генерація 4-х сеансових ключів для ГОСТ 28147-89;

- шифрперетворення - шифрування чотирьох підслів блоку , по 64 біти кожний, на відповіднх ключах, що сгенеровані у попередньому кроці;

- перемішуюче перетворення - модифікація результатів шифрування за допомогою функції на основі регистру зсуву. за результатами шифрування здійснюється обчислення проміжного геш-коду .

При обчисленні геш-коду всього повідомлення результати ітерацій пов’язуються у складний спосіб.

9.3.1 Генерація ключів

Нехай - двійковий блок довжини 256.

Будемо розглядати блок у різний спосіб:

а) як послідовність чотирьох блоків по 64 біти кожний, тобто,

;

б) як послідовність 16 блоків по 16 бітів кожний, тобто,

;

в) як послідовність 32 блоків (байтів) по 8 бітів кожний,

тобто .

Введемо операції і , що перетворюють блок у блок.

, тобто зсунути блок ціклічно на один підблок вправо, а потім перший підблок результату замінити на суму крайніх підблоків результату зсуву.

Перетворення є перестановкою байтів блоку: .

,

де , , .

У табличному виді це перетворення надано у табл. 9.1.

Таблиця 9.1 Підстановка байтів

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

1

9

17

25

2

10

18

26

3

11

19

27

4

12

20

28

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

5

13

21

29

6

14

18

22

7

15

23

31

8

16

24

32

Процедура генерації ключів використовує два аргументи – слова та три константи . Всі ці дані є блоками довжини 256 бітів.

Константи записуються у скороченому вигляді, наприклад, , що означає і т.і.

,.

Обчислення ключів реалізується за наступним алгоритмом.

1. Присвоїти значення змінним: .

2. Обчислити , .

3. Присвоїти ( матиме значення ).

4. Якщо , перейти на крок 7, інакше, на крок 5.

5. На цьому кроці може приймати значення . Виконати обчислення ключів : , , , .

6. Перейти на крок 3.

7. Кінець роботи алгоритма.

Кінець першого етапу.

Соседние файлы в папке Материалы что дал Мухачев-1