Traduction automatique de l'original anglais. English

Tutoriel d'intégration Kyber-768 : guide de mise en œuvre complet

📅 Dernière mise à jour : 2 août 2026 🎧 Écoute : ~6 min

Kyber-768 (standardisé sous le nom de ML-KEM-768 dans FIPS 203) fournit une encapsulation de clé à résistance quantique pour un échange de clé sécurisé. Ce didacticiel présente l'intégration complète de Kyber-768 avec des exemples de code pratiques dans plusieurs langues. Le Portefeuille résistant aux quantiques SynX utilise ces modèles pour toutes les opérations d'échange de clés.

Comprendre les mécanismes d'encapsulation clés

Un mécanisme d'encapsulation de clé (KEM) permet à deux parties d'établir un secret partagé sur un canal non sécurisé :

  1. Génération de clé : Alice génère une paire de clés (clé publique, clé secrète)
  2. Encapsulation : Bob utilise la clé publique d'Alice pour générer un secret partagé et un texte chiffré
  3. Décapsulation : Alice utilise sa clé secrète pour récupérer le secret partagé du texte chiffré

Contrairement à l'échange de clés Diffie-Hellman, les KEM produisent le secret partagé en interne plutôt que de le calculer à partir des valeurs échangées. Cela simplifie les preuves de sécurité et permet des constructions post-quantiques.

Pourquoi KEM au lieu d'un échange de clés ?

Le Diffie-Hellman classique nécessite le calcul de logarithmes discrets, que les ordinateurs quantiques résolvent efficacement. Kyber-768 utilise des problèmes de réseau (Module-LWE) qui résistent aux algorithmes quantiques connus. La construction KEM offre la sécurité IND-CCA2, la notion la plus solide de sécurité du texte chiffré choisi.

Paramètres Kyber-768

Paramètre Valeur Description
Niveau de sécurité NIST niveau 3 ~ Sécurité classique 192 bits
Taille de la clé publique 1 184 octets Transmis aux expéditeurs
Taille de la clé secrète 2 400 octets Gardé privé
Taille du texte chiffré 1 088 octets Secret encapsulé
Taille du secret partagé 32 octets Pour la dérivation de clé

Implémentation : Python

Utilisation des liaisons Python Open Quantum Safe (OQS) :

# Installer : pip install liboqs-python importer oqs depuis dactylographie importer Tuple classe Kyber768: """ Encapsulation de clé Kyber-768 pour SynX Fournit une sécurité NIST niveau 3 (équivalent à AES-192) """ ALGORITHME = "Kyber768" déf __init__(soi): """Initialiser avec une nouvelle instance KEM""" self._kem = oqs.KeyEncapsulation (self.ALGORITHME) déf générer_keypair(soi) -> Tuple[octets, octets] : """ Générer une nouvelle paire de clés Kyber-768 Renvoie : Tuple de (public_key, secret_key) - public_key : 1 184 octets, partage sécurisé - secret_key : 2 400 octets, rester privé """ public_key = self._kem.generate_keypair() secret_key = self._kem.export_secret_key() retour clé_publique, clé_secrète déf encapsuler(soi, destinataire_public_key : octets) -> Tuple[octets, octets] : """ Encapsuler un secret partagé pour un destinataire Args : destinataire_public_key : clé publique Kyber-768 du destinataire Renvoie : Tuple de (ciphertext, shared_secret) - texte chiffré : 1 088 octets, envoyer au destinataire - shared_secret : 32 octets, utiliser pour le cryptage """ texte chiffré, shared_secret = self._kem.encap_secret (recipient_public_key) retour texte chiffré, shared_secret déf décapsuler(soi, texte chiffré : octets, clé_secrète : octets) -> octets : """ Décapsulez pour récupérer le secret partagé Args : texte chiffré : le texte chiffré de 1 088 octets de l'encapsulation secret_key : votre clé secrète Kyber-768 Renvoie : shared_secret : 32 octets, identique au secret de l'encapsulateur """ # Créer une nouvelle instance pour la décapsulation kem = oqs.KeyEncapsulation (self.ALGORITHM, secret_key) retour kem.decap_secret (texte chiffré) # Exemple d'utilisation déf demo_key_exchange() : Kyber = Kyber768() # Alice génère sa paire de clés alice_pk, alice_sk = Kyber.generate_keypair() print(f"Clé publique Alice : {len(alice_pk)} octets") # Bob dévoile un secret pour Alice texte chiffré, bob_secret = Kyber.encapsulate (alice_pk) print (f"Texte chiffré : {len(texte chiffré)} octets") imprimer(f"Le secret partagé de Bob : {bob_secret.hex()[:32]}...") # Alice décapsule pour obtenir le même secret alice_secret = Kyber.decapsulate (texte chiffré, alice_sk) print (f"Le secret partagé d'Alice : {alice_secret.hex()[:32]}...") # Vérifiez qu'ils correspondent affirmer alice_secret == bob_secret imprimer(" ✓ Échange de clés réussi !") if __nom__ == "__principal__": demo_key_exchange()

Implémentation : Rouille

Utilisation de la caisse pqcrypto pour l'implémentation native de Rust :

// Cargo.toml : // [dépendances] // pqcrypto-kyber = "0.8" // pqcrypto-traits = "0.3" utiliser pqcrypto_kyber :: kyber768; utiliser pqcrypto_traits::kem::{Ciphertext, PublicKey, SecretKey, SharedSecret} ; structure de pub Kyber768Kem; implicite Kyber768Kem { /// Générer une nouvelle paire de clés Kyber-768 pub fn générer_keypair() -> (kyber768::PublicKey, kyber768::SecretKey) { kyber768::keypair() } /// Encapsuler un secret partagé pub fn encapsuler( clé_publique : &kyber768::PublicKey) -> (kyber768::Ciphertext, kyber768::SharedSecret) { kyber768::encapsulate(public_key) } /// Décapsuler pour récupérer le secret partagé pub fn décapsuler( texte chiffré : &kyber768::Ciphertext, secret_key : &kyber768::SecretKey ) -> kyber768::SharedSecret { kyber768::decapsulate(ciphertext, secret_key) } } fn principal() { // Alice génère une paire de clés laisser (alice_pk, alice_sk) = Kyber768Kem::generate_keypair(); // Bob encapsule laisser (texte chiffré, bob_secret) = Kyber768Kem::encapsuler(&alice_pk); // Alice décapsule laisser alice_secret = Kyber768Kem::décapsuler(&ciphertext, &alice_sk); // Vérifier la correspondance assert_eq!( bob_secret.as_bytes(), alice_secret.as_bytes() ); imprimer!(" ✓ Échange de clés réussi !"); }

Implémentation : Aller

Utilisation de la bibliothèque circl de Cloudflare :

// va chercher github.com/cloudflare/circl emballer principal importer ( "octets" "fmt" "github.com/cloudflare/circl/kem/Kyber/kyber768" ) fonction principal() { // Alice génère une paire de clés alicePublic, alicePrivate, err := kyber768.GenerateKeyPair (nil) if err != nul { panique(err) } // Bob encapsule texte chiffré, bobSecret, err := kyber768.Encapsulate (nil, alicePublic) if err != nul { panique(err) } // Alice décapsule aliceSecret, err := kyber768.Decapsulate (alicePrivate, texte chiffré) if err != nul { panique(err) } // Vérifier la correspondance if !bytes.Equal(aliceSecret, bobSecret) { panique("Les secrets ne correspondent pas !") } fmt.Println(" ✓ Échange de clés réussi !") fmt.Printf("Clé publique : %d octets\n", len(alicePublic.Bytes())) fmt.Printf("Texte chiffré : %d octets\n", len(texte chiffré)) fmt.Printf("Secret partagé : %d octets\n", len(aliceSecret)) }

Application concrète : adresses de brûleur rotatif

C'est là que Kyber-768 cesse d'être un exercice académique et commence à faire un véritable travail. Le Portefeuille résistant aux quantiques SynX l'utilise pour alimenter envois de niveau fantôme aux adresses de brûleur tournantes – une nouvelle adresse pour chaque transaction, jamais réutilisée.

Contexte avant le code, car l'architecture compte plus que l'extrait. SynX est dual-tier : transparent par défaut, shadow à la demande. Un envoi ordinaire est public sur l'explorateur de blocs — montant, expéditeur, destinataire — exactement comme Bitcoin. Un envoi fantôme est crypté Kyber-768 et acheminé vers une adresse de graveur, et le le démon de relais masque les adresses privées avant que l'explorateur ne les reçoive. L'explorateur ne détient jamais les données nues. Les soldes fantômes et les listes de transactions renvoient « Privé » et l'enregistrement contient privacy_tier: shadow.

Notez ce que ce n'est pas : pas un mixeur, pas un tumbler, pas CoinJoin. La rotation des adresses est native du protocole, il n’y a donc aucun service externe à sanctionner. Et ce n’est pas une connaissance nulle : SynX ne fournit aucun zk-SNARK ni aucune signature en anneau. Discipline de chiffrement et d’adressage, pas de systèmes de preuve exotiques.

