Recentemente, a comunidade de desenvolvimento do Bitcoin propôs uma nova proposta de soft fork, destinada a corrigir várias vulnerabilidades e fraquezas de longa data no protocolo do Bitcoin. Uma das vulnerabilidades mais sérias é conhecida como "ataque de distorção temporal", que é exatamente o tema que este artigo pretende explorar em profundidade.
Mecanismo de proteção de timestamp de bloco do Bitcoin
Antes de discutir o ataque de distorção temporal, precisamos entender os mecanismos de proteção contra manipulação temporal no atual protocolo Bitcoin:
O tempo mediano passado (MPT) regra: O carimbo de data/hora do novo bloco deve ser posterior ao tempo mediano dos 11 blocos anteriores.
Regras futuras do tempo de bloco: O carimbo de tempo do bloco não pode estar mais de 2 horas à frente do tempo mediano dos nós da rede. 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 carimbos de tempo dos blocos sejam demasiado retroativos, enquanto as regras dos blocos futuros limitam os carimbos de tempo a não serem excessivamente antecipados. É importante notar que não é possível implementar um mecanismo semelhante às regras dos blocos futuros para impedir completamente os carimbos de tempo passados, pois isso pode afetar o processo de sincronização da blockchain inicial.
O erro "um a menos" de Satoshi Nakamoto
O período de ajuste de dificuldade do Bitcoin inclui 2016 blocos, calculando um tempo de bloco de 10 minutos, o que equivale a aproximadamente duas semanas. Ao calcular o ajuste de dificuldade da mineração, o protocolo calcula a diferença de timestamp entre o primeiro e o último bloco na janela de 2016 blocos relacionada.
No entanto, Satoshi Nakamoto cometeu um pequeno erro, mas notável, no código original. Ele usou 2016 em vez de 2015 para calcular o tempo alvo, resultando em um tempo alvo 0,05% mais longo do que deveria ser. Isso significa que o intervalo de blocos alvo real do Bitcoin é de 10 minutos e 0,3 segundos, em vez de 10 minutos exatos.
Embora esse erro de 0,3 segundos pareça insignificante, ele está associado a um problema mais sério. O cálculo da dificuldade é baseado no primeiro e no último bloco dentro de cada janela de 2016 blocos, e não na diferença entre o último bloco da janela anterior e o último bloco da janela atual. Essa forma de cálculo cria a possibilidade de ataques de distorção temporal.
Princípio do ataque de distorção temporal
O ataque de distorção do tempo aproveita o erro de Satoshi Nakamoto no cálculo da dificuldade. Neste tipo de ataque, mineradores maliciosos manipulam o timestamp do bloco para influenciar o ajuste de dificuldade. Os passos do ataque são os seguintes:
Para a maioria dos blocos, os mineiros definem o carimbo de data/hora para apenas 1 segundo antes do bloco anterior.
Para minimizar ao máximo a passagem do tempo, os mineradores podem manter o mesmo carimbo de data/hora em 6 blocos consecutivos e, em seguida, aumentar o tempo em 1 segundo no próximo bloco.
No último bloco de cada período de ajuste de dificuldade, os mineradores definem o carimbo de data/hora para o tempo do mundo real.
O timestamp do primeiro bloco da próxima janela de ajuste de dificuldade é definido para o passado, apenas 1 segundo antes do penúltimo bloco da janela anterior.
Este modo de ataque faz com que o tempo da blockchain fique cada vez mais atrasado em relação ao tempo real, enquanto a dificuldade continua a aumentar. No entanto, a partir do segundo ciclo de ajuste, a dificuldade começará a ajustar-se para baixo. Isso permite que os mineradores gerem uma grande quantidade de blocos em um curto espaço de tempo, potencialmente criando Bitcoin além da velocidade de emissão normal.
Viabilidade e Desafios do Ataque
Embora essa ataque tenha um potencial destrutivo em teoria, a sua implementação real enfrenta alguns desafios:
É necessário controlar a maior parte do poder de cálculo da rede.
A presença de mineiros honestos aumentará a dificuldade de ataque.
Se um minerador honesto gerar o primeiro bloco da janela de ajuste de dificuldade, o ataque desse ciclo falhará.
O processo de ataque é visível publicamente e pode desencadear uma correção de soft fork de emergência.
Solução
Há várias maneiras de corrigir esta vulnerabilidade:
Mudar o algoritmo de ajuste de dificuldade, calculando a diferença de tempo entre diferentes janelas de 2016 blocos.
Cancelar a regra MPT, exigindo que o carimbo de data/hora de cada bloco aumente estritamente.
Definir novas regras de limite: O tempo do primeiro bloco do novo ciclo de dificuldade não pode ser anterior a um número específico de minutos do último bloco do ciclo anterior (, como 2 horas ).
Atualmente, os desenvolvedores tendem a adotar a terceira solução, estabelecendo o limite de tempo em 2 horas. Esta solução não apenas pode mitigar efetivamente o ataque de distorção temporal, mas também minimiza ao máximo o risco de gerar blocos inválidos por acidente.
Conclusão
O ataque de distorção temporal revela uma potencial vulnerabilidade de segurança no protocolo Bitcoin. Embora a implementação deste ataque enfrente muitos desafios na realidade, ele nos lembra da necessidade de revisar e melhorar continuamente a infraestrutura da tecnologia blockchain. Através da proposta de uma solução de soft fork, a comunidade Bitcoin está ativamente enfrentando esta ameaça potencial, aumentando ainda mais a segurança e a estabilidade da rede.
Esta página pode conter conteúdos de terceiros, que são fornecidos apenas para fins informativos (sem representações/garantias) e não devem ser considerados como uma aprovação dos seus pontos de vista pela Gate, nem como aconselhamento financeiro ou profissional. Consulte a Declaração de exoneração de responsabilidade para obter mais informações.
Discussão sobre a análise e a solução para a vulnerabilidade de distorção temporal do protocolo Bitcoin
Bitcoin protocolo中的时间漏洞:深入解析时间扭曲攻击
Resumo
Recentemente, a comunidade de desenvolvimento do Bitcoin propôs uma nova proposta de soft fork, destinada a corrigir várias vulnerabilidades e fraquezas de longa data no protocolo do Bitcoin. Uma das vulnerabilidades mais sérias é conhecida como "ataque de distorção temporal", que é exatamente o tema que este artigo pretende explorar em profundidade.
Mecanismo de proteção de timestamp de bloco do Bitcoin
Antes de discutir o ataque de distorção temporal, precisamos entender os mecanismos de proteção contra manipulação temporal no atual protocolo Bitcoin:
O tempo mediano passado (MPT) regra: O carimbo de data/hora do novo bloco deve ser posterior ao tempo mediano dos 11 blocos anteriores.
Regras futuras do tempo de bloco: O carimbo de tempo do bloco não pode estar mais de 2 horas à frente do tempo mediano dos nós da rede. 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 carimbos de tempo dos blocos sejam demasiado retroativos, enquanto as regras dos blocos futuros limitam os carimbos de tempo a não serem excessivamente antecipados. É importante notar que não é possível implementar um mecanismo semelhante às regras dos blocos futuros para impedir completamente os carimbos de tempo passados, pois isso pode afetar o processo de sincronização da blockchain inicial.
O erro "um a menos" de Satoshi Nakamoto
O período de ajuste de dificuldade do Bitcoin inclui 2016 blocos, calculando um tempo de bloco de 10 minutos, o que equivale a aproximadamente duas semanas. Ao calcular o ajuste de dificuldade da mineração, o protocolo calcula a diferença de timestamp entre o primeiro e o último bloco na janela de 2016 blocos relacionada.
No entanto, Satoshi Nakamoto cometeu um pequeno erro, mas notável, no código original. Ele usou 2016 em vez de 2015 para calcular o tempo alvo, resultando em um tempo alvo 0,05% mais longo do que deveria ser. Isso significa que o intervalo de blocos alvo real do Bitcoin é de 10 minutos e 0,3 segundos, em vez de 10 minutos exatos.
Embora esse erro de 0,3 segundos pareça insignificante, ele está associado a um problema mais sério. O cálculo da dificuldade é baseado no primeiro e no último bloco dentro de cada janela de 2016 blocos, e não na diferença entre o último bloco da janela anterior e o último bloco da janela atual. Essa forma de cálculo cria a possibilidade de ataques de distorção temporal.
Princípio do ataque de distorção temporal
O ataque de distorção do tempo aproveita o erro de Satoshi Nakamoto no cálculo da dificuldade. Neste tipo de ataque, mineradores maliciosos manipulam o timestamp do bloco para influenciar o ajuste de dificuldade. Os passos do ataque são os seguintes:
Para a maioria dos blocos, os mineiros definem o carimbo de data/hora para apenas 1 segundo antes do bloco anterior.
Para minimizar ao máximo a passagem do tempo, os mineradores podem manter o mesmo carimbo de data/hora em 6 blocos consecutivos e, em seguida, aumentar o tempo em 1 segundo no próximo bloco.
No último bloco de cada período de ajuste de dificuldade, os mineradores definem o carimbo de data/hora para o tempo do mundo real.
O timestamp do primeiro bloco da próxima janela de ajuste de dificuldade é definido para o passado, apenas 1 segundo antes do penúltimo bloco da janela anterior.
Este modo de ataque faz com que o tempo da blockchain fique cada vez mais atrasado em relação ao tempo real, enquanto a dificuldade continua a aumentar. No entanto, a partir do segundo ciclo de ajuste, a dificuldade começará a ajustar-se para baixo. Isso permite que os mineradores gerem uma grande quantidade de blocos em um curto espaço de tempo, potencialmente criando Bitcoin além da velocidade de emissão normal.
Viabilidade e Desafios do Ataque
Embora essa ataque tenha um potencial destrutivo em teoria, a sua implementação real enfrenta alguns desafios:
É necessário controlar a maior parte do poder de cálculo da rede.
A presença de mineiros honestos aumentará a dificuldade de ataque.
Se um minerador honesto gerar o primeiro bloco da janela de ajuste de dificuldade, o ataque desse ciclo falhará.
O processo de ataque é visível publicamente e pode desencadear uma correção de soft fork de emergência.
Solução
Há várias maneiras de corrigir esta vulnerabilidade:
Mudar o algoritmo de ajuste de dificuldade, calculando a diferença de tempo entre diferentes janelas de 2016 blocos.
Cancelar a regra MPT, exigindo que o carimbo de data/hora de cada bloco aumente estritamente.
Definir novas regras de limite: O tempo do primeiro bloco do novo ciclo de dificuldade não pode ser anterior a um número específico de minutos do último bloco do ciclo anterior (, como 2 horas ).
Atualmente, os desenvolvedores tendem a adotar a terceira solução, estabelecendo o limite de tempo em 2 horas. Esta solução não apenas pode mitigar efetivamente o ataque de distorção temporal, mas também minimiza ao máximo o risco de gerar blocos inválidos por acidente.
Conclusão
O ataque de distorção temporal revela uma potencial vulnerabilidade de segurança no protocolo Bitcoin. Embora a implementação deste ataque enfrente muitos desafios na realidade, ele nos lembra da necessidade de revisar e melhorar continuamente a infraestrutura da tecnologia blockchain. Através da proposta de uma solução de soft fork, a comunidade Bitcoin está ativamente enfrentando esta ameaça potencial, aumentando ainda mais a segurança e a estabilidade da rede.