質問

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

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

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

役に立ちましたか?

解決

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

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

他のヒント

この問題には、キーを隠そうとすることを伴わない解決策があります(一般的には不可能です)。例えば、 diffie-hellmanキーエクスチェンジ クライアントとサーバーは、ワイヤー上に送信せずに新しいシークレットセッションキーをネゴシエートすることができます。

したがって、あなたは、新しいスーパーシークレットメソッドで隠す必要がある方法の秘密を知っている場合にのみ元に戻すことができる特に困難なメソッドを取り消すのが特に困難な方法であなたの秘密(実行可能ファイルの鍵)を隠すことを計画していますそれは、あなたがその方法の秘密を知っている場合にのみ元に戻すことができます。それは私たちが隠す必要がある別の秘密を必要とする別の秘密の方法で隠す必要があります...

これは「問題のオーバーフロー」です。あなたがこのようにそれを解決しないことをあなたが見ることができることを願っています。コンピューターあたりのキー(SSH/SSHDがこれを行う)を生成し、それらを保護します。上記の同じ問題が実際に適用されます。なぜなら、私がそのキーを取得した場合、それはまだゲームを上げているからです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top