Análise da vulnerabilidade de ataque de distorção temporal do Bitcoin: fraquezas do protocolo e potenciais soluções de reparação

Análise da vulnerabilidade do ataque de distorção temporal do Bitcoin

No dia 26 de março de 2025, um desenvolvedor de Bitcoin apresentou uma nova proposta de melhoria, destinada a corrigir várias falhas e vulnerabilidades que existem há muito tempo no protocolo do Bitcoin. Esta proposta de soft fork, chamada de "Grande Limpeza de Consenso", não só resolve o problema de transações duplicadas que foi discutido anteriormente, mas também propõe uma solução para uma vulnerabilidade mais grave — o "Ataque de Distorção Temporal".

Bitcoin segurança vulnerabilidade: ataque de distorção temporal

Mecanismo de proteção de timestamp de bloco Bitcoin

Antes de discutir o ataque de distorção temporal, precisamos entender as regras de proteção contra manipulação do tempo na atual rede Bitcoin:

  1. Regra do tempo mediano passado (MPT): o carimbo de tempo do bloco deve ser posterior ao tempo mediano dos onze blocos anteriores.

  2. Regras de tempo de bloco no futuro: o carimbo de tempo do bloco não pode estar adiantado mais de 2 horas em relação ao tempo médio dos pares de nós. Além disso, a diferença máxima permitida entre o tempo do nó e o relógio do sistema local é de 90 minutos.

As regras MPT evitam que os timestamps dos blocos sejam demasiado retroativos, enquanto as regras dos blocos futuros limitam os timestamps a serem excessivamente antecipados. É importante notar que não é possível estabelecer um mecanismo semelhante às regras dos blocos futuros para impedir timestamps passados, pois isso poderia afetar o processo de sincronização inicial da blockchain. O ataque de distorção temporal aproveita precisamente a possibilidade de falsificar timestamps antigos.

Bitcoin segurança vulnerabilidade: ataque de distorção temporal

Erro no algoritmo de ajuste de dificuldade

O período de ajuste de dificuldade do Bitcoin inclui 2016 blocos, calculado com base em um tempo de bloqueio alvo de 10 minutos, o que equivale a aproximadamente duas semanas. Ao calcular o ajuste de dificuldade de mineração, o protocolo calcula a diferença de timestamp entre o primeiro e o último bloco na janela de 2016 blocos relacionada. Esta janela, na verdade, contém 2015 intervalos de blocos (2016 menos 1). Portanto, o tempo alvo que deve ser usado em condições ideais é 60 segundos × 10 minutos × 2015 intervalos = 1,209,000 segundos.

No entanto, o protocolo Bitcoin usa o número 2016 para cálculos: 60 segundos × 10 minutos × 2016 = 1,209,600 segundos. Este é um clássico erro de "um a menos", provavelmente causado pela confusão entre o número de blocos e o intervalo de blocos.

Este erro faz com que o tempo alvo seja 0,05% mais longo do que o realmente necessário. Em outras palavras, o intervalo real de criação de blocos do Bitcoin não é de 10 minutos, mas sim de 10 minutos e 0,3 segundos. Embora este erro pareça insignificante, ele cria a possibilidade de ataques de distorção do tempo.

Princípios do ataque de distorção do tempo

O ataque de distorção temporal foi descoberto pela primeira vez em 2011, aproveitando este erro no cálculo de dificuldade. Em um cenário ideal, supondo que a mineração seja totalmente centralizada, os mineradores podem definir timestamps arbitrariamente dentro dos limites permitidos pelo protocolo. O atacante adotará a seguinte estratégia:

  1. Para a maioria dos blocos, definir o carimbo de data/hora para avançar apenas um segundo em relação ao bloco anterior, enquanto cumpre as regras do MPT.

  2. Para avançar o tempo o mais lentamente possível, os mineradores podem manter o mesmo carimbo de data/hora em seis blocos consecutivos e, em seguida, adicionar um segundo no sétimo bloco, repetindo esse ciclo.

  3. No último bloco de cada período de ajuste de dificuldade, defina o carimbo de data/hora para o tempo do mundo real.

  4. O carimbo de data/hora do primeiro bloco da próxima janela de ajuste de dificuldade foi definido para o passado, um segundo antes do penúltimo bloco do ciclo anterior.

