一种简单安全的群元数乘和幂运算的计算方法及系统

文档序号:28263637发布日期:2021-12-31 17:28阅读:116来源:国知局

1.本发明属于密码技术领域,特别是一种简单安全的针对资源受限装置的加法群元数乘运算(标量乘运算、倍加运算)和乘法群元幂运算的计算方法及系统。


背景技术:

2.在密码运算(主要是公钥密码算法的密码运算)中常常要进行加法群中群元的数乘运算(标量乘运算、倍加运算)或乘法群中群元的幂运算,而这常常涉及复杂的大数运算,比如,在基于椭圆曲线点群的密码算法中,常常要进行kg数乘运算,其中g是椭圆曲线加法点群中的一个元(点),k是一个随机选择的、其值可能非常大的整数,计算kg涉及大数计算,计算量大,而且k通常是需要保密的数;再比如,在一些密码运算中(比如基于双线配对的密码算法),常常要进行g
k
幂运算,其中g是一个乘法群中的一个元,比如,其可能是一个非常大的整数,k是一个随机选择的、其值可能非常大的整数,因此,计算g
k
涉及大数运算,计算量大,而且k通常是需要保密的数。
3.随着物联网的发展,越来越多的微小装置智能化,并接入到网路。出于安全保护功能的需要,这些智能化的微小装置(如无限传感器、智能穿戴设备、现场仪表等)可能需要进行密码运算,而这些微小装置通常是资源受限的装置,计算能力弱,它们实时进行这种复杂的、涉及大数运算的加法群元数乘或乘法群元幂运算是比较困难,很难在期望的时间内完成有关的计算,这样就限制了密码算法(尤其是公钥密码算法)在这些微小智能装置中的应用。
4.针对此问题,发明cn201711318078.8和cn201910907018.2提出了相应的技术方案,这些方案的思路都是借助资源丰富的、计算能力强的装置完成加法群中群元数乘或乘法群中群元幂运算的实时计算,同时保证资源受限的装置,计算能力弱的装置的秘密如随机选择的整数k等不被泄露或破解。发明cn201711318078.8的弱点在某些场合安全性较弱,比如,当在其他的密码计算过程中或最后的密码计算结果中存在k的一次式的计算结果时(比如,sm2数字签名的(r,s)中的s,或在sm9数字签名协同计算过程中可能出现这种情况),则cn201711318078.8的方案不安全,而发明cn201910907018.2通过维护参数池增加了方案的适用性和安全性,但付出的代价是资源受限装置需要维护参数池、对参数池中的数据进行小计算量的更新操作,这样同样需要消耗资源受限装置有限的资源和计算力。


技术实现要素:

5.本发明的目的是针对资源受限装置,提出一种改进加法群元数乘运算(标量乘运算、倍加运算)和乘法群元幂运算的计算方法及相应的系统,以克服现有技术的不足。
6.针对以上发明目的,本专利申请提出的改进的技术方案包括一种加法群元数乘的计算方法、一种乘法群元幂运算的计算方法及相应的系统。
7.在本发明中,[]表示加法群中的数乘运算(标量乘运算、多倍加运算),[k]g,若k>0,则表示加法群中k个同一群元g的相加g+

+g,若k<0,则表示加法群中|k|个同一群元g的
相加的结果的加法逆元;^表示乘法群中的幂运算,g^k,若k>0,则表示乘法群中k个同一群元g的相乘gg

