Pour lancer la Crypto Week 2019, nous sommes très heureux d'annoncer une nouvelle solution à un problème de cryptographie de longue date. Pour mieux comprendre l’aspect technique de ce problème, veuillez vous reporter au prochain article pour une compréhension plus profonde.

Une certaine forme de hasard est requise pour aller de la cryptographie à la grande loterie en passant par la mécanique quantique. Mais qu'est-ce que cela signifie exactement pour un nombre d'être généré de manière aléatoire et d'où provient le caractère aléatoire ?

La génération du hasard remonte à trois mille ans, lorsque les ancêtres lançaient « les os » pour déterminer leur destin. Pensez aux loteries, cela semble simple, n’est-ce pas ? Tout le monde achète ses billets, choisit six numéros et attend qu'un agent les tire au hasard dans un panier. Cela ressemble à une solution sans faille. Et puis, en 1980, l'hôte du tirage au sort de la loterie en Pennsylvanie a été pris sur le fait pour avoir utilisé des balles pondérées, afin de choisir le numéro gagnant. Cette leçon, ainsi que la nécessité d'autres systèmes complexes pour générer des nombres aléatoires, ont stimulé la création de générateurs de nombres aléatoires.

Tout comme un jeu de loterie sélectionne des nombres aléatoires de manière imprévisible, un générateur de nombres aléatoires est un appareil ou un logiciel chargé de générer des séquences de nombres de manière imprévisible. Au fur et à mesure que le besoin de hasard a augmenté, le besoin de générer constamment de nombres substantiellement grands et imprévisibles a également augmenté. C'est pourquoi des entreprises ont mis au point des balises aléatoires accessibles au public, des serveurs générant des chaînes de 512 bits complètement imprévisibles (des nombres d'environ 155 chiffres) à intervalles réguliers.

Maintenant, vous pourriez penser que l’utilisation d’une balise aléatoire pour les processus de génération aléatoire, tels que ceux nécessaires à la sélection d'une loterie, rendrait le processus résistant aux manipulations contradictoires, mais ce n'est pas le cas. Le caractère aléatoire d'une source unique a été exploité pour générer des résultats faussés.

Aujourd'hui, les balises aléatoires génèrent des nombres pour les loteries et les audits électoraux. Les deux affectent la vie et le destin de millions de personnes. Malheureusement, l'exploitation du seul point d'origine de ces balises a créé des résultats malhonnêtes qui ont profité à un initié corrompu. Afin de contrecarrer les efforts d’exploitation, Cloudflare et d’autres fournisseurs de balises aléatoires se sont associés pour offrir aux utilisateurs un quorum de balises aléatoires décentralisées. Après tout, huit balises indépendantes distribuées dans le monde entier peuvent être beaucoup plus fiables qu'une seule !

Nous sommes heureux de vous présenter à ...

LA LIGUE... DE... L’ENTROPIE !!!!!!

Qu'est-ce qu'une balise aléatoire ?

Une balise aléatoire est un service public qui fournit des nombres aléatoires imprévisibles à intervalles réguliers.

drand (prononcé dee-rand) est une balise aléatoire distribuée développée par Nicolas Gailly; avec l'aide de Philipp Jovanovic et Mathilde Raynal. Le projet drand a pour origine le document de recherche Scalable Bias-Resistant Distributed Randomness publié lors du symposium IEEE sur la sécurité et la vie privée de 2017 par Ewa Syta, Philipp Jovanovic, Eleftherios Kokoris Kogias, Nicolas Gailly, Linus Gasser, Ismail Khoffi, Michael J. Fischer, Bryan Ford, du Decentralized/Distributed Systems (DEDIS) lab de l'EPFL, Université de Yale et Trinity College Hartfordavec le soutien de , l'Institut de recherche.

