Смекни!
smekni.com

Методические указания к лабораторным работам по курсу «Методы и средства защиты компьютерной информации» Волгоград 2008 (стр. 2 из 4)

Дешифрование осуществляется аналогичным образом, за исключением того, что порядок использования подключей становится обратным, причем ряд подключей дешифрования являются или аддитивными, или мультипликативными обратными величинами подключей шифрования (см. таблицу 2).

Таблица 2. Подключи шифрования и дешифрования алгоритма IDEA

Цикл

Подключи шифрования

Подключи дешифрования

1

Z1(1) Z2(1) Z3(1) Z4(1) Z5(1) Z6(1) Z1(9)-1 -Z2(9) -Z3(9) Z4(9)-1 Z5(8) Z6(8)

2

Z1(2) Z2(2) Z3(2) Z4(2) Z5(2) Z6(2) Z1(8)-1 -Z3(8) -Z2(8) Z4(8)-1 Z5(7) Z6(7)

3

Z1(3) Z2(3) Z3(3) Z4(3) Z5(3) Z6(3) Z1(7)-1 -Z3(7) -Z2(7) Z4(7)-1 Z5(6) Z6(6)

4

Z1(4) Z2(4) Z3(4) Z4(4) Z5(4) Z6(4) Z1(6)-1 -Z3(6) -Z2(6) Z4(6)-1 Z5(5) Z6(5)

5

Z1(5) Z2(5) Z3(5) Z4(5) Z5(5) Z6(5) Z1(5)-1 -Z3(5) -Z2(5) Z4(5)-1 Z5(4) Z6(4)

6

Z1(6) Z2(6) Z3(6) Z4(6) Z5(6) Z6(6) Z1(4)-1 -Z3(4) -Z2(4) Z4(4)-1 Z5(3) Z6(3)

7

Z1(7) Z2(7) Z3(7) Z4(7) Z5(7) Z6(7) Z1(3)-1 -Z3(3) -Z2(3) Z4(3)-1 Z5(2) Z6(2)

8

Z1(8) Z2(8) Z3(8) Z4(8) Z5(8) Z6(8) Z1(2)-1 -Z3(2) -Z2(2) Z4(2)-1 Z5(1) Z6(1)

9

Z1(9) Z2(9) Z3(9) Z4(9) Z1(1)-1 -Z2(1) -Z3(1) Z4(1)-1

.


Рисунок 2 - Cхема алгоритма IDEA (режим шифрования)

Для реализации алгоритма IDEA было принято соглашение, что мультипликативная обратная величина от 0 равна 0.

Алгоритм IDEA обладает рядом преимуществ перед алгоритмом DES. Он значительно безопаснее алгоритма DES, поскольку 128-битовый ключ алгоритма IDEA вдвое больше ключа DES. Внутренняя структура алгоритма IDEA обеспечивает лучшую устойчивость к криптоанализу. Существующие программные реализации примерно вдвое быстрее реализаций алгоритма DES. Недостатком алгоритма является его ориентированность на 16-разрядную архитектуру, что снижает эффективность использования вычислительных средств.

Для поиска мультипликативного обратного при получении ключей дешифрования можно использовать расширенный алгоритм Евклида, который позволяет в целых числах найти решение уравнения ax+by=1 при заданных а и b. Очевидно, что если решение существует (а оно существует, если а и b взаимно просты), то x будет величиной, мультипликативно обратной а по модулю b.

Алгоритм Евклида
1. Определить матрицу E:

2. Вычислить r –остаток от деления числа a на b:

a = bq + r, 0 £ r < b

3. Если r=0, то первый столбец матрицы E является решением уравнения.

4.Если r¹ 0, заменить матрицу Е:

5.Поменять местами столбцы матрицы Е.

6. Заменить пару чисел a, b на b, r и перейти к шагу 2.

Отечественным стандартом блочного шифрования является алгоритм ГОСТ 28147-89, который использует 256-битный ключ шифрования и 32 цикла преобразования 64-битных блоков исходного сообщения. Алгоритм реализует классическую схему сети Фейштеля из рис.1. При этом образующая функция реализована следующим образом (рис.3) .

