История конкурса на новый стандарт криптозащиты. Преимущества алгоритма Rijndael. Математические основы шифрования. Структура итерационного блочного шифра. Схемы криптопреобразования. Замена байта в преобразовании SubBytes. Циклический сдвиг строк.
Аннотация к работе
Информация становится все более уязвимой по разным причинам: - возрастающие объемы хранимых и передаваемых данных; Большую важность защиты имеет проблема защиты информации от несанкционированного доступа (НСД) при передаче и/или хранении. Шифрованием (encryption) называют процесс преобразования исходных данных (plaintext, например, текстового документа на естественном языке) в шифрованные (ciphertext), нечитаемые без знания специальных параметров преобразования - ключа. Все известные алгоритмы шифрования делятся на два типа: - симметричные ? с единственным секретным ключом для шифрования и дешифрования (они же single-key). асимметричные - с двумя ключами: открытым (public-key) и закрытым ключом (private-key).В 1997 году NIST (National Institute of Standards and Technology) объявил конкурс на создание алгоритма симметричного шифрования, алгоритм получил название AES (Advanced Encryption Standard). Алгоритм планировалось принять как стандарт Соединенных Штатов Америки взамен устаревшего к этому времени стандарту DES (Digital Encryption Standard), являвшегося американским стандартом с 1977 года. Необходимость в принятии нового стандарта была вызвана небольшой длиной ключа DES (56 бит), что позволяло успешно применять метод прямого перебора ключей для взлома DES. NIST опубликовал все данные о тестировании кандидатов на роль AES и потребовал от авторов алгоритмов сообщить о базовых принципах построения алгоритмов, используемых в них константах, таблицах для замен (S-box) и т.п. Кроме того, алгоритм, претендующий на то, чтобы стать стандартом, должен распространяться по всему миру на не эксклюзивных условиях и без платы за пользование патентом.В криптоалгоритме некоторые операции выполняются над байтами, которые рассматриваются как элементы поля GF(28), здесь число в скобках 28 указывает на число элементов конечного поля. Элементами GF(28) являются двоичные многочлены степени N <8, которые могут быть заданы строкой своих коэффициентов. Так, например, байту 01010111 (‘57’ в шестнадцатеричной форме) соответствует многочлен: . Сложение в поле GF(28) - это обычная операция сложения многочленов с использованием операции XOR при приведении подобных членов; или операция поразрядного XOR, если элементы поля представлены в виде строки коэффициентов соответствующих многочленов. В конечном поле для любого ненулевого элемента существует обратный аддитивный элемент , при этом .Rijndael - это итерационный блочный шифр, имеющий переменную длину блоков и различные длины ключей. Промежуточные результаты преобразований, выполняемых в рамках криптоалгоритма, называются состояниями (state). Рисунок 1 - Пример представления блока данных (состояния) и ключа шифрования при и В некоторых случаях ключ шифрования рассматривается как линейный массив 4-байтовых слов.По окончанию шифрования блока ? матрица заполняется следующей порцией данных и процесс повторяется. Таблицы замены блока данных являются инвертируемыми и построены из композиции таких двух преобразований как: 1) Получение обратного элемента с помощью расширенного алгоритма Эвклида (неприводимый многочлен относительно умножения в поле GF(28), нулевой элемент ‘00’ переходит сам в себя. Выполнив данную процедуру для всех возможных вариантов представления одного байта, получим таблицу замен для преобразования SUBBYTES. Замена байта по таблице 3 производится так: Байт Z преобразуется в шестнадцатеричную систему счисления, например XYH=‘5А’, X ? старший разряд, Y ? младший разряд. Строка 1 сдвигается на С 1 байт, строка 2 - на С 2 байт, строка 3 - на С 3 байт.Все преобразования шифрования однозначны и, следовательно, имеют обратное преобразование, т.е. могут быть инвертированы и выполнены в обратном порядке, чтобы выполнить дешифрование для алгоритма AES. В преобразовании INVMIXCOLUMNS, столбцы состояния (state) рассматриваются как полиномы над полем F(28) и умножаются по модулю x4 1 с постоянным полиномом d(x) = a-1(x), в поле F(28): d(x) = 0Bhx3 0Dhx2 09hx 0Eh. Процесс умножения полиномов эквивалентен матричному умножению: = где с-номер столбца массива state и 0 В результате такого умножения, байты столбца с заменяются, соответственно на байты: ; Строка 1 (нумерация с нуля) смещается на 1 байт, строка 2 - на 2 байта, строка 3 - на 3 байта. Преобразование INVSUBBYTES выполняет обратную замену байт с помощью обратной таблицы замен.