Я знаю, что в SEAL 2.3.1 ошибки декодирования и дешифрования не пройдут автоматически. Т.е. при попытке декодирования / дешифрования некоторого результата вычислений нет индикаторов ошибки недостаточного шума или обнаружения нарушений настройки plain_modulus, poly_modulus. Существуют ли эти индикаторы в какой-либо из более поздних версий, например в 3.0, 3.1, 3.2 или неправильное декодирование или дешифрование по-прежнему не удается?
Индикаторы ошибок декодирования и дешифрования в SEAL
Ответы (1)
По сравнению с SEAL 2.3.1 существенных изменений нет, за исключением того, что, начиная с SEAL 3.0, наличие схемы CKKS усложняет ответ.
Расшифровка. SEAL 3.2.0 не указывает на то, что баланс шума равен нулю. Вам нужно будет проверить это отдельно для схемы BFV; Схема CKKS не имеет аналогичного чистого понятия шума. Более того, утверждение о том, что дешифрование не работает, является немного неверным: дешифрование всегда успешно и дает некоторый выходной открытый текст, но пара зашифрованный текст-открытый текст может иметь максимальный шум (для BFV). Пользователь может захотеть реализовать функцию, которая сначала проверяет уровень шума, а затем расшифровывает, но это требует некоторой производительности и, вероятно, не имеет смысла делать это автоматически с помощью SEAL.
Декодирование. При использовании схемы CKKS SEAL 3.2.0 выдает ошибки декодирования (при использовании CKKSEncoder
), например, когда открытый текст имеет слишком большой масштаб. Однако такой открытый текст не может быть создан при правильном использовании _2 _ / _ 3_. Декодирование CKKS будет неправильным, если масштаб и сообщение настолько велики, что их продукт обтекает coeff_modulus
, но Evaluator
не может это обнаружить, как и CKKSEncoder
. Для BFV IntegerEncoder
может обнаруживать ошибки переполнения декодирования и выдает в этих случаях (как в SEAL 2.3.1), но для BatchEncoder
нет неправильных декодирований, поэтому такие вещи не могут быть обнаружены вообще. Обратите внимание, что plain_modulus
переполнения никогда не могут быть обнаружены в зашифрованном виде.
FractionalEncoder
в v2.3.1 также обнаружить ошибку переполнения декодирования? Если да, то это встроенная функциональность или мне нужно вызывать для нее какую-то функцию?
- person TalG; 03.03.2019
plain_modulus
. Невозможно узнать из открытого текста, были ли коэффициенты зациклены или нет, и это не может быть обнаружено во время вычисления.
- person Kim Laine; 04.03.2019