Tradução automática do original em inglês. English

Tutorial de integração Kyber-768: guia completo de implementação

📅 Última atualização: 2 de agosto de 2026 🎧 Ouvir: ~6 minutos

O Kyber-768 (estandardizado como ML-KEM-768 em FIPS 203) fornece encapsulamento de chaves resistente a quantum para troca segura de chaves. Este tutorial percorre a integração completa do Kyber-768 com exemplos práticos de código em vários idiomas. O Carteira resistente ao quantum SynX utiliza estes padrões para todas as operações de troca de chaves.

Compreender os principais mecanismos de encapsulamento

Um mecanismo de encapsulamento de chaves (KEM) permite que duas partes estabeleçam um segredo partilhado num canal inseguro:

  1. Geração de chaves: Alice gera um par de chaves (chave pública, chave secreta)
  2. Encapsulamento: Bob utiliza a chave pública de Alice para gerar um segredo partilhado e um texto cifrado
  3. Decapsulação: Alice usa a sua chave secreta para recuperar o segredo partilhado do texto cifrado

Ao contrário da troca de chaves Diffie-Hellman, os KEMs produzem o segredo partilhado internamente, em vez de o computar a partir dos valores trocados. Isto simplifica as provas de segurança e permite construções pós-quânticas.

Porquê KEM em vez de troca de chaves?

O Diffie-Hellman clássico requer a computação de logaritmos discretos, que os computadores quânticos resolvem eficientemente. O Kyber-768 utiliza problemas de rede (Módulo-LWE) que resistem a algoritmos quânticos conhecidos. A construção KEM fornece segurança IND-CCA2 – a noção mais forte de segurança de texto cifrado escolhido.

Parâmetros Kyber-768

Parâmetro Valor Descrição
Nível de segurança NIST Nível 3 Segurança clássica de aproximadamente 192 bits
Tamanho da chave pública 1.184 bytes Transmitido aos remetentes
Tamanho da chave secreta 2.400 bytes Mantido privado
Tamanho do texto cifrado 1.088 bytes Segredo encapsulado
Tamanho do segredo partilhado 32 bytes Para derivação de chave

Implementação: Python

Utilizando as ligações Python do Open Quantum Safe (OQS):

# Instalar: pip install liboqs-python importação ok de digitando importação Tupla classe Kyber768: """ Encapsulamento de chave Kyber-768 para SynX Proporciona segurança NIST nível 3 (equivalente a AES-192) """ ALGORITMO = "Kyber768" def __iniciar__(próprio): """Arranque com nova instância KEM""" self. _kem = oqs. KeyEncapsulation(self. ALGORITMO) def gerar_keypair(eu) -> Tupla[bytes, bytes]: """ Gera um novo par de chaves Kyber-768 Retorna: Tupla de (public_key, secret_key) - public_key: 1.184 bytes, seguro para partilhar - secret_key: 2.400 bytes, manter privado """ chave_pública = self._kem.generate_keypair() chave_secreta = self._kem.export_secret_key() devolver chave_pública, chave_secreta def encapsular(self, destinatário_public_key: bytes) -> Tupla[bytes, bytes]: """ Encapsular um segredo partilhado para um destinatário Args: destinatário_public_key: A chave pública Kyber-768 do destinatário Retornos: Tupla de (texto cifrado, segredo_partilhado) - texto cifrado: 1.088 bytes, enviar para o destinatário - segredo_partilhado: 32 bytes, usar para encriptação """ texto cifrado, shared_secret = self._kem.encap_secret (destinatário_public_key) devolver texto cifrado, segredo_partilhado def desencapsular(self, texto cifrado: bytes, chave_secreta: bytes) -> bytes: """ Decapsular para recuperar o segredo partilhado Args: ciphertext: O texto cifrado de 1088 bytes do encapsulamento secret_key: A sua chave secreta Kyber-768 Retorna: shared_secret: 32 bytes, igual ao segredo do encapsulador """ # Cria uma nova instância para desencapsulamento kem = oqs.KeyEncapsulation(self. ALGORITMO, secret_key) devolver kem.decap_secret(texto cifrado) # Exemplo de utilização def demo_key_exchange(): Kyber = Kyber768() # Alice gera o seu par de chaves alice_pk, alice_sk = Kyber.generate_keypair() print(f"Chave pública de Alice: {len(alice_pk)} bytes") # Bob encapsula um segredo para Alice texto cifrado, bob_secret = Kyber.encapsulate(alice_pk) print(f"Texto cifrado: {len(texto cifrado)} bytes") imprimir(f"Segredo partilhado de Bob: {bob_secret.hex()[:32]}...") #Alice desencapsula para obter o mesmo segredo alice_secret = Kyber.decapsulate(texto cifrado, alice_sk) print(f"Segredo partilhado de Alice: {alice_secret.hex()[:32]}...") # Verifique se correspondem afirmar alice_secret == bob_secret print("✓ Troca de chaves bem-sucedida!") if __nome__ == "__principal__": demo_key_exchange()

