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

lab2

.docx
Скачиваний:
17
Добавлен:
19.03.2016
Размер:
230.56 Кб
Скачать

c(x) = '03' x3 + '01' x2 + '01' x + '02'. Данный полином является взаимно простым с х4 + 1 и, следовательно, инвертируем. Это может быть записано в виде умножения матрицы. Пусть b(x) = c(x) * a(x).

Инверсия MixColumn является аналогичным MixColumn. Каждый столбец преобразуется умножением его на полином d(x), определяемый следующим образом:

('03' x3 + '01' x2 + '01' x + '02') * d(x) = '01'

В результате получаем

d(x) = '0B' x3 + '0D' x2 + '09' x + '0E'

Сложение с ключом раунда AddRoundKey выполняется как операция побитового XOR ключа раунда с текущим состоянием. Длина ключа раунда равна длине блока Nb. AddRoundKey является инверсией самого себя.

Ключи раунда получаются из ключа шифрования с помощью преобразования, состоящего из двух компонентов ключа (Key Expansion) и выбор циклового ключа (Round Key Selection). Основополагающие принципы алгоритма выглядят следующим образом:

1. Общее число бит ключей раунда равно длине блока, умноженной на число циклов плюс 1 (например, для длины блока 128 бит и 10 циклов требуется 1408 бит циклового ключа).

2. Ключ шифрования расширяется в Расширенный Ключ (Expanded Key).

3. Цикловые ключи берутся из Расширенного ключа следующим образом: первый цикловой ключ содержит первые Nb слов, второй - следующие Nb слов и т.д.

Expanded Key является линейным массивом четырехбайтных слов и обозначается как W [Nb * (Nr + 1)]. Первые Nk слов состоят из ключа шифрования. Остальные слова определяются рекурсивно. Функция расширения ключа зависит от значения Nk: существует версия функции для Nk, равному или меньшему 6, и версия для Nk больше 6. Для Nk ≤6 мы имеем:

KeyExpansion(byte Key[4*Nk], word W[Nb*(Nr+1)])

{

for(i=0;i<Nk;i++)

W[i]=(Key[4*i],Key[4*i+1],Key[4*i+2],Key [4*i+3]);

for(i=Nk;i<Nb*(Nr+1);i++) {

temp=W[i-1];

if (i%Nk==0)

temp=ByteSub(RotByte(temp))^Rcon[i/Nk];

W[i]=W[i-Nk]^temp;

}

}

В данном случае ByteSub является функцией, которая возвращает четырехбайтное слово, в котором каждый байт является результатом применения S-box Rijndael к байту в соответствующей позиции во входном слове. Функция RotByte (W) возвращает слово, в котором байты циклически переставлены таким образом, что для входного слова (a, b, c, d) создается выходное слово (b, c, d, a).

Можно заметить, что первые Nk слов заполняются ключом шифрования. Каждое следующее слово W[i] равно XOR предыдущего слова W[i-1] и позиций слова Nk до W[i - Nk]. Для слов в позициях, которые кратны Nk, сначала применяется преобразование XOR к W[i-1] и константой раунда. Данное преобразование состоит из циклического сдвига байтов в слове RotByte, за которым следует применение табличной подстановки для всех четырех байтов в слове (ByteSub).

Для Nk > 6 имеем:

KeyExpansion(byte Key [4*Nk],word W[Nb*(Nr+1)])

{

for (i=0;i<Nk;i++)

W[i]=(key[4*i], key[4*i+1], key[4*i+2], key[4*i+3]);

for (i=Nk;i<Nb*(Nr+1); i++) {

temp=W[i-1];

if(i % Nk==0)

temp=SubByte(RotByte(temp))^Rcon[i/Nk];

else if (i % Nk==4)

temp=SubByte(temp);

W[i]=W[i-Nk]^temp;

}}

Отличие в схеме для Nk 6 состоит в том, что для i-4 кратных Nk, SubByte применяется для W[i-1] перед XOR.

Константы раунда не зависят от Nk и определяются следующим образом:

Rcon [i] = (RC [i], '00', '00', '00').

