本发明涉及计算机,尤其涉及一种用于隐私计算的大整数数据相除运算方法及系统。
背景技术:
1、在联邦学习相关应用场景中,拥有数据的各个参与方通过隐私计算来保护数据安全和用户隐私,例如采用同态加密方法对原始数据(即明文)进行加密后再将加密后的密态数据(即密文)用在模型训练、梯度计算、参数计算等。同态加密方法允许直接在密文上进行代数运算等有效操作例如加法运算和乘法运算,并且直接对密文进行计算的结果等效于解密后对明文进行计算的结果,从而仅根据公钥和密文进行计算而无需知道密钥。这些数据加密技术和密态运算技术统称为隐私计算。
2、隐私计算需要使用大量复杂算子操作,其中包括大整数位宽的除法运算。例如,常见的一种同态加密方法是paillier算法,paillier算法的解密计算需要对大整数位宽的被除数和除数进行除法运算,并且被除数和除数的位宽可以是1024比特、2048比特、4096比特或者更大的位宽。但是,传统的除法运算计算复杂度过高,耗时较长,计算开销过大。如何提高运算效率,减少计算开销,成为了亟待解决的问题。
技术实现思路
1、本发明为了解决上述技术问题,提供了一种用于隐私计算的大整数数据相除运算方法及系统,其能够提高大整数数据相除的计算效率,减少计算时间、计算开销。
2、为了解决上述问题,本发明采用以下技术方案予以实现:
3、本发明的一种用于隐私计算的大整数数据相除运算方法,计算方持有作为被除数的数据y和作为除数的数据x,包括以下步骤:
4、s1:统计数据y的有效比特长度、数据x的有效比特长度,计算出数据y与数据x的有效比特长度差值;
5、s2:根据有效比特长度差值创建数据提取窗口,根据数据x生成预计算表;
6、s3:数据提取窗口将数据y内的数据分段取出与预计算表进行计算,得到商和余数。
7、作为优选,所述步骤s2中创建数据提取窗口的方法包括以下步骤:
8、n1:创建数据提取窗口,所述数据提取窗口包括相接的固定窗口和滑动窗口,所述滑动窗口拼接在固定窗口的低位,数据提取窗口位于数据y的最高位,设定滑动窗口的窗口宽度d、滑动步长w,窗口宽度d与滑动步长w相等;
9、n2:计算出固定窗口的窗口宽度f,f=lx+v%w,v=ly-lx;
10、计算出滑动窗口的滑动次数d,;
11、其中,v为有效比特长度差值,ly为数据y的有效比特长度,lx为数据x的有效比特长度,表示向下取整。
12、作为优选,所述步骤s2中生成预计算表的方法包括以下步骤:生成预计算表,将数据集合q={0, x,2x……(2w-1)*x}写入预计算表。
13、作为优选,所述步骤s3包括以下步骤:
14、s31:固定窗口取出在数据y上覆盖的数据作为中间数据a,将中间数据a与预计算表进行计算得到中间结果r和中间结果z,将中间数据a赋值为中间结果z;
15、s32:设置k=0,滑动窗口取出当前初始位置在数据y上覆盖的数据,将取出的数据拼接到中间数据a的低位得到新的中间数据a,将中间数据a与预计算表进行计算得到中间结果r和中间结果z,将中间数据a赋值为中间结果z;
16、s33:滑动窗口从高位向低位以滑动步长w滑动一次,滑动完成后取出当前在数据y上覆盖的数据,将取出的数据拼接到中间数据a的低位得到新的中间数据a,将中间数据a与预计算表进行计算得到中间结果r和中间结果z,将中间数据a赋值为中间结果z;
17、s34:给k赋值为k=k+1,判断k是否大于d,如果是则执行步骤s35,否则跳转至步骤s33;
18、s35:将所有中间结果r拼接在一起得到商,将中间数据a作为余数。
19、滑动窗口从初始位置以滑动步长w从数据y的高位向低位滑动,依次取出d+1个数据,每次取出数据时执行如下步骤:将取出的数据拼接到当前中间数据a的低位得到新的中间数据a,将新的中间数据a与预计算表进行计算得到对应的中间结果r和中间结果z,将中间数据a赋值为中间结果z。
20、作为优选,所述将中间数据a与预计算表进行计算得到中间结果r和中间结果z的方法包括以下步骤:找到中间数据a在预计算表中所处的区间,当t*x≤a<(t+1)*x时,t=0,1,2……2w-2,中间结果r=t、中间结果z=a-t*x。
21、作为优选,所述将中间数据a与预计算表进行计算得到中间结果r和中间结果z的方法包括以下步骤:
22、m1:判断中间数据a的有效比特长度是否小于数据x的有效比特长度,如果是,则中间结果r=0、中间结果z=a;否则,执行步骤m2;
23、m2:在预计算表中查找出与中间数据a的有效比特长度一致的数据,从这些数据中找到中间数据a所处的区间,当p*x≤a<(p+1)*x时,p=1,2……2w-2,中间结果r=p、中间结果z=a-p*x。
24、作为优选,所述步骤s35中将所有中间结果r拼接在一起得到商的方法如下:
25、将固定窗口取出的中间数据a与预计算表进行计算得到中间结果r记为r0;
26、将滑动窗口在初始位置取出的数据拼接出的中间数据a与预计算表进行计算得到中间结果r记为r1;
27、将滑动窗口第i次滑动后取出的数据拼接出的中间数据a与预计算表进行计算得到中间结果r记为ri+1,1≤i≤d;
28、所有中间结果r拼接在一起得到商,,r为商,为拼接符。
29、作为优选,所述固定窗口覆盖数据y的第ly-f至第ly-1位。数据y的最低位为第0位。
30、作为优选,所述滑动窗口位于初始位置时覆盖数据y的第ly-f-d至第ly-f-1位。
31、本发明的一种用于隐私计算的大整数数据相除运算系统,用于上述的一种用于隐私计算的大整数数据相除运算方法,包括:
32、控制单元,用于计算数据y与数据x的有效比特长度差值,创建数据提取窗口,生成预计算表,分配计算任务给各个线程;
33、共享内存,用于存储预计算表,供各个线程访问获取预计算表内的数据;
34、多个线程,用于并行执行控制单元分配的计算任务。
35、本发明的有益效果是:将作为被除数的数据y进行切分后分段与根据数据x生成的预计算表进行比较运算、减法运算,从而优化加速大整数数据相除计算,提高了计算效率,减少了计算时间、计算开销,进而提高了需要用到大整数数据相除的同态加密等隐私计算的计算效率。
1.一种用于隐私计算的大整数数据相除运算方法,计算方持有作为被除数的数据y和作为除数的数据x,其特征在于,包括以下步骤:
2.根据权利要求1所述的一种用于隐私计算的大整数数据相除运算方法,其特征在于,所述步骤s2中创建数据提取窗口的方法包括以下步骤:
3.根据权利要求2所述的一种用于隐私计算的大整数数据相除运算方法,其特征在于,所述步骤s2中生成预计算表的方法包括以下步骤:生成预计算表,将数据集合q={0, x,2x……(2w-1)*x}写入预计算表。
4.根据权利要求3所述的一种用于隐私计算的大整数数据相除运算方法,其特征在于,所述步骤s3包括以下步骤:
5.根据权利要求4所述的一种用于隐私计算的大整数数据相除运算方法,其特征在于,所述将中间数据a与预计算表进行计算得到中间结果r和中间结果z的方法包括以下步骤:找到中间数据a在预计算表中所处的区间,当t*x≤a<(t+1)*x时,t=0,1,2……2w-2,中间结果r=t、中间结果z=a-t*x。
6.根据权利要求4所述的一种用于隐私计算的大整数数据相除运算方法,其特征在于,所述将中间数据a与预计算表进行计算得到中间结果r和中间结果z的方法包括以下步骤:
7.根据权利要求4所述的一种用于隐私计算的大整数数据相除运算方法,其特征在于,所述步骤s35中将所有中间结果r拼接在一起得到商的方法如下:
8.根据权利要求2所述的一种用于隐私计算的大整数数据相除运算方法,其特征在于,所述固定窗口覆盖数据y的第ly-f至第ly-1位。
9.根据权利要求2所述的一种用于隐私计算的大整数数据相除运算方法,其特征在于,所述滑动窗口位于初始位置时覆盖数据y的第ly-f-d至第ly-f-1位。
10.一种用于隐私计算的大整数数据相除运算系统,用于权利要求1所述的一种用于隐私计算的大整数数据相除运算方法,其特征在于,包括: