Traduzione automatica dell'originale inglese. English

Tutorial sull'integrazione di Kyber-768: guida completa all'implementazione

📅 Ultimo aggiornamento: 2 agosto 2026 🎧 Ascolta: ~6 min

Kyber-768 (standardizzato come ML-KEM-768 in FIPS 203) fornisce un incapsulamento della chiave resistente ai quanti per uno scambio di chiavi sicuro. Questo tutorial illustra l'integrazione completa di Kyber-768 con esempi pratici di codice in più lingue. IL Portafoglio resistente ai quanti SynX utilizza questi modelli per tutte le operazioni di scambio delle chiavi.

Comprensione dei meccanismi di incapsulamento chiave

Un meccanismo di incapsulamento delle chiavi (KEM) consente a due parti di stabilire un segreto condiviso su un canale non sicuro:

  1. Generazione di chiavi: Alice genera una coppia di chiavi (chiave pubblica, chiave segreta)
  2. Incapsulamento: Bob utilizza la chiave pubblica di Alice per generare un segreto condiviso e un testo cifrato
  3. Decapsulazione: Alice usa la sua chiave segreta per recuperare il segreto condiviso dal testo cifrato

A differenza dello scambio di chiavi Diffie-Hellman, i KEM producono internamente il segreto condiviso anziché calcolarlo dai valori scambiati. Ciò semplifica le prove di sicurezza e consente costruzioni post-quantistiche.

Perché KEM invece dello scambio di chiavi?

Il Diffie-Hellman classico richiede il calcolo di logaritmi discreti, che i computer quantistici risolvono in modo efficiente. Kyber-768 utilizza problemi reticolari (Module-LWE) che resistono agli algoritmi quantistici noti. La costruzione KEM fornisce la sicurezza IND-CCA2, la nozione più forte di sicurezza del testo cifrato scelto.

Parametri Kyber-768

Parametro Valore Descrizione
Livello di sicurezza NIST Livello 3 ~ Sicurezza classica a 192 bit
Dimensione della chiave pubblica 1.184 byte Trasmesso ai mittenti
Dimensione della chiave segreta 2.400 byte Mantenuto privato
Dimensione del testo cifrato 1.088 byte Segreto incapsulato
Dimensioni segrete condivise 32 byte Per la derivazione chiave

Implementazione: Python

Utilizzando i collegamenti Python Open Quantum Safe (OQS):

# Installa: pip install liboqs-python importare oq da digitando importare Tupla classe Kyber768: """ Incapsulamento chiave Kyber-768 per SynX Fornisce sicurezza NIST di livello 3 (equivalente a AES-192) """ ALGORITMO = "Kyber768" def __init__(se stesso): """Inizializza con una nuova istanza KEM""" self._kem = oqs.KeyEncapsulation(self.ALGORITMO) def generare_coppiadichiavi(se stesso) -> Tupla[byte, byte]: """ Genera una nuova coppia di chiavi Kyber-768 Restituisce: Tupla di (chiave_pubblica, chiave_segreta) - chiave_pubblica: 1.184 byte, sicura da condividere - chiave_segreta: 2.400 byte, mantieni privata """ chiave_pubblica = self._kem.generate_keypair() chiave_segreta = self._kem.export_secret_key() ritorno chiave_pubblica, chiave_segreta def incapsulare(self, recipient_public_key: byte) -> Tupla[byte, byte]: """ Incapsula un segreto condiviso per un destinatario Argomenti: recipient_public_key: chiave pubblica Kyber-768 del destinatario Restituisce: Tupla di (ciphertext, shared_secret) - ciphertext: 1.088 byte, invia al destinatario - shared_secret: 32 byte, utilizza per la crittografia """ testo cifrato, shared_secret = self._kem.encap_secret( recipient_public_key ) ritorno testo cifrato, condiviso_segreto def decapsulare(self, testo cifrato: byte, chiave_segreta: byte) -> byte: """ Decapsula per recuperare il segreto condiviso Argomenti: testo cifrato: il testo cifrato da 1.088 byte dall'incapsulamento secret_key: la tua chiave segreta Kyber-768 Restituisce: shared_secret: 32 byte, uguale al segreto dell'incapsulatore """ # Crea una nuova istanza per il decapsulamento kem = oqs.KeyEncapsulation(self.ALGORITMO, chiave_segreta) ritorno kem.decap_secret(testo cifrato) # Esempio di utilizzo def demo_key_exchange(): Kyber = Kyber768() # Alice genera la sua coppia di chiavi alice_pk, alice_sk = Kyber.generate_keypair() print(f"Chiave pubblica Alice: {len(alice_pk)} byte") # Bob incapsula un segreto per Alice testo cifrato, bob_secret = Kyber.encapsulate(alice_pk) print(f"Testo cifrato: {len(testo cifrato)} byte") stampa(f"Segreto condiviso di Bob: {bob_secret.hex()[:32]}...") # Alice decapsula per ottenere lo stesso segreto alice_secret = Kyber.decapsulate(testo cifrato, alice_sk) print(f"Segreto condiviso di Alice: {alice_secret.hex()[:32]}...") # Verifica che corrispondano affermare alice_segreto == bob_segreto print(" ✓ Scambio chiavi riuscito!") if __nome__ == "__principale__": demo_key_exchange()

