Aller au contenu

Utilisateur:Liofeg98/Brouillon

Une page de Wikipédia, l'encyclopédie libre.

Fonction de hachage cryptographique[modifier | modifier le code]

Une fonction de hachage cryptographique (en particulier SHA-1 ). Un petit changement dans l'entrée (dans le mot "over") change radicalement la sortie (digest). C'est ce qu'on appelle l' effet d'avalanche .

Une fonction de hachage cryptographique mappe  une chaîne de bits de longueur arbitraire en une chaîne de bits de longueur fixe, généralement entre 128 et 512 bits. De manière générale, on parle simplement de hash ou hachage pour désigner une fonction de hachage cryptographique et son image est appelée digest ou valeur de hachage.

Une fonction de hachage cryptographique doit être déterministe , ce qui signifie que le même message aboutit toujours au même hachage. Idéalement, elle devrait également avoir les propriétés suivantes :

  • il est rapide de calculer la valeur de hachage pour un message donné
  • il est impossible de générer un message qui donne une valeur de hachage donnée (c'est-à-dire d'inverser le processus qui a généré la valeur de hachage donnée)
  • il est impossible de trouver deux messages différents avec la même valeur de hachage
  • une petite modification d'un message devrait changer la valeur de hachage si largement qu'une nouvelle valeur de hachage apparaît non corrélée avec l'ancienne valeur de hachage ( effet d'avalanche )

Une fonction de hachage peut supposer de nombreux schémas cryptographiques différents. En plus de produire le digest d'un document à signer numériquement, un hachage peut  servir à construire des codes d'authentification de message (MAC), des fonctions de dérivation de clés, et même des chiffrements de flux ou des générateurs pseudo-aléatoires.

La nature et le volume des données traitées par une fonction de hachage varient considérablement selon l'application, allant de numéros d'identification personnels (PIN) à quatre chiffres à des images de disques de téraoctets. Quelques exemples d’applications :

  • Les systèmes de signature de code tels que les démarrages sécurisés (dans les consoles de jeux, les décodeurs, etc.)ou l'authentification d'application dans les smartphones utilisent des fonctions de hachage pour authentifier le code exécuté et empêcher l'exécution de code malveillant tiers.
  • Les ingénieurs en criminalistique informatique hachent et horodatent les preuves numériques (telles que les disques durs) avant un examen plus approfondi en tant que preuve de non-modification. Ils utilisent également des fonctions de hachage pour rechercher efficacement et automatiquement les contenus illégaux en fonction de leur empreinte digitale.
  • Les systèmes ne stockent généralement pas les mots de passe en clair mais plutôt leur valeur de hachage, afin d'éviter une exposition directe en cas de compromission de la base de données. Cette pratique garantit également que toutes les entrées stockées ont la même longueur, quelle que soit la longueur des mots de passe d'origine. Bien que les fonctions de hachage ne doivent pas être utilisées directement, elles sont à la base des schémas de hachage de mot de passe (tels que PBKDF2)

Bien qu'initialement destinées à protéger uniquement l'intégrité et l'authenticité, les fonctions de hachage contribuent indirectement à assurer la confidentialité et la disponibilité des données. En effet, les fonctions de hachage sont des composants de schémas de chiffrement [par exemple, dans RSA avec un remplissage de chiffrement asymétrique optimal (OAEP), où SHA1 est couramment utilisé comme composant de hachage et dans la fonction de génération de masque] et sont utilisées pour un stockage et une récupération plus efficaces de données (par exemple, dans les services de stockage en cloud pour les preuves de stockage, ou dans les magasins clé-valeur).

En raison de leur omniprésence dans les systèmes d'information, il est essentiel que des fonctions de hachage sécurisées et utilisables soient mises à la disposition de l'industrie, des institutions gouvernementales et des développeurs individuels. Jusqu'en 2004, le domaine de la recherche sur les fonctions de hachage était considéré comme stable et les populaires MD5 et SHA1 étaient largement considérés comme sûrs.

Ce point de vue a été revisité avec la découverte d'attaques par collision sur MD4, MD5, SHA0 et SHA1 en 2004 et 2005, suite aux résultats du chercheur chinois Xiaoyun Wang et ses collègues. Les années suivantes, il y eut une amélioration de ces attaques, avec leur extension à des versions réduites des fonctions de la famille SHA2, la dernière norme de hachage fédérale conçue par la National Security Agency (NSA), comme son prédécesseur SHA1.

