Forward secrecy สำหรับ VPN: กุญแจที่ถูกขโมยเปิดอะไรได้บ้าง
Forward secrecy จำกัดสิ่งที่กุญแจระบุตัวตนที่ถูกขโมยในภายหลังเปิดเผยเกี่ยวกับเซสชันที่บันทึกไว้. ไม่ได้ปกป้องข้อความธรรมดาที่ใช้งานอยู่บนอุปกรณ์ที่ถูกบุกรุก.
วันนี้ให้บันทึกอุโมงค์ที่เข้ารหัสไว้ ขโมยกุญแจส่วนตัวระยะยาวของเซิร์ฟเวอร์ในปีหน้า แล้วลองถอดรหัสบันทึกนั้น. Forward secrecy คือคุณสมบัติที่บอกว่ากุญแจที่ถูกขโมยจะไม่เพียงพอด้วยตัวเอง. นี่เป็นข้อความเกี่ยวกับเซสชันที่บันทึกไว้และความลับเฉพาะ ไม่ใช่คำสัญญาทั่วไปว่าอุโมงค์นั้นปลอดภัย. การกำหนดขอบเขตให้ถูกต้องคือสิ่งที่ทำให้คำนี้มีประโยชน์.
คำถามนี้เกี่ยวกับบันทึก ไม่ใช่เซสชันที่ใช้งานอยู่
กุญแจระยะยาวระบุจุดปลายและลงนามในแฮนด์เชก. กุญแจเซสชันเข้ารหัสทราฟฟิกจริง และในการออกแบบที่มี forward secrecy กุญแจเหล่านี้ได้มาจากวัสดุแลกเปลี่ยนกุญแจใหม่ที่ทั้งสองฝ่ายสร้างขึ้นแล้วทิ้งภายหลัง. ผู้โจมตีที่มีเพียงกุญแจระยะยาวไม่สามารถสร้างค่าเหล่านั้นขึ้นใหม่ได้. ผู้โจมตีที่มีสถานะเซสชันที่ใช้งานอยู่ยังทำได้ นั่นคือเหตุผลที่การรับประกันเกี่ยวกับอดีตไม่ใช่ปัจจุบัน.
ข้อกล่าวอ้างนี้มีเงื่อนไข: จะเป็นจริงก็ต่อเมื่อความลับชั่วคราวถูกทำลายจริงและโปรโตคอลเป็นอย่างที่คุณคิด. การติดตั้งแบบผสมอาจทำให้เป็นจริงบนอุโมงค์หนึ่งและล้มเหลวบนอีกอุโมงค์หนึ่ง.
ความลับหนึ่งไม่ควรสร้างความลับอื่นขึ้นใหม่
ตรวจสอบโหมดที่เจรจากันแทนหน้าตลาด. การส่งออกของแฮนด์เชกระบุการแลกเปลี่ยนกุญแจและเวอร์ชันโปรโตคอล.
openssl s_client -connect vpn.example.com:443 -tls1_3 -brief
swanctl --list-sasสรุปของ s_client แสดงเวอร์ชัน TLS และกลุ่มแลกเปลี่ยนกุญแจ และกลุ่มชั่วคราวคือสัญญาณที่มองเห็นได้ของข้อตกลงกุญแจที่มี forward secrecy. รายการ swanctl แสดงสมาคม IKE และ CHILD พร้อมตัวจับเวลาต่ออายุกุญแจ ดังนั้นคุณจะเห็นได้ว่าการติดตั้งต่ออายุกุญแจตามกำหนดเวลาหรือไม่. การแลกเปลี่ยนกุญแจ RSA แบบคงที่ หรือโหมดความเข้ากันได้แบบเก่า สูญเสียคุณสมบัตินี้โดยไม่คำนึงถึงชื่อรหัส. จดบันทึกโหมดที่คุณสังเกตเห็น ไม่ใช่โหมดที่ผู้ขายโฆษณา.
การต่ออายุกุญแจไม่ใช่ forward secrecy โดยอัตโนมัติ
อุโมงค์ต่ออายุกุญแจบ่อยแค่ไหนเป็นคำถามแยกจากการที่กุญแจแต่ละดอกได้มาอย่างไร. การออกแบบที่สร้างกุญแจใหม่จากความลับระยะยาวอาจต่ออายุทุกนาทีและยังคงตกทดสอบ เพราะการบุกรุกในภายหลังจะสร้างกุญแจทั้งหมดขึ้นใหม่. ในทางกลับกัน โปรโตคอลที่ต่ออายุกุญแจน้อยครั้งก็ยังมี forward secrecy ได้เมื่อการแลกเปลี่ยนแต่ละครั้งเป็นอิสระ. อ่านที่มาของกุญแจ ไม่ใช่ช่วงเวลา และอย่าสับสนตัวจับเวลาการเชื่อมต่อใหม่ที่สั้นกับการรับประกันทางการเข้ารหัส.
ความสับสนเดียวกันปรากฏกับชื่อรหัส: รหัสสมัยใหม่ไม่ได้บอกอะไรเกี่ยวกับวิธีที่กุญแจของมันมาถึง.
สิ่งที่ยังมองเห็นได้หลังการรับประกัน
Forward secrecy ปกป้องข้อความธรรมดาของเซสชันที่บันทึกไว้จากการบุกรุกกุญแจในอนาคต และไม่ได้ทำอะไรกับผู้โจมตีที่อ่านทราฟฟิกที่ใช้งานอยู่บนจุดปลายที่ถูกบุกรุก. มันไม่ลบที่อยู่ปลายทาง เวลา หรือปริมาณออกจากบันทึก และไม่จำกัดว่าผู้ให้บริการเก็บบันทึกการเชื่อมต่อไว้นานเท่าใด. มันไม่ทำให้ไคลเอนต์ที่ถูกบุกรุกน่าเชื่อถือเช่นกัน เพราะผู้โจมตีอยู่ในที่ที่เนื้อหาปรากฏชัดอยู่แล้ว.
เมื่อผู้ให้บริการอ้างว่ามี forward secrecy ให้ถามว่าความลับระยะยาวใดถือว่าถูกขโมย และความลับเซสชันใดยังไม่พร้อมใช้งาน. หากสองคำถามนี้มีคำตอบที่ชัดเจน ข้อกล่าวอ้างนั้นก็มีความหมาย.