<?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/fr/categories/quantum-computing/</link><description>Recent content in Quantum Computing on kenji.blog</description><generator>Hugo -- gohugo.io</generator><language>fr</language><copyright>kenjinote</copyright><lastBuildDate>Fri, 11 Sep 2026 20:00:00 +0900</lastBuildDate><atom:link href="http://kenji.blog/fr/categories/quantum-computing/index.xml" rel="self" type="application/rss+xml"/><item><title>Introduction à la programmation quantique avec Qiskit</title><link>http://kenji.blog/fr/p/qiskit-quantum-programming-intro/</link><pubDate>Fri, 11 Sep 2026 20:00:00 +0900</pubDate><guid>http://kenji.blog/fr/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 Introduction à la programmation quantique avec Qiskit" />&lt;h2 id="1-introduction">1. Introduction
&lt;/h2>&lt;p>Les ordinateurs modernes (ordinateurs classiques) ont radicalement changé nos vies et soutiennent tous les aspects de la société grâce à leur puissance de calcul avancée. Cependant, il est connu que pour certains problèmes spécifiques (par exemple, la factorisation de très grands nombres, la simulation de structures moléculaires complexes, les problèmes d&amp;rsquo;optimisation, etc.), même les superordinateurs de pointe actuels nécessiteraient un temps supérieur à l&amp;rsquo;âge de l&amp;rsquo;univers.&lt;/p>
&lt;p>Les &lt;strong>ordinateurs quantiques (Quantum Computer)&lt;/strong> ont le potentiel de briser ces &amp;ldquo;limites des ordinateurs classiques&amp;rdquo;. En utilisant les propriétés étranges de la mécanique quantique (superposition et intrication quantique) comme ressources de calcul, on pense que certains problèmes peuvent être résolus de manière considérablement plus rapide.&lt;/p>
&lt;p>Dans cet article, nous ferons notre premier pas dans le monde de la programmation quantique en utilisant &lt;strong>Qiskit&lt;/strong>, un framework d&amp;rsquo;informatique quantique open source fourni par IBM. Il s&amp;rsquo;agit d&amp;rsquo;un guide d&amp;rsquo;introduction très détaillé couvrant tout le processus, allant des bases de la physique et des mathématiques jusqu&amp;rsquo;à l&amp;rsquo;écriture de code en Python et l&amp;rsquo;exécution de circuits quantiques sur un simulateur.&lt;/p>
&lt;hr>
&lt;h2 id="2-fondements-physiques-et-mathématiques-du-calcul-quantique">2. Fondements physiques et mathématiques du calcul quantique
&lt;/h2>&lt;p>Pour comprendre la programmation quantique, vous devez d&amp;rsquo;abord comprendre les concepts de base de la mécanique quantique. Nous expliquons ici trois piliers importants : les qubits, la superposition et l&amp;rsquo;intrication quantique.&lt;/p>
&lt;h3 id="21-bits-classiques-et-bits-quantiques-qubit">2.1 Bits classiques et bits quantiques (Qubit)
&lt;/h3>&lt;p>L&amp;rsquo;unité d&amp;rsquo;information d&amp;rsquo;un ordinateur classique est le &amp;ldquo;bit&amp;rdquo;. Un bit prend toujours l&amp;rsquo;un des deux états : &lt;code>0&lt;/code> ou &lt;code>1&lt;/code>.&lt;/p>
&lt;p>D&amp;rsquo;autre part, la plus petite unité d&amp;rsquo;information d&amp;rsquo;un ordinateur quantique est appelée &lt;strong>bit quantique (Qubit : Quantum bit)&lt;/strong>. Un qubit peut non seulement prendre les états &lt;code>0&lt;/code> et &lt;code>1&lt;/code>, mais il peut également &lt;strong>maintenir ces deux états en même temps&lt;/strong>.&lt;/p>
&lt;p>Mathématiquement, l&amp;rsquo;état d&amp;rsquo;un qubit $|\psi\rangle$ s&amp;rsquo;exprime comme une combinaison linéaire (superposition) des états de base $|0\rangle$ et $|1\rangle$.&lt;/p>
$$
|\psi\rangle = \alpha|0\rangle + \beta|1\rangle
$$
&lt;p>Ici, $\alpha$ et $\beta$ sont des nombres complexes, représentant respectivement l&amp;rsquo;amplitude de probabilité d&amp;rsquo;observer les états $|0\rangle$ et $|1\rangle$. D&amp;rsquo;après les principes de base de la mécanique quantique, la somme des probabilités doit être égale à 1, ce qui satisfait à la condition de normalisation suivante :&lt;/p>
$$
|\alpha|^2 + |\beta|^2 = 1
$$
&lt;p>En d&amp;rsquo;autres termes, lorsque ce qubit est &amp;ldquo;mesuré (observé)&amp;rdquo;, la probabilité d&amp;rsquo;obtenir $|0\rangle$ est $|\alpha|^2$ et la probabilité d&amp;rsquo;obtenir $|1\rangle$ est $|\beta|^2$. La différence cruciale avec un bit classique est que l&amp;rsquo;état n&amp;rsquo;est déterminé que de manière probabiliste avant la mesure.&lt;/p>
&lt;div class="mermaid">graph LR
A["Bit classique (Classical Bit)"] --> B["État défini : 0 ou 1"]
C["Qubit (Qubit)"] --> D["Superposition : à la fois 0 et 1"]
D --> E["L'état est déterminé de manière probabiliste par la mesure"]&lt;/div>
&lt;h3 id="22-superposition-superposition">2.2 Superposition (Superposition)
&lt;/h3>&lt;p>Comme mentionné précédemment, l&amp;rsquo;état dans lequel $|0\rangle$ et $|1\rangle$ sont mélangés est appelé &lt;strong>superposition (Superposition)&lt;/strong>.&lt;/p>
&lt;p>Par exemple, si un seul qubit est dans un état de superposition parfaitement égale, alors $\alpha = \frac{1}{\sqrt{2}}$ et $\beta = \frac{1}{\sqrt{2}}$.&lt;/p>
$$
|\psi\rangle = \frac{1}{\sqrt{2}}|0\rangle + \frac{1}{\sqrt{2}}|1\rangle
$$
&lt;p>Lorsque cet état est mesuré, $|0\rangle$ et $|1\rangle$ sont observés chacun avec une probabilité de 50%.
Si vous avez deux qubits, vous pouvez créer une superposition de quatre états : $|00\rangle, |01\rangle, |10\rangle, |11\rangle$. Si vous avez $n$ qubits, vous pouvez exprimer $2^n$ états simultanément, ce qui est l&amp;rsquo;une des sources de la capacité de traitement parallèle des ordinateurs quantiques.&lt;/p>
&lt;h3 id="23-intrication-quantique-entanglement">2.3 Intrication quantique (Entanglement)
&lt;/h3>&lt;p>La propriété la plus puissante et la plus mystérieuse du calcul quantique est &lt;strong>l&amp;rsquo;intrication quantique (Entanglement)&lt;/strong>. Ce phénomène, appelé &amp;ldquo;action fantôme à distance&amp;rdquo; par Einstein, est la propriété selon laquelle deux ou plusieurs qubits sont si fortement liés que lorsque l&amp;rsquo;état de l&amp;rsquo;un d&amp;rsquo;eux est déterminé, l&amp;rsquo;état de l&amp;rsquo;autre est instantanément déterminé, quelle que soit la distance physique qui les sépare.&lt;/p>
&lt;p>L&amp;rsquo;un des états d&amp;rsquo;intrication quantique les plus célèbres, l&amp;rsquo;« état de Bell (Bell State) », l&amp;rsquo;état $\Phi^+$, est exprimé comme suit :&lt;/p>
$$
|\Phi^+\rangle = \frac{|00\rangle + |11\rangle}{\sqrt{2}}
$$
&lt;p>Dans cet état, les états $|01\rangle$ ou $|10\rangle$ n&amp;rsquo;existent pas. Par conséquent, si le premier qubit est mesuré et s&amp;rsquo;avère être $|0\rangle$, il est certain que le second est $|0\rangle$ sans même avoir besoin de le mesurer. Inversement, si le premier est $|1\rangle$, le second sera inévitablement $|1\rangle$.&lt;/p>
&lt;hr>
&lt;h2 id="3-portes-logiques-quantiques-quantum-logic-gates">3. Portes logiques quantiques (Quantum Logic Gates)
&lt;/h2>&lt;p>Tout comme les ordinateurs classiques utilisent des portes logiques telles que AND, OR et NOT pour effectuer des calculs, les ordinateurs quantiques utilisent des &lt;strong>portes quantiques&lt;/strong> pour manipuler l&amp;rsquo;état des qubits. L&amp;rsquo;état quantique étant un vecteur, une porte quantique est représentée par une &amp;ldquo;matrice unitaire&amp;rdquo; agissant sur ce vecteur.&lt;/p>
&lt;h3 id="31-portes-de-pauli-pauli-x-y-z">3.1 Portes de Pauli (Pauli-X, Y, Z)
&lt;/h3>&lt;p>Les portes de Pauli sont des opérations de base sur un seul qubit.&lt;/p>
&lt;p>&lt;strong>・Porte Pauli-X (Porte NOT)&lt;/strong>
Équivalent à la porte NOT classique. Elle inverse $|0\rangle$ en $|1\rangle$, et $|1\rangle$ en $|0\rangle$. (Rotation de 180 degrés autour de l&amp;rsquo;axe X sur la sphère de Bloch)&lt;/p>
$$
X = \begin{pmatrix} 0 &amp; 1 \\ 1 &amp; 0 \end{pmatrix}
$$
&lt;p>&lt;strong>・Porte Pauli-Y&lt;/strong>
Effectue une rotation de 180 degrés autour de l&amp;rsquo;axe Y. Elle a pour effet d&amp;rsquo;inverser à la fois la phase et le bit.&lt;/p>
$$
Y = \begin{pmatrix} 0 &amp; -i \\ i &amp; 0 \end{pmatrix}
$$
&lt;p>&lt;strong>・Porte Pauli-Z (Porte d&amp;rsquo;inversion de phase)&lt;/strong>
Laisse l&amp;rsquo;état $|0\rangle$ tel quel et inverse la phase de l&amp;rsquo;état $|1\rangle$ (en le multipliant par $-1$). (Rotation de 180 degrés autour de l&amp;rsquo;axe Z)&lt;/p>
$$
Z = \begin{pmatrix} 1 &amp; 0 \\ 0 &amp; -1 \end{pmatrix}
$$
&lt;h3 id="32-porte-de-hadamard-hadamard-gate">3.2 Porte de Hadamard (Hadamard Gate)
&lt;/h3>&lt;p>La porte de Hadamard (porte H) est une porte extrêmement importante qui convertit un état défini ($|0\rangle$ ou $|1\rangle$) en un état superposé.&lt;/p>
$$
H = \frac{1}{\sqrt{2}}
\begin{pmatrix}
1 &amp; 1 \\
1 &amp; -1
\end{pmatrix}
$$
&lt;p>L&amp;rsquo;application de la porte H à $|0\rangle$ donne $|+\rangle$, qui est un état de superposition égale.&lt;/p>
$$
H|0\rangle = \frac{1}{\sqrt{2}}|0\rangle + \frac{1}{\sqrt{2}}|1\rangle = |+\rangle
$$
&lt;h3 id="33-portes-de-phase-phase-gates">3.3 Portes de phase (Phase Gates)
&lt;/h3>&lt;p>La porte de phase est une généralisation de la porte Z, qui fait tourner la phase de l&amp;rsquo;état $|1\rangle$ d&amp;rsquo;un angle spécifié $\theta$.&lt;/p>
$$
P(\theta) = \begin{pmatrix} 1 &amp; 0 \\ 0 &amp; e^{i\theta} \end{pmatrix}
$$
&lt;p>Les représentantes typiques sont la porte S ($\theta = \pi/2$) et la porte T ($\theta = \pi/4$).&lt;/p>
&lt;h3 id="34-porte-cnot-controlled-not-gate">3.4 Porte CNOT (Controlled-NOT Gate)
&lt;/h3>&lt;p>La porte CNOT (porte CX) est une porte qui opère entre deux qubits et est essentielle pour générer l&amp;rsquo;intrication quantique. Elle se compose d&amp;rsquo;un &amp;ldquo;bit de contrôle (Control)&amp;rdquo; et d&amp;rsquo;un &amp;ldquo;bit cible (Target)&amp;rdquo;.&lt;/p>
&lt;p>Elle n&amp;rsquo;applique la porte X (opération NOT) au bit cible que si le bit de contrôle est $|1\rangle$, et ne fait rien si le bit de contrôle est $|0\rangle$.&lt;/p>
$$
CNOT = \begin{pmatrix}
1 &amp; 0 &amp; 0 &amp; 0 \\
0 &amp; 1 &amp; 0 &amp; 0 \\
0 &amp; 0 &amp; 0 &amp; 1 \\
0 &amp; 0 &amp; 1 &amp; 0
\end{pmatrix}
$$
&lt;hr>
&lt;h2 id="4-bases-de-qiskit-et-configuration-de-lenvironnement">4. Bases de Qiskit et configuration de l&amp;rsquo;environnement
&lt;/h2>&lt;p>À partir de là, nous allons écrire des programmes quantiques en utilisant Python et Qiskit.&lt;/p>
&lt;h3 id="41-quest-ce-que-qiskit-">4.1 Qu&amp;rsquo;est-ce que Qiskit ?
&lt;/h3>&lt;p>&lt;strong>Qiskit&lt;/strong> est un kit de développement logiciel (SDK) d&amp;rsquo;informatique quantique open source développé par IBM Quantum. En utilisant Python, vous pouvez construire intuitivement des circuits quantiques et les exécuter sur un simulateur local ou sur de véritables ordinateurs quantiques IBM via le cloud.&lt;/p>
&lt;h3 id="42-méthode-dinstallation">4.2 Méthode d&amp;rsquo;installation
&lt;/h3>&lt;p>Pour utiliser Qiskit, vous avez besoin d&amp;rsquo;un environnement Python. Installez Qiskit et les packages associés (simulateurs, bibliothèques de dessin) à l&amp;rsquo;aide de la commande suivante.&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-flux-de-base-de-la-programmation">4.3 Flux de base de la programmation
&lt;/h3>&lt;p>La programmation quantique avec Qiskit se déroule principalement selon les étapes suivantes.&lt;/p>
&lt;div class="mermaid">graph TD
A["1. Construction du circuit (Build)"] --> B["2. Compilation / Transpilation (Compile)"]
B --> C["3. Exécution (Execute)"]
C --> D["4. Analyse et visualisation des résultats (Analyze)"]&lt;/div>
&lt;ol>
&lt;li>&lt;strong>Construction du circuit&lt;/strong> : Créez un objet &lt;code>QuantumCircuit&lt;/code> et ajoutez-y des portes.&lt;/li>
&lt;li>&lt;strong>Compilation&lt;/strong> : Optimisez le circuit pour le backend d&amp;rsquo;exécution (machine réelle ou simulateur).&lt;/li>
&lt;li>&lt;strong>Exécution&lt;/strong> : Envoyez le job au backend et obtenez les résultats.&lt;/li>
&lt;li>&lt;strong>Analyse&lt;/strong> : Tracez des histogrammes des résultats de mesure, etc.&lt;/li>
&lt;/ol>
&lt;hr>
&lt;h2 id="5-pratique--construction-dun-circuit-pour-créer-un-état-de-bell-intrication-quantique">5. Pratique : Construction d&amp;rsquo;un circuit pour créer un état de Bell (intrication quantique)
&lt;/h2>&lt;p>Essayons de créer « l&amp;rsquo;intrication quantique (état de Bell) » apprise en théorie avec Qiskit. L&amp;rsquo;état cible est $|\Phi^+\rangle = \frac{|00\rangle + |11\rangle}{\sqrt{2}}$.&lt;/p>
&lt;h3 id="51-conception-du-circuit">5.1 Conception du circuit
&lt;/h3>&lt;p>Pour créer un état de Bell, suivez ces étapes :&lt;/p>
&lt;ol>
&lt;li>Préparez deux qubits (l&amp;rsquo;état initial est $|0\rangle$ pour les deux).&lt;/li>
&lt;li>Appliquez une porte de Hadamard (H) au premier qubit pour le mettre dans un état superposé.&lt;/li>
&lt;li>Appliquez une porte CNOT avec le premier qubit comme &amp;ldquo;bit de contrôle&amp;rdquo; et le deuxième qubit comme &amp;ldquo;bit cible&amp;rdquo;.&lt;/li>
&lt;li>Effectuez une mesure (Measure) pour lire les résultats.&lt;/li>
&lt;/ol>
&lt;h3 id="52-implémentation-du-code-pythonqiskit">5.2 Implémentation du code Python/Qiskit
&lt;/h3>&lt;p>Examinons le code réel.&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. Initialisation du circuit&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Créer un circuit quantique avec 2 qubits et 2 bits classiques&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. Application de la porte H&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Appliquer la porte de Hadamard au qubit 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. Application de la porte CNOT&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Appliquer CNOT avec q0 comme bit de contrôle et q1 comme bit cible&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. Mesure&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Mesurer les qubits 0 et 1 et les écrire respectivement dans les bits classiques 0 et 1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">qc&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">measure&lt;/span>&lt;span class="p">([&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">],&lt;/span> &lt;span class="p">[&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">])&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1"># Dessiner le diagramme du circuit (en utilisant 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>Lorsque vous exécutez ce code, le schéma de circuit quantique suivant s&amp;rsquo;affiche en art ASCII sur la console.&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> représente la porte de Hadamard, la combinaison de &lt;code>■&lt;/code> et &lt;code>X&lt;/code> représente la porte CNOT, et &lt;code>M&lt;/code> représente la mesure.&lt;/p>
&lt;h3 id="53-exécution-sur-le-simulateur-et-interprétation-des-résultats">5.3 Exécution sur le simulateur et interprétation des résultats
&lt;/h3>&lt;p>Ensuite, nous allons exécuter ce circuit sur le simulateur hautes performances d&amp;rsquo;IBM &lt;code>Aer&lt;/code> et vérifier les résultats.&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"># Obtenir le backend du simulateur 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"># Transpiler (optimiser) le circuit pour le simulateur&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"># Exécuter le circuit (ici, exécution de 1000 tirs)&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"># Obtenir le résultat&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"># Obtenir le nombre d&amp;#39;observations (counts) des états&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">Résultat de mesure :&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"># Tracer l&amp;#39;histogramme&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>Interprétation des résultats&lt;/strong>&lt;/p>
&lt;p>La sortie de la console devrait ressembler à ceci :
&lt;code>Résultat de mesure : {'00': 495, '11': 505}&lt;/code>
(* Les probabilités étant aléatoires, les valeurs fluctueront légèrement à chaque exécution)&lt;/p>
&lt;p>Dans un environnement de simulation idéal, les résultats de mesure pour &lt;code>00&lt;/code> et &lt;code>11&lt;/code> sont observés à environ 50 % chacun, tandis que &lt;code>01&lt;/code> et &lt;code>10&lt;/code> ne sont pas du tout observés.
Cela correspond parfaitement à la prédiction théorique de l&amp;rsquo;état de Bell $|\Phi^+\rangle = \frac{|00\rangle + |11\rangle}{\sqrt{2}}$ que nous avons créé. &amp;ldquo;L&amp;rsquo;intrication quantique&amp;rdquo;, où si le premier qubit est 0 le second est toujours 0, et s&amp;rsquo;il est 1 le second est toujours 1, est simulée avec précision.&lt;/p>
&lt;p>Notez que lors de l&amp;rsquo;exécution sur une véritable machine quantique (IBM Quantum Hardware), en raison de l&amp;rsquo;influence du bruit (décohérence quantique et erreurs de porte), &lt;code>01&lt;/code> ou &lt;code>10&lt;/code> peuvent être légèrement observés. Comment réduire ce bruit (correction d&amp;rsquo;erreurs quantiques) est l&amp;rsquo;un des plus grand défis du développement actuel des ordinateurs quantiques.&lt;/p>
&lt;hr>
&lt;h2 id="6-mise-à-léchelle-vers-des-algorithmes-plus-avancés">6. Mise à l&amp;rsquo;échelle vers des algorithmes plus avancés
&lt;/h2>&lt;p>La création d&amp;rsquo;un état de Bell est comparable au &amp;ldquo;Hello World&amp;rdquo; de la programmation quantique. En développant cela plus loin, il est possible de construire de puissants algorithmes surpassant les ordinateurs classiques.&lt;/p>
&lt;h3 id="61-algorithme-de-deutsch-jozsa-deutsch-jozsa-algorithm">6.1 Algorithme de Deutsch-Jozsa (Deutsch-Jozsa Algorithm)
&lt;/h3>&lt;p>Il s&amp;rsquo;agit du problème de déterminer si une fonction donnée $f(x)$ est une &amp;ldquo;fonction constante (sort toujours 0 ou toujours 1 indépendamment de l&amp;rsquo;entrée)&amp;rdquo; ou une &amp;ldquo;fonction équilibrée (sort 0 pour la moitié des entrées et 1 pour l&amp;rsquo;autre moitié)&amp;rdquo;.
Un ordinateur classique nécessite dans le pire des cas $2^{n-1} + 1$ évaluations de la fonction, mais l&amp;rsquo;algorithme de Deutsch-Jozsa peut prendre cette décision avec &lt;strong>une seule évaluation&lt;/strong> en utilisant le parallélisme quantique. Ceci illustre le modèle de base d&amp;rsquo;un algorithme quantique : entrer un état superposé, utiliser l&amp;rsquo;interférence (Interference) pour annuler les états inutiles, et amplifier la réponse souhaitée.&lt;/p>
&lt;h3 id="62-algorithme-de-grover-grovers-algorithm">6.2 Algorithme de Grover (Grover&amp;rsquo;s Algorithm)
&lt;/h3>&lt;p>Dans le problème de recherche d&amp;rsquo;une donnée spécifique parmi $N$ bases de données non triées, alors qu&amp;rsquo;un algorithme classique nécessite en moyenne $N/2$ calculs, l&amp;rsquo;algorithme de Grover permet de trouver la donnée cible en $\sqrt{N}$ fois.
Cet algorithme utilise une boîte noire appelée &amp;ldquo;Oracle (Oracle)&amp;rdquo; pour inverser la phase de la solution cible, puis effectue une &amp;ldquo;amplification d&amp;rsquo;amplitude (Amplitude Amplification)&amp;rdquo; pour augmenter considérablement la probabilité que la solution cible soit observée.&lt;/p>
&lt;div class="mermaid">graph TD
A["Initialisation (superposition de tous les états)"] --> B["Oracle (inversion de la phase de la bonne réponse)"]
B --> C["Opérateur de diffusion (amplification de l'amplitude par inversion autour de la moyenne)"]
C --> D{"Probabilité suffisante atteinte ?"}
D -- "No" --> B
D -- "Yes" --> E["Mesure"]&lt;/div>
&lt;hr>
&lt;h2 id="7-conclusion-et-apprentissage-futur">7. Conclusion et apprentissage futur
&lt;/h2>&lt;p>Dans cet article, nous avons expliqué en détail les concepts fondamentaux du calcul quantique tels que la superposition et l&amp;rsquo;intrication quantique, la manipulation de portes logiques quantiques à l&amp;rsquo;aide de Qiskit, puis la construction, la simulation et l&amp;rsquo;interprétation des résultats d&amp;rsquo;un état de Bell.&lt;/p>
&lt;p>Qiskit pouvant être écrit en Python, un langage familier, c&amp;rsquo;est un outil puissant qui permet de surmonter les barrières mathématiques et physiques pour se concentrer sur la construction d&amp;rsquo;algorithmes. Les ordinateurs quantiques sont actuellement à l&amp;rsquo;ère des dispositifs quantiques à échelle intermédiaire bruités (NISQ : Noisy Intermediate-Scale Quantum), mais la recherche appliquée progresse rapidement dans le monde entier dans de nombreux domaines tels que l&amp;rsquo;apprentissage automatique (Quantum Machine Learning), la simulation chimique (Quantum Chemistry) et la cryptanalyse.&lt;/p>
&lt;p>Profitez de cette occasion pour créer vous-même divers circuits quantiques à l&amp;rsquo;aide de Qiskit et essayez de les faire fonctionner sur de véritables processeurs IBM Quantum. Vous devriez pouvoir expérimenter par vous-même le paradigme informatique du futur.&lt;/p>
&lt;h3 id="références">Références
&lt;/h3>&lt;ul>
&lt;li>&lt;a class="link" href="https://qiskit.org/documentation/" target="_blank" rel="noopener"
>Documentation officielle 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> - Texte officiel recommandé pour ceux qui souhaitent approfondir leurs connaissances sur le contexte mathématique et les algorithmes&lt;/li>
&lt;li>IBM Quantum Learning&lt;/li>
&lt;/ul>
&lt;p>Bienvenue dans le monde quantique !&lt;/p></description></item><item><title>Qu'est-ce que la suprématie quantique ? Les dernières tendances de Google et IBM</title><link>http://kenji.blog/fr/p/what-is-quantum-supremacy-google-ibm/</link><pubDate>Fri, 11 Sep 2026 18:00:00 +0900</pubDate><guid>http://kenji.blog/fr/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'est-ce que la suprématie quantique ? Les dernières tendances de Google et IBM" />&lt;h2 id="1-introduction--laube-de-linformatique-quantique-et-la--suprématie-quantique-">1. Introduction : L&amp;rsquo;aube de l&amp;rsquo;informatique quantique et la « Suprématie quantique »
&lt;/h2>&lt;p>L&amp;rsquo;informatique quantique recèle le potentiel de résoudre des problèmes complexes, insolubles dans un délai réaliste par des ordinateurs classiques (les PC et les superordinateurs que nous utilisons quotidiennement), en appliquant les principes fondamentaux de la physique, à savoir la mécanique quantique, au traitement de l&amp;rsquo;information. Pendant longtemps, ce domaine a été principalement limité à la recherche théorique, mais ces dernières années, les progrès rapides du matériel ont intensifié la course vers une application pratique.&lt;/p>
&lt;p>Parmi ces développements, l&amp;rsquo;un des mots-clés ayant attiré le plus d&amp;rsquo;attention est la « Suprématie quantique » (Quantum Supremacy). Cela désigne le moment où un ordinateur quantique démontre une puissance de calcul écrasante par rapport à un ordinateur classique pour une tâche de calcul spécifique. Dans cet article, nous partirons de la définition rigoureuse de la suprématie quantique, puis nous expliquerons en détail l&amp;rsquo;expérience du processeur « Sycamore » de Google, annoncée en 2019 comme ayant atteint ce jalon historique pour la première fois au monde. Nous aborderons également la réfutation et l&amp;rsquo;approche unique d&amp;rsquo;IBM, ainsi que les dernières tendances vers la « Correction d&amp;rsquo;erreurs quantiques » (Quantum Error Correction : QEC) et le « Calcul quantique tolérant aux pannes » (Fault-Tolerant Quantum Computing : FTQC), qui constituent les obstacles majeurs à une véritable mise en pratique, tout en approfondissant les aspects techniques et mathématiques.&lt;/p>
&lt;hr>
&lt;h2 id="2-contexte-théorique--fondements-du-calcul-quantique-et-classes-de-complexité">2. Contexte théorique : Fondements du calcul quantique et classes de complexité
&lt;/h2>&lt;p>Pour comprendre la suprématie quantique, il est d&amp;rsquo;abord nécessaire d&amp;rsquo;appréhender les fondements mathématiques du calcul quantique et son positionnement dans la théorie de la complexité algorithmique.&lt;/p>
&lt;h3 id="qubits-et-superposition">Qubits et Superposition
&lt;/h3>&lt;p>Alors que la plus petite unité d&amp;rsquo;information dans un ordinateur classique est le bit (0 ou 1), un ordinateur quantique utilise le qubit (Quantum bit). L&amp;rsquo;état d&amp;rsquo;un seul qubit $|\psi\rangle$ est représenté par une combinaison linéaire complexe des états de base $|0\rangle$ et $|1\rangle$.&lt;/p>
$$
|\psi\rangle = \alpha|0\rangle + \beta|1\rangle
$$
&lt;p>Ici, $\alpha, \beta \in \mathbb{C}$, et ils satisfont la condition de normalisation $|\alpha|^2 + |\beta|^2 = 1$. Cette propriété est appelée « Superposition » (Superposition).&lt;/p>
&lt;h3 id="intrication-entanglement-et-produit-tensoriel">Intrication (Entanglement) et Produit tensoriel
&lt;/h3>&lt;p>Lorsqu&amp;rsquo;il existe plusieurs qubits, l&amp;rsquo;état du système global est représenté par le produit tensoriel des espaces d&amp;rsquo;états des qubits individuels. Un système de $n$ qubits devient un vecteur sur un espace de Hilbert de dimension $2^n$, $\mathcal{H}^{\otimes n}$.&lt;/p>
$$
|\Psi\rangle = \sum_{x \in \{0, 1\}^n} c_x |x\rangle
$$
&lt;p>Ici, $\sum |c_x|^2 = 1$. L&amp;rsquo;état dans lequel les qubits ne sont pas indépendants et où l&amp;rsquo;état de l&amp;rsquo;un dépend de l&amp;rsquo;autre est appelé « Intrication quantique » (Quantum Entanglement). Grâce à cela, un ordinateur quantique possède le potentiel de traiter simultanément un espace d&amp;rsquo;états exponentiellement vaste.&lt;/p>
&lt;h3 id="définition-de-la-suprématie-quantique-dans-la-théorie-de-la-complexité-algorithmique">Définition de la suprématie quantique dans la théorie de la complexité algorithmique
&lt;/h3>&lt;p>Dans la théorie de la complexité algorithmique, la classe des problèmes pouvant être résolus efficacement (en temps polynomial) par un ordinateur classique est appelée &lt;strong>BPP&lt;/strong> (Bounded-error Probabilistic Polynomial time). D&amp;rsquo;autre part, la classe des problèmes pouvant être résolus efficacement par un ordinateur quantique est &lt;strong>BQP&lt;/strong> (Bounded-error Quantum Polynomial time).&lt;/p>
&lt;p>Démontrer la suprématie quantique signifie « exécuter une tâche spécifique qui est incluse dans BQP mais pas dans BPP (ou dont la probabilité d&amp;rsquo;y être est extrêmement faible) sur du matériel quantique réel, et surpasser en temps et en ressources une simulation par un superordinateur classique ». On peut dire que c&amp;rsquo;est une tentative historique de réfuter par une expérience physique la thèse étendue de Church-Turing (« tout modèle de calcul physiquement réalisable peut être simulé en temps polynomial par une machine de Turing probabiliste »).&lt;/p>
&lt;hr>
&lt;h2 id="3-2019--démonstration-de-la-suprématie-quantique-par-google">3. 2019 : Démonstration de la suprématie quantique par Google
&lt;/h2>&lt;p>En octobre 2019, l&amp;rsquo;équipe Google Quantum AI a annoncé dans la revue scientifique &lt;em>Nature&lt;/em> avoir atteint la suprématie quantique en utilisant le processeur supraconducteur « Sycamore » de 53 qubits.&lt;/p>
&lt;h3 id="architecture-du-processeur-sycamore">Architecture du processeur Sycamore
&lt;/h3>&lt;p>Le processeur Sycamore est composé de 54 qubits supraconducteurs de type Transmon arrangés dans une grille bidimensionnelle (un qubit étant défectueux lors de l&amp;rsquo;expérience, 53 ont été utilisés). Des coupleurs ajustables (Tunable Couplers) sont placés entre les qubits adjacents, permettant de réaliser des portes à 2 qubits (un hybride entre la porte iSWAP et la porte Z contrôlée) rapides et très précises.&lt;/p>
&lt;div class="mermaid">graph TD
A["Entrée d'algorithme quantique"] --> B["Processeur Sycamore (53 Qubits)"]
B --> C["Appliquer des portes quantiques aléatoires"]
C --> D["Mesurer les états quantiques (Chaînes de bits)"]
D --> E["Évaluation par entropie croisée (XEB)"]
E --> F["Vérifier la suprématie quantique"]&lt;/div>
&lt;h3 id="échantillonnage-de-circuits-quantiques-aléatoires-random-circuit-sampling--rcs">Échantillonnage de circuits quantiques aléatoires (Random Circuit Sampling : RCS)
&lt;/h3>&lt;p>La tâche choisie par Google est « l&amp;rsquo;échantillonnage de circuits quantiques aléatoires ». Cela consiste à appliquer de manière répétée des portes quantiques à un qubit et à deux qubits choisies au hasard sur plusieurs cycles (profondeur $m$), puis à effectuer un échantillonnage à partir de la distribution de probabilité des chaînes de bits obtenues en mesurant l&amp;rsquo;état final.&lt;/p>
&lt;p>La probabilité d&amp;rsquo;obtenir une chaîne de bits $x$ à partir d&amp;rsquo;un circuit quantique aléatoire idéal (sans bruit) ne suit pas une distribution uniforme, mais présente un motif semblable à des franges d&amp;rsquo;interférence, appelé distribution de Porter-Thomas (Porter-Thomas distribution). Pour échantillonner à partir de cette distribution avec un ordinateur classique, il est nécessaire de simuler l&amp;rsquo;ensemble du vecteur d&amp;rsquo;état, et la complexité de calcul augmente de manière exponentielle avec le nombre de qubits $n$ et la profondeur du circuit $m$.&lt;/p>
&lt;h3 id="évaluation-de-la-fidélité-fidelity--évaluation-par-entropie-croisée-linéaire-xeb">Évaluation de la fidélité (Fidelity) : Évaluation par entropie croisée linéaire (XEB)
&lt;/h3>&lt;p>Pour prouver que les résultats de l&amp;rsquo;expérience n&amp;rsquo;étaient pas simplement du bruit, mais bien les résultats d&amp;rsquo;un calcul quantique réel, Google a utilisé l&amp;rsquo;évaluation par entropie croisée linéaire (Linear Cross-Entropy Benchmarking : XEB). La probabilité idéale $P(x_i)$ du circuit pour la chaîne de bits $x_i$ obtenue lors de l&amp;rsquo;expérience est calculée par un ordinateur classique, et la fidélité $\mathcal{F}_{\text{XEB}}$ est déterminée par la formule suivante.&lt;/p>
$$
\mathcal{F}_{\text{XEB}} = 2^n \langle P(x_i) \rangle_{i} - 1
$$
&lt;p>Si $\mathcal{F}_{\text{XEB}}$ est de 0, cela signifie un bruit complet, et s&amp;rsquo;il est de 1, cela signifie un processeur quantique idéal sans bruit. Le processeur Sycamore a atteint $\mathcal{F}_{\text{XEB}} \approx 0,002$ (0,2 %) pour un circuit d&amp;rsquo;une profondeur de 20. Bien que cela paraisse faible au premier abord, il s&amp;rsquo;agissait d&amp;rsquo;une valeur statistiquement significative supérieure à zéro, et d&amp;rsquo;un exploit remarquable ayant réussi à contrôler un espace d&amp;rsquo;états de $2^{53} \approx 9 \times 10^{15}$.&lt;/p>
&lt;p>Le taux d&amp;rsquo;erreur global a été modélisé de manière approximative comme le produit des erreurs de portes individuelles, des erreurs de mesure, 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$ correspond à l&amp;rsquo;erreur de porte, $e_{RO}$ à l&amp;rsquo;erreur de mesure)&lt;/p>
&lt;p>Google a affirmé qu&amp;rsquo;il faudrait environ 10 000 ans pour simuler ce circuit sur le superordinateur classique (Summit). En revanche, Sycamore a terminé l&amp;rsquo;échantillonnage en seulement 200 secondes.&lt;/p>
&lt;hr>
&lt;h2 id="4-la-réfutation-dibm--de-la--suprématie--à-l-utilité--utility">4. La réfutation d&amp;rsquo;IBM : De la « Suprématie » à l&amp;rsquo;« Utilité » (Utility)
&lt;/h2>&lt;p>L&amp;rsquo;annonce de Google a provoqué une onde de choc dans le monde entier, mais IBM, qui a développé le plus grand superordinateur du monde « Summit » et qui est également un leader dans le développement d&amp;rsquo;ordinateurs quantiques, a immédiatement publié un article pour réfuter cette affirmation.&lt;/p>
&lt;h3 id="amélioration-de-la-simulation-classique-par-contraction-de-réseaux-tensoriels">Amélioration de la simulation classique par contraction de réseaux tensoriels
&lt;/h3>&lt;p>Le cœur de la réfutation d&amp;rsquo;IBM résidait dans le fait que « l&amp;rsquo;optimisation des algorithmes et des ressources du côté des ordinateurs classiques était insuffisante ». Google avait estimé le délai de 10 000 ans en se basant sur un simulateur de vecteur d&amp;rsquo;état calculant directement l&amp;rsquo;évolution temporelle de l&amp;rsquo;équation de Schrödinger. IBM a cependant souligné que l&amp;rsquo;utilisation d&amp;rsquo;une méthode appelée « Réseaux tensoriels » (Tensor Network) permettait de réduire drastiquement le temps de simulation.&lt;/p>
&lt;p>Dans les réseaux tensoriels, les opérations de portes d&amp;rsquo;un circuit quantique sont représentées comme des calculs de tableaux multidimensionnels (tenseurs), et l&amp;rsquo;ordre de la « contraction » (Contraction) du réseau est optimisé. De plus, IBM a affirmé qu&amp;rsquo;en exploitant pleinement le stockage massif de 250 Po de Summit (hiérarchisation du disque et de la mémoire), il était possible de réaliser une simulation de plus haute précision en seulement « 2,5 jours » tout en conservant l&amp;rsquo;intégralité du vecteur d&amp;rsquo;état.&lt;/p>
&lt;h3 id="avantage-quantique-quantum-advantage-et-utilité-quantique-quantum-utility">Avantage quantique (Quantum Advantage) et Utilité quantique (Quantum Utility)
&lt;/h3>&lt;p>À la suite de ce débat, la tendance générale de l&amp;rsquo;industrie est passée de l&amp;rsquo;obsession d&amp;rsquo;« exécuter une tâche artificielle impossible classiquement (Supremacy) » à celle de « démontrer un avantage substantiel par rapport aux approches classiques sur des problèmes utiles du monde réel (Quantum Advantage) », puis à la phase où « l&amp;rsquo;ordinateur quantique agit comme un nouvel outil de découverte scientifique (Quantum Utility) ».&lt;/p>
&lt;p>IBM elle-même évite le terme « suprématie » et propose des métriques de performance globale des processeurs quantiques telles que le « Volume quantique » (Quantum Volume) ou les « CLOPS (Circuit Layer Operations Per Second) », en poursuivant un développement qui met l&amp;rsquo;accent sur l&amp;rsquo;équilibre entre l&amp;rsquo;échelle et la qualité du matériel.&lt;/p>
&lt;div class="mermaid">timeline
title "L'évolution des jalons quantiques"
2019 : "Google Sycamore (53Q)" : "Annonce de la suprématie quantique"
2019 : "Réfutation d'IBM" : "Simulation sur superordinateur Summit en 2,5 jours"
2021 : "IBM Eagle (127Q)" : "Franchissement de la barre des 100 qubits"
2022 : "IBM Osprey (433Q)" : "Avancement de l'échelle des processeurs"
2023 : "Code de surface Google" : "Mise à l'échelle de la correction d'erreurs (d=3 à d=5)"
2023 : "Utilité quantique d'IBM" : "Simulation de modèle de spin complexe sur 127Q"
2024 : "Au-delà" : "Ère des qubits logiques et de l'atténuation des erreurs"&lt;/div>
&lt;hr>
&lt;h2 id="5-la-prochaine-frontière--atténuation-des-erreurs-error-mitigation-et-correction-derreurs-quantiques-qec">5. La prochaine frontière : Atténuation des erreurs (Error Mitigation) et Correction d&amp;rsquo;erreurs quantiques (QEC)
&lt;/h2>&lt;p>Les ordinateurs quantiques actuels sont appelés « NISQ (Noisy Intermediate-Scale Quantum) ». Ils sont sensibles aux bruits (erreurs dues aux interactions avec l&amp;rsquo;environnement externe ou à des imperfections de contrôle), et lors de longs calculs, les résultats se retrouvent noyés dans le bruit. Pour surmonter ce problème, il existe deux grandes approches : l&amp;rsquo;« Atténuation des erreurs » (Error Mitigation) et la « Correction d&amp;rsquo;erreurs quantiques » (Quantum Error Correction).&lt;/p>
&lt;h3 id="atténuation-des-erreurs-error-mitigation">Atténuation des erreurs (Error Mitigation)
&lt;/h3>&lt;p>L&amp;rsquo;atténuation des erreurs est une méthode qui élimine l&amp;rsquo;impact du bruit de la valeur attendue des résultats de calcul par un post-traitement classique, sans modifier le matériel quantique. En 2023, en combinant son processeur « Eagle » de 127 qubits avec des techniques d&amp;rsquo;atténuation des erreurs telles que l&amp;rsquo;« Extrapolation du bruit à zéro » (Zero-Noise Extrapolation : ZNE), IBM a atteint une précision dépassant la méthode des réseaux tensoriels approximatifs de pointe dans la simulation de l&amp;rsquo;évolution temporelle d&amp;rsquo;un modèle d&amp;rsquo;Ising complexe, démontrant ainsi l&amp;rsquo;« Utilité quantique » (Quantum Utility).&lt;/p>
&lt;h3 id="correction-derreurs-quantiques-qec-et-qubits-logiques">Correction d&amp;rsquo;erreurs quantiques (QEC) et Qubits logiques
&lt;/h3>&lt;p>Cependant, pour pouvoir finalement exécuter n&amp;rsquo;importe quel algorithme complexe (par exemple, l&amp;rsquo;algorithme de factorisation de Shor ou des calculs de chimie quantique complexes), l&amp;rsquo;atténuation des erreurs seule est insuffisante, et la « Correction d&amp;rsquo;erreurs quantiques » (QEC), qui détecte et corrige dynamiquement les erreurs, est indispensable.&lt;/p>
&lt;p>L&amp;rsquo;approche dominante en matière de QEC est le « Code de surface » (Surface Code). Il s&amp;rsquo;agit d&amp;rsquo;une méthode consistant à arranger plusieurs qubits physiques (qubits de données) dans une grille bidimensionnelle, et à placer des qubits de mesure (qubits ancilla) entre eux pour effectuer de manière continue des vérifications de parité appelées « Stabilisateurs » (Stabilizer).&lt;/p>
&lt;div class="mermaid">graph LR
Q1["Qubit de données (Données)"] --- M1["Mesurer le stabilisateur X (Ancilla)"]
Q2["Qubit de données (Données)"] --- M1
Q3["Qubit de données (Données)"] --- M2["Mesurer le stabilisateur Z (Ancilla)"]
Q4["Qubit de données (Données)"] --- M2
M1 --> EC["Décodage du syndrome d'erreur (Classique)"]
M2 --> EC
EC --> LQ["Mise à jour de l'état du qubit logique"]&lt;/div>
&lt;h4 id="théorème-du-seuil-threshold-theorem-et-distance-d">Théorème du seuil (Threshold Theorem) et Distance $d$
&lt;/h4>&lt;p>La correction d&amp;rsquo;erreurs quantiques s&amp;rsquo;appuie sur le « Théorème du seuil ». Si le taux d&amp;rsquo;erreur des qubits physiques $p$ est inférieur à un certain seuil $p_{th}$ (environ 1 % pour le code de surface), il est possible de réduire de manière exponentielle le taux d&amp;rsquo;erreur logique $p_L$ en augmentant la distance de code (Distance) $d$ (c&amp;rsquo;est-à-dire en allouant plus de qubits physiques à un seul qubit logique).&lt;/p>
&lt;p>La formule approximative du taux d&amp;rsquo;erreur logique s&amp;rsquo;exprime comme suit :&lt;/p>
$$
p_L \approx \Lambda \left( \frac{p}{p_{th}} \right)^{\frac{d+1}{2}}
$$
&lt;p>Ici, $\Lambda$ est une constante. Si $p &lt; p_{th}$, plus $d$ est grand, plus $p_L$ diminue. Cependant, si $p > p_{th}$, l&amp;rsquo;ajout de qubits physiques entraîne une accumulation de bruit, détériorant le taux d&amp;rsquo;erreur logique.&lt;/p>
&lt;h4 id="jalon-de-google-en-2023--démonstration-de-la-réduction-des-erreurs-par-lextension-de-la-distance">Jalon de Google en 2023 : Démonstration de la réduction des erreurs par l&amp;rsquo;extension de la distance
&lt;/h4>&lt;p>En février 2023, Google a publié un article monumental dans &lt;em>Nature&lt;/em>. En utilisant son processeur Sycamore de 3ème génération, ils ont démontré pour la première fois au monde qu&amp;rsquo;en étendant la distance du code de surface de $d=3$ (utilisation de 17 qubits physiques) à $d=5$ (utilisation de 49 qubits physiques), le taux d&amp;rsquo;erreur logique diminuait légèrement, passant de 3,028 % à 2,914 %.&lt;/p>
&lt;p>Cela signifie qu&amp;rsquo;ils ont pénétré dans la zone où $p &lt; p_{th}$, et cela indique que la validation de principe (Proof of Concept) la plus importante vers le FTQC, à savoir que plus on augmente le nombre de qubits physiques, plus les performances s&amp;rsquo;améliorent, a été réalisée.&lt;/p>
&lt;hr>
&lt;h2 id="6-feuille-de-route-et-perspectives-vers-le-ftqc-calcul-quantique-tolérant-aux-pannes">6. Feuille de route et perspectives vers le FTQC (Calcul quantique tolérant aux pannes)
&lt;/h2>&lt;p>Google et IBM, bien qu&amp;rsquo;adoptant des architectures et des approches différentes, se livrent à une course au développement acharnée vers leur objectif final, le FTQC (Fault-Tolerant Quantum Computing).&lt;/p>
&lt;h3 id="lapproche-dibm--modularisation-et-grille-heavy-hex">L&amp;rsquo;approche d&amp;rsquo;IBM : Modularisation et grille Heavy-Hex
&lt;/h3>&lt;p>IBM se concentre sur la mise à l&amp;rsquo;échelle de ses processeurs tout en cherchant à réduire drastiquement le taux d&amp;rsquo;erreur. Tout en repoussant les limites des puces uniques avec « Eagle (127Q) », « Osprey (433Q) » et « Condor (1121Q) », ils ont annoncé une architecture modulaire appelée « Quantum System Two ». De plus, ils adoptent une « Grille Heavy-Hex » (Heavy-Hex lattice) pour la topologie de couplage de leurs qubits, ce qui réduit la diaphonie (crosstalk) indésirable et augmente la stabilité. La stratégie d&amp;rsquo;IBM est une approche hybride : poursuivre l&amp;rsquo;utilité à court terme grâce à une atténuation avancée des erreurs, tout en introduisant progressivement la QEC.&lt;/p>
&lt;h3 id="lapproche-de-google--amélioration-de-la-qualité-des-qubits-logiques">L&amp;rsquo;approche de Google : Amélioration de la qualité des qubits logiques
&lt;/h3>&lt;p>La stratégie de Google met davantage l&amp;rsquo;accent sur la réduction extrême du taux d&amp;rsquo;erreur d&amp;rsquo;un seul qubit logique (par exemple, jusqu&amp;rsquo;à $10^{-6}$) plutôt que sur l&amp;rsquo;augmentation rapide du nombre de qubits physiques. Sur cette base, ils visent à établir une technologie de transfert des états quantiques entre les modules (Quantum Interconnects) et à créer un système à grande échelle faisant fonctionner plusieurs milliers à plusieurs dizaines de milliers de qubits physiques en parallèle.&lt;/p>
&lt;p>La mise en œuvre de protocoles permettant d&amp;rsquo;exécuter des portes non-Clifford avec une tolérance aux pannes, comme la distillation d&amp;rsquo;états magiques (Magic State Distillation), constituera également un obstacle technique majeur à l&amp;rsquo;avenir. Pour exécuter un algorithme de Shor pratique capable de casser un chiffrement RSA de 2048 bits, il faudrait des milliers de qubits logiques avec un taux d&amp;rsquo;erreur inférieur à $10^{-8}$, ce qui équivaut à plusieurs millions ou dizaines de millions de qubits physiques, ce qui indique que le chemin est encore long.&lt;/p>
&lt;hr>
&lt;h2 id="7-conclusion">7. Conclusion
&lt;/h2>&lt;p>La « Suprématie quantique » a constitué une étape importante dans l&amp;rsquo;histoire des ordinateurs quantiques, prouvant physiquement le potentiel théorique de ces machines. La démonstration de Google en 2019 et la réfutation constructive d&amp;rsquo;IBM ont poussé l&amp;rsquo;ensemble de l&amp;rsquo;industrie au-delà d&amp;rsquo;une simple preuve théorique vers la poursuite d&amp;rsquo;une utilité réelle (Utility), puis vers l&amp;rsquo;ère de l&amp;rsquo;ingénierie à part entière menant au calcul quantique tolérant aux pannes (FTQC).&lt;/p>
&lt;p>Aujourd&amp;rsquo;hui, nous assistons à une période de transition entre les dispositifs NISQ remplis de bruit et les dispositifs à qubits logiques dotés d&amp;rsquo;une correction d&amp;rsquo;erreurs. Au cours des cinq à dix prochaines années, de nouvelles découvertes en science des matériaux, des révolutions dans le processus de découverte de médicaments, et des avancées majeures dans les problèmes d&amp;rsquo;optimisation deviendront réalité en tandem avec l&amp;rsquo;évolution de ce matériel quantique.&lt;/p>
&lt;p>Il faudra continuer de suivre de près les développements de Google, d&amp;rsquo;IBM, et des chercheurs du monde entier qui façonnent l&amp;rsquo;informatique de demain.&lt;/p></description></item><item><title>Comment la blockchain et les cryptomonnaies évolueront-elles à l'ère post-quantique ?</title><link>http://kenji.blog/fr/p/post-quantum-blockchain-and-crypto/</link><pubDate>Fri, 11 Sep 2026 17:00:00 +0900</pubDate><guid>http://kenji.blog/fr/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 Comment la blockchain et les cryptomonnaies évolueront-elles à l'ère post-quantique ?" />&lt;h2 id="1-introduction--lapproche-de-lère-post-quantique-et-la-crise-de-la-blockchain">1. Introduction : L&amp;rsquo;approche de l&amp;rsquo;ère post-quantique et la crise de la blockchain
&lt;/h2>&lt;p>Depuis la création du Bitcoin par Satoshi Nakamoto en 2009, la technologie de la blockchain s&amp;rsquo;est développée pour devenir l&amp;rsquo;infrastructure des systèmes financiers et des applications à travers le monde, en tant que « registre décentralisé et infalsifiable ». Cette sécurité robuste repose sur des technologies cryptographiques modernes : la &lt;strong>cryptographie à clé publique (Public Key Cryptography)&lt;/strong> et les &lt;strong>fonctions de hachage cryptographique (Cryptographic Hash Functions)&lt;/strong>.&lt;/p>
&lt;p>Ces technologies cryptographiques garantissent la sécurité en s&amp;rsquo;appuyant sur la « difficulté de calcul » mathématique, c&amp;rsquo;est-à-dire qu&amp;rsquo;un ordinateur classique (les PC ou supercalculateurs que nous utilisons aujourd&amp;rsquo;hui) mettrait un temps comparable à l&amp;rsquo;âge de l&amp;rsquo;univers pour les déchiffrer.&lt;/p>
&lt;p>Cependant, cette prémisse est sur le point d&amp;rsquo;être fondamentalement bouleversée par le développement rapide et la mise en pratique des &lt;strong>ordinateurs quantiques (Quantum Computers)&lt;/strong>, qui représentent la frontière de la physique et des sciences de l&amp;rsquo;information. Les ordinateurs quantiques, qui utilisent les propriétés de la mécanique quantique telles que la « superposition (Superposition) » et l&amp;rsquo;« intrication (Entanglement) », font preuve d&amp;rsquo;une puissance de calcul surpassant de loin les ordinateurs classiques pour certains problèmes mathématiques, ce que l&amp;rsquo;on appelle la « suprématie quantique (Quantum Supremacy) ».&lt;/p>
&lt;p>Dans cet article, nous explorerons en profondeur, d&amp;rsquo;un point de vue technique et mathématique, les menaces spécifiques auxquelles la technologie de la blockchain est confrontée à cause des ordinateurs quantiques, ainsi que les dernières tendances de la &lt;strong>cryptographie post-quantique (PQC : Post-Quantum Cryptography)&lt;/strong> qui s&amp;rsquo;annonce comme la solution, et les scénarios de transition pour les réseaux de crypto-actifs.&lt;/p>
&lt;hr>
&lt;h2 id="2-les-bases-de-linformatique-quantique-et-ses-2-grandes-menaces-pour-la-blockchain">2. Les bases de l&amp;rsquo;informatique quantique et ses 2 grandes menaces pour la blockchain
&lt;/h2>&lt;p>Les systèmes de blockchain actuels sont principalement constitués des deux éléments cryptographiques suivants, chacun étant exposé à des menaces différentes de la part des algorithmes quantiques.&lt;/p>
&lt;div class="mermaid">graph TD
A["Puissance de calcul phénoménale des ordinateurs quantiques"] --> B["Algorithme de Shor (Shor's Algorithm)"]
A --> C["Algorithme de Grover (Grover's Algorithm)"]
B --> D["Effondrement de la cryptographie à clé publique (ECDSA/RSA/DSA)"]
C --> E["Impact sur les fonctions de hachage cryptographique (SHA-256)"]
D --> F["Identification de la clé privée d'autrui et falsification de transactions"]
E --> G["Avantage dans le minage PoW et attaques sur certaines adresses"]
F --> H["Menace fatale et directe pour la blockchain"]
G --> I["Menace gérable par ajustement de l'algorithme (ex. augmentation de la taille de la clé)"]
style H fill:#ff9999,stroke:#cc0000,stroke-width:2px;
style I fill:#ffff99,stroke:#cccc00,stroke-width:2px;&lt;/div>
&lt;h3 id="21-les-fondements-de-la-cryptographie-sur-les-courbes-elliptiques-ecdsa-et-la-difficulté-de-calcul">2.1. Les fondements de la cryptographie sur les courbes elliptiques (ECDSA) et la difficulté de calcul
&lt;/h3>&lt;p>De nombreuses blockchains, dont le Bitcoin et l&amp;rsquo;Ethereum, utilisent l&amp;rsquo;&lt;strong>algorithme de signature numérique sur courbe elliptique (ECDSA : Elliptic Curve Digital Signature Algorithm)&lt;/strong> comme algorithme de signature numérique. Plus précisément, le Bitcoin utilise une courbe elliptique avec le paramètre &lt;code>secp256k1&lt;/code>.&lt;/p>
&lt;p>La sécurité de la cryptographie sur les courbes elliptiques dépend de la difficulté de calcul du &lt;strong>problème du logarithme discret sur courbe elliptique (ECDLP : Elliptic Curve Discrete Logarithm Problem)&lt;/strong>.
La courbe elliptique est définie par l&amp;rsquo;équation sous forme de Weierstrass suivante :&lt;/p>
$$
y^2 \equiv x^3 + ax + b \pmod{p}
$$
&lt;p>Pour le &lt;code>secp256k1&lt;/code> du Bitcoin, $a = 0, b = 7$, et $p$ est un très grand nombre premier.
Soit $G$ un point de base sur cette courbe, et $k$ la clé privée, qui est un très grand nombre entier de 256 bits choisi au hasard. Alors, la clé publique $K$ est obtenue par l&amp;rsquo;addition de $G$ à lui-même $k$ fois (multiplication scalaire).&lt;/p>
$$
K = k \times G = \underbrace{G + G + \dots + G}_{k \text{ fois}}
$$
&lt;p>En utilisant un ordinateur classique, calculer la clé privée $k$ à partir de la clé publique $K$ (calculer le logarithme discret) nécessite un temps de calcul exponentiel $\mathcal{O}(\sqrt{p})$ même avec les meilleurs algorithmes classiques tels que l&amp;rsquo;algorithme rho de Pollard. Pour une clé de 256 bits, environ $2^{128}$ opérations sont nécessaires, ce qui est impossible à résoudre même en faisant fonctionner les supercalculateurs actuels pendant des milliards d&amp;rsquo;années.&lt;/p>
&lt;h3 id="22-leffondrement-causé-par-lalgorithme-de-shor-shors-algorithm">2.2. L&amp;rsquo;effondrement causé par l&amp;rsquo;algorithme de Shor (Shor&amp;rsquo;s Algorithm)
&lt;/h3>&lt;p>Cependant, l&amp;rsquo;&lt;strong>algorithme de Shor&lt;/strong>, publié par Peter Shor en 1994, a complètement détruit cette hypothèse. L&amp;rsquo;algorithme de Shor a été initialement proposé pour résoudre le problème de la factorisation en nombres premiers (la base du chiffrement RSA) en temps polynomial, mais il s&amp;rsquo;applique également au problème du logarithme discret et au problème du logarithme discret sur courbe elliptique.&lt;/p>
&lt;p>Le cœur de l&amp;rsquo;algorithme de Shor réside dans l&amp;rsquo;utilisation de la &lt;strong>transformée de Fourier quantique (QFT : Quantum Fourier Transform)&lt;/strong> pour trouver rapidement la « période (Period) » d&amp;rsquo;une fonction.&lt;/p>
$$
\text{Complexité classique} = \mathcal{O}(2^{n/2}) \quad (n\text{ est la longueur en bits})
$$
$$
\text{Complexité de l'algorithme quantique} = \mathcal{O}(n^3)
$$
&lt;p>Ainsi, l&amp;rsquo;algorithme de Shor réduit considérablement un temps exponentiel à un &lt;strong>temps polynomial (Polynomial Time)&lt;/strong>. Si un ordinateur quantique doté d&amp;rsquo;un nombre suffisant de qubits logiques est achevé, il sera possible d&amp;rsquo;identifier la clé privée $k$ à partir de la clé publique $K$ publiée sur le réseau en quelques minutes ou quelques secondes. Par conséquent, un attaquant pourra facilement obtenir la clé privée du portefeuille de quelqu&amp;rsquo;un d&amp;rsquo;autre et prendre le contrôle total des fonds.&lt;/p>
&lt;h4 id="221-étapes-par-étapes-de-la-résolution-de-lecdlp-par-lalgorithme-de-shor">2.2.1 Étapes par étapes de la résolution de l&amp;rsquo;ECDLP par l&amp;rsquo;algorithme de Shor
&lt;/h4>&lt;p>Voyons étape par étape le processus interne par lequel un ordinateur quantique résout le problème du logarithme discret sur courbe elliptique (ECDLP).&lt;/p>
&lt;p>Définition du problème : Dans $K = k \times G$, $G$ et $K$ sont connus, et nous voulons trouver l&amp;rsquo;entier inconnu $k$ (la clé privée). Soit $N$ l&amp;rsquo;ordre de la courbe elliptique.&lt;/p>
&lt;p>&lt;strong>Étape 1 : Création de l&amp;rsquo;état de superposition&lt;/strong>
Tout d&amp;rsquo;abord, nous préparons deux registres quantiques et appliquons une porte de Hadamard (Hadamard Gate) à chacun d&amp;rsquo;eux pour créer un état de superposition de toutes les combinaisons possibles d&amp;rsquo;entiers.
&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>Étape 2 : Application de l&amp;rsquo;oracle quantique (évaluation de la fonction)&lt;/strong>
Ensuite, à l&amp;rsquo;aide d&amp;rsquo;un circuit quantique (oracle) qui effectue l&amp;rsquo;addition de points sur la courbe elliptique, nous calculons la fonction $f(x, y) = x \times G + y \times K$ dans le troisième registre.
&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>
Ce qui est important ici, c&amp;rsquo;est que puisque $K = k \times G$, cela peut être réécrit comme $f(x, y) = (x + y \cdot k) \times G$.&lt;/p>
&lt;p>&lt;strong>Étape 3 : Mesure du troisième registre&lt;/strong>
Lorsque le troisième registre est mesuré, il s&amp;rsquo;effondre sur un certain point $R$ sur la courbe elliptique. Par conséquent, les premier et deuxième registres s&amp;rsquo;effondrent dans un état de superposition des paires $(x, y)$ satisfaisant $x + y \cdot k \equiv c \pmod{N}$ (où $c$ est une 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>Étape 4 : Application de la transformée de Fourier quantique (QFT)&lt;/strong>
Cet état a une périodicité liée à la période $k$. En appliquant ici la transformée de Fourier quantique inverse (Inverse QFT), on provoque des interférences de phase et on convertit l&amp;rsquo;information de période en amplitude.&lt;/p>
&lt;p>&lt;strong>Étape 5 : Mesure et post-traitement classique&lt;/strong>
Lorsque les premier et deuxième registres sont mesurés, une valeur contenant des informations sur $k$ est obtenue avec une forte probabilité. En appliquant des algorithmes de théorie des nombres classiques tels que le développement en fractions continues (Continued Fractions) à la valeur mesurée, la clé privée inconnue $k$ peut être complètement identifiée.&lt;/p>
&lt;p>Le nombre de portes quantiques requis pour l&amp;rsquo;ensemble de ce processus est $\mathcal{O}(\log^3 N)$, ce qui permet de révéler la clé privée à une vitesse ultra-rapide, incomparable avec la recherche $\mathcal{O}(\sqrt{N})$ par un ordinateur classique.&lt;/p>
&lt;h3 id="23-lalgorithme-de-grover-grovers-algorithm-et-son-impact-sur-les-fonctions-de-hachage">2.3. L&amp;rsquo;algorithme de Grover (Grover&amp;rsquo;s Algorithm) et son impact sur les fonctions de hachage
&lt;/h3>&lt;p>L&amp;rsquo;autre menace est l&amp;rsquo;&lt;strong>algorithme de Grover&lt;/strong>, proposé par Lov Grover en 1996. Celui-ci a un impact majeur sur les fonctions de hachage (ex. : SHA-256).&lt;/p>
&lt;p>Dans la blockchain, les fonctions de hachage sont utilisées pour garantir l&amp;rsquo;intégrité des données, générer des adresses et servent de base au &lt;strong>minage PoW (Proof of Work)&lt;/strong> du Bitcoin. L&amp;rsquo;inversion d&amp;rsquo;une fonction de hachage (calcul de la préimage) peut être considérée comme un « problème de recherche dans une base de données non structurée », consistant à trouver une valeur d&amp;rsquo;entrée $x$ telle que $H(x) = y$ pour une valeur de sortie $y$ donnée.&lt;/p>
&lt;p>Dans un ordinateur classique, pour trouver la bonne réponse parmi $N$ possibilités, il faut en moyenne $\frac{N}{2}$ essais, et $N$ essais dans le pire des cas. En d&amp;rsquo;autres termes, la complexité est $\mathcal{O}(N)$.
Cependant, l&amp;rsquo;algorithme de Grover utilise une technique quantique appelée « amplification d&amp;rsquo;amplitude (Amplitude Amplification) ». En amplifiant itérativement l&amp;rsquo;amplitude de probabilité de l&amp;rsquo;état correspondant à la bonne réponse parmi toutes les possibilités dans un état de superposition, le temps de recherche est réduit à sa racine carrée.&lt;/p>
$$
\text{Complexité de l'algorithme de Grover} = \mathcal{O}(\sqrt{N})
$$
&lt;p>Dans le cas de SHA-256, puisque $N = 2^{256}$, une recherche exhaustive classique nécessiterait environ $2^{256}$ essais. Cependant, en utilisant l&amp;rsquo;algorithme de Grover, il suffit de $\sqrt{2^{256}} = 2^{128}$ essais. Cela signifie qu&amp;rsquo;une fonction de hachage de 256 bits voit son niveau de sécurité &lt;strong>effectivement divisé par deux, à 128 bits&lt;/strong>, face à un ordinateur quantique.&lt;/p>
&lt;h4 id="231-sha-256-survivra-t-il--quantum-supremacy-in-hashing">2.3.1. SHA-256 survivra-t-il ? (Quantum Supremacy in Hashing)
&lt;/h4>&lt;p>Bien que la sécurité soit réduite de moitié, « une sécurité de 128 bits » reste extrêmement solide. $2^{128}$ opérations représentent un chiffre astronomique même selon les standards technologiques actuels, nécessitant une échelle de temps comparable à la durée de vie de l&amp;rsquo;univers.
Par conséquent, il est largement considéré que &lt;strong>« SHA-256 maintiendra un niveau de sécurité pratique même face aux ordinateurs quantiques »&lt;/strong>. S&amp;rsquo;il s&amp;rsquo;avère nécessaire d&amp;rsquo;augmenter la marge de sécurité à l&amp;rsquo;avenir, il suffira simplement de doubler la longueur de sortie du hachage (par exemple, passer de SHA-256 à SHA-512) pour maintenir le niveau de sécurité classique de 256 bits dans le monde quantique.&lt;/p>
&lt;p>En conclusion, on peut dire que la menace quantique pesant sur les fonctions de hachage est « mineure et gérable », tandis que la menace sur la cryptographie à clé publique (ECDSA) est « fatale ».&lt;/p>
&lt;hr>
&lt;h2 id="3-analyse-des-impacts-concrets-sur-les-crypto-actifs-actuels-bitcoin-ethereum">3. Analyse des impacts concrets sur les crypto-actifs actuels (Bitcoin, Ethereum)
&lt;/h2>&lt;p>Dans un monde où le déchiffrement de l&amp;rsquo;ECDSA par un ordinateur quantique deviendrait possible, à quelles vulnérabilités spécifiques les réseaux de crypto-actifs seront-ils confrontés ? Nous ferons ici une analyse détaillée en prenant l&amp;rsquo;exemple du fonctionnement du Bitcoin, du point de vue du &lt;strong>« timing d&amp;rsquo;exposition de la clé publique »&lt;/strong>.&lt;/p>
&lt;h3 id="31-génération-dadresses-et--confidentialité--de-la-clé-publique">3.1. Génération d&amp;rsquo;adresses et « confidentialité » de la clé publique
&lt;/h3>&lt;p>Les adresses Bitcoin (P2PKH : Pay-to-Public-Key-Hash ou P2WPKH : Pay-to-Witness-Public-Key-Hash) n&amp;rsquo;utilisent pas la clé publique elle-même, mais un hachage multiple de la clé publique.&lt;/p>
$$
\text{Bitcoin Address} = \text{Base58Check}(\text{RIPEMD160}(\text{SHA256}(\text{Public Key})))
$$
&lt;p>Comme mentionné précédemment, les fonctions de hachage résistent aux attaques quantiques (l&amp;rsquo;algorithme de Grover), il est donc impossible, même pour un ordinateur quantique, de retrouver la « clé publique » d&amp;rsquo;origine à partir de « l&amp;rsquo;adresse » (la valeur de hachage).
En d&amp;rsquo;autres termes, pour &lt;strong>« une adresse inutilisée (qui n&amp;rsquo;a jamais envoyé de fonds) »&lt;/strong>, la clé publique n&amp;rsquo;est exposée nulle part sur la blockchain, et seule la valeur de hachage est enregistrée. Par conséquent, tant que la clé publique est inconnue, il n&amp;rsquo;y a pas de cible pour exécuter l&amp;rsquo;algorithme de Shor, et la clé privée ne peut pas être identifiée. On peut dire que les portefeuilles dans cet état sont sûrs sur le plan quantique (Quantum-safe).&lt;/p>
&lt;h3 id="32-la-vulnérabilité-fatale-lors-de-lenvoi-de-transactions-attaque-de-front-running">3.2. La vulnérabilité fatale lors de l&amp;rsquo;envoi de transactions (Attaque de front-running)
&lt;/h3>&lt;p>Le problème survient au moment où un utilisateur envoie des fonds.
Lorsqu&amp;rsquo;il diffuse (broadcast) une transaction sur le réseau, l&amp;rsquo;utilisateur doit inclure sa signature numérique ainsi que &lt;strong>sa propre clé publique dans les données de la transaction pour la vérification, et la rendre publique sur tout le réseau&lt;/strong>.&lt;/p>
&lt;div class="mermaid">sequenceDiagram
participant User as "Utilisateur (Alice)"
participant Mempool as "Mempool (Pool de transactions non confirmées)"
participant QuantumAttacker as "Attaquant quantique"
participant Miner as "Mineur (Génération de blocs)"
User->>Mempool: Envoi de la transaction (incluant la clé publique + signature)
Mempool-->>QuantumAttacker: Interception de la clé publique sur le réseau
note right of QuantumAttacker: Exécution de l'algorithme de Shor en quelques minutes&lt;br/>(Calcul de la clé privée à partir de la clé publique)
QuantumAttacker->>QuantumAttacker: Génération d'une nouvelle signature avec la clé privée d'Alice
QuantumAttacker->>Mempool: Diffusion d'une transaction frauduleuse avec des frais de minage plus élevés
Miner->>Miner: Inclusion prioritaire de la transaction frauduleuse avec des frais (Gas) élevés dans un bloc
Miner-->>User: Enregistrement sur la blockchain (Perte des fonds d'Alice)&lt;/div>
&lt;p>Une fois que la clé publique est envoyée au Mempool (la zone d&amp;rsquo;attente des transactions non confirmées), ces données sont partagées avec les nœuds du monde entier. Si un attaquant possède un ordinateur quantique ultra-rapide, il peut voler les fonds grâce au processus suivant :&lt;/p>
&lt;ol>
&lt;li>Intercepter la transaction légitime de l&amp;rsquo;utilisateur (Alice) depuis le Mempool et en &lt;strong>extraire la clé publique&lt;/strong>.&lt;/li>
&lt;li>Exécuter l&amp;rsquo;algorithme de Shor et &lt;strong>calculer la clé privée à partir de la clé publique en quelques minutes (avant que le bloc ne soit confirmé)&lt;/strong>.&lt;/li>
&lt;li>Utiliser la clé privée obtenue pour &lt;strong>créer une fausse transaction&lt;/strong> envoyant les fonds d&amp;rsquo;Alice vers l&amp;rsquo;adresse de l&amp;rsquo;attaquant.&lt;/li>
&lt;li>Définir pour cette fausse transaction des &lt;strong>frais de minage (Fee) beaucoup plus élevés&lt;/strong> que ceux de la transaction originale d&amp;rsquo;Alice et l&amp;rsquo;envoyer sur le réseau.&lt;/li>
&lt;/ol>
&lt;p>Les mineurs, obéissant aux incitations économiques, incluront en priorité la transaction avec les frais les plus élevés dans un bloc. Par conséquent, la transaction frauduleuse de l&amp;rsquo;attaquant sera confirmée en premier, et la transaction légitime d&amp;rsquo;Alice sera rejetée pour « fonds insuffisants (Double Spend) ».
Cette séquence d&amp;rsquo;événements est appelée &lt;strong>attaque de front-running (Front-running Attack)&lt;/strong>. Dans un monde où les ordinateurs quantiques sont devenus réalité, cela entraînera une situation effrayante où les fonds seront volés par des pirates informatiques à la seconde où quelqu&amp;rsquo;un appuiera sur le bouton d&amp;rsquo;envoi.&lt;/p>
&lt;h3 id="33-le-danger-des-adresses-réutilisées-et-des-anciennes-adresses-p2pk">3.3. Le danger des adresses réutilisées et des anciennes adresses (P2PK)
&lt;/h3>&lt;p>Un problème encore plus grave est que les adresses à partir desquelles des fonds ont été envoyés au moins une fois par le passé (comme lorsqu&amp;rsquo;elles sont réutilisées comme adresses de monnaie de retour) ont déjà leur clé publique enregistrée de manière permanente sur la blockchain. Celles-ci risquent de voir leur clé privée calculée et leur solde volé à tout moment, sans même attendre l&amp;rsquo;envoi d&amp;rsquo;une transaction.&lt;/p>
&lt;p>De plus, dans le format &lt;strong>P2PK (Pay-to-Public-Key)&lt;/strong>, qui était dominant autour de 2009-2010 et qui inclut les récompenses de minage initiales de Satoshi Nakamoto (plus d&amp;rsquo;un million de BTC), la clé publique elle-même, et non un hachage, était directement enregistrée sur la blockchain comme adresse. Ces énormes quantités de bitcoins dormants deviendront les cibles les plus faciles pour les ordinateurs quantiques, et pourraient déclencher un krach majeur des prix en étant volées en masse et déversées sur le marché.&lt;/p>
&lt;hr>
&lt;h2 id="4-scénarios-de-transition-vers-la-cryptographie-post-quantique-pqc--post-quantum-cryptography">4. Scénarios de transition vers la cryptographie post-quantique (PQC : Post-Quantum Cryptography)
&lt;/h2>&lt;p>Afin d&amp;rsquo;éviter la catastrophe du « Q-Day (le jour où les ordinateurs quantiques briseront la cryptographie) », la communauté cryptographique et celle de la blockchain prévoient de migrer vers une &lt;strong>cryptographie post-quantique (PQC)&lt;/strong> difficile à déchiffrer même avec des algorithmes quantiques.
Le National Institute of Standards and Technology (NIST) des États-Unis mène depuis de nombreuses années un processus de standardisation PQC, et après plusieurs phases d&amp;rsquo;évaluations rigoureuses, quelques systèmes de chiffrement prometteurs ont été sélectionnés comme normes finales.&lt;/p>
&lt;p>Nous expliquerons en détail les principaux algorithmes PQC qui attirent l&amp;rsquo;attention en tant qu&amp;rsquo;alternatives aux signatures numériques de la blockchain, ainsi que leurs mécanismes mathématiques.&lt;/p>
&lt;h3 id="41-signatures-basées-sur-le-hachage-hash-based-signatures">4.1. Signatures basées sur le hachage (Hash-Based Signatures)
&lt;/h3>&lt;p>Les signatures basées sur le hachage sont un schéma cryptographique dont la sécurité repose uniquement sur une base très simple et robuste : la « résistance aux collisions des fonctions de hachage ». Étant donné que la sécurité des fonctions de hachage contre les ordinateurs quantiques a déjà été prouvée (comme mentionné précédemment, une marge de sécurité de 128 bits est suffisante), il s&amp;rsquo;agit d&amp;rsquo;une approche extrêmement fiable.
Parmi les exemples représentatifs, citons la &lt;strong>signature de Lamport (Lamport Signatures)&lt;/strong>, son extension WOTS (Winternitz One-Time Signature), et le candidat à la standardisation du NIST, &lt;strong>SPHINCS+&lt;/strong> (désormais appelé SLH-DSA sous FIPS 205).&lt;/p>
&lt;h4 id="411-détails-mathématiques-de-la-signature-de-lamport-one-time-signature">4.1.1. Détails mathématiques de la signature de Lamport (One-Time Signature)
&lt;/h4>&lt;p>Examinons plus en détail le fonctionnement mathématique de la signature de Lamport.
Soit une fonction de hachage $H: \{0, 1\}^* \to \{0, 1\}^{256}$.&lt;/p>
&lt;p>&lt;strong>[Génération des clés]&lt;/strong>
Alice (l&amp;rsquo;expéditrice) utilise un véritable générateur de nombres aléatoires (TRNG) pour générer 256 paires de clés privées.
&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>
Ainsi, la clé privée $\text{sk}$ se compose d&amp;rsquo;un total de 512 chaînes de 256 bits (taille : $512 \times 32 = 16 384$ octets).&lt;/p>
&lt;p>Ensuite, elle calcule la clé publique $\text{pk}$. Chaque composant de la clé privée est haché.
&lt;/p>
$$
\text{pk}_{i,0} = H(\text{sk}_{i,0}), \quad \text{pk}_{i,1} = H(\text{sk}_{i,1})
$$
&lt;p>
La clé publique fait également $16 384$ octets. Celle-ci est publiée sur le réseau de la blockchain.&lt;/p>
&lt;p>&lt;strong>[Génération de la signature]&lt;/strong>
Pour signer les données de transaction $M$, Alice calcule d&amp;rsquo;abord sa valeur de hachage.
&lt;/p>
$$
h = H(M) \in \{0, 1\}^{256}
$$
&lt;p>
Soit $h_i \in \{0, 1\}$ le $i$-ème bit de la valeur de hachage $h$.
La signature d&amp;rsquo;Alice, $\sigma$, sera l&amp;rsquo;ensemble des composants de la clé privée correspondant à chaque bit $h_i$.
&lt;/p>
$$
\sigma = (\text{sk}_{1, h_1}, \text{sk}_{2, h_2}, \dots, \text{sk}_{256, h_{256}})
$$
&lt;p>
En d&amp;rsquo;autres termes, si le bit du hachage du message est &lt;code>0&lt;/code>, elle révèle $\text{sk}_{i,0}$, et s&amp;rsquo;il est &lt;code>1&lt;/code>, elle révèle $\text{sk}_{i,1}$. La taille de la signature sera de $256 \times 32 = 8 192$ octets.&lt;/p>
&lt;p>&lt;strong>[Vérification de la signature]&lt;/strong>
Le mineur (vérificateur) vérifie en utilisant la transaction $M$ reçue, la signature $\sigma = (s_1, s_2, \dots, s_{256})$ et la clé publique $\text{pk}$.
Il recalcule le hachage de la transaction $h = H(M)$ et vérifie si le hachage de chaque $s_i$ correspond à l&amp;rsquo;élément correspondant de la clé publique, $\text{pk}_{i, h_i}$.
&lt;/p>
$$
H(s_i) \overset{?}{=} \text{pk}_{i, h_i} \quad (\text{pour tout } 1 \le i \le 256)
$$
&lt;p>Ce processus est mathématiquement très simple, et à moins qu&amp;rsquo;un ordinateur quantique ne puisse inverser $H$, il est impossible de falsifier une signature. Cependant, une fois signée, la moitié de la clé privée est exposée au réseau. Si la même paire de clés est utilisée pour signer un autre message, les clés privées exposées se combinent, donnant à un attaquant la possibilité de forger des signatures. Cela crée une forte contrainte : la clé ne peut être utilisée qu&amp;rsquo;&lt;strong>« une seule fois (One-Time) »&lt;/strong>.
Pour rendre cela pratique, des technologies comme &lt;strong>XMSS&lt;/strong>, qui utilise un arbre de Merkle pour regrouper de nombreuses clés à usage unique en une seule clé publique racine, ou &lt;strong>SPHINCS+&lt;/strong>, qui est sans état, ont été développées, mais elles présentent l&amp;rsquo;inconvénient de tailles de signature atteignant des dizaines de kilo-octets.&lt;/p>
&lt;h3 id="42-cryptographie-fondée-sur-les-réseaux-euclidiens-lattice-based-cryptography">4.2. Cryptographie fondée sur les réseaux euclidiens (Lattice-Based Cryptography)
&lt;/h3>&lt;p>Actuellement, la cryptographie qui suscite le plus d&amp;rsquo;attentes en tant que courant principal du PQC, et qui a été adoptée comme norme principale du NIST (FIPS 204 : ML-DSA / anciennement CRYSTALS-Dilithium, ou Falcon), est la &lt;strong>cryptographie fondée sur les réseaux euclidiens&lt;/strong>.&lt;/p>
&lt;p>La sécurité de la cryptographie sur les réseaux euclidiens repose sur des problèmes dont la difficulté a été mathématiquement prouvée, tels que le « problème du vecteur le plus court dans un réseau multidimensionnel (SVP : Shortest Vector Problem) » ou le « problème d&amp;rsquo;apprentissage avec erreurs (LWE : Learning With Errors) ». Il n&amp;rsquo;existe aucun algorithme connu capable de résoudre efficacement les problèmes de réseau, même avec un ordinateur quantique.&lt;/p>
&lt;p>&lt;strong>Modèle mathématique du LWE (Learning With Errors) :&lt;/strong>
L&amp;rsquo;idée fondamentale du problème LWE est d&amp;rsquo;ajouter intentionnellement un « petit bruit (erreur) » à un système d&amp;rsquo;équations linéaires, ce qui rend le problème considérablement plus difficile.
Soit un vecteur secret $\mathbf{s} \in \mathbb{Z}_q^n$.
Il y a une grande matrice publique choisie aléatoirement $\mathbf{A} \in \mathbb{Z}_q^{m \times n}$ et un vecteur de petit bruit intentionnellement ajouté $\mathbf{e} \in \mathbb{Z}_q^m$.
La clé publique $\mathbf{b}$ est calculée comme suit :&lt;/p>
$$
\mathbf{b} = \mathbf{A}\mathbf{s} + \mathbf{e} \pmod{q}
$$
&lt;p>Même si la matrice $\mathbf{A}$ et le vecteur $\mathbf{b}$ (clé publique) sont publiés, il devient très difficile de calculer la clé privée $\mathbf{s}$ à l&amp;rsquo;envers en raison de la présence du bruit $\mathbf{e}$. S&amp;rsquo;il n&amp;rsquo;y avait pas de bruit, cela pourrait être résolu par une simple élimination de Gauss, mais le bruit provoque une explosion de l&amp;rsquo;espace de recherche dans toutes les dimensions, offrant une sécurité robuste contre les ordinateurs classiques et quantiques.
Dans les algorithmes réels utilisés dans les blockchains et ailleurs (comme Dilithium), cela est déployé sur des anneaux polynomiaux, ce que l&amp;rsquo;on appelle &lt;strong>Ring-LWE (ou Module-LWE)&lt;/strong>, afin de réduire la taille des clés et d&amp;rsquo;accélérer les calculs.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Avantages&lt;/strong> : Comparé aux signatures basées sur le hachage, la taille des clés publiques et des signatures est relativement petite (de l&amp;rsquo;ordre de quelques kilo-octets), et la vitesse de calcul pour la génération et la vérification des signatures est très élevée (équivalente ou supérieure à l&amp;rsquo;ECDSA).&lt;/li>
&lt;li>&lt;strong>Inconvénients&lt;/strong> : La structure mathématique est complexe et la période d&amp;rsquo;examen historique est courte, de sorte que le risque de découverte de nouveaux algorithmes de déchiffrement à l&amp;rsquo;avenir n&amp;rsquo;est pas nul.&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="5-les-défis-techniques-de-la-migration-pqc-pour-la-blockchain">5. Les défis techniques de la migration PQC pour la blockchain
&lt;/h2>&lt;p>Ce n&amp;rsquo;est pas parce que des algorithmes PQC (comme Dilithium ou SPHINCS+) existent qu&amp;rsquo;ils peuvent être introduits demain dans Bitcoin ou Ethereum. Plusieurs défis majeurs spécifiques aux systèmes décentralisés se posent.&lt;/p>
&lt;h3 id="51-laugmentation-de-la-taille-des-signatures-et-leffondrement-de-la-scalabilité">5.1. L&amp;rsquo;augmentation de la taille des signatures et l&amp;rsquo;effondrement de la scalabilité
&lt;/h3>&lt;p>Le plus grand obstacle à l&amp;rsquo;introduction de la PQC est l&amp;rsquo;augmentation significative de la taille des données.
Alors que la taille actuelle d&amp;rsquo;une signature ECDSA est d&amp;rsquo;environ 70 octets, dans le cas du Dilithium (ML-DSA) basé sur les réseaux, la taille de la signature est d&amp;rsquo;environ 2 420 octets à 4 595 octets (selon le niveau de sécurité), et la taille de la clé publique dépasse 1 300 octets. Quant au SPHINCS+ basé sur le hachage, la signature seule atteint des dizaines de milliers d&amp;rsquo;octets.&lt;/p>
&lt;p>Si le Bitcoin introduisait la PQC en conservant la limite de taille de bloc actuelle (un poids d&amp;rsquo;environ 4 Mo en incluant SegWit), le nombre de transactions pouvant être stockées dans un seul bloc chuterait considérablement. Le débit du réseau (TPS : Transactions Per Second) s&amp;rsquo;effondrerait, et les congestions de transferts deviendraient la norme.
Pour résoudre ce problème, il faudrait augmenter considérablement la taille des blocs, mais cela accroîtrait les besoins en stockage et en bande passante des nœuds complets, rendant difficile l&amp;rsquo;exploitation de nœuds par des particuliers et entraînant en conséquence &lt;strong>une centralisation du réseau&lt;/strong>, créant ainsi un dilemme.&lt;/p>
&lt;div class="mermaid">pie title "Comparaison de la taille des données de signature dans la blockchain (Schéma conceptuel)"
"ECDSA (env. 70 Octets)" : 2
"Dilithium ML-DSA (env. 2 500 Octets)" : 58
"SPHINCS+ (env. 17 000 Octets)" : 40&lt;/div>
&lt;p>&lt;em>(※ L&amp;rsquo;augmentation de la taille des données de transaction due à l&amp;rsquo;introduction du PQC constitue un goulot d&amp;rsquo;étranglement fatal pour la scalabilité)&lt;/em>&lt;/p>
&lt;h3 id="52-impact-sur-lethereum-virtual-machine-evm-et-les-contrats-précompilés">5.2. Impact sur l&amp;rsquo;Ethereum Virtual Machine (EVM) et les contrats précompilés
&lt;/h3>&lt;p>Dans une plateforme de contrats intelligents Turing-complète comme Ethereum, l&amp;rsquo;introduction de la PQC nécessitera une mise à niveau fondamentale de l&amp;rsquo;EVM (Ethereum Virtual Machine).
L&amp;rsquo;EVM actuel dispose d&amp;rsquo;un contrat précompilé (Precompiled Contract) appelé &lt;code>ecrecover&lt;/code> (adresse : &lt;code>0x01&lt;/code>) pour vérifier les signatures ECDSA, qui est optimisé pour effectuer la vérification de signature avec des frais de gaz très faibles (3000 Gas).&lt;/p>
&lt;p>Cependant, le processus de vérification des nouveaux algorithmes de cryptographie sur réseau tels que Dilithium ou Falcon implique des calculs polynomiaux et matriciels complexes. Si l&amp;rsquo;on tente de l&amp;rsquo;implémenter uniquement avec les codes d&amp;rsquo;opération (Opcodes) de l&amp;rsquo;EVM existant, une seule vérification de signature pourrait consommer des millions, voire des dizaines de millions de gaz. Cela suffirait à épuiser la limite de gaz de bloc actuelle (environ 30 millions de Gas) avec une seule transaction.&lt;/p>
&lt;p>Pour éviter cela, il est nécessaire, via un hard fork du réseau, d&amp;rsquo;intégrer dans l&amp;rsquo;EVM lui-même un nouveau contrat précompilé pour la vérification PQC (par exemple, assigner DilithiumVerify à &lt;code>0x10&lt;/code>). Cela nécessitera un long processus dans lequel les développeurs principaux de chaque client Ethereum (Geth, Nethermind, Erigon, etc.) devront collaborer pour implémenter de manière optimisée la logique de vérification de la cryptographie sur réseau au niveau des langages C++, Go, Rust, etc., et réaliser des audits de sécurité.&lt;/p>
&lt;h3 id="53-la-difficulté-datteindre-un-consensus-par-hard-fork">5.3. La difficulté d&amp;rsquo;atteindre un consensus par hard fork
&lt;/h3>&lt;p>Pour modifier l&amp;rsquo;algorithme de signature sous-jacent, un &lt;strong>hard fork (Hard Fork)&lt;/strong> mettant à jour le protocole de l&amp;rsquo;ensemble du réseau est indispensable. Cependant, dans les communautés qui accordent une grande importance à « ne pas changer les règles et rester décentralisé » comme le Bitcoin, le processus de recherche de consensus est politiquement très difficile. Il faudra probablement des années de discussions et de tests entre la proposition d&amp;rsquo;un BIP (Bitcoin Improvement Proposal) pour la transition PQC et sa mise en œuvre.&lt;/p>
&lt;hr>
&lt;h2 id="6-quand-le--q-day--arrivera-t-il--la-feuille-de-route-vers-la-transition">6. Quand le « Q-Day » arrivera-t-il ? La feuille de route vers la transition
&lt;/h2>&lt;p>Quand viendra le « Q-Day » (le jour où un ordinateur quantique déchiffrera complètement la cryptographie sur les courbes elliptiques de 256 bits) ?
Les avis des chercheurs divergent, mais de nombreux experts prédisent l&amp;rsquo;apparition d&amp;rsquo;ordinateurs quantiques à grande échelle dotés d&amp;rsquo;au moins quelques milliers à plusieurs dizaines de milliers de qubits logiques stables (qubits corrigés des erreurs avec une tolérance au bruit) &lt;strong>« entre le milieu des années 2030 et les années 2040 »&lt;/strong>. Toutefois, selon les percées dans l&amp;rsquo;architecture matérielle ou la découverte d&amp;rsquo;algorithmes quantiques plus efficaces, il n&amp;rsquo;est pas impossible que cela arrive plus tôt (vers 2030).&lt;/p>
&lt;p>La feuille de route que l&amp;rsquo;écosystème des crypto-actifs devrait suivre avant qu&amp;rsquo;il ne soit trop tard est la suivante :&lt;/p>
&lt;h3 id="phase-1--signatures-hybrides-et-abstraction-de-compte-maintenant---vers-2028">Phase 1 : Signatures hybrides et abstraction de compte (Maintenant - vers 2028)
&lt;/h3>&lt;p>L&amp;rsquo;industrie actuelle de la blockchain, et en particulier les développeurs d&amp;rsquo;Ethereum (comme Vitalik Buterin), envisage des &lt;strong>« signatures hybrides »&lt;/strong> combinant l&amp;rsquo;ECDSA et le PQC (signatures basées sur le hachage ou cryptographie sur réseau). C&amp;rsquo;est une approche où les transactions reçoivent à la fois la signature ECDSA sécurisée existante et une signature PQC, garantissant la sécurité même si l&amp;rsquo;une des deux est compromise.
De plus, en utilisant l&amp;rsquo;abstraction de compte (Account Abstraction, ERC-4337), des initiatives sont en cours pour implémenter et prendre en charge les signatures PQC sur des portefeuilles de contrats intelligents via opt-in (pour les utilisateurs qui le souhaitent) sans attendre un hard fork au niveau du protocole.&lt;/p>
&lt;h3 id="phase-2--utilisation-des-preuves-à-divulgation-nulle-de-connaissance-zk-rollups-2025---">Phase 2 : Utilisation des preuves à divulgation nulle de connaissance (ZK-Rollups) (2025 - )
&lt;/h3>&lt;p>L&amp;rsquo;atout majeur attendu pour résoudre le plus grand point faible de la PQC, à savoir « l&amp;rsquo;augmentation de la taille des données de signature », est l&amp;rsquo;utilisation des &lt;strong>ZK-Rollups (preuves à divulgation nulle de connaissance)&lt;/strong>, une technologie de couche 2 (Layer 2).
Plutôt que d&amp;rsquo;écrire d&amp;rsquo;énormes données de signature PQC directement sur la couche 1 (Layer 1, la chaîne principale), de nombreuses transactions PQC sont vérifiées et agrégées sur la couche 2. Ensuite, à l&amp;rsquo;aide de ZK-SNARKs ou ZK-STARKs, elles sont compressées en une très petite « donnée de preuve (Proof) » unique qui est enregistrée sur la couche 1.
Il convient de noter que certaines configurations de SNARKs (comme Groth16) sont intrinsèquement vulnérables au niveau quantique, de sorte que l&amp;rsquo;adoption des &lt;strong>ZK-STARKs&lt;/strong>, qui ne dépendent que des fonctions de hachage résistantes au quantique, sera essentielle.&lt;/p>
&lt;h3 id="phase-3--hard-fork-au-niveau-du-protocole-vers-2030">Phase 3 : Hard fork au niveau du protocole (vers 2030)
&lt;/h3>&lt;p>Une fois la standardisation de la PQC par le NIST pleinement établie, et que les bibliothèques standards de l&amp;rsquo;industrie seront disponibles et suffisamment testées, un hard fork devrait être effectué sur les principales chaînes telles que Bitcoin et Ethereum pour migrer complètement l&amp;rsquo;algorithme de signature par défaut vers la PQC. Durant cette période de transition, des annonces à grande échelle exhorteront les utilisateurs à « transférer leurs fonds de leurs anciens portefeuilles vers de nouveaux portefeuilles compatibles PQC ».&lt;/p>
&lt;h3 id="exemples-de-projets-pionniers">Exemples de projets pionniers
&lt;/h3>&lt;p>Certains projets de blockchain ont anticipé cette menace quantique et sont développés avec une résistance quantique revendiquée dès les premières étapes.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>QRL (Quantum Resistant Ledger)&lt;/strong> : Une blockchain précoce qui a implémenté nativement au niveau de son protocole la PQC basée sur le hachage appelée XMSS (eXtended Merkle Signature Scheme).&lt;/li>
&lt;li>&lt;strong>Algorand / Cellframe&lt;/strong> : Projets qui possèdent une architecture modulaire de couche cryptographique flexible en vue des futures mises à jour PQC, et qui explorent activement l&amp;rsquo;intégration de la cryptographie sur les réseaux euclidiens.&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="7-conclusion--lavenir-des-crypto-actifs-et-la-protection-de-nos-actifs">7. Conclusion : L&amp;rsquo;avenir des crypto-actifs et la protection de nos actifs
&lt;/h2>&lt;p>L&amp;rsquo;arrivée de « l&amp;rsquo;ère post-quantique » a dépassé le simple stade de la science-fiction et se présente déjà devant nous comme un défi technique concret pour les systèmes cryptographiques réels.&lt;/p>
&lt;p>Les deux épées des ordinateurs quantiques, l&amp;rsquo;algorithme de Shor et l&amp;rsquo;algorithme de Grover, menacent respectivement la cryptographie à clé publique et les fonctions de hachage qui constituent les fondations des blockchains actuelles. La vulnérabilité de l&amp;rsquo;ECDSA, en particulier, est fatale, et la transition vers la cryptographie post-quantique (PQC) est absolument incontournable pour éviter le risque de vol de fonds via les attaques de front-running.&lt;/p>
&lt;p>Cependant, le monde de la technologie et la communauté de la blockchain ne se contentent pas de croiser les bras en attendant la fin du monde. La sélection et la standardisation des algorithmes PQC, comme la cryptographie sur les réseaux euclidiens et les signatures basées sur le hachage, progressent de manière constante. De plus, grâce à l&amp;rsquo;utilisation des preuves à divulgation nulle de connaissance (ZK-STARKs) et des technologies de scalabilité de couche 2, la voie pour surmonter le principal obstacle à l&amp;rsquo;introduction du PQC, à savoir « l&amp;rsquo;augmentation de la taille des données », commence à se dessiner.&lt;/p>
&lt;p>En tant qu&amp;rsquo;utilisateurs ordinaires de crypto-actifs et investisseurs, nous n&amp;rsquo;avons pas besoin de paniquer immédiatement ni de vendre tous nos fonds. Toutefois, il est important d&amp;rsquo;avoir les connaissances de base suivantes et d&amp;rsquo;être conscient de l&amp;rsquo;importance de l&amp;rsquo;autoprotection :&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Éviter la réutilisation des adresses&lt;/strong> : Pour des raisons non seulement de confidentialité mais aussi de sécurité, assurez-vous de ne pas conserver vos fonds à long terme sur des « adresses utilisées (des adresses ayant envoyé des fonds au moins une fois, dont la clé publique a été exposée sur la blockchain) ».&lt;/li>
&lt;li>&lt;strong>Prêter attention aux tendances technologiques&lt;/strong> : Restez à l&amp;rsquo;affût des actualités concernant les discussions sur la transition PQC et les hard forks des principaux réseaux, comme les BIP de Bitcoin et les EIP d&amp;rsquo;Ethereum, afin de pouvoir procéder à la migration de votre portefeuille de manière appropriée lorsque cela sera nécessaire.&lt;/li>
&lt;/ul>
&lt;p>L&amp;rsquo;histoire de la blockchain est aussi l&amp;rsquo;histoire d&amp;rsquo;améliorations constantes et de résilience (capacité de récupération) face aux nouvelles menaces technologiques. Tout comme l&amp;rsquo;écosystème a surmonté les problèmes de scalabilité et les problèmes environnementaux (par la transition du PoW au PoS, par exemple), il cherchera sans aucun doute des solutions et s&amp;rsquo;adaptera globalement à cette menace quantique sans précédent.
Plutôt que d&amp;rsquo;être détruites par leur confrontation, on peut s&amp;rsquo;attendre à ce que la nouvelle sagesse de l&amp;rsquo;humanité qu&amp;rsquo;est l&amp;rsquo;ordinateur quantique et la technologie de confiance qu&amp;rsquo;est le registre décentralisé soient sublimées en un système robuste fusionné à un niveau supérieur.&lt;/p>
&lt;hr>
&lt;p>&lt;em>Références et liens utiles :&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>Différence entre le recuit quantique et le modèle à portes quantiques expliquée simplement</title><link>http://kenji.blog/fr/p/quantum-annealing-vs-gate-model-explained/</link><pubDate>Fri, 11 Sep 2026 12:00:00 +0900</pubDate><guid>http://kenji.blog/fr/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 Différence entre le recuit quantique et le modèle à portes quantiques expliquée simplement" />&lt;h1 id="différence-entre-le-recuit-quantique-et-le-modèle-à-portes-quantiques-expliquée-simplement">Différence entre le recuit quantique et le modèle à portes quantiques expliquée simplement
&lt;/h1>&lt;p>L&amp;rsquo;informatique quantique est une technologie de calcul de nouvelle génération qui a le potentiel de résoudre des problèmes spécifiques, nécessitant un temps énorme pour les ordinateurs classiques actuels (y compris les superordinateurs conventionnels), de manière exponentiellement plus rapide en utilisant les principes de la mécanique quantique (superposition et intrication quantique).&lt;/p>
&lt;p>Actuellement, il existe deux principaux paradigmes d&amp;rsquo;approche pour la réalisation des ordinateurs quantiques : &lt;strong>&amp;ldquo;le recuit quantique (Quantum Annealing)&amp;rdquo;&lt;/strong> et &lt;strong>&amp;ldquo;le modèle à portes quantiques (Quantum Gate Model)&amp;rdquo;&lt;/strong>. Ces deux méthodes diffèrent considérablement dans leurs approches physiques sous-jacentes, les tâches de calcul dans lesquelles elles excellent, et les défis matériels liés à leur mise en œuvre.&lt;/p>
&lt;p>Cet article compare et explique ces deux méthodes en profondeur, depuis une perspective hautement détaillée et technique, abordant les principes physiques, les modèles mathématiques (modèle d&amp;rsquo;Ising, QUBO, transformations unitaires, etc.), les limites technologiques actuelles, jusqu&amp;rsquo;aux cas d&amp;rsquo;utilisation spécifiques.&lt;/p>
&lt;hr>
&lt;h2 id="1-fondements-du-calcul-quantique--différences-fondamentales-avec-les-ordinateurs-classiques">1. Fondements du calcul quantique : Différences fondamentales avec les ordinateurs classiques
&lt;/h2>&lt;p>Les ordinateurs classiques traitent l&amp;rsquo;information sous forme de &amp;ldquo;bits (Bit)&amp;rdquo; qui prennent l&amp;rsquo;état &amp;ldquo;0&amp;rdquo; ou &amp;ldquo;1&amp;rdquo;. En revanche, les ordinateurs quantiques utilisent des &amp;ldquo;qubits (Qubit)&amp;rdquo;. Grâce au principe de &amp;ldquo;superposition (Superposition)&amp;rdquo; de la mécanique quantique, un qubit peut posséder simultanément et de manière probabiliste les états 0 et 1.&lt;/p>
&lt;p>De plus, en utilisant un phénomène appelé &amp;ldquo;intrication quantique (Entanglement)&amp;rdquo;, les états de plusieurs qubits deviennent fortement corrélés, de sorte qu&amp;rsquo;une opération sur un qubit affecte instantanément l&amp;rsquo;ensemble du système. Cela permet des calculs de type traitement parallèle (parallélisme quantique).&lt;/p>
&lt;p>Cependant, les états quantiques sont extrêmement vulnérables aux bruits externes (chaleur, ondes électromagnétiques, etc.), et le phénomène de &amp;ldquo;décohérence (Decoherence)&amp;rdquo;, où l&amp;rsquo;état se brise et revient à un état classique, constitue un défi majeur. La différence dans l&amp;rsquo;approche de ce problème de bruit conduit à une grande différence dans la philosophie de conception entre le recuit et le modèle à portes.&lt;/p>
&lt;hr>
&lt;h2 id="2-détails-du-recuit-quantique-quantum-annealing">2. Détails du recuit quantique (Quantum Annealing)
&lt;/h2>&lt;p>Le recuit quantique est une architecture de calcul spécialisée principalement dans la résolution de &lt;strong>&amp;ldquo;problèmes d&amp;rsquo;optimisation combinatoire&amp;rdquo;&lt;/strong>. Il est basé sur une théorie proposée en 1998 par Manpei Kadowaki et Hidetoshi Nishimori de l&amp;rsquo;Institut de Technologie de Tokyo (Tokyo Tech), et est devenu largement connu lorsque l&amp;rsquo;entreprise canadienne D-Wave Systems l&amp;rsquo;a commercialisé pour la première fois au monde.&lt;/p>
&lt;h3 id="21-mécanisme-physique--modèle-dising-en-champ-transverse-et-fluctuations-quantiques">2.1. Mécanisme physique : Modèle d&amp;rsquo;Ising en champ transverse et fluctuations quantiques
&lt;/h3>&lt;p>Le recuit quantique utilise la propriété des systèmes physiques naturels qui tendent à s&amp;rsquo;installer dans &amp;ldquo;l&amp;rsquo;état d&amp;rsquo;énergie le plus bas (état fondamental)&amp;rdquo; pour effectuer des calculs.&lt;/p>
&lt;p>Dans l&amp;rsquo;approche classique du &amp;ldquo;recuit simulé (Simulated Annealing)&amp;rdquo;, les fluctuations thermiques sont utilisées pour échapper aux solutions optimales locales (minimums locaux). En revanche, le recuit quantique utilise les &amp;ldquo;fluctuations quantiques (Quantum Fluctuation)&amp;rdquo; pour traverser les barrières d&amp;rsquo;énergie grâce à &amp;ldquo;l&amp;rsquo;effet tunnel quantique (Quantum Tunneling)&amp;rdquo;, explorant ainsi plus efficacement la solution optimale globale (minimum global).&lt;/p>
&lt;p>L&amp;rsquo;évolution temporelle du système de recuit quantique est décrite par le Hamiltonien suivant (l&amp;rsquo;opérateur représentant l&amp;rsquo;énergie totale du système) $H(t)$.&lt;/p>
$$ H(t) = A(t) H_0 + B(t) H_P $$
&lt;p>Ici, $t$ est le temps, $A(t)$ est une fonction décroissante progressivement, et $B(t)$ est une fonction croissante progressivement.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>$H_0$ (Hamiltonien initial)&lt;/strong> : Représente le champ transverse (Transverse field) et génère les fluctuations quantiques.
$$ H_0 = - \sum_{i} \sigma_i^x $$
($\sigma_i^x$ est la matrice de Pauli X, représentant l&amp;rsquo;inversion du bit.)&lt;/li>
&lt;li>&lt;strong>$H_P$ (Hamiltonien du problème)&lt;/strong> : Le modèle d&amp;rsquo;Ising (Ising Model) représentant le problème d&amp;rsquo;optimisation à résoudre.&lt;/li>
&lt;/ul>
&lt;p>À l&amp;rsquo;état initial ($t=0$), $A(0)$ est au maximum, et le système est dans l&amp;rsquo;état fondamental de $H_0$ (un état où tous les états sont superposés de manière égale). À partir de là, on affaiblit lentement le champ transverse au fil du temps, tout en renforçant simultanément l&amp;rsquo;interaction du Hamiltonien du problème.&lt;/p>
&lt;h3 id="22-calcul-quantique-adiabatique-adiabatic-quantum-computation">2.2. Calcul quantique adiabatique (Adiabatic Quantum Computation)
&lt;/h3>&lt;p>Ce qui est important dans ce processus, c&amp;rsquo;est le &lt;strong>&amp;ldquo;Théorème adiabatique (Adiabatic Theorem)&amp;rdquo;&lt;/strong>. Selon le théorème adiabatique, si le système est modifié &amp;ldquo;suffisamment lentement (adiabatiquement)&amp;rdquo;, le système restera toujours dans l&amp;rsquo;état fondamental du Hamiltonien à chaque instant.&lt;/p>
&lt;p>En d&amp;rsquo;autres termes, lorsque finalement $A(t) \to 0$ et $B(t) \to 1$, le système a atteint l&amp;rsquo;état fondamental de $H_P$, c&amp;rsquo;est-à-dire &lt;strong>&amp;ldquo;la solution exacte du problème d&amp;rsquo;optimisation&amp;rdquo;&lt;/strong>.&lt;/p>
&lt;div class="mermaid">graph TD
A["Hamiltonien H_0 (État initial)"] -->|"Changement adiabatique (suffisamment lent)"| B["Maintien constant de l'état fondamental"]
A -->|"Changement non-adiabatique (trop rapide / bruit thermique)"| C["Transition vers l'état excité (Erreur)"]
B --> D["Hamiltonien H_P (Solution optimale globale)"]
C --> E["Piégé dans une solution optimale locale"]
D --> F["Lecture de la solution"]
E --> F&lt;/div>
&lt;h3 id="23-cartographie-de-qubo-au-modèle-dising">2.3. Cartographie de QUBO au modèle d&amp;rsquo;Ising
&lt;/h3>&lt;p>Pour résoudre des problèmes du monde réel avec un recuiseur quantique, le problème doit être formulé sous la forme &lt;strong>QUBO (Quadratic Unconstrained Binary Optimization : Optimisation binaire quadratique sans contrainte)&lt;/strong>.&lt;/p>
&lt;p>La fonction objectif de QUBO est définie comme suit.
&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>
Ici, $x_i \in \{0, 1\}$ sont des variables binaires, et $Q$ est la matrice de poids.&lt;/p>
&lt;p>Étant donné que le matériel (comme D-Wave) gère des spins physiques (vers le haut / vers le bas), il est nécessaire de convertir les variables en un modèle d&amp;rsquo;Ising utilisant $\sigma_i \in \{-1, +1\}$. La formule de conversion est la suivante.
&lt;/p>
$$ x_i = \frac{1 - \sigma_i}{2} \quad \text{ou} \quad \sigma_i = 1 - 2x_i $$
&lt;p>En substituant cela dans l&amp;rsquo;équation de QUBO et en simplifiant, on obtient le Hamiltonien $H_P$ du modèle d&amp;rsquo;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}$ : Interaction entre les spins (coefficient de couplage). La force de couplage entre les qubits physiques.&lt;/li>
&lt;li>$h_i$ : Champ magnétique local (biais) pour chaque spin.&lt;/li>
&lt;/ul>
&lt;h3 id="24-matériel-et-défis-du-recuit-quantique-lexemple-de-d-wave">2.4. Matériel et défis du recuit quantique (L&amp;rsquo;exemple de D-Wave)
&lt;/h3>&lt;p>Les processeurs quantiques de D-Wave sont réalisés à l&amp;rsquo;aide de dispositifs supraconducteurs à interférence quantique (SQUID). Le couplage entre les qubits physiques dépend du câblage matériel et n&amp;rsquo;est pas un couplage complet (un état où tous les bits sont interconnectés).
Évoluant du &amp;ldquo;Graphe Chimera (Chimera graph)&amp;rdquo; initial, au &amp;ldquo;Graphe Pegasus (Pegasus)&amp;rdquo; puis au &amp;ldquo;Graphe Zephyr (Zephyr)&amp;rdquo;, la connectivité s&amp;rsquo;est améliorée, mais il reste encore des limitations.&lt;/p>
&lt;p>Par conséquent, un processus appelé &lt;strong>&amp;ldquo;Plongement mineur (Minor Embedding)&amp;rdquo;&lt;/strong> est nécessaire pour cartographier un problème avec une structure de graphe complexe sur le graphe physique. Étant donné que cela utilise plusieurs qubits physiques (une chaîne) pour représenter une variable logique, il y a le problème que le nombre effectif de qubits utilisables diminue, ce qui entraîne une réduction de la précision de calcul.&lt;/p>
&lt;hr>
&lt;h2 id="3-détails-du-modèle-à-portes-quantiques-quantum-gate-model">3. Détails du modèle à portes quantiques (Quantum Gate Model)
&lt;/h2>&lt;p>Le modèle à portes quantiques est une extension mécanique quantique des portes logiques des ordinateurs classiques (AND, OR, NOT, etc.), et est une architecture qui permet le &lt;strong>&amp;ldquo;Calcul Quantique Universel (Universal Quantum Computation)&amp;rdquo;&lt;/strong>. De nombreuses entreprises comme IBM, Google, Rigetti et IonQ ont adopté cette approche.&lt;/p>
&lt;h3 id="31-transformation-unitaire-et-vecteur-détat">3.1. Transformation unitaire et vecteur d&amp;rsquo;état
&lt;/h3>&lt;p>Dans le modèle à portes quantiques, l&amp;rsquo;état de l&amp;rsquo;ensemble du système de qubits est représenté comme un &amp;ldquo;Vecteur d&amp;rsquo;état (State Vector)&amp;rdquo; $|\psi\rangle$. L&amp;rsquo;état d&amp;rsquo;un qubit unique est exprimé par la combinaison linéaire des états de base $|0\rangle$ et $|1\rangle$ comme suit.
&lt;/p>
$$ |\psi\rangle = \alpha |0\rangle + \beta |1\rangle $$
&lt;p>
Ici, $\alpha$ et $\beta$ sont des amplitudes de probabilité complexes, satisfaisant $|\alpha|^2 + |\beta|^2 = 1$. Cet état est géométriquement visualisé comme un point sur la &amp;ldquo;Sphère de Bloch (Bloch Sphere)&amp;rdquo;.&lt;/p>
&lt;p>L&amp;rsquo;étape de calcul quantique est décrite comme l&amp;rsquo;application d&amp;rsquo;un &lt;strong>opérateur unitaire (Unitary Operator) $U$&lt;/strong> au vecteur d&amp;rsquo;état. Une matrice unitaire a la propriété que $U^\dagger U = I$ (le produit avec son conjugué hermitien donne la matrice identité), ce qui est une opération réversible correspondant à l&amp;rsquo;évolution temporelle de l&amp;rsquo;équation de Schrödinger en mécanique quantique.
&lt;/p>
$$ |\psi_{t+1}\rangle = U_t |\psi_t\rangle $$
&lt;h3 id="32-portes-quantiques-de-base-et-modèle-de-circuit">3.2. Portes quantiques de base et modèle de circuit
&lt;/h3>&lt;p>L&amp;rsquo;algorithme de calcul quantique est conçu comme une séquence de portes quantiques (circuit quantique).&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Portes de Pauli (X, Y, Z)&lt;/strong> : Rotation de 180 degrés autour de chaque axe sur la sphère de Bloch. La porte X équivaut à la porte NOT classique.&lt;/li>
&lt;li>&lt;strong>Porte de Hadamard (H)&lt;/strong> : Transforme $|0\rangle$ en $\frac{|0\rangle + |1\rangle}{\sqrt{2}}$, créant un état de superposition.
$$ H = \frac{1}{\sqrt{2}} \begin{pmatrix} 1 &amp; 1 \\ 1 &amp; -1 \end{pmatrix} $$&lt;/li>
&lt;li>&lt;strong>Porte CNOT (Controlled-NOT)&lt;/strong> : Porte à 2 qubits. Applique une porte X au bit cible uniquement lorsque le bit de contrôle est $|1\rangle$. Cela génère l&amp;rsquo;intrication quantique (Entanglement).&lt;/li>
&lt;/ul>
&lt;p>Tout algorithme quantique peut être exprimé de manière approximative par une combinaison d&amp;rsquo;un petit nombre de portes à 1 qubit et de portes CNOT (ensemble de portes universelles).&lt;/p>
&lt;div class="mermaid">graph LR
Q0["Qubit 0: |0>"] --> H1["Porte de Hadamard (H)"]
Q1["Qubit 1: |0>"] --> I1["Opération identité (I)"]
H1 --> C1["Bit de contrôle (Control)"]
I1 --> T1["Bit cible (Target)"]
C1 -. "Intrication" .- T1
C1 --> M0["Mesure (Measurement)"]
T1 --> M1["Mesure (Measurement)"]
M0 --> Result["Résultat classique (0 ou 1)"]
M1 --> Result&lt;/div>
&lt;h3 id="33-correction-derreurs-et-le-chemin-de-nisq-à-ftqc">3.3. Correction d&amp;rsquo;erreurs et le chemin de NISQ à FTQC
&lt;/h3>&lt;p>Le plus grand défi du modèle à portes quantiques est la &amp;ldquo;décohérence&amp;rdquo;, où l&amp;rsquo;état quantique est détruit par le bruit. À mesure que les étapes de calcul (profondeur de circuit) s&amp;rsquo;allongent, les erreurs s&amp;rsquo;accumulent.&lt;/p>
&lt;p>Pour effectuer des calculs idéaux, la &lt;strong>correction d&amp;rsquo;erreurs quantiques (Quantum Error Correction)&lt;/strong> est essentielle. Par exemple, avec des méthodes comme le &amp;ldquo;Code de surface (Surface Code)&amp;rdquo;, plusieurs qubits physiques sont regroupés pour former un seul &amp;ldquo;qubit logique (Logical Qubit)&amp;rdquo; sans erreur. Cependant, la création d&amp;rsquo;un qubit logique nécessite des milliers à des dizaines de milliers de qubits physiques, ce qui entraîne une énorme surcharge.&lt;/p>
&lt;p>L&amp;rsquo;étape à laquelle nous nous trouvons actuellement est l&amp;rsquo;ère des dispositifs &lt;strong>NISQ (Noisy Intermediate-Scale Quantum)&lt;/strong> de plusieurs dizaines à centaines de qubits sans correction d&amp;rsquo;erreurs. La réalisation d&amp;rsquo;un &lt;strong>FTQC (Fault-Tolerant Quantum Computing : Calcul quantique tolérant aux pannes)&lt;/strong> avec une correction d&amp;rsquo;erreurs complète nécessite encore de nombreuses percées.&lt;/p>
&lt;hr>
&lt;h2 id="4-résumé-de-la-comparaison-technique-et-mathématique">4. Résumé de la comparaison technique et mathématique
&lt;/h2>&lt;p>Comparaison des différences fondamentales entre les deux architectures.&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">Élément de comparaison&lt;/th>
&lt;th style="text-align:left">Recuit quantique (Quantum Annealing)&lt;/th>
&lt;th style="text-align:left">Modèle à portes quantiques (Gate Model)&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>Modèle de calcul&lt;/strong>&lt;/td>
&lt;td style="text-align:left">Calcul quantique adiabatique (évolution temporelle continue du Hamiltonien)&lt;/td>
&lt;td style="text-align:left">Transformation unitaire (séquence d&amp;rsquo;opérations de portes discrètes)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>Problèmes adaptés&lt;/strong>&lt;/td>
&lt;td style="text-align:left">Problèmes d&amp;rsquo;optimisation combinatoire (QUBO, modèle d&amp;rsquo;Ising)&lt;/td>
&lt;td style="text-align:left">Universel (simulation de chimie quantique, factorisation en nombres premiers, recherche, etc.)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>Capacité d&amp;rsquo;expression&lt;/strong>&lt;/td>
&lt;td style="text-align:left">Optimisation heuristique (solution approximative)&lt;/td>
&lt;td style="text-align:left">Équivalent à la machine de Turing quantique universelle (tout calcul est théoriquement possible)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>Exemples d&amp;rsquo;implémentation&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>Tolérance au bruit&lt;/strong>&lt;/td>
&lt;td style="text-align:left">Relativement forte (car il reste près de l&amp;rsquo;état fondamental, un certain niveau de bruit thermique est tolérable)&lt;/td>
&lt;td style="text-align:left">Très faible (un léger bruit décale la phase et détruit le résultat du calcul)&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">&lt;strong>Évolutivité&lt;/strong>&lt;/td>
&lt;td style="text-align:left">Échelle de milliers à dizaines de milliers de qubits (dépend de la structure physique. La création de bits logiques est difficile)&lt;/td>
&lt;td style="text-align:left">Échelle de centaines de qubits (nécessite une échelle de millions pour le FTQC)&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Le recuit quantique est adapté à la résolution de problèmes d&amp;rsquo;optimisation en tant que &amp;ldquo;coprocesseur spécifique&amp;rdquo; complétant les limites des ordinateurs classiques. D&amp;rsquo;autre part, le modèle à portes quantiques est la version quantique de l&amp;rsquo;&amp;ldquo;ordinateur polyvalent&amp;rdquo;, et vise ultimement à une capacité de calcul qui surpasse les ordinateurs classiques (suprématie quantique), mais la construction du matériel est extrêmement difficile.&lt;/p>
&lt;hr>
&lt;h2 id="5-limites-et-défis-actuels">5. Limites et défis actuels
&lt;/h2>&lt;h3 id="limites-du-recuit-quantique">Limites du recuit quantique
&lt;/h3>&lt;ol>
&lt;li>&lt;strong>Limitation de la connectivité (Connectivity)&lt;/strong> : En raison du plongement mineur mentionné précédemment, lorsque la taille du problème augmente, le nombre de qubits physiques nécessaires augmente de manière exponentielle.&lt;/li>
&lt;li>&lt;strong>Précision des coefficients (Precision)&lt;/strong> : L&amp;rsquo;erreur physique lors du réglage des paramètres analogiques tels que $J_{ij}$ et $h_i$ sur le matériel affecte directement la qualité de la solution.&lt;/li>
&lt;li>&lt;strong>Température et transitions non-adiabatiques&lt;/strong> : Étant donné que la température du système n&amp;rsquo;est pas au zéro absolu, il y a une probabilité de s&amp;rsquo;écarter de la solution optimale en raison de l&amp;rsquo;excitation thermique.&lt;/li>
&lt;/ol>
&lt;h3 id="limites-du-modèle-à-portes-quantiques">Limites du modèle à portes quantiques
&lt;/h3>&lt;ol>
&lt;li>&lt;strong>Temps de cohérence (Coherence Time)&lt;/strong> : Le temps pendant lequel un état quantique peut être maintenu n&amp;rsquo;est que de quelques microsecondes à quelques millisecondes, ce qui limite sévèrement le nombre de portes (profondeur de circuit) pouvant être exécutées pendant ce temps.&lt;/li>
&lt;li>&lt;strong>Fidélité des portes (Gate Fidelity)&lt;/strong> : Le taux d&amp;rsquo;erreur de fonctionnement des portes à 2 qubits (CNOT, etc.) n&amp;rsquo;est toujours pas suffisamment bas (généralement autour de 99.x%). Pour réaliser le FTQC, cela doit être élevé à plus de 99.99%.&lt;/li>
&lt;li>&lt;strong>Volume quantique (Quantum Volume)&lt;/strong> : Le plus grand défi actuel est de mettre à l&amp;rsquo;échelle non seulement le nombre de qubits, mais aussi la capacité de calcul effective (volume quantique), qui tient compte de l&amp;rsquo;interconnexion et des taux d&amp;rsquo;erreur.&lt;/li>
&lt;/ol>
&lt;hr>
&lt;h2 id="6-cas-dutilisation-spécifiques-et-algorithmes">6. Cas d&amp;rsquo;utilisation spécifiques et algorithmes
&lt;/h2>&lt;p>Examinons les domaines d&amp;rsquo;application spécifiques dans lesquels chaque méthode excelle.&lt;/p>
&lt;h3 id="61-cas-dutilisation-du-recuit-quantique">6.1. Cas d&amp;rsquo;utilisation du recuit quantique
&lt;/h3>&lt;ul>
&lt;li>&lt;strong>Logistique et Routage&lt;/strong> : Optimisation des itinéraires de livraison pour de multiples véhicules (une variation du problème du voyageur de commerce). Recherche d&amp;rsquo;itinéraire en temps réel tenant compte des embouteillages.&lt;/li>
&lt;li>&lt;strong>Ingénierie financière&lt;/strong> : Optimisation de portefeuille. Recherche d&amp;rsquo;une combinaison de titres qui maximise le rendement tout en minimisant les risques.&lt;/li>
&lt;li>&lt;strong>Apprentissage automatique&lt;/strong> : Sélection de caractéristiques (Feature Selection). Extraction de la combinaison de variables contribuant le plus à la prédiction à partir d&amp;rsquo;ensembles de données massifs.&lt;/li>
&lt;li>&lt;strong>Industrie manufacturière&lt;/strong> : Problème d&amp;rsquo;ordonnancement d&amp;rsquo;atelier (Job-shop scheduling) dans les usines (quelle machine doit traiter quelle pièce et dans quel ordre pour être le plus rapide).&lt;/li>
&lt;/ul>
&lt;h3 id="62-cas-dutilisation-du-modèle-à-portes-quantiques">6.2. Cas d&amp;rsquo;utilisation du modèle à portes quantiques
&lt;/h3>&lt;ul>
&lt;li>&lt;strong>Simulation de chimie quantique&lt;/strong> : Simule les états énergétiques des molécules et les réactions chimiques avec une grande précision.&lt;/li>
&lt;li>&lt;strong>Factorisation en nombres premiers (Algorithme de Shor)&lt;/strong> : Un algorithme qui factorise d&amp;rsquo;énormes nombres composés en temps polynomial. Lorsque cela sera mis en pratique, les infrastructures de cryptographie à clé publique actuelles, telles que le chiffrement RSA, seront compromises, rendant la transition vers la cryptographie post-quantique (PQC) urgente.&lt;/li>
&lt;li>&lt;strong>Recherche dans une base de données (Algorithme de Grover)&lt;/strong> : Lors de la recherche de données cibles dans une base de données non triée, les ordinateurs classiques nécessitent $O(N)$ étapes, mais l&amp;rsquo;algorithme de Grover peut effectuer la recherche en $O(\sqrt{N})$ étapes.&lt;/li>
&lt;/ul>
&lt;h3 id="63-algorithmes-hybrides-de-lère-nisq--vqe-et-qaoa">6.3. Algorithmes hybrides de l&amp;rsquo;ère NISQ : VQE et QAOA
&lt;/h3>&lt;p>Pour surmonter la limitation des circuits quantiques peu profonds des dispositifs NISQ, les &amp;ldquo;Algorithmes quantiques variationnels (Variational Quantum Algorithms)&amp;rdquo;, qui combinent les avantages des ordinateurs quantiques et classiques, attirent l&amp;rsquo;attention.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>VQE (Variational Quantum Eigensolver)&lt;/strong> : Algorithme pour trouver l&amp;rsquo;énergie de l&amp;rsquo;état fondamental d&amp;rsquo;une molécule. Il prépare un état quantique à l&amp;rsquo;aide d&amp;rsquo;un circuit quantique paramétré (Ansatz) et mesure l&amp;rsquo;espérance de l&amp;rsquo;énergie $\langle \psi(\theta) | H | \psi(\theta) \rangle$. En utilisant cette espérance comme fonction objectif, un algorithme d&amp;rsquo;optimisation classique (comme la descente de gradient) est utilisé pour mettre à jour les paramètres $\theta$. En répétant cela jusqu&amp;rsquo;à convergence, l&amp;rsquo;état énergétique précis de la molécule est trouvé.&lt;/li>
&lt;li>&lt;strong>QAOA (Quantum Approximate Optimization Algorithm)&lt;/strong> : Algorithme pour résoudre des problèmes d&amp;rsquo;optimisation combinatoire à l&amp;rsquo;aide du modèle à portes quantiques. L&amp;rsquo;évolution temporelle adiabatique du recuit quantique est approximée en opérations de portes discrètes par la &amp;ldquo;Trotterisation (Trotterization)&amp;rdquo;, et une solution approximative est obtenue en appliquant alternativement des Hamiltoniens. Le QAOA est prometteur comme un moyen puissant de résoudre des problèmes d&amp;rsquo;optimisation avec la méthode des portes.&lt;/li>
&lt;/ul>
&lt;div class="mermaid">graph TD
User["Problème de l'utilisateur"] --> Formulation{"Nature du problème"}
Formulation -- "Optimisation combinatoire" --> QA_Path["Recuit quantique / Machine d'Ising"]
QA_Path --> QUBO["Formulation QUBO"]
QUBO --> DWave["Exécution sur D-Wave"]
Formulation -- "Calcul chimique / Calcul général" --> Gate_Path["Modèle à portes quantiques"]
Gate_Path --> Circuit["Conception de circuit quantique (VQE / QAOA)"]
Circuit --> IBMGoogle["Exécution matérielle quantique IBM / Google"]&lt;/div>
&lt;hr>
&lt;h2 id="7-conclusion">7. Conclusion
&lt;/h2>&lt;p>Le recuit quantique et le modèle à portes quantiques sont identiques en ce sens qu&amp;rsquo;ils utilisent tous deux les propriétés mystérieuses de la mécanique quantique comme ressources de calcul, mais leurs approches et leurs objectifs sont très différents.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Le recuit quantique&lt;/strong> est un &amp;ldquo;moteur heuristique spécialisé&amp;rdquo; conçu pour fournir des résultats pratiques à un stade précoce pour le problème réel spécifique de l&amp;rsquo;optimisation combinatoire. Actuellement, des démonstrations de faisabilité (PoC) sont déjà en cours par diverses entreprises.&lt;/li>
&lt;li>&lt;strong>Le modèle à portes quantiques&lt;/strong> est un &amp;ldquo;ordinateur quantique universel&amp;rdquo; qui a le potentiel de renverser fondamentalement les paradigmes de la science informatique, des simulations rigoureuses en physique et chimie jusqu&amp;rsquo;au décryptage. Cependant, une recherche et développement à long terme est nécessaire pour surmonter l&amp;rsquo;énorme obstacle de la correction d&amp;rsquo;erreurs.&lt;/li>
&lt;/ul>
&lt;p>À l&amp;rsquo;avenir, il est attendu qu&amp;rsquo;un environnement de &lt;strong>&amp;ldquo;Calcul hétérogène (Heterogeneous computing)&amp;rdquo;&lt;/strong> sera construit, où un superordinateur classique (HPC) servira de noyau, tout en faisant appel à des machines de recuit pour les tâches d&amp;rsquo;optimisation et à des ordinateurs quantiques de type porte pour les calculs de chimie quantique.&lt;/p>
&lt;p>Les ordinateurs quantiques sont encore une technologie en développement, mais ils évoluent rapidement tant au niveau du matériel que des algorithmes. Comprendre les mathématiques du modèle d&amp;rsquo;Ising et les bases des circuits quantiques sera une arme majeure pour la prochaine ère quantique native.&lt;/p>
&lt;hr>
&lt;p>&lt;em>Cet article explique de manière exhaustive les concepts fondamentaux de l&amp;rsquo;informatique quantique jusqu&amp;rsquo;aux dernières tendances matérielles. Restez à l&amp;rsquo;écoute des futures tendances de recherche.&lt;/em>&lt;/p></description></item><item><title>Simulation de l'algorithme de Shor en Python</title><link>http://kenji.blog/fr/p/shors-algorithm-simulation-python/</link><pubDate>Fri, 11 Sep 2026 08:00:00 +0900</pubDate><guid>http://kenji.blog/fr/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 Simulation de l'algorithme de Shor en Python" />&lt;h1 id="1-introduction--la-crise-de-la-cryptographie-provoquée-par-les-ordinateurs-quantiques">1. Introduction : La crise de la cryptographie provoquée par les ordinateurs quantiques
&lt;/h1>&lt;p>Une grande partie de la sécurité dans notre société Internet moderne repose sur la &lt;strong>cryptographie à clé publique&lt;/strong> (en particulier le chiffrement RSA). Lorsque nous transmettons nos informations de carte de crédit lors d&amp;rsquo;achats en ligne ou que nous échangeons des données hautement confidentielles, ces communications sont solidement protégées par le chiffrement RSA.&lt;/p>
&lt;p>La sécurité du chiffrement RSA repose sur un fait mathématique : « &lt;strong>la factorisation en nombres premiers de très grands entiers est extrêmement difficile pour les ordinateurs classiques (les PC ou supercalculateurs que nous utilisons habituellement)&lt;/strong> ». Cependant, l&amp;rsquo;« &lt;strong>algorithme de Shor&lt;/strong> » (Shor&amp;rsquo;s Algorithm), publié en 1994 par Peter Shor, a complètement remis en cause ce postulat. Il a été prouvé mathématiquement que si l&amp;rsquo;algorithme de Shor était exécuté sur un ordinateur quantique à grande échelle, il pourrait résoudre en quelques minutes ou quelques heures une factorisation qui prendrait plus de temps que l&amp;rsquo;âge de l&amp;rsquo;univers sur un ordinateur classique.&lt;/p>
&lt;p>Dans cet article, nous expliquerons en détail comment cet algorithme de Shor parvient à effectuer cette factorisation à grande vitesse, de son mécanisme mathématique jusqu&amp;rsquo;à une implémentation de simulation concrète en Python utilisant le framework de calcul quantique &lt;strong>Qiskit&lt;/strong>.&lt;/p>
&lt;hr>
&lt;h1 id="2-le-changement-spectaculaire-de-la-complexité--de-la-fonction-exponentielle-au-temps-polynomial">2. Le changement spectaculaire de la complexité : De la fonction exponentielle au temps polynomial
&lt;/h1>&lt;p>Pourquoi la factorisation en nombres premiers est-elle si difficile ? Même en utilisant le « crible général du corps de nombres » (General Number Field Sieve, GNFS), connu comme le meilleur algorithme de factorisation pour les ordinateurs classiques, sa complexité en temps reste sous-exponentielle.&lt;/p>
&lt;p>La complexité en temps pour factoriser un nombre composé de $N$ chiffres avec une méthode classique est la suivante :&lt;/p>
$$ O\left(\exp\left( c (\log N)^{1/3} (\log \log N)^{2/3} \right)\right) $$
&lt;p>Pour cette raison, il suffit d&amp;rsquo;augmenter la longueur de la clé (par exemple à 2048 ou 4096 bits) pour que le temps de décryptage sur un ordinateur classique devienne irréaliste, atteignant des milliers ou des dizaines de milliers d&amp;rsquo;années.&lt;/p>
&lt;p>Cependant, en utilisant l&amp;rsquo;&lt;strong>algorithme de Shor&lt;/strong> sur un ordinateur quantique, la complexité est considérablement réduite à un temps polynomial par rapport au nombre de bits d&amp;rsquo;entrée $\log N$.&lt;/p>
$$ O((\log N)^3) $$
&lt;p>Cela signifie que si l&amp;rsquo;on double le nombre de bits, le temps de calcul augmente de manière astronomique pour un ordinateur classique, alors qu&amp;rsquo;il n&amp;rsquo;est multiplié que par 8 environ pour un ordinateur quantique. Cette &lt;strong>réduction de la classe de complexité d&amp;rsquo;un temps exponentiel à un temps polynomial (inclusion dans la classe BQP)&lt;/strong> est ce qui rend l&amp;rsquo;algorithme de Shor si impressionnant.&lt;/p>
&lt;div class="mermaid">graph TD
A["Augmentation de la taille de l'entrée N (nombre de bits)"] --> B{"Choix de l'algorithme"}
B -->|Classique : Crible général du corps de nombres| C["Augmentation sous-exponentielle O(exp(...))"]
B -->|Quantique : Algorithme de Shor| D["Temps polynomial O((log N)^3)"]
C --> E["Milliers à milliards d'années (Indéchiffrable)"]
D --> F["Quelques minutes à quelques heures (Déchiffrable en un temps réaliste)"]&lt;/div>
&lt;hr>
&lt;h1 id="3-vue-densemble-de-lalgorithme-et-contexte-mathématique">3. Vue d&amp;rsquo;ensemble de l&amp;rsquo;algorithme et contexte mathématique
&lt;/h1>&lt;p>En réalité, l&amp;rsquo;algorithme de Shor n&amp;rsquo;effectue pas toutes les opérations sur un ordinateur quantique. Il repose sur la collaboration entre des pré-traitements et post-traitements par un ordinateur classique, et la partie centrale (l&amp;rsquo;algorithme de recherche de période) exécutée par un ordinateur quantique.&lt;/p>
&lt;p>Le flux global de l&amp;rsquo;algorithme est le suivant :&lt;/p>
&lt;div class="mermaid">graph TD
A["Entrée : Nombre composé N à factoriser"] --> B["Choisir un nombre aléatoire a tel que a &lt; N"]
B --> C{"gcd(a, N) > 1 ?"}
C -- "Oui" --> D["Afficher le facteur trivial gcd(a, N) et terminer"]
C -- "Non" --> E["Trouver la période r de f(x) = a^x mod N avec un algorithme quantique"]
E --> F{"r est pair ET a^(r/2) ≢ -1 mod N ?"}
F -- "Non" --> B
F -- "Oui" --> G["Calculer les facteurs p = gcd(a^(r/2) - 1, N), q = gcd(a^(r/2) + 1, N)"]
G --> H["Sortie : p, q"]&lt;/div>
&lt;h2 id="réduction-de-la-factorisation-au-problème-de-recherche-de-période">Réduction de la factorisation au problème de recherche de période
&lt;/h2>&lt;p>L&amp;rsquo;intuition géniale de Shor réside dans la transformation du « &lt;strong>problème de factorisation&lt;/strong> » en un « &lt;strong>problème de recherche de période&lt;/strong> » (Order Finding Problem).&lt;/p>
&lt;p>Considérons un entier $N$ (le nombre à factoriser) et un entier premier avec lui $a$ ($1 &lt; a &lt; N$). Nous définissons la fonction d&amp;rsquo;exponentiation modulaire suivante :&lt;/p>
$$ f(x) = a^x \bmod N $$
&lt;p>Cette fonction possède une certaine période $r$. Cela signifie que pour tout $x$, on a $f(x+r) = f(x)$. En particulier pour $x=0$, le plus petit entier positif $r$ tel que :&lt;/p>
$$ a^r \equiv 1 \pmod N $$
&lt;p>est appelé l&amp;rsquo;« ordre » (Order) de $a$ modulo $N$. Si nous parvenons à trouver cette période $r$, nous pouvons en déduire les facteurs premiers de la manière suivante.&lt;/p>
&lt;p>En transformant l&amp;rsquo;équation, on obtient :
&lt;/p>
$$ a^r - 1 \equiv 0 \pmod N $$
&lt;p>
Si $r$ est pair, nous pouvons factoriser en utilisant la différence de deux carrés :
&lt;/p>
$$ (a^{r/2} - 1)(a^{r/2} + 1) \equiv 0 \pmod N $$
&lt;p>Cela implique que $N$ partage un diviseur commun avec $(a^{r/2} - 1)$ ou $(a^{r/2} + 1)$ (à condition que $a^{r/2} \not\equiv -1 \pmod N$). Ainsi, en utilisant l&amp;rsquo;algorithme d&amp;rsquo;Euclide pour calculer :&lt;/p>
$$ p = \gcd(a^{r/2} - 1, N) $$
$$ q = \gcd(a^{r/2} + 1, N) $$
&lt;p>nous pouvons trouver des facteurs non triviaux $p$ et $q$ de $N$. Ces calculs (le plus grand commun diviseur et la génération de nombres aléatoires) sont très rapides sur un ordinateur classique. Le cœur du problème est donc de savoir &lt;strong>comment trouver rapidement la période $r$&lt;/strong>. Sur un ordinateur classique, trouver cette période requiert un temps exponentiel. C&amp;rsquo;est ici que l&amp;rsquo;ordinateur quantique entre en jeu.&lt;/p>
&lt;hr>
&lt;h1 id="4-la-partie-algorithmique-quantique--le-mécanisme-de-recherche-de-période">4. La partie algorithmique quantique : Le mécanisme de recherche de période
&lt;/h1>&lt;p>La sous-routine permettant de trouver la période $r$ à l&amp;rsquo;aide d&amp;rsquo;un ordinateur quantique se compose des 4 étapes suivantes :&lt;/p>
&lt;div class="mermaid">graph LR
subgraph "Évolution de l'état quantique"
S1["|0⟩|0⟩ (Initialisation)"] --> S2["Porte H : Superposition Σ|x⟩|0⟩"]
S2 --> S3["Oracle U : Σ|x⟩|a^x mod N⟩"]
S3 --> S4["QFT : Extraction de la période par interférence"]
S4 --> S5["Mesure : Obtention de la valeur approchée y"]
end&lt;/div>
&lt;h2 id="étape-1--initialisation-des-registres-quantiques-et-superposition">Étape 1 : Initialisation des registres quantiques et superposition
&lt;/h2>&lt;p>Tout d&amp;rsquo;abord, nous préparons deux registres quantiques. Le premier registre sert à entrer l&amp;rsquo;état, et le second sert à stocker le résultat du calcul de la fonction.
L&amp;rsquo;état initial est entièrement $|0\rangle$.&lt;/p>
$$ |\psi_0\rangle = |0\rangle_1 |0\rangle_2 $$
&lt;p>Nous appliquons une porte de Hadamard (Hadamard Gate) à tous les qubits du premier registre, créant un état de superposition équiprobable de toutes les entrées possibles $x$ (de $0$ à $Q-1$, avec $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>Ainsi, l&amp;rsquo;ordinateur quantique conserve simultanément l&amp;rsquo;état pour les $Q$ entrées en une seule opération. C&amp;rsquo;est la source puissante du &lt;strong>parallélisme quantique&lt;/strong>.&lt;/p>
&lt;h2 id="étape-2--application-de-la-fonction-oracle-exponentiation-modulaire">Étape 2 : Application de la fonction oracle (exponentiation modulaire)
&lt;/h2>&lt;p>Ensuite, nous utilisons un circuit quantique $U_f$ pour calculer la fonction $f(x) = a^x \bmod N$ et stockons le résultat dans le second registre.&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>À ce stade, le premier et le second registre sont dans un état d&amp;rsquo;&lt;strong>intrication quantique&lt;/strong> (entanglement). Si (hypothétiquement) nous observions le second registre et obtenions une valeur spécifique $k = a^{x_0} \bmod N$, l&amp;rsquo;état du premier registre s&amp;rsquo;effondrerait sur la superposition des $x$ qui donnent cette valeur $k$. Puisque la fonction a une période $r$, les états restants seront espacés de $r$, soit $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>Cependant, ce n&amp;rsquo;est pas $x_0$ que nous voulons connaître, mais la période $r$ elle-même. Il est impossible d&amp;rsquo;observer directement $r$ à partir de cet état. C&amp;rsquo;est pourquoi nous utilisons la transformée de Fourier quantique.&lt;/p>
&lt;h2 id="étape-3--interférence-de-phase-par-la-transformée-de-fourier-quantique-qft">Étape 3 : Interférence de phase par la transformée de Fourier quantique (QFT)
&lt;/h2>&lt;p>Nous appliquons la &lt;strong>transformée de Fourier quantique&lt;/strong> (Quantum Fourier Transform, QFT) au premier registre. La QFT est la version quantique de la transformée de Fourier discrète classique et convertit les amplitudes des vecteurs d&amp;rsquo;état. L&amp;rsquo;action de la QFT sur l&amp;rsquo;état de base $|x\rangle$ est définie comme suit :&lt;/p>
$$ QFT |x\rangle = \frac{1}{\sqrt{Q}} \sum_{y=0}^{Q-1} \omega^{xy} |y\rangle $$
&lt;p>Où $\omega = e^{2\pi i / Q}$.&lt;/p>
&lt;p>Lorsque la QFT est appliquée, les amplitudes de l&amp;rsquo;état interfèrent. Bien que nous omettions les détails mathématiques, lorsqu&amp;rsquo;on applique la QFT à un état ayant une période $r$, les ondes provoquent une &lt;strong>interférence constructive&lt;/strong> uniquement lorsque $y$ est très proche d&amp;rsquo;un multiple entier de $Q/r$. Pour les autres états, les amplitudes de probabilité s&amp;rsquo;annulent à cause d&amp;rsquo;une &lt;strong>interférence destructive&lt;/strong> et s&amp;rsquo;approchent de zéro.&lt;/p>
&lt;h2 id="étape-4--mesure-et-développement-en-fractions-continues">Étape 4 : Mesure et développement en fractions continues
&lt;/h2>&lt;p>Enfin, nous mesurons le premier registre. La valeur mesurée $y$ satisfait très probablement à la condition suivante :&lt;/p>
$$ y \approx c \frac{Q}{r} \implies \frac{y}{Q} \approx \frac{c}{r} $$
&lt;p>($c$ est un entier inconnu tel que $0 \le c &lt; r$)&lt;/p>
&lt;p>En appliquant un algorithme classique de &lt;strong>développement en fractions continues&lt;/strong> (Continued Fraction Expansion) au nombre rationnel obtenu $y/Q$, nous pouvons calculer la fraction approchée $c/r$ et extraire la période $r$ du dénominateur.&lt;/p>
&lt;hr>
&lt;h1 id="5-implémentation-de-simulation-avec-python-et-qiskit">5. Implémentation de simulation avec Python et Qiskit
&lt;/h1>&lt;p>Puisque la théorie seule peut être abstraite, simulons l&amp;rsquo;algorithme de Shor en pratique avec Python et le framework quantique d&amp;rsquo;IBM, &lt;strong>Qiskit&lt;/strong>.&lt;/p>
&lt;p>Nous implémenterons ici le scénario le plus classique et le plus célèbre : &lt;strong>« factoriser $N=15$ en utilisant $a=7$ »&lt;/strong>.&lt;/p>
&lt;h2 id="préparation-de-lenvironnement-dexécution">Préparation de l&amp;rsquo;environnement d&amp;rsquo;exécution
&lt;/h2>&lt;p>Veuillez installer Qiskit au préalable.&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="aperçu-du-code-de-limplémentation-python">Aperçu du code de l&amp;rsquo;implémentation Python
&lt;/h2>&lt;p>Le code suivant est un exemple d&amp;rsquo;implémentation de l&amp;rsquo;algorithme de Shor spécifiquement pour $N=15$ et $a=7$. Étant donné que le coût de calcul pour construire un circuit d&amp;rsquo;exponentiation modulaire généralisé est trop élevé sur les simulateurs actuels, la logique des portes pour le cas particulier de $a=7$ a été codée en dur (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. Fonction pour construire la transformée de Fourier quantique inverse (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;Génère le circuit de la transformée de Fourier quantique inverse pour 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"># Portes SWAP pour inverser l&amp;#39;ordre&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"># Application des portes de phase contrôlée et 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. Fonction pour construire l&amp;#39;opération contrôlée d&amp;#39;exponentiation modulaire 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;Génère la porte U contrôlée pour un &amp;#39;a&amp;#39; spécifique et une puissance (Dédié à 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"># Logique codée en dur pour 7^x mod 15 avec 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. Construction du circuit quantique 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 : nombre de bits du registre de contrôle&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Le registre cible utilise 4 bits pour représenter de 0 à 15&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">qc&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">QuantumCircuit&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">n_count&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="mi">4&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">n_count&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1"># Initialisation du 1er registre (registre de contrôle) pour créer la superposition&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"># Initialisation du 2ème registre (registre cible) à |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"># Application de l&amp;#39;opération d&amp;#39;exponentiation modulaire contrôlée (Oracle)&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"># Applique l&amp;#39;opération à la puissance 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"># Application de la transformée de Fourier quantique inverse au 1er registre&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"># Mesure du 1er registre&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"># --- Section d&amp;#39;exécution ---&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"># Utilisation de 8 qubits pour le registre de contrôle (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;Paramètres de recherche : 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 contrôle=&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"># Génération du circuit&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"># Exécution avec le simulateur&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"># La transpilation est recommandée dans les versions récentes 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">Résultats de la mesure (chaîne de bits : nombre d&amp;#39;observations) :&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"> fois&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"># Post-traitement classique : Détermination de la période r via les fractions continues&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">--- Calcul de la période et factorisation ---&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"># Conversion de la chaîne de bits en décimal&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"># Phase = valeur mesurée / 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"># Obtention de la fraction approchée. Le dénominateur max est 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;Mesure : &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"> | Phase : &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"> | Fraction continue : &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"> | Période estimée 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"># Vérification : la période r est-elle paire et produit-elle un résultat valide ?&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; Succès ! Les facteurs 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"> sont &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"> et &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; Facteurs triviaux uniquement. À refaire.&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; Échec car la période est impaire.&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="explication-du-code-et-analyse-des-résultats">Explication du code et analyse des résultats
&lt;/h2>&lt;p>L&amp;rsquo;exécution du code ci-dessus montre des pics spécifiques (valeurs mesurées) avec une forte probabilité pour le registre de contrôle. Dans le cas où &lt;code>n_count=8&lt;/code> ($Q=256$), si nous avions un ordinateur quantique idéal (ou un simulateur), les valeurs &lt;code>0&lt;/code>, &lt;code>64&lt;/code>, &lt;code>128&lt;/code>, &lt;code>192&lt;/code> apparaîtraient avec une probabilité écrasante.&lt;/p>
&lt;p>En divisant ces valeurs par $Q=256$, nous obtenons les phases respectives $y/Q$ de $0.0$, $0.25$, $0.5$ et $0.75$.
Le développement en fractions continues de ces phases donne :&lt;/p>
&lt;ul>
&lt;li>$0.25 \to 1/4$ (Période estimée $r=4$)&lt;/li>
&lt;li>$0.50 \to 1/2$ (Période estimée $r=2$)&lt;/li>
&lt;li>$0.75 \to 3/4$ (Période estimée $r=4$)&lt;/li>
&lt;/ul>
&lt;p>En utilisant la période $r=4$ ainsi obtenue, nous calculons les facteurs premiers.
Puisque $a=7$ et $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>Nous avons réussi brillamment la factorisation de $15 = 3 \times 5$.&lt;/p>
&lt;blockquote>
&lt;p>[!TIP]
Si la valeur mesurée est $y=128$ (phase $0.5$), le dénominateur devient $2$, et nous obtenons un diviseur de la vraie période au lieu de $r=4$. Dans ce cas, nous pouvons relancer l&amp;rsquo;algorithme ou tester les multiples de la période $r$ obtenue pour trouver la vraie période.&lt;/p>
&lt;/blockquote>
&lt;hr>
&lt;h1 id="6-défis-pour-lapplication-pratique-et-les-limites-de-lère-nisq">6. Défis pour l&amp;rsquo;application pratique et les limites de l&amp;rsquo;ère NISQ
&lt;/h1>&lt;p>Bien qu&amp;rsquo;il soit facile de factoriser $N=15$ sur un simulateur, factoriser le chiffrement RSA-2048 utilisé dans le monde réel (un nombre de 617 chiffres) se heurte encore à de nombreux obstacles avec les ordinateurs quantiques actuels.&lt;/p>
&lt;p>L&amp;rsquo;époque dans laquelle nous vivons actuellement est appelée l&amp;rsquo;&lt;strong>ère NISQ (Noisy Intermediate-Scale Quantum : ordinateurs quantiques bruités de taille intermédiaire)&lt;/strong>. Les qubits sont extrêmement sensibles au bruit ambiant et subissent de la « décohérence » pendant les calculs, ce qui détruit leur état.&lt;/p>
&lt;p>Pour exécuter avec précision un circuit profond (avec de nombreuses portes quantiques) comme l&amp;rsquo;algorithme de Shor, il est indispensable de disposer de la &lt;strong>correction d&amp;rsquo;erreurs quantiques&lt;/strong> (Quantum Error Correction). Pour créer un seul « qubit logique » sans bruit, il faut encoder des milliers de « qubits physiques » en utilisant des méthodes comme le code de surface (Surface Code).&lt;/p>
&lt;p>Pour casser le chiffrement RSA 2048 bits, on estime qu&amp;rsquo;il faudrait quelques milliers de qubits logiques parfaits, ce qui nécessiterait un ordinateur quantique tolérant aux pannes (fault-tolerant) doté de &lt;strong>plusieurs millions à dizaines de millions de qubits physiques&lt;/strong>. Les processeurs quantiques les plus avancés d&amp;rsquo;aujourd&amp;rsquo;hui ne comptant que quelques centaines à quelques milliers de qubits physiques, les chiffrements du monde entier ne seront pas brisés dans l&amp;rsquo;immédiat.&lt;/p>
&lt;blockquote>
&lt;p>[!WARNING]
Cependant, il existe un modèle de menace appelé « Store Now, Decrypt Later » (Sauvegarder maintenant, déchiffrer plus tard). Des attaquants pourraient stocker massivement les communications chiffrées actuelles et les déchiffrer entièrement dans 10 à 20 ans dès qu&amp;rsquo;un ordinateur quantique suffisamment puissant sera construit.&lt;/p>
&lt;/blockquote>
&lt;hr>
&lt;h1 id="7-transition-vers-la-cryptographie-post-quantique-pqc">7. Transition vers la cryptographie post-quantique (PQC)
&lt;/h1>&lt;p>Pour se préparer à l&amp;rsquo;arrivée du « Q-Day » (le jour où les ordinateurs quantiques briseront la cryptographie), les cryptographes du monde entier, menés par le National Institute of Standards and Technology (NIST) américain, élaborent la &lt;strong>cryptographie post-quantique (Post-Quantum Cryptography, PQC)&lt;/strong>.&lt;/p>
&lt;p>La PQC est basée sur de nouveaux problèmes mathématiques (problèmes de réseaux euclidiens, polynômes multivariés, fonctions de hachage, etc.) que l&amp;rsquo;on considère impossibles à résoudre efficacement même avec l&amp;rsquo;algorithme de Shor (ou l&amp;rsquo;algorithme de Grover). Des algorithmes comme « CRYSTALS-Kyber » et « CRYSTALS-Dilithium » ont déjà été sélectionnés comme normes standards, et leur intégration commence progressivement dans les protocoles de communication des navigateurs web ou iMessage d&amp;rsquo;Apple.&lt;/p>
&lt;p>Pour les ingénieurs qui gèrent les infrastructures informatiques, intégrer l&amp;rsquo;« agilité cryptographique » (la capacité à changer rapidement de méthode de chiffrement) pour passer du RSA existant ou de la cryptographie sur les courbes elliptiques à la PQC, constituera une mission majeure dans le futur.&lt;/p>
&lt;hr>
&lt;h1 id="8-conclusion">8. Conclusion
&lt;/h1>&lt;p>Dans cet article, nous avons fourni une explication exhaustive d&amp;rsquo;environ 10 000 caractères, allant du contexte mathématique théorique de l&amp;rsquo;algorithme de Shor aux mécanismes d&amp;rsquo;extraction de période par la transformée de Fourier quantique, jusqu&amp;rsquo;au code de simulation concret avec Python et Qiskit.&lt;/p>
&lt;p>Le fait que les lois physiques du monde microscopique de la mécanique quantique bouleversent fondamentalement les fondations de l&amp;rsquo;informatique macroscopique telles que la théorie de la complexité et la cryptographie est l&amp;rsquo;un des changements de paradigme les plus excitants de l&amp;rsquo;histoire des sciences. Il est crucial de continuer à suivre cette bataille en cours entre l&amp;rsquo;évolution des technologies informatiques quantiques et les nouvelles technologies cryptographiques conçues pour y résister.&lt;/p>
&lt;p>N&amp;rsquo;hésitez pas à exécuter le code Python présenté dans cet article sur votre propre environnement pour expérimenter la « magie du calcul » créée par la superposition et l&amp;rsquo;interférence des états quantiques.&lt;/p>
&lt;hr>
&lt;p>&lt;strong>Références&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>Documentation Qiskit : &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>【Illustration PQC】 Comparaison des principaux algorithmes de la cryptographie post-quantique</title><link>http://kenji.blog/fr/p/post-quantum-cryptography-algorithms-comparison/</link><pubDate>Fri, 11 Sep 2026 07:00:00 +0900</pubDate><guid>http://kenji.blog/fr/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 【Illustration PQC】 Comparaison des principaux algorithmes de la cryptographie post-quantique" />&lt;h2 id="1-introduction--la--crise-de-la-cryptographie--provoquée-par-les-ordinateurs-quantiques">1. Introduction : La « crise de la cryptographie » provoquée par les ordinateurs quantiques
&lt;/h2>&lt;p>Dans la société Internet moderne, la cryptographie à clé publique est une infrastructure indispensable pour protéger la confidentialité des communications et l&amp;rsquo;intégrité des données. Les méthodes de cryptographie largement utilisées aujourd&amp;rsquo;hui, telles que RSA et la cryptographie sur les courbes elliptiques (ECC), reposent sur des barrières mathématiques telles que la « difficulté de la factorisation de très grands nombres composés » ou la « difficulté du problème du logarithme discret sur les courbes elliptiques » pour garantir leur sécurité. Avec les ordinateurs classiques (les ordinateurs que nous utilisons actuellement, y compris les superordinateurs), il a été prouvé qu&amp;rsquo;il faudrait plus de temps que l&amp;rsquo;âge de l&amp;rsquo;univers pour résoudre ces problèmes mathématiques, ce qui constitue le fondement de leur sécurité.&lt;/p>
&lt;p>Cependant, cette prémisse solide est sur le point d&amp;rsquo;être fondamentalement bouleversée par l&amp;rsquo;avancée de la théorie et de la mise en pratique des &lt;strong>ordinateurs quantiques&lt;/strong>. En 1994, l&amp;rsquo;algorithme de Shor, publié par le cryptographe Peter Shor (« &lt;strong>Algorithme de Shor&lt;/strong> »), a prouvé théoriquement que les problèmes de factorisation et de logarithme discret pourraient être résolus en « temps polynomial » s&amp;rsquo;ils étaient exécutés sur un ordinateur quantique universel tolérant aux pannes (CRQC : Cryptographically Relevant Quantum Computer) d&amp;rsquo;une capacité suffisante. Cela signifie que toutes les cryptographies à clé publique utilisées actuellement seront rendues inefficaces.&lt;/p>
&lt;div class="mermaid">graph TD
A["Ordinateur quantique à grande échelle (CRQC)"] -->|Exécution| B["Algorithme de Shor"]
B -->|Déchiffrement en temps polynomial| C["Problème de factorisation en nombres premiers (RSA)"]
B -->|Déchiffrement en temps polynomial| D["Problème du logarithme discret (ECC / ECDSA)"]
C --> E["Écoute de communications chiffrées, altération de données, usurpation d'identité"]
D --> E
F["Store Now, Decrypt Later (SNDL)"] --> E&lt;/div>
&lt;p>Il est très dangereux de penser que « l&amp;rsquo;achèvement à grande échelle des ordinateurs quantiques n&amp;rsquo;est pas prévu avant plusieurs décennies, il n&amp;rsquo;y a donc pas de problème ». En effet, la méthode d&amp;rsquo;attaque appelée &lt;strong>Store Now, Decrypt Later (SNDL : Stocker maintenant, déchiffrer plus tard)&lt;/strong> est déjà une menace réelle. Il s&amp;rsquo;agit d&amp;rsquo;une attaque dans laquelle des États malveillants ou des groupes de pirates stockent massivement les données de communication chiffrées actuelles (comme le trafic TLS) sur des supports de stockage, afin de les déchiffrer toutes dès qu&amp;rsquo;un ordinateur quantique puissant sera disponible à l&amp;rsquo;avenir. Les secrets d&amp;rsquo;État, les informations d&amp;rsquo;infrastructure et les données médicales qui doivent être protégées à long terme sont déjà exposés à cette menace.&lt;/p>
&lt;p>De plus, il existe l&amp;rsquo;&lt;strong>algorithme de Grover&lt;/strong>, découvert en 1996, qui s&amp;rsquo;applique à la cryptographie à clé symétrique (comme AES) et aux fonctions de hachage (comme SHA-256). Cet algorithme réduit la complexité de l&amp;rsquo;attaque par force brute à sa racine carrée. En d&amp;rsquo;autres termes, le niveau de sécurité de l&amp;rsquo;AES-128 est effectivement réduit de moitié, pour atteindre 2 à la puissance 64. Par conséquent, à l&amp;rsquo;ère quantique, il est recommandé d&amp;rsquo;utiliser des longueurs de clés et des longueurs de hachage plus grandes, telles que l&amp;rsquo;AES-256 et le SHA-384.&lt;/p>
&lt;p>Pour faire face à cette crise cryptographique sans précédent, une nouvelle &lt;strong>cryptographie post-quantique (Post-Quantum Cryptography : PQC)&lt;/strong> a vu le jour, reposant sur de nouveaux problèmes mathématiques difficiles à déchiffrer même avec des ordinateurs quantiques. Cet article explique de manière très détaillée, sur la base des résultats du processus de standardisation PQC mené par le National Institute of Standards and Technology (NIST) des États-Unis, les principaux algorithmes PQC, depuis leur contexte mathématique jusqu&amp;rsquo;à leurs mécanismes et la comparaison de leurs architectures.&lt;/p>
&lt;hr>
&lt;h2 id="2-aperçu-et-histoire-du-projet-de-standardisation-pqc-par-le-nist">2. Aperçu et histoire du projet de standardisation PQC par le NIST
&lt;/h2>&lt;p>La transition des technologies cryptographiques, qui implique la refonte des protocoles, la mise à jour des systèmes et le remplacement du matériel, prendra des années, voire des décennies. C&amp;rsquo;est pourquoi les cryptographes du monde entier ont commencé très tôt à faire des recherches sur la PQC. Le NIST (National Institute of Standards and Technology) américain a joué un rôle central dans ce domaine. En 2016, le NIST a lancé un appel public pour le processus de standardisation de la PQC et a accepté des propositions de tout nouveaux algorithmes cryptographiques de la part de la communauté cryptographique mondiale.&lt;/p>
&lt;p>Les deux principales catégories ciblées par la standardisation étaient les suivantes :&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Cryptographie à clé publique / Mécanisme d&amp;rsquo;encapsulation de clé (KEM : Key Encapsulation Mechanism)&lt;/strong> : Mécanisme permettant de partager (distribuer) en toute sécurité une clé symétrique pour chiffrer le canal de communication dans des connexions telles que TLS.&lt;/li>
&lt;li>&lt;strong>Signatures numériques (Digital Signatures)&lt;/strong> : Mécanisme permettant de prouver, dans les mises à jour logicielles et les certificats électroniques, que les données n&amp;rsquo;ont pas été altérées et qu&amp;rsquo;il n&amp;rsquo;y a pas d&amp;rsquo;usurpation d&amp;rsquo;identité de l&amp;rsquo;expéditeur (authenticité).&lt;/li>
&lt;/ol>
&lt;p>Après environ six années de concurrence acharnée en matière d&amp;rsquo;évaluation, d&amp;rsquo;analyse et de cryptanalyse (Round 1 à Round 3), une évaluation supplémentaire (Round 4) a été menée pour certains algorithmes. En conséquence, les algorithmes suivants ont été officiellement publiés en tant que Federal Information Processing Standards (FIPS) en 2024, s&amp;rsquo;établissant comme les futures normes mondiales.&lt;/p>
&lt;ul>
&lt;li>&lt;strong>FIPS 203 (ML-KEM)&lt;/strong> : KEM basé sur CRYSTALS-Kyber&lt;/li>
&lt;li>&lt;strong>FIPS 204 (ML-DSA)&lt;/strong> : Signature numérique basée sur CRYSTALS-Dilithium&lt;/li>
&lt;li>&lt;strong>FIPS 205 (SLH-DSA)&lt;/strong> : Signature basée sur le hachage sans état (stateless) reposant sur SPHINCS+&lt;/li>
&lt;li>&lt;strong>(À formuler ultérieurement) FN-DSA&lt;/strong> : Signature numérique basée sur FALCON&lt;/li>
&lt;/ul>
&lt;p>Ces algorithmes sélectionnés reposent chacun sur des « problèmes de difficulté » mathématiques différents. Ainsi, si une vulnérabilité fatale venait à être découverte dans l&amp;rsquo;un des algorithmes à l&amp;rsquo;avenir, la diversité (Crypto Agility) est assurée pour éviter que l&amp;rsquo;ensemble du système ne s&amp;rsquo;effondre. Dans le processus de standardisation, la cryptographie basée sur les réseaux (Lattice-based cryptography) a joué le rôle principal en raison de ses performances, mais la cryptographie basée sur le hachage et la cryptographie basée sur les codes ont été adoptées comme de solides solutions de secours.&lt;/p>
&lt;hr>
&lt;h2 id="3-classification-des-principales-approches-mathématiques-de-la-pqc">3. Classification des principales approches mathématiques de la PQC
&lt;/h2>&lt;p>Les algorithmes PQC sont principalement classés en cinq catégories en fonction des problèmes mathématiques qui sous-tendent leur sécurité. Dans cet article, nous approfondirons particulièrement les trois premiers.&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Cryptographie basée sur les réseaux (Lattice-based Cryptography)&lt;/strong> :
Elle repose sur le problème du vecteur le plus court (SVP) et le problème du vecteur le plus proche (CVP) dans un espace de réseau multidimensionnel, ainsi que sur le problème LWE qui en dérive. Elle est au cœur de la standardisation du NIST, et Kyber, Dilithium et FALCON en font partie. Elle offre le meilleur équilibre entre la vitesse de traitement, la taille de la clé publique et la taille du texte chiffré, ce qui la rend adaptée à une utilisation polyvalente.&lt;/li>
&lt;li>&lt;strong>Cryptographie basée sur le hachage (Hash-based Cryptography)&lt;/strong> :
Elle fonde sa sécurité uniquement sur la « résistance aux collisions » et la « propriété unidirectionnelle » des fonctions de hachage cryptographique (telles que SHA-2 et SHAKE). Bien qu&amp;rsquo;elle ne soit applicable qu&amp;rsquo;aux signatures numériques (comme SPHINCS+), ses preuves de sécurité sont les plus robustes et elle se caractérise par une résistance extrêmement élevée aux attaques mathématiques inconnues.&lt;/li>
&lt;li>&lt;strong>Cryptographie basée sur les codes (Code-based Cryptography)&lt;/strong> :
Basée sur la théorie des codes correcteurs d&amp;rsquo;erreurs, elle dépend de la difficulté du problème du décodage de syndrome (Syndrome Decoding Problem). Le Classic McEliece, proposé dans les années 1970, en est représentatif et possède une très longue histoire et une sécurité éprouvée, bien que la taille de la clé publique soit extrêmement importante (de l&amp;rsquo;ordre du mégaoctet).&lt;/li>
&lt;li>&lt;strong>Cryptographie polynomiale multivariée (Multivariate Polynomial Cryptography)&lt;/strong> :
Elle repose sur la difficulté de résoudre des systèmes d&amp;rsquo;équations quadratiques à plusieurs variables sur un corps fini (problème MQ). Principalement proposée pour les signatures numériques (comme Rainbow), une méthode d&amp;rsquo;attaque puissante permettant de la déchiffrer en quelques jours sur un simple PC a été découverte lors du dernier round du NIST, entraînant l&amp;rsquo;élimination de nombreux algorithmes de la standardisation.&lt;/li>
&lt;li>&lt;strong>Cryptographie basée sur les isogénies (Isogeny-based Cryptography)&lt;/strong> :
Elle repose sur le problème de recherche de chemin sur des graphes d&amp;rsquo;isogénies de courbes elliptiques. Avec des tailles de clé très petites, elle était attendue comme le successeur légitime de l&amp;rsquo;ECC, mais « SIKE », le candidat final, a été complètement déchiffré en seulement quelques heures sur un PC normal en 2022 à l&amp;rsquo;aide de mathématiques classiques (comme l&amp;rsquo;attaque de Castryck-Decru), symbolisant la fin dramatique, ainsi que la difficulté et le danger liés à la conception de la PQC.&lt;/li>
&lt;/ol>
&lt;hr>
&lt;h2 id="4-les-abysses-de-la-cryptographie-sur-les-réseaux--les-bases-mathématiques-du-problème-lwe-et-du-module-lwe">4. Les abysses de la cryptographie sur les réseaux : Les bases mathématiques du problème LWE et du Module-LWE
&lt;/h2>&lt;p>Considérée aujourd&amp;rsquo;hui comme la plus prometteuse et devenue le centre de la standardisation, voici la &lt;strong>cryptographie basée sur les réseaux (Lattice cryptography)&lt;/strong>. À la base de sa sécurité se trouve le &lt;strong>problème LWE (Learning with Errors : Apprentissage avec erreurs)&lt;/strong>. Proposé par Oded Regev en 2005, cette réalisation historique lui a valu le prix Gödel. Il est impossible de parler de la PQC moderne sans comprendre le problème LWE.&lt;/p>
&lt;h3 id="41-quest-ce-que-le-problème-lwe-learning-with-errors-">4.1. Qu&amp;rsquo;est-ce que le problème LWE (Learning with Errors) ?
&lt;/h3>&lt;p>Considérons tout d&amp;rsquo;abord un simple système d&amp;rsquo;équations linéaires. Sous un certain module $q$ (modulo $q$), supposons que nous ayons une matrice aléatoire connue $A$, un vecteur secret inconnu $\vec{s}$, et que leur produit $\vec{b}$ soit donné.&lt;/p>
$$ \vec{b} = A\vec{s} \pmod q $$
&lt;p>Dans ce cas, il est facile de trouver le vecteur inconnu $\vec{s}$ à partir des informations publiques $A$ et $\vec{b}$. En utilisant un algorithme classique comme « l&amp;rsquo;élimination de Gauss (ou pivot de Gauss) », on peut facilement calculer $\vec{s}$ en temps polynomial.&lt;/p>
&lt;p>Cependant, si l&amp;rsquo;on ajoute à cette équation une « petite erreur intentionnelle (bruit) », le niveau de difficulté du problème augmente considérablement. C&amp;rsquo;est ce qu&amp;rsquo;on appelle le &lt;strong>problème LWE&lt;/strong>.&lt;/p>
&lt;p>On prépare un vecteur secret inconnu $\vec{s} \in \mathbb{Z}_q^n$ et une matrice choisie au hasard $A \in \mathbb{Z}_q^{m \times n}$. De plus, un vecteur d&amp;rsquo;erreur $\vec{e} \in \mathbb{Z}_q^m$ dont « la valeur des éléments est suffisamment petite » est choisi selon une distribution normale ou binomiale, et $\vec{b}$ est calculé comme suit.&lt;/p>
$$ \vec{b} = A\vec{s} + \vec{e} \pmod q $$
&lt;p>Le &lt;strong>problème Search LWE (LWE de recherche)&lt;/strong> consiste à « trouver l&amp;rsquo;information secrète $\vec{s}$ à partir des informations publiques $(A, \vec{b})$ ». En raison de la présence de cette erreur $\vec{e}$, toute tentative d&amp;rsquo;utiliser des méthodes de résolution algébriques telles que l&amp;rsquo;élimination de Gauss fera que l&amp;rsquo;erreur $\vec{e}$ s&amp;rsquo;amplifiera de manière exponentielle lors de l&amp;rsquo;addition et de la soustraction des équations, devenant finalement indiscernable d&amp;rsquo;une valeur aléatoire et conduisant à un échec.&lt;/p>
&lt;p>La puissance du problème LWE réside dans le fait qu&amp;rsquo;il existe une forte preuve théorique (réduction) affirmant que le problème LWE ne peut pas non plus être résolu en moyenne (Average-case), à moins qu&amp;rsquo;il n&amp;rsquo;existe un algorithme quantique capable de résoudre le problème du plus court vecteur de décision (GapSVP) ou le problème des vecteurs indépendants les plus courts (SIVP), qui sont des problèmes de « complexité dans le pire des cas (Worst-case hardness) » sur les réseaux. En d&amp;rsquo;autres termes, même pour des clés de chiffrement générées aléatoirement, une sécurité robuste, soutenue par des limites théoriques, est garantie.&lt;/p>
&lt;h3 id="42-amélioration-drastique-de-lefficacité-grâce-à-ring-lwe-et-module-lwe">4.2. Amélioration drastique de l&amp;rsquo;efficacité grâce à Ring-LWE et Module-LWE
&lt;/h3>&lt;p>Le problème LWE normal (Standard LWE) a une base de sécurité très claire, mais n&amp;rsquo;est pas pratique car la taille de la matrice $A$ devient très grande et les tailles de clés atteignent le niveau du mégaoctet. L&amp;rsquo;approche proposée a donc été d&amp;rsquo;utiliser des anneaux de polynômes (Polynomial Rings) pour lui donner une structure algébrique.&lt;/p>
&lt;p>Dans le &lt;strong>problème Ring-LWE&lt;/strong>, on utilise des éléments (polynômes) d&amp;rsquo;un certain anneau de polynômes $R_q$ au lieu de simples vecteurs et matrices. Dans la norme NIST, l&amp;rsquo;anneau de polynômes cyclotomiques suivant est généralement utilisé.&lt;/p>
$$ R_q = \mathbb{Z}_q[X]/(X^n + 1) $$
&lt;p>Ici, $n$ est une puissance de 2 (par exemple 256) et $q$ est un nombre premier approprié. Sur cet anneau, on calcule $b = a \cdot s + e \pmod q$ en utilisant les éléments $a, s, e \in R_q$. Comme un seul polynôme $a$ possède $n$ coefficients, les données peuvent être considérablement compressées. De plus, l&amp;rsquo;utilisation d&amp;rsquo;une version de transformée de Fourier rapide (FFT) sur corps fini, appelée &lt;strong>NTT (Number Theoretic Transform : Transformée de la théorie des nombres)&lt;/strong>, permet une multiplication de polynômes ultra-rapide avec une complexité de calcul de $O(n \log n)$.&lt;/p>
&lt;p>Cependant, il y avait des inquiétudes concernant le Ring-LWE quant à « l&amp;rsquo;existence possible de vulnérabilités inconnues dues à la structure algébrique spécifique de l&amp;rsquo;anneau ». Il y avait également le défi d&amp;rsquo;ingénierie selon lequel, lors de la modification du niveau de sécurité (par exemple, équivalent à AES-128, 192, 256), il fallait modifier le degré $n$ du polynôme lui-même, ce qui nécessitait de réécrire l&amp;rsquo;ensemble de l&amp;rsquo;implémentation, y compris l&amp;rsquo;algorithme NTT.&lt;/p>
&lt;p>C&amp;rsquo;est pourquoi les algorithmes standardisés Kyber et Dilithium ont adopté le &lt;strong>problème Module-LWE (M-LWE)&lt;/strong>. Le Module-LWE est un compromis situé exactement entre le Standard LWE sans structure et le Ring-LWE qui possède trop de structure, en utilisant une matrice de taille $k \times k$ (module) dont les composants sont les éléments de l&amp;rsquo;anneau de polynômes $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>Le plus grand avantage du Module-LWE est qu&amp;rsquo;il permet de faire évoluer facilement le niveau de sécurité en modifiant simplement la dimension $k$ de la matrice, tout en gardant fixe le degré $n$ du polynôme (dans la norme NIST, $n=256$).
Par exemple, pour Kyber, la dimension $k$ est ajustée de la manière suivante :&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Kyber512 (Niveau 1)&lt;/strong> : $k = 2$ (équivalent AES-128)&lt;/li>
&lt;li>&lt;strong>Kyber768 (Niveau 3)&lt;/strong> : $k = 3$ (équivalent AES-192)&lt;/li>
&lt;li>&lt;strong>Kyber1024 (Niveau 5)&lt;/strong> : $k = 4$ (équivalent AES-256)&lt;/li>
&lt;/ul>
&lt;p>Cela a permis de réutiliser à 100 % le code NTT sous-jacent et le circuit matériel des opérations polynomiales pour tous les niveaux de sécurité, ce qui a permis d&amp;rsquo;améliorer considérablement la sécurité et l&amp;rsquo;efficacité de l&amp;rsquo;implémentation.&lt;/p>
&lt;hr>
&lt;h2 id="5-crystals-kyber-ml-kem--le-mécanisme-dencapsulation-de-clé-de-nouvelle-génération">5. CRYSTALS-Kyber (ML-KEM) : Le mécanisme d&amp;rsquo;encapsulation de clé de nouvelle génération
&lt;/h2>&lt;p>Officiellement standardisé sous le nom de &lt;strong>FIPS 203 (ML-KEM)&lt;/strong>, CRYSTALS-Kyber est un mécanisme d&amp;rsquo;encapsulation de clé (KEM) basé sur le problème Module-LWE susmentionné. Il s&amp;rsquo;agira de la norme mondiale de facto pour le partage sécurisé des clés de session à l&amp;rsquo;avenir, notamment pour TLS 1.3 et SSH.&lt;/p>
&lt;h3 id="51-architecture-du-kem-key-encapsulation-mechanism">5.1. Architecture du KEM (Key Encapsulation Mechanism)
&lt;/h3>&lt;p>À l&amp;rsquo;ère de la PQC, l&amp;rsquo;approche directe telle que RSA où « le client crée une clé partagée, la chiffre avec la clé publique du serveur et l&amp;rsquo;envoie » est remplacée par le cadre d&amp;rsquo;encapsulation appelé KEM.&lt;/p>
&lt;div class="mermaid">sequenceDiagram
participant Client as "Client (Alice)"
participant Server as "Serveur (Bob)"
Note over Client: "ML-KEM KeyGen()"
Client->>Client: "Générer la clé secrète (sk) et la clé publique (pk)"
Client->>Server: "Envoyer la clé publique (pk)"
Note over Server: "ML-KEM Encaps()"
Server->>Server: "Générer une clé partagée aléatoire (K)"
Server->>Server: "Encapsuler K avec pk pour créer le texte chiffré (c)"
Server->>Client: "Envoyer le texte chiffré (c)"
Note over Client: "ML-KEM Decaps()"
Client->>Client: "Déchiffrer le texte chiffré (c) à l'aide de la clé secrète (sk)"
Client->>Client: "Désencapsuler et extraire la clé partagée (K)"
Note over Client, Server: "Commencer la communication chiffrée (par ex. AES) avec la clé partagée (K)"&lt;/div>
&lt;h3 id="52-fonctionnement-interne-de-kyber-et-transformation-de-fujisaki-okamoto">5.2. Fonctionnement interne de Kyber et Transformation de Fujisaki-Okamoto
&lt;/h3>&lt;p>La conception de Kyber est extrêmement raffinée. Tout d&amp;rsquo;abord, un schéma de chiffrement à clé publique (Kyber.CPAPKE), sûr uniquement contre les attaques à texte clair choisi (CPA), est construit, puis une technique cryptographique très puissante appelée &lt;strong>Transformation de Fujisaki-Okamoto (Fujisaki-Okamoto Transform)&lt;/strong> est appliquée, ce qui permet de le faire évoluer vers un KEM complet et sûr contre les attaques à chiffré choisi adaptatif (CCA).&lt;/p>
&lt;p>Le mécanisme de chiffrement et de déchiffrement au cœur de CPAPKE est le suivant :&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>Génération de clé (Key Generation)&lt;/strong> :&lt;/p>
&lt;ul>
&lt;li>À partir d&amp;rsquo;une valeur de graine aléatoire (seed), générer une matrice $A \in R_q^{k \times k}$ sur le domaine NTT. Le modulo $q$ utilisé est $3329$.&lt;/li>
&lt;li>Échantillonner un vecteur secret $\vec{s}$ et un vecteur d&amp;rsquo;erreur $\vec{e}$ avec de petits coefficients à partir d&amp;rsquo;une distribution binomiale centrée (CBD).&lt;/li>
&lt;li>Calculer $\vec{t} = A\vec{s} + \vec{e}$. La clé publique est $(A, \vec{t})$ et la clé secrète est $\vec{s}$. (En pratique, $A$ est publiée en tant que valeur de graine (seed) pour économiser de la bande passante).&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Chiffrement (Encryption)&lt;/strong> :&lt;/p>
&lt;ul>
&lt;li>Encoder le message de 32 octets (matériau de la clé partagée) $m$ que l&amp;rsquo;on souhaite partager en un polynôme.&lt;/li>
&lt;li>Générer un nouveau vecteur aléatoire $\vec{r}$ et de petites erreurs $\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>Le texte chiffré est $(\vec{u}, v)$.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>Déchiffrement (Decryption)&lt;/strong> :&lt;/p>
&lt;ul>
&lt;li>Le destinataire calcule $v - \vec{s}^T\vec{u}$.&lt;/li>
&lt;li>Le développement de cette équation donne ce qui suit.
$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>En remplaçant $\vec{t} = A\vec{s} + \vec{e}$, le terme principal $\vec{s}^TA^T\vec{r}$ s&amp;rsquo;annule.&lt;/li>
&lt;li>Il reste $\lfloor q/2 \rceil \cdot m + (\vec{e}^T\vec{r} + e_2 - \vec{s}^T\vec{e_1})$.&lt;/li>
&lt;li>Les termes entre parenthèses étant des « produits ou sommes de petites erreurs », l&amp;rsquo;ensemble reste une valeur (bruit) suffisamment petite. Par conséquent, en déterminant si chaque coefficient est proche de $0$ ou de $q/2$, les bits (0 ou 1) du message d&amp;rsquo;origine $m$ peuvent être parfaitement restaurés sans aucune erreur.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ol>
&lt;p>La plus grande force de Kyber réside dans sa &lt;strong>vitesse de traitement&lt;/strong> impressionnante et sa &lt;strong>taille de clé modérée&lt;/strong>. Pour Kyber768, la taille de la clé publique est de 1 184 octets et la taille du texte chiffré est de 1 088 octets. Bien qu&amp;rsquo;elles soient plus importantes par rapport à RSA-3072 (taille de clé d&amp;rsquo;environ 384 octets), il est possible de les faire tenir dans l&amp;rsquo;unité de transmission maximale (MTU) des communications Internet modernes sans fragmentation des paquets, ce qui n&amp;rsquo;a presque aucun impact négatif sur la latence du réseau.&lt;/p>
&lt;hr>
&lt;h2 id="6-crystals-dilithium-ml-dsa--signature-numérique-polyvalente-basée-sur-les-réseaux">6. CRYSTALS-Dilithium (ML-DSA) : Signature numérique polyvalente basée sur les réseaux
&lt;/h2>&lt;p>Dans la standardisation des signatures numériques, des algorithmes avec différentes philosophies de conception ont concouru au sein de la même approche de la cryptographie sur les réseaux. Parmi eux, &lt;strong>CRYSTALS-Dilithium&lt;/strong> a été sélectionné comme signature numérique polyvalente sous le nom de &lt;strong>FIPS 204 (ML-DSA)&lt;/strong>.&lt;/p>
&lt;h3 id="61-le-paradigme-fiat-shamir-with-aborts">6.1. Le paradigme Fiat-Shamir with Aborts
&lt;/h3>&lt;p>Comme Kyber, Dilithium est un schéma de signature numérique basé sur le problème Module-LWE (ainsi que sur le problème Module-SIS). À la base de sa conception, le paradigme extrêmement important appelé « &lt;strong>Fiat-Shamir with Aborts (Transformation de Fiat-Shamir avec rejets)&lt;/strong> » est utilisé.&lt;/p>
&lt;p>La transformation de Fiat-Shamir elle-même est une méthode standard pour convertir un protocole interactif de preuve à divulgation nulle (zero-knowledge proof) en une signature numérique non interactive. Le prouveur (signataire) génère un engagement (commitment) $y$, calcule $w = Ay$ et le passe par une fonction de hachage pour obtenir un défi aléatoire $c$, puis calcule la réponse $z = y + cs$.&lt;/p>
&lt;p>Cependant, dans la cryptographie sur les réseaux, l&amp;rsquo;application naïve de cette méthode entraînait un problème fatal (fuite mathématique de type canal auxiliaire) où la distribution de la réponse $z$ devenait asymétrique en fonction de la valeur de la clé secrète $s$, et un attaquant observant de nombreuses signatures obtiendrait peu à peu des informations sur la clé secrète $s$.&lt;/p>
&lt;p>L&amp;rsquo;équipe de conception de Dilithium (Lyubashevsky et al.) a introduit une technique appelée « &lt;strong>Échantillonnage par rejet (Rejection Sampling)&lt;/strong> » : si les coefficients du résultat de la signature $z$ ne tombent pas dans une plage de seuil de sécurité prédéfinie, l&amp;rsquo;ensemble du processus de signature est abandonné (Abort) et le calcul est recommencé depuis le début en utilisant un nouveau nombre aléatoire $y$.&lt;/p>
&lt;p>Grâce à cela, la signature finale produite $z$ est une distribution complètement uniforme qui ne dépend en aucun cas de la clé secrète, réussissant à prévenir complètement la fuite d&amp;rsquo;informations sur le plan mathématique.&lt;/p>
&lt;h3 id="62-les-avantages-de-dilithium-et-la-facilité-de-son-implémentation">6.2. Les avantages de Dilithium et la facilité de son implémentation
&lt;/h3>&lt;p>Le grand avantage de la conception de Dilithium est qu&amp;rsquo;elle n&amp;rsquo;utilise &lt;strong>absolument pas&lt;/strong> d&amp;rsquo;« échantillonnage complexe à partir de distributions gaussiennes » ou d&amp;rsquo;« opérations en virgule flottante » dans le processus de génération de signature. Puisqu&amp;rsquo;il peut être mis en œuvre uniquement avec un échantillonnage à partir d&amp;rsquo;une distribution uniforme, des opérations simples en modulo entier, des NTT et des fonctions de hachage (SHAKE), il est facile de l&amp;rsquo;implémenter de manière sécurisée et en temps constant (Constant-time) dans un large éventail d&amp;rsquo;environnements, allant des microcontrôleurs embarqués aux serveurs cloud. De ce fait, il possède également une forte résistance contre les attaques physiques par canal auxiliaire, telles que les attaques par chronométrage (timing attacks).&lt;/p>
&lt;hr>
&lt;h2 id="7-falcon-fn-dsa--signature-sur-réseaux-ultra-compacte">7. FALCON (FN-DSA) : Signature sur réseaux ultra-compacte
&lt;/h2>&lt;p>Le NIST a sélectionné &lt;strong>FALCON (Fast-Fourier Lattice-based Compact Signatures over NTRU)&lt;/strong> comme autre candidat standard de signature basée sur les réseaux, avec des caractéristiques différentes de celles de Dilithium (actuellement en cours de rédaction en tant que FN-DSA).&lt;/p>
&lt;h3 id="71-réseaux-ntru-et-échantillonnage-gaussien">7.1. Réseaux NTRU et échantillonnage gaussien
&lt;/h3>&lt;p>La plus grande caractéristique de FALCON est qu&amp;rsquo;il n&amp;rsquo;utilise pas le problème LWE, mais plutôt le &lt;strong>réseau NTRU (N-th degree Truncated polynomial Ring Units)&lt;/strong>, très ancien et existant depuis 1996. De plus, il adopte le paradigme « &lt;strong>Hash-and-Sign (Hachage et Signature)&lt;/strong> » basé sur le framework GPV (Gentry-Peikert-Vaikuntanathan).&lt;/p>
&lt;p>Dans Hash-and-Sign, la valeur de hachage du message est utilisée comme point cible dans l&amp;rsquo;espace, et le point sur le réseau le plus proche de ce point (une solution approchée du problème du vecteur le plus proche) est trouvé pour servir de signature. Pour cela, il est nécessaire d&amp;rsquo;échantillonner des points selon une distribution gaussienne discrète en utilisant une « base courte de bonne qualité » qui est la clé secrète.&lt;/p>
&lt;p>FALCON a considérablement accéléré ce calcul intensif en utilisant une technique appelée « &lt;strong>Orthogonalisation de Fourier rapide (Fast Fourier Orthogonalization : FFO)&lt;/strong> ».&lt;/p>
&lt;h3 id="72-avantages-et-inconvénients-de-falcon">7.2. Avantages et inconvénients de FALCON
&lt;/h3>&lt;p>L&amp;rsquo;avantage écrasant de FALCON réside dans le fait que &lt;strong>la taille de sa signature et la taille de sa clé publique sont extrêmement petites (compactes)&lt;/strong>. Alors que la taille de la signature de Dilithium3 est d&amp;rsquo;environ 3 309 octets, celle de FALCON-512 n&amp;rsquo;est que d&amp;rsquo;environ 666 octets. La clé publique est également très petite, avec 897 octets, ce qui en fait un sauveur dans les environnements où la bande passante de communication est extrêmement limitée, pour les appareils IoT et dans certains protocoles réseau.&lt;/p>
&lt;p>Cependant, il existe un inconvénient majeur. Puisque l&amp;rsquo;échantillonnage gaussien discret impliquant des &lt;strong>opérations complexes en virgule flottante (64-bit IEEE 754)&lt;/strong> est indispensable lors de la génération de la signature, l&amp;rsquo;implémentation en temps constant (Constant-time implementation) pour prévenir les fuites de temps est extrêmement difficile, et le code devient énorme. C&amp;rsquo;est pourquoi FALCON est positionné comme un puissant algorithme spécialisé pour des usages spécifiques, par opposition à l&amp;rsquo;utilisation polyvalente (Dilithium).&lt;/p>
&lt;div class="mermaid">graph LR
A["Exigences en matière de signatures numériques"] --> B{"Quelle est la contrainte prioritaire ?"}
B -->|"Simplicité d'implémentation, polyvalence, facilité d'implémentation en temps constant"| C["Dilithium (ML-DSA)"]
B -->|"Minimisation de la bande passante de communication, compacité de la taille des données"| D["FALCON (FN-DSA)"]
C --> E["Certificats TLS génériques, signature électronique de logiciels"]
D --> F["Protocoles avec des limites strictes de taille de paquet, environnements spéciaux"]&lt;/div>
&lt;hr>
&lt;h2 id="8-sphincs-slh-dsa--signature-basée-sur-le-hachage-offrant-la-plus-forte-sécurité">8. SPHINCS+ (SLH-DSA) : Signature basée sur le hachage offrant la plus forte sécurité
&lt;/h2>&lt;p>Pour se préparer au pire des scénarios (le cas échéant) où la sécurité de la cryptographie sur les réseaux serait brisée à l&amp;rsquo;avenir par une percée d&amp;rsquo;un brillant mathématicien, le NIST a formulé &lt;strong>FIPS 205 (SLH-DSA)&lt;/strong>, c&amp;rsquo;est-à-dire &lt;strong>SPHINCS+&lt;/strong>, en tant que norme basée sur une approche complètement différente de celle de la cryptographie sur les réseaux.&lt;/p>
&lt;p>SPHINCS+ est classé comme une &lt;strong>signature basée sur le hachage&lt;/strong>. Sa sécurité repose uniquement sur un seul point : « la fonction de hachage cryptographique utilisée (comme SHA-2 ou SHAKE256) possède une résistance aux collisions et une propriété unidirectionnelle ». Contrairement au LWE ou à la factorisation, qui dépendent de problèmes mathématiques possédant des structures algébriques spécifiques, SPHINCS+ peut faire face à n&amp;rsquo;importe quel algorithme quantique puissant qui pourrait apparaître à l&amp;rsquo;avenir, simplement en allongeant la longueur de sortie de la fonction de hachage. Il s&amp;rsquo;enorgueillit ainsi d&amp;rsquo;une sécurité extrêmement robuste (la sécurité la plus conservatrice).&lt;/p>
&lt;h3 id="81-architecture-sans-état-stateless-avec-wots-et-fors">8.1. Architecture sans état (stateless) avec WOTS+ et FORS
&lt;/h3>&lt;p>L&amp;rsquo;histoire des signatures basées sur le hachage est ancienne et remonte aux signatures Lamport et aux signatures à usage unique (One-Time Signatures) Winternitz (WOTS) des années 1970. Il s&amp;rsquo;agissait de clés jetables où « l&amp;rsquo;on ne peut signer en toute sécurité qu&amp;rsquo;une seule fois ». Afin de pouvoir les utiliser plusieurs fois, des algorithmes tels que XMSS (eXtended Merkle Signature Scheme) et LMS ont été développés en combinant des arbres de Merkle pour gérer d&amp;rsquo;innombrables clés à usage unique avec un seul hachage racine.&lt;/p>
&lt;p>Cependant, XMSS et LMS présentaient un défaut majeur : ils étaient « &lt;strong>avec état (stateful)&lt;/strong> ». Chaque fois qu&amp;rsquo;une signature était effectuée, il était nécessaire de conserver un enregistrement strict de l&amp;rsquo;état de l&amp;rsquo;index « quelle clé à usage unique a été utilisée » dans une mémoire non volatile. Si l&amp;rsquo;état était restauré (par exemple, par la restauration d&amp;rsquo;un snapshot de machine virtuelle) et que la même clé à usage unique était utilisée deux fois, la clé secrète serait immédiatement divulguée et le système s&amp;rsquo;effondrerait.&lt;/p>
&lt;p>SPHINCS+ est une signature basée sur le hachage « &lt;strong>sans état (stateless)&lt;/strong> » qui a résolu les tracas liés à la gestion des états.
Sa technologie de base est la combinaison suivante :&lt;/p>
&lt;ol>
&lt;li>&lt;strong>WOTS+ (Winternitz One-Time Signature Plus)&lt;/strong> : Signature à usage unique de base.&lt;/li>
&lt;li>&lt;strong>FORS (Forest of Random Subsets)&lt;/strong> : Technologie de signature à faible fréquence d&amp;rsquo;utilisation (Few-Time Signature). La sécurité est maintenue même si la même clé est réutilisée un petit nombre de fois.&lt;/li>
&lt;li>&lt;strong>Hyper-Tree (Structure arborescente géante)&lt;/strong> : Structure géante composée de plusieurs couches d&amp;rsquo;arbres de Merkle empilées.&lt;/li>
&lt;/ol>
&lt;p>Dans SPHINCS+, lors de la signature, au lieu de gérer des états, une clé FORS est sélectionnée de manière aléatoire parmi un nombre colossal de clés au bas de l&amp;rsquo;Hyper-Tree à l&amp;rsquo;aide d&amp;rsquo;un nombre pseudo-aléatoire pour effectuer la signature. Étant donné que le nombre de feuilles de l&amp;rsquo;arbre est astronomique, la probabilité de sélectionner la même clé deux fois par accident (collision) est si faible qu&amp;rsquo;elle peut être ignorée, ce qui permet d&amp;rsquo;atteindre l&amp;rsquo;absence d&amp;rsquo;état (stateless).&lt;/p>
&lt;p>La seule et plus grande faiblesse de SPHINCS+ est que &lt;strong>la taille de sa signature est extrêmement grande&lt;/strong>. Selon les paramètres, la taille de la signature peut atteindre 17 kilo-octets à 49 kilo-octets, et la vitesse de génération des signatures est également très lente par rapport à la cryptographie sur les réseaux. Par conséquent, il est prévu de l&amp;rsquo;utiliser dans des applications nécessitant une sécurité absolue à long terme et où les signatures ne sont pas effectuées fréquemment, telles que les signatures de mise à jour logicielle et les certificats d&amp;rsquo;Autorité de Certification (CA) racine, plutôt que pour la navigation Web quotidienne.&lt;/p>
&lt;hr>
&lt;h2 id="9-cryptographie-basée-sur-les-codes--classic-mceliece-le-bon-vieux-géant">9. Cryptographie basée sur les codes : Classic McEliece, le bon vieux géant
&lt;/h2>&lt;p>Dans le processus de standardisation du NIST, &lt;strong>Classic McEliece&lt;/strong>, de la &lt;strong>cryptographie basée sur les codes&lt;/strong>, est une approche importante dont l&amp;rsquo;évaluation se poursuit toujours en tant que candidat final de la phase 4.&lt;/p>
&lt;p>Proposé par Robert McEliece en 1978, cet algorithme est l&amp;rsquo;un des plus anciens de l&amp;rsquo;histoire de la cryptographie à clé publique, aux côtés du RSA. Il utilise des codes de géométrie algébrique appelés « codes de Goppa », qui ajoutent intentionnellement une erreur (vecteur de bruit) au message lors du chiffrement. Seule la personne possédant la matrice de contrôle de parité du code de Goppa comme clé secrète peut utiliser sa puissante capacité de correction d&amp;rsquo;erreurs pour supprimer l&amp;rsquo;erreur et déchiffrer le message d&amp;rsquo;origine, un principe basé sur le « &lt;strong>problème du décodage de syndrome (Syndrome Decoding Problem)&lt;/strong> ».&lt;/p>
$$ \vec{c} = \vec{m} G + \vec{e} $$
&lt;p>
（$G$ est la matrice génératrice brouillée qui est la clé publique, et $\vec{e}$ est le vecteur d&amp;rsquo;erreur de poids $t$）&lt;/p>
&lt;p>Ce qui est surprenant avec Classic McEliece, c&amp;rsquo;est son bilan impressionnant : &lt;strong>bien que plus de 40 ans se soient écoulés depuis sa proposition et qu&amp;rsquo;il ait fait l&amp;rsquo;objet d&amp;rsquo;intenses recherches de déchiffrement par des cryptographes du monde entier, aucune vulnérabilité intrinsèque n&amp;rsquo;y a jamais été découverte&lt;/strong>. Il possède la « sécurité éprouvée par le temps » la plus solide de toute la PQC.&lt;/p>
&lt;p>De plus, il a l&amp;rsquo;avantage d&amp;rsquo;avoir une taille de texte chiffré très petite (seulement 100 à 200 octets). Cependant, il présente un défaut majeur : &lt;strong>la taille de la clé publique est en mégaoctets (Mo)&lt;/strong>. Même pour le niveau de sécurité le plus bas (équivalent à AES-128), la clé publique est d&amp;rsquo;environ 250 Ko, et elle dépasse 1 Mo pour des niveaux plus élevés.&lt;/p>
&lt;p>Pour cette raison, il est totalement inadapté aux applications qui envoient des clés publiques sur le réseau à chaque communication, telles que les poignées de main TLS. Cependant, pour des cas d&amp;rsquo;utilisation spécifiques où la clé publique peut être placée à l&amp;rsquo;avance dans le système, comme l&amp;rsquo;échange de clés pré-partagées pour les VPN, le codage en dur de clés publiques dans le firmware ou la communication par satellite, il continue d&amp;rsquo;être considéré comme une option très prometteuse en raison de sa forte sécurité.&lt;/p>
&lt;hr>
&lt;h2 id="10-comparaison-des-performances-et-compromis-de-chaque-algorithme-pqc">10. Comparaison des performances et compromis de chaque algorithme PQC
&lt;/h2>&lt;p>Le tableau suivant résume les caractéristiques de performance des principaux algorithmes abordés jusqu&amp;rsquo;à présent à des niveaux de sécurité courants (équivalents aux niveaux 2 à 3 du NIST, soit le niveau AES-128 à 192).&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">Algorithme (Nom standard)&lt;/th>
&lt;th style="text-align:left">Catégorie&lt;/th>
&lt;th style="text-align:left">Base mathématique&lt;/th>
&lt;th style="text-align:left">Taille de la clé publique&lt;/th>
&lt;th style="text-align:left">Taille de la clé secrète&lt;/th>
&lt;th style="text-align:left">Taille du chiffré/signature&lt;/th>
&lt;th style="text-align:left">Tendance de la vitesse de traitement&lt;/th>
&lt;th style="text-align:left">Principales caractéristiques et utilisations&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 octets&lt;/td>
&lt;td style="text-align:left">2 400 octets&lt;/td>
&lt;td style="text-align:left">1 088 octets&lt;/td>
&lt;td style="text-align:left">Très rapide&lt;/td>
&lt;td style="text-align:left">Meilleur équilibre entre taille de clé et vitesse. Norme KEM générique comme 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">Signature&lt;/td>
&lt;td style="text-align:left">Module-LWE&lt;/td>
&lt;td style="text-align:left">1 952 octets&lt;/td>
&lt;td style="text-align:left">4 032 octets&lt;/td>
&lt;td style="text-align:left">3 309 octets&lt;/td>
&lt;td style="text-align:left">Génération et vérification rapides&lt;/td>
&lt;td style="text-align:left">Implémentation simple. Norme de signature numérique polyvalente.&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">Signature&lt;/td>
&lt;td style="text-align:left">Réseaux NTRU&lt;/td>
&lt;td style="text-align:left">897 octets&lt;/td>
&lt;td style="text-align:left">1 281 octets&lt;/td>
&lt;td style="text-align:left">666 octets&lt;/td>
&lt;td style="text-align:left">Génération plus lente, vérification ultra-rapide&lt;/td>
&lt;td style="text-align:left">Taille de signature minime. Nécessite des opérations en virgule flottante. Pour IoT/embarqué.&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">Signature&lt;/td>
&lt;td style="text-align:left">Fonction de hachage&lt;/td>
&lt;td style="text-align:left">32 octets&lt;/td>
&lt;td style="text-align:left">64 octets&lt;/td>
&lt;td style="text-align:left">Env. 17 000 octets&lt;/td>
&lt;td style="text-align:left">Génération très lente&lt;/td>
&lt;td style="text-align:left">Risque mathématique quasi nul. Pour applications de haute sécurité comme certificats racine.&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">Codes de Goppa&lt;/td>
&lt;td style="text-align:left">&lt;strong>Env. 1.04 Mo&lt;/strong>&lt;/td>
&lt;td style="text-align:left">13 568 octets&lt;/td>
&lt;td style="text-align:left">&lt;strong>188 octets&lt;/strong>&lt;/td>
&lt;td style="text-align:left">Encapsulation rapide&lt;/td>
&lt;td style="text-align:left">40 ans de sécurité éprouvée. Clé publique énorme. Pour environnements avec codage en dur.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h3 id="comprendre-les-compromis">Comprendre les compromis
&lt;/h3>&lt;p>Dans le monde de la PQC, il n&amp;rsquo;existe pas d&amp;rsquo;algorithme unique et magique qui soit « petit en taille, rapide, et avec des garanties mathématiques parfaites ».&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Les normes d&amp;rsquo;Internet (Kyber / Dilithium)&lt;/strong> : Elles offrent le meilleur équilibre des performances et sont les mieux adaptées au remplacement direct (drop-in replacement) du RSA et de l&amp;rsquo;ECC actuels.&lt;/li>
&lt;li>&lt;strong>La conservativité ultime (SPHINCS+)&lt;/strong> : Elle est choisie lorsque l&amp;rsquo;on souhaite une assurance absolue contre les futures percées mathématiques, même au prix de la taille des données et de la vitesse de traitement.&lt;/li>
&lt;li>&lt;strong>Pour des environnements spécifiques (FALCON / Classic McEliece)&lt;/strong> : Ce sont des armes spécialisées choisies en fonction des contraintes de l&amp;rsquo;environnement, telles que des bandes passantes de communication extrêmement étroites ou la possibilité d&amp;rsquo;une distribution préalable.&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="11-défis-vers-la-mise-en-pratique-et-la-solution-réaliste-de-la--cryptographie-hybride-">11. Défis vers la mise en pratique et la solution réaliste de la « cryptographie hybride »
&lt;/h2>&lt;p>Avec l&amp;rsquo;achèvement de la standardisation par le NIST et la publication officielle des normes FIPS, la transition mondiale de l&amp;rsquo;infrastructure informatique vers la PQC (&lt;strong>Migration PQC&lt;/strong>) a véritablement commencé. Le navigateur Chrome de Google, iMessage d&amp;rsquo;Apple (protocole PQ3) et les fournisseurs de réseaux comme Cloudflare ont déjà implémenté le support de la PQC dans leurs protocoles et ont commencé leur exploitation commerciale.&lt;/p>
&lt;p>Cependant, basculer soudainement et complètement vers de nouveaux algorithmes de cryptographie comporte des risques très élevés. Si un brillant mathématicien venait à découvrir dans quelques années une faille mathématique fatale dans la cryptographie sur les réseaux (comme Kyber) qui pourrait être résolue même par un ordinateur classique, l&amp;rsquo;ensemble des systèmes qui en dépendent seraient instantanément exposés.&lt;/p>
&lt;p>L&amp;rsquo;approche réaliste et recommandée pour atténuer ce risque d&amp;rsquo;incertitude est la « &lt;strong>cryptographie hybride (Hybrid Cryptography)&lt;/strong> ».&lt;/p>
&lt;p>Dans la cryptographie hybride, l&amp;rsquo;échange de clés est effectué en utilisant simultanément les cryptographies classiques actuelles ayant fait leurs preuves depuis longtemps (par exemple, la cryptographie sur courbe elliptique comme X25519) et les nouvelles PQC (par exemple, Kyber768). Les composants de la clé partagée sont générés individuellement par chaque algorithme, puis enfin, une fonction de dérivation de clé (KDF) sécurisée est utilisée pour mélanger les deux composants et générer le secret maître final.&lt;/p>
&lt;div class="mermaid">graph TD
A["Client"] -->|① Envoi de la clé publique X25519 + clé publique Kyber| B["Serveur"]
B -->|② Réponse avec clé partagée X25519 + chiffré encapsulé Kyber| A
A --> C{"Dérivation du secret maître (KDF)"}
B --> C
C -->|"Entrée : (Clé partagée X25519) || (Clé partagée Kyber)"| D["Clé de communication sécurisée (AES-256 / ChaCha20)"]
D -->|"Résistance aux menaces quantiques ET aux vulnérabilités classiques"| E["Communication chiffrée hybride sécurisée (TLS 1.3)"]&lt;/div>
&lt;p>Grâce à cela, il est possible d&amp;rsquo;atteindre une sécurité robuste à deux niveaux : « même si un ordinateur quantique est réalisé et que l&amp;rsquo;ECC est brisé, Kyber protège la communication », et inversement, « même si un défaut mathématique inconnu est trouvé dans Kyber, l&amp;rsquo;ECC protège la communication ». Un exemple typique est le brouillon &lt;strong>X25519MLKEM768 (anciennement X25519Kyber768)&lt;/strong> en cours de standardisation à l&amp;rsquo;IETF, et la communication entre les navigateurs Web actuels et les serveurs de pointe est précisément réalisée à l&amp;rsquo;aide de cette méthode hybride.&lt;/p>
&lt;p>De plus, le concept de &lt;strong>Crypto Agility (Agilité cryptographique)&lt;/strong>, qui consiste à concevoir des systèmes avec « une architecture qui ne dépend pas excessivement d&amp;rsquo;un algorithme cryptographique spécifique et qui permet de basculer rapidement vers un autre algorithme (par exemple, de Kyber à McEliece, de Dilithium à SPHINCS+) en cas de compromission de l&amp;rsquo;algorithme », deviendra une exigence indispensable dans le développement futur des systèmes.&lt;/p>
&lt;hr>
&lt;h2 id="12-conclusion--un-nouvel-horizon-pour-les-technologies-cryptographiques">12. Conclusion : Un nouvel horizon pour les technologies cryptographiques
&lt;/h2>&lt;p>Paradoxalement, l&amp;rsquo;ordinateur quantique, la technologie de rêve de l&amp;rsquo;humanité, est devenu la plus grande menace, capable de briser les barrières mathématiques telles que la « factorisation en nombres premiers » et le « problème du logarithme discret » sur lesquelles nous nous reposons depuis de nombreuses années. Cependant, les cryptographes du monde entier ne se sont pas avoués vaincus et ont exploré des domaines mathématiques multidimensionnels plus complexes et profonds, tels que la théorie des réseaux, les arbres de fonctions de hachage et les codes correcteurs d&amp;rsquo;erreurs, pour bâtir une nouvelle barrière : la cryptographie post-quantique (PQC).&lt;/p>
&lt;p>L&amp;rsquo;achèvement de la standardisation des normes FIPS 203 (ML-KEM), FIPS 204 (ML-DSA) et FIPS 205 (SLH-DSA) par le NIST n&amp;rsquo;est pas une ligne d&amp;rsquo;arrivée. Ce n&amp;rsquo;est que la première étape d&amp;rsquo;un voyage épique de migration vers la PQC qui durera plusieurs décennies. Pour les ingénieurs logiciels et les architectes système, le grand défi technique de l&amp;rsquo;avenir consistera à adapter au mieux l&amp;rsquo;« augmentation de la taille des clés » et les « changements de coûts de calcul » apportés par ces nouveaux algorithmes aux protocoles réseau et aux systèmes.&lt;/p>
&lt;p>La bataille entre l&amp;rsquo;ordinateur quantique et la cryptographie est un domaine passionnant où la quête mathématique de l&amp;rsquo;humanité et l&amp;rsquo;évolution technologique se croisent de la manière la plus intense. À travers cet article, nous espérons que vous aurez acquis une compréhension approfondie de la belle théorie mathématique qui sous-tend la PQC, ainsi que des mécanismes surprenants de chaque algorithme qui façonnera l&amp;rsquo;avenir de la cybersécurité.&lt;/p>
&lt;hr>
&lt;p>&lt;em>Références :&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>Le jour où les ordinateurs quantiques seront mis en pratique : situation en 2026</title><link>http://kenji.blog/fr/p/quantum-computing-2026-current-status/</link><pubDate>Fri, 11 Sep 2026 06:00:00 +0900</pubDate><guid>http://kenji.blog/fr/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 Le jour où les ordinateurs quantiques seront mis en pratique : situation en 2026" />&lt;h2 id="1-introduction--où-en-sont-les-ordinateurs-quantiques-en-2026-">1. Introduction : Où en sont les ordinateurs quantiques en 2026 ?
&lt;/h2>&lt;p>En 2026, l&amp;rsquo;informatique quantique a connu un changement décisif, passant d&amp;rsquo;un ancien &amp;ldquo;rêve théorique&amp;rdquo; à une &amp;ldquo;réalité technique&amp;rdquo;. Alors que les limites des dispositifs &lt;strong>NISQ (Noisy Intermediate-Scale Quantum)&lt;/strong>, qui dominaient jusqu&amp;rsquo;à il y a quelques années, sont devenues claires, les instituts de recherche et les géants de la technologie du monde entier se sont orientés vers la réalisation de &amp;ldquo;l&amp;rsquo;informatique quantique tolérante aux pannes (FTQC : Fault-Tolerant Quantum Computing)&amp;rdquo;.&lt;/p>
&lt;p>Dans cet article, nous explorerons en profondeur l&amp;rsquo;état actuel des ordinateurs quantiques, en intégrant les dernières avancées de 2026. En particulier, nous détaillerons la correction d&amp;rsquo;erreurs quantiques (code de surface), la différence entre les qubits physiques et les qubits logiques, les progrès de l&amp;rsquo;informatique quantique topologique, et l&amp;rsquo;avant-garde des méthodes à supraconducteurs et à pièges à ions.&lt;/p>
&lt;hr>
&lt;h2 id="2-fondements-de-létat-quantique-et-fidélité-fidelity">2. Fondements de l&amp;rsquo;état quantique et fidélité (Fidelity)
&lt;/h2>&lt;p>L&amp;rsquo;unité fondamentale d&amp;rsquo;un ordinateur quantique, le bit quantique (Qubit), contrairement au bit classique (0 ou 1), peut prendre un état de superposition de 0 et de 1. L&amp;rsquo;état d&amp;rsquo;un seul qubit est représenté comme un vecteur dans l&amp;rsquo;espace de Hilbert comme suit :&lt;/p>
$$
|\psi\rangle = \alpha|0\rangle + \beta|1\rangle
$$
&lt;p>Ici, $\alpha$ et $\beta$ sont des amplitudes de probabilité complexes, satisfaisant la condition de normalisation suivante :&lt;/p>
$$
|\alpha|^2 + |\beta|^2 = 1
$$
&lt;p>Un indicateur extrêmement important pour mesurer les performances des calculs quantiques est la &lt;strong>fidélité (Fidelity)&lt;/strong>. La fidélité $F$ entre l&amp;rsquo;état quantique idéal $|\psi\rangle$ et la matrice densité réelle $\rho$, qui s&amp;rsquo;est dégradée pour devenir un état mixte à cause du bruit, est définie comme suit :&lt;/p>
$$
F(\rho, |\psi\rangle) = \langle \psi | \rho | \psi \rangle
$$
&lt;p>À l&amp;rsquo;heure actuelle en 2026, la fidélité des portes à 2 qubits (ex : portes CNOT et portes CZ) dépasse désormais de manière stable le mur des &lt;strong>99,99 %&lt;/strong> (ce que l&amp;rsquo;on appelle les &amp;ldquo;4 neufs&amp;rdquo;) dans les systèmes supraconducteurs. Il s&amp;rsquo;agit d&amp;rsquo;un chiffre qui dépasse largement le seuil de correction d&amp;rsquo;erreurs par le code de surface (environ 99 %), et constitue l&amp;rsquo;une des plus grandes avancées vers une application pratique.&lt;/p>
&lt;hr>
&lt;h2 id="3-les-limites-de-lère-nisq-et-le-changement-de-paradigme-vers-ftqc">3. Les limites de l&amp;rsquo;ère NISQ et le changement de paradigme vers FTQC
&lt;/h2>&lt;p>La période allant de la fin des années 2010 au début des années 2020 fut l&amp;rsquo;ère des NISQ (Noisy Intermediate-Scale Quantum), des dispositifs de quelques dizaines à quelques centaines de qubits dépourvus de correction d&amp;rsquo;erreurs. Cependant, les dispositifs NISQ avaient des limites claires.&lt;/p>
&lt;p>À mesure que la profondeur (Depth) du circuit augmente, les erreurs s&amp;rsquo;accumulent de manière exponentielle, rendant impossible l&amp;rsquo;obtention de résultats de calcul significatifs. La probabilité de succès globale $P_{success}$ à une profondeur de circuit $D$ décroît par rapport à la fidélité d&amp;rsquo;une seule porte $f$ et au nombre de portes $N$ comme suit :&lt;/p>
$$
P_{success} \approx f^N
$$
&lt;p>Si $f = 0.99$ et que 1000 portes sont appliquées, le résultat sera $0.99^{1000} \approx 4.3 \times 10^{-5}$, et sera presque enfoui dans le bruit aléatoire. Pour cette raison, en 2026, au lieu d&amp;rsquo;une mise à l&amp;rsquo;échelle directe des algorithmes NISQ (comme VQE ou QAOA), les ressources se concentrent sur la génération de &lt;strong>qubits logiques (Logical Qubit)&lt;/strong>.&lt;/p>
&lt;hr>
&lt;h2 id="4-correction-derreurs-quantiques-et-qubits-logiques--à-la-pointe-du-code-de-surface">4. Correction d&amp;rsquo;erreurs quantiques et qubits logiques : À la pointe du code de surface
&lt;/h2>&lt;p>La correction d&amp;rsquo;erreurs quantiques (QEC : Quantum Error Correction) est une technologie qui encode plusieurs &amp;ldquo;qubits physiques&amp;rdquo; pour créer un &amp;ldquo;qubit logique&amp;rdquo;, permettant de détecter et de corriger les erreurs. Actuellement, le code le plus prometteur est le &lt;strong>code de surface (Surface Code)&lt;/strong>.&lt;/p>
&lt;h3 id="41-structure-du-code-de-surface-surface-code">4.1 Structure du code de surface (Surface Code)
&lt;/h3>&lt;p>Dans le code de surface, les qubits sont disposés dans une grille bidimensionnelle. Les qubits de données (conservant les informations réelles) et les qubits de mesure (pour la mesure du syndrome) sont disposés comme sur un damier.&lt;/p>
&lt;div class="mermaid">graph TD
A["Qubit de données (D1)"] --- B["Qubit de mesure (M1)"]
B --- C["Qubit de données (D2)"]
C --- D["Qubit de mesure (M2)"]
D --- E["Qubit de données (D3)"]
B --- F["Qubit de données (D4)"]
D --- G["Qubit de données (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>Il utilise les opérateurs de stabilisateur $S_x$ et $S_z$ pour surveiller constamment le retournement de bit (erreur X) et le retournement de phase (erreur Z).&lt;/p>
$$
S_x = \prod_{i \in \text{star}} X_i, \quad S_z = \prod_{j \in \text{plaquette}} Z_j
$$
&lt;p>L&amp;rsquo;avancée majeure de 2026 est le dépassement complet du &amp;ldquo;seuil de rentabilité (Break-even point)&amp;rdquo;. En d&amp;rsquo;autres termes, le bruit éliminé par la correction d&amp;rsquo;erreurs est devenu plus important que le bruit causé par les circuits supplémentaires pour l&amp;rsquo;effectuer, permettant ainsi à la durée de vie du qubit logique de dépasser de plusieurs ordres de grandeur celle du qubit physique.&lt;/p>
&lt;h3 id="42-cycle-de-correction-derreurs-quantiques">4.2 Cycle de correction d&amp;rsquo;erreurs quantiques
&lt;/h3>&lt;p>La correction d&amp;rsquo;erreurs fonctionne comme une boucle de rétroaction continue.&lt;/p>
&lt;div class="mermaid">sequenceDiagram
participant D as "Qubits de données"
participant M as "Qubits ancillaires/de mesure"
participant C as "Contrôleur classique"
loop "Cycle d'extraction de syndrome (approx 1 microsec)"
D->>M: "Intriquer (CNOT/CZ)"
M->>C: "Mesurer l'état (Syndrome)"
C->>C: "Décoder le syndrome (ex: Minimum Weight Perfect Matching)"
C-->>D: "Appliquer la correction de Pauli (si nécessaire)"
end&lt;/div>
&lt;p>Aujourd&amp;rsquo;hui, la technologie pour exécuter ce traitement de décodage classique (analyse de syndrome) en nanosecondes avec des FPGA ou des ASIC dédiés a été établie, et la correction d&amp;rsquo;erreurs en temps réel est entrée dans la phase de mise en œuvre pratique.&lt;/p>
&lt;hr>
&lt;h2 id="5-évolution-de-larchitecture-matérielle-édition-2026">5. Évolution de l&amp;rsquo;architecture matérielle (Édition 2026)
&lt;/h2>&lt;p>Le matériel quantique en 2026 évolue principalement selon trois axes : la &amp;ldquo;méthode à supraconducteurs&amp;rdquo;, la &amp;ldquo;méthode à pièges à ions&amp;rdquo; et la &amp;ldquo;méthode topologique&amp;rdquo;.&lt;/p>
&lt;h3 id="51-intégration-des-qubits-supraconducteurs">5.1 Intégration des qubits supraconducteurs
&lt;/h3>&lt;p>La méthode supraconductrice est un domaine mené par IBM et Google, et le qubit transmon utilisant des jonctions Josephson y est dominant. En 2026, des mégapuces intégrant des milliers à dix mille qubits physiques sur une seule puce ont été réalisées.&lt;/p>
&lt;p>Il convient de noter tout particulièrement l&amp;rsquo;établissement d&amp;rsquo;&lt;strong>interconnexions quantiques inter-modules (Quantum Interconnects)&lt;/strong>. La téléportation quantique entre puces utilisant des photons micro-ondes a été implémentée au niveau commercial, permettant de contourner les limites de taille d&amp;rsquo;un seul réfrigérateur à dilution.&lt;/p>
&lt;h3 id="52-mise-à-léchelle-bidimensionnelle-des-pièges-à-ions-et-interconnexion-optique">5.2 Mise à l&amp;rsquo;échelle bidimensionnelle des pièges à ions et interconnexion optique
&lt;/h3>&lt;p>La méthode des pièges à ions (menée par Quantinuum, IonQ, etc.) utilise les états d&amp;rsquo;énergie interne des ions en suspension dans le vide comme qubits. Comparée à la méthode supraconductrice, elle présente l&amp;rsquo;avantage d&amp;rsquo;un temps de cohérence T1/T2 extrêmement long et permet une connectivité globale (All-to-All Connectivity).&lt;/p>
&lt;p>La percée de 2026 fut la bidimensionnalisation de l&amp;rsquo;architecture QCCD (Quantum Charge Coupled Device) et la génération d&amp;rsquo;intrication à grande vitesse entre plusieurs pièges à l&amp;rsquo;aide d&amp;rsquo;interconnexions photoniques. Cela a considérablement amélioré la &amp;ldquo;lenteur de la vitesse de porte&amp;rdquo; et la &amp;ldquo;scalabilité&amp;rdquo;, qui étaient les points faibles des pièges à ions.&lt;/p>
&lt;h3 id="53-informatique-quantique-topologique--contrôle-des-anyons">5.3 Informatique quantique topologique : Contrôle des anyons
&lt;/h3>&lt;p>L&amp;rsquo;&lt;strong>informatique quantique topologique&lt;/strong>, longtemps considérée comme une existence théorique, est finalement entrée dans la phase de démonstration expérimentale en 2026. Cette méthode, promue par des entreprises telles que Microsoft, utilise des anyons non abéliens (Non-Abelian Anyons) appelés &amp;ldquo;modes zéro de Majorana (Majorana Zero Modes)&amp;rdquo;.&lt;/p>
&lt;p>Les portes quantiques sont exécutées par une opération de tressage (Braiding) qui intervertit les positions des particules d&amp;rsquo;anyons.&lt;/p>
$$
|\psi_{final}\rangle = B_{ij} |\psi_{initial}\rangle
$$
&lt;p>Ici, $B_{ij}$ est l&amp;rsquo;opérateur de tressage. L&amp;rsquo;approche topologique est intrinsèquement résistante au bruit de l&amp;rsquo;environnement (tolérance aux pannes au niveau matériel) car la préservation de l&amp;rsquo;information ne dépend pas de l&amp;rsquo;état local de la particule, mais de la topologie globale du &amp;ldquo;nœud&amp;rdquo;. En 2026, la création du premier qubit logique topologique à haute fidélité au monde a été confirmée, attirant l&amp;rsquo;attention en tant que raccourci puissant vers le FTQC.&lt;/p>
&lt;hr>
&lt;h2 id="6-feuille-de-route-et-perspectives-vers-une-application-pratique">6. Feuille de route et perspectives vers une application pratique
&lt;/h2>&lt;p>Pour que l&amp;rsquo;ordinateur quantique démontre véritablement l&amp;rsquo;&lt;strong>avantage quantique (Quantum Advantage)&lt;/strong> en surpassant les ordinateurs classiques (supercalculateurs) dans des domaines tels que la &amp;ldquo;chimie computationnelle&amp;rdquo;, la &amp;ldquo;science des matériaux&amp;rdquo; et la &amp;ldquo;modélisation financière&amp;rdquo;, des milliers de qubits logiques sont nécessaires.&lt;/p>
&lt;div class="mermaid">gantt
title "Feuille de route de l'informatique quantique (Révisée en 2026)"
dateFormat YYYY
axisFormat %Y
section "Ère NISQ"
"Qubits bruités (&lt;1000)" :done, 2018, 2024
section "Début de la FTQC"
"Démonstration du seuil de rentabilité" :done, 2024, 2026
"Centaines de qubits logiques" :active, 2026, 2028
section "FTQC à grande échelle"
"1000+ qubits logiques (App commerciale)" : 2028, 2030
"Ordinateur quantique universel tolérant aux pannes" : 2030, 2035&lt;/div>
&lt;h3 id="61-défis-actuels-et-avenir">6.1 Défis actuels et avenir
&lt;/h3>&lt;p>Le plus grand défi à l&amp;rsquo;heure actuelle en 2026 réside dans la capacité de refroidissement des immenses cryostats (réfrigérateurs à dilution) nécessaires au maintien de températures extrêmement basses, et dans le câblage (goulot d&amp;rsquo;étranglement des E/S) reliant l&amp;rsquo;équipement de contrôle à température ambiante et la puce quantique à température cryogénique. Face à cela, le développement de puces de contrôle CMOS fonctionnant en environnement cryogénique (Cryo-CMOS) progresse à un rythme effréné.&lt;/p>
&lt;h3 id="conclusion">Conclusion
&lt;/h3>&lt;p>L&amp;rsquo;année 2026 sera enregistrée dans l&amp;rsquo;histoire des ordinateurs quantiques comme &amp;ldquo;l&amp;rsquo;année inaugurale de la mise à l&amp;rsquo;échelle des qubits logiques&amp;rdquo;. Grâce à la démonstration des algorithmes de correction d&amp;rsquo;erreurs, à la modularisation du matériel et aux progrès rapides de l&amp;rsquo;approche topologique, le &amp;ldquo;jour de la mise en pratique&amp;rdquo; n&amp;rsquo;est plus une histoire lointaine, mais un jalon concret à atteindre d&amp;rsquo;ici quelques années. Pour les développeurs d&amp;rsquo;algorithmes quantiques et les entreprises, c&amp;rsquo;est le moment idéal pour investir sérieusement dans la résolution de problèmes en mode &amp;ldquo;quantum-native&amp;rdquo;.&lt;/p>
&lt;hr>
&lt;p>&lt;em>Cet article a été rédigé sur la base des dernières recherches et tendances de l&amp;rsquo;industrie de l&amp;rsquo;informatique quantique en 2026.&lt;/em>&lt;/p></description></item></channel></rss>