Авторизація клієнта — це спосіб зробити службу Onion приватною та автентифікованою. Він вимагає від клієнтів Tor надання облікових даних для автентифікації для підключення до Onion Service. Для Onion Services версії 3 цей метод працює з парою ключів (відкритим і приватним). Сервісна сторона налаштована за допомогою відкритого ключа, і клієнт може отримати до неї доступ лише за допомогою закритого ключа.

Примітка. Після того, як ви налаштували авторизацію клієнта, будь-хто з цією адресою не зможе отримати до неї доступ з цього моменту. Якщо авторизація не налаштована, сервіс буде доступний для всіх, хто має адресу onion.

Налаштування v3 Onion Services

Сервісна сторона

Щоб налаштувати авторизацію клієнта на стороні служби, має існувати каталог <HiddenServiceDir>/authorized_clients/. Дотримуючись інструкцій, описаних у розділі Налаштування, цей каталог буде автоматично створено. Авторизацію клієнта буде ввімкнено для служби, лише якщо tor успішно завантажить принаймні один файл авторизації.

Наразі вам потрібно самостійно створити ключі за допомогою сценарію (наприклад, написаного на Bash, Rust або Python) або вручну.

Щоб згенерувати ключі вручну, вам потрібно встановити openssl версії 1.1+ і basez.

Крок 1. Згенеруйте ключ за допомогою алгоритму x25519:

 $ openssl genpkey -algorithm x25519 -out /tmp/k1.prv.pem

Якщо ви отримуєте повідомлення про помилку, щось пішло не так, і ви не можете продовжити, поки не зрозумієте, чому це не спрацювало.

Крок 2. Відформатуйте ключі в base32:

Приватний ключ

$ cat /tmp/k1.prv.pem | grep -v " PRIVATE KEY" | base64pem -d | tail --bytes=32 | base32 | sed 's/=//g' > /tmp/k1.prv.key

Відкритий ключ

$ openssl pkey -in /tmp/k1.prv.pem -pubout | grep -v " PUBLIC KEY" | base64pem -d | tail --bytes=32 | base32 | sed 's/=//g' > /tmp/k1.pub.key

Крок 3. Скопіюйте відкритий ключ:

 $ cat /tmp/k1.pub.key

Крок 4. Створіть файл авторизованого клієнта:

Відформатуйте автентифікацію клієнта та створіть новий файл у каталозі <HiddenServiceDir>/authorized_clients/. Кожен файл у цьому каталозі має мати суфікс «.auth» (тобто «alice.auth»; назва файлу не має значення), а формат його вмісту має бути таким:

 <auth-type>:<key-type>:<base32-encoded-public-key>

Підтримувані значення для <auth-type>: "descriptor".

Підтримувані значення для <key-type>: "x25519".

<base32-encoded-public-key> — це представлення base32 лише необроблених байтів ключа (32 байти для x25519).

Наприклад, файл /var/lib/tor/hidden_service/authorized_clients/alice.auth має виглядати так:

 descriptor:x25519:N2NU7BSRL6YODZCYPN4CREB54TYLKGIE2KYOQWLFYC23ZJVCE5DQ

Якщо ви плануєте мати більше автентифікованих клієнтів, кожен файл має містити лише один рядок. Будь-який неправильно сформований файл буде проігноровано.

Крок 5. Перезапустіть службу tor:

 $ sudo systemctl reload tor

Якщо ви отримуєте повідомлення про помилку, щось пішло не так, і ви не можете продовжити, поки не зрозумієте, чому це не спрацювало.

Важливо: Відкликати клієнта можна, видаливши його файл ".auth", однак відкликання буде дійсним лише після перезапуску процесу tor.

Сторона клієнта

Щоб отримати доступ до служби Onion версії 3 із авторизацією клієнта як клієнт, переконайтеся, що у вашому torrc встановлено ClientOnionAuthDir. Наприклад, додайте цей рядок до /etc/tor/torrc:

 ClientOnionAuthDir /var/lib/tor/onion_auth

Потім у каталозі <ClientOnionAuthDir> створіть файл .auth_private для Onion Service, який відповідає цьому ключу (тобто 'bob_onion.auth_private'). Вміст файлу <ClientOnionAuthDir>/<user>.auth_private має виглядати так:

 <56-char-onion-addr-without-.onion-part>:descriptor:x25519:<x25519 private key in base32>

Приклад:

 rh5d6reakhpvuxe2t3next6um6iiq4jf43m7gmdrphfhopfpnoglzcyd:descriptor:x25519:ZDUVQQ7IKBXSGR2WWOBNM3VP5ELNOYSSINDK7CAUN2WD7A3EKZWQ

Якщо ви вручну згенерували пару ключів, дотримуючись інструкцій на цій сторінці, ви можете скопіювати та використати закритий ключ, створений на кроці 2. Потім перезапустіть tor, і ви зможете підключитися до адреси Onion Service.

Якщо ви створюєте приватний ключ для сайту onion, користувачеві не обов’язково потрібно редагувати torrc браузера Tor. Приватний ключ можна ввести безпосередньо в інтерфейсі Browser Tor.

Додаткову інформацію про автентифікацію клієнта див. у посібнику Tor.