Кроме того, в обратной матрице присутствуют четыре различных элемента, тогда как в исходной - только три, что позволяло "сэкономить" одно умножение из четырех


перейти к полному списку дипломных проектов

Ссылка на скачивания файла в формате .doc находится в конце странички

Кроме того, в обратной матрице присутствуют четыре различных элемента, тогда как в исходной - только три, что позволяло "сэкономить" одно умножение из четырех

Тильдой (знаком "~") обозначена операция побитового дополнения своего аргумента.

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

Заменяющее значение выбирается на пересечении строки, определяемой старшей 16-ричной цифрой заменяемого значения, и столбца, определяемого его младшей цифрой.

Построчное вращение матрицы

В ходе данной операции каждая строка матрицы данных, кроме первой, вращается (циклически сдвигается) влево на определенное число позиций, зависящее от номера строки и от размера блока данных:

, 1(i(4, 1(j(n.

Первая строка всегда остается на месте: С1 = 0, для нее приведенная выше формула существенно упрощается: z1j = y1j. Ниже в таблице приведены величины сдвига для строк матрицы со второй по четвертую в зависимости от числа столбцов n в матрице:

Умножение на постоянную матрицу

На этом шаге матрица данных слева умножается на постоянную матрицу-циркулянт M:

X = M(X,

При выполнении матричного умножения операции сложения и умножения элементов обеих матриц выполняются в конечном поле GF(28). Матрица M является циркулянтом: каждая ее строка получается циклическим сдвигом предыдущей строки вправо на один элемент. Элементы матрицы выбраны таким образом, чтобы свести к минимуму трудоемкость операции умножения: в ней присутствуют лишь небольшие по значению числа 01, 02 и 03, половина элементов - единичные, т.е. реального умножения выполнять для них не требуется. Этим самым обеспечивается высокая эффективность возможных реализаций этой операции.

Следует добавить, что операция умножения в конечном поле GF(28) является достаточно трудоемкой в программной реализации и никаким образом не сводится к обычному арифметическому умножению. Если умножение двоичных чисел реализуется сдвигами и обычным арифметическим суммированием, то умножение полиномов над полем GF(2) - теми же сдвигами и побитовым суммированием по модулю 2. Однако в шифре Rijndael одним из множителей всегда является константа и размер операндов невелик - один байт. Это позволяет реализовать умножение на константу в поле GF(28) как замену, что существенно повышает эффективность программной реализации. Для каждого множителя-константы при этом требуется свой отдельный узел замен. Напротив, наиболее эффективной аппаратной реализацией этой операции является реализация в виде серии сдвигов и побитовых сложений по модулю два в соответствие с ее непосредственным определением.

Дешифрация

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

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

k1, k2, k3, ... , kR, kR+1,

то при дешифрации должна быть использована следующая последовательность элементов:

kR+1, M -1kR, ... , M -1k3, M -1k2, k1.

2. На шаге побайтовой замены используется узел замен S-1 обратный тому, что применяется в процедуре шифрования S. Это означает, что каково бы ни было байтовое значение b, всегда справедливо следующее соотношение:

S -1[S[b]] = b.

Указанный узел замен S-1 представлен в следующей таблице:

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

Сi' = n - Ci, 2(i(4.

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

На шаге умножения слева на постоянную матрицу используется матрица M -1, обратная используемой при шифровании матрице M:



Следует отметить, что умножение в конечном поле GF(28) на элементы матрицы M -1 с точки зрения вычислительных затрат является более трудоемкой операцией, чем умножение на элементы матрицы M. Кроме того, в обратной матрице присутствуют четыре различных элемента, тогда как в исходной - только три, что позволяло "сэкономить" одно умножение из четырех.

скачать бесплатно Программного Обеспечения ЭВМ, Информационных Технологий и Прикладной Математики

Содержание дипломной работы

Техническое задание 1
Основная часть текста, разделенная на разделы: Исследовательская часть
Для того чтобы этого избежать, следует использовать специальный режим шифрования
С использованием IV сообщения с идентичным открытым текстом при шифровании переходят в сообщения с различным шифротекстом
В данном продукте решено использовать стандартный размер блока в 128 бит и размер ключа в 256 бит, как наиболее стойкий вариант
Коэффициенты этого преобразования выбраны таким образом, чтоб у полученного узла замен отсутствовали точки неподвижности (S[y] = y), и "антинеподвижности" (S[y] = ~y)
Кроме того, в обратной матрице присутствуют четыре различных элемента, тогда как в исходной - только три, что позволяло "сэкономить" одно умножение из четырех
inc – функции шифрования и дешифрации блоков по 16 байт, а также вспомогательные по отношению к ним функции; \Driver\AES\usefull_functions
При выборе пункта «Удалить образ диска» также вызывается единственная функция DelImageDlgShow, внутри которой происходит весь процесс удаления существующего файла образа диска
Аналог C/C++ функции strncpy; copy_block proc dst:DWORD, src:DWORD Функция копирования 16 байтного блока src в dst; StrLen proc item:DWORD Функция быстрого вычисления длины строки
Для выгрузки драйвера и удаления виртуального диска из системы выберите пункт «Выгрузить диск» контекстного меню
Кроме того, реализованный в данной работе криптографический алгоритм Rijndael (AES), обладает высокой криптостойкостью и очень высокой скоростью работы
, нами было разработано и проведено 6 занятий по 3D моделированию, позволяющих изучить основы 3D моделирования

заработать

Закачай файл и получай деньги