Propriétés[modifier | modifier le code]

L’imprévisibilité du digest[modifier | modifier le code]

Toute la force cryptographique des fonctions de hachage provient de l'imprévisibilité de leurs sorties. Prenez les valeurs hexadécimales 256 bits indiquées ci-dessous ; ces hachages sont calculés à l'aide de la fonction de hachage standard NIST SHA-256 avec les lettres ASCII a, b et c comme entrées. Comme vous pouvez le voir, bien que les valeurs a, b et c ne diffèrent que d'un ou deux bits (a est la séquence de bits 01100001, b est 01100010 et c est 01100011), leurs valeurs de hachage sont complètement différentes.




Étant donné uniquement ces trois hachages, il serait impossible de prédire la valeur du hachage SHA-256 de d ou de l'un de ses bits. Pourquoi? Parce que les valeurs de hachage d'une fonction de hachage sécurisée sont imprévisibles. Une fonction de hachage sécurisée devrait ressembler à une boîte noire qui renvoie une chaîne aléatoire à chaque fois qu'elle reçoit une entrée.

La définition générale et théorique d'une fonction de hachage sécurisée est qu'elle se comporte comme une fonction véritablement aléatoire. Plus précisément, une fonction de hachage sécurisée ne devrait pas avoir de propriété ou de modèle qu'une fonction aléatoire n'aurait pas. Elles doivent également résister à tout type d'attaque.

Notion de résistance à la préimage[modifier | modifier le code]

Une préimage d'une valeur de hachage donnée, H, est tout message, M, tel que

Hash(M) = H.  La résistance à la préimage décrit la garantie de sécurité qu'étant donné une valeur de hachage aléatoire, un attaquant ne trouvera jamais une préimage de cette valeur de hachage. En effet, les fonctions de hachage sont parfois appelées fonctions à sens unique car on peut passer du message à son hachage, mais pas l'inverse.

Tout d'abord, notez qu'une fonction de hachage ne peut pas être inversée, même avec une grande puissance de calcul. Par exemple, supposons qu’on hache un message à l'aide de la fonction de hachage SHA-256 et qu’on obtienne cette valeur de hachage de 256 bits:


Il serait impossible de déterminer le message choisi pour produire ce hachage particulier, car il existe de nombreux messages hachés à la même valeur. On trouvera donc plusieurs messages qui produisent cette valeur de hachage, mais on ne pourra pas déterminer duquel il s’agit.

Par exemple, il y a 2²⁵⁶ valeurs possibles d'un hachage de 256 bits (une longueur typique avec les fonctions de hachage utilisées dans la pratique), mais il y a beaucoup plus de valeurs de, disons, des messages de 1024 bits (à savoir, 2¹⁰²⁴ valeurs possibles). Par conséquent, il s'ensuit qu'en moyenne, chaque valeur de hachage possible de 256 bits aura 2¹⁰²⁴ / 2²⁵⁶ = 2¹⁰²⁴⁻²⁵⁶ = 2⁷⁶⁸ préimages de 1024 bits chacune.

En pratique, nous devons être sûrs qu'il est pratiquement impossible de trouver un message correspondant à une valeur de hachage donnée. Cela témoignera réellement de la résistance à la préimage. Plus précisément, on parle de résistance à la première préimage et à la seconde préimage. La résistance à la première préimage (ou simplement la résistance à la préimage) décrit les cas où il est pratiquement impossible de trouver un message qui se hache à une valeur donnée. La résistance à la seconde préimage, quant à elle, décrit le cas où, lorsqu'on lui donne un message, M1, il est pratiquement impossible de trouver un autre message, M2, qui hache à la même valeur que M1.

Trouver des préimages[modifier | modifier le code]

Étant donné une fonction et une valeur de hachage, vous pouvez rechercher les premières préimages en essayant différents messages jusqu'à ce que l'un d'entre eux atteigne le hachage cible. On ferait cela en utilisant un algorithme similaire au trouver-preimage() ci-dessous:

