اشتراک X IN

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

Key takeaways

  • محدودیت رمزنگاری شبکه: رمزنگاری مبدا تا مقصد فقط از داده در حال انتقال حفاظت می‌کند؛ کارشناسان فورنزیک اندروید پایگاه داده SQLite و حافظه موقت (RAM) را تحلیل می‌کنند.
  • نابودی کلیدهای یک‌بارمصرف حافظه: تکنیک‌های پاکسازی اجباری حافظه (Zeroization)، کلیدهای متقارن جلسات را پس از استفاده فوراً از RAM حذف می‌کنند تا استخراج رم (RAM Dump) بی‌نتیجه شود.
  • ذخیره‌سازی رمزنگاری‌شده محلی: ترکیب SQLCipher با سیستم کلیدسازی سخت‌افزاری اندروید (TEE/StrongBox) مانع خواندن فایل‌های دیتابیس بدون کلید معتبر می‌شود.
  • جداسازی چت خصوصی از کانال عمومی: گفتگوهای دوتایی و گروهی با معماری هیبریدی پست-کوانتومی محافظت می‌شوند، اما کانال‌های عمومی به دلیل ماهیت پخش همگانی، به‌طور عممدی غیررمزشده و عمومی هستند.

چرا رمزنگاری مسیر انتقال برای حفاظت از پیام‌ها در برابر فورنزیک اندروید کافی نیست؟

رمزنگاری مبدا تا مقصد از پیام‌ها در برابر شنود ISP، روترها و مهاجمان میان‌راهی (MitM) محافظت می‌کند، اما دسترسی فیزیکی به دستگاه، سطح حمله را به کلی تغییر می‌دهد. تحلیل‌های فورنزیک امنیتی نشان می‌دهند که پس از ضبط فیزیکی گوشی، محققان با ابزارهایی مانند Cellebrite یا روش‌های استخراج داده، مستقیم به سراغ نقطه پایانی (Endpoint) می‌روند.

در این حالت، مهاجم نیازی به شکستن الگوریتم‌های رمزنگاری شبکه ندارد. او می‌کوشد فایل‌های ذخیره‌شده روی تراشه flash یا محتوای پردازش‌شده در حافظه موقت (RAM) را بخواند. اگر پیام‌رسانی متن چت‌ها را به‌صورت ساده (Plaintext) در پایگاه داده محلی ذخیره کند یا کلیدهای رمزگشایی را در حافظه موقت رها سازد، رمزنگاری شبکه عملاً بی‌اثر می‌شود. درباره نحوه عملکرد واقعی رمزنگاری مبدا تا مقصد بیشتر بخوانید.

ابزارهای استخراج پایگاه داده پیام‌رسان چگونه ساختار SQLite را تحلیل می‌کنند؟

بیشتر برنامه‌های اندروید برای مدیریت داده‌ها از پایگاه داده SQLite استفاده می‌کنند که در مسیر /data/data/com.example.app/databases/ قرار دارد. ابزارهای فورنزیک دیجیتال برای استخراج اطلاعات از دو روش اصلی استفاده می‌کنند:

  1. استخراج منطقی (Logical Extraction): استفاده از پروتکل ADB یا پشتیبان‌گیری اندروید برای دریافت نسخه کپی از فایل‌های برنامه.
  2. استخراج فیزیکی (Physical Extraction): خواندن مستقیم تراشه حافظه NAND (روش Chip-off یا JTAG) و ساخت یک تصویر بیت‌به‌بیت (Bit-stream Image) از کل حافظه.

طبق گزارش‌های آموزشی مرجع ForensicSpot، فایل‌های SQLite شامل جدول‌ها، شاخص‌ها و فایل‌های ثبتی مانند Write-Ahead Logging (WAL) هستند. زمانی که کاربری پیامی را پاک می‌کند، SQLite بلافاصله بایت‌های آن را از بین نمی‌برد، بلکه آن بخش از حافظه را به‌عنوان فضای تخصیص‌نیافته (Unallocated Space) علامت‌گذاری می‌کند. ابزارهای استخراج پایگاه داده پیام‌رسان با تحلیل فایل WAL و فضای تخصیص‌نیافته، پیام‌های حذف‌شده را بازسازی می‌کنند.