Pour chaque tour de génération de caractères aléatoires, drand fournit les propriétés suivantes, indiquées dans le document de recherche :

  • Disponibilité : la génération de caractères aléatoires distribuée se termine avec succès par une probabilité élevée.
  • Imprévisibilité : aucune partie ne reçoit aucune information sur la sortie aléatoire du cycle en cours, sauf avec une probabilité négligeable, jusqu’à ce qu’un nombre suffisant de nœuds drand révèlent leurs contributions dans le protocole de génération de caractères aléatoires.
  • Impossibilité de biaiser : la sortie aléatoire représente une valeur aléatoire non biaisée et uniforme, sauf avec une probabilité négligeable.
  • Vérifiabilité : la sortie aléatoire est une partie tierce vérifiable par rapport à la clé publique collective calculée lors de la configuration de drand. Cela atteste de manière imprescriptible que l'ensemble documenté de nœuds drand a exécuté le protocole afin de produire la sortie aléatoire unique, sauf avec une probabilité négligeable.

L'entropie mesure le caractère imprévisible d'un nombre. Pour ce qui est du caractère aléatoire, plus il y a d'entropie, mieux c'est. Ainsi, est-ce naturellement là que nous avons trouvé notre nom, la Ligue d'entropie.

Nos membres fondateurs utilisent leurs sources individuelles à haute entropie pour fournir une balise plus aléatoire et imprévisible permettant de générer des valeurs aléatoires vérifiables par le public toutes les soixante secondes. Le fait que la balise drand soit décentralisée et construite à l'aide de primitives cryptographiques appropriées et éprouvées renforce notre confiance dans le fait qu'elle possède toutes les susmentionnées ci-dessus.

Ce réseau mondial de serveurs générant un caractère aléatoire garantit que, même si quelques serveurs sont hors ligne, la balise continue de générer de nouveaux nombres en utilisant les serveurs en ligne restants.  Même si un ou deux des serveur(s) ou leurs sources d'entropie devai(en)t être compromis, le reste veillera à ce que l'entropie produite conjointement soit totalement imprévisible et ne pouvant être biaisée.

Qui dirige exactement cette balise ? Actuellement, la Ligue d’entropie est un consortium d’organisations mondiales et de contributeurs individuels, comprenant : Cloudflare, Nicolas Gailly, chercheur à Protocol Labs, l’Université du Chili, École polytechnique fédérale de Lausanne (EPFL), Kudelski Security, et les chercheurs de l'EPFL, Philipp Jovanovic et Ludovic Barman.

Rencontrez la Ligue de l'entropie

LavaRand de Cloudflare : LavaRand utilise son entropie élevée à partir du mur de lampes à lave de Cloudflare situé à notre siège de San Francisco. Le débit imprévisible de « laves » à l'intérieur des lampes est utilisé comme entrée pour un flux caméra dans un CSPRNG (pseudo cryptographique sécurisé générateur de nombres aléatoires) qui génère la valeur aléatoire.

URand d’EPFL : L’énergie de URand provient du générateur d’aléatoire local présent sur chaque ordinateur à/dev/urandom. L'entrée aléatoire est collectée à partir d'entrées telles que des pressions sur clavier, des clics de souris, du trafic réseau, etc. URand regroupe ces entrées aléatoires pour produire un flux continu de caractères aléatoires.

Seismic Girl d’Uchile : Seismic Girl extrait des données aléatoires super vérifiables de cinq sources interrogées chaque minute. Ces sources comprennent : les mesures sismiques des secousses et des tremblements de terre au Chili, une diffusion d'une station de radio locale, une sélection de publications sur Twitter, des données de la Ethereum blockchain et leur propre carte RNG prête à l'emploi.

ChaChaRand de Kudelski Security : ChaChaRand utilise un générateur de nombres aléatoires cryptographiques (CRNG) basé sur le chiffrement par flux ChaCha20.

InterplanetaryRand de Protocol Labs : InterplanetaryRand utilise la puissance de l'entropie pour assurer la sécurité des protocoles dans l'espace et dans le temps en utilisant le bruit environnemental et le PRNG Linux, complétés par le caractère aléatoire généré par le CPU (RdRand).

