O roteiro do Ethereum incorpora uma tecnologia de escalonamento chamada Data Availability Sampling(DAS) 6. DAS apresenta o novo < a href= " https://notes.ethereum.org/@djrtwo/das-requisitos " > requisitos 4 para a pilha de redes da Ethereum, necessitando da implementação de protocolos de rede especializados 7. Um proeminente < a href= " https://notes.ethereum.org/@dankrad/s-Kademlia-das " > protocolo a proposta 4 utiliza uma Tabela de Hash Distribuída (DHT) baseada na Kademlia 2 para armazenar e recuperar as amostras dos dados.
No entanto, os DHTs 4 são suscetíveis a ataques Sybil: Um atacante que controla um grande número de nós DHT pode tornar as amostras DAS indisponíveis. Para neutralizar esta ameaça, pode ser estabelecida uma camada de rede de alta confiança, consistindo apenas em validadores de cadeia de beacon. Tal medida de segurança aumenta significativamente a barreira para os atacantes, uma vez que eles devem agora ter a sua própria ETH para atacar o DHT.
Neste post, apresentamos uma prova de protocolo validador, que permite aos participantes do DHT demonstrar, com conhecimento zero, que são um validador Ethereum.
Nesta secção, motivamos ainda mais a prova do protocolo do validador descrevendo um ataque Sybil contra a amostragem de disponibilidade de dados.
O protocolo DAS gira em torno do construtor de blocos garantindo que os dados do bloco sejam disponibilizados para que os clientes possam buscá-los. As abordagens atuais envolvem a partição de dados em amostras, e os participantes da rede apenas buscam amostras que pertencem aos seus interesses.
)
Considere um cenário em que um invasor Sybil quer impedir que os participantes da rede busquem amostras de um nó da vítima, que é responsável por fornecer a amostra. Conforme ilustrado na figura acima, o invasor gera muitos IDs de nós que estão próximos do ID do nó da vítima. Ao cercar o nó da vítima com os seus próprios nós, o atacante impede os clientes de descobrirem o nó da vítima, uma vez que os nós malignos irão deliberadamente reter informações sobre a existência da vítima.
Para mais informações sobre esses ataques Sybil, consulte este recente artigo de investigação 2 sobre ataques DHT Eclipse. Além disso, < a href= " https://notes.ethereum.org/@dankrad/s-Kademlia-das #SKademlia -modificações " > Dankrad's A proposta de protocolo de rede DAS 8 descreve como o protocolo S/Kademlia DHT sofre de tais ataques e mostra a necessidade de uma prova do protocolo validador.
O ataque acima motiva a necessidade de uma prova de protocolo validador: Se apenas os validadores puderem aderir ao DHT, então um invasor que queira lançar um ataque Sybil também deve apostar uma grande quantidade de ETH.
Usando o nosso protocolo de prova de validador, garantimos que apenas os validadores da cadeia de beacon podem aderir ao DHT e que cada validador obtém uma identidade DHT única.
Além disso, para a resiliência do validador DoS, também pretendemos ocultar a identidade dos validadores na camada de rede. Ou seja, não queremos que os invasores possam dizer qual nó DHT corresponde a qual validador.
Para cumprir estes objetivos, o protocolo de prova do validador deve cumprir os seguintes requisitos:
Essa prova de protocolo validador seria usada por Bob durante o estabelecimento da conexão na camada DHT, para que Alice saiba que está a falar com um validador.
A nossa prova de protocolo validador é efetivamente um simples esquema de credenciais anónimas. O seu objetivo é permitir que Alice gere uma chave derivada única, denotada como D, se e só se ela for uma validadora. Posteriormente, Alice usa esta chave derivada D dentro da camada de rede.
Ao conceber este protocolo, o nosso objetivo era criar uma solução que fosse simples de implementar e analisar, garantindo que cumpre os requisitos descritos de forma eficiente.
O protocolo emprega um subprotocolo de prova de adesão, em que Alice prova que é uma validadora ao demonstrar conhecimento de uma pré-imagem de hash secreta usando provas ZK. Alice constrói então um par de chaves único derivado dessa pré-imagem secreta de hash.
O subprotocolo de prova de adesão pode ser instanciado através de diferentes métodos. Neste post, mostramos um protocolo usando árvores Merkle e um segundo protocolo usando pesquisas.
Embora ambas as abordagens demonstrem uma eficiência aceitável, apresentam compensações distintas. As árvores Merkle dependem de funções hash amigáveis ao Snark como o Poseidon (que pode ser considerado experimental). Por outro lado, protocolos de pesquisa eficientes dependem de uma configuração fidedigna de potências de tau de tamanho igual ao tamanho do conjunto de validadores (atualmente 700k validadores mas em crescimento).
Agora vamos mergulhar nos protocolos:
As árvores de Merkle têm visto uma utilização generalizada para provas de adesão (ex. ver Semáforo 3). Aqui está o espaço de troca ao projetar uma prova de associação usando árvores Merkle:
Abaixo descrevemos a prova do protocolo validador baseado em árvores Merkle:
)
No final do protocolo, Alice pode usar D no DHT para assinar mensagens e derivar a sua identidade única de nó DHT.
Agora vamos olhar para uma solução um pouco mais complicada, mas muito mais eficiente, usando pesquisas.
Aqui está o espaço de compensação de usar protocolos de pesquisa 2 como Caulk 2:
Abaixo descrevemos uma prova concreta do protocolo do validador:
Exatamente como na abordagem Merkle, cada validador i registra um novo valor pi na cadeia de blocos tal que:
Fizemos um benchmark do tempo de execução do nosso protocolo de prova de adesão (link 6 ao código de referência 5) em termos de criação e verificação de provas. Note que, embora a prova de adesão seja apenas uma parte do nosso protocolo de prova de validador, esperamos que domine o tempo de execução geral.
Abaixo, fornecemos resultados de referência para uma prova de adesão à merkle tree usando o sistema de prova Halo2 com IPA como o esquema de compromisso polinomial. O IPA é um esquema mais lento que o KZG mas não requer uma configuração confiável que maximize as vantagens da abordagem da árvore de merkle.
Observamos que tanto os tempos do provador como do verificador alinham-se bem com os nossos requisitos de eficiência. Por esta razão, decidimos não fazer o benchmarking da abordagem baseada em Caulk, uma vez que se espera que o seu desempenho seja significativamente melhor em todas as categorias (especialmente o tempo de prova e o tamanho da prova).
Os benchmarks foram recolhidos num computador portátil com um Intel i7-8550U (CPU de cinco anos).
A propriedade de exclusividade do protocolo de prova do validador garante que cada participante da rede possui um par de chaves derivado distinto. No entanto, para certos protocolos de rede, pode ser vantajoso permitir que os validadores tenham identidades rotativas, onde as suas chaves derivadas mudam periodicamente, talvez diariamente.
Nesse cenário, se Eva se comportar mal num determinado dia, a Alice pode bloqueá-la para esse dia. No entanto, no dia seguinte, Eve pode gerar uma nova chave derivada, que não está na lista de bloqueio. Se quiséssemos poder bloquear permanentemente validadores com base na sua identidade rotativa, precisaríamos de um esquema de credenciais anónimas mais avançado como o SmarkBlock 1.
Uma abordagem alternativa (talvez mais simples) seria construir um compromisso com todas as chaves BLS12-381 da identidade do validador e fazer uma prova de adesão desse compromisso.
No entanto, esta abordagem exigiria que os validadores inserissem a sua chave privada de identidade no sistema de prova ZK para criar uma prova de adesão válida e calcular a chave derivada única.
Decidimos não adotar esta abordagem porque não é uma boa prática inserir chaves de identidade confidenciais em protocolos criptográficos complicados, e também tornaria mais difícil para os validadores manterem a sua chave de identidade principal offline.
Obrigado a Enrico Bottazzi, Cedoor, Vivian Plasencia e Wanseob pela ajuda na navegação na web de bases de código de prova de adesão.
O roteiro do Ethereum incorpora uma tecnologia de escalonamento chamada Data Availability Sampling(DAS) 6. DAS apresenta o novo < a href= " https://notes.ethereum.org/@djrtwo/das-requisitos " > requisitos 4 para a pilha de redes da Ethereum, necessitando da implementação de protocolos de rede especializados 7. Um proeminente < a href= " https://notes.ethereum.org/@dankrad/s-Kademlia-das " > protocolo a proposta 4 utiliza uma Tabela de Hash Distribuída (DHT) baseada na Kademlia 2 para armazenar e recuperar as amostras dos dados.
No entanto, os DHTs 4 são suscetíveis a ataques Sybil: Um atacante que controla um grande número de nós DHT pode tornar as amostras DAS indisponíveis. Para neutralizar esta ameaça, pode ser estabelecida uma camada de rede de alta confiança, consistindo apenas em validadores de cadeia de beacon. Tal medida de segurança aumenta significativamente a barreira para os atacantes, uma vez que eles devem agora ter a sua própria ETH para atacar o DHT.
Neste post, apresentamos uma prova de protocolo validador, que permite aos participantes do DHT demonstrar, com conhecimento zero, que são um validador Ethereum.
Nesta secção, motivamos ainda mais a prova do protocolo do validador descrevendo um ataque Sybil contra a amostragem de disponibilidade de dados.
O protocolo DAS gira em torno do construtor de blocos garantindo que os dados do bloco sejam disponibilizados para que os clientes possam buscá-los. As abordagens atuais envolvem a partição de dados em amostras, e os participantes da rede apenas buscam amostras que pertencem aos seus interesses.
)
Considere um cenário em que um invasor Sybil quer impedir que os participantes da rede busquem amostras de um nó da vítima, que é responsável por fornecer a amostra. Conforme ilustrado na figura acima, o invasor gera muitos IDs de nós que estão próximos do ID do nó da vítima. Ao cercar o nó da vítima com os seus próprios nós, o atacante impede os clientes de descobrirem o nó da vítima, uma vez que os nós malignos irão deliberadamente reter informações sobre a existência da vítima.
Para mais informações sobre esses ataques Sybil, consulte este recente artigo de investigação 2 sobre ataques DHT Eclipse. Além disso, < a href= " https://notes.ethereum.org/@dankrad/s-Kademlia-das #SKademlia -modificações " > Dankrad's A proposta de protocolo de rede DAS 8 descreve como o protocolo S/Kademlia DHT sofre de tais ataques e mostra a necessidade de uma prova do protocolo validador.
O ataque acima motiva a necessidade de uma prova de protocolo validador: Se apenas os validadores puderem aderir ao DHT, então um invasor que queira lançar um ataque Sybil também deve apostar uma grande quantidade de ETH.
Usando o nosso protocolo de prova de validador, garantimos que apenas os validadores da cadeia de beacon podem aderir ao DHT e que cada validador obtém uma identidade DHT única.
Além disso, para a resiliência do validador DoS, também pretendemos ocultar a identidade dos validadores na camada de rede. Ou seja, não queremos que os invasores possam dizer qual nó DHT corresponde a qual validador.
Para cumprir estes objetivos, o protocolo de prova do validador deve cumprir os seguintes requisitos:
Essa prova de protocolo validador seria usada por Bob durante o estabelecimento da conexão na camada DHT, para que Alice saiba que está a falar com um validador.
A nossa prova de protocolo validador é efetivamente um simples esquema de credenciais anónimas. O seu objetivo é permitir que Alice gere uma chave derivada única, denotada como D, se e só se ela for uma validadora. Posteriormente, Alice usa esta chave derivada D dentro da camada de rede.
Ao conceber este protocolo, o nosso objetivo era criar uma solução que fosse simples de implementar e analisar, garantindo que cumpre os requisitos descritos de forma eficiente.
O protocolo emprega um subprotocolo de prova de adesão, em que Alice prova que é uma validadora ao demonstrar conhecimento de uma pré-imagem de hash secreta usando provas ZK. Alice constrói então um par de chaves único derivado dessa pré-imagem secreta de hash.
O subprotocolo de prova de adesão pode ser instanciado através de diferentes métodos. Neste post, mostramos um protocolo usando árvores Merkle e um segundo protocolo usando pesquisas.
Embora ambas as abordagens demonstrem uma eficiência aceitável, apresentam compensações distintas. As árvores Merkle dependem de funções hash amigáveis ao Snark como o Poseidon (que pode ser considerado experimental). Por outro lado, protocolos de pesquisa eficientes dependem de uma configuração fidedigna de potências de tau de tamanho igual ao tamanho do conjunto de validadores (atualmente 700k validadores mas em crescimento).
Agora vamos mergulhar nos protocolos:
As árvores de Merkle têm visto uma utilização generalizada para provas de adesão (ex. ver Semáforo 3). Aqui está o espaço de troca ao projetar uma prova de associação usando árvores Merkle:
Abaixo descrevemos a prova do protocolo validador baseado em árvores Merkle:
)
No final do protocolo, Alice pode usar D no DHT para assinar mensagens e derivar a sua identidade única de nó DHT.
Agora vamos olhar para uma solução um pouco mais complicada, mas muito mais eficiente, usando pesquisas.
Aqui está o espaço de compensação de usar protocolos de pesquisa 2 como Caulk 2:
Abaixo descrevemos uma prova concreta do protocolo do validador:
Exatamente como na abordagem Merkle, cada validador i registra um novo valor pi na cadeia de blocos tal que:
Fizemos um benchmark do tempo de execução do nosso protocolo de prova de adesão (link 6 ao código de referência 5) em termos de criação e verificação de provas. Note que, embora a prova de adesão seja apenas uma parte do nosso protocolo de prova de validador, esperamos que domine o tempo de execução geral.
Abaixo, fornecemos resultados de referência para uma prova de adesão à merkle tree usando o sistema de prova Halo2 com IPA como o esquema de compromisso polinomial. O IPA é um esquema mais lento que o KZG mas não requer uma configuração confiável que maximize as vantagens da abordagem da árvore de merkle.
Observamos que tanto os tempos do provador como do verificador alinham-se bem com os nossos requisitos de eficiência. Por esta razão, decidimos não fazer o benchmarking da abordagem baseada em Caulk, uma vez que se espera que o seu desempenho seja significativamente melhor em todas as categorias (especialmente o tempo de prova e o tamanho da prova).
Os benchmarks foram recolhidos num computador portátil com um Intel i7-8550U (CPU de cinco anos).
A propriedade de exclusividade do protocolo de prova do validador garante que cada participante da rede possui um par de chaves derivado distinto. No entanto, para certos protocolos de rede, pode ser vantajoso permitir que os validadores tenham identidades rotativas, onde as suas chaves derivadas mudam periodicamente, talvez diariamente.
Nesse cenário, se Eva se comportar mal num determinado dia, a Alice pode bloqueá-la para esse dia. No entanto, no dia seguinte, Eve pode gerar uma nova chave derivada, que não está na lista de bloqueio. Se quiséssemos poder bloquear permanentemente validadores com base na sua identidade rotativa, precisaríamos de um esquema de credenciais anónimas mais avançado como o SmarkBlock 1.
Uma abordagem alternativa (talvez mais simples) seria construir um compromisso com todas as chaves BLS12-381 da identidade do validador e fazer uma prova de adesão desse compromisso.
No entanto, esta abordagem exigiria que os validadores inserissem a sua chave privada de identidade no sistema de prova ZK para criar uma prova de adesão válida e calcular a chave derivada única.
Decidimos não adotar esta abordagem porque não é uma boa prática inserir chaves de identidade confidenciais em protocolos criptográficos complicados, e também tornaria mais difícil para os validadores manterem a sua chave de identidade principal offline.
Obrigado a Enrico Bottazzi, Cedoor, Vivian Plasencia e Wanseob pela ajuda na navegação na web de bases de código de prova de adesão.