Жуан Гомес - Мир математики. т.2. Математики, шпионы и хакеры. Кодирование и криптография
Хотя это кажется невозможным, но числа Сj и Ср являются одинаковыми. И теперь у нас есть ключ. Заметим, что Джеймс и Питер обменивались информацией только тогда, когда они выбрали функцию f(x) = ах (mod р) и послали друг другу числа Nj2 и Np2. Ни то, ни другое не является ключом, поэтому перехват этой информации не будет угрожать безопасности системы шифрования. Ключ этой системы имеет следующий вид:
aNj1∙Np1 (mod p).
Важно также учесть, что данная функция имеет одну особенность: она необратима, то есть зная саму функцию и результат ее применения к переменной х, невозможно (или, по крайней мере, очень сложно) найти исходное значение х.
Далее, чтобы пояснить идею, мы повторим процесс с конкретными значениями.
Возьмем следующую функцию:
f(x) = 7х (mod 11).
1. Джеймс выбирает число, NJ1 например, 3, и подставляет в функцию f(3) = 73 2 (mod 11).
2. Питер выбирает число, Np1 например, 6, и подставляет в функцию f(6) = 76 4 (mod 11).
3. Джеймс посылает Питеру свой результат, 2, а Питер Джеймсу — свой, 4.
4. Джеймс считает 43 9 (mod 11).
5. Питер считает 26 9 (mod 11).
Это число, 9, и будет ключом системы.
Джеймс и Питер обменялись функцией f(х) и числами 2 и 4. Будет ли эта информация полезна злоумышленнику? Допустим, злоумышленник знает и функцию, и числа. Тогда он должен найти Nj1 и Np1 по модулю 11, где Nj1 и Np1 — такие числа, которые и Джеймс, и Питер держат в секрете даже друг от друга. Если шпиону удастся узнать эти числа, он получит ключ, лишь вычислив aNj1∙Np1 по модулю р. Решение уравнения вида у = ах, кстати, в математике называется дискретным логарифмом.
Например, в случае:
f(х) = 3х (mod 17),
зная, что 3х = 15 (mod 17), и пробуя различные значения х, мы получим, что х = 6.
Алгоритмы этого типа и задачи с дискретным логарифмом не получали должного внимания вплоть до начала 1990 гг., и лишь в последнее время эти методы начали разрабатываться. В приведенном выше примере число 6 является дискретным логарифмом числа 15 с основанием 3 по модулю 17.
Особенностью этого типа уравнений, как мы уже говорили, является сложность обратного процесса — они асимметричны. Если р больше 300, а число а больше 100, решение — и, следовательно, взлом ключа — становится крайне сложной задачей.
* * *
ВИРУСЫ И БЭКДОРЫ
Даже самый безопасный шифр с открытым ключом зависит от закрытого ключа, который держится в секрете. Следовательно, если компьютерный вирус заражает компьютер, находит и передает этот закрытый ключ, вся система шифрования сводится на нет. В 1998 г. стало известно, что одна швейцарская компания, лидер в области производства и распространения криптографических продуктов, включала в свои продукты бэкдоры («черные ходы»), которые обнаруживали закрытые ключи пользователей и пересылали их компании. Часть этой информации передавалась правительству Соединенных Штатов, которое, таким образом, могло читать сообщения, посылаемые инфицированными компьютерами.
* * *
Этот алгоритм является основой современной криптографии. Диффи и Хеллман представили свою идею на Национальной компьютерной конференции, на семинаре, который можно назвать поворотным. В полном объеме их работу можно почитать на www.cs.berkeley.edu/~christos/classics/diffiehellman.pdf, статья с названием «Новые направления в криптографии».
Алгоритм Диффи — Хеллмана продемонстрировал возможность создания криптографического метода, который не требует обмена ключами, хотя, как ни парадоксально, использует открытую связь — передачу пары первых чисел, которые служат для определения ключа.
Иными словами, это дало возможность иметь надежную систему шифрования между отправителем и получателем, которым нет необходимости встречаться и договариваться о секретном ключе. Однако некоторые проблемы все же существуют: если Джеймс хочет послать сообщение Питеру в то время, когда Питер, например, спит, ему придется подождать, когда его коллега проснется, чтобы завершить процесс генерации ключа.
Пытаясь найти новые, более эффективные алгоритмы, Диффи придумал систему, в которой ключ для шифрования отличается от ключа, используемого для расшифровки, и, следовательно, они никак не могут быть получены один из другого.
В этой теоретической системе отправитель имеет два ключа: для шифрования и для расшифровки. Из этих двух отправитель делает открытым только первый, чтобы любой человек, желающий отправить ему сообщение, мог зашифровать его. Получив это сообщение, отправитель расшифрует его, используя второй ключ, который, конечно, останется в тайне. Возможно ли использовать такие системы на практике?
Простые числа спешат на помощь: алгоритм шифрования RSA
В августе 1977 г. знаменитый американский писатель и популяризатор науки Мартин Гарднер озаглавил свою колонку по занимательной математике в журнале Scientific American так: «Новый вид шифра, на расшифровку которого потребуются миллионы лет». После объяснения принципа системы шифрования с открытым ключом он показал само зашифрованное сообщение и открытый ключ N, используемый в этом шифре:
Гарднер призвал читателей попробовать расшифровать сообщение, используя предоставленную информацию, и даже дал подсказку: для решения необходимо разложить число N на простые множители р и q. Более того, Гарднер назначил приз в размере $100 (приличная сумма на тот момент) тому, кто первым получит правильный ответ. Каждый, кто захочет побольше узнать о шифре, писал Гарднер, может обратиться к создателям шифра — Рону Ривесту, Ади Шамиру и Лену Адлеману из Лаборатории информации Массачусетского технологического института.
Правильный ответ был получен лишь через 17 лет. Он стал результатом сотрудничества более чем 600 человек. Ключами оказались р = 32769132993266 709549961988190834461413177642967992942539798288533 и q = 3490529510847650949147849619903898133417764638493387843990820577, а зашифрованная фраза звучала так: «Волшебные слова — это брезгливый ягнятник».
Алгоритм, представленный Гарднером, известен как RSA — буквенная аббревиатура от фамилий Rivest (Ривест), Shamir (Шамир) и Adleman (Адлеман). Это первое практическое применение придуманной Диффи системы шифрования с открытым ключом, которая повсеместно используется и по сей день. Надежность ее практически гарантирована, потому что процесс расшифровки является невероятно сложным, почти невозможным делом. Далее мы рассмотрим основы этой системы в упрощенной форме.
Подробнее об алгоритме RSA
Алгоритм RSA основан на некоторых свойствах простых чисел, о которых заинтересованный читатель может подробнее прочитать в Приложении. Мы ограничимся здесь изложением простых фактов, лежащих в основе алгоритма.
• Количество натуральных чисел, меньших n и взаимно простых с n, называется функцией Эйлера и обозначается как ф(n).
• Если n = p∙q, где р и q — простые числа, то ф(n) = (р — 1)(q — 1).
• Из малой теоремы Ферма мы знаем, что если а — целое число, большее нуля, и р — простое число, то ар-1 1 (mod р).
• Согласно теореме Эйлера, если НОД (n, а) = 1, то аф(n) 1 (mod n).
Как уже упоминалось, система шифрования называется «с открытым ключом», потому что ключ шифрования доступен любому отправителю, желающему передавать сообщения. Каждый получатель имеет свой открытый ключ. Сообщения всегда передаются в виде цифр, будь то ASCII-коды или какая-либо другая система.
Сначала Джеймс вычисляет значение n путем умножения двух простых чисел р и q (n = pq) и выбирает значение е так, чтобы НОД (ф(n), е) = 1. Напомним, что ф(n) = (р — 1)(q — 1). Данные, которые являются открытыми, — это значение n и значение е (ни при каких обстоятельствах нельзя выдавать значения р и q). Пара (n, е) является открытым ключом системы, а значения р и q называются RSА-числами. Затем Джеймс вычисляет единственное значение d по модулю ф(n), которое удовлетворяет условию d∙е = 1, то естьd является обратным элементом к числу е по модулю ф(n). Мы знаем, что обратный элемент существует, потому что НОД (ф(n), е) = 1. Это число d является закрытым ключом системы. Со своей стороны, Питер использует открытый ключ (n, е) для шифрования сообщения М с помощью функции М = me (mod n). Получив сообщение, Джеймс вычисляет Md = (me)d (mod n), а это выражение эквивалентно Md = (me)d = m (mod n), что свидетельствует о возможности расшифровать сообщение.