КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Шифр Rijndael (AES)
Шифр ГОСТ 28147-89
Шифр ГОСТ 28147-89 [5], как следует из его обозначения, был принят в качестве стандарта в 1989 году. Основные параметры ГОСТ 28147-89: длина ключа 256 бит, размер блока 64 бита, 32 раунда. ГОСТ 28147-89 более удобен для программной реализации, чем DES, имеются сведения о выигрыше по времени примерно в 1.5 раза. В отличие от DES, ГОСТ 28147-89, по-видимому, не был предметом столь глубокого анализа со стороны мирового криптологического сообщества. Тем не менее, как отмечают специалисты, консервативный дизайн и величина основных параметров (длина ключа, размер блока, количество раундов) позволяют утверждать, что шифр вряд ли может быть слабым. Никаких эффективных атак против шифра ГОСТ 28147-89 не опубликовано. В основе ГОСТ 28147-89, так же как и DES, лежит так называемая структура Фейстела. Блок разбивается на две одинаковые части, правую R и левую L. Правая часть объединяется с ключевым элементом и посредством некоторого алгоритма шифрует левую часть. Перед следующим раундом левая и правая части меняются местами. Такая структура позволяет использовать один и тот же алгоритм как для шифрования, так и для дешифрования блока. Это особенно важно при аппаратной реализации, так как прямой и обратный шифры формируются одним и тем же устройством (различается только порядок подачи элементов ключа).
Авторами шифра Rijndael (читается «Рейндал») являются бельгийские специалисты В. Рейман (Vincent Rijmen) и Й. Даман (Joan Daemen). Этот шифр победил в упомянутом выше конкурсе AES и в 2001 году был принят в качестве нового стандарта США. Возможно, он будет играть такую же важную роль в практической криптографии, какая на протяжении десятилетий принадлежала DES. Rijndael заметно сложнее для описания, чем RC6 и ГОСТ 28147-89, хотя его компьютерная реализация достаточно эффективна. Мы представим только основную идею построения шифра. Шифр Rijndael/AES характеризуется размером блока 128 бит, длиной ключа 128, 192 или 256 бит и количеством раундов 10, 12 или 14 в зависимости от длины ключа. Договоримся об основных обозначениях. Под словом будем понимать последовательность из четырех байт (32 бита). Байты в слове нумеруются с 0 (младший байт) по 3 (старший байт). Блок данных состоит из четырех слов, которые нумеруются также с 0 по 3. Для упрощения обозначений условимся, что номера байтов в слове и слов в блоке всегда приводятся по модулю 4 без явного указания на это. Блок данных рассматривается как матрица размером 4x4 байта, причем слова соответствуют не строкам (как это обычно принято), а столбцам. Например Х 2,3 обозначает второй байт третьего слова блока X. Однако запись с одним индексом обозначает слово, например, Х з - третье слово блока. Мы будем следовать этому соглашению, чтобы не менять связанной с ним терминологии Rijndael. Для выполнения преобразований в блоке используется раундо-вый ключ W, получаемый из секретного ключа К. Размер секретного ключа l определяет общее число раундов шифра r: l =128 r =10, l =192 r =12, l =256 r =14. Раундовый ключ состоит из блоков (по 128 бит), количество которых равно числу раундов плюс 1, W = W 0, W 1,..., Wr. В основу разработки Rijndael были положены три критерия: стойкость по отношению ко всем известным атакам, скорость и компактность кода, простота дизайна. В отличие от предыдущих рассмотренных нами шифров, Rijndael не использует какой-либо аналог структуры Фейштеля. Каждый раунд состоит из трех различных обратимых преобразований, называемых слоями: 1) линейный смешивающий слой гарантирует высокую степень взаимопроникновения символов блока для маскировки статистических связей; 2) нелинейный слой реализован с помощью S -боксов, имеющих оптимальную нелинейность, и предотвращает возможность использования дифференциального, линейного и других современных методов криптоанализа; 3) слой сложения с ключом выполняет непосредственно шифрование. Шифр начинается и заканчивается сложением с ключом. Это позволяет закрыть вход первого раунда при атаке по известному тексту и сделать криптографически значимым результат последнего раунда. Алгоритм 5.5. RlJNDAEL: ШИФРОВАНИЕ БЛОКА
ВХОД: Блок X, раундовый ключ W. ВЫХОД: Блок Y. 1. YXW 0; 2. FOR r =1,2,..., r -1 DO 3. Y SubBytes(Y), 4. Y ShiftRows(Y), 5. Y MixColumns(Y), 6. YYWi; 7. Y SubBytes(Y), 8. Y ShiftRows(Y), 9. Y Y Wr; 10. RETURN Y. Процедура SubBytes (замена байтов) реализует слой нелинейного преобразования. Две другие процедуры ShiftRows (сдвиг строк) и MixColumns (перемешивание столбцов) представляют линейный смешивающий слой. Слой сложения с ключом реализован с помощью побитового «исключающего или» (XOR). Алгоритм 5.6. RlJNDAEL: ДЕШИФРОВАНИЕ БЛОКА
ВХОД: Блок Y, раундовый ключ W. ВЫХОД: Блок X. 1. XYWr; 2. FOR i=r -1, r -2,...,1 DO 3. X SubBytes-1(X), 4. X ShiftRows-1(X), 5. X MixColumns-1(X), 6. X X Wi; 7. X SubBytes-1(X), 8. X ShiftRows-1(X), 9. Х ХW 0; 10.RETURN X. Последнее, что нам осталось рассмотреть, это процесс формирования раундового ключа. В прямом и обратном шифре нам было удобно делить раундовый ключ W на блоки по четыре слова. Однако формирование ключа проходит в пословном режиме, поэтому условимся обозначать буквой w с индексом отдельное слово в W, нумеруя слова с нуля. Как следует из описания шифра, раундовый ключ W должен состоять из r+ 1 блоков, где r - количество раундов в шифре. Поэтому количество слов в W равно 4(r +1). Число же слов в секретном ключе К, которое будем обозначать через с, равно 4, 6 или 8. Вначале опишем алгоритм построения W, затем дадим некоторые пояснения. Алгоритм 5.9. Rijndael: формирование раундового ключа
ВХОД: Секретный ключ К из с слов. ВЫХОД: Раундовый ключ W из 4(r +1) слов. 1. WК (с слов); 2. FOR i = c, c +l,...,4(r +l)-l DO 3. twi -1; 4. IF i mod с =0 THEN 5. t SubWord(RotWord(t)) Rcon [ i div c ]; 6. ELSE IF с =8 AND i mod с =4 THEN 7. t SubWord(t); 8. w wi-ct; 9. RETURN w 0… w 4(r+1)-1 В данном алгоритме SubWord(t) - функция, применяющая S-бокс шифра к каждому байту слова t [ t 0, t 1, t 2, t 3][S[ t 1],S[ t 2],S[ t 3],S[ t 0]]. Преобразование RotWord(t) осуществляет циклический сдвиг слова t на один байт влево [ t 0, t 1, t 2, t 3][ t 1, t 2, t 3, t 0]. Массив раундовых констант Rcon состоит из слов Rcon[ i ]=[ yi,0,0,0], где уi = хi- 1 mod m (x). Выбранный метод построения раундового ключа должен способ ствовать решению следующих задач: 1) затруднить атаки на шифр при частично известном секретном ключе или при использовании зависимых (связанных общими правилами построения) ключей; 2) устранить имеющиеся симметрии внутри раунда шифра и между раундами (для этого используется массив раундовых констант Rcon). Как отмечалось при рассмотрении обратного шифра, чтобы получить раундовый ключ для дешифрования, необходимо подвергнуть преобразованию MixColumns-1 блоки W с первого по предпоследний.
Дата добавления: 2014-01-11; Просмотров: 1669; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |