ถ้าฉันเข้าใจถูกต้อง คุณต้องการวิธีพิสูจน์ตามรายการ $\{A, B, C, D, \cdots\}$ ของคีย์สาธารณะซึ่งบางคนให้คีย์ $K$ เป็น "แท็ก" ที่ตรงกับคู่ของคีย์จากรายการนี้โดยไม่เปิดเผยว่าเป็นคีย์ใด ผมขอเรียกสิ่งนี้ว่า "แท็กที่ถูกต้อง"
เพื่อความง่าย สมมุติว่า $K$ เป็นแท็กของอลิซและบ๊อบ อลิซหรือบ็อบสามารถพิสูจน์ได้ $K$ เป็นแท็กที่ถูกต้อง โดยใช้เทคนิคการพิสูจน์ความรู้ที่ไม่มีมาตรฐาน สัญชาตญาณมีดังนี้:
(1) ถ้าคู่ $(ก,ข)$ ไม่ควรซ่อนตัว จากนั้นบ็อบก็สามารถพิสูจน์ได้ว่าไม่มีความรู้ $(G,A,B,K)$ เป็นทูเพิล Diffie-Hellman โดยใช้พยานของเขา $ข$ (ดังนั้น $G^b = B$ และ $A^b = K$). มีการพิสูจน์ความรู้ที่ไม่มีมาตรฐานสำหรับความสัมพันธ์นี้ ดูตัวอย่างคำตอบของฉัน ที่นี่.
(2) เพื่อปกปิดทั้งคู่ เราเปลี่ยนข้อความ: แทนที่จะพิสูจน์ "$(G,A,B,K)$ เป็นทูเพิลดิฟฟี-เฮลล์แมน" บ็อบพิสูจน์ข้อความ "$(G,A,B,K)$ คือ Diffie-Hellman ทูเพิล หรือ $(G,A,C,K)$ คือ Diffie-Hellman ทูเพิล หรือ $(G,A,D,K)$ Diffie-Hellman tuple..." และอื่นๆ (สำหรับกุญแจสาธารณะที่แตกต่างกันแต่ละคู่) จากนั้นใช้ CDS OR-เคล็ดลับเราสามารถแปลงการพิสูจน์ที่ไม่มีความรู้สำหรับความสัมพันธ์ Diffie-Hellman เป็นการพิสูจน์ที่ไม่มีความรู้สำหรับ OR ของความสัมพันธ์ Diffie-Hellman จำนวนมาก (โดยเฉพาะอย่างยิ่ง การพิสูจน์ที่ได้จะไม่เปิดเผยว่าข้อความใดใน OR เป็นจริง หนึ่ง).
ข้างต้นเป็นวิธีแก้ปัญหาที่ง่ายและตรงจุดที่สุด แน่นอนว่ามันแพง: ค่าใช้จ่ายในการพิสูจน์จะเพิ่มขึ้นตาม $n\cdot(n-1)/2$ คูณด้วยค่าใช้จ่ายของการพิสูจน์ Diffie-Hellman ครั้งเดียว (หรือ $n$ ครั้งหากเราสามารถเปิดเผยตัวตนของหนึ่งในสองฝ่ายที่เกี่ยวข้องกับแท็กได้ $K$). มีวิธีแก้ไขเพื่อลดค่าใช้จ่าย แต่ใช้เทคนิคการเข้ารหัสขั้นสูงกว่ามาก ตัวอย่างที่ดีได้แก่ บทพิสูจน์หนึ่งในหลายข้อ ซึ่งเปิดใช้งานการพิสูจน์ OR ประเภทนี้ได้อย่างแม่นยำ แต่ด้วยการสื่อสารแบบลอการิทึมในจำนวนคำสั่ง OR
สิ่งสุดท้าย: หากคุณต้องการให้ทุกคนตรวจสอบการพิสูจน์และไม่ต้องการพิสูจน์ซ้ำกับทุกคน คุณสามารถทำให้การพิสูจน์ไม่โต้ตอบในแบบจำลอง oracle แบบสุ่มโดยใช้การแปลง Fiat-Shamir ด้วยวิธีนี้จะสามารถตรวจสอบได้แบบสาธารณะ นอกจากนี้ โปรดทราบว่าเมื่อฝ่ายใดฝ่ายหนึ่งส่งหลักฐานนี้ จะทำให้ข้อมูลรั่วไหลเสมอ: เช่น ข้อเท็จจริงที่ว่า Bob ส่งหลักฐานว่า $K$ เป็นแท็กที่ถูกต้องเสมอเผยให้เห็นว่า Bob สามารถตรวจสอบตัวเองได้ตั้งแต่แรก ซึ่งหมายความว่าคีย์สาธารณะของ Bob เป็นหนึ่งในคีย์ที่เกี่ยวข้อง มันอาจจะโอเคในสถานการณ์ของคุณ แต่คุณต้องชัดเจนกับสิ่งนั้น