2

クライアントとサーバーが実行可能ファイルであるC++クライアント/サーバーアプリケーションがあります。クライアントとサーバーの間で接続が確立されるたびに、そのセッションの新しい暗号化キーを生成します。このセッションキーを送信し、クライアントとサーバーの両方に組み込まれている静的キーを使用してこのセッションキーを暗号化します。

ただし、実行可能ファイルで文字列を実行すると、静的キーが明らかになります。

クライアントおよびサーバーアプリケーションに埋め込まれた静的キーを非表示にして、それらが簡単に抽出されないようにし、誰かが私のセッションキーをデコードできるようにするにはどうすればよいですか。

4

3 に答える 3

5

この問題には、キーを非表示にすることを伴わない解決策があります(これは一般的に不可能です)。たとえば、Diffie-Hellman鍵交換を使用すると、クライアントとサーバーは、ネットワーク経由で送信することなく、新しい秘密セッション鍵をネゴシエートできます。

于 2010-12-31T22:15:09.253 に答える
5

キーを交換する彼の方法は、クライアントが有効であり、なりすましではないことを「保証」します。DHを使用してキーを安全に交換するだけでは、それはできません。同じ機能を取得するには、PKIシステムを実装する必要があります。SSL / TLSはこの目的のために構築されており、その下で彼が必要とすることを実行します。

サーバー用のCAを作成し、クライアント証明書に署名して、それらが本人であることを確認する必要があります。

于 2010-12-31T22:42:59.420 に答える
0

したがって、メソッドのシークレットを知っている場合にのみ元に戻すことができる、特に元に戻すのが難しいメソッドを使用してシークレット(実行可能ファイルのキー)を非表示にすることを計画しています。このメソッドは、新しいスーパーシークレットメソッドでも非表示にする必要があります。それは、そのメソッドの秘密を知っている場合にのみ元に戻すことができます。これは、非表示にする必要がある別の秘密を必要とする別の秘密メソッドで非表示にする必要があります...

これは「問題オーバーフロー」です。私はあなたがあなたがそれをこのように解決しないのを見ることができることを願っています。コンピューターごとにキーを生成し(ssh / sshdがこれを行います)、それらを保護します。上記と同じ問題が実際に当てはまります。そのキーを取得してもまだゲームアップしているためですが、この方法では、ソリューションにハードコーディングしないため、侵害されたキーの修正がはるかに簡単になります。

于 2010-12-31T23:13:29.577 に答える