การแลกเปลี่ยนและการสร้างคีย์
โปรโตคอลการสร้างคีย์ช่วยให้คู่สนทนาสามารถตกลงร่วมกันในคีย์ลับใหม่ โดยผูกคีย์นั้นเข้ากับข้อมูลระบุตัวตนที่ได้รับการยืนยัน เพื่อให้การสื่อสารในภายหลังได้รับการปกป้องด้วยการเข้ารหัสแบบสมมาตรที่รวดเร็ว
Definition
การสร้างคีย์คือโปรโตคอลที่ทำให้คู่สนทนาตั้งแต่สองฝ่ายขึ้นไปสามารถใช้คีย์ลับร่วมกันได้ ในการตกลงคีย์ (key agreement) ทั้งสองฝ่ายมีส่วนร่วมในการสร้างคีย์ ในขณะที่การส่งผ่านคีย์ (key transport) ฝ่ายหนึ่งสร้างและส่งคีย์อย่างปลอดภัย
Scope
หัวข้อนี้ครอบคลุมโปรโตคอลการแลกเปลี่ยนคีย์ที่ได้รับการยืนยันตัวตน (AKE): การตกลงคีย์เทียบกับการส่งผ่านคีย์ ภัยคุกคามที่โปรโตคอลเหล่านี้ต้องต้านทาน (การโจมตีแบบคนกลาง, การโจมตีซ้ำ, การปลอมแปลงตัวตนจากการถูกบุกรุกคีย์) คุณสมบัติความปลอดภัย เช่น ความลับไปข้างหน้า (forward secrecy) และการควบคุมคีย์แบบมีส่วนร่วม (contributory key control) และแบบจำลองเชิงรูปนัย (Bellare-Rogaway, Canetti-Krawczyk) ที่ใช้ในการวิเคราะห์ นอกจากนี้ยังกล่าวถึงวิธีการเพิ่มการยืนยันตัวตนให้กับ Diffie-Hellman แบบดิบๆ โดยไม่รวมถึงคณิตศาสตร์ของปัญหาพื้นฐานและโปรโตคอลช่องสัญญาณที่ใช้งานจริง ซึ่งจะกล่าวถึงแยกต่างหาก
Core questions
- โปรโตคอลการแลกเปลี่ยนคีย์ที่ได้รับการยืนยันตัวตนต้องรับประกันคุณสมบัติความปลอดภัยใดบ้าง?
- การยืนยันตัวตนถูกนำมาใช้กับโปรโตคอลการตกลงคีย์แบบดิบๆ เช่น Diffie-Hellman ได้อย่างไร?
- ความลับไปข้างหน้าคืออะไร และการเลือกคีย์ชั่วคราวให้ความลับไปข้างหน้าได้อย่างไร?
- แบบจำลองเชิงรูปนัยสามารถจับภาพผู้โจมตีที่กระตือรือร้นซึ่งควบคุมเครือข่ายได้อย่างไร?
- โปรโตคอลต้องต้านทานการโจมตีใดบ้าง (การโจมตีแบบคนกลาง, การโจมตีซ้ำ, การปลอมแปลงตัวตนจากการถูกบุกรุกคีย์, การโจมตีแบบ unknown-key-share)?
Key concepts
- การตกลงคีย์เทียบกับการส่งผ่านคีย์
- การแลกเปลี่ยนคีย์ที่ได้รับการยืนยันตัวตน
- ความลับไปข้างหน้า
- คีย์ชั่วคราว
- การโจมตีแบบคนกลาง
- การปลอมแปลงตัวตนจากการถูกบุกรุกคีย์
- การโจมตีแบบ unknown-key-share
- แบบจำลอง Bellare-Rogaway และ Canetti-Krawczyk
- ฟังก์ชันการสร้างคีย์
Key theories
- การแลกเปลี่ยนคีย์ที่ได้รับการยืนยันตัวตน
- การตกลงคีย์แบบดิบๆ ให้คีย์ลับที่ใช้ร่วมกันแต่ไม่รับประกันตัวตนของคู่สนทนา โปรโตคอล AKE เพิ่มการยืนยันตัวตน (ผ่านลายเซ็น, ใบรับรอง, หรือคีย์ที่ใช้ร่วมกันล่วงหน้า) เพื่อให้แต่ละฝ่ายรู้ว่าตนเองใช้คีย์ร่วมกับคู่สนทนาที่ตั้งใจไว้ ไม่ใช่ผู้แอบอ้าง
- ความลับไปข้างหน้าและความสดใหม่ของคีย์เซสชัน
- การใช้วัสดุคีย์ชั่วคราวที่สดใหม่สำหรับแต่ละเซสชันและรวมเข้ากับคีย์การยืนยันตัวตนระยะยาว จะได้คีย์เซสชันที่ยังคงเป็นความลับแม้ว่าคีย์ระยะยาวจะถูกบุกรุกในภายหลัง ในขณะเดียวกันก็ต้านทานการโจมตีซ้ำของเซสชันเก่า
Mechanisms
AKE โดยทั่วไปจะรวมการแลกเปลี่ยน Diffie-Hellman แบบชั่วคราวเข้ากับการยืนยันตัวตน: คู่สนทนาจะแลกเปลี่ยนค่าสาธารณะแบบชั่วคราวและพิสูจน์ตัวตนโดยการลงนามในข้อมูลการถอดความ (transcript data) หรือโดยการใช้คีย์ระยะยาวที่ใช้ร่วมกันล่วงหน้าหรือได้รับการรับรอง ความลับที่ใช้ร่วมกันที่ได้จะถูกส่งผ่านฟังก์ชันการสร้างคีย์ (key-derivation function) พร้อมกับแฮชของข้อมูลการถอดความเพื่อผูกเข้ากับเซสชัน ซึ่งจะช่วยป้องกันการโจมตีซ้ำและการโจมตีแบบ unknown-key-share และให้คีย์เซสชันที่สดใหม่และได้รับการยืนยันตัวตน
Clinical relevance
การสร้างคีย์เป็นขั้นตอนเริ่มต้นของการเชื่อมต่อที่ปลอดภัยเกือบทุกครั้ง: การจับมือ TLS 1.3, Signal X3DH และ Double Ratchet, IPsec IKEv2, SSH และ WireGuard ล้วนดำเนินการแลกเปลี่ยนคีย์ที่ได้รับการยืนยันตัวตนก่อนที่ข้อมูลใดๆ จะไหลผ่าน ความถูกต้องของโปรโตคอลเหล่านี้เป็นตัวกำหนดว่าผู้โจมตีสามารถปลอมแปลงเป็นเซิร์ฟเวอร์หรือแอบอยู่ระหว่างสองฝ่ายได้หรือไม่
Evidence & guidelines
แผนการสร้างคีย์ได้รับการกำหนดมาตรฐานใน NIST SP 800-56A/B และวิเคราะห์ในแบบจำลองเช่น Bellare-Rogaway และ Canetti-Krawczyk โปรโตคอลสมัยใหม่ (TLS 1.3, Noise framework) กำหนดให้มีการแลกเปลี่ยนคีย์แบบชั่วคราวที่มีความลับไปข้างหน้าและได้รับการวิเคราะห์ความปลอดภัยอย่างเป็นทางการ การแลกเปลี่ยนคีย์แบบคงที่แบบเดิมที่ไม่มีความลับไปข้างหน้าไม่เป็นที่แนะนำ
History
การแลกเปลี่ยนคีย์ที่ได้รับการยืนยันตัวตนพัฒนามาจากโปรโตคอล Diffie-Hellman ในปี 1976 และการตระหนักว่าจำเป็นต้องมีการยืนยันตัวตนเพื่อต้านทานผู้โจมตีที่กระตือรือร้น ในช่วงทศวรรษ 1990-2000 ได้มีการสร้างแบบจำลองความปลอดภัยที่เข้มงวด (Bellare-Rogaway 1993, Canetti-Krawczyk 2001) และโปรโตคอลแบบ station-to-station และ MQV บทเรียนเหล่านี้ได้รับการรวบรวมในการจับมือ TLS 1.3 ที่ได้รับการวิเคราะห์อย่างเป็นทางการและกรอบงานโปรโตคอล Noise
Key figures
- Whitfield Diffie
- Martin Hellman
- Mihir Bellare
- Phillip Rogaway
- Ran Canetti
- Hugo Krawczyk
Related topics
Seminal works
- diffie1976
- katz2020
- menezes1996
Frequently asked questions
- ความแตกต่างระหว่างการตกลงคีย์และการส่งผ่านคีย์คืออะไร?
- ในการตกลงคีย์ (เช่น Diffie-Hellman) ทั้งสองฝ่ายมีส่วนร่วมในการสร้างค่าสุ่ม ดังนั้นจึงไม่มีฝ่ายใดฝ่ายหนึ่งกำหนดคีย์สุดท้ายได้เพียงลำพัง ในการส่งผ่านคีย์ ฝ่ายหนึ่งสร้างคีย์และส่งคีย์นั้นโดยเข้ารหัสภายใต้คีย์สาธารณะของอีกฝ่าย การตกลงคีย์มักจะสนับสนุนความลับไปข้างหน้าได้ดีกว่า
- ทำไมการสร้างคีย์เพียงครั้งเดียวจึงไม่เพียงพอสำหรับการเชื่อมต่อที่ยาวนาน?
- คีย์ที่มีอายุการใช้งานยาวนานจะเพิ่มความเสี่ยงหากถูกบุกรุก และอาจถูกลดทอนลงด้วยการวิเคราะห์รหัสลับหรือการสังเกตการณ์ของผู้โจมตี โปรโตคอลจะทำการเปลี่ยนคีย์หรือ ratchet เป็นระยะ (เช่นใน Signal) เพื่อให้การบุกรุกคีย์เซสชันเดียวไม่เปิดเผยข้อความในอดีตหรืออนาคต