414 votes

Quelle est la différence entre le cryptage et la signature dans le cryptage asymétrique ?

Quelle est la différence entre le cryptage de certaines données et la signature de certaines données (en utilisant RSA) ?

Est-ce que cela inverse simplement le rôle des clés publiques-privées ?

Par exemple, je veux utiliser ma clé privée pour générer des messages dont je suis le seul à pouvoir être l'expéditeur. Je veux que ma clé publique soit utilisée pour lire les messages et je ne me soucie pas de savoir qui les lit. Je veux pouvoir crypter certaines informations et les utiliser comme clé de produit pour mon logiciel. Je me soucie uniquement du fait que je suis le seul à pouvoir les générer. Je voudrais inclure ma clé publique dans mon logiciel pour décrypter/lire la signature de la clé. Je ne me soucie pas de savoir qui peut lire les données de la clé, je me soucie uniquement d'être le seul à pouvoir les générer.

La signature est-elle utile dans ce scénario ?

3 votes

Je vote pour clore cette question car elle ne porte pas sur la programmation telle que définie dans la centre d'assistance . Probablement plus approprié à Cryptographie

616voto

Quassnoi Points 191041

Lors du cryptage, vous utilisez leur clé publique pour écrire un message et ils utilisent leur clé privée pour le lire.

Lors de la signature, vous utilisez votre clé privée pour écrire la signature du message, et ils utilisent votre clé publique pour vérifier si c'est vraiment le vôtre.

Je veux utiliser ma clé privée pour générer des messages dont je suis le seul à pouvoir être l'expéditeur.

Je veux que ma clé publique soit utilisée pour lire les messages et je ne me soucie pas de savoir qui les lit.

C'est signature il est fait avec votre clé privée.

Je veux pouvoir crypter certaines informations et les utiliser comme clé de produit pour mon logiciel.

Ce qui m'importe, c'est que je suis le seul à pouvoir les générer.

Si vous n'avez besoin de le savoir que pour vous-même, vous n'avez pas besoin d'utiliser des clés pour le faire. Vous pouvez simplement générer des données aléatoires et les conserver dans une base de données.

Mais si vous voulez que les gens sachent que les clés sont vraiment à vous, vous devez générer des données aléatoires, les conserver dans une base de données ET les signer avec votre clé.

Je voudrais inclure ma clé publique dans mon logiciel pour décrypter/lire la signature de la clé.

Vous devrez probablement acheter un certificat pour votre clé publique auprès d'un fournisseur commercial tel que Verisign ou Thawte, afin que les gens puissent vérifier que personne n'a forgé votre logiciel et remplacé votre clé publique par la sienne.

17 votes

Techniquement parlant, quand vous dites que la clé privée est utilisée pour écrire la signature du message, vous dites que le hash du message est crypté avec ma clé privée ?

9 votes

@AndyIbanez : qu'est-ce qui est crypté (les résumé ) peut également inclure l'horodatage et un sel aléatoire, mais oui, c'est l'essentiel.

11 votes

@Quassnoi En fait, quand on dit "signer avec la clé privée", cela ne signifie pas "chiffrer" mais plutôt "déchiffrer". Signer le message revient grosso modo à déchiffrer avec la clé privée et dans le récepteur à chiffrer avec la clé publique, de cette façon le hash deviendra le même et pourra être comparé.

187voto

slim Points 12620

En cryptographie RSA, lorsque vous générez une paire de clés, le choix de la clé publique et de la clé privée est totalement arbitraire. Si vous cryptez avec l'une, vous pouvez décrypter avec l'autre - cela fonctionne dans les deux sens.

Ainsi, il est assez simple de voir comment vous pouvez crypter un message avec la fonction public du destinataire afin que le récepteur puisse le décrypter avec sa propre clé. privé clé.

Une signature est la preuve que le signataire possède la clé privée qui correspond à une certaine clé publique. Pour ce faire, il suffirait de chiffrer le message avec la clé privée de l'expéditeur. clé privée et inclure la version chiffrée à côté de la version en clair. Pour vérifier l'expéditeur, décryptez la version cryptée et vérifiez qu'elle est identique au texte en clair.

Bien sûr, cela signifie que votre message n'est pas secret. N'importe qui peut le décrypter, car la clé publique est bien connue. Mais lorsqu'il le fait, il a prouvé que le créateur du texte chiffré possède la clé privée correspondante.

Cependant, cela signifie que vous devez doubler la taille de votre transmission - texte en clair et texte chiffré ensemble (en supposant que vous voulez que les personnes qui ne sont pas intéressées par la vérification de la signature lisent le message). Ainsi, à la place, une signature est généralement créée en créant un fichier de type dièse du texte en clair. Il est important que de faux hachages ne puissent être créés, c'est pourquoi des algorithmes de hachage cryptographique tels que SHA-2 sont utilisés.

Así que:

  • Pour générer une signature, faites un hachage du texte en clair, chiffrez-le avec votre clé privée, incluez-le avec le texte en clair.
  • Pour vérifier une signature, faites un hachage du texte en clair, déchiffrez la signature avec la clé publique de l'expéditeur, vérifiez que les deux hachages sont identiques.

0 votes

Pourquoi avez-vous besoin de faire un hachage du texte en clair dans ce scénario ? Est-ce seulement pour économiser des octets lorsque le texte en clair est long ?

0 votes

Pour ceux qui viennent de Google, j'ai répondu à ma propre question avec information de Wikipedia.

0 votes

Votre premier paragraphe ne s'applique pas aux clés asymétriques.

26voto

John Nolan Points 16633

Oui, pensez à la signature des données comme si vous leur donniez votre propre cachet de cire que personne d'autre n'a. C'est fait pour obtenir intégrité et non-répudiation . Le cryptage permet à personne de voir les données. Ceci est fait pour obtenir confidentialité . Voir wikipedia http://en.wikipedia.org/wiki/Information_security#Key_concepts

Une signature est un hachage de votre message signé à l'aide de votre clé privée.

24voto

Doug Currie Points 26016

La signature consiste à produire un "hachage" avec votre clé privée qui peut être vérifié avec votre clé publique. Le texte est envoyé en clair.

Le cryptage utilise la clé publique du destinataire pour chiffrer les données ; le décodage se fait avec sa clé privée.

Ainsi, l'utilisation des clés n'est pas inversée (sinon votre clé privée ne serait plus privée !).

0 votes

Dans le cas d'un chiffrement asymétrique normal, le chiffrement est effectué avec la clé publique du destinataire, et non avec votre clé privée.

0 votes

Avez-vous manqué que cette question était spécifiquement sur RSA où l'utilisation des clés es inversé et où il ne compromet pas la clé privée.

9voto

Michael Borgwardt Points 181658

Vous décrivez exactement comment et pourquoi la signature est utilisée dans la cryptographie à clé publique. Notez qu'il est très dangereux de signer (ou de chiffrer) des messages arbitraires fournis par d'autres - cela permet des attaques sur les algorithmes qui pourraient compromettre vos clés.

1 votes

Les navigateurs web ne chiffrent-ils pas les données arbitraires lorsqu'ils utilisent le protocole SSL ?

2 votes

@IanWarburton : Mais ils n'utilisent pas de cryptage asymétrique pour cela. Les transferts de données réels utilisent un cryptage symétrique avec une clé de session générée de manière aléatoire.

0 votes

La signature et le chiffrement d'une clé de session ou d'un hachage de données réelles sont-ils considérés comme la signature ou le chiffrement de données arbitraires ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X