EssayAI
Блог
Блог
Математика и алгоритмы

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

16 мая 2026Время чтения: 8 минут
#алгоритм Шора#квантовые вычисления#факторизация#поиск периода#квантовое преобразование Фурье
Алгоритм Шора: зачем он ломает RSA и как работает

Алгоритм Шора - это квантовый алгоритм факторизации, который раскладывает большое составное число NN на простые множители за время, полиномиальное от числа битов log⁡N\log N, тогда как лучшие известные классические методы (решето числового поля) работают субэкспоненциально. Предложенный Питером Шором в 1994 году, он стал главным примером экспоненциального квантового ускорения и прямой угрозой криптосистеме RSA, чья стойкость опирается именно на вычислительную сложность факторизации. Ключевая идея - не «искать делители» в лоб, а свести задачу к поиску периода функции и решить эту подзадачу квантовым преобразованием Фурье. Ниже разберём всю цепочку: классическую редукцию, квантовое ядро и то, почему RSA оказывается под ударом.

Сведение факторизации к поиску периода

Алгоритм Шора факторизации не атакует число напрямую. Он опирается на классический теоретико-числовой факт: чтобы разложить нечётное составное NN, достаточно научиться находить период функции возведения в степень по модулю. Выберем случайное aa из диапазона 1<a<N1 < a < N и проверим gcd⁡(a,N)\gcd(a, N) алгоритмом Евклида. Если он больше единицы - нам повезло, нетривиальный делитель уже найден без всякого кванта. Если же gcd⁡(a,N)=1\gcd(a, N) = 1, переходим к интересному случаю и рассматриваем функцию

f(x)=ax mod N.f(x) = a^x \bmod N.

Эта функция периодична: существует наименьшее r>0r > 0, для которого ar≡1(modN)a^r \equiv 1 \pmod N. Число rr называется порядком элемента aa по модулю NN, и именно его поиск - сердце алгоритма. Найдя период rr, мы возвращаемся к множителям почти бесплатно, и удобно сразу прогнать конкретные числа: какой период у выбранного aa, чётный ли он и какие делители из него получаются.

От периода к множителям

Пусть период rr найден. Чтобы извлечь делитель, нужны два условия: rr должно быть чётным и при этом ar/2≢−1(modN)a^{r/2} \not\equiv -1 \pmod N. Тогда из соотношения ar≡1a^r \equiv 1 следует

ar−1=(ar/2−1)(ar/2+1)≡0(modN),a^r - 1 = \left(a^{r/2} - 1\right)\left(a^{r/2} + 1\right) \equiv 0 \pmod N,

то есть NN делит произведение (ar/2−1)(ar/2+1)(a^{r/2}-1)(a^{r/2}+1), но не делит ни один из множителей по отдельности. Значит, gcd⁡(ar/2−1,N)\gcd(a^{r/2} - 1, N) и gcd⁡(ar/2+1,N)\gcd(a^{r/2} + 1, N) дают нетривиальные делители NN. Оба наибольших общих делителя считаются классическим алгоритмом Евклида мгновенно.

Если условие чётности или неравенства нарушено, выбранное aa «не сработало» - тогда берут другое случайное aa и повторяют. Можно показать, что для случайного aa оба условия выполняются с вероятностью не меньше 1/21/2 (для NN с хотя бы двумя различными нечётными простыми делителями), поэтому в среднем хватает нескольких попыток. Вся эта часть - чисто классическая; квант нужен ровно для одного: быстро найти период rr.

Почему классике период не по зубам

Возникает резонный вопрос: если поиск периода так помогает, почему его нельзя сделать на обычном компьютере? Проблема в том, что период rr может быть огромным - порядка самого NN, то есть экспоненциальным от длины записи числа. Перебирать степени a1,a2,a3,…a^1, a^2, a^3, \dots до возврата к единице - это до ∼N\sim N операций, что не лучше прямого перебора делителей. Никакого классического алгоритма, находящего порядок элемента быстрее чем за субэкспоненциальное время, не известно - задача поиска периода вычислительно эквивалентна факторизации.

Квантовый компьютер обходит это за счёт того, что вычисляет f(x)=ax mod Nf(x) = a^x \bmod N сразу на суперпозиции всех аргументов и затем извлекает спрятанную в этой суперпозиции периодичность одним глобальным преобразованием. Именно здесь и возникает экспоненциальное ускорение алгоритма Шора, которого лишён, например, алгоритм Гровера с его квадратичным выигрышем.

Квантовое ядро: суперпозиция и оценка фазы

