Featured image of post Как работают квантовые компьютеры и алгоритм Шора: почему квантовые вычисления могут взломать криптографию?

Как работают квантовые компьютеры и алгоритм Шора: почему квантовые вычисления могут взломать криптографию?

Глубокое погружение от основ квантовых вычислений до математических и квантово-механических механизмов алгоритма Шора, который угрожает криптографии RSA. Подробно объясняется с примерами реализации на Qiskit и перспективами постквантовой криптографии.

Безопасность в современном интернет-обществе защищена системами криптографии с открытым ключом, такими как шифрование RSA. Эти криптографические методы основаны на математической трудности: «факторизация огромных чисел занимает астрономическое время на современных (классических) компьютерах».

Однако квантовые компьютеры обладают потенциалом в корне изменить эту предпосылку. В частности, алгоритм Шора (Shor’s Algorithm), открытый Питером Шором в 1994 году, математически доказал, что если квантовые компьютеры будут реализованы на практике, шифрование RSA можно будет взломать за разумное время.

В этой статье мы подробно, в объеме около 20 000 символов, рассмотрим базовые механизмы вычислений на квантовых компьютерах, почему алгоритм Шора может быстро выполнять факторизацию, стоящую за ним математику и примеры реализации с использованием программирования (Python/Qiskit).


1. Что такое квантовый компьютер? Отличия от классического компьютера

ПК и смартфоны, которыми мы пользуемся каждый день, называются классическими компьютерами. Классические компьютеры обрабатывают информацию как биты (bit), которые принимают значения «0» или «1».

С другой стороны, квантовые компьютеры используют квантовые биты (кубиты) в качестве наименьшей единицы информации. Используя странные свойства квантовой механики, они выполняют вычисления с совершенно иным подходом, нежели традиционные компьютеры. В основе этого лежат «Суперпозиция», «Квантовая запутанность» (Entanglement) и «Квантовая интерференция» (Interference).

1.1 Суперпозиция (Superposition)

В то время как классический бит может находиться только в одном из состояний, «0» или «1», квантовый бит может принимать оба состояния «0» и «1» одновременно. Это называется суперпозицией.

Математически квантовое состояние \(|\psi\rangle\) выражается как линейная комбинация базисных состояний \(|0\rangle\) и \(|1\rangle\) следующим образом:

\[ |\psi\rangle = \alpha|0\rangle + \beta|1\rangle \]

Здесь \(\alpha\) и \(\beta\) — комплексные числа, называемые амплитудами вероятности. Когда квантовый бит наблюдается (измеряется), его состояние коллапсирует (редукция волнового пакета) в \(|0\rangle\) или \(|1\rangle\), и вероятности получения каждого из них составляют \(|\alpha|^2\) и \(|\beta|^2\) соответственно. Поскольку сумма вероятностей должна равняться 1, выполняется следующее условие нормировки:

\[ |\alpha|^2 + |\beta|^2 = 1 \]

Благодаря этому свойству, \(n\) квантовых битов могут одновременно представлять суперпозицию из \(2^n\) состояний. Это является основой квантовых параллельных вычислений.

1.2 Квантовая запутанность (Entanglement)

Явление, при котором несколько квантовых битов сильно связаны друг с другом, и определение состояния одного мгновенно определяет состояние другого, независимо от пространственного расстояния между ними, называется квантовой запутанностью (энтанглментом).

Например, рассмотрим следующее состояние Белла (Bell state):

\[ |\Phi^+\rangle = \frac{1}{\sqrt{2}} (|00\rangle + |11\rangle) \]

В этом состоянии, если первый кубит измерен и получено «0», то второй кубит обязательно будет «0». И наоборот, если получено «1», то второй также будет «1». Используя эту сильную корреляцию, квантовые компьютеры могут эффективно выполнять сложные вычисления.

1.3 Квантовая интерференция (Interference)

