深入解析BKZ算法及其在q-ary格中的应用与模拟
1. NTRU问题与BKZ算法的引入
NTRU问题旨在寻找NTRU格中向量(g | f)的任意旋转(Xif, Xig)。这些行向量的长度约为 $|(g | f)| \approx \sqrt{2n\sigma^2}$,当 $H \in (\mathbb{Z}/q\mathbb{Z})^{n\times n}$ 是真正均匀的随机格时,该长度远小于NTRU格 $L_{H,q}$ 的高斯启发式值 $\lambda_1(L_{H,q}) \approx \sqrt{nq/(\pi e)}$。为了解决NTRU问题,我们需要借助BKZ算法来寻找NTRU格中这些异常短的向量。
2. BKZ算法详解
- BKZ - β约化基的定义 :一个基 $B = [b_0, \ldots, b_{n - 1}]$ 被称为BKZ - β约化的,如果对于所有 $\kappa = 0, \ldots, d - 1$,有 $|b_{\kappa}^*| = \lambda_1(L_{[\kappa:\min(\kappa + \beta, d))})$。
- BKZ算法流程 :
- 输入:格基 $B$、块大小 $\beta \geq 2$ 和常数 $\delta < 1$。
- 输出:$L(B)$ 的BKZ - β约化基。
1: repeat
2: for k =