AccueilđŸ‡«đŸ‡·Chercher

SHA-1

SHA-1 (Secure Hash Algorithm, prononcĂ© /ʃa.Ć“Ìƒ/[1]) est une fonction de hachage cryptographique conçue par la National Security Agency des États-Unis (NSA), et publiĂ©e par le gouvernement des États-Unis comme un standard fĂ©dĂ©ral de traitement de l'information (Federal Information Processing Standard du National Institute of Standards and Technology (NIST)). Elle produit un rĂ©sultat (appelĂ© « hash » ou condensat) de 160 bits (20 octets), habituellement reprĂ©sentĂ© par un nombre hexadĂ©cimal de 40 caractĂšres.

Un tour de la fonction de compression de SHA-1 :
A, B, C, D, E sont des mots de 32 bits ;
<<<n désigne une rotation des bits par décalage de n bits vers la gauche ;
F est une fonction (non linéaire sur le corps F2 des booléens) qui dépend du numéro de tour t ;
⊞ est l'addition modulo 232 (l'addition des entiers machines non signĂ©s de 32 bits), qui est non linĂ©aire sur F2 ;
Kt est une constante (32 bits) qui dépend du numéro de tour t ;
Wt est un mot de 32 bits qui dépend du numéro de tour t ; il est obtenu par une procédure d'expansion à partir du bloc de donnée (512 bits) dont le traitement est en cours.

SHA-1 n'est plus considĂ©rĂ© comme sĂ»r contre des adversaires disposant de moyens importants. En 2005, des cryptanalystes ont dĂ©couvert des attaques sur SHA-1, suggĂ©rant que l'algorithme pourrait ne plus ĂȘtre suffisamment sĂ»r pour continuer Ă  l'utiliser dans le futur[2]. Depuis 2010, de nombreuses organisations ont recommandĂ© son remplacement par SHA-2 ou SHA-3[3] - [4] - [5]. Microsoft[6], Google[7] et Mozilla[8] - [9] - [10] ont annoncĂ© que leurs navigateurs respectifs cesseraient d'accepter les certificats SHA-1 au plus tard en 2017.

Origine : SHA-0 et SHA-1

