A Pamela Morgan aproveitou o ensejo do hack da Bitfinex para jogar luz sobre um recurso poderoso, porém mal compreendido do Bitcoin: a multiassinatura, e faz uma análise sob a ótica da segurança.

Multisig

“Como é que a multiassinatura falhou? Por que as pessoas perderam dinheiro? Pensei que multiassinatura era segura.” Depois do Hack da Bitfinex, ficou evidente que as pessoas não compreendem realmente o recurso de multiassinatura (multisig) do Bitcoin. Parece que há muita confusão sobre o que a multiassinatura é e o que não é, o que inerentemente faz ou não faz. Este artigo tem por objetivo esclarecer os equívocos mais comuns, explicar como a multiassinatura de fato funciona hoje, e por quê políticas de controle não substituem segurança organizacional, e o que você pode fazer para se proteger.

Multiassinatura é uma ferramenta. Assim como qualquer outra ferramenta, ela pode ser utilizada para atingir uma variedade de resultados diferentes. Essa ferramenta pode ser usada para distribuir e diluir o risco de comprometimento ou perda de chaves, para redundância como um backup, e para criar contas conjuntas em que cada parte pode gastar de um fundo compartilhado, ou para separar papéis dentro de uma organização.

Multiassinatura não é um plano de segurança. Ela pode ser um componente poderoso de um plano de segurança bem projetado, mas sempre será um mero componente. Dizer apenas “multiassinatura” sem explorar a implementação, como está sendo empregada, e quais objetivos se procura atingir, não tem sentido. Não é um feitiço de segurança, embora tudo ficaria tão mais fácil se o fosse.

Pra que possamos compreender o que ela faz e o que não faz, precisamos entender um pouco sobre como ela funciona. Não se preocupe se você não for da área de tecnologia, este texto não foi escrito pra eles— foi escrito para todos os demais. ¹

Criando um endereço multiassinatura. Para criar um endereço multiassinatura, você simplesmente precisa de mais de uma chave pública. Vamos a um exemplo. Alice, Bob e Charlie são os organizadores de um encontro local aberto sobre bitcoin. Eles querem angariar fundos para bancar o encontro mas não querem que nenhum deles, isoladamente, controle os fundos. Então eles criam um endereço multiassinatura, usando o software CoPay, que lhes permite escolher uma configuração 2-de-3, o que significa que dois dos três precisam autorizar uma transação para que ela seja válida. Neste caso, as combinações de assinatura possíveis podem ser A&B, B&C, A&C.

O que realmente está acontecendo por trás dos panos? O software deles está construindo duas coisas: um script que contém as instruções de quantas assinaturas são exigidas e quais chaves públicas correspondem às chaves privadas que estão autorizadas a assinar (m-de-n), e um hash que é o endereço bitcoin começando com o número 3, derivado a partir do script. O script é comumente chamado de “script de resgate” pois contém os requisitos para resgatar ou gastar pagamentos a partir do endereço multiassinatura. ²

Você pode pensar no script de resgate como um conjunto de controles de acesso permanentes e imutáveis. Esses controles de acesso limitado estão embutidos no próprio endereço bitcoin. O que significa que quando são enviados fundos para este endereço, o script de resgate deve ser satisfeito pra que haja movimentação de fundos. As regras são estabelecidas quando o endereço é criado e nunca podem ser modificadas. As regras são, literalmente, parte do próprio endereço. Este é um dos aspectos mais poderosos da multiassinatura, e é por isso que muitos a consideram mais segura que um endereço bitcoin tradicional de assinatura única. Quando a multiassinatura é usada como parte de um plano geral de segurança, ela pode fornecer proteção adicional contra desvios, erros, perdas, fraude, ponto único de falha, por requerir que múltiplas partes ou múltiplos dispositivos (multiassinatura multi-fator) aprovem uma transação.

Mas perceba o que ela não faz.

Não há limites de gasto; você pode sacar todos os fundos com uma única transação propriamente assinada.

Não há limites temporais; você pode sacar fundos imediatamente com uma transação propriamente assinada.

Não há limites de transação diários; você pode criar milhares de transações por minuto.

Não há notificações; você não vai receber um e-mail ou mensagem de texto quando os fundos forem gastos.

