web-dev-qa-db-fra.com

HMAC et taille de clé

J'ai généré un hachage clé à l'aide de HMAC-MD5 et HMAC-SHA256 pour un fichier arbitraire avec différentes clés de différentes longueurs.

Devons-nous utiliser une clé avec une taille fixe dans HMAC? Si oui, quelle est la taille de la clé? Sinon, pourquoi?

Quand j'ai essayé avec plusieurs clés de la longueur variable, j'ai eu la valeur si la longueur n'a pas d'importance?

4
user9355495

Vous voudrez peut-être examiner le RFC 2104 :

2. Définition de HMAC

La définition de HMAC nécessite une fonction de hachage cryptographique que nous indiquons par H et une clé secrète K. Nous supposons que H soit une fonction de hachage cryptographique où les données sont hachées en itérant une fonction de compression de base sur des blocs de données.

Nous désignons par b la longueur des octets de tels blocs (B = 64 pour tous les exemples mentionnés ci-dessus de fonctions de hachage) et par l la longueur des octets des sorties de hachage (L = 16 pour MD5, L = 20 pour SHA-1 ). La clé d'authentification K peut être de n'importe quelle longueur jusqu'à B, la longueur de bloc de la fonction de hachage. Les applications utilisables plus longtemps que B octets seront d'abord hachage la clé à l'aide de H, puis utilisez la solution résultante L String d'octet comme clé réelle de HMAC. Dans tous les cas, la longueur minimale recommandée pour K est l octets (en tant que longueur de sortie de hachage). Voir la section 3 pour plus d'informations sur les clés.

3. Touches

La clé pour HMAC peut être de n'importe quelle longueur (les clés plus longues que les octets B sont d'abord hachées à l'aide de H). Cependant, moins de L octets est fortement découragé car il diminuerait la résistance de la sécurité de la fonction. Les clés plus longues que l octets sont acceptables mais la longueur supplémentaire n'aurait fortement augmenter de manière significative la force de fonction. (Une clé plus longue peut être souhaitée si le caractère aléatoire de la clé est considéré comme faible.)

Les touches doivent être choisies au hasard (ou à l'aide d'un générateur pseudo-aléatoire cryptographiquement fort avec une graine aléatoire) et de rafraîchir périodiquement. (Les attaques actuelles n'indiquent pas une fréquence recommandée spécifique pour les changements clés, car ces attaques sont pratiquement infaisables. Cependant, un rafraîchissement de la clé périodique est une pratique de sécurité fondamentale qui contribue à des faiblesses potentielles de la fonction et des clés, et limite les dommages d'une clé exposée. )

En haut de la page, vous obtenez même un lien vers RFC 6151 , qui pourrait être intéressant également:

2. Considérations de sécurité

MD5 a été publié en 1992 en tant que RFC d'information. Depuis lors, MD5 a été largement étudié et de nouvelles attaques cryptographiques ont été découvertes. Les algorithmes de Message Digest sont conçus pour fournir une collision, une pré-image et une deuxième résistance pré-image. De plus, les algorithmes de Digest Message sont utilisés avec une valeur secrète partagée pour l'authentification des messages dans HMAC et, dans ce contexte, certaines personnes peuvent trouver la guidage des principales longueurs et des atouts d'algorithme dans [SP800-57] et [SP800-131] utiles.

MD5 n'est plus acceptable lorsque la résistance aux collisions est requise, telles que les signatures numériques. Il n'est pas urgent d'arrêter d'utiliser MD5 d'une autre manière, telle que HMAC-MD5; Cependant, étant donné que le MD5 ne doit pas être utilisé pour les signatures numériques, de nouvelles conceptions de protocole ne doivent pas utiliser HMAC-MD5. Les alternatives à HMAC-MD5 incluent HMAC-SHA256 [HMAC] [HMAC-SHA256] et [AES-CMAC] Lorsque AES est plus facilement disponible qu'une fonction de hachage.