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

دو رکورد، دو معنای متفاوت

WireGuard برای هر همتا یک مهر زمانی دست‌دادن نگه می‌دارد که در هر بازتولید کلید جایگزین می‌شود، به‌همراه شمارنده‌های بایت در هر جهت. OpenVPN معمولاً آغاز یک نشست، یک قطع اتصال و هر چیزی که سطح جزئیات پیکربندی‌شده اضافه کند را ثبت می‌کند، که واحد رکورد را نشست می‌کند نه تبادل کلید.

همین تفاوت تعیین می‌کند که نبود یعنی چه:

QuestionWireGuard handshakeOpenVPN session log
Did the peer send recently?Strong hint within the rekey windowNot answered by start time alone
Did the peer stop?Weak, because idle peers also stop rekeyingOnly if a disconnect was written
What was visited?NothingNothing

چرا دست‌دادن استفاده پیوسته نیست

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

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

شناسه‌ها همراه مهر زمانی سفر می‌کنند

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

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

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

همبستگی میان‌سیستمی به توجه به ساعت نیاز دارد

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

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

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

رکورد را با فرمان بخوانید، نه با خیال

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

این دو خط سن دست‌دادن و شمارنده‌های بایت را برای هر همتای WireGuard نشان می‌دهند و سپس همان نوع مواد را از یک فایل وضعیت OpenVPN:

wg show all latest-handshakes
wg show wg0 transfer
cat /run/openvpn/server.status

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

مقالات مرتبط