5

ランダムなソルト値を生成し、それをアプリケーション状態にしたいと考えています。

現在、私は Web ファームを使用しているため、アプリケーションの状態はマシンごとに異なります。分散型ファーム アプリも購入したくありません。

だから..これに対するいくつかの解決策は何ですか? コードまたは web.config ファイルでハードコーディングできると思っていましたが、それは eva の同じソルトを意味します..あまり安全ではありません。

誰にも提案はありますか?

覚えておいてください-私は、すべてのマシンで同じである一意のキー(GUIDなど)を求めています。多分設定ファイルが唯一の方法ですか?

4

3 に答える 3

4

私の理解が正しければ、あなたはマシンに値を共有させたいと考えており、その値を永遠に同じにしたくはありません。理想的には、保管しないことをお勧めします。

したがって、「最初の」マシンが起動時にランダムな値を生成するようにします (/dev/random など、可能なエントロピーを使用します。安全な値が必要なく、起動時に作成するのに十分なエントロピーがない場合)。とにかく、時間か何かを使用して)、他のすべての人にそれを伝えます。新しいマシンがクラスターに参加すると、クラスター内に既に存在する 1 つのマシンから値を見つけることができる必要があります。マシンがドロップアウトしても違いはありません。

「最初」のマシンはどれ?そうですね、常にあるマシンを他のマシンより先に起動し、値を生成するまでの時間を与えることができるのであれば、自明なアルゴリズムを使用できます。

1) 他のマシンを探します。見つけたら、その値を聞いてください。2) 見つからない場合は、自分で値を生成します。

複数のマシンが同時に起動している場合は、それらの中でどれが「リーダー」であるかを決定する必要があります。自分で 1 つを選択することで、これを行うことができます (たとえば、マシンは、管理インターフェイスを介して特定の接続を受信するとすぐに、自分自身を「リーダー」と宣言します。起動時に、各マシンは、この接続を取得するか、別のマシンから別のマシンが別の接続を受信するまで待機します)。マシンがリーダーです)。トークン リングで自動的に実行するのは簡単です: MAC アドレスが最小のマシンまたはリーダーであるマシン。しかし、もはや誰もトークンリングを使用していません...

信頼性の低いネットワークの反対側では、すべてのマシンが合計でいくつになるかを知っていない限り、それが可能かどうかさえわかりません (その場合、トークンリングと同じですが、すべてのマシンが互いに話し合うまで誰がリーダーかはわかった)。イーサネットの妥当な範囲内で想定できる信頼性の高いブロードキャストを使用すると、最適なアルゴリズムがどこかに公開されていると確信していますが、それが何であるかは忘れてしまいます (知っていたとしても)。誰もがリーダーだと思う人を定期的に放送していると思います(まだ良いリーダーを見ていない場合は、自分の主張を含めて). それを十分に長く(約1インターバル)聞いていれば、リーダーが誰であるかがわかり、シードを使い始めることができます.

値がシークレットの場合、明らかにクラスター内の通信は安全でなければなりません。ネットワーク アーキテクチャによっては、無料で入手できる場合もあります。

于 2008-11-30T11:14:52.953 に答える
2

Web ファームのシナリオでは、machine.config に格納されているマシン キーが探しているものである可能性があります。これは、Web ファーム内のすべてのマシンで同じでなければならない、ランダムに生成されたハッシュです。

于 2008-11-30T11:15:07.663 に答える
0

ここに楽しい/興味深い方法があります:

毎日の開始時、つまり 00:00 以降に、twitter、digg、friendfeed、または 00:00 の直前/時点の詳細について頻繁にデータが変更されるものを検索します。すべてのマシンがこの同じデータを取得し、変化することが保証されます。それを秘密にするために、この詳細を何らかの秘密鍵または DNS サーバーの MAC などと組み合わせます。

これは単純で楽しいことだと思います。もちろん、これはあなたのウェブサイトが些細なことでこの外部ウェブサイトに依存することを意味し、サイトがダウンした場合は困難になる可能性があります. ただし、そのような場合は、前日のデータを保持して続行できます。

楽しい/興味深い方法としてそれについて書きたかっただけです:)

于 2008-11-30T21:54:17.263 に答える