一种针对群元数乘或幂运算的计算方法及系统

文档序号:1627709 发布日期:2020-01-14 浏览:24次 >En<

阅读说明:本技术 一种针对群元数乘或幂运算的计算方法及系统 (Computing method and system for group element number multiplication or power operation ) 是由 龙毅宏 于 2019-09-24 设计创作,主要内容包括:所述方法涉及针对群元数乘或幂运算的计算方法:第一方有一个参数池,池中有m个[1,n-1]内的整数k&lt;Sub&gt;1&lt;/Sub&gt;,k&lt;Sub&gt;2&lt;/Sub&gt;,…,k&lt;Sub&gt;m&lt;/Sub&gt;,及对应的加法群中的元k&lt;Sub&gt;1&lt;/Sub&gt;G,k&lt;Sub&gt;2&lt;/Sub&gt;G,…,k&lt;Sub&gt;m&lt;/Sub&gt;G,其中G是加法群中的一个元,或者对应的乘法群中的元g^k&lt;Sub&gt;1&lt;/Sub&gt;,g^k&lt;Sub&gt;2&lt;/Sub&gt;,…,g^k&lt;Sub&gt;m&lt;/Sub&gt;,其中g是乘法群中的一个元,^为幂运算,n为群的阶;第一方利用池中的整数参数及对应的群元,在不暴露k的情况下借助第二方完成G_k=kG或g_k=g^k的计算,其中k是[1,n-1]中的第一方的整数秘密;在完成一次G_k或g_k的计算后,或者在完成规定次数的、针对不同k的G_k或g_k的计算后,第一方对参数池中已使用的整数参数k&lt;Sub&gt;t&lt;/Sub&gt;及对应的群元进行更新。(The method involves a computational method for a group element number multiplication or exponentiation: the first party has a parameter pool with m [1, n-1] s]Integer k within 1 ,k 2 ,…,k m And the corresponding element k in the addition group 1 G,k 2 G,…,k m G, where G is an element in an addition group or an element G ^ k in a corresponding multiplication group 1 ,g^k 2 ,…,g^k m Wherein g is an element in the multiplicative group, ^ is the power operation, and n is the group order; the first party performs the computation of G _ k ^ kG or G _ k ^ G ^ k with the second party without exposing k, where k is [1, n-1, using the integer parameters and corresponding group elements in the pool]An integer secret of the first party; after completing the calculation of G _ k or G _ k once or the calculation of G _ k or G _ k for different k for a specified number of times, the first party performs the calculation of the integer parameter k used in the parameter pool t And corresponding group element carries out furtherAnd (5) new.)

一种针对群元数乘或幂运算的计算方法及系统

技术领域

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

背景技术

在密码运算(主要是公钥密码算法的密码运算)中常常要进行加法群中群元的数乘运算(标量乘运算、倍加运算)或乘法群中群元的幂运算,而这常常涉及复杂的大数运算,比如,在基于椭圆曲线点群的密码算法中,常常要进行kG数乘运算,其中G是椭圆曲线加法点群中的一个元(点),k是一个随机选择的、其值可能非常大的整数,计算kG涉及大数计算,计算量大;再比如,在一些密码运算中(比如基于双线配对的密码算法),常常要进行gk幂运算,其中g是一个乘法群中的一个元,比如,其可能是一个非常大的整数,k是一个随机选择的、其值可能非常大的整数,因此,计算gk涉及大数运算,计算量大。

随着物联网的发展,越来越多的微小装置智能化,并接入到网路。出于安全保护功能的需要,这些智能化的微小装置可能需要进行密码运算,而这些微小装置通常是资源受限的装置,计算能力弱,它们实时进行这种复杂的、涉及大数运算的数乘或幂运算是比较困难,这样就限制了密码算法(尤其是公钥密码算法)在这些微小智能装置中的应用。

发明内容

本发明的目的是针对资源受限装置,提出一种加法群元数乘运算(标量乘运算、倍加运算)或乘法群元幂运算的计算方法及相应的系统,以满足这些装置对密码功能的需求。

针对以上发明目的,本专利申请提出的技术方案包括一种针对群元数乘或幂运算的计算方法及系统。

本发明提出的针对群元数乘或幂运算的计算方法,具体如下:

所述方法涉及一个加法群或乘法群;所述加法群或乘法群的阶是素数n;

