Artigo 9 de 124 min de leitura

dApps sem carteira de navegador

Os sites esperam uma carteira no navegador. O navegador é o programa mais exposto do computador. A AirNox resolve isso 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 selo da extensão sem chaves no canto, uma ligação local com a carteira de desktop, o air gap e o celular
A extensão encaminha. O desktop decide. O celular assina.
Nesta página

Uma extensão que não é 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 wallet standards de Solana e Sui. Para uma página, ela é uma carteira. Ela responde "quais contas", "qual rede", "assine isto, por favor" do jeito de sempre.

Por dentro, ela é um mensageiro. Não guarda chaves, não armazena seed e não consegue assinar nada. Todo pedido que uma página faz é encaminhado por um canal exclusivamente local para a AirNox Wallet no desktop, e a resposta volta pelo mesmo caminho. Se amanhã a extensão fosse trocada por uma cópia maliciosa, ela não teria nada para roubar nem nada com que assinar.

O problema da carteira de extensão clássica

Uma carteira web3 clássica vive inteira dentro do navegador, chaves incluídas. Isso coloca as chaves no programa mais exposto do computador. Código injetado numa página pode alcançar a interface da extensão. Os segredos armazenados são protegidos por uma criptografia que placas de vídeo modernas quebram por força bruta (brute force) em larga escala. Muitas vêm com rastreadores e publicidade. Poucas protegem de algum jeito contra um endereço de destino trocado. E, de quebra, consomem memória e processador o dia inteiro. A AirNox reduz a parte do navegador a um mensageiro e tira dele tudo o que importa, levando para um programa nativo de desktop e, no modo AirGap, para um celular que nunca fica online.

Só local

O canal entre a extensão e o desktop nunca sai do seu computador. Não há servidor de retransmissão, nem sessão na nuvem, nem conta. As duas pontas se autenticam mutuamente, então um programa que finge ser a carteira não consegue nada, e uma página que finge ser a extensão também não.

As permissões ficam com o desktop

As permissões ficam na AirNox Wallet, não no navegador. Elas são concedidas por origem e por rede, uma de cada vez, e nada fica implícito. Um site que recebeu permissão para ver sua conta Ethereum não recebeu permissão para ver sua conta Polygon. Um site permitido numa carteira não está permitido em outra.

Uma grade de origens por redes com marcas de concedido e não concedido, e uma linha de carteira bloqueada em que tudo é recusado
Por origem, por rede, fail-closed.

A origem é a que o navegador comprovou, não um texto que a página mandou junto. Uma página não consegue se passar por outro site. E o sistema inteiro é fail-closed: tudo o que não foi concedido explicitamente é recusado, e um pedido que a carteira não entende também é recusado.

Bloqueada quer dizer não

Enquanto a carteira está bloqueada, a extensão não responde nada, seja qual for a forma do pedido. Uma página não consegue acordar a carteira, nem listar contas, nem deixar uma assinatura na fila para ser feita quando você desbloquear. Você mesmo desbloqueia a carteira, na própria carteira, e só então o navegador recebe respostas.

Assinatura

Transações, mensagens e dados tipados percorrem todos o mesmo caminho. O desktop decodifica e faz a triagem do pedido primeiro, reconhecendo operações padrão e sinalizando imitações, aprovações (allowances) ilimitadas e spenders (endereços autorizados a gastar) desconhecidos. No modo AirGap, o pedido não assinado então atravessa para o celular, onde é decodificado de novo a partir dos bytes, mostrado a você e assinado só depois que você pressiona Accept (Aceitar). A assinatura volta, o desktop a transmite para a rede e a página recebe um hash de transação. A troca de rede é tratada do mesmo jeito, com a carteira decidindo se a troca é permitida.

Numa carteira cuja seed fica no desktop, o próprio desktop assina depois da mesma triagem, na janela da carteira em vez de no celular.

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 para você. Pode mostrar uma transação e pedir outra. Pode fingir que um resgate é uma verificação. O que ela não consegue é assinar. A decisão é tomada onde estão as chaves, depois que você leu o pedido como o celular o decodificou. A aprovação de um drainer que passaria lisa por um pop-up do navegador chega ao celular como ela é: uma aprovação, para este spender, neste valor. Se for ilimitada, o celular diz.

Essa é a troca que queríamos: a conveniência de uma carteira de navegador para a página, e nada da exposição para você.

A série completa

  1. Considere o computador comprometido
  2. Mass Adoption Security: o assinador é um celular que você já tem
  3. Três caminhos através do air gap: QR codes, Bluetooth LE e NFC
  4. Invisível no ar: um assinador que nenhum scanner encontra
  5. Nunca confiamos no transporte
  6. O que o celular mostra: análise de transações no assinador
  7. O celular mantém seu próprio registro
  8. O cofre no seu desktop: Argon2id e um perfil que resiste a tentativas de adivinhação
  9. dApps sem carteira de navegador
  10. Um servidor MCP com regras: agentes de IA dentro de limites
  11. Uma só carteira protegida para tudo
  12. Pequena e nativa: C++, sem runtime JavaScript, da estação de trabalho ao Raspberry Pi

Entre na lista de espera

Deixe seu e-mail e a gente manda novidades sobre os lançamentos. Só isso.