<?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/es/categories/quantum-computing/</link><description>Recent content in Quantum Computing on kenji.blog</description><generator>Hugo -- gohugo.io</generator><language>es</language><copyright>kenjinote</copyright><lastBuildDate>Fri, 11 Sep 2026 20:00:00 +0900</lastBuildDate><atom:link href="http://kenji.blog/es/categories/quantum-computing/index.xml" rel="self" type="application/rss+xml"/><item><title>Súper introducción a la programación cuántica usando Qiskit</title><link>http://kenji.blog/es/p/qiskit-quantum-programming-intro/</link><pubDate>Fri, 11 Sep 2026 20:00:00 +0900</pubDate><guid>http://kenji.blog/es/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 Súper introducción a la programación cuántica usando Qiskit" />&lt;h2 id="1-introducción">1. Introducción
&lt;/h2>&lt;p>Las computadoras modernas (computadoras clásicas) han cambiado drásticamente nuestras vidas, apoyando todos los aspectos de la sociedad a través de su alta capacidad de cálculo. Sin embargo, para ciertos problemas específicos (por ejemplo, la factorización de números primos gigantescos, la simulación de estructuras moleculares complejas, problemas de optimización, etc.), se sabe que incluso las supercomputadoras más avanzadas de la actualidad necesitarían más tiempo que la edad del universo.&lt;/p>
&lt;p>Lo que tiene el potencial de romper estos &amp;ldquo;límites de las computadoras clásicas&amp;rdquo; es la &lt;strong>computadora cuántica (Quantum Computer)&lt;/strong>. Al aprovechar las extrañas propiedades de la mecánica cuántica (superposición y entrelazamiento cuántico) como recursos de cálculo, se cree que es posible acelerar drásticamente la resolución de problemas específicos.&lt;/p>
&lt;p>En este artículo, daremos el primer paso en el mundo de la programación cuántica utilizando &lt;strong>Qiskit&lt;/strong>, el framework de computación cuántica de código abierto proporcionado por IBM. Esta es una guía introductoria muy detallada que explica cuidadosamente desde los fundamentos de la física y las matemáticas, hasta el proceso de escribir código real en Python y ejecutar circuitos cuánticos en un simulador.&lt;/p>
&lt;hr>
&lt;h2 id="2-fundamentos-físicos-y-matemáticos-que-sustentan-la-computación-cuántica">2. Fundamentos físicos y matemáticos que sustentan la computación cuántica
&lt;/h2>&lt;p>Para entender la programación cuántica, primero es necesario comprender los conceptos básicos de la mecánica cuántica. Aquí explicaremos los tres pilares importantes: cúbit, superposición y entrelazamiento cuántico.&lt;/p>
&lt;h3 id="21-bit-clásico-y-cúbit-qubit">2.1 Bit clásico y cúbit (Qubit)
&lt;/h3>&lt;p>La unidad de información de una computadora clásica es el &amp;ldquo;bit (Bit)&amp;rdquo;. Un bit siempre toma uno de los dos estados: &lt;code>0&lt;/code> o &lt;code>1&lt;/code>.&lt;/p>
&lt;p>Por otro lado, la unidad mínima de información en una computadora cuántica se llama &lt;strong>cúbit (Qubit: Quantum bit)&lt;/strong>. Los cúbits no solo pueden tomar los estados &lt;code>0&lt;/code> y &lt;code>1&lt;/code>, sino que también pueden &lt;strong>mantener ambos estados simultáneamente&lt;/strong>.&lt;/p>
&lt;p>Matemáticamente, el estado de un cúbit $|\psi\rangle$ se expresa como una combinación lineal (superposición) de los estados base $|0\rangle$ y $|1\rangle$.&lt;/p>
$$
|\psi\rangle = \alpha|0\rangle + \beta|1\rangle
$$
&lt;p>Aquí, $\alpha$ y $\beta$ son números complejos que representan las amplitudes de probabilidad de observar los estados $|0\rangle$ y $|1\rangle$, respectivamente. Basado en los principios básicos de la mecánica cuántica, dado que la suma de las probabilidades debe ser 1, se cumple la siguiente condición de normalización:&lt;/p>
$$
|\alpha|^2 + |\beta|^2 = 1
$$
&lt;p>Es decir, cuando &amp;ldquo;medimos (observamos)&amp;rdquo; este cúbit, la probabilidad de obtener $|0\rangle$ es $|\alpha|^2$ y la probabilidad de obtener $|1\rangle$ es $|\beta|^2$. El hecho de que el estado solo se determine probabilísticamente antes de la medición es una diferencia crucial con respecto a los bits clásicos.&lt;/p>
&lt;div class="mermaid">graph LR
A["Bit clásico (Classical Bit)"] --> B["Estado determinado: 0 o 1"]
C["Cúbit (Qubit)"] --> D["Superposición: Ambos 0 y 1"]
D --> E["El estado se determina probabilísticamente mediante la medición"]&lt;/div>
&lt;h3 id="22-superposición-superposition">2.2 Superposición (Superposition)
&lt;/h3>&lt;p>Como se mencionó anteriormente, el estado en el que se mezclan $|0\rangle$ y $|1\rangle$ se llama &lt;strong>superposición (Superposition)&lt;/strong>.&lt;/p>
&lt;p>Por ejemplo, cuando un cúbit está en un estado de superposición completamente uniforme, $\alpha = \frac{1}{\sqrt{2}}$ y $\beta = \frac{1}{\sqrt{2}}$.&lt;/p>
$$
|\psi\rangle = \frac{1}{\sqrt{2}}|0\rangle + \frac{1}{\sqrt{2}}|1\rangle
$$
&lt;p>Al medir este estado, se observa $|0\rangle$ y $|1\rangle$ con un 50% de probabilidad cada uno.
Si tenemos 2 cúbits, podemos crear una superposición de 4 estados: $|00\rangle, |01\rangle, |10\rangle, |11\rangle$. Si tenemos $n$ cúbits, podemos representar $2^n$ estados simultáneamente, y esta es una de las fuentes del poder de procesamiento paralelo de las computadoras cuánticas.&lt;/p>
&lt;h3 id="23-entrelazamiento-cuántico-entanglement">2.3 Entrelazamiento cuántico (Entanglement)
&lt;/h3>&lt;p>La propiedad más poderosa y misteriosa en la computación cuántica es el &lt;strong>entrelazamiento cuántico (Entanglement)&lt;/strong>. Este fenómeno, que Einstein llamó &amp;ldquo;acción fantasmal a distancia&amp;rdquo;, es una propiedad donde dos o más cúbits están fuertemente conectados entre sí, y cuando se determina el estado de uno de ellos, el estado del otro se determina instantáneamente, sin importar cuán lejos estén físicamente.&lt;/p>
&lt;p>Uno de los estados entrelazados más famosos, el estado $\Phi^+$ de los &amp;ldquo;estados de Bell (Bell State)&amp;rdquo;, se expresa de la siguiente manera:&lt;/p>
$$
|\Phi^+\rangle = \frac{|00\rangle + |11\rangle}{\sqrt{2}}
$$
&lt;p>En este estado, los estados $|01\rangle$ y $|10\rangle$ no existen. Por lo tanto, si medimos el primer cúbit y es $|0\rangle$, sin siquiera medir el segundo, sabemos con certeza que es $|0\rangle$. Por el contrario, si el primero es $|1\rangle$, el segundo obligatoriamente será $|1\rangle$.&lt;/p>
&lt;hr>
&lt;h2 id="3-puertas-lógicas-cuánticas-quantum-logic-gates">3. Puertas lógicas cuánticas (Quantum Logic Gates)
&lt;/h2>&lt;p>Al igual que las computadoras clásicas realizan cálculos utilizando puertas lógicas como AND, OR y NOT, las computadoras cuánticas manipulan el estado de los cúbits utilizando &lt;strong>puertas cuánticas&lt;/strong>. Dado que los estados cuánticos son vectores, las puertas cuánticas se representan como &amp;ldquo;matrices unitarias&amp;rdquo; que actúan sobre esos vectores.&lt;/p>
&lt;h3 id="31-puertas-de-pauli-pauli-x-y-z">3.1 Puertas de Pauli (Pauli-X, Y, Z)
&lt;/h3>&lt;p>Las puertas de Pauli son operaciones básicas sobre 1 cúbit.&lt;/p>
&lt;p>&lt;strong>・Puerta Pauli-X (Puerta NOT)&lt;/strong>
Equivale a la puerta NOT clásica. Invierte $|0\rangle$ a $|1\rangle$, y $|1\rangle$ a $|0\rangle$. (Rotación de 180 grados alrededor del eje X en la esfera de Bloch).&lt;/p>
$$
X = \begin{pmatrix} 0 &amp; 1 \\ 1 &amp; 0 \end{pmatrix}
$$
&lt;p>&lt;strong>・Puerta Pauli-Y&lt;/strong>
Realiza una rotación de 180 grados alrededor del eje Y. Tiene el efecto de invertir tanto la fase como el bit.&lt;/p>
$$
Y = \begin{pmatrix} 0 &amp; -i \\ i &amp; 0 \end{pmatrix}
$$
&lt;p>&lt;strong>・Puerta Pauli-Z (Puerta de inversión de fase)&lt;/strong>
Mantiene el estado $|0\rangle$ tal como está, e invierte la fase del estado $|1\rangle$ (multiplica por $-1$). (Rotación de 180 grados alrededor del eje Z).&lt;/p>
$$
Z = \begin{pmatrix} 1 &amp; 0 \\ 0 &amp; -1 \end{pmatrix}
$$
&lt;h3 id="32-puerta-de-hadamard-hadamard-gate">3.2 Puerta de Hadamard (Hadamard Gate)
&lt;/h3>&lt;p>La puerta de Hadamard (Puerta H) es una puerta extremadamente importante que convierte un estado determinado ($|0\rangle$ o $|1\rangle$) en un estado de superposición.&lt;/p>
$$
H = \frac{1}{\sqrt{2}}
\begin{pmatrix}
1 &amp; 1 \\
1 &amp; -1
\end{pmatrix}
$$
&lt;p>Al aplicar la puerta H a $|0\rangle$, obtenemos el estado $|+\rangle$, que es un estado de superposición uniforme.&lt;/p>
$$
H|0\rangle = \frac{1}{\sqrt{2}}|0\rangle + \frac{1}{\sqrt{2}}|1\rangle = |+\rangle
$$
&lt;h3 id="33-puertas-de-fase-phase-gates">3.3 Puertas de fase (Phase Gates)
&lt;/h3>&lt;p>Las puertas de fase generalizan la puerta Z, rotando la fase del estado $|1\rangle$ un ángulo específico $\theta$.&lt;/p>
$$
P(\theta) = \begin{pmatrix} 1 &amp; 0 \\ 0 &amp; e^{i\theta} \end{pmatrix}
$$
&lt;p>Ejemplos típicos son la puerta S ($\theta = \pi/2$) y la puerta T ($\theta = \pi/4$).&lt;/p>
&lt;h3 id="34-puerta-cnot-controlled-not-gate">3.4 Puerta CNOT (Controlled-NOT Gate)
&lt;/h3>&lt;p>La puerta CNOT (Puerta CX) es una puerta que opera entre 2 cúbits y es indispensable para generar entrelazamiento cuántico. Consiste en un &amp;ldquo;bit de control (Control)&amp;rdquo; y un &amp;ldquo;bit objetivo (Target)&amp;rdquo;.&lt;/p>
&lt;p>Solo cuando el bit de control es $|1\rangle$, se aplica una puerta X (operación NOT) al bit objetivo. Si el bit de control es $|0\rangle$, no hace nada.&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-conceptos-básicos-de-qiskit-y-configuración-del-entorno">4. Conceptos básicos de Qiskit y configuración del entorno
&lt;/h2>&lt;p>A partir de aquí, utilizaremos Python y Qiskit en la práctica para escribir un programa cuántico.&lt;/p>
&lt;h3 id="41-qué-es-qiskit">4.1 ¿Qué es Qiskit?
&lt;/h3>&lt;p>&lt;strong>Qiskit&lt;/strong> es un kit de desarrollo de software (SDK) de código abierto para computación cuántica desarrollado por IBM Quantum. Permite construir circuitos cuánticos de forma intuitiva utilizando Python y ejecutarlos en simuladores locales o en hardware cuántico real de IBM a través de la nube.&lt;/p>
&lt;h3 id="42-método-de-instalación">4.2 Método de instalación
&lt;/h3>&lt;p>Para utilizar Qiskit, necesitas un entorno de Python. Instala Qiskit y los paquetes relacionados (simuladores y bibliotecas de dibujo) con el siguiente comando.&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-flujo-básico-de-programación">4.3 Flujo básico de programación
&lt;/h3>&lt;p>La programación cuántica utilizando Qiskit procede principalmente en los siguientes pasos.&lt;/p>
&lt;div class="mermaid">graph TD
A["1. Construcción del circuito (Build)"] --> B["2. Compilación/Transpilación (Compile)"]
B --> C["3. Ejecución (Execute)"]
C --> D["4. Análisis y visualización de resultados (Analyze)"]&lt;/div>
&lt;ol>
&lt;li>&lt;strong>Construcción del circuito&lt;/strong>: Se crea un objeto &lt;code>QuantumCircuit&lt;/code> y se van agregando puertas.&lt;/li>
&lt;li>&lt;strong>Compilación&lt;/strong>: Se optimiza el circuito de acuerdo al backend de ejecución (hardware real o simulador).&lt;/li>
&lt;li>&lt;strong>Ejecución&lt;/strong>: Se envía el trabajo al backend y se obtienen los resultados.&lt;/li>
&lt;li>&lt;strong>Análisis&lt;/strong>: Se grafica un histograma de los resultados de la medición.&lt;/li>
&lt;/ol>
&lt;hr>
&lt;h2 id="5-práctica-construcción-de-un-circuito-que-crea-el-estado-de-bell-entrelazamiento-cuántico">5. Práctica: Construcción de un circuito que crea el estado de Bell (Entrelazamiento cuántico)
&lt;/h2>&lt;p>Intentemos crear el &amp;ldquo;entrelazamiento cuántico (estado de Bell)&amp;rdquo; que aprendimos en la teoría, en la práctica con Qiskit. El estado objetivo es $|\Phi^+\rangle = \frac{|00\rangle + |11\rangle}{\sqrt{2}}$.&lt;/p>
&lt;h3 id="51-diseño-del-circuito">5.1 Diseño del circuito
&lt;/h3>&lt;p>Para crear el estado de Bell, seguiremos los siguientes pasos:&lt;/p>
&lt;ol>
&lt;li>Preparar 2 cúbits (el estado inicial de ambos es $|0\rangle$).&lt;/li>
&lt;li>Aplicar una puerta de Hadamard (H) al primer cúbit para ponerlo en un estado de superposición.&lt;/li>
&lt;li>Aplicar una puerta CNOT utilizando el primer cúbit como &amp;ldquo;bit de control&amp;rdquo; y el segundo cúbit como &amp;ldquo;bit objetivo&amp;rdquo;.&lt;/li>
&lt;li>Realizar una medición (Measure) para leer el resultado.&lt;/li>
&lt;/ol>
&lt;h3 id="52-implementación-del-código-en-pythonqiskit">5.2 Implementación del código en Python/Qiskit
&lt;/h3>&lt;p>Veamos el código real.&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. Inicialización del circuito&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Crear un circuito cuántico con 2 cúbits y 2 bits clásicos&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. Aplicación de la puerta H&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Aplicar la puerta de Hadamard al cúbit 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. Aplicación de la puerta CNOT&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Aplicar CNOT con q0 como bit de control y q1 como bit objetivo&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. Medición&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Medir los cúbits 0 y 1 y escribir en los bits clásicos 0 y 1 respectivamente&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"># Dibujar el diagrama del circuito (usando 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>Al ejecutar este código, se mostrará el siguiente diagrama de circuito cuántico en arte ASCII en la consola.&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> representa la puerta de Hadamard, la combinación de &lt;code>■&lt;/code> y &lt;code>X&lt;/code> es la puerta CNOT, y &lt;code>M&lt;/code> representa la medición.&lt;/p>
&lt;h3 id="53-ejecución-en-el-simulador-e-interpretación-de-los-resultados">5.3 Ejecución en el simulador e interpretación de los resultados
&lt;/h3>&lt;p>A continuación, ejecutaremos este circuito en el simulador de alto rendimiento &lt;code>Aer&lt;/code> de IBM y verificaremos los resultados.&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"># Obtener el backend del simulador 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"># Transpilar (optimizar) el circuito para el simulador&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"># Ejecutar el circuito (aquí ejecutamos 1000 disparos)&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"># Obtener los resultados&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"># Obtener el recuento de observaciones del estado&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">Resultados de medición:&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"># Graficar el histograma&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>Interpretación de los resultados&lt;/strong>&lt;/p>
&lt;p>La salida en la consola debería verse así:
&lt;code>Resultados de medición: {'00': 495, '11': 505}&lt;/code>
(*Como la probabilidad es aleatoria, los números variarán ligeramente en cada ejecución).&lt;/p>
&lt;p>En un entorno de simulación ideal, los resultados de la medición mostrarán &lt;code>00&lt;/code> y &lt;code>11&lt;/code> con aproximadamente un 50% de probabilidad cada uno, y &lt;code>01&lt;/code> y &lt;code>10&lt;/code> no se observarán en absoluto.
Esto coincide perfectamente con la predicción teórica del estado de Bell $|\Phi^+\rangle = \frac{|00\rangle + |11\rangle}{\sqrt{2}}$ que hemos creado. Si el primer cúbit es 0, el segundo siempre será 0, y si es 1, siempre será 1, simulando con precisión este &amp;ldquo;entrelazamiento cuántico&amp;rdquo;.&lt;/p>
&lt;p>Cabe señalar que al ejecutarlo en una computadora cuántica real (IBM Quantum Hardware), los estados &lt;code>01&lt;/code> y &lt;code>10&lt;/code> pueden ser observados ligeramente debido al impacto del ruido (decoherencia cuántica y errores de puerta). Reducir este ruido (corrección de errores cuánticos) es uno de los mayores desafíos en el desarrollo actual de las computadoras cuánticas.&lt;/p>
&lt;hr>
&lt;h2 id="6-escalando-a-algoritmos-más-avanzados">6. Escalando a algoritmos más avanzados
&lt;/h2>&lt;p>La creación del estado de Bell puede considerarse el &amp;ldquo;Hello World&amp;rdquo; de la programación cuántica. Al desarrollarlo aún más, es posible construir poderosos algoritmos que superan a las computadoras clásicas.&lt;/p>
&lt;h3 id="61-algoritmo-de-deutsch-jozsa-deutsch-jozsa-algorithm">6.1 Algoritmo de Deutsch-Jozsa (Deutsch-Jozsa Algorithm)
&lt;/h3>&lt;p>Este es un problema en el que se determina si una función dada $f(x)$ es una &amp;ldquo;función constante&amp;rdquo; (siempre devuelve 0 o siempre devuelve 1 independientemente de la entrada) o una &amp;ldquo;función equilibrada&amp;rdquo; (devuelve 0 para la mitad de las entradas y 1 para la otra mitad).
En una computadora clásica, en el peor de los casos, se requerirían $2^{n-1} + 1$ evaluaciones de la función, pero utilizando el algoritmo de Deutsch-Jozsa, se puede determinar con &lt;strong>solo 1 evaluación&lt;/strong> utilizando el paralelismo cuántico. Esto muestra el patrón básico de los algoritmos cuánticos, donde se introduce un estado de superposición, se utiliza la interferencia (Interference) para cancelar los estados innecesarios y se amplifica la respuesta deseada.&lt;/p>
&lt;h3 id="62-algoritmo-de-grover-grovers-algorithm">6.2 Algoritmo de Grover (Grover&amp;rsquo;s Algorithm)
&lt;/h3>&lt;p>En el problema de buscar datos específicos en una base de datos de $N$ elementos no ordenados, mientras que un algoritmo clásico requiere un promedio de $N/2$ cálculos, el algoritmo de Grover puede encontrar los datos deseados en $\sqrt{N}$ cálculos.
Este algoritmo utiliza una caja negra llamada &amp;ldquo;oráculo (Oracle)&amp;rdquo; para invertir la fase de la solución objetivo, y luego realiza una &amp;ldquo;amplificación de amplitud (Amplitude Amplification)&amp;rdquo; para aumentar drásticamente la probabilidad de observar la solución deseada.&lt;/p>
&lt;div class="mermaid">graph TD
A["Inicialización (Superposición de todos los estados)"] --> B["Oráculo (Invierte la fase de la respuesta correcta)"]
B --> C["Operador de difusión (Amplificación de amplitud por inversión en torno a la media)"]
C --> D{"¿Se alcanzó una probabilidad suficiente?"}
D -- "No" --> B
D -- "Yes" --> E["Medición"]&lt;/div>
&lt;hr>
&lt;h2 id="7-conclusión-y-próximos-pasos-en-el-aprendizaje">7. Conclusión y próximos pasos en el aprendizaje
&lt;/h2>&lt;p>En este artículo, comenzamos desde conceptos fundamentales de la computación cuántica como la superposición y el entrelazamiento cuántico, y explicamos detalladamente hasta la manipulación de puertas lógicas cuánticas utilizando Qiskit, así como la construcción real, simulación e interpretación de resultados del estado de Bell.&lt;/p>
&lt;p>Dado que Qiskit se puede escribir en un lenguaje familiar como Python, es una herramienta poderosa que te permite superar las barreras matemáticas y físicas, y concentrarte en la construcción de algoritmos. Aunque actualmente las computadoras cuánticas están en la era de los dispositivos cuánticos ruidosos de escala intermedia (NISQ: Noisy Intermediate-Scale Quantum), la investigación aplicada está avanzando rápidamente en todo el mundo en muchos campos como el aprendizaje automático cuántico (Quantum Machine Learning), la simulación química (Quantum Chemistry) y la criptografía.&lt;/p>
&lt;p>Aprovecha esta oportunidad para construir varios circuitos cuánticos por ti mismo utilizando Qiskit y ejecútalos en procesadores reales de IBM Quantum. Seguramente podrás experimentar con tus propias manos el paradigma computacional del futuro.&lt;/p>
&lt;h3 id="referencias">Referencias
&lt;/h3>&lt;ul>
&lt;li>&lt;a class="link" href="https://qiskit.org/documentation/" target="_blank" rel="noopener"
>Documentación oficial de Qiskit&lt;/a>&lt;/li>
&lt;li>&lt;a class="link" href="https://qiskit.org/textbook/ja/preface.html" target="_blank" rel="noopener"
>Qiskit Textbook&lt;/a> - Texto oficial recomendado para aquellos que deseen profundizar en los antecedentes matemáticos y algorítmicos.&lt;/li>
&lt;li>IBM Quantum Learning&lt;/li>
&lt;/ul>
&lt;p>¡Bienvenido al mundo cuántico!&lt;/p></description></item><item><title>¿Qué es la supremacía cuántica? Las últimas tendencias de Google e IBM</title><link>http://kenji.blog/es/p/what-is-quantum-supremacy-google-ibm/</link><pubDate>Fri, 11 Sep 2026 18:00:00 +0900</pubDate><guid>http://kenji.blog/es/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 ¿Qué es la supremacía cuántica? Las últimas tendencias de Google e IBM" />&lt;h2 id="1-introducción-el-amanecer-de-la-computación-cuántica-y-la-supremacía-cuántica">1. Introducción: El amanecer de la computación cuántica y la &amp;ldquo;supremacía cuántica&amp;rdquo;
&lt;/h2>&lt;p>La computación cuántica tiene el potencial de resolver problemas complejos que los ordenadores clásicos (los PC y superordenadores que usamos habitualmente en la actualidad) no pueden resolver en un tiempo realista, aplicando la mecánica cuántica, el principio fundamental de la física, al procesamiento de información. Este campo ha sido principalmente de investigación teórica durante mucho tiempo, pero en los últimos años, con el rápido avance del hardware, la competencia por la aplicación práctica se ha intensificado.&lt;/p>
&lt;p>Una de las palabras clave que más atención ha atraído es la &amp;ldquo;supremacía cuántica&amp;rdquo; (Quantum Supremacy). Esto se refiere al momento en que un ordenador cuántico demuestra una capacidad de cálculo que abruma a los ordenadores clásicos en una tarea computacional específica. En este artículo, explicaremos detalladamente y con profundidad técnica y matemática desde la definición estricta de supremacía cuántica, los detalles del experimento del procesador &amp;ldquo;Sycamore&amp;rdquo; de Google que anunció haber alcanzado este hito mundial en 2019, la refutación y el enfoque propio de IBM al respecto, hasta las últimas hojas de ruta hacia la &amp;ldquo;corrección de errores cuánticos&amp;rdquo; (Quantum Error Correction: QEC) y la &amp;ldquo;computación cuántica tolerante a fallos&amp;rdquo; (Fault-Tolerant Quantum Computing: FTQC), que son el mayor obstáculo para su verdadera aplicación práctica.&lt;/p>
&lt;hr>
&lt;h2 id="2-antecedentes-teóricos-fundamentos-de-la-computación-cuántica-y-clases-de-complejidad">2. Antecedentes teóricos: Fundamentos de la computación cuántica y clases de complejidad
&lt;/h2>&lt;p>Para entender la supremacía cuántica, primero es necesario comprender los fundamentos matemáticos de la computación cuántica y su posición en la teoría de la complejidad computacional.&lt;/p>
&lt;h3 id="cúbits-qubits-y-superposición">Cúbits (Qubits) y superposición
&lt;/h3>&lt;p>La unidad mínima de información en un ordenador clásico es el bit (0 o 1), pero en un ordenador cuántico se utiliza el cúbit (Qubit). El estado $|\psi\rangle$ de un cúbit se representa como una combinación lineal compleja de los estados base $|0\rangle$ y $|1\rangle$.&lt;/p>
$$
|\psi\rangle = \alpha|0\rangle + \beta|1\rangle
$$
&lt;p>Donde $\alpha, \beta \in \mathbb{C}$, y cumplen con la condición de normalización $|\alpha|^2 + |\beta|^2 = 1$. A esta propiedad se le llama &amp;ldquo;superposición&amp;rdquo; (Superposition).&lt;/p>
&lt;h3 id="entrelazamiento-entanglement-y-producto-tensorial">Entrelazamiento (Entanglement) y producto tensorial
&lt;/h3>&lt;p>Cuando hay varios cúbits, el estado de todo el sistema se representa por el producto tensorial del espacio de estados de cada cúbit individual. Un sistema de $n$ cúbits es un vector en el espacio de Hilbert de $2^n$ dimensiones $\mathcal{H}^{\otimes n}$.&lt;/p>
$$
|\Psi\rangle = \sum_{x \in \{0, 1\}^n} c_x |x\rangle
$$
&lt;p>Donde $\sum |c_x|^2 = 1$. El estado en el que los cúbits no son independientes entre sí y el estado de uno depende del otro se llama &amp;ldquo;entrelazamiento cuántico&amp;rdquo; (Quantum Entanglement). Esto le da a los ordenadores cuánticos el potencial de procesar simultáneamente un espacio de estados exponencialmente vasto.&lt;/p>
&lt;h3 id="definición-teórica-de-la-complejidad-computacional-de-la-supremacía-cuántica">Definición teórica de la complejidad computacional de la supremacía cuántica
&lt;/h3>&lt;p>En la teoría de la complejidad computacional, la clase de problemas que un ordenador clásico puede resolver eficientemente (en tiempo polinómico) se llama &lt;strong>BPP&lt;/strong> (Bounded-error Probabilistic Polynomial time). Por otro lado, la clase de problemas que un ordenador cuántico puede resolver eficientemente es &lt;strong>BQP&lt;/strong> (Bounded-error Quantum Polynomial time).&lt;/p>
&lt;p>Demostrar la supremacía cuántica significa &amp;ldquo;ejecutar en hardware cuántico real una tarea específica que está incluida en BQP pero no en BPP (o es muy probable que no lo esté), y superar la simulación por superordenadores clásicos en términos de tiempo y recursos&amp;rdquo;. Se puede decir que es un intento histórico de refutar mediante experimentos físicos la tesis extendida de Church-Turing (&amp;ldquo;todo modelo de computación físicamente realizable puede ser simulado en tiempo polinómico por una máquina de Turing probabilística&amp;rdquo;).&lt;/p>
&lt;hr>
&lt;h2 id="3-2019-demostración-de-la-supremacía-cuántica-por-google">3. 2019: Demostración de la supremacía cuántica por Google
&lt;/h2>&lt;p>En octubre de 2019, el equipo de Google Quantum AI anunció en la revista científica &amp;ldquo;Nature&amp;rdquo; que habían logrado la supremacía cuántica utilizando un procesador superconductor de 53 cúbits llamado &amp;ldquo;Sycamore&amp;rdquo;.&lt;/p>
&lt;h3 id="arquitectura-del-procesador-sycamore">Arquitectura del procesador Sycamore
&lt;/h3>&lt;p>El procesador Sycamore está compuesto por 54 cúbits superconductores tipo Transmon dispuestos en una cuadrícula bidimensional (se usaron 53 porque uno de ellos falló durante el experimento). Se colocaron acopladores ajustables (Tunable Couplers) entre los cúbits adyacentes para realizar puertas de dos cúbits (un híbrido de puerta iSWAP y puerta Z controlada) de alta velocidad y alta precisión.&lt;/p>
&lt;div class="mermaid">graph TD
A["Entrada del Algoritmo Cuántico"] --> B["Procesador Sycamore (53 Cúbits)"]
B --> C["Aplicar Puertas Cuánticas Aleatorias"]
C --> D["Medir Estados Cuánticos (Cadenas de Bits)"]
D --> E["Evaluación Comparativa de Entropía Cruzada (XEB)"]
E --> F["Verificar la Supremacía Cuántica"]&lt;/div>
&lt;h3 id="muestreo-de-circuitos-cuánticos-aleatorios-random-circuit-sampling-rcs">Muestreo de circuitos cuánticos aleatorios (Random Circuit Sampling: RCS)
&lt;/h3>&lt;p>La tarea elegida por Google fue el &amp;ldquo;muestreo de circuitos cuánticos aleatorios&amp;rdquo;. Consiste en aplicar puertas de un solo cúbit y de dos cúbits elegidas al azar durante múltiples ciclos (profundidad $m$), y luego medir el estado final para muestrear a partir de la distribución de probabilidad de las cadenas de bits obtenidas.&lt;/p>
&lt;p>La probabilidad de la cadena de bits $x$ que sale de un circuito cuántico aleatorio ideal (sin ruido) no es una distribución uniforme, sino que muestra un patrón similar a un patrón de interferencia llamado distribución de Porter-Thomas (Porter-Thomas distribution). Para muestrear a partir de esta distribución en un ordenador clásico se requiere la simulación de todo el vector de estado, y la complejidad computacional aumenta exponencialmente con el número de cúbits $n$ y la profundidad del circuito $m$.&lt;/p>
&lt;h3 id="evaluación-de-la-fidelidad-fidelity-evaluación-comparativa-de-entropía-cruzada-lineal-xeb">Evaluación de la fidelidad (Fidelity): Evaluación comparativa de entropía cruzada lineal (XEB)
&lt;/h3>&lt;p>Para demostrar que los resultados del experimento no eran mero ruido, sino los resultados de un cálculo cuántico real, Google utilizó la evaluación comparativa de entropía cruzada lineal (Linear Cross-Entropy Benchmarking: XEB). Se calcula la probabilidad ideal $P(x_i)$ del circuito para la cadena de bits $x_i$ obtenida en el experimento con un ordenador clásico, y la fidelidad $\mathcal{F}_{\text{XEB}}$ se calcula con la siguiente fórmula:&lt;/p>
$$
\mathcal{F}_{\text{XEB}} = 2^n \langle P(x_i) \rangle_{i} - 1
$$
&lt;p>Si $\mathcal{F}_{\text{XEB}}$ es 0, significa ruido puro; si es 1, significa un procesador cuántico ideal sin ruido. El procesador Sycamore logró $\mathcal{F}_{\text{XEB}} \approx 0.002$ (0,2%) en un circuito de profundidad 20. Aunque parece bajo a primera vista, fue un valor estadísticamente significativo mayor que cero y un logro asombroso al controlar un espacio de estados de $2^{53} \approx 9 \times 10^{15}$.&lt;/p>
&lt;p>La tasa de error global se modeló aproximadamente como el producto de los errores individuales de las puertas, errores de medición, etc.&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$ es el error de la puerta, $e_{RO}$ es el error de medición)&lt;/p>
&lt;p>Google afirmó que a un superordenador clásico (Summit) le llevaría unos 10.000 años simular este circuito. En contraste, Sycamore completó el muestreo en solo 200 segundos.&lt;/p>
&lt;hr>
&lt;h2 id="4-la-refutación-de-ibm-de-la-supremacía-a-la-utilidad-utility">4. La refutación de IBM: De la &amp;ldquo;supremacía&amp;rdquo; a la &amp;ldquo;utilidad&amp;rdquo; (Utility)
&lt;/h2>&lt;p>El anuncio de Google sorprendió al mundo entero, pero IBM, quien desarrolló el superordenador más grande del mundo &amp;ldquo;Summit&amp;rdquo; y es también líder en el desarrollo de ordenadores cuánticos, publicó de inmediato un documento refutando esta afirmación.&lt;/p>
&lt;h3 id="mejora-de-la-simulación-clásica-mediante-la-contracción-de-redes-tensoriales">Mejora de la simulación clásica mediante la contracción de redes tensoriales
&lt;/h3>&lt;p>El núcleo de la refutación de IBM fue que &amp;ldquo;la optimización del algoritmo y los recursos del lado del ordenador clásico eran insuficientes&amp;rdquo;. Google basó su estimación de 10.000 años asumiendo un simulador de vector de estado que calcula directamente la evolución temporal de la ecuación de Schrödinger, pero IBM señaló que al usar una técnica llamada &amp;ldquo;redes tensoriales&amp;rdquo; (Tensor Network), el tiempo de simulación podría reducirse drásticamente.&lt;/p>
&lt;p>En las redes tensoriales, las operaciones de puertas de los circuitos cuánticos se representan como cálculos de matrices multidimensionales (tensores), y se optimiza el orden de la &amp;ldquo;contracción&amp;rdquo; (Contraction) de la red. Además, afirmaron que al utilizar plenamente el enorme almacenamiento de 250 PB de Summit (estratificación de disco y memoria), era posible retener todo el vector de estado y realizar una simulación de mayor precisión en solo &amp;ldquo;dos días y medio&amp;rdquo;.&lt;/p>
&lt;h3 id="ventaja-cuántica-quantum-advantage-y-utilidad-cuántica-quantum-utility">Ventaja cuántica (Quantum Advantage) y utilidad cuántica (Quantum Utility)
&lt;/h3>&lt;p>Con este debate como punto de inflexión, la tendencia de toda la industria pasó de aferrarse simplemente a &amp;ldquo;ejecutar tareas artificiales que son imposibles clásicamente (Supremacy)&amp;rdquo;, a demostrar una &amp;ldquo;ventaja sustancial sobre los enfoques clásicos en problemas útiles del mundo real (Quantum Advantage)&amp;rdquo;, y más aún a la fase en la que &amp;ldquo;el ordenador cuántico funciona como una nueva herramienta para el descubrimiento científico (Quantum Utility)&amp;rdquo;.&lt;/p>
&lt;p>La propia IBM evita el término &amp;ldquo;supremacía&amp;rdquo; y aboga por el &amp;ldquo;volumen cuántico&amp;rdquo; (Quantum Volume) y los &amp;ldquo;CLOPS (Circuit Layer Operations Per Second)&amp;rdquo; como indicadores integrales de rendimiento de los procesadores cuánticos, avanzando en un desarrollo que enfatiza el equilibrio entre la escala y la calidad del hardware.&lt;/p>
&lt;div class="mermaid">timeline
title "La evolución de los hitos cuánticos"
2019 : "Google Sycamore (53Q)" : "Anuncio de la Supremacía Cuántica"
2019 : "Refutación de IBM" : "Simulación del superordenador Summit en 2,5 días"
2021 : "IBM Eagle (127Q)" : "Rompiendo la barrera de los 100 cúbits"
2022 : "IBM Osprey (433Q)" : "Avanzando en la escala del procesador"
2023 : "Código de Superficie de Google" : "Escalando la corrección de errores (d=3 a d=5)"
2023 : "Utilidad Cuántica de IBM" : "Simulación de modelo de espín complejo en 127Q"
2024 : "Más allá" : "Era de Cúbits Lógicos y Mitigación de Errores"&lt;/div>
&lt;hr>
&lt;h2 id="5-la-próxima-frontera-mitigación-de-errores-error-mitigation-y-corrección-de-errores-cuánticos-qec">5. La próxima frontera: Mitigación de errores (Error Mitigation) y corrección de errores cuánticos (QEC)
&lt;/h2>&lt;p>Los ordenadores cuánticos actuales se denominan &amp;ldquo;NISQ (Noisy Intermediate-Scale Quantum)&amp;rdquo; y son susceptibles a los efectos del ruido (errores debidos a la interacción con el entorno externo y la imperfección del control), y cuando realizan cálculos largos, los resultados quedan enterrados en el ruido. Los enfoques para superar este problema se dividen a grandes rasgos en dos: &amp;ldquo;mitigación de errores&amp;rdquo; (Error Mitigation) y &amp;ldquo;corrección de errores cuánticos&amp;rdquo; (Quantum Error Correction).&lt;/p>
&lt;h3 id="mitigación-de-errores-error-mitigation">Mitigación de errores (Error Mitigation)
&lt;/h3>&lt;p>La mitigación de errores es una técnica que elimina los efectos del ruido de los valores esperados de los resultados computacionales mediante el posprocesamiento clásico, sin alterar el hardware cuántico. En 2023, IBM logró la &amp;ldquo;utilidad cuántica&amp;rdquo; (Quantum Utility) combinando el procesador &amp;ldquo;Eagle&amp;rdquo; de 127 cúbits con técnicas de mitigación de errores como la &amp;ldquo;extrapolación de ruido cero&amp;rdquo; (Zero-Noise Extrapolation: ZNE), superando la precisión de los métodos de redes tensoriales aproximadas de última generación en la simulación de la evolución temporal de modelos de Ising complejos.&lt;/p>
&lt;h3 id="corrección-de-errores-cuánticos-qec-y-cúbits-lógicos">Corrección de errores cuánticos (QEC) y cúbits lógicos
&lt;/h3>&lt;p>Sin embargo, en última instancia, para ejecutar algoritmos complejos arbitrarios (por ejemplo, el algoritmo de factorización de Shor o cálculos químicos cuánticos complejos), la mitigación de errores por sí sola es insuficiente, y es indispensable la &amp;ldquo;corrección de errores cuánticos&amp;rdquo; (QEC) que detecta y corrige errores dinámicamente.&lt;/p>
&lt;p>El enfoque principal de QEC es el &amp;ldquo;código de superficie&amp;rdquo; (Surface Code). Este es un método que organiza múltiples cúbits físicos (cúbits de datos) en una cuadrícula bidimensional, coloca cúbits para medición (cúbits ancilla) entre ellos, y realiza verificaciones de paridad continuas llamadas &amp;ldquo;estabilizadores&amp;rdquo; (Stabilizers).&lt;/p>
&lt;div class="mermaid">graph LR
Q1["Cúbit de Datos (Data)"] --- M1["Medir Estabilizador X (Ancilla)"]
Q2["Cúbit de Datos (Data)"] --- M1
Q3["Cúbit de Datos (Data)"] --- M2["Medir Estabilizador Z (Ancilla)"]
Q4["Cúbit de Datos (Data)"] --- M2
M1 --> EC["Decodificación del Síndrome de Error (Clásico)"]
M2 --> EC
EC --> LQ["Actualización del Estado del Cúbit Lógico"]&lt;/div>
&lt;h4 id="teorema-del-umbral-threshold-theorem-y-distancia-d">Teorema del umbral (Threshold Theorem) y distancia $d$
&lt;/h4>&lt;p>Existe un &amp;ldquo;teorema del umbral&amp;rdquo; para la corrección de errores cuánticos. Si la tasa de error $p$ de los cúbits físicos está por debajo de un cierto umbral $p_{th}$ (alrededor del 1% en el caso de los códigos de superficie), se puede reducir la tasa de error lógico $p_L$ de manera exponencial al aumentar la distancia del código (Distance) $d$ (asignando más cúbits físicos a un cúbit lógico).&lt;/p>
&lt;p>La fórmula aproximada de la tasa de error lógico se expresa de la siguiente manera:&lt;/p>
$$
p_L \approx \Lambda \left( \frac{p}{p_{th}} \right)^{\frac{d+1}{2}}
$$
&lt;p>Donde $\Lambda$ es una constante. Si $p &lt; p_{th}$, cuanto mayor sea $d$, menor será $p_L$. Sin embargo, si $p > p_{th}$, cuantos más cúbits físicos se añadan, más ruido se acumulará, empeorando la tasa de error lógico.&lt;/p>
&lt;h4 id="hito-de-google-en-2023-demostración-de-la-reducción-de-errores-ampliando-la-distancia">Hito de Google en 2023: Demostración de la reducción de errores ampliando la distancia
&lt;/h4>&lt;p>En febrero de 2023, Google publicó un artículo monumental en &amp;ldquo;Nature&amp;rdquo;. Utilizando el procesador Sycamore de tercera generación, demostraron por primera vez en el mundo que al ampliar la distancia del código de superficie de $d=3$ (usando 17 cúbits físicos) a $d=5$ (usando 49 cúbits físicos), la tasa de error lógico disminuyó ligeramente del 3,028% al 2,914%.&lt;/p>
&lt;p>Esto significa que entraron en la región de $p &lt; p_{th}$, indicando que se ha completado la prueba de concepto (Proof of Concept) más importante hacia la FTQC: que el rendimiento mejora cuantos más cúbits físicos se añadan.&lt;/p>
&lt;hr>
&lt;h2 id="6-hoja-de-ruta-y-perspectivas-hacia-la-ftqc-computación-cuántica-tolerante-a-fallos">6. Hoja de ruta y perspectivas hacia la FTQC (Computación cuántica tolerante a fallos)
&lt;/h2>&lt;p>Google e IBM están inmersos en una feroz competencia de desarrollo hacia el objetivo final de la FTQC (Fault-Tolerant Quantum Computing), adoptando arquitecturas y enfoques diferentes respectivamente.&lt;/p>
&lt;h3 id="el-enfoque-de-ibm-modularización-y-celosía-heavy-hex">El enfoque de IBM: Modularización y celosía Heavy-Hex
&lt;/h3>&lt;p>IBM se está centrando en ampliar el procesador al mismo tiempo que reduce drásticamente las tasas de error. Mientras desafían los límites de un solo chip con &amp;ldquo;Eagle (127Q)&amp;rdquo;, &amp;ldquo;Osprey (433Q)&amp;rdquo; y &amp;ldquo;Condor (1121Q)&amp;rdquo;, han anunciado una arquitectura modular llamada &amp;ldquo;Quantum System Two&amp;rdquo;. Además, para la topología de conexión de los cúbits, han adoptado la &amp;ldquo;celosía Heavy-Hex&amp;rdquo; para reducir la diafonía (crosstalk) innecesaria y aumentar la estabilidad. La estrategia de IBM es un enfoque híbrido que persigue la utilidad con mitigación de errores avanzada a corto plazo, introduciendo gradualmente la QEC.&lt;/p>
&lt;h3 id="el-enfoque-de-google-mejora-de-la-calidad-de-los-cúbits-lógicos">El enfoque de Google: Mejora de la calidad de los cúbits lógicos
&lt;/h3>&lt;p>La estrategia de Google pone el énfasis en reducir la tasa de error de un solo cúbit lógico al extremo (por ejemplo, reducirla a $10^{-6}$) más que en aumentar rápidamente el número de cúbits físicos. Sobre esa base, tienen como objetivo establecer una tecnología para transferir estados cuánticos entre módulos (Quantum Interconnects) y construir un sistema a gran escala que opere desde miles hasta decenas de miles de cúbits físicos en paralelo.&lt;/p>
&lt;p>La implementación de protocolos para ejecutar puertas no de Clifford con tolerancia a fallos, como la destilación de estados mágicos (Magic State Distillation), también será un gran obstáculo técnico en el futuro. Para ejecutar el algoritmo práctico de Shor y descifrar la criptografía RSA de 2048 bits, se dice que se necesitarán miles de cúbits lógicos con una tasa de error inferior a $10^{-8}$, lo que equivale a entre millones y decenas de millones de cúbits físicos, por lo que el camino aún es largo.&lt;/p>
&lt;hr>
&lt;h2 id="7-conclusión">7. Conclusión
&lt;/h2>&lt;p>La &amp;ldquo;supremacía cuántica&amp;rdquo; fue un hito importante en la historia de los ordenadores cuánticos que demostró físicamente el potencial teórico de la computación. La demostración de Google en 2019 y la refutación constructiva de IBM impulsaron a toda la industria desde una mera prueba teórica hacia la búsqueda de la utilidad (Utility) real, y finalmente hacia una era de ingeniería a gran escala para la computación cuántica tolerante a fallos (FTQC).&lt;/p>
&lt;p>Actualmente somos testigos del período de transición desde los dispositivos NISQ plagados de ruido hasta los dispositivos de cúbits lógicos equipados con corrección de errores. En los próximos años o décadas, los nuevos descubrimientos en la ciencia de los materiales, las revoluciones en el proceso de descubrimiento de fármacos y los avances en los problemas de optimización se harán realidad junto con la evolución de este hardware cuántico.&lt;/p>
&lt;p>No podemos perder de vista las tendencias de Google, IBM y los investigadores de todo el mundo que están dando forma al futuro de la informática.&lt;/p></description></item><item><title>¿Cómo cambiarán el blockchain y las criptomonedas en la era post-cuántica?</title><link>http://kenji.blog/es/p/post-quantum-blockchain-and-crypto/</link><pubDate>Fri, 11 Sep 2026 17:00:00 +0900</pubDate><guid>http://kenji.blog/es/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 ¿Cómo cambiarán el blockchain y las criptomonedas en la era post-cuántica?" />&lt;h2 id="1-introducción-los-pasos-de-la-era-post-cuántica-y-la-crisis-del-blockchain">1. Introducción: Los pasos de la era post-cuántica y la crisis del blockchain
&lt;/h2>&lt;p>Desde el nacimiento de Bitcoin en 2009 por Satoshi Nakamoto, la tecnología blockchain ha crecido hasta convertirse en la base de sistemas financieros y aplicaciones en todo el mundo como un &amp;ldquo;libro mayor descentralizado e inalterable&amp;rdquo;. Esta robusta seguridad está respaldada por tecnologías criptográficas modernas: &lt;strong>Criptografía de Clave Pública (Public Key Cryptography)&lt;/strong> y &lt;strong>Funciones Hash Criptográficas (Cryptographic Hash Functions)&lt;/strong>.&lt;/p>
&lt;p>Estas tecnologías criptográficas garantizan la seguridad basándose en la &amp;ldquo;dificultad computacional&amp;rdquo; matemática, lo que significa que una computadora clásica (como las PC o supercomputadoras que usamos hoy en día) tardaría la edad del universo en descifrarlas.&lt;/p>
&lt;p>Sin embargo, esta premisa está a punto de ser anulada desde su raíz debido al rápido desarrollo y aplicación práctica de las &lt;strong>Computadoras Cuánticas (Quantum Computers)&lt;/strong>, la frontera de la física y las ciencias de la información. Aprovechando propiedades únicas de la mecánica cuántica como la &amp;ldquo;Superposición (Superposition)&amp;rdquo; y el &amp;ldquo;Entrelazamiento (Entanglement)&amp;rdquo;, las computadoras cuánticas exhiben un poder computacional en ciertos problemas matemáticos que abruma abrumadoramente a las computadoras clásicas convencionales, lo que se conoce como &amp;ldquo;Supremacía Cuántica (Quantum Supremacy)&amp;rdquo;.&lt;/p>
&lt;p>En este artículo, exploraremos en profundidad, desde un punto de vista técnico y matemático, las amenazas específicas que la tecnología blockchain enfrenta debido a las computadoras cuánticas, así como las últimas tendencias en la &lt;strong>Criptografía Post-Cuántica (PQC: Post-Quantum Cryptography)&lt;/strong> como solución, y los escenarios de transición para las redes de criptoactivos.&lt;/p>
&lt;hr>
&lt;h2 id="2-fundamentos-de-las-computadoras-cuánticas-y-dos-grandes-amenazas-para-el-blockchain">2. Fundamentos de las computadoras cuánticas y dos grandes amenazas para el blockchain
&lt;/h2>&lt;p>Los sistemas de blockchain actuales consisten principalmente en los siguientes dos elementos criptográficos, y cada uno está expuesto a diferentes amenazas por algoritmos cuánticos.&lt;/p>
&lt;div class="mermaid">graph TD
A["El increíble poder computacional de las computadoras cuánticas"] --> B["Algoritmo de Shor (Shor's Algorithm)"]
A --> C["Algoritmo de Grover (Grover's Algorithm)"]
B --> D["Colapso de la criptografía de clave pública (ECDSA/RSA/DSA)"]
C --> E["Impacto en las funciones hash criptográficas (SHA-256)"]
D --> F["Identificación de claves privadas ajenas y falsificación de transacciones"]
E --> G["Ventaja en la minería PoW y ataques a ciertas direcciones"]
F --> H["Amenaza letal y directa en la cadena de bloques"]
G --> I["Amenazas manejables con ajustes de algoritmos (por ejemplo, extensión de longitud de clave)"]
style H fill:#ff9999,stroke:#cc0000,stroke-width:2px;
style I fill:#ffff99,stroke:#cccc00,stroke-width:2px;&lt;/div>
&lt;h3 id="21-fundamentos-y-dificultad-computacional-de-la-criptografía-de-curva-elíptica-ecdsa">2.1. Fundamentos y dificultad computacional de la Criptografía de Curva Elíptica (ECDSA)
&lt;/h3>&lt;p>Muchas blockchains, incluidas Bitcoin y Ethereum, adoptan el &lt;strong>Algoritmo de Firma Digital de Curva Elíptica (ECDSA: Elliptic Curve Digital Signature Algorithm)&lt;/strong> como su algoritmo de firma digital. Específicamente, Bitcoin utiliza la curva elíptica con el parámetro &lt;code>secp256k1&lt;/code>.&lt;/p>
&lt;p>La seguridad de la criptografía de curva elíptica se basa en la dificultad computacional del &lt;strong>Problema del Logaritmo Discreto de Curva Elíptica (ECDLP: Elliptic Curve Discrete Logarithm Problem)&lt;/strong>.
Una curva elíptica se define por una ecuación en la forma normal de Weierstrass de la siguiente manera:&lt;/p>
$$
y^2 \equiv x^3 + ax + b \pmod{p}
$$
&lt;p>En la &lt;code>secp256k1&lt;/code> de Bitcoin, $a = 0, b = 7$, y $p$ es un número primo muy grande.
Sea $G$ el punto base (punto de referencia) en esta curva, y $k$ una clave privada, que es un número entero aleatorio masivo de 256 bits. Entonces, la clave pública $K$ se obtiene mediante la suma (multiplicación escalar) del punto base $k$ veces.&lt;/p>
$$
K = k \times G = \underbrace{G + G + \dots + G}_{k \text{ veces}}
$$
&lt;p>Usando una computadora clásica, calcular inversamente la clave privada $k$ (encontrar el logaritmo discreto) a partir de la clave pública expuesta $K$ y el punto base $G$ requiere un tiempo computacional exponencial de $\mathcal{O}(\sqrt{p})$ incluso usando los mejores algoritmos clásicos como el método de factorización rho de Pollard. Para una clave de 256 bits, se requieren aproximadamente $2^{128}$ operaciones, un nivel que no podría resolverse ni operando supercomputadoras actuales durante miles de millones de años.&lt;/p>
&lt;h3 id="22-colapso-por-el-algoritmo-de-shor-shors-algorithm">2.2. Colapso por el Algoritmo de Shor (Shor&amp;rsquo;s Algorithm)
&lt;/h3>&lt;p>Sin embargo, el &lt;strong>Algoritmo de Shor&lt;/strong>, publicado por Peter Shor en 1994, destruyó por completo esta premisa. El algoritmo de Shor fue propuesto originalmente para resolver el problema de factorización de enteros (la base del cifrado RSA) en tiempo polinómico, pero también es aplicable al problema del logaritmo discreto y al problema del logaritmo discreto de curva elíptica.&lt;/p>
&lt;p>El núcleo del algoritmo de Shor radica en el uso de la &lt;strong>Transformada de Fourier Cuántica (QFT: Quantum Fourier Transform)&lt;/strong> para encontrar rápidamente el &amp;ldquo;período (Period)&amp;rdquo; de una función.&lt;/p>
$$
\text{Complejidad clásica} = \mathcal{O}(2^{n/2}) \quad (n\text{ es la longitud en bits})
$$
$$
\text{Complejidad del algoritmo cuántico} = \mathcal{O}(n^3)
$$
&lt;p>De esta manera, el algoritmo de Shor reduce drásticamente el tiempo exponencial a un &lt;strong>tiempo polinómico (Polynomial Time)&lt;/strong>. Si se completa una computadora cuántica con suficientes cúbits lógicos, será posible determinar la clave privada $k$ a partir de la clave pública $K$ expuesta en la red en minutos o segundos. Esto permitiría a los atacantes obtener fácilmente las claves privadas de las carteras de otras personas y tomar control total de los fondos.&lt;/p>
&lt;h4 id="221-paso-a-paso-del-descifrado-de-ecdlp-mediante-el-algoritmo-de-shor">2.2.1 Paso a paso del descifrado de ECDLP mediante el algoritmo de Shor
&lt;/h4>&lt;p>Veamos paso a paso los procesos internos mediante los cuales una computadora cuántica resuelve el problema del logaritmo discreto de curva elíptica (ECDLP).&lt;/p>
&lt;p>Planteamiento del problema: En $K = k \times G$, dado que se conocen $G$ y $K$, se desea encontrar el entero desconocido $k$ (clave privada). Supongamos que el orden de la curva elíptica es $N$.&lt;/p>
&lt;p>&lt;strong>Paso 1: Creación de un estado de superposición&lt;/strong>
Primero, se preparan dos registros cuánticos, y se aplica una compuerta de Hadamard (Hadamard Gate) a cada uno para crear un estado de superposición de todas las posibles combinaciones de números enteros.
&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>Paso 2: Aplicación del oráculo cuántico (evaluación de la función)&lt;/strong>
A continuación, utilizando un circuito cuántico (oráculo) que realiza adición de puntos en la curva elíptica, la función $f(x, y) = x \times G + y \times K$ se calcula en el tercer registro.
&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>
Aquí lo importante es que, como $K = k \times G$, se puede reescribir como $f(x, y) = (x + y \cdot k) \times G$.&lt;/p>
&lt;p>&lt;strong>Paso 3: Medición del tercer registro&lt;/strong>
Al medir el tercer registro, este colapsa en algún punto $R$ sobre la curva elíptica. En consecuencia, el primer y el segundo registro colapsan en un estado de superposición de pares $(x, y)$ que satisfacen $x + y \cdot k \equiv c \pmod{N}$ (donde $c$ es una constante).
&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>Paso 4: Aplicación de la Transformada de Fourier Cuántica (QFT)&lt;/strong>
Este estado tiene una periodicidad relacionada con el período $k$. Al aplicar aquí la Transformada de Fourier Cuántica Inversa (Inverse QFT), se causa una interferencia de fase, convirtiendo la información del período en amplitud.&lt;/p>
&lt;p>&lt;strong>Paso 5: Medición y posprocesamiento clásico&lt;/strong>
Al medir el primer y segundo registros, se obtiene con alta probabilidad un valor que contiene información sobre $k$. Aplicando algoritmos clásicos de teoría de números, como las fracciones continuas (Continued Fractions), al valor medido, se puede determinar completamente la clave privada desconocida $k$.&lt;/p>
&lt;p>El número de compuertas cuánticas necesarias para todo este proceso es $\mathcal{O}(\log^3 N)$, lo que desvela la clave privada a una velocidad increíblemente más alta que la búsqueda $\mathcal{O}(\sqrt{N})$ con una computadora clásica.&lt;/p>
&lt;h3 id="23-algoritmo-de-grover-grovers-algorithm-y-su-impacto-en-las-funciones-hash">2.3. Algoritmo de Grover (Grover&amp;rsquo;s Algorithm) y su impacto en las funciones hash
&lt;/h3>&lt;p>Otra amenaza es el &lt;strong>Algoritmo de Grover&lt;/strong>, propuesto por Lov Grover en 1996. Esto tiene un impacto importante en las funciones hash (por ejemplo: SHA-256).&lt;/p>
&lt;p>En blockchain, las funciones hash se utilizan para garantizar la integridad de los datos, generar direcciones y como base para la minería &lt;strong>PoW (Proof of Work)&lt;/strong> en Bitcoin. Calcular a la inversa una función hash (cálculo de preimagen) puede considerarse como un &amp;ldquo;problema de búsqueda en base de datos no estructurada&amp;rdquo; donde, dado un valor de salida específico $y$, se busca un valor de entrada $x$ tal que $H(x) = y$.&lt;/p>
&lt;p>En una computadora clásica, para encontrar la respuesta correcta entre $N$ posibilidades, se requieren en promedio $\frac{N}{2}$ intentos, y en el peor de los casos, $N$ intentos. Es decir, la complejidad computacional es $\mathcal{O}(N)$.
Sin embargo, el algoritmo de Grover utiliza una técnica cuántica llamada &amp;ldquo;Amplificación de Amplitud (Amplitude Amplification)&amp;rdquo;. Al amplificar iterativamente la amplitud de probabilidad del estado que es la respuesta correcta entre todas las posibilidades en estado de superposición, se reduce el tiempo de búsqueda a la raíz cuadrada.&lt;/p>
$$
\text{Complejidad del algoritmo de Grover} = \mathcal{O}(\sqrt{N})
$$
&lt;p>En el caso de SHA-256, como $N = 2^{256}$, una búsqueda exhaustiva clásica requeriría aproximadamente $2^{256}$ intentos. Pero si se usa el algoritmo de Grover, bastaría con $\sqrt{2^{256}} = 2^{128}$ intentos. Esto significa que, para una computadora cuántica, una función hash de 256 bits &lt;strong>se reduce a la mitad de su nivel de seguridad, efectivamente a 128 bits&lt;/strong>.&lt;/p>
&lt;h4 id="231-sobrevivirá-sha-256-quantum-supremacy-in-hashing">2.3.1. ¿Sobrevivirá SHA-256? (Quantum Supremacy in Hashing)
&lt;/h4>&lt;p>Aunque la seguridad se reduce a la mitad, una &amp;ldquo;seguridad de 128 bits&amp;rdquo; sigue siendo extremadamente sólida. $2^{128}$ operaciones es una cifra astronómica desde el nivel tecnológico actual y requeriría una escala de tiempo de la edad del universo.
Por lo tanto, se cree ampliamente que &lt;strong>&amp;ldquo;SHA-256 mantendrá una seguridad práctica incluso frente a computadoras cuánticas&amp;rdquo;&lt;/strong>. Si en el futuro es necesario aumentar el margen de seguridad, duplicando simplemente la longitud de salida del hash (por ejemplo, pasando de SHA-256 a SHA-512), se puede mantener la seguridad clásica de 256 bits en el mundo cuántico.&lt;/p>
&lt;p>En conclusión, la amenaza cuántica a las funciones hash se puede considerar &amp;ldquo;leve y manejable&amp;rdquo;, mientras que la amenaza a la criptografía de clave pública (ECDSA) se puede considerar &amp;ldquo;letal&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;h2 id="3-análisis-detallado-del-impacto-en-criptoactivos-actuales-bitcoin-ethereum">3. Análisis detallado del impacto en criptoactivos actuales (Bitcoin, Ethereum)
&lt;/h2>&lt;p>En un mundo donde es posible descifrar ECDSA con computadoras cuánticas, ¿a qué vulnerabilidades específicas se enfrentan las redes de criptoactivos? Aquí haremos un análisis detallado, tomando el mecanismo de Bitcoin como ejemplo, desde la perspectiva del &lt;strong>&amp;ldquo;momento de la exposición de la clave pública&amp;rdquo;&lt;/strong>.&lt;/p>
&lt;h3 id="31-generación-de-direcciones-y-privacidad-de-las-claves-públicas">3.1. Generación de direcciones y &amp;ldquo;privacidad&amp;rdquo; de las claves públicas
&lt;/h3>&lt;p>Las direcciones de Bitcoin (P2PKH: Pay-to-Public-Key-Hash o P2WPKH: Pay-to-Witness-Public-Key-Hash) no utilizan la clave pública directamente, sino un hash repetido de la clave pública.&lt;/p>
$$
\text{Bitcoin Address} = \text{Base58Check}(\text{RIPEMD160}(\text{SHA256}(\text{Public Key})))
$$
&lt;p>Como se mencionó anteriormente, debido a que las funciones hash son resistentes a los ataques cuánticos (algoritmo de Grover), deducir a la inversa la &amp;ldquo;clave pública&amp;rdquo; original a partir de la &amp;ldquo;dirección&amp;rdquo; (valor hash) es imposible incluso con una computadora cuántica.
En otras palabras, para una &lt;strong>&amp;ldquo;dirección no utilizada (una desde la que nunca se han enviado fondos)&amp;rdquo;&lt;/strong>, la clave pública no se ha expuesto en la cadena de bloques en absoluto, y solo está registrado el valor hash. Por lo tanto, dado que se desconoce la clave pública, no hay un objetivo sobre el cual ejecutar el algoritmo de Shor y es imposible determinar la clave privada. Las carteras en este estado pueden considerarse cuánticamente seguras (Quantum-safe).&lt;/p>
&lt;h3 id="32-vulnerabilidad-letal-al-enviar-transacciones-ataque-front-running">3.2. Vulnerabilidad letal al enviar transacciones (Ataque Front-running)
&lt;/h3>&lt;p>El problema surge en el momento en que un usuario transfiere fondos.
Al transmitir una transacción a la red, junto con la firma digital, el usuario debe &lt;strong>incluir su propia clave pública dentro de los datos de la transacción para su verificación y exponerla a toda la red&lt;/strong>.&lt;/p>
&lt;div class="mermaid">sequenceDiagram
participant User as "Usuario (Alice)"
participant Mempool as "Mempool (Grupo de transacciones no confirmadas)"
participant QuantumAttacker as "Atacante Cuántico"
participant Miner as "Minero (Generación de bloques)"
User->>Mempool: Enviar transacción (incluye clave pública + firma)
Mempool-->>QuantumAttacker: Interceptar la clave pública en la red
note right of QuantumAttacker: Ejecutar el algoritmo de Shor en minutos&lt;br/>(Calcular clave privada desde la pública)
QuantumAttacker->>QuantumAttacker: Generar nueva firma con la clave privada de Alice
QuantumAttacker->>Mempool: Transmitir transferencia fraudulenta con tarifas mineras más altas
Miner->>Miner: Priorizar la transacción fraudulenta con tarifas (Gas) más altas e incluirla en el bloque
Miner-->>User: Registrar en la cadena de bloques (Alice pierde sus fondos)&lt;/div>
&lt;p>Una vez que se envía la clave pública a la Mempool (la sala de espera de transacciones no confirmadas), esos datos se comparten con nodos en todo el mundo. Si un atacante poseyera una computadora cuántica ultrarrápida, podría robar los fondos mediante el siguiente proceso:&lt;/p>
&lt;ol>
&lt;li>Interceptar la transacción de un usuario legítimo (Alice) desde la Mempool y &lt;strong>extraer la clave pública&lt;/strong>.&lt;/li>
&lt;li>Ejecutar el algoritmo de Shor para &lt;strong>calcular la clave privada a partir de la clave pública en cuestión de minutos (antes de que se apruebe el bloque)&lt;/strong>.&lt;/li>
&lt;li>Usar la clave privada obtenida para &lt;strong>crear una transacción falsa&lt;/strong> que envíe los fondos de Alice a la dirección del atacante.&lt;/li>
&lt;li>Enviar esta transacción falsa a la red con una &lt;strong>tarifa minera (Fee) mucho más alta&lt;/strong> que la de la transacción original de Alice.&lt;/li>
&lt;/ol>
&lt;p>Guiados por los incentivos económicos, los mineros priorizan incluir transacciones con altas tarifas en los bloques. Como resultado, la transferencia fraudulenta del atacante es confirmada (Confirm) primero, y la transferencia legítima de Alice se descarta por &amp;ldquo;fondos insuficientes (Double Spend)&amp;rdquo;.
Esta serie de eventos se conoce como &lt;strong>Ataque Front-running (Front-running Attack)&lt;/strong>, y en un mundo con computadoras cuánticas prácticas, causaría una situación aterradora donde los fondos son robados por un hacker en el mismo momento en que alguien presiona el botón de enviar.&lt;/p>
&lt;h3 id="33-peligros-de-la-reutilización-de-direcciones-y-direcciones-antiguas-p2pk">3.3. Peligros de la reutilización de direcciones y direcciones antiguas (P2PK)
&lt;/h3>&lt;p>Un problema aún más grave es que en direcciones desde las que se han transferido fondos al menos una vez en el pasado (por ejemplo, si se reutilizan como direcciones de cambio), la clave pública ya está registrada de forma permanente en la cadena de bloques. Sin siquiera esperar a enviar una transacción, estas corren un peligro constante de que su clave privada sea calculada y se roben sus saldos.&lt;/p>
&lt;p>Además, en el formato dominante &lt;strong>P2PK (Pay-to-Public-Key)&lt;/strong> de los años 2009-2010, que incluye las recompensas de minería tempranas de Satoshi Nakamoto (más de 1 millón de BTC), la clave pública en sí se registraba directamente en la cadena de bloques como dirección en lugar del hash. Estos enormes volúmenes de bitcoins inactivos son los blancos más fáciles para las computadoras cuánticas y podrían ser robados de golpe para un &amp;ldquo;dumping&amp;rdquo; masivo en el mercado, potencialmente causando un desplome colosal del precio.&lt;/p>
&lt;hr>
&lt;h2 id="4-escenario-de-transición-a-la-criptografía-post-cuántica-pqc-post-quantum-cryptography">4. Escenario de transición a la Criptografía Post-Cuántica (PQC: Post-Quantum Cryptography)
&lt;/h2>&lt;p>Para evitar la catástrofe del &amp;ldquo;Q-Day (el día de la vulneración criptográfica por computadoras cuánticas)&amp;rdquo;, la comunidad de blockchain y criptografía planea migrar a una &lt;strong>Criptografía Post-Cuántica (PQC)&lt;/strong> que sea difícil de descifrar incluso mediante algoritmos cuánticos.
El Instituto Nacional de Estándares y Tecnología de los EE. UU. (NIST) ha estado avanzando en el proceso de estandarización de PQC durante años y, tras varias rondas de rigurosas evaluaciones, se han seleccionado algunos prometedores métodos criptográficos como estándares finales.&lt;/p>
&lt;p>Explicaremos detalladamente los principales algoritmos PQC, que están ganando atención como alternativas a las firmas digitales en blockchain, junto con sus mecanismos matemáticos.&lt;/p>
&lt;h3 id="41-firmas-basadas-en-hash-hash-based-signatures">4.1. Firmas basadas en Hash (Hash-Based Signatures)
&lt;/h3>&lt;p>Las firmas basadas en hash son un método criptográfico cuya seguridad se basa exclusivamente en una base muy simple y sólida: &amp;ldquo;la resistencia a colisiones de las funciones hash&amp;rdquo;. Dado que la seguridad de las funciones hash contra las computadoras cuánticas ya está comprobada (como mencionamos, tener un margen de seguridad de 128 bits es suficiente), es un enfoque extremadamente confiable.
Los ejemplos representativos incluyen las &lt;strong>Firmas de Lamport (Lamport Signatures)&lt;/strong>, su versión extendida WOTS (Winternitz One-Time Signature) y la candidata estandarizada por el NIST &lt;strong>SPHINCS+&lt;/strong> (ahora llamada SLH-DSA como FIPS 205).&lt;/p>
&lt;h4 id="411-detalles-matemáticos-de-las-firmas-de-lamport-one-time-signature">4.1.1. Detalles matemáticos de las firmas de Lamport (One-Time Signature)
&lt;/h4>&lt;p>Echemos un vistazo más detallado al mecanismo matemático de las firmas de Lamport.
Asumamos una función hash $H: \{0, 1\}^* \to \{0, 1\}^{256}$.&lt;/p>
&lt;p>&lt;strong>[Generación de claves]&lt;/strong>
Alice (la emisora) genera 256 pares de claves privadas utilizando un generador de números aleatorios verdadero (TRNG).
&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>
Con esto, la clave privada $\text{sk}$ consta de un total de 512 cadenas de 256 bits (tamaño: $512 \times 32 = 16,384$ bytes).&lt;/p>
&lt;p>A continuación, se calcula la clave pública $\text{pk}$. Cada componente de la clave privada es hasheado individualmente.
&lt;/p>
$$
\text{pk}_{i,0} = H(\text{sk}_{i,0}), \quad \text{pk}_{i,1} = H(\text{sk}_{i,1})
$$
&lt;p>
La clave pública es, del mismo modo, de $16,384$ bytes. Esta se expone a la red de blockchain.&lt;/p>
&lt;p>&lt;strong>[Generación de firmas]&lt;/strong>
Para firmar los datos de transacción $M$, Alice primero calcula su valor hash.
&lt;/p>
$$
h = H(M) \in \{0, 1\}^{256}
$$
&lt;p>
Sea el $i$-ésimo bit del valor hash $h$ $h_i \in \{0, 1\}$.
La firma $\sigma$ de Alice es el conjunto de los componentes de la clave privada que corresponden a cada bit $h_i$.
&lt;/p>
$$
\sigma = (\text{sk}_{1, h_1}, \text{sk}_{2, h_2}, \dots, \text{sk}_{256, h_{256}})
$$
&lt;p>
Es decir, si el bit del hash del mensaje es &lt;code>0&lt;/code>, se expone $\text{sk}_{i,0}$, y si es &lt;code>1&lt;/code>, se expone $\text{sk}_{i,1}$. El tamaño de la firma será $256 \times 32 = 8,192$ bytes.&lt;/p>
&lt;p>&lt;strong>[Verificación de firmas]&lt;/strong>
El minero (verificador) realiza la verificación usando la transacción recibida $M$, la firma $\sigma = (s_1, s_2, \dots, s_{256})$ y la clave pública $\text{pk}$.
Recalcula el hash de la transacción $h = H(M)$ y comprueba si el hash de cada $s_i$ coincide con el correspondiente elemento de la clave pública $\text{pk}_{i, h_i}$.
&lt;/p>
$$
H(s_i) \overset{?}{=} \text{pk}_{i, h_i} \quad (\text{para todo } 1 \le i \le 256)
$$
&lt;p>Este proceso es matemáticamente extremadamente simple, y es imposible falsificar una firma a menos que una computadora cuántica pueda invertir $H$. Sin embargo, una vez que se realiza una firma, la mitad de la clave privada se expone a la red. Si se firma otro mensaje con el mismo par de claves, las claves privadas expuestas se combinan, dejando espacio para la falsificación por parte de los atacantes, de ahí la fuerte restricción de que &amp;ldquo;solo se puede usar una vez (One-Time)&amp;rdquo;.
Para hacer esto práctico, se desarrollaron tecnologías como &lt;strong>XMSS&lt;/strong>, que agrupa múltiples claves de un solo uso en una sola clave pública raíz utilizando árboles de Merkle, y la firma sin estado &lt;strong>SPHINCS+&lt;/strong>, pero tienen la desventaja de que el tamaño de la firma alcanza decenas de kilobytes.&lt;/p>
&lt;h3 id="42-criptografía-basada-en-retículos-lattice-based-cryptography">4.2. Criptografía basada en retículos (Lattice-Based Cryptography)
&lt;/h3>&lt;p>Actualmente, la corriente principal y más esperada en PQC, y la adoptada como principal estándar del NIST (FIPS 204: ML-DSA / anteriormente CRYSTALS-Dilithium y Falcon, etc.), es la &lt;strong>Criptografía basada en retículos&lt;/strong>.&lt;/p>
&lt;p>La seguridad de la criptografía basada en retículos depende de problemas matemáticamente probados como el &amp;ldquo;Problema del Vector Más Corto en retículos multidimensionales (SVP: Shortest Vector Problem)&amp;rdquo; y el &amp;ldquo;Problema del Aprendizaje con Errores (LWE: Learning With Errors)&amp;rdquo;. No se han encontrado algoritmos que resuelvan eficientemente problemas de retículos incluso con computadoras cuánticas.&lt;/p>
&lt;p>&lt;strong>Modelo matemático del LWE (Learning With Errors):&lt;/strong>
La idea básica del problema LWE es hacer que un sistema de ecuaciones lineales sea drásticamente más difícil de resolver al agregar intencionalmente un &amp;ldquo;pequeño ruido (error)&amp;rdquo;.
Sea el vector secreto $\mathbf{s} \in \mathbb{Z}_q^n$.
Se toma una matriz pública masiva $\mathbf{A} \in \mathbb{Z}_q^{m \times n}$ elegida al azar, y un vector de ruido pequeño agregado intencionalmente $\mathbf{e} \in \mathbb{Z}_q^m$.
La clave pública $\mathbf{b}$ se calcula de la siguiente manera:&lt;/p>
$$
\mathbf{b} = \mathbf{A}\mathbf{s} + \mathbf{e} \pmod{q}
$$
&lt;p>Aun cuando la matriz $\mathbf{A}$ y el vector $\mathbf{b}$ (clave pública) sean públicos, calcular inversamente la clave secreta $\mathbf{s}$ a partir de ellos es muy difícil debido a la presencia del ruido $\mathbf{e}$. Sin ruido, podría resolverse con simple eliminación de Gauss, pero el ruido provoca que el espacio de búsqueda en todas las dimensiones aumente explosivamente, lo que proporciona una seguridad sólida frente a computadoras clásicas y cuánticas.
En algoritmos reales utilizados en blockchain, etc. (como Dilithium), se utiliza &lt;strong>Ring-LWE (o Module-LWE)&lt;/strong> expandido sobre anillos polinómicos para reducir el tamaño de las claves y acelerar los cálculos.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Ventajas&lt;/strong>: Comparado con las firmas basadas en hash, los tamaños de las claves públicas y las firmas son relativamente pequeños (alrededor de unos pocos kilobytes), y la velocidad de cálculo para la generación y verificación de firmas es muy rápida (igual o mayor a ECDSA).&lt;/li>
&lt;li>&lt;strong>Desventajas&lt;/strong>: Debido a que la estructura matemática es compleja y el período histórico de validación es corto, el riesgo de que se descubran nuevos algoritmos de descifrado en el futuro no es cero.&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="5-retos-técnicos-en-la-transición-a-pqc-del-blockchain">5. Retos técnicos en la transición a PQC del blockchain
&lt;/h2>&lt;p>El mero hecho de que existan los algoritmos PQC (como Dilithium o SPHINCS+) no significa que se puedan implementar mañana en Bitcoin o Ethereum. Existen varios desafíos importantes específicos de los sistemas descentralizados.&lt;/p>
&lt;h3 id="51-aumento-en-el-tamaño-de-firmas-y-el-colapso-de-la-escalabilidad">5.1. Aumento en el tamaño de firmas y el colapso de la escalabilidad
&lt;/h3>&lt;p>La mayor barrera para la introducción de PQC es el crecimiento drástico del tamaño de datos.
Mientras que el tamaño de las firmas ECDSA actuales es de unos 70 bytes, en Dilithium (ML-DSA), de criptografía basada en retículos, el tamaño de la firma oscila entre unos 2,420 y 4,595 bytes (dependiendo del nivel de seguridad), y la clave pública supera los 1,300 bytes. Las firmas basadas en hash SPHINCS+ llegan a decenas de miles de bytes tan solo para la firma.&lt;/p>
&lt;p>Si Bitcoin introdujera PQC manteniendo el límite actual de tamaño de bloque (aproximadamente 4 MB de peso incluyendo SegWit), el número de transacciones que podrían incluirse en un bloque disminuiría drásticamente. El rendimiento de la red (TPS: Transactions Per Second) caería de manera devastadora y la congestión en los pagos se volvería la norma.
Resolver esto requiere aumentar masivamente el tamaño del bloque, pero esto a su vez elevaría los requerimientos de almacenamiento y ancho de banda de los nodos completos, dificultaría que las personas ejecuten nodos por sí mismas y, en consecuencia, resultaría en el dilema de propiciar &lt;strong>la centralización de la red&lt;/strong>.&lt;/p>
&lt;div class="mermaid">pie title "Comparación del tamaño de datos de firmas en blockchain (Diagrama conceptual)"
"ECDSA (Aprox. 70 Bytes)" : 2
"Dilithium ML-DSA (Aprox. 2,500 Bytes)" : 58
"SPHINCS+ (Aprox. 17,000 Bytes)" : 40&lt;/div>
&lt;p>&lt;em>(※ El abultamiento de datos en las transacciones debido a la introducción de PQC es un cuello de botella letal para la escalabilidad)&lt;/em>&lt;/p>
&lt;h3 id="52-impacto-en-la-ethereum-virtual-machine-evm-y-contratos-precompilados">5.2. Impacto en la Ethereum Virtual Machine (EVM) y contratos precompilados
&lt;/h3>&lt;p>En plataformas de contratos inteligentes Turing-completos como Ethereum, la adopción de PQC exige una actualización fundamental de la EVM (Ethereum Virtual Machine).
La EVM actual provee un contrato precompilado (Precompiled Contract) llamado &lt;code>ecrecover&lt;/code> (dirección: &lt;code>0x01&lt;/code>) para la verificación de firmas ECDSA, que está optimizado para realizar verificaciones de firmas con un coste de gas muy bajo (3000 Gas).&lt;/p>
&lt;p>No obstante, los nuevos algoritmos de criptografía de retículo como Dilithium y Falcon involucran cálculos polinómicos y matriciales complejos. Si se implementan usando solamente los códigos de operación (Opcodes) actuales de la EVM, una simple verificación de firma podría consumir desde millones hasta decenas de millones de gas. A este nivel, el límite de gas por bloque (actualmente de unos 30 millones de Gas) se agotaría en una sola transacción.&lt;/p>
&lt;p>Para eludir esto, la red deberá llevar a cabo un &amp;ldquo;Hard Fork&amp;rdquo; (Bifurcación dura) para integrar un nuevo Precompiled Contract dedicado a la verificación PQC (por ejemplo, asignar &lt;code>0x10&lt;/code> para DilithiumVerify) directamente en la EVM. Esto requiere un proceso de largo plazo donde los desarrolladores principales de cada cliente de Ethereum (Geth, Nethermind, Erigon, etc.) colaboren en implementaciones optimizadas de lógicas de verificación criptográfica de retículos a nivel de lenguajes como C++, Go, y Rust, así como ejecutar auditorías de seguridad.&lt;/p>
&lt;h3 id="53-dificultad-para-lograr-consensos-a-través-de-hard-forks">5.3. Dificultad para lograr consensos a través de Hard Forks
&lt;/h3>&lt;p>Cambiar el algoritmo de firma subyacente requiere una actualización de todo el protocolo de la red, un &lt;strong>Hard Fork (Bifurcación dura)&lt;/strong>. Sin embargo, en comunidades que valoran mucho los principios de &amp;ldquo;no cambiar las reglas y mantenerse descentralizados&amp;rdquo;, como Bitcoin, el proceso para alcanzar un consenso es políticamente muy desafiante. Desde la proposición inicial de un BIP (Bitcoin Improvement Proposal) para migrar a PQC hasta su implementación definitiva, se requerirán años de debates y pruebas rigurosas.&lt;/p>
&lt;hr>
&lt;h2 id="6-cuándo-llegará-el-q-day-hoja-de-ruta-hacia-la-transición">6. ¿Cuándo llegará el &amp;ldquo;Q-Day&amp;rdquo;? Hoja de ruta hacia la transición
&lt;/h2>&lt;p>¿Cuándo llegará el &amp;ldquo;Q-Day&amp;rdquo;, el día en que las computadoras cuánticas logren descifrar completamente la criptografía de curva elíptica de 256 bits?
Aunque las opiniones difieren entre investigadores, muchos expertos prevén que será &lt;strong>&amp;ldquo;entre mediados de la década de 2030 y 2040&amp;rdquo;&lt;/strong>, cuando podrían aparecer computadoras cuánticas a gran escala con al menos miles o decenas de miles de cúbits lógicos estables (cúbits que toleran el ruido con corrección de errores). Sin embargo, dependiendo de descubrimientos disruptivos en arquitecturas de hardware o el hallazgo de algoritmos cuánticos más eficientes, no se descarta la posibilidad de que se adelante (alrededor del 2030).&lt;/p>
&lt;p>La hoja de ruta que debería seguir el ecosistema de criptoactivos antes de que sea demasiado tarde es la siguiente:&lt;/p>
&lt;h3 id="fase-1-firmas-híbridas-y-abstracción-de-cuentas-ahora-a-2028">Fase 1: Firmas híbridas y abstracción de cuentas (Ahora a ~2028)
&lt;/h3>&lt;p>En los círculos actuales de desarrollo de blockchain, especialmente entre los desarrolladores de Ethereum (como Vitalik Buterin), se están estudiando las &lt;strong>&amp;ldquo;firmas híbridas&amp;rdquo;&lt;/strong> que combinan ECDSA con PQC (firmas basadas en hash o criptografía basada en retículos). Este enfoque implica adjuntar en la transacción ambas firmas: la de ECDSA existente (que hoy es segura) y la firma PQC. Así, si una de las dos falla, la seguridad se mantiene íntegra.
Además, aprovechando la abstracción de cuentas (Account Abstraction, ERC-4337), se avanza en iniciativas que permiten integrar firmas PQC como opción de consentimiento (opt-in para los usuarios) mediante carteras de contratos inteligentes sin necesidad de esperar un hard fork en el nivel del protocolo base.&lt;/p>
&lt;h3 id="fase-2-uso-de-pruebas-de-conocimiento-cero-zk-rollups-2025-en-adelante">Fase 2: Uso de Pruebas de Conocimiento Cero (ZK-Rollups) (2025 en adelante)
&lt;/h3>&lt;p>La carta clave que se espera para resolver la mayor debilidad de la PQC, el &amp;ldquo;abultamiento del tamaño de los datos de firmas&amp;rdquo;, es el uso de tecnologías de Capa 2 (Layer 2) conocidas como &lt;strong>ZK-Rollups (Pruebas de Conocimiento Cero)&lt;/strong>.
En lugar de registrar directamente las enormes firmas PQC en la Layer 1 (cadena principal), innumerables transacciones PQC se agrupan y verifican en la Layer 2. A continuación, mediante pruebas como ZK-SNARKs o ZK-STARKs, se comprimen todas en una diminuta pieza de &amp;ldquo;datos de prueba (Proof)&amp;rdquo; para grabarse en la Layer 1.
Cabe señalar que algunas configuraciones de SNARKs (como Groth16) son inherentemente vulnerables frente a computadoras cuánticas, por lo que la adopción de &lt;strong>ZK-STARKs&lt;/strong>, dependientes de funciones hash que poseen resistencia cuántica, se vuelve esencial.&lt;/p>
&lt;h3 id="fase-3-hard-fork-a-nivel-del-protocolo-alrededor-de-2030">Fase 3: Hard Fork a Nivel del Protocolo (Alrededor de 2030)
&lt;/h3>&lt;p>En una etapa donde la estandarización PQC del NIST esté totalmente asimilada, se desarrollen librerías consolidadas en el sector, y el software haya sido suficientemente probado, es previsible que cadenas principales como Bitcoin y Ethereum implementen un Hard Fork para cambiar sus firmas por defecto al ecosistema PQC de manera definitiva. Durante este período de transición, presenciaríamos inmensas campañas de anuncios animando a los usuarios a &amp;ldquo;transferir fondos de carteras antiguas a carteras nuevas y compatibles con PQC&amp;rdquo;.&lt;/p>
&lt;h3 id="ejemplos-de-proyectos-pioneros">Ejemplos de Proyectos Pioneros
&lt;/h3>&lt;p>Algunos proyectos de blockchain han sido proactivos ante esta amenaza cuántica y afirman poseer resistencia cuántica desde sus etapas de desarrollo tempranas.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>QRL (Quantum Resistant Ledger)&lt;/strong>: Una de las primeras blockchains que implementó nativamente PQC en la capa de protocolo base utilizando XMSS (Esquema Extendido de Firma de Merkle), un esquema PQC basado en hashes.&lt;/li>
&lt;li>&lt;strong>Algorand / Cellframe&lt;/strong>: Proyectos con una arquitectura modular para su capa criptográfica con vistas a facilitar las actualizaciones de PQC en el futuro, investigando activamente la integración de la criptografía basada en retículos.&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="7-conclusión-el-futuro-de-los-criptoactivos-y-la-protección-de-nuestros-activos">7. Conclusión: El futuro de los criptoactivos y la protección de nuestros activos
&lt;/h2>&lt;p>La llegada de la &amp;ldquo;era post-cuántica&amp;rdquo; ya ha rebasado los dominios imaginarios de la ciencia ficción para transformarse en un desafío técnico concreto y una amenaza inminente frente a nuestros sistemas criptográficos del mundo real.&lt;/p>
&lt;p>Las dos grandes espadas computacionales del mundo cuántico —el Algoritmo de Shor y el Algoritmo de Grover— amenazan los pilares de la criptografía de clave pública y las funciones hash de las blockchains modernas. En particular, la debilidad de ECDSA es letal, haciendo que la migración hacia Criptografía Post-Cuántica (PQC) sea el único camino ineludible para eludir el hurto masivo de fondos vía ataques front-running.&lt;/p>
&lt;p>Sin embargo, ni el ámbito tecnológico ni la comunidad de blockchain observan esto sin accionar. La selección y normalización de algoritmos PQC, como la criptografía basada en retículos y las firmas fundamentadas en hashes, están evolucionando con certidumbre; además, ya comienzan a dibujarse las formas en que superaremos la gran barrera del &amp;ldquo;aumento colosal de volumen de datos&amp;rdquo;, haciendo uso de ZK-STARKs (Pruebas de Conocimiento Cero) y soluciones de escalado en Capa 2.&lt;/p>
&lt;p>No existe necesidad de que los inversores o usuarios comunes de criptoactivos entren en pánico y liquiden todos sus fondos en estos momentos. Lo vital es cultivar un conocimiento elemental y una actitud preventiva basada en los siguientes puntos:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Evitar la reutilización de direcciones&lt;/strong>: No atesorar fondos por períodos prolongados en &amp;ldquo;direcciones usadas (que se hayan empleado alguna vez para realizar una transacción, por lo que su clave pública ha sido expuesta permanentemente en la cadena)&amp;rdquo;. Una regla esencial no solo para resguardar la privacidad, sino también por pura seguridad cuántica.&lt;/li>
&lt;li>&lt;strong>Atención a las tendencias tecnológicas&lt;/strong>: Permanecer sintonizados a discusiones vitales (por ej. los BIP de Bitcoin y EIP de Ethereum) respecto a la transición PQC o los posibles Hard Forks, a fin de ser capaces de migrar nuestras carteras correctamente cuando llegue el instante apropiado.&lt;/li>
&lt;/ul>
&lt;p>La historia del blockchain consiste, en gran medida, en una evolución constante propiciada por su resiliencia contra amenazas tecnológicas inéditas. Tal como se superaron las crisis de la escalabilidad o el impacto medioambiental (con el salto del PoW al PoS), es más que seguro que el ecosistema completo investigará y se ajustará a este inédito peligro cuántico.
Nuestra expectación se deposita en visualizar un porvenir donde el nacimiento de la computación cuántica —el nuevo apogeo del ingenio humano— y el blockchain (la tecnología de la confianza descentralizada) logren amoldarse armoniosamente para constituir sistemas invulnerables de orden superior, lejos de sucumbir en un colapso.&lt;/p>
&lt;hr>
&lt;p>&lt;em>Referencias y enlaces relacionados:&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>Explicación sencilla sobre la diferencia entre el recocido cuántico y el modelo de puertas cuánticas</title><link>http://kenji.blog/es/p/quantum-annealing-vs-gate-model-explained/</link><pubDate>Fri, 11 Sep 2026 12:00:00 +0900</pubDate><guid>http://kenji.blog/es/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 Explicación sencilla sobre la diferencia entre el recocido cuántico y el modelo de puertas cuánticas" />&lt;h1 id="explicación-sencilla-sobre-la-diferencia-entre-el-recocido-cuántico-y-el-modelo-de-puertas-cuánticas">Explicación sencilla sobre la diferencia entre el recocido cuántico y el modelo de puertas cuánticas
&lt;/h1>&lt;p>La computación cuántica es una tecnología de cálculo de próxima generación que tiene el potencial de resolver exponencialmente más rápido problemas específicos que tomarían una enorme cantidad de tiempo en las computadoras clásicas modernas (incluidas las supercomputadoras convencionales), utilizando principios de la mecánica cuántica (superposición y entrelazamiento cuántico).&lt;/p>
&lt;p>Actualmente, como enfoques para hacer realidad las computadoras cuánticas, existen principalmente dos paradigmas principales: el &lt;strong>&amp;ldquo;Recocido cuántico&amp;rdquo; (Quantum Annealing)&lt;/strong> y el &lt;strong>&amp;ldquo;Modelo de puertas cuánticas&amp;rdquo; (Quantum Gate Model)&lt;/strong>. Estos dos métodos difieren enormemente en el enfoque físico subyacente, las tareas de cálculo en las que sobresalen y los desafíos de hardware en su implementación.&lt;/p>
&lt;p>En este artículo, compararemos y explicaremos de manera exhaustiva estos dos métodos desde una perspectiva altamente técnica y detallada, abarcando principios físicos, modelos matemáticos (modelo de Ising, QUBO, transformaciones unitarias, etc.), limitaciones técnicas actuales y casos de uso específicos.&lt;/p>
&lt;hr>
&lt;h2 id="1-fundamentos-de-la-computación-cuántica-la-diferencia-fundamental-con-las-computadoras-clásicas">1. Fundamentos de la computación cuántica: la diferencia fundamental con las computadoras clásicas
&lt;/h2>&lt;p>Las computadoras clásicas procesan la información como &amp;ldquo;bits&amp;rdquo; (Bit) que adoptan un estado de &amp;ldquo;0&amp;rdquo; o &amp;ldquo;1&amp;rdquo;. Por otro lado, las computadoras cuánticas utilizan &amp;ldquo;cúbits&amp;rdquo; (Qubit). Los cúbits pueden tener probabilísticamente ambos estados, 0 y 1, al mismo tiempo, gracias al principio de &amp;ldquo;superposición&amp;rdquo; (Superposition) de la mecánica cuántica.&lt;/p>
&lt;p>Además, al utilizar un fenómeno llamado &amp;ldquo;entrelazamiento cuántico&amp;rdquo; (Entanglement), los estados de múltiples cúbits se correlacionan fuertemente entre sí, de modo que una operación en un solo cúbit afecta instantáneamente a todo el sistema. Esto hace posible el procesamiento de tipo paralelo (paralelismo cuántico).&lt;/p>
&lt;p>Sin embargo, los estados cuánticos son extremadamente vulnerables al ruido externo (calor, ondas electromagnéticas, etc.), y la &amp;ldquo;decoherencia&amp;rdquo; (Decoherence), por la cual el estado se destruye y vuelve a un estado clásico, es un gran desafío. Las diferencias en el enfoque de este problema de ruido conducen a grandes diferencias en la filosofía de diseño entre el recocido y el modelo de puertas.&lt;/p>
&lt;hr>
&lt;h2 id="2-detalles-del-recocido-cuántico-quantum-annealing">2. Detalles del recocido cuántico (Quantum Annealing)
&lt;/h2>&lt;p>El recocido cuántico es una arquitectura de cálculo especializada principalmente en resolver &lt;strong>&amp;ldquo;problemas de optimización combinatoria&amp;rdquo;&lt;/strong>. Se basa en la teoría propuesta en 1998 por Hidetoshi Nishimori y Tadashi Kadowaki del Instituto Tecnológico de Tokio, y se hizo ampliamente conocido después de que la empresa canadiense D-Wave Systems lo comercializara por primera vez en el mundo.&lt;/p>
&lt;h3 id="21-mecanismo-físico-modelo-de-ising-de-campo-transversal-y-fluctuación-cuántica">2.1. Mecanismo físico: modelo de Ising de campo transversal y fluctuación cuántica
&lt;/h3>&lt;p>El recocido cuántico utiliza para el cálculo la propiedad de los sistemas físicos en el mundo natural de intentar establecerse en el &amp;ldquo;estado de menor energía (estado fundamental)&amp;rdquo;.&lt;/p>
&lt;p>En el enfoque clásico del &amp;ldquo;recocido simulado&amp;rdquo;, se utilizan fluctuaciones térmicas para escapar de soluciones óptimas locales (mínimos locales). Por otro lado, el recocido cuántico utiliza la &amp;ldquo;fluctuación cuántica&amp;rdquo; (Quantum Fluctuation) para atravesar barreras de energía mediante el &amp;ldquo;efecto túnel cuántico&amp;rdquo; (Quantum Tunneling), explorando de manera más eficiente la solución óptima global (mínimo global).&lt;/p>
&lt;p>La evolución temporal de un sistema de recocido cuántico se describe mediante el siguiente Hamiltoniano $H(t)$ (el operador que representa la energía total del sistema).&lt;/p>
$$ H(t) = A(t) H_0 + B(t) H_P $$
&lt;p>Aquí, $t$ es el tiempo, $A(t)$ es una función que disminuye gradualmente y $B(t)$ es una función que aumenta gradualmente.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>$H_0$ (Hamiltoniano inicial)&lt;/strong>: Representa el campo transversal (Transverse field) y genera la fluctuación cuántica.
$$ H_0 = - \sum_{i} \sigma_i^x $$
($\sigma_i^x$ es la matriz X de Pauli y representa la inversión de un bit).&lt;/li>
&lt;li>&lt;strong>$H_P$ (Hamiltoniano del problema)&lt;/strong>: Es el modelo de Ising que representa el problema de optimización que se desea resolver.&lt;/li>
&lt;/ul>
&lt;p>En el estado inicial ($t=0$), $A(0)$ es máximo, y el sistema se encuentra en el estado fundamental de $H_0$ (un estado en el que todos los estados están superpuestos por igual). A partir de ahí, con el tiempo, se debilita lentamente el campo transversal y, al mismo tiempo, se fortalece la interacción del Hamiltoniano del problema.&lt;/p>
&lt;h3 id="22-computación-cuántica-adiabática-adiabatic-quantum-computation">2.2. Computación cuántica adiabática (Adiabatic Quantum Computation)
&lt;/h3>&lt;p>Lo importante en este proceso es el &lt;strong>&amp;ldquo;teorema adiabático&amp;rdquo; (Adiabatic Theorem)&lt;/strong>. Según el teorema adiabático, si un sistema cambia de manera &amp;ldquo;suficientemente lenta (adiabática)&amp;rdquo;, el sistema siempre permanecerá en el estado fundamental del Hamiltoniano en ese instante.&lt;/p>
&lt;p>Es decir, cuando finalmente $A(t) \to 0$ y $B(t) \to 1$, el sistema ha alcanzado el estado fundamental de $H_P$, es decir, la &lt;strong>&amp;ldquo;solución exacta del problema de optimización&amp;rdquo;&lt;/strong>.&lt;/p>
&lt;div class="mermaid">graph TD
A["Hamiltoniano H_0 (estado inicial)"] -->|"Cambio adiabático (suficientemente lento)"| B["Mantiene siempre el estado fundamental"]
A -->|"Cambio no adiabático (muy rápido/ruido térmico)"| C["Transición a un estado excitado (error)"]
B --> D["Hamiltoniano H_P (solución óptima global)"]
C --> E["Atrapado en una solución óptima local"]
D --> F["Lectura de la solución"]
E --> F&lt;/div>
&lt;h3 id="23-mapeo-de-qubo-al-modelo-de-ising">2.3. Mapeo de QUBO al modelo de Ising
&lt;/h3>&lt;p>Para resolver problemas del mundo real con un recocedor cuántico, es necesario formular el problema en el formato &lt;strong>QUBO (Optimización Binaria Cuadrática Sin Restricciones: Quadratic Unconstrained Binary Optimization)&lt;/strong>.&lt;/p>
&lt;p>La función objetivo de QUBO se define de la siguiente manera:
&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>
Aquí, $x_i \in \{0, 1\}$ son variables binarias y $Q$ es una matriz de pesos.&lt;/p>
&lt;p>Dado que el hardware (como D-Wave) maneja espines físicos (arriba/abajo), es necesario convertir las variables al modelo de Ising utilizando $\sigma_i \in \{-1, +1\}$. La ecuación de conversión es la siguiente:
&lt;/p>
$$ x_i = \frac{1 - \sigma_i}{2} \quad \text{o} \quad \sigma_i = 1 - 2x_i $$
&lt;p>Sustituyendo esto en la ecuación QUBO y simplificando, se obtiene el Hamiltoniano $H_P$ del modelo de Ising:
&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}$: Interacción entre espines (coeficiente de acoplamiento). Fuerza de conexión entre cúbits físicos.&lt;/li>
&lt;li>$h_i$: Campo magnético local (sesgo) para cada espín.&lt;/li>
&lt;/ul>
&lt;h3 id="24-hardware-de-recocido-cuántico-y-desafíos-ejemplo-de-d-wave">2.4. Hardware de recocido cuántico y desafíos (ejemplo de D-Wave)
&lt;/h3>&lt;p>Los procesadores cuánticos de D-Wave se realizan utilizando dispositivos superconductores de interferencia cuántica (SQUID). Las conexiones entre cúbits físicos dependen del cableado del hardware y no están totalmente conectadas (un estado en el que todos los bits están conectados entre sí).
Aunque la conectividad ha mejorado evolucionando de la estructura inicial &amp;ldquo;Chimera graph&amp;rdquo; a &amp;ldquo;Pegasus&amp;rdquo; y &amp;ldquo;Zephyr graph&amp;rdquo;, todavía existen limitaciones.&lt;/p>
&lt;p>Por lo tanto, se necesita un proceso llamado &lt;strong>&amp;ldquo;Incrustación menor&amp;rdquo; (Minor Embedding)&lt;/strong>, que mapea problemas con estructuras de grafos complejas en grafos físicos. Dado que esto representa una variable lógica utilizando múltiples cúbits físicos (una cadena), el número de cúbits efectivos utilizables disminuye y existe el problema de que la precisión del cálculo se reduce.&lt;/p>
&lt;hr>
&lt;h2 id="3-detalles-del-modelo-de-puertas-cuánticas-quantum-gate-model">3. Detalles del modelo de puertas cuánticas (Quantum Gate Model)
&lt;/h2>&lt;p>El modelo de puertas cuánticas es una extensión en mecánica cuántica de las puertas lógicas de las computadoras clásicas (AND, OR, NOT, etc.) y es una arquitectura que permite la &lt;strong>&amp;ldquo;computación cuántica universal&amp;rdquo; (Universal Quantum Computation)&lt;/strong>. Muchas empresas, como IBM, Google, Rigetti e IonQ, han adoptado este modelo.&lt;/p>
&lt;h3 id="31-transformación-unitaria-y-vector-de-estado">3.1. Transformación unitaria y vector de estado
&lt;/h3>&lt;p>En el modelo de puertas cuánticas, el estado completo del sistema de cúbits se representa como un &amp;ldquo;vector de estado&amp;rdquo; (State Vector) $|\psi\rangle$. El estado de 1 cúbit se expresa como una combinación lineal de los estados fundamentales $|0\rangle$ y $|1\rangle$ de la siguiente manera:
&lt;/p>
$$ |\psi\rangle = \alpha |0\rangle + \beta |1\rangle $$
&lt;p>
Aquí, $\alpha$ y $\beta$ son amplitudes de probabilidad complejas y satisfacen $|\alpha|^2 + |\beta|^2 = 1$. Geométricamente, este estado se visualiza como un punto en la &amp;ldquo;esfera de Bloch&amp;rdquo; (Bloch Sphere).&lt;/p>
&lt;p>Los pasos del cálculo cuántico se describen como la aplicación de un &lt;strong>operador unitario (Unitary Operator) $U$&lt;/strong> al vector de estado. Una matriz unitaria tiene la propiedad $U^\dagger U = I$ (el producto con su conjugado hermítico es la matriz identidad), y es una operación reversible correspondiente a la evolución temporal de la ecuación de Schrödinger en mecánica cuántica.
&lt;/p>
$$ |\psi_{t+1}\rangle = U_t |\psi_t\rangle $$
&lt;h3 id="32-puertas-cuánticas-básicas-y-modelo-de-circuitos">3.2. Puertas cuánticas básicas y modelo de circuitos
&lt;/h3>&lt;p>Un algoritmo de cálculo cuántico se diseña como una secuencia de puertas cuánticas (un circuito cuántico).&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Puertas de Pauli (X, Y, Z)&lt;/strong>: Rotación de 180 grados alrededor de cada eje en la esfera de Bloch. La puerta X equivale a la puerta NOT clásica.&lt;/li>
&lt;li>&lt;strong>Puerta de Hadamard (H)&lt;/strong>: Transforma $|0\rangle$ en $\frac{|0\rangle + |1\rangle}{\sqrt{2}}$, creando un estado de superposición.
$$ H = \frac{1}{\sqrt{2}} \begin{pmatrix} 1 &amp; 1 \\ 1 &amp; -1 \end{pmatrix} $$&lt;/li>
&lt;li>&lt;strong>Puerta CNOT (Controlled-NOT)&lt;/strong>: Puerta de 2 cúbits. Aplica la puerta X al bit objetivo solo cuando el bit de control es $|1\rangle$. Esto genera entrelazamiento cuántico (Entanglement).&lt;/li>
&lt;/ul>
&lt;p>Cualquier algoritmo cuántico puede expresarse aproximadamente por una combinación de un pequeño número de puertas de 1 cúbit y puertas CNOT (conjunto de puertas universales).&lt;/p>
&lt;div class="mermaid">graph LR
Q0["Cúbit 0: |0>"] --> H1["Puerta de Hadamard (H)"]
Q1["Cúbit 1: |0>"] --> I1["Operación identidad (I)"]
H1 --> C1["Bit de control (Control)"]
I1 --> T1["Bit objetivo (Target)"]
C1 -. "Entrelazamiento" .- T1
C1 --> M0["Medición (Measurement)"]
T1 --> M1["Medición (Measurement)"]
M0 --> Result["Resultado clásico (0 o 1)"]
M1 --> Result&lt;/div>
&lt;h3 id="33-corrección-de-errores-y-el-camino-desde-nisq-hasta-ftqc">3.3. Corrección de errores y el camino desde NISQ hasta FTQC
&lt;/h3>&lt;p>El mayor desafío del modelo de puertas cuánticas es la &amp;ldquo;decoherencia&amp;rdquo;, en la cual los estados cuánticos son destruidos por el ruido. A medida que aumenta la profundidad de los pasos de cálculo (profundidad de las puertas), los errores se acumulan.&lt;/p>
&lt;p>Para realizar cálculos ideales, la &lt;strong>corrección de errores cuánticos (Quantum Error Correction)&lt;/strong> es indispensable. Por ejemplo, en métodos como el &amp;ldquo;código de superficie&amp;rdquo; (Surface Code), múltiples cúbits físicos se agrupan para formar un único &amp;ldquo;cúbit lógico&amp;rdquo; (Logical Qubit) libre de errores. Sin embargo, para crear un solo cúbit lógico se requieren de miles a decenas de miles de cúbits físicos, lo que genera una enorme sobrecarga.&lt;/p>
&lt;p>La etapa en la que nos encontramos actualmente es la era de los dispositivos &lt;strong>NISQ (Noisy Intermediate-Scale Quantum)&lt;/strong> de decenas a cientos de cúbits sin corrección de errores. Se necesitan muchos avances para lograr la &lt;strong>FTQC (Computación Cuántica Tolerante a Fallos: Fault-Tolerant Quantum Computing)&lt;/strong> equipada con una corrección de errores completa.&lt;/p>
&lt;hr>
&lt;h2 id="4-resumen-de-la-comparación-técnica-y-matemática">4. Resumen de la comparación técnica y matemática
&lt;/h2>&lt;p>Comparamos las diferencias fundamentales entre ambas arquitecturas.&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">Aspecto de comparación&lt;/th>
&lt;th style="text-align:left">Recocido cuántico (Quantum Annealing)&lt;/th>
&lt;th style="text-align:left">Modelo de puertas cuánticas (Gate Model)&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>Modelo de cálculo&lt;/strong>&lt;/td>
&lt;td style="text-align:left">Computación cuántica adiabática (evolución temporal continua del Hamiltoniano)&lt;/td>
&lt;td style="text-align:left">Transformación unitaria (secuencia discreta de operaciones de puertas)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>Problemas adecuados&lt;/strong>&lt;/td>
&lt;td style="text-align:left">Problemas de optimización combinatoria (QUBO, modelo de Ising)&lt;/td>
&lt;td style="text-align:left">Universal (simulación de química cuántica, factorización de enteros, búsqueda, etc.)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>Capacidad de representación&lt;/strong>&lt;/td>
&lt;td style="text-align:left">Optimización heurística (solución aproximada)&lt;/td>
&lt;td style="text-align:left">Equivalente a la máquina de Turing cuántica universal (en teoría, todos los cálculos son posibles)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>Ejemplos de implementación&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, etc.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>Tolerancia al ruido&lt;/strong>&lt;/td>
&lt;td style="text-align:left">Relativamente fuerte (permanece cerca del estado fundamental, tolera cierto ruido térmico)&lt;/td>
&lt;td style="text-align:left">Muy débil (el mínimo ruido desfasará y destruirá los resultados del cálculo)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>Escalabilidad&lt;/strong>&lt;/td>
&lt;td style="text-align:left">Escala de miles a decenas de miles de cúbits (depende de la estructura física. Difícil de hacer bits lógicos)&lt;/td>
&lt;td style="text-align:left">Escala de cientos de cúbits (para FTQC se necesita una escala de millones)&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>El recocido cuántico, como &amp;ldquo;coprocesador de propósito específico&amp;rdquo;, es adecuado para resolver problemas de optimización complementando los límites de las computadoras clásicas. Por otro lado, el modelo de puertas cuánticas es la versión cuántica de una &amp;ldquo;computadora de propósito general&amp;rdquo; y, en última instancia, busca una capacidad de cálculo que supere a las computadoras clásicas (supremacía cuántica), pero la construcción del hardware es extremadamente difícil.&lt;/p>
&lt;hr>
&lt;h2 id="5-limitaciones-y-desafíos-actuales">5. Limitaciones y desafíos actuales
&lt;/h2>&lt;h3 id="limitaciones-del-recocido-cuántico">Limitaciones del recocido cuántico
&lt;/h3>&lt;ol>
&lt;li>&lt;strong>Restricciones de conectividad (Connectivity)&lt;/strong>: Debido a la incrustación menor mencionada anteriormente, la cantidad de cúbits físicos necesarios aumenta exponencialmente a medida que crece el tamaño del problema.&lt;/li>
&lt;li>&lt;strong>Precisión de los coeficientes (Precision)&lt;/strong>: Los errores físicos al configurar parámetros analógicos como $J_{ij}$ y $h_i$ en el hardware están directamente relacionados con la calidad de la solución.&lt;/li>
&lt;li>&lt;strong>Temperatura y transición no adiabática&lt;/strong>: Dado que la temperatura del sistema no es el cero absoluto, existe la probabilidad de desviarse de la solución óptima debido a la excitación térmica.&lt;/li>
&lt;/ol>
&lt;h3 id="limitaciones-del-modelo-de-puertas-cuánticas">Limitaciones del modelo de puertas cuánticas
&lt;/h3>&lt;ol>
&lt;li>&lt;strong>Tiempo de coherencia (Coherence Time)&lt;/strong>: El tiempo que se puede mantener un estado cuántico es de solo unos pocos microsegundos a milisegundos, limitando estrictamente el número de puertas (profundidad del circuito) que se pueden ejecutar en ese tiempo.&lt;/li>
&lt;li>&lt;strong>Fidelidad de puerta (Gate Fidelity)&lt;/strong>: La tasa de error en las operaciones de puertas de 2 cúbits (como CNOT) aún no es lo suficientemente baja (generalmente alrededor del 99.x%). Para hacer realidad la FTQC, esto debe elevarse al 99.99% o más.&lt;/li>
&lt;li>&lt;strong>Volumen cuántico (Quantum Volume)&lt;/strong>: El mayor desafío actual es escalar no solo el número de cúbits, sino la capacidad de cálculo efectiva (volumen cuántico) teniendo en cuenta las interconexiones y la tasa de error.&lt;/li>
&lt;/ol>
&lt;hr>
&lt;h2 id="6-casos-de-uso-específicos-y-algoritmos">6. Casos de uso específicos y algoritmos
&lt;/h2>&lt;p>Veamos áreas de aplicación específicas en las que cada método sobresale.&lt;/p>
&lt;h3 id="61-casos-de-uso-del-recocido-cuántico">6.1. Casos de uso del recocido cuántico
&lt;/h3>&lt;ul>
&lt;li>&lt;strong>Logística y enrutamiento&lt;/strong>: Optimización de rutas de entrega de muchos vehículos (variación del problema del viajante de comercio). Búsqueda de rutas en tiempo real considerando congestiones de tráfico.&lt;/li>
&lt;li>&lt;strong>Ingeniería financiera&lt;/strong>: Optimización de carteras. Búsqueda de combinaciones de valores que maximicen los rendimientos mientras minimizan los riesgos.&lt;/li>
&lt;li>&lt;strong>Aprendizaje automático&lt;/strong>: Selección de características (Feature Selection). Extracción de la combinación de variables que más contribuye a la predicción a partir de enormes conjuntos de datos.&lt;/li>
&lt;li>&lt;strong>Manufactura&lt;/strong>: Problemas de programación de trabajos en fábricas (qué máquina procesa qué piezas y en qué orden es el más rápido).&lt;/li>
&lt;/ul>
&lt;h3 id="62-casos-de-uso-del-modelo-de-puertas-cuánticas">6.2. Casos de uso del modelo de puertas cuánticas
&lt;/h3>&lt;ul>
&lt;li>&lt;strong>Simulación de química cuántica&lt;/strong>: Simulaciones de alta precisión de estados de energía moleculares y reacciones químicas.&lt;/li>
&lt;li>&lt;strong>Factorización de enteros (Algoritmo de Shor)&lt;/strong>: Algoritmo que factoriza números compuestos enormes en tiempo polinomial. Si esto se vuelve práctico, las infraestructuras de criptografía de clave pública actuales como RSA se romperían, por lo que la transición a la criptografía poscuántica (PQC) es urgente.&lt;/li>
&lt;li>&lt;strong>Búsqueda en bases de datos (Algoritmo de Grover)&lt;/strong>: Al buscar datos objetivo en una base de datos no ordenada, las computadoras clásicas requieren pasos $O(N)$, pero el algoritmo de Grover puede buscar en pasos $O(\sqrt{N})$.&lt;/li>
&lt;/ul>
&lt;h3 id="63-algoritmos-híbridos-en-la-era-nisq-vqe-y-qaoa">6.3. Algoritmos híbridos en la era NISQ: VQE y QAOA
&lt;/h3>&lt;p>Para superar la limitación de los circuitos cuánticos poco profundos de los dispositivos NISQ, están ganando atención los &amp;ldquo;algoritmos cuánticos variacionales&amp;rdquo; (Variational Quantum Algorithms), que combinan las ventajas de las computadoras cuánticas y clásicas.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>VQE (Solucionador propio cuántico variacional: Variational Quantum Eigensolver)&lt;/strong>: Algoritmo para encontrar la energía del estado fundamental de las moléculas. Prepara estados cuánticos usando un circuito cuántico parametrizado (Ansatz) y mide el valor esperado de energía $\langle \psi(\theta) | H | \psi(\theta) \rangle$. Usando este valor esperado como función objetivo, actualiza el parámetro $\theta$ mediante un algoritmo de optimización clásico (como el descenso de gradiente). Repitiendo esto hasta que converja, encuentra el estado de energía preciso de la molécula.&lt;/li>
&lt;li>&lt;strong>QAOA (Algoritmo de optimización cuántica aproximada: Quantum Approximate Optimization Algorithm)&lt;/strong>: Algoritmo que resuelve problemas de optimización combinatoria utilizando el modelo de puertas cuánticas. Aproxima la evolución temporal adiabática del recocido cuántico a operaciones de puertas discretas mediante &amp;ldquo;Trotterización&amp;rdquo; (Trotterization), y obtiene una solución aproximada aplicando el Hamiltoniano alternativamente. QAOA se considera un medio prometedor para resolver problemas de optimización con el modelo de puertas.&lt;/li>
&lt;/ul>
&lt;div class="mermaid">graph TD
User["Problema del usuario"] --> Formulation{"Naturaleza del problema"}
Formulation -- "Optimización combinatoria" --> QA_Path["Recocido cuántico / Máquina de Ising"]
QA_Path --> QUBO["Formulación QUBO"]
QUBO --> DWave["Ejecución en D-Wave"]
Formulation -- "Cálculo químico / Cálculo de propósito general" --> Gate_Path["Modelo de puertas cuánticas"]
Gate_Path --> Circuit["Diseño de circuito cuántico (VQE / QAOA)"]
Circuit --> IBMGoogle["Ejecución en hardware cuántico de IBM / Google"]&lt;/div>
&lt;hr>
&lt;h2 id="7-conclusión">7. Conclusión
&lt;/h2>&lt;p>Tanto el recocido cuántico como el modelo de puertas cuánticas son iguales en el sentido de que utilizan las misteriosas propiedades de la mecánica cuántica como recursos computacionales, pero sus enfoques y objetivos finales son muy diferentes.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>El recocido cuántico&lt;/strong> es un &amp;ldquo;motor heurístico especializado&amp;rdquo; para producir resultados prácticos en una etapa temprana para problemas reales específicos llamados optimización combinatoria. Actualmente, varias empresas ya están avanzando en pruebas de concepto (PoC).&lt;/li>
&lt;li>&lt;strong>El modelo de puertas cuánticas&lt;/strong> es una &amp;ldquo;computadora cuántica de propósito general&amp;rdquo; con el potencial de alterar fundamentalmente los paradigmas de las ciencias de la computación, desde simulaciones rigurosas en física y química hasta descifrado de códigos. Sin embargo, requiere de investigación y desarrollo a largo plazo para superar el enorme obstáculo de la corrección de errores.&lt;/li>
&lt;/ul>
&lt;p>En el futuro, se espera que se construya un entorno de &lt;strong>&amp;ldquo;computación heterogénea&amp;rdquo; (Heterogeneous Computing)&lt;/strong>, donde las supercomputadoras clásicas (HPC) sean el núcleo, mientras que las máquinas de recocido se invoquen para tareas de optimización, y las computadoras cuánticas de tipo puerta para cálculos de química cuántica.&lt;/p>
&lt;p>Las computadoras cuánticas aún son una tecnología en desarrollo, pero están experimentando rápidos avances tanto en hardware como en algoritmos. Comprender las matemáticas del modelo de Ising y los conceptos básicos de los circuitos cuánticos será una gran ventaja para la próxima era nativa cuántica.&lt;/p>
&lt;hr>
&lt;p>&lt;em>Este artículo es una explicación exhaustiva desde los conceptos básicos de la computación cuántica hasta las últimas tendencias de hardware. Continúe prestando atención a las futuras tendencias de investigación.&lt;/em>&lt;/p></description></item><item><title>Simulé el algoritmo de Shor en Python</title><link>http://kenji.blog/es/p/shors-algorithm-simulation-python/</link><pubDate>Fri, 11 Sep 2026 08:00:00 +0900</pubDate><guid>http://kenji.blog/es/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 Simulé el algoritmo de Shor en Python" />&lt;h1 id="1-introducción-la-crisis-de-la-criptografía-provocada-por-las-computadoras-cuánticas">1. Introducción: La crisis de la criptografía provocada por las computadoras cuánticas
&lt;/h1>&lt;p>Gran parte de la seguridad en la sociedad de Internet moderna depende de la &lt;strong>criptografía de clave pública&lt;/strong> (especialmente RSA). Cuando enviamos la información de nuestra tarjeta de crédito en compras en línea o intercambiamos datos altamente confidenciales, el contenido de esa comunicación está fuertemente protegido por la criptografía RSA.&lt;/p>
&lt;p>La base de la seguridad de la criptografía RSA radica en el hecho matemático de que &amp;ldquo;&lt;strong>la factorización de números enteros enormes es extremadamente difícil para las computadoras clásicas (las PC y supercomputadoras que usamos normalmente)&lt;/strong>&amp;rdquo;. Sin embargo, el &amp;ldquo;&lt;strong>Algoritmo de Shor (Shor&amp;rsquo;s Algorithm)&lt;/strong>&amp;rdquo;, publicado por Peter Shor en 1994, socavó esta premisa desde sus cimientos. Se demostró matemáticamente que, si se ejecuta el algoritmo de Shor en una computadora cuántica a gran escala, la factorización de números primos, que le tomaría a una computadora clásica más tiempo que la edad del universo, puede resolverse en solo unos minutos a unas horas.&lt;/p>
&lt;p>En este artículo, explicaremos exhaustiva y detalladamente cómo el algoritmo de Shor realiza la factorización de manera rápida, desde su mecanismo matemático hasta la implementación de una simulación concreta utilizando Python y el marco de computación cuántica &lt;strong>Qiskit&lt;/strong>.&lt;/p>
&lt;hr>
&lt;h1 id="2-cambio-dramático-en-la-complejidad-computacional-de-tiempo-exponencial-a-polinómico">2. Cambio dramático en la complejidad computacional: De tiempo exponencial a polinómico
&lt;/h1>&lt;p>¿Por qué es difícil la factorización? Incluso si utilizamos la &amp;ldquo;Criba General del Campo de Números (General Number Field Sieve, GNFS)&amp;rdquo;, conocida como el mejor algoritmo de factorización en computadoras clásicas, su complejidad computacional es subexponencial.&lt;/p>
&lt;p>La complejidad temporal para factorizar un número compuesto de $N$ dígitos con métodos clásicos es la siguiente:&lt;/p>
$$ O\left(\exp\left( c (\log N)^{1/3} (\log \log N)^{2/3} \right)\right) $$
&lt;p>Por lo tanto, con solo aumentar la longitud de la clave (por ejemplo, a 2048 o 4096 bits), a una computadora clásica le tomará miles o decenas de miles de años descifrarla, un tiempo que no es realista.&lt;/p>
&lt;p>Sin embargo, al utilizar el &lt;strong>algoritmo de Shor&lt;/strong> en una computadora cuántica, la complejidad computacional se reduce dramáticamente a tiempo polinómico respecto al número de bits de entrada $\log N$.&lt;/p>
$$ O((\log N)^3) $$
&lt;p>Esto significa que si se duplica el número de bits, el tiempo de cálculo en una computadora clásica aumentaría astronómicamente, mientras que en una computadora cuántica aumentaría como mucho unas 8 veces. Esta &lt;strong>reducción de la clase de complejidad de tiempo exponencial a polinómico (inclusión en la clase BQP)&lt;/strong> es la verdadera grandeza del algoritmo de Shor.&lt;/p>
&lt;div class="mermaid">graph TD
A["Aumento del tamaño de entrada (número de bits) N"] --> B{"Elección del algoritmo"}
B -->|Clásico: Criba General del Campo de Números| C["Aumento subexponencial O(exp(...))"]
B -->|Cuántico: Algoritmo de Shor| D["Tiempo polinómico O((log N)^3)"]
C --> E["Miles a miles de millones de años (Indescifrable)"]
D --> F["Minutos a horas (Descifrable en tiempo realista)"]&lt;/div>
&lt;hr>
&lt;h1 id="3-visión-general-del-algoritmo-y-fundamentos-matemáticos">3. Visión general del algoritmo y fundamentos matemáticos
&lt;/h1>&lt;p>De hecho, el algoritmo de Shor no realiza todo en la computadora cuántica. Está compuesto por una colaboración entre el preprocesamiento y posprocesamiento mediante una computadora clásica y la parte central (algoritmo de búsqueda de período) realizada por la computadora cuántica.&lt;/p>
&lt;p>El flujo general del algoritmo es el siguiente:&lt;/p>
&lt;div class="mermaid">graph TD
A["Entrada: Número compuesto a factorizar N"] --> B["Elegir un número aleatorio a tal que a &lt; N"]
B --> C{"gcd(a, N) > 1 ?"}
C -- "Sí" --> D["Imprimir factor trivial gcd(a, N) y terminar"]
C -- "No" --> E["Encontrar el período r de f(x) = a^x mod N con algoritmo cuántico"]
E --> F{"¿r es par y a^(r/2) ≢ -1 mod N ?"}
F -- "No" --> B
F -- "Sí" --> G["Calcular factores p = gcd(a^(r/2) - 1, N), q = gcd(a^(r/2) + 1, N)"]
G --> H["Salida: p, q"]&lt;/div>
&lt;h2 id="reducción-del-problema-de-factorización-al-problema-de-búsqueda-de-período">Reducción del problema de factorización al problema de búsqueda de período
&lt;/h2>&lt;p>La genialidad de Shor consistió en transformar el &amp;ldquo;&lt;strong>problema de factorización&lt;/strong>&amp;rdquo; en el &amp;ldquo;&lt;strong>problema de búsqueda de período (Order Finding Problem)&lt;/strong>&amp;rdquo;.&lt;/p>
&lt;p>Consideremos un entero $N$ (el número que queremos factorizar) y un entero $a$ coprimo con $N$ ($1 &lt; a &lt; N$). Definimos la siguiente función exponencial modular:&lt;/p>
$$ f(x) = a^x \bmod N $$
&lt;p>Esta función tiene un cierto período $r$. Es decir, para cualquier $x$, se cumple que $f(x+r) = f(x)$. Especialmente cuando $x=0$,&lt;/p>
$$ a^r \equiv 1 \pmod N $$
&lt;p>El número entero positivo más pequeño $r$ que cumple esto se llama el &amp;ldquo;orden (Order) de $a$ módulo $N$&amp;rdquo;. Si podemos encontrar este período $r$, podemos deducir los factores primos de la siguiente manera.&lt;/p>
&lt;p>Transformando la ecuación,
&lt;/p>
$$ a^r - 1 \equiv 0 \pmod N $$
&lt;p>
Si $r$ es par, se puede factorizar usando la fórmula de diferencia de cuadrados.
&lt;/p>
$$ (a^{r/2} - 1)(a^{r/2} + 1) \equiv 0 \pmod N $$
&lt;p>Esto significa que $N$ tiene un factor común con $(a^{r/2} - 1)$ o con $(a^{r/2} + 1)$ (siempre que se cumpla la condición $a^{r/2} \not\equiv -1 \pmod N$). Por lo tanto, utilizando el algoritmo de Euclides, calculando&lt;/p>
$$ p = \gcd(a^{r/2} - 1, N) $$
$$ q = \gcd(a^{r/2} + 1, N) $$
&lt;p>podemos encontrar los factores primos no triviales $p, q$ de $N$. Este cálculo (el cálculo del máximo común divisor y la generación de números aleatorios) se puede realizar de manera muy rápida en una computadora clásica. El problema se reduce a &lt;strong>cómo encontrar rápidamente el período $r$&lt;/strong>. En una computadora clásica, encontrar este período $r$ en sí mismo requiere un tiempo exponencial. Aquí es donde entra en juego la computadora cuántica.&lt;/p>
&lt;hr>
&lt;h1 id="4-parte-del-algoritmo-cuántico-mecanismo-de-búsqueda-de-período">4. Parte del algoritmo cuántico: Mecanismo de búsqueda de período
&lt;/h1>&lt;p>La subrutina para encontrar el período $r$ utilizando una computadora cuántica consta de los siguientes cuatro pasos.&lt;/p>
&lt;div class="mermaid">graph LR
subgraph "Transición del estado cuántico"
S1["|0⟩|0⟩ (Inicialización)"] --> S2["Compuerta H: Superposición Σ|x⟩|0⟩"]
S2 --> S3["Oráculo U: Σ|x⟩|a^x mod N⟩"]
S3 --> S4["QFT: Extracción del período por interferencia"]
S4 --> S5["Medición: Obtención del valor aproximado y"]
end&lt;/div>
&lt;h2 id="paso-1-inicialización-de-los-registros-cuánticos-y-superposición">Paso 1: Inicialización de los registros cuánticos y superposición
&lt;/h2>&lt;p>Primero, preparamos dos registros cuánticos. El primer registro es para la entrada de estado, y el segundo registro es para almacenar el resultado del cálculo de la función.
El estado inicial es todo $|0\rangle$.&lt;/p>
$$ |\psi_0\rangle = |0\rangle_1 |0\rangle_2 $$
&lt;p>Aplicamos la compuerta de Hadamard (Hadamard Gate) a todos los qubits del primer registro, creando un estado de superposición equiprobable de todas las entradas posibles $x$ (desde $0$ hasta $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>De esta manera, la computadora cuántica mantendrá los estados de todas las $Q$ entradas simultáneamente en una sola operación. Esta es la poderosa fuente del &lt;strong>paralelismo cuántico&lt;/strong>.&lt;/p>
&lt;h2 id="paso-2-aplicación-de-la-función-oráculo-exponenciación-modular">Paso 2: Aplicación de la función oráculo (exponenciación modular)
&lt;/h2>&lt;p>A continuación, utilizamos el circuito de operación cuántica $U_f$ para calcular la función $f(x) = a^x \bmod N$ y almacenamos el resultado en el segundo registro.&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>En este punto, el primer y el segundo registro se encuentran en un estado de &lt;strong>entrelazamiento cuántico (Entanglement)&lt;/strong>. Si (hipotéticamente) observáramos el segundo registro y obtuviéramos un valor específico $k = a^{x_0} \bmod N$, el estado del primer registro colapsaría a una superposición de las $x$ que producen ese valor $k$. Dado que el período de la función es $r$, los estados restantes serán valores separados por $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>Sin embargo, no queremos conocer $x_0$, sino el período $r$ en sí. Es imposible observar $r$ directamente desde este estado. Por lo tanto, utilizamos la transformada de Fourier cuántica.&lt;/p>
&lt;h2 id="paso-3-interferencia-de-fase-mediante-la-transformada-de-fourier-cuántica-qft">Paso 3: Interferencia de fase mediante la Transformada de Fourier Cuántica (QFT)
&lt;/h2>&lt;p>Aplicamos la &lt;strong>Transformada de Fourier Cuántica (Quantum Fourier Transform, QFT)&lt;/strong> al primer registro. La QFT es la versión cuántica de la transformada de Fourier discreta clásica y transforma la amplitud del vector de estado. La acción de la QFT sobre el estado base $|x\rangle$ se define de la siguiente manera:&lt;/p>
$$ QFT |x\rangle = \frac{1}{\sqrt{Q}} \sum_{y=0}^{Q-1} \omega^{xy} |y\rangle $$
&lt;p>Aquí, $\omega = e^{2\pi i / Q}$.&lt;/p>
&lt;p>Al aplicar la QFT, las amplitudes de estado interfieren. Omitiendo los detalles matemáticos, cuando se aplica la QFT a un estado con período $r$, las ondas causan una &lt;strong>interferencia constructiva (Constructive Interference)&lt;/strong> solo cuando $y$ es un valor extremadamente cercano a un múltiplo entero de $Q/r$. Para los demás estados, las amplitudes de probabilidad se anulan debido a la &lt;strong>interferencia destructiva (Destructive Interference)&lt;/strong> y se acercan a cero.&lt;/p>
&lt;h2 id="paso-4-medición-y-expansión-en-fracciones-continuas">Paso 4: Medición y expansión en fracciones continuas
&lt;/h2>&lt;p>Finalmente, medimos el primer registro. El valor $y$ obtenido de la medición satisfará la siguiente condición con alta probabilidad:&lt;/p>
$$ y \approx c \frac{Q}{r} \implies \frac{y}{Q} \approx \frac{c}{r} $$
&lt;p>($c$ es un entero desconocido tal que $0 \le c &lt; r$)&lt;/p>
&lt;p>Al aplicar el algoritmo clásico de &lt;strong>expansión en fracciones continuas (Continued Fraction Expansion)&lt;/strong> al número racional obtenido $y/Q$, calculamos la fracción aproximada $c/r$ y extraemos el período $r$ del denominador.&lt;/p>
&lt;hr>
&lt;h1 id="5-implementación-de-simulación-utilizando-python-y-qiskit">5. Implementación de simulación utilizando Python y Qiskit
&lt;/h1>&lt;p>Dado que la teoría por sí sola puede ser difícil de visualizar, simulemos realmente el algoritmo de Shor utilizando Python y el marco de cálculo cuántico de IBM, &lt;strong>Qiskit&lt;/strong>.&lt;/p>
&lt;p>Aquí implementaremos el escenario más clásico y famoso: &lt;strong>&amp;ldquo;factorizar $N=15$ utilizando $a=7$&amp;rdquo;&lt;/strong>.&lt;/p>
&lt;h2 id="preparación-del-entorno-de-ejecución">Preparación del entorno de ejecución
&lt;/h2>&lt;p>Instala Qiskit de antemano.&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="resumen-del-código-de-implementación-en-python">Resumen del código de implementación en Python
&lt;/h2>&lt;p>El siguiente código es un ejemplo de implementación del algoritmo de Shor especializado para $N=15, a=7$. Construir un circuito de exponenciación modular de propósito general tiene un costo computacional demasiado alto para los simuladores actuales, por lo que las operaciones de las compuertas para el caso específico de $a=7$ están programadas en duro (hardcoded).&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. Función para construir la Transformada de Fourier Cuántica Inversa (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;Genera un circuito de transformada de Fourier cuántica inversa de n qubits&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"># Compuertas SWAP para invertir el orden&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"># Aplicación de compuertas de fase controladas y compuertas 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. Función para construir la operación de exponenciación modular controlada 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;Genera una compuerta U controlada para un a específico y su potencia (exclusivo para 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"># Lógica de codificación dura (hardcoding) de 7^x mod 15 para el caso 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. Construcción del circuito cuántico principal&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: Número de bits del registro de control&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># El registro objetivo requiere 4 bits para representar de 0 a 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"># Inicialización del primer registro (registro de control) (generación de superposición)&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"># Inicialización del segundo registro (registro objetivo) a |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"># Aplicación de la operación de exponenciación modular controlada (Oráculo)&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"># Aplicación de la operación elevada a la potencia 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"># Aplicación de la transformada de Fourier cuántica inversa al primer registro&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"># Medición del primer registro&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"># --- Sección de ejecución ---&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"># Uso de 8 qubits para el registro de control (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;Configuración de búsqueda: 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">, qubits de control=&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"># Generación del circuito&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"># Ejecución en el simulador&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"># Se recomienda usar transpile en las versiones recientes de Qiskit&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">Resultados de medición (cadena de bits: número de observaciones):&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"> veces&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"># Posprocesamiento clásico: Identificación del período r mediante expansión de fracciones continuas&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">--- Cálculo del período y factorización ---&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"># Convertir cadena de bits a número decimal&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"># Fase = valor medido / 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"># Obtener la fracción aproximada por expansión de fracciones continuas. El límite del denominador es 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;Valor observado: &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"> | Fase: &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"> | Fracción continua: &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"> | Período estimado 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"># Comprobar si el período r es par y produce resultados válidos&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; ¡Éxito! Los factores primos de &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"> son &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"> y &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; Solo factores triviales. Intentando de nuevo.&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; Fallo porque el período es impar.&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="explicación-del-código-y-análisis-de-los-resultados-de-ejecución">Explicación del código y análisis de los resultados de ejecución
&lt;/h2>&lt;p>Al ejecutar el código anterior, como resultado de la medición del registro de control, se obtienen picos específicos (valores observados) con alta probabilidad. En el caso de &lt;code>n_count=8&lt;/code> ($Q=256$), si se trata de una computadora cuántica ideal (o un simulador), los valores observados como &lt;code>0&lt;/code>, &lt;code>64&lt;/code>, &lt;code>128&lt;/code> y &lt;code>192&lt;/code> aparecerán con una probabilidad abrumadora.&lt;/p>
&lt;p>Si dividimos estos valores por $Q=256$, las fases $y/Q$ serán $0.0$, $0.25$, $0.5$ y $0.75$, respectivamente.
Al expandir estas fases en fracciones continuas, obtenemos:&lt;/p>
&lt;ul>
&lt;li>$0.25 \to 1/4$ (Período estimado $r=4$)&lt;/li>
&lt;li>$0.50 \to 1/2$ (Período estimado $r=2$)&lt;/li>
&lt;li>$0.75 \to 3/4$ (Período estimado $r=4$)&lt;/li>
&lt;/ul>
&lt;p>Utilizando el período obtenido $r=4$, calculamos los factores primos.
Dado que $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>Impresionantemente, hemos tenido éxito en la factorización de $15 = 3 \times 5$.&lt;/p>
&lt;blockquote>
&lt;p>[!TIP]
Si se obtiene $y=128$ (fase $0.5$) como valor de medición, el denominador será $2$, y obtendremos un divisor del verdadero período $r=4$ en lugar del período real. En tales casos, se puede llegar al verdadero período ejecutando el algoritmo varias veces o examinando los múltiplos del $r$ obtenido.&lt;/p>
&lt;/blockquote>
&lt;hr>
&lt;h1 id="6-desafíos-para-la-implementación-práctica-y-los-límites-de-la-era-nisq">6. Desafíos para la implementación práctica y los límites de la era NISQ
&lt;/h1>&lt;p>Si bien fue fácil factorizar $N=15$ en un simulador, factorizar RSA-2048 (un número decimal de 617 dígitos) utilizado en el mundo real presenta numerosos obstáculos para las computadoras cuánticas actuales.&lt;/p>
&lt;p>La época en la que vivimos actualmente se llama la &lt;strong>era NISQ (Noisy Intermediate-Scale Quantum: Cuántica de Escala Intermedia Ruidosa)&lt;/strong>. Los qubits son extremadamente vulnerables al ruido ambiental y sufren &amp;ldquo;decoherencia&amp;rdquo; durante los cálculos, lo que destruye su estado.&lt;/p>
&lt;p>Para ejecutar con precisión circuitos profundos (con muchas compuertas) como el algoritmo de Shor, la &lt;strong>corrección de errores cuánticos (Quantum Error Correction)&lt;/strong>, que corrige el ruido, es indispensable. Para crear un solo &amp;ldquo;qubit lógico&amp;rdquo; sin ruido, es necesario codificar miles de &amp;ldquo;qubits físicos&amp;rdquo; utilizando un código de superficie (Surface Code) u otros métodos.&lt;/p>
&lt;p>Se estima que para romper la criptografía RSA de 2048 bits se requieren miles de qubits lógicos perfectos, y lograr esto requeriría una computadora cuántica tolerante a fallos (fault-tolerant) equipada con &lt;strong>millones a decenas de millones de qubits físicos&lt;/strong>. Dado que los procesadores cuánticos más avanzados de la actualidad tienen solo unos cientos a unos pocos miles de qubits físicos, la criptografía mundial no se romperá de manera inminente.&lt;/p>
&lt;blockquote>
&lt;p>[!WARNING]
Sin embargo, existe un modelo de amenaza llamado &amp;ldquo;Store Now, Decrypt Later (Almacenar ahora, descifrar después)&amp;rdquo;. Los atacantes podrían adoptar la estrategia de almacenar masivamente comunicaciones confidenciales actualmente encriptadas en forma de datos cifrados, con el objetivo de descifrarlo todo en el momento en que se complete una computadora cuántica poderosa dentro de 10 a 20 años.&lt;/p>
&lt;/blockquote>
&lt;hr>
&lt;h1 id="7-transición-hacia-la-criptografía-post-cuántica-pqc">7. Transición hacia la Criptografía Post-Cuántica (PQC)
&lt;/h1>&lt;p>En preparación para la llegada de ese &amp;ldquo;Día Q (Q-Day)&amp;rdquo; (el día en que las computadoras cuánticas rompan la criptografía), los criptógrafos de todo el mundo, liderados por el Instituto Nacional de Estándares y Tecnología de EE. UU. (NIST), están avanzando en el desarrollo de la &lt;strong>Criptografía Post-Cuántica (Post-Quantum Cryptography, PQC)&lt;/strong>.&lt;/p>
&lt;p>La PQC se basa en nuevos problemas matemáticos (problemas basados en retículos, polinomios multivariantes, funciones hash, etc.) que se consideran matemáticamente difíciles de resolver de manera eficiente incluso utilizando el algoritmo de Shor (o el algoritmo de Grover). Algoritmos como &amp;ldquo;CRYSTALS-Kyber&amp;rdquo; y &amp;ldquo;CRYSTALS-Dilithium&amp;rdquo; ya han sido seleccionados como estándares y su implementación en protocolos de comunicación para navegadores web e iMessage de Apple está comenzando gradualmente.&lt;/p>
&lt;p>Para los ingenieros que gestionan la infraestructura de TI, incorporar &amp;ldquo;agilidad criptográfica (crypto-agility: la capacidad del diseño para cambiar rápidamente los esquemas criptográficos)&amp;rdquo; en sus sistemas para hacer la transición desde la actual RSA y la criptografía de curva elíptica a PQC será una misión importante en el futuro.&lt;/p>
&lt;hr>
&lt;h1 id="8-conclusión">8. Conclusión
&lt;/h1>&lt;p>En este artículo, hemos proporcionado una explicación exhaustiva de aproximadamente 10,000 caracteres, que abarca desde los fundamentos teóricos y matemáticos del algoritmo de Shor hasta el mecanismo de extracción de períodos mediante la transformada de Fourier cuántica y, finalmente, un código de simulación concreto utilizando Python y Qiskit.&lt;/p>
&lt;p>El hecho de que las leyes físicas del mundo microscópico de la mecánica cuántica estén subvirtiendo fundamentalmente la teoría de la complejidad computacional y la teoría de la criptografía, que son la base de la ciencia de la información macroscópica, es uno de los cambios de paradigma más emocionantes en la historia de la ciencia. No podemos quitarle los ojos de encima a las continuas batallas ofensivas y defensivas entre la tecnología de la computación cuántica, que continúa desarrollándose en tiempo real, y las nuevas tecnologías criptográficas que la enfrentan.&lt;/p>
&lt;p>Te invitamos a ejecutar el código de Python presentado aquí en tu propio entorno para experimentar la &amp;ldquo;magia computacional&amp;rdquo; producida por la superposición de estados cuánticos y la interferencia.&lt;/p>
&lt;hr>
&lt;p>&lt;strong>Referencias&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 Ilustrado】Comparación de los principales algoritmos de criptografía poscuántica</title><link>http://kenji.blog/es/p/post-quantum-cryptography-algorithms-comparison/</link><pubDate>Fri, 11 Sep 2026 07:00:00 +0900</pubDate><guid>http://kenji.blog/es/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 Ilustrado】Comparación de los principales algoritmos de criptografía poscuántica" />&lt;h2 id="1-introducción-la-crisis-criptográfica-provocada-por-las-computadoras-cuánticas">1. Introducción: La &amp;ldquo;crisis criptográfica&amp;rdquo; provocada por las computadoras cuánticas
&lt;/h2>&lt;p>En la sociedad de Internet moderna, la tecnología de criptografía de clave pública es una infraestructura indispensable para proteger la confidencialidad de las comunicaciones y la integridad de los datos. Los criptosistemas ampliamente utilizados en la actualidad, como RSA y la criptografía de curva elíptica (ECC), garantizan la seguridad dependiendo de barreras matemáticas como la &amp;ldquo;dificultad de factorizar números compuestos enormes&amp;rdquo; o la &amp;ldquo;dificultad del problema del logaritmo discreto sobre curvas elípticas&amp;rdquo;, respectivamente. En las computadoras clásicas (las computadoras que usamos hoy en día, incluidas las supercomputadoras), se ha demostrado que resolver estos problemas matemáticos tomaría más tiempo que la edad del universo, lo cual ha sido la base de su seguridad.&lt;/p>
&lt;p>Sin embargo, esta sólida premisa está a punto de ser anulada por los avances en la teoría y aplicación práctica de la &lt;strong>computadora cuántica&lt;/strong>. El &amp;ldquo;&lt;strong>Algoritmo de Shor&lt;/strong>&amp;rdquo;, publicado por el criptógrafo Peter Shor en 1994, demostró teóricamente que el problema de la factorización de enteros y el problema del logaritmo discreto se pueden resolver en &amp;ldquo;tiempo polinómico&amp;rdquo; si se ejecutan en una computadora cuántica de propósito general tolerante a fallas (CRQC: Cryptographically Relevant Quantum Computer) con suficiente rendimiento. Esto significa que toda la criptografía de clave pública que se usa actualmente será inutilizada.&lt;/p>
&lt;div class="mermaid">graph TD
A["Computadora cuántica a gran escala (CRQC)"] -->|Ejecución| B["Algoritmo de Shor"]
B -->|Descifrado en tiempo polinómico| C["Problema de factorización de enteros (RSA)"]
B -->|Descifrado en tiempo polinómico| D["Problema del logaritmo discreto (ECC / ECDSA)"]
C --> E["Intercepción de comunicaciones cifradas, manipulación de datos y suplantación de identidad"]
D --> E
F["Store Now, Decrypt Later (SNDL)"] --> E&lt;/div>
&lt;p>Es muy peligroso pensar que &amp;ldquo;la finalización a gran escala de las computadoras cuánticas está a décadas de distancia, así que no hay problema&amp;rdquo;. Esto se debe a que un método de ataque llamado &lt;strong>Store Now, Decrypt Later (SNDL: Almacenar ahora, descifrar después)&lt;/strong> ya es una amenaza real. Se trata de un ataque en el que naciones hostiles o grupos de hackers almacenan cantidades masivas de datos de comunicación cifrados actuales (como el tráfico TLS) en sistemas de almacenamiento y los descifran todos en el instante en que una potente computadora cuántica esté disponible en el futuro. Los secretos de estado, la información de infraestructuras y los datos médicos que deben protegerse a largo plazo ya están expuestos a esta amenaza.&lt;/p>
&lt;p>Además, existe el &lt;strong>Algoritmo de Grover&lt;/strong>, descubierto en 1996, contra la criptografía de clave simétrica (como AES) y las funciones hash (como SHA-256). Esto reduce a la raíz cuadrada la cantidad de cálculo para los ataques de fuerza bruta. Es decir, dado que el nivel de seguridad de AES-128 se reduce a la mitad (a 2 a la potencia de 64), se recomienda utilizar claves o longitudes de hash más largas en la era cuántica, como AES-256 o SHA-384.&lt;/p>
&lt;p>Para contrarrestar esta crisis criptográfica sin precedentes, nació la &lt;strong>Criptografía Poscuántica (Post-Quantum Cryptography: PQC)&lt;/strong>, basada en nuevos problemas matemáticos que son difíciles de descifrar incluso utilizando una computadora cuántica. Basándose en los resultados del proceso de estandarización de PQC liderado por el Instituto Nacional de Estándares y Tecnología de los EE. UU. (NIST), este artículo explica detalladamente los principales algoritmos de PQC, desde sus fundamentos matemáticos hasta su funcionamiento y comparación de arquitectura.&lt;/p>
&lt;hr>
&lt;h2 id="2-visión-general-e-historia-del-proyecto-de-estandarización-pqc-por-el-nist">2. Visión general e historia del proyecto de estandarización PQC por el NIST
&lt;/h2>&lt;p>La transición de las tecnologías criptográficas, incluyendo el rediseño de protocolos, actualizaciones de sistemas y reemplazo de hardware, toma de varios años a décadas. Por lo tanto, criptógrafos de todo el mundo han avanzado tempranamente en la investigación de PQC. El papel central lo ha desempeñado el NIST de EE. UU. En 2016, el NIST convocó un proceso de estandarización de PQC, recibiendo propuestas para algoritmos criptográficos completamente nuevos de la comunidad criptográfica mundial.&lt;/p>
&lt;p>Los dos principales objetivos de estandarización fueron:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Criptografía de clave pública / Mecanismo de encapsulación de claves (KEM: Key Encapsulation Mechanism)&lt;/strong>: Un mecanismo para compartir (distribuir) de forma segura claves simétricas para cifrar rutas de comunicación, como en conexiones TLS.&lt;/li>
&lt;li>&lt;strong>Firmas digitales (Digital Signatures)&lt;/strong>: Un mecanismo para probar que los datos no han sido manipulados y que no hay suplantación del remitente (autenticidad) en las actualizaciones de software y certificados digitales.&lt;/li>
&lt;/ol>
&lt;p>Después de unos 6 años de competencia extremadamente intensa de evaluación, análisis y criptoanálisis (Ronda 1 a Ronda 3), se realizó una evaluación adicional en la Ronda 4 para algunos algoritmos. Como resultado, en 2024 los siguientes algoritmos fueron publicados formalmente como Estándares Federales de Procesamiento de Información (FIPS), estableciéndose como los futuros estándares mundiales:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>FIPS 203 (ML-KEM)&lt;/strong>: KEM basado en CRYSTALS-Kyber&lt;/li>
&lt;li>&lt;strong>FIPS 204 (ML-DSA)&lt;/strong>: Firma digital basada en CRYSTALS-Dilithium&lt;/li>
&lt;li>&lt;strong>FIPS 205 (SLH-DSA)&lt;/strong>: Firma basada en hash sin estado basada en SPHINCS+&lt;/li>
&lt;li>&lt;strong>(Programado para el futuro) FN-DSA&lt;/strong>: Firma digital basada en FALCON&lt;/li>
&lt;/ul>
&lt;p>Estos algoritmos seleccionados dependen de &amp;ldquo;problemas de dificultad&amp;rdquo; matemáticos diferentes. Esto asegura la diversidad (Crypto Agility) para que, incluso si se descubre una vulnerabilidad fatal en un algoritmo en el futuro, todo el sistema no colapse. En el proceso de estandarización, la criptografía basada en retículos (Lattice-based cryptography) tomó el papel principal en términos de rendimiento, pero la criptografía basada en hash y la criptografía basada en códigos fueron adoptadas como poderosos respaldos.&lt;/p>
&lt;hr>
&lt;h2 id="3-clasificación-de-los-principales-enfoques-matemáticos-de-pqc">3. Clasificación de los principales enfoques matemáticos de PQC
&lt;/h2>&lt;p>Los algoritmos PQC se dividen principalmente en las siguientes cinco categorías según los problemas matemáticos que son la base de su seguridad. Este artículo profundizará especialmente en los tres primeros.&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Criptografía basada en retículos (Lattice-based Cryptography)&lt;/strong>:
Se basa en el Problema del Vector Más Corto (SVP) y el Problema del Vector Más Cercano (CVP) en un espacio de retículo multidimensional, y el problema LWE derivado de ellos. Es el centro de la estandarización del NIST e incluye Kyber, Dilithium y FALCON. Tiene el mejor equilibrio entre velocidad de procesamiento, tamaño de clave pública y tamaño de texto cifrado, lo que lo hace adecuado para un uso general.&lt;/li>
&lt;li>&lt;strong>Criptografía basada en hash (Hash-based Cryptography)&lt;/strong>:
Su seguridad se basa únicamente en la &amp;ldquo;resistencia a colisiones&amp;rdquo; y la &amp;ldquo;unidireccionalidad&amp;rdquo; de funciones hash criptográficas (como SHA-2 o SHAKE). Solo es aplicable a firmas digitales (como SPHINCS+), pero su prueba de seguridad es la más robusta, caracterizándose por una resistencia extremadamente alta contra ataques matemáticos desconocidos.&lt;/li>
&lt;li>&lt;strong>Criptografía basada en códigos (Code-based Cryptography)&lt;/strong>:
Se basa en la teoría de códigos de corrección de errores y depende de la dificultad del Problema de Decodificación de Síndrome (Syndrome Decoding Problem). Classic McEliece, propuesto en la década de 1970, es representativo, poseyendo una historia muy larga y seguridad probada, pero el tamaño de la clave pública es extremadamente grande (en megabytes).&lt;/li>
&lt;li>&lt;strong>Criptografía de polinomios multivariables (Multivariate Polynomial Cryptography)&lt;/strong>:
Se basa en la dificultad de resolver sistemas de ecuaciones cuadráticas multivariables sobre un campo finito (problema MQ). Propuesto principalmente como firmas digitales (como Rainbow), pero durante la ronda final del NIST se descubrió un poderoso método de ataque que podía romperlo en unos pocos días en una sola PC, causando que muchos algoritmos quedaran fuera de la estandarización.&lt;/li>
&lt;li>&lt;strong>Criptografía basada en isogenias (Isogeny-based Cryptography)&lt;/strong>:
Se basa en el problema de búsqueda de caminos en grafos de isogenias de curvas elípticas. Tenía claves de tamaño muy pequeño y se esperaba que fuera el verdadero sucesor de ECC, pero su candidato final, &amp;ldquo;SIKE&amp;rdquo;, fue completamente descifrado en 2022 utilizando matemáticas clásicas (como el ataque de Castryck-Decru) en una PC ordinaria en solo unas pocas horas, un dramático final que simboliza la dificultad y el terror de diseñar PQC.&lt;/li>
&lt;/ol>
&lt;hr>
&lt;h2 id="4-el-abismo-de-la-criptografía-basada-en-retículos-problema-lwe-y-fundamentos-matemáticos-de-module-lwe">4. El abismo de la criptografía basada en retículos: Problema LWE y fundamentos matemáticos de Module-LWE
&lt;/h2>&lt;p>Actualmente vista como la más prometedora y el centro de la estandarización está la &lt;strong>criptografía basada en retículos&lt;/strong>. La base de su seguridad es el &lt;strong>problema LWE (Learning with Errors: Aprendizaje con errores)&lt;/strong>. Propuesto por Oded Regev en 2005, recibió el Premio Gödel por este logro histórico. No podemos hablar del PQC moderno sin entender el problema LWE.&lt;/p>
&lt;h3 id="41-qué-es-el-problema-lwe-learning-with-errors">4.1. ¿Qué es el problema LWE (Learning with Errors)?
&lt;/h3>&lt;p>Primero, consideremos un sistema simple de ecuaciones lineales. Supongamos que bajo un módulo $q$ (módulo $q$), hay una matriz aleatoria conocida $A$ y un vector secreto desconocido $\vec{s}$, y se da su producto $\vec{b}$.&lt;/p>
$$ \vec{b} = A\vec{s} \pmod q $$
&lt;p>En este caso, es fácil encontrar el desconocido $\vec{s}$ a partir de la información pública $A$ y $\vec{b}$. Usando el algoritmo clásico de la &amp;ldquo;eliminación de Gauss&amp;rdquo;, $\vec{s}$ puede calcularse fácilmente en tiempo polinómico.&lt;/p>
&lt;p>Sin embargo, si añadimos un &amp;ldquo;pequeño error (ruido) intencional&amp;rdquo; a esta ecuación, el nivel de dificultad del problema se dispara drásticamente. Este es el &lt;strong>problema LWE&lt;/strong>.&lt;/p>
&lt;p>Preparamos un vector secreto desconocido $\vec{s} \in \mathbb{Z}_q^n$ y una matriz elegida al azar $A \in \mathbb{Z}_q^{m \times n}$. Además, preparamos un vector de error $\vec{e} \in \mathbb{Z}_q^m$ &amp;ldquo;cuyos valores de elementos son suficientemente pequeños&amp;rdquo; elegidos de acuerdo con una distribución normal o binomial, y calculamos $\vec{b}$ de la siguiente manera:&lt;/p>
$$ \vec{b} = A\vec{s} + \vec{e} \pmod q $$
&lt;p>El &lt;strong>problema Search LWE&lt;/strong> es el problema de &amp;ldquo;encontrar la información secreta $\vec{s}$ a partir de la información pública $(A, \vec{b})$&amp;rdquo;. Debido a la existencia de este error $\vec{e}$, si se intenta usar métodos de solución algebraica como la eliminación de Gauss, el error $\vec{e}$ se amplifica exponencialmente en el proceso de sumar y restar ecuaciones, llegando a ser indistinguible de valores aleatorios y fallando por completo.&lt;/p>
&lt;p>La maravilla del problema LWE es que existe una poderosa prueba teórica (reducción) de que a menos que exista un algoritmo cuántico capaz de resolver GapSVP (Problema de decisión del vector más corto) o SIVP (Problema del vector independiente más corto), que son &amp;ldquo;problemas de complejidad en el peor de los casos (Worst-case hardness)&amp;rdquo; en retículos, el problema LWE tampoco puede resolverse en el caso promedio (Average-case). Es decir, incluso para claves criptográficas generadas al azar, se garantiza una fuerte seguridad respaldada por límites teóricos.&lt;/p>
&lt;h3 id="42-mejoras-dramáticas-en-eficiencia-mediante-ring-lwe-y-module-lwe">4.2. Mejoras dramáticas en eficiencia mediante Ring-LWE y Module-LWE
&lt;/h3>&lt;p>El problema LWE ordinario (Standard LWE) tiene una base de seguridad muy clara, pero el tamaño de la matriz $A$ se vuelve muy grande y el tamaño de la clave se vuelve de la clase de megabytes, lo que lo hace poco práctico. Por lo tanto, se propuso el enfoque de usar Anillos Polinómicos (Polynomial Rings) para tener una estructura algebraica.&lt;/p>
&lt;p>En el &lt;strong>problema Ring-LWE&lt;/strong>, en lugar de simples vectores o matrices, se utilizan elementos (polinomios) de un cierto anillo polinómico $R_q$. En los estándares del NIST, se usa generalmente el siguiente anillo polinómico ciclotómico.&lt;/p>
$$ R_q = \mathbb{Z}_q[X]/(X^n + 1) $$
&lt;p>Aquí, $n$ es una potencia de 2 (ej. 256) y $q$ es un número primo adecuado. Sobre este anillo, usando los elementos $a, s, e \in R_q$, calculamos $b = a \cdot s + e \pmod q$. Dado que un polinomio $a$ tiene $n$ coeficientes, los datos pueden comprimirse significativamente, y además, al usar la versión de campo finito de la Transformada Rápida de Fourier (FFT) llamada &lt;strong>NTT (Number Theoretic Transform: Transformada de Teoría de Números)&lt;/strong>, es posible la multiplicación ultrarrápida de polinomios con una complejidad computacional de $O(n \log n)$.&lt;/p>
&lt;p>Sin embargo, había preocupaciones con Ring-LWE de que &amp;ldquo;podrían existir vulnerabilidades desconocidas debido a la estructura algebraica especial del anillo&amp;rdquo;. Además, existía un desafío de ingeniería en el que al cambiar el nivel de seguridad (equivalente a AES-128, 192, 256, etc.), el grado del polinomio $n$ en sí tenía que cambiarse, lo que requería reescribir toda la implementación como el algoritmo NTT.&lt;/p>
&lt;p>Por lo tanto, los algoritmos estandarizados Kyber y Dilithium adoptaron el &lt;strong>problema Module-LWE (M-LWE)&lt;/strong>. Module-LWE es un compromiso situado justo entre el Standard LWE sin estructura y el Ring-LWE que tiene demasiada estructura, utilizando una matriz (módulo) de $k \times k$ cuyos componentes son elementos del anillo polinómico $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>La mayor ventaja de Module-LWE es que el nivel de seguridad puede escalarse fácilmente cambiando solo la dimensión $k$ de la matriz mientras se mantiene fijo el grado del polinomio $n$ ($n=256$ en el estándar NIST).
Por ejemplo, en el caso de Kyber, la dimensión $k$ se ajusta de la siguiente manera:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Kyber512 (Nivel 1)&lt;/strong>: $k = 2$ (equivalente a AES-128)&lt;/li>
&lt;li>&lt;strong>Kyber768 (Nivel 3)&lt;/strong>: $k = 3$ (equivalente a AES-192)&lt;/li>
&lt;li>&lt;strong>Kyber1024 (Nivel 5)&lt;/strong>: $k = 4$ (equivalente a AES-256)&lt;/li>
&lt;/ul>
&lt;p>Esto permite que el código NTT subyacente y los circuitos de hardware para las operaciones polinómicas se reutilicen al 100% en todos los niveles de seguridad, mejorando drásticamente la seguridad y eficiencia de la implementación.&lt;/p>
&lt;hr>
&lt;h2 id="5-crystals-kyber-ml-kem-el-mecanismo-de-encapsulación-de-claves-de-próxima-generación">5. CRYSTALS-Kyber (ML-KEM): El mecanismo de encapsulación de claves de próxima generación
&lt;/h2>&lt;p>Formalmente estandarizado como &lt;strong>FIPS 203 (ML-KEM)&lt;/strong>, CRYSTALS-Kyber es un mecanismo de encapsulación de claves (KEM) basado en el problema Module-LWE antes mencionado. En el futuro, será el estándar mundial de facto para compartir claves de sesión de forma segura en TLS 1.3, SSH y otros.&lt;/p>
&lt;h3 id="51-arquitectura-de-kem-key-encapsulation-mechanism">5.1. Arquitectura de KEM (Key Encapsulation Mechanism)
&lt;/h3>&lt;p>En la era PQC, el estándar será el marco de encapsulación KEM en lugar del enfoque directo como RSA donde &amp;ldquo;el cliente crea una clave simétrica, la cifra con la clave pública del servidor y la envía&amp;rdquo;.&lt;/p>
&lt;div class="mermaid">sequenceDiagram
participant Client as "Cliente (Alice)"
participant Server as "Servidor (Bob)"
Note over Client: "ML-KEM KeyGen()"
Client->>Client: "Generar clave privada (sk) y clave pública (pk)"
Client->>Server: "Enviar clave pública (pk)"
Note over Server: "ML-KEM Encaps()"
Server->>Server: "Generar una clave simétrica aleatoria (K)"
Server->>Server: "Encapsular K con pk y crear el texto cifrado (c)"
Server->>Client: "Enviar el texto cifrado (c)"
Note over Client: "ML-KEM Decaps()"
Client->>Client: "Descifrar el texto cifrado (c) usando la clave privada (sk)"
Client->>Client: "Desencapsular y extraer la clave simétrica (K)"
Note over Client, Server: "Iniciar la comunicación cifrada con AES, etc. usando la clave simétrica compartida (K)"&lt;/div>
&lt;h3 id="52-mecanismo-del-algoritmo-interno-de-kyber-y-la-transformada-de-fujisaki-okamoto">5.2. Mecanismo del algoritmo interno de Kyber y la Transformada de Fujisaki-Okamoto
&lt;/h3>&lt;p>El diseño de Kyber es muy refinado. Primero, construye un esquema de criptografía de clave pública (Kyber.CPAPKE) que solo es seguro contra ataques de texto plano elegido (CPA), y luego aplica un método criptográficamente muy poderoso llamado &lt;strong>Transformada de Fujisaki-Okamoto (Fujisaki-Okamoto Transform)&lt;/strong> para actualizarlo a un KEM completo que también es seguro contra ataques de texto cifrado adaptativamente elegido (CCA).&lt;/p>
&lt;p>El núcleo del mecanismo de cifrado y descifrado de CPAPKE es el siguiente:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>Generación de claves (Key Generation)&lt;/strong>:&lt;/p>
&lt;ul>
&lt;li>A partir de un valor semilla aleatorio, se genera una matriz $A \in R_q^{k \times k}$ en el dominio NTT. Se utiliza el módulo $q = 3329$.&lt;/li>
&lt;li>A partir de una distribución binomial centrada (CBD), se muestrean un vector secreto $\vec{s}$ y un vector de error $\vec{e}$ con coeficientes pequeños.&lt;/li>
&lt;li>Se calcula $\vec{t} = A\vec{s} + \vec{e}$. La clave pública es $(A, \vec{t})$ y la clave privada es $\vec{s}$. (En la práctica, $A$ se publica como un valor semilla para ahorrar ancho de banda).&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Cifrado (Encryption)&lt;/strong>:&lt;/p>
&lt;ul>
&lt;li>Se codifica el mensaje de 32 bytes (material de la clave simétrica) $m$ que se desea compartir en un polinomio.&lt;/li>
&lt;li>Se genera un nuevo vector aleatorio $\vec{r}$ y errores pequeños $\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>El texto cifrado es $(\vec{u}, v)$.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Descifrado (Decryption)&lt;/strong>:&lt;/p>
&lt;ul>
&lt;li>El receptor calcula $v - \vec{s}^T\vec{u}$.&lt;/li>
&lt;li>Expandiendo esta fórmula matemáticamente, obtenemos:
$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>Sustituyendo $\vec{t} = A\vec{s} + \vec{e}$, el término principal $\vec{s}^TA^T\vec{r}$ se cancela.&lt;/li>
&lt;li>Lo que queda es $\lfloor q/2 \rceil \cdot m + (\vec{e}^T\vec{r} + e_2 - \vec{s}^T\vec{e_1})$.&lt;/li>
&lt;li>Dado que los términos entre paréntesis son &amp;ldquo;productos o sumas de errores pequeños&amp;rdquo;, en conjunto siguen siendo un valor lo suficientemente pequeño (ruido). Por lo tanto, al aplicar un umbral para determinar si cada coeficiente está más cerca de $0$ o $q/2$, es posible recuperar los bits (0 o 1) del mensaje original $m$ sin ningún error.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ol>
&lt;p>La mayor fortaleza de Kyber es su abrumadora &lt;strong>velocidad de procesamiento&lt;/strong> y &lt;strong>tamaño de clave moderado&lt;/strong>. Para Kyber768, el tamaño de la clave pública es de 1,184 bytes y el tamaño del texto cifrado es de 1,088 bytes. Aunque es mayor en comparación con RSA-3072 (tamaño de clave de unos 384 bytes), puede caber dentro de la Unidad Máxima de Transmisión (MTU) de las comunicaciones modernas de Internet sin fragmentación de paquetes y casi no tiene un efecto adverso en la latencia de la red.&lt;/p>
&lt;hr>
&lt;h2 id="6-crystals-dilithium-ml-dsa-firma-digital-de-propósito-general-basada-en-retículos">6. CRYSTALS-Dilithium (ML-DSA): Firma digital de propósito general basada en retículos
&lt;/h2>&lt;p>En la estandarización de las firmas digitales, los algoritmos con diferentes filosofías de diseño dentro del mismo enfoque de criptografía de retículos compitieron entre sí. Entre ellos, &lt;strong>CRYSTALS-Dilithium&lt;/strong> fue seleccionado como &lt;strong>FIPS 204 (ML-DSA)&lt;/strong> como una firma digital de propósito general.&lt;/p>
&lt;h3 id="61-el-paradigma-de-fiat-shamir-con-abortos">6.1. El paradigma de Fiat-Shamir con Abortos
&lt;/h3>&lt;p>Dilithium, al igual que Kyber, es un esquema de firma digital basado en el problema Module-LWE (y el problema Module-SIS). Un paradigma extremadamente importante llamado &amp;ldquo;&lt;strong>Fiat-Shamir with Aborts (Transformada de Fiat-Shamir con abortos)&lt;/strong>&amp;rdquo; se utiliza como base para su diseño.&lt;/p>
&lt;p>La propia transformación de Fiat-Shamir es un método estándar para convertir un protocolo de prueba de conocimiento cero interactivo en una firma digital no interactiva. El probador (firmante) genera un compromiso $y$, calcula $w = Ay$ y lo pasa a través de una función hash para obtener un desafío aleatorio $c$, luego calcula la respuesta $z = y + cs$.&lt;/p>
&lt;p>Sin embargo, si esto se aplica simplemente en la criptografía de retículos, la distribución de la respuesta $z$ se distorsiona dependiendo del valor de la clave privada $s$, lo que causaba un problema fatal donde la información sobre la clave privada $s$ se filtraría gradualmente a un atacante que observara un gran número de firmas (una fuga matemática similar a un ataque de canal lateral).&lt;/p>
&lt;p>El equipo de diseño de Dilithium (Lyubashevsky et al.) introdujo una técnica llamada &amp;ldquo;&lt;strong>Muestreo de Rechazo (Rejection Sampling)&lt;/strong>&amp;rdquo;, donde si los coeficientes del resultado de la firma $z$ no caen dentro de un rango de umbral seguro predeterminado, todo el proceso de firma es descartado (Abort) y se recalcula desde el principio usando un nuevo número aleatorio $y$.&lt;/p>
&lt;p>Como resultado, la firma final $z$ que se emite se convierte en una distribución completamente uniforme independiente de la clave privada en absoluto, logrando prevenir completamente la fuga de información matemáticamente.&lt;/p>
&lt;h3 id="62-ventajas-y-facilidad-de-implementación-de-dilithium">6.2. Ventajas y facilidad de implementación de Dilithium
&lt;/h3>&lt;p>La gran ventaja en el diseño de Dilithium es que &lt;strong>no utiliza en absoluto&lt;/strong> el complejo &amp;ldquo;muestreo de la distribución gaussiana&amp;rdquo; o &amp;ldquo;cálculos de punto flotante&amp;rdquo; en el proceso de generación de firmas. Puede implementarse de forma segura y en tiempo constante (Constant-time) en una amplia gama de entornos, desde microcontroladores integrados hasta servidores en la nube, ya que solo requiere muestreo de una distribución uniforme, simples operaciones modulares de enteros, NTT y funciones hash (SHAKE). Esto lo hace muy resistente contra ataques físicos de canal lateral como los ataques de temporización.&lt;/p>
&lt;hr>
&lt;h2 id="7-falcon-fn-dsa-firmas-de-retículo-ultracompactas">7. FALCON (FN-DSA): Firmas de retículo ultracompactas
&lt;/h2>&lt;p>El NIST seleccionó &lt;strong>FALCON (Fast-Fourier Lattice-based Compact Signatures over NTRU)&lt;/strong> como otro candidato estándar de firma basada en retículos con características diferentes a Dilithium (actualmente en redacción como FN-DSA).&lt;/p>
&lt;h3 id="71-retículos-ntru-y-muestreo-gaussiano">7.1. Retículos NTRU y muestreo gaussiano
&lt;/h3>&lt;p>La principal característica de FALCON es que utiliza &lt;strong>retículos NTRU (N-th degree Truncated polynomial Ring Units)&lt;/strong>, que tienen una larga historia desde 1996, en lugar del problema LWE. Además, adopta el paradigma &amp;ldquo;&lt;strong>Hash-and-Sign (Hash y Firmar)&lt;/strong>&amp;rdquo; basado en el marco GPV (Gentry-Peikert-Vaikuntanathan).&lt;/p>
&lt;p>En Hash-and-Sign, el valor hash del mensaje se utiliza como un punto objetivo en el espacio, y el punto en el retículo más cercano a ese punto (una solución aproximada del problema del vector más cercano) se encuentra para que sirva como la firma. Esto requiere muestrear puntos según una distribución gaussiana discreta, utilizando la clave privada que es una &amp;ldquo;base corta de buena calidad&amp;rdquo;.&lt;/p>
&lt;p>FALCON aceleró dramáticamente este cálculo pesado usando una técnica llamada &amp;ldquo;&lt;strong>Ortogonalización rápida de Fourier (Fast Fourier Orthogonalization: FFO)&lt;/strong>&amp;rdquo;.&lt;/p>
&lt;h3 id="72-ventajas-y-desventajas-de-falcon">7.2. Ventajas y desventajas de FALCON
&lt;/h3>&lt;p>La abrumadora ventaja de FALCON es que &lt;strong>el tamaño de la firma y el tamaño de la clave pública son extremadamente pequeños (compactos)&lt;/strong>. Mientras que el tamaño de la firma de Dilithium3 es de aproximadamente 3,309 bytes, el tamaño de la firma de FALCON-512 es de solo unos 666 bytes. La clave pública también es muy pequeña, 897 bytes, lo que lo convierte en un salvador en entornos donde el ancho de banda de comunicación está extremadamente restringido, dispositivos IoT o protocolos de red específicos.&lt;/p>
&lt;p>Sin embargo, hay una gran desventaja. Dado que el muestreo gaussiano discreto que involucra operaciones complejas de &lt;strong>punto flotante (64-bit IEEE 754)&lt;/strong> es obligatorio durante la generación de la firma, es extremadamente difícil lograr una implementación en tiempo constante (Constant-time implementation) para evitar fugas de temporización, y el código también se vuelve enorme. Por esta razón, FALCON se posiciona como un algoritmo especializado poderoso para propósitos específicos, en contraste con el uso general (Dilithium).&lt;/p>
&lt;div class="mermaid">graph LR
A["Requisitos de la firma digital"] --> B{"¿Cuál es la restricción principal?"}
B -->|"Simplicidad de implementación, generalidad, facilidad de tiempo constante"| C["Dilithium (ML-DSA)"]
B -->|"Minimización del ancho de banda y tamaño compacto de los datos"| D["FALCON (FN-DSA)"]
C --> E["Certificados TLS de uso general, firmas digitales de software"]
D --> F["Protocolos con estrictos límites de tamaño de paquetes, entornos especiales"]&lt;/div>
&lt;hr>
&lt;h2 id="8-sphincs-slh-dsa-firma-basada-en-hash-con-la-máxima-seguridad">8. SPHINCS+ (SLH-DSA): Firma basada en hash con la máxima seguridad
&lt;/h2>&lt;p>En preparación para el peor de los casos en el que la seguridad de la criptografía de retículos se vea comprometida por un avance matemático de genios en el futuro, el NIST formuló &lt;strong>FIPS 205 (SLH-DSA)&lt;/strong>, es decir, &lt;strong>SPHINCS+&lt;/strong>, como un estándar con un enfoque completamente diferente a la criptografía de retículos.&lt;/p>
&lt;p>SPHINCS+ está clasificado como una &lt;strong>firma basada en hash&lt;/strong>. La base de su seguridad se basa únicamente en un punto: &amp;ldquo;que la función hash criptográfica utilizada (como SHA-2 o SHAKE256) posea resistencia a colisiones y unidireccionalidad&amp;rdquo;. Como no depende de problemas matemáticos con una estructura algebraica específica como LWE o la factorización prima, cuenta con una seguridad extremadamente fuerte (la seguridad más conservadora), en el sentido de que no importa cuán poderosos sean los algoritmos cuánticos que aparezcan en el futuro, puede contrarrestarlos simplemente extendiendo la longitud de salida de la función hash.&lt;/p>
&lt;h3 id="81-arquitectura-sin-estado-mediante-wots-y-fors">8.1. Arquitectura sin estado mediante WOTS+ y FORS
&lt;/h3>&lt;p>La historia de las firmas basadas en hash es antigua, remontándose a la firma de Lamport y la firma de un solo uso de Winternitz (WOTS) en la década de 1970. Estas eran claves desechables que &amp;ldquo;solo podían firmar de forma segura una vez&amp;rdquo;. Para hacerlas reutilizables múltiples veces, se desarrollaron algoritmos como XMSS (eXtended Merkle Signature Scheme) y LMS que combinan árboles de Merkle para gestionar innumerables claves de un solo uso con un único hash raíz.&lt;/p>
&lt;p>Sin embargo, XMSS y LMS tenían el defecto grave de ser &amp;ldquo;&lt;strong>con estado (Stateful)&lt;/strong>&amp;rdquo;. Cada vez que se realizaba una firma, el estado del índice de &amp;ldquo;qué clave de un solo uso se usó&amp;rdquo; tenía que registrarse estrictamente en la memoria no volátil, y si el estado se revertía debido a la restauración de una instantánea de máquina virtual, etc., y se usaba la misma clave de un solo uso dos veces, la clave privada se filtraría inmediatamente y el sistema colapsaría.&lt;/p>
&lt;p>SPHINCS+ es una firma basada en hash &amp;ldquo;&lt;strong>sin estado (Stateless)&lt;/strong>&amp;rdquo; que resolvió esta molestia en la gestión de estados.
Su tecnología central es una combinación de lo siguiente:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>WOTS+ (Winternitz One-Time Signature Plus)&lt;/strong>: Una firma básica de un solo uso.&lt;/li>
&lt;li>&lt;strong>FORS (Forest of Random Subsets)&lt;/strong>: Una tecnología de firma de pocas veces (Few-Time Signature). Mantiene la seguridad incluso si la misma clave se reutiliza unas cuantas veces.&lt;/li>
&lt;li>&lt;strong>Hyper-Tree (Estructura de árbol gigante)&lt;/strong>: Una estructura gigantesca que superpone árboles de Merkle en múltiples capas.&lt;/li>
&lt;/ol>
&lt;p>En SPHINCS+, al realizar una firma, en lugar de mantener el estado, selecciona aleatoriamente una usando números pseudoaleatorios de un gran número de claves FORS en la base del Hyper-Tree para firmar. Como el número de hojas en el árbol es astronómicamente alto, la probabilidad de elegir la misma clave dos veces por accidente (colisión) es insignificantemente pequeña, lo que resulta en la realización de la falta de estado.&lt;/p>
&lt;p>La única y mayor debilidad de SPHINCS+ es que su &lt;strong>tamaño de firma es extremadamente grande&lt;/strong>. Dependiendo de los parámetros, el tamaño de la firma puede alcanzar de 17 kilobytes a 49 kilobytes, y la velocidad de generación de la firma es abrumadoramente más lenta en comparación con la criptografía de retículos. Por lo tanto, se prevé que se utilice para propósitos que no requieren firmas frecuentes y exigen una seguridad absoluta a largo plazo, como firmas de actualización de software y certificados de autoridades de certificación raíz (CA), en lugar del uso diario en la navegación web.&lt;/p>
&lt;hr>
&lt;h2 id="9-criptografía-basada-en-códigos-el-viejo-gigante-classic-mceliece">9. Criptografía basada en códigos: El viejo gigante Classic McEliece
&lt;/h2>&lt;p>En el proceso de estandarización del NIST, un enfoque importante que aún se está evaluando como candidato final de la Ronda 4 es &lt;strong>Classic McEliece&lt;/strong>, de la &lt;strong>criptografía basada en códigos&lt;/strong>.&lt;/p>
&lt;p>Propuesto por Robert McEliece en 1978, este algoritmo es uno de los más antiguos en la historia de la criptografía de clave pública junto a RSA. Utiliza un código de geometría algebraica llamado &amp;ldquo;Código Goppa&amp;rdquo;, cifra agregando intencionalmente un error (vector de ruido) al mensaje, y se basa en el &amp;ldquo;&lt;strong>Problema de Decodificación de Síndrome (Syndrome Decoding Problem)&lt;/strong>&amp;rdquo; donde solo aquellos con una matriz de comprobación de paridad de código Goppa como clave privada pueden eliminar el error usando una fuerte capacidad de corrección de errores y descifrar el mensaje original.&lt;/p>
$$ \vec{c} = \vec{m} G + \vec{e} $$
&lt;p>
($G$ es la matriz generadora codificada que es la clave pública, $\vec{e}$ es un vector de error de peso $t$)&lt;/p>
&lt;p>Lo asombroso de Classic McEliece es &lt;strong>su abrumador historial, en el que no se ha descubierto ni una sola vulnerabilidad intrínseca, a pesar de que han pasado más de 40 años desde su propuesta y de haber estado expuesto a una intensa investigación criptoanalítica por parte de criptógrafos de todo el mundo&lt;/strong>. Tiene la &amp;ldquo;fuerte seguridad probada por el tiempo&amp;rdquo; más alta entre los PQC.&lt;/p>
&lt;p>Además, tiene la ventaja de que el tamaño del texto cifrado es muy pequeño (solo unos 100-200 bytes). Sin embargo, tiene el defecto fatal de que &lt;strong>el tamaño de la clave pública se mide en megabytes (MB)&lt;/strong>. Incluso en el nivel de seguridad más bajo (equivalente a AES-128), la clave pública es de unos 250 KB y supera 1 MB en niveles más altos.&lt;/p>
&lt;p>Debido a esto, no es aplicable en absoluto para usos donde la clave pública se transmite a través de la red en cada comunicación, como en un handshake TLS. Sin embargo, en casos de uso especiales donde las claves públicas pueden distribuirse previamente en el sistema, como intercambios de claves precompartidas de VPN, codificación rígida de claves públicas en firmware o comunicaciones por satélite, sigue siendo evaluado como una opción extremadamente prometedora debido a su robusta seguridad.&lt;/p>
&lt;hr>
&lt;h2 id="10-comparación-de-rendimiento-y-compensaciones-de-cada-algoritmo-pqc">10. Comparación de rendimiento y compensaciones de cada algoritmo PQC
&lt;/h2>&lt;p>Las características de rendimiento de los principales algoritmos discutidos hasta ahora, en niveles de seguridad típicos (equivalentes a los niveles 2-3 de NIST, niveles AES-128-192), se resumen en la siguiente tabla.&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">Algoritmo (Nombre estándar)&lt;/th>
&lt;th style="text-align:left">Categoría&lt;/th>
&lt;th style="text-align:left">Base matemática&lt;/th>
&lt;th style="text-align:left">Tamaño de clave pública&lt;/th>
&lt;th style="text-align:left">Tamaño de clave privada&lt;/th>
&lt;th style="text-align:left">Tamaño de texto cifrado/firma&lt;/th>
&lt;th style="text-align:left">Tendencia de velocidad&lt;/th>
&lt;th style="text-align:left">Características principales y usos&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">Muy rápido&lt;/td>
&lt;td style="text-align:left">El mejor equilibrio de tamaño de clave y velocidad. Estándar KEM de uso general como 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">Firma&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">Rápido para generar y verificar&lt;/td>
&lt;td style="text-align:left">Implementación simple. Estándar de firma digital de propósito general.&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">Firma&lt;/td>
&lt;td style="text-align:left">Retículo 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">Generación algo lenta, verificación ultrarrápida&lt;/td>
&lt;td style="text-align:left">Tamaño de firma muy pequeño. Pero requiere operaciones de punto flotante. Para sistemas embebidos/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">Firma&lt;/td>
&lt;td style="text-align:left">Función hash&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">Aprox. 17,000 Bytes&lt;/td>
&lt;td style="text-align:left">Generación muy lenta&lt;/td>
&lt;td style="text-align:left">Riesgo casi nulo de fallo matemático. Usos de alta seguridad como certificados raíz.&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">Código Goppa&lt;/td>
&lt;td style="text-align:left">&lt;strong>Aprox. 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">Encapsulación rápida&lt;/td>
&lt;td style="text-align:left">40 años de historial de seguridad. Clave pública enorme. Para entornos donde se puede codificar de forma rígida (hardcode).&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h3 id="entendiendo-las-compensaciones">Entendiendo las compensaciones
&lt;/h3>&lt;p>En el mundo de PQC, no existe un algoritmo único y mágico que sea &amp;ldquo;pequeño en tamaño, rápido en velocidad y perfecto en garantía matemática&amp;rdquo;.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Estándar de Internet (Kyber / Dilithium)&lt;/strong>: Tienen el mejor equilibrio de rendimiento y son los más adecuados para el reemplazo directo (drop-in replacement) desde los actuales RSA/ECC.&lt;/li>
&lt;li>&lt;strong>Conservadurismo definitivo (SPHINCS+)&lt;/strong>: Se elige cuando se desea un seguro absoluto contra un avance matemático en el futuro, incluso a expensas del tamaño de los datos y la velocidad de procesamiento.&lt;/li>
&lt;li>&lt;strong>Para entornos especiales (FALCON / Classic McEliece)&lt;/strong>: Armas especializadas elegidas según las limitaciones del entorno, como cuando el ancho de banda de comunicación es extremadamente estrecho o cuando es posible la distribución previa.&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="11-desafíos-para-el-uso-práctico-y-la-solución-realista-de-la-criptografía-híbrida">11. Desafíos para el uso práctico y la solución realista de la &amp;ldquo;Criptografía híbrida&amp;rdquo;
&lt;/h2>&lt;p>Con la finalización de la estandarización por parte del NIST y la emisión formal de las especificaciones FIPS, la migración a PQC de la infraestructura de TI global (&lt;strong>Migración PQC&lt;/strong>) ha comenzado en serio. El navegador Chrome de Google, iMessage de Apple (protocolo PQ3) y los proveedores de red como Cloudflare ya han implementado el soporte PQC en sus protocolos y han iniciado su funcionamiento real.&lt;/p>
&lt;p>Sin embargo, cambiar por completo y de forma repentina a nuevos algoritmos criptográficos conlleva un riesgo muy alto. Si un matemático genial descubre un método de ataque fatal contra la criptografía de retículos como Kyber (un defecto matemático resoluble incluso por computadoras clásicas) en unos años, todo el sistema que dependa de él quedará expuesto instantáneamente.&lt;/p>
&lt;p>Un enfoque realista y recomendado para mitigar este riesgo de incertidumbre es la &amp;ldquo;&lt;strong>Criptografía híbrida (Hybrid Cryptography)&lt;/strong>&amp;rdquo;.&lt;/p>
&lt;p>En la criptografía híbrida, el intercambio de claves se realiza utilizando tanto la criptografía clásica actual con un largo historial (ej., criptografía de curva elíptica como X25519) como la nueva PQC (ej., Kyber768) simultáneamente. Se genera un componente de clave simétrica de forma independiente con cada algoritmo, y finalmente se combinan los dos componentes utilizando una función de derivación de claves (KDF) segura para generar el secreto maestro final.&lt;/p>
&lt;div class="mermaid">graph TD
A["Cliente"] -->|① Enviar clave pública de X25519 + clave pública de Kyber| B["Servidor"]
B -->|② Responder con clave compartida de X25519 + texto cifrado encapsulado de Kyber| A
A --> C{"Derivación del secreto maestro (KDF)"}
B --> C
C -->|Entrada: (Clave simétrica de X25519) || (Clave simétrica de Kyber)| D["Clave de comunicación segura (AES-256 / ChaCha20)"]
D -->|"Resistente tanto a amenazas cuánticas como a vulnerabilidades clásicas"| E["Comunicación segura cifrada híbrida (TLS 1.3)"]&lt;/div>
&lt;p>Con esto, se logra una robusta seguridad en dos niveles: &amp;ldquo;Incluso si las computadoras cuánticas se vuelven realidad y ECC es descifrado, Kyber protege la comunicación&amp;rdquo; y, por el contrario, &amp;ldquo;Incluso si se encuentra un defecto matemático desconocido en Kyber, ECC protege la comunicación&amp;rdquo;. Un ejemplo típico es el borrador &lt;strong>X25519MLKEM768 (anteriormente X25519Kyber768)&lt;/strong> que está siendo estandarizado por el IETF, y la comunicación entre los navegadores web actuales y los servidores de última generación se realiza utilizando precisamente este método híbrido.&lt;/p>
&lt;p>Además, el concepto de &lt;strong>Crypto Agility (Agilidad criptográfica)&lt;/strong>, que consiste en construir en el diseño del sistema &amp;ldquo;una arquitectura que no dependa excesivamente de un algoritmo criptográfico específico y pueda cambiar rápidamente a otro algoritmo (por ejemplo, de Kyber a McEliece, de Dilithium a SPHINCS+) en caso de que el algoritmo falle&amp;rdquo;, se convierte en un requisito indispensable para el desarrollo de sistemas en el futuro.&lt;/p>
&lt;hr>
&lt;h2 id="12-conclusión-un-nuevo-horizonte-para-la-tecnología-criptográfica">12. Conclusión: Un nuevo horizonte para la tecnología criptográfica
&lt;/h2>&lt;p>Irónicamente, la computadora cuántica, la tecnología soñada de la humanidad, se ha convertido en la mayor amenaza para romper las barreras matemáticas del &amp;ldquo;problema de la factorización de enteros&amp;rdquo; y el &amp;ldquo;problema del logaritmo discreto&amp;rdquo; en los que hemos depositado nuestra confianza durante muchos años. Sin embargo, los criptógrafos de todo el mundo no han cedido ante esto, sino que han explorado dominios matemáticos multidimensionales más complejos y profundos como la teoría de retículos, árboles de funciones hash y códigos de corrección de errores, construyendo un nuevo muro defensivo llamado Criptografía Poscuántica (PQC).&lt;/p>
&lt;p>La finalización de la estandarización de FIPS 203 (ML-KEM), FIPS 204 (ML-DSA) y FIPS 205 (SLH-DSA) por parte del NIST no es la meta. Es solo el primer paso de un viaje épico llamado migración PQC que durará décadas. Para los ingenieros de software y arquitectos de sistemas, cómo adaptar de manera óptima &amp;ldquo;el aumento del tamaño de la clave&amp;rdquo; y el &amp;ldquo;cambio en el costo computacional&amp;rdquo; introducidos por estos nuevos algoritmos a los protocolos de red y sistemas será el gran desafío técnico del futuro.&lt;/p>
&lt;p>La batalla entre las computadoras cuánticas y la criptografía es el campo emocionante donde la exploración matemática de la humanidad y la evolución de la tecnología se cruzan más intensamente. A través de este artículo, esperamos que haya comprendido profundamente la hermosa teoría matemática detrás del PQC y los sorprendentes mecanismos de cada algoritmo que darán forma al futuro de la ciberseguridad.&lt;/p>
&lt;hr>
&lt;p>&lt;em>Referencias:&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>El día en que los ordenadores cuánticos se hagan realidad: El estado actual en 2026</title><link>http://kenji.blog/es/p/quantum-computing-2026-current-status/</link><pubDate>Fri, 11 Sep 2026 06:00:00 +0900</pubDate><guid>http://kenji.blog/es/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 El día en que los ordenadores cuánticos se hagan realidad: El estado actual en 2026" />&lt;h2 id="1-introducción-en-2026-hasta-dónde-han-llegado-los-ordenadores-cuánticos">1. Introducción: En 2026, ¿hasta dónde han llegado los ordenadores cuánticos?
&lt;/h2>&lt;p>En la actualidad, en 2026, la computación cuántica ha experimentado un cambio decisivo de ser un antiguo &amp;ldquo;sueño teórico&amp;rdquo; a una &amp;ldquo;realidad de ingeniería&amp;rdquo;. A medida que los límites de los dispositivos &lt;strong>NISQ (Noisy Intermediate-Scale Quantum)&lt;/strong>, que eran la corriente principal hasta hace unos años, se han vuelto evidentes, las instituciones de investigación y los gigantes tecnológicos de todo el mundo han cambiado de rumbo hacia la realización de la &amp;ldquo;Computación Cuántica Tolerante a Fallos (FTQC: Fault-Tolerant Quantum Computing)&amp;rdquo;.&lt;/p>
&lt;p>En este artículo, profundizaremos en el estado actual de los ordenadores cuánticos, intercalando los últimos avances de 2026. En particular, explicaremos en detalle la corrección de errores cuánticos (código de superficie), la diferencia entre cúbits físicos y lógicos, el progreso de la computación cuántica topológica y la vanguardia de los métodos superconductores y de trampa de iones.&lt;/p>
&lt;hr>
&lt;h2 id="2-conceptos-básicos-del-estado-cuántico-y-la-fidelidad">2. Conceptos básicos del estado cuántico y la fidelidad
&lt;/h2>&lt;p>El cúbit (Qubit), que es la unidad básica de un ordenador cuántico, a diferencia de un bit clásico (0 o 1), puede tomar un estado de superposición (Superposition) de 0 y 1. El estado de un solo cúbit se representa como un vector en el espacio de Hilbert de la siguiente manera:&lt;/p>
$$
|\psi\rangle = \alpha|0\rangle + \beta|1\rangle
$$
&lt;p>Aquí, $\alpha$ y $\beta$ son amplitudes de probabilidad complejas y satisfacen la siguiente condición de normalización:&lt;/p>
$$
|\alpha|^2 + |\beta|^2 = 1
$$
&lt;p>Una métrica extremadamente importante para medir el rendimiento de la computación cuántica es la &lt;strong>fidelidad (Fidelity)&lt;/strong>. La fidelidad $F$ entre el estado cuántico ideal $|\psi\rangle$ y la matriz de densidad real $\rho$ que se ha degradado a un estado mixto debido al ruido se define de la siguiente manera:&lt;/p>
$$
F(\rho, |\psi\rangle) = \langle \psi | \rho | \psi \rangle
$$
&lt;p>En la actualidad, en 2026, la fidelidad de las puertas de 2 cúbits (por ejemplo, las puertas CNOT o CZ) ha superado constantemente la barrera del &lt;strong>99,99%&lt;/strong> (los llamados &amp;ldquo;cuatro nueves&amp;rdquo;) utilizando el método superconductor. Esta es una cifra que supera con creces el umbral de corrección de errores mediante el código de superficie (aproximadamente el 99%), siendo uno de los mayores avances hacia su aplicación práctica.&lt;/p>
&lt;hr>
&lt;h2 id="3-los-límites-de-la-era-nisq-y-el-cambio-de-paradigma-hacia-ftqc">3. Los límites de la era NISQ y el cambio de paradigma hacia FTQC
&lt;/h2>&lt;p>Desde finales de la década de 2010 hasta principios de la de 2020 fue la era de NISQ (Noisy Intermediate-Scale Quantum), dispositivos con decenas a cientos de cúbits que no tenían corrección de errores. Sin embargo, NISQ tenía límites claros.&lt;/p>
&lt;p>A medida que aumenta la profundidad (Depth) del circuito, los errores se acumulan exponencialmente, lo que hace imposible obtener resultados de cálculo significativos. La probabilidad general de éxito $P_{success}$ a una profundidad de circuito $D$ decae en relación con la fidelidad $f$ de una sola puerta y el número de puertas $N$ de la siguiente manera:&lt;/p>
$$
P_{success} \approx f^N
$$
&lt;p>Si se aplican 1000 puertas con $f = 0.99$, resultará en $0.99^{1000} \approx 4.3 \times 10^{-5}$, y el resultado quedará casi sepultado en el ruido aleatorio. Por esta razón, en 2026, los recursos se concentran en la generación de &lt;strong>cúbits lógicos (Logical Qubit)&lt;/strong> en lugar de escalar directamente los algoritmos NISQ (como VQE y QAOA).&lt;/p>
&lt;hr>
&lt;h2 id="4-corrección-de-errores-cuánticos-y-cúbits-lógicos-la-vanguardia-del-código-de-superficie">4. Corrección de errores cuánticos y cúbits lógicos: La vanguardia del código de superficie
&lt;/h2>&lt;p>La corrección de errores cuánticos (QEC: Quantum Error Correction) es una tecnología que codifica múltiples &amp;ldquo;cúbits físicos&amp;rdquo; para crear un único &amp;ldquo;cúbit lógico&amp;rdquo; y detecta y corrige errores. Actualmente, el más prometedor es el &lt;strong>código de superficie (Surface Code)&lt;/strong>.&lt;/p>
&lt;h3 id="41-estructura-del-código-de-superficie-surface-code">4.1 Estructura del código de superficie (Surface Code)
&lt;/h3>&lt;p>En el código de superficie, los cúbits se organizan en una cuadrícula bidimensional. Los cúbits de datos (que contienen la información real) y los cúbits de medida (para medir el síndrome) están dispuestos en un patrón de tablero de ajedrez.&lt;/p>
&lt;div class="mermaid">graph TD
A["Cúbit de datos (D1)"] --- B["Cúbit de medida (M1)"]
B --- C["Cúbit de datos (D2)"]
C --- D["Cúbit de medida (M2)"]
D --- E["Cúbit de datos (D3)"]
B --- F["Cúbit de datos (D4)"]
D --- G["Cúbit de datos (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>Utilizando los operadores estabilizadores $S_x$ y $S_z$, se monitorizan constantemente los cambios de bit (errores X) y los cambios de fase (errores Z).&lt;/p>
$$
S_x = \prod_{i \in \text{star}} X_i, \quad S_z = \prod_{j \in \text{plaquette}} Z_j
$$
&lt;p>Un avance significativo en 2026 es que se ha superado por completo el &amp;ldquo;punto de equilibrio (Break-even point)&amp;rdquo;. Es decir, el ruido eliminado por la corrección de errores es ahora mayor que el ruido causado por los circuitos adicionales para realizar la corrección de errores, y la vida útil del cúbit lógico supera a la del cúbit físico en varios órdenes de magnitud.&lt;/p>
&lt;h3 id="42-el-ciclo-de-corrección-de-errores-cuánticos">4.2 El ciclo de corrección de errores cuánticos
&lt;/h3>&lt;p>La corrección de errores funciona como un bucle de retroalimentación continuo.&lt;/p>
&lt;div class="mermaid">sequenceDiagram
participant D as "Cúbits de datos"
participant M as "Cúbits de medida/ancila"
participant C as "Controlador clásico"
loop "Ciclo de extracción de síndrome (aprox. 1 microseg)"
D->>M: "Entrelazar (CNOT/CZ)"
M->>C: "Medir estado (Síndrome)"
C->>C: "Decodificar síndrome (ej. Minimum Weight Perfect Matching)"
C-->>D: "Aplicar corrección de Pauli (si es necesario)"
end&lt;/div>
&lt;p>Hoy en día, se ha establecido la tecnología para ejecutar este proceso de decodificación clásica (análisis del síndrome) en nanosegundos utilizando FPGAs y ASICs dedicados, y la corrección de errores en tiempo real ha entrado en la fase práctica.&lt;/p>
&lt;hr>
&lt;h2 id="5-evolución-de-la-arquitectura-de-hardware-edición-2026">5. Evolución de la arquitectura de hardware (Edición 2026)
&lt;/h2>&lt;p>El hardware cuántico en 2026 está evolucionando principalmente a lo largo de tres ejes: &amp;ldquo;método superconductor&amp;rdquo;, &amp;ldquo;método de trampa de iones&amp;rdquo; y &amp;ldquo;método topológico&amp;rdquo;.&lt;/p>
&lt;h3 id="51-integración-de-cúbits-superconductores">5.1 Integración de cúbits superconductores
&lt;/h3>&lt;p>El método superconductor es un campo liderado por IBM y Google, donde predominan los cúbits transmon (Transmon) utilizando uniones Josephson. En 2026, se han hecho realidad megachips que integran entre miles y decenas de miles de cúbits físicos en un solo chip.&lt;/p>
&lt;p>Lo que es especialmente destacable es el establecimiento de &lt;strong>comunicaciones cuánticas entre módulos (Quantum Interconnects)&lt;/strong>. La teleportación cuántica entre chips utilizando fotones de microondas se ha implementado a nivel comercial, permitiendo eludir las restricciones de tamaño de un solo refrigerador de dilución.&lt;/p>
&lt;h3 id="52-escalado-bidimensional-e-interconexiones-ópticas-de-trampas-de-iones">5.2 Escalado bidimensional e interconexiones ópticas de trampas de iones
&lt;/h3>&lt;p>El método de trampa de iones (liderado por empresas como Quantinuum e IonQ) utiliza los estados de energía internos de los iones suspendidos en el vacío como cúbits. En comparación con el método superconductor, tiene la ventaja de tiempos de coherencia T1/T2 extremadamente largos y permite conectividad de todos con todos (All-to-All Connectivity).&lt;/p>
&lt;p>Los avances de 2026 son la bidimensionalización de la arquitectura QCCD (Quantum Charge Coupled Device) y la generación de entrelazamiento de alta velocidad entre múltiples trampas mediante interconexiones fotónicas. Como resultado, la &amp;ldquo;baja velocidad de las puertas&amp;rdquo; y la &amp;ldquo;escalabilidad&amp;rdquo;, que eran las debilidades de la trampa de iones, se han mejorado drásticamente.&lt;/p>
&lt;h3 id="53-computación-cuántica-topológica-control-de-anyones">5.3 Computación cuántica topológica: Control de anyones
&lt;/h3>&lt;p>La &lt;strong>computación cuántica topológica&lt;/strong>, considerada durante mucho tiempo una existencia teórica, finalmente ha entrado en la fase de demostración experimental en 2026. Este método, promovido por empresas como Microsoft, utiliza anyones no abelianos (Non-Abelian Anyons) llamados &amp;ldquo;modos cero de Majorana (Majorana Zero Modes)&amp;rdquo;.&lt;/p>
&lt;p>Las puertas cuánticas se ejecutan mediante una operación llamada &amp;ldquo;trenzado (Braiding)&amp;rdquo;, que intercambia las posiciones de las partículas de los anyones.&lt;/p>
$$
|\psi_{final}\rangle = B_{ij} |\psi_{initial}\rangle
$$
&lt;p>Donde $B_{ij}$ es el operador de trenzado. El método topológico es inherentemente resistente al ruido ambiental (tolerancia a errores a nivel de hardware) porque la preservación de la información no depende de los estados locales de las partículas, sino de la topología global de los &amp;ldquo;nudos&amp;rdquo;. En 2026, se confirmó la generación de un cúbit lógico topológico de alta fidelidad por primera vez en el mundo, atrayendo la atención como un poderoso atajo hacia FTQC.&lt;/p>
&lt;hr>
&lt;h2 id="6-hoja-de-ruta-y-perspectivas-para-la-aplicación-práctica">6. Hoja de ruta y perspectivas para la aplicación práctica
&lt;/h2>&lt;p>Para que los ordenadores cuánticos demuestren verdaderamente la &lt;strong>supremacía cuántica (Quantum Advantage)&lt;/strong> superando a los ordenadores clásicos (superordenadores) en &amp;ldquo;cálculos químicos&amp;rdquo;, &amp;ldquo;ciencia de materiales&amp;rdquo;, &amp;ldquo;modelado financiero&amp;rdquo;, etc., se necesitan miles de cúbits lógicos.&lt;/p>
&lt;div class="mermaid">gantt
title "Hoja de ruta de la computación cuántica (Revisada en 2026)"
dateFormat YYYY
axisFormat %Y
section "Era NISQ"
"Cúbits ruidosos (&lt;1000)" :done, 2018, 2024
section "FTQC temprano"
"Demostración del punto de equilibrio" :done, 2024, 2026
"Cientos de cúbits lógicos" :active, 2026, 2028
section "FTQC a gran escala"
"1000+ Cúbits lógicos (Aplicaciones comerciales)" : 2028, 2030
"Ordenador cuántico tolerante a fallos universal" : 2030, 2035&lt;/div>
&lt;h3 id="61-retos-actuales-y-el-futuro">6.1 Retos actuales y el futuro
&lt;/h3>&lt;p>El mayor reto en 2026 es la capacidad de enfriamiento del enorme criostato (refrigerador de dilución) para mantener temperaturas ultrabajas, y el cableado (cuello de botella de E/S) que conecta el equipo de control a temperatura ambiente con el chip cuántico a temperatura ultrabaja. En respuesta a esto, el desarrollo de chips controladores CMOS (Cryo-CMOS) que funcionan en un entorno de temperatura ultrabaja avanza a un ritmo rápido.&lt;/p>
&lt;h3 id="conclusión">Conclusión
&lt;/h3>&lt;p>2026 será registrado en la historia de la computación cuántica como &amp;ldquo;el año inaugural del escalado de los cúbits lógicos&amp;rdquo;. Con la demostración de algoritmos de corrección de errores, la modularización del hardware y el rápido avance de los enfoques topológicos, &amp;ldquo;el día en que se vuelvan prácticos&amp;rdquo; ya no es un futuro lejano, sino que puede ser visto como un hito concreto dentro de los próximos años. Para los desarrolladores de algoritmos cuánticos y las empresas, ahora es el momento de invertir seriamente en la resolución de problemas nativos cuánticos.&lt;/p>
&lt;hr>
&lt;p>&lt;em>Este artículo se basa en los últimos trabajos de investigación en computación cuántica y tendencias de la industria en 2026.&lt;/em>&lt;/p></description></item></channel></rss>