Quelle est la différence entre le chiffrement et la signature dans le chiffrement asymésortingque?

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

Inverse-t-il simplement le rôle des clés publiques-privées?

Par exemple, je souhaite utiliser ma clé privée pour générer des messages afin que seul je puisse être l’expéditeur. Je veux que ma clé publique soit utilisée pour lire les messages et peu m’importe qui les lit. Je veux pouvoir chiffrer certaines informations et les utiliser comme clé de produit pour mon logiciel. Je tiens seulement à ce que je sois le seul à pouvoir les générer. Je voudrais inclure ma clé publique dans mon logiciel pour déchiffrer / lire la signature de la clé. Je m’en fous de savoir qui peut lire les données dans la clé, je me soucie seulement que je sois le seul vérifiable qui peut les générer.

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

Lors du chiffrement, 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 elle vous appartient vraiment.

Je souhaite utiliser ma clé privée pour générer des messages afin que seul je puisse être l’expéditeur.

Je veux que ma clé publique soit utilisée pour lire les messages et peu m’importe qui les lit

Ceci est la signature , c’est fait avec votre clé privée.

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

Je tiens seulement à ce que je sois le seul à pouvoir les générer.

Si vous avez seulement besoin de le savoir vous-même, vous n’avez pas besoin de jouer avec les clés pour le faire. Vous pouvez simplement générer des données aléatoires et les conserver dans une firebase database.

Mais si vous voulez que les gens sachent que les clés vous appartiennent vraiment, vous devez générer des données aléatoires, y conserver une firebase database ET la signer avec votre clé.

Je souhaite inclure ma clé publique dans mon logiciel pour déchiffrer / lire la signature de la clé

Vous devrez probablement acheter un certificate pour votre clé publique auprès d’un fournisseur commercial tel que Verisign ou Thawte, afin que les utilisateurs puissent vérifier que personne ne vous a falsifié le logiciel et remplacé votre clé publique par leur clé.

Dans RSA crypto, lorsque vous générez une paire de clés, il est complètement arbitraire de choisir la clé publique et la clé privée. Si vous cryptez avec un, vous pouvez décrypter avec l’autre – cela fonctionne dans les deux sens.

Donc, il est assez simple de voir comment vous pouvez chiffrer un message avec la clé publique du récepteur , afin que le destinataire puisse le déchiffrer avec sa clé privée .

Une signature est la preuve que le signataire possède la clé privée correspondant à une clé publique. Pour ce faire, il suffirait de chiffrer le message avec la clé privée de cet expéditeur et d’inclure la version chiffrée avec la version en texte brut. Pour vérifier l’expéditeur, déchiffrez la version chiffrée et vérifiez qu’elle est identique au texte en clair.

Bien sûr, cela signifie que votre message n’est pas secret. Tout le monde peut le déchiffrer, car la clé publique est bien connue. Mais quand ils le font, ils ont prouvé que le créateur du texte chiffré avait la clé privée correspondante.

Cependant, cela signifie doubler la taille de votre transmission – texte en clair et texte chiffré ensemble (en supposant que vous souhaitiez que les personnes qui ne sont pas intéressées par la vérification de la signature lisent le message). Ainsi, une signature est généralement créée en créant un hachage du texte en clair. Il est important que de faux hachages ne puissent pas être créés, donc des algorithmes de hachage cryptographiques tels que SHA-2 sont utilisés.

Alors:

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

Ouais, pensez à signer des données en lui donnant votre propre cachet de cire que personne d’autre n’a. Il est fait pour atteindre l’ intégrité et la non-répudiation . Le cryptage est tel que personne ne peut voir les données. Ceci est fait pour atteindre la 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.

La signature produit un “hachage” avec votre clé privée qui peut être vérifié avec votre clé publique. Le texte est envoyé en clair.

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

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

La signature indique que vous êtes vraiment la source ou la pièce justificative de l’object signé. Tout le monde peut lire l’object, cependant.

Le cryptage signifie que seuls ceux qui ont la clé privée correspondante peuvent le lire, mais sans signature, rien ne garantit que vous êtes derrière l’object crypté.

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 électroniques fournis par d’autres personnes – cela permet d’attaquer les algorithmes susceptibles de compromettre vos clés.

Dans votre scénario, vous ne cryptez pas au sens de cryptage asymésortingque; Je préfère l’appeler “encoder”.

Ainsi, vous encodez vos données dans une représentation binary, puis vous vous connectez avec votre clé privée. Si vous ne pouvez pas vérifier la signature via votre clé publique, vous savez que les données signées ne sont pas générées avec votre clé privée. (“vérification” signifie que les données non signées ne sont pas significatives)

Sur le plan fonctionnel, vous utilisez le chiffrement par clé publique / privée pour vous assurer que seul le destinataire peut lire votre message. Le message est crypté puis crypté à l’aide de la clé publique du destinataire.

