J'ai regardé M. Robot récemment et je n'arrête pas de penser pourquoi il était si difficile de déchiffrer des fichiers chiffrés à l'aide du chiffrement AES avec une clé de 256 bits.
Disons que la seule méthode pour trouver la clé est la force brute.
Ne pouvons-nous pas configurer un ordinateur en force brute à partir de la première clé possible, et un autre pour commencer à partir de la dernière clé possible, et peut-être quelques ordinateurs pour essayer les clés au milieu?
Cela ne réduirait-il pas considérablement le temps?
Bien sûr, c'est possible, mais cela n'aide pas vraiment. Le nombre de possibilités est tout simplement trop grand.
Considérez qu'une clé de 256 bits a 2256 valeurs possibles. C'est 12✕1076ou 12 suivis de 76 zéros. Si nous supposons généreusement qu'un ordinateur peut tester un billion (c'est 1012) clés possibles une seconde, et que nous avons un billion d'ordinateurs (d'où les obtiendrons-nous?) effectuant la recherche de clés, cela prendra 12 take1076/(dix12✕1012) secondes pour rechercher l'intégralité de l'espace clé. C'est 12✕1052 secondes. Comme il n'y a que 3 155 760 000 secondes en un siècle, il faudra environ 4 à 1043 siècles pour essayer toutes les clés possibles. Il y a 50 à 50 chances que vous trouviez la clé en seulement la moitié de ce temps.
C'est ainsi que le cryptage est conçu. Le nombre de possibilités est tout simplement trop grand pour être fissuré dans le temps, ce qui est intéressant pour les humains.
J'ai fait un calcul sur celui-ci une fois. Supposons que l'AES ne peut être rompu qu'en utilisant la force brute. De toute évidence, nous allons avoir besoin d'un compteur, qui compte de 0 à 2256-1, et en moyenne il faudra compter jusqu'à 2255. Faire fonctionner ce compteur demande de l'énergie. Combien d'énergie faut-il?
Il s'avère qu'il y a ici une limite thermodynamique, le principe de Landauer. À une température donnée, il y a une quantité minimale d'énergie nécessaire pour régler un peu (1 bit d'entropie), car si nous ne dépensons pas autant d'énergie, nous pouvons en fait diminuer l'entropie du système, qui est thermodynamiquement impossible. L'énergie qu'il faut est kT ln 2, où k est la constante de Boltzman (1,38 × 10−23 J/K) et T est la température en degrés kelvin. Évidemment, nous voulons le faire de la manière la plus abordable possible, alors faisons les calculs à 3 degrés kelvin, qui est à peu près la température du rayonnement de fond de l'univers. Nous ne pouvons pas obtenir plus froid que cela sans dépenser plus d'énergie pour refroidir le système que nous n'en aurions dépensé pour renverser les bits! Cela épingle le coût énergétique du retournement un peu à 2,87 × 10−23 J/bit.
Maintenant, combien de flips de bits avons-nous besoin? La réponse sera beaucoup, donc pour garder les quantités d'énergie en termes compréhensibles par l'homme, je voudrais simplifier le problème. Plutôt que de résoudre AES-256, supposons que nous résolvions AES-192, qui ne nécessite que de compter jusqu'à 2191. Alors, combien de flips de bits avons-nous besoin? Si nous comptons en binaire normal, nous pouvons avoir besoin de retourner plusieurs bits par incrément du compteur. C'est ennuyeux à calculer, alors imaginons que nous pourrions faire ce compteur avec Gray Codes , qui ne retourne qu'un bit par incrément.
Incrémenter un compteur 2191 fois, à 2,87 × 10−23 J/bit donne 9 × 1034 J. C'est beaucoup d'énergie. En fait, si je vais sur une de mes pages Wikipedia préférées, Order of Magnitude (energy) , nous voyons que l'énergie émise par notre Soleil chaque année est de 1,2 × 1034 J. C'est vrai. L'exécution du compteur qui serait au cœur du processus de coupure AES prendrait la somme totale de près d'une décennie de la production énergétique du Soleil. Tout.
Maintenant, si nous revisitons le problème AES-256 d'origine, les coûts énergétiques augmentent de 264. Ainsi, ce compteur prendrait 1,6 × 1054 J. Encore une fois, en regardant l'ordre de grandeur (énergie), nous constatons que l'énergie de masse visible totale dans la galaxie de la voie lactée est de 4 × 1058 Ainsi, si vous deviez convertir 0,004% de l'énergie de masse totale de la galaxie (c'est-à-dire convertir toute la masse en énergie en utilisant E = mc2), vous pouvez exécuter un compteur pouvant compter de 0 à 2255.
C'est pourquoi on ne force jamais brutalement un algorithme de cryptographie moderne. Les quantités d'énergie demandées sont littéralement au niveau de la "mort thermique de l'univers".
Ce n'est pas seulement possible, les gens l'ont fait avec succès. Mais seulement avec des touches très courtes.
distribué.net a réussi à briser un cryptage RC5 64 bits en 2002 en utilisant un réseau distribué d'ordinateurs. Les ordinateurs étaient pour la plupart des PC grand public appartenant à des bénévoles qui ont installé un programme pour crunch clés en arrière-plan. Cela faisait partie de le défi de la clé secrète RSA - un concours de RSA Labs pour décrypter les messages cryptés avec des clés beaucoup plus courtes que celles que vous utiliseriez dans le monde réel.
"Après plus de quatre ans d'efforts, des centaines de milliers de participants et des millions d'heures de travail par unité centrale, Distributed.net a forcé la clé du défi de chiffrement 64 bits de RSA Security"
Ils ont lancé un autre projet pour remporter le défi RSA 72 bits en 2003. 13 ans plus tard, ils calculent toujours et n'ont même pas testé 4% de l'espace de touches .
Gardez à l'esprit qu'il s'agit de versions extrêmement simplifiées de RSA. La longueur de clé recommandée pour RSA-RC5 dans le monde réel est au moins 128 bits. Chaque bit supplémentaire double le temps de calcul, de sorte que ces approches distribuées sont encore à des années-lumière d'attaquer tout cryptage du monde réel.