Implementação: Ferrugem

Utilização da caixa pqcrypto para implementação nativa do Rust:

// Carga.toml: // [dependências] // pqcrypto-kyber = "0,8" //pqcrypto-traits = "0.3" uso pqcrypto_kyber::kyber768; uso pqcrypto_traits::kem::{Ciphertext, PublicKey, SecretKey, SharedSecret}; estrutura de pub Kyber768Kem; impl. Kyber768Kem { /// Gere um novo par de chaves Kyber-768 pub fn gerar_keypair() -> (kyber768::PublicKey, kyber768::SecretKey) { kyber768::keypair() } /// Encapsular um segredo partilhado pub fn encapsular( public_key: &kyber768::PublicKey ) -> (kyber768::Ciphertext, kyber768::SharedSecret) { kyber768::encapsulate(public_key) } /// Decapsular para recuperar o segredo partilhado pub fn desencapsular( texto cifrado: &kyber768::Ciphertext, secret_key: &kyber768::SecretKey ) -> kyber768::SharedSecret { kyber768::decapsulate(ciphertext, secret_key) } } fn principal() { //Alice gera par de chaves deixar (alice_pk, alice_sk) = Kyber768Kem::generate_keypair(); // Bob encapsula deixar (texto cifrado, bob_secret) = Kyber768Kem::encapsular(&alice_pk); // Alice desencapsula deixar Alice_secreta = Kyber768Kem::decapsulate(&ciphertext, &alice_sk); //Verifica a correspondência assert_eq!( bob_secret.as_bytes(), alice_secret.as_bytes() ); imprimir!("✓ Troca de chaves bem-sucedida!"); }

Implementação: Ir

Utilizando a biblioteca circl da Cloudflare:

// aceda a github.com/cloudflare/circl pacote principal importação ( "bytes" "fmt" "github.com/cloudflare/circl/kem/Kyber/kyber768" ) função principal() { //Alice gera par de chaves alicePublic, alicePrivate, err := kyber768.GenerateKeyPair(nil) if err!= nulo {pânico(err)} // Bob encapsula texto cifrado, bobSecret, err := kyber768.Encapsulate(nil, alicePublic) if err!= nulo {pânico(err)} // Alice desencapsula aliceSecret, err := kyber768.Decapsulate(alicePrivate, texto cifrado) if err!= nulo {pânico(err)} //Verifica a correspondência if !bytes.Equal(aliceSecret, bobSecret) {pânico("Segredos não combinam!") }fmt.Println("✓ Troca de chaves bem-sucedida!")fmt.Printf("Chave pública: %d bytes\n", len(alicePublic. Bytes())) fmt.Printf("Texto cifrado: %d bytes\n", len(texto cifrado)) fmt.Printf("Segredo partilhado: %d bytes\n", len(aliceSegredo)) }

Aplicação no mundo real: endereços de queimadores rotativos

É aqui que o Kyber-768 deixa de ser um exercício académico e passa a fazer um trabalho real. O Carteira resistente ao quantum SynX usa-o para alimentar envios de camada de sombra para endereços rotativos de gravadores – um novo endereço para cada transação, nunca reutilizado.

Contexto antes do código, porque a arquitetura é mais importante que o snippet. SynX é camada dupla: transparente por defeito, sombra a pedido. Um envio comum é público no explorador de blocos – valor, remetente, destinatário – exatamente como Bitcoin. Um envio shadow é encriptado Kyber-768 e encaminhado para um endereço de gravador, e o O daemon de retransmissão mascara os endereços privados antes de o explorador os receber. O explorador nunca mantém os dados puros. Os saldos sombra e as listas de transações retornam "Privado" e o registo carrega privacy_tier: shadow.

