522_Lebedjantsev_v._V._Izuchenie_metoda_shifrovanija_AES_
.pdfВ преобразовании ShiftRows (рисунок 3) байты массива State циклически сдвигаются влево на расстояние, равное номеру строки (для нулевой строки величина сдвига равна нулю, т.е. байты сдвигаются только в последних трех строках). Преобразование ShiftRows выполняется следующим образом:
Рисунок 3 – Преобразование ShiftRows циклически сдвигает три последних строки в массиве State
Преобразование MixColumns
Процедура MixColumns обрабатывает столбцы массива state. В результате этого преобразования байты массива state заменяются следующими:
s 0, c ({02} s 0, c ) ({03} s 1, c ) s 2, c s 3, c s 1, c s 0, c ({02} s 1, c ) ({03} s 2, c ) s 3, c s 2, c s 0, c s 1, c ({02} s 2, c ) ({03} s 3, c ) s 3, c ({03} s 0, c ) s 1, c s 2, c ({02} s 3, c ).
11
Рисунок 4 отображает преобразование MixColumns.
Рисунок 4 – Преобразование MixColumns
В преобразовании AddRoundKey ключ раунда Round Key прибавляется к массиву State с помощью операции простого побитового сложения XOR (сложения по модулю 2). Каждый ключ раунда Round Key состоит из Nb слов, взятых из набора ключей (key schedule), содержащихся в массиве w. Эти Nb слов суммируются со столбцами массива State, как показано на рисунке 5.
Рисунок 5 – преобразование AddRoundKey
Блок-схема алгоритма шифрования представлена на рис. 6.
12
Начало
Input;
Cipher Key
KeyExpansion
Циклически
Round=0 повторяющиесяраундыот
1доNr-1
AddRoundKey
Впоследнемраунде Round=1;Nr-1;1 отсутствуетпроцедура
MixColumns
SubBytes Round=Nr
ShiftRows SubBytes
MixColumns ShiftRows
|
AddRoundKey |
|
AddRoundKey |
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Output |
Конец
Рисунок 6 – Блок-схема алгоритма шифрования
3.2 Дешифрование
Для осуществления процедуры дешифрования инвертируются и затем выполняются в обратном порядке преобразования шифрования, описанные выше. При дешифровании массив State обрабатывается совокупностью преобразований InvShiftRows, InvSubBytes, InvMixColumns и AddRoundKey.
Блок-схема алгоритма дешифрования представлена на рисунке 7.
13
|
|
Начало |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Input; |
|
|
|
|
|
|
|
Cipher Key |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
KeyExpansion |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Round=0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
AddRoundKey |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Round=1;Nr-1;1 |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
InvShiftRows |
|
Round=Nr |
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
InvSubBytes |
|
InvShiftRows |
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
AddRoundKey |
|
InvSubBytes |
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
InvMixColumns |
|
AddRoundKey |
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ioutput |
||
|
|
|
|
|
Конец
Рисунок 7 – Блок-схема алгоритма дешифрования
3.3 Применение алгоритма AES
Стандарт шифрования AES является официальным стандартом правительства США для симметричного шифрования. Стандарт определяется публикацией FIPS #197 (2001) и используется в разнообразных приложениях, где предъявляются повышенные требования к производительности и безопасности.
Примеры использования AES:
-в ОС Windows 7 используется шифрование диска методом AES с помощью процедуры BitLocker;
-интернет-система поддержки абонентов (ИСПА) компании «Ростелеком» защищает подключение шифром AES с ключом 256 бит;
-новейшие серверные процессоры Intel поддерживают алгоритм AES (и только AES) на уровне микропроцессорных команд;
-Wi-Fi, GPON.
14
4 Выполнение лабораторной работы
В лабораторной работе предстоит исследовать алгоритм AES с ключом шифрования 128 бит. Следует отметить, что программа создавалась не только для шифрования данных, но и для исследования самого алгоритма. Предполагается анализ на уровне байтов, поэтому входными данными не является текст, представленный в ASCII, Unicode и т.п., а являются байты информации, представленные в шестнадцатеричном формате.
Интерфейс программы изображен на рисунке 8.
Рисунок 8 – Интерфейс программы AES-128
Назначение элементов:
1.Входной блок данных – последовательность бит в шестнадцатеричном представлении, которую нужно зашифровать иди расшифровать. Длина блока для стандарта AES – 128 бит (32 символа в шестнадцатеричном представлении).
2.Секретный ключ – ключ, используемый для шифрования/дешифрования входного блока данных. Данная программа поддерживает только 128-битные ключи.
3.Режим: данный переключатель определяет назначение кнопки «зашифровать» и надпись на ней.
15
4.Кнопка «Зашифровать» («Расшифровать», если выбран режим дешифрования): запускает алгоритм шифрования (или дешифрования), в ходе выполнения которого выводятся промежуточные результаты.
5.Результат: в эту строку выводится результат шифрования или дешифрования.
6.Кнопка «Подсчитать количество символов» сделана для 2-й части лабораторной работы. Подсчитывает, сколько раз каждый символ (от 0 до f) встречается в результате.
7.Поле для вывода промежуточных результатов шифрования/дешифрования.
Обозначения для процедуры шифрования: -Input – входной блок данных;
-Cipher Key – секретный ключ; -RoundKey – ключ раунда;
-Start – массив state на начало раунда;
-SubBytes – массив state после процедуры SubBytes; -ShiftRows – массив state после процедуры ShiftRows; -MixColumns – массив state после процедуры MixColumns; -Output – результат шифрования.
Обозначения для процедуры дешифрования: -iInput – входной блок данных;
-Cipher Key – секретный ключ; -iRoundKey – ключ раунда;
-iStart – массив state на начало раунда;
-iShiftRows – массив state после процедуры invShiftRows; -iSubBytes – массив state после процедуры invSubBytes; -AddRoundKey – массив state после процедуры AddRoundKey; -iOutput – результат дешифрования.
4.1 Исследование стойкости шифра к атаке методом анализа частоты появления символов
Все естественные языки имеют характерное частотное распределение символов. Например, буква "О" - встречается в русском языке чаще других, а буква "Ф" - самая редкая (см. таблицу 2).
Моноалфавитные подстановки обладают важным свойством: они не нарушают частот появления символов, характерных для данного языка. Это позволяет криптоаналитику легко получить открытый текст при помощи частотного анализа. Для этого нужно сопоставить частоты появления символов шифра с вероятностями появления букв используемого алфавита (в данном случае русского). После этого наиболее частые символы криптограммы заменяются на наиболее вероятные символы алфавита, остальные замены производятся на основе вероятных слов и знания, синтаксических правил используемого языка.
16
Таблица 2 - Вероятности встречаемости букв русского языка
Символ |
Вероятность |
Символ |
Вероятность |
Символ |
Вероятность |
пробел |
0.175 |
К |
0.028 |
Ч |
0.012 |
О |
0.089 |
М |
0.026 |
Й |
0.010 |
Е |
0.072 |
Д |
0.025 |
Х |
0.009 |
А |
0.062 |
П |
0.023 |
Ж |
0.007 |
И |
0.062 |
У |
0.021 |
Ю |
0.006 |
Н |
0.053 |
Я |
0.018 |
Ш |
0.006 |
Т |
0.053 |
Ы |
0.016 |
Ц |
0.004 |
С |
0.045 |
З |
0.016 |
Щ |
0.003 |
Р |
0.040 |
Ь |
0.014 |
Э |
0.003 |
В |
0.038 |
Б |
0.014 |
Ф |
0.002 |
Л |
0.035 |
Г |
0.013 |
|
|
1.Запустить программу AES-128.
2.В поле «входной блок данных» ввести 32 одинаковых шестнадцатеричных символа, например: 00000000000000000000000000000000.
3.Ввести ключ шифрования следующего вида: 2b7e151628aed2a6abf7158809cf4f3c.
4.Выбрать режим «шифрование».
5.Зашифровать блок данных нажатием кнопки «зашифровать»;
6.Построить таблицу следующего вида:
Таблица 3 – Число символов на входе и на выходе
Символ
Количество на входе
Количество на выходе
Для подсчета количества символов в результате шифрования использовать соответствующую кнопку. В данной лабораторной работе не обязательно переводить количество тех или иных символов в вероятность их появления, т.к. соотношение между их количеством и их вероятностями будет одинаковым.
7.Построить гистограмму частоты появления символов шифротекста. Пример гистограммы показан на рисунке 9.
8.Убедиться в приблизительной равновероятности появления символов в шифротексте.
9.Ввести блок данных в виде двух повторяющихся символов,
например: 0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f. Ключ оставить прежним.
10.Повторить п.3-8.
17
11.Ввести блок данных следующего вида: 0123456789abcdef0123456789abcdef. Ключ оставить прежним.
12.Повторить п.3-7.
Количество
Символ
Рисунок 9 – Пример гистограммы частоты появления символов
13. На основании анализа результатов шифрования трех видов текста сделать вывод о выравнивании частоты появления символов шифротекста. Сделать вывод о возможности или невозможности применения метода частотного анализа для расшифровки сообщений, защищенных методом AES.
4.2 Исследование наличия слабых ключей шифра AES
1.Ввести блок данных в виде 32-х одинаковых символов, например:
ddddd…
2.Ввести ключ шифрования, состоящий из 32-х одинаковых символов, например: 99999…
3.Зашифровать блок данных.
4.Проанализировать характер появления символов в шифротексте:
-состоит ли шифротекст из одинаковых символов?
-какова вероятность появления разных символов в шифротексте (примерно одинаковая или разная)?
5.Зашифровать прежний блок данных другим ключом, представляющим собой чередование двух разных шестнадцатеричных символов, например: cdcdcd…
6.Проанализировать характер появления символов в шифротексте. Произошло ли выравнивание вероятностей появления символов?
7.Зашифровать прежний блок данных ключом со сложной структурой: d183fa67295be7c48e2c45b409a63d1f.
8.Оценить, как такой псевдослучайный ключ улучшил равновероятность появления символов шифротекста.
18
4.3 Исследование чувствительности шифротекста к изменениям шифруемого текста
1.Ввести блок данных в виде 32-х повторяющихся символов «a».
2.Ввести ключ (случайный).
3.Зашифровать. Записать результат.
4.Изменить первый символ на «b» (при этом меняется только 1 бит во
входном блоке: a(16)=1010(2), b(16)=1011(2)).
5.Зашифровать. Записать результат шифрования. Сравнить с предыдущим. Определить степень несовпадения результатов шифрования в виде количества несовпадающих символов.
6.Восстановить исходный блок данных, 16-й символ заменить на «b». Зашифровать, результат сравнить с первоначальным. Определить степень несовпадения результатов шифрования в виде количества несовпадающих символов.
7.Восстановить исходный блок данных, 32-й символ заменить на «b». Зашифровать, результат сравнить с первоначальным. Определить степень несовпадения результатов шифрования в виде количества несовпадающих символов.
8.Сделать выводы о степени чувствительности результатов шифрования к структуре шифруемого текста (хороший шифр должен иметь высокую чувствительность к изменениям во входных данных).
5 Содержание отчета
Отчет должен содержать:
1.Цель работы.
2.Краткую характеристику шифра AES и область его применения.
3.Выводы по результатам исследований:
-о применимости метода частотного анализа к вскрытию шифра AES; -о наличии слабых ключей в шифре AES;
-о чувствительности шифротекста, сформированного шифром AES, к изменениям входного текста.
4.Общие выводы об эффективности шифра AES.
6 Контрольные вопросы
1.Какая информационная система называется безопасной? Какими свойствами она обладает?
2.Дайте следующие определения: конфиденциальность, доступность, целостность.
3.Системный подход к обеспечению безопасности. Какие меры он
включает?
4.Базовые технологии безопасности.
19
5.Стандарт AES. Какие длины блоков и ключей поддерживает данный алгоритм и сколько раундов преобразований включает? Сколько процедур в каждом раунде?
6.Расскажите о сущности процедур SubBytes, ShiftRows, MixColumns
иAddRoundKey.
7.Где применяется алгоритм AES?
Список литературы
1.Хорев П.Б. Методы и средства защиты информации в компьютерных системах: учеб. Пособие для студ. высш. учеб. заведений. – М.: Издательский центр «Академия», 2006. – 256 с.
2.Шаньгин В.Ф. Информационная безопасность в компьютерных системах и сетях. – М.: Издательство «ФОРУМ»: ИНФА – 2008. – 416 с.
20