En cryptographie, le niveau de sécurité est une mesure de la force qu'une primitive cryptographique — telle qu'une fonction de chiffrement ou de hachage — atteint. Le niveau de sécurité est généralement exprimé sous la forme d'un nombre de « bits de sécurité » (également appelé force de sécurité ), où une sécurité à n bits signifie que l'attaquant devrait effectuer 2 n opérations pour la casser, mais d'autres méthodes ont été proposées qui modélisent plus précisément les coûts pour un attaquant. Cela permet une comparaison pratique entre les algorithmes et est utile lors de la combinaison de plusieurs primitives dans un cryptosystème hybride , de sorte qu'il n'y ait pas de maillon faible clair. Par exemple, AES -128 ( taille de clé 128 bits) est conçu pour offrir un niveau de sécurité de 128 bits, qui est considéré comme à peu près équivalent à un RSA utilisant une clé de 3072 bits.
Dans ce contexte, le niveau de sécurité revendiqué ou le niveau de sécurité cible correspond au niveau de sécurité qu'une primitive a été initialement conçue pour atteindre, bien que le terme « niveau de sécurité » soit également parfois utilisé dans ces contextes. Lorsque des attaques sont détectées dont le coût est inférieur à celui revendiqué, la primitive est considérée comme brisée .
En cryptographie symétrique
Les algorithmes symétriques ont généralement une revendication de sécurité strictement définie. Pour les chiffrements symétriques , elle est généralement égale à la taille de la clé du chiffrement, ce qui équivaut à la complexité d'une attaque par force brute . Les fonctions de hachage cryptographiques avec une taille de sortie de n bits ont généralement un niveau de sécurité de résistance aux collisions n /2 et un niveau de résistance à la pré-image n . Cela est dû au fait que l' attaque d'anniversaire générale peut toujours trouver des collisions en 2 n/2 étapes. Par exemple, SHA-256 offre une résistance aux collisions de 128 bits et une résistance à la pré-image de 256 bits.
Il existe cependant quelques exceptions à cette règle. Phelix et Helix sont des chiffrements de 256 bits offrant un niveau de sécurité de 128 bits. Les variantes SHAKE de SHA-3 sont également différentes : pour une taille de sortie de 256 bits, SHAKE-128 fournit un niveau de sécurité de 128 bits pour la résistance aux collisions et à la pré-image.
En cryptographie asymétrique
La conception de la plupart des algorithmes asymétriques (c'est-à-dire la cryptographie à clé publique ) repose sur des problèmes mathématiques complexes qui sont efficaces pour calculer dans un sens, mais inefficaces pour inverser la tendance de l'attaquant. Cependant, les attaques contre les systèmes à clé publique actuels sont toujours plus rapides que la recherche par force brute de l'espace de clés. Leur niveau de sécurité n'est pas défini au moment de la conception, mais représente une hypothèse de dureté de calcul , qui est ajustée pour correspondre à la meilleure attaque actuellement connue.
Diverses recommandations ont été publiées pour évaluer le niveau de sécurité des algorithmes asymétriques, qui diffèrent légèrement en raison de méthodologies différentes.
- Pour le cryptosystème RSA au niveau de sécurité de 128 bits, le NIST et l'ENISA recommandent d'utiliser des clés de 3072 bits et l'IETF de 3253 bits. La conversion de la longueur de la clé en une estimation du niveau de sécurité est basée sur la complexité du GNFS .
- L'échange de clés Diffie-Hellman et DSA sont similaires à RSA en termes de conversion de la longueur de clé en une estimation du niveau de sécurité.
- La cryptographie à courbe elliptique nécessite des clés plus courtes, les recommandations pour 128 bits sont donc 256-383 (NIST), 256 (ENISA) et 242 bits (IETF). La conversion de la taille de clé f au niveau de sécurité est d'environ f /2 : cela est dû au fait que la méthode pour résoudre le problème du logarithme discret à courbe elliptique, la méthode rho, se termine par 0,886 sqrt(2 f ) ajouts.
Niveaux typiques
Le tableau suivant présente des exemples de niveaux de sécurité typiques pour les types d'algorithmes tels qu'ils figurent dans la section 5.6.1.1 de la recommandation NIST SP-800-57 pour la gestion des clés.