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

بررسی یکم: کدام نیمه از جفت در بریده‌دان شماست

کلیدهای نامتقارن جفت‌جفت می‌آیند، و جهت اشتقاق تمام نکته است. در WireGuard کلید خصوصی 32 بایت تصادفی است و کلید عمومی از آن محاسبه می‌شود؛ مسیر برعکس وجود ندارد. wg genkey مقدار خصوصی را می‌نویسد، wg pubkey مقدار عمومی را استخراج می‌کند، و تنها دومی به پیامی برای یک همتا تعلق دارد.

wg genkey | tee private.key | wg pubkey > public.key
chmod 600 private.key
openssl x509 -noout -pubkey -in server.crt

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

اگر مطمئن نیستید کدام مقدار را در دست دارید، به جای نام فایل به نشانگر نگاه کنید. یک بلوک PEM که با -----BEGIN PRIVATE KEY----- شروع می‌شود، یا شکل قدیمی‌تر BEGIN RSA PRIVATE KEY، همان نیمهٔ پنهان است. مقداری که می‌توانید بدون آن نشانگر بچسبانید نامزد اشتراک‌گذاری است، مشروط به دو بررسی بعدی.

بررسی دوم: استقرار آن مقدار عمومی را به چه چیزی پیوند می‌زند

امنیت رمزنگاری و ناشناس‌بودن دو ویژگی متفاوت‌اند. کلید عمومی یک همتای WireGuard شناسه‌ای پایدار درون استقرار است: پیکربندی سرور آن را فهرست می‌کند، دست‌دادن آن را نام می‌برد، و مدیری که گزارش‌ها را می‌خواند هر بار که آن همتا وصل می‌شود همان رشته را می‌بیند. کلید را کنار پرسشی دربارهٔ تنظیمات خود منتشر کنید و آن رشته را به همهٔ چیزهای دیگر در آن نوشته گره زده‌اید.

گواهی‌ها به‌طور طراحی‌شده هویت را لو می‌دهند. فیلدهای Subject و subject alternative name خوانا هستند، و برای گواهی‌های TLS با اعتماد عمومی خود گواهی در گزارش‌های Certificate Transparency منتشر می‌شود که قابل جست‌وجو هستند. هیچ‌کدام کلید خصوصی را آشکار نمی‌کند، و همهٔ آن یک رابطه را آشکار می‌کند.

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

بررسی سوم: چه چیزی را می‌توانید باطل کنید، و با چه سرعتی

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

باطل‌کردن یک اقدام پیکربندی است، نه یک اقدام رمزنگاری. WireGuard هیچ فهرست باطل‌سازی ارائه نمی‌دهد، پس همتا را حذف می‌کنید:

wg set wg0 peer <peer-public-key> remove
# then delete the [Peer] block from the config so it does not return on restart

OpenVPN استقرارهای مبتنی بر گواهی، گواهی را باطل می‌کنند و یک CRL منتشر می‌کنند که سرور واقعاً آن را از طریق crl-verify بررسی می‌کند. بدون آن دستور، فهرست باطل‌سازی فقط تزیین است. در هر حال ترتیب یکی است: جانشین صادر کنید، آن را از کانال پشتیبانی‌شده توزیع کنید، سپس هویت قدیمی را بازنشسته کنید.

خطاهایی که از یکی‌کردن سه بررسی می‌آیند

بیشتر نشت‌های واقعی تصمیم یک نفر برای انتشار کلید خصوصی نیست. یک نمایهٔ کامل است که در انجمنی چسبانده شده: یک .conf WireGuard با خط PrivateKey، یا بستهٔ .ovpn با بلوک کلید درون‌خطی، یا تصویری از پنجرهٔ کارخواه که تصادفاً فیلد کلید را هم دربر دارد. مقدار عمومی احتمالاً سالم بود؛ همراه با بخشی سفر کرد که سالم نبود.

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

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

پس از نشت یک مقدار خصوصی، هویت را بازنشسته کنید

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

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

مقالات مرتبط