O que torna a blockchain segura?

0 Comentários

Recentemente me vi preso em uma toca de coelho que envolvia trabalho acadêmico em blockchains. Eu me interessei neste tópico porque nunca me senti à vontade com as garantias de e desempenho dos protocolos – afinal, embora esses protocolos sejam relativamente fáceis de descrever e implementar, eles parecem ter muito mais vetores de ataque do que um padrão sistema distribuído, como um banco de dados distribuído ou sistema de arquivos. Além disso, a natureza probabilística dos blockchains sugere que pode haver alguns fenômenos mais profundos subjacentes ao sucesso empírico e à estabilidade do Bitcoin e do Ethereum. Como blockchains combinam probabilidade, teoria dos jogos, criptografia e sistemas distribuídos, é natural que um probabilista faça perguntas sobre transições de fase, equilíbrios de Nash estáveis ​​e caminhadas aleatórias em gráficos de mineradores.

Por exemplo, alguém poderia fazer perguntas como: “A lei para o comprimento da cadeia de Bitcoins obedece a um processo de Galton-Watson? Esse processo está longe de ser crítico? ”As respostas a essas perguntas provavelmente revelarão alguns segredos ocultos sobre segurança, taxa de transação e qualidade de serviço dentro de blockchains e nos ajudarão a projetar estruturas de dados de blocos distribuídos mais complicadas. Este post incidirá sobre algumas facetas iluminadoras das seguintes questões:

Qual é a relação entre a análise de segurança blockchain e a análise tradicional de sistemas distribuídos?

Como os parâmetros de segurança de um blockchain controlam a taxa de transação, a qualidade de serviço e outras métricas práticas para algoritmos distribuídos?

Como definimos a centralização de uma maneira que respeite todos os diferentes vetores de ataque de um blockchain?

Podemos conectar a probabilidade de ataques de moagem em sistemas de prova de jogo a um objeto probabilístico tradicional (por exemplo, um tempo de mistura de uma cadeia de Markov)?

Pretendo usar uma combinação da literatura acadêmica sobre blockchains e a teoria de passeios aleatórios discretos como ponto de partida para desenvolver uma relação precisa entre probabilidades e blockchains. Este post irá focar na primeira questão e será menos técnico. As próximas postagens se concentrarão mais em detalhes técnicos e postularão conjecturas probabilísticas sobre blockchains. Devo notar que inicialmente escrevi um post muito mais longo que visava responder a todas essas perguntas em um post, mas logo percebi que havia muito a dizer em uma sessão!

Aviso: Estamos provavelmente muito longe de ter um grande volume como Probabilidade em Árvores e Redes por Lyons e Peres para blockchains. Eu só queria ter algumas idéias que eu tenho sentado em campo aberto.

Uma árvore de Galton-Watson perto da criticidade; a cor representa a distância da raiz (foto: Igor Kortchemski)
No Bitcoin, a confiança vem na forma de uma prova criptográfica de que todas as partes envolvidas em uma transação participaram de boa vontade e que a maioria dos mineradores de Bitcoin considera a transação válida. Em muitos aspectos, isso equivale a ter um cheque assinado por todas as partes relevantes e endossado por seus respectivos bancos, onde os bancos são análogos aos mineradores. Assim como podemos interagir repetidamente de boa fé com um novo cliente ou cliente através de uma entidade financeira confiável que nos fornece segurança e/ou seguro, a confiança criptográfica do Bitcoin nos permite interagir com entidades anteriormente desconhecidas sem nos preocuparmos com gastos duplos e/ou engajamento em outras formas de fraude.

