Индикаторы ошибок декодирования и дешифрования в SEAL

Я знаю, что в SEAL 2.3.1 ошибки декодирования и дешифрования не пройдут автоматически. Т.е. при попытке декодирования / дешифрования некоторого результата вычислений нет индикаторов ошибки недостаточного шума или обнаружения нарушений настройки plain_modulus, poly_modulus. Существуют ли эти индикаторы в какой-либо из более поздних версий, например в 3.0, 3.1, 3.2 или неправильное декодирование или дешифрование по-прежнему не удается?


person TalG    schedule 02.03.2019    source источник


Ответы (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 переполнения никогда не могут быть обнаружены в зашифрованном виде.

person Kim Laine    schedule 03.03.2019
comment
Может ли FractionalEncoder в v2.3.1 также обнаружить ошибку переполнения декодирования? Если да, то это встроенная функциональность или мне нужно вызывать для нее какую-то функцию? - person TalG; 03.03.2019
comment
Нет, он не может обнаружить переполнение коэффициентов полинома открытого текста mod plain_modulus. Невозможно узнать из открытого текста, были ли коэффициенты зациклены или нет, и это не может быть обнаружено во время вычисления. - person Kim Laine; 04.03.2019