Повышение криптостойкости алгоритма DES.
Число возможных ключей шифрования в криптосистеме DES равно 256 = 1288 = 72 057 594 037 927 936. Если же при выборе ключа шифрования ограничиться лишь печатными символами (например, взятыми из пароля пользователя), то число возможных ключей уменьшится до 968 = 7 213 895 789 838 336.
Для повышения криптостойкости алгоритма DES, вызванной недостаточными на сегодняшний день длиной ключа шифрования и числом раундов, используются различные модификации этой криптосистемы. Среди них наиболее известны 3- DES и DESX.
В 3-DES к одному и тому же блоку открытого текста M функция шифрования применяется трижды с тремя разными ключами (k1, k2, k3), что обеспечивает увеличение длины ключа окончательного шифрования и числа раундов в три раза:
C = Ek3(Dk2(Ek1(M))).
Расшифрование выполняется следующим образом:
M = Dk1(Ek2(Dk3(C))).
На втором шаге тройного DES используется не функция шифрования, а функция расшифрования, поскольку при k1=k2=k3 результат шифрования по алгоритму 3-DES совпадает с шифрованием по алгоритму DES на ключе k1. Использование двойного DES более уязвимо для криптоанализа.
Недостатком алгоритма 3-DES является снижение производительности шифрования в три раза по сравнению с алгоритмом DES. Этого недостатка лишен алгоритм DESX:
C = k2 + Ek (k1 + M),
где k – ключ DES-шифрования длиной 56 бит; k1 и k2 – дополнительные ключи шифрования длиной 64 бита каждый; + - операция сложения по модулю 2.
Общая длина ключа шифрования, используемого в алгоритме DESX, составляет, таким образом, 184 бита. Расшифрование шифротекста по алгоритму DESX производится следующим образом:
M = Dk(C + k2) + k1.
Многие операционные системы семейства Unix включают в свой состав системную программу des, реализующую шифрование (расшифрование) по алгоритму DES информации со стандартного устройства ввода с передачей результата на стандартное устройство вывода.
В операционных системах Windows, как в открытых, начиная с версии Windows 95 OSR2, так и защищенных доступ к шифрованию по алгоритму DES и другим возможен с помощью функций криптографического интерфейса CryptoAPI.
Криптографическая система ГОСТ 28147-89
Используемая в Российской Федерации криптосистема определена в стандарте ГОСТ 28147-89 «Системы обработки информации. Защита криптографическая. Алгоритм криптографического преобразования данных» (в 1989 г. с этого алгоритма был снят гриф секретности, хотя он был разработан значительно раньше). Стандарт обязателен для организаций, предприятий и учреждений, применяющих криптографическую защиту данных, хранимых и передаваемых в сетях ЭВМ, в отдельных вычислительных комплексах и ЭВМ.
Этот алгоритм криптографического преобразования данных предназначен для аппаратной и программной реализации, удовлетворяет криптографическим требованиям и не накладывает ограничений на степень секретности защищаемой информации.
В алгоритме ГОСТ 28147-89 используется ключ шифрования k длиной 256 бит, который может рассматриваться как массив из восьми 32-битных элементов k0, k1, …, k7 (внутренних ключей). Дополнительным ключевым элементом алгоритма является таблица замен S, представляющая собой матрицу из восьми строк и шестнадцати столбцов, элементы которой – целые числа от 0 до 15. Каждая строка таблицы замен должна содержать 16 различных чисел. Таким образом, общий размер таблицы замен составляет 512 бит.
Таким образом, алгоритм шифрования данных представляет собой 64-битовый блочный алгоритм с 256-битовым ключом.
При описании алгоритма используются следующие обозначения: L и R - последовательности битов; LR - конкатенация последовательностей L и R, в которой биты последовательности R следуют за битами последовательности L; + - операция побитового сложения по модулю 2; [+]- операция сложения по модулю 232 двух 32-разрядных двоичных чисел; {+} - операция сложения двух 32-разрядных чисел по модулю 232 -1.
Два целых числа а, b, где 0 <= а, b<= 232-1,
а= (а32а31 ... a2a1), b = (b32, b31............... b2, b1),
представленные в двоичном виде, т.е.
а= а32231 + а31230 +...+ а221 + a1,
b = b32231 + b31 230+...+ b221 + b1,
суммируются по модулю 232 (операция [+]) по следующему правилу:
а [+] b = а + b, если а + b < 232,
a [+] b = a + b- 232 если а + b > 232.
Правила суммирования чисел по модулю 232- 1:
а {+} b = а + Ь, если а + b < 232- 1,
a {+} b = a + b-(232-1), если а + b >= 232-1.
Алгоритм предусматривает четыре режима работы:
· шифрование данных в режиме простой замены;
· шифрование данных в режиме гаммирования;
· шифрование данных в режиме гаммирования с обратной связью;
· выработка имитовставки.
Режим простой замены.
Для реализации алгоритма шифрования данных в режиме простой замены используется только часть блоков общей криптосистемы (рис. 23). Обозначения на схеме:
N1, N2 - 32-разрядные накопители;
CM1 - 32-разрядный сумматор по модулю 232 ([+]);
СМ2 - 32-разрядный сумматор по модулю 2 (+);
R - 32-разрядный регистр циклического сдвига;
КЗУ - ключевое запоминающее устройство на 256 бит, состоящее из восьми 32-разрядных накопителей Х0, X1, X2, ..., Х7;
S - блок подстановки, состоящий из восьми узлов замены (8-блоков замены) S1, S2, S3, ..., S7, S8.
Рис. 23. Схема реализации режима простой замены