سطر واحد يقول «آخر مصافحة، قبل دقيقتين» يبدو دليلاً على نشاط متواصل، وهو أضعف من ذلك. إنه يحدد آخر تبادل مفاتيح مكتمل لقرين واحد، ويحدث وفق مؤقت ثابت لإعادة توليد المفاتيح ما دامت حركة البيانات تتدفق، ويتوقف عندما يسكت القرين. أما هل يربط ذلك الوقت شخصاً بأي شيء، فيعتمد على المعرّفات المخزنة إلى جانبه وعلى ساعات النظامين. وفيما يلي كيف يتصرف السجل في أكثر حزمتين شيوعاً، وأين يخطئ قراءته.

سجلان بمعنيين مختلفين

يحتفظ 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 المستمرة على دفء النفق في جهاز خامل، لذا قد تظهر مصافحة حديثة على آلة لم يلمسها أحد منذ ساعة. تساعد عدادات البايتات هنا، لأنها تميز القرين الذي يرسل بيانات حقيقية عن الذي يتبادل رسائل الإبقاء فقط، وتخبرك أيضاً أي اتجاه حمل الحجم. ولا شيء من ذلك يكشف وجهة أو صفحة أو استعلاماً.

المعرّفات تسافر مع طابع الوقت

الوقت بلا حساب أو مفتاح عام أو عنوان مصدر هو يتيم. اقرن طابع الوقت بهوية القرين فتصبح الملاحظة قابلة للربط: المفتاح العام يستمر عبر تغيّر العناوين، بينما قد يشترك كثير من المشتركين في عنوان مصدر واحد خلف ترجمة عناوين المشغّل.

هذا التفاوت هو ما تفوته معظم نقاشات الخصوصية. يبدو العنوان مجهولاً لأنه مشترك، ويبدو المفتاح تقنياً لأنه طويل، لكن المفتاح هو المعرّف الثابت. والاحتفاظ بحقل وإسقاط الآخر يغيّر خطر الارتباط دون أن يغيّر الدقة الظاهرة.

الارتباط نفسه هو الشاغل الموثق. فربط وقت اتصال بحدث تسجيل دخول لدى مزود أو بتذكرة دعم أو بسجل دفع يمكن أن يربط هوية بنشاط حتى عندما لا تكون أي وجهة قد كُتبت قط، ولهذا يكون الاقتران أهم من التنسيق.

الارتباط عبر الأنظمة يحتاج عناية بالساعات

نادراً ما يتفق نظامان يبلّغان عن اللحظة نفسها إلى الثانية. فقد يطبّق أحدهما إزاحة منطقة زمنية في مخرجاته، وقد يعمل آخر على ساعة متأخرة بضع ثوانٍ، وقد تنحرف آلة افتراضية بعد تعليق.

قبل أن تستنتج أن حدثين وقعا معاً، حوّل كليهما إلى المنطقة نفسها وافحص الإزاحة في السجل الخام لا في العرض. وإذا كانت الفجوة التي تقيسها أصغر من الانحراف المحتمل، فليس لديك أي ترتيب على الإطلاق.

القاعدة العملية هي الاحتفاظ بالدقة التي تحتاجها مهمة الاستكشاف ولا أكثر. فعدد الجلسات في الساعة يجيب عن سؤال توفر دون الاحتفاظ بتاريخ لكل حساب، ويمكن الاحتفاظ بمجموع مُجمّع أطول بكثير من الصفوف الخام التي جاء منها.

اقرأ السجل بالأوامر لا بالخيال

اطبع الحقول التي تنوي الاستدلال عليها، بالوحدات التي تخزنها الأداة لا التي تعرضها لوحة معلومات.

يعرض هذان السطران عمر المصافحة وعدادات البايتات لكل قرين WireGuard، ثم المادة نفسها من ملف حالة OpenVPN:

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

قارن العمر بفاصل إعادة توليد المفاتيح قبل الاستنتاج، واقرأ العدادات معه. فالقرين ذو المصافحة الحديثة والنقل شبه المعدوم يتبادل رسائل الإبقاء، بينما كان القرين ذو المصافحة القديمة والعدادات الكبيرة مشغولاً حتى توقف. ولا يقول أي من السطرين ما جرى، وقول ذلك بصراحة أدق من الإيحاء بأن طابع الوقت يثبت زيارة.

مقالات ذات صلة