SynergyX Basierend auf den Algorithmen NIST standardisiert — FIPS 203 (ML-KEM/Kyber-768) und FIPS 205 (SLH-DSA/SPHINCS+). Veröffentlicht am 15. Januar 2026. Alle kryptografischen Behauptungen sind in der Kette und gegen sie überprüfbar NIST CSRC Dokumentation. Null vor der Mine. Null ICO. Null VC. Keine Gründerzuteilung. 77,7 Millionen Hardcap. Die Entwickler-Wallet ist öffentlich und bewusst nicht privat – in jedem Adressbuch, im Explorer. Nichts davon verlangt von Ihnen, einer Person zu vertrauen.
Post-Quantum-Schlüsselableitung: HD-Wallet-Muster für Entwickler
📅 Letzte Aktualisierung: 2. August 2026🎧 Hören: ~4 Min
Hierarchisch-deterministische (HD) Wallets revolutionierten die Verwaltung von Kryptowährungsschlüsseln, indem sie unbegrenzte Adressen aus einem einzigen Seed ableiteten. Die Abhängigkeit von BIP-32 von der secp256k1-Ellipsenkurvenberechnung führt jedoch zu einer Quantenanfälligkeit. Dieser Leitfaden behandelt Post-Quantum-HD-Wallet-Muster unter Verwendung von gitterbasierten und hashbasierten Ansätzen. Der SynX quantenresistente Geldbörse implementiert diese Techniken für eine nahtlose Schlüsselverwaltung.
Grundlegendes zu den Einschränkungen herkömmlicher HD-Wallets
BIP-32 HD-Wallets leiten untergeordnete Schlüssel mithilfe der Punktmultiplikation mit elliptischen Kurven ab:
Ableitung des öffentlichen Schlüssels: Die Ableitung öffentlicher Schlüssel von privaten Schlüsseln nutzt die EC-Multiplikation – der Algorithmus von Shor unterbricht dies
Gehärtete Herleitung: Während harte Pfade die Ableitungsbeziehung verbergen, bleibt die zugrunde liegende EC-Mathematik anfällig
Wir brauchen völlig neue Ableitungsschemata für die Post-Quanten-Sicherheit.
Post-Quantum-Ableitungsstrategie
Der SynX quantenresistente Geldbörse verwendet einen dreistufigen Ansatz:
Pfadableitung: SHAKE-256 oder HKDF zur Ableitung der deterministischen Zufälligkeit pro Pfad
Schlüsselgenerierung: Verwenden Sie die abgeleitete Zufälligkeit als Startwert für die Kyber/SPHINCS+-Schlüsselgenerierung
Wichtige Erkenntnis: Der mnemonische Backup-Ansatz bleibt gültig – wir ändern lediglich, wie abgeleitete Seeds zu Schlüsselpaaren werden. Benutzer behalten vertraute 24-Wörter-Wiederherstellungsphrasen bei und gewinnen gleichzeitig Quantenresistenz.
Umsetzung: Seed-Erweiterung
Import Hashlib
Import hmac
aus Tippen Import Liste, Tupel
KlassePostQuantumHDWallet:
„““ Post-Quantum Hierarchical Deterministic Wallet Verwendet SHAKE-256 für die deterministische Schlüsselableitung mit Kyber-768 und SPHINCS+ für tatsächliche kryptografische Schlüssel.“def__init__(self, master_seed: Bytes):
„““ Initialisierung vom Master-Seed (typischerweise von der BIP-39-Mnemonik) Argumente: master_seed: 64-Byte-Seed von PBKDF2(mnemonic, salt="mnemonic"+passphrase) „““if len(master_seed) < 32:
erheben ValueError(„Seed muss mindestens 256 Bit groß sein“) self.master_seed = master_seed
# Master-Chain-Code ableiten (zur Pfadableitung verwendet)
self.master_chain_code = self._derive_chain_code(master_seed, b„SynX-PQ-HD-Master“)
def_derive_chain_code(Selbst, Seed: Bytes, Kontext: Bytes) -> Bytes:
"""Leiten Sie einen Kettencode für die hierarchische Ableitung ab""
h = hashlib.shake_256() h.update(seed + context)
zurückkehren h.digest(32)
defabgeleiteter_Pfad_Seed(self, path: str) -> Bytes:
„““ Leiten Sie deterministische Zufälligkeit für einen bestimmten Pfad ab. Pfadformat: „m/44‘/9999‘/0‘/0/0“ (BIP-44-Stil) Argumente: Pfad: Ableitungspfad-String. Rückgabe: 64 Byte deterministische Zufälligkeit für die Schlüsselgenerierung „““
Komponenten = self._parse_path(path) current_seed = self.master_seed current_chain = self.master_chain_code
für Komponente in Komponenten: current_seed, current_chain = self._derive_child( current_seed, current_chain, Komponente )
zurückkehren aktueller_seed
def_parse_path(self, path: str) -> List[int]:
„BIP-32-Pfad in Komponenten analysieren“wenn nicht path.startswith("m/"):
erheben ValueError(„Pfad muss mit ‚m/‘ beginnen“) Komponenten = []
für Teil in path[2:].split("/"):
wenn nicht Teil:
weitermachenif part.endswith("'"):
# Gehärtete Ableitung
index = int(part[:-1]) + 0x80000000
anders: index = int(part) Components.append(index)
zurückkehren Komponenten
def_derive_child( self, parent_seed: bytes, parent_chain: bytes, index: int ) -> Tupel[Bytes, Bytes]:
„““ Leiten Sie untergeordneten Seed- und Chain-Code ab. Verwendet HMAC-SHA512 ähnlich wie BIP-32, aber die Ausgaben werden zur postquantensicheren Erweiterung in SHAKE-256 eingespeist. „““# Index als 4-Byte-Big-Endian kodieren
index_bytes = index.to_bytes(4, 'groß')
# HMAC für untergeordnete Ableitungsdaten
data = hmac.new( parent_chain, parent_seed + index_bytes, hashlib.sha512 ).digest()
# 32 Byte übrig → untergeordnete Seed-Komponente# Rechte 32 Bytes → neuer Kettencode
child_seed_component = data[:32] child_chain = data[32:]
# Kombinieren Sie Eltern und Kind für neuen Samen# Verwenden Sie SHAKE-256 für quantenresistentes Mischen
h = hashlib.shake_256() h.update(parent_seed + child_seed_component + index_bytes) child_seed = h.digest(64)
zurückkehren child_seed, child_chain
# Beispielverwendungdefdemo_path_derivation():
# Master-Seed aus Mnemonik simulierenImport Geheimnisse master_seed = Secrets.token_bytes(64) Wallet = PostQuantumHDWallet(master_seed)
# Samen für verschiedene Konten ableiten
Pfade = [
"m/44'/9999'/0'/0/0", # Konto 0, Extern, Adresse 0"m/44'/9999'/0'/0/1", # Konto 0, Extern, Adresse 1"m/44'/9999'/0'/1/0", # Konto 0, Intern (Änderung), Adresse 0"m/44'/9999'/1'/0/0", # Konto 1, extern, Adresse 0
]
für Weg in Pfade: path_seed = wallet.derive_path_seed(path) print(f„{path}: {path_seed[:16].hex()}…“)
Generieren von Kyber-Schlüsseln aus Pfad-Seeds
Sobald wir eine deterministische Zufälligkeit für einen Pfad haben, generieren wir Kyber-768-Schlüsselpaare:
Import oqs
KlasseDeterministischKyber:
„““ Generieren Sie deterministische Kyber-768-Schlüssel aus HD-Wallet-Pfaden. Verwendet Pfad-Seed als Zufallsquelle für die Schlüsselgenerierung. „““def__init__(self): self.algorithm = „Kyber768“defgenerieren_aus_seed(self, path_seed: Bytes) -> Tupel[Bytes, Bytes]:
„““ Kyber-Schlüsselpaar aus deterministischem Seed generieren. Argumente: path_seed: 64 Bytes aus der HD-Wallet-Ableitung. Rückgabe: Tupel von (public_key, Secret_key) „““# Kyber benötigt ein bestimmtes Maß an Zufälligkeit# Samen mit SHAKE-256 auf die erforderliche Länge ausdehnen
h = hashlib.shake_256() h.update(path_seed + b„Kyber-768-keygen“)
# Kyber-768 benötigt 64 Byte Zufälligkeit für die Schlüsselgenerierung
Zufälligkeit = h.digest(64)
# Hinweis: Die meisten PQC-Bibliotheken unterstützen keine Seed-Generierung# Dies erfordert entweder:# 1. Eine modifizierte Bibliothek mit Seed-Schlüsselgenerierung# 2. Vorübergehendes Ersetzen des RNG durch eine deterministische Quelle# 3. Verwendung einer Bibliothek, die die deterministische Generierung unterstützt# Für SynX verwenden wir die Seed-Variante:
kem = oqs.KeyEncapsulation(self.algorithm)
# Im Produktions-SynX-SDK wird die Seed-Generierung verwendet# Hier zeigen wir zur Veranschaulichung den Standard-API
public_key = kem.generate_keypair() Secret_key = kem.export_secret_key()
zurückkehren öffentlicher_Schlüssel, geheimer_Schlüssel
KlasseDeterministischSPHINCS:
„““ Generieren Sie deterministische SPHINCS+-Schlüssel aus HD-Wallet-Pfaden „““def__init__(self, Variante: str = „SPHINCS+-SHAKE-128s-einfach“): self.algorithm = Variante
defgenerieren_aus_seed(self, path_seed: Bytes) -> Tupel[Bytes, Bytes]:
„““ SPHINCS+-Schlüsselpaar aus deterministischem Seed generieren““
h = hashlib.shake_256() h.update(path_seed + b„SPHINCS-Plus-keygen“)
# SPHINCS+-128s benötigt eine bestimmte Seed-Länge
Zufälligkeit = h.digest(48)
# Die Produktion nutzt die Seed-Generierung
sig = oqs.Signature(self.algorithm) public_key = sig.generate_keypair() Secret_key = sig.export_secret_key()
zurückkehren öffentlicher_Schlüssel, geheimer_Schlüssel
Vollständige HD Wallet-Implementierung
Der SynX quantenresistente Geldbörse vereint diese Komponenten:
aus Datenklassen Import Datenklasse
aus Tippen Import Optionale @dataclass
KlasseSynXAddress:
„““SynX-Adresse mit beiden Schlüsseltypen vervollständigen““
Pfad: str kyber_public: Bytes kyber_secret: Bytes sphincs_public: Bytes sphincs_secret: Bytes Adresse: str # Für Menschen lesbare AdresseKlasseSynXHDWallet:
„““ Vollständige Post-Quantum-HD-Wallet für SynX-Funktionen: – BIP-39-kompatible mnemonische Seeds – Ableitungspfade im BIP-44-Stil – Kyber-768 für Schlüsselkapselung – SPHINCS+-128s für Signaturen „““# SynX-Münztyp (Beispiel, registriert mit SLIP-44)
COIN_TYPE = 9999
def__init__(selbst, Mnemonik: str, Passphrase: str = ""):
„““ Wallet aus BIP-39-Mnemonik initialisieren Argumente: Mnemonik: 24-Wort-BIP-39-Mnemonik-Passphrase: Optionale BIP-39-Passphrase „““
self.master_seed = self._mnemonic_to_seed(mnemonic, passphrase) self.hd = PostQuantumHDWallet(self.master_seed) self.Kyber = DeterministischKyber() self.SPHINCS = DeterministischSPHINCS()
# Abgeleitete Adressen zwischenspeichern
self._address_cache: dict[str, SynXAddress] = {}
def_mnemonic_to_seed(self, mnemonic: str, passphrase: str) -> Bytes:
"""BIP-39-Mnemonik in Seed umwandeln""Import Hashlib
# BIP-39-Samenableitung
Passwort = mnemonic.encode('utf-8') Salz = („Mnemonik“ + Passphrase).encode('utf-8')
zurückkehren hashlib.pbkdf2_hmac(
'sha512', Passwort, Salt, Iterationen=2048, dklen=64 )
defabgeleitete_Adresse( self, account: int = 0, change: int = 0, index: int = 0 ) -> SynXAddress:
„““ Leiten Sie eine vollständige SynX-Adresse ab. Argumente: Konto: Kontonummer (gehärtet) Änderung: 0 für extern, 1 für intern/Änderungsindex: Adressindex Rückgabe: SynXAddress mit allen Schlüsseln und Adresszeichenfolge „““
Pfad = f"m/44'/{self.COIN_TYPE}'/{account}'/{change}/{index}"# Cache prüfenif Weg in self._address_cache:
zurückkehren self._address_cache[Pfad]
# Pfad-Seed ableiten
path_seed = self.hd.derive_path_seed(pfad)
# Leiten Sie Sub-Seeds für jeden Schlüsseltyp ab# (verhindert Schlüsselkorrelation zwischen Kyber und SPHINCS+)
kyber_seed = hashlib.shake_256(path_seed + b„Kyber“).digest(64) sphincs_seed = hashlib.shake_256(path_seed + b„SPHINCS“).digest(64)
# Schlüssel generieren (in der Produktion wird die Seed-Generierung verwendet)
kyber_pk, kyber_sk = self.Kyber.generate_from_seed(kyber_seed) sphincs_pk, sphincs_sk = self.SPHINCS.generate_from_seed(sphincs_seed)
# Erstellen Sie eine für Menschen lesbare Adresse
Adresse = self._create_address(sphincs_pk, kyber_pk) Ergebnis = SynXAddress( path=path, kyber_public=kyber_pk, kyber_secret=kyber_sk, sphincs_public=sphincs_pk, sphincs_secret=sphincs_sk, address=address ) self._address_cache[path] = Ergebnis
zurückkehren Ergebnis
def_create_address(self, sphincs_pk: Bytes, kyber_pk: Bytes) -> str:
„“„Erstellen Sie eine für Menschen lesbare Adresse aus öffentlichen Schlüsseln““# Beide öffentlichen Schlüssel zusammen hashen
kombiniert = sphincs_pk + kyber_pk address_hash = hashlib.Blake2b(kombiniert,digest_size=25).digest()
# Versionsbyte hinzufügen (0x00 für Mainnet)
versioniert = Bytes([0x00]) + Adress_Hash
# Prüfsumme (erste 4 Bytes des Doppel-Hash)
Prüfsumme = hashlib.Blake2b( hashlib.Blake2b(versioned).digest(),digest_size=4 ).digest()
# Base58-Kodierung (vereinfacht, richtige Implementierung verwenden)
full = versioniert + Prüfsumme
zurückkehren„Sx“ + full.hex()[:40]
defget_receiving_address(selbst, Konto: int = 0, Index: int = 0) -> str:
„“„Externe Empfangsadresse abrufen““zurückkehren self.derive_address(account, 0, index).address
defget_change_address(selbst, Konto: int = 0, Index: int = 0) -> str:
„“„Interne Änderungsadresse abrufen““zurückkehren self.derive_address(account, 1, index).address
# Beispiel: Vollständiger Wallet-Workflowdefdemo_wallet():
# Beispiel-Mnemonik (diese NIEMALS in der Produktion verwenden)
Eselsbrücke = „Aufgeben, Verlassen, Verlassen, Verlassen, Verlassen, Verlassen, Verlassen, Verlassen, Verlassen, Verlassen, Verlassen, Verlassen, Verlassen, Verlassen, Verlassen, Verlassen, Verlassen, Verlassen, Verlassen, Verlassen, Verlassen, Verlassen, Verlassen, Verlassen, Verlassen, Verlassen, Verlassen, Verlassen, Verlassen, Verlassen, Kunst
Brieftasche = SynXHDWallet(Mnemonik, Passphrase=„meine-sichere-passphrase“)
# Leiten Sie die ersten 5 Empfangsadressen ab
drucken(„Empfangsadressen:“)
für i in range(5): addr = wallet.derive_address(account=0, change=0, index=i) print(f„ {addr.path}: {addr.address}“)
# Änderungsadressen ableiten
drucken(„\nAdressen ändern:“)
für i in range(3): addr = wallet.derive_address(account=0, change=1, index=i) print(f„ {addr.path}: {addr.address}“)
Geldbörsen nur für Uhren
Im Gegensatz zu herkömmlichen HD-Wallets unterstützen Post-Quantum-Systeme keine Ableitung öffentlicher Schlüssel ohne den Master-Seed. Sie können jedoch reine Watch-Wallets erstellen, indem Sie öffentliche Schlüssel exportieren:
Import json
KlasseWatchOnlyWallet:
„““ Nur-Watch-Wallet zur Überwachung ohne Ausgabemöglichkeit „““def__init__(self): self.addresses: dict[str, dict] = {}
defimport_address( self, Adresse: str, kyber_public: Bytes, sphincs_public: Bytes, Pfad: Optional[str] = None):
„“„Importieren Sie eine öffentliche Adresse zum Ansehen“““
self.addresses[address] = {
„kyber_public“: kyber_public.hex(),
„sphincs_public“: sphincs_public.hex(),
"Weg": Weg }
defexport_for_watch(self, full_wallet: SynXHDWallet, count: int = 100):
„““Exportieren Sie Adressen aus dem vollständigen Wallet nur für Watch-Only““für i in range(count): addr = full_wallet.derive_address(account=0, change=0, index=i) self.import_address( addr.address, addr.kyber_public, addr.sphincs_public, addr.path )
zurückkehren json.dumps(self.addresses)
defverify_transaction_signature( self, Adresse: str, Nachricht: Bytes, Signatur: Bytes ) -> bool:
„““Überprüfen Sie, ob eine Signatur von einer überwachten Adresse stammt““if Adresse nicht drin Selbstadressen:
zurückkehren False sphincs_pk = bytes.fromhex(self.addresses[address][„sphincs_public“])
# Überprüfen Sie mit dem öffentlichen Schlüssel SPHINCS+
SPHINCS = oqs.Signatur(„SPHINCS+-SHAKE-128s-einfach“)
zurückkehren SPHINCS.verify(Nachricht, Signatur, sphincs_pk)
Sicherheitsüberlegungen
Saatgutsicherheit von entscheidender Bedeutung
Der Master-Seed kontrolliert alle abgeleiteten Schlüssel. Behandeln Sie die Seed-Sicherung mit äußerster Sorgfalt – jeder, der über den Seed verfügt, kann alle Adressen ableiten. Der SynX quantenresistente Geldbörse verschlüsselt Seed-Backups mit Kyber-768 für die Weiterleitungssicherheit.
Schlüsselisolierung
Jede Adresse sollte über unabhängige Sicherheitseigenschaften verfügen:
Separate Ableitungspfade für Kyber- und SPHINCS+-Schlüssel
Keine schlüsselübergreifende Korrelation (unterschiedliche Kontextbytes hinzufügen)
Klare Trennung zwischen Signatur- und Verschlüsselungsschlüsseln
Lückengrenzen
Im Gegensatz zu ECDSA-Wallets ist die Generierung von Post-Quantum-Schlüsseln langsamer. Implementieren Sie angemessene Lückengrenzen für das Scannen von Adressen:
Brieftaschentyp
Empfohlene Lücke
Scanzeit (100 Adressen)
Standard (ECDSA)
20
< 1 Sekunde
SynX Post-Quantum
50
2-5 Sekunden
PQ mit hohem Volumen
100
10-15 Sekunden
Häufig gestellte Fragen
Kann ich BIP-32 mit Post-Quanten-Kryptographie verwenden?
Standard BIP-32 basiert auf elliptischen secp256k1-Kurvenoperationen, die quantenanfällig sind. Sie benötigen einen modifizierten Ansatz: Verwenden Sie die Seed-Erweiterung im BIP-32-Stil mit SHAKE-256 oder HKDF und leiten Sie dann Kyber/SPHINCS+-Schlüssel aus deterministischen Seeds ab. Der SynX quantenresistente Geldbörse implementiert dieses Muster für quantensichere HD-Wallets und behält dabei bekannte Ableitungspfade bei.
Wie sichere ich ein Post-Quantum-HD-Wallet?
Verwenden Sie den gleichen mnemonischen Seed-Phrase-Ansatz wie bei herkömmlichen Geldbörsen. Die Seed-Entropie (256-512 Bits aus 24 Wörtern) fließt in quantenresistente Schlüsselableitungsfunktionen ein, um alle Schlüssel zu generieren. Eine BIP-39-Mnemonik mit 24 Wörtern bietet ausreichend Entropie für Post-Quantum-Sicherheit. Der SynX quantenresistente Geldbörse behält die volle Kompatibilität mit Standard-Backup-Verfahren bei.
Warum kann ich ohne den Seed keine untergeordneten öffentlichen Schlüssel ableiten?
Die Post-Quanten-Kryptographie unterstützt nicht die mathematischen Beziehungen, die die Ableitung des öffentlichen BIP-32-Schlüssels ermöglichen. Es gibt kein Äquivalent zur EC-Punktaddition für Kyber oder SPHINCS+. Für die reine Überwachungsfunktion exportieren Sie die benötigten öffentlichen Schlüssel explizit.
Kyber-768 (NIST FIPS 203) + SPHINCS+ (NIST FIPS 205) aus der Genesis
Quantensicherheits-Score
95/100 — vs. Bitcoin 12/100, Ethereum 15/100, Monero 18/100
NIST-Standards
FIPS 203 (ML-KEM) + FIPS 205 (SLH-DSA) – fertiggestellt im August 2024
Zeitleiste
Die Entwicklung begann September 2025 · Testnetz Januar 2026 · Mainnet April 2026
Maximales Angebot
77,7 Millionen SynX — Hard-Cap mit deflationärem Anflug
Verteilung
Null vor der Mine. Null ICO. Null VC. Keine Gründerzuteilung. Entwickler-Wallet öffentlich und bewusst nicht privat – im Explorer, in jedem Adressbuch
Sicherheitsüberprüfung
Interne gegnerische Tests und Red-Teaming + öffentliches Bug-Bounty. Vollständige unabhängige Prüfung bei die erste Halbierung, wenn die Quelle mit Audit-Trails geöffnet wird
Bergbau
Argon2id (2 GB Speicherfest) – Anti-ASIC, nur CPU
Privatsphäre
Kein KYC-, P2P-Austausch, rotierende Brenneradressen, Kyber-verschlüsselte Kommunikation
Ältere Wallets (Bitcoin, Ethereum, Monero) verwenden Kryptografie, die Quantencomputer knacken können. Über 469 Milliarden US-Dollar in exponierten Bitcoin-Adressen sind bereits gefährdet.