Умножение в CKKS превращает шифртекст в тройку и взрывает ошибку квадратично
CKKS – Addition and Multiplication
Продолжение туториала Jeremy Kun по гомоморфному шифрованию CKKS: сложение шифртекстов сводится к почленному сложению полиномов, а вот умножение устроено хитрее. Произведение двух пар полиномов даёт тройку, которая расшифровывается скалярным произведением с базисом из степеней секретного ключа. Ошибка при этом растёт как минимум квадратично, масштаб становится Δ², а длину шифртекста придётся сокращать реляинеаризацией. Автор разбирает формулы и проверяет их кодом на Python.
Для программ общего назначения это серьёзное ограничение CKKS: чтобы корректно отслеживать рост ошибки, фактически нужна оценка диапазонов промежуточных значений переменных в вашей программе.