Квантовые биты в состоянии суперпозиции обладают волновыми свойствами. Когда пики волн совпадают, они усиливаются (конструктивная интерференция), а когда пик совпадает с впадиной, они гасятся (деструктивная интерференция). В квантовых вычислениях алгоритмы проектируются так, чтобы умело управлять этой квантовой интерференцией, усиливая амплитуды вероятности, ведущие к правильному ответу, и подавляя амплитуды неправильных ответов. Алгоритм Шора также чрезвычайно изощренно использует эту интерференцию.


2. Квантовые вентили и квантовые цепи

То, что соответствует логическим вентилям (AND, OR, NOT и т.д.) в классических компьютерах, в квантовых компьютерах называется квантовыми вентилями. Квантовые вентили математически представляются как операции унитарных матриц над вектором квантового состояния.

2.1 Основные однокубитные вентили

Вентиль X (Вентиль Паули-X)

Соответствует классическому вентилю NOT. Он инвертирует \(|0\rangle\) в \(|1\rangle\), а \(|1\rangle\) в \(|0\rangle\).

\[ X = \begin{pmatrix} 0 & 1 \\\\ 1 & 0 \end{pmatrix} \]

Вентиль Z (Вентиль Паули-Z)

Инвертирует только фазу \(|1\rangle\) (умножает на \(-1\)). Инверсия фазы крайне важна для квантовой интерференции.

\[ Z = \begin{pmatrix} 1 & 0 \\\\ 0 & -1 \end{pmatrix} \]

Вентиль H (Вентиль Адамара)

Один из самых важных вентилей, создающий состояние суперпозиции из базисного состояния.

\[ H = \frac{1}{\sqrt{2}} \begin{pmatrix} 1 & 1 \\\\ 1 & -1 \end{pmatrix} \]

Получается \(H|0\rangle = \frac{1}{\sqrt{2}}(|0\rangle + |1\rangle)\), и при измерении вероятности получить 0 или 1 составляют по 50%.

2.2 Многокубитные вентили

Вентиль CNOT (Контролируемое НЕ)

Вентиль для двух кубитов, который применяет вентиль X (инверсию) к целевому кубиту только тогда, когда управляющий кубит равен «1». Незаменим для создания квантовой запутанности.

  graph LR
    q0["q0 (Управляющий)"] --- C(("●"))
    C --- q0_out["q0_out"]
    q1["q1 (Целевой)"] --- T(("⊕"))
    T --- q1_out["q1_out"]
    C -.- T

3. Основы криптографии и шифрование RSA

Чтобы понять влияние алгоритма Шора, необходимо знать, как работает шифрование RSA, которое в настоящее время является основным методом криптографии с открытым ключом.

3.1 Как работает шифрование RSA

Шифрование RSA использует сложность разложения на простые множители (факторизации). Берутся два огромных простых числа \(p\) и \(q\), и вычисляется их произведение \(N = p \times q\).

  1. Умножить \(p\) и \(q\), чтобы получить \(N\), легко.
  2. Однако найти исходные \(p\) и \(q\) из \(N\) (факторизовать) очень сложно.

Эта асимметрия является ключом к шифрованию. \(N\) широко публикуется как открытый ключ и используется для шифрования. С другой стороны, информация о \(p\) и \(q\) строго хранится как закрытый ключ и используется для расшифровки.

3.2 Насколько это сложно?

Даже при использовании современных суперкомпьютеров факторизация \(N\) длиной в несколько тысяч бит (например, RSA-2048) займет больше времени, чем возраст Вселенной. Даже при использовании наиболее эффективного классического алгоритма, «Общего метода решета числового поля» (GNFS), вычислительная сложность возрастает экспоненциально (точнее, субэкспоненциально).

\[ O\left( \exp \left( \left(\frac{64}{9}b\right)^{\frac{1}{3}} (\log b)^{\frac{2}{3}} \right) \right) \]

※ \(b\) — количество цифр (количество бит)

Здесь на сцену выходит алгоритм Шора. Алгоритм Шора кардинально сокращает эту вычислительную сложность до полиномиального времени \(O(b^3)\).


4. Обзор алгоритма Шора

Алгоритм Шора решает проблему факторизации путем её преобразования в другую математическую задачу — «Задачу нахождения периода (Period Finding Problem)».

