Цель состоит в том, чтобы Алиса отправила зашифрованное сообщение Бобу. Ни Боб, ни кто-либо другой не должны быть в состоянии расшифровать сообщение. Алиса должна быть в состоянии расшифровать его, когда ей будут показаны все данные. Однако Алиса не может сохранить ничего, связанного с сообщением.
Закрытые ключи:
- X1 - случайные биты
- X2 - случайные биты
- M - большое простое число
Переданный ключ:
- A - случайное большое простое число
Отправить сообщение:
- Сгенерировать случайное простое число A
- сообщение = сообщение XOR X1
- msg = msg * A (mod M)
- сообщение = сообщение XOR X2
- отправить (сообщение, А)
Чтобы расшифровать:
- B = мультипликативная инверсия A (mod M)
- сообщение = сообщение XOR x2
- msg = msg * B (mod M)
- сообщение = сообщение XOR x1
Идея состоит в том, что умножение зажато между двумя XOR, которые устраняют любой идентифицируемый шаблон.
Это разумный алгоритм или я где-то ошибся?
(Примечание: я понимаю, что шифры, такие как RSA, являются отраслевым стандартом для такого рода проблем. Однако мне интересно, возможно ли более простое решение, когда ставки ниже. Вариант использования здесь не невероятно высокий уровень безопасности, он для что-то вроде службы CAPTCHA, мы можем позволить серверу задать вопрос CAPTCHA и отправить ответ клиенту, попросив его вернуть свой ответ вместе с зашифрованным ответом, тем самым устраняя необходимость в хранилище данных на стороне сервера.)