首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】一种基于GPU快速数论转换的全同态加密门自举方法_西北工业大学_202210383278.6 

申请/专利权人:西北工业大学

申请日:2022-04-12

公开(公告)日:2024-02-27

公开(公告)号:CN114936350B

主分类号:G06F17/16

分类号:G06F17/16;H04L9/00

优先权:["20220208 CN 2022101169026"]

专利状态码:有效-授权

法律状态:2024.02.27#授权;2022.09.09#实质审查的生效;2022.08.23#公开

摘要:本发明提出一种基于GPU快速数论转换的全同态加密门自举方法,使用矩阵运算的形式来计算NTT,并且使用扩充到192位的方式,以移位代替乘法,从而在乘法之后完全不需要进行取模运算,大大减少了取模运算的数量,并且在移位之前进行了合并预处理,减少了移位运算的数量,提升了快速数论转换的运算效率。

主权项:1.一种基于GPU快速数论转换的全同态加密门自举方法,其特征在于:包括以下步骤:步骤1:初始化:构造初始中间密文c=A0,A1,...,AK-1,AK∈TNxK+1,其中Aj=0j=0,1,...,K-1,AK=1+x+...+xN-1·xN2·μ′,其中令C′d为最接近2N·Cd的整数,其中d=0,1,...,K′,然后令将ACC0存储在全局内存中;其中TNx表示系数在[0,1范围内且最大次数为N-1的多项式,N为2的整数幂;K为正整数;Cd为TLWE密文C=TLWEsμ中的参数:C=C0,C1,...,CK′-1,CK′∈TK′+1,Cd∈T,d=0,1,...,K′,T表示区间[0,1,TLWE明文μ={μ0,μ1},K′为正整数;步骤2:gadget分解:令对ACC进行gadget分解,其中分解基H∈TNxK+1L×K+1,得到分解结果decHACC=A1,A2,...,AK+1L,其中L为正整数,j′=K+1j+q,cijq∈[-Bg2,Bg2,且cijq为整数,i=0,1,...,N-1,j=0,1,...,K,q=1,2,...,L,j′=1,2,...,K+1L;步骤3:将存储在共享内存xii=0,1,...,N-1中作为输入,通过以下过程进行快速数论转换,其中W为模数p的一个本原根;步骤3.1:对于大整数N,N=2q,q为正整数,N点NTT的输入为xii=0,1,...,N-1,输出为Xii=0,1,...,N-1;根据公式 将N点NTT计算分解为t个n点NTT和n个t点NTT,其中N=t·n,n以及t为正整数,且为2的幂;i=ti2+i1,为n点NTT的旋转因子,且为t点NTT的旋转因子,且 部分通过n点NTT来计算,其输入为对于N个点共有t个n点NTT,然后将t个n点NTT的结果再分别乘以N点NTT的旋转因子作为内部计算结果将内部结果作为输入,对于通过t点NTT来计算,对于N个点共有n个t点NTT,计算得到的结果即为N点NTT的最终结果具体计算过程如以下步骤3.2~步骤3.6:步骤3.2:在GPU上进行线程分配,共需N个线程;在计算n点NTT时,分为t个分组,将每个分组称为一个块,每个块有一个唯一确定的i1i1=0,1,...,t-1,以i1的值为每个块的序号,每个块包括n个线程,计算对应的一个n点NTT,对于i1确定的块,其n个输入为每个块中的每个线程的k2值各不相同,以k2的值来定义每个块中线程的顺序,对于每个块中的第kk=0,1,...,n-1个线程,有k2=k;之后为每个线程分配计算任务;步骤3.3:n点NTT合并预处理:对于第kk=0,1,...,n-1个线程,当k为奇数时,对于m=0,1,...,n2-1,根据公式 进行合并预处理;当k为偶数时,对于m=0,1,...,n4-1,n2,...,3n4-1,根据公式 进行合并预处理;其中modpa表示整数a对p取模,令modsuba,b=modpa-b表示2个64比特无符号数a和b模p的减法;步骤3.4:将步骤3.3得到的每个x″m扩充为三个无符号64比特数,这三个无符号数从高位到低位分别使用am,bm,cm来表示:am=0,bm=0,cm=x″m,用移位运算来代替乘法运算,得到192比特的结果;再将得到的n2个192比特数进行有进位的加法,得到NTT运算结果的192比特形式s;步骤3.5:计算s对p取模,得到计算结果X′k;每个线程计算一个X′kk=0,1...,n-1,对于第kk=0,1,...,n-1个线程,其计算的结果为所有的n个线程进行相同的计算就可以得到这个块的结果;步骤3.6:共分了t个块,每个块有唯一确定的i1,对于一个确定i1的块,这个块的每个线程有确定的k2,该线程计算的结果为每个线程需要乘以对应的N点NTT的旋转因子得到将每个线程得到的结果分别返回到存储中间结果的共享内存的第t·k2+i1个单元用于下一步计算:其中k2=0,1,...,n-1,i1=0,1,...,t-1;如果t=4,8,16,32,则对进行n个t点NTT的计算,将GPU分成n个块,每个块有t个线程,进行一个t点NTT计算,每个块的输入为输出为 如果t仍然大于32,则对于每个t点NTT,分解成t个n点NTT和n个t点NTT两部分进行计算;如果t仍然大于32,那么计算t点NTT时继续分解,以此类推,直到全部分解为以4点,8点,16点,32点的NTT为基计算;步骤4:将所有的都进行快速数论转换得到NTTAj′,对所有的KS0j′j也进行快速数论转换得到NTTKS0j′j,然后计算NTTAj′与NTTKS0j′j的乘法,再进行逆快速数论变换,将逆变换得到的结果相加得到其中j=0,1,...,K,然后将所有ACC1j组成的向量再减去ACC,得到:ACC1=ACC10,ACC11,...,ACC1K-ACC步骤5:将得到的ACC1存储在全局内存上,然后以ACCd和KSd为输入重复步骤,直到所有KSd均经过运算,其中d=0,1,...,K′-1;将得到的结果ACCK′进行密文提取,选择ACCK′=A′0,A′1,...,A′K中的每个多项式A′jj=0,1,...,K的常数项组成一个新的密文,并且将最后一项加上μ′,得到c′=c00,c01,...,c0K+μ′,令c′j为c0j最接近的整数倍的数字,其中j=0,1,...,K-1,令其中c′jr∈{0,1},最后得到门自举的最终结果: 其中,0为K′维的零向量。

全文数据:

权利要求:

百度查询: 西北工业大学 一种基于GPU快速数论转换的全同态加密门自举方法

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。