Este modo de ataque fará com que o tempo da blockchain fique progressivamente atrasado em relação ao tempo real, enquanto a dificuldade continua a aumentar. No entanto, como o último bloco de cada ciclo de ajuste de dificuldade utiliza um timestamp real, o cálculo da dificuldade será significativamente afetado. Ao final do segundo ciclo de ajuste após o início do ataque, a dificuldade será reduzida drasticamente. Isso permite que os atacantes criem blocos a uma velocidade extremamente rápida, potencialmente cunhando uma grande quantidade de Bitcoin e lucrando com isso.

Bitcoin segurança vulnerabilidades: ataques de distorção temporal

Viabilidade e Desafios do Ataque

Embora teoricamente este tipo de ataque seja devastador, a sua implementação enfrenta muitos desafios:

  1. Pode ser necessário controlar a maior parte da potência de cálculo da rede.
  2. A existência de mineradores honestos aumentará a dificuldade de ataque.
  3. As regras MTP e os carimbos de hora honestos podem limitar o grau de retrocesso dos carimbos de hora maliciosos.
  4. Se um minerador honesto gerar o primeiro bloco de qualquer janela de ajuste de dificuldade, o ataque desse ciclo falhará.
  5. O processo de ataque é visível para todos, podendo desencadear uma correção de soft fork de emergência.

Bitcoin segurança vulnerabilidade: ataque de distorção temporal

Soluções Potenciais

A correção dessa vulnerabilidade é relativamente simples, mas pode exigir alterações no protocolo de soft fork. Algumas soluções possíveis incluem:

  1. Modificar o algoritmo de ajuste de dificuldade, calculando a duração entre diferentes janelas de blocos de 2016, ao mesmo tempo corrigindo o erro "um a menos".
  2. Cancelar a regra MTP, passando a exigir que o tempo de cada bloco avance.
  3. Definir novas regras de limite, exigindo que o tempo do primeiro bloco do novo ciclo de dificuldade não seja anterior a um intervalo de tempo específico do último bloco do ciclo anterior (como 10 minutos ou 2 horas).

Na mais recente proposta de melhoria, os desenvolvedores tendem a adotar um limite de tempo de 2 horas. Este limite é cerca de 0.6% do tempo alvo do ciclo de ajuste de dificuldade, podendo efetivamente reduzir a possibilidade de manipulação da dificuldade.

Independentemente da solução final adotada, corrigir esta vulnerabilidade irá fortalecer ainda mais a segurança e a estabilidade da rede Bitcoin, lançando uma base mais sólida para o seu desenvolvimento a longo prazo.

Bitcoin segurança vulnerabilidade: ataque de distorção temporal

BTC0.25%
Ver original
Esta página pode conter conteúdo de terceiros, que é fornecido apenas para fins informativos (não para representações/garantias) e não deve ser considerada como um endosso de suas opiniões pela Gate nem como aconselhamento financeiro ou profissional. Consulte a Isenção de responsabilidade para obter detalhes.
  • Recompensa
  • 8
  • Compartilhar
Comentário
0/400
GasFeeNightmarevip
· 13h atrás
Tudo em também tem que esperar a correção das falhas.
Ver originalResponder0
SignatureCollectorvip
· 07-20 01:25
Ah, então a correção de bugs ainda vai demorar dois anos?
Ver originalResponder0
rekt_but_vibingvip
· 07-18 22:42
estilo de trabalho de entrar numa posição e depois comprar o bilhete
Ver originalResponder0
DegenApeSurfervip
· 07-18 22:39
Este buraco ridículo foi arrastado até 25 anos.
Ver originalResponder0
SlowLearnerWangvip
· 07-18 22:39
Então o Bitcoin também pode viajar no tempo e no espaço!
Ver originalResponder0
AirdropSweaterFanvip
· 07-18 22:32
É sempre a mesma conversa. Quando é que vai estar pronto?
Ver originalResponder0
SnapshotStrikervip
· 07-18 22:29
Já descobriram um novo bug? Vai ser divertido quando explode.
Ver originalResponder0
RugResistantvip
· 07-18 22:18
finalmente alguém descobriu esta falha crítica. estive a analisar isto durante meses... os devs estão a dormir em cima disto, para ser honesto
Ver originalResponder0
  • Marcar
Faça trade de criptomoedas em qualquer lugar e a qualquer hora
qrCode
Escaneie o código para baixar o app da Gate
Comunidade
Português (Brasil)
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)