اشتراک X IN
بررسی آفلاین امنیت را اثبات مطلق نمی‌کند؛ نشان می‌دهد کدام ادعا را می‌توان روی artefact مشخص، بدون اتکا به پاسخ زندهٔ فروشنده، تکرار کرد.

بررسی آفلاین رمزنگاری پیام‌رسان یعنی test vectorها و checksum نسخه را پس از قطع اینترنت روی دستگاه خود آزمایش کنید و نتیجه‌ای مستقل از پاسخ زندهٔ فروشنده بگیرید. این آزمون ثابت نمی‌کند اپ هیچ آسیب‌پذیری‌ای ندارد؛ فقط نشان می‌دهد شواهد منتشرشده قابل اجرا هستند و فایل بررسی‌شده با checksum اعلام‌شده تطابق دارد.

Key takeaways

  • تأیید محلی امنیت اپ به شما اجازه می‌دهد checksum و test vectorها را بدون اتصال به سرور فروشنده بررسی کنید.
  • تست وکتور قابل بررسی، ورودی و خروجی مورد انتظار یک عملیات رمزنگاری را مشخص می‌کند تا پیاده‌سازی به‌صورت ماشینی آزموده شود.
  • سند فنی رفتار مورد انتظار را شرح می‌دهد؛ ممیزی کد یا طراحی را در دامنه‌ای مشخص ارزیابی می‌کند؛ ساخت بازتولیدپذیر منشأ artefact را می‌سنجد؛ و تأیید محلی یک artefact مشخص را روی دستگاه شما آزمایش می‌کند.
  • Proof Lab لیوارا بررسی آفلاین test vectorها و SHA-256 فایل APK را ممکن می‌کند، اما نبود باگ در کل برنامه یا امن‌بودن دستگاه را تضمین نمی‌کند.
  • مقایسهٔ منصفانهٔ Signal، WhatsApp، Session، Element و لیوارا باید بر شواهد قابل تکرار تکیه کند، نه صرفاً نام الگوریتم یا عبارت «رمزنگاری سرتاسری».

بررسی آفلاین رمزنگاری پیام‌رسان دقیقاً چه چیزی را ثابت می‌کند؟

بررسی آفلاین نشان می‌دهد یک آزمون مشخص، با ورودی مشخص، روی artefact مشخص نتیجهٔ مورد انتظار را تولید می‌کند. دامنهٔ آن محدود اما ارزشمند است: وابستگی آزمون به پاسخ زندهٔ وب‌سایت یا API فروشنده را حذف می‌کند، نه همهٔ شکل‌های اعتماد را.

«تست وکتور» مجموعه‌ای از ورودی‌ها و خروجی‌های مورد انتظار است که رفتار یک الگوریتم یا پروتکل را به‌شکل تکرارپذیر می‌سنجد. برنامهٔ CAVP مؤسسهٔ ملی استاندارد و فناوری آمریکا، NIST، پیاده‌سازی الگوریتم‌های رمزنگاری را در برابر الزامات و بردارهای آزمون ارزیابی می‌کند؛ نتیجهٔ آن ممیزی کل محصول نیست. پروژهٔ Wycheproof متعلق به C2SP نیز کتابخانه‌های رمزنگاری را با test vectorهای مرتبط با حملات شناخته‌شده می‌آزماید. عبور از این آزمون‌ها ضعف‌های ناشناخته یا خطاهای بیرون از پوشش مجموعه را منتفی نمی‌کند.

Checksum یا «جمع کنترلی» اثر انگشت محاسباتی یک فایل است. اگر SHA-256 محاسبه‌شده برای APK با مقدار منتشرشده یکسان باشد، همان بایت‌های مورد اشاره را دارید؛ اما هنوز باید checksum را از منبع معتبر بگیرید و مطمئن شوید آن نسخه همان نرم‌افزاری است که قصد نصبش را دارید. برای شناخت مرز میان محتوای رمز‌شده و اطلاعات جانبی، توضیح فرادادهٔ پیام‌رسان را بخوانید.

چگونه Proof Lab پیام‌رسان را بدون اینترنت آزمایش کنیم؟

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

پژوهشگری checksum یک فایل APK و نتیجهٔ test vectorها را روی لپ‌تاپ و گوشیِ قطع‌شده از اینترنت مقایسه می‌کند.

  1. با دستگاه و شبکه‌ای قابل اعتماد وارد Proof Lab شوید و checksum منتشرشده، APK مورد نظر و test vectorهای لازم را آماده کنید.
  2. نام نسخه و منشأ فایل‌ها را ثبت کنید؛ مقایسهٔ دو نسخهٔ متفاوت نتیجهٔ معناداری نمی‌دهد.
  3. Wi-Fi و دادهٔ همراه را خاموش کنید و، در صورت امکان، ابزار توسعهٔ مرورگر یا پایش شبکه را برای مشاهدهٔ درخواست‌ها باز نگه دارید.
  4. SHA-256 فایل APK را در Proof Lab یا با ابزاری محلی و مستقل محاسبه کنید و آن را نویسه‌به‌نویسه با checksum منتشرشده بسنجید.
  5. test vectorها را اجرا کنید و ببینید هر ورودی دقیقاً خروجی مورد انتظار را می‌سازد. خروجی نامنطبق یعنی آزمون شکست خورده است.
  6. نتیجه، نسخه، سیستم‌عامل و hash فایل را ثبت کنید تا دیگری بتواند آزمایش را تکرار کند.