所述方法包括第一方和第二方,其中,第一方维护有一个参数池,参数池中有m个[1,n-1]区间内的整数k1,k2,…,km,及对应的加法群中的群元k1G,k2G,…,kmG,即k1,k2,…,km分别与G进行数乘运算的结果(标量乘运算、倍点运算),其中G是加法群中的一个元,或者有对应的乘法群中的群元g^k1,g^k2,…,g^km,即k1,k2,…,km分别对g进行幂运算的结果,其中g是乘法群中的一个元,^表示幂运算(对^前面的元进行幂运算,^后面的整数是幂运算的次数);

k1,k2,…,km称为整数参数,群元k1G,k2G,…,kmG称为整数参数k1,k2,…,km对应的数乘元,群元g^k1,g^k2,…,g^km称为整数参数k1,k2,…,km对应的幂元(整数参数及其与数乘元或幂元的对应关系需要保密);

k1G,k2G,…,kmG分别表示为G_k1,G_k2,…,G_km

g^k1,g^k2,…,g^km分别表示为g_k1,g_k2,…,g_km

当第一方需要计算G_k=kG或g_k=g^k时,其中k是[1,n-1]中的只有第一方知道的需要保密的整数(如随机选择的作为秘密的整数,或通过约定方式选取或计算得到的需要保密的整数),第一方与第二方按如下方式协同完成G_k=kG或g_k=g^k的计算:

第一方从参数池中的m个整数参数中按预定的规律选择一个整数参数kt,t=1,2,…,或m;

第一方计算w=(k(kt)-1)mod n或w=(k-kt)mod n,然后将w和G_kt或w和g_kt发送给第二方,其中(kt)-1为kt的模n乘法逆(即(kt(kt)-1)mod n=1),G_kt是(从参数池中取出的)与kt对应的数乘元(即G_kt=ktG),g_kt是(从参数池中取出的)与kt对应的幂元(即g_kt=g^kt);

若w的计算式为w=(k(kt)-1)mod n,则:

第二方计算G_k=wG_kt或g_k=g_kt^w;

若w的计算式为w=(k-kt)mod n,则:

第二方计算G_k=wG+G_kt或g_k=g_kt(g^w);

G_k即为kG或g_k即为g^k;

在完成一次G_k或g_k计算后,或者在完成规定次数的、针对不同k的G_k或g_k的计算后,第一方对参数池中已使用的整数参数kt及对应的数乘元G_kt或幂元g_kt进行更新,其中,t=1,2,…或m。

对于以上所述的针对群元数乘或幂运算的计算方法,第一方从参数池中的m个整数参数中按预定的规律选择一个整数参数kt的方式包括:

在每次计算G_k=kG或g_k=g^k时,在m个整数参数中按顺序依次选择一个整数参数kt,或在m个整数参数中随机选择一个未使用的整数参数kt(使用后又更新的整数参数属于未使用的整数参数);

所述在m个整数参数中按顺序依次选择一个整数参数kt是指:

若是第一次计算G_k=kG或g_k=g^k,则选择k1

若上次计算选择的整数参数是ki且1≤i<m,则本次计算选择的是ki+1

若上次计算选择的整数参数是km,则本次计算选择的是k1

对于以上所述的针对群元数乘或幂运算的计算方法,第一方对参数池中已使用的整数参数kt及对应的G_kt或g_kt进行更新的一种方式如下(不意味着全部可能的方式):

在m个整数参数中选择p个整数参数(比如,从m个整数参数中随机选择的p个参数,或者,p个整数参数中一个是kt,另外p-1个是从其余m-1个整数参数中随机选择的),1≤p<m;p个整数参数分别表示为r1,r2,…,rp

r1,r2,…,rp对应的数乘元分别表示为G_r1,G_r2,…,G_rp,或者r1,r2,…,rp对应的幂元分别表示为g_r1,g_r2,…,g_rp

随机选择p个正整数c1,c2,…,cp,且使得c1+c2+…+cp≤L,其中L是预先设定的小于m的整数(通常L远远的小于m);

计算u=(c1r1+c2r2+…+cprp)mod n,

G_u=c1G_r1+c2G_r2+…+cpG_rp

或g_u=(g_r1^c1)(g_r2^c2)…(g_rp^cp);

然后用u作为新的整数参数kt(第t个整数参数)的值,用G_u作为新的G_kt(kt对应的数乘元),或用g_u作为新的g_kt(kt对应的幂元)。

