Fonctions de hachage et fonctions à sortie extensible
Une fonction de hachage cryptographique est une fonction publique sans clé qui à un message de taille quelconque associe une sortie de taille fixe appelée empreinte. Une telle fonction doit satisfaire plusieurs propriétés de sécurité telles que la résistance à la recherche de préimages ou de collisions (voir annexe A.1.4). Des attaques dites génériques permettent de résoudre ces problèmes avec des complexités bien connues (voir annexe A.1.4), par exemple la recherche de collision basée sur le paradoxe des anniversaires. Les fonctions de hachage cryptographiques sont conçues pour qu’il n’existe aucune attaque plus efficace que l’attaque générique pour chacune de ces propriétés. Afin de contrer les attaques classiques ou quantiques fondées sur le paradoxe des anniversaires, une empreinte doit être plus longue qu’une clé symétrique pour atteindre le même niveau de robustesse.
En pratique, les fonctions de hachage sont construites de manière itérative autour de fonctions plus élémentaires, par exemple de fonctions de compression dans le cas de la famille SHA-2 ou de permutations publiques dans le cas de la famille SHA-3. On qualifie de partielle une attaque sur un de ces composants internes. L’existence d’une attaque partielle n’implique pas nécessairement de faiblesse de la fonction de hachage en ellemême, mais trahit des défauts de conception majeurs.
- La taille des empreintes produites par une fonction de hachage cryptographique doit être d’au moins 256 bits.
- La meilleure attaque classique connue permettant de trouver des collisions doit nécessiter de l’ordre de calculs d’empreinte, où désigne la taille en bits des empreintes.
- La meilleure attaque classique connue permettant de trouver une préimage doit nécessiter de l’ordre de calculs d’empreinte, où désigne la taille en bits des empreintes.
- Une taille d’empreinte d’au moins 256 bits garantit qu’il n’existe pas d’attaque générique en collision de complexité significativement inférieure à opérations.
- Une attaque en collision de complexité pratique contre une fonction de hachage cryptographique est particulièrement critique. En effet, des collisions peuvent être calculées une fois puis utilisées à plusieurs reprises par divers acteurs à des fins malveillantes. Dans le cas de SHA-1, une collision a été calculée en pratique en environ calculs d’empreinte et publiée en 2017 [33].
- Selon le type de mémoire quantique utilisé, les meilleures attaques quantiques de recherche d’une collision contre une fonction de hachage cryptographique produisant des empreintes de bits ont des complexités de et opérations. Pour une valeur de bits, cela engendre des attaques demandant environ opérations quantiques dans un modèle de calcul extrêmement exigeant, ou opérations quantiques dans un modèle moins contraignant. Indépendamment du modèle, l’accélération quantique de la recherche de collisions est fortement limitée par la profondeur du circuit quantique disponible. Ainsi, l’emploi de fonctions de hachage avec 256 bits de sortie peut être présumé suffisant pour que les attaques quantiques de recherche de collisions soient inopérantes à assez long terme. Toutefois, la recommandation RecoPQHachage pourrait devenir une règle post-quantique en cas d’évolutions majeures des technologies de calcul quantique ou de l’algorithmique quantique.
- Pour une fonction de hachage cryptographique utilisée à l’intérieur de mécanismes de signature post-quantique fondés sur le hachage reconnus par la communauté académique et pour laquelle une résistance en collision n’est pas requise, la taille minimale des empreintes produites est de 128 bits pour résister aux attaques classiques. Lorsqu’une sécurité postquantique est visée, il est recommandé que les empreintes aient une taille d’au moins 192 bits.
- Les fonctions de hachage SHA2-256 et SHA3-256 sont conformes aux règles RègleHachage.1, RègleHachage.2, RègleHachage.3 et à la recommandation RecoHachage, mais ne sont pas conformes à la recommandation RecoPQHachage.
- La fonction de hachage SHA3-384 est conforme aux règles et recommandations précédentes.
- La fonction de hachage SHA-1 n’est pas conforme au référentiel car elle ne respecte pas les règles RègleHachage.1 et RègleHachage.2.
- La fonction de hachage SHA3-224 n’est pas conforme au référentiel car elle ne respecte pas la règle RègleHachage.1.
- La fonction de hachage définie par SHAKE-128 avec 256 bits de sortie n’est pas conforme au référentiel car elle ne respecte pas la règle RègleHachage.3. En effet, SHAKE-128 est basée sur une fonction éponge avec 256 bits de capacité, sur laquelle une attaque en préimage en opérations existe lorsque la taille de la sortie n’est pas trop grande.
Fonctions à sortie extensible. On appelle fonction à sortie extensible ou XOF1 une variante d’une fonction de hachage capable de renvoyer une empreinte de longueur arbitraire. Une XOF prend en entrée un message de taille quelconque ainsi qu’une taille d’empreinte et renvoie une empreinte de bits. Deux appels à une XOF pour un même message et des tailles d’empreinte différentes renvoient deux empreintes dont l’une est un préfixe de l’autre.
Une telle fonction est généralement dérivée d’une fonction de hachage au moyen d’une construction itérative réutilisant un composant interne de la fonction de hachage.
- Pour des empreintes de bits, la meilleure attaque classique connue permettant de trouver une collision doit nécessiter au minimum de l’ordre de calculs d’empreinte.
- Pour des empreintes de bits, la meilleure attaque classique connue permettant de trouver une préimage doit nécessiter au minimum de l’ordre de calculs d’empreinte.
- Lorsqu’une sécurité post-quantique est visée et pour des empreintes de bits, il ne doit exister aucune attaque quantique permettant de trouver une collision nécessitant un nombre d’opérations inférieur à calculs d’empreinte et une profondeur inférieure à .
- Lorsqu’une sécurité post-quantique est visée et pour des empreintes de bits, il ne doit exister aucune attaque quantique permettant de trouver une préimage nécessitant un nombre d’opérations inférieur à calculs d’empreinte et une profondeur inférieure à .
- Lorsqu’une sécurité post-quantique est visée et pour des empreintes de bits, il est recommandé d’employer une XOF contre laquelle il n’existe aucune attaque quantique permettant de trouver une collision nécessitant un nombre d’opérations inférieur à calculs d’empreinte et une profondeur inférieure à .
- Lorsqu’une sécurité post-quantique est visée et pour des empreintes de bits, il est recommandé d’employer une XOF contre laquelle il n’existe aucune attaque quantique permettant de trouver une préimage nécessitant un nombre d’opérations inférieur à calculs d’empreinte et une profondeur inférieure à .
- Les règles de sécurité des XOF et des fonctions de hachage ne coïncident pas. En effet, pour être conforme aux règles du référentiel, une fonction de hachage cryptographique doit avoir une résistance en préimage deux fois supérieure à la résistance en collision, alors qu’une XOF doit satisfaire le même niveau de sécurité pour la collision et le préimage. Cela est dû aux principes de conception de certaines familles de XOF comme SHAKE.
- Il est possible d’utiliser une XOF comme une fonction de hachage en fixant la taille de ses sorties. Il convient toutefois de faire attention aux points suivants. D’une part, de telles fonctions de hachage peuvent produire des sorties reliées, lorsque seule la taille d’empreinte varie. D’autre part, une XOF conforme au référentiel peut produire une fonction de hachage non conforme, comme détaillé dans la remarque précédente. Par exemple, SHAKE-128 avec 256 bits de sortie ne constitue pas une fonction de hachage conforme au référentiel.
- La fonction à sortie extensible SHAKE-256 est conforme aux règles et recommandations précédentes.
- La fonction à sortie extensible SHAKE-128 est conforme aux règles RègleXOF.1, RègleXOF.2, RèglePQXOF.1, RèglePQXOF.2 et à la recommandation RecoXOF.2 mais n’est pas conforme aux recommandations RecoXOF.1, RecoPQXOF.1 et RecoPQXOF.2.
-
De l’anglais « eXtendable Output Function ». ↩