3

カスタムログインプログラムを介してクライアントにキーを安全に送信するサーバーがあります。キーはその後、さらなるクライアント要求を暗号化するために使用されます。そのキーはCookieのようにクライアントのディスクに保持され、クライアントがログアウトしてキーを廃止することを決定する前に複数回開始および停止される可能性のあるプログラムによって使用されます(したがって、キーはディスクに保存されます。プログラムが実行されていない場合、ログインからログアウトまでに長い時間がかかる場合があります)。

キーをディスクではなくメモリにのみ保持する方が少し安全なようです(クラッシュまたは再起動によってキーが失われ、その後新しいログインが強制されても問題ありません)。

Windowsでは、プログラムを別々に実行する間、キーをメモリにのみ保持する(メモリが仮想でディスクにページングされる可能性があることを無視する)ための最良の方法は何ですか?

考えられる解決策の1つは、キーを受け入れ、サービスのメモリに保持し、要求に応じて返す(または同じことを行う同等の簡単なDDEサーバーを使用する)簡単なWindowsサービスをクライアントで実行したままにすることです。非.netソリューションが推奨されます。

この機能をすでに提供している、通常実行されている標準のWindowsサービスはありますか?

より良いアプローチはありますか?

4

1 に答える 1

1

実行中のプロセスを伴わない、試すことができる解決策がおそらくいくつかあります。

  • 揮発性のレジストリキー(REG_OPTION_VOLATILE)に保存します

  • グローバルアトムテーブルに保存します。キーは文字列として保存する必要があります。おそらく2つの原子が必要になります。1つはキーを格納し、もう1つはGlobalGetAtomNameを呼び出すことができるように最初のアトムを見つけるために使用されます。2番目のアトムは、GlobalFindAtomを呼び出すことができるように、「YourAppName:S-UsersSidGoesHere」のような既知の名前を持つ必要があります。

%temp%のファイルに保存する場合は、実際のキーの暗号化に使用されるキーの一部としてTOKEN_STATISTICS.AuthenticationIdを使用できます。EFS(FILE_ATTRIBUTE_ENCRYPTED)を使用してファイル自体を暗号化できます...

于 2012-05-24T22:16:19.203 に答える