Алгоритм Шора: зачем он ломает RSA и как работает

Алгоритм Шора - это квантовый алгоритм факторизации, который раскладывает большое составное число на простые множители за время, полиномиальное от числа битов , тогда как лучшие известные классические методы (решето числового поля) работают субэкспоненциально. Предложенный Питером Шором в 1994 году, он стал главным примером экспоненциального квантового ускорения и прямой угрозой криптосистеме RSA, чья стойкость опирается именно на вычислительную сложность факторизации. Ключевая идея - не «искать делители» в лоб, а свести задачу к поиску периода функции и решить эту подзадачу квантовым преобразованием Фурье. Ниже разберём всю цепочку: классическую редукцию, квантовое ядро и то, почему RSA оказывается под ударом.
Сведение факторизации к поиску периода
Алгоритм Шора факторизации не атакует число напрямую. Он опирается на классический теоретико-числовой факт: чтобы разложить нечётное составное , достаточно научиться находить период функции возведения в степень по модулю. Выберем случайное из диапазона и проверим алгоритмом Евклида. Если он больше единицы - нам повезло, нетривиальный делитель уже найден без всякого кванта. Если же , переходим к интересному случаю и рассматриваем функцию
Эта функция периодична: существует наименьшее , для которого . Число называется порядком элемента по модулю , и именно его поиск - сердце алгоритма. Найдя период , мы возвращаемся к множителям почти бесплатно, и удобно сразу прогнать конкретные числа: какой период у выбранного , чётный ли он и какие делители из него получаются.
От периода к множителям
Пусть период найден. Чтобы извлечь делитель, нужны два условия: должно быть чётным и при этом . Тогда из соотношения следует
то есть делит произведение , но не делит ни один из множителей по отдельности. Значит, и дают нетривиальные делители . Оба наибольших общих делителя считаются классическим алгоритмом Евклида мгновенно.
Если условие чётности или неравенства нарушено, выбранное «не сработало» - тогда берут другое случайное и повторяют. Можно показать, что для случайного оба условия выполняются с вероятностью не меньше (для с хотя бы двумя различными нечётными простыми делителями), поэтому в среднем хватает нескольких попыток. Вся эта часть - чисто классическая; квант нужен ровно для одного: быстро найти период .
Почему классике период не по зубам
Возникает резонный вопрос: если поиск периода так помогает, почему его нельзя сделать на обычном компьютере? Проблема в том, что период может быть огромным - порядка самого , то есть экспоненциальным от длины записи числа. Перебирать степени до возврата к единице - это до операций, что не лучше прямого перебора делителей. Никакого классического алгоритма, находящего порядок элемента быстрее чем за субэкспоненциальное время, не известно - задача поиска периода вычислительно эквивалентна факторизации.
Квантовый компьютер обходит это за счёт того, что вычисляет сразу на суперпозиции всех аргументов и затем извлекает спрятанную в этой суперпозиции периодичность одним глобальным преобразованием. Именно здесь и возникает экспоненциальное ускорение алгоритма Шора, которого лишён, например, алгоритм Гровера с его квадратичным выигрышем.
Квантовое ядро: суперпозиция и оценка фазы
Квантовая часть работает с двумя регистрами. Первый, «считающий», содержит кубитов (берут , чтобы хватило разрешения); второй хранит значения функции. Сначала каскад адамаровых вентилей переводит первый регистр в равномерную суперпозицию всех аргументов:
Затем обратимая схема модульного возведения в степень вычисляет во второй регистр, запутывая регистры:
Это и есть «квантовый параллелизм»: одно применение унитарной схемы посчитало функцию на всех входах одновременно. Но просто измерить регистр нельзя - мы получим одно случайное значение и потеряем периодичность. Чтобы её выявить, к первому регистру применяют квантовое преобразование Фурье.
Квантовое преобразование Фурье и считывание периода
Квантовое преобразование Фурье (QFT) - это унитарный аналог дискретного преобразования Фурье, действующий на амплитуды:
Его ключевое достоинство - глубина схемы всего (а с приближением и того меньше), тогда как классическое БПФ требует операций. Применённый к регистру, хранящему периодическую по структуру, QFT концентрирует амплитуду вблизи значений , кратных . После измерения мы с высокой вероятностью получаем такое , что
Дробь извлекают из измеренного методом непрерывных дробей - классическая постобработка, которая по приближённому значению восстанавливает несократимую дробь со знаменателем . Несколько прогонов (или одна удачная пара измерений) позволяют надёжно определить сам период . По сути вся квантовая магия - это оценка фазы (phase estimation) собственного значения оператора умножения на , и поиск периода - частный случай более общей задачи о скрытой подгруппе.
Число кубитов берут с запасом: $t \ge 2\log_2 N$ гарантирует, что ближайшая к $s/r$ дробь однозначно восстанавливается непрерывными дробями. При меньшем $t$ разрешение по фазе падает и период считывается с ошибкой.
Сложность и угроза для RSA
Полная стоимость алгоритма Шора факторизации определяется самой дорогой подсхемой - модульным возведением в степень, которое доминирует над QFT. Аккуратные оценки дают элементарных операций или в упрощённой записи - полином от длины числа. Для сравнения, решето числового поля раскладывает за - субэкспоненциально, и именно эта граница делает RSA-2048 неприступным для классических машин.
Стойкость RSA эквивалентна сложности факторизации модуля : зная разложение, легко вычислить функцию Эйлера и закрытый ключ. Полиномиальный квантовый алгоритм Шора эту защиту обнуляет - поэтому появление масштабируемого квантового компьютера сделает текущий RSA взламываемым. Тот же поиск периода/дискретного логарифма ломает и схемы на эллиптических кривых, и протокол обмена ключами Диффи - Хеллмана. Ответ индустрии - переход на постквантовую криптографию (решёточные схемы вроде Kyber), стойкость которых не сводится к факторизации или дискретному логарифму.
Где предел на практике
Несмотря на теоретическую мощь, физическая реализация остаётся скромной. Демонстрации факторизуют крошечные числа (классический показательный пример - ), а «рекорды» вроде разложения больших чисел нередко используют упрощённые схемы, заранее подогнанные под ответ, и не масштабируются. Главный барьер - число логических кубитов и глубина схемы: для RSA-2048 нужны тысячи логических кубитов, а с учётом квантовой коррекции ошибок - миллионы физических. Шумные NISQ-устройства такой когерентности пока не держат, поэтому реальный взлом RSA - вопрос инженерии отказоустойчивых кубитов, а не теории: алгоритм уже готов и доказанно корректен.
Частые ошибки
- Думают, что алгоритм Шора «перебирает делители быстрее». Нет - он вообще не ищет делители напрямую, а решает задачу поиска периода функции .
- Считают, что весь алгоритм квантовый. Квантовая только подзадача поиска периода; редукция, НОД по Евклиду и непрерывные дроби - классические.
- Путают ускорение Шора и Гровера. Шор даёт экспоненциальный выигрыш для факторизации, Гровер - лишь квадратичный для неструктурированного поиска.
- Забывают про условия на период: если нечётно или , попытка бесполезна и нужно новое случайное .
- Полагают, что Шор уже ломает RSA сегодня. Алгоритм корректен, но требует тысяч логических кубитов - таких отказоустойчивых машин пока нет.
FAQ
Чем поиск периода помогает разложить число? Из чётного периода функции следует . Тогда обычно дают нетривиальные делители - их считает классический алгоритм Евклида.
Почему именно квантовое преобразование Фурье? QFT за вентилей переводит периодическую амплитудную структуру в пики на частотах, кратных . Это позволяет считать период одним измерением, тогда как классическое БПФ потребовало бы экспоненциального числа операций.
Угрожает ли алгоритм Шора всем шифрам? Симметричным (AES) - нет, их лишь ослабляет Гровер. А вот RSA, схемы на эллиптических кривых и Диффи - Хеллман уязвимы, так как сводятся к факторизации или дискретному логарифму. Защита - переход на постквантовые алгоритмы.
Коротко
Алгоритм Шора факторизации сводит разложение числа к поиску периода функции : квантовый компьютер вычисляет её на суперпозиции всех аргументов, а квантовое преобразование Фурье выявляет период за вентилей. Из чётного периода через извлекаются множители - это уже классика. Итоговая сложность полиномиальна от против субэкспоненциального классического решета, что делает алгоритм экспоненциально быстрым и прямой угрозой RSA. На практике взлом упирается не в теорию, а в отсутствие отказоустойчивых квантовых машин нужного масштаба.
Читайте также

Квантово-устойчивая криптография: схемы против Шора
Квантово-устойчивая криптография: постквантовые схемы на решётках, кодах и хэшах, стандарты NIST (ML-KEM, ML-DSA), почему RSA и ECC падают перед алгоритмом Шора и как готовить миграцию.

Алгоритм Гровера: как квантовый поиск ускоряет перебор
Разбираем алгоритм Гровера: как квантовый поиск находит нужный элемент за корень из N вместо полного перебора, что делают оракул и диффузор и сколько нужно итераций.

Фермион Майораны: частица, совпадающая со своей античастицей
Фермион Майораны: уравнение 1937 года, гипотеза о нейтрино и безнейтринный двойной бета-распад, эмерджентные моды в топологических сверхпроводниках и кубиты Microsoft.