# امنیت و مدیریت داده‌ها

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

مدل تهدید، مدل دسترسی، اسرار در حالت استراحت، در معرض دید شبکه، وارد کردن جلسات و نحوه گزارش آسیب‌پذیری.

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

| حوزه | به طور خلاصه |
| --- | --- |
| دسترسی | کلید ادمین به‌علاوه دسترسی محدودشده به حساب‌ها/چت‌ها، هفت مجوز و جلسات قابل‌ابطال؛ به‌صورت پیش‌فرض localhost |
| رازهای در آرامش | تنظیمات جلسه، جفت API، کلید امضا و پروکسی با Fernet رمزگذاری می‌شوند. |
| پیام‌ها و رسانه‌ها | ذخیره بدون رمزگذاری: از رمزگذاری دیسک و مجوزهای سخت‌گیرانه استفاده کنید |
| یکپارچگی | زنجیره هش SHA-256 و امضای Ed25519 بر روی هر رکورد |
| پوشش داده نشده | مدیر ماشین، توکن پنل نشت‌کرده، جامعیت ضبط |

برای گزارش‌های آسیب‌پذیری، به [سیاست امنیتی](https://github.com/phishdestroy/TgWitness/blob/main/.github/SECURITY.md) مراجعه کنید.

## مدل دسترسی

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

پنل به‌طور پیش‌فرض روی localhost گوش می‌دهد. ورود به سیستم از طریق مرورگر، یک توکن دسترسی را با یک اعتبارنامه جلسه (session credential) مبادله می‌کند؛ مرورگر آن را به‌عنوان یک توکن حمل‌کننده (bearer token) ارسال می‌کند. این توکن در sessionStorage نگهداری می‌شود، نه در یک کوکی احراز هویت. قفل کردن/خروج (Lock/sign-out) جلسه مرورگر را پاک می‌کند. بستن مرورگر یا پایان دادن به یک جلسه، جمع‌آوری داده‌ها را متوقف نمی‌کند.

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

احراز هویت ناموفق بر اساس آدرس کلاینت محدود شده است. محدودیت‌های IP بر اساس آدرسی اعمال می‌شوند که توسط برنامه دیده می‌شود؛ پیش از اتکا به آن، عملکرد پروکسی معکوس را بررسی کنید. اعتبارنامه‌های Witness همچنان جداگانه و فقط-خواندنی برای نقاط کنترل/وضعیت سلامت باقی می‌مانند.

### دسترسی دمو

`/api/demo-access` یک بوت‌استرپ عمدتا غیرمعتبر برای یک دمو مصنوعی، ایزوله و صریحاً راه‌اندازی‌شده است. این قابلیت یک فرآیند جداگانه با چرخه عمر محدود صادر می‌کند، هرگز توکن پنل واقعی یا بازنویسی TGWITNESS_TOKEN را صادر نمی‌کند. صدور و استفاده از آن نیازمند یک همتا و میزبان لوپ‌بک، بدون سربرگ‌های فوروارد شده و بدون درخواست فرا-منشأ (cross-origin) است. فضاهای کاری اضافی یا یک جلسه مجاز، این مسیر را غیرفعال می‌کنند. فضاهای کاری زنده هرگز این قابلیت را صادر نمی‌کنند. این دمو نمی‌تواند حساب‌ها را به هم متصل کند یا تنظیمات جمع‌آوری را تغییر دهد.

## محتوای پنل و خروجی‌ها

این پنل از هیچ فونت خارجی، ابزار تحلیل، منابع CDN یا رسانه‌های خارجی جاسازی‌شده استفاده نمی‌کند. متن استخراج‌شده از تلگرام به صورت متن درج می‌شود، نه HTML. فایل‌های پیوست دانلودشده به صورت پیوست‌های باینری ارائه می‌شوند. خروجی‌های JSONL رشته‌های اصلی را حفظ می‌کنند؛ HTML آن‌ها را فرار می‌کند؛ سلول‌های CSV که می‌توانند به فرمول تبدیل شوند، با یک آپاستروف پیش‌وند می‌شوند.

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

## رازهای در آرامش

اطلاعات احراز هویت API تلگرام، StringSession و کلید خصوصی Ed25519 با استفاده از Fernet رمزگذاری می‌شوند. به طور پیش‌فرض، کلید آن در همان پوشه داده‌های محافظت‌شده ذخیره می‌شود. این امر خطر افشای تصادفی متن ساده را کاهش می‌دهد؛ این محافظتی در برابر یک مهاجم که می‌تواند کل دایرکتوری را بخواند، نیست. محتوای پیام و رسانه‌ها توسط TgWitness **رمزگذاری** نمی‌شوند. از رمزگذاری دیسک و مجوزهای محدودکننده سیستم‌عامل استفاده کنید. فایل‌های کلید خصوصی یونیکس با حالت 0600 ایجاد می‌شوند؛ دایرکتوری‌های داده تازه‌ساخت از حالت 0700 استفاده می‌کنند. مجوزهای موجود دایرکتوری تغییر نمی‌کنند. ویندوز ACLهای دایرکتوری را به ارث می‌برد: آن‌ها را به حساب سرویس و مدیران مجاز محدود کنید.

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

برای یک دایرکتوری داده جدید، TGWITNESS_VAULT_KEY_FILE می‌تواند یک کلید اصلی تصادفی خارجی را فراهم کند. HKDF-SHA256 و یک سالت تصادفی جداگانه، یک کلید Fernet متفاوت برای هر فضای کاری تولید می‌کنند. فایل vault.external.json باید برای بازیابی نگهداری شود. در صورت عدم وجود یا نادرست بودن کلیدهای اصلی، عملیات با خطا متوقف می‌شود. گاوصندوق‌های محلی موجود به صورت خودکار و بی‌سروصدا مهاجرت نمی‌شوند. فرآیند در حال اجرا می‌تواند به کلید دسترسی داشته باشد؛ این ایزولاسیون HSM نیست. پنل حالت انتخاب‌شده را گزارش می‌دهد و صراحتاً بیان می‌کند که ذخیره‌سازی پیام/رسانه توسط برنامه رمزگذاری نمی‌شود. برای مشاهده مدل کامل تهدید، به [بخش‌های اتصال، پروکسی‌ها و حفاظت از داده‌ها](https://phishdestroy.github.io/TgWitness/fa/docs/reference/connection/) مراجعه کنید.

## پروکسی‌ها و مسیرهای شبکه

پیکربندی پروکسی در گاوصندوق رمزگذاری می‌شود. گذرواژه‌ها و اسرار MTProxy توسط API بازنمی‌گردند یا در سوابق شواهد نوشته نمی‌شوند. هر فضای کاری مسیر تلگرام و [حالت آی‌پی](https://phishdestroy.github.io/TgWitness/fa/docs/reference/connection/#ip-modes) خود را انتخاب می‌کند.

حالت مخفی‌سازی آی‌پی، پشتیبان‌گیری مستقیم تلگرام را رد می‌کند و برای درخواست‌های HTTP خارجی به یک پروکسی نیاز دارد. حالت پشتیبان‌گیری که صراحتاً انتخاب شده است، پس از تأخیر خود دسترسی مستقیم به تلگرام را مجاز می‌سازد؛ حالت تونل/VPN مسیرهای مستقیم را مجاز می‌سازد. انتخاب حالت تونل، وی‌پی‌ان را نصب یا تأیید اعتبار نمی‌کند. این تنظیمات بر تمام ترافیک دستگاه، مرورگرها، مدیران بسته یا حل‌کننده‌ی DNS میزبان پروکسی محلی کنترل ندارند.

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

## ورود و واردسازی جلسات

فایل‌های تبدیل‌شده .tgwitness-session حاوی یک رمز مخفی مجوز متن ساده هستند تا زمانی که در گاوصندوق بارگذاری و ذخیره شوند. CLI آفلاین، اسکیماهای بازبینی‌شده Telethon را می‌پذیرد. پانل واردات علاوه بر این، ورودی‌های Pyrogram SQLite، TData ZIP مدرن تک‌حساب، و JSON مستند را می‌پذیرد. این قابلیت احراز هویت شده، به چهار فایل / ۸ مگابایت محدود است، و بارگذاری‌ها را بدون استخراج آرشیو یا ذخیره فایل‌های اصلی، در حافظه پردازش می‌کند. اطلاعات احراز هویت نرمال‌شده فقط به مرورگر احراز هویت‌شده درخواست‌کننده بازگردانده می‌شوند؛ آنها پس از موفقیت در احراز هویت تلگرام در گاوصندوق رمزگذاری‌شده ذخیره می‌شوند. از فایل‌های اصلی و تبدیل‌شده محافظت کنید و از کپی‌برداری همزمان یک مجوز توسط کلاینت‌ها جلوگیری کنید.

پردازش TData، چک‌سام‌های کانتینر، هش‌های رمزگشایی محلی و طول ساختارها را تأیید می‌کند. رمز عبور محلی دسکتاپ ارائه‌شده به‌طور موقت استفاده می‌شود و ذخیره نمی‌گردد. این پارسر محدود تضمین نمی‌کند که هر نسخه دسکتاپ سازگار است. تصاویر QR به‌صورت محلی تولید می‌شوند، توکن‌های ورود تلگرام با اعتبار محدود را در خود دارند و هرگز به سرویس رندرینگ خارجی ارسال نمی‌شوند. قفل کردن، تغییر فضای کاری، ورود جدید و تغییرات مسیر، تلاش‌های QR در حال انتظار را لغو می‌کنند. بارگذاری مجدد/بستن یک تب ممکن است یک تلاش را تا زمان انقضای آن در حالت انتظار باقی بگذارد. ورود موفق از طریق QR همچنان الزام به پیوند حساب را اعمال می‌کند. بدنه‌های معمولی API همچنان به ۱۶ کیلوبایت محدود هستند؛ مسیر وارداتی احراز شده تا ۱۲ مگابایت JSON رمزگذاری شده را می‌پذیرد و محدودیت فایل رمزگشایی شده کوچکتر را به طور جداگانه اعمال می‌کند.

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

## لاگ‌ها و انتقال

پاسخ اعتبارسنجی پیش‌فرض API جایگزین می‌شود تا مقادیر اعتبارنامه‌ها را بازتاب ندهد. ثبت دسترسی برنامه غیرفعال است. از پیکربندی پروکسی معکوس برای ثبت سربرگ‌های احراز هویت یا بدنه درخواست‌ها خودداری کنید. HTTP توکن‌ها و اطلاعات محرمانه ورود را به صورت متن ساده حمل می‌کند: هرگاه از localhost خارج می‌شوید از HTTPS یا تونل SSH استفاده کنید.

## محدودیت‌های یکپارچگی

زنجیره هش، محرک‌های پایگاه داده و امضاها، تغییرات خاصی را تشخیص می‌دهند؛ آنها مانع از بازنویسی و امضای مجدد دفترچه توسط یک مدیر محلی نمی‌شوند. نقاط کنترل امضا شده و اثر انگشت کلید عمومی را روی یک سیستم جداگانه نگهداری کنید. حالت شواهد و نسخهٔ خارج از محل (که هر دو به‌صورت پیش‌فرض غیرفعال هستند) هش‌های نقاط کنترل را به سرویس‌های زمان‌نگاری و نسخه‌های رمزگذاری‌شده را به ذخیره‌سازی سازگار با S3 ارسال می‌کنند؛ به [فرمت شواهد](https://phishdestroy.github.io/TgWitness/fa/docs/reference/evidence/) مراجعه کنید. گزارش‌های شفافیت، امضای پشتیبانی‌شده توسط HSM و گواهی رسمی زنجیرهٔ مالکیت پیاده‌سازی نشده‌اند.

## اگر به وجود مشکل مشکوک هستید

دایرکتوری داده‌های اصلی را حفظ کرده و برای تحلیل از یک نسخهٔ مجزا استفاده کنید. داده‌ها یا اعتبارنامه‌های خصوصی تلگرام را در یک نسخهٔ عمومی درج نکنید. هیچ گواهی امنیتی مستقلی ادعا نشده است.
