SynergyX Gebouwd op de algoritmen NIST gestandaardiseerd — FIPS 203 (ML-KEM/Kyber-768) en FIPS 205 (SLH-DSA/SPHINCS+). Gepubliceerd op 15 januari 2026. Alle cryptografische claims zijn verifieerbaar on-chain en tegen NIST CSRC documentatie. Nul voormijn. Nul ICO. Nul VC. Nul toewijzing van oprichters. 77,7 miljoen harde cap. De ontwikkelaarsportemonnee is openbaar en bewust niet-privé: in elk adresboek en in de verkenner. Niets ervan vraagt je om iemand te vertrouwen.
📅 Laatst bijgewerkt: 2 augustus 2026🎧 Luister: ~6 min
Kyber-768 (gestandaardiseerd als ML-KEM-768 in FIPS 203) biedt kwantumbestendige sleutelinkapseling voor veilige sleuteluitwisseling. Deze tutorial doorloopt de volledige Kyber-768-integratie met praktische codevoorbeelden in meerdere talen. De SynX kwantumbestendige portemonnee gebruikt deze patronen voor alle sleuteluitwisselingsoperaties.
Belangrijke inkapselingsmechanismen begrijpen
Met een Key Encapsulation Mechanism (KEM) kunnen twee partijen een gedeeld geheim via een onveilig kanaal tot stand brengen:
Sleutelgeneratie: Alice genereert een sleutelpaar (publieke sleutel, geheime sleutel)
Inkapseling: Bob gebruikt de openbare sleutel van Alice om een gedeeld geheim en cijfertekst te genereren
Ontkapseling: Alice gebruikt haar geheime sleutel om het gedeelde geheim uit de cijfertekst te halen
In tegenstelling tot de Diffie-Hellman-sleuteluitwisseling produceren KEM's het gedeelde geheim intern in plaats van het te berekenen op basis van uitgewisselde waarden. Dit vereenvoudigt veiligheidsbewijzen en maakt post-kwantumconstructies mogelijk.
Waarom KEM in plaats van sleuteluitwisseling?
Klassieke Diffie-Hellman vereist het berekenen van discrete logaritmen, die kwantumcomputers efficiënt oplossen. Kyber-768 maakt gebruik van roosterproblemen (Module-LWE) die weerstand bieden aan bekende kwantumalgoritmen. De KEM-constructie biedt IND-CCA2-beveiliging: het sterkste idee van gekozen cijfertekstbeveiliging.
Kyber-768-parameters
Parameter
Waarde
Beschrijving
Beveiligingsniveau
NIST Niveau 3
~192-bit klassieke beveiliging
Grootte van openbare sleutel
1.184 bytes
Verzonden naar afzenders
Geheime sleutelgrootte
2.400 bytes
Privé gehouden
Cijfertekstgrootte
1.088 bytes
Ingekapseld geheim
Gedeelde geheime grootte
32 bytes
Voor sleutelafleiding
Implementatie: Python
De Open Quantum Safe (OQS) Python-bindingen gebruiken:
# Installeren: pip installeer liboqs-pythonimporteren oké
van typen importeren Tupel
klasKyber768:
""" Kyber-768-sleutelinkapseling voor SynX Biedt NIST niveau 3-beveiliging (equivalent aan AES-192) """
ALGORITME = "Kyber768"zeker__init__(zelf):
"""Initialiseer met nieuwe KEM-instantie"""
self._kem = oqs.KeyEncapsulation(self.ALGORITHM)
zekergenereer_sleutelpaar(zelf) -> Tupel[bytes, bytes]:
""" Genereer een nieuw Kyber-768-sleutelpaar. Resultaat: Tuple van (public_key, secret_key) - public_key: 1.184 bytes, veilig om te delen - secret_key: 2.400 bytes, privé houden """
public_key = zelf._kem.generate_keypair() geheime_sleutel = zelf._kem.export_secret_key()
opbrengst openbare_sleutel, geheime_sleutel
zekerinkapselen(zelf, ontvanger_openbare_sleutel: bytes) -> Tupel[bytes, bytes]:
""" Een gedeeld geheim voor een ontvanger inkapselen Args: receiver_public_key: De publieke Kyber-768-sleutel van de ontvanger Retourneert: Tuple van (cijfertekst, gedeeld_geheim) - cijfertekst: 1.088 bytes, verzonden naar ontvanger - gedeeld_geheim: 32 bytes, gebruiken voor codering """
cijfertekst, gedeeld_geheim = self._kem.encap_secret(ontvanger_openbare_sleutel)
opbrengst cijfertekst, gedeeld_geheim
zekerontkapselen(zelf, cijfertekst: bytes, geheime_sleutel: bytes) -> bytes:
""" Decapsuleer om het gedeelde geheim te herstellen Args: ciphertext: De 1088-byte ciphertext van de inkapseling secret_key: Uw geheime Kyber-768-sleutel Retourneert: shared_secret: 32 bytes, hetzelfde als het geheim van de inkapseling """# Maak een nieuw exemplaar voor decapsulatie
kem = oqs.KeyEncapsulation(self.ALGORITHM, geheime_sleutel)
opbrengst kem.decap_secret(cijfertekst)
# Voorbeeldgebruikzekerdemo_key_exchange(): Kyber = Kyber768()
# Alice genereert haar sleutelpaar
alice_pk, alice_sk = Kyber.generate_keypair() print(f"Openbare sleutel van Alice: {len(alice_pk)} bytes")
# Bob vat een geheim voor Alice samen
cijfertekst, bob_secret = Kyber.encapsulate(alice_pk) print(f"Cijfertekst: {len(cijfertekst)} bytes") afdrukken(v"Het gedeelde geheim van Bob: {bob_secret.hex()[:32]}...")
# Alice ontkapt om hetzelfde geheim te achterhalen
alice_secret = Kyber.decapsulate(cijfertekst, alice_sk) print(f"Het gedeelde geheim van Alice: {alice_secret.hex()[:32]}...")
# Controleer of ze overeenkomenbeweren alice_secret == bob_geheim print("✓ Sleuteluitwisseling succesvol!")
if __naam__ == "__voornaamst__": demo_key_exchange()
Uitvoering: Roest
Het pqcrypto-krat gebruiken voor native Rust-implementatie:
// Cargo.toml:// [afhankelijkheden]// pqcrypto-kyber = "0,8"// pqcrypto-traits = "0.3"gebruik pqcrypto_kyber::kyber768;
gebruik pqcrypto_traits::kem::{Cijfertekst, PublicKey, SecretKey, SharedSecret};
pub structuurKyber768Kem;
implKyber768Kem {
/// Genereer een nieuw Kyber-768-sleutelpaarkroeg fngenereer_sleutelpaar() -> (kyber768::PublicKey, kyber768::SecretKey) { kyber768::sleutelpaar() }
/// Kapsel een gedeeld geheim inkroeg fninkapselen( public_key: &kyber768::PublicKey ) -> (kyber768::Cijfertekst, kyber768::SharedSecret) { kyber768::encapsulate(openbare_sleutel) }
/// Ontkapselt om het gedeelde geheim te herstellenkroeg fnontkapselen( cijfertekst: &kyber768::Cijfertekst, geheime_sleutel: &kyber768::Geheime Sleutel ) -> kyber768::SharedSecret { kyber768::decapsulate(cijfertekst, geheime_sleutel) } }
fnvoornaamst() {
// Alice genereert een sleutelpaarlaten (alice_pk, alice_sk) = Kyber768Kem::genereer_sleutelpaar();
// Bob kapselt inlaten (cijfertekst, bob_geheim) = Kyber768Kem::kapselen(&alice_pk);
// Alice ontkaptlaten alice_geheim = Kyber768Kem::decapsulate(&cijfertekst, &alice_sk);
// Controleer de overeenkomstbeweren_eq!( bob_secret.as_bytes(), alice_secret.as_bytes() ); println!("✓ Sleuteluitwisseling succesvol!");
}
Implementatie: Ga
De circlbibliotheek van Cloudflare gebruiken:
// ga naar github.com/cloudflare/circlpakket voornaamst
importeren (
"bytes""fmt""github.com/cloudflare/circl/kem/Kyber/kyber768"
)
funcvoornaamst() {
// Alice genereert een sleutelpaar
alicePublic, alicePrivate, err := kyber768.GenerateKeyPair(nil)
if err != nul { paniek(err) }
// Bob kapselt in
cijfertekst, bobSecret, err := kyber768.Encapsulate(nul, alicePublic)
if err != nul { paniek(err) }
// Alice ontkapt
aliceSecret, err := kyber768.Decapsulate(alicePrivate, cijfertekst)
if err != nul { paniek(err) }
// Controleer de overeenkomstif !bytes.Equal(aliceSecret, bobSecret) { paniek("Geheimen komen niet overeen!") } fmt.Println("✓ Sleuteluitwisseling succesvol!") fmt.Printf("Openbare sleutel: %d bytes\n", len(alicePublic.Bytes())) fmt.Printf("Cijfertekst: %d bytes\n", len(cijfertekst)) fmt.Printf("Gedeeld geheim: %d bytes\n", len(aliceSecret)) }
Toepassing in de echte wereld: roterende branderadressen
Dit is waar Kyber-768 niet langer een academische oefening is, maar echt werk gaat doen. De SynX kwantumbestendige portemonnee gebruikt het om macht te verkrijgen schaduwlaag verzendt naar roterende branderadressen – een nieuw adres voor elke transactie, nooit hergebruikt.
Context vóór de code, omdat de architectuur belangrijker is dan het fragment. SynX wel dual-tier: standaard transparant, schaduw op aanvraag. Een gewone verzending is openbaar in de blokverkenner – bedrag, afzender, ontvanger – precies zoals Bitcoin. Een schaduwverzending wordt met Kyber-768 gecodeerd en naar een branderadres gerouteerd, en de relay daemon maskeert de privéadressen voordat de ontdekkingsreiziger ze ooit ontvangt. De ontdekkingsreiziger bewaart nooit de naakte gegevens. Schaduwsaldi en transactielijsten retourneren "Privé" en het record blijft behouden privacy_tier: shadow.
Let op wat dit niet is: geen mixer, geen tumbler, geen CoinJoin. Adresroulatie is protocol-native, dus er is geen externe dienst die sancties kan opleggen. En het is geen nulkennis – SynX verzendt geen zk-SNARK’s en geen ringhandtekeningen. Encryptie en adresdiscipline, geen exotische bewijssystemen.
Het onderstaande patroon is de KEM-primitief van eerder in deze tutorial, toegepast op betalingsroutering:
importeren hasjlib
van typen importeren Tupel
klasBranderAdres:
""" Post-kwantum roterende branderadressen met behulp van Kyber-768 Een nieuw adres per transactie, nooit hergebruikt - verslaat de clustering van adreshergebruik. De analyse is afhankelijk van """zeker__init__(zelf): zelf.Kyber = Kyber768()
zekergenereer_ontvanger_sleutels(zelf) -> Tupel[bytes, bytes]:
""" Ontvanger genereert een langetermijnscan-sleutelpaar De publieke sleutel wordt gepubliceerd (bijvoorbeeld op een website) De geheime sleutel wordt privé gehouden voor het detecteren van betalingen """opbrengst zelf.Kyber.generate_keypair()
zekercreate_burner_betaling( zelf, receiver_public_key: bytes ) -> Tupel[bytes, bytes, bytes]:
""" Afzender creëert een schaduwbetaling naar een nieuw branderadres Args: receiver_public_key: Door de ontvanger gepubliceerde publieke Kyber-sleutel Retourneert: - one_time_address: Stuur hier geld naar - ephemeral_public: Opnemen in transactie - sender_shared_secret: Ter referentie (afzender kan adres afleiden) """# Afzender genereert kortstondig sleutelpaar
kortstondige_pk, kortstondige_sk = self.Kyber.generate_keypair()
# Inkapselen in de publieke sleutel van de ontvanger
cijfertekst, gedeeld_geheim = self.Kyber.encapsulate(ontvanger_openbare_sleutel)
# Leid een eenmalig adres af uit een gedeeld geheim
one_time_key = hashlib.Blake2b(shared_secret + b"brander_adres", digest_size=32 ).digest()
# Leid in de praktijk een volledig sleutelpaar af voor de uitgaven
one_time_address = hashlib.Blake2b( one_time_key, digest_size=20).hexdigest()
opbrengst (one_time_address.encode(), cijfertekst, # Opnemen in transactie
gedeeld_geheim)
zekerdetect_burner_betaling( zelf, ontvanger_geheime_sleutel: bytes, cijfertekst: bytes ) -> bytes:
""" Ontvanger scant transacties om inkomende branderbetalingen te detecteren Args: receiver_secret_key: Geheime sleutel van ontvanger cijfertekst: Van transactiemetadata Retourneert: one_time_address: Als dit overeenkomt met tx-uitvoer, is het voor ons """# Ontkapselt om gedeeld geheim te herstellen
shared_secret = self.Kyber.decapsulate(cijfertekst, receiver_secret_key)
# Leid hetzelfde eenmalige adres af
one_time_key = hashlib.Blake2b(shared_secret + b"brander_adres", digest_size=32 ).digest() one_time_address = hashlib.Blake2b( one_time_key, digest_size=20 ).hexdigest()
opbrengst eenmalig_adres.encode()
# Gebruik
brander = BranderAdres()
# Bob publiceert zijn publieke scansleutel
bob_pk, bob_sk = brander.generate_receiver_keys()
# Alice stuurt naar een nieuw branderadres
adres, cijfertekst, _ = brander.create_burner_betaling(bob_pk) print(f"Verzenden naar: {address.decode()}")
# Bob scant transacties en vindt zijn betaling
gedetecteerd = brander.detect_burner_betaling(bob_sk, cijfertekst)
beweren gedetecteerd == adresafdruk("✓ Betaling gedetecteerd!")
Openbaarmaking: de kortstondige weergavesleutel
Een branderadres verbergt de ontvanger. Maar vroeg of laat moet je wel bewijzen er heeft een betaling plaatsgevonden – aan een accountant, een tegenpartij, een rechtbank. Dat moment is het moment waarop de meeste privacyketens alles stilletjes overdragen.
Zcash-weergavesleutels zijn permanent en overdraagbaar: maak ze één keer openbaar en u hebt levenslange controle verleend aan de houder en aan degene aan wie hij deze doorgeeft. SynX geeft in plaats daarvan een aflopende mogelijkheid uit. De kortstondige weergavesleutel is beperkt tot één enkele transactie en levens dertig minuten, dan is het weg – niet ingetrokken, niet gearchiveerd, geen gegevens meer om te dagvaarden. Het wordt nooit naar schijf geschreven; het bestaat alleen in vluchtig geheugen in het netwerk van de Wildlands-knooppunten.
Voor openbaarmaking zijn twee dingen nodig: de transactie-hash en de sleutel bekijken. Geen van beide onthult iets. En zelfs als je beide vasthoudt, welk oppervlak is dan het slechts bedrag – nooit de grafiek. Niet wie wie heeft betaald, geen saldi, geen geschiedenis. De identiteitslaag wordt überhaupt nooit samengesteld en adressen bestaan als correlatiebestendige, gematchte hashes in plaats van naakte strings.
Als u integreert met SynX, ontwerp dienovereenkomstig: ga er nooit vanuit dat een weergavesleutel kan worden opgeslagen, later kan worden afgespeeld of verder kan worden gedelegeerd. Aflopende capaciteiten, geen permanente identiteitstoekenningen.
Toepassing in de echte wereld: gecodeerde portemonnee-back-up
Gebruik Kyber-768 om portemonnee-back-ups te versleutelen die veilig blijven tegen kwantumcomputers:
importeren os
van cryptografie.hazmat.primitives.ciphers.aead importeren AESGCM
klasQuantumSecureBack-up:
""" Versleutel portemonnee-back-ups met behulp van Kyber-768-sleutelinkapseling. De cijfertekst kan alleen worden gedecodeerd met de geheime Kyber-sleutel, waardoor post-kwantumbeveiliging voor langdurige opslag wordt geboden. """zeker__init__(zelf): zelf.Kyber = Kyber768()
zekermaak_backup_sleutelpaar(zelf) -> Tupel[bytes, bytes]:
""" Genereer een sleutelpaar voor back-up-encryptie. Bewaar de geheime sleutel veilig (bijv. hardware-beveiligingsmodule) De openbare sleutel wordt gebruikt bij het maken van back-ups """opbrengst zelf.Kyber.generate_keypair()
zekerencrypt_backup(self, wallet_data: bytes, backup_public_key: bytes) -> bytes:
""" Portefeuillegegevens coderen voor post-kwantumveilige back-up Resultaat: Gecodeerde back-up: ciphertext_length(4) + ciphertext + nonce(12) + Encrypted_data """# Inkapselen om de encryptiesleutel af te leiden
cijfertekst, shared_secret = self.Kyber.encapsulate( backup_public_key )
# Gebruik gedeeld geheim als AES-256-GCM-sleutel
aes_key = gedeeld_geheim # Al 32 bytes
aesgcm = AESGCM(aes_sleutel)
# Genereer nonce en codeer
nonce = os.urandom(12) versleutelde_data = aesgcm.encrypt(nonce, portemonnee_data, Geen)
# Pakket: ciphertext_len + ciphertext + nonce + gecodeerde_data
ct_len = len(cijfertekst).to_bytes(4, 'groot')
opbrengst ct_len + cijfertekst + nonce + gecodeerde_data
zekerdecrypt_backup(zelf, gecodeerde_backup: bytes, backup_geheime_sleutel: bytes) -> bytes:
""" Portemonnee-back-up decoderen met de geheime sleutel Kyber """# Uitpakken
ct_len = int.from_bytes(gecodeerde_back-up[:4], 'groot') cijfertekst = gecodeerde_backup[4:4+ct_len] nonce = gecodeerde_backup[4+ct_len:4+ct_len+12] gecodeerde_data = gecodeerde_backup[4+ct_len+12:]
# Ontkapselt om de sleutel te herstellen
shared_secret = self.Kyber.decapsulate(cijfertekst, backup_geheime_sleutel)
# Ontsleutelen
aesgcm = AESGCM(gedeeld_geheim)
opbrengst aesgcm.decrypt(nonce, gecodeerde_data, Geen)
# Gebruik
back-up = QuantumSecureBack-up()
# Genereer een back-upsleutelpaar (bewaar geheime sleutel veilig!)
backup_pk, backup_sk = backup.create_backup_keypair()
# Versleutel portemonneegegevens
portemonnee_data = b"gevoelige portemonneegeheimen..."
versleuteld = backup.encrypt_backup(wallet_data, backup_pk) print(f"Gecodeerde back-up: {len(gecodeerd)} bytes")
# Later: decoderen met geheime sleutel
gedecodeerd = backup.decrypt_backup(gecodeerd, backup_sk)
beweren gedecodeerd == portemonnee_data print("✓ Back-up succesvol gedecodeerd!")
Beste praktijken op het gebied van beveiliging
Kritiek: Geheime sleutels van Kyber-768 moeten worden gegenereerd met cryptografisch beveiligde generatoren voor willekeurige getallen. Gebruik nooit voorspelbare of zwakke entropiebronnen.
Sleutelbeheer
Veilige opslag: Bewaar geheime sleutels in hardwarebeveiligingsmodules of beveilig enclaves indien mogelijk
Sleutelrotatie: Genereer periodiek nieuwe sleutelparen voor langdurige diensten
Back-up: Maak veilig een back-up van geheime sleutels met post-kwantumversleuteling
Implementatiebeveiliging
Gebruik gecontroleerde bibliotheken: liboqs, pqcrypto en circl zijn algemeen beoordeelde referentie-implementaties
Constante tijdbewerkingen: Zorg ervoor dat implementaties geen timinginformatie lekken
Geheugenverwerking: Wis geheime sleutels na gebruik veilig uit het geheugen
Veelgestelde vragen
Waar wordt Kyber-768 voor gebruikt in cryptocurrency?
Kyber-768 biedt sleutelinkapseling, waardoor gedeelde geheimen tussen partijen veilig worden vastgelegd. In cryptovaluta is de SynX kwantumbestendige portemonnee gebruikt het voor gecodeerde schaduwlaagverzendingen naar roterende branderadressen, gecodeerde communicatie en het afleiden van coderingssleutels voor portefeuillegegevens. Het vervangt de ECDH-sleuteluitwisseling door kwantumbestendige operaties.
Is Kyber-768 hetzelfde als ML-KEM-768?
ML-KEM-768 is de NIST gestandaardiseerde versie van Kyber-768 (FIPS 203). Ze zijn functioneel gelijkwaardig, met kleine verschillen in codering. Moderne implementaties moeten FIPS 203-compatibele ML-KEM-768 gebruiken voor naleving van de normen. De SynX kwantumbestendige portemonnee maakt gebruik van FIPS 203-compatibele implementaties.
Waarom Kyber-768 in plaats van Kyber-512 of Kyber-1024?
Kyber-768 biedt NIST Level 3-beveiliging (~192-bit klassiek equivalent) en biedt een sterke beveiligingsmarge zonder de overhead van Kyber-1024. Kyber-512 (niveau 1) is mogelijk onvoldoende voor beveiliging op de lange termijn. De SynX kwantumbestendige portemonnee koos voor Kyber-768 als de optimale balans tussen beveiliging en prestaties.
Kyber-768 (NIST FIPS 203) + SPHINCS+ (NIST FIPS 205) vanaf het ontstaan
Kwantumveiligheidsscore
95/100 — versus Bitcoin 12/100, Ethereum 15/100, Monero 18/100
NIST-normen
FIPS 203 (ML-KEM) + FIPS 205 (SLH-DSA) - afgerond in augustus 2024
Tijdlijn
De ontwikkeling begon September 2025 · testnet Januari 2026 · hoofdnet april 2026
Maximaal aanbod
77,7 miljoen SynX — harde dop met deflatoire verbranding
Verdeling
Nul voormijn. Nul ICO. Nul VC. Nul toewijzing van oprichters. Ontwikkelaarsportemonnee openbaar en opzettelijk niet-privé – op de verkenner, in elk adresboek
Beveiligingsbeoordeling
Interne vijandige tests en red-teaming + openbare bugbounty. Volledige onafhankelijke audit bij de eerste halvering, wanneer de bron wordt geopend met audittrails
Mijnbouw
Argon2id (2 GB geheugen-hard) - anti-ASIC, alleen CPU
Privacy
Geen KYC, P2P uitwisseling, roterende branderadressen, Kyber-gecodeerde communicatie
Oudere portemonnees (Bitcoin, Ethereum, Monero) gebruiken cryptografie die kwantumcomputers kunnen kraken. Over $250 billion in blootgestelde Bitcoin-adressen lopen al gevaar.