O uso de um sistema de multi-assinaturas (multisig) para adicionar um fator a mais de segurança aos fundos da carteira vem ganhando muito espaço dentre usuário pouco experientes. Nesse sistema, o usuário – teoricamente – teria maior segurança no armazenamento dos seus fundos, visto que passaria a ter mais de um pilar de segurança para seus ativos.
Mas, muito pelo contrário, esse sistema pode trazer um ponto a mais de falha e insegurança, inclusive abrindo mão de toda a segurança obtida por uma Hardware Wallet.
Combinar carteiras de hardware de vários fornecedores é uma estratégia popular para minimizar o risco de um único ponto de falha, por exemplo, uma vulnerabilidade séria em uma das carteiras envolvidas. Infelizmente, uma carteira de hardware fraca pode comprometer toda a configuração.
Eu trabalho na carteira de hardware BitBox02. Na época em que avaliamos pela primeira vez como adicionar suporte multisig de maneira adequada, nos deparamos com inúmeras armadilhas e problemas de segurança relacionados a como as pessoas usam carteiras de hardware para proteger suas moedas em uma configuração multisig. Nessa postagem do blog resumimos uma de nossas postagens mais populares.
Esta postagem é uma análise aprofundada deste pequeno, mas há um ponto extremamente importante do artigo original:
“Your hardware wallet should verify, or let you verify, the following information provided by the untrusted computer: […]
* The xpubs of the cosigners in order to prevent an attacker from swapping them”
Sua carteira de hardware deve verificar, ou permitir que você verifique, as seguintes informações fornecidas pelo computador não confiável: […]* Os xpubs dos fiadores para evitar que um invasor os troque
O escopo desta postagem é limitado a configurações em que você usa várias carteiras de hardware e as administra usando um único computador (ou telefone celular).
Minha suposição padrão é que seu computador já está comprometido. A principal proposta de valor das carteiras de hardware é proteger contra isso. Se o seu computador fosse seguro para uso, haveria poucos motivos para usar carteiras de hardware em primeiro lugar.
O problema
Existem muitos tutoriais sobre como configurar multisig com carteiras de hardware. Devido à natureza complicada disso, todos eles ignoram a verificação xpub, não podem executá-la devido à falta de suporte de carteira de hardware ou simplesmente o fazem incorretamente. Qualquer um desses deixa a porta aberta para que um invasor faça o mal.
Uma rápida recapitulação: um xpub, abreviação de chave pública estendida, é usado para derivar todos os endereços em uma conta. No caso do multisig, um limite e um xpub por co-signatário são combinados para gerar endereços multisig.
Vamos primeiro discutir o que pode dar errado se os xpubs não forem verificados corretamente.
Depois disso, vou mostrar que, apesar de seus melhores esforços, você provavelmente não terá verificado os xpubs corretamente se usar apenas um computador.
Roubos
Os usuários de carteiras de hardware são bem treinados para confiar na tela do dispositivo. Se a tela do dispositivo mostrar algo, deve ser seguro usá-lo.
Isso não é verdade para endereços de recebimento multisig.
Um endereço multisig é derivado do multisig threshold e todos os xpubs de co-signatários. Uma carteira de hardware pode verificar silenciosamente seu próprio xpub. Os outros xpubs são fornecidos pela carteira do computador, por exemplo, Electrum.
Uma carteira de computador comprometida pode fornecer xpubs de fiador falsos para a carteira de hardware. Por exemplo, em um multisig 2 de 3, a carteira comprometida fornecerá dois xpubs controlados pelo invasor. Depois de verificar o endereço de recebimento comprometido, todos os fundos enviados a ele pertencem ao invasor.
Uma medida de segurança comum que as pessoas fazem é testar primeiro a configuração do multisig: receber uma pequena quantia, gastá-la e, se tudo funcionar, enviar os grandes fundos. Infelizmente, isso não pode impedir esse ataque de roubo. Um computador comprometido pode simular todo o procedimento de recebimento e gasto do valor do teste, incluindo a verificação em todas as carteiras de hardware. Mais detalhes sobre isso em uma postagem futura no blog.
Possíveis maneira de mitigar isso:
- Comparando que o mesmo endereço é mostrado em cada carteira de fiador. Isso geralmente não é viável, por exemplo, em uma configuração 2 de 3, o terceiro dispositivo pode estar em um local remoto.
- Verificação xpub adequada. Eu irei explicar porque isso é quase impossível em breve.
Ataque de resgate
Em um ataque de resgate, o atacante não rouba as moedas, mas controla seu acesso a elas. Ao bloquear suas moedas, o invasor pode negociar um pagamento para liberar os fundos de volta para você.
Um exemplo simples funciona exatamente como o ataque de roubo descrito acima, mas com um multisig 2 de 2 em vez de um multisig 2 de 3. Se um xpub pertence a você e outro xpub pertence ao invasor, é necessária a cooperação de ambas as partes para liberar todas as moedas enviadas para esta conta.
Um ataque mais sutil explora seus backups.

“Você sabia que em uma configuração multisig Bitcoin 2 de 3, você precisa de todos os três pubkeys para recuperar seus fundos, não apenas dois deles?”
Conclusão e recomendações
Fonte: https://shiftcrypto.ch/
Hardware Wallets
Case de Aço
Case de Silicone
Case de Silicone