В схеме DES есть три преобразования: E, S и P.
Преобразование Е расширяет 32-мерный вектор в 48-мерный. Оно задается некоторой таблицей. Фактически символы из R2 переписываются в R3, некоторые из них по 2 раза.
Преобразования S1, S2,...S8 (так называемые S-блоки) преобразуют 6-ти битовые вектора в 4-битовые вектора. Эти преобразования заданы 8-ю таблицами. Преобразование S – не просто перестановка и выборка координат, а достаточно произвольная замена.
Преобразование Р – это обычная перестановка координат 32-мерного вектора. Оно тоже задано таблицей.
Таким образом, преобразование F(Ki) функционирует следующим образом. Из накопителя R2 снимается заполнение, оно проходит через преобразование Е, полученный в R3 48-мерный вектор суммируется с Ki. Результат записывается в R4. Заполнение R4 проходит через преобразование S-блоков, перестановку Р, складывается с содержимым накопителя R1. Окончательный результат преобразований записывается в R2, а предыдущее заполнение R2 выталкивается в первый регистр R1.
Далее процедура повторяется 16 раз, но каждый раз на вход поступаетновая ключевая последовательность.
Зашифрование блока О = (О1, О2) открытого текста можно описать уравнениями шифрования:
Z = (Z1, Z2) = (H17, H16),
Ht+1 = Ht-1 F(Kt)Ht,
Н0 = О1, Н1 = О2.
Процедура расшифрования описывается уравнениями:
О = (О1, О2) = (H0, H1),
Ht-1 = Ht+1 F(Kt)Ht,
Н17 = О1, Н16 = О2.
5.3. БЛОЧНЫЙ ШИФР ГОСТ 28147- 89
Блочный шифр ГОСТ 28147 - 89 – Российский аналог американского стандарта шифрования DES – имеет похожую блок-схему (рис. 7):
........
|
|
Рис. 7
Блок-схема шифрования в стандарте ГОСТ 28147 89
Ключом алгоритма является таблица К = (К1,К2,....К8) из восьми 32-мерных двоичных векторов. Основными узлами схемы являются накопители (регистры R1–R5) длины 32, сумматор по молдулю 232, сумматор по модулю 2 (такой же как в DES), S – блоки, подстановка сдвига Т. Подстановка Т в схеме ГОСТ осуществляет сдвиг заполнения регистра по циклу.
На вход сумматора по модулю 232 поступает битовое заполнение регистра R2 и 32 знака ключевой таблицы, а с выхода сумматора снимается двоичная запись суммы по модулю 232, поступивших на вход сумматора чисел. Восемь преобразований S заменяют поступающие на вход полубайты -4-мерные вектора на другие полубайты по заданным таблицам (здесь: вектор – двоичная запись числа, - от автора).
Процедура шифрования осуществляется следующим образом. Открытый текст разбивается на блоки по 64 бит.
Каждый блок открытого текста О = (О1,О2) шифруется по шифру простой замены:
Z = (Z1, Z2) = Г(К, О), где преобразование Г задается рекуррентным соотношением
Ht+1 = Ht-1 G(K1(t))Ht, t = 1, 2,......32,
Н0 = О1, Н1 = О2,
- покоординатное суммирование 32-мерных векторов в (F2)32.
(Z1, Z2) = (H33, H32),
1(t) = 1, 2,....8, 1, 2,.....8, 1, 2,......8, 8, 7,.......1.
G – преобразование (F2)32 (F2)32.
На вход преобразования подается свой 32-мерный ключевой вектор. Первые 24 цикла подаются в прямой последовательности, а последние 8 циклов – в обратной. Таким образом, на вход узла преобразования усложнения 32 бита ключа поступают в следующем порядке:
В первой итерации – 1-я строка, во 2-й итерации – 2 строка,
..........
в 8-й итерации – 8 строка, в 9-й – 1 строка,
..........
в 24-й – 8 строка, в 25-й – 8 строка
............
в 32-й – 1 строка.
То есть строки 3 раза проходятся в прямом направлении (24 итерации) и 1 раз – в обратном направлении (8 итераций). Результат этого преобразования записывается в регистры R1 и R2 и является шифром.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.