Смекни!
smekni.com

Теория остатков (стр. 7 из 10)

Если показатель степени

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

Такое число существует, поскольку

, и притом единственно. Здесь и далее символом
будет обозначаться наибольший общий делитель чисел
и
. Классическая теорема Эйлера, см. [3], утверждает, что для каждого числа
, взаимно простого с
, выполняется сравнение
и, следовательно,
(4)

Таким образом, в предположении

, единственное решение сравнения (2) может быть найдено в виде
(5)

Если дополнительно предположить, что число

состоит из различных простых сомножителей, то сравнение (5) будет выполняться и без предположения
. Действительно, обозначим
и
. Тогда
делится на
, а из (2) следует, что
. Подобно (4), теперь легко находим
. А кроме того, имеем
. Получившиеся сравнения в силу
дают нам (5).

Функция (1), принятая в системе RSA, может быть вычислена достаточно быстро. Как это сделать, мы обсудим чуть ниже. Пока отметим лишь, что обратная к

функция
вычисляется по тем же правилам, что и
, лишь с заменой показателя степени
на
. Таким образом, для функции (1) будут выполнены указанные выше свойства а) и б).

Для вычисления функции (1) достаточно знать лишь числа

и
. Именно они составляют открытый ключ для шифрования. А вот для вычисления обратной функции требуется знать число
, оно и является ``секретом'' , о котором речь идет в пункте в). Казалось бы, ничего не стоит, зная число
, разложить его на простые сомножители, вычислить затем с помощью известных правил значение
и, наконец, с помощью (3) определить нужное число
. Все шаги этого вычисления могут быть реализованы достаточно быстро, за исключением первого. Именно разложение числа
на простые множители и составляет наиболее трудоемкую часть вычислений. В теории чисел несмотря на многолетнюю ее историю и на очень интенсивные поиски в течение последних 20 лет, эффективный алгоритм разложения натуральных чисел на множители так и не найден. Конечно, можно, перебирая все простые числа до
, и, деля на них
, найти требуемое разложение. Но, учитывая, что количество простых в этом промежутке, асимптотически равно
, находим, что при
, записываемом 100 десятичными цифрами, найдется не менее
простых чисел, на которые придется делить
при разложении его на множители. Очень грубые прикидки показывают, что компьютеру, выполняющему миллион делений в секунду, для разложения числа
таким способом на простые сомножители потребуется не менее, чем
лет. Известны и более эффективные способы разложения целых чисел на множители, чем простой перебор простых делителей, но и они работают очень медленно. Таким образом, название статьи М. Гарднера вполне оправдано.

Авторы схемы RSA предложили выбирать число

в виде произведения двух простых множителей
и
, примерно одинаковых по величине. Так как
(6)

то единственное условие на выбор показателя степени

в отображении (1) есть
(7)

Итак, лицо, заинтересованное в организации шифрованной переписки с помощью схемы RSA, выбирает два достаточно больших простых числа

и
. Перемножая их, оно находит число
. Затем выбирается число
, удовлетворяющее условиям (7), вычисляется с помощью (6) число
и с помощью (3) - число
. Числа
и
публикуются, число
остается секретным. Теперь любой может отправлять зашифрованные с помощью (3) сообщения организатору этой системы, а организатор легко сможет дешифровывать их с помощью (5).

Для иллюстрации своего метода Ривест, Шамир и Адлеман зашифровали таким способом некоторую английскую фразу. Сначала она стандартным образом (a=01, b=02, ..., z=26, пробел=00) была записана в виде целого числа

, а затем зашифрована с помощью отображения (1) при