g,若k<0,则表示乘法群中|k|个同一群元g的相乘的结果的乘法逆元;在本发明描述中,如无特别说明,整数运算都是模n运算(mod n)或模n同余运算((mod n)),其中n是涉及的加法或乘法群的阶,为素数,对于一个整数a,a
‑1,表示模n乘法逆(a
‑1a mod n=1)或模n同余乘法逆(a
‑1a=1(mod n));省略号“...”,表示重复多个同样(类型)的数据项或重复多个同样的运算;若不会造成误解,则两个量a、b相乘a
·
b直接表示为ab(变量下标除外,变量下标中连续出现的字符没有运算含义,只有标识含义,如g
hi
中的hi没有h乘i含义)。
[0008]
本发明提出的加法群元数乘运算的计算方法具体描述如下。
[0009]
所述方法涉及第一方和第二方以及阶为素数n的加法群,其中第一方为(相对)资源受限、计算能力弱的装置(如无限传感器、智能穿戴设备、现场仪表等),第二方为(相对)资源丰富、计算能力强的装置(如计算机、服务器、边缘计算服务器、云计算系统等);
[0010]
第一方预先保存有g
h
=[ha
‑1]g,g
b
=[(ba)
‑1]g,其中h、b、a为[1,n

1]内的第一方的整数秘密,g为阶为素数n的加法群中的(非零)元,[]表示加法群元的数乘运算符([]内为整数乘数,[]后为群元);
[0011]
当第一方需要计算g
k
=[k]g时,其中k为[1,n

1]内的第一方的保密整数,第一方计算c=b(ak

h),将c、g
b
提交给第二方;
[0012]
第二方计算g
c
=[c]g
b

[0013]
第一方或第二方或其他方计算g
k
=g
c
+g
h
,则g
k
即为[k]g;
[0014]
以上a和b中的一个的取值允许为非保密的常数(如固定取值1);
[0015]
以上使用h,b,a,k的整数运算是模运算(mod n)或模n同余((mod n))运算。
[0016]
(若g
k
=g
c
+g
h
由第一方之外的其他方计算,则g
h
非保密)
[0017]
对于以上所述加法群元数乘运算的计算方法,(在需要对h、b、g
h
、g
b
更新时),第一方更新h、b、g
h
、g
b
的一种方法如下:
[0018]
第一方在[1,n

1]内随机选择一个整数r,以ra
‑1或(ra)
‑1作为k采用所述加法群元数乘运算的计算方法计算得到g
r
=[ra
‑1]g或g
r
=[(ra)
‑1]g,然后以r作为h或b的新值,相应地以g
r
作为g
h
或g
b
的新值;
[0019]
在g
r
计算过程中采用的h,b,a,g
h
,g
b
与非更新计算过程中(即普通g
k
计算过程中)采用的h,b,a,g
h
,g
b
是同一组数据或不同一组数据。
[0020]
h、g
h
和b、g
b
不必同时更新(可以同时更新,也可以不同时更新)。保密参数a也可以更新,但比较麻烦,需要进行两次更新计算(g
h
和g
b
)。
[0021]
对于以上所述加法群元数乘运算的计算方法,(在需要对h、b、g
h
、g
b
更新时),第一方更新h、b、g
h
、g
b
的另一种方法如下:
[0022]
在完成一个(普通)g
k
计算后,第一方用ka替代h,用g
k
替代g
h
,或者用(ka)
‑1替代b,用g
k
替代g
b
(一个k,只能更新h、b中的一个,可以依据约定的规律用k交替更新h、b,或者仅更新其中一个)。
[0023]
对于参数h、b的更新,不一定是必须的,是否需要对h、b更新,是否每次计算g
k
都要更新,什么时候更新,取决于实际的安全需要,当其他地方出现k的一次式计算结果时(比如,在k用于生成sm2数字签名的(r,s)中的s时),则可能需要对h、b进行更新。
[0024]
具体实施时,可以实施以上两个h、b、g
h
、g
b
更新方法中的一个,或者同时实施、交替
使用以上两个h、b、g
h
、g
b
更新方法。
[0025]
对于以上所述加法群元数乘运算的计算方法,h、b、a初始值的选择以及对应初始群元g
h
、g
b
的计算在系统初识化时进行,h、b、a初始值是[1,n

1]内随机选择的整数。
[0026]
若第一方维护有m组数据h
i
,b
i
,a
i
,g
hi
=[h
i
(a
i
)
‑1]g,g
bi
=[(b
i
a
i
)
‑1]g,其中h
i
,b
i
,a
i
为[1,n

1]内的第一方的整数秘密,i=1,

,m,m≥2,以及有g
h
=g
h1
+

