La plupart des algorithmes de cryptographie utilisent des clés : c’est le cas des algorithmes de chiffrement symétrique (comme AES) ou asymétrique (comme RSA), de signature digitale, des MACs… Un paramètre important lors d’une implémentation est le choix de la taille de ces clés. Ce choix affecte tout d’abord la sécurité. Plus une clé est longue, plus les attaques contre l’algorithme seront complexes. La loi de Moore implique que la puissance de calcul des processeurs disponibles sur le marché double tous les 2 ans environ, à coût constant. Cela signifie que l’on peut se doter de machines de plus en plus performantes pour attaquer les algorithmes de cryptographie. Il faut donc prendre la loi de Moore en compte lors du choix d’une longueur de clé : plus la durée de vie de la clé sera longue, plus il faut prendre une clé grande. La longueur des clés affecte aussi la performance, mais la différence est sensible uniquement dans le cas de cryptographie asymétrique ; plus la clé est grande, plus le temps nécessaire pour calculer une signature digitale ou pour chiffrer un message sera long. Parfois ce choix est rendu plus difficile par des restrictions légales. Ainsi le framework JCA (Java Cryptographic Extension, extension standard de cryptographie de la plateforme Java) limite, dans sa version par défaut, les tailles de clés possibles, afin de se conformer aux lois de différents pays.
Dans le cas des algorithmes de chiffrement symétrique, la taille des clés à choisir est directement liée à la complexité d’une recherche exhaustive. Par exemple, pour retrouver une clé du DES (ancien standard de chiffrement), soit 56 bits, il y a 256 clés possibles. En 1977, date de l’adoption du standard, les essayer toutes était impossible et c’est resté le cas pendant 20 ans ; mais en 1997 pour la première fois le groupe DESCHALL Project a réussi une recherche exhaustive de clés. En 2001 le nouveau standard AES a été adopté ; il utilise un design différent du DES et permet des clés plus longues (de 128 à 256 bits). Pour retrouver une clé AES de 128 bits, vous aurez besoin d’essayer 2127 clés en moyenne (il y a 2128 clés possibles et en moyenne vous trouverez la bonne au bout de la moitié de vos essais). Même en investissant de gros moyens techniques (cloud computing, hardware dédié) et financiers, je parie que vous n’y arriverez pas!
Dans le cas des algorithmes de chiffrement asymétrique et des algorithmes de signature digitale, la taille des clés à choisir dépend des propriétés mathématiques de l’algorithme et il existe de bien meilleures attaques que la recherche exhaustive. Par exemple, dans le cas de RSA, factoriser le module N de la clé publique permet de retrouver la clé privée. A l’heure actuelle, la taille minimum acceptable pour de telles clés est 1024 bits et la taille recommandée est de 2048 bits (à adapter en fonction de la durée de vie souhaitée de la clé).
Il est déjà arrivé qu’un choix de clé trop courte permette qu’un système sécurisé soit attaqué. Un exemple qui a fait grand bruit en France est celui de l’affaire Humpich. En 1998, l’ingénieur français Serge Humpich parvient à casser la Carte Bleue, carte bancaire à puce, et à fabriquer une fausse carte. Au cœur de son attaque réside le fait que la clé publique utilisée pour l’authentification de la carte (l’étape lors de laquelle le terminal vérifie que la carte est authentique grâce à une signature digitale stockée dans la carte) était une clé RSA de 320 bits. Pour casser cette clé (c’est-à-dire retrouver la clé privée correspondante), il fallait factoriser un entier de 320 bits, ce qui était relativement rapide à faire en 1998 avec un logiciel adéquat et un ordinateur de l’époque. Une fois la clé privée retrouvée, facile de générer une signature digitale falsifiée…
Les serveurs SSL aussi ont besoin de clés (clés de chiffrement RSA) et étant donné leur prolifération ils permettent une étude intéressante. Grâce au site SSL Pulse créé par le Trustworthy Internet Movement, on peut avoir des statistiques précises sur les clés utilisées sur les sites les plus populaires. Au 23 mai 2012, sur 200 000 sites testés, seuls 5 sites utilisaient encore des clés de moins de 1024 bits ; 16% utilisaient des clés de 1024 bits, et les 83,9% restants utilisaient des clés de 2048 bits ou plus. On voit donc que, si la sécurité de ces serveurs laisse parfois à désirer comme le révèle SSL Pulse, ce n’est pas à cause de la taille de clés mais plutôt à cause de problèmes de configuration (support de versions anciennes de SSL, mauvais choix de suites de chiffrement, etc..).
En pratique, si vous devez choisir une taille de clés et que vous avez le moindre doute, faites appel à un expert en cryptographie. Cet expert pourra se référer au site KeyLength.com qui compile différents travaux sur le sujet. Ces travaux ont étés effectués par des organisations comme le NIST (National Institute for Standards and Technology) américain, le BSI (Bundesamt für Sicherheit in der Informationstechnik) allemand, le réseau européen d’excellence ECRYPT et d’autres. Sur ce site, à l’aide de différents tableaux, on peut recevoir une recommandation de taille de clés en fonction de plusieurs paramètres, comme le type d’algorithme, la durée de vie de la clé souhaitée, et le niveau de sécurité voulu.
Leave a Reply