Uma análise técnica mais detalhada dos recentes ataques de DeFi

Como as taxas de gás Ethereum dispararam para níveis recordes durante o mercado altista de 2021, tornando muitos protocolos de finanças descentralizadas (DeFi) inutilizáveis ​​para usuários casuais, vários projetos foram forçados a implantar em outras redes.

Isso criou um grande aumento na demanda por mecanismos de cadeia cruzada – chamados de pontes – capazes de transferir com segurança os ativos do usuário de uma cadeia para outra. As pontes de cadeia cruzada geralmente podem ser divididas em pontes custodiais centralizadas (CCB) e pontes não custodiais descentralizadas (DNCB).

Como era de se esperar, a crescente demanda por pontes de cadeia cruzada resultou no surgimento de uma nova onda de protocolos de reputação variável. Como as pontes entre cadeias atendiam a um conjunto cada vez mais valioso de ativos do usuário, era apenas uma questão de tempo até que hackers e atores mal-intencionados notassem.

De modo geral, os hackers têm como alvo os DNCBs porque podem explorar as deficiências dos protocolos projetados por equipes de desenvolvimento inexperientes. Um hacker experiente pode facilmente tirar proveito de erros na lógica ou lacunas embutidas na criptografia e design de um protocolo mal projetado.

Isso nos leva aos dias de hoje: o resultado de vários ataques a pontes de cadeia cruzada. Outro olho negro em uma indústria desgastada pela batalha. Para recapitular, apenas no mês de julho de 2021:

  • O ChainSwap sofreu um hack em 2 de julho, no valor de aproximadamente US $ 800.000 em ativos do usuário.
  • Os pools de liquidez do AnySwap V3 sofreram um hack no dia 10 de julho, no valor de quase $ 8 milhões em $ USDC e $ MIM. AnySwap é um DEX de cadeia cruzada alimentado pela Fusion Network.
  • O ChainSwap sofreu outro hack, apenas 9 dias após o primeiro hack. Desta vez, vale US $ 4 milhões em ativos de usuário. ChainSwap é uma plataforma apoiada pela Alameda que faz a ponte entre Ethereum e Binance Smart Chain.

O objetivo principal deste editorial é educar e apresentar, em detalhes relativos, dois elementos frequentemente ignorados-ainda-vitais de pontes de cadeia cruzada descentralizadas: o número aleatório ‘k’ envolvido em Secure Multi-Party Computation (SMPC) e seus derivado ‘R’.

Alguns dos tokens ChainSwap explorados em seu hack de 2 de julho. Fonte: CoinGecko

O AnySwap Hack: Dois nem sempre é melhor que um

Alegadamente, o hack do AnySwap aconteceu porque duas transações separadas foram assinadas usando o mesmo valor ‘R’. O hacker usou essas duas assinaturas para fazer engenharia reversa da chave privada que controlava a conta MPC de cadeia cruzada do AnySwap e roubou os fundos dos usuários.

Mas o que, exatamente, é um valor ‘R’?

O que é ‘R’ – o calcanhar de Aquiles da segurança da conta

Uma das primeiras lições que todos no blockchain aprendem é que os fundos em sua carteira são controlados por sua chave privada.

Todos vocês já ouviram a frase: “nem suas chaves, nem suas moedas”. Esse idioma significa que qualquer indivíduo que tenha uma chave privada de carteira tem controle total sobre os ativos dessa carteira. Na verdade, a única coisa necessária para transferir fundos de uma conta para outra é assinar uma transação com a chave privada dessa conta.

Atualmente, o algoritmo de assinatura digital padrão usado em blockchains é o Algoritmo de Assinatura Digital da Curva Elíptica (ECDSA).

ECDSA pertence à categoria “não determinística” dos algoritmos de assinatura digital. Ao contrário dos algoritmos “determinísticos” que sempre fornecem a mesma saída dada uma entrada particular, os algoritmos “não determinísticos” podem produzir saídas diferentes, mesmo se dados a mesma entrada. Para ECDSA, isso significa que o mesmo conjunto de dados, ou transação, terá várias assinaturas legais.

Cada vez que uma transação é assinada usando ECDSA, um número aleatório criptograficamente seguro ‘k’ é gerado. ‘k’ é então usado para calcular um ponto na curva elíptica que, por sua vez, é usado para calcular o valor ‘R’. É crucial que um novo número aleatório ‘k’ seja gerado cada vez que uma transação for assinada usando ECDSA.

Se o mesmo ‘k’ for usado para assinar várias transações, o valor ‘R’ de duas transações será o mesmo e a chave privada vazará. Isso é conhecido como uma colisão de valor ‘k’ e é o que causou o hack do PS3 da Sony no final de 2010. É também o que causou o hack do AnySwap.