trouver-preimage(H) {

trouver-preimage(H) { 
    répéter { 
            M = message_aléatoire() 
            si Hash(M) == H alors retourne M 
            }
 }

La fonction random_message() génère un message aléatoire (par exemple, une valeur aléatoire de 1024 bits). De toute évidence, trouver_preimage() ne se terminera jamais si la longueur en bits du hachage, n, est suffisamment grande, car il faudra en moyenne 2n tentatives avant de trouver une préimage. C'est une situation désespérée lorsque l'on travaille avec n = 256 bits, comme dans les hachages modernes comme SHA256 et BLAKE2.

La résistance à la collision[modifier | modifier le code]

Une collision désigne une situation dans laquelle deux données ont un résultat identique avec la même fonction de hachage. Quelle que soit la fonction qu'on utilise, des collisions existeront inévitablement en raison du principe du casier. Ce dernier stipule que si vous avez m tiroirs et n pigeons à mettre dans ces tiroirs, et si n > m, au moins un tiroir doit contenir plus d'un pigeon.

Toutefois, ces collisions doivent être aussi difficiles à trouver que le message d'origine pour qu'une fonction de hachage soit considérée comme résistante aux collisions. En d'autres termes, les attaquants ne doivent pas être en mesure de trouver deux messages distincts dont le hachage a la même valeur.

Trouver des collisions[modifier | modifier le code]

Il est plus rapide de trouver des collisions que de trouver des préimages, de l'ordre 2N/2 environ, grâce à l'attaque anniversaire, dont l'idée maîtresse est la suivante : étant donné N messages et autant de valeurs de hachage, on peut produire un total de collisions potentielles en considérant chaque paire de deux valeurs de hachage (un nombre du même ordre de grandeur que N2). C'est ce qu'on appelle l'attaque d'anniversaire parce qu'elle est généralement illustrée à l'aide du soi-disant paradoxe de l'anniversaire, ou le fait qu'un groupe de seulement 23 personnes comprendra deux personnes ayant la même date de naissance avec une probabilité de 1/2.


Remarque : est le nombre de paires de deux messages distincts, où nous divisons par 2 car nous considérons (M1, M2) et (M2, M1) comme une même paire. En d'autres termes, nous ne nous soucions pas de l'ordre.

À titre de comparaison, dans le cas d'une recherche de préimage, N messages n'obtiennent que N préimages candidates, alors que les mêmes N messages donnent environ N2 collisions potentielles, comme on vient de le voir. Avec N2 au lieu de N, on dit qu'il y a quadratiquement plus de chances de trouver une solution. La complexité de la recherche est quant à elle quadratiquement inférieure : pour trouver une collision, vous devrez utiliser la racine carrée de 2n messages ; c'est-à-dire 2n/2 au lieu de 2n.

L'attaque naïve de l'anniversaire[modifier | modifier le code]

La manière la plus simple d'effectuer l'attaque de l'anniversaire dans le but de trouver des collisions est la suivante :

1) Calculer 2n/2 digests de 2n/2 messages choisi arbitrairement et stocker toutes les paires messages/digests dans une liste

2) Trier la liste de sorte à déplacer les valeurs de hash identiques les une à côté des autres

3) Chercher, dans cette liste triée, deux valeurs d'entrées (préimages) produisant la même valeur de hash.

Le problème est que cette méthode requière beaucoup de mémoire (suffisamment pour stocker 2n/2 paires de messages/hash).De plus, le fait de trier beaucoup d'éléments ralenti considérablement la recherche.

Conception d'une fonction de hachage cryptographique[modifier | modifier le code]

Une fonction de hachage doit être capable de traiter un message de longueur arbitraire en une sortie de longueur fixe. Ceci peut être réalisé en divisant l'entrée en une série de blocs de taille égale et en les exécutant en séquence à l'aide d'une fonction de compression unidirectionnelle. La fonction de compression peut soit être spécialement conçue pour le hachage, soit être construite à partir d'un chiffrement par blocs. Une fonction de hachage construite avec la construction Merkle – Damgård est aussi résistante aux collisions que sa fonction de compression; toute collision pour la fonction de hachage complète peut être attribuée à une collision dans la fonction de compression. Le dernier bloc traité doit également être complété sans ambiguité; ceci est crucial pour la sécurité de la construction. Cette dernière s'appelle la construction de Merkle – Damgård. Parmi les fonctions de hachage courantes qui en découlent, il y a, par exemple, SHA-1 et MD5.

Tuyau large contre tuyau étroit[modifier | modifier le code]