Políticas de controle não são parte inerente da multiassinatura hoje. A essa altura você pode estar confuso pois muitas carteiras fornecem esse tipo de serviços adicionais. Eles são anunciados como medidas de segurança adicionais, como controles adicionais. O que não deixam muito claro é que esses serviços são implementados pelo software da empresa e políticas internas—não pelo protocolo bitcoin. Isso é importante porque significa que esses controles podem ser contornados, os limites podem ser modificados. Enquanto a linguagem de scripting do Bitcoin continua a evoluir, e algumas políticas de controles baseadas no protocolo, como lock-time, estão disponíveis, elas ainda não foram amplamente implementadas.

Pra levar pra casa: as políticas de controle atuais não são tão seguras quanto parecem. De fato, elas são apenas tão seguras quanto o sistema controlando as mudanças na política. Infelizmente, isso é menos seguro do que a maioria das pessoas pensa.

Às vezes portadores de chaves automatizam a assinatura, com base em políticas de controle. Muitas carteiras multiassinatura (mas não todas) agora incluem assinatura automática de transações com base em políticas de controle como um recurso de suas carteiras. Nessas implementações, a empresa da carteira controla uma das chaves usadas para criar um endereço multiassinatura. Essa chave, e suas funções de assinatura associadas, são controladas pelo software escrito pela empresa—o software é comumente chamado de oráculo de assinatura, ou simplesmente oráculo. No momento em que o endereço é criado, além das chaves públicas, a empresa da carteira coleta as políticas de controle definidas pelo usuário. Por exemplo, um usuário pode estabelecer um limite diário máximo de $1.000,00 USD para saques. O endereço é criado e os parâmetros de assinatura para o oráculo são definidos.

O processo de assinatura normalmente se dá da seguinte maneira—o usuário cria uma transação (por exemplo, pra $500,00 USD), a assina, e a envia para o provedor da carteira para contra-assinatura. O oráculo vê a transação, checa as políticas de controle (aqui os $500 são menos que $1.000), contra-assina e divulga a transação para a rede bitcoin. Rápido, conveniente, eficiente. Seguro? Talvez. Talvez não. Talvez aparente ser mais seguro do que realmente é.

Segurança depende de vários fatores— não apenas de quantas chaves são requeridas para assinar uma transação. Depende de processos e políticas que definem as políticas de controle: Quem pode mudar os limites de gasto? Limites temporais? Notificações? Quando eles podem ser modificados? Há um período de esfriamento depois que eles são modificados em que nenhuma transação será assinada? Também depende da segurança interna da empres: Quem tem acesso ao oráculo ou as chaves de assinatura? Onde estão os backups e quem tem acesso a eles? Quem escreve o software do oráculo, e ele é de código aberto? Estes são apenas alguns exemplos de preocupações de segurança que não são tratados pela multiassinatura. Esta significa que mais de uma chave foi usada para criar o endereço. Nada mais. Não é um eufemismo pra segurança. Sozinha, não é suficiente para manter nossos fundos em segurança.

Segurança não pode ser terceirizada. Como indústria, precisamos parar de confundir  a terceirização de chaves de assinatura com a terceirização da segurança.

O simples fato de delegar a um terceiro as chaves de assinatura e controles do processo não vai proteger você ou seus clientes de roubo. Nós precisamos de padrões de segurança “opt-in“, como CCSS, e auditorias de segurança anuais. E o mais importante, precisamos focar em compreender os riscos e explicá-los aos usuários.

Por último, lembre-se sempre: “Não são suas chaves, não é seu dinheiro.”

Notas de rodapé: 1. Se você está lendo este artigo, eu presumo que você compreenda o básico sobre bitcoin. Bitcoin baseia sua segurança em criptografia de chaves públicas, veja https://en.wikipedia.org/wiki/Public-key_cryptography. 2. Tecnicamente, esse recurso é chamado P2SH ou pay-to-script-hash (pague para o hash do script), e não multiassinatura. Contudo, uma das implementações mais comuns do P2SH é conseguir multiassinatura e o termo multiassinatura (multisig) se tornou amplamente usado para fazer referência a essa implementação específica do P2SH.

Educadora. Empreendedora. Advogada. Inspirada por empoderar outros. Acredita em justiça social, liberdade, e sorrir para estranhos.

Texto original em inglês: https://medium.com/@pamelawjd/bitcoin-security-is-more-than-multisig-1b55768582f3#.x2giewscy