Электронный учебно-методический комплекс по учебной дисциплине «Основы информационной безопасности» для специальности 1-40 01 01 «Программное обеспечение информационных технологий»
.pdfПервая операция называется подстановкой (заменой) и выполняется блоком подстановки . Блок подстановки состоит из восьми узлов замены ( - блоков замены) 1, 2, … , 8 с памятью 64 бит каждый. Поступающий из 2 на блок подстановки 32-разрядный вектор разбивают на восемь последовательно идущих 4-разрядных векторов, каждый из которых преобразуется в четырехразрядный вектор соответствующим узлом замены. Каждый узел замены можно представить в виде таблицы-перестановки шестнадцати четырехразрядных двоичных чисел в диапазоне 0000 … 1111. Входной вектор указывает адрес строки в таблице, а число в этой строке является выходным вектором. Затем четырехразрядные выходные векторы последовательно объединяют в 32-разрядный вектор. Узлы замены (таблицы-перестановки) представляют собой ключевые элементы, которые являются общими для сетей ТКС и редко изменяются. Эти узлы замены должны сохраняться в секрете.
Вторая операция - циклический сдвиг влево (на 11 разрядов) 32-разрядного вектора, полученного с выхода блока подстановки . Циклический сдвиг выполняется регистром сдвига . Затем результат работы функции шифрованиясуммируют поразрядно по модулю 2 в сумматоре 2 c 32-разрядным начальным заполнением (0) накопителя 2. Затем полученный на выходе 2 результат (значение (1)) записывают в накопитель 1, а старое значение 1 (значение (0)) переписывают в накопитель 2 (значение (1) = (0)). Первый цикл завершен. Последующие циклы осуществляются аналогично, при этом во втором цикле из КЗУ считывают заполнение 1 – подключ 1, в третьем цикле - подключ 2 и т.д., в восьмом цикле - подключ 7. В циклах с 9-го по 16- й, а также в циклах с 17-го по 24-й подключи из КЗУ считываются в том же порядке: 0, 1, 2, … 6, 7. В последних восьми циклах с 25-го по 32-й порядок считывания подключей из КЗУ обратный: 7, 6, … 2, 1, 0. Таким образом, при шифровании в 32 циклах осуществляется следующий порядок выборки из КЗУ подключей:
0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3, 4, 5, 6, 7,
0, 1, 2, 3, 4, 5, 6, 7, 7, 6, 5, 4, 3, 2, 1, 0.
В 32-м цикле результат из сумматора 2 вводится в накопитель 2, а в накопителе 1 сохраняется прежнее заполнение. Полученные после 32-го цикла шифрования заполнения накопителей 1 и 2. являются блоком шифрованных данных Тш, соответствующим блоку открытых данных Т0.
Уравнения шифрования в режиме простой замены имеют вид
( ) = ( ( − 1) + ( −1) 8) ( − 1) |
при = 1 … 24, |
|
{ |
( ) = ( − 1) |
|
|
|
|
71
{ |
( ) = ( ( − 1) + (32− ) 8) ( − 1) |
при = 25 … 31, |
||
( ) = ( − 1) |
||||
|
|
|
||
|
( ) = ( − 1) |
|
|
|
{ ( ) = ( ( − 1) + ) ( − 1) |
при = 32. |
|
||
|
0 |
|
|
|
где ( ) = ( 32( ), 31( ), … 1( )) - заполнение |
1 после |
-го цикла |
||
шифрования; ( ) = ( 32( ), 31( ), … , 1( )) - заполнение 2. после -го цикла шифрования, = 1 … 32..
Блок зашифрованных данных Тш (64 разряда) выводится из накопителей1, 2в следующем порядке: из разрядов 1 … 32 накопителя 1, затем из разрядов 1 … 32 накопителя 2, т.е. начиная с младших разрядов:
Тш = ( 1(32), 2(32), … 32(32), 1(32), 2(32), … 32(32)).
Остальные блоки открытых данных зашифровываются в режиме простой замены аналогично.
Расшифрование в режиме простой замены
Криптосхема, реализующая алгоритм расшифрования в режиме простой замены, имеет тот же вид, что и при шифровании (см. рис. 10.1).
В КЗУ вводят 256 бит ключа, на котором осуществлялось шифрование. Зашифрованные данные, подлежащие расшифрованию, разбиты на блоки Тш, по 64 бита в каждом. Ввод любого блока
Тш = ( 1(32), 2(32), … 32(32), 1(32), 2(32), … 32(32)).
в накопители 1 |
и 2 |
производят так, чтобы начальное значение накопителя 1 |
|||
имело вид |
|
|
|
|
|
(0) = ( 32(32), 31(32), … , 2(32), 1(32)) |
|||||
32, |
31, |
… , |
2, |
1 |
← номер разряда 1 |
а начальное заполнение накопителя 2: |
(0) = |
||||
( 32(32), 31(32), … , 2(32), 1(32)) |
|
номер разряда 2 |
|||
32, |
31, |
… , |
2, |
1 |
|
Расшифрование осуществляется по тому же алгоритму, что и шифрование, с тем изменением, что заполнения накопителей X 0 , X1 , X 2 ,..., X 7 считываются из
КЗУ в циклах расшифрования в следующем порядке:
0, 1, 2, 3, 4, 5, 6, 7, 7, 6, 5, 4, 3, 2, 1, 0,7, 6, 5, 4, 3, 2, 1, 0, 7, 6, 5, 4, 3, 2, 1, 0.
72
Уравнения расшифрования имеют вид:
{ |
(32 − ) = ( (32 − + 1) |
+ ( −1)) (32 − + 1) |
||||
|
(32 − ) = (32 − + 1) |
|
|
при = 1 … 8, |
||
|
|
|
|
|
||
|
{ |
(32 − ) = ( (32 − + 1) + (32− ) 8) (32 − + 1) |
||||
|
(32 − ) = (32 − + 1) |
|
при = 9 … 31, |
|||
|
|
|
|
|||
|
|
(0) = (1) |
|
|
|
|
{ (0) = ( (1) + ) (1) |
|
|
|
при = 32. |
||
|
|
0 |
|
|
|
|
|
|
Полученные после 32 циклов работы заполнения накопителей N1 и N2 |
||||
образуют блок открытых данных |
|
|
|
|||
|
|
Т0 = ( 1(0), 2(0), … 32(0), 1(0), 2(0), … 32(0)) |
||||
соответствующий блоку зашифрованных данных Tш . При этом состояние |
||||||
накопителя N1 : |
|
|
|
|
||
|
|
(0) = ( 32(0), 31(0), … , 2(0), 1(0)) |
||||
|
|
32, |
31, … , |
2, |
1 номер разряда N1 |
|
состояние накопителя N2 : |
|
|
|
|
||
|
|
(0) = ( 32(0), 31(0), … , 2(0), 1 |
(0)) |
|||
|
|
32, |
31, … , |
2, |
1 |
номер разряда N 2 |
Аналогично расшифроваются остальные блоки зашифрованных данных.
Если алгоритм зашифрования в режиме простой замены 64-битового блока Т0 обозначить через A , то
(Т0) = ( (0), (0)) = ( (32), (32)) = Тш.
Следует иметь в виду, что режим простой замены допустимо использовать для шифрования данных только в ограниченных случаях при выработке ключа и шифровании его с обеспечением имитозащиты для передачи по каналам связи или для хранения в памяти ЭВМ.
10.2. Режим гаммирования
Зашифровывание открытых данных в режиме гаммирования
Криптосхема, реализующая алгоритм шифрования в режиме гаммирования, показана на рис. 10.2. Открытые данные разбивают на 64разрядные блоки
Т0(1), Т0(2), … , Т0( ), … , Т(0 ),
где Т0( )- -й 64-разрядный блок открытых данных, = 1, … , , - определяется объемом шифруемых данных.
73
Эти блоки поочередно зашифровываются в режиме гаммирования путем поразрядного сложения по модулю 2 в сумматоре 5 с гаммой шифра Гш, которая вырабатывается блоками по 64 бита, т.е.
Гш = (Г(ш1), Г(ш2), … , Г(ш), … , Г(ш )
где Г(ш) - -й 64-разрядный блок, = 1, … , .
Число двоичных разрядов в блоке 0( ) может быть меньше 64, при этом
не использованная для зашифрования часть гаммы шифра из блока Гш( ) отбрасывается.
Уравнение шифрования данных в режиме гаммирования имеет вид
Тш( ) = Т(0 ) Г(ш),
где Г(ш) = ( −1 + 2, −1 + 1), = 1, … , ; Тш( ) - -й блок 64-разрядного блока зашифрованного текста; ( ) - функция шифрования в режиме простой замены;
1, 2 - 32-разрядные двоичные константы; , - 32-разрядные двоичные последовательности.
Величины , определяются итерационно по мере формирования гаммы
Г(ш) следующим образом:
( ) ̃,0, 0 = ( )
где ̃ - синхропосылка (64-разрядная двоичная последовательность),
( 0, 0) = ( −1 + 2, −1 + 1), = 1, … , .
Рассмотрим реализацию процедуры шифрования в режиме гаммирования. В накопители 6 и 5 заранее записаны 32-разрядные двоичные константы 1 и2, имеющие следующие значения (в шестнадцатеричной форме):
С1=01010104(16), С2=01010101(16)
74
В КЗУ вводится 256 бит ключа; в накопители 1 и 2 - 64-разрядная двоичная последовательность (синхропосылка)
̃ = ( 1, 2, … , 64).
Синхропосылка ̃ является исходным заполнением накопителей 1 и
Рис. 10.2. Схема реализации режима гаммирования
2 для последовательной выработки блоков гаммы шифра. Исходное заполнение накопителя 1:
( 32, |
31, |
… , |
2, 1) |
|
32, |
31, |
… , |
2, 1 ← номер разряда 1, |
|
состояние накопителя 2 : |
… , |
34, 33) |
|
|
( 64, |
63, |
|
||
64, |
63, |
… , |
34, 33 ← номер разряда 2, |
|
Исходное заполнение |
|
|
̃ |
шифруется в режиме простой |
1 и 2 (синхропосылка |
||||
замены. Результат шифрования
( ̃) = ( 0, 0)
75
переписывается в 32-разрядные накопители 3 |
и 4 так, что заполнение N1 |
|
переписывается в 3 , а заполнение 2 - в 4 . |
|
|
Заполнение накопителя 4 |
суммируют по модулю232 − 1 в сумматоре |
|
4 с 32-разрядной константой |
1 из накопителя 6. Результат записывается |
|
в 4 . Заполнение накопителя 3 |
суммируется по модулю232 в сумматоре 3 с |
|
32-разрядной константой 2 из |
накопителя 5. |
Результат записывается в 3. |
Заполнение 3 переписывают в 1, а заполнение N4 - в 2, при этом заполнения
3, 4 сохраняются. Заполнение накопителей шифруется в режиме простой замены.
Полученное в результате шифрования заполнение накопителей 1 и 2 образует первый 64-разрядный блок гаммы шифра:
Г(1)ш = (1(1), 2(1), … , 63(1), 64(1))
который суммируют поразрядно по модулю 2 в сумматоре 5 с первым 64разрядным блоком открытых данных:
Т(1) = (1(1), 2(1), … , 63(1), 64(1))
Врезультате суммирования по модулю 2 значений Г(1) и (1) получают
первый 64-разрядный блок зашифрованных данных
Тш(1) = Г(1)ш То(1) = (1(1), 2(1), … , 63(1), 64(1))
,
где (1) = (1) (1), = 1 … 64.
Для получения следующего 64-разрядного блока гаммы шифра Г(2)ш заполнение 4 суммируется по модулю (232 − 1) в сумматоре 4 с константой1 из 6. Результат записывается в 4. Заполнение 3 суммируется по модулю 232 в сумматоре 3 с константой 2 из 5. Результат записывается в 3. Новое заполнение 3 переписывают в 1, а новое заполнение 4 - в 2, при этом заполнения 3 и 2 сохраняют. Заполнения 1, 2 шифруют в режиме простой замены.
Полученное в результате шифрования заполнение накопителей 1 и 2
образует второй 64-разрядный блок гаммы шифра Г(2)ш , который суммируется поразрядно по модулю 2 в сумматоре 5 со вторым блоком открытых данных
Т(2)
Тш(2) = Г(2)ш То(2).
Аналогично вырабатываются блоки гаммы шифра Г(3)ш , Г(4)ш , … , Г(ш )и шифруются блоки открытых данных Т(3), Т(3), … , Т( ).
В канал связи или память ЭВМ передаются синхропосылка S̃ и блоки зашифрованных данных:
ТШ(1), ТШ(2), … , Т(Ш ).
76
Расшифрование в режиме гаммирования
При расшифровании криптосхема имеет тот же вид, что и при шифровании
(см. рис. 10.2).
Уравнение расшифрования
T( ) = TШ( ) Г(Ш) = TШ( ) А( −1 + C2, Z −1 + C1), = 1 … .
Следует отметить, что расшифрование данных возможно только при наличии синхропосылки, которая не является секретным элементом шифра и может храниться в памяти ЭВМ или передаваться по каналам связи вместе с
зашифрованными данными. |
|
|
||
|
Рассмотрим реализацию процедуры расшифрования. В КЗУ вводят 256 бит |
|||
ключа, |
с помощью которого |
осуществляется шифрование данных |
||
T(1) |
, T(2) |
, … , T( ). В накопители |
|
и вводится синхропосылка и |
|
|
|
1 |
2 |
осуществляется процесс выработки блоков гаммы шифра Г(1)Ш , Г(2)Ш , … , Г(Ш ).
Блоки зашифрованных данных Т(1)Ш , ТШ(2), … , Т(Ш ) суммируются поразрядно по модулю 2 в сумматоре 5 с блоками гаммы шифра Г(1)Ш , Г(2)Ш , … , Г(Ш ). В резуль-
тате получаются блоки открытых данных ТО(1), Т(2)О , … , ТО( ),при этом Т(О )может содержать меньше 64 разрядов.
10.3. Режим гаммирования с обратной связью
Криптосхема, реализующая алгоритм шифрования в режиме гаммирования с обратной связью, имеет вид, показанный на рис. 10.3.
Шифрование открытых данных в режиме гаммирования с обратной связью
Открытые данные, разбитые на 64-разрядные блоки Т(1)О , ТО(2), … , Т(О ), шифруются в режиме гаммирования с обратной связью путем поразрядного сложения по модулю 2 с гаммой шифра ГШ, которая вырабатывается блоками по
64 бита: Г(1)Ш , Г(2)Ш , … , Г(Ш ).
Число двоичных разрядов в блоке Т(О ) может быть меньше 64, при этом
неиспользованная для шифрования часть гаммы шифра из блока Г(Ш ) отбрасывается.
77
Рис. 10.3. Схема реализации режима гаммирования с обратной связью
Уравнения шифрования в режиме гаммирования с обратной связью имеют
вид:
Т(1)Ш = А(S)̃ Т(1)О = Г(1)Ш Т(1)О ,
Т(Ш) = А (ТШ( −1)) ТО( ) = Г(Ш) Т(О), = 2 … .
Здесь Т(Ш)- i-й 64-разрядный блок шифрованного текста; А( ) - функция шифрования в режиме простой замены; определяется объемом открытых данных.
Аргументом функции А( ) на первом шаге итеративного алгоритма является 64-разрядная синхропосылка S, а на всех последующих
шагах - предыдущий блок зашифрованных данных Т(Ш−1).
Процедура шифрования данных в режиме гаммирования с обратной связью реализуется следующим образом. В КЗУ вводятся 256 бит ключа,в накопители N1 и N2 вводится синхропосылка S̃ = ( 1, 2, … , 64) из 64 бит. Исходное заполнение накопителей 1 и 2 шифруется в режиме простой замены. Полученное в результате шифрования заполнение накопителей 1 и
78
2 образует первый 64-разрядный блок гаммы шифра Г(1)Ш = À (S̃), который суммируется поразрядно по модулю 2 в сумматоре 5 с первым 64-разрядным блоком открытых данных
Т(1)О = (t1(1), t(21), … , t(631), t(641)).
В результате получают первый 64-разрядный блок шифрованных данных
ТШ(1) = Г(1)Ш Т(1)О ,
где ТШ(1) = (τ1(1), τ(21), … , τ(1)63 , τ(1)64 ).
Блок шифрованных данных TШ(i)одновременно является также исходным состоянием накопителей 1 и 2 для выработки второго блока гаммы шифра Г(2)Ш , и поэтому по обратной связи TШ(1) записывается в указанные накопители 1
и 2 .
Заполнение накопителя 1:
(τ(1), τ(1) |
, … , τ(1) |
, τ(1)) |
||
32 |
31 |
2 |
1 |
|
32, |
31, … , 2, |
1 |
← номер разряда 1 |
|
Заполнение накопителя 2 : |
|
|||
(τ64(1), τ63(1), … , τ34(1), τ33(1)) |
||||
32, |
31, … , 2, |
1 |
← номер разряда 1 |
|
Заполнение накопителей |
1 и |
2 |
шифруется в режиме простой замены. |
|
Полученное в результате шифрования заполнение накопителей 1 и 2 образует второй 64-разрядный блок гаммы шифра Г(2)Ш , который суммируется поразрядно
по модулю 2 в сумматоре 5 со вторым блоком открытых данных Т(2)О :
Т(2)Ш = Г(2)Ш ТО(2)
Выработка последующих блоков гаммы шифра ГШ и шифрование соответствующих блоков открытых данных Т(i)О (i = 3 … m) производятся аналогично. Если длина последнего m-го блока открытых данных Т(m)О меньше
64 разрядов, то из Г(m)Ш используется только соответствующее число разрядов гаммы шифра, остальные разряды отбрасываются.
|
В канал связи или память ЭВМ передаются синхропосылка |
̃ |
и блоки |
|||||
|
S |
|||||||
зашифрованных данных Т(1), Т(2) |
, … , Т(m). |
|
|
|||||
|
|
|
|
Ш |
Ш |
Ш |
|
|
|
Расшифрование в режиме гаммирования с обратной связью |
|
||||||
|
При расшифровывании криптосхема имеет тот же вид, что и при |
|||||||
шифровании (см. рис.10 3). |
|
|
|
|
||||
|
Уравнения расшифрования: |
|
|
|||||
(1) |
̃ |
(1) |
(1) |
(1) |
|
|
|
|
TО |
= A(S) TШ |
= ГШ |
TШ |
, |
|
|
|
|
T(i) |
= Г(i) T(i) = A (T(i−1)) T(i), i = 2 … m. |
|
|
|||||
О |
Ш |
Ш |
Ш |
|
Ш |
|
|
|
79
Реализация процедуры расшифрования шифрованных данных в режиме гаммирования с обратной связью происходит следующим образом. В КЗУ вводят 256 бит того же ключа, на котором осуществлялось шифрование открытых блоков Т(1)О , ТО(2), … , Т(m)О . В накопители 1 и 2 вводится синхропосылка S̃.
Исходное заполнение накопителей 1 и 2 (синхропосылка S̃) шифруется в режиме простой замены. Полученное в результате шифрования заполнение 1 и2 образует первый блок гаммы шифра
|
(1) |
|
̃ |
|
|
ГШ |
= А(S), |
|
|
который суммируется поразрядно по модулю 2 в сумматоре 5 |
с блоком |
|||
шифрованных данных Т(1) |
. В результате получается первый блок открытых |
|||
Ш |
|
|
|
|
данных |
|
|
|
|
|
ТО(2) = ГШ(2) ТШ(2). |
|
||
Блок шифрованных |
данных |
Т(1) |
является исходным заполнением |
|
|
|
Ш |
|
|
накопителей и для выработки второго блока гаммы шифра Г(2): |
Г(2) = |
|||
1 2 |
|
|
Ш |
Ш |
А(Т(1)Ш ),. Полученное заполнение накопителей 1 и 2 шифруется в режиме
простой замены. Образованный в результате шифрования блок Г(2)Ш суммируется поразрядно по модулю 2 в сумматоре 5 со вторым блоком шифрованных данных ТШ(2). В результате получают второй блок открытых данных. Аналогично в 1 и 2 последовательно записывают блоки шифрованных данных ТШ(1), ТШ(2), … , ТШ(m), из которых в режиме простой замены вырабатываются блоки гаммы шифра Г(3)Ш , Г(4)Ш , … , Г(Ш ). Блоки гаммы шифра суммируются поразрядно
по |
модулю |
2 в сумматоре 5 с блоками шифрованных данных |
|
Т(3) |
, Т(4) |
, … , Т(m). |
|
Ш |
Ш |
|
Ш |
В результате получают блоки открытых данных ТО(3), Т(4)О , … , ТО(m), при этом последний блок открытых данных Т(m)О может содержать меньше 64 разрядов.
10.4. Режим выработки имитовставки
Имитовставка - это блок из P бит, который вырабатывают по определенному правилу из открытых данных с использованием ключа и затем добавляют к зашифрованным данным для обеспечения их имитозащиты.
Имитозащита - это защита системы шифрованной связи от навязывания ложных данных.
В стандарте ГОСТ 28147-89 определяется процесс выработки имитовставки, который единообразен для любого из режимов шифрования данных. Имитовставка И вырабатывается из блоков открытых данных либо перед шифрованием всего сообщения, либо параллельно с шифрованием по блокам. Первые блоки открытых данных, которые участвуют в выработке имитовставки, могут содержать служебную информацию (например, адресную часть, время, синхропосылку) и не шифруются.
80
