ШИФР BLOWIISH

Шифр Blowfish був розроблений відомим американським криптографом Брюсом Шнсйсром (Bruce Schneier) в 1993 році. Алгоритм орієнтований па програмну реалізацію па 32-розрядних мікропроцесорах. Його відрізняють висока швидкість і криптостойкость. Також в якості відмінної риси можна назвати можливість використовувати ключ змінної довжини. Шифр блоковий, розмір вхідного блоку дорівнює 64 бітам. Перетворення блоку виконується в 16 раундів (є версія з 111-ю раундами). Ключ змінної довжини, максимально 448 біт.

До початку шифрування або розшифрування даних проводиться розширення ключа. В результаті, на базі секретного ключа отримують розширений, який являє собою масив з 18 ра- ундових ключів К, ..., K ! 8 (розмірність К, - 32 біта) і матрицю підстановок Q з 4-ма рядками, 256-ю стовпцями і 32-бітових елементами:

Дана матриця використовується для завдання нелінійної функції шифрувального перетворення F (X), де X - 32-бітний аргумент. X представляється у вигляді зчеплення 4-х 8-бітних слів X = Х 3 1 Х 2 II A " 0 , а сама функція задається формулою (+ тут позначає складання по модулю 2 ' 2 , ® - додавання за модулем 2):

Шифр Blowfish

Мал. 2.13. Шифр Blowfish

Схема шифрувального перетворення наведена на рис. 2.13. Розширення секретного ключа KS проводиться таким чином.

  • 1) Початковий масив раундовий ключів А ", і елементів Q инициализируется фіксованими значеннями. Наприклад, в шістнадцятковому представленні До = 243F6A88 і т. Д.
  • 2) До, підсумовується по модулю 2 з першими 32-ма бітами секретного ключа KS, К 2 - з наступними 32-ма бітами і т. Д. Коли ключ KS закінчується, його починають використовувати спочатку. Підсумовуються тільки К ( (без 0.
  • 3) 64-бітний блок нулів 0 = (0 ... 0) зашифровують за допомогою Blowfish на ключах, отриманих на кроках 1 і 2: З = Blowfish (O).
  • 4) раундовому підключи K t і К 2 замінюють отриманим на кроці 3 значенням С 0 .
  • 5) З 0 шифрують на модифікованих ключах С, = Blowfish (C 0 ).
  • 6) раундовому ключі До 2 і К 4 замінюють значенням С.
  • 7) Процес триває, поки не будуть отримані спочатку всі пари раундовий ключів (9 пар), а потім все нари елементів матриці <2 (512 пар).

Таким чином, розширення ключа вимагає шифрування 521 блоку даних. Ця процедура додатково ускладнює атаку шляхом перебору ключового безлічі, т. К. Порушник буде змушений проводити процедуру розширення для кожного можливого ключа.

 
Переглянути оригінал
< Попер   ЗМІСТ   ОРИГІНАЛ   Наст >