หากไคลเอ็นต์สามารถแชร์รหัสลับได้ เราก็สามารถใช้ Fully Homomorphic Schemes เพื่อบรรลุเป้าหมายนี้ได้ อนุญาต $k_{prv}$ รหัสส่วนตัวของลูกค้าและ $k_{ผับ}$ เป็นรหัสสาธารณะที่เซิร์ฟเวอร์มีอยู่
- เมื่อใดก็ตามที่แฮช $h_i$ ส่งไปยังเซิร์ฟเวอร์จะถูกเข้ารหัส $e_i =E(k_{ผับ},h_i)$ ( TFHE ที่ดีกว่า) โดยลูกค้า
- เซิร์ฟเวอร์, ใช้ FHE วงจรความเท่าเทียมกัน $C$ ที่ส่งคืนการเข้ารหัส $E(1)$ ถ้าเท่ากัน.
ความละเอียด = E(k_pub,0)
สำหรับแต่ละ E(h_j) ในช่วง (1,i-1):
cur = C(h_i, h_j,k_pub) //เปรียบเทียบ
res = FHE_Add(res,cur,k_pub) // สะสมผลลัพธ์
คืนความละเอียด
หมายเหตุ:
- สิ่งนี้คล้ายกับอะไร การตรวจสอบรหัสผ่านของ Microsoft.
- ลูกค้าสามารถมีวิธีการคีย์สาธารณะมาตรฐานเพื่อแบ่งปัน $k_{prv}$ และ $k_{ผับ}$
- โปรโตคอลนี้ต้องการสิ่งนั้น เซิร์ฟเวอร์กึ่งซื่อสัตย์.
- เซิร์ฟเวอร์มี การคำนวณคนตาบอด พวกเขาไม่ได้เรียนรู้อะไรเลยจากค่าที่เข้ารหัส คำนวณ และจากผลลัพธ์ อย่างไรก็ตาม
- หากไคลเอ็นต์ส่งข้อมูลใหม่เพื่ออัปโหลดโดยไม่ถามถึงการมีอยู่ เซิร์ฟเวอร์จะอนุมานได้ว่าไม่มีแฮชก่อนหน้า