Mục đích là để Alice gửi một tin nhắn được mã hóa cho Bob. Cả Bob và bất kỳ ai khác đều không thể giải mã tin nhắn. Alice sẽ có thể giải mã nó khi tất cả dữ liệu được hiển thị cho cô ấy. Tuy nhiên, Alice không thể lưu trữ bất cứ thứ gì liên quan đến tin nhắn.
Khóa riêng:
- X1 - bit ngẫu nhiên
- X2 - bit ngẫu nhiên
- M - số nguyên tố lớn
Khóa đã truyền:
- A - số nguyên tố lớn ngẫu nhiên
Gửi tin nhắn:
- Tạo số nguyên tố ngẫu nhiên A
- tin nhắn = tin nhắn XOR X1
- tin nhắn = tin nhắn * A (mod M)
- tin nhắn = tin nhắn XOR X2
- gửi (tin nhắn, A)
Để giải mã:
- B = Nghịch đảo nhân của A (mod M)
- tin nhắn = tin nhắn XOR x2
- tin nhắn = tin nhắn * B (mod M)
- tin nhắn = tin nhắn XOR x1
Ý tưởng là phép nhân được kẹp giữa hai XOR loại bỏ bất kỳ loại mẫu có thể nhận dạng nào.
Đây có phải là một thuật toán hợp lý hay tôi đã mắc lỗi ở đâu đó?
(Lưu ý: Tôi hiểu rằng các mật mã như RSA là tiêu chuẩn công nghiệp cho loại vấn đề này. Tuy nhiên, tôi tự hỏi liệu một giải pháp đơn giản hơn có khả thi khi số tiền đặt cược thấp hơn hay không. Trường hợp sử dụng ở đây không có độ an toàn cực kỳ cao, nó dành cho giống như dịch vụ CAPTCHA, chúng tôi có thể cho phép máy chủ đưa ra câu hỏi CAPTCHA và gửi câu trả lời cho khách hàng, yêu cầu anh ta trả lời câu trả lời của mình cùng với câu trả lời được mã hóa, do đó loại bỏ nhu cầu lưu trữ dữ liệu phía máy chủ.)