Comment les lampes à lave contribuent-elles au chiffrement Internet ?

Cloudflare traduit des photos de cent lampes à lave en données aléatoires qui sont utilisées dans le chiffrement SSL.

Share facebook icon linkedin icon twitter icon email icon

Chiffrement par lampes à lave

Objectifs d’apprentissage

Après avoir lu cet article, vous pourrez :

  • Découvrir pourquoi le caractère aléatoire est nécessaire pour les clés de chiffrement
  • Expliquer pourquoi les ordinateurs seuls ne peuvent pas créer le hasard
  • Comprendre comment un ordinateur utilise des entrées aléatoires pour générer des sorties aléatoires
  • Découvrir ce qu'est une graine aléatoire
  • Comprendre comment les lampes à lave créent les données aléatoires nécessaires à une graine aléatoire

Pourquoi Cloudflare utilise-t-il des lampes à lave pour faciliter le chiffrement ?

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.

Cloudflare Lava Lamp Wall

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, grâce à l'utilisation de lampes de lave, Cloudflare est en mesure d'offrir à ses clients un chiffrementSSL/TLS extrêmement fort (et suffisamment aléatoire). Ceci est particulièrement important étant donné que plus de 27 millions de propriétés Internet utilisent Cloudflare.

Que signifie « aléatoire » dans le contexte de la cryptographie ?

En cryptographie, le terme aléatoire ne signifie pas seulement statistiquement aléatoire , mais signifie également imprévisible. Supposons que quelqu'un lance un dé à six faces 12 fois de suite et obtiennent le tirage suivant :

1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6

Statistiquement parlant, il s'agit d'une distribution aléatoire des résultats du tirage. Chaque nombre a une probabilité égale d'être obtenu, il est donc mathématiquement possible qu'une telle séquence apparaisse.

Cependant, cette séquence n'est pas imprévisible. Si cette série était utilisée dans le chiffrement, un attaquant pourrait comprendre le modèle.

Pourquoi la véritable imprévisibilité est-elle importante pour le chiffrement ?

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.

Pourquoi les ordinateurs ne peuvent-ils pas créer de l'aléatoire ?

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.

Comment un ordinateur peut-il utiliser des entrées aléatoires du monde réel pour générer des données aléatoires ?

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 :

  1. Premièrement, lorsqu'on lui donne deux fois de suite la même graine aléatoire, un PRNG donnera exactement les mêmes résultats.
  2. Il est difficile de prouver si les résultats qu'il génère seront complètement aléatoires tout le temps (si le PRNG fonctionne indéfiniment).

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 »

Qu'est-ce qu'un générateur de nombres pseudo-aléatoires cryptographiquement sécurisé ?

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 :

  1. Il doit passer certains tests statistiques de hasard pour prouver l'imprévisibilité.
  2. Un pirate ne doit pas être capable de prédire les sorties du CSPRNG même s'il a un accès partiel au programme.

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.

Qu'est-ce qu'une 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.

Les lampes à lave sont-elles la seule source de graine aléatoire ?

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.

Qu'est-ce que l'entropie ?

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 ».

Que se passe-t-il si quelqu'un se tient devant les lampes à lave ?

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.

Que faire si quelqu'un éteint ou endommage la caméra ?

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.

Tous les bureaux Cloudflare sont-ils équipés d'un mur de lampes à lave ?

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).

Cloudflare a-t-il été la première entreprise à utiliser des lampes à lave pour le chiffrement ?

É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.