feat: interop enc:v1 — decifra e re-cifra o armazenamento do OmniRoute - #6
Open
logins-pathbit wants to merge 1 commit into
Open
logins-pathbit wants to merge 1 commit into
logins-pathbit wants to merge 1 commit into
Conversation
- Servico ominirtksync ao lado do OmniRoute: renova tokens OAuth antes do vencimento, limpa travas de rate limit expiradas e valida credenciais contra os provedores (anti-bloqueio por inatividade) - Interop enc:v1: o guardiao decifra o armazenamento do Router (AES-256-GCM, scrypt com o sal estatico medido no bundle) e re-cifra na escrita — prova interop Node-Python com vetor real - Menor privilegio: recebe SOMENTE a chave de campo via .runtime/ominirtksync.env (bootstrap); painel so no loopback - Imagem com base pinada por digest (SEC-01); inventarios, contagens de logs e topologia atualizados - Conexoes Groq e OpenRouter validadas ao vivo: HTTP 200
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
O que muda
O OmniRoute cifra credenciais em repouso com AES-256-GCM (
enc:v1:<iv>:<ct>:<tag>). Antes desta evolução o sync lia o ciphertext e reportava toda conexão como recusada (HTTP 401), porque validava o material cifrado contra o provedor.Causa raiz medida no bundle do servidor
O sal é o contexto estático (não o sha256 da chave — esse só aparece no caminho legado de migração). A primeira versão deste módulo derivou com o sal do caminho legado e a decriptação falhava em silêncio; a medição direta no bundle corrigiu.
Conteúdo
omini_rtksync/enc_v1.py:decrypt/decrypt_if_needed/encryptcom AES-256-GCM (pycryptodome pinado em 3.23.0); falhas nunca levam material a log.database.py: leitura decifra; escrita re-cifra no mesmo formato (o gateway faz passthrough de claro, então uniformidade preservada).tests/test_enc_v1.py: 7 testes incluindo vetor de interop gerado pelo Node com os parâmetros reais — prova de que o Python lê exatamente o que o gateway escreve.pyproject.toml: dependência pycryptodome pinada.Prova ao vivo
Ambiente real com Groq e OpenRouter cifrados no SQLite: antes
Chave RECUSADA (HTTP 401)×2; depoisAutenticação aceita pelo provedor (HTTP 200)×2 no mesmo ciclo do cron.Tipo
Validação
python -m unittest discover -s tests -p "test_enc_v1.py"— 7/7 OK