2012-09-25 3 views
0

Ce que j'ai est un scénario de serveur client et une charge utile (x).Cryptage asymétrique où la partie réceptrice peut décrypter - mais doit être complètement incapable de crypter les données

  • Le serveur génère x et encrypte: enc (x)
  • enc (x) est envoyé au client
  • Le client décrypte les données pour obtenir x

Cependant, la Je dois respecter les restrictions sont les suivantes:

  • Le cryptage et les clés de décryptage doivent être différentes
  • Le client ne doit pas avoir la clé de chiffrement

donc tout droit RSA est la fenêtre, car vous avez besoin à la fois la clé publique et privée pour décrypter, et la clé publique vous permet de chiffrer. L'objectif est donc double: permettre au client de déchiffrer un élément de données, en s'assurant qu'il provient d'une source connue, mais que le client soit incapable de produire sa propre version chiffrée de la charge utile d'origine.

C# idéalement, mais je peux accepter des réponses de langue similaires.

Editer: Je suis informé que seule la clé privée est nécessaire pour déchiffrer et pas les deux clés - cependant, il ne semble pas y avoir un moyen de faire en sorte que le RSACryptoServiceProvider dans .Net le fasse.

+0

Cela ressemble à une utilisation standard des signatures RSA. Voulez-vous réellement que le récepteur décrypte, ou voulez-vous que le récepteur vérifie une signature? Si oui, pourquoi? – CodesInChaos

+1

[RSA # Signing messages] (http://en.wikipedia.org/wiki/RSA_ (algorithme) #Signing_messages) – Rawling

+0

Oui, le destinataire a besoin des données d'origine (il contient des informations de licence) et doit pouvoir vérifier son origine . – PhonicUK

Répondre

1

Utilisez simplement deux paires de clés, une pour le cryptage et une pour la signature. RSA est bien pour ça.

+0

Pouvez-vous répondre plus en détail s'il vous plaît. Je ne vois toujours pas comment deux paires de clés empêchent le client de produire sa propre version cryptée des données d'origine. – PhonicUK

4
  1. Utilisez quelque chose comme AES pour chiffrer les données
  2. signe les données cryptées avec RSA
  3. envoyer les cryptées + données signées à votre client
  4. depuis AES utilise un client clé partagée peut décrypter les données
  5. le client peut vérifier la signature en utilisant la clé publique RSA

les inconvénients sont les suivants:

  1. Le client peut reproduire un message chiffré mais il ne sera pas signé (puisque vous seul avez la clé privée).
  2. le client peut remplacer la clé publique de son côté par sa propre paire de clés pour signer/vérifier le message.
+0

Je ne suis pas votre inconvénient 2. – Rawling

+0

@Rawling Apparemment, il transmet des informations de licence et il vérifie avec la clé publique, c'est un inconvénient à mon humble avis. – Nasreddine

+0

Ah, je vois ce que vous voulez dire. – Rawling

Questions connexes