A seguir, vamos examinar como o hacker AnySwap fez a engenharia reversa da chave privada que controlava a conta MPC de cadeia cruzada do AnySwap para roubar os fundos dos usuários.

Definitivamente, dois nem sempre são melhores do que um

Considere o que acontece quando duas transações são assinadas usando o mesmo número aleatório ‘k’. Como ‘k’ é usado para derivar ‘R’, o valor ‘R’ das duas transações também será o mesmo. Vamos chamar essas duas assinaturas de (s1) e (s2).

Por ECDSA, as equações que representam essas duas transações são:

onde S1, S2 e ‘R’ representam dados de assinatura e representam dados de transação. Todos esses dados são visíveis publicamente no blockchain. Isso deixa dois parâmetros desconhecidos restantes: o número aleatório ‘k’ e a chave privada da conta.

Aqueles que se lembram de sua álgebra do ensino médio saberão imediatamente como resolver os parâmetros desconhecidos usando as duas equações. A chave privada sk pode, portanto, ser escrito como:

img2O hacker AnySwap percebeu que duas transações tinham o mesmo valor ‘R’, o que implica que o mesmo número aleatório ‘k’ foi usado em ambas. Isso permitiu ao hacker fazer a engenharia reversa da chave privada que controla a conta MPC de cadeia cruzada do AnySwap usando álgebra simples e roubar os ativos dos usuários.

O erro crítico foi que o mesmo número aleatório ‘k’ foi usado em várias transações. Claramente, ‘k’ não foi gerado aleatoriamente! Então, como isso poderia ter sido evitado?

A necessidade de uma computação multipartidária segura

Quando comparado com as assinaturas de transação básicas, Secure Multi-Party Computation (SMPC) é de fato bastante complexo. No entanto, vale a pena o esforço extra. Se SMPC – que é muito diferente de assinaturas múltiplas – é usado corretamente para gerar números aleatórios reais, não há risco de o número aleatório ‘k’ ser exposto.

Ao aproveitar o SMPC, o agente de assinatura não é mais uma pessoa individual, mas várias pessoas trabalhando em conjunto para assinar transações.

Com assinaturas de transação básicas, um verdadeiro gerador de números aleatórios por si só é suficiente para gerar o valor ‘R’ e garantir a segurança. No entanto, como o SMPC envolve várias partes não relacionadas, sempre há a ameaça de que uma ou mais dessas partes sejam mal-intencionadas.

Como tal, não é razoável permitir que uma única pessoa gere o valor ‘R’ sozinha, pois pode ser um agente malicioso. Se eles controlarem sozinhos o número aleatório ‘k’ e, por sua vez, o valor ‘R’, eles poderão fazer a engenharia reversa da chave privada da conta e roubar ativos. Portanto, três princípios devem ser seguidos ao usar SMPC para gerar o valor ‘R’:

  1. O valor ‘R’ não pode ser gerado por um único indivíduo;
  2. Nenhum indivíduo pode saber o número aleatório ‘k’ usado para derivar o valor ‘R’;
  3. O número aleatório ‘k’ deve ser suficientemente aleatório para ser imparcial e imprevisível.

Em termos leigos, SMPC requer um grupo de pessoas para trabalharem juntas em uma tarefa sem saber no que estão trabalhando, nem com quem estão trabalhando.

SMPC Standard-Setter: Wanchain’s Publicly Verifiable Secret Sharing Design

As pontes de cadeia cruzada de Wanchain contam com um mecanismo exclusivo que usa SMPC para manter ativos de cadeia cruzada bloqueados em contas gerenciadas por 25 partes anônimas chamadas de nós Storeman. O número de nós Storeman pode ser aumentado conforme necessário.

Ao assinar transações da conta bloqueada, o valor ‘R’ é determinado em conjunto por esses 25 nós do Storeman por meio de um processo conhecido como Compartilhamento de Segredo Publicamente Verificável. Este processo garante que duas transações nunca terão o mesmo valor ‘R’.

