Bitkey: carteira fria offline para guardar criptomoedas


Estêvão Monteiro

10/12/2017

Atualizado em 06/03/2018

Sumário


Contexto

Você comprou seus primeiros bitcoins numa exchange (corretora) como Negocie Coins, Foxbit ou MercadoBitcoin (só pra citar as maiores). Mas se você deixar os valores na carteira da exchange, está correndo o risco deles serem extraviados.

Em geral, criptomoedas perdidas são irrecuperáveis. Não são rastreáveis como transações bancárias. Você pode perder os valores da carteira da exchange por conta de invasão por hacker, roubo de um funcionário corrupto ou alguma outra falha no sistema. Isso já aconteceu várias vezes e com as maiores exchanges internacionais.

É importante transferir as criptomoedas da exchange pra uma carteira privada, idealmente uma carteira fria.

Há várias soluções de carteira por aí, mas poucas são realmente seguras. Nenhuma carteiras na Internet é segura.

Tentarão te convencer que carteiras na Internet são seguras devido a autenticação com 2 fatores (2FA), ou seja, com um token do celular. É melhor do que nada, mas a chave privada está sob controle de terceiros, então que garantia você tem? Vai confiar? Não tem nem como saber se a 2FA está realmente protegendo tua carteira.

Na verdade, mesmo que a 2FA esteja bem implementada, não é nem difícil para um hacker interceptar comunicação por SMS para roubar token de segurança como o do Authy. Portanto, a 2FA é boa para transações curtas, como a aquisição em exchanges, mas é importante não deixar os valores à mercê da Internet, sob controle de terceiros.

Há um ditado muito forte na comunidade de criptomoedas: se você não tem a posse exclusiva da tua chave privada, não tem a posse exclusiva da criptomoeda. Ou seja, facilmente será roubado.


O que é uma carteira?

É importante entender que todos os bitcoins que existem não estão escondidos em carteiras, pois estão todos na blockchain, que é o registro público de todas as transações já realizadas na rede distribuída Bitcoin. Porém, cada transação determina pelo menos um endereço particular de onde bitcoins saíram e pelo menos um outro endereço particular para onde os bitcoins foram. Como se fossem as contas bancárias de origem e de destino. Então, a maneira mais simples de entender uma carteira de Bitcoin é como um endereço ou conjunto de endereços criptográficos para onde bitcoins podem ser enviados e dos quais só o dono pode tirá-los.

Cada endereço é resultado de uma função matemática a partir de uma chave criptográfica pública, que por sua vez é uma função matemática derivada de uma chave criptográfica privada. Ou seja, é um sistema de criptografia assimétrica.

A partir da chave pública, infinitos endereços criptográficos podem ser gerados para receber bitcoins. A vantagem de múltiplos endereços em vez de um só é que ninguém pode saber quais endereços fazem parte da mesma "família" da mesma chave privada, ou seja, ninguém sabe o saldo total da carteira.

Para ser mais específico, o que realmente define a carteira é a chave privada, pois todas as chaves públicas e endereços de recebimento derivam dela. E para poder enviar bitcoins a partir de um endereço para outro, é necessário assinar digitalmente a transação com exatamente a chave privada que gerou o endereço de origem. Assim, só o dono da chave privada pode tirar valores dos seus endereços. Por isso, é crucial que você seja o único detentor da tua chave privada.

Resumindo: todos os bitcoins estão na rede pública distribuída, mas cada endereço com saldo de bitcoins na rede só pode ser operado pelo detentor da respectiva chave privada, através de assinatura digital.


Tua carteira pessoal

O mínimo que você deve fazer é usar uma carteira própria, no seu computador ou celular, mesmo que seja uma carteira quente, ou seja, uma carteira que é usada em sistema que se conecta à Internet. (Em contraste, uma carteira fria é isolada e nunca tem contato com rede alguma.)