Сначала правая половина блока и ключ раунда складываются по модулю 232. Результат сложения разбивается на восемь 4-битовых последовательностей, каждая и которых поступает на вход соответствующего S-блока. Каждый блок представляет собой таблицу подстановки, которая заменяет поступающее на вход число в диапазоне [0..15] на другое число в том же диапазоне. Выходы всех S-блоков объединяются в 32-битное слово, которое затем циклически сдвигается влево на 11 битов и объединяется с левой частью блока операцией XOR.

Формирование ключей раунда осуществляется по простой схеме. 256-битный ключ разбивается на восемь 32-битных машинных слов. Они нумеруются с К0 по К7. 32 ключа раунда получаются применением этих машинных слов в следующем порядке:

К0, К1, К2,..,. К7, К0, К1, К2,...,К7, К0, К1, К2,…, К7, К7, К6, К5,..., К0,

то есть в последних 8 раундах ключи подаются в обратном порядке.

Алгоритм ГОСТ является симметричным, и для дешифрации достаточно подать на вход алгоритма блоки зашифрованных сообщений и ключи раундов в порядке, обратном их следованию при шифрации.

Особенностью алгоритма является отсутствие в стандарте каких-либо рекомендаций по выбору содержимого таблиц подстановок (S-блоков). Первоначально 8*16*4=512 бит таблиц подстановок являлись также частью ключевой информации. Впоследствии требование к секретности содержимого таблиц было упразднено, однако статическое, обеспечивающее высокую криптостойкость алгоритма, содержимое таблиц подстановки так и не было опубликовано. Набор S-блоков, рекомендуемый стандартом хеширования ГОСТ Р 34.11-94, использующего блочный шифр ГОСТ 28147-89 в качестве основной преобразующей операции, приведен в таблице 3 [4].

Таблица 3. S-блоки алгоритма ГОСТ 28147-89

S0 4 10 9 2 13 8 0 14 6 11 1 12 7 15 5 3
S1 14 11 4 12 6 13 15 10 2 3 8 1 0 7 5 9
S2 5 8 1 13 10 3 4 2 14 15 12 7 6 0 9 11
S3 7 13 10 1 0 8 9 15 14 4 6 12 11 2 5 3
S4 6 12 7 1 5 15 13 8 4 10 9 14 0 3 11 2
S5 4 11 10 0 7 2 1 13 3 6 8 5 9 12 15 14
S6 13 11 4 1 3 15 5 9 0 10 14 7 6 8 2 12
S7 1 15 13 0 5 7 10 4 9 2 3 14 6 11 8 12

Достоинствами алгоритма ГОСТ можно назвать простоту реализации, причем как программной, так и аппаратной, поскольку алгоритм не использует битовых перестановок, большой размер ключа делает малоперспективной силовую атаку на шифр, большое количество раундов затрудняют дифференциальный и линейный криптоанализ. Алгоритм оптимизирован под 32-разрядные процессоры. Единственной проблемой практического применения алгоритма является, как уже упоминалось, формирование таблиц подстановки.

Алгоритм Rijndael в 2000 году стал победителем открытого конкурса на криптостандарт блочного шифрования США, проводившегося под эгидой Национального Института Стандартизации и Техники (NIST). После победы в конкурсе этот алгоритм получил второе название AES (Advanced Encryption Standard). Данный блочный шифр развивает нетрадиционную для последнего времени структуру прямоугольных KALST-сетей. KALST представляет собой аббревиатуру английских терминов Key Addition (добавление ключа), Substitution (табличная подстановка), Linear Transposition (линейное перемешивание).

Rijndael представляет собой итеративный блочный шифр, имеющий переменную длину блоков и различные длины ключей. Длина ключа и длина блока могут быть независимо друг от друга 128, 192 или 256 бит.

Разнообразные преобразования работают с промежуточным результатом, называемым состоянием (State). Состояние можно представить в виде прямоугольного массива байтов. Этот массив имеет 4 строки, а число столбцов обозначено как Nb и равно длине блока, деленной на 32. Ключ шифрования также представлен в виде прямоугольного массива с четырьмя строками. Число столбцов обозначено как Nk и равно длине ключа, деленной на 32. Это показано на рисунке 1.