Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Кодирование и шифрование информации в радиоэлектронных системах передачи информации. Часть 2. Шифрование

.pdf
Скачиваний:
26
Добавлен:
05.02.2023
Размер:
9.52 Mб
Скачать

s'3c = ({0b} • s0c) ({0d} • s1c) ({09} • s2c) ({0e} • s3c).

Преобразование AddRoundKey является собственной инверсией, т.к. использует только операцию XOR.

В функции обратного расшифрования (рисунок 4а) последовательность преобразований отличается от последовательности преобразований при зашифровании, в то время как форма расширенных ключей для зашифрования и расшифрования остается той же самом. Однако,

несколько свойств алгоритма AES позволяют функции расшифрования иметь ту же самую последовательность преобразований как и при зашифровании (с преобразованиями,

замененными их инверсиями) (рисунок 2.37б). Это достигается при внесении изменений в расширенный ключ.

 

 

Входной блок

 

 

Входной блок

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

AddRoundKey

 

 

AddRoundKey

 

 

 

 

 

 

 

 

 

round = 1 .. 9

 

 

round = 1 .. 9

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

InvShiftRows

 

 

InvSubBytes

 

 

 

 

 

 

 

 

 

 

 

 

InvSubBytes

 

 

InvShiftRows

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

AddRoundKey

 

 

InvMixColumns

 

 

 

 

 

 

 

 

 

 

 

 

InvMixColumns

 

 

AddRoundKey

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

InvShiftRows

 

 

InvSubBytes

 

 

 

 

 

 

 

 

 

 

InvSubBytes

 

 

InvShiftRows

 

 

 

 

 

 

 

 

 

 

 

 

 

 

AddRoundKey

 

 

AddRoundKey

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Выходной блок

 

 

Выходной блок

 

 

 

 

 

 

 

 

 

 

 

 

 

а)

 

 

 

б)

Рис. 2.37. Схемы функций обратного (а) и прямого (б) расшифрования

Существует два свойства, которые делают возможным использование функции прямого расшифрования:

1.Преобразования SubBytes и ShiftRows можно переставлять местами, т.е. можно сначала применить преобразование SubBytes, а затем ShiftRows, и наоборот – сначала ShiftRows, а

затем SubBytes. То же самое верно и для их инверсий InvSubBytes и InvShiftRows.

2.Операции смешивания столбцов MixColumns и InvMixColumns являются линейными относительно входных данных, т.е.

InvMixColumns(State XOR Round Key) =

= InvMixColumns(State) XOR InvMixColumns(Round Key).

Эти свойства позволяют изменить порядок преобразований InvSubBytes и InvShiftRows.

Порядок преобразований AddRoundKey и InvMixColumns также может быть полностью

191

изменен, при условии, что предварительно, используя преобразование InvMixColumns, будут изменены столбцы (слова) развернутого ключа расшифрования.

Режим обратной связи по шифртексту (CFB)

В режиме обратной связи по шифртексту (CFB) выходные блоки зашифрованного текста за счет обратной связи становятся входными блоками для последующего шифрования.

Чтобы получить зашифрованный текст, открытый текст складывается, с помощью операции

XOR, со сгенерированными выходными блоками. В качестве начального входного блока в режиме CFB используется значение вектора инициализации IV. Значение IV может быть открытым, но при этом должно быть непредсказуемым.

В режиме CFB используется целочисленный параметр s, 1 ≤ s b, где b – размер блока (в

байтах) открытого и зашифрованного текстов. Значение s иногда включается в название режима, например, 1-битовый режим CFB, 8-битовый режим CFB, 64-битовый режим CFB,

или 128-битовый режим CFB.

При зашифровании в режиме CFB первым входным блоком является значение IV (рисунок 2.38). Чтобы произвести первый входной блок к значению IV применяется операция шифрования. Первая доля зашифрованного текста производится операцией XOR

между первой долей открытого текста и s старшими битами первого выходного блока.

Оставшиеся (bs) бит первого выходного блока отбрасываются. Затем (bs) младших бита значения IV соединяются операцией конкатенации с s битами первой доли зашифрованного текста, для формирования второго входного блока. Другими словами для формирования второго входного блока биты первого входного блока циклически сдвигаются на s позиции влево, и затем доля зашифрованного текста заменяет s младших бит.

192

зашифрование

расшифрование

IV

 

 

Входной блок

Входной блок

Входной блок

Шифрование

Шифрование

Шифрование

Выходной блок

Выходной блок

Выходной блок

Открытый

Открытый

Открытый

текст 1

текст 2

текст n

Шифртекст 1

Шифртекст 2

Шифртекст n

IV

 

 

Входной блок

Входной блок

Входной блок

Шифрование

Шифрование

Шифрование

Выходной блок

Выходной блок

Выходной блок

Шифр-

Шифр-

Шифр-

текст 1

текст 2

текст n

Открытый текст

Открытый текст

Открытый текст

Рис.2.38. Режим CFB

Процесс повторяется до тех пор, пока от каждой доли открытого текста не будет получена доля зашифрованного текста. Чтобы сформировать долю зашифрованного текста s

старших бит каждого выходного блока складываются, с помощью операции XOR, с

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

Обратная связь может быть описана в терминах отдельных бит следующим образом: если i1i2ib j-й входной блок, а c1c2cs j-ая доля зашифрованного текста, то (j+1)-й входной блок: i1i2ibc1c2cs.

При расшифровании в режиме CFB значение IV является первым входным блоком.

Каждый последующий входной блок формируется как при CFB зашифровании, соединяя операцией конкатенации (bs) младших бит предыдущего входного блока с s старшими битами предыдущего зашифрованного текста. Чтобы произвести выходные блоки к каждому входному блоку применяется функция шифрования. Чтобы получить доли открытого текста

193

s старших бит выходного блока складывается, с помощью операции XOR, с

соответствующими долями зашифрованного текста.

При зашифровании в режиме CFB входной блок для каждой функции шифрования

(кроме первого) зависит от результата предыдущей функции шифрования, поэтому многократные операции шифрования не могут быть выполнены параллельно. При расшифровании в режиме CFB, необходимые операции шифрования могут быть выполнены параллельно, если из значения IV и зашифрованного текста сначала создать

(последовательно) входные блоки.

Режим обратной связи по выходу (OFB)

В режиме обратной связи по выходу (OFB) последовательность выходных блоков генерируется путем последовательного применения операции шифрования к значению IV.

Чтобы получить зашифрованный текст открытый текст складывается с помощью операции

XOR со сгенерированными выходными блоками и наоборот. Для данного режима шифрования значения IV должны быть случайными, т.е. IV должны быть уникальными для каждого применения режима OFB на данном ключе.

Для зашифрования в режиме OFB, чтобы произвести первый выходной блок, значение IV

преобразовывается функцией шифрования. Чтобы произвести первый блок зашифрованного текста первый выходной блок складывается, с помощью операции XOR, с первым блоком открытого текста. Затем, чтобы произвести второй выходной блок, функция шифрования применяется к первому выходному блоку. Второй выходной блок складывается с помощью операции XOR со вторым блоком открытого текста, чтобы произвести второй блок зашифрованного текста. Затем ко второму выходному блоку применяется функция шифрования, чтобы произвести третий выходной блок. Таким образом, последовательные выходные блоки производятся путем применения функции шифрования к предыдущим выходным блокам, а затем выходные блоки складывается с помощью операции XOR с

соответствующими блоками открытого текста, чтобы произвести блоки зашифрованного текста. В последнем блоке (который может быть неполным блоком из u бит) для операции

XOR используются старшие u бит последнего выходного блока. Оставшиеся (bu) бит последнего выходного блока отбрасываются.

При расшифровании в режиме OFB чтобы произвести первый выходной блок значение

IV преобразовывается функцией шифрования (рисунок 2.39). Чтобы получить первый блок открытого текста первый выходной блок складывается, с помощью операции XOR, с первым блоком зашифрованного текста. Затем первый выходной блок преобразовывается функцией шифрования, чтобы произвести второй выходной блок. Второй выходной блок складывается с помощью операции XOR со вторым блоком зашифрованного текста, чтобы произвести

194

второй блок открытого текста. Второй выходной блок также преобразовывается функцией шифрования, чтобы произвести третий выходной блок. Таким образом, последовательные выходные блоки производятся путем применения функции шифрования к предыдущим выходным блокам, затем выходные блоки складываются, с помощью операции XOR, с

соответствующими блоками зашифрованного текста, чтобы получить блоки открытого текста. В последнем блоке (который может быть неполным блоком из u бит) для операции

XOR используются старшие u бит последнего выходного блока. Оставшиеся (bu) бит последнего выходного блока отбрасываются.

IV

зашифрование

расшифрование

Входной блок

Входной блок

Входной блок

Шифрование

Шифрование

Шифрование

Выходной блок

Выходной блок

Выходной блок

Открытый

Открытый

Открытый

текст 1

текст 2

текст n

Шифртекст 1

Шифртекст 2

Шифртекст n

IV

 

 

Входной блок

