Je vois beaucoup de confusion entre les hachages et les algorithmes de chiffrement et j’aimerais entendre quelques conseils d’experts sur:
Quand utiliser les hachages et les chiffrements
Qu’est-ce qui différencie un algorithme de hachage ou de cryptage (d’un sharepoint vue théorique / mathématique), c’est-à-dire ce qui rend les hachages irréversibles (sans l’aide d’un arbre arc-en-ciel)?
Voici quelques questions SO similaires qui ne sont pas aussi détaillées que je cherchais:
Quelle est la différence entre l’obscurcissement, le hachage et le cryptage?
Différence entre cryptage et hachage
Eh bien, vous pouvez chercher dans Wikipedia … Mais comme vous voulez une explication, je ferai de mon mieux ici:
Ils fournissent une correspondance entre une entrée de longueur arbitraire et une sortie (généralement) de longueur fixe (ou de longueur inférieure). Cela peut aller d’un simple crc32 à une fonction de hachage cryptographique complète, telle que MD5 ou SHA1 / 2/256/512. Le fait est qu’il y a une cartographie à sens unique en cours. C’est toujours un mappage multiple (ce qui signifie qu’il y aura toujours des collisions) puisque chaque fonction produit une sortie plus petite que celle qu’elle est capable de saisir (si vous alimentez tous les fichiers 1mb possibles dans MD5, vous obtiendrez une tonne de collisions).
La raison pour laquelle ils sont difficiles (ou impossibles en pratique) à inverser est la façon dont ils fonctionnent en interne. La plupart des fonctions de hachage cryptographiques effectuent plusieurs itérations sur le jeu d’entrée pour produire la sortie. Donc, si nous regardons chaque segment d’entrée de longueur fixe (qui dépend de l’algorithme), la fonction de hachage appelle cela l’état actuel. Il va ensuite parcourir l’état et le remplacer par un nouveau et l’utiliser comme retour sur lui-même (MD5 le fait 64 fois pour chaque bloc de données de 512 bits). Il combine ensuite les états résultants de toutes ces itérations pour former le hachage résultant.
Maintenant, si vous voulez décoder le hachage, vous devez d’abord comprendre comment diviser le hachage donné en ses états itérés (1 possibilité pour les entrées plus petites que la taille d’un bloc de données, beaucoup pour les entrées plus grandes). Ensuite, vous devrez inverser l’itération pour chaque état. Maintenant, pour expliquer pourquoi cela est TRÈS difficile, imaginez que vous essayez de déduire a
et b
de la formule suivante: 10 = a + b
. Il y a 10 combinaisons positives de a
et b
qui peuvent fonctionner. Maintenant, passez en revue un tas de fois: tmp = a + b; a = b; b = tmp
tmp = a + b; a = b; b = tmp
tmp = a + b; a = b; b = tmp
. Pour 64 itérations, vous auriez plus de 10 64 possibilités à essayer. Et ce n’est qu’une simple addition où un état est préservé de l’itération à l’itération. Les fonctions de hachage réelles font beaucoup plus qu’une opération (MD5 effectue environ 15 opérations sur 4 variables d’état). Et comme la prochaine itération dépend de l’état du précédent et que le précédent est détruit lors de la création de l’état actuel, il est pratiquement impossible de déterminer l’état d’entrée qui a conduit à un état de sortie donné (pour chaque itération au moins). Combinez cela, avec le grand nombre de possibilités que cela implique, et le décodage, même d’un MD5, prendra une quantité de ressources presque infinie (mais pas infinie). Tellement de ressources qu’il est en fait beaucoup moins chère de forcer le hachage si vous avez une idée de la taille de l’entrée (pour les entrées plus petites) que de tenter de décoder le hachage.
Ils fournissent une correspondance 1: 1 entre une entrée et une sortie de longueur arbitraire. Et ils sont toujours réversibles. La chose importante à noter est que c’est réversible en utilisant une méthode. Et c’est toujours 1: 1 pour une clé donnée. Maintenant, il y a plusieurs entrées: des paires de clés qui pourraient générer la même sortie (en fait, il y en a généralement, en fonction de la fonction de chiffrement). Les bonnes données chiffrées ne se distinguent pas du bruit aléatoire. Ceci est différent d’une bonne sortie de hachage qui a toujours un format cohérent.
Utilisez une fonction de hachage lorsque vous souhaitez comparer une valeur mais ne pouvez pas stocker la représentation simple (pour un certain nombre de raisons). Les mots de passe doivent très bien correspondre à ce cas d’utilisation, car vous ne voulez pas les stocker en texte brut pour des raisons de sécurité (et non). Mais que faire si vous voulez vérifier un système de fichiers pour les fichiers musicaux piratés? Il ne serait pas pratique de stocker 3 Mo par fichier de musique. Donc, à la place, prenez le hachage du fichier et stockez-le (md5 stockera 16 octets au lieu de 3 Mo). De cette manière, vous ne faites que hacher chaque fichier et le comparer à la firebase database de hachages stockée (cela ne fonctionne pas aussi bien dans la pratique en raison du ré-encodage, de la modification des en-têtes de fichiers, etc.
Utilisez une fonction de hachage lorsque vous vérifiez la validité des données d’entrée. C’est pour cela qu’ils sont conçus. Si vous avez 2 entrées et que vous voulez vérifier si elles sont identiques, exécutez les deux via une fonction de hachage. La probabilité d’une collision est extrêmement faible pour les petites tailles d’entrée (en supposant une bonne fonction de hachage). C’est pourquoi il est recommandé pour les mots de passe. Pour les mots de passe de 32 caractères maximum, md5 a 4 fois l’espace de sortie. SHA1 a 6 fois l’espace de sortie (approximativement). SHA512 a environ 16 fois l’espace de sortie. Vous ne vous souciez pas vraiment du mot de passe, vous vous souciez de savoir si c’est le même que celui qui a été enregistré. C’est pourquoi vous devriez utiliser des hachages pour les mots de passe.
Utilisez le chiffrement chaque fois que vous avez besoin de récupérer les données d’entrée. Notez le mot besoin . Si vous stockez des numéros de carte de crédit, vous devez les récupérer à un moment donné, mais vous ne voulez pas les stocker en texte brut. Au lieu de cela, stockez la version cryptée et conservez la clé aussi sûre que possible.
Les fonctions de hachage sont également très utiles pour signer des données. Par exemple, si vous utilisez HMAC, vous signez une donnée en prenant un hachage des données concaténées avec une valeur connue mais non transmise (une valeur secrète). Donc, vous envoyez le texte brut et le hachage HMAC. Ensuite, le récepteur hache simplement les données soumises avec la valeur connue et vérifie si elles correspondent au HMAC transmis. Si c’est la même chose, vous savez que la fête n’a pas été falsifiée sans la valeur secrète. Ceci est couramment utilisé dans les systèmes de cookies sécurisés par les frameworks HTTP, ainsi que dans la transmission des messages via HTTP, où vous souhaitez une certaine garantie d’intégrité des données.
Une caractéristique clé des fonctions de hachage cryptographiques est qu’elles doivent être très rapides à créer et très difficiles / lentes à inverser (à tel point que cela est pratiquement impossible). Cela pose un problème avec les mots de passe. Si vous stockez sha512(password)
, vous ne faites rien pour vous prémunir contre les tables arc-en-ciel ou les attaques par force brute. Rappelez-vous que la fonction de hachage a été conçue pour la vitesse. Il est donc sortingvial pour un attaquant de simplement exécuter un dictionnaire via la fonction de hachage et de tester chaque résultat.
L’ajout d’un sel facilite les choses car il ajoute un peu de données inconnues au hachage. Donc, au lieu de trouver tout ce qui correspond à md5(foo)
, ils doivent trouver quelque chose qui, ajouté au sel connu, produit md5(foo.salt)
(ce qui est beaucoup plus difficile à faire). Mais cela ne résout toujours pas le problème de vitesse car s’ils connaissent le sel, il suffit de faire passer le dictionnaire.
Donc, il y a des façons de gérer cela. Une méthode populaire est appelée renforcement des touches (ou étirement des touches). Fondamentalement, vous parcourez plusieurs fois un hash (des milliers en général). Cela fait deux choses. Tout d’abord, il ralentit considérablement l’exécution de l’algorithme de hachage. Deuxièmement, si elle est implémentée correctement (en passant l’entrée et le retour de sel à chaque itération), l’entropie augmente (espace disponible) pour la sortie, ce qui réduit les risques de collision. Une mise en œuvre sortingviale est:
var hash = password + salt; for (var i = 0; i < 5000; i++) { hash = sha512(hash + password + salt); }
Il existe d'autres implémentations plus standard telles que PBKDF2 , BCrypt . Mais cette technique est utilisée par plusieurs systèmes de sécurité (tels que PGP, WPA, Apache et OpenSSL).
La ligne du bas, hash(password)
n'est pas assez bon. hash(password + salt)
est mieux, mais pas encore suffisant ... Utilisez un mécanisme de hachage étiré pour produire vos hachages de mot de passe ...
N'envoyez en aucun cas la sortie d'un hachage directement dans la fonction de hachage :
hash = sha512(password + salt); for (i = 0; i < 1000; i++) { hash = sha512(hash); // <-- Do NOT do this! }
La raison à cela est liée aux collisions. Rappelez-vous que toutes les fonctions de hachage ont des collisions car l'espace de sortie possible (le nombre de sorties possibles) est inférieur à l'espace d'entrée. Pour voir pourquoi, regardons ce qui se passe. Pour commencer, supposons qu'il y ait une probabilité de collision de 0,001% à partir de sha1()
(elle est beaucoup plus faible dans la réalité, mais à des fins de démonstration).
hash1 = sha1(password + salt);
Le hash1
a maintenant une probabilité de collision de 0.001%. Mais quand on fait le hash2 = sha1(hash1);
suivant hash2 = sha1(hash1);
, toutes les collisions de hash1
deviennent automatiquement des collisions de hash2
. Donc maintenant, nous avons le taux de hash1 à 0.001%, et le 2ème appel à sha1()
ajoute à cela. Alors maintenant, le hash2
a une probabilité de collision de 0.002%. C'est deux fois plus de chances! Chaque itération appenda une autre chance de collision de 0.001%
au résultat. Ainsi, avec 1 000 itérations, le risque de collision est passé de sortingvial à 0,001% à 1%. Maintenant, la dégradation est linéaire et les probabilités réelles sont beaucoup plus faibles, mais l’effet est le même (une estimation de la probabilité d’une seule collision avec md5
est d’environ 1 / (2 128 ) ou 1 / (3 x 10 38 ). cela semble petit, grâce à l'attaque d'anniversaire, il n'est pas aussi petit qu'il n'y paraît.
Au lieu de cela, en ré-ajoutant le sel et le mot de passe à chaque fois, vous réintroduisez les données dans la fonction de hachage. Donc, les collisions d'un round particulier ne sont plus des collisions du round suivant. Alors:
hash = sha512(password + salt); for (i = 0; i < 1000; i++) { hash = sha512(hash + password + salt); }
A la même chance de collision que la fonction sha512
native. C'est ce que tu veux Utilisez cela à la place.
Une fonction de hachage peut être considérée comme la cuisson d’un pain. Vous commencez avec des intrants (farine, eau, levure, etc.) et après avoir appliqué la fonction de hachage (mélange + cuisson), vous obtenez un résultat: une miche de pain.
Aller dans l’autre sens est extrêmement difficile – vous ne pouvez pas vraiment séparer le pain en farine, en eau, en levure – une partie de ce pain a été perdue pendant la cuisson et vous ne pouvez jamais dire exactement combien d’eau, de farine ou de levure un pain particulier, car cette information a été détruite par la fonction de hachage (aka le four).
En théorie, de nombreuses variantes d’intrants produiront des pains identiques (par exemple, 2 tasses d’eau et 1 tsbp de levure produiront exactement le même pain que 2,1 tasses d’eau et 0,9 pb de levure), mais compte tenu de l’un de ces pains exactement quel combo d’intrants l’a produit.
Le cryptage, quant à lui, pourrait être considéré comme un coffre-fort. Tout ce que vous mettez là-dedans revient, tant que vous possédez la clé avec laquelle il a été enfermé. C’est une opération symésortingque. Étant donné une clé et une entrée, vous obtenez un certain résultat. Compte tenu de cette sortie et de la même clé, vous récupérerez l’entrée originale. C’est un mapping 1: 1.
Utilisez des hachages lorsque vous ne souhaitez pas récupérer l’entrée d’origine, utilisez le chiffrement lorsque vous le faites.
Les hachages prennent des entrées et les transforment en bits (généralement considérés comme un nombre, comme un entier 32 bits, un entier 64 bits, etc.). La même entrée produira toujours le même hachage, mais vous perdez PRINCIPALEMENT des informations dans le processus, de sorte que vous ne pouvez pas reproduire de manière fiable l’entrée originale (il existe toutefois quelques réserves).
Le cryptage préserve principalement toutes les informations que vous mettez dans la fonction de cryptage, rend difficile (idéalement impossible) pour quiconque de revenir à l’entrée d’origine sans posséder de clé spécifique.
Exemple simple de hachage
Voici un exemple sortingvial pour vous aider à comprendre pourquoi le hachage ne peut pas (dans le cas général) récupérer l’entrée originale. Disons que je crée un hachage de 1 bit. Ma fonction de hachage prend une chaîne de caractères comme entrée et définit le hachage sur 1 s’il y a un nombre pair de bits défini dans la chaîne d’entrée, sinon 0 s’il y a un nombre impair.
Exemple:
Input Hash 0010 0 0011 1 0110 1 1000 0
Notez qu’il existe de nombreuses valeurs en entrée donnant lieu à un hachage de 0, et que beaucoup entraînent un hachage de 1. Si vous savez que le hachage est 0, vous ne pouvez pas savoir avec certitude quelle était l’original.
Soit dit en passant, ce hachage de 1 bit n’est pas exactement inventé … regardez le bit de parité .
Exemple simple de cryptage
Vous pouvez chiffrer le texte en utilisant une simple substitution de lettre, par exemple si l’entrée est A, vous écrivez B. Si l’entrée est B, vous écrivez C. Jusqu’à la fin de l’alphabet, où si l’entrée est Z, vous réécrire A
Input Encrypted CAT DBU ZOO APP
Tout comme le simple exemple de hachage, ce type de chiffrement a toujours été utilisé .
Aperçu général des techniques de hachage et de chiffrement / déchiffrement.
Hachage:
Si vous hachez à nouveau du texte brut , vous ne pouvez pas obtenir le même texte en clair à partir du texte haché . Simplement, c’est un processus à sens unique.
Cryptage et décryptage:
Si vous chiffrez à nouveau un texte brut avec une clé, vous pouvez obtenir le même texte en déchiffrant le texte chiffré avec la même clé (symésortingque) / différente (asymentaire).
MISE À JOUR: Pour répondre aux points mentionnés dans la question modifiée.
1. Quand utiliser les hachages et les chiffrements
Le hachage est utile si vous souhaitez envoyer un fichier à quelqu’un. Mais vous avez peur que quelqu’un d’autre puisse intercepter le fichier et le changer. Ainsi, le destinataire peut s’assurer que le fichier est correct si vous publiez publiquement la valeur de hachage. De cette manière, le destinataire peut calculer la valeur de hachage du fichier reçu et vérifier qu’il correspond à la valeur de hachage.
Le cryptage est bon si vous dites avoir un message à envoyer à quelqu’un. Vous cryptez le message avec une clé et le destinataire déchiffre avec la même clé (ou peut-être même une autre) pour récupérer le message d’origine. crédits
2. Qu’est-ce qui différencie un algorithme de hachage ou de cryptage (d’un sharepoint vue théorique / mathématique), c’est-à-dire ce qui rend les hachages irréversibles (sans l’aide d’un arbre arc-en-ciel)?
Le hachage est une opération qui perd des informations mais pas de chiffrement . Regardons la différence de manière mathématique simple pour notre compréhension facile , bien sûr, les deux opérations mathématiques plus complexes avec répétitions impliquées
Chiffrement / déchiffrement (réversible):
Ajout :
4 + 3 = 7
Cela peut être inversé en prenant la sum et en soustrayant un des addends
7 - 3 = 4
Multiplication :
4 * 5 = 20
Cela peut être inversé en prenant le produit et en le divisant par l’un des facteurs
20 / 4 = 5
On peut donc supposer que l’un des addends / facteurs est une clé de répartition et que le résultat (7,20) est un texte chiffré.
Hachage (non réversible):
Division Modulo :
22 % 7 = 1
Cela ne peut pas être inversé car il n’y a pas d’opération que vous pouvez faire avec le quotient et le dividende pour reconstituer le diviseur (ou vice versa).
Pouvez-vous trouver une opération à remplir où le “?” est?
1 ? 7 = 22 1 ? 22 = 7
Les fonctions de hachage ont donc la même qualité mathématique que la division modulo et perdent l’information.
crédits
Mon seul paquebot … généralement Interviewer voulait la réponse ci-dessous.
Le hachage est un moyen. Vous ne pouvez pas convertir vos données / chaîne à partir d’un code de hachage.
Le chiffrement est à deux niveaux: vous pouvez déchiffrer à nouveau la chaîne chiffrée si vous avez la clé avec vous.
Une fonction de hachage transforme une quantité de texte de taille variable en un texte de taille fixe.
Source: https://en.wikipedia.org/wiki/Hash_function
Une fonction de cryptage transforme un texte en un cryptogramme absurde en utilisant une clé de cryptage et inversement.
Source: https://en.wikipedia.org/wiki/Encryption
Permet de le voir en action. J’utilise php pour ça.
HACHER:
$str = 'My age is 29'; $hash = hash('sha1', $str); echo $hash; // OUTPUT: 4d675d9fbefc74a38c89e005f9d776c75d92623e
DEHASH:
SHA1 est un hachage à sens unique. Ce qui signifie que vous ne pouvez pas détacher le hachage. Cependant, vous pouvez forcer le hachage. S’il vous plaît voir: https://hashkiller.co.uk/sha1-decrypter.aspx . Vous pouvez trouver un MD5 dehasher sur ce site: http://md5portal.com/ .
CRYPTER:
$cipher = MCRYPT_RIJNDAEL_128; $key = 'A_KEY'; $data = 'My age is 29'; $mode = MCRYPT_MODE_ECB; $encryptedData = mcrypt_encrypt($cipher, $key , $data , $mode); var_dump($encryptedData); //OUTPUT: ssortingng '„Ùòyªq³¿ì¼üÀpå' (length=16)
DÉCRYPTAGE:
$decryptedData = mcrypt_decrypt($cipher, $key , $encryptedData, $mode); $decryptedData = rsortingm($decryptedData, "\0\4"); // Remove the nulls and EOTs at the END var_dump($decryptedData); //OUTPUT: ssortingng 'My age is 29' (length=12)
—— Modifier ——————
L’extension Mcrypt est devenue obsolète en 7.1. et supprimé dans PHP 7.2. L’extension openssl devrait être utilisée dans ces versions de PHP. Voir les extraits de code ci-dessous:
$key = 'A_KEY'; $data = 'My age is 29'; // ENCRYPT $encryptedData = openssl_encrypt($data , 'AES-128-CBC', $key, 0, 'IV_init_vector01'); var_dump($encryptedData); // DECRYPT $decryptedData = openssl_decrypt($encryptedData, 'AES-128-CBC', $key, 0, 'IV_init_vector01'); var_dump($decryptedData); //OUTPUT ssortingng '4RJ8+18YkEd7Xk+tAMLz5Q==' (length=24) ssortingng 'My age is 29' (length=12)
Chiffrement symésortingque:
Le cryptage symésortingque peut également être appelé clé partagée ou cryptage secret partagé. Dans le chiffrement symésortingque, une seule clé est utilisée pour chiffrer et déchiffrer le trafic.
Chiffrement asymésortingque:
Le cryptage asymésortingque est également connu sous le nom de cryptographie à clé publique. Le chiffrement asymésortingque diffère du chiffrement symésortingque, car deux clés sont utilisées: une pour le chiffrement et une pour le déchiffrement. L’algorithme de chiffrement asymésortingque le plus courant est RSA
.
Par rapport au cryptage symésortingque, le cryptage asymésortingque impose une charge de calcul élevée et tend à être beaucoup plus lente. Ainsi, il n’est généralement pas utilisé pour protéger les données utiles. Au lieu de cela, sa principale force réside dans sa capacité à établir un canal sécurisé sur un support non sécurisé (Internet, par exemple). Ceci est accompli par l’échange de clés publiques, qui ne peuvent être utilisées que pour chiffrer des données. La clé privée complémentaire, qui n’est jamais partagée, est utilisée pour décrypter.
Hachage:
Enfin, le hachage est une forme de sécurité cryptographique différente du chiffrement. Alors que le chiffrement est un processus en deux étapes utilisé pour chiffrer puis déchiffrer un message, le hachage condense un message en une valeur irréversible de longueur fixe, ou hachage. MD5
et SHA-1
sont deux des algorithmes de hachage les plus courants du réseau.
Lire plus ici: http://packetlife.net/blog/2010/nov/23/symmesortingc-asymmesortingc-encryption-hashing/
Utilisez des hachages lorsque vous avez seulement besoin d’aller dans un sens. Par exemple, pour les mots de passe d’un système, vous utilisez le hachage car vous ne vérifierez que si la valeur saisie par l’utilisateur, après le hachage, correspond à celle de votre référentiel. Avec le cryptage, vous pouvez aller de deux manières.
les algorithmes de hachage et les algorithmes de chiffrement ne sont que des algorithmes mathématiques. Donc, à cet égard, ils ne sont pas différents – ce sont simplement des formules mathématiques. En termes de sémantique, il existe une très grande distinction entre le hachage (à sens unique) et le chiffrement (à double sens). Pourquoi les hashs sont-ils irréversibles? Parce qu’ils sont conçus de cette façon, car vous voulez parfois une opération à sens unique.
Les algorithmes de cryptage et de hachage fonctionnent de manière similaire. Dans chaque cas, il est nécessaire de créer une confusion et une diffusion entre les bits. En résumé, la confusion crée une relation complexe entre la clé et le cryptogramme, et la diffusion diffuse les informations de chaque bit.
De nombreuses fonctions de hachage utilisent en fait des algorithmes de chiffrement (ou primitives d’algorithmes de chiffrement. Par exemple, le candidat SHA-3 utilise Threefish comme méthode sous-jacente pour traiter chaque bloc. La différence est que, au lieu de fusionnées ensemble de manière déterministe à une longueur fixe
En ce qui concerne la sécurité pour la transmission de données, c’est-à-dire la communication bidirectionnelle, vous utilisez le chiffrement.Tout le chiffrement nécessite une clé
en ce qui concerne l’autorisation, vous utilisez le hachage. Il n’y a pas de clé dans le hachage
Le hachage prend toute quantité de données (binary ou texte) et crée un hachage de longueur constante représentant une sum de contrôle pour les données. Par exemple, le hachage peut être de 16 octets. Différents algorithmes de hachage produisent des hachages de tailles différentes. Vous ne pouvez évidemment pas recréer les données d’origine à partir du hachage, mais vous pouvez hacher à nouveau les données pour voir si la même valeur de hachage est générée. Les mots de passe basés sur Unix unidirectionnels fonctionnent de cette façon. Le mot de passe est stocké en tant que valeur de hachage et, pour se connecter à un système, le mot de passe que vous tapez est haché et la valeur de hachage est comparée au hachage du mot de passe réel. S’ils correspondent, vous devez avoir saisi le bon mot de passe
pourquoi hachage irréversible:
Le hachage n’est pas réversible car le mappage entrée-hachage n’est pas 1 vers 1. Avoir deux entrées de mappage sur la même valeur de hachage est généralement appelé “collision de hachage”. Pour des raisons de sécurité, l’une des propriétés d’une “bonne” fonction de hachage est que les collisions sont rares dans la pratique.
Cryptage Le but du cryptage est de transformer les données afin de les garder secrètes. Ex. (Envoyer à quelqu’un un texte secret qu’il ne devrait pouvoir que lire, envoyer des mots de passe via Internet).
Au lieu de se concentrer sur la facilité d’utilisation, l’objective est d’assurer que l’envoi de données puisse être envoyé en secret et que l’utilisateur ne puisse le voir
Il chiffre les données dans un autre format de transformation en un modèle unique, il peut être chiffré avec la clé secrète et les utilisateurs qui ont la clé secrète peuvent voir le message en réversible le processus. Par exemple (AES, BLOWFISH, RSA)
Le chiffrement peut simplement ressembler à ceci FhQp6U4N28GITVGjdt37hZN
Hashing En technique, nous pouvons le dire en prenant une entrée arbitraire et en produisant une chaîne de longueur fixe.
La chose la plus importante en ceci est que vous ne pouvez pas aller de la sortie à l’entrée. Cela donne l’impression que l’information donnée n’a pas été modifiée. Le processus consiste à prendre une entrée et à la hacher, puis à l’envoyer avec la clé privée de l’expéditeur, une fois que le destinataire l’a reçu, il peut le valider avec la clé publique de l’expéditeur.
Si le hachage est incorrect et ne correspond pas au hachage, nous ne pouvons voir aucune information. Par exemple (MD5, SHA …..)
La cryptographie traite des nombres et des chaînes. Fondamentalement, chaque élément numérique de l’univers entier est un chiffre. Quand je dis des chiffres, ses 0 et 1. Vous savez ce qu’ils sont, binarys. Les images que vous voyez à l’écran, la musique que vous écoutez à travers vos écouteurs, tout est binary. Mais nos oreilles et nos yeux ne comprendront pas les binarys non? Seul le cerveau pouvait comprendre cela, et même s’il pouvait comprendre des binarys, il ne pourrait pas profiter des binarys. Nous convertissons donc les fichiers binarys en formats compréhensibles par l’homme, tels que mp3, jpg, etc. Appelons le processus Encodage . C’est un processus bidirectionnel et peut être facilement décodé à sa forme d’origine.
Hachage
Le hachage est une autre technique de cryptographie dans laquelle une donnée une fois convertie en une autre forme ne peut jamais être récupérée. Dans le terme de Layman, il n’y a pas de processus appelé dé-hachage . Il existe de nombreuses fonctions de hachage pour effectuer le travail, telles que sha-512, md5, etc.
Si la valeur d’origine ne peut pas être récupérée, alors où l’utilisons-nous? Mots de passe! Lorsque vous configurez un mot de passe pour votre téléphone portable ou votre PC, un hachage de votre mot de passe est créé et stocké dans un endroit sécurisé. Lors de la prochaine tentative de connexion, la chaîne saisie est à nouveau hachée avec le même algorithme (fonction de hachage) et la sortie correspond à la valeur stockée. Si c’est la même chose, vous êtes connecté. Sinon, vous êtes rejeté.
Crédits: wikimedia En appliquant le hachage au mot de passe, nous pouvons nous assurer qu’un attaquant ne recevra jamais notre mot de passe même s’il vole le fichier de mot de passe stocké. L’attaquant aura le hachage du mot de passe. Il peut probablement trouver une liste des mots de passe les plus couramment utilisés et appliquer le sha-512 à chacun d’eux et le comparer à la valeur de sa main. C’est ce qu’on appelle l’ attaque du dictionnaire . Mais combien de temps ferait-il cela? Si votre mot de passe est assez aléatoire, pensez-vous que cette méthode de craquage pourrait fonctionner? Tous les mots de passe des bases de données de Facebook, Google et Amazon sont hachés, ou du moins ils sont censés être hachés.
Ensuite, il y a le cryptage
Le cryptage se situe entre le hachage et l’encodage. Le codage est un processus bidirectionnel et ne doit pas être utilisé pour assurer la sécurité. Le chiffrement est également un processus bidirectionnel, mais les données d’origine peuvent être récupérées uniquement si la clé de chiffrement est connue. Si vous ne savez pas comment fonctionne le cryptage, ne vous inquiétez pas, nous discuterons des bases ici. Cela suffirait à comprendre les bases du protocole SSL. Il existe donc deux types de cryptage, à savoir le cryptage symésortingque et asymésortingque.
Chiffrement à clé symésortingque
J’essaie de garder les choses aussi simples que possible. Donc, comprenons le cryptage symésortingque au moyen d’un algorithme de décalage. Cet algorithme est utilisé pour chiffrer les alphabets en déplaçant les lettres à gauche ou à droite. Prenons une chaîne CRYPTO et considérons un nombre +3. Ensuite, le format crypté de CRYPTO sera FUBSWR. Cela signifie que chaque lettre est déplacée à droite de 3 endroits. Ici, le mot CRYPTO s’appelle Plaintext , la sortie FUBSWR s’appelle Ciphertext , la valeur +3 s’appelle Encryption key (clé symésortingque) et tout le processus est un chiffrement . C’est l’un des algorithmes de cryptage à clé symésortingque les plus anciens et les plus élémentaires. Son premier usage a été signalé à l’époque de Jules César. Donc, il a été nommé d’après lui et c’est le célèbre chiffre de César . Quiconque connaît la clé de cryptage et peut appliquer l’inverse de l’algorithme de César et récupérer le texte en texte original. C’est ce qu’on appelle un chiffrement symésortingque .
Chiffrement à clé asymésortingque
Nous soaps que, dans le cryptage symésortingque, la même clé est utilisée pour le cryptage et le décryptage. Une fois cette clé volée, toutes les données ont disparu. C’est un risque énorme et nous avons besoin d’une technique plus complexe. En 1976, Whitfield Diffie et Martin Hellman ont d’abord publié le concept de chiffrement asymésortingque et l’algorithme était connu sous le nom d’ échange de clés Diffie – Hellman . Puis, en 1978, Ron Rivest, Adi Shamir et Leonard Adleman du MIT ont publié l’algorithme RSA . Ceux-ci peuvent être considérés comme le fondement de la cryptographie asymésortingque.
Par rapport au cryptage symésortingque, dans le cryptage asymésortingque , il y aura deux clés au lieu d’une. L’une s’appelle la clé publique et l’autre la clé privée . Théoriquement, pendant l’initiation, nous pouvons générer la paire de clés publique-privée sur notre machine. La clé privée doit être conservée dans un endroit sûr et ne doit être partagée avec personne. La clé publique, comme son nom l’indique, peut être partagée avec tous ceux qui souhaitent vous envoyer du texte crypté. Maintenant, ceux qui ont votre clé publique peuvent chiffrer les données secrètes. Si la paire de clés a été générée à l’aide de l’algorithme RSA, ils doivent alors utiliser le même algorithme lors du cryptage des données. Généralement, l’algorithme sera spécifié dans la clé publique. Les données chiffrées ne peuvent être déchiffrées qu’avec la clé privée qui vous appartient.
Source: SSL / TLS pour les nuls, partie 1: Ciphersuite, Hashing, Encryption | WST ( https://www.wst.space/ssl-part1-ciphersuite-hashing-encryption/ )