Je vois beaucoup de confusion entre les hachages et les algorithmes de chiffrement et j'aimerais entendre d'autres conseils d'experts sur:
Quand utiliser les hachages vs les cryptages
Qu'est-ce qui rend un algorithme de hachage ou de chiffrement différent (d'un niveau théorique / mathématique), c'est-à-dire ce qui rend les hachages irréversibles (sans l'aide d'un arc-en-ciel)
Voici quelques questions SO similaires qui n'ont pas été aussi détaillées que je le cherchais:
Quelle est la différence entre l'obfuscation, le hachage et le chiffrement?
Différence entre le chiffrement et le hachage
security
encryption
hash
cryptography
Kenny Cason
la source
la source
Réponses:
Eh bien, vous pouvez le chercher sur Wikipedia ... Mais puisque vous voulez une explication, je ferai de mon mieux ici:
Fonctions de hachage
Ils fournissent un mappage entre une entrée de longueur arbitraire et une sortie (généralement) de longueur fixe (ou de plus petite longueur). Il peut s'agir 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 plusieurs: 1 (ce qui signifie qu'il y aura toujours des collisions) car chaque fonction produit une sortie plus petite qu'elle ne peut en entrer (si vous alimentez chaque fichier 1 Mo possible 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 parcourent plusieurs fois l'ensemble d'entrée pour produire la sortie. Donc, si nous regardons chaque bloc d'entrée de longueur fixe (qui dépend de l'algorithme), la fonction de hachage appellera cela l'état actuel. Il itérera ensuite sur l'état et le changera en un nouveau et l'utilisera comme rétroaction en lui-même (MD5 le fait 64 fois pour chaque bloc de données de 512 bits). Il combine ensuite en quelque sorte 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 des entrées plus petites que la taille d'un bloc de données, beaucoup pour des entrées plus grandes). Ensuite, vous devez inverser l'itération pour chaque état. Maintenant, pour expliquer pourquoi il est très difficile, imaginez essayer de déduire
a
etb
de la formule suivante:10 = a + b
. Il existe 10 combinaisons positives dea
etb
cela peut fonctionner. Maintenant, passez en revue plusieurs fois:tmp = a + b; a = b; b = tmp
. Pour 64 itérations, vous auriez plus de 10 ^ 64 possibilités d'essayer. Et ce n'est qu'un simple ajout où un état est préservé d'itération en itération. Les fonctions de hachage réelles effectuent beaucoup plus d'une opération (MD5 effectue environ 15 opérations sur 4 variables d'état). Et puisque la prochaine itération dépend de l'état de la précédente et que la précédente est détruite lors de la création de l'état actuel, il est presque impossible de déterminer l'état d'entrée qui a conduit à un état de sortie donné (pour chaque itération pas moins). Combinez cela, avec le grand nombre de possibilités impliquées, et le décodage même un MD5 prendra une quantité presque infinie (mais pas infinie) de ressources. Tellement de ressources que ça 'Fonctions de cryptage
Ils fournissent un mappage 1: 1 entre une entrée et une sortie de longueur arbitraire. Et ils sont toujours réversibles. La chose importante à noter est qu'elle est réversible à l'aide d'une méthode. Et c'est toujours 1: 1 pour une clé donnée. Maintenant, il existe plusieurs entrées: des paires de clés qui peuvent générer la même sortie (en fait, il y en a généralement, selon la fonction de cryptage). De bonnes données chiffrées ne se distinguent pas du bruit aléatoire. Ceci est différent d'une bonne sortie de hachage qui est toujours d'un format cohérent.
Cas d'utilisation
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 devraient très bien s'adapter à ce cas d'utilisation car vous ne voulez pas les stocker en texte brut pour des raisons de sécurité (et ne devriez pas). Mais que se passe-t-il si vous souhaitez vérifier un système de fichiers pour les fichiers de musique piratés? Il serait impossible de stocker 3 Mo par fichier musical. Donc, à la place, prenez le hachage du fichier et stockez-le (md5 stockerait 16 octets au lieu de 3 Mo). De cette façon, il vous suffit de hacher chaque fichier et de le comparer à la base de données stockée de hachages (cela ne fonctionne pas aussi bien dans la pratique en raison du ré-encodage, du changement des en-têtes de fichier, etc., mais c'est un exemple de cas d'utilisation).
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 souhaitez vérifier si elles sont identiques, exécutez les deux via une fonction de hachage. La probabilité d'une collision est astronomiquement 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 jusqu'à 32 caractères, md5 a 4 fois l'espace de sortie. SHA1 a 6 fois l'espace de sortie (environ). SHA512 a environ 16 fois l'espace de sortie. Vous ne vous souciez pas vraiment ce que le mot de passe était , vous vous souciez si c'est le même que celui qui a été stocké. C'est pourquoi vous devez utiliser des hachages pour les mots de passe.
Utilisez le cryptage chaque fois que vous avez besoin de récupérer les données d'entrée. Remarquez 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 idéales 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). Ainsi, 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 qu'elle n'a pas été falsifiée par une partie sans la valeur secrète. Ceci est couramment utilisé dans les systèmes de cookies sécurisés par les cadres HTTP, ainsi que dans la transmission de messages de données sur HTTP où vous voulez une certaine assurance d'intégrité dans les données.
Une note sur les hachages pour les mots de passe:
Une caractéristique clé des fonctions de hachage cryptographique est qu'elles doivent être très rapides à créer et très difficiles / lentes à inverser (à tel point que c'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. N'oubliez pas que la fonction de hachage a été conçue pour la vitesse. Il est donc trivial 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 aide les choses car il ajoute un peu de données inconnues au hachage. Ainsi, au lieu de trouver tout ce qui correspond
md5(foo)
, ils doivent trouver quelque chose qui, lorsqu'il est ajouté au sel connu, produitmd5(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 parcourir le dictionnaire.Il y a donc des moyens de gérer cela. Une méthode populaire est appelée renforcement des touches (ou étirement des touches). Fondamentalement, vous répétez plusieurs fois un hachage (des milliers généralement). Cela fait deux choses. Tout d'abord, cela ralentit considérablement l'exécution de l'algorithme de hachage. Deuxièmement, s'il est implémenté correctement (en passant l'entrée et le sel à chaque itération), cela augmente réellement l'entropie (espace disponible) pour la sortie, ce qui réduit les risques de collisions. Une implémentation triviale est:
Il existe d'autres implémentations plus standard telles que PBKDF2 , BCrypt . Mais cette technique est utilisée par de nombreux systèmes liés à la sécurité (tels que PGP, WPA, Apache et OpenSSL).
En bout de ligne, ce
hash(password)
n'est pas assez bon.hash(password + salt)
c'est mieux, mais toujours pas assez bon ... Utilisez un mécanisme de hachage étiré pour produire vos hachages de mot de passe ...Une autre note sur l'étirement trivial
Ne réinjectez en aucun cas la sortie d'un hachage directement dans la fonction de hachage :
La raison en est liée aux collisions. N'oubliez pas que toutes les fonctions de hachage ont des collisions car l'espace de sortie possible (le nombre de sorties possibles) est plus petit que l'espace d'entrée. Pour voir pourquoi, regardons ce qui se passe. Pour préfacer cela, supposons qu'il y a un risque de collision de 0,001%
sha1()
(il est beaucoup plus faible en réalité, mais à des fins de démonstration).Maintenant,
hash1
a une probabilité de collision de 0,001%. Mais quand nous faisons le suivanthash2 = sha1(hash1);
, toutes les collisions dehash1
deviennent automatiquement des collisions dehash2
. Alors maintenant, nous avons le taux de hash1 à 0,001%, et le deuxièmesha1()
appel ajoute à cela. Alors maintenant,hash2
a une probabilité de collision de 0,002%. C'est deux fois plus de chances! Chaque itération ajoutera une autre0.001%
chance de collision au résultat. Ainsi, avec 1000 itérations, le risque de collision est passé de 0,001% à 1%. Maintenant, la dégradation est linéaire et les probabilités réelles sont beaucoup plus petites, mais l'effet est le même (une estimation du risque de collision unique avecmd5
est d'environ 1 / (2 128 ) ou 1 / (3x10 38). Bien que cela semble petit, grâce à l'attaque d'anniversaire, ce n'est pas vraiment aussi petit qu'il y paraît).Au lieu de cela, en ré-ajoutant le sel et le mot de passe à chaque fois, vous réintroduisez des données dans la fonction de hachage. Ainsi, les collisions d'un round particulier ne sont plus des collisions du round suivant. Donc:
A les mêmes chances de collision que la
sha512
fonction native . C'est ce que tu veux. Utilisez-le à la place.la source
Une fonction de hachage pourrait être considérée comme la cuisson d'une miche de pain. Vous commencez avec des entrées (farine, eau, levure, etc ...) et après avoir appliqué la fonction de hachage (mélange + cuisson), vous vous retrouvez avec une sortie: une miche de pain.
Il est extrêmement difficile d'aller dans l'autre sens - vous ne pouvez pas vraiment séparer le pain en farine, eau, levure - une partie de cela a été perdue pendant le processus de cuisson, et vous ne pouvez jamais dire exactement combien d'eau, de farine ou de levure a été utilisée pour un pain particulier, car cette information a été détruite par la fonction de hachage (alias le four).
De nombreuses variantes différentes d'intrants produiront théoriquement des pains identiques (par exemple, 2 tasses d'eau et 1 cuillère à soupe de levure produisent exactement le même pain que 2,1 tasses d'eau et 0,9 cuillère à soupe de levure), mais étant donné l'une de ces pains, vous ne pouvez pas dire exactement quelle combinaison d'intrants l'a produite.
Le cryptage, d'autre part, pourrait être considéré comme un coffre-fort. Tout ce que vous y mettez revient, tant que vous possédez la clé avec laquelle il a été verrouillé en premier lieu. C'est une opération symétrique. Étant donné une clé et une entrée, vous obtenez une certaine sortie. Compte tenu de cette sortie et de la même clé, vous récupérerez l'entrée d'origine. C'est une cartographie 1: 1.
la source
Utilisez des hachages lorsque vous ne voulez pas pouvoir récupérer l'entrée d'origine, utilisez le cryptage lorsque vous le faites.
Les hachages prennent une entrée et la transforment en quelques 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 d'origine (il y a cependant quelques mises en garde à cela).
Le cryptage préserve principalement toutes les informations que vous mettez dans la fonction de cryptage, ce qui 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 trivial pour vous aider à comprendre pourquoi le hachage ne peut pas (dans le cas général) récupérer l'entrée d'origine. Supposons que je crée un hachage 1 bit. Ma fonction de hachage prend une chaîne de bits en entrée et définit le hachage à 1 s'il y a un nombre pair de bits définis dans la chaîne d'entrée, sinon 0 s'il y avait un nombre impair.
Exemple:
Notez qu'il existe de nombreuses valeurs d'entrée qui aboutissent à un hachage de 0, et beaucoup qui aboutissent à un hachage de 1. Si vous savez que le hachage est 0, vous ne pouvez pas savoir avec certitude quelle était l'entrée d'origine.
Soit dit en passant, ce hachage 1 bit n'est pas exactement conçu ... jetez un œil au bit de parité .
Exemple simple de cryptage
Vous pouvez crypter du 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.
Tout comme l'exemple de hachage simple, ce type de cryptage a été utilisé historiquement .
la source
Présentation de base des techniques de hachage et de chiffrement / déchiffrement.
MISE À JOUR: Pour répondre aux points mentionnés dans la question éditée.
la source
Mon seul paquebot ... généralement, l'intervieweur voulait la réponse ci-dessous.
Le hachage est une façon. Vous ne pouvez pas convertir vos données / chaîne à partir d'un code de hachage.
Le cryptage est bidirectionnel - vous pouvez décrypter à nouveau la chaîne cryptée si vous avez la clé avec vous.
la source
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
Fonctions de hachage en PHP
Un hachage transforme une chaîne en une chaîne hachée. Voir ci-dessous.
HACHER:
Les mots de passe sont généralement stockés dans leur représentation hachée à la place sous forme de texte lisible. Lorsqu'un utilisateur final souhaite accéder à une application protégée par un mot de passe, un mot de passe doit être donné lors de l'authentification. Lorsque l'utilisateur soumet son mot de passe, le système d'authentification valide reçoit le mot de passe et hache ce mot de passe donné. Ce hachage de mot de passe est comparé au hachage connu du système. L'accès est accordé en cas d'égalité.
DEHASH:
SHA1 est un hachage unidirectionnel. Ce qui signifie que vous ne pouvez pas détacher le hachage.
Cependant, vous pouvez forcer le hachage par force brute. Veuillez consulter: https://hashkiller.co.uk/sha1-decrypter.aspx .
MD5, est un autre hachage. Un déchaumeur MD5 est disponible sur ce site Web: https://www.md5online.org/ .
Pour entraver les attaques par force brute sur les hachages, un sel peut être donné. En php, vous pouvez utiliser
password_hash()
pour créer un hachage de mot de passe. La fonctionpassword_hash()
crée automatiquement un sel. Pour vérifier un mot de passe sur un hachage de mot de passe (avec un sel), utilisezpassword_verify()
.Un mot de passe peut être représenté par plus d'un hachage. Lorsque vous vérifiez le mot de passe avec différents hachages de mot de passe à l'aide de
password_verify()
, le mot de passe sera accepté comme mot de passe valide.Une fonction de chiffrement transforme un texte en un texte chiffré absurde en utilisant une clé de chiffrement, et vice versa.
Source: https://en.wikipedia.org/wiki/Encryption
Cryptage en PHP
Plongeons-nous dans du code PHP qui gère le chiffrement.
--- L'extension Mcrypt ---
CRYPTER:
DÉCRYPT:
--- L'extension OpenSSL ---
L'extension Mcrypt a été dépréciée en 7.1. et supprimé dans php 7.2. L'extension OpenSSL doit être utilisée dans php 7. Voir les extraits de code ci-dessous:
la source
A_KEY
n'est pas une clé AES / Rijndael-128; c'est un mot de passe, pas un allié clé.Cryptage symétrique:
Le cryptage symétrique peut également être appelé cryptage à clé partagée ou cryptage secret partagé. Dans le cryptage symétrique, une seule clé est utilisée à la fois pour crypter et décrypter le trafic.
Cryptage asymétrique:
Le cryptage asymétrique est également appelé cryptographie à clé publique. Le chiffrement asymétrique diffère du chiffrement symétrique principalement en ce que deux clés sont utilisées: une pour le chiffrement et une pour le déchiffrement. L'algorithme de chiffrement asymétrique le plus courant est
RSA
.Par rapport au chiffrement symétrique, le chiffrement asymétrique impose une charge de calcul élevée et a tendance à être beaucoup plus lent. Ainsi, il n'est généralement pas utilisé pour protéger les données de charge utile. Au lieu de cela, sa principale force est sa capacité à établir un canal sécurisé sur un support non sécurisé (par exemple, Internet). Ceci est accompli par l'échange de clés publiques, qui ne peuvent être utilisées que pour crypter des données. La clé privée complémentaire, qui n'est jamais partagée, est utilisée pour le déchiffrement.
Hachage:
Enfin, le hachage est une forme de sécurité cryptographique qui diffère du cryptage. Alors que le chiffrement est un processus en deux étapes utilisé pour d'abord chiffrer puis déchiffrer un message, le hachage condense un message en une valeur irréversible de longueur fixe, ou hachage. Deux des algorithmes de hachage les plus courants observés en réseau sont
MD5
etSHA-1
.En savoir plus ici: http://packetlife.net/blog/2010/nov/23/symmetric-asymmetric-encryption-hashing/
la source
Utilisez des hachages lorsque vous avez seulement besoin d'aller dans un sens. Par exemple, pour les mots de passe dans un système, vous utilisez le hachage car vous ne vérifierez que la valeur entrée par un utilisateur, après le hachage, correspond à la valeur dans votre référentiel. Avec le cryptage, vous pouvez aller de deux façons.
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 ne sont que des formules mathématiques. En ce qui concerne la sémantique, cependant, il existe une très grande distinction entre le hachage (unidirectionnel) et le cryptage (bidirectionnel). Pourquoi les hachages sont-ils irréversibles? Parce qu'ils sont conçus pour être comme ça, parce que parfois vous voulez une opération à sens unique.
la source
Les algorithmes de chiffrement et de hachage fonctionnent de manière similaire. Dans chaque cas, il faut 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 texte chiffré, et la diffusion répand les informations de chaque bit autour.
De nombreuses fonctions de hachage utilisent en fait des algorithmes de chiffrement (ou des primitives d'algorithmes de chiffrement. Par exemple, le candidat SHA-3 Skein utilise Threefish comme méthode sous-jacente pour traiter chaque bloc. La différence est qu'au lieu de conserver chaque bloc de texte chiffré, ils sont destructifs, fusionné de manière déterministe à une longueur fixe
la source
en ce qui concerne la sécurité de la transmission de données, c'est-à-dire la communication bidirectionnelle, vous utilisez le cryptage. Tout cryptage nécessite une clé
en matière d'autorisation, vous utilisez le hachage. Il n'y a pas de clé dans le hachage
Le hachage prend n'importe quelle quantité de données (binaire ou texte) et crée un hachage de longueur constante représentant une somme 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 unidirectionnels basés sur Unix fonctionnent de cette façon. Le mot de passe est stocké en tant que valeur de hachage et pour vous connecter à un système, le mot de passe que vous tapez est haché et la valeur de hachage est comparée au hachage du vrai mot de passe. S'ils correspondent, vous devez avoir tapé le bon mot de passe
pourquoi le hachage est-il irréversible:
Le hachage n'est pas réversible car le mappage entrée-hachage n'est pas 1-à-1. Le fait d'avoir deux entrées mappées à 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.
la source
La cryptographie traite des nombres et des chaînes. Fondamentalement, chaque chose numérique dans l'univers entier est un nombre. Quand je dis des nombres, c'est 0 et 1. Vous savez ce que c'est, binaire. Les images que vous voyez à l'écran, la musique que vous écoutez avec vos écouteurs, tout est binaire. Mais nos oreilles et nos yeux ne comprendront pas les binaires non? Seul le cerveau pouvait comprendre cela, et même s'il pouvait comprendre les binaires, il ne pouvait pas en profiter. Nous convertissons donc les fichiers binaires dans des formats compréhensibles par l'homme tels que mp3, jpg, etc. Appelons le processus Encoding . Il s'agit d'un processus bidirectionnel et peut être facilement décodé dans sa forme d'origine.
Hachage
Le hachage est une autre technique de cryptographie dans laquelle les données une fois converties sous une autre forme ne peuvent jamais être récupérées. Dans le terme de Layman, il n'y a pas de processus appelé de-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 mobile ou PC, un hachage de votre mot de passe est créé et stocké dans un endroit sécurisé. Lorsque vous effectuez une tentative de connexion la prochaine fois, la chaîne entrée est à nouveau hachée avec le même algorithme (fonction de hachage) et la sortie est mise en correspondance avec la valeur stockée. Si c'est la même chose, vous êtes connecté. Sinon, vous êtes expulsé.
Crédits: wikimedia En appliquant un hachage au mot de passe, nous pouvons garantir qu'un attaquant n'obtiendra 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 sha-512 à chacun d'eux et le comparer avec la valeur en main. Cela s'appelle l' attaque par dictionnaire . Mais combien de temps ferait-il cela? Si votre mot de passe est suffisamment aléatoire, pensez-vous que cette méthode de craquage fonctionnerait? Tous les mots de passe dans les bases de données de Facebook, Google et Amazon sont hachés, ou du moins ils sont censés l'être.
Ensuite, il y a le cryptage
Le chiffrement se situe entre le hachage et l'encodage. L'encodage est un processus à double sens et ne doit pas être utilisé pour assurer la sécurité. Le cryptage est également un processus bidirectionnel, mais les données originales peuvent être récupérées si et seulement si la clé de cryptage est connue. Si vous ne savez pas comment fonctionne le cryptage, ne vous inquiétez pas, nous discuterons des bases ici. Ce serait suffisant pour comprendre les bases de SSL. Il existe donc deux types de cryptage, à savoir le cryptage symétrique et asymétrique.
Cryptage à clé symétrique
J'essaie de garder les choses aussi simples que possible. Alors, comprenons le cryptage symétrique au moyen d'un algorithme de décalage. Cet algorithme est utilisé pour crypter les alphabets en déplaçant les lettres vers la gauche ou la 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écalée vers la droite de 3 endroits. Ici, le mot CRYPTO est appelé Plaintext , la sortie FUBSWR est appelée Ciphertext , la valeur +3 est appelée la clé de cryptage (clé symétrique) et l'ensemble du processus est a chiffre. Il s'agit de l'un des algorithmes de cryptage à clé symétrique les plus anciens et les plus basiques, et sa première utilisation a été signalée à l'époque de Jules César. Ainsi, il a été nommé d'après lui et c'est le célèbre César Cipher . Quiconque connaît la clé de cryptage et peut appliquer l'inverse de l'algorithme de César et récupérer le Plaintext original. Par conséquent, il est appelé un cryptage symétrique .
Cryptage à clé asymétrique
Nous savons que, dans le cryptage symétrique, 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 publié pour la première fois le concept de chiffrement asymétrique 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étrique.
Par rapport au cryptage symétrique, dans le cryptage asymétrique , il y aura deux clés au lieu d'une. L'une s'appelle la clé publique et l'autre est la clé privée . Théoriquement, lors de l'initiation, nous pouvons générer le Public-Privépaire de clés pour notre machine. La clé privée doit être conservée en lieu sûr et ne doit jamais être partagée avec qui que ce soit. La clé publique, comme son nom l'indique, peut être partagée avec toute personne qui souhaite vous envoyer du texte crypté. Désormais, ceux qui ont votre clé publique peuvent crypter les données secrètes avec. Si la paire de clés a été générée à l'aide de l'algorithme RSA, elle doit utiliser le même algorithme lors du cryptage des données. Habituellement, 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/ )
la source
la source