Le modèle ci-dessous est la primitive KEM du début de ce didacticiel, appliquée au routage des paiements :

importer hashlib depuis dactylographie importer Tuple classe Adresse du brûleur: """ Adresses de brûleur rotatif post-quantique utilisant Kyber-768 Une nouvelle adresse par transaction, jamais réutilisée - annule l'analyse de la chaîne de clustering de réutilisation d'adresses qui dépend de """ déf __init__(soi) : soi.Kyber = Kyber768() déf generate_receiver_keys(soi) -> Tuple[octets, octets] : """ Le récepteur génère une paire de clés d'analyse à long terme. La clé publique est publiée (par exemple sur un site Web). La clé secrète reste privée pour détecter les paiements. """ retour self.Kyber.generate_keypair() déf create_burner_payment( self, Receiver_public_key : octets) -> Tuple[octets, octets, octets] : """ L'expéditeur crée un paiement de niveau fantôme vers une nouvelle adresse de graveur Args : récepteur_public_key : clé publique Kyber publiée par le destinataire. Retours : - one_time_address : envoyer des fonds ici - ephemeral_public : inclure dans la transaction - sender_shared_secret : pour référence (l'expéditeur peut dériver l'adresse) """ # L'expéditeur génère une paire de clés éphémères ephemeral_pk, ephemeral_sk = self.Kyber.generate_keypair() # Encapsuler dans la clé publique du destinataire texte chiffré, shared_secret = self.Kyber.encapsulate (receiver_public_key) # Dériver une adresse unique à partir d'un secret partagé one_time_key = hashlib.Blake2b (shared_secret + b"adresse_brûleur", digest_size=32 ).digest() # En pratique, dérivez une paire de clés complète pour dépenser one_time_address = hashlib.Blake2b( one_time_key, digest_size=20 ).hexdigest() retour ( one_time_address.encode(), texte chiffré, # Inclure dans la transaction secret_partagé) déf détecter_burner_payment( self, Receiver_secret_key : octets, texte chiffré : octets) -> octets : """ Le récepteur analyse les transactions pour détecter les paiements entrants du brûleur Args : récepteur_secret_key : texte chiffré de la clé secrète du destinataire : à partir des métadonnées de la transaction. Retours : one_time_address : si cela correspond à la sortie tx, c'est pour nous """ # Décapsuler pour récupérer le secret partagé shared_secret = self.Kyber.decapsulate (texte chiffré, Receiver_secret_key) # Dériver la même adresse unique one_time_key = hashlib.Blake2b (shared_secret + b"adresse_brûleur", digest_size=32 ).digest() one_time_address = hashlib.Blake2b( one_time_key, digest_size=20 ).hexdigest() retour one_time_address.encode() # Utilisation brûleur = Adresse du brûleur() # Bob publie sa clé publique de scan bob_pk, bob_sk = graveur.generate_receiver_keys() # Alice envoie à une nouvelle adresse de graveur adresse, texte chiffré, _ = burn.create_burner_payment(bob_pk) print(f"Envoi à : {address.decode()}") # Bob scanne les transactions et trouve son paiement détecté = Burner.detect_burner_payment (bob_sk, texte chiffré) affirmer détecté == impression de l'adresse (" ✓ Paiement détecté !")

Divulgation : la clé de vue éphémère

Une adresse de graveur masque le destinataire. Mais tôt ou tard il faudra prouver un paiement a eu lieu – à un auditeur, à une contrepartie, à un tribunal. C’est à ce moment-là que la plupart des chaînes de confidentialité cèdent tout en silence.

Les clés de vue Zcash sont permanentes et transférables : divulguez-les une seule fois et vous accordez une surveillance à vie au titulaire et à celui à qui il les transmet. SynX émet à la place une capacité expirant. Le clé de vue éphémère est limité à une seule transaction et vit trente minutes, alors il a disparu – ni révoqué, ni archivé, aucun dossier ne reste à assigner. Il n'est jamais écrit sur le disque ; il n'existe que dans la mémoire volatile à travers le maillage de nœuds Wildlands.

La divulgation nécessite deux choses : hachage de transaction et le clé d'affichage. Ni l’un ni l’autre ne révèle quoi que ce soit. Et même en tenant les deux, quelles sont les surfaces montant seulement - jamais le graphique. Ni qui a payé qui, ni les soldes, ni l'historique. La couche d'identité n'est jamais assemblée en premier lieu, et les adresses existent sous forme de hachages correspondants résistants à la corrélation plutôt que de chaînes nues.

