Число, пришедшее с холода. Когда математика становится приключением - Рудольф Ташнер
Шрифт:
Интервал:
и приходит, следовательно, к результату 18416 ≡ 120. Теперь настала очередь степени 18432 = 18416 × 18416. Перемножение числа, равного остатку, соответствующему числу 18416, то есть 120 с самим этим числом дает в результате 120 × 120 = 14 400. Модуль 221 содержится в этом числе 65 раз. С помощью следующего расчета
14 400 — 65 × 221 = 14 400 — 14 365 = 35
Тоби находит, что 18432 ≡ 35.
Теперь Тоби уже почти у цели, ибо для того, чтобы вычислить 18435, ему надо вычислить произведение 18432 × 184² × 1841, ибо сумма 32 + 2 + 1 в точности равна 35, то есть величине секретной экспоненты. Тоби Эстерхази пользуется соответствующими остатками и получает 35 × 43 × 184, или 276 920. В этом числе модуль 221 содержится 1253 раза, и вычитание дает:
276 920 — 1253 × 221 = 276 920 — 276 913 = 7.
Таким образом, Тоби Эстерхази получает число, которое, собственно говоря, и прислал Джордж Смайли, так как 18435 ≡ 7.
Смайли хотел попить чаю по ту сторону железного занавеса с агентом 007.
Тоби тщательно пересчитывает результат еще раз, потом еще, ибо даже крошечная ошибка может оказаться смертельной. Однако почему этот метод подсчета с секретной экспонентой 35 работает таким волшебным способом, почему из присланного числа 184 в результате расшифровки получилось число 7, то есть стало ясно желание Смайли встретиться с агентом 007, Тоби Эстерхази не понимает. Он просто делает то, что ему поручено. Делает ради славы Англии, ради Билла Хейдона, своего непосредственного начальника, которому Тоби безусловно предан. И кроме того, ради своего честолюбия — ибо если у него сейчас все получится, то он войдет в лифт, нажмет заветную кнопку и вознесется на самый верхний этаж Цирка, где как небожитель обитает сам Билл Хейдон.
Теперь нам ясно, как работают кудесники-шифровальщики. Правда, открытым остается еще один вопрос.
Что, однако, можем мы теперь спросить, помешает русским агентам посчитать результат так же, как считал его Тоби? Ведь они же знают, не хуже Цирка, модуль 221 и экспоненту 11, а также отправленное Джорджем Смайли кодовое число 184. Что мешает им вычислить остаток от деления числа 18435 на 221?
Дело в том, что они не знают секретную экспоненту 35.
Но не могут ли они, зная модуль 221 и показатель степени 11, вычислить секретную экспоненту 35? Ведь каким-то образом это удалось сделать яйцеголовым из Цирка, которые затем заперли в сейф бумажку с этим заветным числом.
Надо сказать, что вообще-то это возможно. И нет никакой тайны в том, как именно получили число 35. Во всяком случае, ее нет, если знать, что 221 есть результат перемножения двух простых чисел 13 и 17: 13 × 17 = 221. Все остальное очень просто. Далее следуют такому «рецепту»: из обоих простых чисел вычитают по единице и получают соответственно числа 12 и 16, а затем перемножают их: 12 × 16 = 192. Это число 192 является «секретным модулем».
Затем составляют таблицу из увеличенных на единицу произведений последовательности натуральных чисел на секретный модуль 192, или, другими словами, следующие числа:
1 × 192 + 1 = 192 + 1 = 193,
2 × 192 + 1 = 384 + 1 = 385,
3 × 192 + 1 = 576 + 1 = 577,
4 × 192 + 1 = 768 + 1 = 769,
5 × 192 + 1 = 960 + 1 = 961
…
Какое-то из полученных чисел 193, 385, 577, 769, 961, … делится на показатель степени 11. В нашем примере уже второе из этих чисел кратно 11 — действительно, 385: 11 = 35. Так мы находим секретную экспоненту 35.
Однако если это так просто, то к чему все эти хлопоты? На самом деле все так просто, потому что в нашей вымышленной истории за модуль было принято небольшое число 221, которое можно без особых усилий представить в виде произведения двух простых чисел. Если бы Цирк предложил в качестве модуля большое число, то вся простота мгновенно бы улетучилась.
Здесь надо, конечно, признать, что вся история о Смайли и его требовании прислать агента 007 до предела упрощена, и вообще в реальности ничего подобного быть просто не могло. Хотя бы по той причине, что описанный мною способ шифрования был изобретен только в 1977 г. в Массачусетском технологическом институте. К этому времени Джордж Смайли уже давно был на долгожданном покое и, как писал Джон ле Карре, «поселился в Стипл-Астоне и жил так, как вышедший на пенсию старый чудак-отшельник, удивлявший обывателей своей милой привычкой бродить по улицам, вслух разговаривая с самим собой».
Тем не менее описанный здесь метод шифрования действительно существует, и был он предложен специалистами по информатике Рональдом Ривестом, Ади Шамиром и Леонардом Адлеманом и назван по первым буквам их фамилий «RSA-методом». Для шифрования берут два простых числа — в нашем примере 13 и 17 — и перемножают их между собой. Таким способом получают модуль. У нас он получился равным 13 × 17 = 221. Потом берут произвольное число — в нашем случае 11 — и называют его степенью. (Выбор степени не вполне произволен, но в данном случае это несущественная деталь.) После этого число, которое хотят сохранить в тайне, кодируют, возводя его в степень, а остаток от деления полученного числа на модуль сообщают партнеру. В нашей истории Смайли хотел сообщить число 7. Для этого он вычислил значение степени 711, разделил его на 221, а остаток от деления, то есть число 184, сообщил своему начальству. Дешифровка осуществляется так: из выбранных простых чисел вычитают по единице, а затем перемножают между собой. Мы назвали это произведение секретным модулем. В нашем случае он равен числу 12 × 16 = 192. Так как в нашей истории 2 × 192 + 1 = 35 × 11, секретная экспонента равна 35. Степень зашифрованного числа с показателем, равным секретной экспоненте, дает в результате, если проанализировать остаток от деления на модуль, исходное число, отправленное агентом. В нашем случае Тоби Эстерхази разделил 18435 на 221 и получил 7, то есть номер того агента, с которым хотел встретиться Смайли.
На деле для шифрования чисел по методу RSA, в отличие от нашей вымышленной истории, используют произведения простых чисел, неизмеримо больших, нежели 13 и 17. Используют огромные простые числа с тремястами или четырьмястами разрядами. Естественно, что произведения этих чисел дают в результате гигантские модули из семисот-восьмисот разрядов. Расчеты с такими числами можно выполнять только с помощью компьютеров, но умножение машины выполняют молниеносно. По методу RSA модуль вычисляют за считаные секунды.
Секретной службе абсолютно безразлично, знает ли противник (да хоть и весь мир) величину модуля, потому что вычислить два простых числа, произведение которых составляет число, состоящее из 700 разрядов, очень и очень непросто. До сих пор не существует алгоритмов, позволяющих сделать это быстро. Даже при использовании самых совершенных компьютеров, обладающих невероятным быстродействием, на решение этой задачи могут уйти месяцы. Однако для дешифровки знание этих простых чисел безусловно необходимо, ибо, только используя их, можно вычислить секретный модуль и секретную экспоненту. Без этого вычислить секретную экспоненту невозможно даже теоретически.
Поделиться книгой в соц сетях:
Обратите внимание, что комментарий должен быть не короче 20 символов. Покажите уважение к себе и другим пользователям!