![]() |
Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Шифрование содержимого базы данных
Обязательным шагом в защите базы данных является шифрование В качестве алгоритма шифрования выбран алгоритм AES. На текущий момент этот алгоритм считается достаточно надежным, имеет приемлемую длину ключа и отсутствие метода простого взлома [14]. AES является стандартом, основанным на алгоритме Rijndael. Для AES длина блока входных данных (input) и длина блока с промежуточным результатом шифрования (State) постоянна и равна 128 бит, а длина шифроключа K составляет 128, 192, или 256 бит. При этом, исходный алгоритм Rijndael допускает длину ключа и размер блока от 128 до 256 бит В начале шифрования input копируется в массив State по правилу:
для После этого к State применяется процедура AddRoundKey() и затем State проходит через процедуру трансформации (раунд) 10, 12, или 14 раз
для Отдельные трансформации SubBytes(), ShiftRows(), MixColumns() и AddRoundKey() обрабатывают State. Массив w [ ] содержит key schedule. В рассматриваемой версии алгоритма AES-128 ключ шифра состоит из 128 битов, поделенных на 16 байтов: k0, k1, k2, … k15 и записывается
Рисунок 10 – Формирование ключей раунда
Из этих слов с помощью специального алгоритма (о нем позже) образуется последовательность из 44 слов: w0, w1, w2, …, w43 (каждое слово по 32 бита). На каждый раунд шифрования подаются по четыре слова этой последовательности. Они и будут играть роль раундового ключа. Схема преобразования данных показана на рисунке 10.
Рисунок 11 – Схема шифрования и дешифрования AES
Перед первым раундом выполняется операция AddRoundKey (суммирование по модулю 2 с начальным ключом шифра). Преобразования, выполненные в одном раунде, обозначают Round (State, RoundKey) Раунд состоит из 4 различных преобразований (рисунок 11). В данные преобразования входят: 1) побайтовая подстановка в S–боксе с фиксированной таблицей замен (SubBytes); 2) побайтовый сдвиг строк матрицы State на различное количество байт (ShiftRows); 3) перемешивание байт в столбцах (MixColumns); 4) сложение по модулю 2 с раундовым ключом (AddRoundKey). Последний раунд несколько отличается от предыдущих тем, что не задействует функцию MixColumns [16, 17].
Рисунок 12 – Схема раундов шифрования и дешифрования AES При дешифровании в каждом раунде выполняются обратные операции: InvShiftRows, InvSubBytes, AddRoundKey и InvMixColumns. Порядок выполнения операций при шифровании и дешифровании различен, причины чего будут ясны после детального рассмотрения каждого преобразования. Поскольку алгоритм использует конечное поле Галуа GF(28), рассмот-рим математические основы шифра AES. Для описания алгоритма используется конечное поле Галуа GF(28), построенное как расширение поля GF(28) = {0, 1} по модулю неприводимого многочлена. Элементами поля GF(28) являются многочлены вида:
Степень многочленов меньше 8, а коэффициенты b7, b6, …, b0Î {0, 1}. Операции в поле выполняются по модулю Представление двоичного числа b7b6b5b4b3b2b1b0 в виде многочлена
Например, байт 63 задает последовательность битов 01100011 Рассмотрим основные математические операции в поле GF(28): 1) сложение байт можно выполнить любым из трех способов: 1.1) представить байты битовыми многочленами и сложить 1.2) суммировать по модулю 2 соответствующие биты в байтах; 1.3) сложить байты в шестнадцатеричной системе исчисления; Например, следующие три записи эквивалентны: – представление в виде многочленов:
– битовое представление:
– шестнадцатеричное представление:
{57} Å {83}= {D4}; (11)
2) умножение байт выполняется с помощью представления их многочленами и перемножения по обычным алгебраическим правилам. Полученное произведение необходимо привести по модулю многочлена Перемножение многочленов в поле можно упростить, введя операцию умножения битового многочлена на
Для любого ненулевого битового многочлена
Для нахождения обратного элемента используют расширенный алгоритм Эвклида.
2.7.1 Многочлены с коэффициентами, Многочлены третьей степени с коэффициентами
Таким образом, в этих многочленах в роли коэффициентов при неизвестных задействованы байты вместо бит. Далее такие многочлены будем представлять в форме слова [a0, a1, a2, a3]. В стандарте AES при умножении многочленов используется приведение по модулю другого многочлена Для изучения арифметики рассматриваемых многочленов введем дополнительно многочлен:
где
Тогда сумма многочленов
Умножение является более сложной операцией. Пусть, мы перемножаем
Результатом умножения будет многочлен
где
Чтобы результат можно было представить четырехбайтовым словом, необходимо взять результат по модулю многочлена степени не более 4. Авторы шифра выбрали для этой цели многочлен
Поэтому в произведении коэффициенты при степенях
где
Рассмотрим подробнее преобразования раунда шифрования: 1) операция SubBytes. Операция выполняет нелинейную замену байтов, выполняемую независимо с каждым байтом матрицы State. Замена обратима и построена путем комбинации двух преобразований над входным байтом (рисунок 12); 2) нахождение обратного (инвертированного) элемента относительно умножения в поле GF(28) (считается, что нулевой байт {00} переходит сам в себя); 3) выполнение некого аффинного преобразования: умножение инвертированного байта на многочлен
и суммирование с многочленом
в поле F2. В матричной форме процедура SubBytes записывается как
где через Если на вход функции попадает нулевой байт, то результатом замены будет число
Рисунок 13 – Операция SubBytes
Созданную на основе операции SubBytes специальную таблицу замен байтов в шестнадцатеричной системе называют S–боксом или таблицей преобразований SubBytes (таблица 13).
Таблица 13 – Таблица преобразований SubBytes
Например, если Операция ShiftRows применяется к строкам матрицы State – ее первая строка неподвижна, а элементы нижних трех строк циклически сдвигаются вправо на 1, 2 и 3 байта соответственно (рисунок 14). По сути это перестановка элементов матрицы, в которой участвуют только элементы строк, поэтому преобразование обратимо.
Рисунок 14 – Операция ShiftRows
С помощью операции MixColumns выполняется перемешивание байтов в столбцах матрицы State. Каждый столбец этой матрицы принимается
по модулю многочлена Как показано выше, такую операцию можно записать в матричном виде как
Рисунок 15 – Операция MixColumns
Функция AddRoundKey(State, RoundKey) побитово складывает элементы переменной RoundKey и элементы переменной State по принципу: i–й столбец данных ( При шифровании первое сложение ключа раунда происходит Рисунок 16 – Операция AddRoundKey
Рисунок 17 демонстрирует свойства рассеивания и перемешивания информации в ходе шифрование алгоритмом AES. Видно, что два раунда обеспечивают полное рассеивание и перемешивание информации. Достигается это за счет использования функций ShiftRows и MixColumns. Операция SubBytes придает шифрованию стойкость против дифферен-циального криптоанализа, а операция AddRoundKey обеспечивает необходимую секретную случайность.
Рисунок 17 – Перемешивание информации
Для трех вариантов ключей AES полный перебор требует 2127, 2191 Даже наименьшее из этих чисел свидетельствует, что атака с использо-ванием перебора ключей сегодня не имеет практического значения. 1) дифференциальный криптоанализ; 2) линейныйкриптоанализ; 3)криптоанализ на основе связанных ключей (слабых ключей
Популярное:
|
Последнее изменение этой страницы: 2017-03-08; Просмотров: 743; Нарушение авторского права страницы