Разработчики ГОСТа пытались достигнуть равновесия между криптостойкостью и эффективностью. Взяв за основу конструкцию Фейстеля, они разработали криптоалгоритм, который лучше, чем DES, подходит для программной реализации. Для повышения криптостойкости введен сверхдлинный ключ и удвоено количество циклов.
Главные различия между DESом и ГОСТом заключаются в следующем:
- в DES 56-битный ключ, а в ГОСТе — 256-битный. Если добавить секретные перестановки S-блоков, то полный объем секретной информации ГОСТа составит примерно 610 бит;
- в DES 16 циклов, а в ГОСТе - 32.
- DES использует сложную процедуру для генерации подключей из исходного ключа, в ГОСТе эта процедура очень проста;
- у S-блоков DES 6-битные входы и 4-битные выходы (таблицы 4х16=64), а у S-блоков ГОСТа 4-битные входы и выходы (таблицы 4х4=16). В обоих алгоритмах используется по восемь S-блоков, но размер S-блока ГОСТа равен четверти размера S-блока DES;
- в DES используются нерегулярные начальная и конечная перестановки, а в ГОСТе используется 11-битный циклический сдвиг влево.
|
|
Силовая атака на ГОСТ абсолютно бесперспективна. ГОСТ использует 256-битовый ключ, а если учитывать секретные S-блоки, то длина ключа будет еще больше.
Кроме того, ГОСТ, по-видимому, более устойчив к дифференциальному и линейному криптоанализу, чем DES. Хотя случайные S-блоки ГОСТа при некотором выборе не гарантируют высокой криптостойкости по сравнению с фиксированными S –блоками DES, их секретность увеличивает устойчивость ГОСТа к дифференциальному и линейному криптоанализу. К тому же эффективность этих криптоаналитических методов зависит от количества циклов преобразования — чем больше циклов, тем труднее криптоанализ. ГОСТ использует в два раза больше циклов, чем DES, что, возможно, приводит к несостоятельности дифференциального и линейного криптоанализа.
ГОСТ не использует существующую в DES перестановку с расширением. Удаление этой перестановки из DES ослабляет его из-за уменьшения лавинного эффекта; разумно предположить, что отсутствие такой операции в ГОСТе отрицательно сказывается на его криптостойкости. С точки зрения криптостойкости операция арифметического сложения, используемая в ГОСТе, не хуже, чем операция XO R в DES.
Основным различием представляется использование в ГОСТе циклического сдвига вместо перестановки. Перестановка DES увеличивает лавинный эффект, состоящий в распространении влияния одного бита открытого текста на много битов шифртекста. В ГОСТе изменение одного входного бита влияет на один S-блок одного цикла преобразования, который затем влияет на два S-блока следующего цикла, затем на три блока следующего цикла и т.д. Потребуется восемь циклов, прежде чем изменение одного входного бита повлияет на каждый бит результата; в DES для этого нужно только пять циклов. Однако ГОСТ состоит из 32 циклов, a DES из 16.
|
|
1.5. Алгоритм IDEA
Алгоритм шифрования IDEA (International Data Encryрtion Algorithm) разработан в 1989 г. в Швейцарии, в институте ETH Zurich. Алгоритм запатентован в Европе (Швейцария) и США. Держатель патента – фирма Ascom-Tech AG. Он используется, в частности, в известной программе рgр.
Блок-схема алгоритма IDEA изображена на рис. 4.8. Он представляет собой вариант 64-битного итеративного блочного шифра со 128-битным ключом и восемью циклами криптографического преобразования. IDEA не соответствует схеме Фейстеля, однако процедура дешифрования выполняется аналогично процедуре шифрования.
Структура криптоалгоритма допускает простую программную и аппаратную реализацию. Секретность преобразования, обеспечивающая эффекты рассеивания и перемешивания, достигается за счет трех различных типов арифметических операций: над 16-битными словами.
1. Сложение по модулю 2, на схеме обозначено Å;
2. Сложение по модулю 216, на схеме обозначено +, далее +;
3. Умножение по модулю (216-1), на схеме обозначено - Ä.
Таким образом, цикловое отображение f (x, k) построено с использованием «смешивания» операций над различными алгебраическими структурами, что усложняет криптоанализ алгоритма.
Все операции выполняются над 16-битовыми подблоками, то есть каждый 64-битовый блок разбивается на 4 подблока. Входные подблоки первого цикла обозначим через x 1, x 2, x 3, x 4, подблоки выходного отображения (шифртекста) обозначим через y 1, y 2, y 3, y 4, ключевые подблоки i -го цикла обозначим через k 1( i ), k 2( i ), k 3( i ), …, k 6( i ), i = 1,2,...,8, ключевые подблоки выходного отображения k 1(9), k 2(9), k 3(9), k 4(9).
Опишем первый цикл работы алгоритма (остальные циклы реализуются аналогично). В течение первого цикла шифрования реализуются следующие шаги вычислений (для простоты вместо обозначения ki (1),будем использовать ki, i =1,2, …,6).
Рисунок 4.8. Блок-схема алгоритма шифрования IDEA
Шаг 1. с1= x 1 Ä k 1. Шаг 2. с2= x 2 + k 2. Шаг 3. с3= x 3 + k 3.
Шаг 4. с4= x 4 Ä k 4. Шаг 5. с5=с1 Å с3. Шаг 6. с6=с2 Å с4.
Шаг 7. с7=с5 Ä k 5. Шаг 8. с8=с6 + с7. Шаг 9. с9=с8 Ä k 6.
Шаг 10. с10= с9+с7. Шаг 11. с11=с1 Å с9. Шаг 12. с12=с3Å с9.
Шаг 13. с13=с2Å с10. Шаг 14. с14=с4Å с10.
Входные подблоки следующего цикла есть с11, с13, с12, с14. После 8-го цикла реализуется выходное отображение:
Шаг 1. y1= x 1 (9)Ä k 1(9). Шаг 2. y2= x 2(9) + k 2(9).
Шаг 3. y3= x 3(9) + k 3(9). Шаг 4. y4= x 4(9) Ä k 4(9).
Шифрованным текстом является блок(y 1, y 2, y 3, y 4).
Ключевое расписание реализуется с помощью вычисления 52 ключевых подблоков из 128-битового ключа K, на каждом цикле используется по 6 подблоков ключа и при реализации выходного отображения - 4 подблока ключа. Вначале 128-битовый ключ K представляется как 8 подблоков, которые в наших обозначениях равны
k 1(1), k 2(1), k 3(1), k 4(1), k 5(1), k 6(1), k 1(2), k 2(2),
где старшими битами подблоков являются левые биты. Далее 128-битовый ключ циклически сдвигается влево на 25 бит и снова разбивается на 8 подблоков:
k 3(2), k 4(2), k 5(2), k 6(2), k 1(3), k 2(3), k 3(3), k 4(3).
Затем 128-битовый ключ снова циклически сдвигается влево на 25 бит и снова разбивается на 8 подблоков и т. д., пока не сгенерируются все 52 подблока.
Подблоки ключа расшифрования (обозначим их через qi ( r )) определяются следующим образом: первые четыре
-при r = 2,3,..., 8: (q1 ( r ), q2 ( r ), q3 ( r ), q4 ( r ))=([ k 1(10- r ) ]-1, - k 2(10- r ), - k 3(10- r ), [ k 4(10- r ) ]-1),
-при r =1,9: (q1 ( r ), q2 ( r ), q3 ( r ), q4 ( r ))=([ k 1(10- r ) ]-1, - k 3(10- r ), - k 2(10- r ), [ k 4(10- r ) ]-1),
и два последних (q5 ( r ), q6 ( r ))=(k 5( r ), k 6( r )), r = 1,2,..., 8;
где z -1 есть обратный к z элемент относительно умножения по модулю 216+1 (обратным к 0 считаем 0); и - z есть обратный к z элемент относительно сложения по модулю 216.
|
|
Алгоритм IDEA может работать в любом режиме блочного шифра, предусмотренном для алгоритма DES. Эффективность программной реализации IDEA не уступает DES. Производительность алгоритма IDEA превышает в 1,5-4 раза (в зависимости от вычислителя) производительность DES-алгоритма.
Алгоритм IDEA безопасней алгоритма DES, поскольку, во первых, имеет ключ вдвое длиннее. Во вторых, внутренняя структура алгоритма IDEA обеспечивает лучшую, чем у DES устойчивость к криптоанализу.
Специфическая особенность IDEA – сравнительная простота анализа криптостойкости алгоритма по отношению к дифференциальному криптоанализу. Результаты успешного линейного криптоанализа также неизвестны. Методы анализа алгоритма IDEA, менее трудоемкие, чем полный перебор ключей, не известны. В ходе исследования криптостойкости IDEA было установлено, что существует подмножество из 251 «слабых» ключей, которые могут быть раскрыты путем анализа процедуры шифрования на конкретном ключе из данного подмножества. Результат, однако, не оказывает существенного влияния на практическую криптостойкость, так как мощность подмножества «слабых» ключей мала по сравнению с мощностью всего ключевого пространства (2128 различных ключей).