Em um Sybil Attack, um adversário controla muitas identidades e as apresenta como participantes independentes. No Bitcoin, conexões de rede adicionais, por si só, não lhe dão mais poder de mineração nem permissão para mudar as regras. Podem, porém, ajudá-lo a influenciar as fontes de informação de um nó específico.
Ana escolhe um serviço pelas recomendações em um fórum. Dezenas de contas o elogiam, mas o responsável pelo serviço controla todas elas. A concordância entre esses nomes não surgiu de forma independente. John R. Douceur descreveu o problema equivalente em redes de computadores em The Sybil Attack, de 2002: um adversário pode fingir ser vários participantes. Inventar um nome é fácil; conseguir os endereços, servidores (computadores que fornecem serviços a outros) e conexões necessários pode custar dinheiro e tempo. [1]
Na rede Bitcoin, um peer é simplesmente a outra ponta com a qual seu programa troca dados. Pedro pode operar vários nós, e uma empresa muitos mais. O Bitcoin não exige um cadastro de pessoas que atribua um nó a cada uma. Um endereço IP identifica um ponto da rede ao qual o programa se conecta. Um endereço IP diferente, portanto, não prova que o proprietário seja outro. Operar vários nós também não é, por si só, um ataque; o problema começa ao explorar a aparente independência deles. [1] [3]
O Full Node de Pedro é um programa que verifica as regras do Bitcoin por conta própria. Assinar significa aqui usar uma chave privada, um valor numérico secreto, para criar uma prova verificável de autorização do pagamento. Outras pessoas podem conferir a assinatura sem conhecer esse segredo. Se todos os peers conectados enviarem ao nó de Pedro uma transação com assinatura inválida, ele ainda a rejeitará. Respostas concordantes não contam como votos. Um bloco reúne transações em um lote acrescentado ao histórico compartilhado. O nó também verifica os blocos inteiros: por exemplo, se gastam recursos já gastos ou criam uma recompensa não permitida. A rede fornece os dados; a validade depende das regras do nó, não da popularidade de quem os enviou. [2] [6] [9]
Às vezes existem dois ramos válidos concorrentes do histórico. Proof of Work permite comparar o trabalho acumulado deles: um peso derivado da dificuldade dos blocos encontrados. A mineração exige tentativas reais de cálculo; mudar o nome de um computador não acrescenta trabalho. Se um atacante dividir o mesmo equipamento de mineração entre muitas identidades, essa divisão não aumentará sua potência total. Aqui não vale uma conta, um voto. [2] [6]
Mil conexões não substituem a chave privada necessária para gastar os bitcoins de outra pessoa. Multiplicar identidades também não basta para violar as regras de emissão ou fazer um nó que verifica corretamente aceitar um bloco inválido. Isso não é uma garantia contra qualquer ataque. O adversário pode adquirir também poder de mineração ou explorar uma falha no programa. Essas capacidades devem ser avaliadas separadamente, e não atribuídas apenas à quantidade de contas. [2] [9]
Voltemos ao nó de Pedro. Um atacante pode tentar preencher sua lista de endereços conhecidos e ocupar suas conexões. Se controlar todos os caminhos relevantes para o restante da rede, poderá reter blocos e mostrar uma visão incompleta ou atrasada. Esse isolamento se chama Eclipse Attack. Um Sybil Attack pode facilitá-lo, mas muitas identidades do atacante não provam que o isolamento deu certo. Verificar dados recebidos não é o mesmo que saber dos dados que alguém esconde. [3] [5] [8]
O Bitcoin Core combina várias barreiras. Ao selecionar automaticamente conexões de saída, busca diversidade de rede e distribui endereços conhecidos em grupos para dificultar que uma fonte domine toda a seleção. Conexões breves de teste, chamadas feeler, verificam se outros peers estão acessíveis. Esses mecanismos dificultam o ataque; não identificam o verdadeiro dono de cada servidor nem garantem proteção contra isolamento. A implementação evolui: as fontes mostram aqui o Bitcoin Core 29.0. [4] [7] [8]
Um endereço IP ou de um serviço Tor informa ao programa onde se conectar. Não certifica a presença de uma nova pessoa independente do outro lado. Um operador pode ter muitos endereços, enquanto vários usuários compartilham um IP público ou parte do caminho de rede. O Tor pode proteger a privacidade da conexão, mas seu endereço sozinho não comprova a independência de um peer. Encaminhar mensagens e atribuir peso ao histórico do Bitcoin são questões diferentes. [3] [4]
Proof of Work trata de uma parte importante do problema da falsa maioria, não de todos os riscos de comunicação. A rede P2P — a troca direta de dados entre participantes — pode sofrer inundação de tráfego, vigilância e retenção de mensagens. A defesa inclui, portanto, gerenciar conexões e limitar o consumo de recursos. A segurança depende do que o atacante realmente controla: apenas nomes, caminhos de rede, poder de cálculo ou uma combinação disso. [1] [5] [6]
Um contador de nós publicamente acessíveis não mostra o número de pessoas nem o resultado de uma votação sobre regras. Importam também suas fontes de informação e o que verificam por conta própria. Um Full Node seu permite conferir os blocos recebidos, mas precisa se conectar ao restante da rede. Uma carteira é um aplicativo ou dispositivo para receber e enviar bitcoins. Se usa um servidor de terceiros, a existência de muitos nós em outros lugares não elimina essa dependência. Mais contatos não significam automaticamente mais independência. [1] [3] [9]
Para ter uma visão mais completa, leia este verbete junto com Nakamoto Consensus, Eclipse Attack, Selfish Mining, Block Propagation, Bitcoin, Proof of Work. Também há referências a este verbete em Byzantine Generals Problem, Nakamoto Consensus, Eclipse Attack, Selfish Mining.