מה באמת אומר לך חותם הזמן של לחיצת יד ב-WireGuard
זמן לחיצת יד אינו היסטוריית גלישה, אבל הוא מקשר חשבון לאירוע. השוו מה WireGuard ו-OpenVPN רושמים, ומה הדיוק מסתיר.
שורה אחת שאומרת «לחיצת יד אחרונה, לפני שתי דקות» נראית כהוכחה לפעילות רציפה והיא חלשה מזה. היא מסמנת את החלפת המפתחות האחרונה שהושלמה עבור עמית אחד, שמתרחשת לפי טיימר חידוש מפתחות קבוע כל עוד תעבורה זורמת ונפסקת כשהעמית שותק. האם הזמן הזה מקשר אדם למשהו תלוי במזהים השמורים לצידו ובשעונים של שתי המערכות. הנה כיצד הרשומה מתנהגת בשתי הערימות הנפוצות ביותר, והיכן הקריאה שלה משתבשת.
שתי רשומות, שני משמעים שונים
WireGuard שומר חותם זמן אחד של לחיצת יד לכל עמית, שמוחלף בכל חידוש מפתחות, בתוספת מוני בתים בכל כיוון. OpenVPN בדרך כלל רושם התחלת הפעלה, ניתוק וכל מה שהפירוט המוגדר מוסיף, מה שהופך את יחידת הרשומה להפעלה ולא להחלפת מפתחות.
ההבדל הזה קובע מה משמעות ההיעדרות:
| Question | WireGuard handshake | OpenVPN session log |
|---|---|---|
| Did the peer send recently? | Strong hint within the rekey window | Not answered by start time alone |
| Did the peer stop? | Weak, because idle peers also stop rekeying | Only if a disconnect was written |
| What was visited? | Nothing | Nothing |
מדוע לחיצת יד אינה שימוש רציף
WireGuard מחדש מפתחות בערך כל שתי דקות כל עוד יש נתונים להגן עליהם, ועמית שנעשה לא פעיל פשוט מפסיק. לכן לחיצת יד ישנה יכולה לומר שהמחשב הנייד ישן, שהמשתמש הפסיק לעבוד, או שהרשת הפילה את החבילות שהיו מפעילות את ההחלפה הבאה. חותם הזמן הוא גבול תחתון של פעילות, לא עוקב אחרי קשב.
הטעות ההפוכה קלה באותה מידה. תעבורת keepalive מתמשכת שומרת על המנהרה חמה במכשיר לא פעיל, ולכן לחיצת יד עדכנית יכולה להופיע במכונה שאיש לא נגע בה במשך שעה. מוני בתים עוזרים כאן, מפני שהם מבדילים בין עמית ששולח נתונים אמיתיים לבין זה שמחליף רק keepalives, והם גם אומרים איזה כיוון נשא את הנפח. דבר מזה לא חושף יעד, דף או שאילתה.
מזהים נוסעים עם חותם הזמן
זמן בלי חשבון, מפתח ציבורי או כתובת מקור הוא יתום. חברו את חותם הזמן לזהות העמית והתצפית הופכת ניתנת לקישור: מפתח ציבורי נשמר לאורך שינויי כתובת, ואילו כתובת מקור יכולה להיות משותפת להרבה מנויים מאחורי תרגום הכתובות של הספק.
האסימטריה הזו היא מה שרוב הדיונים על פרטיות מפספסים. הכתובת נראית אנונימית מפני שהיא משותפת, והמפתח נראה טכני מפני שהוא ארוך, אבל המפתח הוא המזהה היציב. שמירה על שדה אחד והשלכת האחר משנה את סיכון המתאם בלי לשנות את הדיוק הנראה לעין.
המתאם עצמו הוא החשש המתועד. חיבור זמן התחברות לאירוע כניסה של ספק, לכרטיס תמיכה או לרשומת תשלום יכול לקשר זהות לפעילות גם כשלא נרשם מעולם שום יעד, ולכן ההצמדה חשובה יותר מהעיצוב.
מתאם בין מערכות דורש זהירות עם שעונים
שתי מערכות שמדווחות על אותה רגע ממעטות להסכים עד השנייה. האחת עשויה להחיל היסט אזור זמן בפלט שלה, אחרת עשויה לרוץ על שעון שסוטה בכמה שניות, ומכונה וירטואלית עשויה לסטות לאחר השהיה.
לפני שאתם מסיקים ששני אירועים קרו יחד, המירו את שניהם לאותו אזור ובדקו את ההיסט ברשומה הגולמית ולא בתצוגה. אם הפער שאתם מודדים קטן מהסטייה הסבירה, אין לכם שום סדר.
הכלל המעשי הוא לשמור על הדיוק שנדרש למשימת פתרון התקלות ולא יותר. ספירת הפעלות בשעה עונה על שאלת זמינות בלי לשמור היסטוריה לכל חשבון, וניתן לשמור צבירה זמן רב בהרבה מהשורות הגולמיות שמהן נוצרה.
קראו את הרשומה בפקודות, לא בדמיון
הדפיסו את השדות שאתם עומדים להסיק מהם, ביחידות שהכלי שומר ולא באלה שלוח בקרה מציג.
שתי השורות האלה מציגות את גיל לחיצת היד ואת מוני הבתים לכל עמית WireGuard, ואחר כך חומר מאותו סוג מקובץ מצב של OpenVPN:
wg show all latest-handshakes
wg show wg0 transfer
cat /run/openvpn/server.statusהשוו את הגיל למרווח חידוש המפתחות לפני שאתם מסיקים מסקנה, וקראו את המונים יחד איתו. עמית עם לחיצת יד עדכנית וכמעט ללא העברה מחליף keepalives, ואילו עמית עם לחיצת יד ישנה ומונים גדולים היה עסוק עד שנעצר. אף אחת מהשורות לא אומרת מה נעשה, ואמירה ישירה של זה מדויקת יותר מרמז שחותם הזמן מוכיח ביקור.