+g
hm
,则针对上述加法群元数乘运算的计算方法的一种安全增强方案如下:
[0027]
当第一方需要计算g
k
=[k]g时,其中k为[1,n

1]内的第一方的保密整数,第一方将k随机分解为[1,n

1]内的m个整数k
i
,i=1,

,m,且k=k1+

+k
m
(通常在[1,n

1]内随机选择k
i
,i=1,

,m

1,然后计算k
m
=k

(k1+

+k
m
‑1));
[0028]
第一方计算c
i
=b
i
(a
i
k
i

h
i
),将c
i
、g
bi
,i=1,

,m,提交给第二方;
[0029]
第二方计算g
ci
=[c
i
]g
bi
,i=1,

,m,计算g
c
=g
c1
+

+g
cm

[0030]
第一方或第二方或其他方计算g
k
=g
c
+g
h
,则g
k
即为[k]g;
[0031]
以上所述使用h
i
,b
i
,k
i
的整数运算是模运算(mod n)或模n同余((mod n))运算。
[0032]
(若g
k
=g
c
+g
h
由第一方之外的其他方计算,则g
h
非保密)
[0033]
(若第一方需要更新h
i
、b
i
、g
hi
、g
bi
,i=1,

,m,则可以采用与更新h、b、g
h
、g
b
同样的方式进行更新,比如,用k和g
k
去更新某一对参数h
i
、g
hi
或b
i
、g
bi
中的一个,但通常是不需要的)
[0034]
本发明的乘法群元幂运算的计算方法具体描述如下。
[0035]
所述方法涉及第一方和第二方以及阶为素数n的乘法群,其中第一方为(相对)资源受限、计算能力弱的装置(如无限传感器、智能穿戴设备、现场仪表等),第二方为(相对)资源丰富、计算能力强的装置(如计算机、服务器、边缘计算服务器、云计算系统等);
[0036]
第一方预先保存有g
h
=g^(ha
‑1),g
b
=g^((ba)
‑1),其中h、b、a为[1,n

1]内的第一方的整数秘密,g为阶为素数n的乘法群中的(非单位)元,^表示乘法群元的幂运算符(^前为群元,^后为幂运算次数);
[0037]
当第一方需要计算g
k
=g^k时,其中k为[1,n

1]内的第一方的保密整数,c=b(ak

h),将c、g
b
提交给第二方;
[0038]
第二方计算g
c
=(g
b
^c);
[0039]
第一方或第二方或其他方计算g
k
=g
c
g
h
,则g
k
即为g^k;
[0040]
以上a和b中的一个的取值允许为非保密的常数(如固定取值1);
[0041]
以上使用h,b,a,k的整数运算是模运算(mod n)或模n同余((mod n))运算。
[0042]
(若g
k
=g
c
g
h
由第一方之外的其他方计算,则g
h
非保密)
[0043]
对于以上所述乘法群元幂运算的计算方法,(在需要对h、b、g
h
、g
b
更新时),第一方更新h、b、g
h
、g
b
的一种方法如下:
[0044]
第一方在[1,n

1]内随机选择一个整数r,以ra
‑1或(ra)
‑1作为k采用所述乘法群元幂运算的计算方法计算得到g
r
=g^(ra
‑1)或g
r
=g^((ra)
‑1),然后以r作为h或b的新值,相应地以g
r
作为g
h
或g
b
的新值;
[0045]
在g
r
计算过程中采用的h,b,a,g
h
,g
b
与非更新计算过程中(即普通g
k
计算过程中)采用的h,b,a,g
h
,g
b
是同一组数据或不同一组数据。
[0046]
h、g
h
和b、g
b
不必同时更新(可以同时更新,也可以不同时更新)。保密参数a也可以
更新,但比较麻烦,需要进行两次更新计算(g
h
和g
b
)。
[0047]
对于以上所述乘法群元幂运算的计算方法,(在需要对h、b、g
h
、g
b
更新时),第一方更新h、b、g
h
、g
b
的另一种方法如下:
[0048]
在完成一个(普通)g
k
计算后,第一方用ka替代h,用g
k
替代g
h
,或者用(ka)
‑1替代b,用g
k
替代g
b
(一个k,只能更新h、b中的一个,可以依据约定的规律用k交替更新h、b,或者仅更新其中一个)。
[0049]
对于参数h、b的更新,不一定是必须的,是否需要对h、b更新,是否每次计算g
k
都要更新,什么时候更新,取决于实际的安全需要,比如,在用于sm9数字签名协同计算过程中,出现整数k的一次式模n运算结果时,则可能需要对h、b进行更新。
[0050]
具体实施时,可以实施以上两个h、b、g
h
、g
b
更新方法中的一个,或者同时实施、交替使用以上两个h、b、g
h
、g
b
更新方法。
[0051]
对于以上所述乘法群元幂运算的计算方法,h、b、a初始值的选择以及对应初始群元的计算在系统初识化时进行,h、b、a初始值是[1,n

1]内随机选择的整数。
[0052]
若第一方维护有m组数据h
i
,b
i
,a
i
,g
hi
=g^(h
i
(a
i
)
‑1)、g
bi
=g^((b
i
a
i
)
‑1),其中h
i
,b
i
,a
i
为[1,n

1]内的第一方的整数秘密,i=1,

