Ir para o conteúdo principal

Geração de Chaves Offline: Guia de Segurança com Air Gap

Gerar chaves de criptomoedas em um computador conectado à internet as expõe a malware, keyloggers, captura de tela, sequestro de área de transferência e exfiltração remota. Para carteiras de alto valor destinadas a armazenamento a frio de longo prazo, o padrão-ouro é a geração offline com air gap: criar chaves em um dispositivo que nunca foi e nunca será conectado a qualquer rede.

Este guia fornece um processo abrangente e passo a passo para geração offline de chaves, cobrindo seleção de hardware, configuração do sistema operacional, geração de chaves, verificação e limpeza segura.

Por Que a Geração com Air Gap Importa

O Modelo de Ameaça

Quando você gera uma frase-semente ou chave privada em um computador comum, o material da chave existe em:

  • RAM — Acessível a qualquer processo em execução no sistema.
  • Disco — Pode ser gravado em disco pelo sistema de memória virtual do sistema operacional.
  • Área de transferência — Se copiado e colado, fica acessível a todos os aplicativos.
  • Rede — Se a máquina estiver conectada, malware pode exfiltrar chaves instantaneamente.
  • Tela — Malware de captura de tela ou observação por cima do ombro.
  • Teclado — Keyloggers (software ou hardware) registram toda entrada.

Um computador com air gap elimina completamente o vetor de rede. Combinado com segurança operacional adequada, também reduz significativamente ou elimina os outros vetores.

Quem Precisa de Geração com Air Gap?

  • Qualquer pessoa armazenando mais do que pode perder.
  • Armazenamento "deep cold" de longo prazo (anos ou décadas).
  • Custódia institucional e gestão de tesouraria.
  • Qualquer pessoa que queira o mais alto padrão de segurança alcançável.

Para carteiras de uso diário com saldos pequenos, uma hardware wallet oferece segurança suficiente sem a complexidade dos procedimentos com air gap.

Seleção de Hardware

Opção 1: Notebook Dedicado (Recomendado)

Compre um notebook novo ou restaurado de fábrica que será usado exclusivamente para geração de chaves e nunca será conectado à internet:

  • Remova ou desative todo o hardware de rede. Remova fisicamente a placa Wi-Fi e o módulo Bluetooth, se possível. No mínimo, desative-os no firmware BIOS/UEFI.
  • Desative a câmera e o microfone. Remova-os ou cubra/desconecte fisicamente.
  • Use um notebook sem modem celular.
  • Opções econômicas: ThinkPad usado (X230, T440) — barato, bem suportado por Linux, fácil de modificar fisicamente.

Opção 2: Raspberry Pi

Um Raspberry Pi (Modelo 3B+ ou 4) é um computador de placa única de baixo custo sem Wi-Fi se você usar o Pi Zero sem módulo sem fio, ou se desativar a rede:

  • Inicialização a partir de cartão microSD.
  • Sem armazenamento persistente além do cartão SD (que você destruirá depois).
  • Sem hardware sem fio ao usar o modelo correto.
  • Menor custo (US$35–US$75 incluindo acessórios).

Opção 3: USB Live em Hardware Existente

Inicialize um Linux live USB dedicado em um computador existente com toda a rede desativada:

  • O ambiente live roda totalmente na RAM.
  • Nenhum dado é gravado no disco interno (se configurado corretamente).
  • Após desligar, a RAM é limpa.
  • Risco: O computador existente pode ter comprometimentos em nível de hardware (rootkits de firmware, keyloggers de hardware) que persistem entre inicializações do SO. Um dispositivo dedicado elimina esse risco.

Configuração do Sistema Operacional

Tails OS (Recomendado)

Tails é uma distribuição Linux focada em privacidade, projetada para não deixar rastros:

  • Inicializa por USB e roda totalmente na RAM.
  • Toda a rede é roteada pelo Tor por padrão — mas para uso com air gap, você não ativará rede.
  • Projetado para uso amnésico: sem estado persistente, a menos que explicitamente configurado.
  • Inclui ferramentas comuns e pode rodar Python para scripts de geração de chaves.

Etapas de configuração:

  1. Baixe a ISO do Tails no seu computador comum.
  2. Verifique a assinatura da ISO usando a chave de assinatura do Tails.
  3. Grave a ISO em um pendrive usando o Tails Installer, Etcher ou dd.
  4. Inicialize o computador com air gap pelo USB.
  5. No Tails Greeter, não configure nenhuma conexão de rede.
  6. Verifique que nenhuma interface de rede está ativa: ip link show deve mostrar todas as interfaces DOWN.

Ubuntu Live USB (Alternativa)

Se o Tails não for adequado:

  1. Baixe a ISO do Ubuntu e verifique seu checksum.
  2. Grave no USB.
  3. Inicialize com rede desativada na BIOS.
  4. No instalador do Ubuntu, selecione "Try Ubuntu" (não instale).
  5. Verifique ausência de conectividade de rede.

