کلاینت VPN متنباز: کد چه چیزی را اثبات میکند و چه چیزی را نه
مخزن عمومی مدرکی درباره کد منبع است، نه درباره بیلدی که نصب کردهاید یا سرورهایی که پشت آن است. انتشار را تطبیق دهید، سپس بررسی را گستردهتر کنید.
کد منبع منتشر شده، مجوز پاک است، و اتصال هنوز از ابتدا تا انتها قابل تأیید نیست. این شکاف عادی است و رسوایی نیست. انتشار کد یک مؤلفه را برای افرادی که دعوت نشدهاند قابل بازرسی میکند، و این ویژگی واقعی و غیرمعمولی است. از این نتیجه نمیشود که فایل باینری که نصب کردهاید از آن کد آمده است، یا اینکه هر چیزی که ارائهدهنده در طرف دیگر اجرا میکند اصلاً بررسی شده باشد.
مؤلفه را از محصول جدا کنید
چهار چیز میتواند برچسب متنباز را حمل کند و بهندرت همهشان باز هستند. برنامه کلاینت همان چیزی است که مردم منظورشان است. پیادهسازی پروتکل در زیر آن مصنوع دیگری است، گاهی کتابخانه و گاهی کد داخل درخت. نرمافزار سرور سوم است، و زیرساخت خود ارائهدهنده، پورتال حساب و ابزارهای پشتیبانی چهارم. هر یک میتواند مستقلاً باز یا بسته باشد.
بنابراین عبارتهایی مانند "برنامه ما متنباز است" مورد اول را توصیف میکنند و بقیه را بیپاسخ میگذارند، که ناراستی نیست بلکه بیشتر یک لغزش مقولهای است. پرسش مفید این است که کدام مخزن، با کدام برچسب، با مؤلفهای که به آن تکیه میکنید مطابقت دارد.
این تمایز همچنین توضیح میدهد چرا دو محصول با کلاینتهای باز یکسان میتوانند تضمینهای بسیار متفاوتی بدهند. کلاینت بخشی است که میتوانید بررسی کنید؛ رفتار اپراتور بخشی است که باید با روشهای دیگر ارزیابی کنید.
بیلد نصبشده را با برچسب منتشرشده تطبیق دهید
مخزن سابقهای از نیت است؛ فایل باینری روی دیسک شما همان چیزی است که اجرا میشود. بستن این شکاف تمرینی مکانیکی است و با شناسایی دقیق آنچه نصب شده آغاز میشود، نه آنچه صفحه دانلود تبلیغ کرده است.
| Component | What inspection can show | What it leaves untouched |
|---|---|---|
| Client source | How profiles, packets and optional telemetry are handled | Whether the shipped binary matches that source |
| Build output | Whether a declared build reproduces a matching artefact | Whether the source is correct or the toolchain is clean |
| Server software | What the implementation is capable of logging | What the operator actually configures and retains |
| Account and support systems | Almost nothing, unless they are separately published | Everything about how those systems treat your data |
فراداده بسته نسخه و منشأ را به شما میگوید، که حالت ساده بسته کهنه یا جایگزینشده را رد میکند. اما نمیگوید آن بسته چگونه کامپایل شده است، و دقیقاً برای پاسخ به همین پرسش است که بیلدهای بازتولیدپذیر وجود دارند. بیلدهای بازتولیدپذیر به یک طرف مستقل امکان میدهند از همان منبع دوباره بسازد و خروجی را بایتبهبایت مقایسه کند، تا ناسازگاری به جای سوءظن به مدرک تبدیل شود.
حتی تطابق کامل کمتر از آنچه مردم امید دارند اثبات میکند. نشان میدهد که مصنوع با منبع و دستور ساخت مطابقت دارد، نه اینکه منبع بیعیب است و نه اینکه زنجیره ابزار استفادهشده قابل اعتماد بوده است. دانستن هر دو ارزشمند است، اما اینها ادعاهای متفاوتی هستند.
dpkg -S /usr/bin/wg
apt-cache policy wireguard-tools
sha256sum /usr/bin/wgنشانه معمولاً از کجا شروع میشود
شکایتی که این خواندن را برمیانگیزد بهندرت "کد بسته است" است. معمولاً یک مشاهده مشخص است: کلاینتی که جایی غیرمنتظره تماس میگیرد، نسخهای که با یادداشتهای انتشار تفاوت دارد، یا فرایند پشتیبانیای که بیش از نیاز تونل میخواهد. هر یک از این نکتهها به مؤلفه متفاوتی اشاره میکند.
ترافیک شبکه غیرمنتظره از کلاینت پرسشی درباره کد منبع کلاینت است و با خواندن مسیر کدی که اتصال را باز میکند پاسخپذیر است. ناسازگاری نسخه پرسشی درباره بستهبندی است. فرایند پشتیبانیای که مدارک هویتی میخواهد پرسشی درباره سیستم حساب است و هیچ ممیزی کلاینت آن را حل نمیکند.
نامگذاری مؤلفه بیاعتمادی مبهم را به یک بررسی مشخص تبدیل میکند. به بررسی مشخص میتوان پاسخ داد، با آن بحث کرد یا آن را بست. جایگزین، سوءظن دائمی بدون گام بعدی است.
بررسی به چه چیزی نمیرسد و به جای آن چه باید کرد
نگهداری روی سرورهای ارائهدهنده خارج از دسترس کلاینت است. همچنین است رفتار یک پورتال صورتحساب، یک فروشنده بررسی تقلب یا میز پشتیبانیای که پیوستها را نگه میدارد. بررسی کلاینتی که تا "ما سرویس را ممیزی کردیم" کشیده شود ادعایی میکند که مدارک از آن پشتیبانی نمیکند.
بخوانید اپراتور درباره نگهداری و درخواستها چه منتشر میکند، تاریخ را یادداشت کنید، و آن را بیانیه یک طرف ذینفع بدانید نه یک اندازهگیری. این شکل ضعیفتری از مدرک است و صریح بودن درباره تفاوت مفیدتر از بالا بردن آن در بازگویی است.
سپس آنچه دارید را بهعنوان یکی از چند ورودی به کار ببرید: هویت انتشار نصبشده، اینکه نرمافزار نگهداری میشود یا نه، اینکه کلاینت چگونه پیکربندی شده و اپراتور درباره سیستمهای خودش چه میگوید. کد باز آن ارزیابی را در یک نقطه تقویت میکند. جای بقیه را نمیگیرد.
ادعای ممیزی باید همیشه مؤلفهها و نسخههایش را نام ببرد. اگر گزارشی نتواند بگوید کدام مخزن و کدام بیلد را بررسی کرده است، نیتی را توصیف میکند نه محصولی را.