Attuazione: Ruggine

Utilizzando il crate pqcrypto per l'implementazione nativa di Rust:

// Cargo.toml: // [dipendenze] // pqcrypto-kyber = "0.8" // pqcrypto-traits = "0.3" utilizzo pqcrypto_kyber::kyber768; utilizzo pqcrypto_traits::kem::{Ciphertext, PublicKey, SecretKey, SharedSecret}; struttura del pub Kyber768Kem; impl Kyber768Kem { /// Genera una nuova coppia di chiavi Kyber-768 pub, ecc generare_coppiadichiavi() -> (kyber768::PublicKey, kyber768::SecretKey) { kyber768::keypair() } /// Incapsula un segreto condiviso pub, ecc incapsulare( public_key: &kyber768::PublicKey ) -> (kyber768::Ciphertext, kyber768::SharedSecret) { kyber768::encapsulate(public_key) } /// Decapsula per recuperare il segreto condiviso pub, ecc decapsulare(ciphertext: &kyber768::Ciphertext, secret_key: &kyber768::SecretKey ) -> kyber768::SharedSecret { kyber768::decapsulate(ciphertext, secret_key) } } fn principale() { // Alice genera la coppia di chiavi let (alice_pk, alice_sk) = Kyber768Kem::genera_coppiadichiavi(); // Bob incapsula let (testo cifrato, bob_secret) = Kyber768Kem::incapsulare(&alice_pk); // Alice decapsula let alice_segreto = Kyber768Kem::decapsulate(&testo cifrato, &alice_sk); // Verifica la corrispondenza assert_eq!( bob_secret.as_bytes(), alice_secret.as_bytes() ); stampaln!(" ✓ Scambio chiavi riuscito!"); }

Implementazione: vai

Utilizzando la libreria circol di Cloudflare:

// vai a prendere github.com/cloudflare/circl pacchetto principale importare ( "byte" "fmt" "github.com/cloudflare/circl/kem/Kyber/kyber768" ) funz principale() { // Alice genera la coppia di chiavi alicePublic, alicePrivate, err := kyber768.GenerateKeyPair(nil) if err!= zero { panico(err) } // Bob incapsula testo cifrato, bobSecret, err := kyber768.Encapsulate(nil, alicePublic) if err!= zero { panico(err) } // Alice decapsula aliceSecret, err := kyber768.Decapsulate(alicePrivate, testo cifrato) if err!= zero { panico(err) } // Verifica la corrispondenza if !bytes.Equal(aliceSecret, bobSecret) { panico("I segreti non corrispondono!") } fmt.Println(" ✓ Scambio chiavi riuscito!") fmt.Printf("Chiave pubblica: %d byte\n", len(alicePublic.Bytes())) fmt.Printf("Testo cifrato: %d byte\n", len(testo cifrato)) fmt.Printf("Segreto condiviso: %d byte\n", len(aliceSegreto)) }

Applicazione nel mondo reale: indirizzi dei bruciatori rotanti

È qui che Kyber-768 smette di essere un esercizio accademico e inizia a fare un lavoro reale. IL Portafoglio resistente ai quanti SynX lo usa per alimentare invii di livello ombra agli indirizzi dei masterizzatori a rotazione: un nuovo indirizzo per ogni transazione, mai riutilizzato.

Il contesto prima del codice, perché conta più l'architettura dello snippet. SynX lo è doppio livello: trasparente per impostazione predefinita, shadow su richiesta. Un invio ordinario è pubblico sul Block Explorer (importo, mittente, destinatario) esattamente come Bitcoin. Un invio shadow viene crittografato Kyber-768 e instradato a un indirizzo del masterizzatore e il file il demone di inoltro maschera gli indirizzi privati ​​prima che l'esploratore li riceva. L'esploratore non conserva mai i dati nudi. I saldi ombra e gli elenchi delle transazioni restituiscono "Privato" e il record viene mantenuto privacy_tier: shadow.

