Verifica tu mesmo

Não confies em ninguém. Verifica tu mesmo.

O Solo2 é uma aplicação web. Isso significa que o teu navegador já tem todas as ferramentas para verificar as nossas afirmações. Sem extensões, sem software especial. Apenas as ferramentas de desenvolvimento do teu navegador (F12) e dois minutos do teu tempo.

Verifica em 2 minutos

Prime F12 no teu navegador. Não precisas de instalar nada. Sem conhecimentos de programação.

Afirmação Como verificar Separador
Nenhum cookie de qualquer tipo Application → Cookies → vazio. O Solo2 não instala nenhum cookie. A tua sessão é mantida em localStorage, não em cookies. Sem _ga Application
Sem serviços de terceiros na app Network → filtrar por domínio → apenas pedidos a solo2.net Network
Analytics apenas no landing, não na app Network → apenas no landing (raiz), não em /app/* Network
O teu histórico vive no teu navegador Application → IndexedDB → solo2-vault-{userId}. Todas as tuas mensagens e ficheiros estão aí. O servidor não tem nada. Application
Lista de contactos apenas local Application → IndexedDB → store pares. Os teus contactos existem apenas no teu navegador. Application
Sem CDNs externos Network → todos os JS/CSS carregam do mesmo domínio. Sem cdn.jsdelivr.net, sem googleapis.com, sem cloudflare.com. Tudo é nosso. Network
Sessões de 24 horas no máximo Application → localStorage → solo2_session. Verifica o timestamp de expiração. Nunca é superior a 24h desde a criação. Application
Podes ver que tipo de ligação estás a usar Na interface do chat: indicador P2P (verde) vs Mirror/TURN (laranja) visível a todo o momento. UI
Umami é sem cookies Application → Cookies → nenhum cookie de stats.menzuri.com aparece. O Umami conta visitas sem te identificar. Application
A tua chave mestra é gerada aleatoriamente Application → ao registares-te, o Solo2 gera 24 palavras únicas. Não são derivadas da tua palavra-passe — são uma chave independente com 256 bits de entropia real Application

Se sabes usar os DevTools

Verificações que requerem conhecimento técnico. Se compreendes HTTP, WebRTC e criptografia básica, podes verificar tu mesmo.

Afirmação Como verificar
Mensagens encriptadas E2E Network → os pedidos a /cmd transportam payloads binários. O corpo é um blob opaco, não JSON legível. O servidor recebe texto cifrado que não pode decifrar.
Sinais WebRTC encriptados E2E Network → as mensagens de sinal viajam como blobs binários encriptados. Não são JSON legível com candidate ou sdp em texto simples.
Chave mestra independente da palavra-passe Network → o login recebe um wrapped_master_key
Padding uniforme no mirror Network → os pacotes WebSocket/DataChannel têm tamanho fixo quando se usa relay. Inspeciona os tamanhos na aba Network — devem ser todos idênticos independentemente do comprimento da mensagem.
Palavra-passe protegida (nunca viaja em texto simples) Network → o login envia um hash, não texto simples. Não podes verificar que algoritmo o servidor usa (Argon2id), mas podes ver que a tua palavra-passe original nunca sai do navegador.
Pedidos de emparelhamento expiram em 3 dias Cria um pedido, não respondas, verifica após 3 dias que desapareceu. Requer paciência e duas contas.
Notificações push encriptadas Network → os pedidos push ao Service Worker chegam encriptados (padrão Web Push). Podes ver o payload encriptado na aba Network.
Ligação P2P direta vs relay chrome://webrtc-internals/ → mostra os candidatos ICE e o tipo de ligação ativo. Se ambos os peers estão na mesma rede, deves ver candidatos host (diretos, sem relay).

Isto não podes verificar

Seríamos hipócritas se disséssemos que tudo é verificável. Estas afirmações requerem que confies em nós até certo ponto — ou que esperes até publicarmos o código fonte.

Afirmação Porque não é verificável
Double Ratchet com rotação de chaves As operações criptográficas ocorrem dentro de um binário WASM. O utilizador vê que carrega, mas não pode inspecionar os algoritmos internos.
A chave mestra é gerada com entropia real (256 bits) A geração usa crypto.getRandomValues dentro do navegador. Podes ver que são geradas 24 palavras, mas não podes verificar a partir do F12 a qualidade da entropia nem que o CSPRNG seja seguro
X25519 + Ed25519 + ChaCha20-Poly1305 Mesmo problema: a pilha criptográfica está dentro do WASM. As curvas e algoritmos usados não podem ser confirmados sem código fonte.
O servidor é "completamente cego" Podes verificar que o cliente não envia dados legíveis. O que o servidor faz com os metadados (IPs, timestamps) não é observável do exterior.
O servidor não guarda relações após o emparelhamento Requer acesso ao código e à base de dados do servidor.
Os IPs não são registados Não podes verificar o que o servidor regista nos seus logs.
As chaves rodam com cada mensagem Acontece dentro do WASM. Vês mensagens enviadas, mas não podes observar a rotação de chaves.
Os dados apagados desaparecem realmente Podes apagar da IndexedDB local, mas não podes verificar que o servidor não retém cópias (embora tecnicamente não tenha razão para o fazer, já que nunca teve o conteúdo decifrado).

Porque o WASM é uma barreira real

A camada criptográfica do Solo2 é compilada em WebAssembly — um formato binário que o teu navegador executa mas que não pode ser facilmente inspecionado ou descompilado em código fonte legível.

O JavaScript minificado (que usamos para a interface) é reversível: o navegador pode reformatá-lo e podes ler a lógica. O WASM não: é código máquina compilado, como uma aplicação nativa. Podes ver que se executa, mas não como funciona internamente.

Dizemos que é Double Ratchet com X25519. Podes confiar na nossa palavra, ou podes esperar até publicarmos o código fonte crypto como repositório público. Entretanto, as partes verificáveis (rede, armazenamento, cookies, ligações) estão abertas à inspeção de qualquer pessoa com um navegador.

O que estamos a fazer para que possas confiar mais

1

Publicar os hashes SHA-256 dos ficheiros .wasm

Publicaremos o hash criptográfico de cada ficheiro WASM em produção. Assim qualquer auditor pode verificar que o ficheiro servido pelo servidor corresponde à versão compilada.

2

Abrir a camada crypto como código aberto

Publicar o código fonte da camada criptográfica (Zig) como repositório público. O mesmo modelo do libsignal do Signal. Qualquer pessoa pode compilar, comparar o binário com o que está em produção e verificar que estamos a executar o que dizemos.

3

A segurança não depende da obscuridade

O nosso modelo de segurança é concebido para funcionar mesmo que o código fonte seja público. Se a arquitetura é sólida, publicar o código torna-a mais forte, não mais fraca. Esse é o objetivo.

4

5 camadas de segurança documentadas

Palavra-passe (acesso ao servidor), 24 palavras (chave mestra real), segredo do dispositivo (proteção do cofre) e rotação Double Ratchet. Cada camada é independente e verificável no nosso Manifesto de Transparência.

Solo2 — A tua conversa é só tua.