ECDH เป็นที่รู้จักกันในชื่อ กลไกการห่อหุ้มกุญแจซึ่งตามที่คุณพูดถึงนั้นคล้ายกับการเข้ารหัสคีย์สาธารณะ แต่ไม่เหมือนกัน
มีหลายเหตุผลที่ควรเลือกใช้ KEM ฉันจะพูดถึงอย่างรวดเร็ว
ก่อนอื่น โปรดทราบว่า KEM คือ (อย่างเป็นทางการ) ทูเพิลของสามอัลกอริทึม $(\mathsf{KGen}, \mathsf{Encaps}, \mathsf{DCaps})$, ที่ไหน
$\mathsf{KGen}$ ใช้เป็นอินพุตพารามิเตอร์ความปลอดภัย $1^\แลมบ์ดา$และส่งออกคู่กุญแจ $(sk, pk)$
$\mathsf{Encaps}$ ใช้เป็นอินพุตคีย์สาธารณะ $pk$ (และบางทีอาจจะเป็นการสุ่ม ซึ่งมักจะเป็นนัยเท่านั้น) และส่งคืนคู่ $(ก, ค)$ ของคีย์ที่ได้มา $k$, และ "ข้อความเข้ารหัส" $ค$
$\mathsf{Decaps}$ ใช้เป็นรหัสลับ $sk$ และ "ไซเฟอร์เท็กซ์" $ค$และส่งออกคีย์ที่ได้รับมาอีกรายการหนึ่ง $k'$.
KEM ถูกต้องถ้า $k = k'$ ในที่สุดเช่น คีย์ที่ได้รับทั้งสองตกลง
แนวคิดด้านความปลอดภัยของ KEM นั้นคล้ายคลึงกับของ PKE ซึ่งหมายความว่ามีวิธีธรรมชาติที่จะขยายแนวคิดดั้งเดิมของการรักษาความปลอดภัย IND-CPA/IND-CCA
โปรดทราบว่าเราสามารถสร้าง KEM โดยใช้ PKE ใดก็ได้โดยมี $\mathsf{Encaps}_{pk}(r) = \mathsf{Enc}_{pk}(r)$, ที่ไหน $r$ คือการสุ่มที่ใช้โดย KEM (นี่คือแนวคิด "เข้ารหัสคีย์สุ่มแบบสม่ำเสมอ" ที่คุณกล่าวถึง)
บางทีเราควรเขียนให้ชัดเจน $\mathsf{Enc}_{pk}(f(r))$ เป็นฟังก์ชั่นบางอย่างของการสุ่ม --- ฉันจะไม่ยุ่งกับการเปิดเผยนี้
ทำไมต้องสนใจ KEMs?
ในขณะที่มีสิ่งอื่นๆ ที่คุณสามารถกล่าวถึงได้ ก วิชาเอก ประเด็นคือมีคุณสมบัติบางอย่างที่ KEM "ธรรมชาติ" (เช่น ECDH) มีซึ่ง KEM สร้างขึ้นจากวิธีการ "เข้ารหัสคีย์สุ่ม" ไม่ มี.
นี่คือการบอกว่า ECDH ไม่ใช่ "แค่" KEM และสามารถใช้ในแอปพลิเคชันที่การเข้ารหัสคีย์สุ่มไม่ทำงาน
บางทีคุณสมบัติที่ชัดเจนที่สุดที่จะชี้ให้เห็นคือ "การไม่โต้ตอบ"
โดยเฉพาะอย่างยิ่ง ECDH สามารถเขียนเป็น
- ทั้งสองฝ่ายแลกกุญแจดิฟฟี่เฮลแมน $(g, g^{s_i})$แล้ว
- คำนวณฟังก์ชันง่ายๆ ของคู่คีย์เหล่านี้
ถ้าเราพยายามเขียนสิ่งนี้ด้วยไวยากรณ์ของ KEM เราอาจพูดอย่างนั้น $\mathsf{KGen}(1^\แลมบ์ดา)$ สร้างคู่กุญแจหนึ่งคู่ $(ก, s_0, ก^{s_0})$และนั่น $\mathsf{Encaps}_{g^{s_0}}(r) = (g, s_1, g^{s_1})$ สร้างคู่คีย์อื่นโดยที่เราจำลอง "ciphertext" เป็น $g^{s_1}$.
นี้มี มาก คุณสมบัติที่อยากรู้อยากเห็นแม้ว่า --- $g^{s_1}$ซึ่งเป็น "ciphertext" ของโครงร่าง ไม่ ขึ้นอยู่กับรหัสสาธารณะเลย (นอกเหนือจากตัวสร้างกลุ่ม $g$ซึ่งสามารถกำหนดมาตรฐานเป็นพารามิเตอร์สาธารณะได้)
นี่เป็นคุณสมบัติที่ค่อนข้างน่าแปลกใจและเป็นคุณสมบัติที่ไม่มีโครงร่าง "เข้ารหัสคีย์สุ่ม"
เป็นที่รู้จักกันว่าเป็นโครงร่างการแลกเปลี่ยนคีย์แบบไม่โต้ตอบ (NIKE)
คุณสมบัติเป็นทั้ง
มีประโยชน์ในทางปฏิบัติ --- "วงล้อคู่" ของ Signal ใช้คุณสมบัตินี้ในลักษณะสำคัญ ซึ่งทำให้ยากต่อการ "ปล่อย" KEM อื่นเพื่อใช้สำหรับสัญญาณ และ
ไม่ใช่เรื่องเล็กน้อยในทางทฤษฎี --- โดยทั่วไป การสร้าง NIKE นั้นต้องการสิ่งดั้งเดิมบางอย่าง เช่น การเข้ารหัส FHE/Functional มีผลลัพธ์ที่ทราบซึ่งแสดงว่าเป็นไปไม่ได้ที่จะสร้าง NIKE โดยใช้โครงร่าง (และรหัสที่น่าเชื่อถือ) ด้วย "พารามิเตอร์ขนาดเล็ก"
ในความเป็นจริง (ไม่รวมโครงร่างแบบตาข่ายที่มีพารามิเตอร์ขนาดใหญ่) ฉันรู้จัก NIKE หลังควอนตัมเพียงตัวเดียวคือ CSIDHนี่คือการพูดถึงการปรับเปลี่ยนสัญญาณอย่างตรงไปตรงมาเพื่อเป็นแบบหลังควอนตัม
- ใช้ CSIDH
- ใช้ตัวแปรที่มีประสิทธิภาพน้อยกว่าของโครงร่าง NIST PQC (กล่าวคือโครงร่างแบบตาข่ายที่มีพารามิเตอร์ขนาดเล็ก) หรือ
- ปรับเปลี่ยนโปรโตคอล Signal เองด้วยวิธีใดวิธีหนึ่ง โดยปกติแล้วจะมีการตีประสิทธิภาพบ้าง
แม้ว่าจะมีหลายสิ่งที่เหมาะสมกว่าที่คุณสามารถพูดเพื่อเปรียบเทียบ PKE และ KEM ได้ แต่ในทางทฤษฎีแล้ว มาก ประโยชน์มากมายสำหรับ ECDH --- เป็น NIKE ที่มีประสิทธิภาพซึ่งไม่ธรรมดาเลย