Входной блок

Входной блок

Шифрование

Шифрование

Шифрование

Выходной блок

Выходной блок

Выходной блок

Шифр-

Шифр-

Шифр-

текст 1

текст 2

текст n

Открытый текст

Открытый текст

Открытый текст

Рис. 2.39. Режим OFB

В режиме OFB и при зашифровании и при расшифровании каждая функция шифрования

(кроме первой) зависит от результатов предыдущей функции шифрования, поэтому многократные функции шифрования не могут быть выполнены параллельно. Однако, если значение IV известно, выходные блоки могут быть сгенерированы прежде, чем станет доступным зашифрованный или открытый текст.

195

Для режима OFB требует уникальное значение IV для каждого сообщения, которое когда-либо будет зашифровано на данном ключе. Если, вопреки этому требованию,

используется то же самое значение IV для зашифровывания более, чем одного сообщения, то конфиденциальность этих сообщений может быть поставлена под угрозу. В частности если известен блок открытого текста любого из этих сообщений, скажем, j-й блок открытого текста, то выход j-й функции шифрования может быть определен легко из j-го блока зашифрованного текста сообщения. Эта информация позволяет легко восстановить j-й блок открытого текста любого другого сообщения, зашифрованного с использованием того же самого значения IV, из соответствующего j-го блока зашифрованного текста этого сообщения.

Конфиденциальность может быть аналогичным образом поставлена под угрозу, если любой из входных блоков функции шифрования определяется как IV для зашифрования другого сообщения на данном ключе.

Режим счетчика (Counter mode)

В режиме счетчика (CTR) для производства последовательности выходных блоков операция шифрования применяется к набору выходных блоков, называемых счетчиками.

Чтобы получить зашифрованный текст открытый текст складывается с помощью операции

XOR со сгенерированными выходными блоками и наоборот. Все блоки в последовательности счетчика должны отличаться друг от друга. Это условие не ограничивается одним сообщением, т.е. для всех сообщений, которые зашифровываются на данном ключе, все счетчики должны быть различными.

При зашифровании в режиме CRT функция шифрования применяется к каждому блоку счетчика (рисунок 2.40). Полученные выходные блоки складываются с помощью операции

XOR с соответствующими блоками открытого текста, для того чтобы произвести блоки зашифрованного текста. В последнем блоке (который может быть неполным блоком из u

битов) для операции XOR используются старшие u бит последнего выходного блока.

Оставшиеся (bu) бит последнего выходного блока отбрасываются.

196

зашифрование

расшифрование

Counter 1

Counter 2

Counter n

Входной блок

Входной блок

Входной блок

Шифрование

Шифрование

Шифрование

Выходной блок

Выходной блок

Выходной блок

Открытый

Открытый

Открытый

текст 1

текст 2

текст n

Шифртекст 1

Шифртекст 2

Шифртекст n

Counter 1

Counter 1

Counter 1

Входной блок

Входной блок

Входной блок

Шифрование

Шифрование

Шифрование

Выходной блок

Выходной блок

Выходной блок

Шифр-

Шифр-

Шифр-

текст 1

текст 2

текст n

Открытый текст

Открытый текст

Открытый текст

Рис. 2.40. Режим CRT

При расшифровании в режиме CTR выполняются те же самые операции, что и при зашифровании.

В режиме CTR и при зашифровании и при расшифровании функции шифрования могут быть выполнены параллельно. Блок открытого текста, который соответствует какому-то отдельному блоку зашифрованного текста, может быть получен независимо от других блоков открытого текста, если может быть определен соответствующий блок счетчика.

Кроме того, функции шифрования могут быть применены к счетчикам прежде, чем станет доступным зашифрованный или открытый текст.

197

Компьютерный практикум по изучения шифрования с секретным ключом

Изучение стандарта криптографической защиты ГОСТ 28147-89

Цель работы Изучить криптографический стандарт шифрования ГОСТ 28147-89 и его особенности, познакомиться с различными режимами блочного шифрования.

ГОСТ 28147-89 — советский и российский стандарт симметричного шифрования,

введённый в 1990 году, также является стандартом СНГ. Полное название — «ГОСТ 28147-

89 Системы обработки информации. Защита криптографическая. Алгоритм криптографического преобразования». С момента опубликования ГОСТа на нём стоял ограничительный гриф «Для служебного пользования», и формально шифр был объявлен

«полностью открытым» только в мае 1994 года. К сожалению, история создания шифра и критерии разработчиков до сих пор не опубликованы.