在以上所述的整数参数kt及对应的G_kt或g_kt更新操作中,p是一个固定的整数或者非固定的整数;若p是一个非固定的整数,则p是一个在规定的范围内随机选择的整数,或者是一个按预先设定的规律变化或选取的整数。

在以上所述的整数参数kt及对应的G_kt或g_kt更新操作中,L的选取原则是使得针对整数参数kt及对应的G_kt或g_kt所进行的更新操作能在期望或规定的时间内完成(即在计算量最大的情况下,更新操作能在期望或规定的时间内完成)。

在以上所述的整数参数kt及对应的G_kt或g_kt更新操作中,若L=pq(p乘以q),其中p、q为整数,则第一方随机选择p个正整数c1,c2,…,cp,且使得c1+c2+…+cp≤L的一种方式如下(不是全部可能的方式):

在[1,q]中随机选择p个整数c1,c2,…,cp

基于以上所述的针对群元数乘或幂运算的计算方法,可构建相应的针对群元数乘或幂运算的计算系统,系统包括两个装置,其中一个装置为所述第一方,另一个装置为所述第二方;

当作为第一方的装置需要计算G_k=kG或g_k=g^k时,其中k是[1,n-1]中的只有第一方知道的需要保密的整数(如随机选择的作为秘密的整数,或通过约定方式选取或计算得到的需要保密的整数),所述两个装置按所述针对群元数乘或幂运算的计算方法计算得到G_k=kG或g_k=g^k。

在以上针对群元数乘或幂运算的计算方法及系统中,第一方通常是一个资源受限、计算能力弱的装置,而第二方通常是资源丰富、计算能力强的装置;基于本发明的方法及系统,作为资源受限装置的第一方可以借助资源丰富的第二方完成计算量大的加法群中(如椭圆曲线点群中的数乘或倍加运算)的数乘运算或乘法群中的幂运算(如双线配对的乘法群中的幂运算);同时,为了防止对参数池中整数参数的破解,第一方根据预定的策略对整数参数进行更新,而更新操作涉及的运算是第一方(资源受限装置)能够承担的、计算量较小的运算。

具体实施方式

下面结合实施例对本发明作进一步的描述。以下实施例仅是本发明列举的几个可能的实施例,不代表全部可能的实施例,不作为对本发明的限定。

实施例1、

此实施例涉及一个加法群,加法群的阶是素数n;此实施例包括第一方和第二方,其中,第一方维护有一个参数池,参数池中有m个[1,n-1]区间内的整数k1,k2,…,km,及对应的加法群中的群元k1G,k2G,…,kmG即k1,k2,…,km分别与G进行数乘运算的结果(标量乘运算、倍点运算),其中G是加法群中的一个元;

k1,k2,…,km称为整数参数,群元k1G,k2G,…,kmG称为整数参数k1,k2,…,km对应的数乘元(整数参数及其与数乘元的对应关系需要保密);

k1G,k2G,…,kmG分别表示为G_k1,G_k2,…,G_km

当第一方需要计算G_k=kG时,其中k是[1,n-1]中的只有第一方知道的需要保密的整数(如随机选择的作为秘密的整数,或通过约定方式选取或计算得到的需要保密的整数),第一方与第二方按如下方式协同完成G_k=kG的计算:

第一方从参数池中的m个整数参数中按预定的规律选择一个整数参数kt

第一方计算w=(k(kt)-1)mod n,然后将w和G_kt发送给第二方,其中(kt)-1为kt的模n乘法逆(即(kt(kt)-1)mod n=1),G_kt是(从参数池中取出的)与kt对应的数乘元(即G_kt=ktG);

第二方计算G_k=wG_kt

G_k即为kG;

在完成一次G_k计算后,或者在完成规定次数的、针对不同k的G_k的计算后,第一方对参数池中已使用的整数参数kt及对应的数乘元G_kt进行更新,其中,t=1,2,…或m。

实施例2、

此实施例涉及一个加法群,加法群的阶是素数n;此实施例包括第一方和第二方,其中,第一方维护有一个参数池,参数池中有m个[1,n-1]区间内的整数k1,k2,…,km,及对应的加法群中的群元k1G,k2G,…,kmG即k1,k2,…,km分别与G进行数乘运算的结果(标量乘运算、倍点运算),其中G是加法群中的一个元;

