4

サーバーを介して2つのクライアント間でデータを転送するクライアントサーバーアプリケーションを開発しています。

データは暗号化する必要があり、 AESを使用することを考えました。私の考えは、クライアントのパスワードからAESキーを取得するためにPBKDF2を使用することでした。

この場合、クライアントはデータをエンコードし、サーバーはデータをデコードし、2番目のクライアントのパスワードを使用して再エンコードし、2番目のクライアントに送信します。

これがこれを実装するための最良の方法だと思いますか?

サーバーの干渉なしに最初のクライアントをエンコードし、2番目のクライアントをデコードする方法はありますか?

AESキーを暗号化して、あるクライアントから別のクライアントに転送するにはどうすればよいですか?


次の解決策についてどう思いますか?

  1. クライアントとサーバーは、Diffie-Hellmanを使用して秘密AESキーを作成します(このキーは各クライアントに固有です)。
  2. 送信クライアントはセッションAESキーを作成し、秘密AESキーを使用してエンコードします。
  3. サーバーはセッションキーを復号化し、セッション内のすべてのクライアントに対して再暗号化します(各クライアントの秘密キーを使用)。
  4. 送信クライアントは、セッションAESキーを使用してデータを暗号化し、サーバーに送信します。
  5. サーバーは、必要な処理を行わずにすべての受信者クライアントにデータを送信します。
4

3 に答える 3

4

Diffie–Hellman 鍵交換を使用することもできます。どのプログラミング言語を使用していますか?

于 2009-11-22T13:12:07.797 に答える
3

非対称暗号化アルゴリズムを使用してAESキーを安全に送信し、このキーを使用して対称AES暗号化/復号化を行うことができます。通信は次のようになります。

  1. クライアントは、暗号化されたメッセージを使用してサーバーと通信したいと考えています。
  2. クライアントは公開鍵と秘密鍵のペアを生成し、公開鍵をサーバーに送信します。
  3. サーバーは公開鍵を使用して秘密鍵を暗号化し、それをクライアントに送り返します。
  4. クライアントは自分の秘密鍵を使用して秘密を復号化します(どちらも通信を暗号化/復号化するための秘密鍵を知っています)。
  5. クライアントは、秘密鍵を使用してAESを使用して、サーバーに送信するメッセージを暗号化します。
  6. サーバーは秘密鍵を使用してメッセージを復号化します。
于 2009-11-22T13:08:05.447 に答える
0

最初にプログラムの一部を通信するための独自のプロトコルを作成するか、HTTPS などの利用可能な安全なプロトコルを使用する必要があります。私が言える唯一のことは、暗号化/復号化などの負荷の高いコンピューティング操作は、最初にクライアントによって渡され、次にサーバー プロセスによって渡される必要があるということです。信頼できる要求。

于 2012-04-22T00:44:09.070 に答える