Алгоритм криптографического преобразования предназначен для аппаратной или программной реализации, удовлетворяет криптографическим требованиям и по своим возможностям не накладывает ограничений на степень секретности защищаемой информации.

Стандарт обязателен для организаций, предприятий и учреждений, применяющих криптографическую защиту данных, хранимых и передаваемых в сетях, в отдельных вычислительных комплексах или на персональных компьютерах.

То, что в его названии вместо термина «шифрование» фигурирует более общее понятие

«криптографическое преобразование», вовсе не случайно. Помимо нескольких тесно связанных между собой процедур шифрования, в документе описан один построенный на общих принципах с ними алгоритм выработки имитовставки. Последняя является не чем иным, как криптографической контрольной комбинацией, то есть кодом, вырабатываемым из исходных данных с использованием секретного ключа с целью имитозащиты, или защиты данных от внесения в них несанкционированных изменений.

Математические операции Сложение по модулю 2

Операция поразрядного XOR (обозначается как ) — булева функция и логическая

операция. Результат выполнения операции является истинным только при условии, если является истинным в точности один из аргументов. Пример выполнения операции сложения:

6 + х4 + х2 + х + 1) (x7 + х+ 1) = х7 + х6 + х4 + х2 (в виде многочленов)

(10)

{01010111} {10000011} = {11010100} (двоичное представление)

(11)

198

Правила суммирования по модулю 2 и по модулю (2 -1)

1. Два целых числа

,

, где 0

,

<, 2 -1, представленные в двоичном виде

 

 

 

 

 

,

,

(12)

 

т.е.

 

 

 

,

(13)

 

 

 

 

 

 

,

(14)

суммируются по модулю 2

(операция ) по следующему правилу:

 

 

 

 

 

 

, если

,

(15)

 

 

 

 

 

 

 

(16)

где операция +(-) есть арифметическая сумма (разность) двух целых чисел.

 

2. Два целых числа

,

, где 0

,

2 -1, представленные в двоичном виде

 

 

 

 

 

 

,

(17)

 

 

 

 

 

,

 

(18)

суммируются по модулю (2

-1) (операция ’) по следующему правилу:

 

 

 

 

 

, если

,

(19)

 

 

 

 

 

если

.

(20)

Структура алгоритма

Симметричное шифрование — способ шифрования, в котором для зашифровки и расшифровывания применяется один и тот же криптографический ключ. До изобретения схемы асимметричного шифрования единственным существовавшим способом являлось симметричное шифрование. Ключ алгоритма должен сохраняться в секрете обеими сторонами. Алгоритм шифрования выбирается сторонами до начала обмена сообщениями. К

симметричному шифрованию предъявляются следующие требования:

Отсутствие линейности (то есть условия f(a) xor f(b) == f(a xor b)), в противном случае облегчается применение дифференциального криптоанализа к шифру. (Функция xor – «сложение по модулю 2», «исключающее или» – результат выполнения операции является истинным только при условии, если является истинным в точности один из аргументов).

Полная утрата всех статистических закономерностей исходного сообщения.

Алгоритм ГОСТ 28147-89 является блочным шифром – разновидность симметричного

шифра. Особенностью блочного шифра является обработка блока нескольких байт за одну

199

итерацию (в нашем случае 8). Как и большинство современных блочных шифров, ГОСТ основан на сети Фейстеля (рисунок 7.1). Сеть представляет собой определённую

7многократно повторяющуюся (итерированную) структуру, называющуюся ячейкой Фейстеля. При переходе от одной ячейки к другой меняется ключ, причём выбор ключа зависит от конкретного алгоритма. Операции шифрования и расшифрования на каждом этапе очень просты, и при определённой доработке совпадают, требуя только обратного порядка используемых ключей. Шифрование при помощи данной конструкции легко реализуется как на программном уровне, так и на аппаратном, что обеспечивает широкие возможности применения.

Если внимательно изучить оригинал ГОСТ 28147–89, можно заметить, что в нем содержится описание алгоритмов нескольких уровней. На самом верхнем находятся практические алгоритмы, предназначенные для шифрования массивов данных и выработки для них имитовставки. Все они опираются на три алгоритма низшего уровня, называемые в тексте ГОСТа циклами. Эти фундаментальные алгоритмы будут называться «базовые циклы», чтобы отличать их от всех прочих циклов. Они имеют следующие названия и обозначения: (последние приведены в скобках)

цикл зашифрования (32-З);

цикл расшифрования (32-Р);

цикл выработки имитовставки (16-З).

Всвою очередь, каждый из базовых циклов представляет собой многократное повторение одной единственной процедуры, называемой «основным шагом криптопреобразования».

200

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]