Шифровать сообщение по одной букве, используя для каждой буквы всегда одинаковое численное обозначение, не слишком надежно: каким бы ни было правило, шифр все равно остается шифром подстановки. Но если поделить сообщение на блоки длиной, скажем, букв по 10, а сегодня скорее по 100, и превратить каждый блок в число, то мы получим шифр подстановки по блокам. Если взять достаточно длинные блоки, то легко различимой закономерности в частоте их встречаемости не будет, так что расшифровать текст путем наблюдения за тем, какие числа встречаются чаще других, не удастся.
Кокс и Ривест – Шамир – Адлеман выводили свои правила из красивой теоремы, открытой Ферма в 1640 году, которая показывает, как ведут себя
для любого числа
Криптосистема RSA действует следующим образом:
• Найдите два больших простых числа
• Вычислите произведение
• Вычислите φ(
• Выберите число
• Вычислите
• Число
• Сохраните
• Пусть
• Конвертируйте
• Чтобы расшифровать
Здесь правило шифрования звучит как «возвести в
а правило расшифровки как «возвести в
Кое-какие математические фокусы, в которые я не буду вдаваться, дают возможность производить все эти действия быстро (на современных компьютерах) при условии, что вам известны
Иными словами, «возведение в степень
В настоящее время все вышеописанное может быть проделано за минуту или около того на обычном ноутбуке для, скажем, 100-значных простых чисел
Один из недостатков системы – то, что RSA, будучи полностью реализуемой и практичной, все же слишком медленна, чтобы рутинно использовать ее для шифрования полного текста каждого сообщения. Основное ее реальное применение – это безопасная передача секретного ключа для какой-то совершенно иной системы шифрования, гораздо более быстрой в использовании и надежной при условии, что ключ никому не известен. Так что RSA решает проблему раздачи ключей, которая мучила криптографию с начала времен. Одним из факторов, позволивших расшифровать код Enigma, было то, что определенные установки машины Enigma передавались операторам в начале каждого дня небезопасным способом. Еще одно распространенное применение системы RSA – проверка электронной подписи, то есть шифрованного сообщения, устанавливающего личность отправителя.
Начальник Кокса Ральф Бенджамин, научный руководитель, главный инженер и директор Центра правительственной связи, прекрасно знал свое дело и сразу обратил внимание на эту возможность. Он написал в рапорте: «Я считаю ее очень важной для военного применения. В быстро меняющейся военной ситуации можно встретить непредвиденные угрозы или возможности. Тот, кто может раздавать свой ключ быстро при помощи электронных средств связи, получает серьезное преимущество перед противником». Но компьютеры тех времен не могли выполнить эту задачу, и британское правительство упустило, как позже оказалось, громадные возможности.