Разработка программного обеспечения для формирования базы данных для государственной итоговой аттестации 9 классов

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



?цедуры преобразования ключа (Key expansion). Эта процедура формирует Nb(Nr+1) слов. Алгоритм требует Nb слов и каждая из Nr итераций требует Nb слов. В результате получается линейный массив 4-байтовых слов, который обозначается [wi], где i лежит в пределах 0?i<=Nk.

Функция SubWord() работает с входными байтами, преобразуя их с помощью S-таблиц. Операция выполняется для каждого из 4 входных байт.

Функция RotWord() использует в качестве входного слова [a0,a1,a2,a3] и возвращает слово [a1,a2,a3,a0].

KeyExpansion(byte key[4*Nk], word w[Nb*(Nr+1)], Nk)temp= 0(i 6 and i mod Nk = 4)= SubWord(temp)if[i] = w[i-Nk] xor temp= i + 1while

Рис. 2. Псевдокод реализации процедуры преобразования ключа

2.7Расшифрование AES

Все процедуры, описанные в предыдущем разделе, являются обратимыми. Целью дешифровки является обработка зашифрованного массива данных iелью получения исходного блока данных. Процедуры дешифровки включают в себя функции InvShiftRows(), InvSubBytes(), InvMixColumns() и AddRoundKey(). Псевдокод для процедуры дешифровки представлен на рис. 3.

InvCipher(byte in[4*Nb], byte out[4*Nb], word w[Nb*(Nr+1)])

begin

byte state[4,Nb]= in(state, w[Nr*Nb, (Nr+1)*Nb-1])round = Nr-1 step -1 downto 1(state)(state)(state, w[round*Nb, (round+1)*Nb-1])(state)

end for(state)(state)(state, w[0, Nb-1]) = state

end

Рис. 3. Псевдокод процедуры дешифровки

2.7.1Преобразование InvShiftRows()

Процедура InvShiftRows() является обратной по отношению ShiftRows(). Байты в последних трех рядах State циклически сдвигаются на разное число байт. Первый ряд (r=0) не сдвигается.

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

Преобразование InvSubBytes() является обратной подстановкой байт, в которой S-таблица последовательно применяется для каждого из байтов State. Это достигается за счет обратного аффинного преобразования.

2.7.3Преобразование InvMixColumns()

Процедура InvMixColumns() является обратной по отношению MixColumns(). Колонки рассматриваются как полиномы над полем GF(28).

2.7.4Обратное преобразование AddRoundKey()

Преобразование AddRoundKey(), описанное в разделе 1.4 является обратимым, так как содержит только операции XOR.

2.7.5Эквивалентный код дешифровки

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

EqInvCipher(byte in[4*Nb], byte out[4*Nb], word dw[Nb*(Nr+1)])state[4,Nb]= in(state, dw[Nr*Nb, (Nr+1)*Nb-1])round = Nr-1 step -1 downto 1(state)(state)(state)(state, dw[round*Nb, (round+1)*Nb-1])for(state)(state)(state, dw[0, Nb-1])= state

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

for i = 0 step 1 to (Nr+1)*Nb-1[i] = w[i]forround = 1 step 1 to Nr-1(dw[round*Nb, (round+1)*Nb-1])

Рис. 4. Псевдокод для эквивалентного обратного преобразования

Существует новая версия AES-NI (New Instructions), которая позволяет оптимизировать работу алгоритма (понизить загрузку процессора на 50%). Эта версия может использоваться и совместно с SSL. Компания Intel разработала микросхему, реализующую этот алгоритм (серия X5600). Количество клиентов при работе с версией AES-NI может быть увеличено на 13%.

2.7.6Криптостойкость алгоритма AES

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

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

К алгоритму не применим дифференциальный криптоанализ.

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

Square-атака (специфичная атака на алгоритмы со структурой квадрат, к которым относится и AES) также не применима к алгоритму Rijndael.

Алгоритм не вскрывается методом интерполяции.- в настоящее время самый широко распространенный алгоритм шифрования. Более 10 лет является официальным стандартом США для шифрования данных и применяется в различных сферах деятельности по всему миру. Обладает большим запасом криптостойкости.

Преимущества алгоритма:

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

Высокая криптостойкость. Алгоритм известен около 15 лет, в течение 10 из которых он является стандартом шифрования в США. За это время, AES был хорошо исследован криптоаналитиками всего мира, и работа по поиску уязвимостей не прекращается до сих пор. На настоящий момент, не найдено серьезных уязвимостей, которые представляют практической опасности для криптостойкости алгоритма.

Недостатки алгоритма:

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

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