,m,m≥2,以及有g
h
=g
h1
g
h2

g
hm
,则针对上述乘法群元幂运算的计算方法的一种安全增强方案如下:
[0053]
当第一方需要计算g
k
=g^k时,其中k为[1,n

1]内的第一方的保密整数,第一方将k随机分解为[1,n

1]内的m个整数k
i
,i=1,

,m,且k=k1+

+k
m
(通常在[1,n

1]内随机选择k
i
,i=1,

,m

1,然后计算k
m
=k

(k1+

+k
m
‑1));
[0054]
第一方计算c
i
=b
i
(a
i
k
i

h
i
),将c
i
、g
bi
,i=1,

,m,提交给第二方;
[0055]
第二方计算g
ci
=g
bi
^c
i
,i=1,

,m,计算g
c
=g
c1
g
c2

g
cm

[0056]
第一方或第二方或其他方计算g
k
=g
c
g
h
,则g
k
即为g^k;
[0057]
以上所述使用h
i
,b
i
,k
i
的整数运算是模运算(mod n)或模n同余((mod n))运算。
[0058]
(若g
k
=g
c
g
h
由第一方之外的其他方计算,则g
h
非保密)
[0059]
(若第一方需要更新h
i
、b
i
、g
hi
、g
bi
,i=1,

,m,则可以采用与更新h、b、g
h
、g
b
同样的方式进行更新,比如,用k和g
k
去更新某一对参数h
i
、g
hi
或b
i
、g
bi
,但通常是不需要的)
[0060]
基于本发明的方法可构建相应的针对加法群元数乘或乘法群元幂运算的计算系统,系统包括两个装置,其中一个为称为第一方的资源受限、计算能力弱的装置(如无限传感器、智能穿戴设备、现场仪表等),另一个为称为第二方的(相对)资源丰富、计算能力强的装置(如计算机、服务器、边缘计算服务器、云计算系统等);当第一方需要进行加法群元数乘或乘法群元幂运算时,所述第一方和第二方按所述加法群元数乘或乘法群元幂运算的计算方法计算得到群元数乘或群元幂运算的结果。
[0061]
在以上本发明的针对加法群元数乘或乘法群元幂运算的计算方法及系统中,第一方是一个(相对)资源受限、计算能力弱的装置,而第二方是(相对)资源丰富、计算能力强的装置;基于本发明的方法及系统,作为资源受限、计算能力弱的第一方可以借助资源丰富、计算能力强的第二方完成计算量大的加法群中的群元数乘运算(如椭圆曲线点群中的点的数乘或多倍加运算)或乘法群中的群元幂运算(如双线配对的乘法群中的群元的幂运算),同时避免了第一方的秘密如保密整数k被泄露,而且,本发明的第一方有三个保密参数、h、b、a,且可以对h、b不断更新,并借助第二方对g
h
、g
b
或g
h
、g
b
进行更新,使得本发明的方法即
便用于sm2数字签名,或者sm9数字签名协同计算,k也很难被破解,从而使得本发明具有更广泛的适用性,克服了cn201711318078.8的不足,于此同时,本发明第一方无需维护参数池,无需对参数池中的加法群元数乘或乘法群元幂运算数据进行更新,从而使得本发明克服了cn201910907018.2的不足。本发明的方案不但安全性提高,而且简单。作为一种安全增强方案,本发明的第一方也可以维护m组参数,但与cn201910907018.2的差别在于,本发明的第一方维护的参数组数m可以很小,通常m=2,3就行,而cn201910907018.2中第一方维护的参数组数m要较大才安全,而且本发明的第一方无需对参数组中的群元进行小计算量的群元数乘或群元幂运算更新,而cn201910907018.2需要。
具体实施方式
[0062]
下面结合实施例对本发明作进一步的描述。以下实施例仅是本发明列举的几个可能的实施例,不代表全部可能的实施例,不作为对本发明的限定。
[0063]
实施例1、
[0064]
此实施例涉及一个加法群,加法群的阶是素数n;此实施例包括第一方和第二方,其中第一方为资源受限、计算能力弱的装置(如无限传感器、智能穿戴设备、现场仪表等),第二方为(相对)资源丰富、计算能力强的装置(如计算机、服务器、边缘计算服务器、云计算系统等);
[0065]
第一方预先保存有g
h
=[ha
‑1]g,g
b
=[(ba)
‑1]g,其中h、b、a为[1,n

1]内的第一方的整数秘密,g为阶为素数n的加法群中的(非零)元,[]表示加法群元的数乘运算符([]内为整数乘数,[]后为群元);
[0066]
当第一方需要计算g
k
=[k]g时,其中k为[1,n

1]内的第一方的保密整数,第一方计算c=b(ak

h),将c、g
b
提交给第二方;
[0067]
第二方计算g
c
=[c]g
b