+-------------------------------------------------------------------+
|                     مراحل استخراج فورنزیک اندروید                 |
+-------------------------------------------------------------------+
|  ۱. دسترسی فیزیکی / JTAG  --->  ۲. تصویربرداری بیت‌به‌بیت NAND    |
|                                            |                      |
|                                            v                      |
|  ۴. بازیابی چت‌های حذف‌شده <---  ۳. تحلیل فایل‌های WAL و SQLite    |
+-------------------------------------------------------------------+

پیام‌رسان‌های آسیب‌پذیر بدون رمزنگاری محلی، تمام تاریخچه گفتگوها، شناسه مخاطبان و برچسب‌های زمانی (Timestamps) را در این فایل‌ها لو می‌دهند.

ذخیره‌سازی محلی چت چگونه با کلیدهای سخت‌افزاری و SQLCipher محافظت می‌شود؟

برای جلوگیری از استخراج مستقیم فایل‌های SQLite، ذخیره‌سازی محلی چت باید به‌صورت کامل رمزنگاری شود. پیام‌رسان‌های پیشرفته از کتابخانه SQLCipher همراه با الگوریتم AES-256 در حالت GCM استفاده می‌کنند.

در این معماری، هر بلوک از پایگاه داده قبل از نوشته شدن روی حافظه داخلی گوشی رمزنگاری می‌شود. کلید رمزنگاری پایگاه داده محلی هرگز به‌صورت متنی در فایل‌ها ذخیره نمی‌شود. در عوض، این کلید با استفاده از Android Keystore System و ماژول‌های امنیتی سخت‌افزاری مانند محیط اجرای امن (TEE) یا StrongBox Keymaster تولید و نگهداری می‌شود.

+-------------------------------------------------------------------+
|                   معماری ذخیره‌سازی امن محلی چت                   |
+-------------------------------------------------------------------+
|  [ داده‌های چت ] ---> [ SQLCipher (AES-256-GCM) ]                 |
|                                  ^                                |
|                                  | (کلید رمزنگاری دیتابیس)        |
|                       [ Android Keystore / TEE ]                  |
|                                  ^                                |
|                                  | (احراز هویت کاربر)            |
|                     [ گذرواژه کاربر / پروتکل SRP ]                |
+-------------------------------------------------------------------+

لیوارا برای ورود کاربران و تأیید هویت از پروتکل Secure Remote Password (SRP) استفاده می‌کند. این پروتکل اثبات دانش صفر (Zero-Knowledge Proof) را ارائه می‌دهد؛ یعنی گذرواژه کاربر هرگز روی شبکه منتقل نمی‌شود و در حافظه محلی نیز ذخیره نمی‌گردد. چک‌لیست کامل ارزیابی امنیت پیام‌رسان‌ها خصوصیات این استانداردها را شرح می‌دهد.

کلیدهای یک‌بارمصرف حافظه و امنیت حافظه موقت چگونه جلوی تحلیل رم (RAM Dump) را می‌گیرند؟

اگر پایگاه داده روی دیسک رمزشده باشد، مهاجمان به سراغ حافظه موقت (RAM) می‌روند. زمانی که پیام‌رسان در حال اجراست، کلیدهای جلسات کاری، متون پیام‌ها و کلیدهای متقارن درون RAM قرار می‌گیرند. اگر گوشی به صورت زنده استخراج شود یا تحت حملات Cold Boot قرار گیرد، مهاجم می‌تواند یک ایمیج از RAM گرفته و کلیدها را استخراج کند.

برای مقابله با این تهدید، امنیت حافظه موقت بر دو اصل استوار است:

۱. پاکسازی اجباری حافظه (Zeroization)

پیام‌رسان باید به محض اتمام عملیات رمزنگاری یا رمزگشایی، بایت‌های حاوی کلیدها و متن‌های ساده را در RAM بازنویسی (Overwrite) کند. توابعی مانند explicit_bzero یا memset_s مانع از این می‌شوند که کامپایلر دستور پاکسازی حافظه را به عنوان کد بی‌استفاده (Dead Code) حذف کند.

۲. کلیدهای یک‌بارمصرف حافظه و مکانیزم Ratchet

استفاده از کلیدهای موقت (Ephemeral Keys) تضمین می‌کند که افشای یک کلید در حافظه موقت، کل تاریخچه چت را لو ندهد. لیوارا در پروتکل اختصاصی LVR1 برای گفتگوهای دوتایی، از یک ساختار هیبریدی پست-کوانتومی استفاده می‌کند:

  • تبادل کلید کلاسیک: ECDH روی منحنی P-256
  • تبادل کلید پست-کوانتومی: ML-KEM-768 بر اساس استاندارد NIST FIPS 203
  • تابع مشتق‌سازی کلید: HKDF-SHA-256
  • رمزنگاری احرازهویت‌شده: AES-256-GCM با نانس ۱۲ بایتی و تگ ۱۶ بایتی

