Ataques de repetição de criptografia

Um ataque clássico de repetição de rede ocorre quando uma transmissão de dados em uma rede é atrasada ou repetida de forma fraudulenta ou maliciosa. É uma forma de ataque “man in the middle” e pode ser usado para repetir uma mensagem ou transmissão de dados em um contexto diferente do pretendido.

Dentro das criptomoedas, um ataque de repetição tem um significado particular e é relativo a hard forks de diferentes protocolos de criptomoedas. Embora a proteção de reprodução seja e deva ser comum na indústria, historicamente nem sempre foi e futuros protocolos hard bifurcados podem optar por não implementá-la.

Compreender como os ataques de repetição funcionam em relação às criptomoedas requer que você primeiro tenha um entendimento básico de como as transações dentro de plataformas de criptomoedas comuns, como Bitcoin, funcionam..

Ataques de repetição de criptografia

Livros contábeis e garfos rígidos distribuídos+

Uma criptomoeda como o Bitcoin opera como um livro-razão global, distribuído e digital que existe em todos os nós participantes. Cada nó completo carrega uma cópia de todo o livro-razão contendo todas as transações no histórico do Bitcoin. O livro-razão em Bitcoin também é transparente, o que significa que todos os endereços de envio e recebimento de transações, bem como os valores transferidos, ficam visíveis no livro-razão público.

O livro razão Bitcoin existe como um livro razão universal dentro da rede, o que significa que todas as cópias são exatamente iguais. O software que executa o aplicativo de nó é o protocolo Bitcoin subjacente, que também existe como um protocolo universal para todos os nós da rede.

Ataques de repetição tornam-se relevantes quando um hard fork acontece dentro de um protocolo de criptomoeda. Essencialmente, o protocolo é bifurcado para uma nova versão atualizada que uma nova equipe de desenvolvedores vê como uma iteração melhor do protocolo inicial e do razão. Portanto, há uma divisão entre o protocolo e o livro-razão subsequente, criando 2 livros-razão governados por 2 protocolos separados.

O melhor exemplo disso é com Bitcoin e Bitcoin Cash. Em 1º de agosto de 2017, os desenvolvedores de Bitcoin Cash forjaram o protocolo Bitcoin. Todos os usuários que desejavam continuar na rede de Bitcoin legada optaram por não atualizar seu software para o protocolo Bitcoin Cash e todos os usuários que desejavam ingressar na rede Bitcoin Cash atualizaram seu software e se juntaram à rede Bitcoin Cash. Como resultado, permaneceu o livro-razão Bitcoin original e um novo livro-razão Bitcoin Cash.

Guia de Bitcoin Cash

Leia nosso Guia para Bitcoin Cash

Embora compartilhem exatamente o mesmo histórico do razão até a data da bifurcação, eles existem como duas cadeias separadas com diferentes livros de transação daquele ponto em diante. Então, você pode estar se perguntando, o que acontecerá com meu Bitcoin que estou segurando se houver um garfo rígido? Bem, se você possuía Bitcoin antes do hard fork, então recebeu uma quantia igual em Bitcoin Cash da mesma forma que possuía inicialmente Bitcoin, mantendo também seu BTC. Por exemplo, se Alice possuía 5 BTC antes da bifurcação, após a bifurcação ela manterá seus 5 BTC e receberá 5 BCH adicionais na cadeia de Bitcoin Cash. Acredite ou não, o dinheiro grátis existe (as pessoas disseram que os valores de mercado resultantes se equilibrariam como resultado da divisão, mas isso nunca aconteceu na realidade).

O que é um ataque de repetição?

Um ataque de repetição tira vantagem da bifurcação e da duplicação de tokens na corrente bifurcada. O problema para o usuário honesto surge quando ele quer gastar dinheiro em uma rede, mas não em outra. Por exemplo, Alice quer gastar 1 BTC online, mas não quer gastar 1 BCH ao mesmo tempo.

