คนมักอธิบาย VPN ว่าเป็น „สิ่งที่ใช้การเข้ารหัสด้วยกุญแจสาธารณะ“ แล้วจินตนาการว่าแต่ละแพ็กเก็ตถูกล็อกด้วยใบรับรองของเซิร์ฟเวอร์ ภาพนี้ผิดในแบบที่สำคัญเมื่อคุณอ่านไฟล์กำหนดค่าหรือบันทึกแพ็กเก็ต ครึ่งกุญแจสาธารณะของ VPN คือการพิสูจน์ว่าคู่เป็นใครและตกลงเรื่องวัสดุลับ ส่วนครึ่งสมมาตรคือส่วนที่ปกป้องทราฟฟิกจริง แพ็กเก็ตแล้วแพ็กเก็ต ตลอดอายุของเซสชัน

สองครึ่งมีอายุ วิธีล้มเหลว และสิ่งที่เผยแพร่ได้อย่างปลอดภัยต่างกัน เมื่อแยกออกจากกัน คำถามอย่าง „RSA 2048 อ่อนกว่า AES-128 หรือไม่“ ก็เลิกทำให้สับสน เพราะทั้งสองไม่เคยเทียบกันได้

การดำเนินการสามอย่างที่มักถูกปนกัน

การเข้ารหัสด้วยกุญแจสาธารณะเป็นร่มที่ครอบอย่างน้อยสามการดำเนินการต่างกัน ลายเซ็นพิสูจน์ว่าเจ้าของกุญแจส่วนตัวอนุมัติข้อความหนึ่ง การตกลงกุญแจช่วยให้สองฝ่ายได้ความลับร่วมจากค่าที่แลกกันอย่างเปิดเผย การเข้ารหัสด้วยกุญแจสาธารณะซ่อนข้อมูลใต้กุญแจสาธารณะของใครคนหนึ่ง ดังนั้นมีเพียงกุญแจส่วนตัวเท่านั้นที่เปิดได้

แฮนด์เชกของ VPN ใช้สองอย่างแรกเป็นหลัก ใบรับรองไม่ใช่กุญแจเข้ารหัส แต่เป็นถ้อยแถลงที่ลงนามซึ่งผูกชื่อกับกุญแจสาธารณะและให้อีกฝ่ายตัดสินใจว่าจะเชื่อกุญแจที่เพิ่งได้รับหรือไม่ ตัวอย่างเช่น การตั้งคีย์ใน TLS 1.3 อาศัยการตกลงกุญแจ (EC)DHE และลายเซ็นใบรับรอง ไม่ใช่การเข้ารหัสเซสชันด้วยกุญแจสาธารณะของเซิร์ฟเวอร์

แฮนด์เชกสร้างอะไรจริง ๆ

ในแฮนด์เชกสมัยใหม่ แต่ละฝ่ายสร้างคู่กุญแจชั่วคราว แลกครึ่งสาธารณะ และคำนวณความลับร่วมที่ไม่เคยผ่านสาย ความลับนั้นผ่านฟังก์ชันสร้างคีย์เพื่อสร้างกุญแจแยกตามทิศทาง พร้อม nonce และวัสดุ IV ที่ชั้นเรกคอร์ดต้องการ WireGuard ทำเช่นนี้ด้วยโครงสร้างที่อิง Noise ส่วน TLS 1.3 ทำด้วย HKDF บนทรานสคริปต์ของแฮนด์เชก

ข้อมูลรับรองระยะยาว — ใบรับรองกับกุญแจส่วนตัว หรือกุญแจ WireGuard แบบคงที่ — ยืนยันการแลกเปลี่ยนนั้น มันลงนามหรือผสมลงในทรานสคริปต์ คนนอกจึงจบแฮนด์เชกแทนคู่ไม่ได้ หลังจากนั้นข้อมูลรับรองไม่ได้ทำงานต่อแพ็กเก็ต หากทำ ทุกแพ็กเก็ตต้องใช้การดำเนินการด้วยกุญแจส่วนตัว และอุโมงค์ที่ใช้งานหนักจะถูกจำกัดด้วยการดำเนินการที่ช้าที่สุดในสแตก

ผลข้างเคียงสองอย่างตามมา หนึ่ง คีย์เซสชันใหม่ทุกครั้ง ผู้โจมตีที่ขโมยกุญแจระยะยาวภายหลังจึงถอดรหัสเซสชันที่บันทึกไว้ก่อนหน้าไม่ได้ หากการตกลงเป็นแบบชั่วคราว สอง คีย์เซสชันที่รั่วทำให้เซสชันเดียวเสียหาย ไม่ใช่ตัวตน