طبق مشخصات منتشرشدهٔ لیوارا، این پیام‌رسان برای پیام‌های مستقیم از LVR1 استفاده می‌کند: ratchet مبتنی بر ECDH P-256 و ratchet دوره‌ای ML-KEM-768 در کنار هم اجرا می‌شوند و کلید هر پیام از هر دو مشتق می‌شود. ML-KEM در استاندارد NIST FIPS 203 تعریف شده است. گروه‌های خصوصی با LGS1 و sender keyهایی رمز می‌شوند که داخل envelopeهای دوتایی LVR1 قرار می‌گیرند. عضویت گروه را سرور کنترل می‌کند. پروتکل‌های لیوارا مستقلاً ممیزی نشده‌اند؛ Proof Lab نیز جای ممیزی مستقل را نمی‌گیرد. جزئیات و محدودیت‌ها در مرزهای امنیتی منتشرشدهٔ لیوارا آمده است.

این آزمون جای مقایسهٔ safety number با مخاطب را نمی‌گیرد. برای تشخیص تغییر کلید طرف مقابل، روش بررسی گفت‌وگوی رمز‌شده با safety number را جداگانه انجام دهید.

تست وکتور قابل بررسی چه فرقی با سند فنی، ممیزی و ساخت بازتولیدپذیر دارد؟

این چهار مدرک به چهار پرسش متفاوت پاسخ می‌دهند و جای یکدیگر را نمی‌گیرند. سند می‌گوید سیستم باید چگونه کار کند؛ test vector یک رفتار را ماشین‌چک می‌کند؛ ممیزی طراحی یا کد را بررسی می‌کند؛ و ساخت بازتولیدپذیر می‌سنجد آیا منبع معین دوباره همان خروجی دودویی را می‌سازد.

سند فنی

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

تست وکتور و ماشین‌چک کردن پروتکل رمزنگاری

ماشین‌چک کردن پروتکل رمزنگاری یعنی ابزار ورودی‌ها را اجرا کند و نتیجه را بدون قضاوت دستی با خروجی مرجع بسنجد. CAVP متعلق به NIST و Wycheproof متعلق به C2SP نشان می‌دهند آزمون‌های ساختاریافته برای یافتن برخی خطاهای پیاده‌سازی مفیدند؛ پوشش آن‌ها به موارد نوشته‌شده در مجموعهٔ آزمون محدود است.

ممیزی امنیتی

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

ساخت بازتولیدپذیر و checksum

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

تأیید محلی امنیت اپ در Signal، WhatsApp، Session و Element چگونه مقایسه می‌شود؟

مقایسهٔ درست باید یک آزمون یکسان را برای هر محصول مطرح کند: آیا کاربر عادی می‌تواند artefact رسمی، checksum نسخه و test vectorهای مرتبط را دریافت کند و سپس همه را آفلاین و محلی بررسی کند؟ این مقاله فقط مدرک متناظر و قابل تکرار را می‌سنجد و نبود یک مدرک را اثبات ناامنی نمی‌داند.

پیام‌رسان مدرکی که باید از منبع رسمی مطالبه شود آزمون آفلاین پیشنهادی نتیجه‌ای که مجازید بگیرید
Livara مشخصات LVR1 و LGS1، test vectorهای ماشین‌خوان و SHA-256 نسخه در Proof Lab قطع شبکه، اجرای vectorها و محاسبهٔ SHA-256 APK artefact آزمایش‌شده با checksum منتشرشده منطبق است و vectorهای موجود را می‌گذراند
Signal مستندات رسمی پروتکل، artefact رسمی و هر مدرک رسمی مربوط به ساخت یا hash همان نسخه مدارک نسخه را بگیرید و امکان اجرای محلی آن‌ها را بیازمایید فقط همان شواهد رسمی و همان نسخه قابل ارزیابی است
WhatsApp مستندات امنیتی رسمی، artefact رسمی و مدرک قابل بررسی همان انتشار بررسی کنید آیا hash و آزمون محلی مستقلی برای نسخهٔ توزیع‌شده ارائه می‌شود توضیح پروتکل به‌تنهایی تطابق binary نصب‌شده را نشان نمی‌دهد
Session مشخصات و مخزن رسمی، artefact انتشار و مدارک رسمی hash یا ساخت منبع، خروجی و نسخه را تطبیق دهید و آزمون را بدون شبکه تکرار کنید دسترسی به کد به‌تنهایی برابر با تأیید binary نیست
Element مستندات رسمی کلاینت و پروتکل، artefact همان کلاینت و مدارک انتشار نسخهٔ دقیق کلاینت را با hash یا فرایند ساخت قابل تکرار بسنجید ارزیابی یک کلاینت یا سرور به همهٔ استقرارها تعمیم‌پذیر نیست