این ترکیب دوگانه همراه با زنجیره چرخش کلید (Double Ratchet)، ویژگی Forward Secrecy و Post-Compromise Security را فراهم می‌کند. حتی اگر مهاجم موفق شود کلیدهای یک‌بارمصرف حافظه مربوط به یک پیام را از RAM استخراج کند، نمی‌تواند پیام‌های قبلی یا بعدی را رمزگشایی کند. جزئیات بیشتر را در مقاله رمزنگاری پست-کوانتومی در پیام‌رسان‌ها مطالعه کنید.

تفاوت چت‌های خصوصی با کانال‌های عمومی در تحلیل‌های فورنزیک چیست؟

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

نوع ارتباط پروتکل رمزنگاری وضعیت E2EE رفتار در فورنزیک حافظه محلی
گفتگوی دوتایی (DM) LVR1 (هیبردی P-256 + ML-KEM-768) بله (کاملاً رمزشده) دیتابیس SQLCipher رمزشده؛ کلیدها پس از استفاده از RAM پاک می‌شوند.
گروه خصوصی (Private Group) LGS1 (فرستنده-کلید در پاکت LVR1) بله (کاملاً رمزشده) تمام متن‌ها، فایل‌ها و صداها رمزنگاری‌شده ذخیره می‌شوند.
تماس صوتی و تصویری WebRTC DTLS-SRTP (سیگنالینگ LCS1) بله (کاملاً رمزشده) هیچ داده صوتی یا تصویری روی حافظه محلی ذخیره نمی‌شود.
کانال‌های عمومی (Channels) جریان پخش عمومی (Public Broadcast) خیر (عمومی به‌طراح) داده‌ها بدون E2EE ذخیره می‌شوند تا امکان گزارش‌دهی و حذف محتوای مخرب وجود داشته باشد.

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

در مقابل، چت‌های خصوصی و گروه‌ها کاملاً پنهان و پلمپ‌شده هستند. داده‌های متا (Metadata) مانند شناسه‌های مسیردهی و زمان تحویل فقط برای همگام‌سازی دستگاه‌ها نگهداری می‌شوند. برای درک بهتر این مرزها، سند مدل تهدیدات امنیتی و نحوه مدیریت متاداده پیام‌رسان‌ها را بررسی کنید.

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

چگونه می‌توانید امنیت کد و ادعاهای فورنزیک یک پیام‌رسان را شخصاً راستی‌آزمایی کنید؟

ادعای امنیت بدون قابلیت راستی‌آزمایی مستقل ارزشی ندارد. برای اطمینان از اینکه فایل APK نصب‌شده روی گوشی اندروید شما دقیقاً همان کدهای بررسی‌شده و امن است، می‌توانید مراحل زیر را دنبال کنید:

  1. بررسی هش فایل APK: چک‌سام SHA-256 فایل نصب برنامه را دریافت کنید.
  2. تأیید آفلاین در Proof Lab: به آدرس /proof مراجعه کرده و هش فایل را بدون نیاز به ارسال فایل به سرور، به‌صورت کاملاً محلی در مرورگر خود تطبیق دهید.
  3. بررسی کدهای امنیتی (Safety Numbers v3): جهت اطمینان از عدم وجود حمله میان‌راهی، اثرانگشت کلیدها را با مخاطب خود مقایسه کنید. راهنمای تأیید چت با کدهای امنیتی را ببینید.
  4. بازآوری امن کلیدها (v7): هویت رمزنگاری‌شده خود را با یک کلید ۲۵۶ بیتی مشتق‌شده از عبارت بازیابی پلمپ کنید. آموزش پشتیبان‌گیری امن از چت‌ها نحوه انجام این کار را توضیح می‌دهد.

شما همچنین می‌توانید جزئیات مربوط به مقایسه لیوارا با سایر پیام‌رسان‌ها و محدوده مرزهای امنیتی انتشاریافته را شفاف بخوانید.