Ensemble, nos champions s’engagent en faveur de #savetheinternet en combinant leurs caractères aléatoires pour former une balise aléatoire distribuée à l’échelle mondiale et cryptographiquement vérifiable.

Caractère aléatoire public contre privé

Différents types de caractères aléatoires sont nécessaires pour différents types d’applications.

L'astuce pour générer des clés cryptographiques sécurisées consiste à utiliser de grands nombres aléatoires générés de manière privée que personne d'autre ne peut prédire. Avec les balises aléatoires générant et annonçant publiquement des nombres aléatoires, les utilisateurs ne doivent PAS utiliser la sortie d'une balise aléatoire pour leurs clés secrètes, ces numéros étant accessibles à tous. Si un pirate peut deviner le nombre aléatoire duquel la clé cryptographique privée d’un utilisateur a été dérivée, il peut déchiffrer son système et décrypter des informations confidentielles. Cela signifie simplement que les nombres aléatoires générés par une balise publique ne peuvent pas être utilisés de manière sûre pour les clés de chiffrement : non pas parce qu’il y a un problème avec le caractère aléatoire, mais simplement parce que celui-ci est public.

Les clients utilisant la balise drand peuvent demander des caractères aléatoires à partir de tout ou partie des nœuds drand s’ils souhaitent générer une valeur aléatoire, qui ne sera pas annoncée publiquement.  Pour plus d'informations sur la procédure à suivre, consultez la documentation du développeur.

D'autre part, le caractère aléatoire public est souvent utilisé par les utilisateurs qui exigent une valeur aléatoire qui n'est pas censée être secrète mais dont la génération doit être transparente, juste et impartiale. Cela convient parfaitement pour de nombreux objectifs, tels que les jeux, les loteries et l'audit des élections, où l'auditeur et le public ont besoin de transparence pour savoir quand, comment et à quel niveau d’équité la valeur aléatoire a été générée.

La Ligue d’entropie fournit au public un caractère aléatoire que tout utilisateur peut récupérer sur leagueofentropy.com. Les utilisateurs pourront afficher la valeur de chaîne de 512 bits générée toutes les 60 secondes. Pourquoi 60 secondes ? Pas de raison particulière. Théoriquement, la génération de caractères aléatoires peut aller aussi vite que le matériel le permet. Mais cela n’est pas nécessaire dans la plupart des cas d’utilisation. Les valeurs générées toutes les 60 secondes donnent aux utilisateurs 1440 valeurs aléatoires sur une période de 24 heures.

*PETIT RAPPEL : CE CARACTÈRE ALÉATOIRE EST PUBLIC. NE L'UTILISEZ PAS POUR DES CLÉS CRYPTOGRAPHIQUES PRIVÉES*

Pourquoi le hasard public est-il important ?

Vérification électorale

Aux États-Unis, la plupart des élections sont suivies d’un audit qui vérifie leur impartialité et leur caractère équitable. Des systèmes d’audit robustes renforcent la confiance des électeurs en améliorant la capacité des responsables des élections de réagir efficacement aux accusations de fraude et de détecter les anomalies du système.

Actuellement, la plupart des bureaux et enceintes de vote sont choisis au hasard par les responsables des élections. Cette approche peut être faussée par un initié corrompu qui pourrait sélectionner certains bureaux où présenter un résultat plus à son avantage. Même dans une situation où chaque circonscription électorale a été manipulée, en utilisant une balise robuste, distribuée et, surtout, imprévisible et non modifiable, les contrôleurs d'élections peuvent avoir la certitude qu'un petit échantillon de circonscriptions suffisent pour la vérification, tant qu’un pirate ne peut pas prédire la sélection de la circonscription.

Au Chili, les membres du personnel électoral sont choisis au hasard parmi un groupe d’électeurs éligibles. Le projet Random UChile de l’Université du Chili a mis au point un prototype qui utilise leur balise aléatoire pour ce processus. Alejandro Hevia, dirigeant de Random UChile, estime que, pour l'audit des élections, l'aléatoire public est important pour la transparence et que l'aléatoire distribué donne aux gens la possibilité de croire que plusieurs contributeurs à la balise ne peuvent pas comploter contrairement au cas d’une balise construite par une seule entité.