A principal inovação do Bitcoin que ajudou a conseguir isso foi adicionar a noção teórica de jogo de conformidade de incentivo a um banco de dados padrão de transações distribuídas. Mais precisamente, o Bitcoin introduziu o conceito de projetar incentivos de forma que a probabilidade de que um membro de um banco de dados atuasse de maneira adversa e destrutiva, prejudicando a segurança geral ou a confiança dos resultados fornecidos pelo banco de dados, é pequena ou até insignificante. Isso significa que, mesmo que alguém esteja tentando fazer um ataque adversário na rede Bitcoin, é estatisticamente improvável que tenha sucesso. Esta garantia deriva do resto da rede que está sendo desincentivizada para entrar em conluio com este adversário, pois isso muitas vezes diminuirá suas chances de mineração de um novo Bitcoin. Compare isso com a situação do sistema financeiro moderno – há uma grande quantidade de confiança baseada em identidade embutida no sistema, seja proveniente das regras “Conheça o seu cliente” ou da pontuação de crédito acumulada ao longo de muitos anos de interações entre os consumidores. e entidades financeiras. Além disso, os bancos têm muitos de seus incentivos para evitar fraudes e atividades maliciosas ligadas à execução legal de várias leis, bem como suas relações filiais com os bancos centrais. Mas o que exatamente é o cumprimento de incentivo no Bitcoin e como isso proporciona confiança comparável à de um banco? Como sabemos que essa confiança é segura, mesmo se uma única entidade detiver uma grande fração do poder de mineração ou se houver um número muito grande de mineradores, de modo que leve muito tempo para chegar a um acordo sobre uma transação?

Leia também  Chineses poderão negociar bitcoins livremente em breve

A forma mais direta de insegurança no Bitcoin corresponde ao famoso ataque de 51%. Primeiro, postulamos que existe uma mineradora que tenha mais de 50% da potência total de mineração e, como tal, consiga coletar prêmios de mineração para verificar mais de 50% dos blocos (por exemplo, pacotes de transações verificadas) aceitos pela rede. Se uma organização tivesse tal poder, então poderia criar uma transação de qualquer outra entidade para si e essa transação teria uma grande chance de ser aceita, já que essa entidade tem controle majoritário do mecanismo de aceitação. A maneira que o protocolo Bitcoin faz isso é usando um sistema no qual as mineradoras competem para endossar transações. Se um mineiro for o primeiro a endossar com êxito uma transação, publicará seu endosso a todos os demais membros da rede. A porcentagem do poder de mineração que uma única entidade possui está relacionada à probabilidade de que eles endossem com sucesso uma transação: se você tiver mais poder de mineração, endossará mais transações. Além disso, se você tiver mais de 50% da capacidade de mineração, também poderá impedir outras pessoas de endossarem transações. Em termos bancários, seria como se o Citi possuísse mais de 50% dos depósitos de consumidores dos EUA e ocasionalmente dissesse: “Ei, precisamos de um bilhão de dólares, endossemos uma transação do Morgan Stanley ao Citi – eles provavelmente não podem nos parar! ”Quando o Morgan Stanley tenta bloquear a transação, o Citi garante que toda a sua energia de mineração aceita essa transação.

No sistema financeiro moderno, isso não aconteceria porque os bancos centrais administram e gerenciam grandes transferências interbancárias e atuam como intermediários confiáveis ​​que não deixariam essa transação passar. No entanto, no Bitcoin, ter uma grande quantidade de poder de mineração é estatisticamente equivalente a servir como um banco central, que mais ou menos tem a palavra final na verificação da transação. Em um cenário abstrato onde Bitcoin é a metodologia de pagamento dominante, todos os mineiros são racionais e puramente egoístas, e há um mineiro de 51%, este ataque parece inevitável. No entanto, a rede Bitcoin teve pools de mineração que tiveram mais de 50% da energia e, no entanto, nunca observamos um ataque bem-sucedido de gasto duplo. Isso sugere que a segurança é mais complicada do que a fração do poder de mineração adotada em uma única entidade.