[0068]
第一方或第二方或其他方计算g
k
=g
c
+g
h
,则g
k
即为[k]g;
[0069]
此实施例中,a和b中的一个的取值允许为非保密的常数(如固定取值1);
[0070]
以上所述使用h,b,a,k的整数运算是模运算(mod n)或模n同余((mod n))运算。
[0071]
(若g
k
=g
c
+g
h
由第一方之外的其他方计算,则g
h
非保密)
[0072]
此实施例,h、b、a初始值的选择以及对应初始群元的计算在系统初识化时进行,h、b、a初始值是[1,n

1]内随机选择的整数。
[0073]
实施例2、
[0074]
此实施例与实施1的差别在于,在每次计算一个(普通)g
k
之前或之后(不必正好之前或正好之后,可以提前或空闲时),第一方按如下方式对h、g
h
和/或b、g
b
更新:
[0075]
第一方在[1,n

1]内随机选择一个整数r,以ra
‑1或(ra)
‑1作为k采用所述加法群元数乘运算的计算方法计算得到g
r
=[ra
‑1]g或g
r
=[(ra)
‑1]g,然后以r作为h或b的新值,相应地以g
r
作为g
h
或g
b
的新值;
[0076]
在g
r
计算过程中采用的h,b,a,g
h
,g
b
与非更新计算过程中(即普通g
k
计算过程中)采用的h,b,a,g
h
,g
b
是同一组数据或不同一组数据。
[0077]
实施例3、
[0078]
此实施例与实施例2的差别在于,在每次完成一个(普通)g
k
计算后,第一方按如下
方式对h、g
h
或b、g
b
更新:
[0079]
第一方用ka替代h,用g
k
替代g
h
,或者用(ka)
‑1替代b,用g
k
替代g
b
(一个k,只能更新h、b中的一个,可以依据约定的规律用k交替更新h、b,或者仅更新其中一个)。
[0080]
实施例4、
[0081]
此实施例与实施例2、3的差别在于,在
[0082]
在每次计算一个g
k
之前或之后(不必正好之前或正好之后,可以提前或空闲时),第一方按实施例2的方式对h、g
h
和b、g
b
这两对参数中的一对进行更新,在完成一个(普通)g
k
计算后,按实施例3的方式对另一对参数进行更新。
[0083]
实施例5、
[0084]
此实施例与实施例1的差别在于,第一方维护有m组数据h
i
,b
i
,a
i
,g
hi
=[h
i
(a
i
)
‑1]g,g
bi
=[(b
i
a
i
)
‑1]g,其中h
i
,b
i
,a
i
为[1,n

1]内的第一方的整数秘密,i=1,