Квантовая часть работает с двумя регистрами. Первый, «считающий», содержит tt кубитов (берут t≈2log⁡2Nt \approx 2\log_2 N, чтобы хватило разрешения); второй хранит значения функции. Сначала каскад адамаровых вентилей переводит первый регистр в равномерную суперпозицию всех аргументов:

∣ψ⟩=12t∑x=02t−1∣x⟩∣0⟩.|\psi\rangle = \frac{1}{\sqrt{2^t}} \sum_{x=0}^{2^t - 1} |x\rangle |0\rangle.

Затем обратимая схема модульного возведения в степень вычисляет f(x)f(x) во второй регистр, запутывая регистры:

∣ψ⟩=12t∑x∣x⟩ ∣ax mod N⟩.|\psi\rangle = \frac{1}{\sqrt{2^t}} \sum_{x} |x\rangle\, |a^x \bmod N\rangle.

Это и есть «квантовый параллелизм»: одно применение унитарной схемы посчитало функцию на всех 2t2^t входах одновременно. Но просто измерить регистр нельзя - мы получим одно случайное значение и потеряем периодичность. Чтобы её выявить, к первому регистру применяют квантовое преобразование Фурье.

Квантовое преобразование Фурье и считывание периода

Квантовое преобразование Фурье (QFT) - это унитарный аналог дискретного преобразования Фурье, действующий на амплитуды:

QFT ∣x⟩=12t∑k=02t−1e2πi xk/2t∣k⟩.\text{QFT}\,|x\rangle = \frac{1}{\sqrt{2^t}} \sum_{k=0}^{2^t-1} e^{2\pi i\, x k / 2^t} |k\rangle.

Его ключевое достоинство - глубина схемы всего O(t2)O(t^2) (а с приближением и того меньше), тогда как классическое БПФ требует O(t 2t)O(t\,2^t) операций. Применённый к регистру, хранящему периодическую по xx структуру, QFT концентрирует амплитуду вблизи значений kk, кратных 2t/r2^t / r. После измерения мы с высокой вероятностью получаем такое kk, что

k2t≈sr,s∈Z.\frac{k}{2^t} \approx \frac{s}{r}, \qquad s \in \mathbb{Z}.

Дробь s/rs/r извлекают из измеренного k/2tk/2^t методом непрерывных дробей - классическая постобработка, которая по приближённому значению восстанавливает несократимую дробь со знаменателем rr. Несколько прогонов (или одна удачная пара измерений) позволяют надёжно определить сам период rr. По сути вся квантовая магия - это оценка фазы (phase estimation) собственного значения оператора умножения на aa, и поиск периода - частный случай более общей задачи о скрытой подгруппе.

Число кубитов берут с запасом: $t \ge 2\log_2 N$ гарантирует, что ближайшая к $s/r$ дробь однозначно восстанавливается непрерывными дробями. При меньшем $t$ разрешение по фазе падает и период считывается с ошибкой.

Сложность и угроза для RSA

Полная стоимость алгоритма Шора факторизации определяется самой дорогой подсхемой - модульным возведением в степень, которое доминирует над QFT. Аккуратные оценки дают O((log⁡N)2(log⁡log⁡N)(log⁡log⁡log⁡N))O\big((\log N)^2 (\log\log N)(\log\log\log N)\big) элементарных операций или O~((log⁡N)2)\tilde O\big((\log N)^2\big) в упрощённой записи - полином от длины числа. Для сравнения, решето числового поля раскладывает NN за exp⁡ ⁣(O((log⁡N)1/3(log⁡log⁡N)2/3))\exp\!\big(O((\log N)^{1/3}(\log\log N)^{2/3})\big) - субэкспоненциально, и именно эта граница делает RSA-2048 неприступным для классических машин.

Стойкость RSA эквивалентна сложности факторизации модуля N=pqN = pq: зная разложение, легко вычислить функцию Эйлера и закрытый ключ. Полиномиальный квантовый алгоритм Шора эту защиту обнуляет - поэтому появление масштабируемого квантового компьютера сделает текущий RSA взламываемым. Тот же поиск периода/дискретного логарифма ломает и схемы на эллиптических кривых, и протокол обмена ключами Диффи - Хеллмана. Ответ индустрии - переход на постквантовую криптографию (решёточные схемы вроде Kyber), стойкость которых не сводится к факторизации или дискретному логарифму.

Где предел на практике

Несмотря на теоретическую мощь, физическая реализация остаётся скромной. Демонстрации факторизуют крошечные числа (классический показательный пример - 15=3×515 = 3 \times 5), а «рекорды» вроде разложения больших чисел нередко используют упрощённые схемы, заранее подогнанные под ответ, и не масштабируются. Главный барьер - число логических кубитов и глубина схемы: для RSA-2048 нужны тысячи логических кубитов, а с учётом квантовой коррекции ошибок - миллионы физических. Шумные NISQ-устройства такой когерентности пока не держат, поэтому реальный взлом RSA - вопрос инженерии отказоустойчивых кубитов, а не теории: алгоритм уже готов и доказанно корректен.

