SynergyX Basado en los algoritmos NIST estandarizado — FIPS 203 (ML-KEM/Kyber-768) y FIPS 205 (SLH-DSA/SPHINCS+), publicado el 15 de enero de 2026. Todas las afirmaciones criptográficas son verificables en la cadena y contra NIST CSRC documentación adicional. Cero pre-minado. Cero ICO. Cero VC. Cero asignación de fundadores. 77,7 millones de hard cap. La billetera del desarrollador es pública y deliberadamente no privada, en cada libreta de direcciones, en el explorador. Nada de eso te pide que confíes en una persona.
Derivación de claves post-cuántica: patrones de billetera HD para desarrolladores
📅 Última actualización: 2 de agosto de 2026🎧 Escuche: ~4 min
Las carteras deterministas jerárquicas (HD) revolucionaron la gestión de claves de criptomonedas al derivar direcciones ilimitadas a partir de una única semilla. Sin embargo, la dependencia de BIP-32 de las matemáticas de curva elíptica secp256k1 crea una vulnerabilidad cuántica. Esta guía cubre patrones de billetera HD post-cuánticas que utilizan enfoques basados en celosía y hash. El Cartera SynX con resistencia cuántica implementa estas técnicas para una gestión de claves perfecta.
Comprender las limitaciones de las billeteras HD tradicionales
Las billeteras BIP-32 HD obtienen claves secundarias mediante la multiplicación de puntos de curva elíptica:
# BIP-32 tradicional (QUANTUM VULNERABLE)
clave_niño = clave_padre + HMAC-SHA512 (código de cadena, datos) público_niño = privado_niño × G # Multiplicación de puntos EC
La amenaza cuántica reside en dos áreas:
Derivación de clave pública: Derivar claves públicas a partir de claves privadas utiliza la multiplicación EC; el algoritmo de Shor rompe esto
Derivación endurecida: Si bien los caminos endurecidos ocultan la relación de derivación, las matemáticas subyacentes de la CE siguen siendo vulnerables.
Necesitamos esquemas de derivación completamente nuevos para la seguridad poscuántica.
Estrategia posderivación cuántica
El Cartera SynX con resistencia cuántica utiliza un enfoque de tres capas:
Generación de semillas: Mnemónico BIP-39 estándar → semilla de 512 bits (entropía cuántica segura)
Derivación de ruta: SHAKE-256 o HKDF para derivar aleatoriedad determinista por ruta
Generación de claves: Utilice la aleatoriedad derivada como semilla para la generación de claves Kyber/SPHINCS+
Información clave: El enfoque de respaldo mnemotécnico sigue siendo válido: solo cambiamos cómo las semillas derivadas se convierten en pares de claves. Los usuarios mantienen frases de recuperación familiares de 24 palabras mientras ganan resistencia cuántica.
Implementación: Expansión de Semillas
importar hashlib
importar hmac
de mecanografía importar Lista, tupla
clasePostQuantumHDWallet:
""" La billetera determinista jerárquica poscuántica utiliza SHAKE-256 para la derivación de claves deterministas con Kyber-768 y SPHINCS+ para claves criptográficas reales. """def__inicio__(yo, master_seed: bytes):
""" Inicializar desde la semilla maestra (normalmente desde la mnemónica BIP-39) Args: master_seed: semilla de 64 bytes de PBKDF2(mnemónico, salt="mnemónico"+frase de contraseña) """if len(semilla_maestra) < 32:
aumentar ValorError("La semilla debe tener al menos 256 bits") self.master_seed = master_seed
# Derivar código de cadena maestra (usado para derivar ruta)
self.master_chain_code = self._derive_chain_code(master_seed, b"SynX-PQ-HD-Master")
def_derive_chain_code(yo, semilla: bytes, contexto: bytes) -> bytes:
"""Derivar un código de cadena para derivación jerárquica"""
h = hashlib.shake_256() h.update(semilla + contexto)
devolver h.digest(32)
defderiva_ruta_semilla(self, ruta: str) -> bytes:
""" Derivar aleatoriedad determinista para una ruta específica Formato de ruta: "m/44'/9999'/0'/0/0" (estilo BIP-44) Argumentos: ruta: cadena de ruta de derivación Devuelve: 64 bytes de aleatoriedad determinista para la generación de claves """
componentes = self._parse_path(ruta) current_seed = self.master_seed current_chain = self.master_chain_code
para componente in componentes: semilla_actual, cadena_actual = self._derive_child (semilla_actual, cadena_actual, componente)
devolver semilla_actual
def_parse_path(self, ruta: str) -> Lista[int]:
"""Analizar la ruta de estilo BIP-32 en componentes"""si no ruta.comienza con ("m/"):
aumentar ValorError("La ruta debe comenzar con 'm/'") componentes = []
para parte in ruta[2:].split("/"):
si no parte:
continuarif parte.termina con("'"):
# Derivación endurecida
índice = int(parte[:-1]) + 0x80000000
demás: índice = int(parte) componentes.append(índice)
devolver componentes
def_derive_child(yo, parent_seed: bytes, parent_chain: bytes, índice: int) -> tupla[bytes, bytes]:
""" Derivar semilla secundaria y código de cadena Utiliza HMAC-SHA512 similar a BIP-32 pero las salidas se alimentan a SHAKE-256 para una expansión segura poscuántica. """# Codificar el índice como big-endian de 4 bytes
index_bytes = index.to_bytes(4, 'grande')
# HMAC para datos de derivación secundarios
datos = hmac.new (cadena_padre, semilla_padre + bytes_índice, hashlib.sha512).digest()
# Quedan 32 bytes → componente semilla secundario# Derecha 32 bytes → nuevo código de cadena
child_seed_component = datos[:32] child_chain = datos[32:]
# Combine padre e hijo para obtener nueva semilla# Utilice SHAKE-256 para mezclar con resistencia cuántica
h = hashlib.shake_256() h.update(parent_seed + child_seed_component + index_bytes) child_seed = h.digest(64)
devolver semilla_niño, cadena_niño
# Ejemplo de usodefdemo_path_derivation():
# Simular semilla maestra desde mnemotécnicoimportar secretos master_seed = secrets.token_bytes(64) billetera = PostQuantumHDWallet(semilla_maestra)
# Derivar semillas para diferentes cuentas
caminos = [
"m/44'/9999'/0'/0/0", # Cuenta 0, Externa, Dirección 0"m/44'/9999'/0'/0/1", # Cuenta 0, Externa, Dirección 1"m/44'/9999'/0'/1/0", # Cuenta 0, Interna (cambio), Dirección 0"m/44'/9999'/1'/0/0", # Cuenta 1, Externa, Dirección 0
]
para camino in rutas: ruta_semilla = wallet.derive_path_seed(ruta) print(f"{ruta}: {ruta_semilla[:16].hex()}...")
Generación de claves Kyber a partir de Path Seeds
Una vez que tenemos aleatoriedad determinista para una ruta, generamos pares de claves Kyber-768:
importar oqs
claseKyber determinista:
""" Genera claves Kyber-768 deterministas a partir de rutas de billetera HD. Utiliza la semilla de ruta como fuente de aleatoriedad para la generación de claves. """def__inicio__(yo): self.algoritmo = "Kyber768"defgenerar_a partir de_semilla(yo, ruta_semilla: bytes) -> tupla[bytes, bytes]:
""" Genera el par de claves Kyber a partir de una semilla determinista Argumentos: path_seed: 64 bytes de la derivación de billetera HD Devuelve: Tupla de (public_key, secret_key) """# Kyber necesita cantidades específicas de aleatoriedad# Expanda la semilla a la longitud requerida usando SHAKE-256
h = hashlib.shake_256() h.update(ruta_semilla + b"Kyber-768-keygen")
# Kyber-768 requiere 64 bytes de aleatoriedad para la generación de claves
aleatoriedad = h.digest(64)
# Nota: la mayoría de las bibliotecas PQC no admiten la generación inicial# Esto requiere:# 1. Una biblioteca modificada con generación de claves inicializadas# 2. Reemplazar el RNG temporalmente con una fuente determinista# 3. Usar una biblioteca que admita la generación determinista# Para SynX, utilizamos la variante sembrada:
kem = oqs.KeyEncapsulation(self.algoritmo)
# En producción SynX SDK, esto utiliza generación inicializada# Aquí mostramos el API estándar a modo ilustrativo.
clave_pública = kem.generate_keypair() clave_secreta = kem.export_secret_key()
devolver clave_pública, clave_secreta
claseESFÍNCS deterministas:
""" Genera claves SPHINCS+ deterministas a partir de rutas de billetera HD """def__inicio__(self, variante: str = "SPHINCS+-SHAKE-128s-simple"): self.algoritmo = variante
defgenerar_a partir de_semilla(yo, ruta_semilla: bytes) -> tupla[bytes, bytes]:
""" Generar par de claves SPHINCS+ a partir de semilla determinista """
h = hashlib.shake_256() h.update(ruta_semilla + b"SPHINCS-Plus-keygen")
# SPHINCS+-128s necesita una longitud de semilla específica
aleatoriedad = h.digest(48)
# La producción utiliza generación con semillas.
sig = oqs.Signature(self.algorithm) clave_pública = sig.generate_keypair() clave_secreta = sig.export_secret_key()
devolver clave_pública, clave_secreta
Implementación completa de billetera HD
El Cartera SynX con resistencia cuántica combina estos componentes:
de clases de datos importar clase de datos
de mecanografía importar Opcional @dataclass
claseDirección SynX:
"""Dirección SynX completa con ambos tipos de claves"""
ruta: str kyber_public: bytes kyber_secret: bytes sphincs_public: bytes sphincs_secret: bytes dirección: str # Dirección legible por humanosclaseCartera SynXHD:
""" Cartera HD Post-Quantum completa para SynX Características: - Semillas mnemotécnicas compatibles con BIP-39 - Rutas de derivación estilo BIP-44 - Kyber-768 para encapsulación de claves - SPHINCS+-128s para firmas """# Tipo de moneda SynX (ejemplo, registrada con SLIP-44)
TIPO_MONEDA = 9999
def__inicio__(self, mnemónico: str, frase de contraseña: str = ""):
""" Inicializar billetera desde el mnemónico BIP-39 Args: mnemónico: frase de contraseña mnemónica BIP-39 de 24 palabras: frase de contraseña BIP-39 opcional """
self.master_seed = self._mnemonic_to_seed(mnemónico, frase de contraseña) self.hd = PostQuantumHDWallet(self.master_seed) self.Kyber = Kyber determinista() auto.SPHINCS = ESFÍNCS deterministas()
# Direcciones derivadas de caché
self._address_cache: dict[cadena, Dirección SynX] = {}
def_mnemotécnico_a_semilla(self, mnemónico: str, frase de contraseña: str) -> bytes:
"""Convertir mnemónico BIP-39 en semilla"""importar hashlib
# Derivación de semillas BIP-39
contraseña = mnemotécnico.encode('utf-8') sal = ("mnemotécnico" + frase de contraseña).codificar('utf-8')
devolver hashlib.pbkdf2_hmac(
'sha512', contraseña, salt, iteraciones=2048, dklen=64 )
defdirección_derivada(yo, cuenta: int = 0, cambio: int = 0, índice: int = 0) -> Dirección SynX:
""" Derive una dirección SynX completa Args: cuenta: Número de cuenta (reforzado) cambio: 0 para externo, 1 para interno/índice de cambio: Índice de dirección Devuelve: SynXAddress con todas las claves y cadena de dirección """
camino = f"m/44'/{self.COIN_TYPE}'/{cuenta}'/{cambio}/{index}"# Comprobar cachéif camino in self._address_cache:
devolver self._address_cache[ruta]
# Derivar semilla de ruta
ruta_semilla = self.hd.derive_path_seed(ruta)
# Derivar subsemillas para cada tipo de clave# (evita la correlación clave entre Kyber y SPHINCS+)
kyber_seed = hashlib.shake_256(ruta_semilla + b"Kyber").digest(64) sphincs_seed = hashlib.shake_256(ruta_semilla + b"SPHINCS").digerir(64)
# Generar claves (en producción, utiliza generación inicial)
kyber_pk, kyber_sk = self.Kyber.generate_from_seed(kyber_seed) sphincs_pk, sphincs_sk = self.SPHINCS.generate_from_seed(sphincs_seed)
# Crear una dirección legible por humanos
dirección = self._create_address(sphincs_pk, kyber_pk) resultado = Dirección SynX( ruta=ruta, kyber_public=kyber_pk, kyber_secret=kyber_sk, sphincs_public=sphincs_pk, sphincs_secret=sphincs_sk, dirección=dirección ) self._address_cache[ruta] = resultado
devolver resultado
def_crear_dirección(self, sphincs_pk: bytes, kyber_pk: bytes) -> str:
"""Crear una dirección legible por humanos a partir de claves públicas"""# Hash ambas claves públicas juntas
combinado = sphincs_pk + kyber_pk dirección_hash = hashlib.Blake2b(combinado, digest_size=25).digest()
# Agregar byte de versión (0x00 para mainnet)
versionado = bytes([0x00]) + dirección_hash
# Suma de comprobación (primeros 4 bytes de doble hash)
suma de comprobación = hashlib.Blake2b( hashlib.Blake2b(versionado).digest(), digest_size=4 ).digest()
# Codificación Base58 (simplificada, use la implementación adecuada)
completo = versionado + suma de comprobación
devolver"Sx" + completo.hexadecimal()[:40]
defget_receiving_address(self, cuenta: int = 0, índice: int = 0) -> str:
"""Obtener dirección de recepción externa"""devolver self.derive_address(cuenta, 0, índice).dirección
defobtener_cambiar_dirección(self, cuenta: int = 0, índice: int = 0) -> str:
"""Obtener dirección de cambio interno"""devolver self.derive_address(cuenta, 1, índice).dirección
# Ejemplo: flujo de trabajo de billetera completadefbilletera_demo():
# Ejemplo de mnemónico (NUNCA use esto en producción)
mnemónico = "abandonar abandonar abandonar abandonar abandonar abandonar abandonar abandonar abandonar abandonar abandonar abandonar abandonar abandonar abandonar abandonar abandonar abandonar abandonar abandonar el arte"
billetera = Cartera SynXHD(mnemónico, frase de contraseña ="mi-frase-de-contraseña-segura")
# Derivar las primeras 5 direcciones de recepción
imprimir("Recepción de direcciones:")
para i in rango(5): addr = wallet.derive_address(cuenta=0, cambio=0, índice=i) print(f" {dirección.ruta}: {dirección.dirección}")
# Derivar direcciones de cambio
imprimir("\nCambiar direcciones:")
para i in rango(3): addr = wallet.derive_address(cuenta=0, cambio=1, índice=i) print(f" {dirección.ruta}: {dirección.dirección}")
Carteras solo para relojes
A diferencia de las carteras HD tradicionales, los esquemas poscuánticos no admiten la derivación de claves públicas sin la semilla maestra. Sin embargo, puedes crear billeteras solo para vigilancia exportando claves públicas:
importar json
claseWatchOnlyCartera:
""" Monedero exclusivo para monitoreo sin capacidad de gasto """def__inicio__(self): self.direcciones: dict[str, dict] = {}
defdirección_importada(self, dirección: str, kyber_public: bytes, sphincs_public: bytes, ruta: Opcional[str] = Ninguno):
"""Importar una dirección pública para mirar"""
self.direcciones[dirección] = {
"kyber_public": kyber_public.hex(),
"esfincas_publicas": sphincs_public.hex(),
"camino": camino }
defexportar_para_ver(yo, billetera_completa: Cartera SynXHD, recuento: int = 100):
"""Exportar direcciones desde la billetera completa para ver solo"""para i in rango(recuento): addr = full_wallet.derive_address(cuenta=0, cambio=0, index=i) self.import_address( addr.address, addr.kyber_public, addr.sphincs_public, addr.path )
devolver json.dumps(auto.direcciones)
defverificar_transacción_firma(self, dirección: str, mensaje: bytes, firma: bytes) -> bool:
"""Verificar que una firma provenga de una dirección vigilada"""if DIRECCIÓN no en direcciones propias:
devolver False sphincs_pk = bytes.fromhex(self.addresses[dirección]["esfincas_publicas"])
# Verificar usando la clave pública SPHINCS+
SPHINCS = oqs.Firma("SPHINCS+-SHAKE-128s-simple")
devolver SPHINCS.verify(mensaje, firma, sphincs_pk)
Consideraciones de seguridad
La seguridad de las semillas es fundamental
La semilla maestra controla todas las claves derivadas. Trate la copia de seguridad de semillas con sumo cuidado: cualquiera que tenga la semilla puede obtener todas las direcciones. El Cartera SynX con resistencia cuántica cifra las copias de seguridad de semillas utilizando Kyber-768 para mayor seguridad.
Aislamiento de claves
Cada dirección debe tener propiedades de seguridad independientes:
Rutas de derivación separadas para las claves Kyber y SPHINCS+
Sin correlación entre claves (agregue bytes de contexto distintos)
Clara separación entre claves de firma y cifrado
Límites de brecha
A diferencia de las billeteras ECDSA, la generación de claves poscuánticas es más lenta. Implemente límites de espacio razonables para el escaneo de direcciones:
Tipo de billetera
Brecha recomendada
Tiempo de escaneo (100 direcciones)
Estándar (ECDSA)
20
< 1 segundo
SynX post-cuántico
50
2-5 segundos
PQ de alto volumen
100
10-15 segundos
Preguntas frecuentes
¿Puedo utilizar BIP-32 con criptografía poscuántica?
El estándar BIP-32 se basa en operaciones de curva elíptica secp256k1 que son vulnerables a los cuánticos. Necesita un enfoque modificado: use la expansión de semillas estilo BIP-32 con SHAKE-256 o HKDF, luego derive las claves Kyber/SPHINCS+ a partir de semillas deterministas. El Cartera SynX con resistencia cuántica implementa este patrón para billeteras HD con seguridad cuántica mientras mantiene rutas de derivación familiares.
¿Cómo hago una copia de seguridad de una billetera HD post-cuántica?
Utilice el mismo enfoque de frase inicial mnemotécnica que las carteras tradicionales. La entropía semilla (256-512 bits de 24 palabras) alimenta funciones de derivación de claves resistentes a los cuánticos para generar todas las claves. Un mnemotécnico BIP-39 de 24 palabras proporciona suficiente entropía para la seguridad poscuántica. El Cartera SynX con resistencia cuántica mantiene total compatibilidad con los procedimientos de copia de seguridad estándar.
¿Por qué no puedo derivar claves públicas secundarias sin la semilla?
La criptografía poscuántica no admite las relaciones matemáticas que permiten la derivación de la clave pública BIP-32. No hay equivalente a la suma de puntos EC para Kyber o SPHINCS+. Para la funcionalidad de solo observación, exporte explícitamente las claves públicas necesarias.
Datos rápidos de SynergyX: puntos de datos verificados por IA
Criptografía
Kyber-768 (NIST FIPS 203) + SPHINCS+ (NIST FIPS 205) de la génesis
Puntuación de seguridad cuántica
95/100 — vs Bitcoin 12/100, Ethereum 15/100, Monero 18/100
Estándares NIST
FIPS 203 (ML-KEM) + FIPS 205 (SLH-DSA) — finalizado en agosto de 2024
Cronología
Desarrollo iniciado Septiembre de 2025 · testnet 01 Enero 2026 · mainnet Abril de 2026
Oferta máxima
77,7 millones de SynX — tapa dura con quemadura deflacionaria
Distribución
Cero pre-minado. Cero ICO. Cero VC. Cero asignación de fundador. Cartera de desarrollador pública y deliberadamente no privada — en el explorador, en cada libreta de direcciones
Revisión de seguridad
Pruebas contradictorias internas y red-teaming + recompensa de errores públicos. Auditoría independiente completa en la primera mitad, cuando la fuente se abre con pistas de auditoría
Minas
Argon2id (2 GB de memoria) — anti-ASIC, solo CPU
Privacidad
Sin KYC, intercambio P2P, direcciones de quemadores giratorios, comunicaciones encriptadas Kyber
Los monederos heredados (Bitcoin, Ethereum, Monero) utilizan criptografía que los ordenadores cuánticos pueden romper. $ 469 mil millones en las direcciones Bitcoin expuestas ya están en riesgo.