La signature que vous utilisez pour informer le destinataire que vous avez créé le message n’a pas changé pendant le transfert. La signature du message se fait avec votre propre clé privée.

Quant à l’algorithme utilisé: ceci invole des nombres premiers. Je ferais une recherche sur Google pour une meilleure explication.

Je pense qu’il y a des messages mitigés ci-dessus. J’essayais de réaliser la même chose que Simucal, c’est-à-dire que je voulais générer une clé de licence contenant des informations importantes sur qui peut utiliser le logiciel et entre quelles dates, etc. Mais je ne veux pas que les gens puissent modifier informations pour étendre leur période de licence, etc. Ma première approche consistait à utiliser le chiffrement asymésortingque, mais malgré certains commentaires ci-dessus, il semble que vous puissiez chiffrer à l’aide de la clé publique OU privée, mais uniquement la déchiffrer avec la clé privée. Par conséquent, dans ce scénario, vous devez stocker la clé privée dans le système pour pouvoir décoder et vérifier la clé de licence … ce qui rend le système peu sûr car n’importe qui peut générer ses propres informations de licence modifiées et les chiffrer à l’aide du clé publique OU privée (dont une serait stockée dans les fichiers binarys du système). Bien entendu, le même risque de sécurité est associé au chiffrement symésortingque.

Comme le soulignent de nombreux commentaires ci-dessus, la signature semble être la voie à suivre pour ce scénario, mais je n’ai pas encore trouvé de bon exemple. Est-ce que quelqu’un connaît un tutoriel ou une démo en ligne qui fournit une parsing de cette méthode? Merci Chris

L’établissement d’une communication sécurisée pose deux problèmes distincts mais étroitement liés.

  1. Chiffrer les données pour que seules les personnes autorisées puissent les déchiffrer et les lire
  2. Vérifier l’identité / l’authentification de l’expéditeur

Ces deux problèmes peuvent être résolus avec élégance en utilisant la cryptographie à clé publique.

I. Cryptage et décryptage des données

Alice veut envoyer un message à Bob que personne ne devrait pouvoir lire.

  • Alice crypte le message avec Bob's public key et l’envoie
  • Bob reçoit le message et le déchiffre en utilisant sa Private Key

Notez que si A veut envoyer un message à B, A doit utiliser la clé publique de B (qui est accessible au public) et aucune clé publique ou privée de A n’apparaît ici.

Donc, si vous voulez m’envoyer un message, vous devez connaître et utiliser ma clé publique que je vous fournis et seul je pourrai décrypter le message car je suis le seul à avoir access à la clé privée correspondante.

II. Vérifier l’identité de l’expéditeur (authentification)

Alice veut envoyer un message à Bob à nouveau. Le problème du cryptage des données est résolu en utilisant la méthode ci-dessus.

Mais que faire si je suis assis entre Alice et Bob, me présentant comme «Alice» à Bob et envoyant mon propre message à Bob au lieu de transmettre celui envoyé par Alice. Même si je ne peux pas déchiffrer et lire le message original envoyé par Alice (qui nécessite un access à la clé privée de Bob), je pirate toute la conversation entre eux.

Y a-t-il un moyen pour Bob de confirmer que les messages qu’il reçoit sont effectivement envoyés par Alice?

  • Alice signe le message avec her private key (la her private key Alice) et l’envoie
  • Bob le reçoit et décrypte à l’aide Alice's public key . Comme la clé publique d’Alice a bien déchiffré le message, Bob peut en conclure que le message a été signé à l’aide d’Alice

En pratique, les deux méthodes ci-dessus sont utilisées conjointement avec une forme de hachage (SHA, MD5) pour obtenir le cryptage et l’authenticité.

Répondant à cette question dans le contenu que l’intention des participants était d’utiliser la solution pour l’octroi de licences logicielles, les exigences sont les suivantes:

  1. Aucune tierce partie ne peut produire une clé de licence à partir de la décompilation de l’application
  2. Le contenu de la clé logicielle n’a pas besoin d’être sécurisé
  3. La clé logicielle n’est pas lisible par l’homme

Une signature numérique résoudra ce problème car les données brutes qui génèrent la clé peuvent être signées avec une clé privée, ce qui la rend illisible mais peut être décodée en cas de rétroingénierie. Mais la clé privée est sûre, ce qui signifie que personne ne sera capable de faire des licences pour votre logiciel (ce qui est le point).

N’oubliez pas que vous ne pouvez pas empêcher une personne qualifiée de retirer les verrous logiciels de votre produit. Donc, s’ils doivent pirater chaque version publiée. Mais vous ne voulez vraiment pas qu’ils puissent générer de nouvelles clés pour votre produit, qui peuvent être partagées pour toutes les versions.

Python La documentation de PyNaCl contient un exemple de «signature numérique» qui répondra à toutes les exigences. http://pynacl.readthedocs.org/en/latest/signing/

et de cause NaCl projet à C exemples