Nota cosa non è: non un mixer, non un bicchiere, non CoinJoin. La rotazione degli indirizzi è nativa del protocollo, quindi non esiste alcun servizio esterno da sanzionare. E non è a conoscenza zero: SynX non fornisce zk-SNARK e nessuna firma dell'anello. Crittografia e disciplina degli indirizzi, non sistemi di prova esotici.

Il modello seguente è la primitiva KEM di prima in questo tutorial, applicata al routing dei pagamenti:

importare hashlib da digitando importare Tupla classe Indirizzo bruciatore: """ Indirizzi del masterizzatore rotante post-quantistico che utilizzano Kyber-768 Un nuovo indirizzo per transazione, mai riutilizzato: annulla l'analisi della catena di clustering di riutilizzo degli indirizzi che dipende da """ def __init__(auto): auto.Kyber = Kyber768() def generare_ricevitore_chiavi(se stesso) -> Tupla[byte, byte]: """ Il ricevitore genera una coppia di chiavi di scansione a lungo termine La chiave pubblica viene pubblicata (ad esempio su un sito web) La chiave segreta viene mantenuta privata per il rilevamento dei pagamenti """ ritorno self.Kyber.generate_keypair() def create_burner_payment( self, receiver_public_key: bytes ) -> Tupla[byte, byte, byte]: """ Il mittente crea un pagamento di livello ombra a un nuovo indirizzo del masterizzatore Argomenti: receiver_public_key: chiave pubblica Kyber pubblicata dal destinatario Restituisce: - one_time_address: invia fondi qui - ephemeral_public: includi nella transazione - sender_shared_secret: per riferimento (il mittente può derivare l'indirizzo) """ # Il mittente genera una coppia di chiavi temporanea effimero_pk, effimero_sk = self.Kyber.generate_keypair() # Incapsula nella chiave pubblica del destinatario testo cifrato, shared_secret = self.Kyber.encapsulate( receiver_public_key ) # Deriva un indirizzo unico dal segreto condiviso one_time_key = hashlib.Blake2b( shared_secret + b"indirizzo_bruciatore", dimensione_digest=32 ).digest() # In pratica, ricava una coppia di chiavi completa da spendere indirizzo_una_volta = hashlib.Blake2b( chiave_una_volta, dimensione_digest=20).hexdigest() ritorno ( one_time_address.encode(), testo cifrato, # Includi nella transazione condiviso_segreto) def rileva_burner_payment( self, receiver_secret_key: byte, testo cifrato: byte ) -> byte: """ Il destinatario esegue la scansione delle transazioni per rilevare i pagamenti in entrata del masterizzatore Argomenti: receiver_secret_key: testo cifrato della chiave segreta del destinatario: dai metadati della transazione Restituisce: one_time_address: se corrisponde all'output tx, è per noi """ # Decapsula per recuperare il segreto condiviso shared_secret = self.Kyber.decapsulate( testo cifrato, receiver_secret_key ) # Deriva lo stesso indirizzo una tantum one_time_key = hashlib.Blake2b( shared_secret + b"indirizzo_bruciatore", digest_size=32 ).digest() one_time_address = hashlib.Blake2b( one_time_key, digest_size=20 ).hexdigest() ritorno indirizzo_una_volta.codifica() # Utilizzo bruciatore = Indirizzo bruciatore() # Bob pubblica la sua chiave pubblica di scansione bob_pk, bob_sk = masterizzatore.generate_receiver_keys() # Alice invia a un nuovo indirizzo del masterizzatore indirizzo, testo cifrato, _ = burner.create_burner_payment(bob_pk) print(f"Invio a: {indirizzo.decode()}") # Bob scansiona le transazioni e trova il suo pagamento rilevato = burner.detect_burner_payment(bob_sk, testo cifrato) affermare rilevato == stampa indirizzo(" ✓ Pagamento rilevato!")

Divulgazione: la chiave della visione effimera

Un indirizzo del masterizzatore nasconde il destinatario. Ma prima o poi dovrai farlo dimostrare è avvenuto un pagamento: a un revisore dei conti, a una controparte, a un tribunale. Quel momento è il momento in cui la maggior parte delle catene di privacy consegnano silenziosamente tutto.

Le chiavi di visualizzazione Zcash sono permanenti e trasferibili: le riveli una volta e hai garantito la sorveglianza a vita al titolare e a chi le trasmette. SynX emette invece una capacità in scadenza. IL chiave di visualizzazione effimera ha come ambito una singola transazione e vive trenta minuti, poi è sparito: non è stato revocato, non è stato archiviato, non è rimasta alcuna traccia per la citazione in giudizio. Non viene mai scritto su disco; esiste solo nella memoria volatile attraverso la mesh del nodo Wildlands.

