นี่คือสิ่งที่ฉันกำลังดำเนินการอยู่
ฉันต้องการ "เล็ก" ด้านล่างให้เล็กกว่าสิ่งต่อไปนี้มาก แต่สิ่งนี้จะใช้ได้กับจุดประสงค์ของคุณสำหรับชุดของสตริงไบนารี $S$, แฮชการเข้ารหัสลับ $H(x)$และคีย์ที่แบ่งปันล่วงหน้า $k$.
$H(S)=\text{sort} \{H(x) | x \ใน S\}$. เรียกสิ่งนี้ว่าพยานสาธารณะสำหรับ $S$. คุณสามารถซ่อนขนาดของชุดได้โดยการรวมแฮชแบบสุ่มเข้ากับโมดูลัสความยาวที่กำหนด นี่อาจเป็นพยานสาธารณะที่ไม่มีความซื่อสัตย์ แต่ให้แนวคิดพื้นฐาน
สมมติขนาดของ $x$ โดยทั่วไปจะมีขนาดใหญ่กว่า $H(x)$, การเป็นตัวแทนของพยาน $H(S)$ สำหรับ $S$ มีขนาดเล็กเมื่อเทียบกับตัวแทนสำหรับ $S$.
หากคุณต้องการจำกัดสิ่งนี้ให้กับผู้ที่มีคีย์สมมาตรแบบแบ่งล่วงหน้า k: (ฉันใช้ $+$ สำหรับต่อท้ายเพื่อแยกความแตกต่างจากชุด "so that")
$H^2(k+S)=\text{sort} \{H(k+H(k+x)) | x \ใน S\}$. ผนวกการตรวจสอบความถูกต้องของคีย์สำหรับการตรวจสอบความสมบูรณ์
$\text{พยานสำหรับ S}: H^2(k+S) + H(k+H^2(k+S))$
อีกครั้งเพื่อซ่อนขนาดของ $S$ คุณสามารถเพิ่มแฮชแบบสุ่มเป็นขนาดสูงสุดหรือ (ไม่สมบูรณ์) ให้กับโมดูลัสขนาด
ตรวจสอบการเป็นสมาชิก: ส่ง $(n,H(k+n) \bigoplus H(k+x))$ ที่ไหน $n$ เป็นตัวเลขที่เพิ่มขึ้น (อาจบอกโดยนัย เช่น การประทับเวลา) ผู้รับสามารถเปิดเผย $H(k+x)$ แล้วคำนวณ $H(k+H(k+x))$ เพื่อดูว่าอยู่ในชุดพยานหรือไม่