Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://phys.web.ru/db/msg.html?mid=1161235&uri=node30.html
Дата изменения: Unknown Дата индексирования: Sun Apr 10 14:52:14 2016 Кодировка: koi8-r |
![]() |
Геовикипедия wiki.web.ru | |
|
|
|
Для дешифрования сообщения ![]()
При некоторых условиях на ![]() ![]() ![]()
Для того, чтобы описать эти условия и объяснить, как можно найти
решение, нам потребуется одна теоретико-числовая функция, так называемая
функция Эйлера. Эта функция натурального аргумента
Если показатель степени
Такое число существует, поскольку ![]() ![]() ![]() ![]() ![]() ![]() ![]()
Таким образом, в предположении ![]()
Если дополнительно предположить, что число
Функция (1), принятая в системе RSA, может быть вычислена достаточно
быстро. Как это сделать, мы обсудим чуть ниже.
Пока отметим лишь, что обратная к
Для вычисления функции (1) достаточно знать лишь числа
Авторы схемы RSA предложили выбирать число
то единственное условие на выбор показателя степени ![]()
Итак, лицо, заинтересованное в организации шифрованной переписки с
помощью схемы RSA, выбирает два достаточно больших простых числа
Для иллюстрации своего метода Ривест, Шамир и Адлеман зашифровали таким
способом некоторую английскую фразу. Сначала она стандартным образом
(a=01, b=02, ..., z=26, пробел=00)
была записана в виде целого числа была обещана награда в 100$.
Эта история завершилась спустя 17 лет в 1994 г., см. [5],
когда D. Atkins,
M. Graff, A. K. Lenstra и P. C. Leyland сообщили о дешифровке фразы,
предложенной в [1]. Она1)
была вынесена в заголовок статьи [5], а
соответствующие числа Интересующиеся могут найти детали вычислений в работе [5]. Здесь же мы отметим, что этот замечательный результат (разложение на множители 129-значного десятичного числа) был достигнут благодаря использованию алгоритма разложения чисел на множители, называемого методом квадратичного решета. Выполнение вычислений потребовало колоссальных ресурсов. В работе, возглавлявшейся четырьмя авторами проекта, и продолжавшейся после предварительной теоретической подготовки примерно 220 дней, на добровольных началах участвовало около 600 человек и примерно 1600 компьютеров, объединенных сетью Internet. Наконец, отметим, что премия в 100$ была передана в Free Software Foundation.
Описанная выше схема RSA ставит ряд вопросов, которые мы и попробуем
обсудить ниже. Например, как проводить вычисления с большими числами, ведь
стандартное математическое обеспечение не позволяет перемножать числа
размером по 65 десятичных знаков? Как вычислять огромные степени больших
чисел? Что значит быстрый алгоритм вычисления и что такое сложная
вычислительная задача? Где взять большие простые числа? Как, например,
построить простое число в 65 десятичных знаков? Существуют ли другие способы
решения сравнения (2)? Ведь, если можно найти решение (2), не вычисляя
секретный показатель Начнем с конца. За 17 лет, прошедших между публикациями работ [1] и [5], никто так и не смог дешифровать предложенную авторами RSA фразу. Конечно, это всего лишь косвенное подтверждение стойкости системы RSA, но все же достаточно убедительное. Ниже мы обсудим теоретические проблемы, возникающие при решении полиномиальных сравнений. Мы не будем обсуждать, как выполнять арифметические действия с большими целыми числами, рекомендуем читателю обратиться к замечательной книжке Д. Кнута [6, гл. 4]. Заметим только, что большое число всегда можно разбить на меньшие блоки, с которыми компьютер может оперировать так же, как мы оперируем с цифрами, когда проводим вычисления вручную на бумаге. Конечно, для этого нужны специальные программы. Созданы и получили достаточно широкое распространение даже специальные языки программирования для вычислений с большими числами. Укажем здесь два из них - PARI и UBASIC. Эти языки свободно распространяются. Информацию о том, как их получить в пользование, можно найти в книге [17].
Next: 4.3. Сложность теоретико-числовых алгоритмов Up: 4. Алгоритмические проблемы теории Previous: 4.1. Введение Contents: Содержание |
![]() ![]() |