مجوز سرویس‌گیرنده روشی برای اصالت‌سنجی و خصوصی‌کردن سرویس Onion است. برای اتصال به سرویس Onion ، سرویس‌گیرنده‌های Tor نیازمند ارائهٔ یک اعتبارنامه‌ اصالت‌سنجی هستند. برای سرویس‌های Onion v3، این روش با یک جفت کلید (یکی عمومی و یکی خصوصی) کار می‌کند. سمت سرویس با یک کلید عمومی پیکربندی شده است و سرویس‌گیرنده فقط با یک کلید خصوصی می‌تواند به آن دسترسی داشته باشد.

توجه: هنگامی که مجوز سرویس‌گیرنده را پیکربندی کردید، هیچ کسی با نشانی مورد نظر از این مرحله به بعد نمی‌تواند به آن دسترسی داشته باشد. اگر هیچ مجوزی پیکربندی نشده باشد، این سرویس برای هر کسی که نشانی Onion داشته باشد قابل دسترسی خواهد بود.

پیکربندی سرویس‌های Onion v3

سمت سرویس

برای پیکربندی مجوز سرویس‌گیرنده در سمت سرویس، شاخه <HiddenServiceDir>/authorized_clients/ باید موجود باشد.با پیروی از دستورالعمل‌های توضیح داده‌شده در بخش نصب‏ به‌طور خودکار این شاخه ایجاد خواهد شد. مجوز سرویس‌گیرنده تنها در صورتی برای سرویس‌ به‌کار می‌افتد که Tor حداقل یک فایل مجوز را با موفقیت بارگیری کند.

درحال‌حاضر، شما باید کلیدها را خودتان با یک اسکریپت (مانند مواردی که با Bash، Rust یا Python نوشته شده است) یا به‌صورت دستی ایجاد کنید.

برای تولید دستی کلیدها، باید openssl نسخهٔ ۱.۱+ و basez را نصب کنید.

گام ۱. با استفاده از الگوریتم x25519 یک کلید ایجاد کنید:

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

اگر پیغام خطایی دریافت کردید، مشکلی رخ داده است و تا زمانی که متوجه علت عدم کارکرد آن نشده‌اید، نمی‌توانید ادامه دهید.

گام ۲. کلیدها را به قالب 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

گام ۳. کلید عمومی را کپی کنید:

 $ cat /tmp/k1.pub.key

گام ۴. یک فایل سرویس‌گیرندهٔ مجاز ایجاد کنید:

اصالت‌سنجی سرویس‌گیرنده را قالب‌بندی کرده و یک فایل جدید در شاخه <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

اگر قصد دارید سرویس‌گیرنده‌های تأییدشده بیشتری داشته باشید، هر فایل باید حاوی فقط یک سطر باشد. هر فایل معیوب نادیده گرفته خواهد شد.

گام ۵. سرویس Tor را دوباره راه‌اندازی کنید:

 $ sudo systemctl reload tor

اگر پیغام خطایی دریافت کردید، مشکلی رخ داده است و تا زمانی که متوجه علت عدم کارکرد آن نشده‌اید، نمی‌توانید ادامه دهید.

مهم: لغو یک سرویس‌گیرنده با حذف فایل «.auth» آن‌ها قابل انجام است، اما لغو فقط پس از راه‌اندازی دوباره فرایند Tor اعمال خواهد شد.

سمت سرویس‌گیرنده

برای دسترسی به سرویس Onion نسخهٔ ۳ با مجوز سرویس‌گیرنده به‌عنوان سرویس‌گیرنده، مطمئن شوید که ClientOnionAuthDir را در torrc خود تنظیم کرده‌اید. برای مثال، این سطر را به ‎/etc/tor/torrc اضافه کنید:

 ClientOnionAuthDir /var/lib/tor/onion_auth

سپس، در شاخه <ClientOnionAuthDir>، یک فایل .auth_private برای سرویس Onion متناظر با این کلید (برای مثال '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

اگر جفت کلید را به‌صورت دستی طبق دستورالعمل‌های این صفحه ایجاد کرده‌اید، می‌توانید کلید خصوصی ایجاد‌شده در گام ۲ را کپی کرده و از آن استفاده کنید. سپس tor را دوباره راه‌اندازی کنید و باید بتوانید به نشانی سرویس Onion متصل شوید.

اگر درحال ایجاد یک کلید خصوصی برای یک سایت Onion هستید، کاربر لزوماً نیازی به ویرایش torrc مرورگر Tor ندارد. این امکان وجود دارد که کلید خصوصی را به‌طور مستقیم در رابط مرورگر Tor وارد کرد.

برای اطلاعات بیشتر در مورد اصالت‌سنجی سرویس‌گیرنده، لطفاً راهنمای Tor را ببینید.