این جدول نمی‌گوید چهار رقیب فاقد این مدارک‌اند؛ بدون بررسی اسناد رسمی نسخهٔ دقیق، چنین حکمی قابل دفاع نیست. در لیوارا، Proof Lab مسیر واحدی برای اجرای test vectorها و بررسی checksum آفلاین فراهم می‌کند. برای سنجش نقاط ضعف و قوت محصول‌ها، مقایسهٔ پیام‌رسان‌های لیوارا را ببینید.

Proof Lab چه چیزهایی را دربارهٔ امنیت لیوارا ثابت نمی‌کند؟

Proof Lab نبود آسیب‌پذیری، امن‌بودن دستگاه یا درست‌کاری نسخه‌های آینده را ثابت نمی‌کند. checksum موفق نیز نشان نمی‌دهد فایل از کد منبع مشخص ساخته شده است، مگر آن‌که شواهد زنجیرهٔ ساخت جداگانه ارائه و بررسی شوند.

طبق مشخصات لیوارا، گفت‌وگوهای مستقیم با LVR1 و گروه‌های خصوصی با LGS1 سرتاسری رمز می‌شوند. تصاویر، ویدئوها، فایل‌ها و توضیحات پیوست پیش از بارگذاری با کلید محتوای تصادفی ۳۲‌بایتی رمز می‌شوند. تماس‌ها از سازوکار WebRTC مبتنی بر DTLS-SRTP استفاده می‌کنند و سیگنال‌دهی LCS1 داخل پیام pairwise-sealed حمل می‌شود؛ رسانهٔ تماس پساکوانتومی نیست. سازوکار SRP نیز برای اثبات دانستن گذرواژه بدون فرستادن خود آن به کار می‌رود؛ RFC 2945 مشخصات SRP را شرح می‌دهد. این پروتکل‌ها مستقلاً ممیزی نشده‌اند.

کانال‌ها عمداً سرتاسری رمز نمی‌شوند و سرور می‌تواند محتوای آن‌ها را بخواند تا لیوارا گزارش‌ها را رسیدگی، محتوای سوءاستفاده‌آمیز را حذف و کانال متخلف را مسدود کند. سرور همچنین عضویت گروه‌ها را کنترل می‌کند. فرادادهٔ مسیریابی استاندارد، از جمله فرستنده، مقصد و زمان تحویل، برای همگام‌سازی بلادرنگ دستگاه‌ها ذخیره می‌شود. دستگاه آلوده نیز می‌تواند متن را پیش از رمزگذاری یا پس از رمزگشایی بخواند؛ Proof Lab این تهدید را برطرف نمی‌کند.

Frequently asked questions

آیا عبور از test vectorها یعنی پیام‌رسان کاملاً امن است؟

خیر. عبور از test vector فقط نشان می‌دهد پیاده‌سازی در موارد پوشش‌داده‌شده خروجی مورد انتظار را ساخته است. خطاهای رابط کاربری، مدیریت کلید، زنجیرهٔ تأمین، دستگاه آلوده و حملات ناشناخته ممکن است بیرون دامنه بمانند. نتیجه را باید همراه سند فنی، ممیزی مستقل ــ اگر وجود دارد ــ و شواهد انتشار خواند.

آیا checksum APK ثابت می‌کند برنامه از کد منبع اعلام‌شده ساخته شده است؟

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

چرا باید Proof Lab را پس از قطع اینترنت اجرا کنم؟

قطع اینترنت نشان می‌دهد محاسبهٔ checksum و test vector به پاسخ زندهٔ سرور وابسته نیست. بااین‌حال باید فایل‌های لازم را پیش‌تر از منبع معتبر بگیرید؛ آزمون آفلاین نمی‌تواند داده‌ای را که از منبع جعلی گرفته‌اید معتبر کند.

آیا پیام‌های کانال‌های لیوارا هم در Proof Lab سرتاسری رمز‌شده نشان داده می‌شوند؟

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

آیا بررسی آفلاین جای safety number را می‌گیرد؟

خیر. بررسی آفلاین artefact و رفتار رمزنگاری را می‌آزماید؛ safety number اثر انگشت کلید دو طرف را برای تشخیص تغییر کلید مقایسه می‌کند. برای اطمینان عملی، APK و test vectorها را محلی بررسی کنید و safety number مخاطب حساس را از مسیری مستقل تطبیق دهید.

اجرای آزمون در Proof Lab
پایان / بررسی آفلاین رمزنگاری پیام‌رسان چیست؟ آزمون عملی Proof Lab در برابر ادعاهای Signal، WhatsApp، Session و Elementساختهٔ لیوار ↗