rijndael (Курсовая - Построение и исследование криптосистемы на основе Rijndael)

2018-01-12СтудИзба

Описание файла

Файл "rijndael" внутри архива находится в следующих папках: Курсовая - Построение и исследование криптосистемы на основе Rijndael, Rijndael. Документ из архива "Курсовая - Построение и исследование криптосистемы на основе Rijndael", который расположен в категории "". Всё это находится в предмете "информационная безопасность" из 7 семестр, которые можно найти в файловом архиве РТУ МИРЭА. Не смотря на прямую связь этого архива с РТУ МИРЭА, его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "информационная безопасность" в общих файлах.

Онлайн просмотр документа "rijndael"

Текст из документа "rijndael"

МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ



МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ИНСТИТУТ РАДИОТЕХНИКИ, ЭЛЕКТРОНИКИ И АВТОМАТИКИ (ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ) ФАКУЛЬТЕТ ВЫЧИСЛИТЕЛЬНЫХ МАШИН И СИСТЕМ



Построение и исследование криптосистемы на основе Rijndael.



Ф.И.О. студента

Рыжов Алексей Владимирович

Группа

ВИ-1-00



Москва 2004



1. Введение.



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

На первом этапе мы создадим криптосистему на основе криптографического алгоритма Rijndael, принятого в 2001 г. в качестве американского стандарта криптографической защиты AES. AES принят на замену морально устаревшему DES — самому распространенному криптоалгоритму в мире. Этим и обусловлен наш выбор основы нашего алгоритма.

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

На третьем этапе мы рассмотрим работу нашей системы в режиме генератора псевдослучайных последовательностей (ПСП). Для оценки их качества мы выберем один из наиболее известных статистических тестов, применяемых для анализа генераторов, — Руководство по статистическому тестированию генераторов ПСП (Руководство НИСТ).



2. Создание криптосистемы.





2.1 Изменения исходного криптоалгоритма.



Спецификация исходного криптоалгоритма Rijndael описана в Федеральном стандарте шифрования США и легко доступна, поэтому останавливаться на подробном описании мы не будем. Остановимся только на основных его параметрах.

Алгоритм Rijndael относится к числу симметричных блочных шифров и имеет архитектуру “квадрат” (4´4), размер каждой ячейки 8 бит; размер блока (бит) 128, 192 или 256 (в качестве стандарта принят вариант шифра только с размером блока 128 бит); pазмер ключа (бит) 128, 192 или 256; число раундов 10, 12 или 14; pазмер ключевого элемента (бит) 128, 192 или 256 (равен размеру блока); число ключевых элементов 11, 13 или 15 (на 1 больше числа раундов).

На его основе мы создадим его упрощенный аналог. Архитектуру квадрата уменьшим до размера 2´2. Размер ячейки оставим прежним, но при преобразовании S-блока разделим 8 бит на две независимые группы по 4 бита. Соответственно размер блока и ключа уменьшится до 32 бит. Число раундов сократим до 3.

Более подробные детали изменений будут рассмотрены в спецификации алгоритма.



2.2 Определения и обозначения.



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

K

ключ шифрования (ключи зашифрования и расшифрования совпадают)

Nb

число столбцов (16-битных слов) (равно 2)

Nk

число 16-битных слов ключа (равно 2)

Nr

число раундов (равно 3)

w[i..j]

срез массива развернутого ключа (индексация ведется в 16-битных словах)

AddRoundKey()

функция добавления ключа

SubBytes()

функция побайтной замены

ShiftRows()

функция циклического сдвига строк

MixColumns()

функция линейной замены столбцов

InvSubBytes()

функция побайтной замены, обратная к SubBytes()

KeyExpansion()

функция выработки расширенного ключа из K

Rcon[]

массив констант, используемых в функции расширения ключа KeyExpansion()

RotWord()

функция, которая меняет местами старшие и младшие разряды 16-битного слова

SubWord()

функция побайтной замены в 16-битном слове

Å

операция сложения в поле (операция Исключающие-ИЛИ)

·

операция умножения в поле

Ä

операция умножения двух многочленов (степень каждого из которых <2) по модулю

Вход и выход нашего алгоритма представляют собой последовательности из 32 бит каждая.

Промежуточное состояние последовательности во время работы алгоритма называется state. В начале работы state=inp, а в конце out=state.

Каждая последовательность разбивается на четыре группы по 8 бит.

Эти группы образуют следующий квадрат:

[Sorry. Ignored \begin{pspicture} ... \end{pspicture}]



2.3 Математическая интерпретация.



