În timp ce încerc să implementez eu schema BGV, am descoperit că sunt foarte confuz în ceea ce privește criptarea și decriptarea schemei. Iată înțelegerea mea:
Lăsa $p$ fie un modul de text simplu și $q$ fie un modul de text cifrat (sunt coprime). Lăsa $\mathbb{Z}_{m} = (-m/2, m/2] \cap \mathbb{Z}$ fi mulțimea fixă de reprezentanți modulo $m$ și $[\cdot]_{m}: \mathbb{Z} \to \mathbb{Z}_{m}$ fie modulo $m$ Hartă. Lăsa $R = \mathbb{Z}[x] / (x^{n} + 1)$, $R_{m} = \mathbb{Z}_{m}[x]/(x^{n}+1)$ ca de obicei ($n$ este o putere a lui 2). Aș ignora nivelul și chestiile de bootstrapping.
- $a \leftarrow U_{q}$, Unde $U_{q}$ este o distribuție uniformă peste $R_{q}$
- $s \leftarrow \{-1, 0, 1\}^{n}$
- $e \leftarrow GD(\sigma)^{n}$, Unde $GD(\sigma)$ este o distribuție Gaussiană (discretă) cu abatere standard $\sigma$
- $b = [as + pe]_{q} \in R_{q}$ și $pk = (a, b) \in R_{q}^{2}$
- $r \leftarrow \{-1, 0, 1\}^{n}$, cu $P(X=0) = 1/2$ și $P(X=-1) = P(X=1) = 1/4$.
- $e_0, e_1 \leftarrow GD(\sigma)^{n}$.
- mesaj $m \în R_{p}$
- $c_{0} = [br + pe_{0} + m]_{q} \in R_{q}$
- $c_{1} = [ar + pe_{1}]_{q} \in R_{q}$
- Criptează $m$ la fel de $\mathrm{Enc}(m) = (c_{0}, c_{1}) \in R_{q}^{2}$
- Pentru un text cifrat $(c_{0}, c_{1})$, decriptați-l ca $[[c_{0} - c_{1}s]_{q}]_{p}\în R_{p}$.
Înțeleg cum se intenționează să fie asta $\mathrm{Dec}(\mathrm{Enc}(m)) = m$, dar când am încercat să fac câteva exemple de jucării cu propriile mâini, am constatat că acum îmi lipsește ceva.
Ceea ce cred este că, există două module (text simplu și text cifrat) și folosirea ambelor face ca decriptarea să eșueze. Asta pentru ca $[[x]_{q} + [y]_{q}]_{p} \neq [[x+y]_{q}]_{p}$ și $[[x]_{q}[y]_{q}]_{p} \neq [[xy]_{q}]_{p}$ în general. Mai ales, dacă $x + pe \not\in \mathbb{Z}_{q}$, apoi reducând modulo $q$ ar face $[[x+pe]_{q}]_{p} \neq [[x]_{q}]_{p}$ ceea ce duce la eșec de decriptare.Cred că îmi scapa ceva foarte simplu, dar nu îmi pot da seama.