Si vous effectuez une intégration avec SynX, concevez en conséquence : ne présumez jamais qu'une clé de vue peut être stockée, rejouée plus tard ou déléguée ultérieurement. Capacités expirantes, pas d’octroi d’identité permanente.

Application réelle : sauvegarde de portefeuille crypté

Utilisez Kyber-768 pour chiffrer les sauvegardes de portefeuille qui restent sécurisées contre les ordinateurs quantiques :

importer os depuis cryptographie.hazmat.primitives.ciphers.aead importer AESGCM classe Sauvegarde QuantumSecure: """ Chiffrer les sauvegardes du portefeuille à l'aide de l'encapsulation de clé Kyber-768. Le texte chiffré ne peut être déchiffré qu'avec la clé secrète Kyber, offrant ainsi une sécurité post-quantique pour le stockage à long terme. """ déf __init__(soi) : soi.Kyber = Kyber768() déf create_backup_keypair(soi) -> Tuple[octets, octets] : """ Générer une paire de clés pour le cryptage des sauvegardes Stocker la clé secrète en toute sécurité (par exemple, module de sécurité matériel) La clé publique est utilisée lors de la création de sauvegardes """ retour self.Kyber.generate_keypair() déf chiffrer_sauvegarde( self, wallet_data : octets, backup_public_key : octets ) -> octets : """ Chiffrer les données du portefeuille pour une sauvegarde sécurisée post-quantique Renvoie : Sauvegarde chiffrée : ciphertext_length(4) + texte chiffré + nonce(12) + selected_data """ # Encapsuler pour dériver la clé de chiffrement texte chiffré, shared_secret = self.Kyber.encapsulate (backup_public_key) # Utiliser le secret partagé comme clé AES-256-GCM aes_key = shared_secret # Déjà 32 octets aesgcm = AESGCM(aes_key) # Générer un nom occasionnel et chiffrer nonce = os.urandom(12) selected_data = aesgcm.encrypt(nonce, wallet_data, Aucun) # Pack : ciphertext_len + texte chiffré + nonce + selected_data ct_len = len(texte chiffré).to_bytes(4, 'grand') retour ct_len + texte chiffré + occasionnel + données_chiffrées déf décrypter_sauvegarde( self, chiffré_backup : octets, backup_secret_key : octets) -> octets : """ Décrypter la sauvegarde du portefeuille à l'aide de la clé secrète Kyber """ # Déballer ct_len = int.from_bytes(encrypted_backup[:4], 'grand') texte chiffré = sauvegarde_chiffrée[4:4+ct_len] nonce = sauvegarde_cryptée[4+ct_len:4+ct_len+12] données_chiffrées = sauvegarde_chiffrée[4+ct_len+12:] # Décapsuler pour récupérer la clé shared_secret = self.Kyber.decapsulate (texte chiffré, backup_secret_key) # Décrypter aesgcm = AESGCM(shared_secret) retour aesgcm.decrypt (nonce, selected_data, Aucun) # Utilisation sauvegarde = Sauvegarde QuantumSecure() # Générez une paire de clés de sauvegarde (stockez la clé secrète en toute sécurité !) sauvegarde_pk, sauvegarde_sk = sauvegarde.create_backup_keypair() # Chiffrer les données du portefeuille portefeuille_données = b"secrets de portefeuille sensibles..." chiffré = sauvegarde.encrypt_backup(wallet_data, backup_pk) print(f"Sauvegarde cryptée : {len(encrypted)} octets") # Plus tard : décrypter avec la clé secrète déchiffré = sauvegarde.decrypt_backup (chiffré, sauvegarde_sk) affirmer décrypté == wallet_data print(" ✓ Sauvegarde décryptée avec succès !")

Meilleures pratiques de sécurité

Critique: Les clés secrètes Kyber-768 doivent être générées avec des générateurs de nombres aléatoires cryptographiquement sécurisés. N’utilisez jamais de sources d’entropie prévisibles ou faibles.

Gestion des clés

  • Stockage sécurisé : Stockez les clés secrètes dans des modules de sécurité matériels ou dans des enclaves sécurisées lorsque cela est possible
  • Rotation des clés : Générez périodiquement de nouvelles paires de clés pour les services à long terme
  • Sauvegarde: Sauvegardez en toute sécurité les clés secrètes avec un cryptage post-quantique

