แท็กเวลาของแฮนด์เชก 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 ที่ต่อเนื่องทำให้อุโมงค์อุ่นอยู่บนอุปกรณ์ที่ไม่ได้ใช้งาน แฮนด์เชกใหม่จึงอาจปรากฏบนเครื่องที่ไม่มีใครแตะต้องมาหนึ่งชั่วโมง ตัวนับไบต์ช่วยได้ตรงนี้ เพราะแยกเพื่อนที่ส่งข้อมูลจริงออกจากเพื่อนที่แลกเปลี่ยนเฉพาะ keepalive และยังบอกด้วยว่าทิศทางใดบรรทุกปริมาณข้อมูล ไม่มีสิ่งใดในนั้นเปิดเผยปลายทาง หน้าเว็บ หรือคำค้น
ตัวระบุเดินทางไปพร้อมแท็กเวลา
เวลาที่ไม่มีบัญชี คีย์สาธารณะ หรือที่อยู่ต้นทางคือเด็กกำพร้า จับคู่แท็กเวลากับตัวตนของเพื่อน การสังเกตก็จะเชื่อมโยงได้ คีย์สาธารณะคงอยู่ข้ามการเปลี่ยนที่อยู่ ขณะที่ที่อยู่ต้นทางอาจถูกใช้ร่วมกันโดยผู้ใช้บริการจำนวนมากหลังการแปลงที่อยู่ของผู้ให้บริการ
ความไม่สมมาตรนั้นคือสิ่งที่การถกเถียงเรื่องความเป็นส่วนตัวส่วนใหญ่มองข้าม ที่อยู่ดูไม่ระบุตัวตนเพราะถูกใช้ร่วมกัน และคีย์ดูเป็นเรื่องเทคนิคเพราะมันยาว แต่ตัวระบุที่มั่นคงคือคีย์ การเก็บฟิลด์หนึ่งและทิ้งอีกฟิลด์เปลี่ยนความเสี่ยงของการเชื่อมโยงโดยไม่เปลี่ยนความแม่นยำที่ปรากฏ
การเชื่อมโยงเองคือข้อกังวลที่ถูกบันทึกไว้ การนำเวลาเชื่อมต่อไปรวมกับเหตุการณ์เข้าสู่ระบบของผู้ให้บริการ ตั๋วสนับสนุน หรือบันทึกการชำระเงินสามารถ เชื่อมโยงตัวตนกับกิจกรรม ได้แม้จะไม่มีปลายทางใดถูกบันทึกไว้เลย และนั่นคือเหตุผลที่การจับคู่สำคัญกว่าการจัดรูปแบบ
การเชื่อมโยงข้ามระบบต้องระวังเรื่องนาฬิกา
สองระบบที่รายงานช่วงเวลาเดียวกันไม่ค่อยตรงกันถึงระดับวินาที ระบบหนึ่งอาจใช้ออฟเซตเขตเวลาในผลลัพธ์ อีกระบบอาจเดินด้วยนาฬิกาที่คลาดไปหลายวินาที และเครื่องเสมือนอาจคลาดเคลื่อนหลังการระงับ
ก่อนสรุปว่าเหตุการณ์สองอย่างเกิดขึ้นพร้อมกัน ให้แปลงทั้งสองเป็นเขตเวลาเดียวกันและตรวจออฟเซตในบันทึกดิบไม่ใช่ในหน้าจอ หากช่องว่างที่คุณวัดเล็กกว่าความคลาดเคลื่อนที่เป็นไปได้ คุณก็ไม่มีลำดับใด ๆ เลย
หลักปฏิบัติคือเก็บความแม่นยำที่งานแก้ปัญหาต้องการและไม่มากกว่านั้น จำนวนเซสชันต่อชั่วโมงตอบคำถามเรื่องความพร้อมใช้งานโดยไม่ต้องเก็บประวัติรายบัญชี และข้อมูลสรุปสามารถเก็บได้นานกว่าข้อมูลดิบต้นทางมาก
อ่านบันทึกด้วยคำสั่ง ไม่ใช่ด้วยจินตนาการ
พิมพ์ฟิลด์ที่คุณกำลังจะใช้เหตุผล ในหน่วยที่เครื่องมือเก็บไว้ ไม่ใช่หน่วยที่แดชบอร์ดแสดง
สองบรรทัดนี้แสดงอายุของแฮนด์เชกและตัวนับไบต์ของเพื่อน WireGuard ทุกราย จากนั้นเป็นวัสดุชนิดเดียวกันจากไฟล์สถานะของ OpenVPN:
wg show all latest-handshakes
wg show wg0 transfer
cat /run/openvpn/server.statusเปรียบเทียบอายุกับช่วงการหมุนคีย์ก่อนสรุป และอ่านตัวนับไปพร้อมกัน เพื่อนที่มีแฮนด์เชกใหม่และการถ่ายโอนแทบเป็นศูนย์กำลังแลกเปลี่ยน keepalive ขณะที่เพื่อนที่มีแฮนด์เชกเก่าและตัวนับมากเคยทำงานจนกระทั่งหยุด ไม่มีบรรทัดใดบอกว่าทำอะไรไป และการพูดเช่นนั้นตรง ๆ แม่นยำกว่าการบอกเป็นนัยว่าแท็กเวลาพิสูจน์การเข้าชม