В Tor, если у нескольких узлов один и тот же оператор (или одни и те же операторы), они должны объявить себя членами «семьи».

В текущем устройстве Tor, чтобы настроить узлы как членов одной семьи, каждый узел должен перечислять всех остальных членов семьи в своей конфигурации и также публиковать этот список для клиентов. Такие списки не очень приятно поддерживать и дорого загружать.

Дизайн Счастливе Семьи — это новая функциональность в Tor 0.4.9.2-alpha, которая (со временем) предоставит более простой способ настройки семей узлов, а также позволит существенно сократить объём трафика при загрузке клиентами информации из сетевого каталога.

(К сожалению, переход на счастливые семьи приведёт к дополнительной работе на время переходного периода. Мы считаем, что в долгосрочной перспективе это того стоит.)

Вам стоит прочитать это, если вы оператор узла и вам нужно настроить семью в сети Tor.

Основная идея

В дизайне Счастливых Семей каждая семья узлов идентифицируется секретным ключом подписи семьи, общим для всех её участников. Члены семьи используют этот ключ для подписи сертификатов, подтверждающих их принадлежность к семье.

Итак, вам нужно:

  1. Сгенерируйте один ключ для вашей семьи.
  2. Скопируйте этот ключ на каждый узел.
  3. Настройте ваши узлы для использования этого ключа.

Более подробно

Создание семейных ключей

Сначала вам нужно дождаться, пока все ваши узлы будут работать на версии 0.4.9.2-alpha или новее.

Затем, чтобы сгенерировать семейный ключ, выполните:

tor --keygen-family MyKey

Это создаст файл с именем MyKey.secret_family_key; также в стандартный вывод будет выведен результат примерно такого вида:

# Generated MyKey.secret_family_key
FamilyId wweKJrJxUDs1EdtFFHCDtvVgTKftOC/crUl1mYJv830

Сохраните эту строку FamilyID; вам она еще понадобится! (Не используйте family ID из этого примера — это не ваш family ID.)

Настройка вашего узла

Скопируйте файл MyKey.secret_family_key (или как вы его назвали) в каталог KeyDir каждого вашего узла. (По умолчанию, это keys под-директория вашего DataDir.) Имя файла должно оканчиваться на .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 так же, как и раньше: пока все клиенты не начнут поддерживать Счастливые Семьи, им придётся ориентироваться на устаревшие списки семей.

Мы постараемся сделать этот переходный период настолько коротким, насколько это разумно.

Мы объявим, когда необходимость указывать MyFamily исчезнет.

Дополнительная информация: как перенести семейные ключи

Если один из ваших узлов будет скомпрометирован или вы случайно раскроете семейный ключ, вам потребуется заменить этот ключ. (Если этого не сделать, узел злоумышленника может ложно заявить, что является членом вашей семьи.)

Для этого мы рекомендуем пошаговый процесс.

  1. Сгенерируйте новый семейный ключ, как описано выше. Дайте ему другое имя файла, отличное от имени старого ключа.
  2. Скопируйте новый семейный ключ на каждый из ваших узлов, не заменяя старый семейный ключ.
  3. Добавьте новую строку FamilyIDв конфигурации всех ваших узлов, не удаляя старую. В этот момент ваши узлы являются членами двух семей.
  4. Подождите несколько дней, чтобы информация о новой семье успела распространиться.
  5. Удалите строки со старым FamilyID из настроек ваших узлов. Опционально, вы можете также удалить старые семейные ключи.

Дополнительная информация: ожидаемая экономия от этого перехода

Мы планируем удалить MyFamily и устаревшие TAP onion-ключи одновременно. Когда это произойдёт, мы оцениваем, что микродескрипторы сети будут занимать примерно 10% от их текущего размера.

(К сожалению, эта экономия может оказаться не постоянной: при переходе на постквантовую криптографию нам, возможно, снова придётся увеличить размер микродескрипторов. Но по крайней мере это изменение освободит для этого место.)