Cloudflare traduit des photos de cent lampes à lave en données aléatoires qui sont utilisées dans le chiffrement SSL.
Cet article s'articule autour des points suivants :
Contenu associé
Qu'est-ce que le chiffrement ?
Cryptographie à clé publique
Chiffrement asymétrique
Le SSL, qu’est-ce que c’est ?
Qu'est-ce qu'un certificat SSL ?
Abonnez-vous à theNET, le récapitulatif mensuel de Cloudflare des idées les plus populaires concernant Internet !
Copier le lien de l'article
L'aléatoire est extrêmement important pour le chiffrement sécurisé. Chaque nouvelle clé qu'un ordinateur utilise pour chiffrer des données doit être vraiment aléatoire, afin qu'un attaquant ne puisse pas comprendre la clé qui lui permettrait de déchiffrer les données. Cependant, les ordinateurs sont conçus pour fournir des sorties logiques prévisibles basées sur une entrée donnée. Ils ne sont pas conçus pour produire les données aléatoires nécessaires à la création de clés de chiffrement imprévisibles.
Pour produire des données imprévisibles et chaotiques nécessaires à un chiffrement fort, un ordinateur doit avoir une source de données aléatoires. Le « monde réel » s'avère être une excellente source de hasard, car les événements dans le monde physique sont imprévisibles.
Comme on pouvait s'y attendre, les lampes à lave sont toujours aléatoires. Le « lave » dans une lampe à lave ne prend jamais deux fois la même forme, et par conséquent, l'observation d'un groupe de lampes à lave est une excellente source de données aléatoires.
Pour recueillir ces données, Cloudflare a disposé une centaine de lampes à lave sur l'un des murs du hall d'entrée du siège de Cloudflare et a installé une caméra dirigée vers les lampes. La caméra prend des photos des lampes à intervalles réguliers et envoie les images aux serveurs de Cloudflare. Toutes les images numériques sont réellement stockées par les ordinateurs sous la forme d'une série de nombres, chaque pixel ayant sa propre valeur numérique, et chaque image devient donc une chaîne de nombres totalement aléatoire que les serveurs Cloudflare peuvent ensuite utiliser comme point de départ pour créer des clés de chiffrement sécurisées.
Ainsi, à l'aide de lampes à lave, Cloudflare est en mesure d'offrir un chiffrement SSL /TLS extrêmement fort (et suffisamment aléatoire) à ses clients. Ceci est particulièrement important si l'on considère que des millions de propriétés Internet utilisent Cloudflare.
En cryptographie, aléatoire ne signifie pas seulement statistiquement aléatoire, mais aussi imprévisible.
Les données chiffrées doivent ressembler à des données totalement aléatoires, car des données prévisibles peuvent être devinées. S'il existe un modèle (si certaines valeurs sont utilisées pour le chiffrement plus que d'autres, ou si les valeurs apparaissent dans un certain ordre de manière cohérente), alors l'analyse mathématique reprendra le modèle et permettra à une personne malveillante d'avoir beaucoup plus de facilité à deviner la clé utilisée pour le chiffrement. Essentiellement, si les données chiffrées sont prévisibles, elles pourraient tout aussi bien être compromises.
Le processus de chiffrement lui-même est un processus prévisible : les données chiffrées plus la bonne clé sont égales aux données déchiffrées, et les données déchiffrées sont les mêmes qu'avant le chiffrement. Mais les clés de chiffrement utilisées doivent être imprévisibles.
Pour comprendre pourquoi l'imprévisibilité est si importante, imaginez deux joueurs de poker : Bob parie toujours lorsqu'il a de bonnes cartes et se couche (il abandonne le coup en refusant de suivre les autres joueurs) lorsqu'il a de mauvaises cartes. Alice, quant à elle, mélange sa stratégie de pari de manière à ce qu'il n'y ait pas de schéma discernable : parfois elle parie quand elle a de bonnes cartes, parfois elle se contente de suivre les paris des autres joueurs, et parfois même elle bluffe en misant gros quand elle a de mauvaises cartes. Lorsqu'Alice et Bob participent au même tournoi de poker, Alice reste en lice beaucoup plus longtemps que Bob, car ce dernier est trop prévisible. Les adversaires découvrent rapidement quand Bob a de bonnes cartes et réagissent en conséquence. Même s'ils ne peuvent pas voir ses cartes, ils peuvent se faire une idée des cartes qu'il détient.
De même, même si les attaquants ne peuvent pas voir les « cartes » (c'est-à-dire le contenu chiffré) qui sont envoyées sur un réseau, ils peuvent les deviner si la méthode de dissimulation du contenu est trop prévisible.
Les ordinateurs fonctionnent sur une base logique. Un programme informatique est basé sur des instructions conditionnelles if-then : si telle condition est remplie, alors l'action spécifiée est effectuée. La même entrée dans un programme fournit à chaque fois la même sortie.
C'est le principe même de conception des ordinateurs. Une entrée doit mener à une sortie attendue, pas inattendue. Imaginez le chaos si une imprimante imprimait un texte aléatoire différent du texte du document envoyé à l'imprimante, ou si les smartphones devaient appeler un numéro de téléphone différent de celui entré par l'utilisateur. Les ordinateurs ne sont utiles qu'en raison de leur fiabilité et de leur prévisibilité (relatives). Cependant, cette prévisibilité est un handicap lorsqu'il s'agit de générer des clés de chiffrement sécurisées.
Certains programmes informatiques sont bons pour simuler l'aléatoire, mais pas suffisamment pour créer des clés de chiffrement.
Un logiciel appelé générateur de nombres pseudo-aléatoires (PRNG) est capable de prendre une entrée imprévisible et de l'utiliser pour générer des sorties imprévisibles. Théoriquement, un PRNG peut produire des sorties aléatoires illimitées à partir d'une entrée aléatoire.
Un tel algorithme est appelé « pseudo-aléatoire » et non « aléatoire » car ses sorties ne sont pas vraiment complètement aléatoires. pourquoi est-ce le cas ? Il y a deux raisons principales :
Pour la raison n°2, l'algorithme a continuellement besoin de nouvelles entrées aléatoires. Une entrée aléatoire est connue sous le nom de « graine aléatoire »
Un générateur de nombres pseudo-aléatoires cryptographiquement sécurisé, ou CSPRNG, est un PRNG qui répond à des normes plus strictes, ce qui le rend plus sûr à utiliser pour le chiffrement. Un CSPRNG répond à deux exigences auxquelles les PRNG ne satisfont pas nécessairement :
Comme un PRNG, un CSPRNG a besoin de données aléatoires (la graine aléatoire) comme point de départ à partir duquel produire plus de données aléatoires.
Pour générer des clés de chiffrement pour le chiffrement SSL/TLS, Cloudflare utilise un CSPRNG, avec les données collectées à partir des lampes à lave qui sont utilisées dans la graine aléatoire.
Une graine aléatoire, appelée également semence aléatoire, est la donnée avec laquelle un CSPRNG commence à générer des données aléatoires. Bien qu'un CSPRNG puisse théoriquement produire des sorties aléatoires illimitées à partir d'une seule graine aléatoire, il est beaucoup plus sûr de rafraîchir régulièrement la graine aléatoire. En effet, un pirate peut éventuellement compromettre la graine aléatoire initiale. Vous vous rappelez qu'un CSPRNG produira à nouveau exactement les mêmes sorties s'il est alimenté par la même graine, par conséquent, l'attaquant pourrait alors dupliquer les sorties aléatoires. En outre, il n'est pas garanti que même le CSPRNG le plus rigoureusement testé produise indéfiniment des résultats imprévisibles.
Avec les lampes à lave, Cloudflare dispose d'une source continue de nouvelles données de graine aléatoire. Chaque image prise par la caméra des lampes est différente et fournit une séquence aléatoire différente de valeurs numériques qui peuvent être utilisées comme graine.
De nombreux systèmes d'exploitation ont leurs propres sources de données aléatoires qu'ils utilisent dans les graines aléatoires, par exemple à partir des actions de l'utilisateur (mouvements de la souris, saisie sur un clavier, etc.), bien qu'ils obtiennent ces données relativement lentement. Cloudflare mélange les données aléatoires obtenues à partir des lampes à lave avec les données générées par le système d'exploitation Linux sur deux machines différentes afin de maximiser l'entropie lors de la création de graines aléatoires pour le chiffrement SSL/TLS.
En général, le terme « entropie » désigne le désordre ou chaos. Mais l'entropie a une signification particulière en cryptographie : elle fait référence à l'imprévisibilité. Les cryptographes mesureront réellement la quantité d'entropie d'un ensemble de données en termes de nombre de bits d'entropie. C'est pour cette raison que Cloudflare se réfère au mur de lampes à lave comme le « mur d'entropie ».
Dans la mesure où le mur de lampes à lave est situé dans le hall animé du siège de Cloudflare, cela se produit tout le temps. Des personnes vont et viennent dans le hall, passent ou s'arrêtent pour parler devant les lampes. De telles obstructions font partie du caractère aléatoire que la caméra capture. En fait, les personnes qui obstruent partiellement le champ de la caméra tournée sur les lampes à lave aident en fait à générer de l'entropie.
Si cela se produit, Cloudflare dispose toujours de deux autres sources de randomisation à partir du système d'exploitation Linux exécuté sur des serveurs Cloudflare. Par ailleurs, les équipes de Cloudflare peuvent facilement accéder à la caméra, car elle se trouve dans un espace appartenant à Cloudflare. Ils pourraient dans ce cas rapidement la rallumer ou, au besoin, la remplacer.
Les deux autres bureaux principaux de Cloudflare se trouvent à Londres et à Singapour. Chaque bureau a sa propre méthode pour générer des données aléatoires à partir d'entrées du monde réel. Londres prend des photos d'un système à double pendule monté dans le bureau (un pendule connecté à un autre pendule dont les mouvements sont mathématiquement imprévisibles). Le bureau de Singapour mesure la désintégration radioactive d'une boulette d'uranium (une quantité suffisamment petite pour ne pas présenter de danger).
Étonnamment, non. Une société appelée Silicon Graphics a conçu un système similaire appelé « Lavarand » en 1996, bien que le brevet ait expiré depuis.
Pour en savoir plus sur le mur de la lampe à lave Cloudflare consultez ces deux articles de blog :
Voir cette page pour savoir comment utiliser le chiffrement SSL gratuit de Cloudflare.