ทำไมข้อมูลปริมาณมากจึงใช้คีย์สมมาตร

ฟังก์ชันสมมาตรรับปริมาณได้ดี AES-GCM หรือ ChaCha20-Poly1305 ประมวลผลแต่ละแพ็กเก็ตด้วยคีย์ที่อยู่ในหน่วยความจำแล้ว ยืนยันหัวเรื่อง และเพิ่มตัวนับ ฝ่ายรับตรวจ nonce และแท็กการยืนยัน แล้วทิ้งสิ่งที่ล้มเหลวหรือซ้ำ วิธีนี้ถูกพอที่จะทำงานด้วยความเร็วเส้นบนฮาร์ดแวร์ทั่วไป และโครงสร้างเดียวกันให้ทั้งความลับและความสมบูรณ์ในการผ่านครั้งเดียว

โครงสร้างนี้ยังเป็นที่อยู่ของบั๊กการนำไปใช้ส่วนใหญ่ nonce ที่ซ้ำใน GCM ทำให้ความลับและความถูกต้องแตกพร้อมกัน โปรโตคอลจึงสร้างคีย์ตามทิศทางและเก็บตัวนับหรือยุคที่ชัดเจน หากคุณอ่านบันทึกแพ็กเก็ตและความยาวข้อความเข้ารหัสตรงกับข้อความธรรมดาบวกส่วนเพิ่มคงที่ แสดงว่าชั้นสมมาตรทำงาน ไม่ใช่การดำเนินการด้วยกุญแจสาธารณะต่อแพ็กเก็ต

อายุ การหมุนคีย์ และความลับไปข้างหน้า

คีย์เซสชันถูกออกแบบให้หมดอายุ TLS 1.3 ให้ข้อความ KeyUpdate หมุนคีย์ทราฟฟิกได้ WireGuard ต่ออายุเซสชันตามเวลาหรือจำนวนข้อความที่กำหนด และเก็บคีย์เก่าไว้สั้น ๆ สำหรับแพ็กเก็ตที่อยู่ระหว่างทาง OpenVPN เจรจาคีย์ช่องข้อมูลของตนใหม่ตามตาราง โดย reneg-sec ควบคุมช่วงเวลา

ไม่มีการหมุนใดเหมือนการต่ออายุใบรับรอง ใบรับรองอาจใช้ได้หนึ่งปีในขณะที่คีย์เซสชันเปลี่ยนทุกไม่กี่นาที และเปลี่ยนใบรับรองได้โดยไม่แตะคีย์ของอุโมงค์ที่ทำงานอยู่ เมื่อวางแผนการหมดอายุ ให้ถามว่าคุณกำลังหมุนวัตถุใด คำตอบกำหนดว่าลูกค้าจะเชื่อมต่อใหม่หรือเพียงต่ออายุคีย์

อ่านการตั้งค่าและวินิจฉัยโดยไม่ปนวัตถุ

ในทางปฏิบัติ คุณเลือกโปรโตคอลที่สมบูรณ์และพื้นฐานที่รองรับ ไม่ใช่ประกอบเอง คีย์ --tls-crypt ของ OpenVPN ปกป้องช่องควบคุม ช่องข้อมูลใช้ฟังก์ชันสมมาตรที่เจรจาแล้ว รายการ PrivateKey และ PublicKey ของ WireGuard เป็นวัสดุระบุตัวตน ส่วนคีย์ขนส่งสร้างจากภายใน การอ่านฟิลด์เหล่านั้นเป็นความลับชนิดเดียวกันนำไปสู่ข้อผิดพลาด เช่น การวางกุญแจสาธารณะในที่ที่ควรเป็นกุญแจส่วนตัว

แยกวัสดุสาธารณะออกจากวัสดุส่วนตัว ใบรับรอง กุญแจสาธารณะ WireGuard และลายนิ้วมือปลอดภัยที่จะแชร์ในตั๋วสนับสนุน ส่วนกุญแจส่วนตัว กุญแจที่แชร์ล่วงหน้า และคีย์เซสชันที่ส่งออกไม่ปลอดภัย เมื่อเทียบความแข็งแรง ให้เทียบภายในชนิดเดียวกัน ตัวระบุเส้นโค้งวงรี ขนาดมอดุลัส RSA และขนาดคีย์ AES วัดสิ่งที่ต่างกันภายใต้สมมติฐานที่ต่างกัน ข้อกำหนด TLS 1.3 เป็นแหล่งอ้างอิงที่มีประโยชน์ว่าสองชั้นประกอบกันอย่างไร แม้อุโมงค์ของคุณไม่ใช่ TLS

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