Outra maneira de ver a interação entre segurança e concorrência dentro do Bitcoin é como uma metodologia para endossar transações que utiliza um sistema de votação randomizado que elege um “líder” para explorar um bloco. Dentro deste cenário, os mineiros estão constantemente lançando moedas tendenciosas até pousarem sobre as cabeças. O viés da jogada de cada mineiro – a probabilidade de uma moeda cair na cabeça – corresponde à capacidade ou participação do mineiro. Em outras palavras, se você tiver a maior porcentagem do poder de mineração de rede, provavelmente será mais provável virar uma cabeça em uma única instância. O primeiro mineiro a pousar em uma cabeça é “líder eleito” – isto é, eles publicam o bloco e reivindicam a recompensa. Note que os mineiros, ao contrário dos eleitores, não precisam se identificar; basta participar de uma única transação ou extrair um bloco para ser conhecido pelo resto da rede. Além disso, o número de mineiros pode flutuar descontroladamente e as identidades precisas das entidades participantes de uma eleição não precisam ser reveladas. Quando visualizadas por meio dessa lente, blockchains correspondem a bancos de dados somente de anexação que garantem a segurança por meio de eleições repetidas, aleatórias e sem identidade. Nesta configuração, o ataque de 51% por cento corresponde a mais de 50% dos votos na maioria das eleições. Você pode duplicar os gastos nesse cenário, transacionando com outra pessoa, enquanto elimina repetidamente a transação de um bloco de transações ou adiciona outra transação que reverta essa transação. Eu sempre achei que a analogia de votação também deixa claro que todos os mineiros e participantes da rede não precisam ter a mesma cópia da cadeia e / ou concordar com todas as transações. Essa é uma grande mudança em relação aos bancos de dados distribuídos tradicionais. Normalmente, a análise de sistemas distribuídos concentra-se na segurança de um modo tudo-ou-nada e exige que cada concorde com identidades, ordem de transação e validade – ou seja, alcança um consenso determinista. Nesses sistemas, um também executa a eleição do líder – o algoritmo dos generais bizantinos realiza um algoritmo de seleção de líder recursivo – mas geralmente há uma eleição única, não aleatória, que assume que todas as identidades são conhecidas no início de uma eleição [0]. Em blockchains, não sabemos o número de mineiros desonestos nem sabemos a identidade dos mineiros que participarão de um “voto”. Isso é semelhante aos sistemas humanos, como as moedas, que geralmente operam de maneira probabilística, uma vez que a sociedade pode concordar e obedecer a regras com as quais uma subpopulação significativa (mas não singularmente identificável) discorda. Nesse cenário, pode-se ver que o componente baseado em votação da segurança Bitcoin pode ser quantificado como o tamanho máximo de uma subpopulação discordante, de modo que a rede possa continuar aceitando transações, mesmo que essa subpopulação discorde do resto da rede e adversariamente acrescenta transações fraudulentas (que podem ser consideradas como uma forma de fraude).

Leia também  Weiss Ratings classifica 74 criptomoedas

Embora o uso inovador de incentivo por parte do Bitcoin tenha levado a uma explosão de análise acadêmica das questões de teoria dos jogos relacionadas à votação, outros problemas de segurança que aparecem em bancos de dados distribuídos tradicionais ainda podem causar problemas. Um dos maiores problemas em manter consistentes os bancos de dados distribuídos é o atraso da rede e a assincronia – leva tempo para que os nós recebam transações necessárias e possam receber essas transações em ordens diferentes. No mundo dos bancos de dados, geralmente se tenta projetar sistemas que são invariantes à ordem em que uma transação chega. No entanto, no mundo blockchain, ter um ordenamento correto de blocos é crucial para a segurança e consistência. A maioria dos protocolos blockchains e p2p se comunica por meio de protocolos de fofoca – você conta aos seus vizinhos sobre um novo bloco, depois conta aos vizinhos e assim por diante. O que acontece se duas pessoas publicarem o mesmo bloco de transações ao mesmo tempo? No Bitcoin, os forks de protocolo e uma única cadeia são divididos em uma árvore que possui dois blocos de terminais. À medida que os blocos atravessam a rede, os mineradores escolhem qualquer bloco que recebam primeiro para crescer. Em teoria, a blockchain poderia bifurcar-se repetidamente e se parecer com a árvore aleatória de Galton-Watson na foto acima. No entanto, isso seria muito ruim – blockchains que parecem árvores acabam gastando mais poder computacional repetidamente revalidando transações em filiais que terminam.

