paint-brush
Asegurar lo impredecible: tecnología de números aleatorios en juegos Web3por@felixarpa
1,065 lecturas
1,065 lecturas

Asegurar lo impredecible: tecnología de números aleatorios en juegos Web3

por Felix Xu6m2024/01/16
Read on Terminal Reader

Demasiado Largo; Para Leer

En este artículo, exploramos el papel que juega la aleatoriedad en Web3, si es posible vencer a los generadores de números aleatorios (RNG) y cómo descifrar los RNG.
featured image - Asegurar lo impredecible: tecnología de números aleatorios en juegos Web3
Felix Xu HackerNoon profile picture
0-item

Todo jugador quiere superar las probabilidades. Pero pocos lo hacen realmente. ¿Alguna vez te has preguntado cómo se puede vencer a las máquinas tragamonedas de los casinos? ¿O cómo ganar en juegos Web3 que dependen del azar? En este artículo, exploramos el papel que juega la aleatoriedad en Web3, si es posible vencer a los generadores de números aleatorios (RNG) y cómo descifrar los RNG.


En la vasta extensión de Web3, la aleatoriedad no es sólo una casualidad. Es un elemento fundamental en varios escenarios, que influye en resultados que van desde experiencias de juego hasta funcionalidades críticas de blockchain.

Donde la aleatoriedad juega un papel en Web3

En Web3, la aleatoriedad opera como una fuerza fundamental que influye en varios aspectos. Un dominio destacado se encuentra dentro de la esfera de los juegos, donde la posibilidad de revelar elementos raros del juego en ubicaciones específicas depende de los mecanismos de los generadores de números aleatorios.


Estos encuentros aleatorios a menudo dictan la experiencia gratificante de los jugadores al derrotar a sus oponentes.


La lotería es un ejemplo por excelencia de aleatoriedad, que requiere un proceso inequívocamente transparente y verificablemente aleatorio, especialmente dentro del ecosistema Web3, donde la equidad y la apertura son primordiales. De lo contrario, el sorteo de lotería podría favorecer sólo a grupos o jugadores específicos.


Además, la selección aleatoria de productores de bloques a través de RNG es crucial en ciertas cadenas de bloques de capa uno. Si este proceso de selección carece de aleatoriedad verificable y muestra patrones discernibles, los productores de bloques podrían explotar esto en su beneficio, produciendo estratégicamente bloques que sirvan a sus intereses. Tales acciones comprometen la seguridad de la red, lo que subraya el papel fundamental de los mecanismos de selección verdaderamente aleatorios e imparciales en las operaciones de la cadena de bloques Web3.


Si bien la aleatoriedad juega un papel tan importante en los juegos Web3 y en el mundo autónomo, es crucial diferenciar entre los generadores de números pseudoaleatorios (PRNG), que utilizan algoritmos que pueden producir patrones predecibles, y los verdaderos generadores de números aleatorios (TRNG) que utilizan procesos físicos. para mayor seguridad. La mayoría de las vulnerabilidades de RNG en Web3 surgen de la naturaleza determinista de los PRNG.

Por qué es posible predecir números aleatorios

Predecir números aleatorios es una hazaña plausible debido a vulnerabilidades y patrones específicos dentro de los PRNG. El proceso de generación de PRNG sigue patrones que pueden explotarse si se conocen la semilla inicial (punto de partida) y el estado (condición actual) del generador.


Profundicemos en lo que significan "semilla" y "estado" en este contexto. La semilla, un insumo crítico, inicia el proceso de generación de números aleatorios. Puede ser algo tan simple como la hora actual. El estado se refiere a la condición actual del generador, que evoluciona con cada número generado. Por lo tanto, si conoce el estado inicial, puede predecir toda la secuencia de números que seguirá. Esta naturaleza determinista plantea un riesgo significativo en escenarios que requieren aleatoriedad de alta seguridad.


Cómo funciona el GNA


Además, el uso de fuentes centralizadas para RNG introduce vulnerabilidades adicionales. Los sistemas centralizados se convierten en puntos únicos de falla, lo que los convierte en objetivos principales para ataques maliciosos. Los incidentes históricos han demostrado que los ataques de fuerza bruta pueden comprometer estos sistemas.


Los atacantes pueden inundar el servidor central con numerosas conjeturas aleatorias y realizar ajustes incrementales para afinar sus predicciones, aumentando en última instancia su precisión a la hora de adivinar el siguiente número aleatorio generado.


Estas vulnerabilidades enfatizan la necesidad de soluciones RNG más seguras y descentralizadas en diversas aplicaciones, especialmente dentro del panorama Web3, donde la integridad y la aleatoriedad de los datos son de suma importancia.

Explotación de vulnerabilidades de RNG: métodos teóricos

Encontrar la semilla mediante pruebas de hipótesis

El paso inicial para explotar un RNG es descubrir la semilla, que es el punto de partida para la generación de números. Este proceso implica formular y probar varias hipótesis sobre posibles fuentes de semillas. Por ejemplo, si la hipótesis para la semilla es el momento de la operación RNG, entonces generar números en momentos consistentes y analizar los resultados en busca de patrones podría confirmar o refutar esta hipótesis. Se pueden aplicar técnicas estadísticas avanzadas para detectar patrones sutiles que podrían no ser evidentes de inmediato, aumentando así la precisión de la predicción de semillas.


