El número aleatorio se ha utilizado para todo, desde criptografía hasta loterías y juegos. Las cadenas de bloques también tienen una estrecha relación con la aleatoriedad porque buscan la justicia de ella. El protocolo de consenso de prueba de trabajo ampliamente implementado se basa en una búsqueda criptográfica que busca valores aleatorios específicos. Los dapps florecientes, como la lotería en cadena o las cajas ciegas NFT, se basan en entradas aleatorias e imparciales para brindar una experiencia más creíble. Por lo tanto, a ARPA le gustaría construir un generador de números aleatorios descentralizado (RNG) seguro, robusto y verificable para brindar aleatoriedad esencial al mundo blockchain.
Ya sea en el mundo físico o en el mundo cibernético, existen muchos métodos para producir aleatoriedad. En un nivel alto, estas formas se pueden clasificar en dos tipos, las verdaderamente aleatorias y las pseudoaleatorias. El número verdaderamente aleatorio aprovecha el ruido físico en el mundo real, que no es práctico de usar en cadena. En términos del número pseudoaleatorio, existen muchos algoritmos alternativos, como el código de autenticación de mensajes hash con clave pública (HMAC) y la firma de umbral. Para determinar la primitiva utilizada para producir números aleatorios, primero veremos las propiedades fundamentales de un RNG.
Singularidad y determinación
No se espera generar y seleccionar repetidamente un número aleatorio sesgado para las aplicaciones sensibles a la seguridad que dependen de la aleatoriedad. Los adversarios elegirían cuidadosamente el número aleatorio para obtener ganancias. Un RNG con singularidad puede mitigar este riesgo, lo que significa que cualquiera que consuma el número aleatorio puede verificar su legitimidad con certeza. En cuanto al RNG descentralizado, la unicidad asegura que el número aleatorio solo esté relacionado con el conjunto completo de nodos de generación, pero no con el subconjunto.
La singularidad es un requisito más estricto que la determinación. La determinación solo requiere que el procedimiento de generación aleatoria no implique aleatoriedad. En comparación, la singularidad debe convencer a los consumidores de que el número aleatorio no está sesgado. Por ejemplo, ECDSA puede redefinirse para satisfacer la determinación pero no la unicidad.
No interactividad
En la cadena de bloques, es natural generar números aleatorios de forma descentralizada. Sin embargo, la sobrecarga de comunicación se convertirá en una limitación o en un solo punto de falla de todo el sistema. Se espera que implique solo una ronda de comunicación unidireccional para cada nodo durante la generación de números aleatorios. Implica que las acciones de números aleatorios aportados por las partes deben poder agregarse de una manera asincrónica como la firma múltiple.
Disponibilidad
La disponibilidad de servicios básicos como RNG realmente importa. Mientras tanto, no podemos contar con el tiempo de actividad de los nodos del sistema descentralizado. Por tanto, el algoritmo debería proporcionar una disponibilidad perfecta basada en los nodos de cálculo inestables. La firma de umbral o multi-sig son métodos ideales que toleran fallas y tiempo de inactividad, especialmente las asincrónicas. Cuanto menor sea la proporción de nodos necesarios en el grupo, mayor será la disponibilidad.
Teniendo en cuenta los factores mencionados anteriormente, finalmente elegimos la firma BLS umbral como el algoritmo a largo plazo que genera números aleatorios. En primer lugar, ETH 2.0 cambiará al estándar BLS12–381 como esquema de firma principal, lo que facilita la ejecución de aplicaciones basadas en BLS en Ethereum. Cualquier otra cadena de bloques pública que admita el esquema BLS también será compatible con nuestro diseño. En segundo lugar, BLS es una instancia de criptografía basada en emparejamiento. La bilinealidad del emparejamiento ofrece una propiedad similar, como el cifrado homomórfico, en el que los cálculos sobre diferentes estructuras matemáticas se pueden mapear entre sí. Esto hará que el número aleatorio sea agregable y luego el procedimiento de generación sea asincrónico. Para obtener más detalles sobre emparejamientos y curvas elípticas, consulte la introducción de Vitalik. Para conocer la especificación BLS, consulte el documento. Por último, pero no menos importante, la versión de umbral de la firma BLS es robusta como sistema descentralizado. Cada vez que se solicita al sistema un número aleatorio, como máximo la mitad de los nodos del grupo deben responder. Con un número de miembros del grupo elegido deliberadamente, la disponibilidad y la seguridad del sistema pueden cumplir con el requisito.
Tabla 1. Comparación entre la generación de números aleatorios verificables
La construcción del umbral BLS es bastante similar a ejecutar BLS en una forma de cálculo multipartito (MPC). Dado un conjunto de nodos de cálculo involucrados en el RNG verificable de ARPA, los recursos compartidos de claves secretas se distribuyen mediante el esquema de intercambio de secretos verificables de Feldman en la fase de generación de claves. Luego, cada parte calcula y difunde sus recursos compartidos de clave pública. La clave pública del grupo se puede recuperar de esos recursos compartidos mediante la interpolación de Lagrange. Esta clave representa la identidad de este conjunto de nodos y verifica el número aleatorio generado. Durante la vida útil del RNG, la clave secreta del grupo nunca se recuperará, tanto en la generación de claves como en la generación de números aleatorios.
Figura 1. BLS original frente a BLS umbral
Gracias a la bilinealidad de los emparejamientos, la fase de generación de números aleatorios es la misma que la firma BLS original. Al recibir la semilla, cada nodo calcula su número aleatorio compartido localmente y lo transmite. Una vez validada la legitimidad de estas acciones, se agregan interpolando. El resultado final es la firma BLS umbral de la semilla y luego puede ser verificado por la clave pública del grupo. Cabe señalar que el resultado sigue siendo el mismo sin importar qué subconjunto de nodos contribuya con las cuotas de números aleatorios.
Equipados con la firma BLS de umbral, podemos redactar la arquitectura del RNG verificable ARPA. Cualquiera que ejecute el nodo de cálculo ARPA es bienvenido al sistema RNG. Los nodos del sistema se agrupan en función del número aleatorio generado previamente por el sistema. Una vez que los grupos están configurados, ejecutan la generación de claves distribuidas y cargan la clave pública del grupo en la cadena de bloques. Después de la inicialización, cualquier nueva solicitud de número aleatorio se asignará a uno de los grupos. Cuando el grupo genere y apruebe el número aleatorio, se enviará al contrato inteligente que lo verifica con la clave pública del grupo. Aprovechando la infraestructura ETH 2.0, la verificación debe ser eficiente y económica.
Robustez del sistema
El parámetro de los grupos está diseñado para cumplir con los requisitos de disponibilidad y seguridad. Si el esquema de intercambio secreto empleado es la mayoría honesta, entonces el número total de miembros del grupo es n = 2t + 1, donde t es el umbral. Si establecemos la probabilidad de falla del nodo de cálculo como p, la probabilidad de falla del RNG se puede escribir como:
Luego, podemos calcular la falla de nodo tolerable en diferentes tamaños de grupo dada una tasa de falla del sistema de alrededor del 0.01%. Se puede ver que la proporción se reducirá al aumentar el tamaño del grupo.
Tabla 2. Fallo tolerable del nodo frente al fallo del sistema
Además del análisis matemático, un ecosistema afiliado puede ayudar a fomentar la participación y castigar los actos maliciosos.