Сравнения нашли широкое применение в криптографии и шифровании. Один из наглядных примеров - алгоритмы ассиметричного шифрования. Основная идея асимметричного шифрования заключается в существовании сразу двух ключей для обмена информацией - открытого, известного любому желающему, и закрытого, который известен лишь получателю информации. Очевидно, что открытый и закрытый ключи генерируются одновременно и между ними существует определенная математическая связь. Основная задача проектировщика асимметричного алгоритма заключается в том, чтобы по известному открытому ключу было бы невозможно (очень трудоемко) получить секретный ключ шифрования. Для этого в основу асимметричных алгоритмов закладываются вычислительно трудные задачи факторизации, дискретного логарифмирования, проецирования точек на эллиптической кривой и т.д. Объединяет все эти задачи то, что они используют операцию получения остатка от целочисленного деления (сравнения). Говорят, что два целых числа a и b являются сравнимыми по модулю n, если (a mod n) = (b mod n). Это записывается в виде:
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.
Рис. 1. Схема шифрования алгоритма Эль-Гемаля
Так как ax ≡ gkx mod p, то имеем:
. (1)
Самым первым, действительно асимметричным алгоритмом стал алгоритм RSA. В основу криптостойкости RSA положена задача факторизации (разложения на множители) больших (более 200 двоичных разрядов) целых чисел.
Процедуры генерации ключей, шифрования и дешифрования для этого алгоритма представлены на рис. 2.
Рис. 2. Схема шифрования алгоритма RSA
На этапе генерации ключей формируется пара ключей: закрытый d и открытый e. Шифрование данных должно начинаться с его разбиения на блоки m размером k = [log2 (n)] бит каждое, чтобы блок m можно было рассматривать как целое число в диапазоне [0.. n - 1]. Обратимость операции шифрования и дешифрования RSA требует доказательства. Из теоремы Эйлера известно, что для двух целых чисел n и x, таких, что (n,x) = 1, выполняется:
xj(n) ≡ 1 mod n, (2)
где 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.