Проверка равенства двух зашифрованных шифротекстов Пайе без расшифровки
Предположим, что PAL() является гомоморфной функцией шифрования Пайе. Есть число а = 11
encA = PAL(a) = "21931381231" // '11' blinded with a r random value
encB = PAL(a) = "32323245232" // '11' blinded with another r
И затем у меня есть сервер, который должен проверить, если encA = encB, чтобы продолжить какие-то другие действия. Что еще более важно, сервер знает значение encA и то, что оно равно 11 в зашифрованном виде, но получает только encB от пользователя, не зная, какое это значение.
Есть ли способ проверить это равенство, кроме передачи ключа дешифрования на сервер?
Вариант использования заключается в том, что я хочу, чтобы пользователь отправил на сервер гомоморфно зашифрованное значение, которое добавляется к сумме. Однако я не хочу, чтобы это значение добавлялось, если оно не является точно определенным значением. Только другой человек знает ключ расшифровки, а сервер просто суммирует.
Причина этого в том, что я не могу доверять тому, что пользователь не отправит мне поврежденное значение, которое будет добавлено к сумме, и я не могу выполнить шифрование значения открытого текста, отправленного пользователем на сервер, потому что нет способа сокрытия случайного значения, которое ослепляет зашифрованный текст (это своего рода сервер, где все данные общедоступны).