Com uma carteira quente, você tem que se preocupar com a segurança do seu equipamento: mantenha os softwares atualizados, especialmente o sistema operacional, o navegador de Internet e o antivírus, e não abra arquivos recebidos sem antes verificar sua segurança. Porque se alguém plantar um espião no seu sistema, poderá copiar sua senha quando você digitar e enviar a sua chave privada para roubar todos os teus valores. Apesar desse risco, é você quem controla e se responsabiliza pela carteira, não uma organização qualquer, então, se tiver cuidado, é muito melhor do que uma carteira de Internet (inclusive a da tua exchange).

Um excelente software de carteira pessoal é o Electrum. Ele pode ser usado como carteira quente ou como carteira fria. Você pode reduzir o risco da carteira quente criando-a com 2FA, mas para isso pagará uma taxa de serviço quando fizer pagamentos (0,002 BTC para 20 transações ou 0,005 BTC para 100 transações).

Electrum     Google Authenticator

Com o 2FA na tua carteira pessoal no teu PC, um hacker teria que invadir o teu PC e o teu celular ao mesmo tempo para roubar teus valores. Para valores pequenos, essa segurança provavelmente será suficiente. Afinal, o maior risco são os ataques genéricos. É bastante improvável que um hacker mire você especificamente, a menos que esteja guardando um montante muito alto. Se isso for suficiente para você, pode seguir para o Electrum e parar por aqui. Mas o teu valor pequeno de hoje pode ser uma fortuna daqui a alguns anos. Se quiser ter domínio e segurança totais sobre teus bitcoins, com risco próximo a zero, continue a leitura.



A solução mais prática dentre as soluções mais seguras são as hardware wallets, como Trezor e Ledger. Para quem já conhece tokens de certificados digitais, são basicamente a mesma coisa, mas mais inteligentes e preparados pra transacionar criptomoedas.

Trezor     Ledger Nano S

O problema das hardware wallets é que são caras (no mínimo 58 euros) e não estão disponíveis no Brasil por vias oficiais (logo, pode somar frete e impostos), e adquirir via terceiros é arriscado: quem te garante que é original e não vai facilitar o roubo? Além disso, você tem que confiar que a fabricante não cometeu nenhuma falha de implementação lógica nem física, e que não houve adulteração no processo de produção e logística até chegar a você. E por fim, como são poucos fabricantes no mercado, esses poucos são alvos primários de hackers, que certamente já estão trabalhando pra tentar quebrar a segurança.

Paranóia? Não existe cuidado demais com segurança de informação. O ataque só precisa acertar 1 vez; a defesa tem que acertar todas as vezes.

A melhor solução de segurança é aquela que não requer que você confie em ninguém. Você entende o esquema de segurança e garante ela sozinho. O lema da Electrum Wallet é: "Não confie. Verifique. Porque Bitcoin não é questão de confiança, é questão de liberdade e independência."

Todos os sistemas de segurança de informação podem ser violados. Todos. Basta tempo e processamento suficiente.

O segredo da segurança da informação é inviabilizar a violação ao torná-la mais cara do que a vantagem extraída da violação ou temporalmente irrelevante: quando o roubo puder ser efetivado, não haverá mais valor.


A solução Bitkey

Bitkey

Bitkey é um software livre (código aberto e gratuito) para operar carteiras frias de Bitcoin e outras criptomoedas. É um CD/DVD de inicialização para o computador rodar um sistema Linux virtual, que existe apenas na memória volátil, sem deixar rastros na máquina*, sem acesso a rede e discos rígidos, gravando dados apenas em pendrive.

O Bitkey simula o conceito de sistema air-gapped, ou seja, isolado pelo ar, sem conexões físicas.

O objetivo é inviabilizar tentativas de roubo da tua chave criptográfica privada e da respectiva senha, que dão acesso aos teus valores. Se nenhum malware conseguir transmitir tua chave privada para a Internet, seja por conexão de rede ou carregado por dispositivo USB, tua segurança não será violada.

Grave tua carteira somente no pendrive e guarde-o a sete chaves, nunca usando em sistema conectado a rede. Use somente dentro do ambiente Bitkey. Guarde de curiosos, com chave ou cofre se puder.

Assim, tua chave privada fica blindada e teus valores, seguros.

