利用特殊的素数,证实实体的真实性和/或消息的完整性和/或真实性的方法、系统和设备的制作方法

文档序号:438565阅读:553来源:国知局
专利名称:利用特殊的素数,证实实体的真实性和/或消息的完整性和/或真实性的方法、系统和设备的制作方法
技术领域
本发明涉及用于证实实体的真实性和/或消息的完整性和/或真实性的方法,系统和设备的技术领域。
Louis Guillou和Jean-Jacques Quisquater的专利EP 0311470B1描述了这样一种方法。下面,将借助术语“GQ专利”或“GQ方法”提及他们的工作。下面,词句“GQ2”或“GQ2发明”或“GQ2技术”将用于描述GQ技术的新发展,所述GQ技术的新发展是由法国电信,TDF和Mathrizk公司在和本申请同一天登记的待审批申请的目的,发明人是Louis Guillou和Jean-Jacques Quisquater。在下面的说明中,每当需要时,就会再引用这些待审批申请的特征。
按照GQ方法,称为“受托管理机构”的实体向称为“证人”的每个实体分配一个身份,并计算其RSA签名。在定制过程中,受托管理机构给予证人一个身份和签名。之后,证人做出如下声明“这是我的身份;我了解它的RSA签名”。在不泄漏真相的情况下,证人证明他知道他的身份的RSA签名。通过受托管理机构分配的RSA公用标识密钥,称为“控制者”的实体在不获得有关知识的情况下,确定RSA签名和声明实体相符。使用GQ方法的机制“在不传送知识的情况下”发生作用。按照GQ方法,证人不必知道RSA专用密钥,受托管理机构利用所述RSA专用密钥签署了大量的身份。
上面描述的GQ技术利用了RSA技术。但是,虽然RSA技术确实依赖于模数n的因数分解,但是这种相关性并不等效,如同可在针对实现RSA技术的数字签名的各种标准的所谓乘法攻击中看到的那样,事实上离等效差得很远。
GQ2技术的目标在于两个方面首先是提高RSA技术的工作特性,其次是防止RSA技术中固有的问题。GQ2专用密钥的知识等同于模数n的因数分解的知识。对三元组GQ2的任何攻击导致模数n的因数分解此时存在等效性。借助GQ2技术,降低了签名或自我证明实体,以及控制实体的工作量。通过在安全和性能两方面,因数分解问题的更好地使用,GQ2防止了RSA技术的缺陷。
GQ方法实现包含512个或更多二进制位的数字的模数计算。这些计算涉及具有自乘到大约216次幂+1的基本相同大小的数字。现在,现有的微电子基础结构,尤其是银行卡领域中的微电子基础结构使用不具有算术协理器的单片自动编程的微处理器。和诸如GQ方法之类的方法中所涉及的多重算术应用相关的工作量导致计算时间很长,在某些情况下,较长的计算时间被证明不利于顾客使用银行卡支付他们的购买。这里会回想起,在设法提高支付卡的安全性的情况下,银行管理机构已引起一个特别难以解决的问题。实际上,必须解决两个明显相互矛盾的问题;一方面,通过对于每个银行卡,使用越来越长并且截然不同的密钥,提高安全性,而另一方面,防止工作量耗费用户过多的计算时间。由于还必须考虑到现有的基础结构和现有的微处理器元件,该问题变得特别严重。
在提高安全性的同时,GQ2技术提供了该问题的解决方案。
GQ2技术实现特殊性质的素数。产生这些素数的现有技术有很多种。本发明的目的是这种素数的系统产生方法。本发明还涉及可由尤其是在GQ2技术的实现中的这些素数产生的应用。这里必须强调,在GQ2技术的领域之外,也可应用这些特殊的素数,以及用于获得这些素数的方法。
本发明可应用于设计成向控制者实体证实下述内容的方法(GQ2方法)-实体的真实性和/或-与该实体相关的消息M的完整性。
借助所有或部分下述参数或它们的衍生物产生这种证实-由f个素数p1,p2,…pf(f等于或大于2)的乘积构成的公共模数n,
-公共指数v;-m个相异的整数基数g1,g2…gm(m大于或等于1)。
基数gi是这样的基数,以致不能在整数模数n环中,求解下述两个等式(1)和(2)的xx2≡gimodn和x2≡-gimodn并且以致能够在整数模数n环中,求解等式(3)的xxv≡gi2modn]]>根据本发明的方法被用于以满足等式(1),(2)和(3)的方式,产生f个素数p1,p2,…pf。根据本发明的方法包括首先选择下述内容的步骤m个基数g1,g2…gm,模数n的大小,f个素数p1,p2,…pf的大小。
该方法涉及公共指数v具有下述形式的情况v=2k这里,k是大于1的安全参数。安全参数k也被选择为素数。这种特殊值的指数v是GQ2技术的本质特征之一。
最好,至少部分地在第一部分整数内选择m个基数g1,g2,…gm。安全参数k最好是一个小整数,尤其是小于100的整数。模数n的大小最好大于几百个二进制位。f个素数p1,p2,…pf的大小最好接近于被除以素数数目f的模数n的大小。
按照根据本发明的方法的一个主要特征,不以任何非特定的方式选择f个素数p1,p2,…pf。在f个素数之内,其中的一些素数e将被选择为全等于1(mod 4)。素数的该数目e可能为0。如果e为0,则下面将把模数n称为基本模数。如果e>0,下面将把模数n称为复合模数。其它f-e个素数被选择为全等于3(mod 4)。素数的该数目f-e至少等于2。
全等于3(mod 4)的f-e个素数的选择为了产生全等于3(mod 4)的f-e个素数p1,p2,…Pf-e。执行下述步骤-选择全等于3(mod4)的第一素数p1,-选择第二素数p2,以致相对于基数g1,p2与p1互补。
为了选择素数pi+1,使用下述程序区分两种情况(1)i>m的情况如果i>m,则选择全等于3(mod4)的素数pi+1。
(2)i≤m的情况如果i≤m,则计算gi相对于i个第一部分素数pi的廓线(Profilei(gi))如果Profilei(gi)平直,则选择因数pi+1,使得相对于gi,pi+1和p1互补,否则,在i-1个基数g1,g2,…gi-1和它们的全部乘法组合中,选择数字g,使得Profilei(g)=Profilei(gi),随后选择pi+1,使得Profilei+1(gi)≠Profilei+1(g)。
术语“互补”,“廓线”,“平直廓线”具有在说明部分中定义的含义。
为了选择最后的素数pf-e,使用下述程序区分三种情况(1)f-e-1>m的情况如果f-e-1>m,则选择全等于3(mod4)的pf-e。
(2)f-e-1=m的情况如果f-e-1=m,则相对于从p1~pf-e-1的f-e-1个第一部分素数,计算Profilef-e-1(gm)。
如果Profilef-e-1(gm)平直,则选择pf-e-1,使得相对于gm,pf-e-1和p1互补,否则,进行下面规定的程序在从g1~gm-1的m-1个基数及它们的全部乘法组合中,选择下面称为g的数字,使得Profilei(g)=Profilei(gi),随后选择pf-e,使得Profilef-e(gi)≠Profilef-e(gm)。
(3)f-e-1<m的情况如果f-e-1<m,则选择pf-e,以便满足下述两个条件(3.1)第一条件根据从p1~Pf-e-1的f-e-1个第一部分素数,计算Profilef-e-1(gf-e-1)。随后考虑两种情况。根据这两种情况中的任意一种情况,第一条件将不同。
如果Profilef-e-1(gf-e-1)平直,则选择pf-e,使得pf-e满足相对于gf-e-1,pf-e和p1互补的第一条件(根据第一种情况的第一条件)。否则,在从g1~gm-1的f-e-1个基数及它们的全部乘法组合之内,选择下面称为g的数字,使得Profilei(g)=Profilef-e-1(gf-e-1),并且随后选择pf-e,使得它满足使Profilef-e(g)≠Profilef-e(gm)的条件(根据第二种情况的第一条件)。
(3.2)第二条件在从gf-e~gm的所有最后一些基数之内,选择其廓线Profilef-e-1(gi)平直的那些基数,随后选择Pf-e,以致pf-e满足相对于这样选择的每个基数,pf-e和p1互补的条件(第二条件)。
全等于1(mod 4)的素数的选择为了产生全等于1(mod 4)的e个素数,在进行下述两个连续测试的情况下,评估从pf-e~pf的每个候选素数p(1)第一测试计算从g1~gm的每个基数相对于候选素数p的Legendre符号,如果Legendre符号等于-1,则拒绝候选素数p,如果Legendre符号等于+1,则转到下一基数,继续候选素数p的评估,并且随后当已考虑了最后一个基数时,转到第二测试。
(2)第二测试计算整数t,使得p-1可被2t除尽,但是不可被2t+1除尽,随后计算整数s,使得s=(p-1+2t)/2t+1。
把密钥<s,p>应用于每个公共值Gi,以便得到结果rr≡Gismodp]]>如果r等于gi或-gi,则转到下一公共值Gi+1,继续第二测试。
如果r不等于gi或-gi,则通过对于从1~t-2的上标ii,应用下面规定的算法,计算因数u。该算法实现两个变量由r初始化的w和取从2~2t-2的值的jj=2ii,以及通过把密钥<(p-1)/2t,p>应用于CG(p)的非二次剩余,得到的数字b。该算法由根据需要多次重复下述程序组成·步骤1计算w2/Gi(mod p),·步骤2使计算结果自乘到2t-ii-1次幂。考虑两种情况。
第一种情况如果得到+1,则转到下一公共值Gi+1,并对该公共值进行第二测试。
第二种情况如果得到-1,则计算jj=2ii,随后用w.bjj(mod p)替换w。随后,对于具有上标ii的下一数值,继续该算法。
在算法结束时,依据关系jj=2t-u,变量jj的值被用于计算整数u,随后计算表达式t-u。出现两种情况如果t-u<k,则拒绝候选素数p,如果t-u>k,则转到下一公共值Gi+1继续候选素数p的评估,并且随后继续第二测试。
如果在第二测试结束时,对于所有m个公共值Gi,候选素数p都未被拒绝,则候选素数p被看作是全等于1(mod4)的素数。
关于GQ2的公共值和专用值的应用本发明还涉及应用上面描述的方法,并且可回想起,使得能够产生具有特殊性质的f个素数p1,p2,…pf的一种方法(GQ2方法)。上面描述的方法的应用方法用于向控制者实体证明下述内容-实体的真实性和/或-与该实体相关的消息M的完整性,借助所有或部分下述参数或者这些参数的衍生物,建立这种证明-m对专用值Q1,Q2,…Qm和公共值G1,G2,…Gm(m大于或等于1),
-由所述f个素数p1,p2,…pf的乘积构成的公共模数n(f大于或等于2),-公共指数v。
所述模数,所述指数和所述值由下述类型的关系连接Gi·Giv≡1·modn]]>或者Gi≡Qivmodn]]>所述指数为v=2k其中k是大于1的安全参数。
所述公共值Gi是小于f个素数p1,p2,…pf的基数gi的平方gi2。基数gi是这样的基数,以致不能在整数模数n环中,求解下述两个等式的xx2≡gimodn和x2≡-gimodn并且以致能够在整数模数n环中,求解下述等式的xxv≡gi2modn]]>所述方法按照下述步骤实现称为证人的实体。所述证人实体具有f个素数pi和/或素数的中国余数参数,和/或公共模数n和/或m个专用值Qi和/或专用值Qi的f.m分量(Qi,j≡Qimod pj)的参数,以及公共指数v的参数。
证人计算整数模数n环中的承诺(commitment)R。或者通过执行下述类型的运算,计算每个承诺,方式是·通过执行下述类型的运算R≡rvmodn这里r是大于0,小于n的随机因数,·或者通过执行下述类型的运算Ri≡rivmodpi]]>这里ri是与素数pi相关的随机值,并且0<ri<pi,每个ri属于一组随机因数{r1,r2,…rf}的集合,随后通过应用中国余数方法,计算每个承诺。
证人接收一个或多个挑战d。每个挑战d包含下面称为基本挑战的m个整数di。根据每个挑战d,证人或者通过执行下述类型的运算,计算响应DD≡r·Q1d1·Q2d2····Qmdmmodn]]>或者通过执行下述类型的运算Di≡ri·Qi,1d1·Qi,2d2····Qi,mdmmodpi]]>并且随后应用中国余数方法,计算响应D。
该方法使得存在和挑战d及承诺R同样多的响应D,每组数字R,d,D构成表示为{R,d,D}的三元组。
为了实现上面所述的多对专用值Q1,Q2,…Qm和公共值G1,G2,…Gm,该方法使用素数p1,p2,…pf和/或中国余数参数,基数g1,g2,…gm和/或公共值G1,G2,…Gm-通过求Gi的第k个平方根模数n,或者通过取Gi的第k个平方根模数n的倒数,计算专用值Q1,Q2,…Qm-或者计算专用值Q1,Q2,…Qm的f.m个专用分量Qi,j,使得Qi,j≡Qi(mod pj)。
更具体地说,为了计算专用值Q1,Q2,…Qm的f.m个专用分量Qi, j-应用密钥<s,pj>计算z,使得z≡Gis(modpi)]]>-并且使用t和u值。
当pj全等于1(mod 4)时,如前所述计算t和u值。当pj全等于3(mod 4)时,t和u的值分别取为1和0(t=1,u=0)。
如果u值为0,我们认为所有的数字zz为···zz等于z,或者···zz等于z与1的2ii-t2ii次原根中的每个原根的乘积(mod pj),ii从1变化到min(k,t)。
如果u为正数,我们认为所有的数字zz等于za与1的2k2k次根中的每个根的乘积(mod pj),za表示上面描述的算法结束时,变量w的值。
据此推导出分量Qi,j的至少一个值。当使用等式 时,该值等于zz,否则,当使用等式 时,该值等于zz的zz(modpj)的倒数。
说明可回想GQ技术的目的其目的是实体和相关消息的动态证明,以及消息的数字签名。
标准形式的GQ技术利用RSA技术。但是,尽管RSA技术确实依赖于因数分解,但是这种相关性并不等效,可从针对实现RSA技术的各种数字签名标准的称为乘法攻击的攻击中看到,事实上离等效差得很远。
在GQ2技术的环境下,本发明的本部分更具体地涉及用于提供动态证明和数字签名的成组GQ2密钥的产生。GQ2技术并不使用RSA技术。GQ2的目标在于两个方面首先是提高RSA技术的性能,其次是防止RSA技术中固有的问题。GQ2专用密钥是模数n的因数分解。对GQ2三元组的任何攻击相当于模数n的因数分解此时存在等效性。借助GQ2技术,降低了签名或证明实体,以及控制实体的工作量。通过在安全和性能两方面,因数分解问题的更好地使用,GQ2比得上RSA技术。
GQ2技术使用一个或多个大于1的小整数,例如称为基数,并以gi表示的m个小整数(m>1)。随后,如下所述选择公共验证密钥<v,n>。公共验证密钥v为2k,k是大于1的小整数(k≥2)。公共模数n是大于基数的至少两个素数的乘积,例如表示为pj的f个素数(f≥2),p1…pf。严选择f个素数,以便相对于m个基数(g1-gm)中的每个基数,公共模数n具有下述性质-首先,不能用整数模数n环中的x解答等式(1)和(2),即,gi和-gi是两个非二次剩余(mod n)。
x2≡gi(mod n)(1)x2≡-gi(mod n) (2)-其次,可用整数模数n环中的x解答等式(3)。x2k≡gi2(modn)---(3)]]>
下面,这些性质也被称为GQ2原理。
由于按照从g1-gm(m≥1)的基数,公共验证密钥<v,n>是固定的,因此每个基数gi确定包含公共值Gi和专用值Qi的一对值GQ2产生表示为G1Q1-GmQm的m对值。公共值Gi是基数gi的平方 。专用值Qi是等式(3)的解答或者这种解答的反(mod n)。
如同模数n被分解为f个素数一样,整数模数n环被分解为f个伽罗瓦域,从CG(p1)到CG(pf)。下面是等式(1),(2)和(3)在CG(pj)中的投影。
x2≡gi(mod pj) (1.a)x2≡-gi(mod pj) (2.a)x2k≡gi2(modpj)---(3.a)]]>每个专用值Qi可唯一地由f个专用分量表示,每个素数对应一个专用分量Qi,j≡Qi(mod pj)。每个专用分量Qi,j是等式(3.a)的解答或者这种解答的反(mod pj)。在计算了每个等式(3.a)的所有可能解答之后,中国余数方法根据f个分量Qi,1-Qi,f,确定每个专用值Qi的可能数值Qi=中国余数(Qi,1,Qi,2,…,Qi,f),以便获得等式(3)的所有可能解答。
下面是中国余数方法假定存在互为素数的两正整数a和b,0<a<b,以及两个分量,从0到a-1的Xa和从0到b-1的Xb。需要确定X=中国余数(Xa,Xb),即0到a.b-1的单一数字X,以致Xa≡X(mod a)和Xb≡X(mod b)。下面是中国余数参数α≡{b(mod a)}-1(mod a)。下面是中国余数运算ε≡Xb(mod a);δ=Xa-ε;如果δ为负,用δ+a替换δ;γ≡α.δ(mod a);X=γ.b+Xb。
当素数按照升序,从最小的p1到最大的pf排列时,中国余数参数可以如下所示(存在f-1,即至少素数之一)。第一中国余数参数是α≡{p2(mod p1)}-1(mod p1)。第二中国余数参数是β≡{p1·p2(mod p3)}-1(md p3)。第i个中国余数参数是λ≡{p1·p2·…,pi-1(mod pi)}-1(mod pi),依次类推。最后,在f-1中国余数运算中,利用第一参数得到第一结果(mod p2×p1),随后利用第二参数得到第二结果(mod p1·p2×p3),依次类推,直到得到结果(mod p1…pf-1×pf),即(mod n)为止。
本发明的目的是一种随机产生所有各组可能的GQ2密钥中的任意一组GQ2密钥的方法,即-所有可能的GQ2模数内的任意模数的随机产生,即对于m个基数gi中的每个基数,该模数确保不能用整数模数n环中的x解答等式(1)和(2),而可用整数模数n环中一个整数模数解答等式(3),-计算每个等式(3.a)的所有可能解答。中国余数方法使得能够根据每组f个分量(Qi,1-Qi,f),得到专用值Qi,从而获得所有ht可能等式内,等式(3)的任意解答x。
Qi=中国余数(Qi,1,Qi,2,…,Qi,f)为了了解该问题,并且随后理解将针对该问题给出的解决方案,即本发明,我们首先分析GQ2技术的原理的适用性。让我们首先从回忆伽罗瓦域CG(p)中的秩的概念开始,以便研究函数“CG(p)中自乘到平方”和“CG(p)中二次剩余的开平方”。随后,我们将分析关于等式(1.a),(2.a)和(3.a),CG(p)中解答x的存在及数目。
CG(p)中元素的秩取一个奇素数p和小于p的一个正素数。之后,定义{X}。
{X}≡{x1=a;则对于i≥1,xi+1≡a.xi(mod p)计算下标为i+p的项,并使用Fermat定理xi+p≡apxi≡a.xi≡xi+1(mod p)因此,序列{X}的周期为p-1或者p-1的除数。该周期取决于a的值。根据定义,该周期被称为“a(mod p)的秩”。它是序列{X}中1的出现下标。
xrank(a,p)≡1(mod p)例如,当(p-1)/2是奇素数p’时,伽罗瓦域CG(p)包含秩为1的单个元素(p-1)/2为1,秩为2的单个元素。(p-1)/2为-1,秩为p’的p’-1个元素,秩为2.p’的p’-1个元素,即秩为p-1。
CG(p)的秩为p-1的元素被称为基本元素,或者也被称为CG(p)发生器。该名称缘于CG(p)中它们的连续乘幂,即{X}序列中的下标从1~p-1的项构成CG(p)的所有非零元素的排列。
根据CG(p)的基本元素y,我们来求作为i和p-1的函数的元素yi(mod p)的秩。当i是具有p-1的素数时,秩为p-1。当i除以p-1时,秩为(p-1)/i。在所有情况下,秩为(p-1)/pgcd(p-1,i)。
用φ表示Euler函数。根据定义,由于n是正整数,因此φ(n)是小于n的正整数(包括n在内的素数)的数目。于是,在域CG(p)中,存在φ(p-1)个基本元素。
举例来说,下面是RSA技术的基础。公共模数n是从p1~pf(f≥2)的f个素数的乘积,从而对于每个素数pj来说,公共指数v是包括pj-1在内的一个素数。密钥<v,pj>遵守CG(pj)的元素的秩密钥<V,pj>排列CG(pj)的元素。利用密钥<sj,pj>,获得反向排列,从而pj-1除以v.sj-1。
CG(p)中的平方和平方根在CG(p)中,元素x和p-x具有相同的平方。由于p-1是个偶数值,因此密钥<2,p>不排列CG(p)的元素。对于每个素数p,我们如下定义一个整数tp-1可被2t除尽,但是不可被2t+1除尽,即p全等于2t+1(mod 2t+1)。例如,当p全等于3(mod 4)时,t=1;当p全等于5(mod 8)时,t=2;当p全等于9(mod 16)时,t=3;当p全等于17(mod 32)时,t=4;依次类开。在一个范畴内,并且只在一个范畴内找到各个奇素数在第t个范畴内找到p。实际上,如果我们考虑相当大量的连续素数,每2个中约有1个可在第一范畴内找到,每4个中有1个可在第二范畴内找到,每8个中有1个可在第三范畴内找到,每16个中有1个可在第四范畴内找到,依次类推。总之,平均来说,每2t个中有1个可在第t范畴内找到。
下面让我们根据变元的秩的奇偶性,来考虑函数“CG(p)中自乘到平方”的行为。
-只存在一个固定元素该元素为1。奇校验秩的任意其它元素的平方是具有相同秩的另一元素。从而,密钥<2,p>排列其所有(p-1)/2t奇校验秩元素。排列循环的数目取决于(p-1)/2t的因数分解。例如,当(p-1)/2t是素数p’时,存在包含p’-1个元素的大排列循环。
-任意偶校验秩元素的平方是其秩被除以2的另一元素。从而,偶校验秩元素被分配在(p-1)/2t个分支上。具有奇校验秩的每个非零元素支承长度为t的包含2t-1个元素的分支,即秩可被2除尽,但是不可被4除尽的一个元素,随后,如果t≥2,则秩可被4除尽,但是不可被8除尽的两个元素,如果t≥3,则秩可被8除尽,但是不可被16除尽的四个元素,如果t≥4,则秩可被16除尽,但是不可被32除尽的八个元素,依次类推。每个分支的2t-1个末端是非二次剩余;它们的秩可被2t除尽。


图1A-1D借助有向图,图解说明了函数“CG(p)中自乘到平方”,这里域的p-1个非零元素中的每个元素找到其自己的位置非二次剩余为白色,二次剩余为黑色;在二次剩余内,奇校验秩元素在圆圈内。
这些图分别表示了-
图1Ap全等于3(mod 4)的情况;-
图1Bp全等于5(mod 8)的情况;-
图1Cp全等于9(mod 16)的情况;-
图1Dp全等于17(mod 32)的情况。
现在我们来考虑计算等式x2≡a(mod p)的解答x的方法(已知a是CG(p)的二次剩余),即如何“在CG(p)中开平方”。当然,存在获得相同结果的多种途径读者可参考Henri Cohen的“A Course inComputational Algebraic Number Theory”,Springer,Berlin,1993年出版,第31-36页,以及“Graduate Texts in Mathematics”,vol.138(GTM 138)。
我们来计算整数s=(p-1+2t)/2t+1,以确定密钥<s,p>。假定当p全等于3(mod 4)时,<(p+1)/4,p>,当p全等于5(mod 8)时,<(p+3)/8,p>,当p全等于9(mod 16)时,<(p+7)/16,p>,当p全等于17(mod 32)时,<(p+15)/32,p>,依次类推。
-密钥<s,p>给出任何奇校验秩元素的奇校验秩平方根。实际上,在CG(p)中,r2/a等于a自乘到(2.(p-1+2t)/2t+1)-1=(p-1)/2t次幂。从而,当a处于循环中时,密钥<s,p>把a转换为我们将称之为w的解答。另一解答是p-w。
-通常,密钥<s,p>把任意二次剩余a转换为将被称为r的解答的一级近似。下面是逐步改进近似,直到a的平方根为止的示意方法之前的两个关键点。
-首先,由于a是二次剩余,密钥<2t-1,p>确实把r2/a转换为1。
-其次,可假定我们知道我们命名为y的CG(p)的非二次剩余;密钥<(p-1)/2t,p>把y转换为将被称为b的元素它是-1的第2t-1个根。实际上,y(p-1)/2≡-1(mod p)。从而,在CG(p)中,1的第2t2t次根的乘法组与指数为1~2t的b的乘幂的乘法组具有同一构造。
-为了逼近a的平方根,我们使r2/a自乘到2t-2(mod p)次幂结果为+1或-1。如果结果为+1,则保持新的近似值,如果结果为-1,则近似值变为b.r(mod p)。从而,密钥<2t-2,p>必定把新的近似值转换为1。可以继续逼近所需的数值在下一步骤,如果需要的话,通过乘以b2(mod p),可进行调整,依次类推。
下面的算法根据如上定义的整数r和b,进行逐步逼近,以便达到a的平方根;它使用两个整数变量由r初始化的w,以表示逐步逼近,及假定从2~2t-2的2的乘幂之中的数值的jj。
对于从1~t-2的i,重复下述程序-计算w2/a(mod p),随后使结果自乘到2t-i-1(mod p)次幂应得到+1或-1。当得到-1时,计算jj=2i,随后用w.bjj(mod p)替换w。当得到+1时,不进行任何操作。
在计算的结尾,w和p-w是CG(p)中,a的两个平方根。此外,我们认识到在CG(p)中,a的秩可被2t/jj除尽,但是不可被2t+1/jj除尽。下面将进一步领会这种观测结果的相关性。
CG(p)中,GQ2技术原理的分析我们取大于1的两个整数g和k,以及大于g的一个素数p。我们来分析在CG(p)中,等式(1.a),(2.a)和(3.a)中的解答的存在和数目。
在伽罗瓦域CG(p)中,我们根据t的数值,即除尽p-1的2的乘幂,来区别不同的情况。可回想起p-1可被2t除尽,但是不可被2t+1除尽,即,p全等于2t+1(mod 2t+1)。前面的分析给了我们对于引起的问题及大致解决方案的相当精确的了解。
当t=1时,p全等于3(mod 4)。g和-g相对于p的Legendre符号不同CG(p)的任意二次剩余具有CG(p)中的两个平方根一个是二次剩余,另一个是非二次剩余。首先,在CG(p)中,两个等式(1.a)或(2.a)之一具有x的两个解答,而另一等式不具有任何解答。其次,无论任何k值,在CG(p)中,等式(3.a)都具有x的两个解答。
当t=2时,p全等于5(mod 8)。根据g相对于p的Legendre的符号,产生两种情况。当符号等于-1时,g和-g都是CG(p)的非二次剩余在CG(p)中,三个等式(1.a),(2.a)和(3.a)都不具有x的任何解答。当符号等于+1时,g和-g是CG(p)的两个二次剩余,等式(1.a)和(2.a)均具有x的2个解答。此外,CG(p)中,g2的秩为奇校验值,意味着不论什么样的k值,在CG(p)中,等式(3.a)都具有x的4个解答,其中只有一个具有奇校验秩。
图2图解说明了假定t=2,在k=6,p全等于5(mod 8)的情况下,等式(3.a)的解答。要指出的是,由于相对于p全等于5(mod 8),2的Legendre符号等于-1。则2(p-1)/4(mod p)为-1的平方根。于是,我们得到p≡5(mod8);因此(2|p)=-1 从而,b2≡-1(modp)当t=3时,p全等于9(mod 16)。我们来考虑g相对于p的Legendre符号。当该符号等于-1时,g和-g是CG(p)中的两个非二次剩余在CG(p)中,三个等式(1.a),(2.a)和(3.a)都不具有x的任何解答。当符号等于+1时,g和-g是CG(p)的两个二次剩余,在CG(p)中,等式(1.a)和(2.a)均具有x的2个解答。等式(3.a)的x解答的存在取决于CG(p)中g2的秩。该秩为奇校验值或者可被2除尽,但是不可被4除尽。当CG(p)中,g2的秩可被2除尽,但是不可被4除尽时,对于k=2,在CG(p)中,等式(3.a)具有x的4个解答;它不能超过k≥3。当CG(p)中,g2的秩为奇校验值时,对于k=2,在CG(p)中,等式(3.a)具有x的4个解答,对于k≥3,在CG(p)中,等式(3.a)具有x的8个解答。在两种情况下,只有一个值是奇校验值。
当t=4时,p全等于17(mod 32)。我们来考虑g相对于p的Legendre符号。当该符号等于-1时,g和-g是CG(p)的两个非二次剩余在CG(p)中,三个等式(1.a),(2.a)和(3.a)都不具有x的任何解答。当符号等于+1时,g和-g是CG(p)的两个二次剩余,在CG(p)中,等式(1.a)和(2.a)均具有x的2个解答。等式(3.a)的x解答的存在取决于CG(p)中g2的秩。该秩为奇校验值或者可被2或4除尽,但是不可被8除尽。当CG(p)中,g2的秩可被2除尽,但是不可被8除尽时,对于k=2,在CG(p)中,等式(3.a)具有x的4个解答;它不能超过k≥3。当CG(p)中,g2的秩可被2除尽,但是不可被4除尽时,对于k=2,在CG(p)中,等式(3.a)具有x的4个解答,或者对于k=3,在CG(p)中,等式(3.a)具有x的8个解答;对于k≥4,等式(3.a)无解。当CG(p)中,g2的秩为奇校验值时,对于k=2,在CG(p)中,等式(3.a)具有x的4个解答,对于k≥3,在CG(p)中,等式(3.a)具有x的4个解答,对于k≥4,在CG(p)中,等式(3.a)具有x的16个解答。在所有三种情况下,只有一个值是奇校验值。
依次类推,从而可如下总结p全等于1(mod 4)的情况。
当p全等于1(mod 4)时,我们来考虑g相对于p的Legendre符号。当该符号等于-1时,g和-g是CG(p)的两个非二次剩余在CG(p)中,三个等式(1.a),(2.a)和(3.a)都不具有x的任何解答。当符号等于+1时,g和-g是CG(p)的两个二次剩余;在CG(p)中,等式(1.a)和(2.a)均具有x的2个解答。我们来定义一个整数uCG(p)中,g2的秩可被2u除尽,但是不可被2u+1除尽。值u是从0~t-2的t-1个可能值之一。CG(p)中,等式(3.a)的x解答的存在及数目取决于k,t和u的值。当u是正数,并且k大于t-u时,在CG(p)中,等式(3.a)不具有x的解答。当u为零,并且k大于t时,在CG(p)中,等式(3.a)具有x的2t个解答。当k小于或等于t-u时,在CG(p)中,等式(3.a)具有x的2k个解答。
GQ2原理在整数模数环中的适用性为了在整数模数n的环中,等式(1)和(2)均不具有x的解,其必要充分条件是,对于从p1~pf的至少一个素数p,等式(1.a)和(2.a)必须在CG(p)中均不具有x的解答。
为了在整数模数n的环中,等式(3)具有x的解,其必要充分条件是,对于从p1~pf的每个素数p,等式(3.a)在CG(p)中具有x的解答。
对于从g1~gm的基数g之一,等式(3)尽快地禁止全等于1(mod4)的任意素数p或者g相对于p的Legendre符号等于-1;或者在u为正数,并且大于t-k的条件下,g相对于p的Legendre符号等于+1。为了全等于1(mod 4)的素数p成为可能,根据上面定义的两个整数,对于从g1~gm的每个基数g,必须达到下述两个条件之一。或者G=g2的秩为CG(p)中的奇校验秩,即u=0,不论k为什么值。或者G=g2的秩为CG(p)中的偶校验秩,即u>0,并且满足条件u+k≤t。
全等于1(mod 4)的素数的乘积不能实现所有的GQ2技术原理。每个GQ2模数必须至少具有两个全等于3(mod 4)的素数,从而对于每个基数g来说,g相对于这些素数之一的Legendre符号不同于g相对于另一素数的Legendre符号。当所有素数全等于3(mod 4)时,可认为GQ2模数是基本模数。当除了全等于3(mod 4)的至少两个素数之外,模数包括全等于1(mod 4)的一个或多个素数时,可认为模数GQ2是复合模数。
GQ2模数的系统结构开始,必须确定将限定模数n的全部约束条件以二进制位表示的大小(例如512或1024位),以及为1的最高有效连续位的数目(至少1个,通常16或32个二进制位),素数的数目f,必须全等于1(mod4)的素数的数目e(可能为0);其它素数,即f-e素数,中的至少两个,必须全等于3(mod 4)。模数n将是类似大小的f个素数的乘积。当e=0时,得到基本模数GQ2。当e>0时,得到复合模数GQ2。基本模数是均全等于3(mod 4)的素数的乘积。于是,复合模数GQ2表示为基本模数GQ2乘以一个或多个全等于1(mod 4)的其它素数的乘积。首先,产生全等于3(mod 4)的素数。随后,如果e>0,产生全等于1(mod 4)的素数。
对于GQ2模数的结构的效能来说,在设法查明候选数字是否是素数之前,选择每个候选数字无疑较好。
用g1,g2…表示,通常在第一部分素数2,3,5,7…中查找基数。如果没有相反的指示,m个基数是m个第一部分素数g1=2,g2=3,g3=5,g4=7,…。但是,必须注意下述几点如果预先使用了全等于5(mod 8)的因数,则必须避开2;如果公共密钥<3,n>必须被用作RSA公共验证密钥,则必须避开3。
全等于3(mod 4)的f-e个素数的选择根据第二因数,对于每个因数,程序请求并使用一个基数。对于全等于3(mod 4)的最后一个因数的选择来说,程序查明是否存在其它基数,即m是否等于或大于f-e,并且如果m等于或大于f-e,则请求并考虑从gf-e~gm的最后几个基数。为了使全等于3(mod 4)的素数的选择形式化,我们引入廓线(profile)的概念。廓线表征了整数g相对于一组大于g,并且全等于3(mod 4)的素数的特征。
-当整数g具有和两个素数相同的Legendre符号时,一般认为相对于g,这两个素数等效。否则,相对于g,这两个素数互补。
-用Profilef(g)表示,整数g相对于f个素数p1p2…pf的廓线是一个f个二进制位的序列,每个素数一个二进制位。第一位等于1;根据相对于g,下一因数是和p1等效,还是和p1互补,后面的每个二进制位等于1或0。
-当廓线的所有二进制位等于1时,一般认为该廓线平直。这种情况下,g的所有Legendre符号等于+1或者等于-1。当g的廓线不平直时,在整数模数n环中,不可关于x求解等式(1)和(2)。
-根据定义,相对于全等于3(mod 4)的单个素数,g的廓线始终是平真的。这种扩展被用于归纳选择全等于3(mod 4)的素数的算法。
当两个基数g1和g2的廓线不同时,这意味着全等于3(mod 4)的至少三个素数,两个专用值Q1和Q2导致模数n的两种不同分解。当基数是小素数时,程序确保f-e-1个基本素数的2f-e-1乘法组合都不相同它们取所有可能的数值。廓线概念不扩展到全等1(mod 4)的素数。
全等于3(mod 4)的第一素数p1每个候选值必须全等于3(mod4),没有其它任何特殊约束条件。
当考虑第一基数g1时,全等于3(mod 4)的第二素数p2相对于g1,每个候选值必须和p1互补。
当考虑第二基数g2时,全等于3(mod 4)的第二素数p3根据相对于两个第一部分素数p1和p2,g2的廓线,产生两种情况。当Profile2(g2)平直时,相对g2,每个候选值必须和p1互补。否则,我们得到Profile2(g1)=Profile2(g2);则每个候选值必须确保Profile3(g1)≠Profile3(g2)。
当考虑基数gi时,全等于3(mod 4)的第i个素数pi+1的选择根据相对于i个第一部分素数p1,p2,…pi的gi的廓线,产生两种情况。当Profilei(gi)平直时,相对gi,每个候选值必须和p1互补。否则,在i-1个基数g1,g2,…gi-1和它们的所有乘法组合g1·g2,g1·g2·…gi-1,即总共2i-1-1个整数之中,有且只有一个整数g使得Profilei(gi)=Profilei(g);则每个候选值必须确保Profilei+1(gi)≠Profilei+1(g)。
当考虑基数gf-e-1,以及从gf-e~gm的其它基数时,全等于3(mod 4)的最后一个素数pf-e如上所述考虑归因于基数gf-e-1的约束条件。此外,当m等于或大于f-e时,相对于f-e个素数,每个候选值必须提供从gf-e~gm的最后几个基数的非平直廓线。相对于Profilef-e-1(gi)平直的所有gi值,每个候选值必须和p1互补。
总之,全等于3(mod 4)的素数被选为相互的函数。
对于从0~f-e-1的i,选择全等于3(mod 4)的第i+1个素数,候选素数pi+1必须成功通过下述检查√如果i>m或者如果i=0,则候选pi+1无其它约束条件;于是接受候选pi+1。
√如果0<i≤m,则候选pi+1必须考虑第i个基数gi。相对于从p1~pi的i个第一部分素数,计算基数gi的廓线Profilei(gi)。根据计算结果,会发生下两种情况中的一种情况,并且只会发生一种情况-如果廓线平直,则相对于gi,候选pi+1必须和p1互补;否则,拒绝该候选pi+1。
-如果廓线不平直,在i-1个基数g1,g2,…gi-1和它们的所有乘法组合之中,有且只有一个我们称为g的数字使得Profilei(gi)=Profilei(g);则候选pi+1必须确保Profilei+1(gi)≠Profilei+1(g);否则,必须拒绝该候选pi+1。
√如果i+1=f-e,并且i<m,即当剩余还未被考虑的从gf-e~gm的基数时,选择全等于3(mod 4)的最后一个素数,候选pf-e必须把剩余的这些基数考虑进去在这些基数中,选择其廓线Profilef-e-1(gi)平直的那些数字;相对于这样选择的每个基数,候选pf-e必须与p1互补;否则拒绝候选pf-e。
由于候选素数已成功通过了适当的测试,接受该候选素数。
全等于1(mod 4)的e个素数的选择为了可被接受,相对于从g1~gm的每个基数,全等于1(mod 4)的每个候选素数p必须满足下述条件。
-我们来计算每个基数gi相对于p的Legendre符号。如果该符号等于-1,则拒绝该候选素数p,并转到下一候选素数。如果该符号等于+1,就继续该候选素数的评估。必须指出的是,如果整数2被用作基数,则必须除去全等于5(mod 8)的所有候选素数基数2和全等于5(mod 8)的素数不相容。
-计算整数s=(p-1+2t)/2t+1,以便确定密钥<s,p>。我们把密钥<s,p>应用于每个公共值Gi,以便得到结果r。产生两种情况。
-如果r等于gi或-gi,则u=0。这种情况下,并且也只有在这种情况下,Gi处于一个环中。可提及的一种普通情况是如果p全等于5(mod 8),并且gi相对于p的Legendre符号等于+1,则Gi处于环中。可回想起在这种情况下,Gi不可能等于4。
-如果r既不等于gi,也不等于-gi,则u>0;必须指出的是密钥<(p-1)/2t,p>把各个非二次剩余y转换为元素b,元素b是1的第2t次原根。下述算法通过使用两个整数变量由r初始化的w和取2~2t-2的值的jj,根据r和b,计算u。
对于从1~t-2的i,重复下述程序-计算w2/Gi(mod pj),随后把结果自乘到2t-i-1(mod pj)次幂我们必定得到+或-1。当得到-1时,计算jj=2i,则用w.bjj(mod pj)替换w。当得到+1时,不进行任何操作。
在计算结束时,变量w的值为gi或-gi。此外,我们知道CG(pj)中,Gi的秩可被2t/jj除尽,但是不可被2t+1/jj除尽,即,通过jj=2t-u,jj确定u的值。当v大于jj,即k>t-u时,拒绝该候选素数,并转到另一候选素数。当v小于或等于jj,即k≤t-u时,继续评估该候选素数。
当已产生f个素数时,公共模数n是这f个素数p1,p2,…pf的乘积。无符号的整数n可由二进制序列表示;该序列遵守程序开始时,关于二进制位的大小,以及为1的连续最高有效位的数目强加的约束条件。素数的选择提供了模数n相对于m个基数g1,g2,…gm中的每个基数的下述性质。此外,在整数模数n环中,等式(1)和(2)不具有x的任何解答。其次,在整数模数n环中,等式(3)具有x的解答。
总之,相互独立地选择全等于1(mod 4)的素数。当全等于3(mod4)的因数逐渐考虑基数时,全等于1(mod 4)的每个素数必须考虑由各个基数限定的所有约束条件。从pf-e~pf的每个全等于1(mod 4)的素数,即p应分两步成功地通过下述检查。
1)对于从g1~gm的m个基数中的每个基数,连续执行步骤(1)。
计算当前基数g相对于候选素数p的Legendre符号。产生并且只产生下述两种情况之一如果该符号等于-1,则拒绝候选素数。否则(该符号等于+1),则在步骤(1)之后,转到基数g继续该检查。
当对于所有m个基数,该候选素数都是可接受的时,则操作转到步骤(2)。
2)对于从G1~Gm的m个公共值中的每个值,连续执行步骤(2)。
计算整数t,从而p-1可被2t除尽,但是不可被2t+1除尽,则整数s=(p-1+2t)/2t+1,以便确定密钥<s,p>。把密钥<s,p>应用于当前的公共值G=g2,得到结果r,即r≡Gs(mod p)。根据该结果,产生并且只产生下述情形之一a)如果r等于g或-g,则u=0;在步骤(2)转到后面的公共值G,继续该候选素数的检查。
b)否则,取从1~t-2的值中的一个值,应用下述算法计算正数u,所述算法实现两个变量取从2~2t-2的值的jj,和由r初始化的w,以及通过把密钥<(p-1)/2t,p>应用于CG(p)的非二次剩余得到的整数b。
对于从1~t-2的上标ii,重复下述操作计算w2/G(mod p),随后把密钥<2t-ii-1,p>应用于计算结果,得到+1或-1(否则,证明该候选因数不是素数)。如果得到-1,则计算jj=2ii,随后c≡bjj(mod p),随后用w.c(mod p)替换w,则转到下一上标ii。如果得到+1,则转到下一上标ii。
在算法结束时,依据关系jj=2t-u确定变量jj中的值;变量w的值是G的平方根,即g或-g(否则,证明该候选因数不是素数)。产生两种情况■如果t-u<k,则由于出现G的支路的长度不够,拒绝候选素数p。
■如果(t-u≥k),则在步骤(2)之后转到下一公共值G,继续候选素数的评估。
当对于所有m个公共值来说,候选素数合格时,把该候选因数看作全等于1(mod 4)的素数。
相关值的计算为了获得专用分量,在着手处理通常情况之前,我们首先计算两种最简单,并且最通行情况中,等式(3.a)的所有解答。
对于全等于3(mod 4)的每个素数pj来说,密钥((pj+1)/4,pj>给出任意二次剩余的平方根。根据这一点,得出计算等式(3.a)的解答的方法sj≡((pj+1)/4)k(mod(pi-1)/2);则,Qi,j≡Gisj(modpj)]]>或者这种解答的反(mod pj)。
sj≡(pj-1)/2-((pj+1)/4)k(mod(pj-1)/2);则,Qi,j≡Gisj(modpj)]]>则在CG(pj)中,有且只有1的两个平方根+1和-1;于是存在等式(3.a)的两个x解答这两个数字Qi,j和pj-Qi,j都是相同平方的Gi(mod pj)。
对于全等于5(mod 8)的每个素数pj来说,密钥<(pj+1)/4,pj>给出任意奇校验秩元素的奇校验秩平方根。根据这一点,得出等式(3.a)的解答sj≡(pj+3)/8)k(mod(pj-1)/4);则,Qi,j≡Gisj(modpj)]]>或者这种解答的反(mod pj)。
sj≡(pj-1)/4-((pj+3)/8)k(mod(pj-1)/4);则,Qi,j≡Gisj(modpj)]]>则在CG(pj)中,有且只有1的4个平方根;于是存在等式(3.a)的4个x解答。注意,由于相对于全等于5(mod 8)的p,2的Legendre符号等于-1,因此2(pj-1)/4(mod pj)是-1的平方根。如果Qi,j是一个解,则pj-Qi,j是另一个解,Qi,j与-1的一个平方根的乘积(mod pj)也是一个解。
对于全等于2t+1(mod 2t+1)的素数pj,密钥<(pj-1+2t)2t+1,pj>给出任意奇校验秩元素的奇校验秩平方根。于是能够计算等式(3.a)的解答。
-首先计算整数sj≡((pj-1+2t)/2t+1)k(mod(pj-1)/2t),以确定密钥<sj,pj>。
-当密钥<(pj-1+2t)2t+1,pj>把Gi转换为gi或-gi时,Gi的秩为CG(pj)中的奇校验值(u=0)。随后,密钥<sj,pj>把Gi转换为数字z这是等式(3.a)的奇校验秩解答。根据t和k的值,在一个或多个分支上,仍然存在min(2k-1,2t-1)个其它解答。z2分支携带有另一解答即pj-z。当t≥2时,z4分支具有两个其它解答它们是z与-1的两个平方根中的每个平方根,即1的两个第四原根中的每个原根的乘积。现在,如果y是CG(pj)的非二次剩余,则y(pj-1)/4(modpj)是-1的平方根。一般来说,对于取从1~min(k,t)中的各个值的i来说, 分支具有2i-1个解答这些解答是z与1的2i-1个第2i原根中的每个原根的乘积(mod pj)。现在如果y是CG(pj)中的非二次剩余,则 是1的第2i次原根,我们称之为c。1的第2i-1~2i次原根是c的奇校难幂c,c3(mod pj),c5(mod pj),…, -当密钥<(pj-1+2t)2t+1,pj>把Gi转换为既不是gi也不是-gi的整数r时,Gi的秩为CG(pj)中的偶校验值(u>0)。随后,假定Gi被恰当地放置在相当长的分支上,即t≥k+u,在Gi所处的分支上,存在2k个解答。为了计算第2k个根,把上面所述的平方根计算算法重复k次就足够了,以便计算直到解答z的连续结果的平方根。当然,可优化该计算,以便直接逼近第2k次根,随后在单个操作中调整第2k次根的近似值,以获得解答z。要获得所有其它解答,首先要注意的是如果y是CG(pj)的非二次剩余,则 是1的第2k次原根,我们称之为d。1的2k2k次根是d的连续乘幂d,d2(mod pj),d3(modpj),…, 等于1的 Gi所处分支上的2k个解答是z和这些根中的每个根的乘积(mod pj)。
总之,在已知k,t和u的情况下,使用下述程序计算素数p和基数g的分量1)计算整数s≡((p-1+2t)/2t+1)k(mod(p-1)/2t),确定密钥<s,p>。随后,把密钥<s,p>应用于G,得到z≡Gs(modp)。根据u的值,转到步骤(2)或(3)。
2)如果u=0,z是等式(3.a)的奇校验解答。在一个或多个分支上,正好在min(k,t)个其它分支上,还存在min(2k-1,2t-1)个其它偶校验秩解答。对于从1~min(k,t)的i来说, 分支具有2i-1个解答这些解答是z与1的2i-12i个原根中的每个原根的乘积(modp)。等式(3.a)的类属解答由zz表示。运算转到步骤(4)。
3)如果u>0,等式(3.a)的所有解答都是偶校验解答。这些偶校验解答的数目为2k,并且它们都在G所处的分支中;实际上,t-u≥k。为了计算解答,下述算法实现两个变量取从2~2t-2的值的jj和由z初始化的w,以及通过把密钥<(p-1)/2t,p>应用于CG(p)的非二次剩余,得到的整数b。
下述序列被重复k次。
对于从1~t-2的上标ii,重复下述运算计算w2/G(mod p),随后把密钥<2t-ii-1,p>应用于计算结果,得到+1或-1(否则证明p不是素数)。如果得到-1,则计算jj=2ii,随后c≡bjj(mod p),随后用w.c(mod p)替换w,则转到下一上标ii。如果得到+1,则转到下一上标ii。
在算法结束时,变量w的值为za。G所处分支上的2k个解答是za和1的2k次根中的每个根的乘积(mod p)。等式(3.a)的类属解答由zz表示。运算转到步骤(4)。
4)在已知zz的情况下,根据其推导出分量值当使用等式G·Qv≡1(mod n)时,该分量值是zz mod p的倒数。当使用等式G≡Qv(mod n)时,该分量值是zz。
注意获得专用分量和专用值的方法有许多种。如果已知一组f个分量,即对于给定基数的f个分量,则使用中国余数方法计算相应的专用值。可看出对于给定的公共值G和模数n,可能具有几个专用值Q。当n是全等于3(mod 4)的两个素数的乘积时,存在4个专用值Q;当n是全等于3(mod 4)的三个素数的乘积时,存在8个专用值Q;当n是全等于3(mod 4)的两个素数和全等于5(mod 8)的一个素数的乘积时,存在16个专用值Q;合理地使用这些多个数值可使得难以通过分析使用GQ2的芯片卡的电子消费进行攻击。
从而,随着t的增大,对于越来越稀少的情况,程序变得复杂难解。实际上,素数如下所述被平均分配t=1时,两个中有一个,t=2时,四个中有一个,t=3时,8个中有一个,依次类推。此外,归因于m个基数的约束条件使候选因数逐渐变得不可接受。无论情况是什么样,复合模数决定性地构成GQ2技术的一部分;GQ2模数的类型决不影响动态证明和数字签名协议。
图3图解说明了在具有全等于9(mod 16)的素数,即t=3,u=0,以及k≥3的环中的Gi=gi2。要注意的是b≡yp-18(modp)]]>b8≡1(modp)b4≡-1(mod p)图4图解说明了在具有全等于65(mod 128)的素数,即t=6,k=4和u=2的分支上的Gi=gi2。
这里是k=6的第一组密钥GQ2,给出v=64,m=3,给出三个基数g1=3,g2=5,g3=7,并且f=3,即具有三个素数的模数两个全等于3(mod 4)的素数和一个全等于5(mod 8)的素数。必须注意的是g=2和全等于5(mod 8)的素数不相容。
p1=03CD2F4F21E0EAD60266D5CFCEBB6954683493E2E833(2|p1)=-1;(3|p1)=+1;(5|p1)=-1;(7|p1)=+1p2=0583B097E8D8D777BAB3874F2E76659BB614F985EC1B(2|p1)=-1;(3|p1)=-1;(5|p1)=+1;(7|p1)=-1p3=0C363CD93D6B3FEC78EE13D7BE9D84354B8FDD6DA1FD(2|p1)=-1;(3|p1)=+1;(5|p1)=+1;(7|p1)=+1n=p1·p2·p3=FFFF81CEA149DCF2F72EB449C5724742FE2A3630D902CC00EAFEE1B957F3BDC49BE9CBD4D94467B72AF28CFBB26144CDF4BBDBA3C97578E29CC9BBEE8FB6DDDDQ1,1=0279C60D216696CD6F7526E23512DAE090CFF879FDDEQ2,1=7C977FC38F8413A284E9CE4EDEF4AEF35BF7793B89Q3,1=6FB3B9C05A03D7CADA9A3425571EF5ECC54D7A7B6FQ1,2=0388EC6AA1E87613D832E2B80E5AE8C1DF2E74BFF502Q2,2=04792CE70284D16E9A158C688A7B3FEAF9C40056469EQ3,2=FDC4A8E53E185A4BA793E93BEE5C636DA731BDCA4EQ1,3=07BC1AB048A2EAFDAB59BD40CCF2F657AD8A6B573BDEQ2,3=0AE8551E116A3AC089566DFDB3AE003CF174FE4E4877Q3,3=01682D490041913A4EA5B80D16B685E4A6DD88070501Q1=D7E1CAF28192CED6549FF457708D50A7481572DD5F2C335D8C69E22521B510B64454FB7A19AEC8D06985558E764C6991B05FC2AC74D9743435AB4D7CF0FF6557Q2=CB1ED6B1DD649B89B9638DC33876C98AC7AF689E9D1359E4DB17563B9B3DC582D5271949F3DBA5A70C108F561A274405A5CB882288273ADE67353A5BC316C093Q3=09AA6F4930E51A70CCDFA77442B10770DD1CD77490E3398AAD9DC50249C34312915E55917A1ED4D83AA3D607E3EB5C8B197697238537FE7A0195C5E8373EB74D下面是和全等于5(mod 8)的p3相关的分量的其它可能值。下面是CG(p3)中,-1的平方根c=2(p3-1)/4(mod p3)=0C3000933A854E4CB309213F12CAD59FA7AD775AAC37Q’1,3=c.Q1,3(mod p3)=050616671372B87DEC9AEEAC68A3948E9562F714D76CQ’2,3=c.Q2,3(mod p3)=06F308B529C9CE88D037D01002E7C838439DACC9F8AAQ’3,3=c.Q3,3(mod p3)=015BE9F4B92F1950A69766069F788E45439497463D58给出Q’1=676DF1BA369FF306F4A1001602BCE5A008DB82882E87C148D0
D820A711121961C9376CB45C355945C5F2A9E5AFAAD7861886284A9B319F9E4665211252D74580Q’2=CAEC4F41752A228CF9B23B16B3921E47C059B9E0C68634C2C64D6003156F30EF1BC02ADA25581C8FDE76AA14AB5CC60A2DE1C565560B27E8AA0E6F4BCA7FE966Q’3=2ACEF5161FE53B68CC7C18B6AFE485815B46599F44C51A6A1A4E858B470E8E5C7D2200EF135239AF0B7230388A6A5BDD8EE15B0D094FC2BFA890BFDA669D9735下面是第二组密钥GQ2,k=9,即v=512,m=2,即两个基数g1=2和g2=3,并且f=3,给出具有全等于3(mod 4)的三个素数的模数。
p1=03852103E40CD4F06FA7BAA9CC8D5BCE96E3984570CB(2|p1)=-1;(3|p1)=-1;并且我们得到(6|p1)=+1p2=062AC9EC42AA3E688DC2BC871C8315CB939089B61DD7(2|p2)=+1;(3|p2)=-1;并且我们得到(6|p2)=-1p3=0BCADEC219F1DFBB8AB5FE808A0FFCB53458284ED8E3(2|p3)=-1;(3|p3)=+1;并且我们得到(6|p3)=-1n=p1·p2·p3=FFFF5401ECD9E537F167A80C0A9111986F7A8EBA4D6698AD68FF670DE5D9D77DFF00716DC7539F7CBBCF969E73A0C49761B276A8E6B6977A21D51669D039F1D7Q1,1=0260BC7243C22450D566B5C6EF74AA29F2B927AF68E1Q2,1=0326C12FC7991ECDC9BB8D7C1C4501BE1BAE9485300EQ1,2=02D0B4CC95A2DD435D0E22BFBB29C59418306F6CD00AQ2,2=045ECB881387582E7C556887784D2671CA118E22FCF2Q1,3=B0C2B1F808D24F6376E3A534EB555EF54E6AEF5982Q2,3=0AB9F81DF462F58A52D937E6D81F48FFA4A87A9935ABQ1=27F7B9FC82C19ACAE47F3FE9560C3536A7E90F8C3C51E13C35F32FD8C6823DF753685DD63555D2146FCDB9B28DA367327DD6EDDA092D0CF108D0AB708405DA46Q2=230D0B9595E5AD388F1F447A69918905EBFB05910582E5BA64
9C94B0B2661E49DF3C9B42FEF1F37A7909B1C2DD54113ACF87C6F11F19874DE7DC5D1DF2A9252D本发明已描述了一种多组GQ2密钥,即模数n和多对公共值和专用值G和Q的产生方法,其中指数v等于2k。如同所描述的那样,所述多组密钥被用于实现用于证明实体的真实性和/或消息的完整性和/或真实性的方法。
在法国电信,TDF和Math RiZK公司在同一天申请的待审批申请(其发明人为Louis Guillou和Jean-Jacques Quisquater)中,要求保护证明实体的真实性和/或消息的完整性和/或真实性的方法,系统和设备的特征。这两个申请作为参考包含于此。
权利要求
1.在借助所有或部分下述参数或它们的衍生物-由f个素数p1,p2,…pf(f等于或大于2)的乘积构成的公共模数n,-公共指数v;-m个相异的整数基数g1,g2…gm(m大于或等于1)向控制者实体证实下述内容的方法中-实体的真实性和/或-与该实体相关的消息M的完整性;基数gi是这样的基数,以致不能在整数模数n环中,求解下述两个等式(1)和(2)的xx2≡gimodn 和 x2≡-gimodn并且以致能够在整数模数n环中,求解下述等式(3)的xxv≡gi2modn]]>根据本发明的方法使得能够以满足等式(1),(2)和(3)的方式,产生f个素数p1,p2,…pf,所述方法包括首先选择下述内容的步骤·m个基数g1,g2…gm,·模数n的大小,·f个素数p1,p2,…pf的大小。
2.按照权利要求1所述的方法,其特征在于当公共指数v具有下述形式时v=2k这里,k是大于1的安全参数,安全参数k也被选择为素数。
3.按照权利要求1或2所述的方法,其特征在于至少部分地在第一部分整数内选择m个基数g1,g2,…gm。
4.按照权利要求2或3所述的方法,其特征在于安全参数k是一个小整数,尤其是小于100的整数。
5.按照权利要求1-4之一所述的方法,其特征在于模数n的大小大于几百个二进制位。
6.按照权利要求1-5之一所述的方法,其特征在于f个素数p1,p2,…pf的大小接近于被除以素数数目f的模数n的大小。
7.按照权利要求1-6之一所述的方法,其特征在于在f个素数p1,p2,…pf内,-选择全等于1(mod4)的e个素数,e可能为0(如果e为0,则下面将把模数n称为基本模数,如果e>0,下面将把模数n称为复合模数),-其它f-e个素数被选择为全等于3(mod4),f-e至少等于2。
8.按照权利要求7所述的方法,其特征在于为了产生全等于3(mod4)的f-e个素数p1,p2,…pf-e,执行下述步骤-选择全等于3(mod4)的第一素数p1,随后-选择第二素数p2,以致相对于基数g1,p2与p1互补,-执行下述程序,区分两种情况,选择素数pi+1(1)i>m的情况-选择全等于3(mod 4)的素数pi+1。(2)i≤m的情况-计算gi相对于i个第一部分素数pi的廓线(Profilei(gi))-如果Profilei(gi)平直,则选择该素数pi+1,使得相对于gi,pi+1和p1互补,-否则,在i-1个基数g1,g2,…gi-1和它们的全部乘法组合中,选择下面称为g的数字,使得Profilei(g)=Profilei(gi),并且随后选择pi+1,使得Profilei+1(gi)≠Profilei+1(g)。(术语“互补”,“廓线”,“平直廓线”具有在说明部分中定义的含义)。
9.按照权利要求8所述的方法,其特征在于为了选择最后的素数pf-e,使用下述程序区分三种情况(1)f-e-1>m的情况·选择全等于3(mod4)的pf-e,(2)f-e-1=m的情况·相对于从p1~pf-e-1的f-e-1个第一部分素数,计算Profilef-e-1(gm),··如果Profilef-e-1(gm)平直,则选择pf-e-1,使得相对于gm,pf-e-1和p1互补,··否则···在从g1~gm-1的m-1个基数及它们的全部乘法组合中,选择下面称为g的数字,使得Profilei(g)=Profilei(gi),···随后选择pf-e,使得Profilef-e(gi)≠Profilef-e(gm),(3)f-e-1<m的情况·选择pf-e,以便满足下述两个条件(3.1)第一条件·根据从p1~pf-e-1的f-e-1个第一部分素数,计算Profilef-e-1(gf-e-1)。··如果Profilef-e-1(gf-e-1)平直,则选择pf-e,使得pf-e满足相对于gf-e-1,pf-e和p1互补的第一条件,··否则,···在从g1~gm-1的f-e-1个基数及它们的全部乘法组合之内,选择下面称为g的数字,使得Profilei(g)=Profilef-e-1(gf-e-1),···随后选择pf-e,使得它满足使Profilef-e(g)≠Profilef-e(gm)的第一条件,(3.2)第二条件·在从gf-e~gm的所有最后一些基数之内,选择其廓线Profilef-e-1(gi)平直的那些基数,随后·选择pf-e,以致pf-e满足相对于这样选择的每个基数,pf-e和p1互补的第二条件。
10.按照权利要求8或9所述的方法,其特征在于为了产生全等于1(mod4)的e个素数,在进行下述两个连续测试的情况下,评估从pf-e~pf的每个候选素数p(1)第一测试-计算从g1-gm的每个基数相对于候选素数p的Legendre符号,·如果Legendre符号等于-1,则拒绝候选素数p,·如果Legendre符号等于+1,则转到下一基数,继续候选素数p的评估,并且随后当已考虑了最后一个基数时,转到第二测试,(2)第二测试-计算整数t,使得p-1可被2t除尽,但是不可被2t+1除尽,随后-计算整数s,使得s=(p-1+2t)/2t+1,-把密钥<s,p>应用于每个公共值Gi,以便得到结果rr≡Gismodp]]>·如果r等于gi或-gi,则转到下一公共值Gi+1,继续第二测试,·如果r不等于gi或-gi,则应用下述算法,计算因数u··该算法由关于从1~t-2的上标ii规定的下述程序列的多次重复组成··该算法实现两个变量由r初始化的w和取从2~2t-2的值的jj=2ii,以及通过把密钥<(p-1)/2t,p>应用于CG(p)的非二次剩余,得到的数字b,随后重复下述步骤1和2···步骤1计算w2/Gi(mod p),···步骤2使计算结果自乘到2t-ii-1次幂,····如果得到+1,则转到下一公共值Gi+1,继续第二测试,····如果得到-1,则计算jj=2ii,用w.bjj(mod p)替换w,随后对具有上标ii的下一数值,继续该算法,··在算法结束时,依据关系jj=2t-u,变量jj的值被用于计算整数u,随后计算表达式t-u,出现两种情况···如果t-u<k,则拒绝候选素数p,···如果t-u>k,继续候选素数p的评估,并且随后继续第二测试,并转到下一公共值Gi+1,如果在第二测试结束时,对于所有m个公共值Gi,该候选素数p都未被拒绝,则候选素数p被看作是全等于1(mod 4)的素数。
11.应用按照权利要求1-10任一所述的方法,使得能够产生f个素数p1,p2,…pf的一种方法,该方法用于借助所有或部分下述参数或者这些参数的衍生物-m对专用值Q1,Q2,…Qm和公共值G1,G2,…Gm(m大于或等于1),-由所述f个素数p1,p2,…pf的乘积构成的公共模数n(f大于或等于2),-公共指数v;向控制者实体证明下述内容-实体的真实性和/或-与该实体相关的消息M的完整性,所述模数,所述指数和所述值由下述类型的关系连接Gi·Giv≡1·modn]]>或者Gi≡Qivmodn]]>所述指数为v=2k其中k是大于1的安全参数,所述公共值Gi是小于f个素数p1,p2,…pf的基数gi的平方gi2,基数gi是这样的基数,以致不能在整数模数n环中,求解下述两个等式的xx2≡gimodn 和x2≡-gimodn并且以致能够在整数模数n环中,求解下述等式的xxv≡gi2modn]]>所述方法按照下述步骤实现称为证人的实体,所述证人实体具有f个素数pi和/或素数的中国余数参数,和/或公共模数n和/或m个专用值Qi和/或专用值Qi的f.m分量(Qi,j≡Qimod pj)的参数,以及公共指数v的参数;-证人计算整数模数n环中的承诺(commitment)R;每个承诺如下计算·通过执行下述类型的运算,R≡rvmod n这里r是大于0,小于n的随机因数,·或者··通过执行下述类型的运算Ri≡rivmodpi]]>这里ri是与素数pi相关的随机值,并且0<ri<pi,每个ri属于一个随机因数集合{r1,r2,…rf},··随后通过应用中国余数方法,计算每个承诺;-证人接收一个或多个挑战d。每个挑战d包含下面称为基本挑战的m个整数di。根据每个挑战d,证人如下计算响应D·通过执行下述类型的运算,D≡r·Q1d1·Q2d2····Qmdmmodn]]>·或者··通过执行下述类型的运算Di≡ri·Qi,1d1·Qi,2d2····Qi,mdmmodpi]]>··并且随后应用中国余数方法,计算响应D;所述方法使得存在和挑战d及承诺R同样多的响应D,每组数字R,d,D构成表示为{R,d,D}的三元组。
12.按照权利要求11所述的方法,其特征在于为了实现如上所述的多对专用值Q1,Q2,…Qm和公共值G1,G2,…Gm,所述方法使用素数p1,p2,…pf和/或中国余数参数,基数g1,g2,…gm和/或公共值G1,G2,…Gm-或者通过求Gi的第k个平方根模数n,或者通过取Gi的第k个平方根模数n的倒数,计算专用值Q1,Q2,…Qm,-或者计算专用值Q1,Q2,…Qm的f.m专用分量Qi,j,使得Qi,j≡Qi(mod pj)。
13.按照权利要求12所述的方法,其特征在于为了计算专用值Q1,Q2,…Qm的f.m专用分量Qi,j-应用密钥<s,pj>计算z,使得z≡Gis(modpj)]]>-并且使用t和u值。-当pj全等于1(mod 4)时,如前所述计算t和u值,并且·当pj全等于3(mod 4)时,t和u的值分别取为1和0(t=1,u=0),··如果u值为0,则认为所有的数字zz为···zz等于z,或者··zz等于z与1的2ii-t2ii次原根中的每个原根的乘积(mod pj),ii从1变化到min(k,t),··如果u为正数,则认为所有的数字zz等于za与1的2k2k次根中的每个根的乘积(mod pj),za表示在权利要求10中实现的算法结束时,变量w的值,-据此推导出分量Qi,j的至少一个值,当使用等式 时,该值等于zz,否则,当使用等式 时,该值等于zz的zz(modpj)的倒数。
全文摘要
证明由下述参数提供:一个公共模数n,由f个素数p
文档编号H04L9/32GK1372739SQ0080319
公开日2002年10月2日 申请日期2000年1月27日 优先权日1999年1月27日
发明者路易斯·基罗, 让-加奎斯·奎斯括特 申请人:法国电信公司, 法国电视传播公司, 马思·里兹克
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1