Keyed-Hashing for Message Authentication
Algorithme utilisé par Up ! Security Manager
L'algorithme Keyed-Hashing for Message Authentication (HMAC) de l'Internet Engineering Task Force (IETF) a pour principe de calculer une signature à partir d'une clé et d'un algorithme de signature d'un flux binaire ou texte H. La taille de la signature est celle de l'algorithme sous-jacent H.
Cette signature permet par exemple d'attester l'intégrité du contenu d'un fichier, d'un enregistrement d'une base de données, d'un message échangé, etc. parce qu'il est pratiquement impossible que deux contenus distincts produisent la même signature.
Ainsi :
- Si les signatures sont différentes alors les contenus sont différents.
- Si les contenus sont identiques alors les signatures sont identiques.
- Si les contenus sont différents alors les signatures sont très certainement différentes.
Voici l'algorithme Hmac :
- Formatage de la clé.
- Si la taille de la clé est inférieure à la taille d'un bloc de l'algorithme de signature sous-jacent H, la clé formatée est la clé prolongée d'autant d'octets 0 que nécessaire.
- Si la taille de la clé est supérieure à la taille d'un bloc de l'algorithme de signature sous-jacent H, la clé formatée est obtenue par application de cet algorithme.
- Opération IPad.
Calcul de CleFormatee ^ Bloc(0x36)
.
- Ajout du flux à signer.
Calcul de (CleFormatee ^ Bloc(0x36))+Buffer
par concaténation du contenu du flux à signer.
- Signature 1.
Calcul de la signature de (CleFormatee ^ Bloc(0x36))+Buffer
par application de l'algorithme sous-jacent H.
- Opération OPad.
Calcul de CleFormatee ^ Bloc(0xC5)
.
- Ajout de la signature précédente.
Calcul de (CleFormatee ^ Bloc(0x36))+H((CleFormatee ^ Bloc(0x36))+Buffer)
par concaténation de la signature précédente.
- Signature 2.
Calcul de la signature de H((CleFormatee ^ Bloc(0x36))+H((CleFormatee ^ Bloc(0x36))+Buffer))
par application de l'algorithme sous-jacent H. Le résultat est la signature Hmac.