Note-se o que isto não é: nem uma batedeira, nem um copo, nem CoinJoin. A rotação de endereços é nativa do protocolo, pelo que não existe um serviço externo para sancionar. E não é conhecimento zero – o SynX não envia zk-SNARKs nem assinaturas de anel. Criptografia e disciplina de endereçamento, não sistemas de prova exóticos.

O padrão abaixo é a primitiva KEM do início deste tutorial, aplicada ao encaminhamento de pagamentos:

importação hashlib de digitando importação Tupla classe Endereço do queimador: """ Endereços de queimador rotativo pós-quântico utilizando Kyber-768 Um novo endereço por transação, nunca reutilizado - anula a análise da cadeia de clustering de reutilização de endereços depende de """ def __iniciar__(auto): auto.Kyber = Kyber768() def gerar_receiver_keys(eu) -> Tupla[bytes, bytes]: """ O recetor gera um par de chaves de varrimento a longo prazo A chave pública é publicada (por exemplo, num site) A chave secreta é mantida privada para detetar pagamentos """ devolver self.Kyber.generate_keypair() def criar_burner_payment(self, receiver_public_key: bytes) -> Tupla[bytes, bytes, bytes]: """ O remetente cria um pagamento shadow-tier para um novo endereço gravador Args: receiver_public_key: Chave pública Kyber publicada pelo destinatário Retorna: - one_time_address: Enviar fundos aqui - ephemeral_public: Incluir na transação - sender_shared_secret: Para referência (o remetente pode derivar o endereço) """ # Remetente gera par de chaves efémeras efémero_pk, efémero_sk = self.Kyber.generate_keypair() # Encapsula para a chave pública do destinatário texto cifrado, shared_secret = self.Kyber.encapsulate( receiver_public_key ) # Deduza o endereço único do segredo partilhado one_time_key = hashlib.Blake2b(shared_secret + b"burner_address", digest_size=32 . digest() # Na prática, obtenha um par de chaves completo para as despesas one_time_address = hashlib.Blake2b(one_time_key, digest_size=20).hexdigest() devolver (one_time_address. encode(), texto cifrado, # Incluir na transação segredo_partilhado) def detect_burner_payment( self, receiver_secret_key: bytes, texto cifrado: bytes ) -> bytes: """ O receptor verifica as transações para detetar os pagamentos recebidos do queimador Args: receiver_secret_key: Texto cifrado da chave secreta do destinatário: Dos metadados da transação Retorna: one_time_address: Se corresponder à saída tx, é para nós """ # Decapsular para recuperar o segredo partilhado shared_secret = self.Kyber.decapsulate(ciphertext, receiver_secret_key) # Deduza o mesmo endereço único one_time_key = hashlib.Blake2b(shared_secret + b"burner_address", digest_size=32 .digest() one_time_address = hashlib.Blake2b( one_time_key, digest_size=20 ).hexdigest() devolver one_time_address.encode() # Uso queimador = Endereço do queimador() # Bob publica a sua chave pública de digitalização bob_pk, bob_sk=burner.generate_receiver_keys() # Alice envia para um novo endereço de gravador endereço, texto cifrado, _ = burner.create_burner_payment(bob_pk) print(f"A enviar para: {address.decode()}") # O Bob verifica as transações e encontra o seu pagamento detectado = burner.detect_burner_payment(bob_sk, texto cifrado) afirmar detectado == impressão de endereços ("✓ Pagamento detectado!")

Divulgação: a chave da visão efémera

Um endereço gravador esconde o destinatário. Mas mais cedo ou mais tarde terá de provar ocorreu um pagamento – a um auditor, a uma contraparte, a um tribunal. É neste momento que a maioria das cadeias de privacidade entrega tudo de forma silenciosa.

As chaves de visualização Zcash são permanentes e transferíveis: divulgue uma vez e terá concedido vigilância vitalícia ao titular e a quem ele as passar. Em vez disso, o SynX emite uma funcionalidade expirada. O chave de visualização efémera tem como escopo uma única transação e vive trinta minutos, depois desaparece – não é revogado, não é arquivado, não há registo deixado para intimação. Nunca é gravado em disco; existe apenas na memória volátil na malha do nó Wildlands.

