图形卡上的并行最短格向量枚举
1. 引言
基于格的密码系统被认为能抵御量子计算机攻击,因此是基于因式分解或离散对数系统的有前途的替代方案。格基约简有助于确定这些问题在实际中的难度。近年来,人们对格的穷举搜索算法,特别是其实现方面的关注度不断提高。本文主要探讨穷举搜索的并行化以及特殊硬件的应用。
格约简旨在寻找格中短且正交的向量。目前实际中用于格约简的是Schnorr和Euchner提出的BKZ算法,它由两部分组成:在低维中对最短非零向量进行穷举搜索(“枚举”),以及在高维中使用LLL算法搜索短(非最短)向量。BKZ算法由块大小参数β进行参数化,该参数决定了BKZ内部穷举搜索算法的块大小。
穷举搜索算法由Kannan和Fincke - Pohst提出,有时枚举也被称为KFP算法。Kannan的算法运行时间为$2^{O(n \log n)}$,其中n表示格的维度。Schnorr和Euchner提出了KFP穷举搜索的一个变体,称为ENUM。枚举算法大致是在一个搜索树中进行深度优先搜索,该搜索树包含特定搜索空间内的所有格向量,即所有欧几里得范数小于指定界限的向量。主要挑战是确定可以剪掉哪些树的分支以加速穷举搜索。枚举总是在至少经过LLL约简的格基上执行,因为与未约简的基相比,这可以显著减少运行时间。
LLL算法的运行时间在格维度上是多项式的,因此可以应用于高格维度(n > 1000)。所有已知的穷举搜索算法的运行时间在维度上是指数级的,因此只能应用于较小维度的块(n ⪅70)。因此,BKZ的运行时间在块大小β上呈指数增长。在BKZ中,枚举执行非常频繁,因此实际中块大小最多选择到50。对于高块大小,经验表明ENUM占用了BKZ 99%的时间。
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



