web-dev-qa-db-fra.com

SHA1 VS RSA: quelle est la différence entre eux?

Quelles sont les différences entre SHA1 et RSA? S'agit-il simplement d'algorithmes différents ou sont-ils fondamentalement (c'est-à-dire utilisés pour différentes choses) différents à un certain niveau?.

44
Ted Smith

Fondamentalement différent.

SHA1 est un algorithme de hachage, qui est une fonction à sens unique, transformant une entrée de n'importe quelle taille en une sortie de longueur fixe (160 bits dans ce cas) . Une fonction de hachage cryptographique est une fonction pour laquelle il ne devrait pas être possible de trouver deux entrées donnant la même sortie, sauf par force brute (par exemple, avec une fonction 128 bits, vous devriez avoir besoin d'essayer en moyenne 2 ^ 64 messages pour trouver un tel "collision" due à quelque chose appelé le paradoxe de l'anniversaire - Google pour plus).

En fait, pour SHA1, ce n'est plus le cas - l'algorithme est (au moins en termes cryptographiques) rompu maintenant, avec une attaque par collision décrite par Xiaoyun Wang et al qui bat une attaque d'anniversaire classique. La famille SHA2 n'est pas rompue et un processus est en cours par le NIST pour convenir d'un algorithme SHA3 ou d'une famille d'algorithmes.

Modifier - Google a maintenant généré et publié une collision SHA1 réelle.

[~ # ~] rsa [~ # ~] est un algorithme de chiffrement asymétrique, chiffrant une entrée dans une sortie qui peut ensuite être déchiffrée (contraste un hachage algorithme qui ne peut pas être inversé). Il utilise une clé différente pour le chiffrement (la publique) que pour le déchiffrement (la privée). Cela peut donc être utilisé pour recevoir des messages cryptés d'autres personnes - vous pouvez publier votre clé publique, mais vous seul avec la clé privée pouvez ensuite décrypter les messages qui ont été cryptés avec elle.

Si vous inversez les clés pour RSA, il peut être utilisé pour générer une signature numérique - en chiffrant quelque chose avec votre clé privée, n'importe qui peut le déchiffrer avec la clé publique et, s'il est sûr que la clé publique vous appartient, alors il a confiant que c'est vous qui avez chiffré l'original. Cela se fait normalement en conjonction avec une fonction de hachage - vous hachez votre entrée, puis cryptez cela avec votre clé privée, donnant une signature numérique d'une longueur fixe pour votre message d'entrée.

86
David M

Les réponses précédentes sont déjà des explications suffisantes. Mais je pense que vous posez cette question juste parce que SHA et RSA sortent souvent ensemble, alors laissez-moi vous expliquer pourquoi.

Tout d'abord, gardez à l'esprit que

RSA n'est pas efficace, mais SHA l'est.

Supposons que vous téléchargiez Windows 7 et que vous vouliez vous assurer qu'il s'agit bien de Windows 7 d'origine de Microsoft. Si Microsoft chiffre simplement Windows 7 par RSA, cela prendra très longtemps pour que nous ne puissions pas le supporter du tout. Microsoft utilise donc SHA1 sur Windows 7 et génère des données de 128 bits. Et puis Microsoft crypte ces données de 128 bits avec RSA (utilisez sa clé privée).

Ensuite, tout ce que vous devez faire est de vous assurer que votre clé publique provient de Microsoft. Et puis utilisez SHA1 pour générer également des données de 128 bits. Et puis utilisez la clé publique de RSA pour décrypter la signature de Microsoft. Ensuite, il vous suffit de comparer les deux données de 128 bits pour voir si elles correspondent.

9
demonguy

SHA1 est un algorithme de hachage (signature de document et de certification) tandis que RSA est un algorithme de chiffrement/déchiffrement (communications sécurisées).

7
Spencer Ruport

SHA1 est une fonction de hachage cryptographique, tandis que RSA est un algorithme de chiffrement.

Une fonction de hachage prend une donnée et renvoie une chaîne de longueur fixe. Dans une fonction de hachage cryptographique, toutes les chaînes de retour ont la même probabilité. Étant donné uniquement le nombre de hachage, vous ne pouvez pas déterminer l'entrée, ni trouver une autre entrée qui donne le même hachage (excpetion avec une très très faible probabilité). Sha1 a quelques failles de sécurité.

Un algorithme de chiffrement donne une partie des données, mais la sortie n'est pas de longueur fixe - votre chiffrement. Compte tenu de la sortie (le cryptage), vous pouvez (si vous avez les bonnes clés) déterminer l'entrée.

5
AnnaR

Comme d'autres l'ont fait remarquer, ce sont des choses fondamentalement différentes remplissant des fonctions différentes. Vous utilisez RSA pour brouiller les informations sous une forme apparemment aléatoire, tandis que vous utilisez SHA1 pour garantir l'intégrité du message (c'est-à-dire qu'aucun des bits n'a changé). Dans une application de sécurité, vous en utiliserez un ou les deux, selon les fonctionnalités dont vous avez besoin.

5
sybreon