1.本发明涉及密码学硬件实现
技术领域:
:,具体涉及一种离散高斯噪声的并行生成方法及硬件结构。
背景技术:
::2.在现代密码学技术中,环错误学习(ringlearningwitherrors,rlwe)问题是一项重要的技术。离散高斯分布(discretegaussiandistribution)是环错误学习问题中的一个重要组成部分。环错误学习问题基于多项式空间中y=a*s+e的求解。其中多项式e称为rlwe实例,其各项系数符合离散高斯分布。因此,快速采样离散高斯噪声在基于rlwe的密码学算法硬件加速中十分重要。3.由于离散高斯分布在整数域上的特性,无法直接生成。通常使用算法将均匀分布转化为离散高斯分布。其中常用的算法有:累计分布表(cumulativedistributiontable,cdt)、拒绝采样算法和knuth-yao算法。其中knuth-yao算法具有早停和随机游走的特性,并且预存储数据少于cdt算法,使得其在生成非均匀整数分布上具有性能优势。4.现有的基于knuth-yao算法的离散高斯噪声的硬件实现中,并没有像算法描述一样构造一颗离散分布生成(discreatedistributiongenerating,ddg)树,而是直接在二进制化的概率密度表上执行随机游走算法。5.在现有的knuth-yao算法的硬件实现中,主要侧重于二进制矩阵的压缩和高效存储中,缺少对扫描过程的频度进行分析和优化。经实验发现,二进制矩阵的遍历过程存在严重的不均衡问题。6.综上,如何设计一种生成速度快、并行度高、存储小的离散高斯噪声生成方法及硬件实现,是现有密码学硬件技术研究中亟需解决的问题。技术实现要素:7.发明目的:本发明提供一种离散高斯噪声的并行生成方法,并进一步提出一种实现上述方法的硬件结构,可以生成格密码学中所需要的离散高斯噪声。本发明在保证噪声分布的密码学安全性的同时,降低了采样时延,提高了并行度,并减少了查找的面积,提高了格密码算法的运行效率,从而有效解决上述
背景技术:
:中存在的技术问题。8.技术方案:提出一种离散高斯噪声的并行生成方法,该方法步骤如下:9.步骤一:使用真随机数发生器生成的随机比特,作为算法的输入10.步骤二:根据需要定义离散高斯分布的标准差、精度和截尾范围,构造二进制概率矩阵,并计算矩阵每一列的汉明重量;11.步骤三:执行矩阵形式的knuth-yao算法,扫描整个二进制概率矩阵,直到命中对应点;12.步骤四:返回命中点所对应的值,并使用一个随机比特作为该值的符号位,该结果为算法采样到的离散高斯噪声值。13.上述步骤一中,每个随机比特都符合独立的均匀分布,具有0.5的概率值为0,具有0.5的概率值为1。14.上述步骤三扫描二进制概率矩阵过程中,比较该列的汉明重量与当前扫描值d。当该列的汉明重量小于扫描值d时,该列中的随机比特不会被命中,跳过该列的扫描并将扫描值d减去该列的汉明重量。当该列的汉明重量大于扫描值d时,该列中的随机比特会被命中。此时只扫描该列中的1值,忽略无效的0值。15.上述步骤三扫描二进制概率矩阵过程中,前面若干列的扫描过程使用查找表进行代替。前n列的扫描共需要n个随机比特r,使用地址空间为2n的查找表直接查找出列扫描的结果,包括命中比特的列序号或未命中情况剩余的扫描值d。16.根据上述一种离散高斯噪声的并行生成方法,本发明提出其硬件实现,包括真随机数缓冲区、随机比特寄存器、比特搜索模块、结果输出处理模块、结果缓冲区、控制状态机。17.所述真随机数缓冲区和随机比特寄存器互相电性连接,为算法提供随机比特输入;所述比特搜索模块与随机比特寄存器、结果输出处理模块互相电性连接,执行生成算法;所述输出处理模块与结果缓冲区互相电性连接,用于输出结果;所述控制状态机与其他模块均互相电性连接,用于进行任务的调度和数据流的衔接。18.真随机数缓冲区可以接收并存储外部真随机数发生器的输入。19.随机比特寄存器可以从真随机数发生器中读取所需长度的随机比特,提供给比特搜索模块。20.优选的,比特搜索模块包括三个子模块:高并行度前置查找表、并行比特搜索模块、高精度比特搜索模块。高并行度前置查找表与并行比特搜索模块互相连接,并行比特搜索模块与高精度比特搜索模块互相连接。21.高并行度前置查找表对二进制概率矩阵的访问频率最高的前n列进行高并行查找。并行比特搜索模块在前置查找表未命中时,对二进制概率矩阵的n+1至n+1+m列进行并行列扫描。高精度比特搜索模在并行比特搜索模块未命中时,对二进制概率矩阵的n+1+m+1至最后列进行列扫描。高并行度前置查找表的并行度高于并行比特搜索模块。并行比特搜索模块的并行度高于高精度比特搜索模块。22.优选的,并行比特搜索模块和高精度比特搜索模块具有相同的结构,包括搜索值寄存器、搜索值更新模块、汉明重量比较器、命中列搜索模块。23.输出处理模块接受到比特搜索模块输出的结果后,使用一个随机比特决定符号的正负,输出到结果存储模块中。24.有益效果:本发明的离散高斯并行生成方法及硬件结构可以有效地提高离散高斯生成器的并行度、减小数据存储量、提高生成速度。对比目前存在的离散高斯噪声生成器方案,具有并行度和速度优势,同时可以达到精确度要求,进而提升整个加密系统的性能。本发明针对二进制概率矩阵比特搜索过程根据访问频次进行优化,使用一种三级、并行度递减的比特搜索结构,实现硬件并行设计的轻量化。附图说明25.图1是本发明离散高斯噪声的并行生成硬件结构的示意图。26.图2是σ=4.52m=24n=50时,采样一亿次的概率矩阵访问频次图。27.图3是本发明中比特搜索模块的结构示意图。28.图4是本发明中三级比特搜索的分布示意图。29.图5是本发明中输出处理模块的结构示意图。具体实施方式30.在下文的描述中,给出了大量具体的细节以便提供对本发明更为彻底的理解。然而,对于本领域技术人员而言显而易见的是,本发明可以无需一个或多个这些细节而得以实施。在其他的例子中,为了避免与本发明发生混淆,对于本领域公知的一些技术特征未进行描述。31.离散高斯分布,是在整数环空间内对高斯分布进行采样得到的一种分布。高斯分布是一种十分常见的连续概率分布,一个中心为0,标准差为σ的高斯分布,其概率密度函数为:[0032][0033]在整数域进行采样后,一个中心为0,标准差为σ的离散高斯分布的概率密度函数定义为:[0034][0035][0036]同时由于实现的精度问题,例如k大于12倍标准差后的概率密度小于2-100,被认为是不可能的。因此在实际使用时,会对离散高斯分布的范围k进行约束。通常k的范围可以通过安全系数以及标准差进行计算。[0037]由于离散高斯分布在整数域上的特性,无法直接生成。通常使用算法将均匀分布转化为离散高斯分布。其中常用的算法有:累计分布表(cumulativedistributiontable,cdt)、拒绝采样算法和knuth-yao算法。其中knuth-yao算法具有早停和随机游走的特性,并且预存储数据少于cdt算法,使得其在生成非均匀整数分布上具有性能优势。[0038]现有的基于knuth-yao算法的离散高斯噪声的硬件实现中,并没有像算法描述一样构造一颗离散分布生成(discreatedistributiongenerating,ddg)树,而是直接在二进制化的概率密度表上执行随机游走算法。列扫描knuth-yao算法的流程如下,主要通过对搜索值d的计算命中概率矩阵中的元素,该元素所在行的行号即为采样结果:[0039]输入:m行n列的概率矩阵[0040]输出:采样结果[0041]1.forj=0ton[0042]2.d=0[0043]3.采样随机均匀比特r[0044]4.d=2*d+r[0045]5.fori=m-1to0[0046]6.d=d–m[i][j][0047]7.ifd=-1returni[0048]8.endfor[0049]9.endfor[0050]只要保证二进制概率矩阵的列数够多,就可以同时保证算法生成的精度和命中率。分析可得,列数超过64时,算法未命中的概率小于2-64,未命中的情况可以视作不可能。[0051]在现有的knuth-yao算法的硬件实现中,主要侧重于二进制矩阵的压缩和高效存储中,缺少对扫描过程的频度进行分析和优化。经实验发现,二进制矩阵的遍历过程存在严重的不均衡问题。[0052]为此,本实施例提出一种离散高斯噪声的并行生成硬件结构,用于解决上述问题。[0053]实施例一:[0054]本实施例公开一种离散高斯噪声的并行生成硬件结构,如图1所示,所述硬件结构包括真随机数缓冲区、随机比特寄存器、比特搜索模块、结果输出处理模块、结果缓冲区、控制状态机。[0055]所述真随机数缓冲区和随机比特寄存器互相电性连接,为算法提供随机比特输入;所述比特搜索模块与随机比特寄存器、结果输出处理模块互相电性连接,执行生成算法;所述输出处理模块与结果缓冲区互相电性连接,用于输出结果;所述控制状态机与其他模块均互相电性连接,用于进行任务的调度和数据流的衔接。[0056]如图1所示,真随机数缓冲区是一个先入先出(firstinfirstout,fifo)的存储器结构。在缓冲区未满时,通过外部的真随机数发生器不断地向缓冲区内写入随机比特。写入的随机比特符合独立均匀分布,也就是说,每个比特的值等概率地为0或1。[0057]在算法运行时,随机比特寄存器将真随机数缓冲区内的随机比特取出,并填充进寄存器内。真随机数缓冲区与随机比特寄存器互相连接。[0058]在设计硬件比特搜索模块时,我们首先对每一列的命中频次进行了实验,得到了如图2和表1所示的数据。数据分析中,矩阵前7列的命中率为99.8%。也就是说,命中的比特绝大多数集中在前7列中。[0059]表1knuth-yao算法仿真数据[0060]标准差4.51915精度50截尾范围35采样次数100000000平均命中列序号3.15最远命中列序号34[0061]同时,在一亿次采样中,最远的命中列的序号为34,仅命中了一次,与矩阵的总列数50有一定距离。分析得到概率矩阵靠后的列虽然为knuth-yao算法提供了较高的精度,但访问频次极低,利用率不高。为了提高存储的概率矩阵的利用率,本发明设计了一种分三级的比特搜索模块。[0062]如图3所示,比特搜索模块包括三个子模块:高并行度前置查找表、并行比特搜索模块、高精度比特搜索模块。高并行度前置查找表与并行比特搜索模块互相连接,并行比特搜索模块与高精度比特搜索模块互相连接。[0063]高并行度前置查找表对二进制概率矩阵的访问频率最高的前n列进行高并行查找。高并行度前置查找表的输入与随机比特寄存器的相连,位宽为7bit。查找表的输出共有两种:命中,返回命中比特的行序号;未命中,返回搜索剩下的d值。[0064]并行比特搜索模块在前置查找表有单元未命中时,按队列并行处理,对二进制概率矩阵的n+1至n+1+m列进行并行列扫描。高精度比特搜索模在并行比特搜索模块未命中时,对二进制概率矩阵的n+1+m+1至最后列进行列扫描。[0065]并行比特搜索模块和高精度比特搜索模块具有相同的结构,包括搜索值寄存器、搜索值更新模块、汉明重量比较器、命中列搜索模块。搜索值寄存器存放算法流程中的搜索值d。搜索值更新模块对d值进行更新,当d值大于汉明重量时,更新为d-该列的汉明重量;当d值小于汉明重量时,执行列搜索,搜索该列中值为1的随机比特,更新为d-1。汉明重量比较器判断d值与汉明重量之间的大小关系。命中列搜索模块在执行列搜索时,对暂存的列值进行更新,以跳过值为0的比特。设列向量二进制合并后的值为有符号数x,则最后一个1的位置为x^(-x)。同时将最后一个1从x中抹去,更新方法为x=x&(x-1)。[0066]如图4所示,比特搜索模块共有三级,三级的并行度各不相同。第一级为高并行度前置查找表,并行度为64。第二级为并行比特搜索模块,并行度为8。第三级为高精度比特搜索模块,并行度为1。高并行度前置查找表出现未命中时,启动并行比特搜索模块;并行比特搜索模块出现未命中时,启动高精度比特搜索模块。[0067]经过分析,三级比特搜索模块出现并行度失配的情况小于2-100,可以认为不可能出现。同时硬件中对这种异常进行了处理,会直接中断本次生成过程,重新开始生成。[0068]同时,在密码学算法实现中,需要考虑抗旁路攻击能力。典型的对离散高斯噪声的攻击方式有利用执行时间进行攻击。knuth-yao算法由于比特搜索速度不恒定,常用做法是将每次的采样时间延长到最坏的情况,极大的降低了性能。本实例所用的三级比特搜索方法,只需要让64路并行采样同时结束即可,多数时间不需要启动精度比特搜索模块,提供了大于10个时钟周期的性能提升。同时,64路高并行采样带来了混淆能力,难以从时间维度对硬件采样出的离散高斯噪声进行旁路攻击。[0069]如图5所示,输出处理模块接受比特搜索模块采样到的输出。由于离散高斯分布是一个中心对称的分布,而本发明的方法在采样时只考虑了一半,因此在输出时需要给采样到的值添加符号位决定其正负。输出处理模块输入为随机比特寄存器的1bit的随机比特和比特搜索模块输出的采样值,经过一个多路选择器进行正负选择后输出到结果缓存区中,完成一次离散高斯噪声的并行采样。[0070]本实施例可以用专用集成电路的形式实现,也可以通过现场可编程门阵列的形式实现。[0071]以上示意性地对本发明创造及其实施方式进行了描述,该描述没有限制性,在不背离本发明的精神或者基本特征的情况下,能够以其他的具体形式实现本发明。附图中所示的也只是本发明创造的实施方式之一,实际的结构并不局限于此,权利要求中的任何附图标记不应限制所涉及的权利要求。所以,如果本领域的普通技术人员受其启示,在不脱离本创造宗旨的情况下,不经创造性的设计出与该技术方案相似的结构方式及实施例,均应属于本专利的保护范围。此外,“包括”一词不排除其他元件或步骤,在元件前的“一个”一词不排除包括“多个”该元件。产品权利要求中陈述的多个元件也可以由一个元件通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。当前第1页12当前第1页12