1

機密情報を含む TCP/IP トラフィックを暗号化するために、サーバーおよびクライアント アプリケーションに AES 256 ビット暗号化を追加しています。毎日鍵をローテーションしていきます。そのため、キーはアプリケーションと共にメモリに保存されます。

キー配布プロセス:

  1. 各サーバーとクライアントには、日ごとの初期キー暗号化キー (KEK) のリストがあります。

  2. クライアントが起動したばかり、またはサーバーが起動したばかりの場合、クライアントは初期キーを使用してサーバーに毎日のキーを要求します。サーバーは、初期キーで暗号化された毎日のキーで応答します。日次キーは、ランダムに生成された英数字のセットです。AES 256 ビット暗号化を使用しています。

  3. その後のすべての通信は、その日次キーを使用して暗号化されます。

  4. 毎晩、クライアントは、現在の日次キーを現在の KEK として使用して、サーバーから新しい日次キーを要求します。クライアントが新しいキーを取得すると、新しい日次キーが古い日次キーに置き換わります。

別の悪いアプリケーションがこのメモリに不正にアクセスする可能性はありますか、それとも Windows で保護されていますか? キーはファイルに書き込まれず、メモリ内の変数に格納されるだけです。

アプリケーションがメモリに不正にアクセスできる場合、メモリを改ざんからどのように保護できますか?

私たちは C++ と XP を使用しています (Vista/7 は将来的にオプションになる可能性があるため、答えが変わるかどうかはわかりません)。

4

4 に答える 4

4

もっと根本的な問題を抱えているのではないかと思います。

このマシンがルートキットを検出する可能性がわずかでもある場合、あなたのすべてのキーはいわば私たちのものです。

Windows では、以下のいずれかに該当する場合、プロセス A はプロセス B のメモリを読み取ることができます。

  1. メモリ デバイスを開く権限があります。
  2. プロセス B の仮想メモリを開く権限を持っています。
  3. カーネルに友人がいます。

マシン上で実行されているものを完全に制御でき、誰も驚きをもたらさないという完全な自信を持っているなら、あなたは金持ちです。

もちろん、これは Windows に固有のものではありません。Windows に特有なのは、ルートキット マルウェアの量です。

于 2010-05-25T01:01:37.440 に答える
4

鍵の配布プロセスは安全ではありません。誰かが最初の鍵セットを取得した場合、すべてが終わります。

はい、他のアプリケーションはデバッガー フックを使用して Windows のプロセス メモリにアクセスできますが、それを防ぐ方法はほとんどありません。基本的に、ボックスが何らかの形で侵害された場合、それに対してできることはほとんどありません。

于 2010-05-25T01:02:14.710 に答える
2

もう 1 つの情報として、キーを自分でディスクに書き込まなくても、最終的にディスクに書き込まれる可能性があります。必要なのは、仮想メモリ システムがキーを保持しているメモリをページ アウトすることだけです。

他の人が指摘しているように、あなたが乗っているボックスを信頼できないなら、あなたはとにかくめちゃくちゃです. 追加のハードウェアを使用して、この種のことをより安全にする方法があります。基本的には、暗号化タスクを、より適切に制御できるドーター カードに移動します。これは、一部の金融機関や一部の政府機関で使用されている手法です。予算オーバーかもしれませんが。

于 2010-05-25T01:09:36.533 に答える
1

他のプロセスがプロセスのメモリを読み取るのを防ぐ方法は本当にありません。

動機のない攻撃に対して物事をもう少し耐性にするために、ランダムに生成されたキーを使用して、実際のキーが使用されていないときに暗号化することを検討できます。プログラムが実行されるたびに新しいランダム KEK を生成できます。おそらく、プログラムの実行中に数秒ごとに変更されることさえあります。実際に使用する必要がある場合にのみ「実際の」キーを復号化し、完了したらすぐにキーが存在するメモリをゼロにします。

もちろん、常にコミュニケーションをとっている場合、これはうまくいきません。ただし、通信がほとんどの時間アイドル状態で、トラフィックの急増がたまにしか見られない場合は、このアプローチが機能する可能性があります。

于 2010-05-25T02:24:56.927 に答える