paint-brush
Protegendo o imprevisível: tecnologia de números aleatórios em jogos Web3by@felixarpa
967
967

Protegendo o imprevisível: tecnologia de números aleatórios em jogos Web3

Felix Xu6m2024/01/16
Read on Terminal Reader

Neste artigo, exploramos o papel que a aleatoriedade desempenha na Web3, se é possível vencer geradores de números aleatórios (RNGs) e como fazer para quebrar RNGs.
featured image - Protegendo o imprevisível: tecnologia de números aleatórios em jogos Web3
Felix Xu HackerNoon profile picture
0-item

Todo jogador quer vencer as probabilidades. Mas poucos realmente o fazem. Você já se perguntou como as máquinas caça-níqueis nos cassinos podem ser derrotadas? Ou como ganhar em jogos Web3 que dependem do acaso? Neste artigo, exploramos o papel que a aleatoriedade desempenha na Web3, se é possível vencer geradores de números aleatórios (RNGs) e como fazer para quebrar RNGs.


Na vasta extensão da Web3, a aleatoriedade não é apenas um acaso. É um elemento fundamental em vários cenários, influenciando resultados que vão desde experiências de jogos até funcionalidades críticas de blockchain.

Onde a aleatoriedade desempenha um papel na Web3

Na Web3, a aleatoriedade opera como uma força fundamental que influencia vários aspectos. Um domínio proeminente está na esfera dos jogos, onde a chance de revelar itens raros do jogo em locais específicos depende dos mecanismos dos geradores de números aleatórios.


Esses encontros aleatórios geralmente ditam a experiência gratificante dos jogadores ao derrotar os oponentes.


A loteria é um exemplo quintessencial de aleatoriedade, exigindo um processo inequivocamente transparente e verificavelmente aleatório, especialmente dentro do ecossistema Web3, onde a justiça e a abertura são fundamentais. Caso contrário, o sorteio da loteria poderá favorecer apenas grupos ou jogadores específicos.


Além disso, a seleção aleatória de produtores de blocos através de RNGs é crucial em certas blockchains da camada um. Se este processo de selecção carecer de aleatoriedade verificável e apresentar padrões discerníveis, os produtores de blocos poderão explorar isto em seu benefício, produzindo estrategicamente blocos que sirvam os seus interesses. Tais ações comprometem a segurança da rede, sublinhando o papel crítico dos mecanismos de seleção verdadeiramente aleatórios e imparciais nas operações de blockchain da Web3.


Embora a aleatoriedade desempenhe um papel tão importante nos jogos Web3 e no mundo autônomo, é crucial diferenciar entre geradores de números pseudo-aleatórios (PRNGs), que usam algoritmos que podem produzir padrões previsíveis, e geradores de números aleatórios verdadeiros (TRNGs) que usam processos físicos. para maior segurança. A maioria das vulnerabilidades de RNG na Web3 surgem da natureza determinística dos PRNGs.

Por que é possível prever números aleatórios

Prever números aleatórios é um feito plausível devido a vulnerabilidades e padrões específicos dentro dos PRNGs. O processo de geração de PRNGs segue padrões que podem ser explorados se a semente inicial (ponto de partida) e o estado (condição atual) do gerador forem conhecidos.


Vamos nos aprofundar no que significam “semente” e “estado” neste contexto. A semente, uma entrada crítica, inicia o processo de geração de números aleatórios. Pode ser algo tão simples como a hora atual. O estado refere-se à condição atual do gerador, que evolui a cada número gerado. Portanto, se você conhecer o estado inicial, poderá prever toda a sequência de números que se seguirá. Esta natureza determinística representa um risco significativo em cenários que exigem aleatoriedade de alta segurança.


Como funciona o RNG


Além disso, a utilização de fontes centralizadas para RNG introduz vulnerabilidades adicionais. Os sistemas centralizados tornam-se pontos únicos de falha, tornando-os alvos principais de ataques maliciosos. Incidentes históricos demonstraram que ataques de força bruta podem comprometer estes sistemas.


Os invasores podem inundar o servidor central com inúmeras suposições aleatórias e fazer ajustes incrementais para ajustar suas previsões, aumentando, em última análise, sua precisão na adivinhação do próximo número aleatório gerado.


Estas vulnerabilidades enfatizam a necessidade de soluções RNG mais seguras e descentralizadas em diversas aplicações, especialmente no cenário Web3, onde a integridade e a aleatoriedade dos dados são de extrema importância.

Explorando vulnerabilidades RNG: métodos teóricos

Encontrando a semente por meio de testes de hipóteses

O passo inicial na exploração de um RNG é descobrir a semente, que é o ponto de partida para a geração de números. Este processo envolve a formulação e teste de várias hipóteses sobre potenciais fontes de sementes. Por exemplo, se a hipótese para a semente for o momento da operação do RNG, então gerar números em momentos consistentes e analisar os resultados em busca de padrões poderia confirmar ou refutar esta hipótese. Técnicas estatísticas avançadas podem ser aplicadas para detectar padrões sutis que podem não ser imediatamente aparentes, aumentando assim a precisão da previsão de sementes.


Análise de Estado e Engenharia Reversa

