This morning, Martin gave a great talk on lattice attacks and parameter choices for Learning With Errors (LWE) with small and sparse secret. The work presents new attacks on LWE instances, yielding revised security estimates. This leads to a revised exponent of the dual lattice attack by a factor of **2L/(2L+1)**, for **log q = Θ(L*log n)**. The paper exploits the fact that most lattice-based FHE schemes use short and sparse secret. We will write **q** to denote the LWE modulus throughout.

Let’s first have a look at the set-up. Remember LWE consists of distinguishing between pairs **(A, As+e)** and **(A,b)**. In the first instance, **A** is selected uniformly at random and **b** is selected from a special (usually Gaussian) distribution. In the second one, both **A** and **b** are uniformly random. Selecting **s**, as this work shows, is perhaps trickier than previously thought. Theory says that, in order to preserve security, selecting a short and sparse secret **s** means the dimension must be increased to **n*log_2(q)**. Practice says just ignore that and pick a small secret anyway. More formally, HElib typically picks a secret **s** such that exactly **h=64** entries are in **{-1,1}** and all the rest are 0. SEAL picks uniformly random secrets in **{-1,0,1}**.

We also recall that the dual lattice attack consists of finding a short vector **w** such that **Aw = 0**, then checking if

**<Aw, (As+e)w> = <w,e>**

is short. If we are in the presence of an LWE sample, **e** is short, so the inner product is short. Short*short = short, as any good cryptographer can tell you.

The improvements presented in this paper rely on three main observations. Firsly, a revised dual lattice attack is presented. This step is done by adapting BKW-style algorithms in order to increase efficiency and can be done in general, i.e. does not depend on either shortness or sparseness of the secret. It is achieved by applying BKZ to the target basis, then re-randomising the result and applying BKZ again, with different block size.

The second optimisation exploits the fact that we have small secrets. We observe that we can relax the condition on **w** somewhat. Indeed, if **s** is short, then finding **w** such that **Aw** is short instead of 0 is good enough. Therefore, we look for vectors **(v,w)** in the lattice

**L = {(y,x): yA = x (mod q)}**.

**||s||<||e||**and so we may allow

**||v||>||w||**such that

**||<w,s>|| ≈ ||<v,e>||**.

Finally, the sparsity of the small secret is exploited. This essentially relies on the following observation: when **s** is very sparse, most of the columns of **A** become irrelevant, so we can just ignore them.

The final algorithm SILKE is the combination of the three above steps. The steps are the following.

- Perform BKZ twice with different block sizes to produce many short vectors
- Scale the normal form of the dual lattice
- If sparse, ignore the presumed zero columns, correct for mistakes by checking shifted distribution

As usual, Martin wins Best Slides Award for including kittens.

Source: Bristol Cryptography Blog @ May 2, 2017 at 05:38AM