Appendix B. Techniques de support (Supporting Techniques)
Cette annexe contient les spécifications des techniques de support utilisées dans ce document, y compris les fonctions de hachage et les fonctions de génération de masque.
B.1. Hash Functions (Fonctions de hachage)
Les fonctions de hachage sont utilisées pour mapper des messages de longueur arbitraire à des sorties de longueur fixe. Les fonctions de hachage utilisées dans les schémas de ce document doivent satisfaire les propriétés suivantes :
- Résistance à la préimage (Preimage Resistance) : Étant donné une valeur de hachage h, il est computationnellement infaisable de trouver un message m tel que Hash(m) = h
- Résistance à la seconde préimage (Second Preimage Resistance) : Étant donné un message m1, il est computationnellement infaisable de trouver un message différent m2 tel que Hash(m1) = Hash(m2)
- Résistance aux collisions (Collision Resistance) : Il est computationnellement infaisable de trouver deux messages différents m1 et m2 quelconques tels que Hash(m1) = Hash(m2)
Fonctions de hachage recommandées
Ce document recommande l'utilisation des fonctions de hachage suivantes :
| Fonction de hachage | Longueur de sortie(bits) | Longueur de sortie(octets) | État |
|---|---|---|---|
| SHA-1 | 160 | 20 | ⚠️ Obsolète(compatibilité descendante uniquement) |
| SHA-256 | 256 | 32 | ✅ Recommandé |
| SHA-384 | 384 | 48 | ✅ Recommandé |
| SHA-512 | 512 | 64 | ✅ Recommandé |
| SHA-512/224 | 224 | 28 | ✅ Disponible |
| SHA-512/256 | 256 | 32 | ✅ Disponible |
Identification ASN.1 des fonctions de hachage
Identificateur d'algorithme pour SHA-256 :
id-sha256 OBJECT IDENTIFIER ::= {
joint-iso-itu-t(2) country(16) us(840) organization(1)
gov(101) csor(3) nistalgorithm(4) hashalgs(2) 1
}
Identificateur d'algorithme pour SHA-384 :
id-sha384 OBJECT IDENTIFIER ::= {
joint-iso-itu-t(2) country(16) us(840) organization(1)
gov(101) csor(3) nistalgorithm(4) hashalgs(2) 2
}
Identificateur d'algorithme pour SHA-512 :
id-sha512 OBJECT IDENTIFIER ::= {
joint-iso-itu-t(2) country(16) us(840) organization(1)
gov(101) csor(3) nistalgorithm(4) hashalgs(2) 3
}
B.2. Mask Generation Functions (Fonctions de génération de masque)
Une fonction de génération de masque (Mask Generation Function, MGF) prend en entrée une chaîne d'octets de longueur variable et une longueur de sortie requise, et génère une chaîne d'octets de sortie de longueur spécifiée. Les fonctions de génération de masque peuvent être basées sur des fonctions de hachage ou d'autres fonctions.
L'utilisation principale des fonctions de génération de masque est de générer des données d'apparence aléatoire dans les schémas de remplissage.
B.2.1. MGF1
MGF1 est une fonction de génération de masque basée sur une fonction de hachage. MGF1 (mgfSeed, maskLen) prend en entrée une graine de longueur variable et une longueur de masque requise, et produit un masque de longueur spécifiée.
MGF1 (mgfSeed, maskLen)
Entrée (Input)
mgfSeed Graine de génération de masque, chaîne d'octets de longueur arbitraire
maskLen Longueur attendue du masque(en octets)
Sortie (Output)
mask Masque de longueur maskLen, chaîne d'octets
Erreur (Error)
"mask too long" (masque trop long)
Étapes (Steps)
-
Si maskLen > 2^32 * hLen, sortir "mask too long" et s'arrêter.
-
Soit T une chaîne d'octets vide.
-
Pour le compteur C de 0 à ⌈maskLen / hLen⌉ - 1 :
- Convertir le compteur C en chaîne d'octets C de longueur 4 : C = I2OSP(C, 4)
- Concaténer le hachage de mgfSeed et C à T : T = T || Hash(mgfSeed || C)
-
Sortir les maskLen premiers octets de T comme masque.
Options MGF1 (MGF1 Options)
La fonction de hachage par défaut de MGF1 est SHA-1. Pour les nouvelles applications, l'utilisation de SHA-256 ou d'une fonction de hachage supérieure est recommandée.
Identification ASN.1 de MGF1 avec SHA-256 :
id-mgf1 OBJECT IDENTIFIER ::= { pkcs-1 8 }
-- Le paramètre de MGF1 est la fonction de hachage utilisée
AlgorithmIdentifier { ALGORITHM:IOSet } ::= SEQUENCE {
algorithm ALGORITHM.&id({IOSet}),
parameters ALGORITHM.&Type({IOSet}{@algorithm}) OPTIONAL
}
Considérations de sécurité pour MGF
Dans le modèle de l'oracle aléatoire, si la fonction de hachage sous-jacente se comporte bien, la sortie de MGF1 est computationnellement indiscernable d'une chaîne véritablement aléatoire. Cela rend MGF1 adapté pour une utilisation dans des schémas tels que OAEP et PSS.