,m,m≥2,以及有g
h
=g
h1
+

+g
hm

[0085]
当第一方需要计算g
k
=[k]g时,其中k为[1,n

1]内的第一方的保密整数,第一方将k随机分解为[1,n

1]内的m个整数k
i
,i=1,

,m,且k=k1+

+k
m
(通常在[1,n

1]内随机选择k
i
,i=1,

,m

1,然后计算k
m
=k

(k1+

+k
m
‑1));
[0086]
第一方计算c
i
=b
i
(a
i
k
i

h
i
),将c
i
、g
bi
,i=1,

,m,提交给第二方;
[0087]
第二方计算g
ci
=[c
i
]g
bi
,i=1,

,m,计算g
c
=g
c1
+

+g
cm

[0088]
第一方或第二方或其他方计算g
k
=g
c
+g
h
,则g
k
即为[k]g;
[0089]
以上所述使用h
i
,b
i
,k
i
的整数运算是模运算(mod n)或模n同余((mod n))运算。
[0090]
(若g
k
=g
c
+g
h
由第一方之外的其他方计算,则g
h
非保密)
[0091]
此实施例,若第一方需要更新h
i
、b
i
、g
hi
、g
bi
,i=1,

,m,则可以采用与更新h、b、g
h
、g
b
同样的方式进行更新,比如,用k和g
k
去更新某一对参数h
i
、g
hi
或b
i
、g
bi
中的一个,但通常是不需要的。
[0092]
在具体实施中,m的大小取决于安全要求,通常m=2,3就足够。
[0093]
实施例6、
[0094]
此实施例涉及一个乘法群,乘法群的阶是素数n;此实施例包括第一方和第二方,其中第一方为资源受限、计算能力弱的装置(如无限传感器、智能穿戴设备、现场仪表等),第二方为(相对)资源丰富、计算能力强的装置(如计算机、服务器、边缘计算服务器、云计算系统等);
[0095]
第一方预先保存有g
h
=g^(ha
‑1),g
b
=g^((ba)
‑1),其中h、b、a为[1,n

1]内的第一方的整数秘密,g为阶为素数n的乘法群中的(非单位)元,^表示乘法群元的幂运算符(^前为群元,^后为幂运算次数);
[0096]
当第一方需要计算g
k
=g^k时,其中k为[1,n

1]内的第一方的保密整数,c=b(ak

h),将c、g
b
提交给第二方;
[0097]
第二方计算g
c
=(g
b
^c);
[0098]
第一方或第二方或其他方计算g
k
=g
c
g
h
,则g
k
即为g^k;
[0099]
此实施例中,a和b中的一个的取值允许为非保密的常数(如固定取值1);
[0100]
以上所述使用h,b,a,k的整数运算是模运算(mod n)或模n同余((mod n))运算。
[0101]
(若g
k
=g
c
g
h
由第一方之外的其他方计算,则g
h
非保密)
[0102]
此实施例中,h、b、a初始值的选择以及对应初始群元的计算在系统初识化时进行,h、b、a初始值是[1,n

1]内随机选择的整数。
[0103]
实施例7、
[0104]
此实施例与实施例6的差别在于,在每次计算一个(普通)g
k
之前或之后(不必正好之前或正好之后,可以提前或空闲时),第一方按如下方式对h、g
h
和/或b、g
b
进行:
[0105]
第一方在[1,n

1]内随机选择一个整数r,以ra
‑1或(ra)
‑1作为k采用所述乘法群元幂运算的计算方法计算得到g
r
=g^(ra
‑1)或g
r
=g^((ra)
‑1),然后以r作为h或b的新值,相应地以g
r
作为g
h
或g
b
的新值;
[0106]
在g
r
计算过程中采用的h,b,a,g
h
,g
b
与非更新计算过程中(即普通g
k
计算过程中)采用的h,b,a,g
h
,g
b
是同一组数据或不同一组数据。
[0107]
实施例8、
[0108]
此实施例与实施例7的差别在于,在每次计算一个(普通)g
k
之后,第一方按如下方式对h、g
h
或b、g
b
进行更新:
[0109]
在完成一个(普通)g
k
计算后,第一方用ka替代h,用g
k
替代g
h
,或者用(ka)
‑1替代b,用g
k
替代g
b
(一个k,只能更新h、b中的一个,可以依据约定的规律用k交替更新h、b,或者仅更新其中一个)。
[0110]
实施例9、
[0111]
此实施例与实施例7、8的差别在于,在每次计算一个g
k
之前或之后(不必正好之前或正好之后,可以提前或空闲时),第一方按实施例7的方式对h、g
h
和b、g
b
这两对参数中的一对进行更新,在完成一个(普通)g
k
计算后,按实施例8的方式对另一对参数进行更新。
[0112]
实施例10、
[0113]
此实施例与实施例6的差别在于,第一方维护有m组数据h
i
,b
i
,a
i
,g
hi
=g^(h
i
(a
i
)
‑1)、g
bi
=g^((b
i
a
i
)
‑1),其中h
i
,b
i
,a
i
为[1,n

1]内的第一方的整数秘密,i=1,