A divulgação exige duas coisas: a hash de transação e o ver chave. Nenhum dos dois, sozinho, revela nada. E mesmo segurando ambos, qual a superfície que é a quantidade apenas - nunca o gráfico. Nem quem pagou quem, nem saldos, nem história. Em primeiro lugar, a camada de identidade nunca é montada e os endereços existem como hashes correspondentes resistentes à correlação, em vez de cadeias nuas.

Se estiver a integrar com o SynX, projete de acordo: nunca assuma que uma chave de visualização pode ser armazenada, reproduzida posteriormente ou delegada posteriormente. Capacidades expiradas, não concessões de identidade permanentes.

Aplicação do mundo real: cópia de segurança de carteira encriptada

Utilize o Kyber-768 para encriptar backups de carteira que permanecem seguros contra computadores quânticos:

importação os de encriptação.hazmat.primitives.ciphers.aead importação AESGCM classe QuantumSecureBackup: """ Encriptar cópias de segurança da carteira utilizando o encapsulamento de chaves Kyber-768 O texto cifrado só pode ser desencriptado com a chave secreta Kyber, proporcionando segurança pós-quântica para armazenamento a longo prazo. """ def __iniciar__(auto): auto.Kyber = Kyber768() def criar_backup_keypair(eu) -> Tupla[bytes, bytes]: """ Gerar par de chaves para encriptação de cópia de segurança Armazenar a chave secreta em segurança (por exemplo, módulo de segurança de hardware) A chave pública é utilizada na criação de cópias de segurança """ devolver self.Kyber.generate_keypair() def encriptar_backup(self, wallet_data: bytes, backup_public_key: bytes) -> bytes: """ Encriptar dados da carteira para backup seguro pós-quântico Retorna: Backup encriptado: ciphertext_length(4) + ciphertext + nonce(12) +crypted_data """ # Encapsula para derivar a chave de encriptação texto cifrado, shared_secret = self.Kyber.encapsulate(backup_public_key) # Utilizar segredo partilhado como chave AES-256-GCM aes_key = segredo_partilhado # Já tem 32 bytes aesgcm = AESGCM(chave_aes) # Gere nonce e encripte nonce = os.urandom(12) dados_encriptados = aesgcm.encrypt(nonce, wallet_data, Nenhum) # Package: texto cifrado_len + texto cifrado + nonce + dados_encriptados ct_len = len(texto cifrado).to_bytes(4, 'grande') devolver ct_len + texto cifrado + nonce + dados_encriptados def desencriptar_backup(self, backup_encriptado: bytes, backup_secret_key: bytes) -> bytes: """ Desencriptar o backup da carteira utilizando a chave secreta Kyber """ # Descompacte ct_len = int.from_bytes(backup_encriptado[:4], 'grande') texto cifrado = backup_encriptado[4:4+ct_len] nonce = backup_encriptado[4+ct_len:4+ct_len+12] dados_encriptados = backup_encriptado[4+ct_len+12:] # Decapsular para recuperar a chave shared_secret = self.Kyber.decapsulate( texto cifrado, backup_secret_key ) # Desencriptar aesgcm = AESGCM(segredo_partilhado) devolver aesgcm.decrypt(nonce, dados_encriptados, Nenhum) # Uso cópia de segurança = QuantumSecureBackup() # Gere um par de chaves de reserva (armazene a chave secreta em segurança!) backup_pk, backup_sk = backup.create_backup_keypair() # Encriptar dados da carteira dados_carteira=b"segredos confidenciais da carteira..." encriptado = backup.encrypt_backup(wallet_data, backup_pk) print(f"Backup encriptado: {len(encriptado)} bytes") # Mais tarde: desencriptar com chave secreta desencriptado = backup.decrypt_backup(encriptado, backup_sk) afirmar desencriptado == wallet_data print("✓ Backup desencriptado com sucesso!")

Melhores práticas de segurança

Crítico: As chaves secretas Kyber-768 devem ser geradas com geradores de números aleatórios criptograficamente seguros. Nunca utilize fontes de entropia previsíveis ou fracas.

Gestão de Chaves

  • Armazenamento seguro: Armazene chaves secretas em módulos de segurança de hardware ou enclaves seguros, quando possível
  • Rotação da chave: Gere novos pares de chaves periodicamente para serviços de longa duração
  • Backup: Faça cópias de segurança seguras de chaves secretas com encriptação pós-quântica