k1,k2,…,km称为整数参数,群元k1G,k2G,…,kmG称为整数参数k1,k2,…,km对应的数乘元(整数参数及其与数乘元的对应关系需要保密);

k1G,k2G,…,kmG分别表示为G_k1,G_k2,…,G_km

当第一方需要计算G_k=kG时,其中k是[1,n-1]中的只有第一方知道的需要保密的整数(如随机选择的作为秘密的整数,或通过约定方式选取或计算得到的需要保密的整数),第一方与第二方按如下方式协同完成G_k=kG的计算:

第一方从参数池中的m个整数参数中按预定的规律选择一个整数参数kt

第一方计算w=(k-kt)mod n,然后将w和G_kt发送给第二方,其中G_kt是(从参数池中取出的)与kt对应的数乘元(即G_kt=ktG);

第二方计算G_k=wG+G_kt

G_k即为kG;

在完成一次G_k计算后,或者在完成规定次数的、针对不同k的G_k的计算后,第一方对参数池中已使用的整数参数kt及对应的数乘元G_kt进行更新,其中,t=1,2,…或m。

实施例3、

此实施例涉及一个乘法群,乘法群的阶是素数n;此实施例包括第一方和第二方,其中,第一方维护有一个参数池,参数池中有m个[1,n-1]区间内的整数k1,k2,…,km,及对应的乘法群中的群元g^k1,g^k2,…,g^km,即k1,k2,…,km分别对g进行幂运算的结果,其中g是乘法群中的一个元,^表示幂运算(对^前面的元进行幂运算,^后面的整数是幂运算的次数);

k1,k2,…,km称为整数参数,群元g^k1,g^k2,…,g^km称为整数参数k1,k2,…,km对应的幂元(整数参数及其与幂元的对应关系需要保密);

g^k1,g^k2,…,g^km分别表示为g_k1,g_k2,…,g_km

当第一方需要计算g_k=g^k时,其中k是[1,n-1]中的只有第一方知道的需要保密的整数(如随机选择的作为秘密的整数,或通过约定方式选取或计算得到的需要保密的整数),第一方与第二方按如下方式协同完成g_k=g^k的计算:

第一方从参数池中的m个整数参数中按预定的规律选择一个整数参数kt

第一方计算w=(k(kt)-1)mod n,然后将w和g_kt发送给第二方,其中(kt)-1为kt的模n乘法逆(即(kt(kt)-1)mod n=1),g_kt是(从参数池中取出的)与kt对应的幂元(即g_kt=g^kt);

第二方计算g_k=g_kt^w;

g_k即为g^k;

在完成一次g_k计算后,或者在完成规定次数的、针对不同k的g_k的计算后,第一方对参数池中已使用的整数参数kt及对应的幂元g_kt进行更新,其中,t=1,2,…或m。

实施例4、

此实施例涉及一个乘法群,乘法群的阶是素数n;此实施例包括第一方和第二方,其中,第一方维护有一个参数池,参数池中有m个[1,n-1]区间内的整数k1,k2,…,km,及对应的乘法群中的群元g^k1,g^k2,…,g^km,即k1,k2,…,km分别对g进行幂运算的结果,其中g是乘法群中的一个元,^表示幂运算(对^前面的元进行幂运算,^后面的整数是幂运算的次数);

k1,k2,…,km称为整数参数,群元g^k1,g^k2,…,g^km称为整数参数k1,k2,…,km对应的幂元(整数参数及其与幂元的对应关系需要保密);

g^k1,g^k2,…,g^km分别表示为g_k1,g_k2,…,g_km

当第一方需要计算g_k=g^k时,其中k是[1,n-1]中的只有第一方知道的需要保密的整数(如随机选择的作为秘密的整数,或通过约定方式选取或计算得到的需要保密的整数),第一方与第二方按如下方式协同完成g_k=g^k的计算:

第一方从参数池中的m个整数参数中按预定的规律选择一个整数参数kt

第一方计算w=(k-kt)mod n,然后将w和g_kt发送给第二方,其中g_kt是(从参数池中取出的)与kt对应的幂元(即g_kt=g^kt);

第二方计算g_k=g_kt(g^w);

g_k即为g^k;

在完成一次g_k计算后,或者在完成规定次数的、针对不同k的g_k的计算后,第一方对参数池中已使用的整数参数kt及对应的幂元g_kt进行更新,其中,t=1,2,…或m。

