a º b mod n.
В качестве примера алгоритмов симметричного шифрования можно привести первую систему с открытым ключом - метод экспоненциального ключевого обмена Диффи - Хеллмана. Метод предназначен для передачи секретного ключа симметричного шифрования. В обмене задействованы два участника А и Б. Сначала они выбирают большие простые числа n и g<n (эти числа секретными не являются). Затем участник A выбирает большое целое число х, вычисляет Х=gx mod n и передает Х участнику Б. Б в свою очередь выбирает большое целое число y, вычисляет Y=gy mod n и передает Y участнику А. Б вычисляет K´=Xy mod n, А вычисляет K´´=Yx mod n. Легко заметить, что K´=K´´=gxy mod n, и это значение оба участника могут использовать в качестве ключа симметричного шифрования. Злоумышленник может узнать такие параметры алгоритма, как n, g, X, Y, но вычислить по ним значения x или y - задача, требующая очень больших вычислительных мощностей и времени.
Примером действительно асимметричного алгоритма шифрования, основанного на проблеме дискретного логарифма, является алгоритм Эль-Гемаля. Последовательность действий при генерации ключей, шифровании и дешифрации представлена на рис. 1.
Так как axºgkx mod p, то имеем:
Самым первым, действительно асимметричным алгоритмом стал алгоритм RSA. В основу криптостойкости RSA положена задача факторизации (разложения на множители) больших (более 200 двоичных разрядов) целых чисел.
Процедуры генерации ключей, шифрования и дешифрования для этого алгоритма представлены на рис. 2.
На этапе генерации ключей формируется пара ключей: закрытый d и открытый e. Шифрование данных должно начинаться с его разбиения на блоки m размером k=[log2 (n)] бит каждое, чтобы блок m можно было рассматривать как целое число в диапазоне [0.. n-1]. Обратимость операции шифрования и дешифрования RSA требует доказательства. Из теоремы Эйлера известно, что для двух целых чисел n и x, таких, что (n,x)=1, выполняется:
где j(n) - функция Эйлера, значение которой равно количеству чисел меньших n и взаимно простых с ним. Для n=p×q из алгоритма RSA, где p и q - простые числа, можно записать j(n)=(p-1)(q-1).
Тогда (1) можно переписать в виде:
x(p-1)(q-1)º1 mod n (3)
Возведем обе части (3) в степень -y:
x(-y)(p-1)(q-1) º 1(-y) mod n º 1 mod n (4)
Умножим обе части (4) на x:
x(-y)(p-1)(q-1) +1 mod n = x (5)
Но при генерации ключей мы получили e и d такие, что ed º 1 mod (p-1)(q-1), а это означает, что в (5) можно заменить 1-y(p-1)(q-1) на ed:
xed mod n = x (6)
Тогда, если мы возведем шифротекста c=me mod n в степень d по модулю n, как мы это и делаем при дешифровании, то получим:
(cd ) mod n= (me mod n)d mod n = med mod n = m (7)
Очевидно, что основная задача криптоаналитика при взломе этого шифра - узнать закрытый ключ d. Для этого он должен выполнить те же действия, что и получатель при генерации ключа - решить в целых числах уравнение ed + y (p-1)(q-1) =1 относительно d и y. Однако, если получателю известны входящие в уравнение параметры p и q, то криптоаналитик знает только число n - произведение p и q. Следовательно, ему необходимо произвести факторизацию числа n, то есть разложить его на множители. Для решения задачи факторизации к настоящему времени разработано множество алгоритмов: квадратичного решета, обобщенного числового решета, метод эллиптических кривых. Но для чисел большой размерности это очень трудоемкая задача.
Литература:
1. Методы и средства защиты компьютерной информации (учебное пособие). Д. Н. Лясин, С. Г. Саньков. РПК «Политехник», 2005г.