【技术实现步骤摘要】
一种基于GPU并行实现密码技术中大整数乘法的方法
[0001]本专利技术涉及公钥密码
,具体是涉及一种基于
GPU
并行实现密码技术中大整数乘法的方法
。
技术介绍
[0002]随着云计算时代的到来和云服务需求的不断增加,用户数据的安全性和隐私性成为人们关注的热点
。
尽管云平台存放的是用户经过加密的数据,但同时密钥被云服务商所获知,不能确保用户数据的安全和隐私
。
同态加密依据对加密数据进行处理的能力,完美符合隐私计算的计算模式,成为了当前学术研究的热点,受到了广泛的关注;其中
Paillier
复合剩余类难题的公钥加密算法正是最为重要的算法之一
。
在实际应用当中,
Paillier
密钥的长度需要达到
2048
比特,以此满足大多数应用场景的安全需要
。
但
2048
比特的密钥参与到乘法运算中,速度较慢,算法复杂度高,限制了
Paillier
等算法的适用范围;因此,研究一种能够提高加密性能的大数乘法算法在国内外快速发展起来
。
[0003]基于传统的按位乘法中,需要将一个操作数的每一位乘以另一个操作数据的每一位并累加,算法复杂度达到了
O(N^2)
,使用
CPU
单线程计算大数乘法来说是不可接受的
。
因此,研究
GPU
并行计算大整数乘法提高密钥运算速度 ...
【技术保护点】
【技术特征摘要】
1.
一种基于
GPU
并行实现密码技术中大整数乘法的方法,其特征在于,包括以下步骤:步骤
1、
数据划分:对在
GPU
平台上进行的公钥密码加解密过程需要进行大整数乘法的数据进行划分,将输入的被乘数记为
A
,乘数记为
B
,对长度为
n
比特的被乘数
A
按照从低到高或从高到低的次序每
w
比特划为一个字,共计
N
个字,长度为
m
比特乘数
B
按照与
A
同样的高低次序每
w
比特划为一个字,共计
M
个字;步骤
2、
线程取数:采用
x
个线程并行计算一个大整数乘法,每个线程根据位置从被乘数
A
或0中取
k
个字与乘数
B
相乘;步骤
3、
乘法运算:对于步骤2中取到的数,在每个线程当中使用区分高位低位的乘加指令,依次计算被乘数与乘数的乘积,将最终结果保存至
Result
,进位保存在
Carry1、Carry2
中;步骤
4、
进位运算:通过使用洗牌指令获取其他线程运算产生的进位
Carry1、Carry2
放入
tmp
中,使用加法指令计算
Result
与
tmp
的和,将新的结果写入
Result
,将新产生的进位保存在
Carry
中;通过循环迭代方式,即使用
CUDA
的束表决函数,判断在一个线程束中,是否有线程存在进位;如果存在,线程束中的所有线程同时累加迭代,直到所有线程不再产生进位;步骤
5、
结果写回:将各线程所得到的计算结果
Result
放入最终结果的对应位置并输出结果
。2.
根据权利要求1所述的一种基于
GPU
并行实现密码技术中大整数乘法的方法,其特征在于,对被乘数
A
和乘数
B
划分时,若长度不能被
w
整除,通过高位补0的方式将长度填充至
w
的整数倍
。3.
根据权利要求1或2任一项所述的一种基于
GPU
并行实现密码技术中大整数乘法的方法,其特征在于,对于步骤1的划分结果,定义以下符号:
A[u]
表示
A
的第
u
个字,
B[u]
表示
B
的第
u
个字,
A[0:N
‑
1]
表示被乘数
A
的第0~
(N
‑
1)
的
N
个字,
B[0:M
‑
1]
乘数
B
的第0~
(M
‑
1)
的
M
个字
。4.
根据权利要求1或2所述的一种基于
GPU
并行实现密码技术中大整数乘法的方法,其特征在于,对于步骤1的划分结果:
A
为
N...
【专利技术属性】
技术研发人员:董振江,叶青波,董建阔,亓晋,孙雁飞,陈滏媛,
申请(专利权)人:南京邮电大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。