Частые ошибки

  • Думают, что алгоритм Шора «перебирает делители быстрее». Нет - он вообще не ищет делители напрямую, а решает задачу поиска периода функции ax mod Na^x \bmod N.
  • Считают, что весь алгоритм квантовый. Квантовая только подзадача поиска периода; редукция, НОД по Евклиду и непрерывные дроби - классические.
  • Путают ускорение Шора и Гровера. Шор даёт экспоненциальный выигрыш для факторизации, Гровер - лишь квадратичный для неструктурированного поиска.
  • Забывают про условия на период: если rr нечётно или ar/2≡−1(modN)a^{r/2} \equiv -1 \pmod N, попытка бесполезна и нужно новое случайное aa.
  • Полагают, что Шор уже ломает RSA сегодня. Алгоритм корректен, но требует тысяч логических кубитов - таких отказоустойчивых машин пока нет.

FAQ

Чем поиск периода помогает разложить число? Из чётного периода rr функции ax mod Na^x \bmod N следует ar−1=(ar/2−1)(ar/2+1)≡0(modN)a^r - 1 = (a^{r/2}-1)(a^{r/2}+1) \equiv 0 \pmod N. Тогда gcd⁡(ar/2±1,N)\gcd(a^{r/2} \pm 1, N) обычно дают нетривиальные делители - их считает классический алгоритм Евклида.

Почему именно квантовое преобразование Фурье? QFT за O(t2)O(t^2) вентилей переводит периодическую амплитудную структуру в пики на частотах, кратных 2t/r2^t/r. Это позволяет считать период одним измерением, тогда как классическое БПФ потребовало бы экспоненциального числа операций.

Угрожает ли алгоритм Шора всем шифрам? Симметричным (AES) - нет, их лишь ослабляет Гровер. А вот RSA, схемы на эллиптических кривых и Диффи - Хеллман уязвимы, так как сводятся к факторизации или дискретному логарифму. Защита - переход на постквантовые алгоритмы.

Коротко

Алгоритм Шора факторизации сводит разложение числа NN к поиску периода rr функции ax mod Na^x \bmod N: квантовый компьютер вычисляет её на суперпозиции всех аргументов, а квантовое преобразование Фурье выявляет период за O(t2)O(t^2) вентилей. Из чётного периода через gcd⁡(ar/2±1,N)\gcd(a^{r/2}\pm 1, N) извлекаются множители - это уже классика. Итоговая сложность полиномиальна от log⁡N\log N против субэкспоненциального классического решета, что делает алгоритм экспоненциально быстрым и прямой угрозой RSA. На практике взлом упирается не в теорию, а в отсутствие отказоустойчивых квантовых машин нужного масштаба.

Доверьте текст нейросети EssayAI

Открыть EssayAI

Бесплатно, на русском языке и без VPN

Читайте также

Схема Рабина: шифрование на квадратичных вычетах

Схема Рабина: шифрование на квадратичных вычетах

Схема Рабина: асимметричное шифрование с открытым ключом, стойкость которого равна сложности факторизации. Как шифровать, извлекать квадратные корни по модулю и снимать неоднозначность четырёх корней.

20 июня 20269 минут
Квантово-устойчивая криптография: схемы против Шора

Квантово-устойчивая криптография: схемы против Шора

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

16 апреля 20267 минут
Алгоритм Гровера: как квантовый поиск ускоряет перебор

Алгоритм Гровера: как квантовый поиск ускоряет перебор

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

21 мая 20267 минут
Фермион Майораны: частица, совпадающая со своей античастицей

Фермион Майораны: частица, совпадающая со своей античастицей

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

7 марта 20268 минут
Агрегатные функции SQL: COUNT, SUM, AVG и GROUP BY

Агрегатные функции SQL: COUNT, SUM, AVG и GROUP BY

Как работают агрегатные функции SQL: COUNT, SUM, AVG, MIN и MAX, группировка GROUP BY, порядок выполнения запроса, разница HAVING и WHERE и поведение NULL внутри агрегата.

24 сентября 20269 минут
Интегральный синус Si(x): ряд Тейлора и максимум

Интегральный синус Si(x): ряд Тейлора и максимум

Интегральный синус Si(x): почему интеграл sin t / t не берётся в элементарных функциях, разложение в ряд, предел π/2, максимум Si(π) и выброс Гиббса. С калькулятором.

24 сентября 202610 минут