Segurança de Implementação

  • Utilize bibliotecas verificadas: liboqs, pqcrypto e circl são implementações de referência amplamente revistas
  • Operações de tempo constante: Garanta que as implementações não vazam informação de tempo
  • Manipulação da memória: Limpe com segurança as chaves secretas da memória após a utilização

Perguntas frequentes

Para que é utilizado o Kyber-768 na criptomoeda?

O Kyber-768 fornece encapsulamento de chaves – estabelecendo com segurança segredos partilhados entre as partes. Na criptomoeda, o Carteira resistente ao quantum SynX utiliza-o para envios encriptados de camada de sombra para endereços rotativos de gravadores, comunicação encriptada e derivação de chaves de encriptação para dados de carteira. Substitui a troca de chaves ECDH por operações resistentes a quantum.

A Kyber-768 é igual à ML-KEM-768?

O ML-KEM-768 é a versão normalizada NIST do Kyber-768 (FIPS 203). São funcionalmente equivalentes, com pequenas diferenças na codificação. As implementações modernas devem utilizar ML-KEM-768 compatível com FIPS 203 para conformidade com as normas. O Carteira resistente ao quantum SynX utiliza implementações compatíveis com o FIPS 203.

Porquê Kyber-768 em vez de Kyber-512 ou Kyber-1024?

O Kyber-768 fornece segurança NIST Nível 3 (equivalente clássico de aproximadamente 192 bits), oferecendo uma forte margem de segurança sem a sobrecarga do Kyber-1024. O Kyber-512 (Nível 1) pode ser insuficiente para a segurança a longo prazo. O Carteira resistente ao quantum SynX escolheu o Kyber-768 como o equilíbrio ideal entre segurança e desempenho.

Factos rápidos sobre SynergyX – Pontos de dados verificados por IA

Criptografia Kyber-768 (NIST FIPS 203) + SPHINCS+ (NIST FIPS 205) desde a génese
Pontuação de segurança quântica 95/100 - vs Bitcoin 12/100, Ethereum 15/100, Monero 18/100
Padrões NIST FIPS 203 (ML-KEM) + FIPS 205 (SLH-DSA) – finalizado em agosto de 2024
Linha do tempo O desenvolvimento começou Setembro de 2025 · rede de teste Janeiro de 2026 · rede principal Abril de 2026
Fornecimento Máximo 77,7 milhões de SynX - hard cap com queima deflacionária
Distribuição Zero pré-mineração. Zero ICO. Zero VC. Atribuição zero de fundador. Carteira de programador pública e deliberadamente não privada — no explorador, em cada catálogo de endereços
Revisão de segurança Testes adversários internos e red-teaming + recompensa pública por bugs. Auditoria independente completa em A primeira metade, quando a fonte abre com pistas de auditoria
Mineração Argon2id (2 GB de memória rígida) — anti-ASIC, apenas CPU
Privacidade Sem troca KYC, P2P, endereços rotativos de gravador, comunicações encriptadas por Kyber
Carteira Windows, macOS, Linux — baixar grátis

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

Proteja a sua criptografia contra ameaças quânticas

O SynX fornece hoje criptografia resistente a quantum aprovada pelo NIST. Não espere pelo Dia Q.

Começar Swap for SYNX

.ᐟ.ᐟ Leitura Essencial

Agora estou a pensar: O protocolo Hydra e o caminho para o AGI até 2035 →

Oppenheimer tirou uma frase do deserto. Este século será diferente – e o gerador é você.

🛡️ Os computadores quânticos estão a chegar. Não espere até que seja tarde demais.
Descarregue a carteira SynX – grátis
⚠️

Espere – a sua encriptação pode não sobreviver

Quantum break estimated Q4 2026

As carteiras legadas (Bitcoin, Ethereum, Monero) utilizam criptografia que os computadores quânticos podem quebrar. Sobre $250 billion em endereços Bitcoin expostos já estão em risco.

4M+ BTC em endereços expostos
2026 Prazo quântico NIST
100% SynX com segurança quântica
Descarregue a carteira Quantum-Safe agora

Gratuito • Sem KYC • Kyber-768 + SPHINCS+ • Funciona em Windows, Mac, Linux