# اتصال، پروکسی‌ها و حفاظت از داده‌ها

Canonical page: https://phishdestroy.github.io/TgWitness/fa/docs/reference/connection/

احراز هویت، استخرهای خودکار پروکسی، حالت‌های IP، سیاست پشتیبان، درخواست‌های خارجی و ذخیره‌سازی مخفی.

این سند رفتار و محدودیت‌های TgWitness 0.7.0 را توصیف می‌کند. احراز هویت، دسترسی به منبع، اتصال شبکه و کامل بودن ضبط، حالات جداگانه‌ای هستند. برای مراحل ورود، فرمت‌های فایل و حساب‌های متعدد، از بخش [«حساب‌ها و فرمت‌های جلسه](https://phishdestroy.github.io/TgWitness/fa/docs/reference/accounts/)» شروع کنید. برای سیاست‌های رویداد و رفتار راه‌اندازی مجدد، به بخش [«نحوه کارکرد جمع‌آوری»](https://phishdestroy.github.io/TgWitness/fa/docs/reference/collection/) مراجعه کنید.

## روش‌های احراز هویت

**شناسه API و هش API یک برنامه را شناسایی می‌کنند؛ آنها جایگزین ورود به حساب کاربری نمی‌شوند.** استفاده از آنها در TgWitness اختیاری است. اولویت‌بندی: یک جفت وارد شده در فرم، سپس یک جفت از JSON حساب کاربری وارد شده، سپس جفت ذخیره شده در فضای کاری، سپس استخر داخلی ۵۰ تایی فقط جفت تلگرام دسکتاپ (2040) همراه با توضیحات تطبیق‌یافتهٔ کلاینت تلگرام دسکتاپ ارسال می‌شود. شما می‌توانید از جفت اختصاصی خود از ابزارهای توسعهٔ API در [my.telegram.org](https://my.telegram.org) با تمام حساب‌های خود استفاده کنید؛ هر حساب همچنان مجوز (authorization) خود را دارد.

| روش | پیش‌نیازها | پشتیبانی TgWitness |
| --- | --- | --- |
| تلفن، کد، احراز هویت دو مرحله‌ای اختیاری | دسترسی به حساب؛ جفت API اختیاری | ورود به پنل |
| کلید رمزنگاری HEX + شناسه DC | کلید کامل ۵۱۲ کاراکتری و DC 1–5 | زبانه‌ی **کلید احراز هویت** مستقیم؛ شناسهٔ کاربر اختیاری قبل از ذخیره‌ی احراز هویت بررسی می‌شود |
| جلسه رشته‌ای تله‌تون | یک رشته جلسه معتبر | ورود به پنل |
| تله‌تون اس‌کیوالایت `.session` | متن تبلیغاتی بسته و یکنواخت | وارد کردن مستقیم اسکیماها از پنل ۷/۸؛ CLI آفلاین اختیاری |
| پایروگرام اس‌کیوالایت `.session` | جلسه کاربری تولید بسته شد | وارد کردن مستقیم اسکیماها از پنل ۲/۳ |
| Telegram Desktop TData ZIP | یک حساب مدرن؛ رمز عبور محلی در صورت محافظت‌شده | تبدیل در حافظه همراه با بررسی‌های چک‌سام و رمزگشایی |
| JSON حساب | میدان‌های پشتیبانی‌شدهٔ API/جلسه/کلید | فقط متادیتا برای پر کردن اعتبارنامه‌های API کافی است؛ ورود با جلسه/کلید یا تلفن/QR همچنان لازم است |
| ورود با QR | تأیید از یک اپلیکیشن تلگرام مجاز | تولید QR محلی، انقضا/تکرار تلاش، احراز هویت دو مرحله‌ای اختیاری |
| TDLib / Pyrogram StringSession | فرمت‌های دیگر مخصوص کتابخانه | پشتیبانی‌نشده |
| توکن بات | یک ربات با مدل دسترسی/به‌روزرسانی اختصاصی خود | توسط این گردآورنده استفاده نشده است |

تلگرام ارسال کد را انتخاب می‌کند؛ پیامک تضمین‌شده نیست. هش API نمی‌تواند یک جلسه لغو شده را ترمیم کند یا رمز عبور ۲FA فراموش‌شده را جایگزین نماید. TgWitness کدهای ورود یا رمز عبور ۲FA تلگرام را روی دیسک ذخیره نمی‌کند.

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

## وارد کردن فایل جلسه تله‌تون

Telethon SQLite، Pyrogram SQLite و TData تلگرام دسکتاپ از فرمت‌های متفاوتی استفاده می‌کنند. پنل ساختارهای پشتیبانی‌شده را تشخیص داده و تبدیل می‌کند؛ تغییر نام یک فایل، تبدیل آن نیست. یک جلسه و JSON همراه آن را در بخش **«فایل‌ها**» (**Files**) انتخاب کرده، سپس روی **«اتصال حساب» (Connect account**) کلیک کنید. تا چهار فایل مطابقت‌دار و مجموعاً ۸ مگابایت (MiB) پذیرفته می‌شود. برای جزئیات فرمت‌های TData/JSON، [محدودیت‌های فرمت را](https://phishdestroy.github.io/TgWitness/fa/docs/reference/accounts/) ببینید. امکان بازیابی رمز عبور وجود ندارد. ورود با تلفن/2FA یا QR یک مجوز جداگانه ایجاد می‌کند.

مسیر خط فرمان اختیاری مخصوص تله‌تون همچنان در دسترس است:

1. کلاینت را با استفاده از جلسهٔ اصلی متوقف کرده و یک نسخهٔ یکسان بسازید. مبدل فایل‌هایی را که WAL/ژورنال ناقص دارند رد می‌کند. به جای حذف آن فایل‌ها برای دور زدن بررسی، کلاینت اصلی را به درستی ببندید.
2. از محیط TgWitness، اجرا کنید:

```
python -m tgwitness.sessions account.session --out account.tgwitness-session
```

1. در بخش **افزودن حساب → فایل‌ها**، نتیجه را بارگذاری کنید یا رشتهٔ آن را چسبانده و ادامه دهید.
2. شناسه عددی حساب نمایش‌داده‌شده را بررسی کنید، منابع را انتخاب کرده و مشاهده را آغاز کنید.

این مبدل، SQLite را فقط برای خواندن باز می‌کند، هیچ‌گونه ارتقای طرحواره یا درخواست شبکه‌ای انجام نمی‌دهد و جلسه را چاپ نمی‌کند. این ابزار نسخه طرحواره، انواع جدول، یک سطر از جلسه، IP/پورت/DC و طول کلید را بررسی می‌کند. ورودی CLI به ۶۴ مگابایت محدود است؛ متن StringSession به ۴ کیلوبایت محدود است. تبدیل پنل فایل‌ها را به سرور احراز هویت‌شده TgWitness بارگذاری می‌کند، آن‌ها را در حافظه پردازش می‌کند و اعتبارنامه‌های نرمال‌شده را بدون ذخیره نسخه‌های اصلی بارگذاری‌شده، به همان مرورگر بازمی‌گرداند. برای سرور از راه دور از HTTPS استفاده کنید.

**فایل تبدیل‌شده، رمز دسترسی به حساب کاربری رمزگذاری‌نشده است.** آن را در یک مخزن محافظت‌شده نگه دارید و هرگز آن را در مخزن کد قرار ندهید یا برای یک سرویس تبدیل شخص ثالث ارسال نکنید. TgWitness جلسه مجاز را در گاوصندوق رمزگذاری‌شده خود ذخیره می‌کند. کپی کردن یک جلسه، مجوز جداگانه‌ای ایجاد نمی‌کند: همزمان کلاینت‌هایی را با کلیدهای دسترسی کلون‌شده اجرا نکنید و انتظار دریافت به‌روزرسانی مستقل را نداشته باشید.

مبدل مجوز را منتقل می‌کند، نه پیام‌های اصلی، حافظهٔ موقت موجوده یا یک نشانگر به‌روزرسانی پایدار. این قابلیت بازیابی به‌روزرسانی را در صورت راه‌اندازی مجدد فرآیندها تضمین نمی‌کند.

## MTProto، تل‌تون و پروکسی‌ها

MTProto پروتکل تلگرام است. Telethon کتابخانه کلاینت پایتونی است که TgWitness از آن استفاده می‌کند. MTProxy یک پروکسی حمل‌ونقل تلگرام است؛ SOCKS5 و HTTP CONNECT تونل‌های عمومی فراهم می‌کنند. هیچ‌کدام جایگزین احراز هویت حساب کاربری نمی‌شوند.

مسیر را برای هر فضای کاری در **حساب کاربری → تنظیمات → تنظیمات اتصال → تغییر مسیر اتصال** قبل از ورود ذخیره کنید. فضاهای کاری جدید به‌طور پیش‌فرض از **Automatic MTProxy · لیست‌های عمومی** با قابلیت پنهان کردن IP استفاده می‌کنند. فضاهای کاری موجود که صراحتاً از Direct استفاده کرده‌اند، حالت اجازهٔ آن را حفظ می‌کنند.

## مُدهای IP

مسیر، اتصال را انتخاب می‌کند. حالت آی‌پی تعیین می‌کند که آدرس سرور چه زمانی ممکن است فاش شود. این کنترل‌ها وی‌پی‌ان نصب نمی‌کنند و تمام ترافیک دستگاه را مسیریابی نمی‌کنند.

| حالت | تلگرام | درخواست‌های خارجی |
| --- | --- | --- |
| پنهان‌سازی آی‌پی (`hide`) | از پروکسی استفاده کنید؛ اگر هیچ‌کدام کار نکرد، منتظر بمانید. هیچ پشتیبان مستقیم دیگری وجود ندارد. | نیازمند SOCKS5/HTTP است؛ درخواست‌های بدون پروکسی مناسب را رد می‌کند. |
| اجازهٔ پشتیبان (`fallback`) | MTProxy خودکار ممکن است پس از تأخیر تنظیم‌شده از Direct استفاده کند و سپس به یک پروکسی فعال بازگردد. | ترجیحاً از پروکسی خارجی پیکربندی‌شده یا مسیر SOCKS5/HTTP حساب استفاده کنید؛ در غیر این صورت، گزینه Direct مجاز است. |
| تونل / VPN (`tunnel`) | مسیرهای مستقیم و بازگشت فوری خودکار به استخر مجاز است. | استفاده از Direct زمانی مجاز است که هیچ پروکسی قابل‌اعمال پیکربندی نشده باشد. |

حالت تونل/VPN بر این فرض است که شما آن شبکه را به‌طور جداگانه مدیریت می‌کنید. بدون یک تونل فعال، مقصدها می‌توانند آدرس خودِ سرور را ببینند. حالت را بر اساس شبکه واقعی خود انتخاب کنید، نه بر اساس نام گزینه.

### یک مسیر را انتخاب کنید

| مسیر | تنظیمات | مرز |
| --- | --- | --- |
| MTProxy خودکار | فهرست‌های داخلی یا کاتالوگ اپراتور | یک مسیر تلگرام فعال را حفظ می‌کند؛ پشتیبان مستقیم به حالت IP بستگی دارد |
| مستقیم | حالت تونل/VPN | تله‌تون از مسیر شبکه میزبان استفاده می‌کند |
| SOCKS5 | میزبان، پورت، نام کاربری/رمز عبور اختیاری | python-socks، DNS مقصد از راه دور فعال است |
| اتصال HTTP | میزبان، پورت، نام کاربری/رمز عبور اختیاری | اتصال ساده HTTP CONNECT؛ TLS به خود پروکسی پیاده‌سازی نشده است |
| MTProxy | میزبان، پورت، مخفی | انتقال آزمایشی تله‌تون؛ ۳۲ رقم هگزادسیمال یا `dd` + ۳۲ رقم هگزادسیمال |

اسرار Fake TLS `ee` رد می‌شوند. نرمال‌سازی Telethon 1.45 می‌تواند پیش‌وند و دامنه را حذف کند، اما این کار، Fake TLS را پیاده‌سازی نمی‌کند. `tg://proxy?server=…&port=…&secret=…` یا `https://t.me/proxy?server=…&port=…&secret=…` را الصاق کنید و **از لینک، «پر کردن فیلدها» را** انتخاب کنید. این کار فیلدها را بدون اتصال یا ذخیره کردن اعتبارسنجی و پر می‌کند؛ مسیر را به صورت جداگانه بررسی و ذخیره کنید. فیلدهای دستی همچنان در دسترس هستند. به [لینک‌های پروکسی تلگرام](https://core.telegram.org/api/links#proxy-links) مراجعه کنید.

### پروکسی‌های عمومی ارائه‌شده توسط نصب شما

فهرست داخلی چهار منبع را ترکیب می‌کند: [SoliSpirit/mtproto](https://github.com/SoliSpirit/mtproto)، [zakky8/mtproto-proxy-pro](https://github.com/zakky8/mtproto-proxy-pro)، [kort0881/telegram-proxy-collector](https://github.com/kort0881/telegram-proxy-collector) و [3yed-61/MTP-Collector](https://github.com/3yed-61/MTP-Collector). اسنپ‌شات ضمیمه‌شده حاوی اطلاعات انتهای نقطه، انتساب منبع و تاریخ‌های دانلود است. فهرست شدن یک ارائه‌دهنده، اثباتی بر کارکرد یا ارائه تمام به‌روزرسانی‌های تلگرام توسط آن نیست.

**MTProxy به‌صورت خودکار** اتصال انتقال تلگرام را بررسی می‌کند، یک پروکسی فعال را حفظ می‌کند و در صورت از کار افتادن آن، به پروکسی دیگری سوئیچ می‌کند. فضاهای کاری (Workspaces) در صورت وجود ورودی‌های فعال کافی، ترجیح می‌دهند از پروکسی‌های متفاوت استفاده کنند؛ آدرس خروجی منحصربه‌فرد تضمین نمی‌شود. پراکسی‌های ناموفق پیش از تلاش مجدد استراحت می‌کنند. اگر هیچ‌کدام کار نکنند، حالت IP تعیین می‌کند که آیا جمع‌آوری باید منتظر بماند یا می‌تواند از اتصال مستقیم استفاده کند. تغییر پراکسی‌ها، حساب کاربری را تغییر نمی‌دهد یا دفترچه یادداشت آن را پاک نمی‌کند. انتخاب‌ها و تغییرات مسیر در دفترچه یادداشت امضا شده ثبت می‌شوند.

هنگامی که مسیرهای خودکار فعال هستند، فهرست‌ها به‌صورت ساعتی تازه می‌شوند و بررسی‌های حمل‌ونقل به‌طور پیش‌فرض هر ده دقیقه یک‌بار اجرا می‌شوند. این بازه‌های زمانی قابل تنظیم هستند. **به‌روزرسانی فهرست‌های عمومی** نیازمند یک تازه‌سازی است؛ مشاهده صرف فهرست، مسیر دستی ذخیره‌شده را تغییر نمی‌دهد.

هر پاسخ فید به ۱ مگابایت محدود شده و دارای تایم‌اوت درخواست هشت ثانیه‌ای و مهلت دانلود کلی ۲۰ ثانیه‌ای است؛ ریدایرکت‌ها رد می‌شوند. حداکثر ۶۴ ورودی سازگار از هر منبع نگهداری و تکرارها حذف می‌شوند. پارسر، اسرار هگزادسیمال و base64url پشتیبانی‌شده و فید JSON را می‌پذیرد. TLS جعلی `ee`، لینک‌های نامعتبر، آدرس‌های IP خصوصی/محفوظ و نام‌های میزبان محلی نادیده گرفته می‌شوند. نام‌های میزبان قبل از استفاده حل و بررسی می‌شوند و IP انتخاب‌شده برای آن اتصال ثابت (پین) می‌شود. بازیابی خودکار، نام میزبان را دوباره حل می‌کند؛ برای حل مجدد آن، یک ورودی دستی را دوباره اعمال کنید.

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

**ترافیک تلگرام و درخواست‌های HTTPS از مسیرهای متفاوتی استفاده می‌کنند.** دانلود لیست‌ها از یک اتصال HTTPS جداگانه و مسیر درخواست خارجی ارائه‌شده استفاده می‌کند. `TGWITNESS_PROXY_FEED_PROXY` صراحتاً آن مسیر را با یک پروکسی HTTP/SOCKS5 بازنویسی می‌کند؛ هر دو واریانت Compose کلککتور آن را فوروارد می‌کنند. استخر پس‌زمینه از فضای کاری اصلی پیروی می‌کند. هیچ جلسه تلگرام، اعتبارنامه‌های API، توکن پنل یا توکن ربات به ارائه‌دهندگان فید ارسال نمی‌شود. نام ارائه‌دهندگان، تاریخ‌های اسنپ‌شات و مسیر دانلود در **بخش «منبع فهرست»** نمایش داده می‌شوند.

یک MTProxy فقط ترافیک تلگرام را منتقل می‌کند. عملیات HTTP فضای کاری مانند زمان‌بندی‌ها، اعلان‌ها، کپی‌های خارج از محل و بررسی‌های منبع، هنگام پیکربندی، از یک پروکسی SOCKS5/HTTP جداگانه استفاده می‌کنند و سپس از مسیر SOCKS5/HTTP حساب کاربری. بدون هر یک از این‌ها، Hide IP درخواست را رد می‌کند؛ حالت‌های دیگر Direct را مجاز می‌دانند. درخواست‌های خارجی را می‌توان غیرفعال کرد. یک پروکسی دانلود فید که به صراحت پیکربندی شده باشد، یک اولویت‌بندی جداگانه برای اپراتور باقی می‌ماند. سرویس شاهد مستقل، مسیر خود را حفظ می‌کند.

****پارامترهای استخر خودکار**** در بخش **پارامترها → MTProxy خودکار**، آستانه خطا، زمان خنک‌سازی، چرخش برنامه‌ریزی‌شده، اشتراک‌گذاری پروکسی و تأخیر بازگشتی مجاز را پیکربندی کنید. | کنترل | پیش‌فرض | | --- | --- | | قطع ارتباطات قبل از تعویض | ۳ در ۱۰ دقیقه | | پروکسی‌های مورد آزمایش در هر تلاش اتصال | ۳ | | اولین / حداکثر استراحت پس از خطا | ۱۰ دقیقه / ۶ ساعت | | چرخش برنامه‌ریزی‌شده | غیرفعال؛ در صورت خطا فعال شود | | حساب‌ها به ازای هر پروکسی | ۰: ورودی‌های جداگانه را ترجیح دهید، در صورت نیاز به اشتراک بگذارید. عدد ۱ را برای انتظار برای یک ورودی انحصاری تنظیم کنید. | | تأخیر قبل از بازگشت مجاز به Direct | ۱۰ دقیقه؛ Hide IP همچنان Direct را رد می‌کند | | بازسازی فید / بررسی‌های انتقال | ۶۰ / ۱۰ دقیقه؛ مقادیر فضای کاری اصلی بر استخر مشترک اعمال می‌شوند | پروکسی‌های مختلف، آدرس‌های خروجی متفاوت را تضمین نمی‌کنند. این تنظیمات محدودیت‌های تلگرام را نادیده نمی‌گیرند یا ناشناس بودن را اثبات نمی‌کنند.

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

[کاتالوگ خالی را](https://github.com/phishdestroy/TgWitness/blob/main/deploy/proxies.config.example) به `proxy-config/proxies.json` کپی کنید و انتهای‌های عمومی راه‌اندازی‌شده خود را اضافه کنید:

```
{"format": "tgwitness-proxy-catalog-v1", "proxies": [
  {"id": "project-eu", "label": "Project EU",
   "link": "tg://proxy?server=REPLACE_HOST&port=443&secret=REPLACE_SECRET"}
]}
```

مقادیر نمونه باید جایگزین شوند. تا ۳۲ ورودی متمایز پذیرفته می‌شود. فهرست احرازشده برچسب‌ها/میزبان‌ها/پورت‌ها را بدون رمزهای مشترک بازمی‌گرداند؛ انتخاب یکی، اعتبارنامه‌های آن را در گاوصندوق فضای کاری ذخیره می‌کند. در دسترس بودن تا زمان انجام آزمون صریح انتقال، آزمایش‌نشده باقی می‌ماند. یک کاتالوگ معیوب، پیکربندی دستی را ممکن می‌سازد.

راه‌اندازی بومی: مسیر JSON محلی را روی `TGWITNESS_PROXY_CATALOG` تنظیم کنید. داکر:

```
docker compose -f compose.yaml -f deploy/compose/compose.proxies.yaml up -d --build
```

لایهٔ رویین، فایل‌های قابل خواندن تنها (`proxy-config`) را نصب می‌کند؛ فایل‌ها باید برای UID مخزن 10001 قابل خواندن باشند. آن دایرکتوری از Git، زمینهٔ ساخت Docker و آرشیوهای منبع حذف شده است. این کاتالوگ، حساب‌های جمع‌آوری‌کننده را پیکربندی می‌کند؛ [بات شاهد](https://phishdestroy.github.io/TgWitness/fa/docs/reference/witness/) از مسیر HTTP/SOCKS5 خود استفاده می‌کند، نه MTProxy.

راه برگشت مستقیم توسط حالت IP فوق کنترل می‌شود. قبل از تغییر مسیر، مشاهده را متوقف کنید. ذخیره کردن، کلاینت‌های قدیمی را قطع می‌کند و ورود ناکامل را لغو می‌کند؛ یک کلاینت جدید از مسیر ذخیره شده استفاده می‌کند. پیوند ژورنال/جلسه حساب کاربری باقی می‌ماند. تنظیمات، مسیر قبلی را جایگزین می‌کنند: هنگام ویرایش آن، اطلاعات پروکسی را دوباره وارد کنید.

اطلاعات ورود به سیستم در `network.enc` رمزگذاری می‌شود. این API نام کاربری، رمز عبور یا کلمه عبور مخفی را بازنمی‌گرداند. رکوردهای امضا شده حاوی نوع مسیر و اینکه آیا اطلاعات ورود به سیستم موجود است یا خیر هستند، بدون در نظر گرفتن نقطه پایانی و کلمات مخفی. اپراتور می‌تواند نقطه پایانی را در پنل مشاهده کند. فیلدهای مخفی پس از ذخیره، قفل کردن یا تعویض فضاهای کاری پاک می‌شوند.

**آزمایش اتصال تلگرام**، که پیش از ورود نیز در دسترس است، یک اتصال موقت و غیرمجاز تلگرام را از طریق مسیر باز و بسته می‌کند. این ابزار با هیچ وب‌سایت بررسی آی‌پی تماس نمی‌گیرد. موفقیت در این آزمایش، اتصال حمل‌ونقل را برقرار می‌کند، نه دسترسی به گروه، تحویل کامل پیام یا ناشناس‌بودن را.

پراکسی بر روی اتصالات کلاینت تلگرام، از جمله دانلودهای رسانه‌ای DC تلگرام اعمال می‌شود. ابزارهای مرورگر، pip، SSH و TSA که به صورت دستی فراخوانی می‌شوند، مسیرهای جداگانه‌ای دارند. نام میزبان پراکسی ممکن است به صورت محلی حل شود. `rdns` بر روی نام‌های میزبان مقصد تأثیر می‌گذارد؛ تلگرام اغلب IPهای عددی DC را ارائه می‌دهد.

پروتکل‌های SOCKS5 و HTTP CONNECT به خودی خود اعتبارنامه‌های پروکسی یا تونل ارتباطی بین کلاینت و پروکسی را رمزگذاری نمی‌کنند. MTProto ترافیک تلگرام را به طور جداگانه محافظت می‌کند. از یک کانال امن مناسب برای اتصال به پروکسی در یک شبکه ناامن استفاده کنید. گروه‌های خصوصی، چت‌های ابری هستند؛ MTProto آنها را به چت‌های مخفی رمزگذاری‌شده از سر تا سر تبدیل نمی‌کند.

## رمزنگاری و امضاها

| لایه | پیاده‌سازی شد | مسئولیت اپراتور |
| --- | --- | --- |
| ترافیک تلگرام | تله‌تون MTProto | اعتماد پلتفرم، مسیر و در دسترس بودن |
| پنل وب | توکن حامل، لوپ‌بک پیش‌فرض، محدودیت‌های درخواست | تونل HTTPS یا SSH برای دسترسی از راه دور |
| رازها | فرنت برای اعتبارنامه‌های API، اعتبارنامه‌های جلسه، اعتبارنامه‌های پروکسی و کلید خصوصی امضا | از کلید رمزگشایی و میزبان در حال اجرا محافظت کنید |
| کلید گاوصندوق | کلید محلی، یا کلید اصلی خارجی برای نصب جدید | جداسازی ذخیره‌سازی محافظت‌شده و پشتیبان‌گیری کلید |
| پیام‌ها و پیوست‌ها | ذخیره‌سازی متن سادهٔ برنامه | دیسک/حجم رمزگذاری‌شده |
| ZIP/JSONL/CSV/HTML | بررسی‌های یکپارچگی، عدم رمزنگاری محتوا | حفاظت از نسخه‌های صادرشده و انتقال‌ها |
| منشأ و زمان | دفترچه ثبت امضا شده، رسید فرایند، ابزارهای RFC 3161 | کلید مورد اعتماد، نقاط بازرسی مستقل/TSA و رویهٔ نگهداری |

**محافظت از ذخیره‌سازی** در حساب، این وضعیت‌ها را نشان می‌دهد. توکن پنل یک رمز دسترسی است، نه رمز عبور رمزگذاری. این توکن دسترسی ادمین را فراهم می‌کند؛ [توکن‌های صادرشده](https://phishdestroy.github.io/TgWitness/fa/docs/reference/access/) می‌توانند به حساب‌ها و چت‌ها محدود شوند. فضاهای کاری، فرآیند میزبان را به اشتراک می‌گذارند و مستأجران ایزوله نیستند.

یک دمو (نمایش) مصنوعی که به صراحت آغاز شده و ایزوله است، می‌تواند به طور خودکار از طریق یک اتصال لوپ‌بک مستقیم باز شود. این قابلیت از یک قابلیت مجزای چرخه عمر فرآیند استفاده می‌کند؛ این قابلیت نه توکن پنل پیکربندی‌شده را فاش می‌کند و نه دسترسی به فضاهای کاری واقعی را اعطا می‌کند. درخواست‌های از راه دور، پروکسی‌شده یا فرا-منشأ (cross-origin) نمی‌توانند این قابلیت ورود خودکار را دریافت/استفاده کنند. این سهولت، مرز احراز هویت برای داده‌های حساب واقعی را از بین نمی‌برد.

BitLocker، LUKS، FileVault یا یک حجم رمزگذاری‌شده مدیریت‌شده می‌توانند از ذخیره‌سازی تحت مدل‌های تهدید مربوطه محافظت کنند. یک مدیر یک ماشین در حال اجرا که قفل نشده است، همچنان می‌تواند داده‌ها را بخواند. در برنامه‌ریزی ذخیره‌سازی، SQLite WAL/SHM، رسانه‌ها، خروجی‌های موقت، اسواپ، پشتیبان‌ها و دانلودهای مرورگر را نیز در نظر بگیرید. یک حجم داکر صرفاً به این دلیل که یک حجم است، رمزگذاری نمی‌شود. TgWitness، SQLCipher یا رمزگذاری اشیاء را پیاده‌سازی نمی‌کند.

## کلید اصلی خارجی

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

```
python -m tgwitness.security create-master-key /private/keys/tgwitness-master.key
export TGWITNESS_VAULT_KEY_FILE=/private/keys/tgwitness-master.key
python -m tgwitness --data-dir /private/observations/new-case
```

PowerShell، با استفاده از محیط پروژه نصب‌شده:

```
python -m tgwitness.security create-master-key E:\PrivateKeys\tgwitness-master.key
$env:TGWITNESS_VAULT_KEY_FILE = 'E:\PrivateKeys\tgwitness-master.key'
python -m tgwitness --data-dir E:\PrivateData\new-case
```

در داکر، فایل را به صورت فقط-خواندنی در خارج از `/data`، برای مثال در `/run/secrets/tgwitness-master.key`، مونت کنید و متغیر محیط را روی آن مسیر تنظیم کنید. UID سرویس باید قادر به خواندن آن باشد. مسیر را، نه بایت‌های کلید، از طریق فایل‌های محیط/پیکربندی ارسال کنید.

هر فضای کاری یک سالت عمومی تصادفی و کلید فرنت (Fernet) مخصوص به خود را که از طریق HKDF-SHA256 استخراج شده است، دریافت می‌کند. `vault.external.json`، متادیتای استخراج را ذخیره می‌کند، نه خود کلید اصلی را. در صورت گم شدن یا اشتباه بودن کلید، نرم‌افزار بدون جایگزینی بی‌سروصدا، از راه‌اندازی بازمی‌ماند. برای بازیابی، هم متادیتای سالت و هم کلید اصلی را حفظ کنید.

تمام فضاهای کاری از یک کلید اصلی واحد مشتق می‌شوند؛ به خطر افتادن آن بر کل نصب تأثیر می‌گذارد. فرآیند در حال اجرا می‌تواند اسرار را رمزگشایی کند. این یک HSM یا KDF رمز عبور نیست. رمزهای عبور دلخواه انسانی به جای یک کلید تصادفی پذیرفته نمی‌شوند.

کلید موجود را برای نصب‌های فعلی تا زمانی که یک مهاجرت عمدی پیاده‌سازی و تأیید شود، حفظ کنید. حذف `vault.key` یا جایگزینی یک کلید اصلی می‌تواند دسترسی به جلسات/کلیدهای امضا را از بین ببرد. پشتیبان‌های رمزگذاری‌شده و کلیدها را جداگانه نگه دارید و بازسازی را در یک محیط ایزوله آزمایش کنید.

## منابع و دامنهٔ اعتبارسنجی

بازبینی‌شده در ۲۶ اکتبر ۲۰۲۶:

- https://core.telegram.org/api/auth
- https://core.telegram.org/api/obtaining_api_id
- https://docs.telethon.dev/en/stable/basic/signing-in.html
- https://docs.telethon.dev/en/stable/concepts/sessions.html
- https://core.telegram.org/mtproto/mtproto-transports
- https://github.com/telegramdesktop/tdesktop/blob/dev/Telegram/SourceFiles/storage/storage_account.cpp
- تله‌تون ۱.۴۵.۰: SQLiteSession، StringSession، `Connection._proxy_connect`، `TcpMTProxy.normalize_secret` و روش‌های دانلود.

تست‌های محلی شامل تست‌های پیکربندی لوپ‌بک SOCKS5/HTTP CONNECT، جلسات مصنوعی SQLite، ایزوله‌سازی مسیر، استثنای مخفی و رد درخواست به دلیل کلید مفقود هستند. این تست‌ها تعامل‌پذیری واقعی تلگرام/پراکسی یا رفتار زنده MTProxy را تضمین نمی‌کنند. به [فایل‌های VERIFICATION.md](https://phishdestroy.github.io/TgWitness/fa/docs/reference/verification/) و [LIVE_ACCEPTANCE.md](https://github.com/phishdestroy/TgWitness/blob/main/docs/internal/LIVE_ACCEPTANCE.md) مراجعه کنید.