Além de identificar a semente, é crucial compreender as transições de estado dentro do algoritmo RNG. Ao analisar como o estado muda com cada número gerado, é possível fazer engenharia reversa no algoritmo RNG. Este método envolve técnicas matemáticas e computacionais sofisticadas, incluindo análise algorítmica e engenharia reversa potencialmente criptográfica, dependendo da complexidade do RNG.


Aproveitando o aprendizado de máquina para reconhecimento de padrões

O aprendizado de máquina, um subconjunto da inteligência artificial (IA), é excelente na decifração de padrões complexos em grandes conjuntos de dados. Essa capacidade vai além do simples reconhecimento de padrões, permitindo que o algoritmo aprenda e se adapte sem programação explícita. Um exemplo proeminente disso é o AlphaGo do Google. Este sistema de IA, treinado no jogo de tabuleiro Go, dominou o jogo aprendendo com grandes quantidades de dados do jogo, eventualmente superando os campeões mundiais ao antecipar seus movimentos.


Este princípio é diretamente aplicável à análise dos resultados do RNG. Algoritmos de aprendizado de máquina podem processar extensos conjuntos de dados de números gerados por RNG para detectar padrões subjacentes, incluindo irregularidades sutis e redefinições algorítmicas que podem não ser aparentes por meio de métodos de análise tradicionais.


Ao treinar em um conjunto de dados suficientemente grande, os modelos de aprendizado de máquina podem identificar a natureza cíclica desses RNGs, incluindo seus pontos de reinicialização e padrões de saída. A compreensão desses padrões permite a previsão e, potencialmente, a manipulação de resultados futuros do RNG. Esta capacidade é particularmente crucial quando os RNGs são usados em ambientes onde a previsibilidade pode levar a vulnerabilidades de segurança ou vantagens injustas, como em jogos ou aplicações criptográficas.


Foto de Miguel Á. Padriñán: https://www.pexels.com/photo/dominoes-585293/


Análise Criptográfica

A análise criptográfica de RNGs é uma abordagem multifacetada que envolve o exame minucioso de todos os aspectos de seu design e implementação criptográfica. Este processo começa com um exame minucioso das fontes de entropia, que são a matéria-prima da aleatoriedade. A qualidade da entropia, o seu método de recolha e a taxa a que é recolhida são factores cruciais; entropia de baixa qualidade ou métodos de coleta previsíveis podem enfraquecer a produção do RNG.


Em seguida, o próprio algoritmo criptográfico é examinado quanto à resistência a ataques conhecidos. Isso inclui análise estatística para detectar quaisquer preconceitos ou padrões que surjam ao longo do tempo e testar o algoritmo em relação a técnicas criptoanalíticas conhecidas, como criptoanálise diferencial ou criptoanálise linear. O objetivo aqui é garantir que o algoritmo não produza resultados que sejam desproporcionalmente influenciados por certos bits da semente ou do estado.


Além disso, a implementação do RNG em software ou hardware pode introduzir vulnerabilidades adicionais. Esta parte da análise envolve auditorias de código para encontrar bugs ou omissões que possam comprometer a aleatoriedade. Falhas como mistura insuficiente de entropia, incremento previsível de variáveis de estado ou propagação inadequada podem ser exploradas por invasores. A análise criptográfica também se estende ao ambiente operacional do RNG, verificando vulnerabilidades de canal lateral, como ataques de temporização ou análise de energia, onde um invasor pode inferir estados internos observando características indiretas do sistema.

RNGs comprovadamente aleatórios e à prova de adulteração

O processo começa quando o contrato do adaptador Randcast recebe uma solicitação de aleatoriedade de um jogo DApp ou Web3. Em seguida, ele inicia uma tarefa BLS-TSS (Boneh-Lynn-Shacham Threshold Signature Scheme), enviando um evento on-chain para a Rede ARPA, que consiste em vários nós capazes de executar essas tarefas.


A rede reconhece este evento e completa a tarefa, retornando posteriormente a assinatura como semente aleatória para o Contrato do Adaptador Randcast. Essa semente é então transformada no tipo de aleatoriedade desejado - seja uma jogada de dados, uma matriz embaralhada ou qualquer outra forma - e é utilizada na lógica de jogo DApp ou Web3 subsequente.


Como o Randcast é diferente

A abordagem do Randcast é particularmente vital em cenários onde a aleatoriedade confiável é essencial. No ambiente determinístico do blockchain, onde os resultados dos contratos inteligentes dependem de entradas, a geração de um número aleatório pode ser facilmente manipulada. Por exemplo, usar um hash de bloco ou carimbo de data/hora como fonte de aleatoriedade pode ser explorado pelos mineradores em seu benefício. A Randcast contorna esse problema gerando números aleatórios por meio de uma rede descentralizada, garantindo transparência e verificabilidade no processo.


Um aspecto crucial do design do Randcast é a sua resiliência contra adulterações. A geração tradicional de aleatoriedade de entidade única apresenta o risco de manipulação. A Randcast contorna esse problema utilizando os recursos coletivos da Rede ARPA. Por meio de tarefas de assinatura do Limite BLS, ele garante que nenhum nó individual possa influenciar o resultado final da aleatoriedade. Esta abordagem descentralizada não só aumenta a segurança, mas também mantém a integridade e imparcialidade da aleatoriedade gerada, tornando o Randcast uma ferramenta indispensável no arsenal do desenvolvedor Web3.


Links de referência