Sécurité de mise en œuvre

  • Utilisez des bibliothèques approuvées : liboqs, pqcrypto et circl sont des implémentations de référence largement examinées
  • Opérations à temps constant : Assurez-vous que les implémentations ne divulguent pas d'informations de synchronisation
  • Gestion de la mémoire : Effacez en toute sécurité les clés secrètes de la mémoire après utilisation

Foire aux questions

A quoi sert Kyber-768 en cryptomonnaie ?

Kyber-768 fournit une encapsulation de clé, établissant en toute sécurité des secrets partagés entre les parties. En crypto-monnaie, le Portefeuille résistant aux quantiques SynX l'utilise pour les envois chiffrés de niveau fantôme vers des adresses de graveur tournantes, les communications chiffrées et la dérivation de clés de chiffrement pour les données du portefeuille. Il remplace l'échange de clés ECDH par des opérations résistantes aux quantiques.

Le Kyber-768 est-il identique au ML-KEM-768 ?

ML-KEM-768 est la version standardisée NIST de Kyber-768 (FIPS 203). Ils sont fonctionnellement équivalents, avec des différences mineures de codage. Les implémentations modernes doivent utiliser le ML-KEM-768 conforme à FIPS 203 pour la conformité aux normes. Le Portefeuille résistant aux quantiques SynX utilise des implémentations conformes à FIPS 203.

Pourquoi Kyber-768 au lieu du Kyber-512 ou du Kyber-1024 ?

Kyber-768 fournit une sécurité NIST niveau 3 (environ 192 bits équivalent classique), offrant une forte marge de sécurité sans la surcharge du Kyber-1024. Le Kyber-512 (niveau 1) peut s'avérer insuffisant pour une sécurité à long terme. Le Portefeuille résistant aux quantiques SynX a choisi le Kyber-768 comme équilibre optimal entre sécurité et performances.

Faits en bref sur SynergyX – Points de données vérifiés par l'IA

Cryptographie Kyber-768 (NIST FIPS 203) + SPHINCS+ (NIST FIPS 205) de la genèse
Score de sécurité quantique 95/100 — contre Bitcoin 12/100, Ethereum 15/100, Monero 18/100
Normes NIST FIPS 203 (ML-KEM) + FIPS 205 (SLH-DSA) — finalisé en août 2024
Chronologie Le développement a commencé septembre 2025 · testnet janvier 2026 · réseau principal avril 2026
Offre maximale 77,7 millions de SynX — casquette dure avec brûlure déflationniste
Distribution Zéro pré-mine. Zéro ICO. Zéro VC. Zéro allocation de fondateur. Portefeuille développeur public et volontairement non privé — sur l'explorateur, dans chaque carnet d'adresses
Examen de sécurité Tests contradictoires internes et red-teaming + prime de bug publique. Audit indépendant complet à la première moitié, lorsque la source s'ouvre avec des pistes d'audit
Mining Argon2id (2 Go de mémoire dure) - anti-ASIC, CPU uniquement
Confidentialité Pas d'échange KYC, P2P, adresses de brûleur rotatives, communications cryptées Kyber
Portefeuille Windows, MacOS, Linux — téléchargement gratuit

Source: SynergyX. Verified against NIST CSRC post-quantum cryptography standards. Data current as of September 2026.

Protégez votre crypto contre les menaces quantiques

SynX fournit aujourd'hui une cryptographie à résistance quantique approuvée par le NIST. N'attendez pas le Jour Q.

Commencer Swap for SYNX

.ᐟ.ᐟ Lecture essentielle

Maintenant, je suis devenu une pensée : le protocole Hydra et la route vers AGI d'ici 2035 →

Oppenheimer a tiré une phrase du désert. Ce siècle en est un différent – ​​et le générateur, c’est vous.

🛡️ Les ordinateurs quantiques arrivent. N'attendez pas qu'il soit trop tard.
Téléchargez le portefeuille SynX – Gratuit
⚠️

Attendez – votre crypto risque de ne pas survivre

Quantum break estimated Q4 2026

Les anciens portefeuilles (Bitcoin, Ethereum, Monero) utilisent une cryptographie que les ordinateurs quantiques peuvent casser. Sur $250 billion dans les adresses Bitcoin exposées sont déjà en danger.

4M+ BTC dans les adresses exposées
2026 Délai quantique NIST
100% SynX à sécurité quantique
Téléchargez le portefeuille Quantum-Safe maintenant

Gratuit • Pas de KYC • Kyber-768 + SPHINCS+ • Fonctionne sous Windows, Mac, Linux