727 / 736SEEDQR

SeedQR

Formato de cópia QR de uma mnemónica BIP39 do projeto SeedSigner

O SeedQR converte uma mnemónica BIP39 num código QR estático para carregamento rápido num dispositivo de assinatura offline; o Standard SeedQR guarda índices de palavras com quatro algarismos e o CompactSeedQR guarda entropia binária, mas ambos transportam o segredo capaz de restaurar a carteira.

O SeedQR é um formato de dados documentado abertamente pelo projeto SeedSigner, não um novo tipo de seed, encriptação ou protocolo Bitcoin. O Standard SeedQR concatena posições de palavras BIP39 indexadas a partir de zero num QR numérico; o CompactSeedQR grava a entropia original como dados binários e deixa o recetor recalcular o checksum.

O Standard SeedQR pega em cada palavra da mnemónica, encontra a sua posição indexada a partir de zero na lista BIP39 e escreve-a com exatamente quatro algarismos. Assim, o valor 12 é escrito como 0012. O resultado não é uma fotografia das palavras nem uma chave privada em texto, mas outra representação sem perdas do mesmo segredo. [1]

A lista BIP39 contém 2048 itens com índices de 0 a 2047. Uma frase padrão de 12 palavras produz 48 algarismos e uma grelha QR de 25×25; uma frase de 24 palavras produz 96 algarismos e uma grelha de 29×29. A ordem dos blocos de quatro algarismos é a ordem das palavras, pelo que trocar blocos restaura uma frase diferente ou inválida. [1]

O SeedSigner foi concebido como stateless signer: ao desligar, perde os dados secretos carregados e o seed tem de ser introduzido novamente. O SeedQR reduz essa entrada a uma leitura ou transcrição manual. Não deve ser confundido com PSBT, wallet descriptor ou QR de endereço; estes podem conter dados públicos ou de transação, enquanto o SeedQR contém o segredo de recuperação. [7]

Antes da transcrição, a interface SeedSigner avisa que “SeedQR is your private key” e que não deve ser fotografado nem lido por um dispositivo ligado à internet. O air gap limita a via de fuga pela rede, mas não encripta o QR nem impede uma câmara, cópia, ladrão físico ou dispositivo offline comprometido de ler o seed. [5]

A documentação oficial indica suporte de Standard SeedQR e CompactSeedQR para frases BIP39 de 12 palavras e 24 palavras. Um pedido público para acrescentar um vetor de teste CompactSeedQR problemático foi aberto em 25 de julho de 2022 e depois encerrado por uma alteração do projeto; documenta testes públicos de interoperabilidade, não uma normalização BIP formal. [2] [6]

O CompactSeedQR concatena índices de palavra de 11 bits, remove 4 bits de checksum para 12 palavras e guarda 128 bits, ou 16 bytes, numa grelha de 21×21. Para 24 palavras remove 8 bits de checksum e guarda 256 bits, ou 32 bytes, numa grelha de 25×25. É menor, mas um leitor comum pode tratar mal dados binários ou bytes nulos; essa dificuldade não é proteção criptográfica. [1]

O BIP39 cria palavras dividindo a entropia e o respetivo checksum em índices de lista de 11 bits. Assim, o CompactSeedQR pode omitir os bits de checksum e recalculá-los a partir da entropia depois da leitura. Porém, o payload não contém um identificador inequívoco do idioma da lista; a recuperação deve usar a mesma lista e a especificação principal recomenda inglês. [4]

Uma implementação deve ser verificada com os vetores de teste publicados e o código real do encoder, incluindo um byte nulo no CompactSeedQR. Um ensaio prático de recuperação faz-se num dispositivo offline sem valor: depois de carregar, compara-se o fingerprint, descriptor ou primeiro endereço de receção com a carteira esperada. Nunca se testa um seed real num gerador web. [3]

Para ter uma visão mais completa, leia este verbete junto com Seed Phrase, BIP 39, BIP39 checksum, Private Key, Hardware Wallet, Air-gapped Wallet. Também há referências a este verbete em BBQr.

01O SeedQR é igual a um QR comum com um endereço bitcoin?

Não. Um QR de endereço costuma publicar o destino para receber um pagamento, enquanto o SeedQR codifica os dados necessários para restaurar uma carteira BIP39. Quem ler corretamente o SeedQR e conhecer uma eventual BIP39 passphrase pode derivar as chaves privadas. Deve, por isso, ser tratado como uma seed phrase, não como endereço público.

02O CompactSeedQR protege o seed porque um telefone comum não o consegue ler?

Não. O CompactSeedQR apenas guarda o mesmo segredo de forma mais eficiente como entropia binária. Alguns leitores comuns mostram-no incorretamente ou não o mostram, mas software especializado consegue descodificá-lo. É um obstáculo de compatibilidade, não encriptação; a segurança depende de proteção física, leitura offline controlada e, quando usada, uma BIP39 passphrase guardada separadamente.

DOC · 001SeedSigner — SeedQR Format SpecificationDocumentação DOC · 002SeedSigner — Supported QR FormatsDocumentação DOC · 003SeedSigner — SeedQR encoder implementationDocumentação DOC · 004Bitcoin BIPs — BIP 39: Mnemonic code for generating deterministic keysDocumentação DOC · 005SeedSigner — SeedQR private-key warning in seed viewsDocumentação DOC · 006SeedSigner issue 234 — Additional CompactSeedQR test vector, 25 July 2022Documentação DOC · 007SeedSigner — Independent Custody GuideDocumentação
Revisto em: Fontes em primeiro lugar · Não é recomendação de investimento