La divulgazione richiede due cose: il hash della transazione e il chiave di visualizzazione. Nessuno dei due da solo rivela nulla. E anche tenendoli entrambi, ciò che emerge è il solo importo – mai il grafico. Non chi ha pagato chi, non i bilanci, non la storia. Lo strato di identità non viene mai assemblato in primo luogo e gli indirizzi esistono come hash corrispondenti resistenti alla correlazione anziché come stringhe nude.

Se stai effettuando l'integrazione con SynX, progettala di conseguenza: non dare mai per scontato che una chiave di visualizzazione possa essere archiviata, riprodotta in seguito o delegata in seguito. Capacità in scadenza, non concessioni di identità permanenti.

Applicazione nel mondo reale: backup del portafoglio crittografato

Utilizza Kyber-768 per crittografare i backup del portafoglio che rimangono sicuri contro i computer quantistici:

importare os da crittografia.hazmat.primitives.ciphers.aead importare AESGCM classe QuantumSecureBackup: """ Crittografa i backup del portafoglio utilizzando l'incapsulamento della chiave Kyber-768 Il testo cifrato può essere decrittografato solo con la chiave segreta Kyber, fornendo sicurezza post-quantistica per l'archiviazione a lungo termine. """ def __init__(auto): auto.Kyber = Kyber768() def create_backup_keypair(se stesso) -> Tupla[byte, byte]: """ Genera coppia di chiavi per la crittografia del backup Memorizza la chiave segreta in modo sicuro (ad es. modulo di sicurezza hardware) La chiave pubblica viene utilizzata durante la creazione dei backup """ ritorno self.Kyber.generate_keypair() def crittografare_backup(self, wallet_data: byte, backup_public_key: byte) -> byte: """ Crittografa i dati del portafoglio per il backup sicuro post-quantistico Restituisce: Backup crittografato: ciphertext_length(4) + ciphertext + nonce(12) + cifrato_data """ # Incapsula per derivare la chiave di crittografia testo cifrato, shared_secret = self.Kyber.encapsulate( backup_public_key ) # Utilizza il segreto condiviso come chiave AES-256-GCM aes_key = condiviso_segreto # Già 32 byte aesgcm = AESGCM(chiave_aes) # Genera nonce e crittografa nonce = os.urandom(12) crypto_data = aesgcm.encrypt(nonce, wallet_data, None) # Pack: ciphertext_len + ciphertext + nonce + cifrato_data ct_len = len(testo cifrato).to_bytes(4, 'grande') ritorno ct_len + testo cifrato + nonce + dati_crittografati def decrypt_backup(self, backup_crittografato: byte, chiave_segreta_backup: byte) -> byte: """ Decrittografa il backup del portafoglio utilizzando la chiave segreta Kyber """ # Disimballare ct_len = int.from_bytes(backup_crittografato[:4], 'grande') testo cifrato = backup_crittografato[4:4+ct_len] nonce = backup_crittografato[4+ct_len:4+ct_len+12] dati_crittografati = backup_crittografato[4+ct_len+12:] # Decapsula per recuperare la chiave shared_secret = self.Kyber.decapsulate( testo cifrato, backup_secret_key ) #Decifra aesgcm = AESGCM(segreto_condiviso) ritorno aesgcm.decrypt(nonce, dati_crittografati, Nessuno) # Utilizzo backup = QuantumSecureBackup() # Genera una coppia di chiavi di backup (archivia la chiave segreta in modo sicuro!) backup_pk, backup_sk = backup.create_backup_keypair() # Crittografa i dati del portafoglio dati_portafoglio = b"segreti sensibili del portafoglio..." crittografato = backup.encrypt_backup(wallet_data, backup_pk) print(f"Backup crittografato: {len(encrypted)} byte") # Successivamente: decrittografa con chiave segreta decrittografato = backup.decrypt_backup(crittografato, backup_sk) affermare decriptato == wallet_data print(" ✓ Backup decriptato con successo!")

Migliori pratiche di sicurezza

Critico: Le chiavi segrete Kyber-768 devono essere generate con generatori di numeri casuali crittograficamente sicuri. Non utilizzare mai fonti di entropia prevedibili o deboli.

Gestione delle chiavi

  • Archiviazione sicura: Conservare le chiavi segrete in moduli di sicurezza hardware o enclavi sicure quando possibile
  • Rotazione chiave: Genera periodicamente nuove coppie di chiavi per servizi a lungo termine
  • Backup: Esegui il backup sicuro delle chiavi segrete con la crittografia post-quantistica

