Section courante

A propos

Section administrative du site

SHA-1

La cryptographie SHA-1 est une fonction développé par la NSA (agence gouvernemental américain) afin de transmettre de l'information crypté en 160 bits de façon plus sécuritaire. Elle a été définit le 17 avril 1995. Bien qu'avec une attaque Yuval en recherchant par force brute, on obtient un calcul d'une complexité 280 empreintes, depuis 2005, la fonction SHA-1 ne se révèle plus aussi sécuritaire qu'avant, ainsi il est recommandé d'utiliser plutôt une fonction SHA-256 ou Whirlpool.

Encodage

En général, l'algorithme pour de la fonction SHA-1 est le suivant :

MODULE SHA-1(message)
   * Initialise le contexte
   h0 ← 67452301h
   h1 ← EFCDAB89h
   h2 ← 98BADCFEh
   h3 ← 10325476h
   h4 ← C3D2E1F0h

   ml ← longueur du message en bits * Toujours un multiple du nombre de bits dans un caractère

   * Traitement préliminaire
   Ajouter le bit '1' au message, par exemple en ajoutant 80h si la longueur du message est un multiple de 8 bits.
   Ajouter 0 = k < 512 bits '0', telle que la longueur du message résultant en bits soit congru à -64 = 448 ∩ 511
   Ajouter ml, la longueur du message d'origine, sous la forme d'un entier gros-boutiste de 64 bits. Ainsi, la longueur totale est un multiple de 512 bits.

   * Traitez le message par tranches de 512 bits successives:
   BOUCLE POUR CHAQUE bloc du message
      briser un bloc en 16 mots gros-boutiste 32 bits w[i], 0 = i = 15

      * Étendez les 16 mots de 32 bits en 80 mots de 32 bits:
      BOUCLE POUR i ← 16 JUSQU'A 79
         w[i] ← (w[i-3] xor w[i-8] xor w[i-14] xor w[i-16]) rotation vers la gauche 1
      FIN BOUCLE POUR i

      * Initialise la valeur haché pour ce morceau :
      ah0
      bh1
      ch2
      dh3
      eh4

      BOUCLE POUR i ← 0 JUSQU'A 79
         EVALUER CAS i
            CASE 0 A 19 :
               f ← (bc) U ((¬ b) ∩ d)
               k ← 5A827999h
            CASE 20 A 39 :
               f ← b xor c xor d
               k ← 6ED9EBA1h
            CASE 40 A 59 :
               f ← (bc) U (bd) U (cd)
               k ← 8F1BBCDCh
            CASE 60 A 79 :
               f ← b xor c xor d
               k ← CA62C1D6h
         FIN EVALUER CAS

         temp ← (a décalage vers la gauche 5) + f + e + k + w[i]
         ed
         dc
         cb rotation vers la gauche 30
         ba
         atemp
      FIN BOUCLE POUR i

      * Ajoutez le hachage de cette pièce jusqu'à ce qu'il en résulte:
      h0h0 + a
      h1h1 + b
      h2h2 + c
      h3h3 + d
      h4h4 + e
   FIN BOUCLE POUR CHAQUE

   * Produisez la valeur de hachage finale (gros-boutiste) sous la forme d'un nombre de 160 bits:
   RETOURNER (h0 décalage vers la gauche 128) U (h1 décalage vers la gauche 96) U (h2 décalage vers la gauche 64) U (h3 décalage vers la gauche 32) U h4


Dernière mise à jour : Samedi, le 18 mai 2019