Алгоритм в общих чертах делится на две части.

  1. Часть, выполняемая на классическом компьютере (сведение, предварительная и постобработка)
  2. Часть, выполняемая на квантовом компьютере (нахождение периода)

4.1 Классическая часть: Сведение факторизации к нахождению периода

Предположим, дано составное число \(N\), которое нужно факторизовать. (Например: \(N = 15\))

Шаг 1: Выберем случайное целое число \(a\), взаимно простое с \(N\) (наибольший общий делитель равен 1) (\(1 < a < N\)). Если наибольший общий делитель \(\gcd(a, N) > 1\), то множитель уже найден, и процесс завершается. (Легко находится с помощью алгоритма Евклида).

Шаг 2: Рассмотрим следующую функцию модульной арифметики \(f(x)\):

\[ f(x) = a^x \pmod N \]

Математически известно, что если подставлять \(x = 0, 1, 2, 3, \dots\) в эту функцию \(f(x)\), значения будут повторяться с определенным периодом \(r\) (Теорема Эйлера). То есть, существует минимальное положительное целое число \(r\) (период), при котором \(f(x) = f(x + r)\).

Например, для \(N = 15, a = 7\):

  • \(7^0 \pmod{15} = 1\)
  • \(7^1 \pmod{15} = 7\)
  • \(7^2 \pmod{15} = 4\)
  • \(7^3 \pmod{15} = 13\)
  • \(7^4 \pmod{15} = 1\) (Отсюда начинается цикл)

Мы видим, что период \(r = 4\).

Шаг 3: Если найденный период \(r\) является четным и \(a^{r/2} \not\equiv -1 \pmod N\), то множители можно найти следующим образом:

\[ \gcd(a^{r/2} \pm 1, N) \]

В предыдущем примере (\(N=15, a=7, r=4\)): \(a^{r/2} = 7^{4/2} = 7^2 = 49\) \(49 + 1 = 50\), \(\gcd(50, 15) = 5\) \(49 - 1 = 48\), \(\gcd(48, 15) = 3\)

Великолепно, мы нашли множители числа \(15\): \(5\) и \(3\)!

4.2 Проблема: Сложность классического нахождения периода \(r\)

Мы поняли, что если известен период \(r\), можно провести факторизацию. Однако, если \(N\) очень велико, последовательное вычисление \(f(x)\) на классическом компьютере для поиска периода \(r\) всё равно займет экспоненциальное время.

Поэтому только эта часть — «поиск периода \(r\)» — делегируется квантовому компьютеру. Используя квантовые параллельные вычисления, \(f(x)\) для всех \(x\) вычисляется одновременно, и из этого периода \(r\) извлекается мгновенно (за полиномиальное время).


5. Квантовая часть: Квантовое преобразование Фурье и извлечение периода

Квантовая вычислительная часть алгоритма Шора проходит по следующим шагам.

  sequenceDiagram
    participant Q_Reg1 as "Регистр 1 (x)"
    participant Q_Reg2 as "Регистр 2 (f("x"))"
    
    Note over Q_Reg1,Q_Reg2: "1. Инициализация: Все биты в |0>"
    Q_Reg1->>Q_Reg1: "2. Преобразование Адамара (H⊗n) <br/>Создание суперпозиции всех состояний"
    Q_Reg1->>Q_Reg2: "3. Квантовое модульное возведение в степень <br/> |x>|0> → |x>|a^x mod N>"
    Note over Q_Reg2: "4. (Концептуально) Наблюдение 2-го регистра<br/>Коллапс 1-го регистра в периодическую суперпозицию"
    Q_Reg1->>Q_Reg1: "5. Квантовое преобразование Фурье (QFT)<br/>Извлечение периода через интерференцию"
    Note over Q_Reg1: "6. Измерение<br/>Получение информации о периоде (фаза)"

5.1 Оценка функции с помощью квантовых параллельных вычислений

Сначала подготавливаются два регистра с достаточным количеством кубитов (регистр 1 и регистр 2), и все они инициализируются в \(|0\rangle\). К первому регистру применяется вентиль Адамара, создавая равномерную суперпозицию всех возможных значений \(x\) (от \(0\) до \(Q-1\)).

