跳转至

格密码

ASIACRYPT_2011_BKZ2.0

格基约化算法是格密码学中的核心算法,也是进行格分析的核心步骤。格基约化可以求解近似SVP,并帮助枚举和筛法求解精确SVP。BKZ算法是实践中最佳的格基约化算法,其思想为分块进行投影格上的精确枚举算法,求解SVP,并将结果作为正交基,经典的LLL算法可以看作块大小为2的BKZ算法。在研究中,作者发现对BKZ算法运行时间影响最大的是枚举子算法。作者使用深度剪枝、局部块预处理和优化枚举半径三种方法进行改进,并提出BKZ2.0算法,可以在高维格中进行块大小较大的BKZ格基约化。除此之外,作者提出了一种模拟BKZ算法预期结果与运行时间的算法,不仅可以帮助分析时间复杂度,而且可以改进格上困难问题的安全性估计。我认为作者对于算法优化的思路值得借鉴,而且模拟算法的提出有助于后续的算法设计。

原论文 幻灯片

SODA_2010_GaussSieve

格中最短向量问题(SVP)是格密码学中的核心难题。格密码中许多底层问题(NTRU,SIS,LWE)的密码学分析都可以归结为格中最短向量问题。SVP求解算法分为两类:枚举与筛选。筛选算法对大规模的向量集合进行内部组合,逐步降低向量集合的整体长度。AKS/NV筛在筛选之前就确定了向量集合的大小,对于筛选产生的重复向量无能为力。作者认为先前筛法效率较低的原因为:大量重复向量导致算法的空间和时间效率降低。于是作者先提出列表筛,从空列表开始添加经过筛选的质量较高的向量;再提出高斯筛,针对列表筛中存在的长向量进行更新。在理论层面,作者使用球体堆积理论通过SVP规模确定算法空间大小。我认为该论文在理论与实践层面都有价值,能够得到高质量的短向量集合,后续如果需要在空间受限的情况下进一步改进,可能需要与枚举算法结合。

原论文 幻灯片

SODA_2015_FastEnum

格中最短向量问题(SVP)是格密码学中的核心难题。格密码中许多底层问题(NTRU,SIS,LWE)的密码学分析都可以归结为格中最短向量问题。SVP求解算法分为两类:枚举与筛选。枚举算法使用递归投影进行遍历;筛选算法对大规模的向量集合进行内部组合,逐步降低向量集合的整体长度。Kannan提出的理论枚举算法虽然具有较低的时间复杂度,但由于预处理过程过于耗时,没有被用于实际求解。作者对Kannan的算法进行了分析,采用了简化预处理过程,增加递归步长等多种方法,实现了时间复杂度较低且实际可行的枚举算法,表现优于现有的枚举算法和筛法。我认为论文中算法提升效率的核心是增加递归步长,虽然没有改进理论时间复杂度,但提升了实际求解效率,后续可以尝试使用BKZ算法以及剪枝进一步提升枚举算法的效率。

原论文 幻灯片

EUROCRYPT_2018_SubSieve

格中最短向量问题(SVP)是格密码学中的核心难题。格密码中许多底层问题(NTRU,SIS,LWE)的密码学分析都可以归结为格中最短向量问题。SVP求解算法分为两类:枚举与筛选。枚举算法使用搜索与剪枝对全空间进行遍历;筛选算法对大量向量进行两两组合,保留新生成的短向量,逐步降低向量集合的整体长度。该论文对筛法进行改进,作者注意到筛法的结果中包含大量的短向量,如果只关注格中的最短向量,会导致其他的短向量结果被浪费。于是作者提出,在求解n维格的SVP时,只要对n-d维格进行筛法SVP求解,再使用代数方法将结果提升到n维。作者实现的新筛法相较于其他筛法速度提升10倍。我认为作者充分利用了现有结果中的信息,筛法的时间与空间复杂度均为指数级,在低维子格中进行筛法求解不仅可以缩短求解时间,而且可以降低存储空间的需求。

原论文 幻灯片