{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "TechArticle",
      "headline": "تحلیل فورنزیک اندروید: پیام‌رسان‌های امن چگونه از افشای اطلاعات در حافظه محلی جلوگیری می‌کنند؟",
      "description": "تحلیل بررسی حافظه محلی اندروید و پایگاه‌های داده رمزشده نشان می‌دهد کلیدهای یک‌بارمصرف چگونه مانع استخراج فورنزیک چت‌های خصوصی می‌شوند.",
      "author": {
        "@type": "Organization",
        "name": "Livara Security Team"
      },
      "publisher": {
        "@type": "Organization",
        "name": "Livara",
        "url": "https://livara.io"
      }
    },
    {
      "@type": "FAQPage",
      "mainEntity": [
        {
          "@type": "Question",
          "name": "آیا استخراج فیزیکی گوشی می‌تواند چت‌های رمزشده با SQLCipher را باز کند؟",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "خیر، اگر پایگاه داده SQLite با الگوریتم AES-256 و کلید سخت‌افزاری TEE/StrongBox رمزنگاری شده باشد، استخراج فیزیکی تراشه NAND فقط داده‌های نامفهوم و رمزشده ارائه می‌دهد که بدون گذرواژه یا کلید سخت‌افزاری قابل خواندن نیستند."
          }
        },
        {
          "@type": "Question",
          "name": "کلیدهای یک‌بارمصرف حافظه چگونه از حمله Cold Boot جلوگیری می‌کنند؟",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "با اجرای توابع Zeroization فوراً پس از عملیات رمزنگاری، کلیدهای جلسات از حافظه RAM پاک می‌شوند. در نتیجه، در صورت تصویربرداری از RAM، کلیدهای فعال چت‌های گذشته در حافظه وجود ندارند."
          }
        },
        {
          "@type": "Question",
          "name": "چرا پیام‌های کانال‌های عمومی در لیوارا رمزنگاری مبدا تا مقصد ندارند؟",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "کانال‌ها ابزار انتشار عمومی برای مخاطبان نامحدود هستند. عدم استفاده از E2EE در کانال‌ها به لیوارا اجازه می‌دهد محتوای سوءاستفاده‌کننده و مجرمانه را طبق گزارش کاربران شناسایی و مسدود کند."
          }
        }
      ]
    }
  ]
}

Frequently asked questions

آیا استخراج فیزیکی گوشی می‌تواند چت‌های رمزشده با SQLCipher را باز کند؟

خیر. اگر پایگاه داده محلی با کتابخانه SQLCipher و الگوریتم AES-256-GCM رمزنگاری شده باشد و کلید آن در ماژول سخت‌افزاری TEE نگهداری شود، استخراج فیزیکی تراشه NAND فقط فایل‌های نامفهوم ارائه می‌دهد. بدون رمز عبور کاربر و کلید اختصاصی دستگاه، رمزگشایی پایگاه داده غیرممکن است.

کلیدهای یک‌بارمصرف حافظه چگونه از حمله Cold Boot جلوگیری می‌کنند؟

با استفاده از توابع پاکسازی اجباری مانند explicit_bzero متون ساده و کلیدهای متقارن بلافاصله پس از پردازش از RAM حذف می‌شوند. مکانیزم Double Ratchet نیز کلیدهای قبلی را نابود می‌کند، بنابراین در ایمیج‌گیری از RAM، کلیدهای معتبری برای رمزگشایی چت‌های گذشته یافت نمی‌شود.

چرا پیام‌های کانال‌های عمومی در لیوارا رمزنگاری مبدا تا مقصد ندارند؟

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

آیا قطع شدن اینترنت تأثیری بر امنیت ذخیره‌سازی محلی چت دارد؟

خیر. الگوریتم‌های رمزنگاری محلی مانند SQLCipher و پروتکل‌های رمزنگاری پست-کوانتومی LVR1 کاملاً وابسته به محاسبات ریاضی محلی دستگاه هستند. لیوارا در شرایط اختلال شدید یا قطعی اینترنت در ایران، با همان سطح رمزنگاری استاندارد جهانی بدون تنزل در امنیت به کار خود ادامه می‌دهد.


همین حالا با مراجعه به Proof Lab لیوارا، فایل نصب برنامه‌تان را راستی‌آزمایی کنید و امنیت واقعی را تجربه کنید.

Open Livara Chat
پایان / تحلیل فورنزیک اندروید: پیام‌رسان‌های امن چگونه از افشای اطلاعات در حافظه محلی جلوگیری می‌کنند؟ساختهٔ لیوار ↗