Bitkey é mais barato e mais seguro do que transacionar com hardware wallets. Em contrapartida, dá mais trabalho.

* A menos que a própria placa-mãe (BIOS) esteja infectada por malware. Nesse caso, ninguém pode garantir a segurança dos teus dados e você deveria ter jogado essa placa-mãe fora.

Modo de inicialização do sistema Modo frio/offline Modo quente/online Aplicativos Web offline

Download

Baixe aqui a minha versão (fork) do Bitkey. Eu não sou o autor do Bitkey original, mas como é software livre, implementei as seguintes melhorias ao sistema:

3L3oM7LpLMioudTPcyKDHKdFGvGV9WWUhn

* O que é matriz QR? É um código bidimensional como a figura acima. É como um código de barras com mais capacidade de dados, usada principalmente pra troca de mensagens de texto como endereços de Internet (ou de Bitcoin).

Quando dois computadores (celulares inclusive) trocam informação por leitura óptica de matriz, você garante que apenas o texto ali codificado é trocado entre os sistemas, dificultando a propagação de vírus.

A matriz acima é um dos endereços públicos derivados de uma carteira minha: 3L3oM7LpLMioudTPcyKDHKdFGvGV9WWUhn. Se entenderes que esta página te ajudou a preservar teus valores e merece uma doação, podes enviar para esse endereço.


Preparação

Criação da carteira fria e da carteira observadora. Será necessário um disco CD ou DVD gravável* e um pendrive virgem.

Fotos das telas deste procedimento podem ser conferidas em Cold Storage — Electrum documentation.

  1. Grave o disco* a partir da imagem baixada no link acima.
  2. Inicie um PC (desktop ou laptop) a partir do CD*.
  3. Entre no modo "cold-offline".
  4. Insira um pendrive virgem.
  5. Abra o Electrum para criar tua carteira fria (chave privada), que será usada para assinar transações.
  6. Siga com atenção todas as instruções. Defina senhas fortes. Ao final, a carteira fria será gravada no pendrive e você deverá ter anotado a semente da chave privada em papel.
  7. Acione no menu: Wallet (carteira) > Information > Show as QR code (ícone da matriz). Esta é a matriz QR da tua chave pública, que será usada para criar a carteira observadora. Essa carteira traz o histórico de transações e permite receber, preparar e transmitir transações, mas não assiná-las.
  8. Instale o Electrum no celular para criar uma carteira observadora.
  9. Ao criar a carteria, selecione "Standard wallet" > "Use public or private keys" e clique na câmera para ler a matriz QR gerada no passo 7.

* O disco pode ser substituído por um segundo pendrive. A vantagem do disco é fechar a sessão de gravação, impedindo qualquer alteração no conteúdo, inclusive possíveis infecções por malware. Não é fácil encontrar pendrives com trava para impedir gravação. Então, o disco é mais seguro. Em contrapartida, iniciar o sistema por CD pode demorar 4 minutos, mas o pendrive é mais rápido, levando cerca de 1 minuto. Um drive de CD-ROM de 52x lê a meros 64 Mbit/s e um drive de DVD-ROM de 16x lê a 177 Mbit/s. USB 2.0, o tipo mais comum, tem taxa de transferência de 480 Mbit/s (7,5x mais rápido que o CD e 2,7x mais que o DVD). Se agilidade for uma preocupação, opte pelo pendrive e cuide bem da integridade do seu conteúdo.


Transações seguras

Para receber valores, basta usar a carteira observadora. Ela tem uma lista de endereços de recebimento, derivados da chave pública. Use endereços diferentes cada vez que receber bitcoins, para preservar sua privacidade.