Verificando a Integridade do Air Gap

Após inicializar, verifique o air gap:

# Check that no network interfaces are UP
ip link show

# Verify no IP addresses assigned
ip addr show

# Attempt to reach the internet (should fail)
ping -c 1 8.8.8.8

# Check for Wi-Fi and Bluetooth
rfkill list all

Todas as interfaces de rede devem estar DOWN, nenhum endereço IP deve estar atribuído e o ping deve falhar. Se qualquer teste sugerir conectividade, pare e resolva antes de prosseguir.

Processo de Geração de Chaves

Método 1: Usando Ferramentas do SafeSeed Offline

As ferramentas do SafeSeed são aplicações web client-side que podem rodar no navegador sem conexão com a internet.

Ferramenta SafeSeed

O SafeSeed Seed Phrase Generator e o Paper Wallet Creator podem ser salvos para uso offline. Antes de ficar offline, salve a página web completa (Ctrl+S / Cmd+S), transfira para o computador com air gap via USB e abra no navegador. Todas as operações criptográficas rodam localmente em JavaScript — nenhuma comunicação com servidor é necessária.

Etapas:

  1. No seu computador comum (online), acesse a ferramenta do SafeSeed.
  2. Salve a página web completa em um pendrive.
  3. Verifique a integridade do arquivo (compare checksums, se disponíveis).
  4. Transfira o pendrive para o computador com air gap.
  5. Abra o arquivo HTML salvo no navegador.
  6. Gere sua frase-semente.
  7. Escreva em papel (não salve digitalmente na máquina com air gap).
  8. Verifique a frase-semente reinserindo-a e confirmando que os mesmos endereços são gerados.

Método 2: Usando a Ferramenta BIP-39 de Ian Coleman

A ferramenta BIP-39 de Ian Coleman é uma página HTML open-source e standalone amplamente usada para geração offline de chaves:

  1. Baixe a versão mais recente no GitHub no seu computador online.
  2. Verifique a assinatura PGP.
  3. Transfira para o computador com air gap via USB.
  4. Abra bip39-standalone.html em um navegador.
  5. Gere ou insira um mnemônico.
  6. Selecione a moeda e o caminho de derivação.
  7. Registre a frase-semente e os endereços.

Método 3: Entropia Baseada em Dados

Para máxima desconfiança de todos os RNGs de software, gere entropia manualmente com dados:

  1. Use dados de padrão cassino (dados de precisão com arestas vivas, não dados comuns arredondados).
  2. Role um único dado 99 vezes para 256 bits de entropia (cada rolagem fornece ~2,585 bits; 99 rolagens fornecem ~255,9 bits).
  3. Converta as rolagens em uma string binária.
  4. Use a ferramenta BIP-39 (offline) para converter a entropia binária em um mnemônico.
  5. Ou role o dado 50 vezes para 128 bits de entropia (frase de 12 palavras).

Métodos de conversão dos dados:

  • Método base-6: Registre cada rolagem (1-6), converta a sequência para binário.
  • Método binário com moeda: Use uma moeda (cara=1, coroa=0) 256 vezes.
  • Dado para binário: Role um dado; se 1-3, registre 0; se 4-6, registre 1. Repita 256 vezes.

O terceiro método desperdiça mais entropia, mas é o mais simples. Para um tratamento detalhado da qualidade da entropia, veja nosso guia de Entropia e Aleatoriedade.

Método 4: Linha de Comando (Python)

Para usuários confortáveis com linha de comando, um script Python mínimo pode gerar mnemônicos BIP-39:

import hashlib
import os

# BIP-39 word list must be loaded from a file
with open('english.txt', 'r') as f:
wordlist = [w.strip() for w in f.readlines()]

# Generate 256 bits of entropy
entropy = os.urandom(32) # Uses OS CSPRNG

# Compute checksum
h = hashlib.sha256(entropy).digest()
checksum_bits = bin(h[0])[2:].zfill(8) # First 8 bits for 256-bit entropy

# Convert entropy to binary string
entropy_bits = bin(int.from_bytes(entropy, 'big'))[2:].zfill(256)
all_bits = entropy_bits + checksum_bits

# Split into 11-bit groups and map to words
words = []
for i in range(0, len(all_bits), 11):
index = int(all_bits[i:i+11], 2)
words.append(wordlist[index])

print(' '.join(words))

Importante: Este é um exemplo simplificado para fins educacionais. Para uso em produção, use uma biblioteca bem auditada como mnemonic de python-mnemonic.

Verificação

Após gerar uma frase-semente, verifique-a antes de confiar fundos a ela:

1. Verificação de Checksum