Une application simple de la construction Merkle – Damgård, où la taille de la sortie de hachage est égale à la taille de l'état interne (entre chaque étape de compression), aboutit à une conception de hachage à tuyau étroit . Cette conception provoque de nombreux défauts inhérents, y compris l'extension de longueur , les multicollisions, les attaques de messages longs, les attaques de génération et de collage. Par conséquent, les fonctions de hachage modernes sont construites sur des constructions à tubes larges qui ont une taille d'état interne plus grande qui vont des ajustements de la construction Merkle-Damgård à de nouvelles constructions telles que la construction en éponge ou la construction de HAIFA . Aucun des participants au concours de fonctions de hachage du NIST n'utilise une construction Merkle-Damgård classique.

Pendant ce temps, tronquer la sortie d'un hachage plus long, comme celui utilisé dans SHA-512/256, défait également bon nombre de ces attaques.

Les différents algorithmes de hachage cryptographique[modifier | modifier le code]

Il existe de nombreux algorithmes de hachage cryptographique ; cette section répertorie quelques algorithmes qui sont référencés relativement souvent. Une liste plus complète peut être trouvée sur la page contenant une comparaison des fonctions de hachage cryptographique .

MD5[modifier | modifier le code]

MD5 a été conçu par Ronald Rivest en 1991 pour remplacer une fonction de hachage antérieure, MD4, et a été spécifié en 1992 en tant que RFC 1321. Les collisions contre MD5 peuvent être calculées en quelques secondes, ce qui rend l'algorithme inadapté à la plupart des cas d'utilisation où un hachage cryptographique est requis. MD5 produit un résumé de 128 bits (16 octets).

SHA-1[modifier | modifier le code]

SHA-1 a été développé dans le cadre du projet Capstone du gouvernement américain . La spécification originale, maintenant communément appelée SHA-0 - de l'algorithme, a été publiée en 1993 sous le titre Secure Hash Standard, FIPS PUB 180, par l'agence de normalisation du gouvernement américain NIST (National Institute of Standards and Technology). Il a été retiré par la NSA peu de temps après sa publication et a été remplacé par la version révisée, publiée en 1995 dans FIPS PUB 180-1 et communément désignée SHA-1. Des collisions contre l'algorithme SHA-1 complet peuvent être produites à l'aide de l' attaque brisée et la fonction de hachage doit être considérée comme brisée. SHA-1 produit un résumé de hachage de 160 bits (20 octets).

Les documents peuvent faire référence à SHA-1 simplement comme "SHA", même si cela peut entrer en conflit avec les autres algorithmes de hachage sécurisé tels que SHA-0, SHA-2 et SHA-3.

RIPEMD-160[modifier | modifier le code]

RIPEMD (RACE Integrity Primitives Evaluation Message Digest) est une famille de fonctions de hachage cryptographique développée à Louvain, en Belgique, par Hans Dobbertin, Antoon Bosselaers et Bart Preneel du groupe de recherche COSIC de la Katholieke Universiteit Leuven, et publiée pour la première fois en 1996. RIPEMD était basé sur les principes de conception utilisés dans MD4 et ses performances sont similaires à celles du SHA-1 plus populaire. RIPEMD-160 n'a cependant pas été rompu. Comme son nom l'indique, RIPEMD-160 produit un résumé de hachage de 160 bits (20 octets).

Whirlpool[modifier | modifier le code]

Whirlpool est une fonction de hachage cryptographique conçue par Vincent Rijmen et Paulo SLM Barreto, qui l'ont décrite pour la première fois en 2000. Whirlpool est basé sur une version considérablement modifiée de l'Advanced Encryption Standard (AES). Whirlpool produit un résumé de hachage de 512 bits (64 octets).

SHA-2[modifier | modifier le code]

SHA-2 (Secure Hash Algorithm 2) est un ensemble de fonctions de hachage cryptographiques conçues par la National Security Agency (NSA) des États-Unis, publiées pour la première fois en 2001. Elles sont construites à l'aide de la structure Merkle-Damgård, à partir d'une fonction de compression unidirectionnelle.

SHA-2 se compose essentiellement de deux algorithmes de hachage : SHA-256 et SHA-512. SHA-224 est une variante de SHA-256 avec différentes valeurs de départ et une sortie tronquée. SHA-384 et les moins connus SHA-512/224 et SHA-512/256 sont tous des variantes de SHA-512. SHA-512 est plus sécurisé que SHA-256 et est généralement plus rapide que SHA-256 sur des machines 64 bits telles que AMD64 .

La taille de sortie en bits est donnée par l'extension du nom "SHA", donc SHA-224 a une taille de sortie de 224 bits (28 octets) ; SHA-256, 32 octets ; SHA-384, 48 octets ; et SHA-512, 64 octets.

