22.04.2014 Views

a590003

a590003

a590003

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

vector x = (x 0 , . . . , x k−1 ) ∈ {0, 1} k is just the positive integer with binary expansion x. In general, for<br />

arbitrary x ∈ Z k the syndrome 〈g, x〉 ∈ Z q can be computed very efficiently by a sequence of k additions<br />

and binary shifts, and a single reduction modulo q, which is also trivial when q = 2 k is a power of 2. The<br />

syndrome computation is also easily parallelizable, leading to O(log k) = O(log log n) computation time<br />

using O(k) = O(log n) processors.<br />

4.1 Power-of-Two Modulus<br />

Let q = 2 k be a power of 2, and let g be the geometric vector defined in Equation (4.1). Define the matrix<br />

⎡<br />

⎤<br />

2<br />

−1 2<br />

S k :=<br />

⎢ −1 . . . ∈ Z k×k .<br />

⎥<br />

⎣<br />

2 ⎦<br />

−1 2<br />

This is a basis for Λ ⊥ (g t ), because g t · S k = 0 mod q and det(S k ) = 2 k = q. Clearly, all the basis vectors<br />

are short. Moreover, by orthogonalizing S k in reverse order, we have ˜S k = 2 · I k . This construction is<br />

summarized in the following proposition. (It generalizes in the obvious way to any integer base, not just 2.)<br />

Proposition 4.2. For q = 2 k and g = (1, 2, . . . , 2 k−1 ) ∈ Z k q, the lattice Λ ⊥ (g t ) has a basis S such that<br />

˜S = 2I and ‖S‖ ≤ √ 5. In particular, η ɛ (Λ ⊥ (g t )) ≤ 2r = 2 · ω( √ log n) for some ɛ(n) = negl(n).<br />

Using Proposition 4.2 and known generic algorithms [Bab85, Kle00, GPV08], it is possible to invert<br />

g g t(s, e) correctly whenever e ∈ P 1/2 ((q/2) · I), and sample preimages under f g t with Gaussian parameter<br />

s ≥ 2r = 2 · ω( √ log n). In what follows we show how the special structure of the basis S leads to simpler,<br />

faster, and more practical solutions to these general lattice problems.<br />

Inversion. Here we show how to efficiently find an unknown scalar s ∈ Z q given b t = [b 0 , b 1 , . . . , b k−1 ] =<br />

s · g t + e t = [s + e 0 , 2s + e 1 , . . . , 2 k−1 s + e k−1 ] mod q, where e ∈ Z k is a short error vector.<br />

An iterative algorithm works by recovering the binary digits s 0 , s 1 , . . . , s k−1 ∈ {0, 1} of s ∈ Z q , from<br />

least to most significant, as follows: first, determine s 0 by testing whether<br />

b k−1 = 2 k−1 s + e k−1 = (q/2)s 0 + e k−1 mod q<br />

is closer to 0 or to q/2 (modulo q). Then recover s 1 from b k−2 = 2 k−2 s + e k−2 = 2 k−1 s 1 + 2 k−2 s 0 +<br />

e k−2 mod q, by subtracting 2 k−2 s 0 and testing proximity to 0 or q/2, etc. It is easy to see that the algorithm<br />

produces correct output if every e i ∈ [ − q 4 , q 4)<br />

, i.e., if e ∈ P1/2 (q · I k /2) = P 1/2 (q · (˜S k ) −t ). It can also be<br />

seen that this algorithm is exactly Babai’s “nearest-plane” algorithm [Bab85], specialized to the scaled dual<br />

q(S k ) −t of the basis S k of Λ ⊥ (g t ), which is a basis for Λ(g).<br />

Formally, the iterative algorithm is: given a vector b t = [b 0 , . . . , b k−1 ] ∈ Z 1×k<br />

q , initialize s ← 0.<br />

1. For i = k −1, . . . , 0: let s ← s+2 k−1−i ·[b<br />

i − 2 i · s ∉ [ − q 4 , q 4)<br />

mod q<br />

]<br />

, where [E] = 1 if expression<br />

E is true, and 0 otherwise. Also let e i ← b i − 2 i · s ∈ [ − q 4 , q 4)<br />

.<br />

2. Output s ∈ Z q and e = (e 0 , . . . , e k−1 ) ∈ [ − q 4 , q 4) k ⊂ Z k .<br />

18<br />

4. Trapdoors for Lattices

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!