Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
quantum — Ce dépôt contient le code et les détails de soumission pour le défi du prix QDay par https://www.projecteleven.com/ | Kitploit
Outils/GitHubGitHub/giancarlolelli/quantum
ExploitationCryptographieSécurité MatérielleArticles et RechercheApprentissage et ÉducationExploitation de Binaires
GitHubgiancarlolelli/quantum

quantum

Ce dépôt contient le code et les détails de soumission pour le défi du prix QDay par https://www.projecteleven.com/

Voir le dépôt
352012il y a 5 moisVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Algorithme de Shor pour l'ECDLP — Soumission au Q-Day Prize

Solveur quantique pour le problème du logarithme discret sur courbe elliptique (ECDLP), construit pour le Q-Day Prize Challenge par Project Eleven. L'objectif : récupérer des clés privées ECC sur du matériel quantique réel en utilisant l'algorithme de Shor.

  • Auteur : Giancarlo Lelli
  • Contact : [email protected]
  • LinkedIn : https://www.linkedin.com/in/giancarlolelli
  • Parcours : Leader technologique avec plus de 10 ans d'expérience dans les logiciels d'entreprise, l'architecture full-stack et le développement cloud-native. Formation en informatique avec une expérience pratique dans les écosystèmes .NET, Python, Rust et Cloud. Travaille actuellement en tant que spécialiste GTM Cloud, axé sur l'architecture de solutions et l'ingénierie commerciale.

Approche

Toutes les courbes du défi utilisent y^2 = x^3 + 7 sur F_p (a = 0, b = 7), correspondant à la famille secp256k1. Le solveur implémente la variante à deux registres de l'algorithme de Shor pour l'ECDLP :

  1. Préparer les registres de comptage |j>, |k> en superposition uniforme (Hadamard)
  2. Calculer |j>|k>|jG + kQ> via 2t additions de points contrôlées (t = num_counting qubits)
  3. Mesurer le registre de points, le réduisant à un élément de groupe R
  4. Appliquer la QFT inverse aux registres de comptage
  5. Mesurer j, k et extraire d à partir de la relation j + kd = r (mod n)

La clé privée d est récupérée en collectant plusieurs échantillons (j, k) qui satisfont la même relation linéaire modulo l'ordre du groupe n. Le solveur prend en charge six stratégies d'oracle pour les additions de points contrôlées, sélectionnées automatiquement en fonction de la taille de la courbe ou manuellement via --oracle.

Stratégies d'Oracle

Stratégie 1 : Unitaire dense (par défaut pour n_bits <= 6)

Utilisée pour les courbes avec un ordre de groupe jusqu'à ~6 bits. Implémentée dans projecteleven.py.

Chaque addition de point contrôlée "add S" est représentée comme une matrice de permutation 2^(n+1) x 2^(n+1) appliquée via qc.unitary(). La matrice encode l'action complète du groupe : le bloc supérieur gauche est l'identité (contrôle=0), le bloc inférieur droit permute les états de base selon l'application P -> P+S (contrôle=1).

  • Encodage : Indice de groupe (0..n-1)
  • Mémoire : O(2^{2n}) par matrice
  • Qubits : 2t + n (deux registres de comptage + registre de points)
  • Limitation : La décomposition unitaire de Qiskit est O(4^n), ce qui rend cette approche irréalisable au-delà de ~6 bits

Stratégie 2 : Décomposition de permutation efficace (par défaut pour n_bits > 6)

Utilisée pour les courbes plus grandes. Implémentée dans quantum_arithmetic.py.

Au lieu de construire des matrices denses, chaque permutation "add S" est décomposée en cycles, puis en transpositions. Chaque transposition (échange de deux états de base |a> <-> |b>) est implémentée avec :

  1. Réduction CNOT — Des CNOT d'un bit pivot vers tous les autres bits différents, réduisant la différence multi-bit à une différence d'un seul bit
  2. X multi-contrôlé — Une porte MCX sur le bit pivot, conditionnée par le fait que tous les autres bits correspondent au motif cible
  3. Annulation des CNOT — Inverser l'étape 1 pour restaurer les bits non-pivot

