🧠 Chaotic Crypto: Criptografia Caótica Baseada em Sistema Neural em Evolução
Este projeto implementa um esquema experimental de criptografia autenticada (chaotic_encrypt/chaotic_decrypt) em Rust, que utiliza um sistema neural simples e dinâmico (NeuralSystem) para derivar chaves criptográficas, combinando alto desempenho com compressão LZ4 e autenticação Poly1305.
⚠️ Aviso: Este código é um projeto de pesquisa e demonstração da aplicação de sistemas caóticos e redes neurais em derivação de chaves. Ele NÃO deve ser utilizado em ambientes de produção que exijam segurança criptográfica auditada e formalmente verificada.
✨ Conceitos Fundamentais
O coração deste esquema é a NeuralSystem, uma rede neural simples cujos pesos e bias evoluem dinamicamente com base em funções trigonométricas e no contador de iterações.
1. Sistema Neural Caótico (NeuralSystem)
Evolução Dinâmica: A rede passa por uma "evolução" (evolve()) a cada rodada de ativação. Essa evolução é baseada em funções como sin(), cos(), e tan(), introduzindo sensibilidade às condições iniciais (efeito borboleta).
Derivação de Chave: A função activate() processa a entrada (Nonce + Payload Comprimido) através de múltiplas rodadas de operações SIMD (f32x4) e trigonométricas. O estado final é então passado para BLAKE3 para produzir a chave de 32 bytes (derived_key), garantindo alta difusão e avalanche.
Dual-Processing: O process() executa o activate() na entrada original e na entrada revertida (mirror), combinando as duas chaves derivadas com XOR para aumentar a entropia e a confusão.
2. Formato da Mensagem Criptografada
A mensagem final é estruturada para garantir a autenticação e controle de validade:
Seção
Tamanho (Bytes)
Descrição
Nonce
32
Valor aleatório usado como parte da entrada do NeuralSystem para garantir que mensagens criptografadas com o mesmo seed e conteúdo sejam únicas.
Timestamp
4
Hora de criação Unix (segundos).
Expiry (TTL)
4
Tempo de expiração Unix. Impede ataques de replay a longo prazo.
Flag
1
Flag de status (atualmente 1).
Payload Pad
512
Espaço de padding que armazena a hidden_key (chave derivada) no início.
Payload (LZ4)
Variável
O conteúdo original da mensagem, comprimido com lz4_flex.
Poly1305 Tag
16
Tag de Autenticação gerada pela chave derivada e o Payload+Header.
🔒 Mecanismos de Segurança e Desempenho
Funcionalidade
Primitiva/Técnica
Objetivo
Autenticação
Poly1305
Garante a integridade e autenticidade da mensagem (MAC). Um MAC inválido falha na decriptação imediatamente.
Compressão
lz4_flex
Reduz o tamanho da mensagem antes da criptografia, melhorando o desempenho de I/O.
Prevenção de Replay
Nonce + TTL
O Nonce garante que a cifra seja estocástica. O TTL (expiry) garante que a mensagem não possa ser decifrada após sua validade.
Key Derivation
NeuralSystem + BLAKE3
Usa um processo caótico (evolutivo) e de alta difusão (BLAKE3) para derivar a chave de sessão a partir do seed e do Nonce/Payload.
SIMD
wide::f32x4
Utilização de tipos SIMD (Single Instruction, Multiple Data) para acelerar os cálculos do NeuralSystem e otimizar o uso do pipeline da CPU.
👨💻 Como Rodar e Testar
Este projeto inclui uma suíte de testes de segurança para demonstrar a difusão da chave.
1. Execução do main
O main executa um teste de criptografia/decriptografia de uma grande mensagem para medir o tempo de execução e, em seguida, executa a suíte de testes de segurança.
cargo run --release
2. Executando os Testes de Segurança
A função run_chaotic_security_tests(iterations) executa milhares de iterações para verificar:
Integridade: Se a decriptação sempre recupera a mensagem original.
Difusão da Chave (Efeito Avalanche):
Mede quantos bits mudam na derived_key se apenas 1 bit na mensagem de entrada for alterado.
A saída ideal é que a média de bits alterados seja próxima de 128 (metade dos 256 bits da chave BLAKE3).
Estocasticidade: Verifica se as mensagens criptografadas são únicas mesmo com o mesmo seed e mensagem de entrada (garantia de que o Nonce está funcionando).
📦 Dependências Chave
Crate
Uso
poly1305
Autenticação Poly1305 (MAC).
lz4_flex
Compressão e descompressão de alta velocidade.
rand_chacha
Gerador de números pseudo-aleatórios seguro (PRNG) para inicialização do NeuralSystem e Nonce.
blake3
Função hash rápida e segura usada para finalizar a chave derivada do sistema neural.
wide
Tipos SIMD (Single Instruction, Multiple Data) para vetorização de cálculos.
zerocopy, bytemuck
Traits de performance e casting seguro para manipulação de bytes.