Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОЗІ / Лекц_ї / Лекц_я 8.doc
Скачиваний:
38
Добавлен:
05.06.2015
Размер:
172.54 Кб
Скачать

Алгоритм обробки одного блоку повідомлення

Повідомлення обробляється блоками по 256 біт праворуч ліворуч.

Кожний блок повідомлення обробляється по наступному алгоритмі.

  1. Генерація чотирьох ключів довжиною 256 біт кожний.

  2. Шифрування 64-бітних значень проміжного хеш-коду H на ключах Ki(i = 1, 2, 3, 4) з використанням алгоритму ДЕРЖСТАНДАРТ 28147 у режимі простої заміни.

  3. Перемішування результату шифрування.

Для генерації ключів використовуються наступні дані:

  • проміжне значення хеш-коду Н довжиною 256 біт;

  • поточний оброблюваний блок повідомлення М довжиною 256 біт;

  • параметри - три значення З2, З3 і З4 довжиною 256 біт наступного виду: З2 і З4 складаються з одних нулів, а З3 дорівнює

18 08 116 024 116 08 (08 18)2 18 08 (08 18)4 (18 08)4

де ступінь позначає кількість повторень 0 або 1.

Використовуються дві формули, що визначають перестановку й зрушення.

Перестановка Р біт визначається в такий спосіб: кожне 256-бітне значення розглядається як послідовність тридцяти двох 8-бітних значень.

Перестановка Р елементів 256-бітної послідовності виконується по формулі y = (x), де x - порядковий номер 8-бітного значення у вихідній послідовності; y - порядковий номер 8-бітного значення в результуючій послідовності.

(i + 1 + 4(k - 1)) = 8i + k

i = 0 ÷ 3, k = 1 ÷ 8

Зрушення А визначається по формулі

A (x) = (x1 x2) || x4 || x3 || x2

Де

xi - відповідного 64 біта 256-бітного значення х,

|| позначає конкатенацію.

Привласнюються наступні початкові значення:

i = 1, U = H, V = M.

W = U V, K1 = Р (W)

Ключі K2, K3, K4 обчислюються послідовно по наступному алгоритмі:

U = A(U) Сi,

V = A(A(V)),

W = U V,

Ki = Р(W)

Далі виконується шифрування 64-бітних елементів поточного значення хеш-коду Н із ключами K1, K2, K3 і K4. При цьому хеш-код Н розглядається як послідовність 64-бітних значень:

H = h4 || h3 || h2 || h1

Виконується шифрування алгоритмом ДЕРЖСТАНДАРТ 28147:

si = EKi [hi]    i = 1, 2, 3, 4

S = s1 || s2 || s3 || s4

Нарешті на заключному етапі обробки чергового блоку виконується перемішування отриманої послідовності.256-бітне значення розглядається як послідовність шістнадцяти 16-бітних значень. Зрушення позначається Ψ і визначається в такий спосіб:

η16 || η15 || ... || η1 - вихідне значення

η1 η2 η3 η4 η13 η16 || η16 || ... || η2 - результуюче значення

Результуюче значення хеш-коду визначається в такий спосіб:

Χ(M, H) = 61 (H (M12(S)))

де

H - попереднє значення хеш-коду,

М - поточний оброблюваний блок,

Ψi - i-а ступінь перетворення Ψ.

Логіка виконання держстандарт 3411

Вхідними параметрами алгоритму є:

  • вихідне повідомлення М довільної довжини;

  • стартовий вектор хешування Н, довжина якого дорівнює 256 бітам;

  • контрольна сума Σ, початкове значення якої дорівнює нулю й довжина дорівнює 256 бітам;

  • змінна L, початкове значення якої дорівнює довжині повідомлення.

Повідомлення М ділиться на блоки довжиною 256 біт і обробляється праворуч ліворуч. Черговий блок i обробляється в такий спосіб:

  1. H = Χ(Mi, H)

  2. Σ = Σ  ' Mi

  3. L розглядається як ненегативне ціле число, до цього числа додається 256 і обчислюється залишок від розподілу числа, що вийшло, на 2256. Результат привласнюється L.

Де ' позначає наступну операцію: Σ і Mi розглядаються як ненегативні цілі числа довжиною 256 біт. Виконується звичайне додавання цих чисел і отримується залишок від розподілу результату додавання на 2256. Цей залишок і є результатом операції.

Самий лівий, тобто самий останній блок М' обробляється в такий спосіб:

  1. Блок додається ліворуч нулями так, щоб його довжина стала дорівнює 256 бітам.

  2. Обчислюється Σ = Σ  ' Mi.

  3. L розглядається як ненегативне ціле число, до цього числа додається довжина вихідного повідомлення М и перебуває залишок від розподілу результату додавання на 2256.

  4. Обчислюється Н = Χ(М', Н).

  5. Обчислюється Н = Χ(L, Н).

  6. Обчислюється Н = Χ(Σ, Н).

Значенням функції хеширования є Н.

Соседние файлы в папке Лекц_ї