A oportunidade para um ataque de repetição ocorre quando Alice gasta 1 BTC da cadeia de legado. Como a assinatura digital anexada à transação BTC seria a mesma na cadeia BCH, outra pessoa pode duplicar a assinatura de Alice e incluí-la em uma transação do razão BCH. Basicamente, outra pessoa pode gastar seu dinheiro na outra rede. No entanto, a quantidade e o endereço exatos usados ​​na transação precisam ser os mesmos para que o ataque de repetição funcione, caso contrário, a assinatura digital não funcionaria.

Embora possa parecer uma forma bizarra de ataque, já que o endereço da transação e o valor transferido precisam ser os mesmos, isso pode levar a alguns problemas mais complexos associados aos pagamentos online. Portanto, uma proteção fácil contra ataques de repetição é não gastar sua criptomoeda que é vulnerável a um ataque de repetição em primeiro lugar. É uma solução inconveniente, mas funciona mesmo assim. Se a proteção contra reprodução não for fornecida com um garfo rígido de criptomoeda, a maioria dos serviços de carteira rígida irá recomendar que você simplesmente não gaste nenhuma de suas moedas até que a poeira assente e os problemas com o novo garfo, incluindo proteção contra reprodução, tenham sido resolvidos.

Bitcoin Forks

Leia nosso Guia para Bitcoin Forks

Exemplos e proteção de reprodução

A proteção de reprodução é bastante trivial de implementar e, neste ponto, deve ser comum e basicamente um requisito para qualquer corrente bifurcada. Bitcoin Cash criou proteção de replay para sua cadeia implementando um marcador único que permitiria aos nós Bitcoin Cash distinguir as transações gastas na cadeia de Bitcoin legada como independentes da cadeia Bitcoin Cash.

Ao identificar as transações na cadeia BCH com uma marca especial, os nós Bitcoin legados rejeitarão de forma semelhante as transações BCH como inválidas. A divisão Bitcoin / Bitcoin Cash representa um hard fork que implementou proteção contra replay com sucesso e intencionalmente antes da divisão.

Notavelmente, a proposta do garfo rígido SegWit2X Bitcoin, uma vez planejada e altamente controversa, não incluiu proteção contra replay. Em vez disso, eles exigiram que a equipe Bitcoin Core implementasse proteção contra reprodução caso achassem que era uma preocupação. Obviamente, isso não funcionou bem para a equipe SegWit2X, pois sua bifurcação planejada foi eventualmente cancelada e eles foram amplamente criticados por sua falta de vontade de implementar proteção contra reprodução.

Fora da estratégia empregada pelo Bitcoin Cash para implementar proteção de replay, existem algumas outras estratégias diretamente para os usuários para ajudar a mitigar ataques de replay se a criptomoeda que eles estão usando não fornecer proteção de replay.

Primeiro, você pode usar serviços de mistura de moedas para misturar suas transações com uma transação Coinbase que é válida apenas em uma cadeia e não pode ser repetida em uma cadeia bifurcada. No entanto, esta estratégia requer o uso de serviços de mistura de moedas de terceiros, que têm suas próprias preocupações girando em torno de seus serviços, portanto, use com cautela.

Em segundo lugar, certifique-se de usar dois conjuntos separados de chaves privadas para ambas as cadeias. Além disso, você pode enviar suas moedas para bolsas que implementaram seus próprios serviços de divisão e eles cuidarão disso para você. Isso aconteceu com o hard fork ETH / ETC, onde os usuários podiam usar tanto o Divisor Shapeshift quanto o Poloniex para dividir suas moedas e fornecer proteção contra reprodução.

Conclusão

Ataques de repetição são realmente relevantes apenas em sistemas de blockchain distribuídos quando há um hard fork que não fornece proteção de replay ou fica para trás na implementação após o fork. O conceito atingiu um ponto de ebulição mainstream pouco antes da bifurcação SegWit2X de Bitcoin proposta, pois eles anunciaram publicamente que não o implementariam.

Hoje em dia, implementar proteção contra reprodução para um hard fork deve ser um componente básico da nova cadeia para proteger os usuários, caso contrário, eles não se sentirão seguros usando a rede bifurcada. Se os garfos rígidos de alto perfil continuarão ou não com o fervor visto no final de 2017 ainda está para ser visto, mas se continuarem, você pode ter certeza de que a questão dos ataques de repetição se tornará altamente relevante mais uma vez.