บรรทัดเดียวที่เขียนว่า «แฮนด์เชกล่าสุด สองนาทีที่แล้ว» ดูเหมือนหลักฐานของกิจกรรมต่อเนื่องและอ่อนแอกว่านั้น มันระบุการแลกเปลี่ยนคีย์ครั้งสุดท้ายที่เสร็จสมบูรณ์สำหรับเพื่อนหนึ่งราย ซึ่งเกิดขึ้นตามตัวจับเวลาการหมุนคีย์คงที่ขณะที่มีทราฟฟิกไหลและหยุดเมื่อเพื่อนเงียบไป การที่เวลานั้นเชื่อมโยงบุคคลกับสิ่งใดหรือไม่ขึ้นอยู่กับตัวระบุที่เก็บไว้ข้าง ๆ และนาฬิกาของทั้งสองระบบ ต่อไปนี้คือพฤติกรรมของบันทึกในสแตกที่พบมากที่สุดสองแบบ และจุดที่การอ่านผิดพลาด

สองบันทึก สองความหมายที่ต่างกัน

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 ขณะที่เพื่อนที่มีแฮนด์เชกเก่าและตัวนับมากเคยทำงานจนกระทั่งหยุด ไม่มีบรรทัดใดบอกว่าทำอะไรไป และการพูดเช่นนั้นตรง ๆ แม่นยำกว่าการบอกเป็นนัยว่าแท็กเวลาพิสูจน์การเข้าชม

บทความที่เกี่ยวข้อง