As etapas específicas que esses 25 nós Storeman realizam são as seguintes:

  1. Cada nó Storeman (Pi) gera um número aleatório ‘ki’ localmente usando um gerador de número aleatório verdadeiro;
  2. Cada nó Storeman (Pi) compartilha seu número aleatório ‘ki’ com os outros nós por meio de um canal seguro usando o compartilhamento secreto de Shamir.
    O compartilhamento secreto de Shamir é um esquema de compartilhamento secreto projetado para compartilhar um segredo de forma distribuída. O segredo é dividido em várias partes, chamadas de compartilhamentos. O segredo pode ser reconstruído usando um número mínimo de compartilhamentos. O compartilhamento secreto de Shamir é frequentemente usado em criptografia.
  3. Depois de receber os compartilhamentos secretos de outros nós, cada nó Storeman coleta os compartilhamentos secretos e os multiplica pelo ponto de base da curva elíptica e transmite o resultado;
  4. Cada nó Storeman executa a interpolação de Lagrange usando os dados de transmissão para obter um ponto de curva elíptica cuja abscissa é o valor ‘R’.

Embora o processo acima seja bastante complicado, o conceito central é bastante simples. O valor ‘R’ é determinado em conjunto por 25 nós de Storeman. Cada nó Storeman contribui com parte do número aleatório criptografado ‘k’. O valor ‘R’ é então determinado por meio de operações criptográficas.

Em outras palavras, os 25 nós de Storeman estão trabalhando juntos sem saber no que estão trabalhando, nem quem são os outros nós de Storeman.

Compartilhamento de segredo publicamente verificável: por que é crítico

O compartilhamento secreto publicamente verificável garante que:

  1. É impossível que duas transações tenham o mesmo valor R

Existem duas razões principais para isso. Primeiro, o valor ‘R’ é determinado em conjunto por 25 nós de Storeman, ao invés de um indivíduo. Em teoria, enquanto houver um único nó honesto, o valor ‘R’ será aleatório. Em segundo lugar, a contribuição de cada nó Storeman é gerada pelo verdadeiro gerador de números aleatórios.

Combinadas, duas transações só terão o mesmo valor ‘R’ se a soma dos números aleatórios selecionados por todos os 25 nós de Storeman for a mesma em duas transações. A probabilidade de isso ocorrer é 2 ^ (- 256). É menos provável que você seja atingido por um meteorito agora, enquanto lê esta frase.

  1. O número aleatório ‘k’ usado para derivar o valor ‘R’ permanece oculto

Conforme demonstrado anteriormente, uma vez que o número aleatório ‘k’ é conhecido, a chave privada pode sofrer engenharia reversa. Ao assinar transações da conta bloqueada, cada nó Storeman gera apenas uma parte do número aleatório ‘k’. Como cada compartilhamento está transmitindo por meio de canais seguros, nenhum nó Storeman pode recuperar o valor total do número aleatório ‘k’.

Em outras palavras, graças ao design SMPC de Wanchain, o número aleatório ‘k’ usado para derivar o valor ‘R’ sempre permanece oculto. As contas bloqueadas usadas nas pontes de cadeia cruzada líderes do setor de Wanchain são extremamente seguras. Não há possibilidade de vazamento da chave privada.

Veredito

A equipe de P&D da Wanchain discorda que o hack AnySwap representa um risco geral para outros projetos que adotam o SMPC. A equipe de P&D da Wanchain, em alinhamento com outros desenvolvedores em toda a indústria que implementaram o SMPC, não vê as vulnerabilidades ou erros que permitiram o hack do AnySwap como um risco geral.

A equipe também deseja enfatizar o papel importante que os números aleatórios desempenham no blockchain. Os números aleatórios não são usados ​​apenas com o propósito de assinar transações. Eles são usados ​​em vários níveis de design técnico e são componentes importantes do consenso de PoS e algoritmos de shard, que determinam diretamente a segurança de uma rede blockchain.

A geração eficiente de números aleatórios confiáveis ​​não é uma tarefa simples. É o Santo Graal de áreas inteiras de matemática e criptografia. Pessoas brilhantes dedicaram suas vidas e suas mentes para otimizar a geração de números aleatórios.

Os desenvolvedores de blockchain em todo o mundo precisam continuar esta tradição e desenvolver algoritmos de geração de números aleatórios melhor distribuídos, enquanto continuam a otimizar a geração de números aleatórios na cadeia. O futuro do DeFi – e de fato do blockchain como um todo – será construído com base no trabalho feito hoje.

Divulgação: este artigo foi escrito pela equipe de P&D da Wanchain.

OFERTA ESPECIAL (patrocinada)

Binance Futures 50 USDT GRÁTIS Voucher: Use este link para se registrar e obter 10% de desconto nas taxas e 50 USDT ao negociar 500 USDT (oferta limitada).

Oferta especial PrimeXBT: Use este link para se registrar e inserir o código POTATO50 para obter um bônus de 50% grátis em qualquer depósito de até 1 BTC.

LEIA TAMBÉM

DEIXE UMA RESPOSTA

Por favor digite seu comentário!
Por favor, digite seu nome aqui

Últimas Noticias