Para enviar valores (pagar), as transações serão assinadas com a carteira fria:

  1. Prepare a transação com a carteira observadora no celular (ou PC): insira o endereço destinatário e o valor.
  2. Acione Pay e clique no ícone da matriz QR para gerá-la. Essa matriz terá todos os dados da transação não-assinada.
  3. Inicie um PC (desktop ou laptop) com webcam a partir do CD do Bitkey.
  4. Insira o pendrive da carteira fria.
  5. Abra o Electrum para carregar e assinar a transação do celular (ou PC).
  6. Acione "Tools" > "Load transaction" > "From QR code" e faça a leitura da matriz QR gerada no passo 2.
  7. Assine a transação.
  8. Gere a matriz QR da transação assinada.
  9. No celular, faça a leitura da matriz QR do passo 8.
  10. Transmita (broadcast) a transação.
  11. Aguarde que a rede confirme sua transação. Demora em média 10 minutos, mas pode demorar 1 hora ou mais. Uma transação é considerada realizada após 6 confirmações recebidas da rede.

Perdi meu pendrive! E agora?

Se você seguiu todas as instruções, não tem problema algum.

Estas instruções também se aplicam caso você esqueça a senha da carteira.

Se o pendrive (ou sua senha) for perdido, é só recriar a chave privada a partir da semente que tem que ter sido anotada em papel quando a chave foi criada. Essas instruções são dadas pelo software da carteira.

A semente é uma sequência de 12 palavras inglesas geradas aleatoriamente pela carteira. Por exemplo: grass pull trash cargo retreat clean work globe payment verify lift bullet. A partir dessa sequência, um algoritmo criptográfico determinístico gera um código matemático que será a tua chave privada. A semente acima, por exemplo, gera a seguinte chave privada no Electrum: xprv9s21ZrQH143K4QyRjMzznCXEkYchZhAdagzyw5u35Lw9jwNwDVhdsWA8YhzacMhCrYTwjNZ7jcAm5NPtd8YfKXm5sQ14D5DzLaHSAKoj2SK. E a chave pública é: xpub661MyMwAqRbcGu3tqPY19LTyJaTBy9tUwuvajUJedgU8cji5m31tRJUcPzkh8ABWS4jCYk4CXLe28bhgPm2MMhJUAWKyChvzj1rVY84Kebe. É sempre o mesmo código para a sequência de palavras, por isso você pode recuperar a chave. Como se pode ver, é uma sequência bastante longa de caracteres aleatórios, praticamente impossível de ser adivinhada.

Se perder só a semente, ela pode ser re-emitida pelo software da carteira ao abrir tua chave privada. Anote novamente em papel e cuide para não perdê-la novamente.

Se você perdeu o pendrive com a chave privada e também perdeu a semente, você perdeu os bitcoins para sempre. Faça pelo menos uma cópia e guarde os papéis em locais diferentes e seguros. Evite perder por incêndio ou inundação.

O BIP39 Mnemonic Code Converter permite criar chaves privadas com semente recuperável para 32 criptomoedas. A idéia é gerar a semente aleatória, anotar no papel, e usar a chave privada criada nos softwares de carteiras específicos das outras criptomoedas. Assim, mesmo que perca a chave ou o pendrive, pode recriar a chave com a semente.


Raspberry Pi Zero

Considerando que o Bitkey seja usado em um computador que normalmente é usado conectado à rede (a menos que tenha um computador velho só pra usar o Bitkey), ainda existe o risco do BIOS da placa-mãe ser infectado e vazar a chave privada. É um risco extremamente baixo, mas existe. A solução perfeita seria montar um sistema Raspberry Pi Zero.

Raspberry Pi Zero

Trata-se de um computador contido em uma placa do tamanho de um cartão de crédito e baixo custo (cerca de R$ 80). Não tem conexões de rede, apenas conexões USB, HDMI e câmera CSI. É possível instalar câmera e tela touchscreen, mas o custo pode subir até cerca de R$ 500. Nesse caso, valeria considerar as hardware wallets, pela conveniência. O Raspberry seria muito mais seguro, mas muito menos prático.

A arquitetura do Raspberry, entretanto, é diferente do PC normal, então as compilações existentes do Bitkey não seriam compatíveis. Seria necessário instalar os softwares manualmente. Portanto, opção apenas para desenvolvedores e usuários avançados.


Mais informações

Como elaborar uma senha forte
Original: xkcd: Password Strength

Links educativos: