发明内容
针对上述存在的技术问题,本发明的目的是提供一种公钥认证加密方法及数字签名方法,将哈希认证技术引入到MQ公钥密码系统中,以提出一种安全的MQ公钥认证加密方法及安全高效的MQ认证数字签名方法。
为达到上述目的,本发明采用如下的技术方案:
一种公钥认证加密方法,包括以下步骤:
(Ⅰ)系统建立:选择一个输出至少160位的标准哈希函数H(·)和有限域GF(q),其中q=2k、整数k小于哈希函数H(·)的输出值长度;
根据用户安全性需求指定整数参数n、δ和μ的值(0<μ<δ<n);
随机选取GF(q)上的n维仿射双射变换U、n+μ维仿射双射变换T以及n维可逆多变量二次非线性变换F,其中F表示为:
(t1…,tn)=F(z1,…,zn)=(f1(z1,…,zn),…,fn(z1,…,zn))
其中,fi为n元二次多项式函数,形式如下:
将非线性变换F扩展为加密方案的中心映射F′:随机选取μ个形如fi的n元二次多项式tn+i=fn+i(z1,…,zn),(1≤i≤μ)连接到F后构成F′;
构造基于哈希函数H(·)的可逆压缩变换L:(y1,…,yn)←(x1,…,xn,xn+1,…,xn+δ),
其中xn+i=Hk(x1||x2||…||xn-δ+i-1),1≤i≤δ、Hk(·)表示取H(·)输出值的前k位、“||”表示将两个比特串连接起来、系数αi≠0(1≤i≤n+δ),其它系数为随机选取;
系统的公钥为上述4个映射T、F′、U以及L的复合,即G′=TоF′оU оL,公钥G′是有限域GF(q)上n+δ输入变量、n+μ输出的二次多项式方程组,私钥为映射T、F′、U以及L的相应逆变换组成,即D={U-1,T-1,F-1,L-1};
(Ⅱ)用公钥加密过程:假设要加密的明文已编码为(x1,…,xn),然后利用哈希函数结合上述方法将其扩展为(x1,…,xn+δ)、并代入公钥方程G′,得到相应的密文(y1,…,yn+μ);
(Ⅲ)用私钥解密过程包括4个子步骤:
(1)用私钥T-1计算得到(t1…,tn+μ)=T-1(y1…,yn+μ),然后丢掉加密时是增加的μ个冗余信息tn+1,…,tn+μ。
(2)用私钥F-1计算得到(z1,…,zn)=F-1(t1,…,tn);
(3)用私钥U-1计算得到(h1,…,hn)=U-1(z1,…,zn);
(4)用私钥L-1计算便可得到相应明文(x1…,xn)=L-1(h1,…,hn)。
所述哈希函数H(·)分别选用哈希函数标准MD5、SHA-1、SHA-2、SHA-3中的任一种。
一种数字签名方法,包括以下步骤:
(Ⅰ)设加密方案中的参数μ满足μ≤0,中心映射F′是通过删除F的后μ个多项式构成,中心映射F′:(t1,…,tn-|μ|)←(z1,…,zn);
(Ⅱ)签名过程:假设对长度为n-|μ|的消息向量(y1,…,yn-|μ|)进行签名,则签名过程包括以下4个子步骤:
(1)随机选取yn-|μ|+i∈GF(q)(1≤i≤|μ|)与消息向量级联起来,构成GF(q)上的n维向量(y1,…,yn),并用私钥T-1计算得到(t1…,tn)=T-1(y1…,yn);
(2)用私钥F-1计算得到(z1,…,zn)=F-1(t1,…,tn);
(3)用私钥U-1计算得到(h1,…,hn)=U-1(z1,…,zn);
(4)用私钥L-1计算得到相应的签名(x1…,xn+δ)=L-1(h1,…,hn);
(Ⅲ)验证签名过程包括以下两个子步骤:
(1)用哈希函数对签名(x1,…,xn+δ)进行认证,每个分量要满足:
xn+i=Hk(x1||x2||…||xn-δ+i-1),1≤i≤δ
否则拒绝签名;
(2)若步骤(1)认证通过,则继续用其公钥G′验证:
如果上式方程左右两边相等,则接受签名,否则拒绝签名。
本发明具有以下优点和积极效果:
1)本发明是一种安全性很高的公钥加密方案(或数字签名方案),其安全性性能主要基于MQ公钥密码体制和使用的哈希函数,二者结合提供了双重安全性保护,MQ公钥密码是一种公认的能抵抗量子计算机攻击的密码系统,另外,目前广泛使用的哈希函数均是采用大量逻辑运算构造,具有很高的安全性,也能抵抗量子计算机的攻击。因此本发明能抵抗量子计算机的攻击;
2)本发明是一种高效轻量的公钥加密方案(或数字签名方案),其运算主要为哈希值运算和有限域上的乘法运算,目前广泛使用的哈希函数均是采用大量逻辑运算构造,因此具有较低的计算复杂性,如果我们选择较小的域参数如GF(28),则乘法可采用查表,效率较高,本方案可广泛应用于计算能力有限的嵌入式设备中;
3)本发明公钥加密方案(或数字签名方案)具有很大的灵活性,哈希函数可以自由选择。
具体实施方式
本发明提出的公钥认证加密方法及数字签名方法,将安全的MQ公钥认证加密方法采用MQ公钥密码方法为主体部分,结合哈希函数认证技术,通过二者有效结合来提供双重安全性保护。
图1中哈希Tame变换为本发明所叙述的基于hash函数构造的可逆变换L;仿射变换U和T为随机选取,中心映射F′为所选MQ密码系统的中心映射;上述四个变换的复合组成本发明的公钥加密(或签名)方案的公钥,即G′=T оF′оUоL。
图1显示了利用公钥G′的加密过程,它本质上是通过4个变换T、F′、U和L依次计算所得,解密时只要用它们的逆变换依次计算便可。
本发明提出的公钥认证加密方法,具体步骤如下:
(Ⅰ)系统建立:选择一个输出至少160位的标准哈希函数H(·)和有限域GF(q),其中q=2k、整数k小于哈希函数H(·)的输出值长度;
根据用户安全性需求指定整数参数n、δ和μ的值(0<μ<δ<n);
随机选取GF(q)上的n维仿射双射变换U、n+μ维仿射双射变换T以及n维可逆多变量二次非线性变换F,其中F表示为:
(t1…,tn)=F(z1,…,zn)=(f1(z1,…,zn),…,fn(z1,…,zn))
其中,fi为n元二次多项式函数,形式如下:
将非线性变换F扩展为加密方案的中心映射F′:随机选取μ个形如fi的n元二次多项式tn+i=fn+i(z1,…,zn),(1≤i≤μ)连接到F后构成F′;
构造基于哈希函数H(·)的可逆压缩变换L:(y1,…,yn)←(x1,…,xn,xn+1,…,xn+δ),
其中xn+i=Hk(x1||x2||…||xn-δ+i-1),1≤i≤δ、Hk(·)表示取H(·)输出值的前k位、“||”表示将两个比特串连接起来、系数αi≠0(1≤i≤n+δ),其它系数为随机选取;
系统的公钥为上述4个映射T、F′、U以及L的复合,即G′=TоF′оUоL,公钥G′是有限域GF(q)上n+δ输入变量、n+μ输出的二次多项式方程组,私钥为映射T、F′、U以及L的相应逆变换组成,即D={U-1,T-1,F-1,L-1};
(Ⅱ)用公钥加密过程:假设要加密的明文已编码为(x1,…,xn),然后利用哈希函数结合上述方法将其扩展为(x1,…,xn+δ)、并代入公钥方程G′,得到相应的密文(y1,…,yn+μ);
(Ⅲ)用私钥解密过程包括4个子步骤:
(1)用私钥T-1计算得到(t1…,tn+μ)=T-1(y1…,yn+μ),然后丢掉加密时是增加的μ个冗余信息tn+1,…,tn+μ。
(2)用私钥F-1计算得到(z1,…,zn)=F-1(t1,…,tn);
(3)用私钥U-1计算得到(h1,…,hn)=U-1(z1,…,zn);
(4)用私钥L-1计算便可得到相应明文(x1…,xn)=L-1(h1,…,hn)。
一种数字签名方法,包括以下步骤:
(Ⅰ)设加密方案中的参数μ满足μ≤0,中心映射F′是通过删除F的后μ个多项式构成,中心映射F′:(t1,…,tn-|μ|)←(z1,…,zn);
(Ⅱ)签名过程:假设对长度为n-|μ|的消息向量(y1,…,yn-|μ|)进行签名,则签名过程包括以下4个子步骤:
(1)随机选取yn-|μ|+i∈GF(q)(1≤i≤|μ|)与消息向量级联起来,构成GF(q)上的n维向量(y1,…,yn),并用私钥T-1计算得到(t1…,tn)=T-1(y1…,yn);
(2)用私钥F-1计算得到(z1,…,zn)=F-1(t1,…,tn);
(3)用私钥U-1计算得到(h1,…,hn)=U-1(z1,…,zn);
(4)用私钥L-1计算得到相应的签名(x1…,xn+δ)=L-1(h1,…,hn);
(Ⅲ)验证签名过程包括以下两个子步骤:
(1)用哈希函数对签名(x1,…,xn+δ)进行认证,每个分量要满足:
xn+i=Hk(x1||x2||…||xn-δ+i-1),1≤i≤δ
否则拒绝签名;
(2)若步骤(1)认证通过,则继续用其公钥G′验证:
如果上式方程左右两边相等,则接受签名,否则拒绝签名。
考察MQ认证加密方案的公钥G′=TоF′оUоL,虽然L是基于hash函数的非线性可逆变换,但若将扩展变量xn+i,0≤i≤μ看成新的输入变量,则L是一个线性压缩变换,因此两个线性变换U,L可复合成一个线性变换U′=UоL,也即公钥G′=TоF′оU′,这显示本发明的MQ认证加密方案与传统MQ公钥方案相比,构造结构本质上是相同的。从公钥G′中分离出私钥信息T,F′,U′属于IP问题,是计算上不可行的。其次,本发明采用基于hash函数的可逆变换并结合传统的加方法,将传统MQ密码的公钥G(n元置换二次方程组),伪装成为n+δ个变量、n+μ(0≤μ<δ)个方程的不定方程组G′(新公钥),且从新公钥G′中分离出G是不可行的,因此恢复明文需要解公钥方程组G′。
假设给定密文向量Y=(y
1,…,y
n+μ),对于攻击者而言,由于不知道合法用户的私钥,且又无法从公钥G′中分解出来,因此恢复明文X需要求解方程G′(X)=Y。从形式上看,由于0≤μ<δ,所以公钥方程G′为不定方程。显然密文Y关于方程G′的解的个数为
即使假设攻击者能够容易地求解公钥方程G′(事实上这是不可行的),则确定这些解中唯一合法明文的概率大约为P=1/q
δ-μ。
因此,只要选取适当的参数值q,δ,μ,便能抵抗直接解方程的攻击。目前,求解类似公钥G′(不定方程组)的常用方法是先固定一些输入变量的值、将公钥方程转化为置换方程组甚至是超定方程组,然后用F5算法求解,然而准确评估该算法的计算复杂度仍是一个开放难题问题,直接攻击方法并不十分有效。如果用
表示寻找一个X′使得G′(X′)=Y的计算复杂性(对于解不定方程组而言,求解难度主要取决方程的个数),显然攻击者恢复明文的复杂性为
显然根据公钥G′直接解出消息所对应合法签名也是不可性的。但对于签名方案而言,往往不必解出合法明文,只要找到一个等价明文便能伪造签名。由于应用了减方法(此时-δ<μ≤0),新公钥G′为n+δ个变量、n-|μ|个方程的不定方程组,给定一个消息向量Y,它关于公钥G′的原像个数为
亦即一个消息对应多个签名,在签名时,通常采用引入随机性的方法来产生唯一合法的签名。因此,对于攻击者而言,伪造签名满足公钥G′的复杂度为
假设随机选取一个n+δ维向量X=(x
1,…,x
n+δ)∈GF(q)
n,则它满足签名认证的概率为P′=1/q
δ,也即从
个签名中随机选取一个伪造签名。
由于验证签名步骤(1)和步骤(2)具有乘积密码的性质,亦即伪造签名通过合法签名验证的复杂性为
这表明本发明将传统MQ签名方案的安全性提高了
倍,也即MQ签名方案与hash认证技术结合提供了双重安全性保护。因此,只要选取适当的参数便可构造安全的数字签名方案。
下面结合具体实施例来描述本发明提出的公钥认证加密方法及数字签名方法:
实施例1
本实施例为本发明提供的公钥认证加密方法的实施过程,具体步骤如下:
(Ⅰ)系统建立:标准哈希函数H(·)选用SHA-1,有限域参数k=8;指定系统参数n=20、δ=17和μ=6;随机选取有限域GF(28)上的20维仿射双射变换U、26维仿射双射变换T以及20维可逆多变量二次非线性变换F,其中F表示为:
(t1…,t20)=F(z1…,z20)=(f1(z1,…,z20),…,fn(z1…,z20))
其中,fi为20元二次多项式函数,形式如下:
将非线性变换F扩展为加密方案的中心映射F′:随机选取μ个形如fi的20元二次多项式t20+i=f20+i(z1,…,z20),(1≤i≤6)连接到F后构成F′;
构造基于哈希函数H(·)的可逆压缩变换L:(y1,…,y20)←(x1,…,x20,x21,…,x37),
其中x20+i=H8(x1||x2||…||x2+i),1≤i≤17、H8(·)表示取H(·)输出值的前8位、“||”表示将两个比特串连接起来、系数αi≠0(1≤i≤37),其它系数为随机选取;
系统的公钥为上述4个映射T、F′、U和L的复合,即G′=TоF′оUоL,公钥G′是有限域GF(q)上37输入变量、26输出的二次多项式方程组,需存储空间为18.8Kbyte,私钥为映射T、F′、U以及L的相应逆变换组成,即D={U-1,T-1,F-1,L-1},需存储空间为3.9Kbyte;
(Ⅱ)用公钥加密过程:假设要加密的明文已编码为(x1,…,x20),然后利用哈希函数结合上述方法将其扩展为(x1,…,x37)、并代入公钥方程G′,得到相应的密文(y1,…,y26);
(Ⅲ)用私钥解密过程包括4个子步骤:
(1)用私钥T-1计算得到(t1…,t26)=T-1(y1…,y26),然后丢掉加密时是增加的6个冗余信息t21,…,t26。
(2)用私钥F-1计算得到(z1,…,z20)=F-1(t1,…,t20);
(3)用私钥U-1计算得到(h1,…,h20)=U-1(z1,…,z20);
(4)用私钥L-1计算便可得到相应明文(x1…,x20)=L-1(h1,…,h20)
实施例2
本实施例为本发明提供的数字签名方法的实施过程,具体包括以下步骤:
(Ⅰ)系统建立:标准哈希函数H(·)选用SHA-1,有限域参数k=8;指定系统参数n=31、δ=10和μ=-5;随机选取有限域GF(28)上的31维仿射双射变换U、26维仿射双射变换T以及31维可逆多变量二次非线性变换F,其中F表示为:
(t1…,t31)=F(z1…,z31)=(f1(z1…,z31),…,fn(z1…,z31))
其中,fi为31元二次多项式函数,形式如下:
将非线性变换F缩减为加密方案的中心映射F′:删除F的后5个二次多项式t25+i=f25+i(z1,…,z31),(1≤i≤5)构成F′;
构造基于哈希函数H(·)的可逆压缩变换L:(y1,…,y31)←(x1,…,x31,x32,…,x41),
其中x31+i=H8(x1||x2||…||x20+i),1≤i≤10、H8(·)表示取H(·)输出值的前8位、“||”表示将两个比特串连接起来、系数αi≠0(1≤i≤41),其它系数为随机选取;
系统的公钥为上述4个映射T、F′、U和L的复合,即G′=T оF′оUоL,公钥G′是有限域GF(28)上41输入变量、26输出的二次多项式方程组,需存储空间为22.9Kbyte,私钥为映射T、F′、U以及L的相应逆变换组成,即D={U-1,T-1,F-1,L-1},需存储空间为4.9Kbyte;
(Ⅱ)用私钥签名过程:假设对消息向量(y1,…,y26)进行签名,分以下4个子步骤:
(1)随机选取5个变量y26+i∈GF(28),1≤i≤5与消息向量级联起来,构成有限域GF(28)上31维向量(y1,…,y31),并用私钥T-1计算得到(t1…,t31)=T-1(y1…,y31);
(2)用私钥F-1计算得到(z1,…,z31)=F-1(t1,…,t31);
(3)用私钥U-1计算得到(h1,…,h31)=U-1(z1…,z31);
(4)用私钥L-1计算便可得到相应签名(x1…,x41)=L-1(h1,…,h31)
(Ⅲ)验证签名过程包括以下两个子步骤:
(1)用哈希函数对签名(x1,…,x41)进行认证,每个分量要满足:
x31+i=H8(x1||x2||…||x20+i),1≤i≤10
否则拒绝签名;
(2)若步骤(1)认证通过,则继续用其公钥G′验证:
如果上式方程左右两边相等,则接受签名,否则拒绝签名
实例1和实例2的安全性水平约为
其主要的运算是有限域GF(2
8)上的乘法运算,由于有限域较小可以预运算并造表存储,于是乘法运算可转化为查表运算;其次分别需17、10次SHA-1运算,代价小。因此实现效率高,适合软硬件实现。