Ce n’est pas la taille qui compte
Le chiffrement des données sensibles est une problématique que l’on rencontre dans la majorité des systèmes d’information, que ce soit pour protéger des communications sur un réseau ou des documents. L’algorithme AES est la solution la plus répandue pour répondre à ce besoin. Il n’est pas rare de rencontrer la politique suivante : les données les plus critiques sont chiffrées avec AES256, alors qu’AES128 est considéré suffisant pour celles de moindre valeur mais dont on souhaite néanmoins garantir la confidentialité. Mais si ce choix peut sembler logique, il n’est pas forcément justifié.
Un peu d’histoire : qu’est-ce qu’AES ?
En 1997 l’algorithme DES, alors reconnu comme le standard en matière de chiffrement, n’est plus considéré comme offrant une sécurité suffisante avec ses clés de 56 bits. Le National Institute of Standards and Technology lance alors le concours AES (Advanced Encryption Standard) afin de lui trouver un successeur. Le cahier des charges impose la possibilité d’utiliser des clés de 128, 192 ou 256 bits sur des blocs de données de 128 bits. En 2000 c’est l’algorithme Rinjdael, conçu par Vincent Rijmen et Joan Daemen, qui remporte le concours et devient le nouveau standard de chiffrement symétrique. C’est celui-ci que l’on désigne couramment sous le nom d’AES, éventuellement suivi de la taille de clé utilisée. A ce jour, il n’a toujours pas été cassé.
Clé de 128, clé de 256 : différences théoriques et pratiques
Puisqu’AES n’a toujours pas été cassé, le seul moyen pour un attaquant de déchiffrer vos données sans la clé est ce que l’on appelle une attaque par « bruteforce », c’est-à-dire essayer toutes les clés possibles jusqu’à trouver la bonne.
Considérons maintenant quelques chiffres : le nombre de clés de 128 bits possibles est de 2^128, ce qui fait environ 3.4*10^38, soit un nombre à 39 chiffres. Pour savoir combien il y a de clés possibles de 256 bits il faut élever ce nombre au carré, et l’on obtient un résultat à 78 chiffres, ce qui est comparable au nombre estimé d’atomes dans l’univers observable.
Il y a donc incommensurablement plus de clés possibles pour AES256 que pour AES128, rendant le premier bien plus résistant aux attaques par bruteforce….en théorie.
Dans la pratique, les deux garantissent une sécurité amplement suffisante, casser une clé AES128 étant déjà infaisable. Pour des calculs concrets je vous invite à lire les excellents posts à ce sujet sur le forum stackexchange listés plus bas et dont je me contenterai ici de résumer les résultats :
- En partant du principe que la loi de Moore s’applique pour les prochaines décennies, il serait possible de casser une clé AES128 dans les années 2040 en mobilisant toute la puissance de calcul de la planète pendant 10 ans
- Alimenter en électricité un nombre suffisamment grand de serveurs pendant suffisamment longtemps pour qu’ils cassent une clé AES256 couterait un nombre de dollars à 58 chiffres au cours actuel
- La quantité d’énergie nécessaire pour casser une clé AES256 correspond environ à la masse totale du soleil convertie en énergie pure
Conclusion
En pratique les deux tailles de clés offrent une sécurité suffisante pour les décennies à venir, à moins de la découverte d’une faille dans l’algorithme en lui-même ou d’une avancée technologique majeure. L’utilisation d’AES128 est valable même pour les données les plus sensibles. Il peut cependant y avoir des raisons de préférer AES256, notamment pour se conformer à des politiques établies ou pour le facteur rassurant qu’une plus grande clé peut apporter.
Emile
Consultant Sécurité
Sources et lectures supplémentaires :
https://fr.wikipedia.org/wiki/Advanced_Encryption_Standard
https://fr.wikipedia.org/wiki/Advanced_Encryption_Standard_process
https://blog.agilebits.com/2013/03/09/guess-why-were-moving-to-256-bit-aes-keys/