Tor では、同じオペレーターが複数のリレーを管理している場合、それらのリレーが「ファミリー」のメンバーであることを宣言する必要があります。
Tor の現在の設計では、リレーをファミリーのメンバーとして設定するには、すべてのリレーがその設定で ファミリーの他のすべてのメンバー をリストアップし、そのリストをクライアントにも公開する必要があります。
こうしたリストは維持するのが大変で、ダウンロードするのにも多くの費用がかかります。
Happy Family 設計は Tor 0.4.9.2-alpha の新機能で、(最終的には) リレーファミリーを設定するよりシンプルな方法を提供し、クライアントがネットワークディレクトリー情報を取得する際のトラフィックの大幅な節約につながります。
もしあなたが Tor ネットワーク上でファミリーを設定する必要のあるリレーオペレーターでしたら、ぜひこれをお読みください。
基本的な設計
Happy Family の設計では、すべてのリレーファミリーは、ファミリーメンバーが共有する秘密のファミリー署名鍵によって識別されます。
ファミリーメンバーはこの鍵を使って、自分がファミリーに属していることを証明する証明書に署名します。
そのため、以下のことが必要になります。
- ファミリーに対して単一の鍵を生成する。
- その鍵をすべてのリレーにコピーする。
- その鍵を使用するようにリレーを設定する。
詳細
Family Key の生成
まず、すべてのリレーが 0.4.9.2-alpha 以降で動作するようになるまで待つ必要があります。
次に、Family Key を生成するために以下を実行します。
tor --keygen-family MyKey
これにより、MyKey.secret_family_key という名前のファイルが作成されます。また、以下のような結果を標準出力に書き出します。
# Generated MyKey.secret_family_key
FamilyId wweKJrJxUDs1EdtFFHCDtvVgTKftOC/crUl1mYJv830
この後必要になるので、FamilyID の行を保存してください!
(この例の ID はあなたの Family ID ではないので使わないでください。)
リレーの構成
MyKey.secret_family_key ファイル (または任意の名前) をリレーの KeyDir にコピーします。
(デフォルトでは、これは DataDir の keys サブディレクトリーです。)
ファイル名は .secret_family_key で終わる必要があります。
次に、FamilyId 行を torrc に追加します。
リレーが動作中の場合は、設定を再読み込みする必要があります(通常は SIGHUP で) 。
うまくいきましたか?
これが正しくできていれば、リレーのディスクリプタに以下のような family-cert エントリーがあるはずです。
family-cert
-----BEGIN FAMILY CERT-----
AQwAB2K5AXJrxBpgTXDIvHKFShmCCD2yLnDaBf2lWaInBhR2R56HAQAgBAAjv69J
jy+7BSRh1GnGF7Zxm+AMXvJYWkUCWY+5KU8Bymkz5N4D/QNs4K6bOjLokAwD4raT
J34t8b7uxHXuFS2F2VN5Ygr3//vGsB00jideQ5Cj9aX+BLSZ2FjC6GK2XAo=
-----END FAMILY CERT-----
十分な数のディレクトリー管理機関が 0.4.9.2-alpha 以降を実行するようになると、リレーのマイクロディスクリプタに対応するエントリーが追加され、以下のようになります。
family-ids ed25519:wweKJrJxUDs1EdtFFHCDtvVgTKftOC/crUl1mYJv830
追加情報: Family Key を移行する方法
リレーが侵害された場合や、誤って Family Key が漏洩してしまった場合は、キーを変更する必要があります。
(そうしないと、攻撃者が自身の運用するリレーを、あなたのファミリーに属しているリレーだと偽装する可能性があります。)
そのためには、段階的な手順を踏むことをお勧めします。
- 上記のように新しい Family Key を生成する。
その際、古い鍵とは異なるファイル名をつけます。
- 古い Family Key を置き換えずに、新しい Family Key をすべてのリレーにコピーする。
- 古い行を削除せずに、新しい
FamilyID 行をすべてのリレーの設定に追加する。
これにより、あなたのリレーはすべて 2 つ のファミリーのメンバーになります。
- 新しいファミリーの情報が反映されるまで数日待つ。
- リレーの設定から古い
FamilyID 行を削除する。
必要に応じて、古い Family Key も削除します。