Análisis de Estado e Ingeniería Inversa

Más allá de identificar la semilla, es crucial comprender las transiciones de estado dentro del algoritmo RNG. Al analizar cómo cambia el estado con cada número generado, es posible aplicar ingeniería inversa al algoritmo RNG. Este método implica técnicas matemáticas y computacionales sofisticadas, incluido el análisis algorítmico y potencialmente ingeniería inversa criptográfica, dependiendo de la complejidad del RNG.


Aprovechando el aprendizaje automático para el reconocimiento de patrones

El aprendizaje automático, un subconjunto de la inteligencia artificial (IA), destaca por descifrar patrones complejos en grandes conjuntos de datos. Esta capacidad va más allá del simple reconocimiento de patrones, permitiendo que el algoritmo aprenda y se adapte sin programación explícita. Un ejemplo destacado de esto es AlphaGo de Google. Este sistema de inteligencia artificial, entrenado en el juego de mesa Go, dominó el juego aprendiendo de grandes cantidades de datos del juego y finalmente superó a los campeones mundiales al anticipar sus movimientos.


Este principio es directamente aplicable al análisis de los resultados del RNG. Los algoritmos de aprendizaje automático pueden procesar conjuntos de datos extensos de números generados por RNG para detectar patrones subyacentes, incluidas irregularidades sutiles y restablecimientos algorítmicos que podrían no ser evidentes mediante los métodos de análisis tradicionales.


Al entrenarse en un conjunto de datos suficientemente grande, los modelos de aprendizaje automático pueden identificar la naturaleza cíclica de estos RNG, incluidos sus puntos de reinicio y patrones de salida. Comprender estos patrones permite la predicción, y potencialmente la manipulación, de resultados futuros de RNG. Esta capacidad es particularmente crucial cuando los RNG se utilizan en entornos donde la previsibilidad puede generar vulnerabilidades de seguridad o ventajas injustas, como en juegos o aplicaciones criptográficas.


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


Análisis criptográfico

El análisis criptográfico de RNG es un enfoque multifacético que implica examinar cada aspecto de su diseño e implementación criptográficos. Este proceso comienza con un examen exhaustivo de las fuentes de entropía, que son la materia prima de la aleatoriedad. La calidad de la entropía, su método de recolección y la velocidad a la que se recolecta son factores cruciales; la entropía de baja calidad o los métodos de recopilación predecibles pueden debilitar la producción del RNG.


A continuación, se examina la resistencia del propio algoritmo criptográfico a ataques conocidos. Esto incluye análisis estadístico para detectar sesgos o patrones que surjan con el tiempo y probar el algoritmo con técnicas criptoanalíticas conocidas como el criptoanálisis diferencial o el criptoanálisis lineal. El objetivo aquí es garantizar que el algoritmo no produzca resultados que estén influenciados de manera desproporcionada por ciertos bits de la semilla o estado.


Además, la implementación del RNG en software o hardware puede introducir vulnerabilidades adicionales. Esta parte del análisis implica auditorías de código para encontrar errores o descuidos que puedan comprometer la aleatoriedad. Los atacantes pueden explotar fallas como una mezcla insuficiente de entropía, un incremento predecible de las variables de estado o una siembra inadecuada. El análisis criptográfico también se extiende al entorno operativo del RNG, verificando vulnerabilidades de canales laterales como ataques de sincronización o análisis de potencia, donde un atacante podría inferir estados internos observando características indirectas del sistema.

RNG verificablemente aleatorios y a prueba de manipulaciones

El proceso comienza cuando el Contrato de Adaptador Randcast recibe una solicitud de aleatoriedad de un juego DApp o Web3. Luego inicia una tarea BLS-TSS (Boneh-Lynn-Shacham Threshold Signature Scheme), enviando un evento en cadena a la red ARPA, que consta de múltiples nodos capaces de realizar estas tareas.


La red reconoce este evento y completa la tarea, devolviendo posteriormente la firma como semilla aleatoria al Contrato de Adaptador Randcast. Luego, esta semilla se transforma en el tipo de aleatoriedad deseado, ya sea una tirada de dados, una matriz barajada o cualquier otra forma, y se utiliza en la lógica del juego DApp o Web3 posterior.


En qué se diferencia Randcast

El enfoque de Randcast es particularmente vital en escenarios donde la aleatoriedad confiable es esencial. En el entorno determinista de blockchain, donde los resultados de los contratos inteligentes dependen de la entrada, la generación de un número aleatorio se puede manipular fácilmente. Por ejemplo, los mineros podrían aprovechar el uso de un hash de bloque o una marca de tiempo como fuente de aleatoriedad para su beneficio. Randcast evita este problema generando números aleatorios a través de una red descentralizada, garantizando transparencia y verificabilidad en el proceso.


Un aspecto crucial del diseño de Randcast es su resistencia a la manipulación. La generación tradicional de aleatoriedad de entidad única plantea el riesgo de manipulación. Randcast evita este problema utilizando las capacidades colectivas de la red ARPA. A través de las tareas de firma BLS Threshold, garantiza que ningún nodo individual pueda influir en el resultado final de la aleatoriedad. Este enfoque descentralizado no sólo mejora la seguridad sino que también mantiene la integridad e imparcialidad de la aleatoriedad generada, lo que convierte a Randcast en una herramienta indispensable en el arsenal del desarrollador Web3.


Enlaces de referencia