The bivariate Coppersmith algorithm(opens new window)
is a technique to solve polynomial equations of the form
p(x,y)=0
over the integers
Z,
given that the solutions are within specific bounds:
∣x∣<X
and
∣y∣<Y.
Suppose
p(x,y)=∑ijpijxiyj
has degree
δ in each variable.
Define
D=maxij∣pij∣XiYj.
The algorithm finds a solution
(x,y) (if it exists) provided that:
XY<D3δ2
The definitions of
X,Y,D
appear circular, but it’s not a problem, the condition implies there is
pij
such that:
X23δY23δ<∣pij∣XiYj
X23δ−iY23δ−j<∣pij∣
where
23δ−i
and
23δ−j
are strictly positive.
We select an integer k>4ϵ1.
For each pair of integers
(i,j) with 0≤i<k and 0≤j<k, we form the polynomial
qij=xiyjp(x,y).
Let’s say we have
p(x,y)=a00+a10y+a01x+a11xy
Our polynomial has a degree δ=1 in each variable separately.
Let’s take k=2.
Our shifted polynomials are then:
p(x,y),yp(x,y),xp(x,y),xyp(x,y).
We construct the matrix M1
where the polynomials are in the right part positioned vertically:
The left-hand block M1 is of dimension
(δ+k)2×(δ+k)2.
The right-hand block of M1 is of dimension
(δ+k)2×k2. If the coefficients of p
share no nontrivial common factor,
we can use elementary row operations to transform the right-hand block into an identity matrix at the bottom and zeros at the top.
(let’s denote the matrix that performs this transformation by
T):
Let’s denote the top-block (the rows which have the last k2
entries all zero) of M2 by M3.
Let’s define
r=(1,y,y2,x,xy,xy2,x2,x2y,x2y2)
s=rM1=rTM2
Note that det(T)=1.
We can see that the entries of s corresponding to the left-hand block of
M1 are smaller than 1.
The last k2 of s are 0.
Thus, in our case, where the left-hand block of M1 has (k+1)2 columns:
∣∣s∣∣2≤(δ+k)2
∣∣s∣∣≤δ+k
The vector s
lies in the lattice spanned by the rows of M3.
We apply the
LLL algorithm(opens new window)
to M3, followed
by the Gram-Schmidt orthogonalization on the LLL reduced matrix.
This process yields the matrix L.
Let’s denote the rows of L by bi.
We can see that rTT1 is a vector with the last k2
entries being all zero (because this holds for vector s).
Thus, s lies in the space spanned by the rows of L:
s=i∑ncibi
Note that the Gram-Schmidt orthogonalization (without normalization) preserves the determinant
(meaning det(T1)=1).
The vectors bi are orthogonal.
So if
∣∣s∣∣<∣∣bn∣∣
then we know
s=i∑n−1cibi
meaning that cn=0.
This also means that s
is orthogonal to bn, implying that the inner product of s and bn
is zero. From this, we obtain two new polynomials that evaluate to zero at the same
(x,y) as our original polynomial p does.
However, it needs to hold:
∣∣s∣∣<∣∣bn∣∣
From the LLL paper, we know that if M3
is square, the following holds:
The left-hand block of WM1 is the identity. Let M4
be the right-hand block of WM1.
Coppersmith proved that there exists a k2×k2
submatrix in the right-hand block of WM1
whose determinant is at least D′ (let’s leave the details of what D′ is for now):