Tor では、同じオペレーターが複数のリレーを管理している場合、それらのリレーが「ファミリー」のメンバーであることを宣言する必要があります。
Tor の現在の設計では、リレーをファミリーのメンバーとして設定するには、すべてのリレーがその設定で ファミリーの他のすべてのメンバー をリストアップし、そのリストをクライアントにも公開する必要があります。
こうしたリストは維持するのが大変で、ダウンロードするのにも多くの費用がかかります。
Happy Family 設計はTor 0.4.9.2-alpha の新機能で、(最終的には) リレーファミリーを設定するよりシンプルな方法を提供し、クライアントがネットワークディレクトリー情報を取得する際のトラフィックの大幅な節約につながります。
(申し訳ありませんが、Happy Family に移行することで、移行の際に 追加の 作業が発生します。長い目で見ればそうする価値はあると思いますので、何卒ご理解ください。)
もしあなたが 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
重要: 引き続き MyFamily の設定は必要です!
申し訳ありませんが、まだ以前と同じように MyFamily オプションを設定する必要があります。すべてのクライアントが Happy Family をサポートするまでは、クライアントは従来の Family List を参照する必要があります。
この移行期間はできるだけ短くするつもりです。
MyFamily を含める必要がなくなった時点でお知らせします。
追加情報: Family Key を移行する方法
リレーが侵害された場合や、誤って Family Key が漏洩してしまった場合は、キーを変更する必要があります。
(そうしないと、攻撃者が自身の運用するリレーを、あなたのファミリーに属しているリレーだと偽装する可能性があります。)
そのためには、段階的な手順を踏むことをお勧めします。
- 上記のように新しい Family Key を生成する。
その際、古い鍵とは異なるファイル名をつけます。
- 古い Family Key を置き換えずに、新しい Family Key をすべてのリレーにコピーする。
- 古い行を削除せずに、新しい
FamilyID 行をすべてのリレーの設定に追加する。
これにより、あなたのリレーはすべて 2つ のファミリーのメンバーになります。
- 新しいファミリーの情報が反映されるまで数日待つ。
- リレーの設定から古い
FamilyID 行を削除する。
必要に応じて、古い Family Key も削除します。
追加情報: この移行に伴う軽量化
私たちは、MyFamily とレガシー TAP Onion Key を同時に削除する予定です。
これにより、ネットワークのマイクロディスクリプタのサイズは現在の 10% 程度になると推定されます。
(残念ながら、これは永続的な軽量化にはならず、ポスト量子暗号に移行する際に、またマイクロディスクリプタを大きくしなければならないかもしれません。しかし、少なくともこの変更によって、そうする余地が生まれます。)