RC [i] являются элементами в GF (28) со значением x(i-1) таким, что:

RC [1] = 1 (т.е. '01')

RC [i] = x (т.е. '02') • (RC [i-1]) = x(i-1)

Ключ раунда i получается из слов буфера ключа раунда W [Nb * i] до W [Nb * (i+1)].

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

Основным недостатком алгоритма является его несимметричность по процедурам шифрации/дешифрации.

Шифр RC6 был также представлен на конкурсе AES группой разработчиков во главе с известным криптографом Рональдом Ривестом. Шифр очень прост, что делает его очень привлекательным для использования в различных прикладных задачах. Он представляет собой сеть Фейштеля из 20 раундов с 4 ветвями смешанного типа – результат образующих функций, вычисленных от четных ветвей, накладывается на нечетные ветви, затем ветви меняются местами. Размер блока – 128 бит. Структура алгоритма приведена на рис.5.

Рисунок 5 – Алгоритм шифрования RC6

Преобразование T представляет собой функцию: T(X)=(X*(2*X+1)) mod 232. Оно используется в качестве нелинейного преобразования с хорошими показателями перемешивания битового значения входной величины. В качестве параметра циклического сдвига на переменное число бит поступает результат умножения, циклически смещенный влево на 5 бит. Таким образом, реально величину переменного сдвига определяют 5 старших бит результата 32-битного умножения – а именно эти биты находятся в центре 64 битного общего (до взятия вычета) произведения, и, следовательно, зависят от всех бит входного параметра X.

Дешифрование алгоритма RC6 производится инвертированием порядка выполняемых в сети Фейштеля действий и заменой операции сложения на вычитание.

Формирование ключей раунда в RC6 происходит следующим образом. Сначала ключ, размер которого может иметь произвольную длину, выравнивается по 32-битной границе нулями. В результате получается массив K из с машинных слов K[0]..K[c-1]. Массив ключей раунда назовем k, всего потребуется 44 элемента. На первом этапе массив k заполняется с использованием специальных констант, полученных из двоичной записи чисел e (основание натурального логарифма) и φ (золотое сечение):

k[i]=B7E1516316 +i*9E3779B916, i=0..43.

На втором этапе производится рекурсивное перемешивание между собой массивов K и k :

A=0;B=0;i=0;j=0;

for( x=0;x<44*3;x++)

{

k[i]=(k[i]+A+B) ROL 3; B=k[i];

i=(i+1) %44;

K[j]=(K[j]+A+B) ROL (A+B);A=k[j];

j=(j+1)%c;

}

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

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

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

  1. режим электронной кодовой книги (Electronic Code Book, ECB);

  2. режим сцепления блоков шифра (Cipher Block Changing, CBC);

  3. режим обратной связи по шифротексту (Electronic Feedback, CFB);

  4. режим обратной связи по выходу (Output Feedback, OFB).

В режиме ECB шифрование/дешифрование i-го блока открытого текста/шифротекста выполняется независимо от остальных блоков:

ci=Ek(mi), mi=Dk(ci).

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

Режим CBC предполагает следующие алгоритмы шифрации/дешифрации:

ci=Ek(mi ci-1), mi=Dk(ci) ci-1

В режиме CBC каждый блок открытого текста складывается с блоком шифротекста, полученным на предыдущем этапе. Таким образом, происходит сцепление блоков друг с другом и независимая манипуляция с каждым из них невозможна, а одинаковые входные блоки будут давать на выходе разные блоки. Однако задача распараллеливания процедуры кодирования в этом режиме затруднена. Дополнительным параметром процедур шифрования/дешифрования является параметр c0. Существует модификация данного режима, называемая PCBC (Propagating Cipher Block Changing), которая позволяет при дешифрации распространить единичную ошибку, возникшую при передаче шифротекста, на весь шифротекст и таким образом обнаруживать ошибки передачи. Правила шифрования и дешифрации PCBC:

ci=Ek(mi mi-1 ci-1), mi=Dk(ci) ci-1 mi-1

Режим PCBC не утвержден международными стандартами, однако находит применение в протоколе ключевого обмена Kerberos.

