Executando verificação de segurança...
4

Thiago, li o repositório inteiro (README + bioemergent.py v2.2.0). Você pediu crítica, então vai.

Não é pós-quântica

A cifragem é XOR(plaintext, SHA256-CTR(seed)). SHA-256 é problema matemático. Grover reduz a busca da seed pela metade dos bits, igual a qualquer construção baseada em hash. A "validação semântica" por cosseno roda depois do XOR e não participa da confidencialidade contra observador passivo. Dizer "imune a ataques quânticos por ausência de problema matemático" não fecha: o problema continua lá, só foi renomeado.

PQC tem definição formal. NIST padronizou ML-KEM (FIPS 203), ML-DSA (FIPS 204) e SLH-DSA (FIPS 205) em 2024. Vender isso como "solução PQC" sem dialogar com nada disso atrai um escrutínio que o sistema não aguenta.

A "ausência de chave" também não procede

O vetor P(t) é a chave. É objeto estático em RAM, serializável em texto claro via exportar(), copiável, transmissível. gerar_par() faz c._estado.vetor = s._estado.copiar(), ou seja, copia a chave. Renomear "chave" para "estado" não muda o que a coisa é. O próprio README admite: "Comprometer servidor → equivale a acesso root". Isso é a definição de chave simétrica.

Bugs, em ordem de gravidade

1. Nonce reuse
self._contador incrementa só em decifrar() quando a similaridade passa. Em cifrar() nunca incrementa. Duas mensagens em sequência sem decifrar no meio usam a mesma máscara. Two-time pad: C1 XOR C2 = P1 XOR P2, recuperável com análise de frequência trivial.

2. Sem autenticação
XOR sem MAC, sem AEAD. Atacante flipa bits no ciphertext e o plaintext flipa nos mesmos bits. A similaridade por cosseno roda depois do decrypt, então não impede injeção. O atacante não precisa passar na similaridade pra causar dano.

3. hash(msg) no _encode
Python tem hash randomization por processo. O mesmo msg produz vetores diferentes em processos diferentes. Cliente e servidor em máquinas distintas nunca convergem na similaridade. E hash() retorna 64 bits, não é função criptográfica.

4. derivar_semente com baixa entropia
int(np.dot(self.vetor, self.vetor[::-1]) * 1e12) colapsa 256 floats em uns 40 bits úteis (precisão de float64 truncada). Entropia real muito menor do que o vetor sugere.

5. except: nu no decifrar
Engole KeyboardInterrupt e tudo o mais.

6. exportar() serializa o vetor em texto claro
Sem wrapping, sem derivação. Quem pega o arquivo tem a chave.

A ideia não é nova

"Estado compartilhado que evolui a cada mensagem validada" tem nome: ratcheting. O Signal Protocol (Double Ratchet, 2013) resolve esse problema. HKDF em cada passo, DH ratchet pra forward secrecy real, AEAD em cada mensagem, prova de segurança no modelo padrão. Vale ler o spec antes de continuar iterando, porque ele cobre os mesmos problemas que você está tentando resolver intuitivamente.

A similaridade de cosseno como "validação metabólica" é interessante, mas o lugar dela é como camada de detecção de anomalia em cima de um AEAD padrão, não no lugar dele. Aí vira contribuição original.

Sobre o framing

Wheeler, Penrose, Hawking, Bohm, Zeilinger no rodapé, mais a retórica de "irreversibilidade do tempo" e "linguagem que só existe entre eles": a comunidade de cripto associa isso a projeto amador na hora. Sistema sério se vende com prova de redução a problema computacional. Esse não tem. Esse framing afasta justamente quem poderia te dar feedback técnico de qualidade.

Se quiser continuar

  • Tira "pós-quantico" do título. Não é.
  • Reposiciona como "experimento de ratcheting com validação semântica".
  • Substitui o XOR caseiro por ChaCha20-Poly1305 com nonce derivado de contador.
  • Move a similaridade de cosseno pra camada de anomalia em cima do AEAD.
  • Lê o paper do Double Ratchet do Signal.

Não é pra desanimar. É pra você não publicar como PQC e levar bronca de desconhecidos na net.

Carregando publicação patrocinada...