вання засновані саме на цьому класі шифрів. <В
Стандарт шифрування даних ГОСТ 28147-89
Російський стандарт шифрування є блоковим, тобто перетворення ведеться по блоках. Він включає в себе режим заміни і два режими гамування. Стандарт ГОСТ 28147-89 формувався з урахуванням світового досвіду, і зокрема, були прийняті до уваги недоліки і нереалізовані можливості алгоритму DES, тому використання стандарту ГОСТ переважніше. Ефективність даного стандарту досить висока. Системи, засновані на ГОСТ 28147-89, дозволяють зашифрувати в секунду до декількох десятків Кбайт даних. У неї закладено метод, за допомогою якого можна зафіксувати невиявлені випадкову або навмисну модифікацію зашифрованої інформації.
Введемо асоціативну операцію конкатенації. Якщо L і R - послідовність біт, то LR позначає конкатенацію послідовностей, тобто LR - послідовність біт з розмірністю рівній сумі розмірностей L і R, причому біти R слідують за бітами L. Крім того, будемо використовувати наступні опе-ра-ції сло-ж-ня:
В· A ^ B - побітове додавання за модулем 2;
якщо A + B => 2, то A ^ B = А + B-2
якщо A + B <2, то A ^ B = А + B, де A і B 1-бітові числа. p> В· A [+] B - додавання за модулем 2 32 ;
якщо A + B => 2 32 , то A [+] B = A + B-2 32
якщо A + B <2 32 , то A [+] B = A + В, де A і B 32-бітові числа. p> В· A {+} B - додавання за модулем 2 32 -1;
якщо A + B => 2 32 -1, то A {+} B = A + B-2 32 +1
якщо A + B <2 32 -1, то A {+} B = A + B, де A і B 32-бітові числа. p> Алгоритм криптографічного перетворення передбачає три режими роботи. У стандарті ГОСТ використовується ключ W довжиною 256 біт, що представляється у вигляді восьми 32-розрядних чисел x (i).
W = X (7) X (6) X (5) X (4) X (3) X (2) X (1) X (0)
Найпростіший з можливих режимів - заміна.
Нехай відкриті блоки розбиті на блоки по 64 біт в кожному, які позначимо як T (j). p> Чергова послідовність біт T (j) поділяється на дві послідовності B (0) і A (0) по 32 біта (правий і лівий блоки). Далі виконується ітеративний процес шифрування, описуваний такими формулами, вид який залежить від i.
В· Для i = 1, 2, ..., 24, j = (i-1) (mod 8);
A (i) = f (A (i-1) [+] X (j)) ^ B (i-1)
B (i) = A (i-1)
В· Для i = 25, 26, ..., 31, j = 32-i;
A (i) = f (A (i-1) [+] X (j)) ^ B (i-1)
B (i) = A (i-1)
В· Для i = 32
A (32) = A (31)
B (32) = f (A (31) [+] X (0)) ^ B (31).
Для дешифрування використовується той же ключ, але процес дешифрування є інверсним по відношенню до вихідного.
В· Для i = 32
A (31) = A (32)
B (31) = f (A (32) [+] X (0)) ^ B (32).
В· Для i = 31, 30, ..., 25, j = 32-i;
A (i-1) =...