<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Quantum Computing on kenji.blog</title><link>http://kenji.blog/ru/categories/quantum-computing/</link><description>Recent content in Quantum Computing on kenji.blog</description><generator>Hugo -- gohugo.io</generator><language>ru</language><copyright>kenjinote</copyright><lastBuildDate>Fri, 11 Sep 2026 20:00:00 +0900</lastBuildDate><atom:link href="http://kenji.blog/ru/categories/quantum-computing/index.xml" rel="self" type="application/rss+xml"/><item><title>Сверхкраткое введение в квантовое программирование с использованием Qiskit</title><link>http://kenji.blog/ru/p/qiskit-quantum-programming-intro/</link><pubDate>Fri, 11 Sep 2026 20:00:00 +0900</pubDate><guid>http://kenji.blog/ru/p/qiskit-quantum-programming-intro/</guid><description>&lt;img src="http://kenji.blog/p/qiskit-quantum-programming-intro/img/eyecatch.jpg" alt="Featured image of post Сверхкраткое введение в квантовое программирование с использованием Qiskit" />&lt;h2 id="1-введение">1. Введение
&lt;/h2>&lt;p>Современные компьютеры (классические компьютеры) кардинально изменили нашу жизнь, поддерживая все аспекты жизни общества благодаря своим высоким вычислительным возможностям. Однако известно, что для решения некоторых специфических задач (например, факторизации очень больших чисел, симуляции сложных молекулярных структур, задач оптимизации и т. д.) даже самым современным суперкомпьютерам потребуется время, превышающее возраст Вселенной.&lt;/p>
&lt;p>Эти «ограничения классических компьютеров» обладает потенциалом преодолеть &lt;strong>квантовый компьютер (Quantum Computer)&lt;/strong>. Считается, что за счет использования удивительных свойств квантовой механики (суперпозиции и квантовой запутанности) в качестве вычислительных ресурсов, можно радикально ускорить решение определенных задач.&lt;/p>
&lt;p>В этой статье мы сделаем первый шаг в мир квантового программирования, используя &lt;strong>Qiskit&lt;/strong>, фреймворк для квантовых вычислений с открытым исходным кодом от IBM. Это очень подробное вводное руководство, в котором тщательно объясняются основы физики и математики, а также охватывается весь процесс написания кода на Python и запуска квантовых схем на симуляторе.&lt;/p>
&lt;hr>
&lt;h2 id="2-физические-и-математические-основы-квантовых-вычислений">2. Физические и математические основы квантовых вычислений
&lt;/h2>&lt;p>Чтобы понять квантовое программирование, сначала необходимо понять базовые концепции квантовой механики. Здесь мы обсудим три важных столпа: кубиты, суперпозицию и квантовую запутанность.&lt;/p>
&lt;h3 id="21-классические-биты-и-квантовые-биты-qubit">2.1 Классические биты и квантовые биты (Qubit)
&lt;/h3>&lt;p>Единицей информации в классическом компьютере является &amp;ldquo;бит (Bit)&amp;rdquo;. Бит всегда находится в одном из двух состояний: &lt;code>0&lt;/code> или &lt;code>1&lt;/code>.&lt;/p>
&lt;p>С другой стороны, минимальная единица информации в квантовом компьютере называется &lt;strong>квантовым битом (Qubit: Quantum bit)&lt;/strong>. Кубит может находиться не только в состояниях &lt;code>0&lt;/code> и &lt;code>1&lt;/code>, но и &lt;strong>в обоих этих состояниях одновременно&lt;/strong>.&lt;/p>
&lt;p>Математически состояние кубита $|\psi\rangle$ выражается как линейная комбинация (суперпозиция) базисных состояний $|0\rangle$ и $|1\rangle$.&lt;/p>
$$
|\psi\rangle = \alpha|0\rangle + \beta|1\rangle
$$
&lt;p>Где $\alpha$ и $\beta$ - комплексные числа, представляющие амплитуды вероятности наблюдения состояний $|0\rangle$ и $|1\rangle$ соответственно. Согласно фундаментальному принципу квантовой механики, сумма вероятностей должна быть равна 1, поэтому выполняется следующее условие нормировки:&lt;/p>
$$
|\alpha|^2 + |\beta|^2 = 1
$$
&lt;p>Другими словами, когда мы &amp;ldquo;измеряем (наблюдаем)&amp;rdquo; этот кубит, вероятность получения $|0\rangle$ равна $|\alpha|^2$, а вероятность получения $|1\rangle$ равна $|\beta|^2$. Решающее отличие от классических битов состоит в том, что до измерения состояние определяется лишь вероятностно.&lt;/p>
&lt;div class="mermaid">graph LR
A["Классический бит (Classical Bit)"] --> B["Определенное состояние: 0 или 1"]
C["Квантовый бит (Qubit)"] --> D["Суперпозиция: и 0, и 1"]
D --> E["Состояние определяется вероятностно после измерения"]&lt;/div>
&lt;h3 id="22-суперпозиция-superposition">2.2 Суперпозиция (Superposition)
&lt;/h3>&lt;p>Как упоминалось ранее, состояние, в котором состояния $|0\rangle$ и $|1\rangle$ смешаны, называется &lt;strong>суперпозицией (Superposition)&lt;/strong>.&lt;/p>
&lt;p>Например, когда один кубит находится в полностью равномерной суперпозиции, $\alpha = \frac{1}{\sqrt{2}}$ и $\beta = \frac{1}{\sqrt{2}}$.&lt;/p>
$$
|\psi\rangle = \frac{1}{\sqrt{2}}|0\rangle + \frac{1}{\sqrt{2}}|1\rangle
$$
&lt;p>При измерении этого состояния, $|0\rangle$ и $|1\rangle$ наблюдаются с вероятностью 50% каждое.
Если у нас есть два кубита, мы можем создать суперпозицию 4 состояний: $|00\rangle, |01\rangle, |10\rangle, |11\rangle$. С $n$ кубитами можно одновременно представить $2^n$ состояний, что является одним из источников возможности параллельной обработки квантовых компьютеров.&lt;/p>
&lt;h3 id="23-квантовая-запутанность-entanglement">2.3 Квантовая запутанность (Entanglement)
&lt;/h3>&lt;p>Самое мощное и таинственное свойство в квантовых вычислениях — &lt;strong>квантовая запутанность (Entanglement)&lt;/strong>. Эйнштейн называл это явление &amp;ldquo;жутким дальнодействием&amp;rdquo;. Это свойство, при котором два или более кубитов настолько сильно связаны друг с другом, что как только состояние одного кубита определяется, состояние другого определяется мгновенно, независимо от того, насколько далеко физически они находятся друг от друга.&lt;/p>
&lt;p>Одно из самых известных квантово-запутанных состояний — &amp;ldquo;Состояние Белла (Bell State)&amp;rdquo;, состояние $\Phi^+$, выражается следующим образом:&lt;/p>
$$
|\Phi^+\rangle = \frac{|00\rangle + |11\rangle}{\sqrt{2}}
$$
&lt;p>В этом состоянии не существуют таких вариантов, как $|01\rangle$ или $|10\rangle$. Поэтому, если мы измерим первый кубит и он окажется $|0\rangle$, то даже не измеряя второй кубит, можно с уверенностью утверждать, что он будет $|0\rangle$. И наоборот, если первый кубит $|1\rangle$, то второй кубит обязательно будет $|1\rangle$.&lt;/p>
&lt;hr>
&lt;h2 id="3-квантовые-логические-вентили-quantum-logic-gates">3. Квантовые логические вентили (Quantum Logic Gates)
&lt;/h2>&lt;p>Точно так же, как классические компьютеры выполняют вычисления с помощью логических вентилей, таких как AND, OR, NOT, квантовые компьютеры используют &lt;strong>квантовые вентили&lt;/strong> для управления состояниями кубитов. Поскольку квантовые состояния являются векторами, квантовые вентили представляются как &amp;ldquo;унитарные матрицы&amp;rdquo;, действующие на эти векторы.&lt;/p>
&lt;h3 id="31-вентили-паули-pauli-x-y-z">3.1 Вентили Паули (Pauli-X, Y, Z)
&lt;/h3>&lt;p>Вентили Паули — это базовые операции над одним кубитом.&lt;/p>
&lt;p>&lt;strong>・Вентиль Pauli-X (Вентиль NOT)&lt;/strong>
Эквивалентен классическому вентилю NOT. Он инвертирует $|0\rangle$ в $|1\rangle$ и $|1\rangle$ в $|0\rangle$. (Поворот на 180 градусов вокруг оси X на сфере Блоха)&lt;/p>
$$
X = \begin{pmatrix} 0 &amp; 1 \\ 1 &amp; 0 \end{pmatrix}
$$
&lt;p>&lt;strong>・Вентиль Pauli-Y&lt;/strong>
Выполняет поворот на 180 градусов вокруг оси Y. Обладает эффектом инвертирования как фазы, так и бита.&lt;/p>
$$
Y = \begin{pmatrix} 0 &amp; -i \\ i &amp; 0 \end{pmatrix}
$$
&lt;p>&lt;strong>・Вентиль Pauli-Z (Вентиль инверсии фазы)&lt;/strong>
Оставляет состояние $|0\rangle$ без изменений и инвертирует фазу (умножает на $-1$) состояния $|1\rangle$. (Поворот на 180 градусов вокруг оси Z)&lt;/p>
$$
Z = \begin{pmatrix} 1 &amp; 0 \\ 0 &amp; -1 \end{pmatrix}
$$
&lt;h3 id="32-вентиль-адамара-hadamard-gate">3.2 Вентиль Адамара (Hadamard Gate)
&lt;/h3>&lt;p>Вентиль Адамара (H-вентиль) — это чрезвычайно важный вентиль, который преобразует определенные состояния ($|0\rangle$ или $|1\rangle$) в состояния суперпозиции.&lt;/p>
$$
H = \frac{1}{\sqrt{2}}
\begin{pmatrix}
1 &amp; 1 \\
1 &amp; -1
\end{pmatrix}
$$
&lt;p>При применении H-вентиля к $|0\rangle$, оно переходит в состояние $|+\rangle$, которое является равномерной суперпозицией.&lt;/p>
$$
H|0\rangle = \frac{1}{\sqrt{2}}|0\rangle + \frac{1}{\sqrt{2}}|1\rangle = |+\rangle
$$
&lt;h3 id="33-фазовые-вентили-phase-gates">3.3 Фазовые вентили (Phase Gates)
&lt;/h3>&lt;p>Фазовый вентиль является обобщением Z-вентиля; он вращает фазу состояния $|1\rangle$ на заданный угол $\theta$.&lt;/p>
$$
P(\theta) = \begin{pmatrix} 1 &amp; 0 \\ 0 &amp; e^{i\theta} \end{pmatrix}
$$
&lt;p>Типичными примерами являются S-вентиль ($\theta = \pi/2$) и T-вентиль ($\theta = \pi/4$).&lt;/p>
&lt;h3 id="34-вентиль-cnot-controlled-not-gate">3.4 Вентиль CNOT (Controlled-NOT Gate)
&lt;/h3>&lt;p>Вентиль CNOT (CX-вентиль) — это вентиль, выполняющий операцию между двумя кубитами, и он незаменим для создания квантовой запутанности. Он состоит из &amp;ldquo;Управляющего (Control) бита&amp;rdquo; и &amp;ldquo;Целевого (Target) бита&amp;rdquo;.&lt;/p>
&lt;p>X-вентиль (операция NOT) применяется к целевому биту только тогда, когда управляющий бит находится в состоянии $|1\rangle$, и ничего не делает, если управляющий бит находится в состоянии $|0\rangle$.&lt;/p>
$$
CNOT = \begin{pmatrix}
1 &amp; 0 &amp; 0 &amp; 0 \\
0 &amp; 1 &amp; 0 &amp; 0 \\
0 &amp; 0 &amp; 0 &amp; 1 \\
0 &amp; 0 &amp; 1 &amp; 0
\end{pmatrix}
$$
&lt;hr>
&lt;h2 id="4-основы-qiskit-и-настройка-среды">4. Основы Qiskit и настройка среды
&lt;/h2>&lt;p>С этого момента мы фактически будем писать квантовые программы, используя Python и Qiskit.&lt;/p>
&lt;h3 id="41-что-такое-qiskit">4.1 Что такое Qiskit?
&lt;/h3>&lt;p>&lt;strong>Qiskit&lt;/strong> — это набор для разработки программного обеспечения (SDK) с открытым исходным кодом для квантовых вычислений, разработанный IBM Quantum. Используя Python, вы можете интуитивно строить квантовые схемы и запускать их на локальных симуляторах или на реальных квантовых компьютерах IBM через облако.&lt;/p>
&lt;h3 id="42-способ-установки">4.2 Способ установки
&lt;/h3>&lt;p>Для использования Qiskit требуется среда Python. Установите Qiskit и связанные с ним пакеты (симуляторы и библиотеки для построения графиков) с помощью следующей команды:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">pip install qiskit qiskit-aer qiskit-ibm-runtime matplotlib pylatexenc
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="43-базовый-рабочий-процесс-программирования">4.3 Базовый рабочий процесс программирования
&lt;/h3>&lt;p>Квантовое программирование с использованием Qiskit в основном состоит из следующих шагов:&lt;/p>
&lt;div class="mermaid">graph TD
A["1. Построение схемы (Build)"] --> B["2. Компиляция/Транспиляция (Compile)"]
B --> C["3. Выполнение (Execute)"]
C --> D["4. Анализ результатов и визуализация (Analyze)"]&lt;/div>
&lt;ol>
&lt;li>&lt;strong>Построение схемы&lt;/strong>: Создайте объект &lt;code>QuantumCircuit&lt;/code> и добавляйте вентили.&lt;/li>
&lt;li>&lt;strong>Компиляция&lt;/strong>: Оптимизируйте схему под целевой бэкенд (реальное оборудование или симулятор).&lt;/li>
&lt;li>&lt;strong>Выполнение&lt;/strong>: Отправьте задание на бэкенд и получите результаты.&lt;/li>
&lt;li>&lt;strong>Анализ&lt;/strong>: Постройте графики, например, гистограмму результатов измерений.&lt;/li>
&lt;/ol>
&lt;hr>
&lt;h2 id="5-практика-построение-схемы-для-создания-состояния-белла-квантовая-запутанность">5. Практика: Построение схемы для создания состояния Белла (Квантовая запутанность)
&lt;/h2>&lt;p>Давайте фактически создадим «квантовую запутанность (состояние Белла)», о которой мы узнали в теории, с помощью Qiskit. Наше целевое состояние — $|\Phi^+\rangle = \frac{|00\rangle + |11\rangle}{\sqrt{2}}$.&lt;/p>
&lt;h3 id="51-проектирование-схемы">5.1 Проектирование схемы
&lt;/h3>&lt;p>Чтобы создать состояние Белла, мы выполним следующие шаги:&lt;/p>
&lt;ol>
&lt;li>Подготовить два кубита (оба инициализируются в состоянии $|0\rangle$).&lt;/li>
&lt;li>Применить вентиль Адамара (H) к первому кубиту, чтобы перевести его в состояние суперпозиции.&lt;/li>
&lt;li>Применить вентиль CNOT, используя первый кубит как &amp;ldquo;управляющий бит&amp;rdquo;, а второй как &amp;ldquo;целевой бит&amp;rdquo;.&lt;/li>
&lt;li>Выполнить измерение (Measure) для считывания результатов.&lt;/li>
&lt;/ol>
&lt;h3 id="52-реализация-кода-на-pythonqiskit">5.2 Реализация кода на Python/Qiskit
&lt;/h3>&lt;p>Давайте теперь посмотрим на реальный код.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;span class="lnt">25
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">numpy&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="nn">np&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">qiskit&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">QuantumCircuit&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">transpile&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">qiskit_aer&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">Aer&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">qiskit.visualization&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">plot_histogram&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">matplotlib.pyplot&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="nn">plt&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 1. Инициализация схемы&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Создание квантовой схемы с 2 квантовыми и 2 классическими битами&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">qc&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">QuantumCircuit&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">2&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 2. Применение H-вентиля&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Применяем вентиль Адамара к кубиту 0 (q0)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">qc&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">h&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 3. Применение CNOT-вентиля&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Применяем CNOT: q0 - управляющий бит, q1 - целевой бит&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">qc&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">cx&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 4. Измерение&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Измеряем кубиты 0 и 1, и записываем результаты в классические биты 0 и 1 соответственно&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">qc&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">measure&lt;/span>&lt;span class="p">([&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">],&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">])&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Отрисовка схемы (с использованием matplotlib)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># qc.draw(&amp;#39;mpl&amp;#39;)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">qc&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">draw&lt;/span>&lt;span class="p">())&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>При запуске этого кода на консоли отобразится следующая квантовая схема в виде ASCII-графики:&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="cl"> ┌───┐ ┌─┐
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">q_0: ┤ H ├──■──┤M├───
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> └───┘┌─┴─┐└╥┘┌─┐
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">q_1: ─────┤ X ├─╫─┤M├
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> └───┘ ║ └╥┘
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">c: 2/═══════════╩══╩═
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> 0 1
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;code>H&lt;/code> обозначает вентиль Адамара, комбинация &lt;code>■&lt;/code> и &lt;code>X&lt;/code> — вентиль CNOT, а &lt;code>M&lt;/code> — измерение.&lt;/p>
&lt;h3 id="53-выполнение-на-симуляторе-и-интерпретация-результатов">5.3 Выполнение на симуляторе и интерпретация результатов
&lt;/h3>&lt;p>Затем мы запустим эту схему на высокопроизводительном симуляторе IBM &lt;code>Aer&lt;/code> и проверим результаты.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Получение бэкенда симулятора Aer&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">simulator&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">Aer&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">get_backend&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;qasm_simulator&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Транспиляция (оптимизация) схемы для симулятора&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">compiled_circuit&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">transpile&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">qc&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">simulator&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Выполнение схемы (здесь мы делаем 1000 запусков (shots))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">job&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">simulator&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">run&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">compiled_circuit&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">shots&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">1000&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Получение результатов&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">result&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">job&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">result&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Получение частот наблюдения состояний (counts)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">counts&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">result&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">get_counts&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">compiled_circuit&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s2">Результаты измерений:&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">counts&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Построение гистограммы&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># plot_histogram(counts)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># plt.show()&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>&lt;strong>Интерпретация результатов&lt;/strong>&lt;/p>
&lt;p>Вывод в консоли должен выглядеть примерно так:
&lt;code>Результаты измерений: {'00': 495, '11': 505}&lt;/code>
(※Поскольку вероятности случайны, значения будут немного отличаться при каждом запуске)&lt;/p>
&lt;p>В идеальной симуляционной среде состояния &lt;code>00&lt;/code> и &lt;code>11&lt;/code> будут наблюдаться примерно в 50% случаев каждое, а &lt;code>01&lt;/code> или &lt;code>10&lt;/code> не будут наблюдаться вообще.
Это полностью соответствует нашему теоретическому предсказанию созданного состояния Белла $|\Phi^+\rangle = \frac{|00\rangle + |11\rangle}{\sqrt{2}}$. Точно смоделирована &amp;ldquo;квантовая запутанность&amp;rdquo;, при которой если первый кубит равен 0, то второй всегда 0, а если первый 1, то второй всегда 1.&lt;/p>
&lt;p>Отметим, что при запуске на реальном квантовом компьютере (IBM Quantum Hardware) состояния &lt;code>01&lt;/code> или &lt;code>10&lt;/code> могут наблюдаться в небольших количествах из-за влияния шума (квантовой декогеренции или ошибок вентилей). То, как уменьшить этот шум (квантовая коррекция ошибок), является одной из самых больших проблем в современной разработке квантовых компьютеров.&lt;/p>
&lt;hr>
&lt;h2 id="6-масштабирование-до-более-продвинутых-алгоритмов">6. Масштабирование до более продвинутых алгоритмов
&lt;/h2>&lt;p>Создание состояния Белла можно назвать квантовой версией «Hello World». Развивая эту концепцию дальше, мы можем создавать мощные алгоритмы, превосходящие классические компьютеры.&lt;/p>
&lt;h3 id="61-алгоритм-дойча-йожи-deutsch-jozsa-algorithm">6.1 Алгоритм Дойча-Йожи (Deutsch-Jozsa Algorithm)
&lt;/h3>&lt;p>Это задача по определению, является ли заданная функция $f(x)$ &amp;ldquo;константной функцией&amp;rdquo; (которая всегда выводит 0 или всегда 1 независимо от входа) или &amp;ldquo;сбалансированной функцией&amp;rdquo; (которая выводит 0 для половины возможных входов и 1 для другой половины).
Классическому компьютеру в худшем случае потребовалось бы $2^{n-1} + 1$ вычислений функции, но алгоритм Дойча-Йожи может решить эту задачу всего за &lt;strong>одно вычисление&lt;/strong>, используя квантовый параллелизм. Это демонстрирует базовый шаблон квантовых алгоритмов: ввод состояния суперпозиции и использование интерференции (Interference) для подавления ненужных состояний и усиления правильного ответа.&lt;/p>
&lt;h3 id="62-алгоритм-гровера-grovers-algorithm">6.2 Алгоритм Гровера (Grover&amp;rsquo;s Algorithm)
&lt;/h3>&lt;p>В задаче поиска конкретных данных в неструктурированной базе данных из $N$ элементов классическому алгоритму требуется в среднем $N/2$ вычислений, в то время как алгоритм Гровера может найти нужные данные за $\sqrt{N}$ вычислений.
Этот алгоритм использует черный ящик, называемый &amp;ldquo;оракулом (Oracle)&amp;rdquo;, для инвертирования фазы целевого решения, а затем применяет &amp;ldquo;усиление амплитуды (Amplitude Amplification)&amp;rdquo; для резкого повышения вероятности наблюдения искомого решения.&lt;/p>
&lt;div class="mermaid">graph TD
A["Инициализация (Суперпозиция всех состояний)"] --> B["Оракул (Инверсия фазы правильного ответа)"]
B --> C["Оператор диффузии (Усиление амплитуды путем инверсии вокруг среднего)"]
C --> D{"Достигнута ли достаточная вероятность?"}
D -- "Нет" --> B
D -- "Да" --> E["Измерение"]&lt;/div>
&lt;hr>
&lt;h2 id="7-заключение-и-дальнейшее-обучение">7. Заключение и дальнейшее обучение
&lt;/h2>&lt;p>В этой статье подробно объясняются темы от фундаментальных концепций квантовых вычислений, таких как суперпозиция и квантовая запутанность, до управления квантовыми логическими вентилями с помощью Qiskit, а также практическое построение состояния Белла, симуляция и интерпретация результатов.&lt;/p>
&lt;p>Поскольку Qiskit позволяет писать код на доступном языке Python, это мощный инструмент, который позволяет вам преодолеть математические и физические барьеры и сосредоточиться на построении алгоритмов. Квантовые компьютеры в настоящее время находятся в эпохе шумных квантовых устройств промежуточного масштаба (NISQ: Noisy Intermediate-Scale Quantum), но во всем мире стремительно ведутся прикладные исследования в многочисленных областях, таких как квантовое машинное обучение (Quantum Machine Learning), квантовая химия (Quantum Chemistry) и криптоанализ.&lt;/p>
&lt;p>Пожалуйста, воспользуйтесь этой возможностью, чтобы создать различные квантовые схемы с помощью Qiskit и запустить их на реальных квантовых процессорах IBM. Вы сможете своими руками испытать парадигму вычислений будущего.&lt;/p>
&lt;h3 id="справочные-материалы">Справочные материалы
&lt;/h3>&lt;ul>
&lt;li>&lt;a class="link" href="https://qiskit.org/documentation/" target="_blank" rel="noopener"
>Официальная документация Qiskit&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://qiskit.org/textbook/ja/preface.html" target="_blank" rel="noopener"
>Учебник Qiskit&lt;/a> - Официальный учебник, рекомендуемый для тех, кто хочет глубже изучить математические основы и алгоритмы&lt;/li>
&lt;li>IBM Quantum Learning&lt;/li>
&lt;/ul>
&lt;p>Добро пожаловать в квантовый мир!&lt;/p></description></item><item><title>Что такое квантовое превосходство? Последние тенденции Google и IBM</title><link>http://kenji.blog/ru/p/what-is-quantum-supremacy-google-ibm/</link><pubDate>Fri, 11 Sep 2026 18:00:00 +0900</pubDate><guid>http://kenji.blog/ru/p/what-is-quantum-supremacy-google-ibm/</guid><description>&lt;img src="http://kenji.blog/p/what-is-quantum-supremacy-google-ibm/img/eyecatch.jpg" alt="Featured image of post Что такое квантовое превосходство? Последние тенденции Google и IBM" />&lt;h2 id="1-введение-рассвет-квантовых-вычислений-и-квантовое-превосходство">1. Введение: Рассвет квантовых вычислений и «квантовое превосходство»
&lt;/h2>&lt;p>Квантовые вычисления таят в себе потенциал решения сложных проблем, которые классические компьютеры (ПК и суперкомпьютеры, которыми мы пользуемся каждый день) не могут решить за разумное время, применяя квантовую механику, фундаментальный принцип физики, к обработке информации. Эта область долгое время оставалась преимущественно теоретической, но в последние годы из-за быстрого развития аппаратного обеспечения конкуренция за практическое применение обострилась.&lt;/p>
&lt;p>Одним из ключевых слов, привлекших наибольшее внимание в этом контексте, является «квантовое превосходство» (Quantum Supremacy). Оно означает момент, когда квантовый компьютер демонстрирует вычислительную мощность, превосходящую возможности классического компьютера в выполнении определенной вычислительной задачи. В этой статье мы начнем со строгого определения квантового превосходства, подробно рассмотрим эксперимент с процессором Google «Sycamore», который, как было объявлено в 2019 году, впервые в мире достиг этой вехи, возражения IBM и их собственный подход, а также углубимся в технические и математические детали последней дорожной карты к «квантовому исправлению ошибок» (Quantum Error Correction: QEC) и «отказоустойчивым квантовым вычислениям» (Fault-Tolerant Quantum Computing: FTQC), которые являются главными препятствиями на пути к истинному практическому применению.&lt;/p>
&lt;hr>
&lt;h2 id="2-теоретические-основы-основы-квантовых-вычислений-и-классы-сложности">2. Теоретические основы: Основы квантовых вычислений и классы сложности
&lt;/h2>&lt;p>Чтобы понять квантовое превосходство, сначала необходимо понять математические основы квантовых вычислений и их место в теории вычислительной сложности.&lt;/p>
&lt;h3 id="квантовые-биты-и-суперпозиция">Квантовые биты и суперпозиция
&lt;/h3>&lt;p>Наименьшей единицей информации в классическом компьютере является бит (0 или 1), но в квантовом компьютере используются квантовые биты (кубиты, Qubit). Состояние одного кубита $|\psi\rangle$ выражается как комплексная линейная комбинация базисных состояний $|0\rangle$ и $|1\rangle$.&lt;/p>
$$
|\psi\rangle = \alpha|0\rangle + \beta|1\rangle
$$
&lt;p>Здесь $\alpha, \beta \in \mathbb{C}$ и удовлетворяют условию нормировки $|\alpha|^2 + |\beta|^2 = 1$. Это свойство называется «суперпозицией» (Superposition).&lt;/p>
&lt;h3 id="запутанность-entanglement-и-тензорное-произведение">Запутанность (Entanglement) и тензорное произведение
&lt;/h3>&lt;p>Когда присутствует несколько кубитов, состояние всей системы выражается тензорным произведением пространств состояний отдельных кубитов. Система из $n$ кубитов является вектором в $2^n$-мерном гильбертовом пространстве $\mathcal{H}^{\otimes n}$.&lt;/p>
$$
|\Psi\rangle = \sum_{x \in \{0, 1\}^n} c_x |x\rangle
$$
&lt;p>Здесь $\sum |c_x|^2 = 1$. Состояние, в котором кубиты не независимы, а состояние одного зависит от состояния другого, называется «квантовой запутанностью» (Quantum Entanglement). Это дает квантовым компьютерам потенциал для одновременной обработки экспоненциально огромного пространства состояний.&lt;/p>
&lt;h3 id="определение-квантового-превосходства-с-точки-зрения-теории-вычислительной-сложности">Определение квантового превосходства с точки зрения теории вычислительной сложности
&lt;/h3>&lt;p>В теории вычислительной сложности класс задач, которые эффективно (за полиномиальное время) могут быть решены классическим компьютером, называется &lt;strong>BPP&lt;/strong> (Bounded-error Probabilistic Polynomial time). С другой стороны, класс задач, которые эффективно решает квантовый компьютер, — это &lt;strong>BQP&lt;/strong> (Bounded-error Quantum Polynomial time).&lt;/p>
&lt;p>Демонстрация квантового превосходства означает «выполнение определенной задачи, которая принадлежит классу BQP, но не принадлежит BPP (или вероятность этого крайне высока), на реальном квантовом оборудовании, и превосходство над симуляцией на классическом суперкомпьютере по времени и ресурсам». Это можно назвать исторической попыткой физического опровержения расширенного тезиса Черча-Тьюринга («любая физически реализуемая вычислительная модель может быть смоделирована вероятностной машиной Тьюринга за полиномиальное время»).&lt;/p>
&lt;hr>
&lt;h2 id="3-2019-год-демонстрация-квантового-превосходства-от-google">3. 2019 год: Демонстрация квантового превосходства от Google
&lt;/h2>&lt;p>В октябре 2019 года команда Google Quantum AI объявила в научном журнале &lt;em>Nature&lt;/em>, что они достигли квантового превосходства, используя сверхпроводящий процессор «Sycamore» с 53 кубитами.&lt;/p>
&lt;h3 id="архитектура-процессора-sycamore">Архитектура процессора Sycamore
&lt;/h3>&lt;p>Процессор Sycamore состоит из 54 сверхпроводящих кубитов типа трансмон (Transmon), расположенных в виде двумерной решетки (в эксперименте использовалось 53, так как один был неисправен). Между соседними кубитами расположены перестраиваемые связи (Tunable Coupler), реализующие высокоскоростные и высокоточные двухкубитные вентили (гибрид вентиля iSWAP и управляемого Z-вентиля).&lt;/p>
&lt;div class="mermaid">graph TD
A["Ввод квантового алгоритма"] --> B["Процессор Sycamore (53 кубита)"]
B --> C["Применение случайных квантовых вентилей"]
C --> D["Измерение квантовых состояний (Битовые строки)"]
D --> E["Оценка перекрестной энтропии (XEB)"]
E --> F["Подтверждение квантового превосходства"]&lt;/div>
&lt;h3 id="сэмплинг-случайных-квантовых-цепей-random-circuit-sampling-rcs">Сэмплинг случайных квантовых цепей (Random Circuit Sampling: RCS)
&lt;/h3>&lt;p>Задача, выбранная Google, — «сэмплинг случайных квантовых цепей». Она заключается в применении случайно выбранных однокубитных и двухкубитных вентилей на протяжении нескольких циклов (глубина $m$), измерении конечного состояния и получении сэмплов из результирующего распределения вероятностей битовых строк.&lt;/p>
&lt;p>Вероятность получения битовой строки $x$ на выходе идеальной (без шума) случайной квантовой цепи представляет собой не равномерное распределение, а паттерн, похожий на интерференционную картину, называемый распределением Портера-Томаса (Porter-Thomas distribution). Чтобы получить выборку из этого распределения на классическом компьютере, необходимо смоделировать весь вектор состояния, и вычислительная сложность возрастает экспоненциально относительно количества кубитов $n$ и глубины цепи $m$.&lt;/p>
&lt;h3 id="оценка-точности-fidelity-линейная-перекрестная-энтропия-xeb">Оценка точности (Fidelity): Линейная перекрестная энтропия (XEB)
&lt;/h3>&lt;p>Чтобы доказать, что результаты эксперимента — это не просто шум, а результаты реально выполненных квантовых вычислений, Google использовала оценку линейной перекрестной энтропии (Linear Cross-Entropy Benchmarking: XEB). Идеальная вероятность цепи $P(x_i)$ для битовой строки $x_i$, полученной в эксперименте, рассчитывается на классическом компьютере, и точность $\mathcal{F}_{\text{XEB}}$ определяется по следующей формуле:&lt;/p>
$$
\mathcal{F}_{\text{XEB}} = 2^n \langle P(x_i) \rangle_{i} - 1
$$
&lt;p>Если $\mathcal{F}_{\text{XEB}}$ равно 0, это означает полный шум, если 1 — идеальный квантовый процессор без шума. Процессор Sycamore достиг $\mathcal{F}_{\text{XEB}} \approx 0.002$ (0,2%) для цепи глубиной 20. На первый взгляд это значение кажется низким, но это статистически значимая величина, превышающая ноль, и она стала удивительным достижением контроля над пространством состояний размером $2^{53} \approx 9 \times 10^{15}$.&lt;/p>
&lt;p>Общий уровень ошибок приближенно моделировался как произведение ошибок отдельных вентилей, ошибок измерения и т.д.&lt;/p>
$$
\mathcal{F} \approx (1 - e_1)^{N_1}(1 - e_2)^{N_2} \cdots \approx \prod_{g \in 1Q} (1 - e_g) \prod_{g \in 2Q} (1 - e_g) \prod_{q} (1 - e_{RO})
$$
&lt;p>(※ $e_g$ — ошибка вентиля, $e_{RO}$ — ошибка измерения)&lt;/p>
&lt;p>Google утверждала, что моделирование этой цепи на классическом суперкомпьютере (Summit) займет около 10 000 лет. Sycamore, напротив, завершил сэмплинг всего за 200 секунд.&lt;/p>
&lt;hr>
&lt;h2 id="4-возражения-ibm-от-превосходства-к-полезности-utility">4. Возражения IBM: От «превосходства» к «полезности» (Utility)
&lt;/h2>&lt;p>Объявление Google шокировало мир, но IBM, разработчик крупнейшего в мире суперкомпьютера «Summit» и лидер в разработке квантовых компьютеров, немедленно опубликовала статью, опровергающую это заявление.&lt;/p>
&lt;h3 id="улучшение-классической-симуляции-за-счет-свертки-тензорных-сетей">Улучшение классической симуляции за счет свертки тензорных сетей
&lt;/h3>&lt;p>Суть возражений IBM заключалась в том, что «алгоритмы и оптимизация ресурсов на стороне классического компьютера были недостаточны». Оценка Google в 10 000 лет основывалась на симуляторе вектора состояния, который напрямую вычисляет эволюцию во времени уравнения Шрёдингера, но IBM отметила, что время симуляции можно резко сократить, используя метод, называемый «тензорной сетью» (Tensor Network).&lt;/p>
&lt;p>В тензорных сетях операции вентилей в квантовой цепи представляются как вычисления с многомерными массивами (тензорами), и оптимизируется порядок «свертки» (Contraction) сети. Кроме того, они утверждали, что если полностью использовать огромное хранилище Summit объемом 250 ПБ (иерархическая структура дисков и памяти), можно выполнить более точную симуляцию всего за «два с половиной дня», сохраняя при этом весь вектор состояния.&lt;/p>
&lt;h3 id="квантовое-преимущество-quantum-advantage-и-квантовая-полезность-quantum-utility">Квантовое преимущество (Quantum Advantage) и Квантовая полезность (Quantum Utility)
&lt;/h3>&lt;p>Под влиянием этих дебатов тенденция во всей индустрии сместилась от простой зацикленности на «выполнении искусственных задач, невозможных для классических компьютеров (Supremacy)» к фазе «демонстрации существенного преимущества над классическими подходами в полезных задачах реального мира (Quantum Advantage)», а затем и к фазе, когда «квантовые компьютеры служат новым инструментом для научных открытий (Quantum Utility)».&lt;/p>
&lt;p>Сама компания IBM избегает слова «превосходство» и предлагает «Квантовый объем» (Quantum Volume) и «CLOPS (Circuit Layer Operations Per Second)» в качестве комплексных показателей производительности квантовых процессоров, продвигая разработки с акцентом на баланс масштаба и качества оборудования.&lt;/p>
&lt;div class="mermaid">timeline
title "Эволюция квантовых вех"
2019 : "Google Sycamore (53Q)" : "Объявление о квантовом превосходстве"
2019 : "Возражение IBM" : "Симуляция на суперкомпьютере Summit за 2,5 дня"
2021 : "IBM Eagle (127Q)" : "Преодоление барьера в 100 кубитов"
2022 : "IBM Osprey (433Q)" : "Увеличение масштаба процессора"
2023 : "Поверхностный код Google" : "Масштабирование исправления ошибок (от d=3 до d=5)"
2023 : "Квантовая полезность IBM" : "Сложное моделирование спиновой модели на 127Q"
2024 : "Будущее" : "Эра логических кубитов и смягчения ошибок"&lt;/div>
&lt;hr>
&lt;h2 id="5-следующий-рубеж-смягчение-ошибок-error-mitigation-и-квантовое-исправление-ошибок-qec">5. Следующий рубеж: Смягчение ошибок (Error Mitigation) и квантовое исправление ошибок (QEC)
&lt;/h2>&lt;p>Современные квантовые компьютеры называются «NISQ» (Noisy Intermediate-Scale Quantum) и подвержены влиянию шума (ошибок, вызванных взаимодействием с внешней средой и несовершенством управления), из-за чего результаты длительных вычислений тонут в шуме. Подходы к преодолению этой проблемы можно разделить на две основные категории: «смягчение ошибок» (Error Mitigation) и «квантовое исправление ошибок» (Quantum Error Correction).&lt;/p>
&lt;h3 id="смягчение-ошибок-error-mitigation">Смягчение ошибок (Error Mitigation)
&lt;/h3>&lt;p>Смягчение ошибок — это метод устранения влияния шума на ожидаемое значение результатов вычислений с помощью классической постобработки, без изменения квантового аппаратного обеспечения. В 2023 году IBM, объединив 127-кубитный процессор «Eagle» с методами смягчения ошибок, такими как «экстраполяция нулевого шума» (Zero-Noise Extrapolation: ZNE), достигла точности, превосходящей передовые методы аппроксимации тензорных сетей, в моделировании временной эволюции сложной модели Изинга, тем самым продемонстрировав «Квантовую полезность» (Quantum Utility).&lt;/p>
&lt;h3 id="квантовое-исправление-ошибок-qec-и-логические-кубиты">Квантовое исправление ошибок (QEC) и логические кубиты
&lt;/h3>&lt;p>Однако для выполнения алгоритмов произвольной сложности (например, алгоритма факторизации Шора или сложных квантово-химических расчетов) одного лишь смягчения ошибок недостаточно. Совершенно необходимо «квантовое исправление ошибок» (QEC), которое динамически обнаруживает и исправляет ошибки.&lt;/p>
&lt;p>Основным подходом к QEC является «поверхностный код» (Surface Code). В этом методе множество физических кубитов (кубитов данных) размещаются в виде двумерной решетки, а между ними располагаются кубиты для измерения (вспомогательные кубиты, Ancilla), которые непрерывно выполняют проверки четности, называемые «стабилизаторами» (Stabilizer).&lt;/p>
&lt;div class="mermaid">graph LR
Q1["Кубит данных (Данные)"] --- M1["Измерение X-стабилизатора (Вспомогательный)"]
Q2["Кубит данных (Данные)"] --- M1
Q3["Кубит данных (Данные)"] --- M2["Измерение Z-стабилизатора (Вспомогательный)"]
Q4["Кубит данных (Данные)"] --- M2
M1 --> EC["Декодирование синдрома ошибки (Классическое)"]
M2 --> EC
EC --> LQ["Обновление состояния логического кубита"]&lt;/div>
&lt;h4 id="теорема-о-пороге-threshold-theorem-и-расстояние-d">Теорема о пороге (Threshold Theorem) и расстояние $d$
&lt;/h4>&lt;p>Для квантового исправления ошибок существует «теорема о пороге». Если уровень ошибок физического кубита $p$ падает ниже определенного порога $p_{th}$ (для поверхностного кода это около 1%), то путем увеличения кодового расстояния (Distance) $d$ (назначения большего количества физических кубитов одному логическому кубиту) можно экспоненциально снизить уровень логических ошибок $p_L$.&lt;/p>
&lt;p>Приближенная формула для уровня логических ошибок выглядит следующим образом:&lt;/p>
$$
p_L \approx \Lambda \left( \frac{p}{p_{th}} \right)^{\frac{d+1}{2}}
$$
&lt;p>Где $\Lambda$ — константа. Если $p &lt; p_{th}$, то чем больше $d$, тем меньше становится $p_L$. Однако если $p > p_{th}$, увеличение количества физических кубитов, наоборот, приводит к накоплению шума и ухудшению уровня логических ошибок.&lt;/p>
&lt;h4 id="веха-google-2023-года-демонстрация-снижения-ошибок-за-счет-увеличения-расстояния">Веха Google 2023 года: Демонстрация снижения ошибок за счет увеличения расстояния
&lt;/h4>&lt;p>В феврале 2023 года Google опубликовала эпохальную статью в журнале &lt;em>Nature&lt;/em>. Используя процессор Sycamore 3-го поколения, они впервые в мире продемонстрировали, что при увеличении расстояния поверхностного кода с $d=3$ (используется 17 физических кубитов) до $d=5$ (используется 49 физических кубитов), уровень логических ошибок незначительно снижается с 3,028% до 2,914%.&lt;/p>
&lt;p>Это означает вступление в область $p &lt; p_{th}$ и свидетельствует о завершении важнейшей проверки концепции (Proof of Concept) на пути к FTQC, подтверждающей, что чем больше физических кубитов, тем выше производительность.&lt;/p>
&lt;hr>
&lt;h2 id="6-дорожная-карта-и-перспективы-ftqc-отказоустойчивых-квантовых-вычислений">6. Дорожная карта и перспективы FTQC (отказоустойчивых квантовых вычислений)
&lt;/h2>&lt;p>Google и IBM ведут ожесточенную конкуренцию в разработке на пути к своей конечной цели — FTQC (Fault-Tolerant Quantum Computing), применяя при этом разные архитектуры и подходы.&lt;/p>
&lt;h3 id="подход-ibm-модульность-и-решетка-heavy-hex">Подход IBM: Модульность и решетка Heavy-Hex
&lt;/h3>&lt;p>IBM фокусируется на масштабировании процессоров наряду с радикальным снижением уровня ошибок. Бросая вызов ограничениям одного чипа с помощью процессоров «Eagle (127Q)», «Osprey (433Q)» и «Condor (1121Q)», они также анонсировали модульную архитектуру под названием «Quantum System Two». Кроме того, для топологии связи кубитов они используют решетку «Heavy-Hex», которая снижает нежелательные перекрестные помехи и повышает стабильность. Стратегия IBM — это гибридный подход, при котором в краткосрочной перспективе они стремятся к полезности за счет продвинутого смягчения ошибок, постепенно внедряя QEC.&lt;/p>
&lt;h3 id="подход-google-повышение-качества-логических-кубитов">Подход Google: Повышение качества логических кубитов
&lt;/h3>&lt;p>Стратегия Google больше сосредоточена на максимальном снижении уровня ошибок одного логического кубита (например, до $10^{-6}$), чем на быстром увеличении количества физических кубитов. Опираясь на это, они стремятся создать крупномасштабные системы, в которых работают параллельно тысячи и десятки тысяч физических кубитов, разрабатывая технологии передачи квантовых состояний между модулями (Quantum Interconnects).&lt;/p>
&lt;p>Реализация протоколов для отказоустойчивого выполнения неклиффордовых вентилей, таких как дистилляция магических состояний (Magic State Distillation), также станет серьезным техническим препятствием в будущем. Считается, что для выполнения практического алгоритма Шора и взлома 2048-битного шифра RSA потребуются тысячи логических кубитов с уровнем ошибок ниже $10^{-8}$, что эквивалентно миллионам или десяткам миллионов физических кубитов, так что путь еще долгий.&lt;/p>
&lt;hr>
&lt;h2 id="7-заключение">7. Заключение
&lt;/h2>&lt;p>«Квантовое превосходство» стало важной вехой в истории квантовых компьютеров, физически доказавшей теоретический потенциал этих вычислительных машин. Демонстрация Google в 2019 году и конструктивные возражения IBM перевели всю индустрию от простых теоретических доказательств к поиску реальной полезности (Utility) и началу эпохи серьезной инженерии, направленной на достижение отказоустойчивых квантовых вычислений (FTQC).&lt;/p>
&lt;p>Сейчас мы являемся свидетелями переходного периода от зашумленных устройств NISQ к устройствам на логических кубитах с исправлением ошибок. В течение следующих нескольких лет или десятилетия новые открытия в материаловедении, революция в процессах разработки лекарств и прорывы в решении задач оптимизации станут реальностью благодаря эволюции этого квантового оборудования.&lt;/p>
&lt;p>В дальнейшем мы будем пристально следить за развитием Google, IBM и исследователей со всего мира, которые формируют будущее компьютерных наук.&lt;/p></description></item><item><title>Блокчейн и криптовалюты в постквантовую эру: что изменится?</title><link>http://kenji.blog/ru/p/post-quantum-blockchain-and-crypto/</link><pubDate>Fri, 11 Sep 2026 17:00:00 +0900</pubDate><guid>http://kenji.blog/ru/p/post-quantum-blockchain-and-crypto/</guid><description>&lt;img src="http://kenji.blog/p/post-quantum-blockchain-and-crypto/img/eyecatch.jpg" alt="Featured image of post Блокчейн и криптовалюты в постквантовую эру: что изменится?" />&lt;h2 id="1-введение-приближение-постквантовой-эры-и-кризис-блокчейна">1. Введение: Приближение постквантовой эры и кризис блокчейна
&lt;/h2>&lt;p>С момента создания Биткоина (Bitcoin) Сатоши Накамото в 2009 году, технология блокчейн выросла в основу финансовых систем и приложений по всему миру как «децентрализованный реестр, устойчивый к фальсификациям». Эта надежная безопасность опирается на современную криптографию: &lt;strong>криптографию с открытым ключом (Public Key Cryptography)&lt;/strong> и &lt;strong>криптографические хеш-функции (Cryptographic Hash Functions)&lt;/strong>.&lt;/p>
&lt;p>Эти криптографические технологии гарантируют безопасность на основе математической «вычислительной сложности», подразумевающей, что классическим компьютерам (ПК и суперкомпьютерам, которые мы используем сегодня) потребовалось бы время, сравнимое с возрастом Вселенной, для их взлома.&lt;/p>
&lt;p>Однако это предположение вот-вот будет фундаментально опровергнуто стремительным развитием и практическим применением &lt;strong>квантовых компьютеров (Quantum Computers)&lt;/strong> — передового рубежа физики и информатики. Используя квантово-механические явления, такие как «суперпозиция (Superposition)» и «квантовая запутанность (Entanglement)», квантовые компьютеры демонстрируют вычислительную мощь, превосходящую традиционные классические компьютеры в определенных математических задачах, что называется «квантовым превосходством (Quantum Supremacy)».&lt;/p>
&lt;p>В этой статье мы глубоко и детально, с технической и математической точек зрения, рассмотрим, с какими конкретными угрозами со стороны квантовых компьютеров сталкивается технология блокчейн, а также новейшие тенденции в области &lt;strong>постквантовой криптографии (PQC: Post-Quantum Cryptography)&lt;/strong> как решения этой проблемы, и сценарии миграции криптовалютных сетей.&lt;/p>
&lt;hr>
&lt;h2 id="2-основы-квантовых-компьютеров-и-две-главные-угрозы-для-блокчейна">2. Основы квантовых компьютеров и две главные угрозы для блокчейна
&lt;/h2>&lt;p>Современные блокчейн-системы в основном состоят из следующих двух криптографических элементов, каждый из которых подвержен различным угрозам со стороны квантовых алгоритмов.&lt;/p>
&lt;div class="mermaid">graph TD
A["Невероятная вычислительная мощность квантовых компьютеров"] --> B["Алгоритм Шора (Shor's Algorithm)"]
A --> C["Алгоритм Гровера (Grover's Algorithm)"]
B --> D["Крах криптографии с открытым ключом (ECDSA/RSA/DSA)"]
C --> E["Влияние на криптографические хеш-функции (SHA-256)"]
D --> F["Определение чужого закрытого ключа и подделка транзакций"]
E --> G["Преимущество в майнинге PoW и атаки на некоторые адреса"]
F --> H["Фатальная и прямая угроза в блокчейне"]
G --> I["Угроза, решаемая настройкой алгоритма (например, увеличением длины ключа)"]
style H fill:#ff9999,stroke:#cc0000,stroke-width:2px;
style I fill:#ffff99,stroke:#cccc00,stroke-width:2px;&lt;/div>
&lt;h3 id="21-основы-криптографии-на-эллиптических-кривых-ecdsa-и-вычислительная-сложность">2.1. Основы криптографии на эллиптических кривых (ECDSA) и вычислительная сложность
&lt;/h3>&lt;p>Многие блокчейны, включая Bitcoin и Ethereum, используют &lt;strong>алгоритм цифровой подписи на эллиптических кривых (ECDSA: Elliptic Curve Digital Signature Algorithm)&lt;/strong> в качестве алгоритма цифровой подписи. В частности, Биткоин использует эллиптическую кривую с параметрами &lt;code>secp256k1&lt;/code>.&lt;/p>
&lt;p>Безопасность криптографии на эллиптических кривых зависит от вычислительной сложности &lt;strong>задачи дискретного логарифмирования на эллиптической кривой (ECDLP: Elliptic Curve Discrete Logarithm Problem)&lt;/strong>.
Эллиптическая кривая определяется уравнением в нормальной форме Вейерштрасса:&lt;/p>
$$
y^2 \equiv x^3 + ax + b \pmod{p}
$$
&lt;p>В &lt;code>secp256k1&lt;/code> Биткоина $a = 0, b = 7$, а $p$ — очень большое простое число.
Пусть базовая точка на этой кривой равна $G$, а закрытый ключ $k$ — это огромное случайно выбранное 256-битное целое число. Тогда открытый ключ $K$ находится путем сложения базовой точки $G$ с самой собой $k$ раз (скалярное умножение).&lt;/p>
$$
K = k \times G = \underbrace{G + G + \dots + G}_{k \text{ раз}}
$$
&lt;p>Использование классического компьютера для обратного вычисления закрытого ключа $k$ (нахождение дискретного логарифма) из известного открытого ключа $K$ и базовой точки $G$ требует экспоненциального времени вычислений $\mathcal{O}(\sqrt{p})$ даже при использовании лучших классических алгоритмов, таких как ро-алгоритм Полларда. Для 256-битного ключа потребуется около $2^{128}$ операций, что является уровнем, который современные суперкомпьютеры не смогли бы решить, даже проработав миллиарды лет.&lt;/p>
&lt;h3 id="22-крах-из-за-алгоритма-шора-shors-algorithm">2.2. Крах из-за алгоритма Шора (Shor&amp;rsquo;s Algorithm)
&lt;/h3>&lt;p>Однако &lt;strong>алгоритм Шора&lt;/strong>, опубликованный Питером Шором в 1994 году, полностью разрушил это предположение. Изначально алгоритм Шора был предложен для решения задачи факторизации (основы криптографии RSA) за полиномиальное время, но он также применим к задаче дискретного логарифмирования и задаче дискретного логарифмирования на эллиптической кривой.&lt;/p>
&lt;p>Суть алгоритма Шора заключается в использовании &lt;strong>квантового преобразования Фурье (QFT: Quantum Fourier Transform)&lt;/strong> для быстрого нахождения «периода (Period)» функции.&lt;/p>
$$
\text{Классическая сложность вычислений} = \mathcal{O}(2^{n/2}) \quad (n\text{ — длина в битах})
$$
$$
\text{Сложность квантового алгоритма} = \mathcal{O}(n^3)
$$
&lt;p>Таким образом, алгоритм Шора радикально сокращает время с экспоненциального до &lt;strong>полиномиального (Polynomial Time)&lt;/strong>. Если будет создан квантовый компьютер с достаточным количеством логических кубитов, он сможет определить закрытый ключ $k$ из опубликованного в сети открытого ключа $K$ за несколько минут или секунд. Это позволит злоумышленникам легко получать закрытые ключи от чужих кошельков и полностью контролировать их средства.&lt;/p>
&lt;h4 id="221-пошаговый-взлом-ecdlp-с-помощью-алгоритма-шора">2.2.1 Пошаговый взлом ECDLP с помощью алгоритма Шора
&lt;/h4>&lt;p>Давайте шаг за шагом рассмотрим внутренний процесс того, как квантовый компьютер решает задачу дискретного логарифмирования на эллиптической кривой (ECDLP).&lt;/p>
&lt;p>Постановка задачи: В $K = k \times G$, где $G$ и $K$ известны, мы хотим найти неизвестное целое число $k$ (закрытый ключ). Пусть порядок эллиптической кривой равен $N$.&lt;/p>
&lt;p>&lt;strong>Шаг 1: Создание состояния суперпозиции&lt;/strong>
Сначала мы подготавливаем два квантовых регистра и применяем к каждому из них вентиль Адамара (Hadamard Gate), чтобы создать состояние суперпозиции всех возможных комбинаций целых чисел.
&lt;/p>
$$
|\psi_1\rangle = \frac{1}{N} \sum_{x=0}^{N-1} \sum_{y=0}^{N-1} |x\rangle |y\rangle |0\rangle
$$
&lt;p>&lt;strong>Шаг 2: Применение квантового оракула (вычисление функции)&lt;/strong>
Затем с помощью квантовой цепи (оракула), которая выполняет сложение точек на эллиптической кривой, мы вычисляем функцию $f(x, y) = x \times G + y \times K$ в третьем регистре.
&lt;/p>
$$
|\psi_2\rangle = \frac{1}{N} \sum_{x=0}^{N-1} \sum_{y=0}^{N-1} |x\rangle |y\rangle |x \times G + y \times K\rangle
$$
&lt;p>
Здесь важно то, что, поскольку $K = k \times G$, это можно переписать как $f(x, y) = (x + y \cdot k) \times G$.&lt;/p>
&lt;p>&lt;strong>Шаг 3: Измерение третьего регистра&lt;/strong>
Когда мы измеряем третий регистр, он коллапсирует в некоторую точку $R$ на эллиптической кривой. В результате первый и второй регистры коллапсируют в состояние суперпозиции пар $(x, y)$, которые удовлетворяют условию $x + y \cdot k \equiv c \pmod{N}$ (где $c$ — константа).
&lt;/p>
$$
|\psi_3\rangle = \frac{1}{\sqrt{N}} \sum_{y=0}^{N-1} |c - y \cdot k \pmod{N}\rangle |y\rangle
$$
&lt;p>&lt;strong>Шаг 4: Применение квантового преобразования Фурье (QFT)&lt;/strong>
Это состояние имеет периодичность, связанную с периодом $k$. Применяя к нему обратное квантовое преобразование Фурье (Inverse QFT), мы вызываем фазовую интерференцию и преобразуем информацию о периоде в амплитуду.&lt;/p>
&lt;p>&lt;strong>Шаг 5: Измерение и классическая постобработка&lt;/strong>
Когда мы измеряем первый и второй регистры, с высокой вероятностью получается значение, содержащее информацию о $k$. Применяя классические теоретико-числовые алгоритмы, такие как разложение в непрерывные дроби (Continued Fractions), к измеренным значениям, можно полностью определить неизвестный закрытый ключ $k$.&lt;/p>
&lt;p>Количество квантовых вентилей, требуемых для всего этого процесса, составляет $\mathcal{O}(\log^3 N)$, что позволяет раскрывать закрытые ключи с молниеносной скоростью по сравнению с классическим поиском компьютера за $\mathcal{O}(\sqrt{N})$.&lt;/p>
&lt;h3 id="23-алгоритм-гровера-grovers-algorithm-и-влияние-на-хеш-функции">2.3. Алгоритм Гровера (Grover&amp;rsquo;s Algorithm) и влияние на хеш-функции
&lt;/h3>&lt;p>Еще одна угроза — &lt;strong>алгоритм Гровера&lt;/strong>, предложенный Ловом Гровером в 1996 году. Он оказывает значительное влияние на хеш-функции (например, SHA-256).&lt;/p>
&lt;p>В блокчейне хеш-функции используются для обеспечения целостности данных, генерации адресов, а также в качестве основы для майнинга &lt;strong>PoW (Proof of Work)&lt;/strong> в Биткоине. Обратное вычисление хеш-функции (нахождение прообраза) можно рассматривать как «задачу поиска в неструктурированной базе данных», где ищется входное значение $x$, для которого $H(x) = y$ при заданном выходном значении $y$.&lt;/p>
&lt;p>На классическом компьютере, чтобы найти правильный ответ из $N$ вариантов, требуется в среднем $\frac{N}{2}$ и в худшем случае $N$ попыток. Иными словами, сложность составляет $\mathcal{O}(N)$.
Однако алгоритм Гровера использует квантовый метод, называемый «усилением амплитуды (Amplitude Amplification)». Итеративно усиливая амплитуду вероятности правильного состояния среди всех возможных состояний в суперпозиции, он сокращает время поиска до квадратного корня.&lt;/p>
$$
\text{Сложность алгоритма Гровера} = \mathcal{O}(\sqrt{N})
$$
&lt;p>Для SHA-256 $N = 2^{256}$, поэтому классический поиск полным перебором требует около $2^{256}$ попыток. Однако при использовании алгоритма Гровера потребуется всего $\sqrt{2^{256}} = 2^{128}$ попыток. Это означает, что для квантового компьютера криптографическая стойкость 256-битной хеш-функции &lt;strong>фактически снижается вдвое, до уровня 128 бит&lt;/strong>.&lt;/p>
&lt;h4 id="231-выживет-ли-sha-256-quantum-supremacy-in-hashing">2.3.1. Выживет ли SHA-256? (Quantum Supremacy in Hashing)
&lt;/h4>&lt;p>Хотя безопасность уменьшается вдвое, «128-битная безопасность» все еще остается чрезвычайно надежной. $2^{128}$ операций — это астрономическое число даже при нынешнем уровне технологий, для выполнения которого потребуется время в масштабах жизни Вселенной.
Поэтому широко распространено мнение, что &lt;strong>«SHA-256 сохранит практическую безопасность даже против квантовых компьютеров»&lt;/strong>. Если в будущем потребуется увеличить запас прочности безопасности, то простое удвоение длины выходного хеша (например, переход от SHA-256 к SHA-512) позволит сохранить 256-битный уровень классической безопасности в квантовом мире.&lt;/p>
&lt;p>В заключение можно сказать, что квантовая угроза для хеш-функций «незначительна и решаема», тогда как угроза для криптографии с открытым ключом (ECDSA) является «фатальной».&lt;/p>
&lt;hr>
&lt;h2 id="3-анализ-конкретного-влияния-на-современные-криптоактивы-bitcoin-ethereum">3. Анализ конкретного влияния на современные криптоактивы (Bitcoin, Ethereum)
&lt;/h2>&lt;p>С какими конкретными уязвимостями столкнутся сети криптовалют в мире, где ECDSA можно будет взломать с помощью квантового компьютера? Здесь мы проведем подробный анализ на примере механизма Биткоина с точки зрения &lt;strong>«момента раскрытия открытого ключа»&lt;/strong>.&lt;/p>
&lt;h3 id="31-генерация-адреса-и-непубличность-открытого-ключа">3.1. Генерация адреса и «непубличность» открытого ключа
&lt;/h3>&lt;p>Адреса Биткоина (P2PKH: Pay-to-Public-Key-Hash или P2WPKH: Pay-to-Witness-Public-Key-Hash) не являются самими открытыми ключами, а представляют собой результат многократного хеширования открытого ключа.&lt;/p>
$$
\text{Bitcoin Address} = \text{Base58Check}(\text{RIPEMD160}(\text{SHA256}(\text{Public Key})))
$$
&lt;p>Как упоминалось ранее, поскольку хеш-функции устойчивы к квантовым атакам (алгоритм Гровера), обратное вычисление исходного «открытого ключа» из хеш-значения («адреса») невозможно даже для квантового компьютера.
То есть, для &lt;strong>«неиспользованных адресов (с которых никогда не отправлялись средства)»&lt;/strong> открытый ключ вообще не представлен в блокчейне, записано только хеш-значение. Таким образом, пока открытый ключ неизвестен, не существует цели для выполнения алгоритма Шора, и закрытый ключ не может быть определен. Кошелек в этом состоянии можно считать квантово-безопасным (Quantum-safe).&lt;/p>
&lt;h3 id="32-фатальная-уязвимость-при-отправке-транзакции-атака-фронтраннинга">3.2. Фатальная уязвимость при отправке транзакции (атака фронтраннинга)
&lt;/h3>&lt;p>Проблема возникает в тот момент, когда пользователь отправляет средства.
При широковещательной рассылке (отправке) транзакции в сеть пользователь должен включить &lt;strong>свой открытый ключ в данные транзакции и опубликовать его для всей сети&lt;/strong> для проверки вместе с цифровой подписью.&lt;/p>
&lt;div class="mermaid">sequenceDiagram
participant User as "Пользователь (Алиса)"
participant Mempool as "Mempool (Пул неподтвержденных транзакций)"
participant QuantumAttacker as "Квантовый злоумышленник"
participant Miner as "Майнер (Создание блока)"
User->>Mempool: Отправка транзакции (включает открытый ключ + подпись)
Mempool-->>QuantumAttacker: Перехват открытого ключа в сети
note right of QuantumAttacker: Выполнение алгоритма Шора за несколько минут&lt;br/>(Вычисление закрытого ключа из открытого ключа)
QuantumAttacker->>QuantumAttacker: Создание новой подписи с использованием закрытого ключа Алисы
QuantumAttacker->>Mempool: Широковещательная рассылка мошеннической транзакции с более высокой комиссией
Miner->>Miner: Приоритетное включение мошеннической транзакции с высокой комиссией (Gas) в блок
Miner-->>User: Запись в блокчейн (Потеря средств Алисы)&lt;/div>
&lt;p>Как только открытый ключ попадает в Mempool (место ожидания неподтвержденных транзакций), эти данные передаются узлам по всему миру. Если у злоумышленника есть сверхбыстрый квантовый компьютер, он может украсть средства с помощью следующего процесса:&lt;/p>
&lt;ol>
&lt;li>Перехватить транзакцию легитимного пользователя (Алисы) в Mempool и &lt;strong>извлечь открытый ключ&lt;/strong>.&lt;/li>
&lt;li>Выполнить алгоритм Шора и &lt;strong>вычислить закрытый ключ из открытого ключа за несколько минут&lt;/strong> (до того, как блок будет подтвержден).&lt;/li>
&lt;li>Используя полученный закрытый ключ, &lt;strong>создать фальшивую транзакцию&lt;/strong>, которая переводит средства Алисы на адрес злоумышленника.&lt;/li>
&lt;li>Отправить эту фальшивую транзакцию в сеть с &lt;strong>гораздо более высокой комиссией майнеру (Fee)&lt;/strong>, чем у исходной транзакции Алисы.&lt;/li>
&lt;/ol>
&lt;p>Майнеры, следуя экономическим стимулам, будут отдавать приоритет транзакциям с более высокими комиссиями при их включении в блок. В результате мошеннический перевод злоумышленника будет подтвержден (Confirm) первым, а законный перевод Алисы будет отклонен как попытка «двойной траты (Double Spend)».
Эта последовательность действий называется &lt;strong>атакой фронтраннинга (Front-running Attack)&lt;/strong>, и в мире, где квантовые компьютеры станут реальностью, это приведет к ужасающей ситуации, когда средства будут украдены хакерами в ту же секунду, как кто-то нажмет кнопку «отправить».&lt;/p>
&lt;h3 id="33-опасность-повторного-использования-адресов-и-старых-адресов-p2pk">3.3. Опасность повторного использования адресов и старых адресов (P2PK)
&lt;/h3>&lt;p>Еще более серьезная проблема заключается в том, что адреса, которые использовались для перевода средств хотя бы раз в прошлом (например, повторно используемые в качестве адресов для сдачи), уже навсегда сохранили свой открытый ключ в блокчейне. Эти адреса находятся под угрозой того, что их закрытый ключ будет вычислен, а баланс украден в любой момент, даже без ожидания отправки транзакции.&lt;/p>
&lt;p>Кроме того, в формате &lt;strong>P2PK (Pay-to-Public-Key)&lt;/strong>, который был популярен примерно в 2009–2010 годах, открытый ключ напрямую записывался в блокчейн в качестве адреса, а не его хеш. Сюда входят ранние награды Сатоши Накамото за майнинг (более 1 миллиона BTC). Эти огромные запасы «спящих» биткоинов станут самой легкой мишенью для квантовых компьютеров; они могут быть украдены все разом и сброшены на рынок, что приведет к катастрофическому обвалу цен.&lt;/p>
&lt;hr>
&lt;h2 id="4-сценарий-перехода-на-постквантовую-криптографию-pqc-post-quantum-cryptography">4. Сценарий перехода на постквантовую криптографию (PQC: Post-Quantum Cryptography)
&lt;/h2>&lt;p>Чтобы избежать катастрофы «Q-Day» (дня, когда квантовые компьютеры взломают криптографию), криптографическое сообщество и сообщество блокчейна планируют переход на &lt;strong>постквантовую криптографию (PQC)&lt;/strong>, которую трудно взломать даже с помощью квантовых алгоритмов.
Национальный институт стандартов и технологий США (NIST) на протяжении многих лет проводит процесс стандартизации PQC, и после нескольких раундов строгой оценки несколько перспективных схем шифрования были выбраны в качестве окончательных стандартов.&lt;/p>
&lt;p>Ниже приводится подробное описание, включая математические механизмы, основных алгоритмов PQC, которые привлекают внимание как альтернативы цифровым подписям в блокчейне.&lt;/p>
&lt;h3 id="41-подписи-на-основе-хешей-hash-based-signatures">4.1. Подписи на основе хешей (Hash-Based Signatures)
&lt;/h3>&lt;p>Подписи на основе хешей — это криптографическая схема, безопасность которой зависит исключительно от очень простой и надежной основы: «устойчивости хеш-функций к коллизиям». Поскольку устойчивость хеш-функций к квантовым компьютерам уже доказана (как упоминалось ранее, запаса безопасности в 128 бит вполне достаточно), это очень надежный подход.
Типичными примерами являются &lt;strong>подпись Лэмпорта (Lamport Signatures)&lt;/strong>, ее расширение WOTS (Winternitz One-Time Signature), а также кандидат на стандартизацию NIST &lt;strong>SPHINCS+&lt;/strong> (в настоящее время называемый SLH-DSA в рамках FIPS 205).&lt;/p>
&lt;h4 id="411-математические-детали-подписи-лэмпорта-one-time-signature">4.1.1. Математические детали подписи Лэмпорта (One-Time Signature)
&lt;/h4>&lt;p>Давайте подробнее рассмотрим математику подписи Лэмпорта.
Пусть хеш-функция будет $H: \{0, 1\}^* \to \{0, 1\}^{256}$.&lt;/p>
&lt;p>&lt;strong>[Генерация ключей]&lt;/strong>
Алиса (отправитель) использует аппаратный генератор случайных чисел (TRNG) для генерации 256 пар закрытых ключей.
&lt;/p>
$$
\text{sk}_{i,0} \in \{0, 1\}^{256}, \quad \text{sk}_{i,1} \in \{0, 1\}^{256} \quad (1 \le i \le 256)
$$
&lt;p>
В результате закрытый ключ $\text{sk}$ состоит в общей сложности из 512 строк по 256 бит (размер: $512 \times 32 = 16 384$ байта).&lt;/p>
&lt;p>Затем она вычисляет открытый ключ $\text{pk}$. Каждый компонент закрытого ключа хешируется.
&lt;/p>
$$
\text{pk}_{i,0} = H(\text{sk}_{i,0}), \quad \text{pk}_{i,1} = H(\text{sk}_{i,1})
$$
&lt;p>
Размер открытого ключа также составляет $16 384$ байта. Он публикуется в сети блокчейн.&lt;/p>
&lt;p>&lt;strong>[Создание подписи]&lt;/strong>
Чтобы подписать данные транзакции $M$, Алиса сначала вычисляет их хеш-значение.
&lt;/p>
$$
h = H(M) \in \{0, 1\}^{256}
$$
&lt;p>
Обозначим $i$-й бит хеш-значения $h$ как $h_i \in \{0, 1\}$.
Подпись Алисы $\sigma$ представляет собой набор компонентов закрытого ключа, соответствующих каждому биту $h_i$.
&lt;/p>
$$
\sigma = (\text{sk}_{1, h_1}, \text{sk}_{2, h_2}, \dots, \text{sk}_{256, h_{256}})
$$
&lt;p>
То есть, если бит хеша сообщения равен &lt;code>0&lt;/code>, раскрывается $\text{sk}_{i,0}$, а если он равен &lt;code>1&lt;/code>, раскрывается $\text{sk}_{i,1}$. Размер подписи составит $256 \times 32 = 8 192$ байта.&lt;/p>
&lt;p>&lt;strong>[Проверка подписи]&lt;/strong>
Майнер (проверяющий) использует полученную транзакцию $M$, подпись $\sigma = (s_1, s_2, \dots, s_{256})$ и открытый ключ $\text{pk}$ для проверки.
Он заново вычисляет хеш транзакции $h = H(M)$ и проверяет, совпадает ли хеш каждого $s_i$ с соответствующим элементом открытого ключа $\text{pk}_{i, h_i}$.
&lt;/p>
$$
H(s_i) \overset{?}{=} \text{pk}_{i, h_i} \quad (\text{для всех } 1 \le i \le 256)
$$
&lt;p>Этот процесс математически предельно прост, и до тех пор, пока квантовый компьютер не сможет вычислить обратную функцию $H$, подделать подпись невозможно. Однако после однократного подписания половина закрытого ключа раскрывается в сети, и если та же пара ключей будет использована для подписания другого сообщения, комбинация раскрытых закрытых ключей даст злоумышленнику возможность подделать подпись. Отсюда возникает строгое ограничение на использование ключа &lt;strong>только один раз (One-Time)&lt;/strong>.
Для практического применения были разработаны такие технологии, как &lt;strong>XMSS&lt;/strong>, использующая деревья Меркла для объединения множества одноразовых ключей в один корневой открытый ключ, и &lt;strong>SPHINCS+&lt;/strong> без сохранения состояния (stateless), но они имеют недостаток в виде размера подписей, достигающего десятков килобайт.&lt;/p>
&lt;h3 id="42-криптография-на-решетках-lattice-based-cryptography">4.2. Криптография на решетках (Lattice-Based Cryptography)
&lt;/h3>&lt;p>В настоящее время наиболее перспективным направлением PQC, принятым в качестве основного стандарта NIST (FIPS 204: ML-DSA / ранее CRYSTALS-Dilithium, а также Falcon и др.), является &lt;strong>криптография на решетках&lt;/strong>.&lt;/p>
&lt;p>Безопасность криптографии на решетках основана на математически доказанных сложных задачах, таких как «задача о кратчайшем векторе в многомерной решетке (SVP: Shortest Vector Problem)» и «задача обучения с ошибками (LWE: Learning With Errors)». Алгоритмов для эффективного решения задач на решетках не найдено даже для квантовых компьютеров.&lt;/p>
&lt;p>&lt;strong>Математическая модель LWE (Learning With Errors):&lt;/strong>
Основная идея задачи LWE заключается в том, что намеренное добавление «небольшого шума (ошибок)» в систему линейных уравнений делает задачу экспоненциально сложнее.
Пусть секретный вектор $\mathbf{s} \in \mathbb{Z}_q^n$.
Имеется огромная случайно выбранная открытая матрица $\mathbf{A} \in \mathbb{Z}_q^{m \times n}$ и вектор небольшого шума $\mathbf{e} \in \mathbb{Z}_q^m$, который добавляется намеренно.
Открытый ключ $\mathbf{b}$ вычисляется следующим образом:&lt;/p>
$$
\mathbf{b} = \mathbf{A}\mathbf{s} + \mathbf{e} \pmod{q}
$$
&lt;p>Даже если матрица $\mathbf{A}$ и вектор $\mathbf{b}$ (открытый ключ) известны, вычислить из них закрытый ключ $\mathbf{s}$ чрезвычайно сложно из-за наличия шума $\mathbf{e}$. Без шума задачу можно было бы решить простым методом Гаусса, но присутствие шума приводит к взрывному росту пространства поиска во всех измерениях, обеспечивая надежную безопасность как против классических, так и против квантовых компьютеров.
В реальных алгоритмах, используемых в блокчейне (таких как Dilithium), применяется &lt;strong>Ring-LWE (или Module-LWE)&lt;/strong>, развернутая над кольцом многочленов, что позволяет уменьшить размер ключа и ускорить вычисления.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Преимущества&lt;/strong>: По сравнению с подписями на основе хешей размер открытого ключа и подписи относительно невелик (несколько килобайт), а скорость генерации и проверки подписи очень высока (на уровне ECDSA или даже быстрее).&lt;/li>
&lt;li>&lt;strong>Недостатки&lt;/strong>: Математическая структура сложна, и история тестирования относительно коротка, поэтому риск того, что в будущем будет обнаружен новый алгоритм дешифрования, не равен нулю.&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="5-технические-трудности-перехода-блокчейна-на-pqc">5. Технические трудности перехода блокчейна на PQC
&lt;/h2>&lt;p>Наличие алгоритмов PQC (таких как Dilithium или SPHINCS+) не означает, что их можно внедрить в Bitcoin или Ethereum прямо завтра. Существует ряд серьезных проблем, характерных для децентрализованных систем.&lt;/p>
&lt;h3 id="51-раздувание-размера-подписей-и-коллапс-масштабируемости">5.1. Раздувание размера подписей и коллапс масштабируемости
&lt;/h3>&lt;p>Самым большим препятствием для внедрения PQC является значительное увеличение размера данных.
В то время как текущий размер подписи ECDSA составляет около 70 байт, подпись Dilithium (ML-DSA) на основе решеток занимает около 2420–4595 байт (в зависимости от уровня безопасности), а размер открытого ключа превышает 1300 байт. Для SPHINCS+ на основе хешей размер только одной подписи достигает десятков тысяч байт.&lt;/p>
&lt;p>Если бы Биткоин внедрил PQC при текущем пределе размера блока (около 4 МБ с учетом SegWit), количество транзакций, которое можно уместить в одном блоке, резко бы сократилось. Пропускная способность сети (TPS: Transactions Per Second) катастрофически упала бы, а задержки при переводе стали бы нормой.
Для решения этой проблемы потребуется значительное увеличение размера блока, но это, в свою очередь, увеличит требования к хранилищу полных узлов (full nodes) и пропускной способности сети, что усложнит запуск узлов для обычных пользователей и, как следствие, приведет к дилемме — &lt;strong>централизации сети&lt;/strong>.&lt;/p>
&lt;div class="mermaid">pie title "Сравнение размеров данных подписи в блокчейне (Концептуальная диаграмма)"
"ECDSA (Около 70 байт)" : 2
"Dilithium ML-DSA (Около 2500 байт)" : 58
"SPHINCS+ (Около 17000 байт)" : 40&lt;/div>
&lt;p>&lt;em>(※ Увеличение размера данных транзакций из-за внедрения PQC станет фатальным узким местом для масштабируемости)&lt;/em>&lt;/p>
&lt;h3 id="52-влияние-на-ethereum-virtual-machine-evm-и-предварительно-скомпилированные-смарт-контракты">5.2. Влияние на Ethereum Virtual Machine (EVM) и предварительно скомпилированные смарт-контракты
&lt;/h3>&lt;p>В таких тьюринг-полных платформах смарт-контрактов, как Ethereum, внедрение PQC потребует фундаментального обновления EVM (виртуальной машины Ethereum).
В текущей версии EVM для проверки подписей ECDSA предусмотрен предварительно скомпилированный контракт (Precompiled Contract) под названием &lt;code>ecrecover&lt;/code> (адрес: &lt;code>0x01&lt;/code>), который оптимизирован для выполнения проверки с очень низкой комиссией (3000 Gas).&lt;/p>
&lt;p>Однако процесс проверки для новых алгоритмов на решетках, таких как Dilithium или Falcon, включает сложные полиномиальные и матричные операции. Если их реализовать только с использованием существующих опкодов (Opcodes) EVM, одна проверка подписи может потреблять от нескольких миллионов до десятков миллионов единиц газа. Это уровень, при котором весь лимит газа блока (около 30 миллионов Gas) исчерпывается одной транзакцией.&lt;/p>
&lt;p>Чтобы избежать этого, необходимо интегрировать новые предварительно скомпилированные контракты для проверки PQC (например, назначив DilithiumVerify на &lt;code>0x10&lt;/code>) непосредственно в саму EVM через хардфорк сети. Это потребует длительного процесса, в ходе которого основные разработчики каждого клиента Ethereum (Geth, Nethermind, Erigon и др.) будут сотрудничать для оптимизации логики проверки криптографии на решетках на таких языках, как C++, Go или Rust, и проведения аудита безопасности.&lt;/p>
&lt;h3 id="53-сложность-достижения-консенсуса-через-хардфорк">5.3. Сложность достижения консенсуса через хардфорк
&lt;/h3>&lt;p>Изменение базового алгоритма подписи требует &lt;strong>хардфорка (Hard Fork)&lt;/strong> — обновления протокола всей сети. Однако в сообществах, которые придают большое значение «неизменности правил и децентрализации», таких как Биткоин, процесс достижения консенсуса очень сложен с политической точки зрения. От момента предложения BIP (Bitcoin Improvement Proposal) о переходе на PQC до его внедрения, вероятно, потребуются годы обсуждений и тестирования.&lt;/p>
&lt;hr>
&lt;h2 id="6-когда-наступит-q-day-дорожная-карта-перехода">6. Когда наступит «Q-Day»? Дорожная карта перехода
&lt;/h2>&lt;p>Когда наступит «день, когда квантовые компьютеры полностью взломают 256-битную криптографию на эллиптических кривых (Q-Day)»?
Хотя мнения исследователей расходятся, многие эксперты прогнозируют, что масштабные квантовые компьютеры с тысячами или десятками тысяч стабильных логических кубитов (с исправлением ошибок и устойчивостью к шуму) появятся в период &lt;strong>«с середины 2030-х до 2040-х годов»&lt;/strong>. Однако, в зависимости от прорывов в архитектуре аппаратного обеспечения или открытия более эффективных квантовых алгоритмов, нельзя исключать, что это может произойти и раньше (около 2030 года).&lt;/p>
&lt;p>Дорожная карта, которой должна следовать экосистема криптоактивов, пока не стало слишком поздно, выглядит следующим образом:&lt;/p>
&lt;h3 id="фаза-1-гибридные-подписи-и-абстракция-аккаунта-от-настоящего-момента-до-2028-года">Фаза 1: Гибридные подписи и абстракция аккаунта (От настоящего момента до ~2028 года)
&lt;/h3>&lt;p>В текущей сфере блокчейна, особенно среди разработчиков Ethereum (таких как Виталик Бутерин), рассматриваются &lt;strong>«гибридные подписи»&lt;/strong>, сочетающие ECDSA и PQC (подписи на основе хешей или на решетках). Это подход, при котором к транзакции прикрепляются как существующая безопасная подпись ECDSA, так и подпись PQC, обеспечивая безопасность, даже если одна из них будет взломана.
Кроме того, благодаря использованию абстракции аккаунта (Account Abstraction, ERC-4337), предпринимаются усилия по внедрению и поддержке подписей PQC в смарт-контрактных кошельках по принципу opt-in (только для желающих пользователей) без ожидания хардфорка на уровне протокола.&lt;/p>
&lt;h3 id="фаза-2-использование-доказательств-с-нулевым-разглашением-zk-rollups-с-2025-года">Фаза 2: Использование доказательств с нулевым разглашением (ZK-Rollups) (С 2025 года)
&lt;/h3>&lt;p>Ожидается, что козырем для решения самой большой слабости PQC — «раздувания данных подписи» — станет использование технологии масштабирования второго уровня (Layer 2) &lt;strong>ZK-Rollups (Доказательства с нулевым разглашением)&lt;/strong>.
Вместо того, чтобы записывать огромные данные подписей PQC непосредственно в Layer 1 (основную цепь), большое количество PQC-транзакций будет проверяться и агрегироваться на Layer 2. Затем с помощью ZK-SNARKs или ZK-STARKs они будут сжиматься в одни крошечные «данные доказательства (Proof)» и записываться в Layer 1.
Поскольку некоторые конфигурации SNARKs (например, Groth16) сами по себе уязвимы к квантовым атакам, ключом станет использование &lt;strong>ZK-STARKs&lt;/strong>, безопасность которых опирается исключительно на хеш-функции, обладающие квантовой устойчивостью.&lt;/p>
&lt;h3 id="фаза-3-хардфорк-на-уровне-протокола-около-2030-года">Фаза 3: Хардфорк на уровне протокола (Около 2030 года)
&lt;/h3>&lt;p>Когда стандартизация PQC от NIST будет полностью закреплена, а отраслевые стандарты библиотек станут доступны и достаточно протестированы, ожидается проведение хардфорков в основных сетях, таких как Bitcoin и Ethereum, для полного перехода на PQC в качестве метода цифровой подписи по умолчанию. В течение этого переходного периода будут проводиться масштабные кампании, призывающие пользователей «перевести свои средства со старых кошельков на новые кошельки с поддержкой PQC».&lt;/p>
&lt;h3 id="примеры-новаторских-проектов">Примеры новаторских проектов
&lt;/h3>&lt;p>Некоторые блокчейн-проекты предвидели эту квантовую угрозу и с самого начала разрабатывались с заявленной квантовой устойчивостью.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>QRL (Quantum Resistant Ledger)&lt;/strong>: Ранний блокчейн, в котором на уровне протокола изначально реализована схема PQC на основе хешей под названием XMSS (eXtended Merkle Signature Scheme).&lt;/li>
&lt;li>&lt;strong>Algorand / Cellframe&lt;/strong>: Проекты с гибкой модульной архитектурой криптографического уровня, которые готовятся к будущим обновлениям PQC и активно изучают возможности интеграции криптографии на решетках.&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="7-заключение-будущее-криптоактивов-и-защита-наших-средств">7. Заключение: Будущее криптоактивов и защита наших средств
&lt;/h2>&lt;p>Наступление «постквантовой эры» выходит за рамки научной фантастики и уже стало реальной технической проблемой для современных криптографических систем, стоящей прямо перед нами.&lt;/p>
&lt;p>Два «меча» квантовых вычислений — алгоритмы Шора и Гровера — угрожают основе современных блокчейнов: криптографии с открытым ключом и хеш-функциям соответственно. В частности, уязвимость ECDSA является фатальной, и чтобы избежать риска кражи средств с помощью атак фронтраннинга, переход на постквантовую криптографию (PQC) абсолютно неизбежен.&lt;/p>
&lt;p>Однако технологическая отрасль и блокчейн-сообщество не сидят сложа руки в ожидании краха. Процесс выбора и стандартизации алгоритмов PQC, таких как криптография на решетках и подписи на основе хешей, неуклонно продвигается вперед, и использование доказательств с нулевым разглашением (ZK-STARKs) и технологий масштабирования Layer 2 открывает путь к преодолению самого большого барьера для внедрения PQC — «раздувания размера данных».&lt;/p>
&lt;p>Обычным пользователям криптовалют и инвесторам не нужно паниковать и продавать все свои средства прямо сейчас. Однако важно иметь базовую техническую грамотность и осознавать необходимость самозащиты:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Избегать повторного использования адресов&lt;/strong>: Из соображений не только конфиденциальности, но и безопасности, избегайте длительного хранения средств на «использованных адресах (с которых хотя бы раз отправлялись средства, и чей открытый ключ раскрыт в блокчейне)».&lt;/li>
&lt;li>&lt;strong>Следить за технологическими тенденциями&lt;/strong>: Будьте в курсе обсуждений перехода на PQC, таких как BIP в Биткоине или EIP в Ethereum, а также новостей о хардфорках, чтобы вовремя перевести свои средства на новые кошельки, когда это потребуется.&lt;/li>
&lt;/ul>
&lt;p>История блокчейна — это также история обновлений и устойчивости (resilience) перед лицом новых технологических угроз. Подобно тому, как экосистема преодолела проблемы масштабируемости и экологические проблемы (например, переход от PoW к PoS), она, несомненно, найдет решения и адаптируется к этой беспрецедентной квантовой угрозе.
Остается надеяться на будущее, в котором новая мудрость человечества — квантовые компьютеры — и технология доверия — децентрализованный распределенный реестр — не уничтожат друг друга при столкновении, а сольются в более совершенную и надежную систему на более высоком уровне.&lt;/p>
&lt;hr>
&lt;p>&lt;em>Ссылки и сопутствующие материалы:&lt;/em>&lt;/p>
&lt;ul>
&lt;li>National Institute of Standards and Technology (NIST) - Post-Quantum Cryptography Standardization Project&lt;/li>
&lt;li>Shor, P. W. (1994). Algorithms for quantum computation: discrete logarithms and factoring.&lt;/li>
&lt;li>Grover, L. K. (1996). A fast quantum mechanical algorithm for database search.&lt;/li>
&lt;li>Buterin, V. (2024). How to hard-fork to save most users&amp;rsquo; funds in a quantum emergency.&lt;/li>
&lt;/ul></description></item><item><title>Простое объяснение разницы между квантовым отжигом и квантовыми вентилями</title><link>http://kenji.blog/ru/p/quantum-annealing-vs-gate-model-explained/</link><pubDate>Fri, 11 Sep 2026 12:00:00 +0900</pubDate><guid>http://kenji.blog/ru/p/quantum-annealing-vs-gate-model-explained/</guid><description>&lt;img src="http://kenji.blog/p/quantum-annealing-vs-gate-model-explained/img/eyecatch.jpg" alt="Featured image of post Простое объяснение разницы между квантовым отжигом и квантовыми вентилями" />&lt;h1 id="простое-объяснение-разницы-между-квантовым-отжигом-и-квантовыми-вентилями">Простое объяснение разницы между квантовым отжигом и квантовыми вентилями
&lt;/h1>&lt;p>Квантовые вычисления — это вычислительная технология следующего поколения, которая имеет потенциал экспоненциально быстрее решать определенные задачи, требующие огромного количества времени на современных классических компьютерах (включая традиционные суперкомпьютеры), используя принципы квантовой механики (суперпозицию и квантовую запутанность).&lt;/p>
&lt;p>В настоящее время существуют две основные парадигмы в подходах к реализации квантовых компьютеров: &lt;strong>«квантовый отжиг (Quantum Annealing)»&lt;/strong> и &lt;strong>«модель квантовых вентилей (Quantum Gate Model)»&lt;/strong>. Эти два метода значительно различаются базовыми физическими подходами, задачами, в которых они сильны, а также аппаратными проблемами при реализации.&lt;/p>
&lt;p>В этой статье мы подробно сравним и объясним эти два метода с очень глубокой и технической точки зрения: от физических принципов и математических моделей (модель Изинга, QUBO, унитарные преобразования и т. д.) до текущих технических ограничений и конкретных примеров использования.&lt;/p>
&lt;hr>
&lt;h2 id="1-основы-квантовых-вычислений-фундаментальные-отличия-от-классических-компьютеров">1. Основы квантовых вычислений: фундаментальные отличия от классических компьютеров
&lt;/h2>&lt;p>Классические компьютеры обрабатывают информацию с помощью «битов (Bit)», которые могут принимать значения «0» или «1». С другой стороны, квантовые компьютеры используют «квантовые биты (Qubit)» (кубиты). Благодаря принципу «суперпозиции (Superposition)» из квантовой механики, кубит может одновременно с определенной вероятностью находиться в состояниях 0 и 1.&lt;/p>
&lt;p>Кроме того, при использовании явления, называемого «квантовой запутанностью (Entanglement)», состояния нескольких кубитов оказываются сильно коррелированными друг с другом, так что воздействие на один кубит мгновенно влияет на всю систему. Это делает возможным выполнение вычислений, подобных параллельной обработке (квантовый параллелизм).&lt;/p>
&lt;p>Однако квантовые состояния крайне уязвимы к внешнему шуму (такому как тепло или электромагнитные волны), и серьезной проблемой является «декогеренция (Decoherence)», при которой квантовое состояние разрушается и возвращается к классическому. Различия в подходах к решению этой проблемы шума привели к значительным различиям в философии проектирования квантового отжига и модели вентилей.&lt;/p>
&lt;hr>
&lt;h2 id="2-подробно-о-квантовом-отжиге-quantum-annealing">2. Подробно о квантовом отжиге (Quantum Annealing)
&lt;/h2>&lt;p>Квантовый отжиг — это специализированная вычислительная архитектура, предназначенная в первую очередь для решения &lt;strong>«задач комбинаторной оптимизации»&lt;/strong>. Она основана на теории, предложенной в 1998 году Хидэтоси Нисимори и Тадаси Кадоваки из Токийского технологического института, и стала широко известна после того, как канадская компания D-Wave Systems впервые в мире коммерциализировала её.&lt;/p>
&lt;h3 id="21-физический-механизм-модель-изинга-в-поперечном-магнитном-поле-и-квантовые-флуктуации">2.1. Физический механизм: модель Изинга в поперечном магнитном поле и квантовые флуктуации
&lt;/h3>&lt;p>Квантовый отжиг использует для вычислений свойство природных физических систем стремиться к «состоянию с наименьшей энергией (основному состоянию)».&lt;/p>
&lt;p>В классическом подходе «имитации отжига (Simulated Annealing)» тепловые флуктуации используются для выхода из локального оптимума (локального минимума). Напротив, квантовый отжиг использует «квантовые флуктуации (Quantum Fluctuation)» для прохождения через энергетические барьеры с помощью «квантового туннелирования (Quantum Tunneling)», тем самым более эффективно отыскивая глобальный оптимум (глобальный минимум).&lt;/p>
&lt;p>Эволюция системы квантового отжига во времени описывается следующим гамильтонианом (оператором полной энергии системы) $H(t)$:&lt;/p>
$$ H(t) = A(t) H_0 + B(t) H_P $$
&lt;p>Где $t$ — время, $A(t)$ — постепенно убывающая функция, а $B(t)$ — постепенно возрастающая функция.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>$H_0$ (Начальный гамильтониан)&lt;/strong>: Представляет поперечное магнитное поле (Transverse field) и порождает квантовые флуктуации.
$$ H_0 = - \sum_{i} \sigma_i^x $$
($\sigma_i^x$ — матрица Паули X, представляющая переворот бита.)&lt;/li>
&lt;li>&lt;strong>$H_P$ (Гамильтониан задачи)&lt;/strong>: Модель Изинга (Ising Model), которая выражает решаемую задачу оптимизации.&lt;/li>
&lt;/ul>
&lt;p>В начальном состоянии ($t=0$) $A(0)$ максимально, и система находится в основном состоянии $H_0$ (где все состояния равномерно суперпонированы). Затем с течением времени поперечное магнитное поле медленно ослабляется, и одновременно усиливается взаимодействие гамильтониана задачи.&lt;/p>
&lt;h3 id="22-адиабатические-квантовые-вычисления-adiabatic-quantum-computation">2.2. Адиабатические квантовые вычисления (Adiabatic Quantum Computation)
&lt;/h3>&lt;p>В этом процессе важную роль играет &lt;strong>«адиабатическая теорема (Adiabatic Theorem)»&lt;/strong>. Согласно ей, если систему изменять «достаточно медленно (адиабатически)», она всегда будет оставаться в основном состоянии гамильтониана на данный момент времени.&lt;/p>
&lt;p>Это означает, что когда в конечном итоге $A(t) \to 0$ и $B(t) \to 1$, система достигает основного состояния $H_P$, то есть &lt;strong>«точного решения задачи оптимизации»&lt;/strong>.&lt;/p>
&lt;div class="mermaid">graph TD
A["Гамильтониан H_0 (Начальное состояние)"] -->|"Адиабатическое изменение (Достаточно медленно)"| B["Постоянное поддержание основного состояния"]
A -->|"Неадиабатическое изменение (Слишком быстро/Тепловой шум)"| C["Переход в возбужденное состояние (Ошибка)"]
B --> D["Гамильтониан H_P (Глобальное оптимальное решение)"]
C --> E["Попадание в локальный оптимум"]
D --> F["Считывание решения"]
E --> F&lt;/div>
&lt;h3 id="23-преобразование-от-qubo-к-модели-изинга">2.3. Преобразование от QUBO к модели Изинга
&lt;/h3>&lt;p>Чтобы решить реальную задачу на квантовом отжиге, необходимо сформулировать её в формате &lt;strong>QUBO (Quadratic Unconstrained Binary Optimization: квадратичная безусловная бинарная оптимизация)&lt;/strong>.&lt;/p>
&lt;p>Целевая функция QUBO определяется следующим образом:
&lt;/p>
$$ \min_{x \in \{0,1\}^n} \sum_{i} Q_{ii} x_i + \sum_{i &lt; j} Q_{ij} x_i x_j $$
&lt;p>
Где $x_i \in \{0, 1\}$ — двоичная переменная, а $Q$ — матрица весов.&lt;/p>
&lt;p>Поскольку аппаратное обеспечение (например, D-Wave) работает с физическими спинами (вверх/вниз), необходимо преобразовать переменные в модель Изинга, используя $\sigma_i \in \{-1, +1\}$. Формула преобразования выглядит так:
&lt;/p>
$$ x_i = \frac{1 - \sigma_i}{2} \quad \text{или} \quad \sigma_i = 1 - 2x_i $$
&lt;p>Подставив это в уравнение QUBO и упростив, мы получим гамильтониан модели Изинга $H_P$:
&lt;/p>
$$ H_P = - \sum_{i&lt;j} J_{ij} \sigma_i^z \sigma_j^z - \sum_{i} h_i \sigma_i^z $$
&lt;ul>
&lt;li>$J_{ij}$: Взаимодействие между спинами (коэффициент связи). Физическая сила связи между кубитами.&lt;/li>
&lt;li>$h_i$: Локальное магнитное поле (смещение) для каждого спина.&lt;/li>
&lt;/ul>
&lt;h3 id="24-аппаратное-обеспечение-квантового-отжига-и-его-проблемы-на-примере-d-wave">2.4. Аппаратное обеспечение квантового отжига и его проблемы (на примере D-Wave)
&lt;/h3>&lt;p>Квантовые процессоры D-Wave реализованы с использованием сверхпроводящих квантовых интерферометров (SQUID). Физическая связь между кубитами зависит от аппаратной разводки, и они не имеют полной связности (когда все биты соединены друг с другом).
От раннего графа «Chimera» до «Pegasus» и «Zephyr», степень связности улучшилась, но ограничения всё ещё существуют.&lt;/p>
&lt;p>Поэтому требуется процесс, называемый &lt;strong>«внедрением миноров (Minor Embedding)»&lt;/strong>, который отображает задачу со сложной графовой структурой на физический граф. Поскольку при этом одна логическая переменная представляется несколькими физическими кубитами (цепочкой), возникает проблема: уменьшается эффективное количество доступных кубитов и снижается точность вычислений.&lt;/p>
&lt;hr>
&lt;h2 id="3-подробно-о-модели-квантовых-вентилей-quantum-gate-model">3. Подробно о модели квантовых вентилей (Quantum Gate Model)
&lt;/h2>&lt;p>Модель квантовых вентилей является квантовым расширением логических вентилей классического компьютера (AND, OR, NOT и т. д.) и представляет собой архитектуру, обеспечивающую &lt;strong>«универсальные квантовые вычисления (Universal Quantum Computation)»&lt;/strong>. Многие компании, такие как IBM, Google, Rigetti и IonQ, используют этот подход.&lt;/p>
&lt;h3 id="31-унитарные-преобразования-и-вектор-состояния">3.1. Унитарные преобразования и вектор состояния
&lt;/h3>&lt;p>В модели квантовых вентилей состояние всей системы кубитов представляется как «вектор состояния (State Vector)» $|\psi\rangle$. Состояние одного кубита выражается как линейная комбинация базисных состояний $|0\rangle$ и $|1\rangle$:
&lt;/p>
$$ |\psi\rangle = \alpha |0\rangle + \beta |1\rangle $$
&lt;p>
Где $\alpha$ и $\beta$ — комплексные амплитуды вероятности, удовлетворяющие условию $|\alpha|^2 + |\beta|^2 = 1$. Геометрически это состояние визуализируется как точка на «сфере Блоха (Bloch Sphere)».&lt;/p>
&lt;p>Шаги квантовых вычислений описываются как применение &lt;strong>унитарного оператора (Unitary Operator) $U$&lt;/strong> к вектору состояния. Унитарная матрица обладает свойством $U^\dagger U = I$ (её произведение с эрмитово сопряженной матрицей дает единичную матрицу), что соответствует обратимой операции, описывающей эволюцию во времени уравнения Шрёдингера в квантовой механике.
&lt;/p>
$$ |\psi_{t+1}\rangle = U_t |\psi_t\rangle $$
&lt;h3 id="32-основные-квантовые-вентили-и-модель-схем">3.2. Основные квантовые вентили и модель схем
&lt;/h3>&lt;p>Алгоритм квантовых вычислений проектируется как последовательность квантовых вентилей (квантовая схема).&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Вентили Паули (X, Y, Z)&lt;/strong>: Поворот на 180 градусов вокруг каждой оси на сфере Блоха. Вентиль X эквивалентен классическому вентилю NOT.&lt;/li>
&lt;li>&lt;strong>Вентиль Адамара (H)&lt;/strong>: Преобразует $|0\rangle$ в $\frac{|0\rangle + |1\rangle}{\sqrt{2}}$, создавая состояние суперпозиции.
$$ H = \frac{1}{\sqrt{2}} \begin{pmatrix} 1 &amp; 1 \\ 1 &amp; -1 \end{pmatrix} $$&lt;/li>
&lt;li>&lt;strong>Вентиль CNOT (Controlled-NOT)&lt;/strong>: Двухкубитный вентиль. Применяет вентиль X к целевому кубиту только в том случае, если управляющий кубит находится в состоянии $|1\rangle$. Это создает квантовую запутанность (Entanglement).&lt;/li>
&lt;/ul>
&lt;p>Любой квантовый алгоритм можно приблизительно выразить комбинацией небольшого числа однокубитных вентилей и вентилей CNOT (универсальный набор вентилей).&lt;/p>
&lt;div class="mermaid">graph LR
Q0["Кубит 0: |0>"] --> H1["Вентиль Адамара (H)"]
Q1["Кубит 1: |0>"] --> I1["Тождественная операция (I)"]
H1 --> C1["Управляющий бит (Control)"]
I1 --> T1["Целевой бит (Target)"]
C1 -. "Запутанность" .- T1
C1 --> M0["Измерение (Measurement)"]
T1 --> M1["Измерение (Measurement)"]
M0 --> Result["Классический результат (0 или 1)"]
M1 --> Result&lt;/div>
&lt;h3 id="33-коррекция-ошибок-и-путь-от-nisq-к-ftqc">3.3. Коррекция ошибок и путь от NISQ к FTQC
&lt;/h3>&lt;p>Самая большая проблема модели квантовых вентилей — «декогеренция», при которой квантовое состояние разрушается из-за шума. Чем глубже шаг вычисления (глубина схемы), тем больше накапливается ошибок.&lt;/p>
&lt;p>Для выполнения идеальных вычислений необходима &lt;strong>квантовая коррекция ошибок (Quantum Error Correction)&lt;/strong>. Например, в таких методах, как «поверхностный код (Surface Code)», несколько физических кубитов объединяются для формирования одного «логического кубита (Logical Qubit)» без ошибок. Однако для создания одного логического кубита требуются тысячи или десятки тысяч физических кубитов, что приводит к огромным накладным расходам.&lt;/p>
&lt;p>Этап, на котором мы находимся сейчас, — это эпоха устройств &lt;strong>NISQ (Noisy Intermediate-Scale Quantum)&lt;/strong> с десятками или сотнями кубитов без коррекции ошибок. Для достижения &lt;strong>FTQC (Fault-Tolerant Quantum Computing: отказоустойчивые квантовые вычисления)&lt;/strong> с полной коррекцией ошибок требуется еще множество прорывов.&lt;/p>
&lt;hr>
&lt;h2 id="4-резюме-технического-и-математического-сравнения">4. Резюме технического и математического сравнения
&lt;/h2>&lt;p>Сравним фундаментальные различия между двумя архитектурами.&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">Параметр сравнения&lt;/th>
&lt;th style="text-align:left">Квантовый отжиг (Quantum Annealing)&lt;/th>
&lt;th style="text-align:left">Модель квантовых вентилей (Gate Model)&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>Вычислительная модель&lt;/strong>&lt;/td>
&lt;td style="text-align:left">Адиабатические квантовые вычисления (непрерывная эволюция гамильтониана во времени)&lt;/td>
&lt;td style="text-align:left">Унитарные преобразования (последовательность дискретных вентильных операций)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>Подходящие задачи&lt;/strong>&lt;/td>
&lt;td style="text-align:left">Задачи комбинаторной оптимизации (QUBO, модель Изинга)&lt;/td>
&lt;td style="text-align:left">Универсальные (квантово-химическое моделирование, факторизация, поиск и т. д.)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>Выразительная способность&lt;/strong>&lt;/td>
&lt;td style="text-align:left">Эвристическая оптимизация (приближенные решения)&lt;/td>
&lt;td style="text-align:left">Эквивалентна универсальной квантовой машине Тьюринга (теоретически возможны любые вычисления)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>Примеры реализации&lt;/strong>&lt;/td>
&lt;td style="text-align:left">D-Wave Systems&lt;/td>
&lt;td style="text-align:left">IBM, Google, Quantinuum, IonQ и др.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>Устойчивость к шуму&lt;/strong>&lt;/td>
&lt;td style="text-align:left">Относительно высокая (остается вблизи основного состояния, допустим некоторый тепловой шум)&lt;/td>
&lt;td style="text-align:left">Очень низкая (даже небольшой шум вызывает сдвиг фазы и разрушает результат вычислений)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>Масштабируемость&lt;/strong>&lt;/td>
&lt;td style="text-align:left">Масштаб от тысяч до десятков тысяч кубитов (зависит от физической структуры. Логические биты создавать сложно)&lt;/td>
&lt;td style="text-align:left">Масштаб сотен кубитов (для FTQC потребуются масштабы в миллионы)&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Квантовый отжиг подходит для решения задач оптимизации в качестве «сопроцессора специального назначения», дополняющего ограничения классических компьютеров. С другой стороны, модель квантовых вентилей является квантовой версией «универсального компьютера» и в конечном итоге стремится к вычислительной мощности, превосходящей классические компьютеры (квантовое превосходство), однако создание такого аппаратного обеспечения чрезвычайно сложно.&lt;/p>
&lt;hr>
&lt;h2 id="5-текущие-ограничения-и-проблемы">5. Текущие ограничения и проблемы
&lt;/h2>&lt;h3 id="ограничения-квантового-отжига">Ограничения квантового отжига
&lt;/h3>&lt;ol>
&lt;li>&lt;strong>Ограничения связности (Connectivity)&lt;/strong>: Из-за упомянутого ранее внедрения миноров требуемое количество физических кубитов экспоненциально возрастает по мере увеличения размера задачи.&lt;/li>
&lt;li>&lt;strong>Точность коэффициентов (Precision)&lt;/strong>: Физические ошибки при настройке на оборудовании таких аналоговых параметров, как $J_{ij}$ и $h_i$, напрямую влияют на качество решения.&lt;/li>
&lt;li>&lt;strong>Температура и неадиабатические переходы&lt;/strong>: Поскольку температура системы не равна абсолютному нулю, существует вероятность отклонения от оптимального решения из-за теплового возбуждения.&lt;/li>
&lt;/ol>
&lt;h3 id="ограничения-модели-квантовых-вентилей">Ограничения модели квантовых вентилей
&lt;/h3>&lt;ol>
&lt;li>&lt;strong>Время когерентности (Coherence Time)&lt;/strong>: Время, в течение которого может поддерживаться квантовое состояние, составляет лишь от нескольких микросекунд до нескольких миллисекунд, и количество вентилей (глубина схемы), которые можно выполнить за это время, строго ограничено.&lt;/li>
&lt;li>&lt;strong>Достоверность вентилей (Gate Fidelity)&lt;/strong>: Частота ошибок операций для двухкубитных вентилей (например, CNOT) всё еще недостаточно низкая (обычно около 99.x%). Для реализации FTQC её необходимо повысить до 99.99% и выше.&lt;/li>
&lt;li>&lt;strong>Квантовый объем (Quantum Volume)&lt;/strong>: Текущая главная задача — масштабирование не только количества кубитов, но и эффективной вычислительной мощности (квантового объема) с учетом взаимосвязей и частоты ошибок.&lt;/li>
&lt;/ol>
&lt;hr>
&lt;h2 id="6-конкретные-примеры-использования-и-алгоритмы">6. Конкретные примеры использования и алгоритмы
&lt;/h2>&lt;p>Давайте рассмотрим конкретные области применения, в которых каждый из методов преуспевает.&lt;/p>
&lt;h3 id="61-примеры-использования-квантового-отжига">6.1. Примеры использования квантового отжига
&lt;/h3>&lt;ul>
&lt;li>&lt;strong>Логистика и маршрутизация&lt;/strong>: Оптимизация маршрутов доставки для большого числа транспортных средств (вариации задачи коммивояжера). Поиск маршрутов в реальном времени с учетом пробок.&lt;/li>
&lt;li>&lt;strong>Финансовая инженерия&lt;/strong>: Оптимизация портфеля. Поиск комбинации активов для максимизации доходности при минимизации рисков.&lt;/li>
&lt;li>&lt;strong>Машинное обучение&lt;/strong>: Отбор признаков (Feature Selection). Извлечение комбинаций переменных из огромных наборов данных, которые вносят наибольший вклад в прогнозирование.&lt;/li>
&lt;li>&lt;strong>Производство&lt;/strong>: Задача составления расписания (Job-shop scheduling) на заводах (на каком станке, какие детали и в каком порядке обрабатывать для максимальной скорости).&lt;/li>
&lt;/ul>
&lt;h3 id="62-примеры-использования-модели-квантовых-вентилей">6.2. Примеры использования модели квантовых вентилей
&lt;/h3>&lt;ul>
&lt;li>&lt;strong>Квантово-химическое моделирование&lt;/strong>: Высокоточное моделирование энергетических состояний молекул и химических реакций.&lt;/li>
&lt;li>&lt;strong>Факторизация на простые множители (Алгоритм Шора)&lt;/strong>: Алгоритм для факторизации огромных составных чисел за полиномиальное время. Если это будет реализовано на практике, текущая инфраструктура криптографии с открытым ключом, такая как шифрование RSA, будет взломана, поэтому переход на постквантовую криптографию (PQC) является насущной необходимостью.&lt;/li>
&lt;li>&lt;strong>Поиск в базе данных (Алгоритм Гровера)&lt;/strong>: Для поиска нужных данных в неструктурированной базе данных классическому компьютеру требуется $O(N)$ шагов, тогда как алгоритм Гровера позволяет выполнить поиск за $O(\sqrt{N})$ шагов.&lt;/li>
&lt;/ul>
&lt;h3 id="63-гибридные-алгоритмы-эпохи-nisq-vqe-и-qaoa">6.3. Гибридные алгоритмы эпохи NISQ: VQE и QAOA
&lt;/h3>&lt;p>Для преодоления ограничений неглубоких квантовых схем в устройствах NISQ привлекают внимание «вариационные квантовые алгоритмы (Variational Quantum Algorithms)», объединяющие преимущества квантовых и классических компьютеров.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>VQE (Variational Quantum Eigensolver)&lt;/strong>: Алгоритм для поиска энергии основного состояния молекулы. Он использует параметризованную квантовую схему (Ansatz) для подготовки квантового состояния и измерения ожидаемого значения энергии $\langle \psi(\theta) | H | \psi(\theta) \rangle$. Используя это ожидаемое значение в качестве целевой функции, параметры $\theta$ обновляются с помощью классического алгоритма оптимизации (например, градиентного спуска). Повторяя этот процесс до сходимости, определяется точное энергетическое состояние молекулы.&lt;/li>
&lt;li>&lt;strong>QAOA (Quantum Approximate Optimization Algorithm)&lt;/strong>: Алгоритм для решения задач комбинаторной оптимизации с использованием модели квантовых вентилей. Адиабатическая эволюция времени квантового отжига аппроксимируется дискретными вентильными операциями с помощью «разложения Троттера (Trotterization)», и приблизительное решение получается путем поочередного применения гамильтониана. Ожидается, что QAOA станет мощным средством решения задач оптимизации на вентильных машинах.&lt;/li>
&lt;/ul>
&lt;div class="mermaid">graph TD
User["Пользовательская задача"] --> Formulation{"Свойство задачи"}
Formulation -- "Комбинаторная оптимизация" --> QA_Path["Квантовый отжиг / Машина Изинга"]
QA_Path --> QUBO["Формулировка QUBO"]
QUBO --> DWave["Выполнение на D-Wave"]
Formulation -- "Химические/универсальные вычисления" --> Gate_Path["Модель квантовых вентилей"]
Gate_Path --> Circuit["Проектирование квантовой схемы (VQE / QAOA)"]
Circuit --> IBMGoogle["Выполнение на квантовом оборудовании IBM / Google"]&lt;/div>
&lt;hr>
&lt;h2 id="7-заключение">7. Заключение
&lt;/h2>&lt;p>Квантовый отжиг и модель квантовых вентилей имеют много общего в том, что оба они используют загадочные свойства квантовой механики в качестве вычислительных ресурсов, однако их подходы и конечные цели сильно различаются.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Квантовый отжиг&lt;/strong> — это «специализированная эвристическая машина» для достижения ранних практических результатов в решении конкретной реальной задачи комбинаторной оптимизации. В настоящее время различные компании уже проводят эксперименты для подтверждения концепции (PoC).&lt;/li>
&lt;li>&lt;strong>Модель квантовых вентилей&lt;/strong> — это «универсальный квантовый компьютер» с потенциалом коренным образом изменить парадигму информатики, от строгих физико-химических симуляций до расшифровки кодов. Однако требуются долгосрочные исследования и разработки, чтобы преодолеть гигантский барьер коррекции ошибок.&lt;/li>
&lt;/ul>
&lt;p>В будущем ожидается создание &lt;strong>«гетерогенных (разнородных) вычислительных»&lt;/strong> сред, в которых классические суперкомпьютеры (HPC) будут ядром, машины отжига будут вызываться для задач оптимизации, а квантовые компьютеры вентильного типа — для квантово-химических вычислений.&lt;/p>
&lt;p>Квантовые компьютеры — всё ещё развивающаяся технология, но они стремительно эволюционируют как в аппаратном обеспечении, так и в алгоритмах. Понимание математики модели Изинга и основ квантовых схем станет мощным оружием в грядущую эпоху «квантовых аборигенов (quantum natives)».&lt;/p>
&lt;hr>
&lt;p>&lt;em>Эта статья представляет собой всестороннее объяснение от базовых концепций квантовых вычислений до последних тенденций в аппаратном обеспечении. Пожалуйста, продолжайте следить за последними тенденциями исследований в будущем.&lt;/em>&lt;/p></description></item><item><title>Симуляция алгоритма Шора на Python</title><link>http://kenji.blog/ru/p/shors-algorithm-simulation-python/</link><pubDate>Fri, 11 Sep 2026 08:00:00 +0900</pubDate><guid>http://kenji.blog/ru/p/shors-algorithm-simulation-python/</guid><description>&lt;img src="http://kenji.blog/p/shors-algorithm-simulation-python/img/eyecatch.jpg" alt="Featured image of post Симуляция алгоритма Шора на Python" />&lt;h1 id="1-введение-кризис-криптографии-вызванный-квантовыми-компьютерами">1. Введение: Кризис криптографии, вызванный квантовыми компьютерами
&lt;/h1>&lt;p>Большая часть безопасности в современном интернет-обществе зависит от &lt;strong>криптографии с открытым ключом&lt;/strong> (в частности, шифрования RSA). Когда мы отправляем информацию о кредитной карте при онлайн-покупках или обмениваемся строго конфиденциальными данными, содержание этих коммуникаций надежно защищено шифрованием RSA.&lt;/p>
&lt;p>Безопасность шифрования RSA основана на математическом факте: «&lt;strong>факторизация огромных целых чисел крайне сложна для классических компьютеров (ПК и суперкомпьютеров, которые мы обычно используем)&lt;/strong>». Однако «&lt;strong>Алгоритм Шора (Shor&amp;rsquo;s Algorithm)&lt;/strong>», представленный Питером Шором (Peter Shor) в 1994 году, в корне разрушил эту предпосылку. Было математически доказано, что если выполнить алгоритм Шора на крупномасштабном квантовом компьютере, то факторизацию, которая заняла бы у классического компьютера больше времени, чем возраст Вселенной, можно решить всего за несколько минут или часов.&lt;/p>
&lt;p>В этой статье мы подробно и обстоятельно объясним, как алгоритм Шора выполняет факторизацию с такой высокой скоростью — от его математического устройства до конкретной реализации симуляции с использованием Python и фреймворка квантовых вычислений &lt;strong>Qiskit&lt;/strong>.&lt;/p>
&lt;hr>
&lt;h1 id="2-радикальное-изменение-вычислительной-сложности-от-экспоненциального-к-полиномиальному-времени">2. Радикальное изменение вычислительной сложности: от экспоненциального к полиномиальному времени
&lt;/h1>&lt;p>Почему факторизация так сложна? Даже при использовании «общего метода решета числового поля (General Number Field Sieve, GNFS)», известного как лучший алгоритм факторизации для классических компьютеров, его вычислительная сложность является субэкспоненциальной.&lt;/p>
&lt;p>Временная сложность факторизации составного числа с количеством цифр $N$ с использованием классических методов выглядит следующим образом:&lt;/p>
$$ O\left(\exp\left( c (\log N)^{1/3} (\log \log N)^{2/3} \right)\right) $$
&lt;p>По этой причине, просто увеличив длину ключа (например, до 2048 или 4096 бит), дешифровка на классическом компьютере потребует нереалистичного времени — тысячи или десятки тысяч лет.&lt;/p>
&lt;p>Однако, если использовать &lt;strong>алгоритм Шора&lt;/strong> на квантовом компьютере, вычислительная сложность радикально сокращается до полиномиального времени относительно количества битов входных данных $\log N$.&lt;/p>
$$ O((\log N)^3) $$
&lt;p>Это означает, что при удвоении количества битов время вычислений на классическом компьютере возрастает астрономически, тогда как на квантовом компьютере оно увеличивается всего примерно в 8 раз. Это &lt;strong>сведение класса сложности от экспоненциального времени к полиномиальному (включение в класс BQP)&lt;/strong> и есть истинное величие алгоритма Шора.&lt;/p>
&lt;div class="mermaid">graph TD
A["Увеличение размера входа (количества бит) N"] --> B{"Выбор алгоритма"}
B -->|Классический: Общий метод решета числового поля| C["Субэкспоненциальный рост O(exp(...))"]
B -->|Квантовый: Алгоритм Шора| D["Полиномиальное время O((log N)^3)"]
C --> E["От тысяч до миллиардов лет (Невозможно взломать)"]
D --> F["От нескольких минут до часов (Взлом за реалистичное время)"]&lt;/div>
&lt;hr>
&lt;h1 id="3-общая-картина-алгоритма-и-математический-фундамент">3. Общая картина алгоритма и математический фундамент
&lt;/h1>&lt;p>Алгоритм Шора на самом деле выполняется не полностью на квантовом компьютере. Он состоит из взаимодействия предварительной и последующей обработки на классическом компьютере и ключевой части (алгоритма нахождения периода) на квантовом компьютере.&lt;/p>
&lt;p>Общий ход алгоритма выглядит следующим образом:&lt;/p>
&lt;div class="mermaid">graph TD
A["Вход: Составное число N для факторизации"] --> B["Выбор случайного числа a, где a &lt; N"]
B --> C{"gcd(a, N) > 1 ?"}
C -- "Да" --> D["Вывод тривиального делителя gcd(a, N) и завершение"]
C -- "Нет" --> E["Нахождение периода r функции f(x) = a^x mod N квантовым алгоритмом"]
E --> F{"r четное и a^(r/2) ≢ -1 mod N ?"}
F -- "Нет" --> B
F -- "Да" --> G["Вычисление делителей p = gcd(a^(r/2) - 1, N), q = gcd(a^(r/2) + 1, N)"]
G --> H["Выход: p, q"]&lt;/div>
&lt;h2 id="сведение-от-факторизации-к-проблеме-нахождения-периода">Сведение от факторизации к проблеме нахождения периода
&lt;/h2>&lt;p>Гениальное озарение Шора заключалось в преобразовании «&lt;strong>проблемы факторизации&lt;/strong>» в «&lt;strong>проблему нахождения порядка (Order Finding Problem)&lt;/strong>».&lt;/p>
&lt;p>Рассмотрим целое число $N$ (число, которое нужно факторизовать) и взаимно простое с ним целое число $a$ ($1 &lt; a &lt; N$). Определим следующую модулярную экспоненциальную функцию:&lt;/p>
$$ f(x) = a^x \bmod N $$
&lt;p>Эта функция имеет некоторый период $r$. То есть для любого $x$ выполняется $f(x+r) = f(x)$. В частности, при $x=0$:&lt;/p>
$$ a^r \equiv 1 \pmod N $$
&lt;p>Минимальное положительное целое число $r$, при котором это выполняется, называется «порядком (Order) $a$ по модулю $N$». Если мы сможем найти этот период $r$, то сможем вывести простые множители следующим образом.&lt;/p>
&lt;p>Преобразовав уравнение, получим:
&lt;/p>
$$ a^r - 1 \equiv 0 \pmod N $$
&lt;p>
Если $r$ четное, мы можем разложить его на множители, используя формулу разности квадратов:
&lt;/p>
$$ (a^{r/2} - 1)(a^{r/2} + 1) \equiv 0 \pmod N $$
&lt;p>Это означает, что $N$ имеет общий делитель либо с $(a^{r/2} - 1)$, либо с $(a^{r/2} + 1)$ (однако должно выполняться условие $a^{r/2} \not\equiv -1 \pmod N$). Следовательно, используя алгоритм Евклида:&lt;/p>
$$ p = \gcd(a^{r/2} - 1, N) $$
$$ q = \gcd(a^{r/2} + 1, N) $$
&lt;p>Вычислив это, мы можем найти нетривиальные простые множители $p, q$ числа $N$. Эти вычисления (нахождение наибольшего общего делителя и генерация случайных чисел) выполняются очень быстро на классическом компьютере. Проблема сводится к тому, &lt;strong>как быстро найти период $r$&lt;/strong>. На классическом компьютере поиск самого этого периода $r$ занимает экспоненциальное время. И здесь на сцену выходит квантовый компьютер.&lt;/p>
&lt;hr>
&lt;h1 id="4-часть-квантового-алгоритма-механизм-нахождения-периода">4. Часть квантового алгоритма: Механизм нахождения периода
&lt;/h1>&lt;p>Подпрограмма для нахождения периода $r$ с использованием квантового компьютера состоит из следующих 4 шагов:&lt;/p>
&lt;div class="mermaid">graph LR
subgraph "Переходы квантовых состояний"
S1["|0⟩|0⟩ (Инициализация)"] --> S2["Вентиль H: Суперпозиция Σ|x⟩|0⟩"]
S2 --> S3["Оракул U: Σ|x⟩|a^x mod N⟩"]
S3 --> S4["QFT: Извлечение периода через интерференцию"]
S4 --> S5["Измерение: Получение приближенного значения y"]
end&lt;/div>
&lt;h2 id="шаг-1-инициализация-квантового-регистра-и-суперпозиция">Шаг 1: Инициализация квантового регистра и суперпозиция
&lt;/h2>&lt;p>Сначала мы подготавливаем два квантовых регистра. Первый регистр предназначен для ввода состояния, а второй — для сохранения результата вычислений функции.
Начальное состояние полностью равно $|0\rangle$.&lt;/p>
$$ |\psi_0\rangle = |0\rangle_1 |0\rangle_2 $$
&lt;p>Применив вентиль Адамара (Hadamard Gate) ко всем кубитам первого регистра, мы создаем состояние равновероятной суперпозиции всех возможных входов $x$ (от $0$ до $Q-1$, где $Q=2^n$).&lt;/p>
$$ |\psi_1\rangle = \frac{1}{\sqrt{Q}} \sum_{x=0}^{Q-1} |x\rangle_1 |0\rangle_2 $$
&lt;p>Благодаря этому квантовый компьютер одновременно сохраняет состояния для всех $Q$ входов за одну операцию. Это является мощным источником &lt;strong>квантового параллелизма&lt;/strong>.&lt;/p>
&lt;h2 id="шаг-2-применение-функции-оракула-модульное-возведение-в-степень">Шаг 2: Применение функции-оракула (модульное возведение в степень)
&lt;/h2>&lt;p>Далее, используя квантовую схему $U_f$, мы вычисляем функцию $f(x) = a^x \bmod N$ и сохраняем ее результат во втором регистре.&lt;/p>
$$ |\psi_2\rangle = \frac{1}{\sqrt{Q}} \sum_{x=0}^{Q-1} |x\rangle_1 |a^x \bmod N\rangle_2 $$
&lt;p>На этом этапе первый и второй регистры находятся в состоянии &lt;strong>квантовой запутанности (энтанглмента)&lt;/strong>. Если бы мы (гипотетически) измерили второй регистр и получили определенное значение $k = a^{x_0} \bmod N$, состояние первого регистра коллапсировало бы в суперпозицию тех $x$, которые дают это значение $k$. Поскольку период функции равен $r$, оставшиеся состояния будут иметь значения с шагом $r$: $x_0, x_0+r, x_0+2r, \dots$&lt;/p>
$$ |\psi_3\rangle = \sqrt{\frac{r}{Q}} \sum_{j=0}^{M-1} |x_0 + j r\rangle_1 |k\rangle_2 $$
&lt;p>Однако мы хотим узнать не $x_0$, а сам период $r$. Напрямую измерить $r$ из этого состояния невозможно. Поэтому мы используем квантовое преобразование Фурье.&lt;/p>
&lt;h2 id="шаг-3-фазовая-интерференция-через-квантовое-преобразование-фурье-qft">Шаг 3: Фазовая интерференция через Квантовое преобразование Фурье (QFT)
&lt;/h2>&lt;p>Мы применяем &lt;strong>Квантовое преобразование Фурье (Quantum Fourier Transform, QFT)&lt;/strong> к первому регистру. QFT — это квантовая версия классического дискретного преобразования Фурье, которая преобразует амплитуды вектора состояния. Действие QFT на базисное состояние $|x\rangle$ определяется следующим образом:&lt;/p>
$$ QFT |x\rangle = \frac{1}{\sqrt{Q}} \sum_{y=0}^{Q-1} \omega^{xy} |y\rangle $$
&lt;p>Где $\omega = e^{2\pi i / Q}$.&lt;/p>
&lt;p>Применение QFT вызывает интерференцию амплитуд состояний. Опуская математические подробности: если применить QFT к состоянию с периодом $r$, волны будут создавать &lt;strong>конструктивную интерференцию (Constructive Interference)&lt;/strong> только тогда, когда $y$ очень близко к кратному $Q/r$. Для всех остальных состояний из-за &lt;strong>деструктивной интерференции (Destructive Interference)&lt;/strong> амплитуды вероятностей взаимно уничтожаются, приближаясь к нулю.&lt;/p>
&lt;h2 id="шаг-4-измерение-и-разложение-в-непрерывную-дробь">Шаг 4: Измерение и разложение в непрерывную дробь
&lt;/h2>&lt;p>Наконец, мы измеряем первый регистр. Полученное при измерении значение $y$ с высокой вероятностью удовлетворяет следующему условию:&lt;/p>
$$ y \approx c \frac{Q}{r} \implies \frac{y}{Q} \approx \frac{c}{r} $$
&lt;p>(Где $c$ — неизвестное целое число $0 \le c &lt; r$)&lt;/p>
&lt;p>Применив классический алгоритм &lt;strong>разложения в непрерывную дробь (Continued Fraction Expansion)&lt;/strong> к полученному рациональному числу $y/Q$, мы вычисляем подходящую дробь $c/r$ и извлекаем период $r$ из ее знаменателя.&lt;/p>
&lt;hr>
&lt;h1 id="5-реализация-симуляции-с-использованием-python-и-qiskit">5. Реализация симуляции с использованием Python и Qiskit
&lt;/h1>&lt;p>Поскольку одна лишь теория не дает полного представления, давайте попробуем смоделировать алгоритм Шора на практике, используя Python и фреймворк квантовых вычислений от IBM — &lt;strong>Qiskit&lt;/strong>.&lt;/p>
&lt;p>Здесь мы реализуем самый классический и известный пример: &lt;strong>«факторизация $N=15$ с использованием $a=7$»&lt;/strong>.&lt;/p>
&lt;h2 id="подготовка-среды-выполнения">Подготовка среды выполнения
&lt;/h2>&lt;p>Пожалуйста, заранее установите Qiskit.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">pip install qiskit qiskit-aer numpy
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="полный-код-реализации-на-python">Полный код реализации на Python
&lt;/h2>&lt;p>Следующий код является примером реализации алгоритма Шора, адаптированного для $N=15, a=7$. Поскольку построение универсальной модульной экспоненциальной схемы требует слишком высоких вычислительных затрат на текущих симуляторах, операции вентилей для конкретного случая $a=7$ здесь жестко закодированы.&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt"> 10
&lt;/span>&lt;span class="lnt"> 11
&lt;/span>&lt;span class="lnt"> 12
&lt;/span>&lt;span class="lnt"> 13
&lt;/span>&lt;span class="lnt"> 14
&lt;/span>&lt;span class="lnt"> 15
&lt;/span>&lt;span class="lnt"> 16
&lt;/span>&lt;span class="lnt"> 17
&lt;/span>&lt;span class="lnt"> 18
&lt;/span>&lt;span class="lnt"> 19
&lt;/span>&lt;span class="lnt"> 20
&lt;/span>&lt;span class="lnt"> 21
&lt;/span>&lt;span class="lnt"> 22
&lt;/span>&lt;span class="lnt"> 23
&lt;/span>&lt;span class="lnt"> 24
&lt;/span>&lt;span class="lnt"> 25
&lt;/span>&lt;span class="lnt"> 26
&lt;/span>&lt;span class="lnt"> 27
&lt;/span>&lt;span class="lnt"> 28
&lt;/span>&lt;span class="lnt"> 29
&lt;/span>&lt;span class="lnt"> 30
&lt;/span>&lt;span class="lnt"> 31
&lt;/span>&lt;span class="lnt"> 32
&lt;/span>&lt;span class="lnt"> 33
&lt;/span>&lt;span class="lnt"> 34
&lt;/span>&lt;span class="lnt"> 35
&lt;/span>&lt;span class="lnt"> 36
&lt;/span>&lt;span class="lnt"> 37
&lt;/span>&lt;span class="lnt"> 38
&lt;/span>&lt;span class="lnt"> 39
&lt;/span>&lt;span class="lnt"> 40
&lt;/span>&lt;span class="lnt"> 41
&lt;/span>&lt;span class="lnt"> 42
&lt;/span>&lt;span class="lnt"> 43
&lt;/span>&lt;span class="lnt"> 44
&lt;/span>&lt;span class="lnt"> 45
&lt;/span>&lt;span class="lnt"> 46
&lt;/span>&lt;span class="lnt"> 47
&lt;/span>&lt;span class="lnt"> 48
&lt;/span>&lt;span class="lnt"> 49
&lt;/span>&lt;span class="lnt"> 50
&lt;/span>&lt;span class="lnt"> 51
&lt;/span>&lt;span class="lnt"> 52
&lt;/span>&lt;span class="lnt"> 53
&lt;/span>&lt;span class="lnt"> 54
&lt;/span>&lt;span class="lnt"> 55
&lt;/span>&lt;span class="lnt"> 56
&lt;/span>&lt;span class="lnt"> 57
&lt;/span>&lt;span class="lnt"> 58
&lt;/span>&lt;span class="lnt"> 59
&lt;/span>&lt;span class="lnt"> 60
&lt;/span>&lt;span class="lnt"> 61
&lt;/span>&lt;span class="lnt"> 62
&lt;/span>&lt;span class="lnt"> 63
&lt;/span>&lt;span class="lnt"> 64
&lt;/span>&lt;span class="lnt"> 65
&lt;/span>&lt;span class="lnt"> 66
&lt;/span>&lt;span class="lnt"> 67
&lt;/span>&lt;span class="lnt"> 68
&lt;/span>&lt;span class="lnt"> 69
&lt;/span>&lt;span class="lnt"> 70
&lt;/span>&lt;span class="lnt"> 71
&lt;/span>&lt;span class="lnt"> 72
&lt;/span>&lt;span class="lnt"> 73
&lt;/span>&lt;span class="lnt"> 74
&lt;/span>&lt;span class="lnt"> 75
&lt;/span>&lt;span class="lnt"> 76
&lt;/span>&lt;span class="lnt"> 77
&lt;/span>&lt;span class="lnt"> 78
&lt;/span>&lt;span class="lnt"> 79
&lt;/span>&lt;span class="lnt"> 80
&lt;/span>&lt;span class="lnt"> 81
&lt;/span>&lt;span class="lnt"> 82
&lt;/span>&lt;span class="lnt"> 83
&lt;/span>&lt;span class="lnt"> 84
&lt;/span>&lt;span class="lnt"> 85
&lt;/span>&lt;span class="lnt"> 86
&lt;/span>&lt;span class="lnt"> 87
&lt;/span>&lt;span class="lnt"> 88
&lt;/span>&lt;span class="lnt"> 89
&lt;/span>&lt;span class="lnt"> 90
&lt;/span>&lt;span class="lnt"> 91
&lt;/span>&lt;span class="lnt"> 92
&lt;/span>&lt;span class="lnt"> 93
&lt;/span>&lt;span class="lnt"> 94
&lt;/span>&lt;span class="lnt"> 95
&lt;/span>&lt;span class="lnt"> 96
&lt;/span>&lt;span class="lnt"> 97
&lt;/span>&lt;span class="lnt"> 98
&lt;/span>&lt;span class="lnt"> 99
&lt;/span>&lt;span class="lnt">100
&lt;/span>&lt;span class="lnt">101
&lt;/span>&lt;span class="lnt">102
&lt;/span>&lt;span class="lnt">103
&lt;/span>&lt;span class="lnt">104
&lt;/span>&lt;span class="lnt">105
&lt;/span>&lt;span class="lnt">106
&lt;/span>&lt;span class="lnt">107
&lt;/span>&lt;span class="lnt">108
&lt;/span>&lt;span class="lnt">109
&lt;/span>&lt;span class="lnt">110
&lt;/span>&lt;span class="lnt">111
&lt;/span>&lt;span class="lnt">112
&lt;/span>&lt;span class="lnt">113
&lt;/span>&lt;span class="lnt">114
&lt;/span>&lt;span class="lnt">115
&lt;/span>&lt;span class="lnt">116
&lt;/span>&lt;span class="lnt">117
&lt;/span>&lt;span class="lnt">118
&lt;/span>&lt;span class="lnt">119
&lt;/span>&lt;span class="lnt">120
&lt;/span>&lt;span class="lnt">121
&lt;/span>&lt;span class="lnt">122
&lt;/span>&lt;span class="lnt">123
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">numpy&lt;/span> &lt;span class="k">as&lt;/span> &lt;span class="nn">np&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">qiskit&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">QuantumCircuit&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">qiskit_aer&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">AerSimulator&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">qiskit.visualization&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">plot_histogram&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">from&lt;/span> &lt;span class="nn">fractions&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">Fraction&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="kn">import&lt;/span> &lt;span class="nn">math&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 1. Функция для построения обратного квантового преобразования Фурье (QFT†)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">qft_dagger&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;Генерация схемы обратного квантового преобразования Фурье для n кубитов&amp;#34;&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">qc&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">QuantumCircuit&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Вентили SWAP для обращения порядка&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="n">qubit&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="nb">range&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="o">//&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">qc&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">swap&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">qubit&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">n&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">qubit&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Применение управляемых фазовых вентилей и вентиля H&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="n">j&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="nb">range&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="n">m&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="nb">range&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">j&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">qc&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">cp&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">np&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">pi&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="nb">float&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="o">**&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">j&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">m&lt;/span>&lt;span class="p">)),&lt;/span> &lt;span class="n">m&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">j&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">qc&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">h&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">j&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">qc&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">name&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="s2">&amp;#34;QFT_dagger&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">qc&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 2. Функция для построения управляемой модульной экспоненциальной операции 7^x mod 15&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">c_amod15&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">a&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">power&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s2">&amp;#34;&amp;#34;&amp;#34;Генерация управляемого вентиля U для конкретного a и степени (только для N=15)&amp;#34;&amp;#34;&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">U&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">QuantumCircuit&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">4&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="n">_&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="nb">range&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">power&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Жестко закодированная логика 7^x mod 15 для случая a=7&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">a&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="mi">13&lt;/span>&lt;span class="p">]:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">U&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">swap&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="mi">3&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">U&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">swap&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">U&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">swap&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">a&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="mi">7&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="mi">8&lt;/span>&lt;span class="p">]:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">U&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">swap&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">U&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">swap&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">U&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">swap&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="mi">3&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">a&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="mi">4&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">11&lt;/span>&lt;span class="p">]:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">U&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">swap&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="mi">3&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">U&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">swap&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">a&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="mi">7&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="mi">11&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="mi">13&lt;/span>&lt;span class="p">]:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="n">q&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="nb">range&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">4&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">U&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">q&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">U&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">U&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">to_gate&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">U&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">name&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">a&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">^&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">power&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2"> mod 15&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">c_U&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">U&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">control&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">c_U&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># 3. Построение основной квантовой схемы&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">def&lt;/span> &lt;span class="nf">shor_circuit&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">a&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">n_count&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># n_count: Количество битов управляющего регистра&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Целевой регистр использует 4 бита для представления чисел от 0 до 15&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">qc&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">QuantumCircuit&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n_count&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="mi">4&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">n_count&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Инициализация первого регистра (управляющего регистра) (создание суперпозиции)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="n">q&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="nb">range&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n_count&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">qc&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">h&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">q&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Инициализация второго регистра (целевого регистра) в |1&amp;gt; (0001)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">qc&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">x&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">3&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="n">n_count&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Применение управляемой модульной экспоненциальной операции (оракула)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="n">q&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="nb">range&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n_count&lt;/span>&lt;span class="p">):&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Применение операции в степени 2^q&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">qc&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">append&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">c_amod15&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">a&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">2&lt;/span>&lt;span class="o">**&lt;/span>&lt;span class="n">q&lt;/span>&lt;span class="p">),&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">[&lt;/span>&lt;span class="n">q&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="n">i&lt;/span>&lt;span class="o">+&lt;/span>&lt;span class="n">n_count&lt;/span> &lt;span class="k">for&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="nb">range&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">4&lt;/span>&lt;span class="p">)])&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Применение обратного квантового преобразования Фурье к первому регистру&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">qc&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">append&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">qft_dagger&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n_count&lt;/span>&lt;span class="p">),&lt;/span> &lt;span class="nb">range&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n_count&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Измерение первого регистра&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">qc&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">measure&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nb">range&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n_count&lt;/span>&lt;span class="p">),&lt;/span> &lt;span class="nb">range&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n_count&lt;/span>&lt;span class="p">))&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">qc&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># --- Секция выполнения ---&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">if&lt;/span> &lt;span class="vm">__name__&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="s2">&amp;#34;__main__&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">N&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">15&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">a&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">7&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">n_count&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">8&lt;/span> &lt;span class="c1"># Использование 8 кубитов для управляющего регистра (Q=256)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;Настройки поиска: N=&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">N&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">, a=&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">a&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">, количество управляющих кубитов=&lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">n_count&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Генерация схемы&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">qc&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">shor_circuit&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">a&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">n_count&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Выполнение в симуляторе&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">sim&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">AerSimulator&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># В новых версиях Qiskit рекомендуется использовать transpile&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kn">from&lt;/span> &lt;span class="nn">qiskit&lt;/span> &lt;span class="kn">import&lt;/span> &lt;span class="n">transpile&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">compiled_circuit&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">transpile&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">qc&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">sim&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">job&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">sim&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">run&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">compiled_circuit&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">shots&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">1024&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">result&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">job&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">result&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">counts&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">result&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">get_counts&lt;/span>&lt;span class="p">()&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s2">Результаты измерений (битовая строка: количество наблюдений):&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="n">bitstring&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">count&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="n">counts&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">items&lt;/span>&lt;span class="p">():&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34; &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">bitstring&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">count&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2"> раз&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Классическая постобработка: Определение периода r с помощью разложения в непрерывную дробь&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s2">--- Вычисление периода и факторизация ---&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">phases&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">[]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="n">output&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="n">counts&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Преобразование битовой строки в десятичное число&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">decimal&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="nb">int&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">output&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">2&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Фаза = Измеренное значение / 2^n_count&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">phase&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">decimal&lt;/span> &lt;span class="o">/&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="o">**&lt;/span>&lt;span class="n">n_count&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">phases&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">append&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">phase&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Получение подходящей дроби через разложение в непрерывную дробь. Верхний предел знаменателя - N=15&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">frac&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">Fraction&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">phase&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">limit_denominator&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">15&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">r&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">frac&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">denominator&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34;Измеренное значение: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">decimal&lt;/span>&lt;span class="si">:&lt;/span>&lt;span class="s2">3d&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2"> | Фаза: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">phase&lt;/span>&lt;span class="si">:&lt;/span>&lt;span class="s2">.4f&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2"> | Непрерывная дробь: &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">frac&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2"> | Оценочный период r = &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">r&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Проверка, является ли период r четным и дает ли он действительный результат&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">r&lt;/span> &lt;span class="o">%&lt;/span> &lt;span class="mi">2&lt;/span> &lt;span class="o">==&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">guess1&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">math&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">gcd&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">a&lt;/span>&lt;span class="o">**&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">r&lt;/span>&lt;span class="o">//&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">N&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">guess2&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">math&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">gcd&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">a&lt;/span>&lt;span class="o">**&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">r&lt;/span>&lt;span class="o">//&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">N&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="n">guess1&lt;/span> &lt;span class="ow">not&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">N&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="ow">or&lt;/span> &lt;span class="n">guess2&lt;/span> &lt;span class="ow">not&lt;/span> &lt;span class="ow">in&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">N&lt;/span>&lt;span class="p">]:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34; =&amp;gt; Успех! Простые множители &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">N&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2"> - это &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">guess1&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2"> и &lt;/span>&lt;span class="si">{&lt;/span>&lt;span class="n">guess2&lt;/span>&lt;span class="si">}&lt;/span>&lt;span class="s2">.&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">else&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34; =&amp;gt; Только тривиальные множители. Повторить.&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">else&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="nb">print&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="sa">f&lt;/span>&lt;span class="s2">&amp;#34; =&amp;gt; Неудача, так как период нечетный.&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="объяснение-кода-и-анализ-результатов-выполнения">Объяснение кода и анализ результатов выполнения
&lt;/h2>&lt;p>При выполнении приведенного выше кода в качестве результатов измерения управляющего регистра с высокой вероятностью будут получены определенные пики (наблюдаемые значения). При &lt;code>n_count=8&lt;/code> ($Q=256$) на идеальном квантовом компьютере (или симуляторе) такие значения, как &lt;code>0&lt;/code>, &lt;code>64&lt;/code>, &lt;code>128&lt;/code>, &lt;code>192&lt;/code>, появятся с подавляющей вероятностью.&lt;/p>
&lt;p>Если разделить их на $Q=256$, то фаза $y/Q$ будет соответственно $0.0$, $0.25$, $0.5$, $0.75$.
Если разложить эту фазу в непрерывную дробь:&lt;/p>
&lt;ul>
&lt;li>$0.25 \to 1/4$ (Оценочный период $r=4$)&lt;/li>
&lt;li>$0.50 \to 1/2$ (Оценочный период $r=2$)&lt;/li>
&lt;li>$0.75 \to 3/4$ (Оценочный период $r=4$)&lt;/li>
&lt;/ul>
&lt;p>Используя полученный период $r=4$, мы вычисляем простые множители.
Поскольку $a=7, r=4$:
$p = \gcd(7^2 - 1, 15) = \gcd(48, 15) = 3$
$q = \gcd(7^2 + 1, 15) = \gcd(50, 15) = 5$&lt;/p>
&lt;p>Мы успешно выполнили факторизацию $15 = 3 \times 5$.&lt;/p>
&lt;blockquote>
&lt;p>[!TIP]
Если получено измеренное значение $y=128$ (фаза $0.5$), знаменатель будет $2$, и мы получим делитель периода, а не истинный период $r=4$. В таких случаях можно найти истинный период, выполнив алгоритм несколько раз или проверив кратные полученного $r$.&lt;/p>
&lt;/blockquote>
&lt;hr>
&lt;h1 id="6-проблемы-практического-применения-и-ограничения-эпохи-nisq">6. Проблемы практического применения и ограничения эпохи NISQ
&lt;/h1>&lt;p>Хотя на симуляторе легко факторизовать $N=15$, для факторизации RSA-2048 (617-значное десятичное число), используемого в реальном мире, перед реальными квантовыми компьютерами всё ещё стоит множество барьеров.&lt;/p>
&lt;p>Эпоха, в которой мы живем сейчас, называется &lt;strong>эпохой NISQ (Noisy Intermediate-Scale Quantum: шумные квантовые устройства промежуточного масштаба)&lt;/strong>. Кубиты крайне уязвимы к шуму из внешней среды, и в процессе вычислений происходит «декогеренция», разрушающая их состояние.&lt;/p>
&lt;p>Для точного выполнения глубоких схем (с большим количеством вентилей), таких как алгоритм Шора, абсолютно необходима &lt;strong>квантовая коррекция ошибок (Quantum Error Correction)&lt;/strong>. Для создания одного «логического кубита» без шумов необходимо закодировать тысячи «физических кубитов» с помощью поверхностных кодов (Surface Code) и других методов.&lt;/p>
&lt;p>По оценкам, для взлома 2048-битного шифрования RSA потребуются тысячи идеальных логических кубитов, а для их реализации потребуется отказоустойчивый квантовый компьютер, оснащенный &lt;strong>от нескольких миллионов до десятков миллионов физических кубитов&lt;/strong>. Поскольку даже современные передовые квантовые процессоры имеют лишь от сотен до нескольких тысяч физических кубитов, шифрование по всему миру не будет взломано в одночасье.&lt;/p>
&lt;blockquote>
&lt;p>[!WARNING]
Однако существует модель угрозы «Store Now, Decrypt Later (Сохранить сейчас, расшифровать позже)». Злоумышленники могут использовать стратегию массового сохранения текущих зашифрованных конфиденциальных коммуникаций в виде зашифрованных данных, чтобы полностью расшифровать их в тот самый момент, когда через 10–20 лет появятся мощные квантовые компьютеры.&lt;/p>
&lt;/blockquote>
&lt;hr>
&lt;h1 id="7-переход-к-постквантовой-криптографии-pqc">7. Переход к постквантовой криптографии (PQC)
&lt;/h1>&lt;p>В преддверии такого «Q-Day» (дня, когда квантовые компьютеры взломают шифрование), криптографы по всему миру во главе с Национальным институтом стандартов и технологий США (NIST) работают над стандартизацией &lt;strong>постквантовой криптографии (Post-Quantum Cryptography, PQC)&lt;/strong>.&lt;/p>
&lt;p>PQC основывается на новых математических проблемах (например, проблемы на решетках, многомерные полиномиальные проблемы, алгоритмы на основе хеш-функций), которые, как считается математически, не могут быть эффективно решены даже с помощью алгоритма Шора (или алгоритма Гровера). Такие алгоритмы, как «CRYSTALS-Kyber» и «CRYSTALS-Dilithium», уже выбраны в качестве стандартов, и постепенно начинается их внедрение в iMessage от Apple и коммуникационные протоколы различных веб-браузеров.&lt;/p>
&lt;p>Для инженеров, управляющих ИТ-инфраструктурой, одной из главных задач в будущем станет внедрение в системы «криптографической гибкости (crypto-agility: возможности быстрого переключения методов шифрования)» для перехода от существующего RSA и криптографии на эллиптических кривых к PQC.&lt;/p>
&lt;hr>
&lt;h1 id="8-заключение">8. Заключение
&lt;/h1>&lt;p>В этой статье мы провели исчерпывающее объяснение объемом в 10 тысяч символов: начиная с теоретического математического фундамента алгоритма Шора, механизма извлечения периода с использованием квантового преобразования Фурье, и заканчивая конкретным кодом симуляции на Python и Qiskit.&lt;/p>
&lt;p>Тот факт, что законы физики микромира — квантовой механики — могут фундаментально разрушить теорию вычислительной сложности и криптографию, которые являются основой макроскопической информатики, представляет собой один из самых захватывающих сдвигов парадигмы в истории науки. Мы продолжим внимательно следить за разворачивающейся борьбой между постоянно развивающимися технологиями квантовых вычислений и противостоящими им новыми технологиями шифрования.&lt;/p>
&lt;p>Обязательно запустите представленный здесь код на Python в вашей собственной среде и испытайте на себе «магию вычислений», создаваемую суперпозицией и интерференцией квантовых состояний.&lt;/p>
&lt;hr>
&lt;p>&lt;strong>Источники и литература&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Shor, P. W. (1994). &amp;ldquo;Algorithms for quantum computation: discrete logarithms and factoring&amp;rdquo;. Proceedings 35th Annual Symposium on Foundations of Computer Science.&lt;/li>
&lt;li>Nielsen, M. A., &amp;amp; Chuang, I. L. (2010). &amp;ldquo;Quantum Computation and Quantum Information&amp;rdquo;. Cambridge University Press.&lt;/li>
&lt;li>Qiskit Documentation: &lt;a class="link" href="https://qiskit.org/documentation/" target="_blank" rel="noopener"
>https://qiskit.org/documentation/&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>【Иллюстрированное руководство по PQC】Сравнение основных алгоритмов постквантовой криптографии</title><link>http://kenji.blog/ru/p/post-quantum-cryptography-algorithms-comparison/</link><pubDate>Fri, 11 Sep 2026 07:00:00 +0900</pubDate><guid>http://kenji.blog/ru/p/post-quantum-cryptography-algorithms-comparison/</guid><description>&lt;img src="http://kenji.blog/p/post-quantum-cryptography-algorithms-comparison/img/eyecatch.jpg" alt="Featured image of post 【Иллюстрированное руководство по PQC】Сравнение основных алгоритмов постквантовой криптографии" />&lt;h2 id="1-введение-криптографический-кризис-вызванный-квантовыми-компьютерами">1. Введение: «Криптографический кризис», вызванный квантовыми компьютерами
&lt;/h2>&lt;p>В современном интернет-обществе криптография с открытым ключом является незаменимой инфраструктурой для защиты конфиденциальности связи и целостности данных. Безопасность широко используемых сегодня алгоритмов RSA и криптографии на эллиптических кривых (ECC) опирается на математические барьеры — «сложность факторизации больших составных чисел» и «сложность задачи дискретного логарифмирования на эллиптических кривых» соответственно. Доказано, что классическим компьютерам (компьютерам, которые мы используем сейчас, включая суперкомпьютеры) для решения этих математических задач потребовалось бы время, превышающее возраст Вселенной, и это служило основой их безопасности.&lt;/p>
&lt;p>Однако эта надежная предпосылка может быть разрушена до основания из-за развития теории и практического применения &lt;strong>квантовых компьютеров&lt;/strong>. В 1994 году криптограф Питер Шор (Peter Shor) представил «&lt;strong>Алгоритм Шора&lt;/strong>», который теоретически доказал, что при запуске на отказоустойчивом универсальном квантовом компьютере (CRQC: Cryptographically Relevant Quantum Computer) достаточной мощности, задачи факторизации и дискретного логарифмирования могут быть решены за «полиномиальное время». Это означает, что все используемые в настоящее время алгоритмы криптографии с открытым ключом будут нейтрализованы.&lt;/p>
&lt;div class="mermaid">graph TD
A["Крупномасштабный квантовый компьютер (CRQC)"] -->|Запуск| B["Алгоритм Шора"]
B -->|Взлом за полиномиальное время| C["Задача факторизации (RSA)"]
B -->|Взлом за полиномиальное время| D["Задача дискретного логарифмирования (ECC / ECDSA)"]
C --> E["Прослушивание связи, подделка данных, спуфинг"]
D --> E
F["Store Now, Decrypt Later (SNDL)"] --> E&lt;/div>
&lt;p>Считать, что «полноценные квантовые компьютеры появятся еще через несколько десятилетий, поэтому проблем нет» — крайне опасно. Причина в том, что метод атаки, известный как &lt;strong>Store Now, Decrypt Later (SNDL: Сохрани сейчас, расшифруй потом)&lt;/strong>, уже стал реальной угрозой. Это атака, при которой враждебные государства или хакерские организации сохраняют огромные объемы текущих зашифрованных данных связи (например, TLS-трафик) в хранилища, чтобы расшифровать их все в тот момент, когда в будущем станет доступен мощный квантовый компьютер. Государственные секреты, инфраструктурная информация и медицинские данные, требующие долгосрочной защиты, уже подвержены этой угрозе.&lt;/p>
&lt;p>Кроме того, для симметричной криптографии (например, AES) и хеш-функций (например, SHA-256) существует &lt;strong>Алгоритм Гровера&lt;/strong>, открытый в 1996 году. Он сокращает вычислительную сложность атаки полным перебором (брутфорс) до квадратного корня. Другими словами, уровень безопасности AES-128 фактически снижается вдвое — до 2 в 64-й степени, поэтому в квантовую эру рекомендуется использовать более длинные ключи и хеши, такие как AES-256 и SHA-384.&lt;/p>
&lt;p>Для противодействия этому беспрецедентному криптографическому кризису была создана &lt;strong>постквантовая криптография (Post-Quantum Cryptography: PQC)&lt;/strong>, основанная на новых математических задачах, которые трудно решить даже с помощью квантовых компьютеров. В этой статье, основываясь на результатах процесса стандартизации PQC, проведенного Национальным институтом стандартов и технологий США (NIST), мы подробно рассмотрим основные алгоритмы PQC — от их математических основ до механизмов работы и сравнения архитектур.&lt;/p>
&lt;hr>
&lt;h2 id="2-обзор-и-история-проекта-по-стандартизации-pqc-от-nist">2. Обзор и история проекта по стандартизации PQC от NIST
&lt;/h2>&lt;p>Переход на новые криптографические технологии, включая перепроектирование протоколов, обновление систем и замену оборудования, занимает от нескольких лет до десятилетий. Поэтому криптографы во всем мире заранее начали исследования в области PQC. Центральную роль в этом сыграл NIST (Национальный институт стандартов и технологий) США. В 2016 году NIST объявил о начале процесса стандартизации PQC и начал принимать предложения совершенно новых криптографических алгоритмов от мирового криптографического сообщества.&lt;/p>
&lt;p>Объектами стандартизации стали две основные категории:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Криптография с открытым ключом / Механизм инкапсуляции ключа (KEM: Key Encapsulation Mechanism)&lt;/strong>: Механизм для безопасного обмена (доставки) симметричных ключей, используемых для шифрования каналов связи, например, при TLS-соединениях.&lt;/li>
&lt;li>&lt;strong>Цифровые подписи (Digital Signatures)&lt;/strong>: Механизм для проверки отсутствия фальсификации данных и предотвращения подмены отправителя (аутентичность) при обновлениях программного обеспечения или в цифровых сертификатах.&lt;/li>
&lt;/ol>
&lt;p>После почти шести лет интенсивной оценки, анализа и соревнований по взлому (раунды 1–3), а также дополнительной оценки некоторых алгоритмов в раунде 4, следующие алгоритмы были официально выпущены в качестве Федеральных стандартов обработки информации (FIPS) в 2024 году и утверждены как будущие мировые стандарты:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>FIPS 203 (ML-KEM)&lt;/strong>: KEM на базе CRYSTALS-Kyber&lt;/li>
&lt;li>&lt;strong>FIPS 204 (ML-DSA)&lt;/strong>: Цифровая подпись на базе CRYSTALS-Dilithium&lt;/li>
&lt;li>&lt;strong>FIPS 205 (SLH-DSA)&lt;/strong>: Цифровая подпись на основе хешей без сохранения состояния на базе SPHINCS+&lt;/li>
&lt;li>&lt;strong>(Ожидается в будущем) FN-DSA&lt;/strong>: Цифровая подпись на базе FALCON&lt;/li>
&lt;/ul>
&lt;p>Выбранные алгоритмы опираются на различные математические «задачи о сложности», что обеспечивает разнообразие (Crypto Agility), чтобы в случае обнаружения критической уязвимости в одном алгоритме вся система не рухнула. В процессе стандартизации криптография на решетках (Lattice-based cryptography) стала главным героем с точки зрения производительности, но криптография на основе хешей и кодов была принята в качестве надежного резерва.&lt;/p>
&lt;hr>
&lt;h2 id="3-классификация-основных-математических-подходов-pqc">3. Классификация основных математических подходов PQC
&lt;/h2>&lt;p>Алгоритмы PQC в основном делятся на следующие пять категорий в зависимости от математических задач, служащих основой их безопасности. В этой статье мы подробно рассмотрим первые три.&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Криптография на решетках (Lattice-based Cryptography)&lt;/strong>:
Основана на задаче нахождения кратчайшего вектора (SVP), задаче нахождения ближайшего вектора (CVP) в многомерном пространстве решеток, а также на производной от них задаче LWE. Это ядро стандартизации NIST, к которому относятся Kyber, Dilithium и FALCON. Они предлагают лучший баланс между скоростью обработки, размером открытого ключа и размером шифротекста, что делает их подходящими для общего использования.&lt;/li>
&lt;li>&lt;strong>Криптография на основе хешей (Hash-based Cryptography)&lt;/strong>:
Безопасность опирается исключительно на «устойчивость к коллизиям» и «односторонность» криптографических хеш-функций (таких как SHA-2 или SHAKE). Применима только для цифровых подписей (например, SPHINCS+), но характеризуется наиболее строгим доказательством безопасности и чрезвычайно высокой устойчивостью к неизвестным математическим атакам.&lt;/li>
&lt;li>&lt;strong>Криптография на основе кодов (Code-based Cryptography)&lt;/strong>:
Основана на теории кодов с исправлением ошибок и опирается на сложность задачи синдромного декодирования (Syndrome Decoding Problem). Типичным представителем является Classic McEliece, предложенный в 1970-х годах. Обладает долгой историей и доказанной безопасностью, но при этом имеет крайне большие размеры открытых ключей (в мегабайтах).&lt;/li>
&lt;li>&lt;strong>Многомерная полиномиальная криптография (Multivariate Polynomial Cryptography)&lt;/strong>:
Основана на сложности решения системы нелинейных уравнений со многими переменными над конечным полем (задача MQ). Предлагалась в основном для цифровых подписей (например, Rainbow), но во время финального раунда NIST был обнаружен мощный метод атаки, позволивший взломать ее на обычном ПК за несколько дней, из-за чего многие алгоритмы выбыли из процесса стандартизации.&lt;/li>
&lt;li>&lt;strong>Криптография на основе изогений (Isogeny-based Cryptography)&lt;/strong>:
Основана на задаче поиска пути в графах изогений эллиптических кривых. Имела очень маленький размер ключа и ожидалась как достойный преемник ECC, однако в 2022 году финалист «SIKE» был полностью взломан всего за несколько часов на обычном ПК с использованием классической математики (атака Castryck-Decru), что стало драматичным финалом, символизирующим сложность и опасность проектирования PQC.&lt;/li>
&lt;/ol>
&lt;hr>
&lt;h2 id="4-глубины-криптографии-на-решетках-задача-lwe-и-математические-основы-module-lwe">4. Глубины криптографии на решетках: задача LWE и математические основы Module-LWE
&lt;/h2>&lt;p>В настоящее время наиболее перспективной и ставшей ядром стандартизации является &lt;strong>криптография на решетках&lt;/strong>. В основе ее безопасности лежит &lt;strong>задача LWE (Learning with Errors: Обучение с ошибками)&lt;/strong>. Она была предложена Одедом Регевом (Oded Regev) в 2005 году, и за это прорывное достижение он был удостоен премии Гёделя. Невозможно говорить о современной PQC без понимания задачи LWE.&lt;/p>
&lt;h3 id="41-что-такое-задача-lwe-learning-with-errors">4.1. Что такое задача LWE (Learning with Errors)?
&lt;/h3>&lt;p>Сначала рассмотрим простую систему линейных уравнений. Предположим, по модулю $q$ даны известная случайная матрица $A$, неизвестный секретный вектор $\vec{s}$ и их произведение $\vec{b}$:&lt;/p>
$$ \vec{b} = A\vec{s} \pmod q $$
&lt;p>В этом случае, найти неизвестный $\vec{s}$ из открытой информации $A$ и $\vec{b}$ довольно просто. Используя классический алгоритм «метод Гаусса», можно легко вычислить $\vec{s}$ за полиномиальное время.&lt;/p>
&lt;p>Однако, если добавить к этому уравнению «небольшую преднамеренную ошибку (шум)», сложность задачи резко возрастает. Это и есть &lt;strong>задача LWE&lt;/strong>.&lt;/p>
&lt;p>Имеется неизвестный секретный вектор $\vec{s} \in \mathbb{Z}_q^n$ и случайно выбранная матрица $A \in \mathbb{Z}_q^{m \times n}$. Кроме того, подготавливается вектор ошибок $\vec{e} \in \mathbb{Z}_q^m$ с «достаточно малыми значениями элементов», выбранными в соответствии с нормальным или биномиальным распределением, и $\vec{b}$ вычисляется следующим образом:&lt;/p>
$$ \vec{b} = A\vec{s} + \vec{e} \pmod q $$
&lt;p>&lt;strong>Поисковая задача LWE (Search LWE)&lt;/strong> заключается в нахождении секретной информации $\vec{s}$ из открытых данных $(A, \vec{b})$. Из-за присутствия ошибки $\vec{e}$ попытки применить алгебраические методы, такие как метод Гаусса, терпят неудачу: в процессе сложения и вычитания уравнений ошибка $\vec{e}$ нарастает, как снежный ком, и в конечном итоге результат становится неотличимым от случайных значений.&lt;/p>
&lt;p>Величие задачи LWE заключается в наличии сильного теоретического доказательства (сведения), согласно которому, если не существует квантового алгоритма, способного решить задачи на решетках в худшем случае (Worst-case hardness), такие как GapSVP и SIVP, то задачу LWE невозможно решить в среднем случае (Average-case). Это означает, что даже случайно сгенерированные криптографические ключи обладают надежной безопасностью, подкрепленной теоретическими пределами.&lt;/p>
&lt;h3 id="42-радикальное-повышение-эффективности-с-помощью-ring-lwe-и-module-lwe">4.2. Радикальное повышение эффективности с помощью Ring-LWE и Module-LWE
&lt;/h3>&lt;p>Стандартная задача LWE (Standard LWE) имеет очень четкие основания для безопасности, но матрица $A$ становится слишком большой, а размер ключа достигает мегабайтов, что делает ее непрактичной. В связи с этим был предложен подход, использующий кольца многочленов (Polynomial Rings) для создания алгебраической структуры.&lt;/p>
&lt;p>В задаче &lt;strong>Ring-LWE&lt;/strong> вместо обычных векторов и матриц используются элементы (многочлены) некоего кольца многочленов $R_q$. В стандартах NIST обычно используется следующее круговое кольцо многочленов:&lt;/p>
$$ R_q = \mathbb{Z}_q[X]/(X^n + 1) $$
&lt;p>Здесь $n$ — степень двойки (например, 256), а $q$ — подходящее простое число. В этом кольце используются элементы $a, s, e \in R_q$ для вычисления $b = a \cdot s + e \pmod q$. Поскольку один многочлен $a$ имеет $n$ коэффициентов, данные можно значительно сжать. Кроме того, использование &lt;strong>NTT (Number Theoretic Transform: Теоретико-числовое преобразование)&lt;/strong>, версии быстрого преобразования Фурье (FFT) для конечных полей, позволяет сверхбыстро умножать многочлены с вычислительной сложностью $O(n \log n)$.&lt;/p>
&lt;p>Однако в случае с Ring-LWE существовали опасения, что «могут существовать неизвестные уязвимости из-за специфической алгебраической структуры кольца». Кроме того, при изменении уровня безопасности (эквивалентно AES-128, 192, 256 и т.д.) было необходимо изменять саму степень многочлена $n$, что влекло за собой инженерную проблему полного переписывания реализации, включая алгоритм NTT.&lt;/p>
&lt;p>В связи с этим алгоритмы, прошедшие стандартизацию (Kyber и Dilithium), приняли задачу &lt;strong>Module-LWE (M-LWE)&lt;/strong>. Module-LWE — это компромисс между бесструктурным Standard LWE и слишком структурированным Ring-LWE. Он использует матрицу (модуль) размера $k \times k$, элементами которой являются элементы кольца многочленов $R_q$:&lt;/p>
$$ \vec{b} = A\vec{s} + \vec{e} \pmod{R_q} \quad (A \in R_q^{k \times k}, \vec{s}, \vec{e} \in R_q^k) $$
&lt;p>Главное преимущество Module-LWE заключается в том, что при фиксированной степени многочлена $n$ (в стандартах NIST $n=256$) можно легко масштабировать уровень безопасности, просто изменяя размерность матрицы $k$.
Например, в Kyber размерность $k$ регулируется следующим образом:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Kyber512 (Level 1)&lt;/strong>: $k = 2$ (эквивалентно AES-128)&lt;/li>
&lt;li>&lt;strong>Kyber768 (Level 3)&lt;/strong>: $k = 3$ (эквивалентно AES-192)&lt;/li>
&lt;li>&lt;strong>Kyber1024 (Level 5)&lt;/strong>: $k = 4$ (эквивалентно AES-256)&lt;/li>
&lt;/ul>
&lt;p>Это позволило на 100% повторно использовать базовый код NTT и аппаратные схемы для полиномиальных вычислений на всех уровнях безопасности, что радикально повысило безопасность и эффективность реализации.&lt;/p>
&lt;hr>
&lt;h2 id="5-crystals-kyber-ml-kem-механизм-инкапсуляции-ключа-следующего-поколения">5. CRYSTALS-Kyber (ML-KEM): Механизм инкапсуляции ключа следующего поколения
&lt;/h2>&lt;p>Официально стандартизированный как &lt;strong>FIPS 203 (ML-KEM)&lt;/strong>, CRYSTALS-Kyber представляет собой механизм инкапсуляции ключа (KEM), основанный на задаче Module-LWE, описанной выше. В будущем он станет де-факто мировым стандартом для безопасного обмена сессионными ключами в TLS 1.3, SSH и других протоколах.&lt;/p>
&lt;h3 id="51-архитектура-kem-key-encapsulation-mechanism">5.1. Архитектура KEM (Key Encapsulation Mechanism)
&lt;/h3>&lt;p>В эру PQC стандартом станет не прямой подход, как в RSA, где «клиент создает симметричный ключ, шифрует его открытым ключом сервера и отправляет», а концепция инкапсуляции, называемая KEM.&lt;/p>
&lt;div class="mermaid">sequenceDiagram
participant Client as "Клиент (Alice)"
participant Server as "Сервер (Bob)"
Note over Client: "ML-KEM KeyGen()"
Client->>Client: "Генерирует секретный ключ (sk) и открытый ключ (pk)"
Client->>Server: "Отправляет открытый ключ (pk)"
Note over Server: "ML-KEM Encaps()"
Server->>Server: "Генерирует случайный симметричный ключ (K)"
Server->>Server: "Инкапсулирует K с помощью pk, создавая шифротекст (c)"
Server->>Client: "Отправляет шифротекст (c)"
Note over Client: "ML-KEM Decaps()"
Client->>Client: "Расшифровывает шифротекст (c) с помощью секретного ключа (sk)"
Client->>Client: "Снимает инкапсуляцию, извлекая симметричный ключ (K)"
Note over Client, Server: "Начинает защищенную связь (например, AES), используя общий симметричный ключ (K)"&lt;/div>
&lt;h3 id="52-внутренние-механизмы-алгоритма-kyber-и-преобразование-фудзисаки-окамото">5.2. Внутренние механизмы алгоритма Kyber и преобразование Фудзисаки-Окамото
&lt;/h3>&lt;p>Дизайн Kyber очень утонченный. Сначала создается схема криптографии с открытым ключом, устойчивая только к CPA (атака на основе выбранного открытого текста) — Kyber.CPAPKE. Затем к ней применяется мощный криптографический метод, известный как &lt;strong>преобразование Фудзисаки-Окамото (Fujisaki-Okamoto Transform)&lt;/strong>, благодаря которому схема превращается в полноценный KEM, устойчивый к CCA (адаптивная атака на основе выбранного шифротекста).&lt;/p>
&lt;p>Основной механизм шифрования и дешифрования CPAPKE выглядит следующим образом:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>Генерация ключей (Key Generation)&lt;/strong>:&lt;/p>
&lt;ul>
&lt;li>Из случайного значения сида генерируется матрица $A \in R_q^{k \times k}$ в домене NTT. Используется модуль $q = 3329$.&lt;/li>
&lt;li>Из центрированного биномиального распределения (CBD) берутся секретный вектор $\vec{s}$ и вектор ошибок $\vec{e}$ с малыми коэффициентами.&lt;/li>
&lt;li>Вычисляется $\vec{t} = A\vec{s} + \vec{e}$. Открытый ключ — это $(A, \vec{t})$, секретный ключ — $\vec{s}$. (На практике $A$ раскрывается в виде сида для экономии пропускной способности).&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Шифрование (Encryption)&lt;/strong>:&lt;/p>
&lt;ul>
&lt;li>32-байтное сообщение $m$ (материал для симметричного ключа), которым необходимо обменяться, кодируется в многочлен.&lt;/li>
&lt;li>Генерируются новый случайный вектор $\vec{r}$ и малые ошибки $\vec{e_1}, e_2$.&lt;/li>
&lt;li>$\vec{u} = A^T\vec{r} + \vec{e_1}$&lt;/li>
&lt;li>$v = \vec{t}^T\vec{r} + e_2 + \lfloor q/2 \rceil \cdot m$&lt;/li>
&lt;li>Шифротекстом является пара $(\vec{u}, v)$.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Дешифрование (Decryption)&lt;/strong>:&lt;/p>
&lt;ul>
&lt;li>Получатель вычисляет $v - \vec{s}^T\vec{u}$.&lt;/li>
&lt;li>При разложении формулы получаем:
$v - \vec{s}^T\vec{u} = (\vec{t}^T\vec{r} + e_2 + \lfloor q/2 \rceil \cdot m) - \vec{s}^T(A^T\vec{r} + \vec{e_1})$&lt;/li>
&lt;li>Подставив $\vec{t} = A\vec{s} + \vec{e}$, главный член $\vec{s}^TA^T\vec{r}$ сокращается.&lt;/li>
&lt;li>Остается: $\lfloor q/2 \rceil \cdot m + (\vec{e}^T\vec{r} + e_2 - \vec{s}^T\vec{e_1})$.&lt;/li>
&lt;li>Члены в скобках — это «произведения и суммы малых ошибок», поэтому в целом они остаются достаточно малыми (шумом). Следовательно, путем проверки того, близок ли каждый коэффициент к $0$ или к $q/2$, можно полностью и безошибочно восстановить биты (0 или 1) исходного сообщения $m$.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ol>
&lt;p>Главными преимуществами Kyber являются его потрясающая &lt;strong>скорость обработки&lt;/strong> и &lt;strong>умеренный размер ключа&lt;/strong>. Для Kyber768 размер открытого ключа составляет 1184 байта, а размер шифротекста — 1088 байт. И хотя они больше по сравнению с RSA-3072 (размер ключа около 384 байт), они помещаются в MTU (Maximum Transmission Unit) современных интернет-сетей без фрагментации пакетов и практически не влияют на сетевые задержки.&lt;/p>
&lt;hr>
&lt;h2 id="6-crystals-dilithium-ml-dsa-универсальная-цифровая-подпись-на-основе-решеток">6. CRYSTALS-Dilithium (ML-DSA): Универсальная цифровая подпись на основе решеток
&lt;/h2>&lt;p>В процессе стандартизации цифровых подписей соревновались алгоритмы с различными концептуальными дизайнами в рамках подхода криптографии на решетках. Среди них в качестве универсальной цифровой подписи &lt;strong>FIPS 204 (ML-DSA)&lt;/strong> был выбран &lt;strong>CRYSTALS-Dilithium&lt;/strong>.&lt;/p>
&lt;h3 id="61-парадигма-fiat-shamir-with-aborts">6.1. Парадигма Fiat-Shamir with Aborts
&lt;/h3>&lt;p>Dilithium, как и Kyber, является схемой цифровой подписи на основе Module-LWE (а также задачи Module-SIS). В основе его дизайна лежит критически важная парадигма «&lt;strong>Fiat-Shamir with Aborts (Преобразование Фиата-Шамира с прерываниями)&lt;/strong>».&lt;/p>
&lt;p>Само по себе преобразование Фиата-Шамира является стандартным методом для преобразования интерактивного протокола доказательства с нулевым разглашением в неинтерактивную цифровую подпись. Доказывающий (подписант) генерирует обязательство $y$, вычисляет $w = Ay$ и пропускает через хеш-функцию, чтобы получить случайный запрос $c$, и вычисляет ответ $z = y + cs$.&lt;/p>
&lt;p>Однако при простом применении этого метода в криптографии на решетках распределение ответа $z$ искажается в зависимости от значения секретного ключа $s$, что приводит к критической проблеме (математическая утечка типа побочного канала), когда атакующий, анализируя множество подписей, постепенно получает информацию о секретном ключе $s$.&lt;/p>
&lt;p>Команда разработчиков Dilithium (Любашевский и др.) внедрила метод «&lt;strong>выборки с отклонением (Rejection Sampling)&lt;/strong>», при котором, если коэффициенты вычисленного результата подписи $z$ не попадают в заранее заданный безопасный пороговый диапазон, весь процесс подписания прерывается (Abort), и вычисления начинаются заново с новым случайным числом $y$.&lt;/p>
&lt;p>В результате окончательно выдаваемая подпись $z$ имеет абсолютно равномерное распределение, не зависящее от секретного ключа, что математически полностью предотвращает утечку информации.&lt;/p>
&lt;h3 id="62-преимущества-dilithium-и-простота-реализации">6.2. Преимущества Dilithium и простота реализации
&lt;/h3>&lt;p>Огромное преимущество дизайна Dilithium заключается в том, что в процессе создания подписи &lt;strong>вообще не используется&lt;/strong> сложная «выборка из гауссовского распределения» или «вычисления с плавающей запятой». Поскольку алгоритм может быть реализован с использованием только выборки из равномерного распределения, простых модульных целочисленных вычислений, NTT и хеш-функций (SHAKE), его легко безопасно реализовать за константное время (Constant-time) в самых разных средах — от встроенных микроконтроллеров до облачных серверов. Это также обеспечивает надежную защиту от физических атак по сторонним каналам, таких как атаки по времени.&lt;/p>
&lt;hr>
&lt;h2 id="7-falcon-fn-dsa-ультракомпактная-решеточная-подпись">7. FALCON (FN-DSA): Ультракомпактная решеточная подпись
&lt;/h2>&lt;p>NIST выбрал &lt;strong>FALCON (Fast-Fourier Lattice-based Compact Signatures over NTRU)&lt;/strong> как еще одного кандидата на стандартизацию подписи на решетках, обладающего характеристиками, отличными от Dilithium (в настоящее время разрабатывается черновик стандарта FN-DSA).&lt;/p>
&lt;h3 id="71-решетки-ntru-и-гауссовская-выборка">7.1. Решетки NTRU и гауссовская выборка
&lt;/h3>&lt;p>Главной особенностью FALCON является использование исторически более старых (существующих с 1996 года) &lt;strong>решеток NTRU (N-th degree Truncated polynomial Ring Units)&lt;/strong> вместо задачи LWE. Кроме того, в нем используется парадигма «&lt;strong>Hash-and-Sign (Хешируй и подписывай)&lt;/strong>», основанная на фреймворке GPV (Gentry-Peikert-Vaikuntanathan).&lt;/p>
&lt;p>В Hash-and-Sign хеш сообщения служит целевой точкой в пространстве, а подписью является нахождение ближайшей к ней точки решетки (приближенное решение задачи нахождения ближайшего вектора). Для этого требуется выборка точек в соответствии с дискретным гауссовским распределением, используя секретный ключ — «качественный короткий базис».&lt;/p>
&lt;p>FALCON радикально ускорил эти тяжелые вычисления с помощью метода, известного как «&lt;strong>Быстрая ортогонализация Фурье (Fast Fourier Orthogonalization: FFO)&lt;/strong>».&lt;/p>
&lt;h3 id="72-преимущества-и-недостатки-falcon">7.2. Преимущества и недостатки FALCON
&lt;/h3>&lt;p>Огромным преимуществом FALCON является его &lt;strong>чрезвычайно маленький размер подписи и открытого ключа (компактность)&lt;/strong>. В то время как размер подписи Dilithium3 составляет около 3309 байт, размер подписи FALCON-512 — всего около 666 байт. Открытый ключ также очень мал — 897 байт. Это делает его настоящим спасением в условиях с жесткими ограничениями пропускной способности, для IoT-устройств и специфических сетевых протоколов.&lt;/p>
&lt;p>Однако существует и серьезный недостаток. Поскольку при генерации подписи требуется дискретная гауссовская выборка, включающая сложные &lt;strong>вычисления с плавающей запятой (64-bit IEEE 754)&lt;/strong>, реализовать ее за константное время (Constant-time implementation) для предотвращения утечек по времени крайне сложно, и размер кода становится огромным. По этой причине FALCON позиционируется как мощный специализированный алгоритм для конкретных применений, в отличие от универсального Dilithium.&lt;/p>
&lt;div class="mermaid">graph LR
A["Требования к цифровой подписи"] --> B{"Каковы главные ограничения?"}
B -->|"Простота реализации, универсальность, простота реализации константного времени"| C["Dilithium (ML-DSA)"]
B -->|"Минимизация полосы пропускания связи, компактность размера данных"| D["FALCON (FN-DSA)"]
C --> E["Универсальные сертификаты TLS, электронная подпись программного обеспечения"]
D --> F["Протоколы со строгими ограничениями на размер пакета, специальные среды"]&lt;/div>
&lt;hr>
&lt;h2 id="8-sphincs-slh-dsa-подпись-на-основе-хешей-с-высочайшим-уровнем-безопасности">8. SPHINCS+ (SLH-DSA): Подпись на основе хешей с высочайшим уровнем безопасности
&lt;/h2>&lt;p>На случай худшего сценария, при котором безопасность решеточной криптографии будет нарушена в будущем из-за прорыва гениальных математиков, NIST разработал стандарт &lt;strong>FIPS 205 (SLH-DSA)&lt;/strong>, или &lt;strong>SPHINCS+&lt;/strong>, с совершенно иным подходом.&lt;/p>
&lt;p>SPHINCS+ относится к категории &lt;strong>подписей на основе хешей&lt;/strong>. Его безопасность опирается исключительно на один факт: «используемая криптографическая хеш-функция (например, SHA-2 или SHAKE256) обладает устойчивостью к коллизиям и односторонностью». Поскольку он не зависит от математических задач с определенной алгебраической структурой, таких как LWE или факторизация, какие бы мощные квантовые алгоритмы ни появились в будущем, им можно будет противостоять простым увеличением длины выхода хеш-функции. Это обеспечивает чрезвычайно надежную безопасность (наиболее консервативную защиту).&lt;/p>
&lt;h3 id="81-архитектура-без-сохранения-состояния-stateless-с-использованием-wots-и-fors">8.1. Архитектура без сохранения состояния (stateless) с использованием WOTS+ и FORS
&lt;/h3>&lt;p>История подписей на основе хешей давняя и восходит к подписи Лэмпорта и одноразовой подписи Винтерница (WOTS) в 1970-х годах. Это были одноразовые ключи, позволяющие «безопасно подписать только один раз». Чтобы сделать возможным их многократное использование, были разработаны алгоритмы XMSS (eXtended Merkle Signature Scheme) и LMS, которые с помощью деревьев Меркла (Merkle Tree) управляли бесчисленным количеством одноразовых ключей под одним корневым хешем.&lt;/p>
&lt;p>Однако у XMSS и LMS был серьезный недостаток — они были «&lt;strong>stateful (с сохранением состояния)&lt;/strong>». При каждом создании подписи необходимо было строго фиксировать в энергонезависимой памяти индекс («какой по счету одноразовый ключ был использован»). Если в результате восстановления снимка виртуальной машины состояние откатывалось назад, и один и тот же ключ использовался дважды, секретный ключ мгновенно утекал, и система рушилась.&lt;/p>
&lt;p>SPHINCS+ решает эту проблему управления состоянием и является &lt;strong>stateless (не требующей сохранения состояния)&lt;/strong> подписью на основе хешей.
В основе его технологии лежит следующая комбинация:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>WOTS+ (Winternitz One-Time Signature Plus)&lt;/strong>: Базовая одноразовая подпись.&lt;/li>
&lt;li>&lt;strong>FORS (Forest of Random Subsets)&lt;/strong>: Технология подписи с ограниченным числом использований (Few-Time Signature). Сохраняет безопасность, даже если один и тот же ключ используется несколько раз.&lt;/li>
&lt;li>&lt;strong>Hyper-Tree (Гипердерево)&lt;/strong>: Гигантская структура, состоящая из многоуровнево вложенных деревьев Меркла.&lt;/li>
&lt;/ol>
&lt;p>При создании подписи в SPHINCS+ вместо управления состоянием используется псевдослучайное число для случайного выбора одного из огромного числа ключей FORS в основании Hyper-Tree. Поскольку количество листьев дерева астрономически велико, вероятность случайного выбора одного и того же ключа дважды (коллизия) ничтожно мала, что в итоге позволяет реализовать подход без сохранения состояния.&lt;/p>
&lt;p>Единственным и самым большим недостатком SPHINCS+ является &lt;strong>очень большой размер подписи&lt;/strong>. В зависимости от параметров он может достигать от 17 КБ до 49 КБ, а скорость генерации подписи значительно ниже по сравнению с решеточной криптографией. Поэтому ожидается, что алгоритм будет применяться не в повседневном веб-браузинге, а в сценариях, требующих долгосрочной абсолютной безопасности и не требующих частого подписания, например, в подписях обновлений ПО или сертификатах корневых удостоверяющих центров (CA).&lt;/p>
&lt;hr>
&lt;h2 id="9-криптография-на-основе-кодов-старый-добрый-гигант-classic-mceliece">9. Криптография на основе кодов: старый добрый гигант Classic McEliece
&lt;/h2>&lt;p>В процессе стандартизации NIST важным подходом, который все еще оценивается в качестве финалиста Раунда 4, является алгоритм &lt;strong>Classic McEliece&lt;/strong>, относящийся к &lt;strong>криптографии на основе кодов&lt;/strong>.&lt;/p>
&lt;p>Предложенный Робертом МакЭлисом (Robert McEliece) в 1978 году, этот алгоритм является одним из старейших в истории криптографии с открытым ключом, наряду с RSA. Он использует алгебро-геометрические коды, называемые «кодами Гоппы», и основан на «&lt;strong>задаче синдромного декодирования (Syndrome Decoding Problem)&lt;/strong>»: к сообщению преднамеренно добавляется ошибка (вектор шума) для его шифрования, а восстановить исходное сообщение, удалив ошибку с помощью мощных возможностей исправления, может только тот, у кого в качестве секретного ключа есть проверочная матрица кода Гоппы.&lt;/p>
$$ \vec{c} = \vec{m} G + \vec{e} $$
&lt;p>
(где $G$ — скремблированная порождающая матрица, являющаяся открытым ключом, а $\vec{e}$ — вектор ошибки веса $t$)&lt;/p>
&lt;p>Удивительно в Classic McEliece то, что &lt;strong>прошло более 40 лет с момента его создания, он подвергался интенсивным исследованиям по взлому криптографами со всего мира, но при этом ни разу не была обнаружена его фундаментальная уязвимость&lt;/strong> — это колоссальный послужной список. Из всех алгоритмов PQC он обладает самой «проверенной временем надежной безопасностью».&lt;/p>
&lt;p>Кроме того, есть преимущество: размер шифротекста очень мал (всего около 100–200 байт). Однако у него есть критический недостаток — &lt;strong>размер открытого ключа измеряется мегабайтами (МБ)&lt;/strong>. Даже на самом низком уровне безопасности (эквивалентно AES-128) открытый ключ составляет около 250 КБ, а на высоких уровнях превышает 1 МБ.&lt;/p>
&lt;p>По этой причине он совершенно не подходит для таких сценариев, как рукопожатие TLS, где открытый ключ передается по сети при каждом соединении. Однако для обмена предварительно общими ключами VPN, жесткого кодирования открытых ключей в прошивку или в спутниковой связи — особых случаях, где открытые ключи могут быть предварительно размещены в системе, он продолжает рассматриваться как крайне перспективный вариант благодаря своей высокой безопасности.&lt;/p>
&lt;hr>
&lt;h2 id="10-сравнение-производительности-и-компромиссы-алгоритмов-pqc">10. Сравнение производительности и компромиссы алгоритмов PQC
&lt;/h2>&lt;p>В таблице ниже приведены характеристики производительности основных алгоритмов, обсуждавшихся до сих пор, на общих уровнях безопасности (эквивалентно NIST Level 2–3, уровень AES-128–192).&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">Алгоритм (Стандартное имя)&lt;/th>
&lt;th style="text-align:left">Категория&lt;/th>
&lt;th style="text-align:left">Математическая основа&lt;/th>
&lt;th style="text-align:left">Размер открытого ключа&lt;/th>
&lt;th style="text-align:left">Размер секретного ключа&lt;/th>
&lt;th style="text-align:left">Размер шифротекста/подписи&lt;/th>
&lt;th style="text-align:left">Тенденция скорости обработки&lt;/th>
&lt;th style="text-align:left">Основные характеристики и применения&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>Kyber768&lt;/strong>&lt;br>(ML-KEM)&lt;/td>
&lt;td style="text-align:left">KEM&lt;/td>
&lt;td style="text-align:left">Module-LWE&lt;/td>
&lt;td style="text-align:left">1,184 Bytes&lt;/td>
&lt;td style="text-align:left">2,400 Bytes&lt;/td>
&lt;td style="text-align:left">1,088 Bytes&lt;/td>
&lt;td style="text-align:left">Очень высокая&lt;/td>
&lt;td style="text-align:left">Лучший баланс размера ключа и скорости. Универсальный стандарт KEM для TLS 1.3 и др.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>Dilithium3&lt;/strong>&lt;br>(ML-DSA)&lt;/td>
&lt;td style="text-align:left">Подпись&lt;/td>
&lt;td style="text-align:left">Module-LWE&lt;/td>
&lt;td style="text-align:left">1,952 Bytes&lt;/td>
&lt;td style="text-align:left">4,032 Bytes&lt;/td>
&lt;td style="text-align:left">3,309 Bytes&lt;/td>
&lt;td style="text-align:left">Генерация и верификация быстрые&lt;/td>
&lt;td style="text-align:left">Простая реализация. Универсальный стандарт цифровой подписи.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>FALCON-512&lt;/strong>&lt;br>(FN-DSA)&lt;/td>
&lt;td style="text-align:left">Подпись&lt;/td>
&lt;td style="text-align:left">Решетка NTRU&lt;/td>
&lt;td style="text-align:left">897 Bytes&lt;/td>
&lt;td style="text-align:left">1,281 Bytes&lt;/td>
&lt;td style="text-align:left">666 Bytes&lt;/td>
&lt;td style="text-align:left">Медленная генерация подписи, сверхбыстрая верификация&lt;/td>
&lt;td style="text-align:left">Минимальный размер подписи. Требует вычислений с плавающей запятой. Для встраиваемых систем и IoT.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>SPHINCS+&lt;/strong>&lt;br>(SLH-DSA)&lt;/td>
&lt;td style="text-align:left">Подпись&lt;/td>
&lt;td style="text-align:left">Хеш-функция&lt;/td>
&lt;td style="text-align:left">32 Bytes&lt;/td>
&lt;td style="text-align:left">64 Bytes&lt;/td>
&lt;td style="text-align:left">Ок. 17,000 Bytes&lt;/td>
&lt;td style="text-align:left">Очень медленная генерация&lt;/td>
&lt;td style="text-align:left">Риск математического взлома близок к нулю. Для высокосекретных применений (корневые сертификаты).&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>Classic McEliece&lt;/strong>&lt;/td>
&lt;td style="text-align:left">KEM&lt;/td>
&lt;td style="text-align:left">Код Гоппы&lt;/td>
&lt;td style="text-align:left">&lt;strong>Ок. 1.04 MB&lt;/strong>&lt;/td>
&lt;td style="text-align:left">13,568 Bytes&lt;/td>
&lt;td style="text-align:left">&lt;strong>188 Bytes&lt;/strong>&lt;/td>
&lt;td style="text-align:left">Быстрая инкапсуляция&lt;/td>
&lt;td style="text-align:left">40 лет доказанной безопасности. Огромный открытый ключ. Для сред с возможностью хардкодинга.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h3 id="понимание-компромиссов">Понимание компромиссов
&lt;/h3>&lt;p>В мире PQC не существует единого волшебного алгоритма, который был бы «маленьким, быстрым и имел безупречные математические гарантии».&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Стандарт интернета (Kyber / Dilithium)&lt;/strong>: Предлагает наилучший баланс производительности и лучше всего подходит для прозрачной замены (drop-in replacement) текущих RSA/ECC.&lt;/li>
&lt;li>&lt;strong>Предельный консерватизм (SPHINCS+)&lt;/strong>: Выбирается в тех случаях, когда требуется абсолютная страховка от будущих математических прорывов, даже ценой увеличения размера данных и снижения скорости.&lt;/li>
&lt;li>&lt;strong>Для особых сред (FALCON / Classic McEliece)&lt;/strong>: Специализированное оружие, выбираемое в зависимости от ограничений среды — например, при крайне узкой полосе пропускания связи или при возможности предварительного распространения ключей.&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="11-проблемы-практического-применения-и-реалистичное-решение-гибридная-криптография">11. Проблемы практического применения и реалистичное решение: «Гибридная криптография»
&lt;/h2>&lt;p>С завершением стандартизации NIST и официальным выпуском стандартов FIPS, в IT-инфраструктуре по всему миру стартовал полномасштабный переход на PQC (&lt;strong>PQC-миграция&lt;/strong>). Браузер Google Chrome, сервис Apple iMessage (протокол PQ3) и сетевые провайдеры вроде Cloudflare уже внедрили поддержку PQC в свои протоколы и начали их практическое использование.&lt;/p>
&lt;p>Однако полный и резкий переход на новые криптографические алгоритмы сопряжен с очень высокими рисками. Если предположить, что через несколько лет какой-нибудь гениальный математик обнаружит критический метод атаки на решеточные алгоритмы, такие как Kyber (математический дефект, позволяющий взломать его даже на классическом компьютере), то вся система, зависящая от него, мгновенно окажется уязвимой.&lt;/p>
&lt;p>Реалистичным и рекомендуемым подходом для смягчения риска этой неопределенности является «&lt;strong>Гибридная криптография (Hybrid Cryptography)&lt;/strong>».&lt;/p>
&lt;p>В гибридной криптографии для обмена ключами одновременно используются как проверенные годами классические алгоритмы (например, эллиптическая кривая X25519), так и новые PQC-алгоритмы (например, Kyber768). Каждый алгоритм генерирует компоненты симметричного ключа независимо друг от друга, а затем эти два компонента смешиваются с помощью безопасной функции формирования ключа (KDF) для создания окончательного мастер-ключа.&lt;/p>
&lt;div class="mermaid">graph TD
A["Клиент"] -->|① Отправляет открытый ключ X25519 + открытый ключ Kyber| B["Сервер"]
B -->|② Отправляет общий ключ X25519 + инкапсулированный шифротекст Kyber| A
A --> C{"Вывод мастер-ключа (KDF)"}
B --> C
C -->|Вход: (симметричный ключ X25519) || (симметричный ключ Kyber)| D["Защищенный ключ связи (AES-256 / ChaCha20)"]
D -->|"Устойчивость к квантовым угрозам И классическим уязвимостям"| E["Защищенная гибридная зашифрованная связь (TLS 1.3)"]&lt;/div>
&lt;p>Это обеспечивает надежную двухуровневую безопасность: «в случае появления квантового компьютера и взлома ECC, Kyber защитит связь», и наоборот: «в случае обнаружения неизвестного математического дефекта в Kyber, ECC защитит связь». Ярким примером является проект стандарта &lt;strong>X25519MLKEM768 (ранее X25519Kyber768)&lt;/strong>, разрабатываемый в IETF; в настоящее время обмен данными между современными веб-браузерами и серверами осуществляется именно по этому гибридному методу.&lt;/p>
&lt;p>Кроме того, в системном проектировании концепция &lt;strong>Crypto Agility (криптографической гибкости)&lt;/strong> — архитектура, которая «не слишком зависит от конкретного криптографического алгоритма и может быстро переключиться на другой алгоритм в случае его компрометации (например, от Kyber к McEliece или от Dilithium к SPHINCS+)» — станет обязательным требованием при разработке будущих систем.&lt;/p>
&lt;hr>
&lt;h2 id="12-заключение-новые-горизонты-криптографии">12. Заключение: Новые горизонты криптографии
&lt;/h2>&lt;p>Квантовый компьютер, технология-мечта человечества, по иронии судьбы стал величайшей угрозой, способной разрушить математические барьеры «факторизации» и «дискретного логарифмирования», на которые мы полагались долгие годы. Однако криптографы со всего мира не сдались и освоили более сложные и глубокие многомерные математические области, такие как теория решеток, деревья хеш-функций и коды, исправляющие ошибки, построив новый барьер в виде постквантовой криптографии (PQC).&lt;/p>
&lt;p>Завершение стандартизации алгоритмов FIPS 203 (ML-KEM), FIPS 204 (ML-DSA) и FIPS 205 (SLH-DSA) институтом NIST — это не финиш. Это лишь первый шаг в грандиозном путешествии PQC-миграции, которое продлится десятилетия. Для инженеров-программистов и системных архитекторов главной технической задачей в будущем станет то, как оптимально адаптировать сетевые протоколы и системы к «увеличению размера ключей» и «изменениям вычислительных затрат», вызванных этими новыми алгоритмами.&lt;/p>
&lt;p>Битва между квантовыми компьютерами и криптографией — это захватывающая область, где наиболее интенсивно пересекаются математические поиски человечества и технологическая эволюция. Я надеюсь, что благодаря этой статье вы смогли глубоко понять красивую математическую теорию, стоящую за PQC, и удивительные механизмы каждого из алгоритмов, формирующих будущее кибербезопасности.&lt;/p>
&lt;hr>
&lt;p>&lt;em>References:&lt;/em>&lt;/p>
&lt;ul>
&lt;li>&lt;em>NIST Post-Quantum Cryptography Standardization Program&lt;/em>&lt;/li>
&lt;li>&lt;em>FIPS 203: Module-Lattice-Based Key-Encapsulation Mechanism Standard&lt;/em>&lt;/li>
&lt;li>&lt;em>FIPS 204: Module-Lattice-Based Digital Signature Standard&lt;/em>&lt;/li>
&lt;li>&lt;em>FIPS 205: Stateless Hash-Based Digital Signature Standard&lt;/em>&lt;/li>
&lt;/ul></description></item><item><title>День, когда квантовые компьютеры станут практичными: текущее состояние в 2026 году</title><link>http://kenji.blog/ru/p/quantum-computing-2026-current-status/</link><pubDate>Fri, 11 Sep 2026 06:00:00 +0900</pubDate><guid>http://kenji.blog/ru/p/quantum-computing-2026-current-status/</guid><description>&lt;img src="http://kenji.blog/p/quantum-computing-2026-current-status/img/eyecatch.jpg" alt="Featured image of post День, когда квантовые компьютеры станут практичными: текущее состояние в 2026 году" />&lt;h2 id="1-введение-насколько-продвинулись-квантовые-компьютеры-к-2026-году">1. Введение: Насколько продвинулись квантовые компьютеры к 2026 году
&lt;/h2>&lt;p>По состоянию на 2026 год квантовые вычисления совершили решающий переход от &amp;ldquo;теоретической мечты&amp;rdquo; к &amp;ldquo;инженерной реальности&amp;rdquo;. По мере того, как ограничения устройств &lt;strong>NISQ (Noisy Intermediate-Scale Quantum)&lt;/strong>, которые были мейнстримом еще несколько лет назад, стали очевидны, исследовательские институты и технологические гиганты по всему миру взяли курс на реализацию &amp;ldquo;отказоустойчивых квантовых вычислений (FTQC: Fault-Tolerant Quantum Computing)&amp;rdquo;.&lt;/p>
&lt;p>В этой статье мы глубоко погрузимся в текущее состояние квантовых компьютеров с учетом последних прорывов 2026 года. В частности, мы подробно рассмотрим квантовую коррекцию ошибок (поверхностный код), разницу между физическими и логическими кубитами, прогресс в топологических квантовых вычислениях, а также передовые достижения в сверхпроводящих и ионных ловушках.&lt;/p>
&lt;hr>
&lt;h2 id="2-основы-квантовых-состояний-и-точность-fidelity">2. Основы квантовых состояний и точность (Fidelity)
&lt;/h2>&lt;p>Кубит (Qubit), базовая единица квантового компьютера, в отличие от классического бита (0 или 1), может находиться в состоянии суперпозиции 0 и 1 (Superposition). Состояние одиночного кубита представляется в виде вектора в гильбертовом пространстве следующим образом:&lt;/p>
$$
|\psi\rangle = \alpha|0\rangle + \beta|1\rangle
$$
&lt;p>Где $\alpha$ и $\beta$ — комплексные амплитуды вероятности, удовлетворяющие следующему условию нормировки:&lt;/p>
$$
|\alpha|^2 + |\beta|^2 = 1
$$
&lt;p>Чрезвычайно важным показателем при оценке производительности квантовых вычислений является &lt;strong>точность (Fidelity)&lt;/strong>. Точность $F$ между идеальным квантовым состоянием $|\psi\rangle$ и фактической матрицей плотности $\rho$, которая деградировала из-за шума и стала смешанным состоянием, определяется следующим образом:&lt;/p>
$$
F(\rho, |\psi\rangle) = \langle \psi | \rho | \psi \rangle
$$
&lt;p>В 2026 году точность двухкубитных вентилей (например, вентилей CNOT и CZ) в сверхпроводящих системах стала стабильно превышать барьер в &lt;strong>99,99%&lt;/strong> (так называемые &amp;ldquo;четыре девятки&amp;rdquo;). Это значение значительно превышает порог коррекции ошибок поверхностного кода (около 99%) и является одним из крупнейших прорывов на пути к практическому применению.&lt;/p>
&lt;hr>
&lt;h2 id="3-пределы-эры-nisq-и-смена-парадигмы-к-ftqc">3. Пределы эры NISQ и смена парадигмы к FTQC
&lt;/h2>&lt;p>Период со второй половины 2010-х до первой половины 2020-х годов был эрой NISQ (Noisy Intermediate-Scale Quantum) — устройств от нескольких десятков до сотен кубитов без коррекции ошибок. Однако у NISQ были четкие ограничения.&lt;/p>
&lt;p>По мере увеличения глубины схемы (Depth) ошибки накапливаются экспоненциально, что делает невозможным получение значимых результатов вычислений. Общая вероятность успеха $P_{success}$ при глубине схемы $D$ затухает относительно точности одиночного вентиля $f$ и количества вентилей $N$ следующим образом:&lt;/p>
$$
P_{success} \approx f^N
$$
&lt;p>Если $f = 0.99$ и применяется 1000 вентилей, то $0.99^{1000} \approx 4.3 \times 10^{-5}$, и результат почти полностью теряется в случайном шуме. По этой причине в 2026 году ресурсы сосредоточены на создании &lt;strong>логических кубитов (Logical Qubit)&lt;/strong>, а не на прямом масштабировании алгоритмов NISQ (таких как VQE или QAOA).&lt;/p>
&lt;hr>
&lt;h2 id="4-квантовая-коррекция-ошибок-и-логические-кубиты-передовая-линия-поверхностного-кода">4. Квантовая коррекция ошибок и логические кубиты: передовая линия поверхностного кода
&lt;/h2>&lt;p>Квантовая коррекция ошибок (QEC: Quantum Error Correction) — это технология, которая кодирует несколько &amp;ldquo;физических кубитов&amp;rdquo; для создания одного &amp;ldquo;логического кубита&amp;rdquo;, обнаруживая и исправляя ошибки. В настоящее время наиболее перспективным считается &lt;strong>поверхностный код (Surface Code)&lt;/strong>.&lt;/p>
&lt;h3 id="41-структура-поверхностного-кода-surface-code">4.1 Структура поверхностного кода (Surface Code)
&lt;/h3>&lt;p>В поверхностном коде кубиты располагаются в виде двумерной решетки. Кубиты данных (хранящие фактическую информацию) и кубиты измерения (для измерения синдрома) располагаются в шахматном порядке.&lt;/p>
&lt;div class="mermaid">graph TD
A["Кубит данных (D1)"] --- B["Кубит измерения (M1)"]
B --- C["Кубит данных (D2)"]
C --- D["Кубит измерения (M2)"]
D --- E["Кубит данных (D3)"]
B --- F["Кубит данных (D4)"]
D --- G["Кубит данных (D5)"]
style A fill:#e1f5fe,stroke:#039be5
style C fill:#e1f5fe,stroke:#039be5
style E fill:#e1f5fe,stroke:#039be5
style F fill:#e1f5fe,stroke:#039be5
style G fill:#e1f5fe,stroke:#039be5
style B fill:#fff3e0,stroke:#fb8c00
style D fill:#fff3e0,stroke:#fb8c00&lt;/div>
&lt;p>Используя операторы стабилизатора $S_x$ и $S_z$, постоянно отслеживаются перевороты битов (X-ошибки) и перевороты фазы (Z-ошибки).&lt;/p>
$$
S_x = \prod_{i \in \text{star}} X_i, \quad S_z = \prod_{j \in \text{plaquette}} Z_j
$$
&lt;p>Важным достижением 2026 года стало полное преодоление &amp;ldquo;точки безубыточности (Break-even point)&amp;rdquo;. Иными словами, шум, устраняемый коррекцией ошибок, стал больше, чем шум, вызываемый дополнительными схемами коррекции, и срок жизни логических кубитов стал на несколько порядков превышать срок жизни физических кубитов.&lt;/p>
&lt;h3 id="42-цикл-квантовой-коррекции-ошибок">4.2 Цикл квантовой коррекции ошибок
&lt;/h3>&lt;p>Коррекция ошибок работает как непрерывный цикл обратной связи.&lt;/p>
&lt;div class="mermaid">sequenceDiagram
participant D as "Кубиты данных"
participant M as "Вспомогательные/Измерительные кубиты"
participant C as "Классический контроллер"
loop "Цикл извлечения синдрома (около 1 микросекунды)"
D->>M: "Запутывание (CNOT/CZ)"
M->>C: "Измерение состояния (Синдром)"
C->>C: "Декодирование синдрома (например, Minimum Weight Perfect Matching)"
C-->>D: "Применение коррекции Паули (при необходимости)"
end&lt;/div>
&lt;p>В настоящее время создана технология, позволяющая выполнять это классическое декодирование (анализ синдрома) на FPGA или специализированных ASIC за наносекунды, и коррекция ошибок в реальном времени перешла на стадию практического применения.&lt;/p>
&lt;hr>
&lt;h2 id="5-эволюция-аппаратной-архитектуры-версия-2026-года">5. Эволюция аппаратной архитектуры (Версия 2026 года)
&lt;/h2>&lt;p>В 2026 году квантовое аппаратное обеспечение развивается в основном по трем направлениям: &amp;ldquo;сверхпроводящие системы&amp;rdquo;, &amp;ldquo;ионные ловушки&amp;rdquo; и &amp;ldquo;топологические системы&amp;rdquo;.&lt;/p>
&lt;h3 id="51-интеграция-сверхпроводящих-кубитов">5.1 Интеграция сверхпроводящих кубитов
&lt;/h3>&lt;p>Сверхпроводящие системы — область, в которой лидируют IBM и Google; в ней доминируют трансмонные (Transmon) кубиты, использующие джозефсоновские переходы. К 2026 году были созданы мегачипы, интегрирующие от нескольких тысяч до десяти тысяч физических кубитов на одном кристалле.&lt;/p>
&lt;p>Особо следует отметить создание &lt;strong>межмодульных квантовых коммуникаций (Quantum Interconnects)&lt;/strong>. Квантовая телепортация между чипами с использованием микроволновых фотонов была реализована на коммерческом уровне, что позволило обойти ограничения по размеру одного рефрижератора растворения.&lt;/p>
&lt;h3 id="52-двумерное-масштабирование-ионных-ловушек-и-оптические-межсоединения">5.2 Двумерное масштабирование ионных ловушек и оптические межсоединения
&lt;/h3>&lt;p>Системы ионных ловушек (возглавляемые Quantinuum, IonQ и др.) используют внутренние энергетические состояния ионов, левитирующих в вакууме, в качестве кубитов. По сравнению со сверхпроводящими системами их преимущество заключается в чрезвычайно длительном времени когерентности T1/T2 и возможности связи &amp;ldquo;каждый с каждым&amp;rdquo; (All-to-All Connectivity).&lt;/p>
&lt;p>Прорывом 2026 года стал переход архитектуры QCCD (Quantum Charge Coupled Device) в двумерный формат и высокоскоростная генерация запутанности между несколькими ловушками с использованием фотонных межсоединений. Это кардинально улучшило &amp;ldquo;низкую скорость вентилей&amp;rdquo; и &amp;ldquo;масштабируемость&amp;rdquo;, которые были слабыми местами ионных ловушек.&lt;/p>
&lt;h3 id="53-топологические-квантовые-вычисления-контроль-энионов">5.3 Топологические квантовые вычисления: контроль энионов
&lt;/h3>&lt;p>&lt;strong>Топологические квантовые вычисления&lt;/strong>, долгое время считавшиеся теоретическими, в 2026 году наконец перешли на стадию экспериментальной проверки. Этот метод, продвигаемый Microsoft и другими, использует неабелевы энионы (Non-Abelian Anyons), называемые &amp;ldquo;нулевыми модами Майораны (Majorana Zero Modes)&amp;rdquo;.&lt;/p>
&lt;p>Квантовые вентили выполняются с помощью операции &amp;ldquo;плетения (Braiding)&amp;rdquo;, которая меняет местами позиции энионных частиц.&lt;/p>
$$
|\psi_{final}\rangle = B_{ij} |\psi_{initial}\rangle
$$
&lt;p>Где $B_{ij}$ — оператор плетения. Топологический подход по своей сути устойчив к шуму окружающей среды (аппаратный уровень отказоустойчивости), поскольку хранение информации зависит от топологии всего &amp;ldquo;узла&amp;rdquo;, а не от локального состояния частиц. В 2026 году впервые в мире было подтверждено создание топологических логических кубитов с высокой точностью, что привлекло внимание как мощный короткий путь к FTQC.&lt;/p>
&lt;hr>
&lt;h2 id="6-дорожная-карта-и-перспективы-практического-применения">6. Дорожная карта и перспективы практического применения
&lt;/h2>&lt;p>Чтобы квантовые компьютеры могли по-настоящему продемонстрировать &lt;strong>квантовое превосходство (Quantum Advantage)&lt;/strong>, превосходя классические компьютеры (суперкомпьютеры) в таких областях, как &amp;ldquo;вычислительная химия&amp;rdquo;, &amp;ldquo;материаловедение&amp;rdquo; и &amp;ldquo;финансовое моделирование&amp;rdquo;, требуются тысячи логических кубитов.&lt;/p>
&lt;div class="mermaid">gantt
title "Дорожная карта квантовых вычислений (пересмотрена в 2026 году)"
dateFormat YYYY
axisFormat %Y
section "Эра NISQ"
"Шумные кубиты (&lt;1000)" :done, 2018, 2024
section "Ранний FTQC"
"Демонстрация точки безубыточности" :done, 2024, 2026
"Сотни логических кубитов" :active, 2026, 2028
section "Полномасштабный FTQC"
"1000+ логических кубитов (Коммерческое применение)" : 2028, 2030
"Универсальный отказоустойчивый квантовый компьютер" : 2030, 2035&lt;/div>
&lt;h3 id="61-текущие-проблемы-и-будущее">6.1 Текущие проблемы и будущее
&lt;/h3>&lt;p>Крупнейшими проблемами по состоянию на 2026 год являются охлаждающая способность гигантских криостатов (рефрижераторов растворения) для поддержания сверхнизких температур, а также проводка (узкое место ввода/вывода), соединяющая устройства управления при комнатной температуре и криогенные квантовые чипы. В ответ на это ускоренными темпами разрабатываются чипы контроллеров CMOS (Cryo-CMOS), работающие в криогенных условиях.&lt;/p>
&lt;h3 id="заключение">Заключение
&lt;/h3>&lt;p>2026 год войдет в историю квантовых компьютеров как &amp;ldquo;первый год масштабирования логических кубитов&amp;rdquo;. Благодаря демонстрации алгоритмов коррекции ошибок, модуляризации аппаратного обеспечения и стремительному прогрессу топологического подхода, &amp;ldquo;день практического применения&amp;rdquo; больше не является далеким будущим, а стал конкретным рубежом ближайших нескольких лет. Для разработчиков квантовых алгоритмов и компаний сейчас самое время инвестировать в решение задач с помощью квантовых технологий.&lt;/p>
&lt;hr>
&lt;p>&lt;em>Эта статья написана на основе новейших исследовательских работ и отраслевых тенденций в области квантовых вычислений по состоянию на 2026 год.&lt;/em>&lt;/p></description></item></channel></rss>