在以上实施例1-4中,所述第一方在参数池中的m个整数参数中按预定的规律选择一个整数参数kt的方式包括:

在每次计算G_k=kG或g_k=g^k时,在m个整数参数中按顺序依次选择一个整数参数kt,或在m个整数参数中随机选择一个未使用的整数参数kt(使用后又更新的整数参数属于未使用的整数参数);

所述在m个整数参数中按顺序依次选择一个整数参数kt是指:

若是第一次计算G_k=kG或g_k=g^k,则选择k1

若上次计算选择的整数参数是ki且1≤i<m,则本次计算选择的是ki+1

若上次计算选择的整数参数是km,则本次计算选择的是k1

在以上实施例1-2中,所述第一方对参数池中已使用的整数参数kt及对应的G_kt进行更新的一种方式如下(不意味着全部可能的方式):

在m个整数参数中选择p个整数参数,1≤p<m,其中一个是kt,另外p-1个是从其余m-1个整数参数中随机选择的;p个整数参数分别表示为r1,r2,…,rp

r1,r2,…,rp对应的数乘元分别表示为G_r1,G_r2,…,G_rp

随机选择p个正整数c1,c2,…,cp,且使得c1+c2+…+cp≤L,其中L是预先设定的小于m的整数(通常L远远的小于m);

计算u=(c1r1+c2r2+…+cprp)mod n,

G_u=c1G_r1+c2G_r2+…+cpG_rp

然后用u作为新的整数参数kt(第t个整数参数)的值,用G_u作为新的G_kt(kt对应的数乘元)。

在以上实施例3-4中,所述第一方对参数池中已使用的整数参数kt及对应的g_kt进行更新的一种方式如下(不意味着全部可能的方式):

在m个整数参数中选择p个整数参数(比如,从m个整数参数中随机选择的p个参数,或者,p个整数参数中一个是kt,另外p-1个是从其余m-1个整数参数中随机选择的),1≤p<m;p个整数参数分别表示为r1,r2,…,rp

r1,r2,…,rp对应的幂元分别表示为g_r1,g_r2,…,g_rp

随机选择p个正整数c1,c2,…,cp,且使得c1+c2+…+cp≤L,其中L是预先设定的小于m的整数(通常L远远的小于m);

计算u=(c1r1+c2r2+…+cprp)mod n,

g_u=(g_r1^c1)(g_r2^c2)…(g_rp^cp);

然后用u作为新的整数参数kt(第t个整数参数)的值,用g_u作为新的g_kt(kt对应的幂元)。

在以上实施例更新整数参数kt及对应的G_kt或g_kt中,选取的参数的个数p是一个固定的整数或者非固定的整数;若p是一个非固定的整数,则p是一个在规定的范围内随机选择的整数,或者是一个按预先设定的规律变化或选取的整数。

在以上实施例更新整数参数kt及对应的G_kt或g_kt中,L的选取原则是使得针对整数参数kt及对应的G_kt或g_kt所进行的更新操作能在期望或规定的时间内完成(即在计算量最大的情况下,更新能操作在期望或规定的时间内完成)。

在以上实施例更新整数参数kt及对应的G_kt或g_kt中,若L=pq(p乘以q),其中p、q为整数,则第一方随机选择p个正整数c1,c2,…,cp,且使得c1+c2+…+cp≤L的一种方式如下(不是全部可能的方式):

在[1,q]中随机选择p个整数c1,c2,…,cp

基于所述针对群元数乘或幂运算的计算方法可实施一个针对群元数乘或幂运算的计算系统,系统包括两个装置,其中一个装置为所述第一方,另一个装置为所述第二方;其中作为第一方的装置是一个资源受限、计算能力弱的装置,作为第二方的装置是一个资源丰富、计算能力强的装置;

当作为第一方的装置需要计算G_k=kG或g_k=g^k时,其中k是[1,n-1]中的只有第一方知道的需要保密的整数(如随机选择的作为秘密的整数,或通过约定方式选取或计算得到的需要保密的整数),所述两个装置按所述针对群元数乘或幂运算的计算方法计算得到G_k=kG或g_k=g^k。

其他未说明的具体技术实施,对于相关领域的技术人员而言是众所周知,不言自明的。

9页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种用于AI计算的浮点乘法计算方法、电路、设备

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类