เป้าหมายคือให้อลิซส่งข้อความเข้ารหัสไปให้บ็อบ ทั้งบ๊อบและคนอื่นไม่ควรถอดรหัสข้อความได้ อลิซควรจะสามารถถอดรหัสได้เมื่อข้อมูลทั้งหมดแสดงให้เธอเห็น อย่างไรก็ตาม อลิซไม่สามารถเก็บสิ่งใดที่เกี่ยวข้องกับข้อความได้
คีย์ส่วนตัว:
- X1 - บิตสุ่ม
- X2 - บิตสุ่ม
- M - จำนวนเฉพาะขนาดใหญ่
คีย์ที่ส่ง:
- A - จำนวนเฉพาะขนาดใหญ่แบบสุ่ม
ในการส่งข้อความ:
- สร้างไพรม์สุ่ม A
- msg = msg XOR X1
- msg = msg * A (สมัย M)
- msg = msg XOR X2
- ส่ง (msg, A)
ในการถอดรหัส:
- B = ผกผันการคูณของ A (mod M)
- msg = msg XOR x2
- msg = msg * B (สมัย M)
- msg = msg XOR x1
แนวคิดคือการคูณถูกประกบระหว่าง XOR สองตัว ซึ่งกำจัดรูปแบบใดๆ ที่สามารถระบุตัวตนได้
นี่เป็นอัลกอริทึมที่สมเหตุสมผลหรือฉันทำผิดพลาดที่ไหนสักแห่ง?
(หมายเหตุ: ฉันเข้าใจว่าการเข้ารหัสเช่น RSA เป็นมาตรฐานอุตสาหกรรมสำหรับปัญหาประเภทนี้ อย่างไรก็ตาม ฉันสงสัยว่าวิธีแก้ปัญหาที่ง่ายกว่านี้จะเป็นไปได้หรือไม่เมื่อเดิมพันต่ำกว่า กรณีการใช้งานที่นี่ไม่ได้มีความปลอดภัยสูงอย่างเหลือเชื่อ แต่มีไว้สำหรับ บางอย่าง เช่น บริการ CAPTCHA เราสามารถให้เซิร์ฟเวอร์ออกคำถาม CAPTCHA และส่งคำตอบไปยังไคลเอ็นต์ โดยขอให้เขาส่งคำตอบกลับมาพร้อมกับคำตอบที่เข้ารหัส ทำให้ไม่ต้องใช้ที่เก็บข้อมูลฝั่งเซิร์ฟเวอร์)