SHA-3[modifier | modifier le code]

SHA-3 (Secure Hash Algorithm 3) a été publié par le NIST le 5 août 2015. SHA-3 est un sous-ensemble de la famille primitive cryptographique Keccak. L'algorithme de Keccak est l'œuvre de Guido Bertoni, Joan Daemen, Michael Peeters et Gilles Van Assche. Keccak est basé sur une construction en éponge qui peut également être utilisée pour construire d'autres primitives cryptographiques telles qu'un chiffrement de flux. SHA-3 fournit les mêmes tailles de sortie que SHA-2 : 224, 256, 384 et 512 bits.

Des tailles de sortie configurables peuvent également être obtenues à l'aide des fonctions SHAKE-128 et SHAKE-256. Ici, les extensions -128 et -256 du nom impliquent la force de sécurité de la fonction plutôt que la taille de sortie en bits.

BLAKE2[modifier | modifier le code]

BLAKE2, une version améliorée de BLAKE, a été annoncée le 21 décembre 2012. Elle a été créée par Jean-Philippe Aumasson, Samuel Neves, Zooko Wilcox-O'Hearn et Christian Winnerlein dans le but de remplacer le MD5 largement utilisé mais cassé et Algorithmes SHA-1. Lorsqu'il est exécuté sur des architectures x64 et ARM 64 bits, BLAKE2 est plus rapide que SHA-3, SHA-2, SHA-1 et MD5. Bien que BLAKE et BLAKE2 n'aient pas été standardisés comme SHA-3, BLAKE2 a été utilisé dans de nombreux protocoles, y compris le hachage de mot de passe Argon2 , pour la grande efficacité qu'il offre sur les processeurs modernes. Comme BLAKE était candidat pour SHA-3, BLAKE et BLAKE2 offrent tous deux les mêmes tailles de sortie que SHA-3, y compris une taille de sortie configurable.

BLAKE3[modifier | modifier le code]

BLAKE3, une version améliorée de BLAKE2, a été annoncée le 9 janvier 2020. Elle a été créée par Jack O'Connor, Jean-Philippe Aumasson, Samuel Neves et Zooko Wilcox-O'Hearn. BLAKE3 est un algorithme unique, contrairement à BLAKE et BLAKE2, qui sont des familles d'algorithmes avec plusieurs variantes. La fonction de compression BLAKE3 est étroitement basée sur celle des BLAKE2, la plus grande différence étant que le nombre de tours est réduit de 10 à 7. En interne, BLAKE3 est un arbre de Merkle et prend en charge des degrés de parallélisme plus élevés que BLAKE2.

Attaques contre les algorithmes de hachage cryptographique[modifier | modifier le code]

Il existe une longue liste de fonctions de hachage cryptographique, mais beaucoup se sont révélées être vulnérables et ne doivent plus être utilisées. Par exemple, le NIST a sélectionné 51 fonctions de hachage comme candidates pour le premier tour du concours de hachage SHA-3, dont 10 ont été considérées comme cassées et 16 ont montré des faiblesses importantes et n'ont donc pas réussi à passer au tour suivant ; plus d'informations peuvent être trouvées sur l'article principal sur les compétitions de fonctions de hachage du NIST .

Même si une fonction de hachage n'a jamais été cassée, une attaque réussie contre une variante affaiblie peut saper la confiance des experts. Par exemple, en août 2004, des collisions ont été trouvées dans plusieurs fonctions de hachage alors populaires, y compris MD5. Ces faiblesses ont remis en question la sécurité des algorithmes plus puissants dérivés des fonctions de hachage faibles - en particulier, SHA-1 (une version renforcée de SHA-0), RIPEMD-128 et RIPEMD-160 (les deux versions renforcées de RIPEMD ).

Le 12 août 2004, Joux, Carribault, Lemuel et Jalby ont annoncé une collision pour l'algorithme SHA-0 complet. Ils ont accompli cela en utilisant une généralisation de l'attaque de Chabaud et Joux. Ils ont constaté que la collision avait une complexité de 251 et avait nécessité environ 80 000 heures de processeur sur un supercalculateur doté de 256 processeurs Itanium 2 , ce qui équivaut à 13 jours d'utilisation à plein temps du supercalculateur.