A análise original de Satoshi Nakamoto mostra que a probabilidade de ambos os ramos permanecerem na mesma altura diminui exponencialmente no número de blocos extraídos pela rede [1]. Para se recuperar de uma bifurcação, a rede tem que esperar até que um dos ramos cresça significativamente e seja a cadeia mais longa para a maioria dos mineiros. A penalidade temporal que a rede paga está relacionada com quanta confiança um usuário precisa para acreditar que sua transação foi aceita pela rede. Por exemplo, o artigo original do Bitcoin sugere que se deve esperar por seis blocos para se tornarem filhos de um bloco que contém uma transação antes de considerar uma transação como aceita pela rede. Como o bloco médio do Bitcoin leva 10 minutos para ser extraído, é preciso esperar uma hora antes que ele considere sua transação válida! Esse trade-off entre o nível de segurança (neste caso, a escolha do parâmetro de segurança seis) e o tempo sugere que os atrasos na rede podem afetar mais do que apenas a segurança; Aqui estão alguns exemplos de outras questões:

1. Qualidade de Serviço: Mesmo que o tempo esperado para sua transação ser aceito por uma grande parte da rede seja baixo, a variação na taxa de transação pode ser mortal. No IPFS, que é o “Dropbox on the Blockchain”, um bloco corresponde a um conjunto de arquivos; se você tiver uma alta variação na taxa de aceitação entre os blocos, descobrirá que demora um pouco para fazer o upload de uma pasta com um grande número de arquivos [2]. Isso pode ser uma penalidade inaceitável para os usuários que estão acostumados a sistemas centralizados como o Dropbox, que oferecem baixa variação e baixo tempo esperado.

2. Custos de Transação: As trocas distribuídas visam remover os criadores de mercado centralizados de uma bolsa usando uma recompensa de mineração para incentivar os mineiros (que funcionam como formadores de mercado) a manter as carteiras de pedidos consistentes. Por exemplo, os mineiros obtêm recompensas por fornecer liquidez para descruzar um livro de ordens [3]. No entanto, uma vez que pode ser muito lucrativo para os criadores de mercado manterem a carteira de encomendas não sincronizada (por exemplo, este artigo), é preciso projetar incentivos para que os criadores de mercado não colham recompensas de mineração e múltiplos spreads devido a assincronia.

Efeitos “Rico-fica-Mais Rico”: Muitos blockchains usam algoritmos de mexericos como o DHT, como o Kademlia. Nesses algoritmos, os nós rastreiam seus “vizinhos mais próximos” com base em quem envia o maior número de blocos quando uma solicitação é feita. Um minerador de alta participação e / ou de alta capacidade poderia aproveitar como esses algoritmos funcionam para garantir que eles sejam sempre o vizinho mais próximo da maioria dos outros mineradores. Isso garantiria que seus blocos cheguem à rede antes dos de outros mineradores e isso pode ajudá-los a ganhar gradualmente uma vantagem persistente sobre os mineradores com capacidade de mineração semelhante. Vamos explorar isso mais adiante em um post no blog sobre ataques de roteamento.

Atrasos de rede e assincronismo representam os custos de comunicação de ter um sistema verdadeiramente descentralizado. Para ilustrar isso com mais clareza, vamos ver como a variação dos tempos de recuperação de um único arquivo pode variar entre o Dropbox e o IPFS. Vamos supor que estamos em um mundo idealizado onde o Dropbox é um servidor único e há precisamente um caminho do seu computador para o Dropbox. Nesse caso, toda a variação no tempo de recuperação vem da variação dentro desse caminho único. Por outro lado, em uma configuração de IPFS com N nós e K nós que possuem uma cópia de seu arquivo. Nesta situação, temos duas fontes adicionais de variação:

Leia também  A versatilidade da tecnologia blockchain

Seleção / roteamento de caminho: Como os protocolos de fofoca tentam criar gráficos do tipo expansor, é improvável que exista um caminho único (especialmente quando K ~ N / 2) [4]

Node Uptime: Se um morrer e tentarmos recuperar um arquivo dele, acabaremos tendo que repetir nossa solicitação de recuperação, o que pode duplicar nosso tempo de recuperação.

Além disso, note que essas fontes adicionais de escala de variância com N e K, enquanto a variação dentro de um único caminho não varia com N e K. A partir desse gedanken idealizado, vemos que há uma redução inerente da qualidade de serviço em blockchain sistemas, o que sugere que qualquer sistema seguro e de alto desempenho necessitará de alguma centralização. Podemos conectar essa observação à teoria tradicional de banco de dados e obter algumas dicas sobre como analisar esse trade-off?

