- Spécifications sha-1
-
Spécifications SHA-1
SHA-1 est une fonction de hachage cryptographique qui fournit une empreinte de 160 bits. Pour l'histoire, la cryptanalyse et d'autres aspects liés à cette fonction, voir l'article principal : SHA-1.
Sommaire
Introduction
Ce texte est adapté du document officiel FIPS 180-2 (Secure Hash Standard)[1]. Il décrit les spécifications du standard SHA-1, dont l'objectif est de calculer une représentation condensée de données électroniques (message).
Quand un message inférieur à 264 bits est passé à l'algorithme implémentant SHA-1, on obtient en sortie ce qu'on appelle un haché, ou condensé de ce message. La longueur d'un condensé obtenu via SHA-1 est de 160 bits.Cet algorithme peut être découpé en deux phases : le prétraitement et le calcul du condensé.
- Le prétraitement implique
-
- de compléter le message par des informations le rendant compatible avec l'algorithme SHA-1 (remplissage)
- son analyse pour le découper en blocs de 512 bits
- l'initialisation de variables de travail
- Le calcul du condensé génère un tableau à partir du message complété, puis le transforme via l'utilisation de fonctions, de constantes, d'opérations binaires détaillées plus loin. L'ensemble effectué de manière itérative permet de générer des séries de valeurs de hachage à chaque tour. Le condensé final est le dernier état de ces valeurs de hachage.
Les caractéristiques de SHA-1 sont les suivantes :
- taille du message : 264 bits maximum
- taille des blocs : 512 bits
- taille des mots : 32 bits
- taille du condensé : 160 bits
- niveau de sécurité : 280 bits (attaque anniversaire); sécurité ramenée à 269, puis 263, et enfin 252 d'après des travaux très récents, ce qui rend SHA-1 plus vulnérable (cf. informations générales sur SHA-1).
Symboles et termes utilisés
Paramètres
a, b, c, ..., h = variables de travail (en l'occurrence des mots de w bits), utilisées dans le calcul des hachés.
H(i) = la valeur de hachage n°i. H(0) est la valeur initiale du hachage. H(N) est la dernière valeur de hachage.
= le mot (w bits) n°j de la valeur de hachage n°i, où est le mot de poids le plus fort (à gauche) de la valeur de hachage i.
Kt = constantes itératives selon la valeur de t, utilisées dans le calcul de hachage
k = nombre de 0 ajoutés au message lors du prétraitement (complément)
l = longueur du message M, en bits
m = nombre de bits contenus dans un bloc, soit 512 bits
M = message à traiter
M(i) = bloc n°i (m bits), du message M
= mot (w bits) n°j, du bloc (m bits) n°i, du message M
n = nombre de bits de décalage ou de rotation à appliquer au mot quand associé à une fonction binaire
N = nombre de blocs de m bits contenus dans le message M après complément
T = variable temporaire, mot de w bits, utilisée dans le calcul de condensé
w = nombre de bits contenus dans un mot, soit 32 bits.
Wt = le mot n°t du tableau déduit du messageSymboles
La notation hexadécimale utilisée ici sera: 0x
- exemple:
= opération binaire AND
= opération binaire OR
= opération binaire XOR
= complément binaire
+ = addition modulo 2w
< < = décalage binaire à gauche, où x < < n s'obtient en supprimant les n bits de gauche de x et ajoutant n zéros à droite.
> > = décalage binaire à droite, où x > > n s'obtient en supprimant les n bits de droite de x et ajoutant n zéros à gauche.Opérations sur les mots
Elles utilisent les conventions suivantes :
- opérations binaires bit à bit (cf. symboles)
- addition modulo 2w, soit 232
-
- L'opération x + y est définie comme suit. Soient deux mots x et y représentant les nombres entiers X et Y, tels que et , on a Z le résultat de l'addition modulo 232 de X et Y.
- . On convertit Z en un mot z, et on définit alors z = x + y
- l'opération de rotation binaire par la gauche ROTLn(x), où x est un mot de 32 bits et , est définie par:
Fonctions et constantes
Fonctions
Cette section décrit les fonctions utilisées lors du calcul des valeurs de hachage. SHA-1 utilise une succession de fonctions logiques . Chaque fonction , où , travaille sur trois mots de 32 bits, x, y, z et génère un mot de 32 bits en sortie. La fonction est définie comme suit:
Constantes
SHA-1 utilise quatre valeurs réparties dans les 80 constantes , d'après la règle
Prétraitement
Cette opération se déroule en trois étapes : compléter le message M, découper le résultat en blocs, et initialiser les valeurs de hachage
Complément de M
Il s'agit ici d'ajouter des informations à M pour qu'il soit d'une taille multiple de 512 bits.
pour ce faire, l'on ajoute un bit "1" à la fin du message M, puis k zéros, où k est la plus petite solution non négative de l'équation: l + 1 + k = 448 mod 512
On ajoute alors un bloc de 64 bits correspondant à la représentation binaire de l.Exemples :
- M = "abc", l = 8 x 3 = 24, k = 448 - (l + 1) = 448 - (24 + 1) = 423
-
- On ajoute "1", puis quatre cent vingt trois "0", puis 64 bits finissant par "011000" (pour 24) à M.
- On obtient alors un message complété à 512 bits.
- On ajoute "1", puis quatre cent vingt trois "0", puis 64 bits finissant par "011000" (pour 24) à M.
- M quelconque tel que l = 500 bits, k = 448 - (l + 1) = 448 - (500 + 1) = -53
-
- Comme k ne peut pas être négatif, on lui ajoute 512 en prenant en compte le modulo de l'équation, pour obtenir k = 459
- On ajoute "1", puis quatre cent cinquante neuf "0", puis 64 bits finissant par "111110100" (pour 500) à M.
- On obtient alors un message complété à 512 bits.
- Comme k ne peut pas être négatif, on lui ajoute 512 en prenant en compte le modulo de l'équation, pour obtenir k = 459
Découpage en blocs
Le message complété est découpé en N blocs de 512 bits, notés . Chaque bloc de 512 bits est ensuite découpé en 16 mots de 32 bits, notés .
Initialisations
Les cinq variables suivantes sont affectées de valeurs initiales comme suit :
Calcul du condensé (haché)
Pour ce traitement on utilisera
- un tableau de 80 mots, notés
- cinq variables notées
- cinq variables contenant les valeurs de hachage, notées et initialisées précédemment en
-
- Ces variables contiendront itérativement de nouvelles valeurs de hachage, , pour finalement contenir le condensé de M, dans .
- une variable T, mot de 32 bits
On traite successivement les N blocs de M selon les étapes suivantes
Pour i = 1 à N
{- 1. On remplit le tableau , selon
- 2. On initialise a,b, c, d et e avec les valeurs de hachage du tour précédent
- 3. Pour t = 0 à 79
- {
- ( notée ci-après est la fonction logique, décrite plus haut)
- }
- 4. Calcul des valeurs de hachage intermédiaires
}
Après répétition de quatre étapes ci-dessus pour les N blocs du message M, (i.e., après traitement de ), le condensé de 160 bits de M est obtenu par concaténation des valeurs
Remarque : il existe d'autres méthodes de calcul du condensé SHA-1 donnant des résultats identiques.Liens externes
- ↑ FIPS PUB 180-2, Secure Hash Standard (incluant SHA-1, SHA-256, SHA-384 et SHA-512)
- RFC 3174, US Secure Hash Algorithm 1 (SHA1)
- [1], L'attaque récente sur SHA-1 présentée à Eurocrypt 2009.
Fonctions de hachage cryptographiques ModifierAlgorithmes : AR | Boognish | FFT-hash | HAS-160 | Haval | MD2 | MD4 | MD5 | MD6 | N-hash | PANAMA | RIPEMD | RIPEMD-128 | RIPEMD-160 | RIPEMD-256 | SHA-0 | SHA-1 | SHA-224 | SHA-256 | SHA-384 | SHA-512 | Snefru | StepRightUp | Tiger | VSH | Whirlpool Cryptanalyse : Paradoxe des anniversaires | Linéaire / Différentielle | Attaque par force brute | Effet avalanche | Pseudo-collision Architecture : Remplissage | Fonction de compression | Construction de Merkle-Damgard | Construction de Miyaguchi-Preneel | Construction de Matyas-Meyer-Oseas | Construction de Davies-Meyer
- Portail de la cryptologie
Catégorie : Algorithme de hachage
Wikimedia Foundation. 2010.