Isolamento de armazenamento
Extensões:
As carteiras baseadas em extensões do navegador, como o MetaMask, usam armazenamento local isolado que somente a extensão pode acessar, sem a possibilidade de acesso a um site. A extensão pode enviar dados para o site, ou o site pode solicitar dados fazendo solicitações de passagem de mensagens. As chaves privadas são armazenadas no armazenamento local em área restrita e as solicitações são feitas no site para o ramal para assinar mensagens. A extensão retorna a mensagem assinada para o site.
Baseado na Web:
Carteiras criptográficas baseadas em navegador como Authereum , Portis , Torus e Fortmatic, use o armazenamento local em área restrita também por meio de um iframe. Ao contrário dos cookies, o armazenamento local é estritamente restrito pelo domínio, o que significa que, se um site definir um valor no armazenamento local, somente esse site poderá ler o valor; portanto, alice.com não pode ler o armazenamento local de bob.com. Para guardar valores sensíveis ao armazenamento local, eles são definidos em um subdomínio controlado, por exemplo, x.wallet.com, pois nenhum outro site poderá ler o armazenamento local. Este subdomínio não contém interface do usuário, apenas para comunicação com iframes. Os provedores web3 dessas carteiras carregam um iframe oculto no site, usado para se comunicar com o subdomínio que contém o armazenamento em área restrita; por exemplo, Alice no dapp.com usando o Authereum, o Authereum sdk se conecta ao x.authereum.org usando um iframe e envia postMessagesolicitações ao iframe do site para assinar mensagens. Isso restringe o site a ler dados confidenciais, como chaves privadas, e permite que o site envie solicitações de assinatura da mesma forma que as extensões de carteira funcionam.
Nem todas as carteiras baseadas na Web têm armazenamento local em área restrita, portanto, você deve evitar usá-las, pois qualquer site pode ler os dados confidenciais armazenados, mas as carteiras mencionadas aqui são seguras nesse sentido.
Proteção contra ataques de phishing
Os ataques de phishing ocorrem quando um usuário é levado a pensar que está usando um site conhecido, mas está usando um site malicioso que se assemelha ao site legítimo. Authereum, Portis e Torus são soluções de login baseadas em nome de usuário e senha, para abrir a janela de autenticação de login em um novo pop-up ou redirecionamento. Isso permite que o usuário verifique o domínio do site quanto à legitimidade. A autenticação do Google também faz esse padrão. Além de abrir uma nova janela no login para o usuário verificar, alguns provedores de carteira baseados na Web também abrem uma nova janela ao assinar mensagens e transações para verificar a solicitação.
O acionamento por clique ocorre quando um site é carregado por meio de um iframe no site e ele sobrepõe uma interface do usuário diferente na parte superior do site com iframed, com eventos de ponteiro definidos como nenhum e, em seguida, engana o usuário a inserir informações ou clicar em um botão na interface do usuário sobreposta. mas na verdade eles estão clicando em um botão no site iframed. Isso é perigoso, porque a ação no site iframed pode ser algo como enviar fundos para a carteira de atacantes.
Para impedir que o site da carteira seja carregado em um iframe, tudo o que ele precisa fazer é definir o cabeçalho HTTP X-Frame-Options: DENY
, que é o que o Authereum e o Portis estão fazendo para que estejam protegidos contra esses ataques.
Confiando em scripts de conteúdo
É fácil verificar o código-fonte da extensão do navegador usando plug-ins do visualizador de origem, mas para evitar que uma extensão seja atualizada automaticamente com código malicioso, um usuário pode instalar a extensão manualmente para bloqueá-la em uma versão, obtendo o código-fonte do github, se estiver código aberto ou baixando os scripts de código-fonte.
Como nas carteiras baseadas na Web, o proprietário do site da carteira controla os scripts de conteúdo, você deve confiar que os scripts de conteúdo que gerenciam os dados importantes não serão maliciosos, pois o proprietário do site da carteira ou um invasor que obteve acesso ao site da carteira pode: a qualquer momento, atualize o código-fonte do site com código incorreto.
Para confiar nos scripts de conteúdo, o site da carteira pode ser hospedado no IPFS, pois o endereço da Web é o hash do conteúdo, o que significa que você pode confiar que ele não será alterado. O Authereum é uma carteira que já oferece isso visitando authereum.eth ou resolvendo a contenthash
propriedade do nome do ENS.
Conveniência
As carteiras baseadas na Web são portáteis porque você pode usar a mesma carteira em qualquer sistema operacional, navegador, desktop ou celular, enquanto na extensão do navegador você fica preso no ambiente em que está usando a extensão. As extensões são altamente inconvenientes, mas oferecem mais garantias de isolamento de armazenamento. Com contas baseadas em contrato, no entanto, mais recursos de segurança podem ser oferecidos no lado da carteira.
Contas baseadas em contrato
MetaMask, Portis, Torus e Fortmatic são todos baseados em contas de propriedade externa (EOA), o que significa que os fundos são armazenados e gerenciados por uma única chave. Se um invasor obtiver acesso à chave de assinatura, ele também terá acesso aos fundos armazenados nessa chave.
As contas baseadas em contrato (CBA), como o Authereum, fornecem mais garantias de segurança porque cada contrato de conta pode ter várias chaves para gerenciá-lo e cada chave também pode ter autoridade limitada sobre as ações que pode executar.
Vantagens das contas baseadas em contrato:
- Os fundos não são armazenados em uma única chave
- Você pode percorrer as chaves de gerenciamento
- Recuperação de conta, caso suas chaves de gerenciamento sejam roubadas ou perdidas
- Limites de transferência e retirada
- Controles de acesso para chaves, o que significa que você pode restringir quais métodos uma chave pode chamar