First candidate multilinear map

Parameters:

  • Ring $R = \mathbb{Z}[x]/\langle \Phi_n(x) \rangle$ and big integer $q$.

Secret:

  • Small $g$ from $R$ (with $g^{-1}$ large).

  • Uniform $z$ from $R_q$ ($ \mathbb{Z}_q[x]/\langle \Phi_n(x) \rangle$).

Public:

  • Randomizers: $x_1, x_2, ..., x_m$ such that $x_i = [b_i z^{-1}]_q$ (with $b_i \in I$ small).
  • They are encodings of zero, so, can be added to encodings of elements just to randomize them.

  • Level-1 encoding of $1 + I$: $y = [a z^{-1}]_q$ for any small $a$ from $1+I$.

  • Seed from strong randomnes extractor: $s$.

  • Level-k zero-testing parameter: $p_{zt} = [hg^{-1}z^k]_q$ with $h \leftarrow D_{\mathbb{Z}^n,\sqrt{q}}$.

Functions:

  • Sampling level-0 encodings:: Return (small) $d \leftarrow D_{\mathbb{Z}^n,\sigma_n} \in R$. (note that $d \in d+I$).

  • Encoding level-1: take a level-0 $d$, sample $r_i \leftarrow D_{\mathbb{Z}^n,\sigma_n} \in R$ and return $u = [yd + \sum_{i=1}^mr_ix_i]_q = [(ad + \sum_{i=1}^mr_ib_i) / z]_q$.

  • Zero testing: : Return 1 if $||p_{zt} u ||_\infty < q^{3/4}$ and 0 otherwise. (Note that $p_{zt} \cdot u = h (ad) g^{-1} + hg^{-1}\sum r_ib_i$)

  • Extract: To extract a canonic random representation from a level-k encoding u:
    (1) Multiply by the zero test: $v = [up_{zt}]_q$
    (2) Represent $v$ as a vector $\vec{v} = \psi(v)$
    (3) Take the most significant bits of each entry: $\vec{m} = (MSB(v_1), ..., MSB(v_\ell))$
    (4) Use the strong randomnes extractor and the seed: $E \leftarrow SRE(\vec{m}, s)$
    (5) Return $E$.
References