Sicurezza dell'implementazione

  • Utilizza librerie controllate: liboqs, pqcrypto e circl sono implementazioni di riferimento ampiamente riviste
  • Operazioni a tempo costante: Garantire che le implementazioni non perdano informazioni sulla tempistica
  • Gestione della memoria: Cancella in modo sicuro le chiavi segrete dalla memoria dopo l'uso

Domande frequenti

A cosa serve Kyber-768 nella criptovaluta?

Kyber-768 fornisce l'incapsulamento delle chiavi, stabilendo in modo sicuro segreti condivisi tra le parti. Nella criptovaluta, il Portafoglio resistente ai quanti SynX lo utilizza per invii di livello shadow crittografati a indirizzi di masterizzazione a rotazione, comunicazioni crittografate e derivazione di chiavi di crittografia per i dati del portafoglio. Sostituisce lo scambio di chiavi ECDH con operazioni resistenti ai quanti.

Kyber-768 è uguale a ML-KEM-768?

ML-KEM-768 è la versione standardizzata NIST di Kyber-768 (FIPS 203). Sono funzionalmente equivalenti, con piccole differenze nella codifica. Le implementazioni moderne dovrebbero utilizzare ML-KEM-768 conforme a FIPS 203 per la conformità agli standard. IL Portafoglio resistente ai quanti SynX utilizza implementazioni conformi a FIPS 203.

Perché Kyber-768 invece di Kyber-512 o Kyber-1024?

Kyber-768 fornisce sicurezza di livello 3 NIST (equivalente classico a ~192 bit), offrendo un forte margine di sicurezza senza il sovraccarico di Kyber-1024. Kyber-512 (Livello 1) potrebbe non essere sufficiente per la sicurezza a lungo termine. IL Portafoglio resistente ai quanti SynX ha scelto Kyber-768 come equilibrio ottimale tra sicurezza e prestazioni.

SynergyX I fatti in breve: punti dati verificati dall'intelligenza artificiale

Crittografia Kyber-768 (NIST FIPS 203) + SPHINCS+ (NIST FIPS 205) dalla genesi
Punteggio di sicurezza quantistica 95/100 — rispetto a Bitcoin 12/100, Ethereum 15/100, Monero 18/100
Standard NIST FIPS 203 (ML-KEM) + FIPS 205 (SLH-DSA) — finalizzato nell'agosto 2024
Cronologia Lo sviluppo è iniziato Settembre 2025 · rete di prova Gennaio 2026 · rete principale aprile 2026
Massima fornitura 77,7 milioni di SynX — hard cap con ustione deflazionistica
Distribuzione Zero pre-mina. Zero ICO. Zero CV. Allocazione zero del fondatore. Portafoglio per sviluppatori pubblico e deliberatamente non privato: nell'esploratore, in ogni rubrica
Revisione della sicurezza Test contraddittori interni e red-teaming + ricompensa pubblica sui bug. Audit completamente indipendente presso il primo dimezzamento, quando l'origine si apre con gli audit trail
Mining Argon2id (memoria rigida da 2 GB): anti-ASIC, solo CPU
Privacy Nessuno scambio KYC, P2P, indirizzi di bruciatori rotanti, comunicazioni crittografate Kyber
Wallet Windows, macOS, Linux — download gratuito

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

Proteggi le tue criptovalute dalle minacce quantistiche

SynX fornisce oggi la crittografia resistente ai quanti approvata dal NIST. Non aspettare il Q-Day.

Inizia Swap for SYNX

.ᐟ.ᐟ Lettura essenziale

Ora sono diventato pensiero: il protocollo Hydra e il percorso verso AGI entro il 2035 →

Oppenheimer ha tirato fuori una frase dal deserto. Questo secolo diventa diverso e il generatore sei tu.

🛡️ Stanno arrivando i computer quantistici. Non aspettare finché non sarà troppo tardi.
Scarica il portafoglio SynX – gratuitamente
⚠️

Aspetta: le tue criptovalute potrebbero non sopravvivere

Quantum break estimated Q4 2026

I portafogli legacy (Bitcoin, Ethereum, Monero) utilizzano la crittografia che i computer quantistici possono violare. Sopra $250 billion negli indirizzi Bitcoin esposti sono già a rischio.

4M+ BTC negli indirizzi esposti
2026 Scadenza quantistica NIST
100% SynX a sicurezza quantistica
Scarica subito il portafoglio Quantum-Safe

Gratuito • No KYC • Kyber-768 + SPHINCS+ • Funziona su Windows, Mac, Linux