\[ \frac{1}{\sqrt{Q}} \sum_{x=0}^{Q-1} |x\rangle |0\rangle \]

Затем, используя квантовую цепь модульного возведения в степень, вычисляется \(f(x) = a^x \pmod N\), и результат записывается во второй регистр.

\[ \frac{1}{\sqrt{Q}} \sum_{x=0}^{Q-1} |x\rangle |a^x \bmod N\rangle \]

На этом этапе результаты \(f(x)\) для всех \(x\) вычислены одновременно как квантовая суперпозиция. Однако, если выполнить измерение прямо сейчас, мы получим только один случайный \(x\) и соответствующий ему \(f(x)\), а период \(r\) останется неизвестным.

5.2 Извлечение периодического состояния и квантовая интерференция

Чтобы выявить период \(r\), к первому регистру применяется чрезвычайно важная операция — Квантовое преобразование Фурье (Quantum Fourier Transform: QFT).

QFT — это квантовая версия классического дискретного преобразования Фурье (DFT). Оно преобразует периодичность данных в пики в частотной области. Для вектора состояния \(|\psi\rangle = \sum_{j} x_j |j\rangle\), QFT действует следующим образом:

\[ QFT(|j\rangle) = \frac{1}{\sqrt{Q}} \sum_{k=0}^{Q-1} e^{\frac{2\pi i j k}{Q}} |k\rangle \]

Состояние первого регистра связано с состоянием второго регистра (например, \(f(x_0)\)), поэтому оно представляет собой суперпозицию с дискретными значениями с определенным периодом. При применении QFT к этому состоянию происходит квантовая интерференция.

  • Состояния (амплитуды вероятности), связанные с правильным периодом \(r\), усиливаются
  • Для остальных состояний фазы разбросаны, и они гасят друг друга (компенсируются).

В результате при измерении с высокой вероятностью получается значение \(k\), для которого выполняется \(k \approx Q \cdot \frac{c}{r}\) (где \(c\) — целое число).

5.3 Классическая постобработка: Разложение в непрерывную дробь

Как только результат измерения \(k\) получен от квантового компьютера, снова наступает очередь классического компьютера. У нас есть соотношение \(k / Q \approx c / r\). \(c\) и \(r\) — взаимно простые целые числа.

Используя известную десятичную дробь \(k / Q\) и классический алгоритм, называемый разложением в цепную (непрерывную) дробь (Continued Fraction Expansion), мы преобразуем ее в приближенную дробь \(c / r\), наконец, определяя знаменатель как период \(r\).

После этого, следуя процедуре, описанной в разделе 4.1, вычисляется наибольший общий делитель, и мы блестяще получаем простые множители числа \(N\).


6. Пример реализации алгоритма Шора с использованием Qiskit

Здесь представлен пример реализации алгоритма Шора для факторизации очень маленького числа \(N = 15\), используя Qiskit, фреймворк квантового программирования с открытым исходным кодом от IBM.

(※ Практическая факторизация гигантских чисел требует огромного количества кубитов и исправления ошибок, поэтому на текущих симуляторах и мелкомасштабном квантовом оборудовании мы ограничены демонстрациями с числами вроде \(15\) или \(21\))

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
import numpy as np
from qiskit import QuantumCircuit, transpile
from qiskit.visualization import plot_histogram
from qiskit_aer import AerSimulator
import math
from math import gcd

# --- 1. Определение квантовой цепи модульного возведения в степень (a=7, N=15) ---
def c_amod15(a, power):
    """Цепь a^power mod 15, функционирующая как контролируемый вентиль U"""
    U = QuantumCircuit(4)        
    for _iteration in range(power):
        if a in [2,13]:
            U.swap(2,3)
            U.swap(1,2)
            U.swap(0,1)
        if a in [7,8]:
            U.swap(0,1)
            U.swap(1,2)
            U.swap(2,3)
        if a in [4, 11]:
            U.swap(1,3)
            U.swap(0,2)
        if a in [7,11,13]:
            for q in range(4):
                U.x(q)
    U = U.to_gate()
    U.name = f"{a}^{power} mod 15"
    c_U = U.control()
    return c_U

