Există o modalitate simplă de a face acest lucru.
Mai exact, ați menționat deja că aveți o procedură de extragere a mascai de bit.
Prin urmare, dat $p(x)$, $p_2(x)$, și $p_2'(x)$ (operațiile dvs. homomorfe aplicate la $p_2$), lăsa $p_3(x)$ fi rezultatul aplicării aceleiași mască de biți la $p_2'$.
Apoi, este simplu să verifici asta
$$p(x) - p_2(x) + p_3(x)$$
iti ofera rezultatul dorit.
Acest lucru reduce totul la două proceduri de „extracție cu masca de bit”, evaluarea homomorfă (care pare inevitabil) și câteva completări (care ar trebui să fie ieftine).
Apoi, există întrebări firești:
- poate fi suficientă o extracție de masca de bit?
- Cum se poate aplica eficient extracția bitmask?
Dacă slotul pe care doriți să calculați este public, ar trebui să fie suficient să se înmulțească cu o constantă adecvată (cu coeficienți 0/1) polinom, dând o suprasarcină multiplicativă de 1 pentru fiecare extracție de mască de biți.
Bitmask-urile private par mai puțin eficiente --- Mă pot gândi la ceva care folosește $O(n)$ înmulțiri (dar cel puțin are adâncimea 1), în esență prin calculul unei înmulțiri a unui boolean 0/1 (criptat) pentru fiecare index pentru a „selecta” indicii potriviți, apoi adăugând totul la final.
Totuși, nu știu cum se compară cele de mai sus cu cele de ultimă generație.
De asemenea, merită menționat că, dacă operațiunile dvs $p_2(x)$ do nu depind de celelalte coordonate $\phi(a_i)$ (dar poate pur și simplu să le „suprascrie”), se poate elimina una dintre (și anume prima) operațiuni de extragere a mască de biți.
Totuși, aceasta depinde de funcția specială pe care o evaluați.