ETFFIN Finance >> Finanças pessoais curso >  >> Criptomoeda >> Blockchain

Os números aleatórios não mentem:uma análise técnica mais detalhada dos recentes ataques de DeFi

Como as taxas do 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 cadeias.

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 pode ser esperado, 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 um 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:as consequências 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:

  • ChainSwap sofreu um hack em 2 de julho, no valor de aproximadamente $ 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.
  • 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, mas vitais de pontes de cadeia cruzada descentralizadas:o número aleatório 'k' envolvido na Computação Multipartidária Segura (SMPC) e seu derivado 'R'.

The 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:"não são suas chaves, não suas moedas. ” Esse idioma significa que qualquer indivíduo que tenha a chave privada de uma carteira tem controle total sobre os ativos dessa carteira. De fato, 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, Algoritmos “não determinísticos” podem produzir saídas diferentes, mesmo se tiverem 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.

Próximo, 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'. Uma vez que 'k' é usado para derivar 'R', o valor ‘R’ das duas transações também será o mesmo. Vamos chamar essas duas assinaturas (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:

O hacker AnySwap percebeu que duas transações tinham o mesmo valor 'R', implicando que o mesmo número aleatório 'k' foi usado em ambos. 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ções básicas, O Secure Multi-Party Computation (SMPC) é de fato bastante complexo. Contudo, vale bem a pena o esforço extra. Se SMPC - que é muito diferente de assinaturas múltiplas - é usado corretamente para gerar números reais aleatórios, 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ções básicas, um verdadeiro gerador de números aleatórios por si só é suficiente para gerar o valor 'R' e garantir a segurança. Contudo, porque 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 ator malicioso. Se eles sozinhos controlam o número aleatório 'k' e, por sua vez, o valor ‘R’, eles poderão fazer 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 de leigos, O SMPC requer que um grupo de pessoas trabalhe 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 único que usa SMPC para manter os 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, ações chamadas. 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 realiza 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 Storeman estão trabalhando juntos sem saber no que estão trabalhando, nem quem são os outros nós Storeman.

Compartilhamento de segredos publicamente verificáveis:por que isso é 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, contanto que haja um único nó honesto, o valor ‘R’ será aleatório. Segundo, cada contribuição do nó Storeman é gerada pelo verdadeiro gerador de números aleatórios.

Combinado, 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 você 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 é transmitido 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 da indústria 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 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 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.