Rapport des
fonctions hachage
Réalisés par :
CHEHABI NAWAL
EL HADDAD MERYEM
DARGOUL AYOUB
1. Types of encryption:
1. Cryptologie symétrique
La cryptographie symétrique consiste à utiliser la même clé pour le chiffrement et le
déchiffrement. Cependant, le simple chiffrement d'un message avec une clé partagée
ne garantit pas son authenticité. Pour réaliser l'authentification, diverses techniques
sont employées en cryptographie symétrique.
Une approche courante consiste à utiliser un code d'authentification de message
(MAC), qui est une fonction de hachage cryptographique combinée à la clé partagée.
Le MAC génère une balise d'authentification de taille fixe qui est ajoutée au message.
Lors de la réception du message, le destinataire peut recalculer le MAC à l'aide de la
clé partagée et le comparer avec l'étiquette d'authentification reçue. S'ils
correspondent, cela indique que le message n'a pas été falsifié et que l'expéditeur
possède la clé partagée.
L'un des principaux avantages de la cryptographie asymétrique est sa capacité à
fournir une communication sécurisée entre des parties qui n'ont jamais partagé de
clé secrète auparavant. Ceci est réalisé grâce à des paires de clés, où le chiffrement
avec une clé ne peut être déchiffré qu'avec l'autre clé de la paire.
Les MAC et les signatures numériques sont des moyens efficaces d'obtenir une
authentification dans la cryptographie symétrique. Ils fournissent l'assurance que le
message n'a pas été modifié et qu'il provient de l'expéditeur attendu. En incorporant
ces techniques, la cryptographie symétrique peut assurer une communication
sécurisée et authentifiée entre les parties partageant une clé commune.
2. Asymmetric or public-key cryptography
Cryptographie asymétrique ou à clé publique La cryptographie asymétrique ou à clé
publique est une approche cryptographique qui utilise une paire de clés
mathématiquement liées : une clé publique et une clé privée. Contrairement à la
cryptographie symétrique, où la même clé est utilisée pour le chiffrement et le
déchiffrement, la cryptographie asymétrique utilise des clés différentes pour ces
opérations.
Dans la cryptographie à clé publique, la clé publique est largement distribuée et
accessible à tous. Il est utilisé pour chiffrer les messages destinés au propriétaire de la
clé privée correspondante. La clé privée, en revanche, est gardée secrète et connue
uniquement du propriétaire de la clé. Il est utilisé pour déchiffrer les messages qui
ont été chiffrés à l'aide de la clé publique associée.
L'un des principaux avantages de la cryptographie asymétrique est sa capacité à
fournir une communication sécurisée entre des parties qui n'ont jamais partagé de
clé secrète auparavant. Ceci est réalisé grâce à des paires de clés, où le chiffrement
avec une clé ne peut être déchiffré qu'avec l'autre clé de la paire.
Outre le chiffrement et le déchiffrement, la cryptographie asymétrique permet
d'autres fonctionnalités importantes. L'une d'elles est la signature numérique, qui
assure l'intégrité et l'authenticité des messages. Une signature numérique est créée à
l'aide de la clé privée de l'expéditeur et peut être vérifiée par toute personne ayant
accès à la clé publique correspondante. Si la signature est valide, elle confirme que le
message n'a pas été falsifié et provient de l'expéditeur attendu.
La cryptographie à clé publique prend également en charge les protocoles d'échange
de clés, tels que Diffie-Hellman, qui permet à deux parties d'établir une clé secrète
partagée sur un canal non sécurisé sans transmettre directement la clé elle-même.
La cryptologie asymétrique ou à clé publique fournit une gamme de fonctionnalités
de sécurité qui sont essentielles pour une communication sécurisée, notamment le
chiffrement, le déchiffrement, les signatures numériques et l'échange de clés. Sa
flexibilité et sa robustesse en font un composant fondamental des systèmes
cryptographiques modernes.
2. . Classification des functions de hachure
Deux classes de fonctions de hachage ont été introduites, à savoir les codes
d'authentification de message ou MAC (qui utilisent une clé secrète) et les codes de
détection de manipulation ou MDC, qui n'utilisent pas de clé secrète. Selon leurs
propriétés, la classe des MDC sera divisée en fonctions de hachage one-way (OWHF)
et fonctions de hachage résistantes aux collisions (CRHF).
2.1one-way hash function (OWHF)
One-way hash fonctions (OWHF) est une fonction cryptographique qui prend une
entrée (ou un message) de n'importe quelle taille et produit une sortie de taille fixe,
appelée valeur de hachage ou code de hachage. La principale caractéristique est qu'il
est impossible de récupérer par calcul les données d'entrée d'origine à partir de la
valeur de hachage. En d'autres termes, il est conçu pour être un processus à sens
unique
2.2collision-resistant hash function (CRHF)
collision-résistant hash function (CRHF) est un type de fonction de hachage
cryptographique conçu pour être très résistant à la recherche de deux entrées
différentes qui produisent la même valeur de hachage. En d'autres termes, il est
difficile en termes de calcul de trouver deux entrées distinctes qui aboutissent à la
même sortie de hachage. Le choix entre un OWHF et un CRHF dépend des exigences
de sécurité spécifiques de l'application. Si une seule voie est nécessaire, un OWHF
peut suffire. Cependant, si à la fois one-way et la résistance aux collisions sont
nécessaires, un CRHF doit être utilisé pour assurer l'intégrité et la sécurité du système
cryptographique.
2.3Message Authentication Code (MAC)
Message Authentication Code (MAC) est une technique cryptographique utilisée pour
vérifier l'intégrité et l'authenticité d'un message. Il s'agit d'un court élément de
données généré à partir du message et d'une clé secrète, qui est ensuite annexée au
message. Le MAC permet au destinataire de vérifier que le message n'a pas été
falsifié et qu'il provient de l'expéditeur attendu.
3. Trois approches principales des fonctions de hachage
3.1 La théorie de information
L'approche théorique de l'information des fonctions de hachage est une perspective
différente qui se concentre sur les propriétés du caractère aléatoire et de l'entropie
de l'information. Plutôt que de mettre l'accent sur des propriétés de sécurité telles
que one-way et la résistance aux collisions, l'approche de la théorie de l'information
vise à obtenir des propriétés telles que le caractère aléatoire et l'uniformité des
sorties de hachage.
Dans cette approche, une fonction de hachage est considérée comme bonne si ses
sorties semblent impossibles à distinguer des chaînes aléatoires, quelles que soient
les contraintes de calcul ou la connaissance de l'algorithme. Cela signifie que la sortie
d'une bonne fonction de hachage doit avoir des propriétés similaires à une séquence
aléatoire, telles que l'imprévisibilité, la distribution uniforme et l'indépendance.
3.2La théorie de la complexité
L'approche théorique de la complexité des fonctions de hachage se concentre sur la
complexité de calcul du calcul de la fonction de hachage et sa résistance contre
diverses attaques informatiques. Il vise à concevoir des fonctions de hachage difficiles
à calculer inversement ou à trouver des collisions, même avec l'utilisation de
puissantes ressources de calcul.
Dans cette approche, une bonne fonction de hachage est caractérisée par des
propriétés telles que l'efficacité de calcul, la résistance aux attaques de préimage
(trouver une entrée compte tenu de sa valeur de hachage), les attaques de seconde
préimage (trouver une entrée différente avec la même valeur de hachage) et les
attaques de collision ( trouver deux entrées différentes avec la même valeur de
hachage). L'objectif est de concevoir des fonctions de hachage qui nécessitent un
effort de calcul important pour casser ces propriétés.
3.3Le système ou pratique
L'approche basée sur le système ou pratique des fonctions de hachage se concentre
sur la conception de fonctions de hachage efficaces, faciles à mettre en œuvre et
adaptées aux exigences et contraintes spécifiques du système. Cette approche prend
en compte des facteurs tels que l'efficacité de calcul, l'utilisation de la mémoire, la
simplicité de mise en œuvre et la compatibilité avec les systèmes existants.
Dans cette approche, la conception et la sélection des fonctions de hachage sont
guidées par des considérations pratiques et des contraintes du monde réel. L'objectif
est de créer des fonctions de hachage qui trouvent un équilibre entre sécurité et
efficacité, adaptées aux besoins spécifiques du système ou de l'application.
4. . Performance des fonctions de hash
5. Méthodes d'attaque des fonctions de hachage
Dans cette section, un aperçu des méthodes connues d'attaque sur les fonctions de
hachage est présenté. Les attaques sont divisées en deux grands groupes. Ceux qui
dépendent des faiblesses de l'algorithme sous-jacent et ceux qui ne dépendent pas
de l'algorithme.
Une attaque réussie sur une fonction de hachage signifie trouver un moyen de
falsifier une propriété de sécurité revendiquée de la fonction de hachage
5.1 Attaques générales (indépendantes de l'algorithme)
En supposant qu'une fonction de hachage distribue uniformément l'ensemble des
messages à l'ensemble des résumés possibles, certaines méthodes générales sont
disponibles pour un attaquant. Ces méthodes ne supposent pas la connaissance de
l'algorithme et dépendent uniquement de la longueur du résumé du message et de la
longueur de la clé dans les fonctions de hachage à clé. Des exemples de ces attaques
sont Birthday Attack, Exhaustive Key Search, Random Attack et Pseudo Attack.
5.2 Birthday Attack
Cette attaque est issue du Birthday Paradox qui est la probabilité de trouver au moins
deux personnes ayant le même anniversaire parmi 23 personnes. Pour décrire
l'attaque, nous supposons que la longueur du résumé de message est de r bits, ce qui
fournit 2 possibilités pour le résumé de message. Si deux pools de l'espace de
résumé, l'un contenant x1 échantillons et l'autre contenant x2 échantillons, sont
générés par un adversaire, la probabilité de trouver une correspondance entre les
deux pools est approchée par,L'avantage important de l'attaque d'anniversaire est
que, si l'adversaire augmente légèrement la taille des échantillons (x1 et x2), la
probabilité ci-dessus augmentera de manière significative. En pratique, l'opposant
souhaite remplacer un faux message par un message authentique. En supposant que
x2 véritables résumés sont disponibles la probabilité d'une correspondance est égale
à Dans les fonctions de hachage à clé (en supposant que la clé est gardée secrète vis-
à-vis de l'adversaire), l'adversaire ne peut pas calculer le résumé correspondant au
faux message, et par conséquent, ne peut pas trouver de correspondance.
Cependant, cette technique peut être utilisée pour trouver des collisions pour des
paires authentiques de [message , digest].
Preneel [63] donne une description complète de cette attaque et suggère qu'un
résumé de message de 160 bits
être à l'abri de cette attaque pendant au moins 20 ans. Pieprzyk et Sadeghiyan [62]
recommandent un résumé de message de 128 bits pour assurer la sécurité contre
cette attaque.
5.3Attaque aléatoire
Une autre attaque sur les fonctions de hachage, qui est indépendante de
l'algorithme, est Random Attack. Dans cette attaque, l'adversaire choisit un message
aléatoire (ou une partie d'un message) et espère que son résumé de message est égal
à un message authentique.
La probabilité de succès de cette attaque pour une fonction de hachage qui contient
le comportement aléatoire requis est de , où r est la longueur du résumé du
message. Il est suggéré d'avoir au moins 64 bits pour le résumé du message pour
contrecarrer cette attaque.
5.4Attaques spéciales (qui dépendent de l'algorithme)
Dans cette section, les méthodes d'attaque qui s'appuient sur les faiblesses de la
fonction ronde ou, en général, de la fonction de hachage, sont brièvement décrites.
Cependant, ces attaques ne réussiraient pas sur les fonctions de hachage à clé, car
une clé secrète protège les composants de la fonction de hachage contre les
étrangers. Les attaques qui sont abordées dans cette section sont Meet in the Middle
Attack, Correcting Block Attack, Fixed Point Attack, Attack on the Underlying
Encryption Algorithm, Differential Cryptanalysis et Linear Cryptanalysis.
5.5Correction de l'attaque par bloc
Dans cette attaque, l'adversaire utilise une paire [message , digest] préexistante et
tente de modifier un ou plusieurs blocs de message de sorte que le résumé résultant
reste intact. Un tour de MD5 est vulnérable à cette attaque, où le cryptanalyste
prend un bloc de message Mi (16 mots), xes 11 mots de message, modifie un mot, et
calcule les 4 mots restants pour former un autre bloc de message M 0 qui correspond
aumême résumé. Une solution simple consiste à fournir une redondance aux blocs de
message de manière à ce que le résumé du message dépende fortement de chaque
bit du message. Full MD5 est une instance, où chaque mot de 32 bits du bloc de
message contribue aux quatre tours de l'algorithme. L'inconvénient de cette solution
est la diminution de la vitesse de hachage
5.6Attaque contre l'algorithme de chiffrement sous-jacent
Dans la section 1.3, les fonctions de hachage basées sur des algorithmes de
chiffrement ont été brièvement discutées. Étant donné que les algorithmes de
chiffrement sont conçus pour le chiffrement et le déchiffrement, ils peuvent
présenter certaines faiblesses lorsqu'ils sont utilisés comme fonction ronde d'un
algorithme de hachage.
Les principales faiblesses des algorithmes de chiffrement sont les collisions de clés, la
propriété de complémentation,
Clés faibles et points fixes [63]. Les détails sur ces faiblesses dépassent le cadre de cet
article, et le lecteur est renvoyé à [1, 16, 21, 20, 42, 48, 49, 50, 51, 58, 60, 66, 67]
pour plus d'informations.
6. Cryptanalyse
6.1Cryptanalyse différentielle
L'idée de cette attaque a été donnée pour la première fois par Biham et Shamir dans
[14]. Dans la cryptanalyse différentielle, la corrélation entre la différence d'entrée et
de sortie est étudiée. En d'autres termes, l'intrus recherche une différence
particulière dans l'entrée qui provoque une différence spécifique dans la sortie. Cette
attaque est appliquée à presque tous les cryptosystèmes, y compris la plupart des
fonctions de hachage dédiées. Dans le cas des fonctions de hachage, la différence de
sortie doit être nulle pour entraîner des collisions. Des exemples de ces attaques sont
dans [9, 11, 14, 15, 16, 17, 51].
6.2 Cryptanalyse linéaire
La cryptanalyse linéaire a été proposée par Matsui [54] au début de 1993. Bien
qu'elle s'inspire de la cryptanalyse différentielle, de meilleurs résultats sont obtenus
par rapport à la cryptanalyse différentielle (en particulier sur les chiffrements par
blocs tels que DES) [12, 13, 26, 43, 54 ].
Pour l'instant, il n'y a pas d'attaque proposée sur les fonctions de hachage, basée sur
la cryptanalyse linéaire. Cependant, les fonctions de hachage basées sur des
algorithmes de chiffrement devraient être les fonctions de hachage les plus
vulnérables contre cette attaque. Une implémentation de la cryptanalyse linéaire sur
DES peut être trouvée dans [4, 5].
6.3 fonctions de hachage à clé
Les fonctions de hachage à clé (cf. Dé nition 3) peuvent être utilisées pour
l'authentification des messages. Dans cette section, les applications, les exigences de
sécurité et les constructions de fonctions de hachage à clé sont étudiées.
6.4 Applications de la fonction de hachage à clé
Plusieurs applications des fonctions de hachage à clé sont discutées dans cette
section, et les avantages et les inconvénients de chaque application sont passés en
revue. Ces applications sont principalement des schémas d'authentification qui
utilisent des clés symétriques pour sécuriser l'algorithme.
6.5 Authentification des messages entre deux parties
Bien que les schémas de signature électronique ([73]) puissent être utilisés pour
l'authentification des messages, ils sont généralement lents et inefficaces. Ils ont
également besoin de schémas de distribution de clés pour les clés publiques et, par
conséquent, le problème reste l'authenticité de la clé publique, etc. Lorsque deux
parties doivent communiquer, il est plus facile d'utiliser une clé symétrique plutôt
que des clés publiques et secrètes. Nous notons également que les fonctions de
hachage à clé sont préférées pour être utilisées dans les schémas d'authentification
(par rapport aux schémas basés sur des algorithmes de chiffrement), car le hachage
et le chiffrement sont combinés et, par conséquent, une vitesse plus élevée peut être
obtenue.
Avoir une fonction de hachage à clé sécurisée (des exemples sont dans la section 4.3),
une authentification de message entre
Deux communicants peuvent être fournis en envoyant le couple [M; M D] d'un
communicant à l'autre, où MD est le résumé du message M, utilisant la fonction de
hachage à clé et une clé secrète partagée entre les deux communicants.
6.6Vérification du mot de passe
Dans de nombreux systèmes, pour permettre à un utilisateur de se connecter au
système, le nom de connexion et le mot de passe de l'utilisateur sont demandés.
Dans les schémas précédents, le mot de passe était considéré comme une clé pour
chiffrer le nom de connexion, à l'aide d'un algorithme de chiffrement. Le texte chiffré
était conservé avec le nom de connexion par le système et était déchiffré chaque fois
que le mot de passe était validé par le système. Dans ces derniers schémas, il a été
suggéré de vérifier l'authenticité en recalculant et non en déchiffrant le texte chiffré.
Cette technique ne nécessite pas de décryptage et peut être mise en œuvre en
utilisant un algorithme unidirectionnel sécurisé. Les fonctions de hachage à clé sont
des exemples d'algorithmes unidirectionnels sécurisés et peuvent être utilisées pour
calculer la partie chiffrée de la table des mots de passe. Étant donné que les fonctions
de hachage à clé sont, en général, plus rapides que les algorithmes de chiffrement, la
validation de l'entrée du mot de passe sera effectuée plus rapidement.