Pular para o conteúdo
Escalibur Wallet

Segurança

O que protege a sua carteira, e onde a proteção para.

Nenhuma defesa é absoluta. Cada uma tem um custo para quem ataca e um limite, e esta página diz os dois. O modelo de ameaça completo, com os números, está em docs/seguranca.md.

  • 0servidores da Escalibur no caminho
  • 97verificações a cada mudança
  • 256 MiBde memória por tentativa de PIN

O que o app promete

E que o código confere a cada mudança, nas 97 verificações da auditoria.

  • As palavras nunca saem do celular em claro.

    Cifradas, só saem por ação sua, num envelope com senha própria. O app não tem conta nem servidor, e não manda chave nem palavra para lugar nenhum.

  • Nenhum verificador de PIN gravado.

    A chave raiz vai cifrada por uma chave derivada do PIN, com Argon2id de 256 MiB, dentro de um embrulho que só abre no chip de segurança do aparelho (o Secure Enclave, no iPhone). Cada tentativa passa pelo aparelho, uma de cada vez.

  • Rosto novo não abre a carteira.

    O atalho do Face ID vale só para os rostos cadastrados hoje: cadastrar um rosto novo no iPhone destrói o atalho em vez de abri-lo. O código de desbloqueio do celular não abre nada aqui.

  • Uma chave por carteira.

    A chave raiz desembrulha só a chave da carteira que vai assinar. O que se guarda é a entropia, não as palavras, e ela sai da memória assim que a assinatura termina.

  • Nada é assinado às cegas.

    O assinador só aceita um plano que passou pela validação da rede: destino, valor, taxa com teto, tag e memo, e chamada de contrato decodificada contra uma lista compilada no app. A assinatura é verificada antes de sair.

  • Nenhum provedor decide nada.

    O chainId, a passphrase de rede, os contratos de token, os roteadores e os emissores são constantes compiladas. Nonce e sequence só valem com dois provedores concordando.

Do PIN até a assinatura

Cada degrau abre só o seguinte, e só no próprio aparelho. Nenhum deles existe fora dele.

  1. Seu PINSeis dígitos que não ficam gravados em lugar nenhum, nem como verificador.
  2. Argon2id com 256 MiBCada tentativa custa memória e tempo, de propósito.
  3. Chip de segurançaO Secure Enclave, no iPhone: a chave do PIN só abre nele, uma tentativa de cada vez.
  4. Chave raizDestranca só a chave da carteira que vai assinar.
  5. Chave da carteiraAssina, confere a assinatura e é apagada da memória.

O que você pode ligar

Camadas a mais, para quem quer. Todas ficam no celular e nenhuma depende de servidor.

  • Super Security

    O PIN e o Face ID juntos para abrir o app, enviar, trocar e ver as palavras. Nenhum dos dois sozinho abre nada: é a própria cifra das carteiras que pede os dois.

  • Safe Keyboard

    Um teclado desenhado pelo app, em todo campo. O teclado do sistema não vê as letras, e nada é previsto, ditado ou aprendido.

  • Passphrase

    Uma senha extra que abre outra carteira nas mesmas palavras, pedida antes de mover saldo e conferida dentro do cofre.

  • Envelope Escalibur

    Uma cópia cifrada da senha da carteira, com Argon2id e ChaCha20-Poly1305, trancada com uma senha só sua.

Contra quem

Os casos reais, do mais comum ao mais raro, com o que o app faz e o que sobra.

  1. 01Alguém que viu o código do seu celular e levou o aparelho.

    O que o app faz

    É o caso mais comum de roubo. O código de desbloqueio do celular não abre nada aqui: o app pede o PIN ou o rosto ao abrir e trava ao sair. A espera entre erros de PIN cresce até tornar inviável tentar todos pela tela. Ver ou exportar as palavras pede o PIN.

    O que sobra

    Nada, sem o PIN, sem o rosto do dono e sem um exploit para o iOS.

  2. 02Ladrão com o celular bloqueado.

    O que o app faz

    Tudo fica protegido pelo código de desbloqueio, preso ao aparelho, e a chave raiz só existe embrulhada pelo chip de segurança. As chaves de proteção de arquivo somem segundos depois do bloqueio.

    O que sobra

    Um código de desbloqueio fraco, somado a uma ferramenta forense, leva ao caso seguinte.

  3. 03Exploit com execução de código no celular desbloqueado.

    O que o app faz

    Nenhum byte gravado abre fora do chip de segurança do aparelho, e o PIN não tem verificador para levar embora: o ataque fica preso ao aparelho, uma tentativa por vez. A chave da carteira só existe na memória durante a assinatura.

    O que sobra

    Nesse cenário, o PIN de 6 dígitos cai em horas, de 6 a 11 no pior caso. Um programa malicioso dentro do app durante uma assinatura vê a chave. Nenhuma carteira de software se defende disso. Para valores altos, use uma carteira de hardware.

  4. 04Rede hostil ou provedor mentindo.

    O que o app faz

    ATS padrão, sem exceção, e nenhuma decisão de assinatura tomada com dado de rede. A chamada de contrato é decodificada no próprio celular, a aprovação é no valor exato, o mínimo é garantido pelo contrato, a taxa tem teto e o nonce exige dois provedores concordando.

    O que sobra

    Uma rota pior dentro da tolerância de preço que você escolheu. E um provedor pode ficar fora do ar.

  5. 05Golpe: endereço falso, token falso, área de transferência.

    O que o app faz

    Sem navegador de dapps e sem conexão com sites: só se assina o que o app monta. Endereço parecido com um do seu histórico é marcado, transferência de valor zero e token fora da lista ficam à parte, e o endereço colado aparece inteiro para conferir.

    O que sobra

    Quem passa por cima de um aviso que bloqueia o envio.

  6. 06Atualização maliciosa: GitHub invadido, conta da Apple invadida ou a própria Apple.

    O que o app faz

    Nenhum pacote remoto e nenhum binário de terceiro: o código de fora está no repositório, compilado do fonte e travado por SHA-256. Cada versão é autorizada numa lista assinada por chaves que nunca passam pelo GitHub nem pela Apple, e as chaves públicas estão gravadas dentro do app. Se aparecer na loja uma versão fora da lista, o app instalado trava com o alerta de tentativa de hack e diz para não abrir a versão nova.

    O que sobra

    Quem controla o sistema do celular, como a Apple ou quem a obrigue, consegue trocar o app sem mudar o número da versão, e nenhum app se defende do próprio sistema. Isso só aparece comparando o app decifrado com o build atestado. Deixe a atualização automática desligada para o alerta chegar antes, e para valores altos use uma carteira de hardware.

Auditoria

Conferido por script, a cada mudança

O que esta página afirma, o tools/verificar.sh confere no código: rede só no módulo de rede, chave só no módulo de chaves, chaveiro só em dois arquivos, nenhum SDK de análise, nenhum host fora da lista. São 97 verificações, e o CI para o merge se uma falhar.

Falhas

Achou uma falha?

Relate em particular pelo GitHub, sem abrir issue pública. Os prazos que assumimos:

  1. 72 horasConfirmação do recebimento
  2. 7 diasTriagem
  3. 30 diasCorreção de falha crítica
  4. até 90 diasDivulgação coordenada