Le MCX utilise une décomposition en chaîne en V avec (n-2) qubits ancilla dédiés, donnant O(n) portes Toffoli par MCX au lieu de O(n^2) sans ancillas. Chaque addition contrôlée est construite comme un sous-circuit isolé et ajoutée comme une porte opaque unique, évitant une croissance quadratique du DAG dans Qiskit.

  • Encodage : Indice de groupe (0..n-1)
  • Mémoire : O(N) par addition (N = ordre du groupe)
  • Qubits : 2t + n + (n-2) ancillas
  • Portes par addition : O(N * n)

Stratégie 3 : Oracle quantique basé sur les coordonnées (--oracle coordinate)

Disponible pour les courbes jusqu'à ~6 bits. Implémentée dans quantum_oracle.py.

Au lieu d'encoder les points comme des indices de groupe, le registre quantique contient les coordonnées de champ (x, y) réelles en binaire plus un indicateur d'identité. La disposition du registre de points est :

  • x_reg : f_bits qubits (f_bits = ceil(log2(p)))
  • y_reg : f_bits qubits
  • id_flag : 1 qubit (1 = point à l'infini)

Chaque "add S" contrôlé est calculé à partir de la formule d'addition EC sur tous les encodages de coordonnées valides, produisant une permutation sur le registre de coordonnées. Cette permutation est décomposée en cycles puis en transpositions en utilisant la même infrastructure de réduction CNOT + MCX que la Stratégie 2.

  • Encodage : Coordonnées (x, y, id_flag)
  • Qubits : 2t + 2f_bits + 1 + max(0, 2f_bits - 1) ancillas
  • Portes par addition : O(N * f_bits)

Stratégie 4 : Oracle arithmétique (--oracle arithmetic)

Cadre pour l'addition de points à mise à l'échelle polynomiale. Implémentée dans quantum_oracle.py et quantum_arithmetic.py.

Utilise l'encodage par coordonnées (identique à la Stratégie 3) avec des primitives arithmétiques modulaires basées sur la QFT comme éléments de base pour l'addition de points entièrement arithmétique. La base de code comprend des implémentations testées de :

  • Additionneur modulaire de Beauregard — basé sur la QFT (cible + constante) mod p avec désinformatisation appropriée des ancillas
  • Multiplication modulaire quantique-quantique — |a>|b>|0> -> |a>|b>|a*b mod p> par décalage et addition avec doublement modulaire explicite, O(n^3) portes
  • Permutation d'inverse modulaire — |x> -> |x^{-1} mod p> par transpositions de table de correspondance
  • Addition modulaire quantique-quantique contrôlée — |a> contrôlé -> |a + b mod p> avec réduction de Beauregard

Les primitives arithmétiques atteignent une mise à l'échelle O(n^3) par addition de point contre O(N*n) pour l'approche par permutation. Cependant, les opérations basées sur la QFT ont un facteur constant environ 150 fois plus grand, rendant l'approche arithmétique plus efficace uniquement pour les courbes au-delà de ~20 bits d'ordre de groupe. Pour les tailles de défi actuelles (jusqu'à 12 bits), l'additionneur par permutation reste plus rapide et est utilisé par défaut.

Stratégie 5 : Estimation de phase semi-classique de Google (--oracle google)

Implémentée dans google_semiclassical.py. Inspirée de la technique d'estimation de phase à recyclage de qubits de Griffiths & Niu (1996), appliquée à grande échelle dans Babbush et al. (2026) pour les estimations de ressources ECDLP secp256k1. L'article de Babbush et al. a été publié le 30 mars 2026.

Remplace les deux registres de comptage multi-qubits (j, k) et la QFT inverse globale par deux qubits recyclés uniques et des corrections de phase conditionnées classiquement. Chaque bit du registre de comptage est traité séquentiellement : préparer en |+>, appliquer l'addition de point contrôlée, corriger la phase en fonction de tous les bits précédemment mesurés, puis mesurer. Les primitives de circuit dynamique reset + if_test dans Qiskit permettent cela sur le matériel IBM Quantum.

L'oracle pour les additions de points contrôlées est délégué à l'infrastructure existante (unitaire dense pour <= 6 bits, permutation efficace pour > 6 bits), donc les économies de qubits proviennent entièrement de la suppression des registres de comptage.

Télécharger l’outil