# --- 2. Определение обратного квантового преобразования Фурье (QFT_dagger) ---
def qft_dagger(n):
    """Цепь, выполняющая обратное квантовое преобразование Фурье для n кубитов"""
    qc = QuantumCircuit(n)
    for qubit in range(n//2):
        qc.swap(qubit, n-qubit-1)
    for j in range(n):
        for m in range(j):
            qc.cp(-np.pi/float(2**(j-m)), m, j)
        qc.h(j)
    qc.name = "QFT_dagger"
    return qc

# --- 3. Построение основной части алгоритма Шора ---
n_count = 8  # Количество кубитов измерительного регистра (Регистр 1)
a = 7        # Число, взаимно простое с N=15

# Регистр 1 (8qubit) + Регистр 2 (4qubit) + Классический регистр (8bit)
qc = QuantumCircuit(n_count + 4, n_count)

# Перевод 1-го регистра в состояние суперпозиции с помощью вентилей H
for q in range(n_count):
    qc.h(q)

# Установка начального состояния 2-го регистра в |1> (применение вентиля x к младшему биту)
qc.x(n_count)

# Применение контролируемых вентилей модульного возведения в степень
for q in range(n_count):
    qc.append(c_amod15(a, 2**q), 
             [q] + [i+n_count for i in range(4)])

# Применение обратного QFT к 1-му регистру
qc.append(qft_dagger(n_count).to_instruction(), range(n_count))

# Измерение 1-го регистра
qc.measure(range(n_count), range(n_count))

# --- 4. Запуск на симуляторе ---
simulator = AerSimulator()
compiled_circuit = transpile(qc, simulator)
job = simulator.run(compiled_circuit, shots=1024)
results = job.result()
counts = results.get_counts()

print("Результаты измерений (бинарный вид: количество наблюдений):")
print(counts)

# --- 5. Классическая постобработка (Определение периода r и вычисление простых множителей) ---
# Логика анализа наиболее вероятных результатов измерений (упрощенная версия)
measured_phases = []
for output in counts:
    decimal = int(output, 2)
    phase = decimal / (2**n_count)
    measured_phases.append(phase)

print(f"\nПредполагаемые фазы (phase): {measured_phases[:4]} ...")
# Далее следует процесс нахождения знаменателя r (периода) из фазы с помощью разложения в цепную дробь...

При выполнении вышеуказанного кода квантовый симулятор с высокой вероятностью выведет состояния, такие как 00000000, 01000000, 10000000, 11000000 (0, 64, 128, 192 в десятичной системе). Если разделить их на \(2^8 = 256\), то фазы составят \(0\), \(0.25\), \(0.5\), \(0.75\). Выраженные в виде дробей, они будут равны \(0/4\), \(1/4\), \(2/4\), \(3/4\), и мы видим, что знаменатель 4 был выведен квантовыми вычислениями как период \(r\). Как только известен период \(r=4\), из \(\gcd(7^{4/2} \pm 1, 15)\), как описано ранее, извлекаются простые множители \(3\) и \(5\).


7. Почему шифрование RSA находится под угрозой?

Вычислительная сложность факторизации на классическом компьютере возрастает экспоненциально с увеличением количества цифр. Например, факторизация числа из 100 цифр занимает несколько секунд, 200 цифр — несколько лет, а для RSA-2048 (около 617 цифр) оценивается в время, превышающее возраст Вселенной.

Однако при использовании алгоритма Шора количество необходимых шагов вычислений (количество вентилей) возрастает лишь в полиномиальном порядке \(O(b^3)\) от количества цифр \(b\). Это означает, что даже RSA-2048 можно будет взломать за время от нескольких часов до нескольких дней, если будет идеальный квантовый компьютер.

Угроза “Store Now, Decrypt Later”

Опасно думать, что “мы в безопасности, потому что высокопроизводительные квантовые компьютеры еще не созданы”. Существует реалистичный сценарий атаки, при котором злонамеренные третьи стороны или государственные органы прямо сейчас записывают и сохраняют зашифрованные конфиденциальные данные (финансовую информацию, государственные секреты и т.д.) (“Store Now”), чтобы расшифровать их через 10–20 лет (“Decrypt Later”), в тот момент, когда высокопроизводительные квантовые компьютеры будут завершены. Поэтому необходимо обновить методы криптографии, не дожидаясь появления квантовых компьютеров.


8. Барьеры на пути реализации квантовых компьютеров: Шум и исправление ошибок

Алгоритм Шора математически идеален, но на пути к его физической реализации стоят высокие барьеры. Текущее квантовое оборудование называется устройствами NISQ (Noisy Intermediate-Scale Quantum: шумные квантовые устройства промежуточного масштаба), и их слабость заключается в высокой уязвимости к шуму (возмущениям из внешней среды и ошибкам в операциях вентилей).

Квантовые состояния чрезвычайно чувствительны и могут подвергаться декогеренции (разрушению квантового состояния) из-за незначительного тепла или электромагнитных волн. Чтобы взломать RSA-2048, необходимо выполнить сотни миллионов операций с вентилями без ошибок на тысячах “логических кубитов”.

Для решения этой проблемы исследуется квантовое исправление ошибок (Quantum Error Correction). Это технология связывания нескольких “физических кубитов” для формирования одного “логического кубита” с целью обнаружения и исправления ошибок, возникающих во время вычислений. Однако считается, что для создания одного логического кубита требуется от 1000 до 10 000 физических кубитов, и ожидается, что для создания крупномасштабного отказоустойчивого квантового компьютера (FTQC: Fault-Tolerant Quantum Computer) класса десятков миллионов физических кубитов потребуется еще от 10 лет до нескольких десятилетий прорывов.


9. Криптографические технологии следующего поколения: Постквантовая криптография (PQC)

Чтобы противостоять угрозе алгоритма Шора, Национальный институт стандартов и технологий США (NIST) и другие организации по всему миру продвигают стандартизацию Постквантовой криптографии (Post-Quantum Cryptography: PQC), новых методов шифрования, которые невозможно взломать даже с помощью квантовых компьютеров.

PQC не использует квантовые технологии; она может быть выполнена на классических компьютерах, но основана на новых математических проблемах, которые невозможно эффективно решить с помощью квантовых алгоритмов (к которым алгоритм Шора неприменим).

Основные подходы к PQC:

  • Криптография на решетках (Lattice-based cryptography): Использует сложность таких проблем, как задача о кратчайшем векторе (SVP) в многомерных пространствах. (Например: Kyber, Dilithium)
  • Криптография на основе кодов (Code-based cryptography): Использует сложность проблемы декодирования кодов с исправлением ошибок.
  • Многомерная криптография (Multivariate cryptography): Использует сложность решения систем полиномиальных уравнений второй степени со многими переменными.
  • Сигнатуры на основе хешей (Hash-based signatures): Методы цифровой подписи, зависящие только от безопасности криптографических хеш-функций.

В настоящее время мировая ИТ-инфраструктура переживает исторический переходный период (миграцию) от существующей криптографии RSA и криптографии на эллиптических кривых к этим стандартам PQC.


10. Заключение

В этой статье мы подробно рассмотрели основы квантовых компьютеров, механизм факторизации с помощью алгоритма Шора и перспективы будущих криптографических технологий.

Квантовые компьютеры всё еще находятся в зачаточном состоянии, и потребуется много лет, прежде чем они смогут выполнять практическое вскрытие шифров. Однако их теоретическое обоснование, алгоритм Шора, можно назвать кристаллом человеческого знания, в котором блестяще слились информатика, физика и математика.

Прекрасный механизм, искусно управляющий квантовой интерференцией и выделяющий только “правильный ответ” из экспоненциального пространства поиска, будет служить важным ориентиром при проектировании квантовых алгоритмов, которые в будущем будут применяться в различных областях (разработка лекарств, расчеты материалов, задачи оптимизации и т.д.). Готовясь к грядущей квантовой эре, мы являемся свидетелями фундаментальных технологических изменений.

comments powered by Disqus