3

私は j2me プログラマーです。私のプロジェクトは、HTTP メソッドを介してサーバーにデータを送信することに関連しています。Bouncy Castle (Triple DES) を使用して j2me 側でデータを暗号化します。サーバー側のコーディングも担当しています。

次に、サーバー側で受信したデータを復号化してデータベースに保存します。

ここでは、コーディング自体でキーを静的に想定しています。サーバー側と j2me 側では、同じキー値を使用します。

しかし、ここに要件に基づく 1 つの問題があります。キーはランダムに生成され、ユーザーには知られていません

この場合、j2me の部分で何らかのキーを使用してデータを暗号化すると、サーバーはキーを知らずにどのように復号化するのでしょうか?

または、他のメカニズムがありますので、問題の解決にご協力ください。

ありがとう、よろしく、 Sivakumar.J

4

1 に答える 1

1

あなたの目標を達成するためのいくつかの方法があります。

これを行う1つの方法は、Diffie-Hellmanスタイルの鍵交換などの何らかの形式の鍵交換/合意プロトコルを使用することです(http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchangeを参照)。J2ME環境を使用している場合は、ハードウェア要件にやさしい楕円曲線を使用した最近の実装を使用することをお勧めします。

目標を達成する別の方法は、公開鍵証明書を使用した安全な鍵トランスポートプロトコルの実装ですが、独自のセキュリティプロトコルを考案することはお勧めしません。むしろ、これらの場合のために特別に設計されたSSL/TLSを使用します。

要件に基づいて、サーバー認証(「一方向SSL」)または相互認証形式(「双方向SSL」)でSSLを使用する必要があります。SSLの適切な設定については、Webサーバーのドキュメントを参照してください。

サーバーをセットアップしたら、現在行われているようにクライアントで対称暗号化キーを作成し、新しくセットアップされたTLS接続を使用して暗号化キーをサーバーに送信するだけで十分です。

Diffie-Hellmanソリューションの利点は、必ずしも証明書が必要ではないことですが、それを安全に使用するには、何らかの形式の鍵導出関数を実装する必要があります(http://csrc.nist.gov/publications/fips/を参照)。 fips186-3 / fips_186-3.pdf)これも重要です。したがって、構成のオーバーヘッドが大きくなる場合でも、2番目のアプローチを使用することをお勧めします。

于 2011-07-04T01:04:14.610 に答える