公開PGPキーサーバーがキーを同期する方法に関する技術的な詳細を知りたいです。
あるキーサーバーにキーを送信した場合、他のすべてのサーバーに正確に「移動」しますか?誰が誰にどのように送信するのですか?自分の公開鍵サーバーソフトウェアを一から作成したいということを知るために何が必要ですか?
プロトコルの説明、またはこれを処理する実際のコードのいずれかを探していますが、見つかりません。
私が考えていた例の1つは、 http://pgp.mit.ed や http://pgp.zdv.uni-mainz.de のようなキーサーバーでした。私の知る限り、最初のキーにキーをアップロードすると、何らかの方法で "魔法のように"他のキーに転送され、インターネット上で公開されている他の何十ものキーサーバーが公開されます。
これらのキーサーバーが送信されたキーを交換する方法の具体的な基準を求めています。具体的な戦略が1つない場合は、通常の戦略が使用されます。
キーサーバーは、さまざまなプロトコルを使用して同期し、世界中の数百以上のサーバーのネットワークを形成します。
キーサーバーの同期の「古い」方法は、互いに電子メールを送信するキーサーバーに基づいています。鍵サーバーがまだ知らない新しい情報(ユーザーがアップロードしたか、別の鍵サーバーから受信した)を受信するたびに、これらの情報を同期リスト内の他のすべての鍵サーバーに転送します。
古い電子メールベースのプロトコルは(特に同期リスト内のサーバーの数に応じて)十分に拡張されないため、新しいプロトコルが Synchronizing Key Serverに対して定義されました(SKS) 、これはセット調整に基づいています。
これらの鍵サーバーは、所定の時間間隔で互いに「ゴシップ」します。非常に基本的な観点から、セット・リコンシリエーションは、いわゆるパーティション・ツリーでキーを順序付けます。これにより、大量の情報を送信せずに違いを簡単に見つけることができます。変更された鍵のみが交換されます。
SKSキーサーバー(およびSKSプロトコルの別の実装であるHockeypuck)の場合、ゴシップパートナーは、http://[keyserver]:11371/pks/lookup?op=stats
として利用できる統計ページを取得することで取得できます。 MITキーサーバー と niversity of Mainz の両方の統計ページを見ると、直接の相互同期の合意さえ持っていることがわかります( 「ゴシップピア」列)。
もう一方の CCC Hanauのキーサーバー は、MITの1つと直接ゴシップを行いません。これらのサーバーのいずれかにキーをアップロードすると、他のサーバーはそれを直接認識しませんが、マインツ大学の中間サーバー(またはその他の同期パス)を介して認識します。
SKSキーサーバープール はキーサーバーネットワークを定期的にクロールし、 キーサーバーネットワークのドットファイル を提供します(SKSプール内のすべてのサーバーの、以下に基づく同期リンクを含みません)古い電子メール同期アルゴリズム)。