Insira a frase-semente novamente na ferramenta de geração. Se a ferramenta aceitar sem erro, o checksum é válido.

2. Verificação de Derivação de Endereço

Derive os primeiros endereços da criptomoeda pretendida e do caminho de derivação. Registre esses endereços. Depois, em um dispositivo separado (ou após reiniciar a máquina com air gap), reinsira a frase-semente e verifique que os mesmos endereços são gerados.

3. Verificação Cruzada entre Ferramentas

Se possível, verifique a frase-semente em duas ferramentas diferentes (por exemplo, gerador do SafeSeed e ferramenta Ian Coleman). Ambas devem produzir endereços idênticos a partir da mesma frase-semente, caminho de derivação e passphrase.

4. Teste com Transação Pequena

Antes de armazenar valor significativo:

  1. Envie uma pequena quantidade de criptomoeda para o primeiro endereço de recebimento.
  2. Em um dispositivo separado, restaure a carteira a partir da frase-semente.
  3. Verifique se os fundos estão visíveis e se você consegue assinar uma transação para enviá-los de volta.

Isso confirma toda a cadeia: geração de entropia, codificação mnemônica, derivação de seed, derivação de chave e geração de endereço estão todas corretas.

Registro da Frase-Semente

Papel

  • Escreva de forma legível com caneta de tinta permanente em papel livre de ácido.
  • Numere cada palavra (1-24).
  • Não escreva sobre uma superfície que possa deixar marca (não escreva em bloco onde a pressão aparece nas folhas abaixo).
  • Armazene em um recipiente à prova de fogo e de água.

Metal

  • Grave ou estampe em placas de aço inoxidável.
  • Teste com a abreviação das quatro primeiras letras se o espaço for limitado.
  • Verifique a legibilidade imediatamente após a gravação.
  • O metal resiste a incêndio e inundação — recomendado para armazenamento de longo prazo.

O Que Não Fazer

  • Não fotografe a frase-semente.
  • Não digite em nenhum arquivo na máquina com air gap.
  • Não imprima (impressoras têm memória e capacidade de rede).
  • Não salve no pendrive.

Limpeza Segura

Após gerar e registrar sua frase-semente, elimine todos os vestígios do dispositivo com air gap:

1. Limpar Área de Transferência e Tela

  • Feche todos os aplicativos.
  • Limpe a área de transferência (Ctrl+C em algum texto irrelevante).

2. Desligamento

  • Desligue o computador. O conteúdo da RAM decai em segundos a minutos após perda de energia.
  • Para garantia extra, deixe a máquina desligada por pelo menos 15 minutos (a DRAM retém dados por períodos menores em temperatura ambiente e maiores em ambientes frios).

3. Mídia de Armazenamento

  • Se estiver usando Tails live USB, nada foi gravado em disco. O USB pode ser reutilizado.
  • Se estiver usando cartão SD do Raspberry Pi com SO não amnésico, limpe o cartão SD com segurança (dd if=/dev/urandom of=/dev/sdX bs=1M) ou destrua-o fisicamente.
  • Se você salvou algo por engano no disco interno da máquina com air gap, apague com segurança.

4. Pendrive

  • O pendrive usado para transferir a ferramenta de geração não deve conter nenhum material de chave gerada se você seguiu as instruções corretamente.
  • Verifique que o USB contém apenas os arquivos originais da ferramenta, nada mais.
  • Para segurança máxima, limpe o USB após o uso.

Avançado: Assinando Transações com Air Gap

Um computador com air gap é útil não apenas para geração de chaves, mas também para assinatura contínua de transações:

O Fluxo de Trabalho

  1. Máquina online (watch-only): Construa uma transação não assinada.
  2. Transferência: Mova a transação não assinada para a máquina com air gap via USB ou código QR.
  3. Máquina com air gap: Assine a transação com a chave privada.
  4. Transferência: Mova a transação assinada de volta para a máquina online.
  5. Máquina online: Faça broadcast da transação assinada para a rede.

Transferência por Código QR (Preferida)

Usar códigos QR elimina totalmente pendrives, fechando um vetor potencial de malware (dispositivos USB podem carregar payloads de execução automática):

  • Exiba a transação não assinada como código QR na máquina online.
  • Escaneie o código QR com uma câmera conectada à máquina com air gap.
  • Assine a transação.
  • Exiba a transação assinada como código QR na máquina com air gap.
  • Escaneie com a máquina online.

Carteiras que suportam assinatura com air gap baseada em QR incluem Coldcard, Keystone e Sparrow Wallet (com configuração de webcam).

PSBTs (Partially Signed Bitcoin Transactions)

O formato PSBT do Bitcoin (BIP-174) foi projetado especificamente para fluxos de trabalho com air gap. Um PSBT contém todas as informações necessárias para assinar uma transação sem exigir que o dispositivo assinante tenha quaisquer dados de blockchain.

