Система Orphus

Особенности построения блочных шифров на примере шифров Lucifer и DES

DES

DES - блочный шифр.

  • Размер блока - 64 бита.
  • Размер зашифрованного блока - 64 бита.
  • Длина ключа - 56 бита (Ключ обычно представляется 64-битовым числом, но каждый восьмой бит используется для проверки четности и игнорируется. Биты четности являются наименьшими значащими битами байтов ключа).

Безопасность полностью определяется ключом.

На простейшем уровне алгоритм представляет ничего большего, чем комбинация двух основных методов шифрования: смещения и диффузии. Фундаментальным строительным блоком DES является применение к тексту единичной комбинации этих методов (подстановка, а за ней перестановка) зависящей от ключа. Такой блок называется этапом. DES состоит из 16 этапов, одинаковая комбинация методов применяется к открытому тексту 16 раз.

Схема алгоритма

Исходный текст — блок 64 бит. Процесс шифрования состоит из

  • начальной перестановки,
  • 16 циклов шифрования,
  • конечной перестановки.

Начальная перестановка

Исходный текст T (блок 64 бит) преобразуется c помощью начальной перестановки \mathrm{IP} которая определяется таблицей 1:

Таблица 1. Начальная перестановка IP
585042342618102605244362820124
625446383022146645648403224168
57494133251791595143352719113
615345372921135635547393123157
T_0=\mathrm{IP}(T).

Циклы шифрования

Полученный после начальной перестановки, 64-битовый блок T_0 участвует в 16-циклах преобразования Фейстеля.

Цикл преобразования Фейстеля

На вход i преобразования поступает выход предыдущего этапа T_{i-1}. Он разбивается на две равные части по 32 бита - левую L_{i-1} и правую R_{i-1}.

Затем эти части преобразуются по правилам

L_{i}=R_{i-1}
R_{i}=L_{i-1}\oplus f(R_{i-1},K_{i})

где f - основная функция шифрования (Фейстеля).

На выходе мы получаем новый 64-битовый блок:

T_{i}=L_{i}R_{i}.

Основная функция шифрования.

Таблица 2. Функция расширения E
3212345
456789
8910111213
121314151617
161718192021
202122232425
242526272829
28293031321

Аргументами функции f являются 32-битовый вектор R_{i-1} и 48-битовый ключ K_i, который является результатом преобразования исходного ключа шифрования K.

Для вычисления функции f используются

  1. функция расширения \mathrm{E}
  2. \mathrm{S} преобразование, состоящее из 8 \mathrm{S}-блоков
  3. перестановка P
  • Функция \mathrm{E} расширяет 32-битовый вектор R_{i-1} до 48 - битового вектора \mathrm{E}(R_{i-1}) дублируя некоторые биты этого вектора. Порядок битов полученного вектора \mathrm{E}(R_{i-1}) показан в таблице 2.
  • Полученный после расширения блок \mathrm{E}(R_{i-1}) складывают по модулю 2 с ключом цикла i и разбивают на восемь 6-битовых частей.
\mathrm{E}(R_{i-1})\oplus K_i=B_1B_2\ldots B_8.
  • Затем каждый 6-битовый блок B_j преобразуется с помощью S_j-преобразования в 4-битовый блок B'_j.
B'_j=S_j(B_j),~j=1,\ldots,8.
  • Перестановка \mathrm{P} применяется к выходному блоку B'_1B'_2\ldots B'_8 и задается таблицей 4.
Таблица 4. Перестановка P
167202129122817
11523265183110
282414322739
19133062211425
  • Получаем окончательное значение основной функции на i-ом цикле.

Конечная перестановка

Конечная перестановка \mathrm{IP}^{-1} действует на T_{16} и является обратной к первоначальной перестановке. Конечная перестановка определяется таблицей 8.

Таблица 8. Обратная перестановка \mathrm{IP}^{-1}
408481656246432397471555236331
386461454226230375451353216129
364441252206028353431151195927
34242105018582633141949175725

Алгоритм получение ключей для каждого цикла

Есть 64-битовый начальный ключ K.

  • младший бит каждого байта в ключе отвечает за четность количества единиц в ключе, при шифровании они отбрасываются.
  • Делается перестановка, показанная в таблице 5
Таблица 5.
57494133251791585042342618C_0
10259514335271911360524436
635547393123157625446383022D_0
1466153453729211352820124

C_i и D_i получаются из C_{i-1},D_{i-1} циклическим сдвигом влево. Сдвиг определяется на каждом шаге таблицей 6

Таблица 6.
i12345678910111213141516
Число сдвига1122222212222221

Ключ k_i,~i=1,\ldots,16 состоит из 48 бит, выбранных из битов вектора C_iD_i (56) согласно таблице 7.

Таблица 7.
141711241532815621102319124
26816727201324152313747553040
51453348444939563453464250362932

Lucifer

Последняя версия:

  • Входной блок - 128 бит.
  • Выходной блок - 128 бит.
  • Длина ключа - 128 бит.
  • У этого алгоритма 16 этапов.

Lucifer - это набор перестановок и подстановок, его блоки похожи на блоки DES. В DES результат функции f объединяется с помощью XOR со входом предыдущего этапа, образуя вход следующего этапа. У S-блоков алгоритма Lucifer 4-битовые входы и 4-битовые выходы, вход S-блоков представляет собой перетасованный выход S-блоков предыдущего этапа, входом S-блоков первого этапа является открытый тест. Для выбора используемого S-блока из двух возможных применяется бит ключа. В отличие от DES половины блока между этапами не переставляются и вообще понятие половины блока не используется в алгоритме Lucifer. У этого алгоритма 16-этапов, 128-битовые блоки и более простое, чем в DES, распределение ключей.


Шнаер 226


Система Orphus

Комментарии