Artigo 9 de 124 min de leitura

dApps sem carteira no navegador

Os sites esperam encontrar uma carteira no navegador. O navegador é o programa mais exposto do computador. A AirNox resolve isto com uma extensão que, para a página, parece uma carteira e não guarda absolutamente nada.

Uma página de swap num navegador com o emblema da extensão sem chaves no canto, uma ligação local à carteira no computador, o air gap e o telemóvel
A extensão reencaminha. O computador decide. O telemóvel assina.
Nesta página

Uma extensão que não é uma carteira

A extensão de navegador (browser extension) da AirNox injeta as interfaces padrão que as aplicações descentralizadas procuram: EIP-1193 e EIP-6963 para redes EVM, TON Connect e os Solana e Sui wallet standards. Para uma página, é uma carteira. Responde a «que contas», «que rede», «assina isto, por favor» da forma habitual.

Por dentro, é um estafeta. Não guarda chaves, não armazena nenhuma seed e não consegue assinar nada. Cada pedido de uma página é reencaminhado, por um canal exclusivamente local, para a AirNox Wallet no computador, e a resposta volta pelo mesmo caminho. Se amanhã a extensão fosse substituída por uma cópia maliciosa, não teria nada para roubar nem nada com que assinar.

O que está errado numa carteira clássica de extensão

Uma carteira web3 clássica vive inteiramente dentro do navegador, chaves incluídas. Isso põe as chaves no programa mais exposto do computador. Código injetado numa página consegue aceder à interface da extensão. Os segredos guardados estão protegidos por uma encriptação que as placas gráficas modernas quebram por força bruta (brute force) em grande escala. Muitas trazem rastreadores e publicidade. Poucas oferecem alguma proteção contra um endereço de destino trocado. E consomem memória e tempo de processador o dia inteiro, por esse privilégio. A AirNox reduz a parte do navegador a um estafeta e tira do navegador tudo o que importa: passa-o para um programa nativo no computador e, no modo AirGap, para um telemóvel que nunca está online.

Só local

O canal entre a extensão e a carteira no computador nunca sai do teu computador. Não há servidor intermediário, nem sessão na nuvem, nem conta. As duas pontas autenticam-se mutuamente, por isso um programa que se faça passar pela carteira não obtém nada, e uma página que se faça passar pela extensão também não.

É o computador que gere as permissões

As permissões vivem na AirNox Wallet, não no navegador. São concedidas por origem e por rede, uma de cada vez, e nada fica subentendido. Um site autorizado a ver a tua conta Ethereum não foi autorizado a ver a tua conta Polygon. Um site autorizado numa carteira não foi autorizado noutra.

Uma grelha de origens por redes, com marcas de concedido e não concedido, e uma linha de carteira bloqueada onde tudo é recusado
Por origem, por rede, fechado por omissão.

A origem é a que o navegador comprovou, não um texto que a página enviou. Uma página não pode alegar ser outro site. E todo o sistema é fechado por omissão (fail-closed): tudo o que não foi explicitamente concedido é recusado, e um pedido que a carteira não compreende também é recusado.

Bloqueada quer dizer não

Enquanto a carteira está bloqueada, a extensão não responde a nada, seja qual for a forma do pedido. Uma página não pode acordar a carteira, nem listar contas, nem pôr em fila uma assinatura para ser feita quando desbloqueares. És tu que desbloqueias a carteira, na própria carteira, e só então o navegador recebe respostas.

Assinatura

Transações, mensagens e dados tipados (typed data) fazem todos o mesmo caminho. Primeiro, o computador descodifica e analisa o pedido: reconhece as operações padrão e assinala imitações, autorizações de gasto (allowances) ilimitadas e spenders desconhecidos. No modo AirGap, o pedido não assinado atravessa depois para o telemóvel, onde volta a ser descodificado a partir dos bytes, é-te mostrado e só é assinado depois de carregares em Accept (Aceitar). A assinatura volta, o computador transmite-a para a rede e a página recebe um hash de transação. A mudança de rede é tratada da mesma forma, e é a carteira que decide se a mudança é permitida.

Numa carteira cuja seed vive no computador, é o computador que assina, depois da mesma análise, na janela da carteira e não no telemóvel.

O que uma página comprometida pode e não pode fazer

Uma página comprometida, ou um script envenenado dentro do navegador, pode mentir-te. Pode mostrar uma transação e pedir outra. Pode fingir que um resgate é uma verificação. O que não consegue é assinar. A decisão é tomada onde estão as chaves, depois de leres o pedido tal como o telemóvel o descodificou. A aprovação de um drainer que passa sem esforço por um pop-up do navegador chega ao telemóvel como aquilo que é: uma autorização de gasto, para este spender, neste montante. Se for ilimitada, o telemóvel indica-o.

Era esta a troca que queríamos: a comodidade de uma carteira de navegador para a página, e nenhuma da exposição para ti.

A série completa

  1. Parte do princípio de que o computador está comprometido
  2. Mass Adoption Security: o assinador é um telemóvel que já tens
  3. Três formas de atravessar o air gap: códigos QR, Bluetooth LE e NFC
  4. Invisível no ar: um assinador que nenhum scanner encontra
  5. O transporte nunca é de confiança
  6. O que o telemóvel te mostra: análise de transações no assinador
  7. O telemóvel guarda o seu próprio registo
  8. O cofre no teu computador: Argon2id e um perfil que resiste a tentativas de adivinhação
  9. dApps sem carteira no navegador
  10. Um servidor MCP com regras: agentes de IA dentro de limites
  11. Uma carteira protegida para tudo
  12. Pequena e nativa: C++, sem runtime de JavaScript, de uma estação de trabalho a um Raspberry Pi

Junta-te à lista de espera

Deixa o teu e-mail e enviamos-te novidades sobre os lançamentos. Mais nada.