Curiosamente, Shostak, Pease e Lamport cobrem o trade-off entre centralização e qualidade de serviço em seu artigo seminal, O Problema dos generais bizantinos. Na última seção, eles analisam os gráficos de comunicação que têm a propriedade de ser d-regular [5]. Em um nível alto, essa propriedade corresponde a não ter nenhum par v, w tal que todos os caminhos de v para outro k tenham que passar por w ou qualquer vizinho de w. Eles mostram que ainda é possível resistir aos adversários bizantinos, embora seja necessário pagar uma penalidade proporcional ao diâmetro do gráfico de comunicação. Isto sugere que se alguém pode construir uma versão randomizada desta propriedade [6], então podemos usá-la para analisar a segurança do blockchain. Tal análise foi feita em protocolos bizantinos aleatórios [7] e é provavelmente útil para o probabilista prático de blockchain. Além disso, estudar o pior comportamento de caminhadas aleatórias em gráficos de DHT provavelmente nos ajudará a recuperar garantias de sistemas distribuídos padrão para blockchains, embora com um gap espectral ou uma penalidade baseada em diâmetro.

Espero que este post tenha ilustrado como a análise probabilística formal de blockchains pode se beneficiar dos quase quarenta anos de trabalho em sistemas distribuídos. Embora grande parte da análise de erros bizantinos em sistemas distribuídos seja determinística, grande parte dela pode ser trazida para o mundo probabilístico por meio de uma observação cuidadosa de fenômenos de concentração e de caminhadas aleatórias em gráficos. No próximo post, discutiremos como vários autores no mundo da criptografia realizaram análises probabilísticas em vários modelos simplificados de blockchain com adversários idealizados. Este post também tentou ilustrar (via exemplo) que versões aleatórias de algoritmos determinísticos podem evitar armadilhas aparentemente intransponíveis como o Teorema da Impossibilidade de Arrow.
_____________

[0] Por exemplo, se sabemos que há mestres desonestos em um esquema bizantino determinístico, então o algoritmo de Lamport fornece um algoritmo Ω (m) para voto honesto, supondo que possamos determinar as identidades de todos os eleitores. [1] Essa análise acaba sendo falha, já que o gráfico preciso que descreve a rede é importante para quantificar essa probabilidade. Em um post futuro desta série, vamos mergulhar em um exemplo desse tipo de computação e como isso afetou as escolhas de design algorítmico dentro da Ethereum. [2] Observe que isso não é exclusivo para blockchains – os sistemas de arquivos distribuídos, como NFS e Amazon S3, também apresentam problemas com um grande número de arquivos. No entanto, esses sistemas controlam topologias de rede e podem atenuar muitos dos problemas que surgem do roteamento aleatório de redes Blockchain. [3] Curiosamente, o mercado de ações dos EUA mais ou menos impõe isso através do Regulamento NMS. [4] Embora os gráficos que algoritmos como o Kademlia não sejam expansores, eles geralmente têm propriedades que garantem que o diâmetro do gráfico seja sempre Ω (log N). [5] Isto é distinto da definição da teoria de grafos padrão de regularidade, onde um grafo é d-regular se todo vértice tiver d arestas! [6] Uma primeira tentativa em uma versão randomizada: Considere dois nós v e k e deixe ε> 0. Para qualquer w∊v e qualquer par de caminhos ?, ? de comprimento no máximo εN que começam em w e terminam em k, Pr [| ? ∩? |> 2] = O (f (N, ε)) para alguma função de decaimento rápido f. [7] Veja Ben-Or, Outra Vantagem da Livre Escolha: Protocolos de Acordo Completamente Assíncrono e Micali, Acordo Bizantino, Made Trivial

(Tarun Chitra)
Fonte: https://medium.com/@tarunchitra/what-makes-blockchains-secure-1-5-16d70e6122d2

Guia do Bitcoin

Mantenha-se informado todos os dias sobre Bitcoin!
Telegram: http://telegram.me/guiadobitcoin
Facebook: https://www.facebook.com/guiadobitcoin/
Twitter: https://twitter.com/guiadobitcoin
Feed RSS: https://guiadobitcoin.com.br/feed/