- Voltar ao menu
- Voltar ao menuPreços
- Voltar ao menuPesquisar
- Voltar ao menuConsenso
- Voltar ao menu
- Voltar ao menu
- Voltar ao menu
- Voltar ao menuWebinars e Eventos
O que significa o 'Bug do Bitcoin ': Um guia para a maleabilidade das transações
O que significa maleabilidade de transação, afinal, e o Bitcoin está quebrado ou não? Descubra aqui.
Esta semana, surgiu um termo que muitos bitcoiners T ouviram antes: maleabilidade de transação. Mt Gox citou issocomo uma razão fundamental para a suspensão de retiradas, e também foi mencionada como a base para uma exploração usada em umataque massivo contra a rede Bitcoinesta semana. Então, o que é, como funciona e devemos nos preocupar? Aqui está o que sabemos.
O que é maleabilidade de transação?
É um ataque que permite que alguém altere o ID exclusivo de uma transação de Bitcoin antes que ela seja confirmada na rede Bitcoin . A alteração torna possível que alguém finja que uma transação T aconteceu, se todas as condições corretas estiverem presentes.
É o mesmo que gastar o dobro?
Não. O gasto duplo envolve gastar moedas uma vez e, em seguida, criar uma transação diferente com essas mesmas moedas antes que a primeira transação seja confirmada. O truque é, então, obter a transação fraudulenta confirmada na rede Bitcoin primeiro, para que a primeira transação T aconteça. Isso significa efetivamente que você pode gastá-las duas vezes.
Como funciona a maleabilidade das transações?
Para entender isso, você precisa saber como funciona uma transação de Bitcoin .
Quando você envia bitcoins para alguém, você T os retira de uma conta e os envia zunindo pelos fios. Bitcoins nunca são enviados dessa forma. Em vez disso, uma transação é criada na cadeia de blocos do Bitcoin .
A cadeia de blocos atua como um livro-razão gigante para toda a rede Bitcoin . Ela mantém registros de quais endereços Bitcoin enviaram fundos para outros endereços Bitcoin e quando. Isso lhe dá um registro completo de quantos bitcoins podem ser atribuídos a quais endereços na rede a ONE momento.
Quando uma transação de Bitcoin é feita, ela inclui informações como os endereços de onde os bitcoins vieram (as entradas), para onde eles estão indo (as saídas), os valores transferidos e quais endereços enviaram esses fundos para o endereço do remetente.
[post-citação]
Cada transação deve ser identificada exclusivamente, para que possa ser referenciada na cadeia de blocos. Esse ID de transação (TX ID) é produzido pegando as informações na transação e executando-as por meio de uma função hash.
Hashing é um procedimento matemático que pega diferentes pedaços de dados e os combina para produzir um pedaço menor de informação, conhecido como hash. Uma das coisas que está incluída em um hash de transação é a assinatura digital do usuário, que prova que a transação veio dele. É uma maneira de eles 'assinarem' digitalmente a transação.
Uma das principais qualidades de uma função de hash é que é impossível dizer qual era a informação original simplesmente olhando para o hash. Também é impossível prever qual será o hash, com base nas partes de informação com as quais você começa. Se qualquer pequeno detalhe mudar em qualquer uma dessas partes de dados, isso mudará o hash de uma forma completamente imprevisível.
Isso torna os IDs de transação praticamente impossíveis de falsificar. Cada transação deve ter apenas um hash possível. Você pode provar que uma transação é válida simplesmente executando todas as informações que compuseram essa transação por meio da função de hash, para verificar se você obtém o mesmo hash.
Pelo menos, essa é a ideia. Mas é aqui que entra a maleabilidade. As assinaturas digitais do usuário usadas como parte do hash para "assinar" a transação devem estar em um determinado formato. Esse formato T sempre era verificado corretamente. Isso significava que um mal formatado poderia ser introduzido e ainda aceito. Alterar a assinatura dessa forma torna possível criar hashes diferentes para a mesma transação.
Isso não é bom. Mas, como se vê, também não é terrivelmente ruim. Eis o porquê.
Como isso pode causar problemas?
Um problema aqui gira em torno das exchanges, que os usuários de Bitcoin geralmente usam para comprar e vender bitcoins. Eles enviam sua moeda fiduciária ou seus bitcoins para uma exchange, onde ela fica em uma conta, para que possa ser convertida. Em algum momento, eles podem querer sacar bitcoins da conta.
Há vários cenários potenciais. Aqui estão alguns:
Ataques individuais maliciosos
Digamos que ALICE administre uma exchange, e Eve tenha bitcoins parados nessa exchange. Eve decide sacar suas moedas, e pede para ALICE enviar os bitcoins para seu endereço. Quando ALICE os envia, isso cria automaticamente uma transação, que é transmitida para mineração para que possa ser incluída na cadeia de blocos do Bitcoin .
Mas Eve finge que ALICE nunca os enviou. Ela usa a falha de maleabilidade da transação para reproduzir a transação original de Alice, ajustando a assinatura ligeiramente para produzir um hash diferente. Ela então retransmite essa transação, com o ID diferente.
Há uma chance de que a transação de Eve seja confirmada primeiro na cadeia de blocos. Se isso acontecer, a rede assumirá que a transação é válida e T registrará a de Alice. Eve pode então reclamar com ALICE que T recebeu as moedas. Quando ALICE verificar seu ID de transação na cadeia de blocos, ela T o encontrará e poderá tentar enviar mais bitcoins, o que significa que ela ficará sem dinheiro.
Acidentes bem-intencionados
Se você estiver usando um software personalizado para lidar com seus bitcoins, ele pode gerar hashes malformados por engano. Esses hashes podem então ser "consertados" por outra carteira com melhor comportamento, que os formata corretamente. Mas isso pode alterar o TX ID. Se sua carteira não for projetada para perceber transações com as mesmas características, mas um ID diferente , ela pode acabar com transações "presas" que ficam no limbo. Pior ainda, ela pode pensar que ainda tem essas moedas para gastar.
De qualquer forma, é um pesadelo de contabilidade, se o seu software T consegue lidar com isso. O desenvolvedor do CORE do Bitcoin , Gregory Maxwell, reflete sobre essa possibilidade aqui.
Ataques de negação de serviço em massa
Alguém também poderia causar problemas maiores para a rede Bitcoin ao lançar deliberadamente ataques de maleabilidade de transações em várias exchanges ao mesmo tempo, talvez usando software deliberadamente projetado para criar transações mutantes. Esse ataque concertado é o que parece ter acontecido esta semana, com várias exchanges sendo atingidas.
Os sistemas de contabilidade de back-end dessas bolsas podem ser capazes de lidar com números moderados de transações mutantes, mas se forem bombardeados repetidamente com elas, isso poderá causar problemas logísticos por um tempo.
Poderia causar problemas de curto prazo para o mercado também. Qualquer incerteza ou dúvida sobre a estabilidade do mercado naturalmente terá um efeito sobre os preços de mercado, especialmente com uma classe de ativos tão ilíquida e volátil.
Isso significa que há um bug no Bitcoin?
Houve vários problemas com tecnologias que a rede Bitcoin usa, que criam problemas de maleabilidade. Um deles estava originalmente no cliente de referência - este é o software produzido por uma equipe CORE de desenvolvedores que a maioria das pessoas utiliza ao construir seus próprios serviços. Esse problema era uma falha em verificar novamente os dados de assinatura antes de passá-los para outro pedaço de software no qual o cliente de referência Bitcoin confiava.
De acordo com um anúncio da Bitcoin Foundation desta semana, este último ataque de maleabilidade está retransmitindo versões mutadas de transações, o que está "expondo bugs tanto na implementação de referência quanto no software de algumas exchanges", o que significa que há falhas de software em diferentes lugares no ecossistema do Bitcoin que devem ser corrigidas.
Os desenvolvedores CORE também contaram à CoinDesk sobre dois 'casos extremos' no cliente de referência (essas são falhas que muito raramente seriam invocadas). Ambos focam na parte de carteira do software.
Acontece que há vários outros problemas de maleabilidade, incluindo alguns listados neste mês <a href="https://gist.github.com/sipa/8907691">https://gist.github.com/sipa/8907691</a> por um dos CORE desenvolvedores do Bitcoin em uma Proposta de Melhoria do Bitcoin (BIP) - um documento que solicita algumas mudanças no Bitcoin.
Os CORE desenvolvedores estão sendo silenciados sobre quais são exatamente os problemas mais problemáticos, porque T querem dar mais informações a possíveis invasores.
Como isso está sendo corrigido?
A comunidade sabia sobre o problema mais discutido, que permitia que assinaturas malformadas fossem enviadas, já em 2011 (veresta discussão). O problema aqui era que uma parte essencial do software usada pelo cliente Bitcoin T lidava corretamente com assinaturas malformadas. Isso T era culpa dos desenvolvedores do CORE Bitcoin , mas o que eles falharam em fazer foi fazer o cliente Bitcoin verificar duas vezes se a assinatura estava devidamente formada antes de entregá-la. Isso foi remediado na versão 0.8 do cliente de referência.
No entanto, nem todas as exchanges usam o cliente de referência para lidar com suas transações de Bitcoin . Elas podem usar versões personalizadas, que fazem as coisas de forma ligeiramente diferente. Então, os desenvolvedores de Bitcoin , e os desenvolvedores de carteira e exchange estão todos mexendo em seus códigos para garantir que as coisas funcionem sem problemas. Para exchanges, isso envolverá garantir que as exchanges lidem com transações mutantes graciosamente, fazendo as coisas certas quando virem uma.
As outras correções são mais sobre processos. Coisas que tornam a maleabilidade um problema maior são a dependência de transações não confirmadas, nas quais bens e serviços são transferidos ou fornecidos antes de uma transação ser confirmada na cadeia de blocos. Então, exigir confirmação de transação é sempre uma boa ideia.
Da mesma forma, ter alguma verificação manual de retiradas de Bitcoin de exchanges pode ajudar a KEEP as coisas em ordem no back-end.
Então o mundo Bitcoin está acabando? Estamos diante de um criptocalipse?
É uma irritação, mas pouco mais. Há bugs na maioria dos produtos de software, mas nem todos os bugs são criados iguais. Alguns são erros críticos e de parar o show, e alguns T são. Esses T são, e o Bitcoin não está quebrado. Os fundamentos CORE do Bitcoin - a maneira descentralizada em que muitos computadores trabalham juntos para tomar decisões sobre transações - ainda funcionam.
No nosso exemplo de troca acima, você esperaria que ALICE tivesse registros contábeis detalhados o suficiente para que ela ainda pudesse conciliar os bitcoins que ela havia enviado. Se ela enviou a Eve, digamos, 1 Bitcoin às 12:10pm GMT em 5 de fevereiro, essa é uma transação bem única. Ela poderia simplesmente dizer "nossos registros mostram que essa transação saiu, neste momento, com esses parâmetros. O ID da transação deve ter mudado, então não estou reenviando esses bitcoins."
Uma bolsa também poderia implementar ferramentas para rastrear automaticamente entradas em transações, o que ajudaria a detectar mutações.
No mínimo, a maleabilidade da transação ajudará a provar a resiliência da rede descentralizada contra Eventos discretos da rede. A descentralização é uma das coisas que a torna o " BADGER de mel do dinheiro", afinal.
Moeda maleávelimagem via Shutterstock
Danny Bradbury
Danny Bradbury é escritor profissional desde 1989 e trabalha como freelancer desde 1994. Ele cobre Tecnologia para publicações como o Guardian.