Configuração Multi-Assinatura com Air Gap

Para segurança máxima, combine geração de chaves com air gap e multi-assinatura:

  1. Gere três frases-semente separadas em três sessões com air gap separadas (idealmente em dispositivos diferentes).
  2. Configure uma carteira multi-assinatura 2-de-3.
  3. Armazene cada frase-semente em um local físico diferente.
  4. As transações exigem assinatura em dois dos três dispositivos com air gap.

Isso fornece proteção contra:

  • Um único dispositivo comprometido (apenas uma chave exposta).
  • Uma única frase-semente perdida (as duas chaves restantes ainda podem assinar).
  • Um único local de armazenamento comprometido.

Erros Comuns

Erro 1: Usar um Computador "Limpo", Mas Antes Conectado

Apagar e reinstalar o SO em um computador que já foi conectado à internet não é suficiente. Malware em nível de firmware (rootkits UEFI) pode sobreviver à reinstalação do SO. Um dispositivo dedicado, nunca conectado, elimina esse risco.

Erro 2: Conectar a Máquina com Air Gap "Só por um Momento"

Qualquer conexão de rede, mesmo breve, quebra o air gap. Malware pode exfiltrar uma chave privada em milissegundos. Depois de conectado, o dispositivo não pode mais ser considerado com air gap.

Erro 3: Usar Impressora

Impressoras frequentemente têm armazenamento próprio (para fila de impressão) e muitas impressoras modernas têm Wi-Fi ou Bluetooth. Imprimir uma frase-semente pode armazená-la na memória da impressora e potencialmente transmiti-la. Escreva à mão em vez disso.

Erro 4: Transferir a Frase-Semente Digitalmente

A frase-semente nunca deve existir em formato digital fora do breve momento em que é exibida na tela com air gap. Não copie para pendrive, não salve em arquivo, nem codifique em QR para transferência. Escreva em papel ou grave em metal diretamente.

Erro 5: Não Verificar a Ferramenta de Geração

A ferramenta que você transfere para a máquina com air gap deve ser verificada antes do uso. Confira hashes de arquivos, assinaturas PGP ou, no mínimo, compare tamanhos de arquivo. Uma ferramenta adulterada pode gerar chaves determinísticas que o atacante já conhece.

FAQ

Por que não usar apenas uma hardware wallet?

Hardware wallets são excelentes e suficientes para a maioria dos usuários. A geração com air gap fornece uma margem extra de segurança para armazenamento de valor muito alto porque elimina a confiança no gerador de números aleatórios e no firmware da hardware wallet. A abordagem com air gap também permite verificação com múltiplas ferramentas independentes, enquanto uma hardware wallet é um único ponto de confiança.

Quanto tempo leva todo o processo com air gap?

Para uma configuração inicial, espere de 2 a 4 horas incluindo preparação do SO, verificação, geração de chaves e limpeza. Gerações posteriores em um dispositivo já preparado levam de 30 a 60 minutos.

Posso usar um smartphone como dispositivo com air gap?

Smartphones são difíceis de isolar totalmente com air gap porque têm múltiplos rádios (celular, Wi-Fi, Bluetooth, NFC) que nem sempre podem ser desativados fisicamente. Um notebook com hardware de rede removido é mais confiável. Alguns dispositivos projetados para isso (como a carteira Keystone) são feitos para assinatura com air gap.

A geração com air gap é necessária para toda carteira?

Não. Para carteiras de uso diário com valores pequenos, uma hardware wallet respeitável ou mesmo uma software wallet bem protegida é suficiente. A geração com air gap é recomendada para armazenamento a frio de longo prazo de valor significativo.

Como atualizo o software em uma máquina com air gap?

Você não atualiza. A máquina com air gap deve rodar o mesmo software indefinidamente. Se precisar de versão mais nova de uma ferramenta de geração, baixe e verifique em uma máquina online, transfira via USB e verifique o checksum na máquina com air gap antes do uso.

E se o gerador de números aleatórios da máquina com air gap estiver com defeito?

É por isso que existe entropia baseada em dados como fallback. Se você desconfia de todos os RNGs de hardware e software, gere entropia manualmente com dados e alimente a ferramenta BIP-39. A segurança da frase-semente resultante depende apenas da qualidade das suas rolagens de dados, não de qualquer componente eletrônico.

Malware pode atravessar o air gap?

Em teoria, atacantes sofisticados em nível estatal já demonstraram técnicas para atravessar air gap usando emissões eletromagnéticas, sinais acústicos ou padrões de pisca de LED. Na prática, esses ataques exigem proximidade física, equipamento especializado e estão muito além da capacidade de ladrões comuns de cripto. Para a grande maioria dos usuários, um air gap mantido corretamente é praticamente impenetrável.

Guias Relacionados