En février 2005, une attaque sur SHA-1 a été signalée qui trouverait une collision dans environ 269 opérations de hachage, au lieu des 280 attendues pour une fonction de hachage de 160 bits. En août 2005, une autre attaque sur SHA-1 a été signalée qui trouverait des collisions dans 263 opérations. En février 2017 Google a annoncé une collision dans SHA-1.

Les chercheurs en sécurité recommandent d'utiliser les nouvelles applications afin d’éviter ces problèmes en utilisant, par exemple, SHA-2 , ou en utilisant des techniques telles que le hachage aléatoire qui ne nécessitent pas de résistance aux collisions.

Une attaque pratique réussie a brisé MD5 utilisé dans les certificats pour Transport Layer Security en 2008.

De nombreux hachages cryptographiques sont basés sur la construction Merkle-Damgård . Tous les hachages cryptographiques qui utilisent directement la sortie complète d'une construction Merkle-Damgård sont vulnérables aux attaques d'extension de longueur . Cela rend les algorithmes de hachage MD5, SHA-1, RIPEMD-160, Whirlpool et SHA-256 / SHA-512 vulnérables à cette attaque spécifique. SHA-3, BLAKE2, BLAKE3 et les variantes SHA-2 tronquées ne sont pas vulnérables à ce type d'attaque.

Références[modifier | modifier le code]

Sources[modifier | modifier le code]

  • Danny Harnik, Joe Kilian, Moni Naor, Omer Reingold et Alon Rosen, Advances in Cryptology – EUROCRYPT 2005, vol. 3494, coll. « Lecture Notes in Computer Science », , 96–113 p. (ISBN 978-3-540-25910-7, ISSN 0302-9743, DOI 10.1007/11426639_6), « On Robust Combiners for Oblivious Transfer and Other Primitives »
  • Jonathan J. Hoch et Adi Shamir, Automata, Languages and Programming, vol. 5126, coll. « Lecture Notes in Computer Science », , 616–630 p. (ISBN 978-3-540-70582-6, ISSN 0302-9743, DOI 10.1007/978-3-540-70583-3_50), « On the Strength of the Concatenated Hash Combiner When All the Hash Functions Are Weak »
  • Antoine Joux, Advances in Cryptology – CRYPTO 2004, vol. 3152, Berlin, Heidelberg, Springer Berlin Heidelberg, coll. « Lecture Notes in Computer Science », , 306–316 p. (ISBN 978-3-540-22668-0, ISSN 0302-9743, DOI 10.1007/978-3-540-28628-8_19 Accès libre), « Multicollisions in Iterated Hash Functions. Application to Cascaded Constructions »
  • John Kelsey et Bruce Schneier, Advances in Cryptology – EUROCRYPT 2005, vol. 3494, coll. « Lecture Notes in Computer Science », , 474–490 p. (ISBN 978-3-540-25910-7, ISSN 0302-9743, DOI 10.1007/11426639_28 Accès libre), « Second Preimages on n-Bit Hash Functions for Much Less than 2 n Work »
  • Jonathan Katz et Yehuda Lindell, Introduction to Modern Cryptography, CRC Press, , 2nd éd. (ISBN 978-1-4665-7026-9, lire en ligne)
  • Vadim Lyubashevsky, Daniele Micciancio, Chris Peikert et Alon Rosen, Fast Software Encryption, vol. 5086, coll. « Lecture Notes in Computer Science », , 54–72 p. (ISBN 978-3-540-71038-7, ISSN 0302-9743, DOI 10.1007/978-3-540-71039-4_4 Accès libre), « SWIFFT: A Modest Proposal for FFT Hashing »
  • Florian Mendel, Christian Rechberger et Martin Schläffer, Advances in Cryptology – ASIACRYPT 2009, vol. 5912, coll. « Lecture Notes in Computer Science », , 144–161 p. (ISBN 978-3-642-10365-0, ISSN 0302-9743, DOI 10.1007/978-3-642-10366-7_9 Accès libre), « MD5 Is Weaker Than Weak: Attacks on Concatenated Combiners »
  • Mridul Nandi et Souradyuti Paul, Progress in Cryptology - INDOCRYPT 2010, vol. 6498, coll. « Lecture Notes in Computer Science », , 144–162 p. (ISBN 978-3-642-17400-1, ISSN 0302-9743, DOI 10.1007/978-3-642-17401-8_12), « Speeding Up the Wide-Pipe: Secure and Fast Hashing »
  • P. Rogaway et T. Shrimpton, Fast Software Encryption: 11th International Workshop, FSE 2004, vol. 3017, Lecture Notes in Computer Science, Springer, , 371–388 p. (ISBN 3-540-22171-9), « Cryptographic Hash-Function Basics: Definitions, Implications, and Separations for Preimage Resistance, Second-Preimage Resistance, and Collision Resistance »
