В нашем примере числа достаточно малы, чтобы хакер мог попытаться, пробуя различные изменения, найти ответ. Но на практике веб-сайты используют часовые калькуляторы, у которых в числе часовых делений более 100 цифр, поэтому метод перебора становится невозможным. Вы также можете задаться вопросом, каким же образом компания, ведущая продажи в интернете, извлекает номер кредитной карты покупателя, если настолько трудно решить эту задачу на 33-часовом калькуляторе?
Обобщение малой теоремы Ферма, найденное Эйлером, гарантирует существование магического декодирующего числа D. Боб может найти произведение D множителей, каждый из которых равен закодированному номеру кредитной карты, и восстановить исходный номер кредитной карты. Но вы можете определить число D, только если знаете секретные простые числа p и q. Знание этих простых чисел становится ключом к раскрытию кодов интернета, потому что вам требуется решить следующую задачу на секретном часовом калькуляторе:
Когда мы подставим наши числа, то придем к уравнению
Значит, вопрос состоит в нахождении числа, которое при умножении на 7 дает результат, который при делении на 20 дает остаток 1. D = 3 подойдет, потому что 7 × 3 = 21 = 1 (modulo 20).
И, если мы возведем закодированный номер кредитной карты в третью степень, вновь появится исходный номер:
Возможность восстановления номера кредитной карты из закодированного сообщения зависит от знания секретных простых чисел p и q. Поэтому любому, кто захочет взломать коды из интернета, необходимо найти способ разложить число N на простые множители. Каждый раз, когда вы покупаете книгу онлайн или скачиваете музыкальный трек, вы используете магию простых чисел для защиты вашей кредитной карты.
Вопрос на миллион долларов
Те, кто придумывает коды, всегда стараются опережать взломщиков. Математики постоянно придумывают все более изощренные способы отправки секретных сообщений на случай, если когда-либо будет взломан код, основанный на простых числах. Для защиты траекторий полета самолетов уже используется новый вид кодирования, называемый эллиптической криптографией (для краткости ЭК). Приз в миллион долларов данной главы связан с пониманием математики эллиптических кривых, лежащих в основе этих новых кодов.
Существует множество различных эллиптических кривых, но все они описываются уравнениями вида y² = x³ + ax + b. Каждая кривая соответствует различным значениям a и b: например, а = 0 и b = –2 задают y² = x³ – 2.
Это уравнение определяет кривую, которую я могу нарисовать на миллиметровке, как показано ниже, путем нахождения последовательности точек (x, y). Я ввожу значение х, рассчитываю выражение x³ – 2 и беру из него квадратный корень, чтобы найти соответствующее значение y. Так, если x = 3, мы получим x³ – 2 = 27 – 2 = 25. Чтобы получить y, мне нужно взять квадратный корень из 25, поскольку y² = x³ – 2. Итак, y равен 5 или –5 (потому что минус при умножении на минус дает плюс, всегда имеется два квадратных корня). Получившийся график симметричен относительно горизонтальной оси, потому что у каждого квадратного корня выше ее есть зеркальный отрицательный корень. Пока мы нашли две точки: (3, 5) и (3, –5).
Рис. 4.18. График эллиптической кривой
Эти точки на эллиптической кривой особенно приятны, потому что и х, и у являются целыми числами. Можете ли вы найти другие такие точки? Давайте попробуем подставить x = 2. Тогда x³ – 2 = 8–2 = 6, так что y = √6 или – √6. В первом примере у 25 был целочисленный квадратный корень, но квадратный корень из 6 не так хорош. Древние греки доказали, что не существует дроби (не говоря уже о целом числе), которая при возведении в квадрат дает 6. √6 записывается в виде десятичного числа, дробная часть которого уходит в бесконечность без появления повторяющейся последовательности:
Вопрос на миллион долларов связан с нахождением точек на этой кривой, где и x, и y являются целыми числами или дробями. В большинстве случаев такого не происходит, потому что, когда вы подставляете х, получающееся y не будет целым числом или даже дробью, потому что у большинства чисел нет красивого квадратного корня. Нам повезло найти красивые точки (3, 5) и (3, –5) на кривой, но будут ли другие такие точки?
Древние греки нашли красивое геометрическое построение, показывающее, как получить другие точки (x, y), где и х, и y являются дробями, если вы нашли одну такую точку. Проведите прямую линию, которая слегка касается кривой в первой найденной точке – линия не должна пересекать кривую в этой точке, а проходить под правильным углом, чтобы лишь чуть скользнуть по ней, как показано на графике ниже. Мы называем такую прямую линию касательной к кривой в данной точке. Продолжая прямую, мы найдем ее пересечение с кривой в новой точке. Удивительное открытие состоит в том, что обе координаты новой точки будут дробями.
Рис. 4.19. Как найти другие точки на эллиптической кривой, координаты которых будут дробями
Например, если мы проведем касательную к эллиптической кривой y² = x³ – 2 в точке (x, y) = (3, 5), то найдем, что она пересекает кривую в новой точке (x, y) = (129/100, 383/1000), где обе координаты являются дробями. Мы можем провести касательную и в новой точке, в результате получится еще одна точка, где х и y будут дробями:
Без этого геометрического построения было бы нелегко обнаружить, что подстановка дроби
приведет к у, который также будет дробью.
В данном случае мы можем повторять проведение касательных и получить на эллиптической кривой бесконечно много точек с координатами (x, y), задаваемыми дробями. Если вы нашли такую точку (x1, y1) на эллиптической кривой общего вида y² = x³ – ax + b, то подстановка
и
даст вам другую точку на кривой, где x2 и y2 также будут дробями.
Эта процедура генерирует для нашей кривой y² = x³ – 2 бесконечно много точек с координатами, являющимися дробями. Но есть такие эллиптические кривые, для которых невозможно получить бесконечно много точек с этим свойством. Рассмотрите, например, кривую, задаваемую уравнением
Оказывается, что на этой кривой имеется лишь конечное число точек, у которых x и y являются целыми числами или дробями:
Фактически у всех этих точек целочисленные координаты. Применение геометрического построения или алгебраической подстановки для получения других точек с дробными координатами лишь снова выдаст одну из этих шести точек.
Вопрос на миллион долларов, называемый гипотезой Бёрча – Свиннертон-Дайера, состоит в том, возможно ли сказать, на какой эллиптической кривой будет бесконечно много точек, обе координаты которых являются целыми числами либо дробями.
Вы могли бы заявить: какое нам дело? Что же, это касается нас всех, потому что математика эллиптических кривых сейчас используется в мобильных телефонах и смарт-картах для защиты наших секретов, а также в системах управления воздушным движением для обеспечения нашей безопасности. С помощью этого нового вида кодирования номер вашей кредитной карты либо сообщение конвертируется умной математикой в точки на эллиптической кривой. Чтобы зашифровать сообщение, математика перемещает точки, используя геометрические построения вроде того, которое мы описали ранее, когда обсуждали генерацию новых точек.
Обращение этой геометрической процедуры требует математических действий, которые пока неподвластны нам. Но, если вы решите задачу на миллион долларов данной главы, у вас окажется подспорье для взлома этих кодов. Если вы взломаете их, вам, вероятно, не нужно будет беспокоиться о миллионе долларов, потому что вы станете самым могущественным хакером на планете.
Решения
Декодированный шифр подстановки
A mathematician, like a painter or a poet, is a maker of patterns.
If his patterns are more permanent than theirs, it is because they are made with ideas. The mathematician’s patterns, like the painter’s or the poet’s, must be beautiful; the ideas like the colours or the words, must fit together in a harmonious way. Beauty is the first test: there is no permanent place in the world for ugly mathematics[16].
Шифр таков:
Таблица 4.14
Легкое задание
Выпал орел. 13 068 221 = 3613 × 3617. И 3613, и 3617 – простые числа, которые дают остаток 1 при делении на 4. Существует возможность быстро разложить исходное число на множители, используя прием, найденный Ферма. Если вы возведете 3615 в квадрат, то получите 13 068 225, что на 4 больше, чем 13 068 221. 4 также является квадратом целого числа. Используйте немного алгебры, сообщающей вам, что a² – b² = (a + b) × (