Каждая ячейка квадрата (последовательность 8 бит) интерпретируется как запись коэффициентов многочлена с коэффициентами над полем GF(2) (нумерация идет справа налево).

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

Поле — это поле многочленов с коэффициентами над полем GF(2) по модулю m(x).

В данном аспекте никаких изменений в нашей криптосистеме сделано не было. Следовательно описание операций сложения и умножения в поле нашей системы совпадает с исходной.

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

Пусть даны два многочлена над полем

Тогда их сумма будет равна

а произведение равно

Заметим, что если многочлен a(x) фиксирован, то умножение можно записать в матричной форме



2.4 Спецификация алгоритма.



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

Первое преобразование — это взаимооднозначная замена одного байта на другой. Это преобразование является нелинейным, в литературе оно носит название S-блока. В программной реализации за это преобразование отвечает функция SubBytes().

Второе преобразование — это циклический сдвиг влево каждой строки на определенное число позиций. В программной реализации за это преобразование отвечает функция ShiftRows().

Третье преобразование — это преобразует каждый столбец в другой по определенному правилу. В программной реализации за это преобразование отвечает функция MixColumns(). Второе и третье преобразования вместе образуют линейное, в литературе оно носит название P-блока.

Четвертое преобразование — это сложение по модулю 2 текущего состояния и ключа раунда. В программной реализации за это преобразование отвечает функция AddRoundKey().



2.4.1 Зашифрование.



Полный алгоритм зашифрования описан следующим образом:

state = inp

AddRoundKey(state, w[0..1])

for round = 1 step 1 to Nr–1

SubBytes(state)

ShiftRows(state)

MixColumns(state)

AddRoundKey(state, w[round*Nb..round*Nb+1])

end for

SubBytes(state)

ShiftRows(state)

AddRoundKey(state, w[Nr*Nb..Nr*Nb+1])

out = state

Откуда видно, что последний раунд отличается от всех отсутствием преобразования MixColumns(). Кроме того, можно условно рассматривать первое преобразование AddRoundKey() как 0 раунд.



Преобразование SubBytes().

Упрощение данного преобразования является самым значимым, так как выбор определенного S-блока сильно сказывается на результатах методов криптоанализа.

Во-первых, зададим подстановку , которая действует на полубайте.

Во-вторых, разделим байт s на старшие и младшие полубайты . Нелинейное преобразование SB[s] байта s строится следующим образом

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

Итоговое преобразование SubBytes() заменяет каждый байт на .



Преобразование ShiftRows().

Так как у нас всего две строки, то первая строка остается на месте (сдвиг на 0 позиций), а вторая на 1 позицию.



Преобразование MixColumns().

Каждый столбец нашей системы можно представить как полином 1 степени с коэффициентами над полем . Преобразование MixColumns() заменяет каждый столбец на другой по следующему правилу s'(x)=a(xs(x), где a(x)=03x+02:



Преобразование AddRoundKey(). Это преобразование остается без изменений. Оно заключается в том, что каждый столбец складывается с 16-битным словом расширенного ключа



2.4.2 Расшифрование.



Полный алгоритм расшифрования описан следующим образом:

state = inp

AddRoundKey(state, w[Nr*Nb..Nr*Nb+1])

for round = Nr-1 step -1 downto 1

ShiftRows(state)

InvSubBytes(state)

AddRoundKey(state, w[round*Nb..round*Nb+1])

MixColumns(state)

end for

ShiftRows(state)

InvSubBytes(state)

AddRoundKey(state, w[0..1])

out = state

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



Преобразование InvSubBytes().

Данное преобразование по построению эквивалентно своему обратному, разница в том, что вместо подстановки используется обратная к ней подстановка .



2.4.3 Процедура развертывания ключа.



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

Алгоритм этой процедуры следующий:

word temp

i = 0

while (i < Nk)

w[i] = word(key[2*i], key[2*i+1])

i = i+1

end while

i = Nk

while (i < Nb * (Nr+1))

temp = w[i-1]

if (i mod Nk = 0)

temp = SubWord(RotWord(temp)) xor Rcon[i/Nk]

end if

w[i] = w[i-Nk] xor temp

i = i + 1

end while

Из этого алгоритма следует, что раундовый ключ строится только по ключу предыдущего раунда, т.е. это рекуррентная процедура.



Преобразование RotWord().

Это преобразование меняет местами координаты столбца на столбец . Данное преобразование эквивалентно умножению на x:

w'(x)=w(xx



Преобразование SubWord().

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5224
Авторов
на СтудИзбе
429
Средний доход
с одного платного файла
Обучение Подробнее