Fonctions de hachage cryptographique et codes d'authentification des messages
Fonctions communes MD5 (compromis), SHA-1(compromis), SHA-2, SHA-3, BLAKE2
Autres fonctions Blake, CubeHash, ECOH, FSB, GOST, HAS-160, HAVAL, MASH-1, MASH-2, MD2, MD4, MD6, MDC-2, N-hash,
Fonction de hachage de mot de passe Argon2, Balloon, bcrypt, Catena, crypt, LM hash, Lyra2, Makwa, PBKDF2, scrypt, yescrypt
Fonction de dérivation de clés HKDF, KDF1/KDF2
Fonctions MAC CBC-MAC, DAA, GMAC, HMAC, NMAC, OMAC/CMAC, PMAC, Poly1305, Sliphash, UMAC, VMAC
Modes de cryptage authentifiés CCM, ChaCha20-Poly1305, CWC, EAX, IAPM, OCB
Attaques Attaque par collision, Attaque de préimage, Attaque d'anniversaire, Attaque de force brute, Tableau arc-en-ciel, Attaque par canal latéral, Attaque d'extension de longueur
Design Effet avalanche, Collision de hachage, Construction Merkle-Damgård, Fonction éponge, Construction HAÏFA
Standardisation CRYPTREC, NESSIE, Compétition de fonctions de hachage NIST
Utilisation Cryptographie basée sur le hachage, Arbre Merkel, Authentification des messages, Preuve de travail, Sel, Poivre

Cryptographie[modifier | modifier le code]

Histoire de la cryptographie, Aperçu de la cryptographie, Protocole cryptographique (protocole d'authentification), primitive cryptographique, Cryptanalyse, Crypto-monnaie, Nonce Cryptographique, Cryptovirologie, Signature numérique, Clé(cryptographie), Échanges de clés, Générateur de clés, Étirements des clés, Générateur des clés, Logiciel malveillant de cryptojacking, Logiciels de rançon, Génération de nombres aléatoires, Bruit pseudo-aléatoire (PRN), Canal sécurisé, Canal non sécurisé, Canal subliminal, Chiffrement, Déchiffrement, Cryptage de bout en bout, Sécurité théorique de l'information, Texte clair, Texte codé, Texte chiffré, Secret Partagé, Fonction trappe, Routage basé sur les clés, Routage de l'oignon, Kademlia, Réseau mixte

Chiffrement par blocs, chiffrement par flux, Algorithme à clé symétrique, Cryptage authentifié, Cryptographie à clé publique, Distribution de clé quantique

Logiciel cryptographique[modifier | modifier le code]

Clients de messagerie Apple Mail, Autocrypt, Claws Mail, Enigmail, GPG, Kontact, Outlook, Thunderbird
Communication sécurisée OTR: Adium, BitlBee, Centerciq, ChatSecure, climm, Kopete, MCabber, Profanity
SSH: Dropbear, Ish, OpenSSH, PuTTY, SecureCRT, WinSCP, wolfSSH
TLS & SSL: Bouncy Castle, BoringSSL, Botan, cryptlib, OpenSSL
VPN: Check Point VPN-1, Hamachi, Openswan, OpenVPN, SoftEther VPN
ZRTP: CSipSimple, Jitsi, Linphone, Jami
DRA: Matrix, OMEMO , Proteus, Signal Protocol
Chiffrement de disque BestCrypt, BitLocker, CrossCrypt, Cryptoloop, E4M, eCryptfs, TrueCrypt, VeraCrypt
Anonymat GNUnet, I2P, Java Anon Proxy, Tor, Vidalia, RetroShare, Ricochet, Wickr
Système de fichiers EncFS, EFS, eCryptfs, LUKS, StegFS
Système d'exploitation axé sur la sécurité Tails, Qubes
Fournisseurs de services Freenet, Tresorit, Wuala, NordLocker


Liens externes[modifier | modifier le code]

Modèle:Cryptography navbox Modèle:Cryptocurrencies Modèle:Cryptographic software


Category:Cryptography Category:Cryptographic primitives Category:Hashing