В режиме CFB также происходит «маскировка» блока открытого текста уже зашифрованными блоками:

ci=miEk(ci-1), mi=Еk(ci-1)  ci

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

В режиме OFB исходное сообщение вообще не подвергается криптопреобразованию, оно складывается с шифруемыми на секретном ключе блоками si (s0 является задаваемым несекретным параметром режима):

ci=mi si , mi=ci si, si=Ek(si-1)

В этом режиме, как и в режиме ECB, ошибки, которые могут возникнуть при передаче шифротекста по каналам связи, локализуются в блоке, не распространяясь на соседние, причем в режиме OFB ошибочными будут только биты, подвергшиеся изменению (в ECB изменится весь блок). Это дает возможность злоумышленнику незаметно для принимающей стороны подменить блок шифротекста. Возможности распараллеливания процедур шифрации/дешифрации затруднены. Режим также не требует реализации процедуры дешифрации данных. В режиме усовершенствованного OFB предлагается маскировать блок открытого текста не величиной si, а si +V (mod 264), где V – некоторый вектор инициализации.

Более полный список режимов шифрования можно посмотреть в [5].

Порядок выполнения работы

  1. Ознакомьтесь с теоретическими основами блочного симметричного шифрования в настоящих указаниях, а также в [2] и конспектах лекций.

  2. Получите вариант задания у преподавателя.

  3. Напишите программу согласно варианту задания.

  4. Отладьте разработанную программу и покажите результаты работы про­граммы преподавателю.

5. Составьте отчет по лабораторной работе

Содержание отчета

Отчет по лабораторной работе должен содержать следующие сведения:

  • название и цель работы;

  • вариант задания;

  • листинг разработанной программы с комментариями;

  • результаты работы программы.

Варианты заданий

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

Таблица 6 – Варианты заданий к лабораторной работе

Алгоритм

Режим шифрования

Номер

Название

Номер

Режим

1

TEA

а

ECB

2

IDEA

б

CBC

3

RC6

в

PCBC

4

ГОСТ 28147-89

г

CFB

5

Rijndael

д

OFB

6

DES

Контрольные вопросы

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

  2. Что такое сеть Фейштеля? В чем ее основные достоинства?

  3. Какие параметры блочных шифров влияют на его криптостойкость?

  4. Какие блочные шифры, построенные по принципу сети Фейштеля, вам известны?

  5. Проведите сравнительный анализ алгоритмов ГОСТ 28147-89 и Rijndael.

  6. Проведите сравнительный анализ режимов шифрования CBC и ECB.

  7. Проведите сравнительный анализ режимов шифрования CBC и CFB

Л и т е р а т у р а

  1. Конеев И.Р., Беляев А.В. Информационная безопасность предприятия. -СПб.: БХВ-Петербург, 2003.- 752с.:ил.

  2. Лясин Д.Н., Саньков С.Г. Методы и средства защиты компьютерной информации (учебное пособие). – Волгоград, Издательство ВолгГТУ РПК "Политехник”, 2005г.

  3. Официальный сайт национального института стандартизации и техники (NIST) США. http://csrc.nist.gov/CryptoToolkit/aes/

  4. Чмора А.Л. Современная прикладная криптография. 2-е изд. -М.: Гелиос АРВ, 2002.-256с.:ил.

  5. Шнайер Б. Прикладная криптография.- М. : Триумф, 2002. – 816с.

Составители: Дмитрий Николаевич Лясин

Игорь Александрович Макушкин

Блочное симметричное шифрование. Мето­дические указания к лабораторным работам по курсу «Методы и средства защиты компьютерной информации».

В авторской редакции.

Темплан 2008 г. , поз. N 13В (з)

Лицензия ИД N04790 от 18.05.01

Подписано в печать _________ . На магнитном носителе.

Усл. печ. л. 1,4 . Уч. -изд.л. 1,44.

Волгоградский государственный технический университет.

400131 Волгоград , пр. Ленина , 28.

РПК "Политехник" Волгоградского государственного технического

университета.

400131 Волгоград , ул. Советская , 35.

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