ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 08.11.2023
Просмотров: 290
Скачиваний: 4
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
48 в соответствие 4-разрядное выходное. Таким образом, получив на входе 48 бит, на выходе снова имеем 32. S
i
представляет собой табли- цу с 16-ю столбцами и 4-мя строками, содержащую 4-битные элемен- ты. Таблицы подстановки, также как и перестановки, четко определе- ны стандартом.
Рис. 2.6. Вычисление раундовых ключей
Пусть на вход подстановки подается 6-разрядный блок
B=b
1
b
2
…b
6
. Тогда совокупность старшего и младшего разрядов b
1
b
6
будет указывать номер строки, а четырехбитное значение b
2
b
3
b
4
b
5
— номер столбца. Из ячейки на пересечении найденных строки и столб- ца будет браться выходное значение подстановки. Полученный со-
Ключ K (64 бита)
Функция PC1
D
0
(28 бит)
Сдвиг влево
C
1
(28 бит)
C
0
(28 бит)
Сдвиг влево
D
1
(28 бит)
Сдвиг влево
C
16
(28 бит)
Сдвиг влево
D
16
(28 бит)
Функция
PC2
K
1
(48 бит)
Функция
PC2
K
16
(48 бит)
…
…
…
49 единением выходных значений подстановок S
1
, …, S
8 32-битный блок подвергается перестановке P, порядок которой также строго опреде- лен в стандарте.
Рассмотрим теперь порядок формирования раундовых ключей на основе секретного. В общем виде алгоритм представлен на рис. 2.6.
Как было отмечено ранее, секретный ключ шифра DES имеет длину 64 бита, но каждый 8-й предназначается для контроля четно- сти, поэтому эффективная длина ключа — 56 бит. Функция PC1 (со- кращение «PC» от англ. «Permuted Choice» — выбор с перестановкой) осуществляет перестановку элементов исходного блока, отбрасывая
8-й, 16-й и т. д. биты. После перестановки полученный блок делится на полублоки C
0
и D
0
длиной 28 бит каждый.
В зависимости от номера шага полублоки C
i
и D
i
независимо друг от друга преобразуются путем циклического сдвига влево на од- ну или две позиции (сдвиг на одну позицию производится на 1, 2, 9 и
16-м шагах, в остальных случаях — сдвиг на две позиции). Функция
PC2 преобразует блок C
i
|D
i
, переставляя элементы и отбирая 48 бит, которые и формируют раундовый ключ шифрования K
i
(i = 1–16).
Для того чтобы иметь возможность использовать шифр DES для решения различных криптографических задач, определены 4 режима его работы:
- электронная кодовая книга (англ. «Electronic Code Book» —
ECB);
- сцепление блоков шифра (англ. «Cipher Block Chaining» —
CBC);
- обратная связь по шифртексту (англ. «Cipher FeedBack» —
CFB);
- обратная связь по выходу (англ. «Output FeedBack» — OFB).
При использовании режима ECB защищаемое сообщение раз- бивают на 64-битные блоки M
i
. Каждый такой блок шифруют незави- симо от других, с использованием одного и того же ключа шифрова-
50 ния (рис. 2.7). При расшифровывании криптограммы C
i
также преоб- разуют независимо.
Рис. 2.7. Шифрование (а) и расшифровывание (б) в режиме ECB
Достоинством данного режима является простота его реализа- ции. Главный недостаток режима ECB заключается в том, что если в исходном сообщении есть повторяющиеся блоки, то и значения соот- ветствующих блоков криптограммы будет совпадать. А это даст криптоаналитику противника дополнительную информацию о содер- жании сообщения. Поэтому режим ECB рекомендуют использовать для защиты небольших объемов данных (например, криптографиче- ских ключей), где вероятность появления совпадающих блоков сооб- щения невелика.
Указанного выше недостатка лишен режим CBC. Исходное со- общение, как и в предыдущем случае, разбивается на блоки M
i
по 64 бита. Первый блок складывается побитно по модулю 2 с 64-битным блоком, называемым инициализирующим вектором IV, который изве- стен обеим сторонам взаимодействия, периодически ими меняется и держится в секрете от других. Блок исходного сообщения M
2
моди- фицируется с использованием блока криптограммы C
1
и т. д. Анало- гичные действия производятся при расшифровывании. Схема преоб- разования представлена на рис. 2.8.
M
1
С
1
DES шифр.
M
2
С
2
DES шифр.
C
1
M
1
DES расшифр.
C
2
M
2
DES расшифр.
а
б
51
Рис. 2.8. Шифрование (а) и расшифровывание (б) в режиме CBC
Режим CBC используется для шифрования больших сообщений.
Как легко заметить, последний блок криптограммы зависит от иници- ализирующего вектора, каждого бита открытого текста и значения секретного ключа. Поэтому его можно использовать для контроля це- лостности и аутентификации сообщений, задавая ему фиксированное значение и проверяя его после расшифровки.
Режим CFB используется в тех случаях, когда длина преобразу- емого блока отличается от 64 бит. Пусть необходимо зашифровать сообщение, считываемое последовательно блоками по r бит, где
1 ≤ r ≤ 64. Для построения преобразования используется сдвиговый регистр I, куда на 1-м шаге преобразования помещается инициализи- рующий вектор IV. Схема преобразования представлена на рис. 2.9.
Преобразуемое сообщение M разбито на блоки по r бит, обозна- ченные на рис. 2.9 как M
j
. Блок криптограммы C
j
будет равен M
j
, сло- женному побитно по модулю 2 с r старшими битами зашифрованного на j-м шаге блока. Шифруемое значение I
j
получается путем сдвига предыдущего блока I
j-1
влево на r позиций и записи блока крипто- граммы С
j-1
в младшие позиции.
При расшифровывании сдвиговый регистр также инициализиру- ется значением IV. Для того чтобы получить ту же последователь-
IV
M
1
С
1
DES шифр.
IV
C
1
M
1
DES расшифр.
+
…
…
+
а
б
52 ность вспомогательных значений O
j
, что и при шифровании, здесь также используется DES шифрование (а не расшифровывание, как например, при обратном преобразовании в режиме CBC).
Рис. 2.9. Шифрование (а) и расшифровывание (б) в режиме CFB
Рис. 2.10. Шифрование (а) и расшифровывание (б) в режиме OFB
DES шифр.
I
j
(I
1
=IV)
O
j
M
j
r бит
64 бита
+
C
j
O
j-1
DES шифр.
O
j
C
j
+
M
j
O
j-1
I
j
(I
1
=IV)
64 бита
64 бита
64 бита
r бит
а
б
I
j
(I
1
=IV)
DES шифр.
O
j
M
j
r бит
64 бита
+
64 бита
C
j
C
j-1 64 бита
64 бита
C
j
M
j
сдвиг r разрядов сдвиг r разрядов
а
б
DES шифр.
I
j
(I
1
=IV)
O
j
r бит
+
C
j-1
53
Режим OFB также позволяет шифровать блоки, меньшие по длине, чем 64 бита. Его схема представлена на рис. 2.10. Аналогично режиму CFB, сдвиговый регистр сначала содержит значение инициа- лизирующего вектора. Есть два варианта модификации его значения.
На рисунке представлен вариант с полной заменой на j-м шаге содер- жимого сдвигового регистра вспомогательным значением O
j-1
. Второй вариант построения схемы предполагает, как и в случае CFB, сдвиг I
j-1
влево на r разрядов и запись в младшие разряды сдвигового регистра старших r разрядов O
j-1
При использовании режима OFB важно для каждого сеанса шифрования данных использовать новое начальное состояние сдвиго- вого регистра (его можно передавать, в том числе, и открытым тек- стом). Связано это с тем, что в режимах OFB и CFB генерируется псевдослучайная последовательность чисел, которая накладывается на блоки открытого текста. В случае использования режима OFB, ес- ли дважды используются один и тот же инициализирующий вектор и ключ шифрования, то и генерируемые последовательности будут сов- падать.
Некоторое время шифр DES считался достаточно безопасным.
Но по мере развития вычислительной техники короткий 56-битный ключ привел к тому, что атака путем полного перебора ключевого множества стала относительно легко реализуемой. Чтобы увеличить стойкость алгоритма и в то же время сохранить существующие нара- ботки (в виде программных и аппаратных реализаций алгоритма), бы- ло использовано многократное шифрование.
Сначала было предложено использовать повторное шифрование на разных ключах. Обозначим шифрование на ключе k как E
k
, а рас- шифровывание как D
k
. Тогда предлагаемая схема прямого преобразо- вания описывалась как С=E
k2
(E
k1
(M)), обратного — M=D
k1
(D
k2
(C)).
Однако впоследствии было доказано, что из-за того, что два раза ис- пользуется одно и то же преобразование, против подобной схемы мо- жет быть успешно применена атака «встреча посередине». Ее суть за-
54 ключается в том, что если хранить в памяти большой объем предвы- числений (расчет криптограммы для всех возможных значений клю- ча), то можно взломать приведенную выше схему двукратного шиф- рования за 2
n+1
попыток (вместо 2 2n как было бы при удвоении длины ключа).
Более надежной оказалась схема, включающая шифрование, расшифровывание и повторное шифрование на различных ключах.
Данный шифр получил название Triple DES. Варианты схемы его по- строения приведены на рис. 2.11.
Рис. 2.11. Шифр Triple DES
Использование в шифре Triple DES различных ключей и преоб- разований (шифрование и расшифровывание) позволяет противосто- ять атаке «встреча посередине». В первом случае, выбор ключей про- изводится так, как показано в верхней части рис. 2.11: сначала произ- водится шифрование на ключе K
1
, далее — расшифровывание на ключе K
2
, после — шифрование на ключе K
1
. Суммарная длина ключа
— 112 бит. Более надежной считается схема с использованием в тре- тьем преобразовании еще одного ключа — K
3
(изображена в нижней части рис. 2.11). Тогда суммарный ключ будет длиной 168 бит.
За счет более высокой надежности в настоящее время шифр Tri- ple DES используется чаще, чем шифр DES.
2.2.3. Шифр ГОСТ 28147-89
Данный алгоритм симметричного шифрования был разработан в
СССР и в качестве стандарта утвержден в 1989 году. Он считается до- статочно стойким и широко используется в России теми предприяти-
M
С
E
D
E
K
1
K
1
K
2
K
1
K
2
K
3
55 ями и организациями, которым, в силу особенностей сферы их дея- тельности, необходимо применять сертифицированные средства криптографической защиты данных (это государственные и военные структуры, организации банковской сферы и т. д.).
Этот шифр преобразует сообщение 64-битными блоками, пре- образование осуществляется в соответствии со схемой Фейстеля в 32 раунда, размер ключа — 256 бит. Алгоритм предусматривает 4 режи- ма работы:
- шифрование данных в режиме простой замены (аналог режима
ECB для шифра DES);
- шифрование данных в режиме гаммирования (аналог режима
OFB для шифра DES);
- шифрование данных в режиме гаммирования с обратной свя- зью;
- выработка имитовставки.
Ниже будет рассмотрен режим простой замены, являющийся основой для построения других режимов. Схема раунда шифрования приведена на рис. 2.12.
Преобразование производится в следующем порядке. Правый полублок R
i-1
складывается по модулю 2 32
(сложение 32-разрядных двоичных значений без переноса старшего разряда) с раундовым ключом K
j
. Далее выполняется подстановка, задаваемая таблицами
S
0
, …, S
7
, и полученное значение преобразуется с помощью цикличе- ского сдвига влево на 11 позиций. После этого выполняется побитное сложение по модулю 2 с левым полублоком L
i-1
и перестановка по- лублоков.
Расписание использования раундовых ключей формируется сле- дующим образом. 256-битный секретный ключ K представляется в виде сцепления 8-ми 32-битных подключей K=K
7
|K
6
|K
5
|K
4
|K
3
|K
2
|K
1
|K
0
На первом раунде берется 0-й подключ, на втором — 1-й и т. д., на
9-м раунде опять используется 0-й подключ, на 24-м — 7-й, а вот на
25-м раунде преобразования вновь используется 7-й и далее ключи
56 используются в обратном порядке. Иными словами, номер раундово- го ключа j зависит от номера раунда i следующим образом:
8
mod
)
1
(
i
j
для
24 1
i
,
8
mod
)
32
(
i
j
для
32 25
i
(2.9)
Рис. 2.12. Схема раунда алгоритма ГОСТ 28147-89
Подстановка проводится после разбиения входного значения на
4-битные подблоки. После того как правый полублок R был сложен с раундовым подключем, он разбивается на
8 частей
R=R
7
|R
6
|R
5
|R
4
|R
3
|R
2
|R
1
|R
0
. Таблица подстановок S
i
представляет собой вектор с 16-ю 4-битовыми элементами. Из нее берется элемент, номер которого совпадает со значением R
i
, пришедшим на вход подстанов- ки. Надо отметить, что значения таблиц подстановки не определены
L
i-1
R
i-1
L
i
R
i
S
7
S
6
S
5
S
4
S
3
S
2
S
1
S
0
+
K
j
<<<11
+
57 стандартом, как это сделано, например, в шифре DES. В то же время стойкость алгоритма существенно зависит от их правильного выбора.
Считается, что конкретные значения этих таблиц должны хра- ниться в секрете и это своеобразные ключевые элементы, которые яв- ляются общими для всей организации или подразделения и редко из- меняются.
По сравнению с шифром DES у ГОСТ 28147-89 есть следующие достоинства:
- существенно более длинный ключ (256 бит против 56 у шифра
DES), атака на который путем полного перебора ключевого множе- ства на данный момент представляется невыполнимой;
- простое расписание использования ключа, что упрощает реа- лизацию алгоритма и повышает скорость вычислений.
11>
1 2 3 4 5 6 7 8 9 ... 24