Loteries

De 2005 à 2014, Eddie Tipton, directeur de la sécurité de l’information de la Multi-State Lottery Association, a manipulé un générateur de nombres aléatoires et remporté six fois le tirage au sort !

Tipton pouvait prédire les numéros gagnants en sautant le processus standard aléatoire de désignation des têtes de série. Il a pu insérer dans la fonction du générateur de nombre aléatoire un code qui vérifiait la date, le jour de la semaine et l'heure. Si ces trois variables ne s'alignaient pas, le générateur de nombres aléatoires utilisait des matières radioactives et un compteur Geiger pour générer une désignation des têtes de série aléatoire. Si les variables s’alignaient comme programmé subrepticement, ce qui ne se produisait généralement qu'une fois par an, la désignation des têtes de série serait générée à l'aide d'une formule à 7 variables introduite dans un Mersenne Twister, un générateur de nombres pseudo aléatoires.

Tipton connaissait ces 7 variables. Il connaissait le petit groupe de nombres qui pourraient être la désignation des têtes de série. Cette connaissance lui a permis de prédire les résultats du Mersenne Twister. C'est une arnaque qu'une balise aléatoire distribuée peut rendre beaucoup plus difficile, voire impossible.

Rob Sand, ancien procureur général adjoint de l'Iowa et actuel auditeur de l'État de l'Iowa qui exercé les poursuites pénales contre Tipton, plaide également pour l'amélioration des contrôles. Il a dit :

« Il n’y a aucune excuse pour un secteur qui génère 80 milliards de dollars de recettes annuelles de ne pas utiliser les moyens les plus sophistiqués et véritablement aléatoires disponibles pour assurer l’intégrité .».

Plateformes de registre distribuées

Dans de nombreuses plateformes de calcul distribuées basées sur des « crypto monnaies » et des chaînes de blocs, telles que Ethereum, il est souvent nécessaire de procéder à une sélection aléatoire au niveau de la couche d’application. Une solution pour éviter les fraudes dans une telle sélection aléatoire consiste à utiliser une balise aléatoire distribuée telle que drand pour générer la valeur aléatoire. Justin Drake, chercheur à Ethereum Foundation, estime que « le caractère aléatoire d'une fédération de type drand pourrait être particulièrement adapté aux applications décentralisées en temps réel sur Ethereum telles que les jeux en direct et les jeux d'argent ». Cela est dû à la possibilité de fournir un caractère aléatoire à latence ultra faible, applicable à un large éventail d'applications nécessitant un caractère aléatoire public.

Parlons de drand !

Pour en savoir plus sur la Ligue d’entropie et sur l'utilisation de la balise aléatoire distribuée, visitez le site https://leagueofentropy.com. Le site Web affiche périodiquement le caractère aléatoire généré par le réseau et vous pouvez même voir les valeurs générées précédemment. Allez-y, essayez-le !

Comment rejoindre la ligue :

Vous voulez rejoindre la ligue ?? Nous ne sommes pas exclusifs !

Si vous êtes une organisation ou une personne intéressée par une contribution à la balise drand, consultez la documentation pour les développeurs pour plus d'informations sur les conditions requises concernant la configuration d'un serveur et l'adhésion au groupe existant. drand est actuellement dans sa phase de publication bêta et une demande d'approbation doit être envoyée à [email protected] pour être approuvée en tant que serveur contributeur.

Regarder vers l'avenir

Il est logique que l'Internet du futur exigera des balises aléatoires imprévisibles. La Ligue d’entropie existe déjà, créant une base pour les futurs systèmes permettant de tirer parti du hasard public digne de confiance. Notre objectif est d'accroître la confiance des utilisateurs et de fournir un guichet unique pour tous vos besoins d'entropie publique. Rejoignez-nous !