5. Considérations sur les algorithmes de hachage et enregistrement
Il existe une grande variété d'algorithmes de hachage qui peuvent être utilisés à des fins d'intégrité. Le choix de l'algorithme dépend de plusieurs facteurs tels que le cas d'utilisation de l'intégrité, les besoins ou contraintes de mise en œuvre, ou la conception et les flux de travail de l'application.
Un ensemble initial d'algorithmes sera enregistré auprès de l'IANA dans le registre "Hash Algorithms for HTTP Digest Fields" ; voir la section 7.2. Des algorithmes supplémentaires peuvent être enregistrés conformément aux politiques énoncées dans cette section.
Chaque algorithme a un champ d'état qui est destiné à fournir une aide à la sélection de la mise en œuvre.
Les algorithmes avec une valeur d'état "Active" (Actif) conviennent à de nombreuses fins et il est RECOMMANDÉ que les applications utilisent ces algorithmes. Ceux-ci peuvent être utilisés dans des situations conflictuelles où les fonctions de hachage pourraient devoir fournir une résistance aux attaques par collision, par première préimage et par seconde préimage. Pour les situations conflictuelles, la sélection des algorithmes "Active" acceptables dépendra du niveau de protection exigé par les circonstances. D'autres considérations sont présentées dans la section 6.6.
Les algorithmes avec une valeur d'état "Deprecated" (Obsolète) ne fournissent aucune de ces propriétés ou sont connus pour être faibles (voir [NO-MD5] et [NO-SHA]). Ces algorithmes PEUVENT être utilisés pour préserver l'intégrité contre la corruption, mais NE DOIVENT PAS être utilisés dans un cadre potentiellement conflictuel, par exemple, lors de la signature des valeurs des champs d'intégrité pour l'authenticité. Permettre l'utilisation de ces algorithmes peut aider certaines applications (telles que celles qui utilisaient précédemment la [RFC3230], migrent vers cette spécification (Annexe E), et ont des collections stockées existantes de valeurs de condensat calculées) à éviter une surcharge opérationnelle excessive causée par le recalcul à l'aide d'autres algorithmes plus sûrs. De telles applications ne sont pas exemptées des exigences de cette section. De plus, les applications sans un tel héritage ou historique devraient suivre les conseils d'utilisation des algorithmes avec la valeur d'état "Active".
Une discussion sur l'agilité des algorithmes est présentée dans la section 6.6.
Les demandes d'enregistrement pour le registre "Hash Algorithms for HTTP Digest Fields" utilisent la politique Specification Required (section 4.6 de la [RFC8126]). Les demandes doivent utiliser le modèle suivant :
-
Algorithm Key (Clé d'algorithme) : La valeur de clé de champs structurés utilisée dans les clés de membre de dictionnaire des champs Content-Digest, Repr-Digest, Want-Content-Digest ou Want-Repr-Digest.
-
Status (État) : L'état de l'algorithme. Les options sont :
- "Active" : Algorithmes sans problèmes connus
- "Provisional" : Algorithmes non prouvés
- "Deprecated" : Algorithmes obsolètes ou non sécurisés
-
Description : Une brève description de l'algorithme.
-
Reference(s) : Pointeur(s) vers le(s) document(s) principal(aux) définissant la clé d'algorithme et les détails techniques de l'algorithme.
Lors de l'examen des demandes d'enregistrement, le(s) expert(s) désigné(s) doi(ven)t prêter attention à l'état demandé. La valeur de l'état doit refléter l'état de normalisation et l'opinion générale des groupes d'intérêt pertinents tels que l'IETF ou les organisations de développement de normes (SDO) liées à la sécurité. L'état "Active" ne convient pas à un algorithme connu pour être faible, cassé ou expérimental. Si une demande d'enregistrement tente d'enregistrer un tel algorithme comme "Active", le(s) expert(s) désigné(s) doi(ven)t suggérer un état alternatif de "Deprecated" ou "Provisional".
Lors de l'examen des demandes d'enregistrement, le(s) expert(s) désigné(s) ne peu(ven)t pas utiliser un état de "Deprecated" ou "Provisional" comme motif de rejet.
Les demandes de mise à jour ou de modification des champs dans un enregistrement existant sont autorisées. Par exemple, cela pourrait permettre la transition d'un état d'algorithme de "Active" à "Deprecated" à mesure que l'environnement de sécurité évolue.