0

私が持っているのは、クライアント サーバー シナリオとペイロード (x) です。

  • サーバーは x を生成し、暗号化します: enc(x)
  • enc(x) がクライアントに送信されます
  • クライアントはデータを復号化して x を取得します

ただし、強制しなければならない制限は次のとおりです。

  • 暗号化キーと復号化キーは異なる必要があります
  • クライアントは暗号化キーを持っていてはなりません

したがって、復号化するには公開鍵と秘密鍵の両方が必要であり、公開鍵を使用すると暗号化できるため、RSA は窓の外にあります。

したがって、目的は 2 つあります。クライアントがデータの一部を復号化して、それが既知のソースからのものであることを確認できるようにすることですが、クライアントが元のペイロードの独自の暗号化されたバージョンを作成できないようにすることです。

理想的には C# ですが、同様の言語の回答を受け入れることができます。

編集:復号化には秘密鍵のみが必要であり、両方の鍵は必要ではないことが通知されました-ただし、.NetのRSACryptoServiceProviderにこれを実行させる方法はないようです。

4

2 に答える 2

4
  1. AESなどを使用してデータを暗号化します
  2. 暗号化されたデータに RSA で署名する
  3. 暗号化された + 署名されたデータをクライアントに送信します
  4. AES は共有キーを使用するため、クライアントはデータを復号化できます
  5. クライアントは公開 RSA キーを使用して署名を検証できます

欠点は次のとおりです。

  1. クライアントは暗号化されたメッセージを再生できますが、署名はされません (秘密鍵を持っているのはあなただけなので)。
  2. クライアントは、自分の側の公開鍵を自分の鍵ペアに置き換えて、メッセージに署名/検証できます。
于 2012-09-25T12:59:22.190 に答える
1

2つのキーペアを使用するだけです。1つは暗号化用、もう1つは署名用です。RSAはこれに適しています。

于 2012-09-25T12:37:11.920 に答える