Autor: Hartwig Mayer – 30 de setembro de 2019
Qualquer informação armazenada em um blockchain deve ser preservada para sempre. Ninguém poderá alterá-la ou muito menos apagá-la. Mas isso é realmente verdade? Existe alguma chance de que governos ou grupos privados com dinheiro suficiente para financiar ataques dispendiosos possam excluir informações de um blockchain?
Imagine um jornalista que está procurando um lugar seguro para publicar uma investigação muito importante, que vai revelar atividades ilegais de um determinado grupo. Este grupo seria capaz de excluir este relatório, uma vez que ele está permanentemente armazenado no blockchain? Veremos. Depois de uma rápida introdução ao blockchain, descreveremos brevemente como armazenar informações nele e discutir os principais ataques possíveis contra blockchain e quais são suas implicações para a censura do artigo do jornalista. Finalmente, comentamos sobre o uso do blockchain para fins de publicação e fornecemos uma visão geral das alternativas possíveis.
Compreendendo o Blockchain
O Blockchain não apenas armazena informações em um banco de dados, mas também permite que os pares da rede decidam se uma atualização do estado do banco de dados é válida. Em um contexto financeiro, o novo estado corresponde a uma nova transação, e um protocolo de consenso permite que os pares cheguem a um acordo sobre se a transação tem financiamento suficiente e é devidamente autenticada pelo remetente. A validação requer que os peers conheçam todo o histórico de transações (pelo menos o conjunto UTXO) que eles armazenam e atualizam em sua cópia local do blockchain (veja a Figura 1).
As propriedades essenciais que um blockchain deve cumprir para ser executado com segurança são as seguintes:
- Imutabilidade: integridade de dados para garantir que o histórico de transações não possa ser alterado. Qualquer tentativa de mudança seria notada e rejeitada.
- Consistência: Todos os pares têm uma visão comum sobre o blockchain, ou seja, uma vez que um usuário honesto aceita uma transação válida, todos os outros irão inserir esta transação em sua cópia local e considerá-la para futuras transações.
- Resistência à Censura: as transações válidas são sempre aceitas, independentemente do remetente, do destinatário e do conteúdo.
- Descentralização: Nenhum ponto único de falha. A descentralização é medida pelo tamanho da rede. Quanto maior for a rede, mais seguro será contra falhas ou comportamento malicioso de um pequeno grupo. Este é o pilar da ideia do blockchain.
- A imutabilidade é alcançada por um uso inteligente de funções criptográficas chamadas funções hash (o método é explicado em nosso artigo Censura de Dados Prejudiciais em blockchain). A consistência e a resistência à censura foram teoricamente comprovadas para alguns protocolos de blockchain selecionados. O artigo Bitcoin Backbone Protocol e as investigações subsequentes demonstram a segurança do blockchain de Proof of Work (PoW) do Bitcoin. Outros protocolos de consenso de blockchain, por ex. Proof of Stake (PoS) têm provas de segurança também (por exemplo, Algorand, Cardano, etc.). Suas provas baseiam-se em três suposições:
• Maioria de pares honestos da rede: O protocolo ajuda os pares honestos a comunicarem transições de estado apenas quando há suficientes participantes honestos.
• Comunicação de rede: Os pares devem estar sincronizados para chegar a um consenso.
• Criptografia segura: os pares podem autenticar as transações de transmissão e podem verificar a imutabilidade dos dados do blockchain.
Em teoria, essas condições são suficientes para garantir a segurança de um blockchain. No entanto, existem ameaças práticas, por exemplo, explorar bugs na implementação. Contudo, essas suposições são condições necessárias, e a violação de uma delas implicaria que o blockchain pode ser efetivamente atacado.
Por que a maioria honesta é importante: Como não há autoridade central que declare as transações como válidas ou não, a validade de uma transação passa a ser uma questão de toda a comunidade. A maneira como os blockchains lidam com isso pode ser ilustrada da seguinte forma: transações válidas são empacotadas em uma pilha, uma sobre a outra em ordem cronológica. Para reverter uma transação específica, um usuário malicioso deve primeiro reverter todas as transações que já estão acima daquela que ele está objetivando. Enquanto os nodes honestos estiverem em maioria e continuarem adicionando novas transações válidas à pilha, o usuário malicioso não será capaz de fazer isso. Mas se usuários mal-intencionados se tornarem a maioria, as transações podem ser revertidas e double spendings (gastos em dobro) podem ocorrer, o que significa que a transação é retirada da pilha e usada novamente, ou seja, a consistência não pode mais ser garantida.
Por que uma boa comunicação de rede é importante: Se alguém conseguir dividir a rede blockchain em dois grupos, não encaminhando mensagens (veja a Figura 2), esses grupos não serão capazes de se comunicar entre si e, portanto, serão construídos dois históricos de transações diferentes. Se a partição terminar, os nodes chegarão a um acordo sobre qual história é a válida, ou seja, aquela que criou uma pilha mais longa, mas isso implica que a consistência não é válida para um dos dois grupos.
Por que a criptografia segura é importante: os nodes de rede aparecem como nada mais do que um número de conta bancária na rede. Os nodes têm um PIN para sua conta para autenticar transações – em termos técnicos, esta é sua chave privada. A quebra da criptografia permitiria que todos deduzissem o PIN privado de qualquer conta bancária; em outras palavras, permitiria que qualquer pessoa roubasse PINs e movesse fundos de outros pares.
Como inserir texto no blockchain
Antes de analisarmos o que poderia acontecer com as informações caso uma das três suposições fosse violada, examinaremos rapidamente as etapas necessárias que nosso jornalista deve realizar para inserir sua investigação no blockchain.
Primeiro, ele deve se conectar à rede blockchain. Isso requer a execução de um node na rede que permite que ele se comunique com o resto dos pares e os informe sobre sua nova transação. Os blockchains públicos fornecem o software necessário e novos usuários podem baixar sua própria cópia do blockchain. DappNode é um dos aplicativos que podem auxiliar neste processo. Se todo o blockchain for muito pesado para o jornalista executar (veja por exemplo os requisitos de hardware para Bitcoin e Ethereum), existem outros métodos para se comunicar com a rede: ele pode usar a alternativa “leve” (marque esta opção para Ethereum) ou um node público aberto para se comunicar com a rede.
Em segundo lugar, é importante cumprir o formato de transação padrão do blockchain selecionado, caso contrário, os pares não encaminharão uma transação disforme para outros pares. Inserir um arquivo de texto geralmente não é um procedimento comum para um blockchain, portanto, fazer isso pode exigir algumas habilidades de programação (mais informações podem ser encontradas, por exemplo, aqui-em português).
Se tudo isso for muito complicado para nosso jornalista, ele pode tirar proveito de um serviço existente para publicação em um blockchain. No entanto, ele pode não estar disposto a aceitar o grau de dependência que isso apresentaria.
É possível excluir dados de um blockchain?
Antes de analisarmos essa possibilidade, é importante entender que o significado de “deleção” neste contexto é duplo: uma vez que existem dois tipos de leitores – aqueles que possuem uma cópia local do blockchain e aqueles que acessam um node de rede para analisar o blockchain para o texto – a exclusão pode significar apagar o arquivo de dados do banco de dados local ou, no último caso, apenas impedir o leitor de acessar os dados.
Possível Censura por Maioria
Nesse cenário, a maioria dos nodes da rede pertence ao adversário do jornalista, que deseja excluir o arquivo de texto. Uma vez que blockchains sem permissão são redes abertas, isso pode ser alcançado adquirindo a maior parte do poder computacional em blockchains baseados em PoW ou possuindo a maioria da participação em protocolos de consenso baseados em PoS (veja abaixo as estimativas de custo). Em ambos os casos, as suposições de segurança do blockchain são quebradas.
Como esse cenário afeta a imutabilidade dos dados?
Uma vez que todo o blockchain é armazenado localmente em cada node, uma exclusão de um arquivo de texto exigiria apagar esses dados de todas as cópias existentes do blockchain. O adversário pode excluir os dados apenas nas cópias sobre quais elementos têm controle. Os nodes restantes, apenas por seguirem as regras do protocolo e sem ter qualquer opinião política, não o farão. Além disso, eles também podem detectar uma tentativa do adversário de adulterar os dados.
Apagar o arquivo de texto de um bloco previamente aceito levaria a uma inconsistência evidente – o mecanismo de imutabilidade bloqueia os blocos juntos, não permitindo nenhuma alteração posterior. Portanto, o adversário pode preferir deletar toda a sequência de blocos nas cópias que administra, até onde está o arquivo de texto, e construir um novo branch sem o arquivo de texto usando seu poder de maioria (ver Fig. 3). Quando este branch atinge a mesma altura de blocos do branch antigo, novos usuários podem se convencer de que o texto nunca existiu no blockchain (isso é conhecido como resistência de Sybil quebrada, que explicaremos a seguir). Ainda assim, o conteúdo ainda estaria na cadeia dos nodes honestos nos blocos órfãos, ou seja, aqueles que tinham a cópia antes da mudança, ainda carregariam, em sua cópia, o arquivo de texto.
Sob tal ataque, a replicação do relatório do jornalista pode ser interrompida, mas não apagada. Leitores sem uma cópia do blockchain têm uma baixa probabilidade de encontrar uma cópia contendo as informações do arquivo de texto, pois ela está incluída apenas em uma minoria de nodes da rede.
Como a Não Consistência afeta a Imutabilidade?
A consistência permite que os peers tenham uma opinião comum sobre transações válidas sem qualquer autoridade central. Embora a validade não seja o interesse principal de nosso jornalista – ele se preocupa apenas com o armazenamento – isso tem um impacto em sua escolha: os usuários de Bitcoin teriam medo de uma situação em que a consistência fosse ameaçada, porque seus acervos não seriam mais seguros. Ataques como double spending, conforme explicado anteriormente, seriam possíveis, e todos tentariam tirar seu dinheiro do sistema e sair da rede Bitcoin. Os nodes que mantêm a rede, também conhecidos como mineradores não estariam interessados em servir uma rede inativa.
Como nodes honestos deixariam a rede, o adversário obteria controle total sobre ela. Conforme descrito antes, o arquivo de texto pode ser excluído de todas as cópias locais do adversário e nenhuma fonte acessível com texto sobreviveria. Este cenário é altamente crítico porque conseguiria efetivamente a censura do artigo do jornalista.
Como a Resistência à Não Censura afeta a Imutabilidade?
Uma falha de resistência à censura afeta a inserção de dados no blockchain. Como nosso jornalista já colocou seu texto no livro-razão, isso não seria de sua preocupação. No entanto, os usuários comuns experimentariam rejeição ou, pelo menos, longos atrasos na aceitação de suas transações corretas. Portanto, em um cenário extremo, os usuários parariam de usar o blockchain e, finalmente, os mineiros também sairiam da rede devido à falta de incentivos econômicos, pois o preço do Bitcoin cairia, tornando desinteressante a recompensa por uma mineração bem-sucedida.
As consequências seriam semelhantes às descritas no parágrafo anterior: centralização da rede nas mãos do adversário. O perigo não é tão grande como no caso de problemas de consistência (não há perda de dinheiro), mas este também é um cenário crítico.
Novos usuários podem ser adulterados?
Novos usuários devem inicializar e sincronizar sua cópia local com o blockchain. Durante este processo, os novos nodes devem solicitar os dados aos nodes vizinhos. A resistência de Sybil refere-se à capacidade de um sistema peer-to-peer de proteger pares honestos de pares mal-intencionados que tentam adulterá-los criando muitas entidades que fornecem informações incorretas. Os blockchains PoW são resistentes a Sybil, pois basta ter apenas um node honesto como vizinho para saber qual informação de blockchain é a correta: a cadeia mais longa que acumula a maior parte do poder de hashing, ou seja, a da maioria honesta (ver Fig. 4) <Captura de tela de 15/10/2019 15-59-36>. Novos usuários devem inicializar e sincronizar sua cópia local com o blockchain. Durante este processo, os novos nodes devem solicitar os dados aos nodes vizinhos. A resistência de Sybil refere-se à capacidade de um sistema peer-to-peer de proteger pares honestos de pares mal-intencionados que tentam adulterá-los criando muitas entidades que fornecem informações incorretas. Os blockchains de PoW são resistentes a Sybil, já que basta ter apenas um node honesto como vizinho para saber qual informação de blockchain é a correta: a cadeia mais longa que acumula a maior parte do poder de hashing, ou seja, aquela da captura de tela de 15/10/2019 59-36e maioria honesta (ver Fig. 4).
PoS precisa de uma abordagem diferente que não discutimos aqui (mais informações podem ser encontradas neste artigo sobre Ouroboros Genesis). Se não for dada maioria honesta e o adversário conseguir construir uma corrente mais longa sem o texto, os novos usuários optarão por esta em vez da corrente que contém o texto. Mas há mais sutilezas a serem consideradas, por exemplo, o mecanismo de bootstrap rápido, por exemplo o Ethereum, que não parte do bloco de gênesis (primeiro bloco). Isso exigiria um estudo extra para cada projeto de blockchain.
O que isso significaria para nosso jornalista? A replicação do arquivo de texto contendo sua investigação pode ser interrompida. Novos usuários optariam por padrão pela cadeia que não contém o texto.
Cálculo do custo para aquisição da maioria:
Em blockchains baseado em PoW, o ataque majoritário requer a maior parte do poder de hash. De acordo com esta fonte (acessado em 22 de julho de 2019), os custos para executar este ataque são:
Por exemplo, para executar um ataque de double spending em uma transação colocada em um bloco que tem 10 blocos sucessores, levaria um invasor possuindo 70% do poder de hashing em média cerca de 4 horas, o que tem um custo de mais de $ 4 milhões no Rede Bitcoin. No caso do Ethereum Classic, um ataque majoritário já ocorreu.
Esses números são válidos para um novo usuário único sem poder de hash anterior. Mas a verdade é que existem pools de mineração que já controlam 20% do poder de hashing. O conluio / combinação entre 4 desses pools pode levar a um ataque eficaz e isso já é tecnicamente possível. Veja as estatísticas abaixo, na seção sobre descentralização.
Em blockchains baseado em PoS, o ataque requer para ganhar a maioria de toda a aposta. Blockchains que funcionam no espírito do Bitcoin requerem 51% (por exemplo, Cardano), e aqueles que executam um protocolo do Acordo Bizantino Clássico requerem apenas 33% para cada rodada (por exemplo, Algorand). Medidos na capitalização de mercado total (acessada em 22 de julho de 2019 no coinmarketcap), os cálculos alcançam as seguintes estimativas:
Observe que EOS e Tezos não são protocolos PoS puros, mas protocolos PoS delegados, que são mais vulneráveis a Ataques de Negação de Serviço – DDoS (descritos abaixo) devido a um conjunto de validadores mais centralizado. As cadeias de blocos de PoS não têm o problema de concentração de energia como em PoW através de grandes pools de mineração; ainda assim, eles podem sofrer com poderosos stakeholders que podem conspirar para executar um ataque majoritário. Observe que, no caso do PoW, é possível impedir esse ataque majoritário adicionando novos mineiros à rede. Este não é o caso dos blockchains de PoS, uma vez que a mudança da maioria para o adversário não pode ser revertida pela comunidade honesta. Os defensores do PoS argumentam que tal ameaça não é realista, pois os invasores precisariam deter a maioria da aposta. Isso implicaria uma enorme perda de capital, uma vez que a taxa de câmbio entre a criptomoeda e a moeda fiduciária cairia imediatamente.
Existem ataques mais refinados, por exemplo, selfish-mining, que requer apenas 33% da energia, no Bitcoin, para executar efetivamente ataques de double spending, mas são complicados de executar e ainda não foram vistos na prática. Finalmente, deve-se notar que embora os blockchains permissionados não sejam propensos a este tipo de ataque, eles requerem um alto grau de confiança no conjunto de validadores (entre 6 e 100 entidades devem ser confiáveis e protegidas no caso de um ataque).
Possível censura por meio de ataques à rede
Ataques à rede
Os ataques à rede visam cortar a comunicação entre os nodes para obter uma partição da rede (ver Fig. 2). Uma vez que os endereços IP da maioria dos usuários de blockchain são públicos, tal ataque é tecnicamente viável, mas exigiria uma tarefa logística enorme que pode até incluir o corte de muitos cabos de fibra ótica e o bloqueio de acesso de internet e satélite entre os nodes da rede. Dependendo da localização geográfica dos nodes da rede, isso é mais ou menos facilmente alcançável. Uma estratégia de defesa para isso seria o uso do Tor para ofuscar sua localização, mas a rede não seria capaz de funcionar se todos fizessem isso.
O que esse ataque significaria para nosso jornalista? O ataque afeta a inserção de novos dados e a consistência do banco de dados. Como nosso jornalista já publicou seu texto na blockchain, o verdadeiro objetivo de tal ataque seria fazer com que os nodes da rede saíssem do sistema, e os dados desapareceriam para aqueles que não tivessem uma cópia. Executar tal ataque causaria um grande dano colateral, e é considerado muito improvável em localizações geográficas com uma infraestrutura densa e devido ao sistema de roteamento da Internet.
Outro possível ataque à rede poderia ser feito isolando nodes especiais dentro da rede, os chamados ataques eclipse, onde o adversário ganha poder dos nodes vizinhos para controlar a entrada e saída do node atacado. Este ataque não visa toda a rede, mas nodes individuais, por exemplo, para realizar um gasto duplo com um node. Como esse é um ataque individual, é menos provável que todo o sistema seja desativado. Mais informações sobre isso podem ser encontradas aqui.
Ataques de negação de serviço (DoS)
Nesse ataque, o adversário tenta espalhar muitas informações nos canais de comunicação do blockchain para fazer o sistema funcionar lentamente. A comunicação blockchain possui métodos para se proteger contra tais ataques, tornando-os menos viáveis. Mesmo assim, essa pode ser uma vulnerabilidade que deve ser estudada em detalhes. Mais informações podem ser encontradas aqui:
Sobre como o Bitcoin se protege contra ataques DoS e quais são as contramedidas do Cardano, podem ser lidas neste link.
A essência desse ataque seria fazer a rede morrer, para que nenhum node ficasse mais online para compartilhar o arquivo de texto. Isso pode ser considerado um vetor de ataque crítico, embora as contramedidas estejam em vigor e nenhuma ameaça real tenha sido vista até hoje.
Possível censura por criptografia quebrada
Atualmente, não há ameaça para blockchains que usam ferramentas criptográficas padrão, ou seja, funções hash padrão para “encadear” os blocos e assinaturas digitais para autenticar transações. A maioria dos blockchains conta com o esquema de assinatura ECDSA padrão e a função hash SHA-256 que são, matematicamente falando, muito seguros (observe o que pode acontecer se você não cumprir os padrões: vulnerabilidade em IOTA). Além disso, consulte nosso artigo sobre a segurança do ECDSA e outros esquemas de assinatura.
A única ameaça potencial seria o advento de computadores quânticos que afetariam apenas a segurança das assinaturas digitais (algoritmo de Shor; veja também nosso artigo), não as funções hash. A real dimensão deste perigo pode ser vista pela iniciativa do programa NIST para criptografia Post Quantum Secure (Criptografia Pós-Quântica).
Caso isso aconteça, uma vez que as assinaturas não estariam mais seguras, fundos poderiam ser roubados e os usuários poderiam escapar da rede blockchain. No entanto, essa capacidade nos computadores quânticos ainda estão longe de se tornar uma realidade e, embora em três gerações isso possa ser uma história diferente, nessa época também é provável que já exista uma criptografia de computador quântica segura que protege contra tal ataque atualizando o software central.
Importância da Descentralização
A regra geral é: mais nodes significam mais segurança. Quanto mais nodes no sistema, menos probabilidade de obter maioria devido à maior distribuição de energia e menos probabilidade de ocorrer um ataque de partição de rede. Além disso, conforme existem mais cópias do blockchain, é menos provável que interrompa o acesso ao blockchain porque a redundância garante que os dados não possam ser facilmente excluídos.
Estatísticas para PoW
As estatísticas abaixo mostram o número de nodes acessíveis ao público. Nem todos os nodes são nodes completos, ou seja, nodes que possuem uma cópia local de todo o blockchain. Normalmente, apenas as empresas (bolsas, pools de mineração etc.) executam nodes completos, pois para um único usuário privado não há incentivo econômico real para fazê-lo.
Estatísticas para PoS
Nas estatísticas abaixo, incluímos o número de nodes para EOS e Tezos que têm nodes especiais chamados delegates. Apenas delegates podem propor o próximo bloco; eles são eleitos pela comunidade, onde qualquer um pode se tornar um delegate. É importante mencionar que, ao contrário disso, em Algorand e Cardano todos os pares podem teoricamente participar do consenso.
Algumas Limitações do Mundo Real
Muitos nodes de rede armazenam sua cópia local do blockchain em uma nuvem, pois a execução de um node completo requer um grande espaço de armazenamento disponível. Na prática, isso torna o sistema menos descentralizado, porque muitos dos nodes completos são armazenados em alguns provedores de serviço. Portanto, um ataque à rede se torna mais viável e afetaria a disponibilidade de dados, cortando a conexão entre o leitor e qualquer cópia local. De qualquer forma, se reagir rapidamente, o sistema blockchain pode se recuperar.
Outra limitação importante para a descentralização em blocos de PoW são pools de mineração. No momento, o poder de mineração de toda a rede Bitcoin está nas mãos de alguns pools de mineração. De acordo com essas estatísticas, apenas 4 pools de mineração coniventes podem executar o ataque da maioria. Claro, isso não é do interesse econômico deles, mas mostra a viabilidade da ameaça. Nesse aspecto, os blocos de PoS são superiores aos blocos de PoW, uma vez que não dependem de recursos externos (energia, ferramentas de mineração), mas funcionam de forma totalmente intrínseca, com base na quantidade de aposta. Por outro lado, partes poderosas interessadas podem fazer um conluio para obter a maioria por meio da participação.
Por que procurar alternativas para o Blockchain
Limitação de Desempenho
O uso do blockchain vai muito além do armazenamento seguro de dados arbitrários. Permite, por exemplo, introduzir identidades digitais e ter uma camada de consenso para encontrar acordos de forma descentralizada mesmo em redes não confiáveis. Mas tudo isso vem com a compensação de limitações de desempenho, principalmente no número de transações por segundo (a limitação de desempenho tornou-se evidente durante o hype do Crypto Kitties) e o crescimento do tamanho de todo o blockchain. Como o objetivo do blockchains não é o armazenamento, usá-lo para arquivos grandes torna-se caro (cerca de US$ 180 por 50 KB em Bitcoin; consulte esta nota, p. 18). Além disso, uma limitação séria para um jornalista poderia ser o limite máximo do tamanho dos dados por transação, que é 100 KB no caso do Bitcoin.
Embora o uso generalizado de alguns blockchains os torne uma possibilidade de armazenamento seguro, sugerimos analisar soluções alternativas de armazenamento distribuído. Contanto que hajam garantias de redundância suficientes, essas soluções podem ser mais adequadas para o propósito do jornalista. Um dos motivos para a ampla aceitação das blockchains é o incentivo econômico em participar. Uma vez que as redes de armazenamento distribuído geralmente não têm um sistema de incentivo econômico para manter a rede “viva”, pesquisas sobre combinações de blockchain com armazenamento P2P distribuído para introduzir incentivos econômicos estão em andamento (ver, por exemplo, SWARM, Filecoin, etc.).
Decisões da Comunidade
As decisões da comunidade na forma de hard forks são, em seu espírito técnico, um “ataque de 51%”. A maioria pode ser “quebrada” porque a comunidade concorda com as alterações de protocolo ou porque deseja reverter o histórico de transações por meio de um hard fork (por exemplo, após o hack DAO do Ethereum). A maioria dos mineiros tem interesse econômico, portanto, seus incentivos não estão alinhados com o incentivo do nosso jornalista. Ou, pior ainda, os mineiros podem ser contra o uso de publicação, uma vez que pode violar o direito de esquecer e, em um cenário extremo, pode fazer com que governos proíbam o uso de blockchain.
Como conselho final, sugerimos ao jornalista que evite o uso de pequenos blockchains, pois são mais vulneráveis aos ataques da maioria. Definitivamente selecionaríamos um blockchain verdadeiramente descentralizado para a replicação do documento.
Fotografia por Brian J. Matis. Licença Creative Commons.