Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Шифрование содержимого базы данных
Обязательным шагом в защите базы данных является шифрование В качестве алгоритма шифрования выбран алгоритм AES. На текущий момент этот алгоритм считается достаточно надежным, имеет приемлемую длину ключа и отсутствие метода простого взлома [14]. AES является стандартом, основанным на алгоритме Rijndael. Для AES длина блока входных данных (input) и длина блока с промежуточным результатом шифрования (State) постоянна и равна 128 бит, а длина шифроключа K составляет 128, 192, или 256 бит. При этом, исходный алгоритм Rijndael допускает длину ключа и размер блока от 128 до 256 бит В начале шифрования input копируется в массив State по правилу:
, (5)
для и {\displaystyle 0\leq c< Nb}. После этого к State применяется процедура AddRoundKey() и затем State проходит через процедуру трансформации (раунд) 10, 12, или 14 раз , (6) для и {\displaystyle 0\leq c< Nb}. Отдельные трансформации 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) являются многочлены вида:
. (7)
Степень многочленов меньше 8, а коэффициенты b7, b6, …, b0Î {0, 1}. Операции в поле выполняются по модулю . Всего в поле GF(28) насчитывается 256 многочленов. Представление двоичного числа b7b6b5b4b3b2b1b0 в виде многочлена
. (8)
Например, байт 63 задает последовательность битов 01100011 Рассмотрим основные математические операции в поле GF(28): 1) сложение байт можно выполнить любым из трех способов: 1.1) представить байты битовыми многочленами и сложить 1.2) суммировать по модулю 2 соответствующие биты в байтах; 1.3) сложить байты в шестнадцатеричной системе исчисления; Например, следующие три записи эквивалентны: – представление в виде многочленов:
; (9)
– битовое представление:
; (10)
– шестнадцатеричное представление:
{57} Å {83}= {D4}; (11)
2) умножение байт выполняется с помощью представления их многочленами и перемножения по обычным алгебраическим правилам. Полученное произведение необходимо привести по модулю многочлена (результат приведения равен остатку Перемножение многочленов в поле можно упростить, введя операцию умножения битового многочлена на :
. (12)
Для любого ненулевого битового многочлена в поле GF(28) существует многочлен обратный к нему по умножению, то есть
). (13)
Для нахождения обратного элемента используют расширенный алгоритм Эвклида.
2.7.1 Многочлены с коэффициентами, Многочлены третьей степени с коэффициентами Î GF(28) из конеч-ного поля имеют вид: (14) Таким образом, в этих многочленах в роли коэффициентов при неизвестных задействованы байты вместо бит. Далее такие многочлены будем представлять в форме слова [a0, a1, a2, a3]. В стандарте AES при умножении многочленов используется приведение по модулю другого многочлена . Для изучения арифметики рассматриваемых многочленов введем дополнительно многочлен:
, (15) где Î GF(28).
Тогда сумма многочленов и имеет вид:
. (16)
Умножение является более сложной операцией. Пусть, мы перемножаем , . (18)
Результатом умножения будет многочлен
где ; ; ; ; ; ; Чтобы результат можно было представить четырехбайтовым словом, необходимо взять результат по модулю многочлена степени не более 4. Авторы шифра выбрали для этой цели многочлен , для которого справедливо . (20)
Поэтому в произведении коэффициенты при степенях , 0, 1, 2, 3 равны сумме произведений по индексам, для которых , , = 0, 1, 2, 3. Таким образом, после приведения по модулю получим:
, (21)
где ; ; ; Рассмотрим подробнее преобразования раунда шифрования: 1) операция SubBytes. Операция выполняет нелинейную замену байтов, выполняемую независимо с каждым байтом матрицы State. Замена обратима и построена путем комбинации двух преобразований над входным байтом (рисунок 12); 2) нахождение обратного (инвертированного) элемента относительно умножения в поле GF(28) (считается, что нулевой байт {00} переходит сам в себя); 3) выполнение некого аффинного преобразования: умножение инвертированного байта на многочлен
(22)
и суммирование с многочленом
(23) в поле F2. В матричной форме процедура SubBytes записывается как
, (24)
где через обозначены входные биты, а через – выходные. Если на вход функции попадает нулевой байт, то результатом замены будет число . Процесс замены байтов с помощью таблицы подстановки иллюстрирует рисунок 12. Нелинейность преобразования обусловлена нелинейностью инверсии , а обратимость – обратимостью матрицы.
Рисунок 13 – Операция SubBytes
Созданную на основе операции SubBytes специальную таблицу замен байтов в шестнадцатеричной системе называют S–боксом или таблицей преобразований SubBytes (таблица 13).
Таблица 13 – Таблица преобразований SubBytes
Например, если 1, 1 = , то результат замены этого байта следует искать на пересечении строки с индексом и столбца с индексом . Операция ShiftRows применяется к строкам матрицы State – ее первая строка неподвижна, а элементы нижних трех строк циклически сдвигаются вправо на 1, 2 и 3 байта соответственно (рисунок 14). По сути это перестановка элементов матрицы, в которой участвуют только элементы строк, поэтому преобразование обратимо.
. Рисунок 14 – Операция ShiftRows
С помощью операции MixColumns выполняется перемешивание байтов в столбцах матрицы State. Каждый столбец этой матрицы принимается
(25)
по модулю многочлена (рисунок 15). Как показано выше, такую операцию можно записать в матричном виде как
(26) Рисунок 15 – Операция MixColumns
Функция AddRoundKey(State, RoundKey) побитово складывает элементы переменной RoundKey и элементы переменной State по принципу: i–й столбец данных ( 0, 1, 2, 3) складывается с определенным 4–байтовым фрагментом расширенного ключа , где – номер поточного раунда алгоритма (рисунок 16). При шифровании первое сложение ключа раунда происходит Рисунок 16 – Операция AddRoundKey
Рисунок 17 демонстрирует свойства рассеивания и перемешивания информации в ходе шифрование алгоритмом AES. Видно, что два раунда обеспечивают полное рассеивание и перемешивание информации. Достигается это за счет использования функций ShiftRows и MixColumns. Операция SubBytes придает шифрованию стойкость против дифферен-циального криптоанализа, а операция AddRoundKey обеспечивает необходимую секретную случайность.
Рисунок 17 – Перемешивание информации
Для трех вариантов ключей AES полный перебор требует 2127, 2191 Даже наименьшее из этих чисел свидетельствует, что атака с использо-ванием перебора ключей сегодня не имеет практического значения. 1) дифференциальный криптоанализ; 2) линейныйкриптоанализ; 3)криптоанализ на основе связанных ключей (слабых ключей
Популярное:
|
Последнее изменение этой страницы: 2017-03-08; Просмотров: 743; Нарушение авторского права страницы