วิธีแก้ปัญหาโดยไม่ต้องสันนิษฐานว่า $a$ และ $ข$ ไม่เป็นศูนย์และไม่ต้องคำนวณผลคูณผกผัน ซึ่งไม่เกี่ยวข้องกับการสื่อสารระหว่างอลิซกับบ๊อบ นอกเหนือจากข้อตกลงล่วงหน้าเกี่ยวกับสตริงสุ่มทั่วไป (ซึ่งเรียกว่าโมเดล "ข้อความพร้อมกันส่วนตัว"):
อลิซและบ็อบเห็นด้วย $r,s,t$ (สามตัวเลขสุ่ม).
อลิซมาส่ง $c = a+r, c' = c\cdot s + t$ ถึงแครอลและบ็อบก็ส่ง $d = b+s, d' = b\cdot r - t$ ถึงแครอล แครอลคำนวณ $c\cdot d - (c' + d')$.
ที่นี่ผลรวมสามารถทำได้แบบโมดูโล $n$, ที่ไหน $n$ เป็นขอบเขตบนสาธารณะ $a$ และ $ข$และ "สุ่ม" หมายถึงองค์ประกอบสุ่มที่สม่ำเสมอของ $\mathbb{Z}/n\mathbb{Z}$.
หมายเหตุ: ประเด็นสำคัญในคำถามของคุณคือข้อสันนิษฐานที่ว่าแครอลจะไม่สมรู้ร่วมคิดกับอลิซและบ็อบ เป็นผลแบบดั้งเดิมที่การคำนวณที่ปลอดภัยไม่จำเป็นต้องมีการเข้ารหัสหรือการสันนิษฐานในการคำนวณทันทีที่จำนวนฝ่ายที่สามารถสมรู้ร่วมคิดต่ำกว่าครึ่งหนึ่งของจำนวนทั้งหมดอย่างเคร่งครัด ซึ่งเป็นกรณีนี้ ดังนั้น คุณไม่จำเป็นต้องมีไลบรารี/เครื่องมือพิเศษใน Golang นอกเหนือจากเลขคณิตพื้นฐาน