Para iniciar la Criptosemana 2019, nos complace anunciar una nueva solución a un antiguo problema en la criptografía. Para entender mejor la parte técnica de este problema, consulte la próxima publicación para profundizar más sobre el tema.
Todo, desde la criptografía hasta una gran cantidad de dinero ganado en la lotería y la mecánica cuántica, requiere algún tipo de aleatoriedad. Pero, ¿qué significa exactamente que un número se genere de manera aleatoria y de dónde proviene la aleatoriedad?
La generación de aleatoriedad se remonta a tres mil años atrás, cuando en la edad antigua se hacían rodar “los dados” para determinar el destino. Piense en las loterías -- parece algo simple, ¿verdad? Todos compran sus boletos, eligen seis números y esperan a que una persona encargada los saque al azar de un cesto. Parece una solución infalible. Y luego, en 1980, el presentador del sorteo de la lotería de Pensilvania fue arrestado por usar bolas con mayor peso para elegir el número ganador. Esta lección, junto con la necesidad de contar con otros sistemas complejos para generar números aleatorios, impulsó la creación de generadores de números aleatorios.
Al igual que un juego de lotería selecciona números aleatorios de manera impredecible, un generador de números aleatorios es un dispositivo o software que se encarga de generar secuencias de números de una manera impredecible. A medida que aumenta la necesidad de aleatoriedad, también aumenta la necesidad de una generación constante de números sustancialmente grandes e impredecibles. Esta es la razón por la cual las organizaciones desarrollaron faros de aleatoriedad públicamente disponibles -- servidores que generan secuencias de 512 bits completamente impredecibles (números de aproximadamente 155 dígitos) a intervalos regulares.
Ahora bien, usted podría pensar que el uso de un faro de aleatoriedad para procesos de generación aleatoria, como los que se necesitan para la selección de la lotería, podría hacer que el proceso fuera resiliente ante la manipulación de un adversario, pero no es el caso. Se ha explotado la aleatoriedad de una sola fuente para generar resultados sesgados.
En la actualidad, los faros de aleatoriedad generan números para loterías y auditorías electorales, y ambos afectan tanto las vidas como las fortunas de millones de personas. Lamentablemente, la explotación de un único punto de origen de estos faros ha dado lugar a resultados fraudulentos que beneficiaron a un infiltrado corrupto. Para impedir la explotación, Cloudflare y otros proveedores de faros de aleatoriedad han aunado esfuerzos para ofrecer a los usuarios un quórum de faros aleatorios descentralizados. Después de todo, ¡ocho faros distribuidos de manera independiente a nivel global pueden ser mucho más confiables que uno!
Nos complace presentarle ....
LA LIGA .... DE LA.... ¡¡¡¡¡¡ENTROPÍA!!!!!!
¿Qué es un faro de aleatoriedad?
Un faro de aleatoriedad es un servicio público que proporciona números aleatorios impredecibles a intervalos regulares.
drand (se pronuncia dee-rand) es un faro de aleatoriedad distribuida que fue desarrollado por Nicolas Gailly, con la ayuda de Philipp Jovanovic y Mathilde Raynal. El proyecto drand se originó a partir del trabajo de investigaciónScalable Bias-Resistant Distributed Randomness publicado en 2017 IEEE Symposium on Security and Privacy por Ewa Syta, Philipp Jovanovic,Eleftherios Kokoris Kogias, Nicolas Gailly, Linus Gasser, Ismail Khoffi,Michael J. Fischer, Bryan Ford, del laboratorio de Sistemas decentralizados/distribuidos (DEDIS) en EPFL, Yale University, y Trinity College Hartford, con el apoyo de Research Institute.
Para cada ronda de generación de aleatoriedad, drand proporciona las siguientes propiedades, tal como se especifica en el documento de investigación:
Disponibilidad: la generación de aleatoriedad distribuida se completa correctamente con una alta probabilidad.
Imprevisibilidad: ninguna parte conoce nada sobre el resultado aleatorio de la ronda actual, salvo con una probabilidad insignificante, hasta que un número suficiente de nodos drand muestra sus contribuciones en el protocolo de generación de aleatoriedad.
Imparcialidad: el resultado aleatorio representa un valor aleatorio imparcial y uniforme, con una probabilidad insignificante.
Verificabilidad: el resultado aleatorio es verificable por terceros con respecto a la clave pública colectiva que se calcula durante la configuración de drand. Esto sirve como certificación indeleble de que la serie de nodos drand documentada ejecutó el protocolo para generar el único resultado aleatorio, con una probabilidad insignificante.
La entropía mide la naturaleza impredecible de un número. Para la aleatoriedad, cuanta más entropía mejor, por lo tanto, de ahí viene nuestro nombre, la Liga de la Entropía.
Nuestros miembros fundadores aportan sus fuentes individuales de alta entropía para proporcionar un faro más aleatorio e impredecible para generar valores aleatorios verificables públicamente cada sesenta segundos. El hecho de que el faro drand esté descentralizado y que se haya creado con sistemas criptográficos rudimentarios apropiados y probablemente seguros, aumenta nuestro nivel de confianza de que cuenta con todas las propiedades mencionadas anteriormente.
Esta red global de servidores que generan aleatoriedad garantiza que incluso si algunos servidores están desconectados, el faro sigue generando nuevos números mediante los servidores que permanecen conectados. Incluso si uno o dos de los servidores o sus fuentes de entropía estuvieran comprometidos, el resto aún se asegurará de que la entropía producida de manera conjunta sea totalmente impredecible e imparcial.
¿Quién dirige exactamente este faro? Actualmente, La Liga de la Entropía es un consorcio formado por las siguientes organizaciones globales y colaboradores individuales: Cloudflare, el investigador de Protocol Labs Nicolas Gailly, la Universidad de Chile, la Escuela Politécnica Federal de Lausana (EPFL), Kudelski Security e investigadores de EPFL, Philipp Jovanovic y Ludovic Barman.
Conoce la Liga de la Entropía
LavaRand de Cloudflare: LavaRand obtiene su alta entropía de la pared de lámparas de lava de Cloudflare en nuestra sede de San Francisco. El flujo impredecible de la “lava” dentro de las lámparas se utiliza para alimentar un generador de números pseudoaleatorios criptográficamente seguros (CSPRNG) que genera el valor aleatorio.
URand de EPFL: La potencia de URand proviene del generador de aleatoriedad local que se encuentra presente en cada computadora en /dev/urandom. El aporte de aleatoriedad se recopila a partir de ingresos como pulsaciones de teclado, clics del mouse, tráfico de red, etc. URand agrupa estos ingresos aleatorios para producir una secuencia continua de aleatoriedad.
Sismic Girl de UChile: Seismic Girl extrae una aleatoriedad superverificable de cinco fuentes consultadas cada minuto. Estas fuentes incluyen: mediciones sísmicas de temblores y terremotos en Chile; una transmisión desde una estación de radio local; una selección de publicaciones de Twitter; datos de la cadena de bloques Ethereum; y su propia tarjeta de RNG.
ChaChaRand de Kudelski Security: ChaChaRand utiliza un generador de números aleatorios criptográficos (CRNG) que se basa en el cifrador de flujo ChaCha20.
InterplanetaryRand de Protocol Labs: InterplanetaryRand utiliza el poder de la entropía para garantizar la seguridad del protocolo en el espacio y el tiempo mediante el uso de ruido ambiental y el generador de números pseudoaleatorios (PRNG) de Linux, acompañado por la aleatoriedad de origen de la CPU (RdRand).
Juntos, nuestros héroes se comprometen a salvar internet #savetheinternet al combinar su aleatoriedad para formar un faro de aleatoriedad distribuida a nivel global y verificable desde un punto de vista criptográfico.
Aleatoriedad pública versus privada
Se necesitan diferentes tipos de aleatoriedad para los diferentes tipos de aplicaciones.
El truco para generar claves criptográficas seguras es usar números aleatorios grandes y generados de forma privada que nadie pueda predecir. Con faros de aleatoriedad que generen y anuncien públicamente números aleatorios, los usuarios NO deben utilizar el resultado de un faro de aleatoriedad para sus claves secretas, ya que estos números son accesibles para cualquier persona. Si un atacante puede adivinar el número aleatorio del que se deriva la clave criptográfica privada de un usuario, puede descifrar su sistema y su información confidencial. Esto simplemente significa que los números aleatorios generados por un faro público no son seguros para usar como claves de cifrado: no porque la aleatoriedad sea algo negativo, sino porque esta es pública.
Los clientes que utilizan el faro drand pueden solicitar una aleatoriedad privada de algunos o de todos los nodos drand si desean generar un valor aleatorio que no se anunciará públicamente. Para obtener más información sobre cómo hacerlo, consulte los documentos para desarrolladores en developer docs.
Por otro lado, la aleatoriedad pública a menudo es utilizada por los usuarios que requieren un valor de aleatoriedad que se supone que no es secreto, pero cuya generación debe ser transparente, razonable e imparcial. Esto resulta ideal para varios propósitos como juegos, loterías y auditoría electoral, donde el auditor y el público exigen transparencia en cuanto al momento, al modo y a la equidad con que se generó el valor aleatorio.
La Liga de la Entropía brinda aleatoriedad pública que cualquier usuario puede obtener de leagueofentropy.com. Los usuarios podrán ver el valor de secuencia de 512 bits que se genera cada 60 segundos. ¿Por qué 60 segundos? No hay ninguna razón en particular. En teoría, la generación de aleatoriedad puede tener la rapidez que permite el hardware, pero no es necesaria para la mayoría de los casos prácticos. Los valores generados cada 60 segundos brindan a los usuarios 1440 valores aleatorios en un período de 24 horas.
* RECORDATORIO: ESTA ALEATORIEDAD ES PÚBLICA. NO LA UTILICE PARA CLAVES CRIPTOGRÁFICAS PRIVADAS*
¿Por qué es importante la aleatoriedad pública?
Auditoría electoral
En Estados Unidos, después de la mayoría de las elecciones, se hace una auditoría para verificar que estas elecciones se llevaron a cabo de manera imparcial y transparente. Los sólidos sistemas de auditoría mejoran la confianza de los votantes, ya que los funcionarios cuentan con más herramientas para responder de manera efectiva ante denuncias de fraude y para detectar fallas en el sistema.
Actualmente, la mayoría de los votos y distritos electorales son elegidos al azar por los funcionarios electorales. Este método es potencialmente vulnerable a la imparcialidad de un infiltrado corrupto que podría seleccionar ciertos distritos para presentar un resultado favorito. Incluso en una situación en la que cada distrito electoral haya sido manipulado, mediante el uso de un faro sólido, distribuido y, lo que es más importante, impredecible e imparcial, los auditores electorales pueden confiar en que una pequeña muestra de distritos son suficientes para una auditoría, siempre y cuando un atacante no pueda predecir la selección del distrito.
En Chile, quienes trabajan en encuestas electorales se seleccionan al azar de un grupo de votantes elegibles. El proyecto Random UChile de la Universidad de Chile ha estado trabajando en un prototipo que utiliza su faro de aleatoriedad para este proceso. Alejandro Hevia, director de Random UChile, cree que para la auditoría electoral, la aleatoriedad pública es importante para la transparencia, y que la aleatoriedad distribuida permite que las personas confíen en la improbabilidad de que múltiples contribuyentes al faro se confabulen, en lugar de depositar la confianza en una sola entidad.
Loterías
De 2005 a 2014, el director de seguridad de la información de la Asociación de Loterías Multiestatales, Eddie Tipton, manipuló un generador de números aleatorios y ¡ganó la lotería seis veces!
Tipton pudo predecir los números ganadores al omitir el proceso de propagación aleatorio estándar. Pudo ingresar en la función del código generador de números aleatorios que controlaba la fecha, el día de la semana y la hora. Si estas tres variables no se alineaban, el generador de números aleatorios utilizaba material radiactivo y un contador Geiger para generar una propagación aleatoria. Si las variables se alineaban como se había programado de manera encubierta, lo que generalmente solo sucedía una vez al año, entonces generaría la propagación usando una fórmula de 7 variables que ingresaba en un Mersenne Twister, un generador de números psuedoaleatorios.
Tipton conocía estas 7 variables. Conocía el pequeño grupo de números que podrían ser el valor original. Este conocimiento le permitió predecir los resultados de Mersenne Twister. Con un faro de aleatoriedad distribuida, este fraude puede ser sustancialmente más difícil de cometer, e incluso casi imposible.
Rob Sand, exfiscal general adjunto de Iowa y actual auditor del estado de Iowa que procesó los casos de Tipton, también defiende activamente la mejora de los controles. Él dijo:
“No hay excusa para que una industria que recauda $80 mil millones en concepto de ingresos anuales no utilice los medios más sofisticados y verdaderamente aleatorios para garantizar la integridad”.
Plataformas de contabilidad distribuidas
En muchas plataformas de computación distribuida para cadenas de bloques y criptomonedas, como Ethereum, se suele necesitar una selección aleatoria en la capa de la aplicación. Una solución para evitar imparcialidades en una selección aleatoria de este tipo es utilizar un faro de aleatoriedad distribuida como drand para generar el valor aleatorio. Justin Drake, investigador en Ethereum Foundation, cree que la “aleatoriedad de una federación de tipo drand podría ser una coincidencia particularmente buena para aplicaciones descentralizadas en tiempo real en Ethereum, como los juegos en vivo y los juegos de azar”. Esto se debe a la posibilidad de ofrecer una aleatoriedad de latencia ultrabaja que se aplica a una amplia gama de aplicaciones en las que se requiere una aleatoriedad pública.
¡Le enseñaremos qué es un drand!
Para obtener más información sobre la Liga de la Entropía y cómo utilizar el faro de aleatoriedad distribuida, visite https://leagueofentropy.com. El sitio web muestra periódicamente la aleatoriedad generada por la red, e incluso se pueden ver los valores generados anteriormente. ¡Adelante, pruébelo!
Cómo unirse a la liga:
¿Quiere unirse a la liga? ¡No tenemos un sistema de exclusividad!
Si usted es una organización o una persona que está interesada en colaborar en el faro drand, consulte los documentos para desarrolladores en developer docs para obtener más información sobre los requisitos necesarios para configurar un servidor y unirse al grupo actual. En este momento, drand está en su fase de lanzamiento beta y debe enviar una solicitud de aprobación a leagueofentropy@googlegroups.com para obtener la aprobación de servidor contribuyente.
Perspectiva para el futuro
Solamente tendría sentido que la internet del futuro exija faros de aleatoriedad impredecibles. La Liga de la Entropía ahora está creando las bases para que los sistemas futuros aprovechen una aleatoriedad pública fiable. Nuestro objetivo es mejorar la confianza del usuario y proporcionar un único centro para satisfacer todas sus necesidades de entropía pública. ¡Únase a nosotros!