,m,m≥2,以及有g
h
=g
h1
g
h2

g
hm

[0114]
当第一方需要计算g
k
=g^k时,其中k为[1,n

1]内的第一方的保密整数,第一方将k随机分解为[1,n

1]内的m个整数k
i
,i=1,

,m,且k=k1+

+k
m
(通常在[1,n

1]内随机选择k
i
,i=1,

,m

1,然后计算k
m
=k

(k1+

+k
m
‑1));
[0115]
第一方计算c
i
=b
i
(a
i
k
i

h
i
),将c
i
、g
bi
,i=1,

,m,提交给第二方;
[0116]
第二方计算g
ci
=g
bi
^c
i
,i=1,

,m,计算g
c
=g
c1
g
c2

g
cm

[0117]
第一方或第二方或其他方计算g
k
=g
c
g
h
,则g
k
即为g^k;
[0118]
以上所述使用h
i
,b
i
,k
i
的整数运算是模运算(mod n)或模n同余((mod n))运算。
[0119]
(若g
k
=g
c
g
h
由第一方之外的其他方计算,则g
h
非保密)
[0120]
此实施例,若第一方需要更新h
i
、b
i
、g
hi
、g
bi
,i=1,

,m,则可以采用与更新h、b、g
h
、g
b
同样的方式进行更新,比如,用k和g
k
去更新某一对参数h
i
、g
hi
或b
i
、g
bi
,但通常是不需要的。
[0121]
在具体实施中,m的大小取决于安全要求,通常m=2,3就足够。
[0122]
基于本发明的方法可实施、构建相应的针对加法群元数乘或乘法群元幂运算的计算系统,系统包括两个装置,其中一个为称为第一方的资源受限、计算能力弱的装置(如无限传感器、智能穿戴设备、现场仪表等),另一个为称为第二方的(相对)资源丰富、计算能力
强的装置(如计算机、服务器、边缘计算服务器、云计算系统等);当第一方需要进行加法群元数乘或乘法群元幂运算时,所述第一方和第二方按所述加法群元数乘或乘法群元幂运算的计算方法计算得到加法群元数乘或乘法群元幂运算的结果。
[0123]
其他未说明的具体技术实施,对于相关领域的技术人员而言是众所周知,不言自明的。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1