Le SHA-1 est le successeur du SHA-0 qui a Ă©tĂ© rapidement mis de cĂŽtĂ© par le NIST pour des raisons de sĂ©curitĂ© insuffisante. Le SHA-0 Ă©tait lĂ©gitimement soupçonnĂ© de contenir des failles qui permettraient d'aboutir rapidement Ă  des collisions (deux documents diffĂ©rents qui gĂ©nĂšrent le mĂȘme condensat). Face Ă  la controverse soulevĂ©e par le fonctionnement du SHA-0 et certains constats que l'on attribue Ă  la NSA, le SHA-0 s'est vu modifiĂ© peu aprĂšs sa sortie (1993) et complexifiĂ© pour devenir le SHA-1 (1995). Une collision complĂšte sur le SHA-0 a Ă©tĂ© dĂ©couverte par Antoine Joux et al. en . En 2005, la cryptanalyste Xiaoyun Wang et ses co-auteurs Yiqun Lisa Yin et Hongbo Yu annoncent une attaque thĂ©orique pour la recherche de collisions pour SHA-1 qui est plus efficace que l'attaque des anniversaires (l'attaque gĂ©nĂ©rique de rĂ©fĂ©rence)[11]. L'attaque complĂšte sera publiĂ©e Ă  Crypto 2015[12]. Le NIST pour sa part recommande de passer sur un algorithme SHA-2 ou SHA-3 quand c'est possible. Depuis 2013, Microsoft a dĂ©clarĂ© l’obsolescence du SHA-1[13] et en 2014. L'ANSSI dĂ©conseille son utilisation dans la seconde version de son RĂ©fĂ©rentiel GĂ©nĂ©ral de SĂ©curitĂ© (RGS)[14] d'application au . Enfin, Google annonce que ses versions de Chrome n'accepteront plus, de façon graduelle, le SHA-1 jusqu'Ă  le refuser pour les certificats expirant aprĂšs le [15].

En Google et le Centrum voor Wiskunde en Informatica annoncent une attaque effective et la premiĂšre collision sur SHA-1[16].

Exemples

Voici la signature obtenue sur une phrase (codée en utf8) : SHA1("Wikipédia, l'encyclopédie libre et gratuite") = 6153A6FA0E4880D9B8D0BE4720F78E895265D0A9.

En modifiant un caractÚre, la signature change radicalement : SHA1("Wikipédia, l'encyclopédie libre et gratuitE") = 11F453355B28E1158D4E516A2D3EDF96B3450406.

Le SHA-1 est un excellent générateur de nombres pseudo-aléatoires (comme beaucoup de fonctions de hachage) et il passe avec succÚs tous les tests statistiques.

Fonctionnement du SHA-1

Le SHA-1 prend un message d'un maximum de 264 bits en entrĂ©e. Son fonctionnement est similaire Ă  celui du MD4 ou MD5 de Ronald Rivest. Quatre fonctions boolĂ©ennes sont dĂ©finies, elles prennent 3 mots de 32 bits en entrĂ©e et calculent un mot de 32 bits. Une fonction spĂ©cifique de rotation est Ă©galement disponible, elle permet de dĂ©placer les bits vers la gauche (le mouvement est circulaire et les bits reviennent Ă  droite). Une de ces rotations n'Ă©tait pas prĂ©sente dans le SHA-0, elle permet de casser certaines caractĂ©ristiques linĂ©aires dans la structure. Cela permet d'Ă©viter une attaque sur les bits neutres dĂ©crite par Eli Biham, technique reprise pour calculer la collision complĂšte sur SHA-0 (Antoine Joux et al.).

Le SHA-1 commence par ajouter Ă  la fin du message un bit Ă  1 suivi d'une sĂ©rie de bits Ă  0, puis la longueur du message initial (en bits) codĂ©e sur 64 bits. La sĂ©rie de 0 a une longueur telle que la sĂ©quence ainsi prolongĂ©e a une longueur multiple de 512 bits. L'algorithme travaille ensuite successivement sur des blocs de 512 bits.

Pour chaque bloc l'algorithme calcule 80 tours (ou rondes, « rounds » en anglais) successifs et applique une sĂ©rie de transformations sur l'entrĂ©e. La premiĂšre Ă©tape consiste Ă  calculer 80 valeurs sur 32 bits. Les 16 premiĂšres valeurs sont obtenues directement Ă  partir du bloc « message » en entrĂ©e. Les 64 autres sont calculĂ©es successivement. Le SHA-1 les obtient grĂące Ă  une rotation (absente dans SHA-0) qui est appliquĂ©e sur le rĂ©sultat d'un XOR, il utilise pour cela 4 mots obtenus dans les itĂ©rations prĂ©cĂ©dentes. On dĂ©finit ensuite cinq variables qui sont initialisĂ©es avec des constantes (spĂ©cifiĂ©es par le standard), le SHA-1 utilise encore 4 autres constantes dans ses calculs. Si un bloc de 512 bits a dĂ©jĂ  Ă©tĂ© calculĂ© auparavant, les variables sont initialisĂ©es avec les valeurs obtenues Ă  la fin du calcul sur le bloc prĂ©cĂ©dent.

Il s'ensuit 80 tours qui alternent des rotations, des additions entre les variables et les constantes. Selon le numéro du tour, le SHA-1 utilise une des quatre fonctions booléennes. L'une de ces fonctions est appliquée sur 3 des 5 variables disponibles. Les variables sont mises à jour pour le tour suivant grùce à des permutations et une rotation. En résumé, le SHA-1 change sa méthode de calcul tous les 20 tours et utilise les sorties des tours précédents.

À la fin des 80 tours, on additionne le rĂ©sultat avec le vecteur initial. Lorsque tous les blocs ont Ă©tĂ© traitĂ©s, les cinq variables concatĂ©nĂ©es (5 × 32 = 160 bits) reprĂ©sentent la signature.

Caractéristiques

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Ă© : collision en 263 opĂ©rations.

L’attaque gĂ©nĂ©rique des anniversaires permet de trouver une collision en 280 opĂ©rations, ce qui est donc la sĂ©curitĂ© attendue pour une telle fonction de hachage. Mais dans le cas de SHA-1, il existe une attaque thĂ©orique en 269 connue depuis 2005[17], qui a Ă©tĂ© amĂ©liorĂ©e en une attaque en 263 opĂ©rations. Ces attaques, bien que thĂ©oriques, ouvrent la possibilitĂ© que de rĂ©elles collisions soient dĂ©couvertes (ce qui est Ă©galement une question de temps et de moyens).

DĂ©tails de l'algorithme

Les spécifications de SHA-1 sont décrites pour la premiÚre fois en avril 1995 dans le document officiel du NIST FIPS 180-1 pour un standard de fonction de hachage cryptographique[18]. Elles sont reprises dans les versions successives de ce document, FIPS-180-2, FIPS-180-3 et FIPS-180-4[19].

L'algorithme SHA-1 transforme un message de longueur inférieure à 264 bits en un haché, ou condensé de ce message, qui est de longueur 160 bits. Il adopte la construction de Merkle-DamgÄrd : schéma itératif à partir d'une fonction de compression dont l'entrée est de taille fixe, et ajout en fin de message de sa longueur (renforcement de Merkle-DamgÄrd, (en)Merkle-DamgÄrd strengthening) ce qui permet de réduire la résistance aux collisions de la fonction de hachage à celle de la fonction de compression.

Cet algorithme peut ĂȘtre dĂ©coupĂ© en deux phases : le prĂ©traitement et le calcul du condensĂ©.

  • Le prĂ©traitement implique
    1. de compléter le message par des informations le rendant compatible avec l'algorithme SHA-1 (remplissage)
    2. son analyse pour le découper en blocs de 512 bits
    3. 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.

ParamĂštres

  • a, b, c, d, e = variables de travail (en l'occurrence des mots de w bits), utilisĂ©es dans le calcul des hachĂ©s.
  • = la valeur de hachage n°i. est la valeur initiale du hachage. 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.
  • = 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
  • = 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.
  • = le mot n°t du tableau dĂ©duit du message

Symboles

La notation hexadécimale utilisée ici sera: (exemple : )

  • = opĂ©ration binaire AND
  • = opĂ©ration binaire OR
  • = opĂ©ration binaire XOR
  • = complĂ©ment binaire
  • = addition modulo
  • = dĂ©calage binaire Ă  gauche, oĂč s'obtient en supprimant les n bits de gauche de x et ajoutant n zĂ©ros Ă  droite.
  • = dĂ©calage binaire Ă  droite, oĂč 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 , soit
    L'opération est définie comme suit. Soient deux mots représentant les nombres entiers , tels que et , on a le résultat de l'addition modulo de .
    . On convertit en un mot , et on définit alors
  • l'opĂ©ration de rotation binaire par la gauche , oĂč x est un mot de 32 bits et , est dĂ©finie par:

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 variables entiĂšres de 32 bits et retourne un entier de 32 bits :

dĂ©finie par une des trois fonctions binaires classiques suivantes, oĂč

est la fonction binaire (plusieurs formules Ă©quivalentes ci-dessus) de choix entre les bits correspondants des deux premiĂšres variables, selon la valeur du bit correspondant de la troisiĂšme variable,

est la fonction binaire (plusieurs formules équivalentes ci-dessus, ainsi que d'autres car elle est commutative sur ses 3 variables) indiquant si la majorité (au moins deux) des trois bits correspondants des trois variables sont à 1, et

est la fonction binaire (commutative sur toutes ses variables) d'union exclusive ou parité des trois variables.

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, avec l = taille de M en bits.
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.
  • 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
    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.

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 .

Initialisation

Le vecteur initial est défini comme suit :

Calcul du condensé (haché)

Pour ce traitement on utilisera :

  • la fonction d'expansion d'un bloc de 16 mots du message en un bloc intermĂ©diaire de 80 mots :
  • la fonction suivante de compression d'un bloc intermĂ©diaire de 80 mots sur un vecteur de 5 mots :
    oĂč notĂ©e ci-aprĂšs est la fonction binaire, dĂ©crite plus haut.
  • 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 .

On traite successivement les blocs de M selon les Ă©tapes suivantes, pour :

  1. On Ă©tend un bloc de 16 mots du message en un bloc temporaire de 80 mots oĂč , selon
  2. On initialise un vecteur temporaire avec les valeurs de hachage du tour précédent :
  3. On réduit le bloc temporaire sur ce vecteur temporaire :
    oĂč notĂ©e ci-aprĂšs est la fonction logique, dĂ©crite plus haut.
  4. On combine le vecteur obtenu avec le condensé intermédiaire par une simple addition :

AprÚs répétition des quatre étapes ci-dessus pour les N blocs du message M, 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.

  • On doit noter notamment que la rotation de 30 bits vers la gauche calculĂ©e sur 32 bits est trivialement Ă©quivalente Ă  une rotation de 2 bits vers la droite .
  • Comme le montrent Laurent et Peyrin dans leur article de 2019, les opĂ©rations de chacune des 80 boucles de l'Ă©tape 3 sont Ă©galement rĂ©ductibles, de façon Ă©quivalente, Ă  une seule opĂ©ration
    oĂč les 5 variables sont en fait parties d'un unique registre d'Ă©tat de 160 bits, dont on ne doit mĂ©moriser Ă  chaque boucle que les 4 valeurs prĂ©cĂ©dentes
    Cela ne nĂ©cessite que de connaitre les valeurs d'initialisation des 3 « valeurs prĂ©cĂ©dentes » associĂ©es Ă  la valeur initiale du registre pour les 3 premiĂšre boucles, ce qui est possible car les valeurs initiales (de l'Ă©tape 2) sont inversibles pour la fonction sur seulement 3 Ă©tapes, cette mĂȘme fonction Ă©tant utilisĂ©e sans changement pour les 20 premiĂšres boucles dont les 3 premiĂšres, et toutes les fonctions dĂ©finies Ă  l'origine sur 32 bits sont extensibles sans changement Ă  160 bits).
    D'autre part, les rotations de cette derniÚre formule (réduite à une opération) portent sur des valeurs de 160 bits (et non 32 bits), de sorte qu'alors .
  • La fonction de compression obtenue par ces 80 boucles est donc une composition rĂ©cursive de fonctions Ă  une seule variable de 160 bits (portant sur l'expansion triviale et inversible Ă  160 bits , Ă  l'Ă©tape 1, d'un bloc de 32 bits extrait du message en clair), terminĂ©e par l'addition de la valeur de hachage intermĂ©diaire du message jusqu'au bloc prĂ©cĂ©dent (ou la valeur initiale constante de la fonction de hachage) :
    Noter que dans cette dĂ©finition, les fonctions initialement dĂ©finies sur 32 bits sont modifiĂ©es pour ĂȘtre Ă©tendues Ă  160 bits en utilisant la formule Ă  une seule opĂ©ration, oĂč viennent s'ajouter les rotations sur 5 bits vers la gauche ou 2 bits vers la droite des valeurs prĂ©cĂ©dentes de et les additions de constantes .
  • La rĂ©sistance aux collisions de SHA-1 est liĂ©e directement Ă  la non-inversibilitĂ© (conjecturĂ©e) de la fonction composĂ©e obtenue , puisque la fonction d'expansion des messages est trivialement inversible.

Attaques

Une attaque brute basée sur le paradoxe des anniversaires permet de trouver une collision complÚte sur une clé SHA-1 complÚte (sur 160 bits) avec un nombre d'opérations de l'ordre de .

En 2005, Rijmen et Oswald ont publié une attaque sur une version simplifiée du SHA-1 (53 tours), leur attaque permet de trouver une collision avec moins de opérations.

En , Bruce Schneier a fait état d'une attaque sur la version complÚte du SHA-1 par l'équipe chinoise de Wang, Yin et Yu. Leur méthode permet de trouver :

  • une collision dans le SHA-1 complet de 128 bits avec opĂ©rations au lieu de par l’attaque des anniversaires
  • une collision dans le SHA-0 complet avec seulement opĂ©rations
  • une collision dans une version simplifiĂ©e du SHA-1 (58 tours) avec opĂ©rations

La description de l'attaque a été publiée en .

Le , une amélioration de l'attaque a été annoncée par Wang et al. à la conférence CRYPTO 2005, la complexité passe ainsi de 269 à 263, soit une division par 64 de la complexité originale.

Lors de l'Eurocrypt 2009 (avril), une amélioration[20] de l'attaque aurait permis de réduire à nouveau sa complexité jusqu'à atteindre . Toutefois, ces résultats furent démentis et l'article[21] fut retiré[22] à la suite de la découverte d'une erreur dans l'évaluation de cette complexité.

Une équipe composée de chercheurs de chez Google et du CWI (Centrum Wiskunde et Informatica) ont annoncé le qu'ils avaient réussi à obtenir une collision entre deux documents[23] - [24].

Une Ă©quipe composĂ©e de chercheurs universitaires (GaĂ«tan Leurent de l'Inria en France et son collĂšgue Thomas Peyrin de l'UniversitĂ© de Nanyang Ă  Singapour) a annoncĂ© en dĂ©but avoir mis au point une attaque sur la version complĂšte de SHA-1 (80 tours) permettant d'obtenir pour n'importe quelle valeur de hachage une collision sur des prĂ©fixes choisis en un nombre d'opĂ©rations situĂ© entre et [25], ce qui rĂ©duit le coĂ»t d'obtention de collisions Ă  moins de 150 000 $, Ă  la portĂ©e d'une organisation de moyenne taille (ou de bandes organisĂ©es) et plus seulement de grandes organisations ou de gouvernements, basĂ©e sur une analyse diffĂ©rentielle multi-bloc (et non un bloc unique avec les tentatives prĂ©cĂ©dentes), ce qui permet d'en amĂ©liorer l'efficacitĂ© en rĂ©duisant l'espace de recherche de façon incrĂ©mentielle. En , ces mĂȘmes chercheurs ont annoncĂ© avoir amĂ©liorĂ© leur attaque et pouvoir obtenir une collision en opĂ©rations, pour un coĂ»t de 45k$[26]. Les investigations continuent pour dĂ©terminer le coĂ»t minimum de ce type d'attaque qui pourrait en pratique s'avĂ©rer mĂȘme infĂ©rieur (des attaques similaires sont dĂ©montrĂ©es Ă©galement sur d'autres algorithmes de hachage similaires, y compris MD5 qui Ă©tait dĂ©jĂ  connu pour ĂȘtre cassĂ© mais qui le devient encore plus facilement). Toutefois l'attaque annoncĂ©e ne concerne pas encore les empreintes de messages (ou signatures) HMAC basĂ©es sur SHA-1[27] - [25]. Un code libre de dĂ©monstration et des donnĂ©es d'analyse seront bientĂŽt mis en ligne sur GitHub afin d'Ă©valuer correctement son impact notamment dans la sĂ©curitĂ© de protocoles Internet comme TLS (utilisĂ© notamment par HTTPS) et des certificats de serveurs, avec la possibilitĂ© alors de crĂ©er Ă  bas coĂ»t une autoritĂ© de certification (CA) malveillante, notamment pour crĂ©er des failles de contournement de la sĂ©curitĂ© de sites Internet (dont 5 % des plus connus et les plus visitĂ©s utilisent encore en des certificats basĂ©s sur SHA-1, plusieurs annĂ©es aprĂšs la fin de leur recommandation, y compris encore Microsoft pour certains de ses services connectĂ©s comme Skype) ainsi que l'utilisabilitĂ© de la mĂ©thode pour casser d'autres algorithmes de hachages connus qui restent recommandĂ©s (dont RIPEMD-160, SHA-2 et SHA-3) et d'autres qui ne le sont pas encore.

Conséquences

MĂȘme si un gain de 217 opĂ©rations permettait de diviser le temps de recherche par un facteur de 131 072, l'attaque de 2009 avec ses 263 opĂ©rations Ă©tait Ă  la limite de ce qui Ă©tait rĂ©alisable. Adi Shamir a toutefois laissĂ© entendre que l'attaque pouvait probablement ĂȘtre abordĂ©e via un calcul distribuĂ© Ă  l'Ă©chelle planĂ©taire. Mais maintenant (en avec la mĂ©thode publiĂ©e par Leurent et Peyrin) avec un gain d'au moins 233 opĂ©rations (soit un facteur d'accĂ©lĂ©ration voisin de dix milliards), une telle attaque est tout Ă  fait rĂ©alisable de façon pratique avec des moyens facilement accessibles, d'autant plus qu'en 10 ans la performance des systĂšmes s'est considĂ©rablement accrue, avec en plus l'arrivĂ©e massive et Ă  bas coĂ»t sur le marchĂ© mondial des GPU (ainsi qu'avec la multiplication des offres peu onĂ©reuses d'hĂ©bergement d'applications privĂ©es sur le « cloud » permettant de les utiliser), capables de rĂ©aliser localement des calculs massivement parallĂšles et de façon discrĂšte, sans faire nĂ©cessairement appel Ă  des ressources externes distribuĂ©es (Ă©galement dĂ©tournĂ©es de façon illĂ©gale et aujourd'hui Ă  trĂšs grande Ă©chelle) accessibles sur un rĂ©seau planĂ©taire oĂč une telle mise en Ɠuvre pourrait ĂȘtre dĂ©tectĂ©e assez facilement.

La rĂšgle veut qu'une attaque plus rapide que les attaques gĂ©nĂ©riques (celle des anniversaires en l'occurrence) rende l'algorithme non sĂ»r du point de vue cryptographique. De plus, la structure de SHA-1 reste assez proche de celle de MD5 (qui est dĂ©conseillĂ© pour les nouvelles applications) pour lequel on a trouvĂ© effectivement des collisions. Depuis l'annonce de l'attaque de Wang et al., SHA-1 a tendance Ă  ĂȘtre retirĂ© progressivement, au moins de certaines applications cryptographiques, essentiellement au profit de SHA-256 (d'autres fonctions de hachage sont Ă©galement utilisĂ©es comme Whirlpool, Tiger, RIPEMD-160, et d'autres plus rĂ©centes comme ChaCha20, Curve25519, NTRU, ainsi que BLAKE2b ou BLAKE2s qui sont suggĂ©rĂ©s en pour les empreintes de mots de passe et pour la sĂ©curisation des Ă©changes de clĂ©s de chiffrement, en remplacement de SHA-1 et mĂȘme de SHA-2 ou SHA-3). SHA-1 reste malheureusement encore largement utilisĂ©, d'autant que la sĂ©curitĂ© de certaines applications repose sur la rĂ©sistance Ă  la recherche de prĂ©image (ce qui n'est plus le cas depuis si cette recherche est techniquement rĂ©alisable), et non sur la seule rĂ©sistance aux collisions[17].

Vu les faiblesses constatĂ©es sur SHA-1, et la conception de SHA-2 qui est voisine, une compĂ©tition a Ă©tĂ© organisĂ©e par la NIST, afin de trouver un nouveau standard de hachage (SHA-3) comme cela fut le cas il y a quelques annĂ©es pour la cryptographie symĂ©trique avec AES. Toutefois les rĂ©vĂ©lations d'Edouard Snowden concernant la manipulation par la NSA des constantes utilisĂ©es dans des algorithmes de sĂ©curitĂ© standardisĂ©s par le NIST (y compris dans les algorithmes de chiffrement rĂ©cents, et dans des algorithmes de gĂ©nĂ©ration de nombres pseudo-alĂ©atoires basĂ©s sur les courbes elliptiques nĂ©cessaires Ă  la production des clĂ©s de chiffrement) ont levĂ© le doute sur la rĂ©elle sĂ©curitĂ© des fonctions de hachage de la famille SHA : ainsi concernant SHA-1, les constantes d'initialisation n'obĂ©issent de façon Ă©vidente Ă  aucun critĂšre cryptographique satisfaisant et ont un intĂ©rĂȘt seulement mnĂ©monique, elles pourraient ainsi constituer des portes dĂ©robĂ©es volontairement introduites ou laissĂ©es par la NSA pour faciliter la dĂ©couverte de collisions avec les moyens techniques dont disposait alors la NSA au moment de sa standardisation et sa publication par le NIST en 1995.

L'attaque produite par Wang et al. ne concerne que des collisions quelconques (tout comme leur fameuse collision complĂšte sur le MD5). C’est-Ă -dire que l'on peut trouver deux messages au contenu alĂ©atoire qui produisent la mĂȘme signature. En revanche, Ă  partir d'une signature donnĂ©e, il Ă©tait considĂ©rĂ© comme impossible (jusqu'en ) de forger un second message qui conduise Ă  la mĂȘme valeur, Ă  condition d'utiliser un systĂšme d'authentification de messages (tel que HMAC) en complĂ©ment de la fonction de hachage nĂ©cessaire Ă  ce systĂšme. Or, c'est ce type d'attaque qui pourrait mettre en pĂ©ril les applications comme PGP et l'authenticitĂ© des donnĂ©es.

Le SHA-1 en mode chiffrement

Les primitives des fonctions de hachage cryptographiques sont assez proches de celles des chiffrements symétriques. SHA-1, a été adaptée par Helena Handschuh et David Naccache pour obtenir un chiffrement par bloc appelé SHACAL.

Notes et références

E.A.Grechnikov,Collisions for 72-step and 73-step SHA-1: Improvements in the Method of Characteristics, (http://eprint.iacr.org/2010/413)

  1. Qu'est-ce qu'un certificat de signature de code ?, GoDaddy Canada La scĂšne se produit Ă  54 s.
  2. (en) Schneier, Bruce, « Schneier on Security: Cryptanalysis of SHA-1 »,
  3. (en) « NIST.gov - Computer Security Division - Computer Security Resource Center »
  4. (en) Marc Stevens1, Pierre Karpman et Thomas Peyrin, « The SHAppening: freestart collisions for SHA-1 » (consulté le )
  5. (en) Bruce Schneier, « SHA-1 Freestart Collision », Schneier on Security,
  6. (en) « Windows Enforcement of Authenticode Code Signing and Timestamping », Microsoft, (consulté le )
  7. (en) « Intent to Deprecate: SHA-1 certificates », Google, (consulté le )
  8. (en) « Bug 942515 - stop accepting SHA-1-based SSL certificates with notBefore >= 2014-03-01 and notAfter >= 2017-01-01, or any SHA-1-based SSL certificates after 2017-01-01 », Mozilla (consulté le )
  9. (en) « CA:Problematic Practices - MozillaWiki », Mozilla (consulté le )
  10. (en) « Phasing Out Certificates with SHA-1 based Signature Algorithms | Mozilla Security Blog », Mozilla, (consulté le )
  11. « Cryptanalysis of SHA-1 - Schneier on Security », sur www.schneier.com (consulté le )
  12. « Finding Collisions in the Full SHA-1 », sur www.iacr.org (consulté le )
  13. « SHA1 Deprecation Policy - Windows PKI blog - Site Home - TechNet Blogs », sur blogs.technet.com (consulté le )
  14. ANSSI, « Liste des documents constitutifs du RGS v.2.0 », ANSSI,‎ (lire en ligne, consultĂ© le )
  15. « Google Groupes », sur groups.google.com (consultĂ© le )
  16. (en) « Announcing the first SHA1 collision », sur Google Online Security Blog (consulté le ).
  17. RFC 6194
  18. FIPS 180-1, Federal Information Processing Standards Publication 180-1 Announcing the Standard for Secure Hash Standard, 17 avril 1995 lire en ligne
  19. voir page (en)Secure Hashing du NIST. En plus de SHA-1, le standard inclut les algorithmes de la famille SHA-2 à partir de la version (en)FIPS-180-2[PDF] (août 2002), avec de nouvelles variantes pour SHA-2 dans les versions successives (en)FIPS-180-3[PDF] (octobre 2008) et (en)FIPS-180-4[PDF] (mars 2012).
  20. http://eurocrypt2009rump.cr.yp.to/837a0a8086fa6ca714249409ddfae43d.pdf
  21. http://www.ictlex.net/wp-content/iacrhash.pdf
  22. (en) « Cryptology ePrint Archive : Report 2009/259 - Differential Path for SHA-1 with complexity $O(2^{52})$ », sur iacr.org (consulté le ).
  23. Julien Cadot, « SHAttered : Google a cassé la méthode de chiffrement SHA-1 », sur numerama, (consulté le )
  24. (en) site montrant deux documents ayant la mĂȘme signature et explicant que SHA-1 est cassĂ©
  25. (en) Gaëtan Leurent et Thomas Peyrin, « From Collisions to Chosen-Prefix Collisions - Application to Full SHA-1. » [PDF], sur IACR.org, (consulté le ), pour EUROCRYPT 2019, paru dans Advances in Cryptology, pp. 5247-555 (DOI: 10.1007/978-3-030-17659-4_18).
  26. (en) G. Leurent, « SHA-1 is a Shambles - First Chosen-Prefix Collision on SHA-1 and Application to the PGP Web of Trust », Usenix,‎ (lire en ligne)
  27. (en) Catalin Cimpanu, « SHA-1 collision attacks are now actually practical and a looming danger », sur ZDNet, (consulté le ).

Voir aussi

Sources

Articles connexes

Liens externes

Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplĂ©mentaires peuvent s’appliquer aux fichiers multimĂ©dias.