146 / 736SLIP39

SLIP-39

Backup da carteira dividido em partes de recuperação

Como recuperar uma carteira com partes suficientes do backup e por que isso não é uma Seed Phrase recortada nem Multisig.

SLIP-39 é um padrão de backup de carteira que usa várias listas de palavras, chamadas partes de recuperação. Você define antecipadamente quantas partes diferentes serão necessárias. Num esquema de duas de três, por exemplo, pode perder uma e ainda recuperar a carteira. Uma parte sozinha não basta. Criado pela SatoshiLabs, o padrão utiliza Shamir’s Secret Sharing, um método matemático de compartilhamento de um segredo. Suas partes não são uma simples reescrita de uma Seed Phrase comum do BIP 39.

Anna escolhe um backup de duas de três. Uma carteira é um aplicativo ou dispositivo para receber e enviar bitcoins. A carteira cria três partes distintas, e quaisquer duas permitem a recuperação; esse mínimo é chamado de limiar. Duas fotos da mesma parte continuam contando como uma só. A organização simples usa um grupo. SLIP-39 também admite regras mais complexas: por exemplo, 2 de 3 grupos, com 2 de 3 partes exigidas em cada um. Duas partes do grupo A e duas do B bastam. Três de A e uma de B não, pois apenas A está completo. Por isso importa a distribuição, não apenas a quantidade de papéis. [1] [6]

Cada lista contém dados diferentes e as informações necessárias para combiná-los corretamente. SLIP-39 usa uma lista fixa de 1024 palavras em inglês; as palavras do backup não são traduzidas, mesmo que a interface esteja em português. Um segredo de 128 bits produz partes de 20 palavras; um de 256 bits, de 33. Bit é uma unidade básica de dados, não outra palavra para anotar. A parte também identifica seu conjunto, grupo e posição, os limiares necessários e as configurações de criptografia. A recuperação verifica a coerência desses dados e se as partes são distintas. Não se pode simplesmente misturar listas quaisquer de mesmo tamanho. [1]

Anna pode usar uma passphrase, uma senha adicional escolhida por ela. Reunir partes suficientes não a substitui, e uma combinação correta não reconhece por si só um erro de digitação: outra passphrase gera outro segredo mestre e, portanto, outra carteira. Compare o resultado com endereços conhecidos, em vez de confiar apenas na mensagem de backup válido. Sem passphrase, a entrada fica vazia. SLIP-39 permite os caracteres ASCII imprimíveis 32–126, caracteres latinos básicos sem acentos, incluindo o espaço. Essa é uma regra deste padrão, não de todas as carteiras. A passphrase não é o PIN que desbloqueia o dispositivo. [1]

Uma Seed Phrase do BIP 39 é produzida de outra forma e usa outra lista de palavras. Distribuir suas palavras entre papéis não as transforma em partes SLIP-39. Para conservar a mesma carteira, uma conversão precisaria preservar o seed, os dados secretos de entrada da árvore de chaves BIP 32, e a Derivation Path correta, o caminho até as chaves utilizadas. Não basta recodificar a entropia original, os dados aleatórios anteriores à criação das palavras. BIP 39 deriva das palavras e da passphrase um seed de 512 bits; seu backup direto com SLIP-39 produz partes de 59 palavras. Converter uma carteira também não transfere automaticamente as outras abertas com passphrases diferentes. É necessário verificar antes o procedimento específico suportado. [1] [3] [2]

Um backup compatível com o indicador extendable permite mudar a divisão e manter as mesmas carteiras. A Trezor descreve assim a passagem de uma única parte para várias. Mas trocar os papéis não mudou o segredo de Anna: uma combinação antiga suficiente continua funcionando. Partes antigas e novas não devem ser misturadas. Tecnicamente, o indicador de valor 1 exclui o identificador do conjunto da entrada auxiliar da criptografia chamada salt. O mesmo encrypted master secret (EMS), o segredo mestre criptografado, pode então ser dividido novamente com outro identificador sem conhecer a passphrase. Isso não corrige a exposição de um backup antigo utilizável. [1] [4]

Uma chave privada é um valor numérico secreto que a carteira usa para criar uma assinatura digital que autoriza um gasto. Depois de recuperada, a carteira de Anna pode assinar normalmente. Os detentores das partes não precisam aprovar cada pagamento: SLIP-39 recompõe um segredo, enquanto Multisig exige várias assinaturas conforme as condições de gasto. Um incêndio pode destruir três partes guardadas no mesmo apartamento. A distribuição deve dificultar tanto a perda conjunta quanto a obtenção de partes suficientes por um atacante; um esquema mais complexo também torna a recuperação mais exigente. O teste deve seguir um procedimento suportado num dispositivo confiável. A biblioteca de referência python-shamir-mnemonic serve aos desenvolvedores para conferir compatibilidade com exemplos públicos de teste, não para processar seu backup verdadeiro. Ela avisa explicitamente que não protege os segredos de maneira suficiente. [1] [4] [5] [6]

Numa carteira BIP 32, o segredo mestre é o seed de entrada, não a raiz privada estendida já calculada da árvore de chaves. Primeiro o seed é criptografado; só depois o EMS resultante é dividido. A criptografia usa quatro rodadas de uma construção Feistel, cada uma com PBKDF2-HMAC-SHA256 e 2500×2^e repetições. O expoente e armazenado determina o custo computacional. É um processamento de senha precisamente definido, não a adição de palavras aleatórias. A divisão opera byte a byte em GF(256), um ambiente matemático com 256 valores. O polinômio guarda o segredo em f(255); quando o limiar é pelo menos 2, f(254) contém um valor de verificação chamado digest. [1] [2]

As três últimas palavras de uma parte formam a soma de verificação RS1024. Ela garante detectar erros que afetem no máximo três palavras, mas não é a assinatura do criador nem prova de propriedade. O padrão desaconselha a correção automática: o programa poderia produzir palavras válidas, porém diferentes. Na combinação, outro digest de 32 bits ajuda a detectar um conjunto incorreto. Ele também tem uma consequência teórica: quem possui uma parte a menos que o limiar pode eliminar alguns segredos candidatos numa busca exaustiva. Por isso, a afirmação matemática de que não vaza nenhuma informação abaixo do limiar precisa de uma ressalva. Não significa que seja fácil quebrar a proteção; explica por que o segredo original deve ser suficientemente forte. [1]

Para ter uma visão mais completa, leia este verbete junto com Shamir Secret Sharing, BIP 39, Trezor, Multisig, HD Wallet, Seed Phrase. Também há referências a este verbete em BIP 39, Trezor, Pavol ‘Stick’ Rusnák, Shamir Secret Sharing.

DOC · 001SLIP-0039 — Shamir Secret-Sharing for Mnemonic CodesEspecificação DOC · 002BIP 32 — Hierarchical Deterministic WalletsEspecificação DOC · 003BIP 39 — Mnemonic code for generating deterministic keysEspecificação DOC · 004Trezor — Multi-share BackupDocumentação DOC · 005Trezor — python-shamir-mnemonic reference implementationFonte primária DOC · 006Bitcoin Developer Guide — WalletsDocumentação
Revisto em: Fontes em primeiro lugar · Não é recomendação de investimento