
در سال ۲۰۱۸ بریو به استفاده از ویژگیهای تور (Tor) در مرورگر خود پرداخت تا به کاربران، حالت وبگردی جدیدی ارائه دهد که میتواند از حریم خصوصی آنها نه تنها در دستگاه مدنظر کاربران، بلکه در سراسر شبکه محافظت کند. همکاری بریو با تور به کاربران کمک میکند تا در مقابل ISP ها، ارائهدهندگان وایفای و سایتهای مشاهده شده که ممکن است به نظارت بر ارتباط اینترنتی کاربران یا حتی رصد و جمعآوری آدرس IP آنها بپردازند محافظت شوند. به علاوه، بریو با اجرای Tor relays در شبکه تور فعال بوده است.
بریو امنیت بالاتری برای کاربران خود ایجاد میکند
بریو به منظور ادامه پشتیبانی و فعالیت خود، با ایجاد خدمات Tor onion در صدد این است تا دانلود مرورگر خود را برای کاربران تور امکانپذیر سازد. این خدمات روشی برای محافظت از متادادههای کاربران نظیر موقعیت جغرافیایی آنها است و امنیت رمزگذاری بریو را ارتقا میبخشد. این موضوع به چند دلیل حائز اهمیت است که مهمترین آن، دسترسی یافتن به کاربرانی است که در شرایط نامناسب شناخت و دریافت مرورگر بریو قرار دارند.
در این مقاله به بررسی فرایند ایجاد شرایطی خواهیم پرداخت که میتوانید از آن برای ایجاد سرویس onion خود بهره ببرید.
به منظور شروع این فرایند، با استفاده از نرمافزاری به اسم ماینر، آدرس موردنظر را استخراج کردیم. ما از نرمافزار Scallion به دلیل پشتیبانی از لینوکس و کارت گرافیک استفاده میکنیم. به فرآیند محاسباتی گران قیمت برای ایجاد کلید خصوصی به منظور اثبات ادعای مالکیت آدرس onion، ماینینگ گفته میشود. آدرسهای onion (نسخه ۲)، رشتههای ۱۶ کاراکتری هستند که این کاراکترها متشکل از حروف a تا z و اعداد ۲ الی ۷ هستند. این آدرسها به onion. منتهی میشوند و ورودیها به دامنههای onion. از شبکه تور خارج نمیشوند. آدرسهای نسخه ۳ طولانیتر و ایمنتر هستند که رمزنگاری قویتری ارائه خواهند داد و به زودی به این آدرسها انتقال خواهیم یافت.
در مثال ما، رشتهای (string) میخواهیم که با brave شروع شود و با اعداد ادامه یابد. استخراج یک پیشوند ۶ کاراکتری با یک کارت گرافیک قوی تقریبا ۱۵ دقیقه طول میکشد. نتیجه نهایی یک آدرس onion. و یک کلید خصوصی است که به ما امکان میدهد تا آمادگی برای دریافت ترافیک ارسالی به این آدرس را اعلام کنیم. این موضوع از طریق Tor daemon با چند گزینه مخصوص هدایت میشود.
پس از استخراج آدرس onion، آن را در EOTK بارگذاری میکنیم. مجموعه ابزار شرکتی Onion یا همان EOTK، نرمافزاری است که ایجاد Tor daemon و سرور OpenResty را برای واسطه قرار دادن ترافیک برای سرورهای غیر onion را تسهیل میکند. در مثال ما، ترافیک را به دامنههای brave.com هدایت میکنیم. یک مرحله دیگر برای تکمیل این فرآیند لازم است: مجوز معتبر SSL.
بدون وجود این مجوز، پس از شروع EOTK برای اولین بار، متوجه خواهید شد که بسیاری از داراییهای وب بارگذاری نشدهاند. این موضوع به دلیل استفاده از مجوز خودامضاشده self-signed) SSL) است. برای بعضی از موارد، این مجوز قابل قبول است. بسیاری از کاربران onion به مشاهده این نوع مجوز عادت کردهاند، هرچند برای تجربه بهتر، وجود مجوز معتبر از جانب CA ضروری است. در حال حاضر تنها نهاد معتبر برای صدور مجوز برای آدرسهای onion.، دیجیسرت (DigiCert) است. دیجیسرت مجوزهای EV برای آدرسهای onion. ارائه میدهند.
ایجاد کلید خصوصی و درخواست امضای مجوز به روش استاندارد با OpenSSL انجام میشود. مثال فایل تنظیمات CSR به صورت زیر است:
$ openssl genrsa -out onionxxxxxx_onion.key 4096 # Create the private key
$ cat > san.cnf <<EOF # Create a CSR config file
[ req ]
default_bits = 2048
distinguished_name = req_distinguished_name
req_extensions = req_ext
prompt = no
[ req_distinguished_name ]
countryName = US
stateOrProvinceName = California
localityName = San Francisco
organizationName = Your Organization Here
commonName = onionxxxxxx.onion
[ req_ext ]
subjectAltName = @alt_names
[alt_names]
DNS.1 = *.onionxxxxxx.onion
DNS.2 = *.s3.onionxxxxxx.onion
EOF
$ # Create the CSR to give to DigiCert
$ openssl req -new -verbose -out sslcert.csr -key onionxxxxxx_onion.key -config san.cnf
یکی از موانع، این است که فرایند اثبات مالکیت آدرس به چند مرحله متفاوت تایید نیاز دارد. یکی از این مراحل، EV دقیق ایجاد قرارداد با نماینده سازمانی است که در دیجیسرت وجود دارد. مرحله دیگر، نمایش کاربردی و عملی به صورت ثبت DNS TXT یا درخواست HTTP به یک مسیر URL شناختهشده است. از آنجایی که آدرسهای onion دارای DNS نیستند، تایید TXT غیرممکن خواهد بود. این موضوع باعث میشود که نمایش کاربردی HTTP تنها گزینه موجود باشد.
سپس وب سروری مربوط به این آدرس در پورت ۸۰ (غیر SSL) ایجاد کنید. اگر این موارد بتوانند با موفقیت رشته را دریافت کنند، متوجه خواهند شد که کنترل آدرس در اختیار شما است. متاسفانه، هنگامی که این فرآیند را با دیجیسرت انجام دادیم، درخواست به ۲ دلیل کار نکرد. دلیل اول این بود که ETOK مسیر تمام ترافیک غیر SSL را به شنونده listener) SSL) تغییر میداد. در نتیجه، درخواست ناموفق میشد زیرا همچنان در حال اجرای مجوز خودامضاشده مبتنی بر ETOK بودیم. ETOK این ویژگی را دارد تا در خدمت رشتههای کوتاه نظیر رشتههای مورد نیاز برای فرآیندی باشد که از گزینه تنظیمات “hardcoded_endpoint_csv” استفاده میکند، اما متاسفانه به دلیل هدایت مجدد redirect) SSL)، عملکرد مناسبی ندارد. ما توانستیم تنظیمات OpenResty را تغییر دهیم تا بلاک تنظیمات مسئول بخش سرور پورت ۸۰ را انتقال دهیم.
$ cat brave.conf
set hardcoded_endpoint_csv ^/\\.well-known/pki-validation/fileauth.txt$,abc123
hardmap secrets/${var.onion_domain}.key ${var.external_domain}
پس از مشاوره با نویسنده، به ما گفته شد که گزینه “force_http” این موضوع را اصلاح خواهد کرد. مشکل دیگر این است که تاییدکننده خودکار دیجیسرت نمیتواند ترافیک تور را هدایت کند زیرا درخواستها همچنان ناموفق میشوند. هرچند پس از صحبت با تیم پشتیبانی دیجیسرت، این مشکل سریعا برطرف شد.
ما مجبور شدیم که مجوزها را چند بار مجددا صادر کنیم تا چند موضوع SAN به زیر دامنهها اضافه کنیم. نکته قابل ذکر در این خصوص، آن است که حتی اگر موضوعات SAN را در CSR خود بهروزرسانی کنید، باز هم منجر به افزودن آنها به مجوز مجددا صادرشده نخواهد شد و باید از طریق رابط کاربری وب دیجیسرت اضافه شود.
پس از آنکه مجوز را به دست آوردیم، آن را وارد EOTK کردیم و متوجه شدیم که صفحات وب به درستی نشان داده شدند و دانلودها بدون دریافت خطای مجوز کار کردند. این موضوع، نقطه عطف بسیار رضایتبخشی بود.
چند مورد دستکاری رشته توسط EOTK انجام میشود تا URL ها و بعضی از متنهای صفحات بازنویسی شوند تا به آدرسهای onion. ارجاع داده شوند. این موضوع بسیار رضایتبخش است، هرچند از بعضی از رشتهها باید محافظت شود. برای مثال، ما دارای چندین آدرس ایمیل نظیر press@brave.com هستیم که در brave.com فهرست شدهاند. این آدرس ایمیل به صورت press@brave5t5rjjg3s6k.onion بازنویسی شده است. از آنجایی که هنوز سرور ایمیلی به عنوان سرویس onion اجرا نشده است، این آدرسهای ایمیل کار نمیکنند، در نتیجه باید به صورت press@brave.com باقی بمانند. EOTK دارای گزینه “preserve_csv” به منظور نگهداری این رشتهها است.
set preserve_csv adsales,adsales@brave\\.com,i,adsales@brave.com \
bizdev,bizdev@brave\\.com,i,bizdev@brave.com \
press,press@brave\\.com,i,press@brave.com
پیشنهاد دیگر، استفاده از هدر پاسخگوی موقعیت onion یا Onion-Location response header در وبسایت است که به آدرس onion شما اشاره میکند. این موضوع، به کاربر و مرورگر یادآور میشود که این سایت به عنوان سرویس onion در دسترس است.
resource "aws_instance" "web" { # Ubuntu 18.04, source omitted for length ami = data.aws_ami.ubuntu.id instance_type = "t3.micro" user_data = <<-USER_DATA #!/bin/bash # Instructions from https://github.com/alecmuffett/eotk/blob/master/docs.d/HOW-TO-INSTALL.md apt update -y; apt install -y git aws-cli git clone https://github.com/alecmuffett/eotk.git /eotk cd /eotk ./opt.d/build-ubuntu-18.04.sh export AWS_DEFAULT_REGION=us-west-2 # Enables HiddenServiceNonAnonymousMode and HiddenServiceSingleHopMode export TOR_SINGLE_ONION=1 cat > default.conf <<-EOF set hardcoded_endpoint_csv ^/\\.well-known/pki-validation/fileauth.txt$,abcdefg hardmap secrets/onionxxxxxx.key onionxxxxxx EOF # Ideally place these somewhere secret, like AWS SSM (umask 077 cat > secrets.d/onionxxxxxx.key <<-EOF -----BEGIN RSA PRIVATE KEY----- -----END RSA PRIVATE KEY----- EOF ) ./eotk config default.conf mkdir projects.d/default.d/ssl.d (umask 077 cat > projects.d/default.d/ssl.d/onionxxxxxx.onion.pem <<-EOF -----BEGIN PRIVATE KEY----- -----END PRIVATE KEY----- EOF # 2 certs in here, DigiCert's intermediate and ours cat > projects.d/default.d/ssl.d/onionxxxxxx.onion.cert <<-EOF -----BEGIN CERTIFICATE----- -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- -----END CERTIFICATE----- EOF ) ./eotk start default USER_DATA }
امیدواریم این مقاله به شما نحوه اجرای موفق سرویس onion را آموخته باشد. لطفاً سوالات و نظرات خود را با ما در میان بگذارید.