489 / 691PBKDF2

PBKDF2

Derivação do seed em BIP39

PBKDF2 transforma texto de entrada e sal numa chave derivada através de cálculos repetidos. BIP39 usa-o para converter frase mnemónica e passphrase num seed; não gera nova aleatoriedade.

Password-Based Key Derivation Function 2 é uma função determinista parametrizada pela entrada, sal, número de iterações, função pseudoaleatória e comprimento da saída. BIP39 define um perfil concreto PBKDF2-HMAC-SHA512, não todas as aplicações possíveis de PBKDF2.

A entrada chamada password é a frase mnemónica em UTF-8 NFKD. O sal é mnemonic + passphrase, também em UTF-8 NFKD; sem passphrase acrescenta-se um valor vazio. BIP39 exige HMAC-SHA512, 2048 iterações e 64 bytes, ou 512 bits, de saída. [BIP39 — Mnemonic generation and seed conversion]

PBKDF2 cria o primeiro resultado intermédio a partir da entrada de palavra-passe, sal e índice do bloco de saída. Calcula os seguintes aplicando a mesma função pseudoaleatória ao resultado anterior e combina os valores por XOR. Com HMAC-SHA512, um bloco tem 64 bytes, pelo que BIP39 necessita de um bloco. Aplicar simplesmente SHA-512 ao texto 2048 vezes não basta. [RFC8018 — PBKDF2 construction] [BIP39 — Mnemonic generation and seed conversion]

As mesmas entradas normalizadas e parâmetros produzem o mesmo seed. Aumentar arbitrariamente as 2048 iterações ou mudar a função na recuperação não melhora a segurança da carteira existente: o resultado deixa de corresponder à derivação BIP39 prescrita. Traduzir palavras para outra lista também não é uma alteração neutra. [BIP39 — Mnemonic generation and seed conversion]

As iterações aumentam o trabalho por tentativa, mas não acrescentam aleatoriedade secreta independente. Com as palavras e dados de comparação da carteira, um atacante pode testar passphrases fracas offline. Uma saída de 512 bits não significa proteção equivalente a 512 bits de entropia, e 2048 não é uma recomendação universal para sistemas novos. [RFC8018 — PBKDF2 construction] [BIP39 — Mnemonic generation and seed conversion]

O checksum BIP39 ajuda a detetar erros nas palavras antes de as usar. A conversão PBKDF2 é separada da geração e validação da frase; não certifica que a passphrase corresponde à carteira procurada. BIP32 ou outros métodos deterministas podem depois usar o seed como etapa seguinte. [BIP39 — Mnemonic generation and seed conversion]

Os vetores públicos BIP39 indicam entropia, palavras e seed esperado com a passphrase de teste TREZOR. Uma implementação correta deve reproduzir toda a saída e respeitar NFKD. Estas entradas conhecidas nunca devem ser uma cópia pessoal para fundos; um teste coincidente também não verifica sozinho a segurança da aplicação inteira. [BIP39 — Mnemonic generation and seed conversion]

Para ter uma visão mais completa, leia este verbete junto com BIP 39, BIP39 passphrase, Seed Generation, HD Wallet. Também há referências a este verbete em BIP39 passphrase.

DOC · 001BIP39 — Mnemonic generation and seed conversionEspecificação ↗DOC · 002RFC8018 — PBKDF2 constructionEspecificação ↗
Fontes em primeiro lugar · Não é recomendação de investimento