Есть простой способ сделать это.
В частности, вы уже упоминали, что у вас есть процедура извлечения битовой маски.
Следовательно, учитывая $р(х)$, $p_2(x)$, и $p_2'(x)$ (ваши гомоморфные операции применены к $p_2$), позволять $p_3(x)$ быть результатом применения одной и той же битовой маски к $p_2'$.
Тогда нетрудно убедиться, что
$$p(x) - p_2(x) + p_3(x)$$
дает вам желаемый результат.
Это сводит все к двум процедурам «извлечения битовой маски», гомоморфному вычислению (которое кажется неизбежным) и нескольким дополнениям (которые должны быть дешевыми).
Тогда возникают естественные вопросы:
- может ли быть достаточно извлечения одной битовой маски?
- Как можно эффективно применить извлечение битовой маски?
Если слот, который вы хотите вычислить, публичный, должно быть достаточно умножить на подходящий постоянный (с коэффициентами 0/1) многочлен, что дает мультипликативные накладные расходы, равные 1, для каждого извлечения битовой маски.
Частные битовые маски кажутся менее эффективными --- я могу придумать что-то, что использует $ О (п) $ умножения (но, по крайней мере, имеет глубину 1), по сути, путем вычисления умножения (зашифрованного) логического значения 0/1 для каждого индекса, чтобы «выбрать» правильные индексы, а затем добавить все в конце.
Я не знаю, как вышеизложенное сравнивается с современным уровнем техники.
Стоит также отметить, что если ваши операции на $p_2(x)$ делать нет зависит от других координат $\фи(а_я)$ (но могут просто "переписать" их), можно удалить одну из (а именно первую) операцию извлечения битовой маски.
Конечно, это зависит от конкретной функции, которую вы оцениваете.