CN101321059B - 一种用于编码和译码数字消息的方法和系统 - Google Patents

一种用于编码和译码数字消息的方法和系统 Download PDF

Info

Publication number
CN101321059B
CN101321059B CN 200710100307 CN200710100307A CN101321059B CN 101321059 B CN101321059 B CN 101321059B CN 200710100307 CN200710100307 CN 200710100307 CN 200710100307 A CN200710100307 A CN 200710100307A CN 101321059 B CN101321059 B CN 101321059B
Authority
CN
China
Prior art keywords
function
message
private key
pki
territory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN 200710100307
Other languages
English (en)
Other versions
CN101321059A (zh
Inventor
管海明
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Priority to CN 200710100307 priority Critical patent/CN101321059B/zh
Priority to PCT/CN2007/070263 priority patent/WO2008148274A1/zh
Publication of CN101321059A publication Critical patent/CN101321059A/zh
Application granted granted Critical
Publication of CN101321059B publication Critical patent/CN101321059B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy

Landscapes

  • Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

本发明提供了一种用于编码和译码数字消息的方法和系统,所述方法包括:选择正整数m,n’,其中,m≥n’;生成一包含有E’(x)的公钥,其中,所述E’(x)为在域F上的从(x1,...,xm)到(y1,...,yn’)的非线性映射函数组,所述E’(x)包括n’个函数,所述n’个函数中含有关于(x1,...,xm)的有理分式函数;生成一与所述公钥相对应的私钥;然后完成相应的公私钥加解密过程,或者完成相应的公私钥签名验证过程。本发明具有显著增大的加密函数规模,本发明把MQ的二次稀疏多项式提升为高次稠密多项式,使等价于公钥的多项式函数的规模发生爆炸,从本质上提高了求不定方程组的逆函数的困难性,从而显著增加抗破译能力。

Description

一种用于编码和译码数字消息的方法和系统 
技术领域
本发明涉及信息的编码和译码领域,特别是涉及一种对数据消息加密、解密以及签名、验证的公用密钥密码体制。 
背景技术
密码技术是研究加密和解密变换的一门科学技术。通常情况下,人们将可懂的文本称为明文;将明文变换成的不可懂的文本称为密文。把明文变换成密文的过程叫加密;其逆过程,即把密文变换成明文的过程叫解密。这种加密或解密变换是由密钥来控制的。在开放环境下使用的密码系统应满足以下基本要求: 
保密性:保证信息不被泄漏给非授权的用户; 
完整性:保证信息不被任意或蓄意地修改; 
抗抵赖性:防止个人或实体通过销毁证据来否认曾经发布过的信息,以证明某类事件确实曾经发生过。 
公钥密码是解决上述的保密性、完整性、抗抵赖性的关键技术。其正式诞生的标志是1976年W.Diffie和M.Hellman发表的《密码学的新方向》(W.Diffe,M.E.Hellman,“New direction in cryptography”,IEEE Trans.,1976,22,644-654)。公钥密码使用一个公钥和一个私钥,公钥可以公开传递,但相关的私钥是保密的。只有使用私钥才能解密用公钥加密的数据、并对数据进行签名,公钥的作用则是对信息进行加密、以及验证签名的正确性。 
当前公钥密码面临的一个重要挑战,是量子计算的挑战。由Shor在1994年发明的Shor算法(P.W.Shor,“Algorithms for quantum computation:Discretelog and factoring”,Proceedings of the 35th Symposium on Foundations ofComputer Science,1994,pp.124-134.),能以多项式时间攻破所有的能够转换成广义离散傅立叶变换的公钥密码,包括目前广泛使用的RSA、DH和ECC等三种公钥密码体制。 
公钥密码应对量子计算挑战的基本对策是:采用不能转换成离散傅立叶变换的数学难题来建立公钥密码体制。按照这种思路,当前国际上主要有三类互相竞争的“抗量子计算”的公钥密码方案:
一是NTRU公钥密码体制(J.Hoffstein,J.Pipher,and J.H.Silverman,“NTRU:a ring based public key cryptosystem”,Crypto’96,LNCS 1423,pp.267-288.Springer-Verlag,1998.),其安全性基于在一个大维数的格中寻找一个很短向量的数学难题。 
二是OTU2000公钥密码体制(T.Okamoto,K.Tanaka,and S.Uchiyama,“Quantum Public-Key Cryptosystems,”CRYPTO2000,LNCS1880,pp.147-165,Springer-Verlag(2000).),其安全性基于改进的背包问题。 
三是MQ公钥密码体制,即多变元二次多项式公钥密码体制(MultivariateQuadratic Polynomials in Public Key Cryptosystem),其安全性基于二次多项式不定方程组的难解性。这个领域典型的方案是SPLASH签名算法(J.Patarin,L.Goubin,N.Courtois,“C*+-and HM:Variations around two schemes of T.Matsumoto and H.Imai”,in Advances in Cryptology,Proceedings ofASIACRYPT’98,LNCS 1514.Springer Verlag,1998,pp.35-49.),该方案是欧洲密码标准NESSIE推荐的数字签名算法(http://www.cryptonessie.org),主要在智能卡等特殊的领域中使用。 
现有技术中与本发明最近似的技术解决方案是MQ公钥密码体制。MQ公钥密码体制的公钥的一般形式为: 
y i = Σ 1 ≤ j ≤ k ≤ m γ ijk x j x k + Σ j = 1 m β ij x j + α i
xi,yj,αi,βij,γijk∈F,1≤i≤n,m>n 
其中,F为规定的域。由于m>n,故MQ的公钥为不定方程组,属于不可逆函数。一般把公钥的逆函数规定为是与它相对应的私钥,即从y=(y1,...,ym)到x=(x1,...,xm)的可逆变换。 
但是MQ公钥密码体制存在以下缺点: 
1、加密算法过于简单,即二次多项式函数的数学结构限制了加密算法的规模。如果多项式的数量n与变元的数量m比较少,或者组合比较简单,则易于被破译。如果多项式的数量n与变元的数量m比较多,或者组合比较复杂,则密钥长度、编码和译码速度、存储器需求以及传输带宽等工程实用方面都会带来难以克服的技术问题。由于这个缺点,再加上一些简单的MQ方案被破译,使人们怀疑MQ的安全性不够,目前研究MQ的论文很多,但真正使用的很少,即使成为国际标准(例如SPLASH签名算法),也很少被使用。 
2、只能签名、不能加密。其原因是:它的公钥(即加密算法)为不定方程组,而不定方程组的解是一个很大的集合,只能用于不可恢复的数字签名算法,不能从签名中还原出被签名的数据。具体而言: 
MQ产生签名的方法为:把待签名的数据a=(a1,...,am),代入私钥,进行求值运算,得到签名b=(b1,...,bm); 
MQ验证签名的方法为:设被签名的数据为a=(a1,...,am),把待验证的签名b代入公钥,计算出(c1,...,cn);如果(c1,...,cn)=(a1,...,an),则接受签名,否则拒绝签名。 
由于产生签名的计算是一一映射,例如,从(a1,...,am)到(b1,...,bm);而验证签名的计算并不是一一映射,例如,只得到(c1,...,cn);也就是说,不可能从签名b得到原始的完整的被签名数据(a1,...,am),即不能用于加密。 
当然,若把它的公钥(即加密算法)中的多项式数量n与变元数量m设置成一样多,让其公钥成为置换方程组,而不再是不定方程组,则虽然可以从签名b还原出被签名的数据a(即具备加密的功能),但容易被破译。 
发明内容
本发明所要解决的技术问题是提供一种用于编码和译码数字消息的方法和装置,其运用有理分式的方法来克服目前的MQ的加密算法过于简单的缺点,把二次稀疏多项式,提升为等价的高次稠密多项式,使等价于公钥的多项式函数的规模发生爆炸,从本质上提高求不定方程组的逆函数的困难性。 
为了解决上述问题,依据本发明的实施例,公开了一种用于编码和译码数字消息的方法,具体可以包括:选择正整数m,n’,其中,m≥n’,xm、yn’是域F中的元素,(x1,...,xm)、(y1,...,yn’)均为由域F中的元素所组成的向量;选择正整数n,其中,m≥n≥n’,并且m>n,xm、yn是域F中的元素,x=(x1,...,xm),y=(y1,...,yn)均为由域F中的元素所组成的向量;设置由x到y的可逆非线性映射函数组:(y1,...,yn)=E(x)=(E1(x1,...,xm),…,En(x1,...,xm));依据E(x)的逆函数,生成私钥;选取E(x)中的n’个函数作为E’(x),得到公钥;其中,E’(x)含有关于(x1,...,xm)的有理分式函数:E’(x)=(E1(x1,...,xm),…,En’(x1,...,xm));当用于加解密过程时,m≥n=n’;采用所述公钥对消息M进行编码,得到编码消息N;采用所述私钥对该编码消息N进行译码,得到译码消息L;或者,采用所述私钥对消息M’进行编码,得到编码消息N’;采用所述公钥对该编码消息N’进行译码,得到译码消息L’。 
依据本发明的实施例,还公开了一种用于编码和译码数字消息的方法,具体可以包括:选择正整数m,n’,其中,m≥n’,xm、yn’是域F中的元素,(x1,...,xm)、(y1,...,yn’)均为由域F中的元素所组成的向量;生成一包含有E’(x)的公钥,其中,所述E’(x)为在域F上的从(x1,...,xm)到(y1,...,yn’)的非线性映射函数组,所述E’(x)包括n’个函数,所述n’个函数中含有关于(x1,...,xm)的有 理分式函数;生成一与所述公钥相对应的私钥;设置单向函数链H(w),以及单向函数链的逆函数H-1(z);通过单向函数链H(w)将消息w转换为中间结果x,然后采用所述公钥对所述中间结果x进行编码,得到编码结果y;和,采用所述私钥将编码结果y变换为中间结果z,然后运用单向函数链的逆函数H-1(z)将中间结果z转换为译码消息w。 
依据本发明的实施例,还公开了一种用于数字签名的方法,可以包括: 
选择正整数m,n’,其中,m≥n’,xm、yn’是域F中的元素,(x1,...,xm)、(y1,...,yn’)均为由域F中的元素所组成的向量;生成一包含有E’(x)的公钥,其中,所述E’(x)为在域F上的从(x1,...,xm)到(y1,...,yn’)的非线性映射函数组,所述E’(x)包括n’个函数,所述n’个函数中含有关于(x1,...,xm)的有理分式函数;生成一与所述公钥相对应的私钥;设置单向函数链H(w),以及单向函数链的逆函数H-1(z);采用所述私钥先把待签名的消息y”变换为中间结果z,然后运用单向函数链的逆函数H-1(z)将中间结果z转换为数字签名w;和,通过单向函数链H(w)将数字签名w转换为中间结果x,然后采用所述公钥对所述中间结果x进行译码,得到译码结果y;比较译码结果y和待验证的消息y’,根据比较结果确定数字签名w是否正确。 
依据本发明的实施例,还公开了一种用于编码和译码数字消息的方法,具体可以包括:选择正整数m,n’,r,其中,m≥n’,xm、yn’、IDr是域F中的元素(x1,...,xm,ID1,...,IDr)、(y1,...,yn’)均为由域F中的元素所组成的向量;选择正整数n,其中,m>n≥n’,xm、yn、αn是域F中的元素,(α1,...,αn)、x=(x1,...,xm)、y=(y1,...,yn)是由域F中的元素所组成的向量;设置接口函数R(x),其用于根据(x1,...,xm)得到n个关于(x1,...,xm)的函数:u0(x)=(u01(x1,...,xm),...,u0n(x1,...,xm))=R(x);选取s+1个域F上的n元可逆线性变换T=(T1,...,Ts+1),其中,每个Ti包括n个域F上的关于(α1,...,αn)的n元线性多项式;选取s个域F上的n元可逆非线性变换G=(G1,...,Gs),其中,每个Gi包括n个域F上的关于(α1,...,αn)的函数; 
所述T和/或G中的至少一个系数为ID的映射函数;依据预置规则,合成所述u0(x)、T和G,得到从x、ID到y的非线性映射函数组:(y1,...,yn)=E(x,ID)=(E1(x1,...,xm,ID1,...,IDr),...,En(x1,...,xm,ID1,...,IDr));选取E(x,ID)中的n’个函数作为E’(x,ID),得到公钥;其中,E’(x,ID)中含有关于(x1,...,xm,ID1,...,IDr)的有理分式函数;E’(x,ID)=(E1(x1,...,xm,ID1,...,IDr),...,En’(x1,...,xm,ID1,...,IDr));生成T的逆函数T-1,生成G的逆函数G-1;把授权用户的身份标识的值代入T-1和G-1,计算出与该身份标识相关的E(x,ID)的逆函数D(y);生成与该身份标识相对应的私钥,所述私钥包括R(x)和D(y);采用所述公钥和ID(K),对消息M进行编码,得到编码消息N;采用所述私钥对该编码消息N进行译码,得到译码消息L;或者,采用所述私钥对消息M’进行编码,得到编码消息N’;采用所述公钥和ID(K),对该编码消息N’进行译码,得到译码消息L’。 
依据本发明实施例,还公开了一种用于编码和译码数字消息的系统,包括: 
公钥生成单元,用于生成一包含有E’(x)的公钥,其中,xm、yn是域F中的元素,(x1,...,xm)、(y1,...,yn’)均为由域F中的元素所组成的向量,所述E’(x)为在域F上的从(x1,...,xm)到(y1,...,yn’)的非线性映射函数组,所述E’(x)包括n’个函数,所述n’个函数中含有关于(x1,...,xm)的有理分式函数;其中,m,n’为正整数,m≥n’; 
私钥生成单元,用于生成一与所述公钥相对应的私钥; 
加解密单元,用于采用所述公钥对消息M进行编码,得到编码消息N;采用所述私钥对该编码消息N进行译码,得到译码消息L; 
或者,签名验证单元,用于采用所述私钥对消息M’进行编码,得到编码消息N’;采用所述公钥对该编码消息N’进行译码,得到译码消息L’。 
依据本发明实施例,还公开了另一用于编码和译码数字消息的系统,包括: 
选择正整数m,n’,其中,m≥n’,xm、yn’是域F中的元素,(x1,...,xm)、(y1,...,yn’)均为由域F中的元素所组成的向量; 
公钥生成单元,用于生成一包含有E’(x)的公钥,其中,所述E’(x)为在域F上的从(x1,...,xm)到(y1,...,yn’)的非线性映射函数组,所述E’(x)包括n’个函数,所述n’个函数中含有关于(x1,...,xm)的有理分式函数;其中,m,n’为正整数,m≥n’; 
私钥生成单元,用于生成一与所述公钥相对应的私钥; 
单向函数链确定单元,用于设置单向函数链H(w),以及单向函数链的逆函数H-1(z); 
加密单元,用于通过单向函数链H(w)将消息w转换为中间结果x,然后采用所述公钥对所述中间结果x进行编码,得到编码结果y;和 
解密单元,用于采用所述私钥将编码结果y变换为中间结果z,然后运用单向函数链的逆函数H-1(z)将中间结果z转换为译码消息w。 
依据本发明实施例,还公开了一种用于数字签名的系统,包括: 
选择正整数m,n’,其中,m≥n’,xm、yn’是域F中的元素,(x1,...,xm)、(y1,...,yn’)均为由域F中的元素所组成的向量; 
公钥生成单元,用于生成一包含有E’(x)的公钥,其中,所述E’(x)为在域F上的从(x1,...,xm)到(y1,...,yn’)的非线性映射函数组,所述E’(x)包括n’个函数,所述n’个函数中含有关于(x1,...,xm)的有理分式函数;其中,m,n’为正整数,m≥n’; 
私钥生成单元,用于生成一与所述公钥相对应的私钥; 
单向函数链确定单元,用于设置单向函数链H(w),以及单向函数链的逆函数H-1(z); 
签名单元,用于采用所述私钥先把待签名的消息y”变换为中间结果z,然后运用单向函数链的逆函数H-1(z)将中间结果z转换为数字签名w;和 
验证单元,用于通过单向函数链H(w)将数字签名w转换为中间结果x, 然后采用所述公钥对所述中间结果x进行译码,得到译码结果y;以及,比较译码结果y和待验证的消息y’,根据比较结果确定数字签名w是否正确。 
依据本发明实施例,还公开了另一用于编码和译码数字消息的系统,包括: 
选择正整数m,n’,r,m≥n,xm、yn’、IDr是域F中的元素,(x1,...,xm,ID1,...,IDr)、(y1,...,yn’)均为由域F中的元素所组成的向量; 
公钥生成单元,用于生成一包含有E’(x,ID)的公钥,其中,所述E’(x,ID)为在域F上的从(x1,...,xm,ID1,...,IDr)到(y1,...,yn’)的非线性映射函数组,所述E’(x,ID)包括n’个函数,所述n’个函数中含有关于(x1,...,xm,ID1,...,IDr)的有理分式函数;所述ID=(ID1,...,IDr)为授权用户的身份标识; 
私钥生成单元,用于针对身份标识为ID(K)的授权用户,生成一与该身份标识相对应的私钥; 
加解密单元,用于采用所述公钥和ID(K),对消息M进行编码,得到编码消息N;采用所述私钥对该编码消息N进行译码,得到译码消息L; 
或者,签名验证单元,用于采用所述私钥对消息M’进行编码,得到编码消息N’;采用所述公钥和ID(K),对该编码消息N’进行译码,得到译码消息L’。 
依据本发明实施例,还公开了一种用于数字签名的方法,可以包括: 
选择正整数m,n’,n,其中,m=n>n’,xm、yn’是域F中的元素,(x1,...,xm)、(y1,...,yn’)均为由域F中的元素所组成的向量;设置由x到y的可逆非线性映射函数组:(y1,...,yn)=E(x)=(E1(x1,...,xm),...,En(x1,...,xm));依据E(x)的逆函数,生成私钥;选取E(x)中的n’个函数作为E’(x),得到公钥;其中,E’(x)含有关于(x1,...,xm)的有理分式函数:E’(x)=(E1(x1,...,xm),...,En’(x1,...,xm));采用所述私钥对消息M’进行编码,得到编码消息N’;采用所述公钥对该编码消息N’进行译码,得到译码消息L’。 
依据本发明实施例,还公开了一种用于数字签名的系统,包括: 
函数组确定单元,用于设置由x到y的可逆非线性映射函数组:(y1,...,yn)=E(x)=(E1(x1,...,xm),...,En(x1,...,xm)); 
私钥生成单元,用于依据E(x)的逆函数,生成私钥; 
公钥生成单元,用于选取E(x)中的n’个函数作为E’(x),得到公钥;其中,E’(x)含有关于(x1,...,xm)的有理分式函数:E’(x)=(E1(x1,...,xm),...,En’(x1,...,xm));其中,m,n’,n为正整数,m=n>n’; 
签名验证单元,用于采用所述私钥对消息M’进行编码,得到编码消息N’;采用所述公钥对该编码消息N’进行译码,得到译码消息L’。 
与现有技术相比,本发明具有以下优点: 
1、本发明克服了长久以来的技术偏见: 
1985年以来,国际密码学术界对MQ进行了深入分析,发表了大量文献,尤其是最近Wolf的总结性研究(C.Wolf,《Multivariate Quadratic Polynomials inPublic Key Cryptography》,Katholieke Universiteit Leuven,ISBN90-5682-649-2,2005.),提出构造MQ的十种基本算法,四种基本陷门,在分析现有技术进展的基础上设计出一种扩展TTS签名方案等。但Wolf的研究仍然不能从根本上克服上述MQ的缺点。 
20多年来的大部分研究都是在MQ框架内部挖潜力,而没有像本发明那样冲破MQ框架向外部拓展,在更大的算法空间中建立新的公钥密码体制。由此可见,即使是对于伟大的数学家来说,突破传统观念的束缚,有时也是困难的。 
2、本发明与MQ相比,其有益效果之一是具有更强的抗数学破译能力,体现在: 
(1)与MQ相比,本发明具有显著增大的加密函数规模。为了便于分析,我们把有限域Fp上的有理分式转换为等价的多项式。例如,设本发明的公钥的次数为2,把它转换成多项式的表示形式: 
y i = Σ 1 ≤ j ≤ k ≤ m γ i 1 jk x j x k + Σ j = 1 m β i 1 j x j + α i 1 Σ 1 ≤ j ≤ k ≤ m γ i 0 jk x j x k + Σ j = 1 m β i 0 j x j + α i 0 mod p
= ( Σ 1 ≤ j ≤ k ≤ m γ i 1 jk x j x k + Σ j = 1 m β i 1 j x j + α i 1 ) ( Σ 1 ≤ j ≤ k ≤ m γ i 0 jk x j x k + Σ j = 1 m β i 0 j x j + α i 0 ) p - 2 mod p
≈ Σ h 1 , . . . , h m h 1 + . . . + h m ≤ 2 ( p - 2 ) b i , h 1 · · · h m x 1 h 1 . . . x m h m mod p ,
xi,yj,αi,βij,γijk,bi,h1...hm∈Fp,m>n,1≤i≤n; 
其项的数量将由  C m + 2 2 = ( m + 2 ) ! m ! 2 ! , 增加到大约  C m + 2 ( p - 2 ) 2 ( p - 2 ) = ( m + 2 ( p - 2 ) ) ! m ! ( 2 ( p - 2 ) ) ! 。例如,当p=5,m=2时: 
1 1 + 4 x 1 + x 1 2 + x 2 + 2 x 1 x 2 + 3 x 2 2 mod 5 = ( 1 + 4 x 1 + x 1 2 + x 2 + 2 x 1 x 2 + 3 x 2 2 ) 3 mod 5
= ( 1 + 2 x 1 + x 1 2 + 3 x 1 3 + x 1 4 + 2 x 1 5 + x 1 6 + 3 x 2 + 2 x 1 2 x 2 + 2 x 1 3 x 2 + x 1 4 x 2 + x 1 5 x 2 + 2 x 2 2 + x 1 x 2 2 + 2 x 1 3 x 2 2 + x 1 4 x 2 2 + 4 x 2 3 + 4 x 1 x 2 3 + 4 x 1 2 x 2 3 + 4 x 1 3 x 2 3 + x 2 4 + 4 x 1 x 2 4 + 3 x 1 2 x 2 4 + 2 x 2 5 + 4 x 1 x 2 5 + 2 x 2 6 ) mod 5
= ( 3 + 3 x 1 + 3 x 1 3 + x 2 + 4 x 2 3 + 2 x 1 2 x 2 + 2 x 1 3 x 2 + 2 x 1 3 x 2 2 + x 1 x 2 2 + 4 x 1 x 2 3 + 4 x 1 2 x 2 3 + 4 x 1 3 x 2 3 ) mod 5 ;
而当p=65537,m=8时,这种等价于有理分式的多项式的项的数量,将由MQ时的  C m + 2 2 = 45 , 大约增加到 
C m + 2 ( p - 2 ) 2 ( p - 2 ) = ( 8 + 2 ( 65537 - 2 ) ) ! 8 ! ( 2 ( 65537 - 2 ) ) ! = 2160852653586620281721640525505904640 ;
显然,规模如此巨大的多项式,虽然在数学世界中是客观存在的,但需要占用指数级的存储空间,实际上是难以操作的。这种性质的有益效果为:把MQ的二次稀疏多项式提升为高次稠密多项式,使等价于公钥的多项式函数的规模发生爆炸,从本质上提高了求不定方程组的逆函数的困难性,从而显著增加抗破译能力。 
虽然本发明相对于同等参数下的MQ,降低了一定的编码译码速度(因为有理分式的计算稍慢于多项式的计算),多占用了一定的存储空间(因为有理分式的存储空间稍大于多项式的存储空间);但是,在MQ体制下,希望达到本发明相应的函数规模和抗破译能力,其付出的代价(编译码速度和存储空间)是不可想象的。 
(2)与现有技术相比,本发明具有更加复杂的数学结构。本发明的安全性基于多变元有理分式不定方程组的难解性,而现有技术中还没有直接针对有理分式进行破译的可行方案。 
本发明进一步将安全性归结为交替运用因式分解(factorization,主要针对“乘法”)和函数分解(decomposition,主要针对“迭代”)来分析隐藏在该有理分式不定方程组内部的多层嵌套结构的困难性;把多个简单函数组合成复杂函数,使密码的安全性不依赖于单一的变量,而依赖于多层的连锁关系,从而实现了:直接设置一个复杂表述的数学难题,但这个难题很难被证明等价于一个已知的简单表述的数学难题。 
(3)与MQ相比,本发明具有更广阔的算法空间。与多项式域相比,在有理分式域中蕴藏着一大类形式更一般、性质更复杂、理论背景更深刻、在抗数学分析方面具有天然优势、目前还尚未被充分开发的密码算法资源。例如,基本域Fp上的多项式域的元素数量为  | F p [ x 1 , . . . , x n ] | = p ( p - 1 ) n , 而对应的有理分式 域的元素数量为  | F p [ x 1 , . . . , x n ] | = p 2 ( p - 1 ) n , 显然后者可以为密码算法设计提供更大的自由度。 
3、在MQ发表后的20多年,才由发明人提出了本技术方案,其技术创新性充分体现在: 
将“有理分式”引入公钥密码体制中,相比MQ而言,其带来的意想不到的有益效果,需要足够高的数学水平才能理解。因为,表面上看,多项式与有理分式并不等价;需要在有理分式域与多项式域之间建立同态映射,进行定量分析,才能看到其为编码和译码带来的巨大好处。这种同态映射涉及到抽象代数的理论,对于本领域一般的密码设计技术人员来说,难以深刻理解其内在的数学规律;而对于一般的数学家来说,又很难感受到这种同态映射为密码设计带来的巨大好处。 
总之,对于本发明提出的技术方案而言,发明人不仅要把握当代数学前沿的进展,还要有丰富的实际编码经验和分析水平,能熟练地运用一些特殊的数学技巧,对密码的规律和本质有深刻的理解,并有一定的工程实现能力,此外还要依赖于灵感、机遇等非确定因素。本发明的提出,充分体现了发明人的智慧创新。 
附图说明
图1是用于编码和译码数字消息的方法实施例1的步骤流程图; 
图2是实施例1的数据流向图; 
图3是用于编码和译码数字消息的方法实施例2的步骤流程图; 
图4是用于数字签名的优选实施例的步骤流程图; 
图5是m=3、n=2的小数据实施例的加密或验证签名过程的数据流向图; 
图6是m=3、n=2的小数据实施例的解密或签名过程的数据流向图; 
图7a是基于身份方式下用于编码和译码数字消息的优选实施例的步骤流程图; 
图7b是图7a所示实施例的数据流向图; 
图8是多个私钥分配中心联合建立私钥的示意图; 
图9是m=12、n=8的小数据实施例实现私钥形态个性化的数据流向图; 
图10是m=12、n=8的小数据实施例的加密过程数据流向图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。 
本发明属于信息安全产品的范畴,主要应用于网络信任系统,例如证件、银行、手机、互联网、电子商务、电子政务、物流、网络监控、权力控制、资金转移、交易、数据加密等环节。 
应用本发明所需的硬件环境属于本领域技术人员所熟知的知识。其中:公钥生成单元、私钥生成单元、单向函数链确定单元和函数组确定单元,涉及到复杂数学公式的自动化推导,一般应采用高端的计算机系统;加解密单元、签名验证单元,只涉及到对给定的数学式的求值计算,可采用各种档次的硬件平台,例如单片机、专用数字信号处理芯片、智能卡等。 
下面对本发明可能涉及的一些术语进行简单解释: 
密码:通常可理解为进行信息加密和解密变换的算法。它的基本目的是伪装信息,使局外人不能理解信息的真正含义,而局内人能够理解伪装信息的本来含义。 
密钥:在执行密码算法的过程中,唯一能控制明文与密文之间进行有效变换的关键参数,叫做密钥。 
公钥密码体制:公钥密码体制使用两个密钥——一个公开密钥(简称:公钥)和一个私人密钥(简称:私钥)。公钥和私钥在数学上是相关的,但由公钥计算出私钥是困难的。公钥可在通信双方之间公开传递,也可以像电话号码本一样公开发布,私钥则由授权用户自己秘密保管。任何人从某个用户的名字就能查到它的公钥,因而可以给这个用户发送加密消息。只有授权用户自己才能用他的私钥完成解密。 
公钥密码体制还提供了数字签名及认证的能力:授权用户能用他的私钥对信息进行签名(相当于上述用私钥解密的过程);其他用户由于不掌握私钥而不能进行签名,但能用该用户的公钥验证签名的正确性(相当于上述用公钥加密的过程)。数字签名算法有两种类型:可恢复的数字签名体制:由签名可以推导出被签名的数据;不可恢复的数字签名体制:由签名不能推导出被签名的数据。 
有限域(finite field):是一种具体而又形象的数学结构,可以通俗地理解为能进行加减乘除四则运算的有限个元素的集合。(通常记做F,当有限域的 元素数量为素数p时,记做Fp。) 
有限域上的多项式(polynomial):通俗地理解:当只有一个变元时: 
f(x)=asxs+as-1xs-1+...+a0x0(modp) 
其中x叫作变元,ai叫作系数,aixi叫作项,它们在0,...,p-1之间取值。当有多个变元时: 
f ( x 1 , . . . , x n ) = Σ i 1 , . . . , i n i 1 + · · · + i n ≤ s a i 1 . . . i n x 1 i 1 . . . x n i n ( mod p )
F上的多项式集合,对于多项式四则运算是域,叫作F的多项式扩域。 
如果多项式中的项的数量相对很少,叫做稀疏多项式;反之叫做稠密多项式。稠密多项式不仅有很高的次数,而且项的数量非常多,把它展开来表示需要占用很大的空间位置。 
有限域上的有理分式(rational fraction):可理解为两个多项式相除: 
f ( x 1 , . . . , x n ) g ( x 1 , . . . , x n ) mod p
除了0多项式以外的多项式的乘法逆为 
(f(x1,...,xn))-1(modp-1)=(f(x1,...,xn))p-2(modp) 
但当p较大时,把上式展开需要巨大的存储空间,因此两个稀疏多项式相除(分母不为0多项式)的结果,通常是一个稠密多项式: 
f ( x 1 , . . . , x n ) g ( x 1 , . . . , x n ) = f ( x 1 , . . . , x n ) · ( g ( x 1 , . . . , x n ) ) p - 2 ( mod p )
该性质对于我们理解有理分式公钥密码的安全性非常重要。F上的有理分式集合,对于有理分式的四则运算是域,叫作F的有理分式扩域。 
有限域上的不定方程组(indeterminate equation system)设有限域上的方程组为: 
g 1 ( x 1 , . . . , x m ) mod p = 0 · · · · · · g n ( x 1 , . . . , x m ) mod p = 0
其中gi(x1,...,xm)为多项式或者有理分式,如果未知元数量m多于方程数量n, 上式称为Fp上的m元n阶不定方程组,通常也称为丢番图方程。不定方程组的解是一个很大的(x1,...,xm)的向量值的集合。 
当上述不定方程组有解时,它的解通常是一个由有限域上m维空间中的点组成的集合,可以表现为代数曲线、代数曲面乃至高度复杂的高维代数簇(若干个多项式的公共根的集合)。 
单向函数:设函数为y=Hash(x),已知x计算y是容易的,反之由y计算x是困难的,这种函数称为单向函数,也叫做杂凑函数、散列函数、Hash函数等,已被广泛应用于数据完整性检验和信息认证。它把一个任意长度的数据x,经过复杂的运算转换成一个固定长度或固定数域的数值或信息串y。 
构造单向函数的方法属于公知技术。当前最流行的单向函数算法是MD5和SHA-1(美国联邦信息处理标准FIPS180-1);更强的单向函数算法还有SHA-256、SHA-384和SHA-512等(美国联邦信息处理标准FIPS180-2)。 
参照图1,示出了一种用于编码和译码数字消息的方法实施例1,具体可以包括: 
步骤101,选择正整数m,n’,其中,m≥n’; 
步骤102,生成一包含有E’(x)的公钥,其中,所述E’(x)为在域F上的从(x1,...,xm)到(y1,...,yn’)的非线性映射函数组,所述E’(x)包括n’个函数,所述n’个函数中含有关于(x1,...,xm)的有理分式函数;本发明中,所述E’(x)中包括的有理分式函数的数量并没有限制,一个或者多个都是可行的。 
步骤103,生成一与所述公钥相对应的私钥; 
步骤104,采用所述公钥对消息M进行编码,得到编码消息N;采用所述私钥对该编码消息N进行译码,得到译码消息L; 
或者,步骤105,采用所述私钥对消息M’进行编码,得到编码消息N’;采用所述公钥对该编码消息N’进行译码,得到译码消息L’。 
上述步骤中并没有必然的先后顺序,例如,生成私钥的步骤103可以在生成公钥的步骤102之前,数字排序仅仅是为了说明的方便。 
对于本实施例而言,可以应用各种编译码的场合,例如,步骤104主要应用于加解密的情况,而步骤105主要可以应用于数字签名和验证的情况。当然, 对于不同的应用场合,参数不同,其编译码的性能也有优劣之分,本说明书后面会提出更为优选的实施例加以说明。 
本发明中规定的域F,可采用元素数量为素数p的有限域Fp,但不局限于这种Fp,而是可以推广到各种域。当F为有限域时,函数或变元的幂运算,包括整数幂运算和分数幂运算,在经过展开、化简、整理之后,均可以转换成有理分式的表示形式。 
本发明中所述的编码消息可以由一地点的用户产生,并传送至另一地点,然后由该另一地点的用户译码,即编码译码可以不在同一地点。当然,在同一地点进行编码和译码是一种更简单的情况。 
优选的,图1所示的实施例可以通过以下步骤得到公钥和私钥: 
步骤a、选择正整数n,其中,m≥n≥n’; 
步骤b、设置由x到y的可逆非线性映射函数组:(y1,...,yn)=E(x)=(E1(x1,...,xm),...,En(x1,...,xm)); 
步骤c、依据E(x)的逆函数,生成私钥; 
步骤d、选取E(x)中的n’个函数作为E’(x),得到公钥;其中,E’(x)中含有关于(x1,...,xm)的有理分式函数;E’(x)=(E1(x1,...,xm),...,En’(x1,...,xm))。 
步骤d中所述的选取可以采用:人工进行选取或者随机选取的方式。从实现过程而言,所述选取可以采用接口函数的方式(所述接口函数用于将m个变元转换为n个m元多项式),也可以不采用接口函数的方式。 
在设计中,一个给定的E(x)不一定就是一个公钥E’(x)(假设公钥没有其他参数时,公钥就是E’(x)),根据n=n’还是n>n’,后者是前者的全部或一部分。 
一个公钥在数学性质上、即在给定的输入输出消息的变换规则上,只对应一个私钥;当然这个私钥可以采用不同的表现形式。 
建立公钥与私钥的具体方法很多,但其中一个基本思路可以是:随机产生若干个简单的可逆线性变换与可逆非线性变换,运用各种方法(迭代、相乘、相除、相加等)组装成一个整体,再展开、化简、整理而得到一个公钥;运用这些可逆线性变换和可逆非线性变换的逆函数,可以对公钥求逆,作为该公钥对应的私钥。
从数学的角度精确描述本实施例中的公钥的性质如下: 
设x1,...,xm,y1,...,yn’∈F,其中m、n’均为正整数,m≥n’,F为规定的域;建立一个F上的从(x1,...,xm)到(y1,...,yn’)的非线性变换,该变换经过展开、化简、整理后可表示为: 
(y1,...,yn’)=E’(x)=(E1(x1,...,xm),...,En’(x1,...,xm)), 
y j = E j ( x 1 , . . . , x m ) = Σ k 1 , . . . , k m k 1 + . . . + k m ≤ π j 1 a j 1 , k 1 . . . k m x 1 k 1 . . . x m k m Σ k 1 , . . . , k m k 1 + . . . + k m ≤ π j 0 a j 0 , k 1 . . . k m x 1 k 1 . . . x m k m ,
xi,yj
Figure S071A0307920070628D000142
Figure S071A0307920070628D000143
∈F,1≤i≤m,1≤j≤n’,πj0≥0,πj1≥0, 
并且在π10,π20,...,πn’0中至少有一个πj0≥1;把E’(x)作为公钥密码系统中的公钥的一部分或者全部。例如,公钥包括E’(x)和其他的参数项。 
参照图2,所示的是本实施例的数据流向图,包括加解密和数字签名等数据处理流程。其中,m=n’时,可以用于加解密以及可恢复的签名;当m>n’时,可以用于不可恢复的签名。 
对于可恢复的签名,译码消息和原始消息的全部数据进行比较,即可判断出是否属于正确的签名;而对于不可恢复的签名(即说明书中n>n’的情况),是用译码消息与原始消息的一部分进行比较,即可判断出是否属于正确的签名。 
下面对本实施例用于数字签名和验证签名的情况进行更详细的描述。 
设F为规定的域,这种域可简单地理解为是一种能够实现加减乘除四则运算的数学结构,通常可选用其元素数量为素数p的有限域Fp;设m=n>n’,x=(x1,...,xm),y=(y1,...,yn),xi,yi∈F;设置由x到y的映射函数组 
y=(y1,...,yn)=E(x)=(E1(x1,...,xm),...,En(x1,...,xm)), 
以及对应的逆函数组 
x=(x1,...,xm)=D(y)=(D1(y1,...,yn),...,Dm(y1,...,yn)), 
取E(x)中的n’个函数作为公钥:
E’(x)=(E1(x1,...,xm),...,En’(x1,...,xm)))E(x), 
该E’(x)中含有至少一个关于(x1,...,xm)的有理分式函数。 
公钥E’(x)为一组不可逆函数,E(x)、D(y)为一对互逆的函数。由于E’(x)中的变元数量m比函数数量n’多,已知y求x时,E’(x)为F上的m元有理分式不定方程组,不存在唯一解。 
设被签名的数据为y”=(y”1,...,y”n),验证数字签名的译码结果为y=(y1,...,yn),待验证的数据为y’=(y’1,...,y’n),由y”产生的数字签名为x=(x1,...,xm),y、y’和y”均为经过单向函数变换以后的数据; 
运用私钥D(y)产生数字签名的数据处理方法为:x=D(y”)。运用公钥E’(x)验证数字签名的数据处理方法为:(y1,...,yn’)=E’(x),如果(y1,...,yn’)=(y’1,...,y’n’),则接受签名x,否则拒绝签名x。根据y和y’中的n’个变量相同,可以在概率上判定它们的全部n个变量都相同。但是用公钥E’(x)不可能恢复出y”的全部数据。 
为更清楚地表述本实施例的具体实施方式,下面描述一个小数据的具体例子: 
设F为有限域Fp,p=17,m=n=2,n’=1,设置由x到y的映射函数组E(x)为: 
y=(y1,y2)=E(x)=(E1(x1,x2),E2(x1,x2)), 
y 1 = E 1 ( x 1 , x 2 ) = 9 + 16 x 1 + 9 x 1 2 + 10 x 2 + 10 x 1 x 2 + x 2 2 12 + 13 x 1 + x 1 2 + 14 x 2 + 9 x 1 x 2 + 14 x 2 2 mod 17 ,
y 2 = E 2 ( x 1 , x 2 ) = 1 + 6 x 1 2 + 15 x 2 + 8 x 1 x 2 + 9 x 2 2 12 + 13 x 1 + x 1 2 + 14 x 2 + 9 x 1 x 2 + 14 x 2 2 mod 17 ,
把该E(x)中的一部分函数规定为公钥E’(x),例如设E1(x1,x2)为公钥,而E2(x1,x2)不是公钥; 
把上述的E(x)的逆函数组,规定为私钥D(y): 
x=(x1,x2)=D(y)=(D1(y1,y2),D2(y1,y2)), 
x 1 = D 1 ( y 1 , y 2 ) = 15 + 10 y 1 + 2 y 2 14 + 15 y 1 + y 1 2 + 12 y 2 + 11 y 1 y 2 + 11 y 2 2 mod 17 ,
x 2 = D 2 ( y 1 , y 2 ) = 10 + 2 y 1 + 8 y 1 2 + y 2 + 3 y 1 y 2 + 3 y 2 2 14 + 15 y 1 + y 1 2 + 12 y 2 + 11 y 1 y 2 + 11 y 2 2 mod 17 ;
设被签名的数据y=(2,11),y的数字签名为:x=D(y)=(3,5);检验签名(3,5)的正确性时,计算:y1=E1(x1,x2)=2,如果待验证的数据y’1=2,则接受该签名,否则拒绝该签名。 
相应的,针对上述实施例,本发明还提供了一装置实施例,包括以下模块: 
公钥生成单元,用于生成一包含有E’(x)的公钥,其中,所述E’(x)为在域F上的从(x1,...,xm)到(y1,...,yn’)的非线性映射函数组,所述E’(x)包括n’个函数,所述n’个函数中含有关于(x1,...,xm)的有理分式函数;其中,m,n’为正整数,m≥n’; 
私钥生成单元,用于生成一与所述公钥相对应的私钥; 
加解密单元,用于采用所述公钥对消息M进行编码,得到编码消息N;采用所述私钥对该编码消息N进行译码,得到译码消息L; 
或者,签名验证单元,用于采用所述私钥对消息M’进行编码,得到编码消息N’;采用所述公钥对该编码消息N’进行译码,得到译码消息L’。 
参照图3,示出了一种用于编码和译码数字消息的方法实施例2,为采用包含有理分式函数的公钥进行加解密的优选实施例。该实施例具体可以包括: 
步骤301、选择正整数m,n’,其中,m≥n’; 
步骤302、生成一包含有E’(x)的公钥,其中,所述E’(x)为在域F上的从(x1,...,xm)到(y1,...,yn’)的非线性映射函数组,所述E’(x)包括n’个函数,所述n’个函数中含有关于(x1,...,xm)的有理分式函数; 
步骤303、生成一与所述公钥相对应的私钥; 
步骤304、设置单向函数链H(w),以及单向函数链的逆函数H-1(z); 
步骤305、通过单向函数链H(w)将消息w转换为中间结果x,然后采用所述公钥对所述中间结果x进行编码,得到编码结果y;和 
步骤306、采用所述私钥对编码结果y进行译码时,先用私钥把y变换为中间结果z,然后运用单向函数链的逆函数H-1(z)将中间结果z转换为译码消息w。
上述步骤中并没有必然的先后顺序,数字排序仅仅是为了说明的方便,各步骤的顺序可以实际情况进行调整。其中,所述的“单向函数”的具体实现方法,属于公知技术,在此就不详述了。 
图3所示实施例是针对图1所示实施例的改进,由于将图1所示实施例用于加解密和可恢复的签名时,安全性能不是很高;本实施例在其基础上引入了单向函数链,用于先将原始消息进行扩张,然后再压缩,并能够满足可逆的需求,因而,能够在具有较高安全性能的情况下适用于各种加解密和数字签名的场合。 
单向函数链有两个性质: 
一是复杂性:其数学性质应理解为稠密多项式函数组: 
xj=fj(w1,...,wn), 
xj,wi∈F,1≤j≤m,1≤i≤n, 
上式作为把明文变换成密文的置换方程组的一部分,使解方程遇到巨大困难; 
二是可逆性:当m>n时,(x1,...,xm)中有一部分变元是多余的,只需要其中的n个变元就能恢复出(w1,...,wn)。例如在图5的实施例中,不使用x3,只要运用x1、x2依次计算:w2=x2-H2(x1),w1=x1-H1(w2),就能恢复出w1、w2。 
实现上述性质的基本方法是:对于i=1,2,...(其顺序可任意规定),不断把wj(j≠i),经过单向函数的变换后,加到wi上。仍以图5为例:把w2经过H1的变换后加到w1,得到x1,再把x1经过H2的变换后加到w2,得到x2,依此类推,实现多层单向函数嵌套的、可逆的单向函数链。 
从数学的角度描述本实施例的一个优选例子如下: 
设w=(w1,...,wn),x=(x1,...,xm),y=(y1,...,yn),wi,xj,yk∈F,正整数m>n=n’;设置一个单向函数链,即设置一个由w到x的映射函数:x=H(w);该H(w)是用若干个单向函数来实现的、可逆的非线性变换; 
当运用公钥E’(x)来进行加密的数据处理时: 
首先运用H(w)把明文w扩张为中间结果x,即计算:x=H(w); 
然后运用公钥E’(x)把x压缩为密文y,即计算:y=E’(x)。
采用图1所示实施例中的公钥生成方法完全是可行的,但是优选的,本实施例可以通过以下步骤得到公钥和私钥: 
步骤a、选择正整数n,其中,m≥n≥n’; 
步骤b、设置接口函数R(x),其用于根据(x1,...,xm)得到n个关于(x1,...,xm)的函数:u0(x)=(u01(x1,...,xm),...,u0n(x1,...,xm))=R(x); 
其中,最简单的R(x)为:对于m=n,把(x1,...,xm)转换为(x1,...,xn)的恒等变换。 
在本步骤中,接口函数R(x)的功能可以理解为:把计算单向函数链x=H(w)而得到的m个变量(x1,...,xm),转换为n个关于(x1,...,xm)的函数,从而实现单向函数链H(w)与公钥E’(x)的结合,并把经过单向函数链扩张后的中间结果再缩小回来。它的数学描述通常很简单,例如图5中,对于m=3,n=2,把x1,x2,x3三个变量,转换为两个多项式:u01=x1+e3x3,u02=x2。R(x)的信息,包括u01、u02的函数形式和系数e3的数值,均属于非授权用户不应知道的秘密信息。当然,本领域技术人员可以依据R(x)的特性,设计出很多种模式,在此无法一一详述。 
R(x)本身并不具有可逆性,但结合H(w)的知识它就可逆了。即虽然不能仅从u01、u02的值z1、z2来恢复x1、x2、x3,但是借助于完全公开的H(w)的知识“x3=H3(x2)”,以及隐藏在E(x)中的R(x)的秘密参数e3,可计算出:x1=z1-e3x3=z1-e3H3(z2),x2=z2。 
步骤c、选取s+1个域F上的n元可逆线性变换T=(T1,...,Ts+1),其中,每个Ti包括n个域F上的关于(α1,...,αn)的n元线性多项式; 
步骤d、选取s个域F上的n元可逆非线性变换G=(G1,...,Gs),其中,每个Gi包括n个域F上的关于(α1,...,αn)的函数; 
其中,所述的函数可以包括多项式、有理分式等各种函数类型,因为可以通过步骤e采用各种预置合成规则后,得到有理分式函数即可。 
步骤e、依据预置规则,合成所述u0(x)、T和G,得到从x到y的非线性映射函数组:(y1,...,yn)=E(x)=(E1(x1,...,xm),...,En(x1,...,xm)); 
合成所述u0(x)、T和G的目的,在于将R(x)、T和G的有关信息嵌入并隐藏在公钥中,这些信息均属于非授权用户不应知道的秘密信息。为了达到隐 藏目的,采用各种预置合成规则都是可行的。把u0(x)、T和G从E’(x)中分离出来非常困难,需要交替运用因式分解(factorization,主要针对“乘法”)和函数分解(decomposition,主要针对“迭代”)来分析隐藏在该有理分式不定方程组内部的多层嵌套结构。 
步骤f、选取E(x)中的n’个函数作为E’(x),得到公钥;其中,E’(x)中含有关于(x1,...,xm)的有理分式函数;E’(x)=(E1(x1,...,xm),...,En’(x1,...,xm));把公钥向全体用户公开; 
当m>n=n’,即步骤f中的选取并不删除函数,而选取E(x)中所有的函数作为E’(x)。此时本实施例可以用于加解密和数字签名等各种情况。 
当m>n>n’,即步骤f中采用了舍弃一部分函数的方法,此时本实施例可以用于数字签名的情况。 
当m=n=n’,此时的安全性能较差;当m=n>n’,此时本实施例可以用于数字签名的情况。进一步,如果本实施例中优选采用接口函数R(x)实现把m个变元,转换成n个多项式,则可以保证m>n。当然,如果依据实际情况需要m=n,则本领域技术人员可以根据各种现有技术得到,在此就不再详述。 
步骤g、生成T的逆函数T-1;生成G的逆函数G-1;由T-1和G-1计算得到D(y);生成私钥,所述私钥包括R(x)和D(y),把该私钥发给授权用户秘密保存。 
上述步骤e中所述的预置规则,可以由本领域技术人员根据实际情况进行设置,只要能保证得到的E’(x)中含有关于(x1,...,xm)的有理分式函数即可。 
优选的,所述预置规则可以为以下两种情况: 
把函数组u0(x)代入到T1,把T1代入到G1,把G1代入到T2,把T2代入到G2,...,把Tj代入到Gj,...,把Ts代入到Gs,把Gs代入到Ts+1; 
或者,把函数组u0(x)代入到T1,把T1代入到G1,把G1代入到T2,把T2代入到G2,...,把Tj代入到Gj,...,把Ts代入到Gs。 
对于上述两种可能的方式而言,当最后为线性变换Ts+1时,所得到的有理分式的公钥,其每个有理分式的分母多项式是相同的;当最后为非线性变换Gs时,其公钥中每个有理分式的分母多项式通常都不同。对于工程应用,默认相同的分母,可以节省公钥存储空间(只要存储n+1个,而不是2n个多项 式),提高运算速度(只要计算n+1个,而不是2n个多项式的值)。 
相应的,针对上述实施例,本发明还提供了一装置实施例,包括以下模块: 
公钥生成单元,用于生成一包含有E’(x)的公钥,其中,所述E’(x)为在域F上的从(x1,...,xm)到(y1,...,yn’)的非线性映射函数组,所述E’(x)包括n’个函数,所述n’个函数中含有关于(x1,...,xm)的有理分式函数;其中,m,n’为正整数,m≥n’; 
私钥生成单元,用于生成一与所述公钥相对应的私钥; 
单向函数链确定单元,用于设置单向函数链H(w),以及单向函数链的逆函数H-1(z); 
加密单元,用于通过单向函数链H(w)将消息w转换为中间结果x,然后采用所述公钥对所述中间结果x进行编码,得到编码结果y;和 
解密单元,用于采用所述私钥将编码结果y变换为中间结果z,然后运用单向函数链的逆函数H-1(z)将中间结果z转换为译码消息w。 
参见图4,示出了一种用于数字签名的方法实施例,由于核心思想与图3所示实施例基本相似,所以没有详述,请参见前述相关部分即可。 
本实施例可以包括: 
步骤401、选择正整数m,n’,其中,m≥n’; 
步骤402、生成一包含有E’(x)的公钥,其中,所述E’(x)为在域F上的从(x1,...,xm)到(y1,...,yn’)的非线性映射函数组,所述E’(x)包括n’个函数,所述n’个函数中含有关于(x1,...,xm)的有理分式函数; 
步骤403、生成一与所述公钥相对应的私钥; 
步骤404、设置单向函数链H(w),以及单向函数链的逆函数H-1(z); 
步骤405、采用所述私钥对待签名的消息y”进行计算,得到中间结果z,然后通过单向函数链的逆函数H-1(z)将中间结果z转换为数字签名w;和 
步骤406、通过单向函数链H(w)将数字签名w转换为中间结果x,然后采用所述公钥对所述中间结果x进行译码,得到译码结果y; 
步骤407、比较译码结果y和待验证的消息y’,根据比较结果确定数字签名w是否正确。
采用图1所示实施例中的公钥生成方法完全是可行的,但是优选的,本实施例也可以通过图3所示实施例中的公钥和私钥生成步骤,此处不再重复。 
从数学的角度描述本实施例的一个优选例子如下: 
设w=(w1,...,wn),x=(x1,...,xm),y=(y1,...,yn),y’=(y’1,...,y’n),wi,xj,yk,y’k∈F,正整数m≥n≥n’并且m>n’,y经过单向函数的数据处理;设置一个单向函数链,即设置一个由w到x的映射函数:x=H(w);该H(w)是用若干个单向函数来实现的、可逆的非线性变换; 
当运用私钥R(x)和D(y)产生数字签名时:先运用D(y)把消息y变换为中间结果z;然后运用单向函数链的逆函数H-1(z)把z变换为数字签名w,计算H-1(z)时需要使用R(x)的参数。 
当运用公钥E’(x)验证数字签名时:先运用H(w)把数字签名w扩张为中间结果x,即计算:x=H(w);然后运用公钥E’(x)把x压缩为编码结果:(y1,...,yn’)=E’(x);如果该编码结果与待验证的数据相同,即(y1,...,yn’)=(y’1,...,y’n’),则w是y’的签名,否则w不是y’的签名。 
下面对图3和图4所示实施例的详细实现过程举例进行描述,其中,直接将E’(x)作为公钥。可以简单描述为:先用单向函数链H(w)把w扩张为x,再用公钥E’(x)把x压缩为y,或压缩为y中的一部分(y1,...,yn’)。详细步骤如下: 
第一步、建立单向函数链H(w) 
首先,设置密码算法的结构。例如设F为有限域Fp,p为素数,正整数m≥n≥n’并且m>n’。设w=(w1,...,wn),x=(x1,...,xm),y=(y1,...,yn),z=(z1,...,zn),wi,xi,yi,zi∈F。 
建立单向函数链:x=H(w),其运用若干个单向函数H1(.),...,HL(.)的组合运算,把w转换为x,该H(w)是一个足够复杂的、可逆的非线性变换; 
建立接口函数R(x):u0(x)=(u01(x1,...,xm),...,u0n(x1,...,xm))=R(x),其把x转换为n个关于x1,...,xm的函数; 
由H(w)、R(x)推导出单向函数链的逆:w=H-1(z),其满足: 
w=H-1(z)=H-1(u0(x))=H-1(R(H(w)));
把H(w)作为公开的密码算法的一部分,把R(x)作为私钥的一部分,计算H-1(z)需要使用R(x)。 
第二步、建立密码参数T、G 
随机选择s+1个F上的n元线性变换T,其中,每个n元线性变换Ti由n个F上的关于α1,...,αn的n元线性多项式组成: 
T=(T1,...,Ts+1),其中: 
Ti=(Ti11,...,αn),...,Tin1,...,αn)), 
βj=Tij1,...,αn)=bij0+bij1α1+bij2α2+...+bijnαn, 
αj,βj,bijk∈F,1≤i≤s+1,1≤j≤n,0≤k≤n; 
然后,推导出T的逆函数T-1,即分别推导出上述的s+1个n元线性变换的逆变换,其中,每个逆变换
Figure S071A0307920070628D000221
由n个F上的关于β1,...,βn的n元线性多项式组成: 
T-1=(T1 -1,...,Ts+1 -1),其中: 
T i - 1 = ( T i 1 - 1 ( β 1 , . . . , β n ) , . . . , T in - 1 ( β 1 , . . . , β n ) ) ,
αj=Tij -11,...,βn)=cij0+cij1β1+cij2β2+...+cijnβn, 
αj,βj,cijk∈F,1≤i≤s+1,1≤j≤n,0≤k≤n; 
随机选择s个F上的n元可逆非线性变换G,每个n元可逆非线性变换Gi由n个F上的关于α1,...,αn的函数组成: 
G=(G1,...,Gs),其中: 
Gi=(Gi11,...,αn),...,Gin1,...,αn)), 
β j = G ij ( α 1 , . . . , α n ) = Σ k 1 , . . . , k n k 1 + . . . + k n ≤ l ij 1 t ij 1 , k 1 . . . k n α 1 k 1 . . . α n k n Σ k 1 , . . . , k n k 1 + . . . + k n ≤ l ij 0 t ij 0 , k 1 . . . k n α 1 k 1 . . . α n k n ,
αj,βj ∈F,1≤i≤s,1≤j≤n,lij0≥0,lij1≥0; 
然后,推导出G的逆函数G-1,即分别推导出上述的s个n元可逆非线性变换的逆变换,其中,每个逆变换
Figure S071A0307920070628D000226
由n个F上的关于β1,...,βn的函数组成: 
G-1=(G1 -1,...,Gs -1),其中:
G i - 1 = ( G i 1 - 1 ( β 1 , . . . , β n ) , G in - 1 ( β 1 , . . . , β n ) ) ,
α j = G ij - 1 ( β 1 , . . . , β n ) = Σ k 1 , . . . , k n k 1 + . . . + k n ≤ l ij 1 ′ g ij 1 , k 1 . . . k n β 1 k 1 . . . β n k n Σ k 1 , . . . , k n k 1 + . . . + k n ≤ l ij 0 ′ g ij 0 , k 1 . . . k n β 1 k 1 . . . β n k n ,
αj,βj g ij 1 , k 1 . . . k n ∈ F ,1≤i≤s,1≤j≤n,  l ij 0 ′ ≥ 0 , l ij 1 ′ ≥ 0 ;
所述的T、T-1、G、G-1的具体实现方法均为公知技术,在此不进行详述。 
第三步、把函数组u0(x)、T、G合成为E(x),建立公钥E’(x) 
把所述的u0(x)、T、G合成为F上的m个输入、n个输出的非线性变换: 
E(x)=Ts+1(Gs(Ts(...Gj(Tj(...G2(T2(G1(T1(u0(x)))))...))...))), 
即把函数组u0(x)代入到T1,把T1代入到G1,把G1代入到T2,把T2代入到G2,…,把Tj代入到Gj,…,把Ts代入到Gs,把Gs代入到Ts+1。在合成过程中也可以不使用线性变换Ts+1。把E(x)展开、化简后,得到n个F上的m元函数: 
y j = E j ( x 1 , . . . , x m ) = Σ k 1 , . . . , k m k 1 + . . . + k m ≤ π j 1 a j 1 , k 1 . . . k m x 1 k 1 . . . x m k m Σ k 1 , . . . , k m k 1 + . . . + k m ≤ π j 0 a j 0 , k 1 . . . k m x 1 k 1 . . . x m k m ,
xi,yj
Figure S071A0307920070628D000238
a j 1 , k 1 . . . k m ∈ F ,1≤i≤m,1≤j≤n,πj0≥0,πj1≥0; 
并且在π10,π20,...,πn’0中至少有一个πj0≥1,即它们之中至少有一个是有理分式。 
把E’(x)规定为E(x)中的n’个函数 
E , ( x ) = ( E 1 ( x 1 , . . . , x m ) , . . . , E n , ( x 1 , . . . , x m ) ) ⊆ E ( x ) ,
则:(y1,...,yn’)=E’(x)是F上的关于x1,...,xm的m元不定方程组; 
把E’(x)作为公钥。 
第四步、把T-1、G-1合成为D(y),建立私钥{D(y),R(x)} 
把T-1、G-1合成为F上的n个输入、n个输出的变换,其由n个关于y1,...,yn的n元函数组成:
D(y)=(D1(y1,...,yn),...,Dn(y1,...,yn)), 
该D(y)可以采用各种函数表示形式:既可用展开、化简之后的n个函数式来表示,也可直接用T-1、G-1来表示,还可用其它函数形式来表示; 
把{D(y),R(x)}作为私钥; 
第五步、进行加密与解密、数字签名与验证 
设经过单向函数变换以后的被签名的数据为y=(y1,...,yn)、待验证的数据为y’=(y’1,...,y’n); 
若n=n’,即E’(x)=E(x)时,本发明既能实现加密,也能实现可恢复数据的签名,其方法为: 
运用公钥E’(x)进行加密或验证数字签名时,把明文w、或数字签名w,转换成密文y、或数据y,其计算方法为:y=E’(x)=E’(H(w)),如果y=y’,则接受签名,否则拒绝签名; 
运用私钥{D(y),R(x)}进行解密或产生数字签名时,把密文y、或数据y,转换成明文w、或数字签名w,其计算方法为:w=H-1(z)=H-1(D(y));若n>n’,即  E , ( x ) ⋐ E ( x ) 时,本发明只能实现不可恢复数据的签名,不能实现加密,其方法为: 
运用私钥{D(y),R(x)}产生数字签名时,把数据y,转换成数字签名w,其计算方法为:w=H-1(z)=H-1(D(y)); 
运用公钥E’(x)验证数字签名时,其计算方法为:(y1,...,yn’)=E’(x)=E’(H(w)),如果(y1,...,yn’)=(y’1,...,y’n’),则接受签名,否则拒绝签名。 
下面介绍一些上述具体实现过程中的诀窍性知识: 
优选的建立T的方法是:随机设置由s+1个Fp上n阶可逆方阵组成的方阵组A={A1,...,As+1},其逆为A-1={A1 -1,...,As+1 -1},以及由s+1个Fp上n阶向量组成的向量组B={B1,...,Bs+1};其线性变换和逆变换为:vi=Aiui-1+Bi,ui-1=Ai -1(vi-Bi),i=0,...,s。这种“线性变换”,对于有理分式中的多项式来说,当分式的加法需要通分时,将使该多项式的次数增加,应理解为一种非线性变换。 
优选的建立G的方法是:预先建立一个足够大的函数库;以后在需要时,从该库中随机抽取若干个简单函数,按照一定规则组合成复杂的加解密函数。
其中,优选的建立函数库的方法是:选择若干种不同类型的、其自变量数目不超过n、并对于其最后一个自变量可逆的、Fp上的多项式函数或有理分式函数,按其自变量数目划分成n个类 
S={S1,...,Sn},其中: 
Si={β=G(ij)1,...,αi),αi=G(ij) -11,...,αi-1,β),j=1,2,...}, 
αi,β∈Fp,i=1,...,n, 
上式中的G(ij)、G(ij) -1表示自变量数目为i、在Si中的编号为j的一对互逆的函数。例如:对于i=1,在该函数库中S1至少可建立两条记录(设参数t1,t2,...∈Fp): 
G(11):β=(t1α1+t2)modp;G(11) -1:  α 1 = β - t 2 t 1 mod p ;
G(12):  β = ( t 1 α 1 + t 2 ) mod p ; G(12) -1:  α 1 = t 1 β - t 2 mod p ; . . .
对于i=2,在函数库中S2至少可建立4条记录: 
G(21):β=(t1α1α2+t2α1 2+t3α1)modp,G(21) -1:  α 2 = β - t 2 α 1 2 - t 3 α 1 t 1 α 1 mod p ;
G(22):  β = t 1 α 2 + t 2 α 1 mod p , G(22) -1:  α 2 = β α 1 - t 2 t 1 mod p ;
G(23):  β = t 1 α 1 + t 2 α 2 mod p , G(23) -1:  α 2 = t 1 α 1 + t 2 β mod p ;
G(24):  β = t 1 α 1 + t 2 α 1 α 2 mod p , G(24) -1:  α 2 = t 1 α 1 + t 2 β α 1 mod p ; . . .
建库完成后,还要分析其每种函数的性质、其若干函数的不同组合的性质、以及其最佳使用方式,制定出自动生成密码算法方案的规则和策略,并编写出实现这些规则和策略的软件。 
进一步,运用上述的函数库建立G的方法是:对于i=1,...,s,为每个i从函数库S的n个类S1,...,Sn中分别随机选出一对互逆的函数: 
G={G1,...,Gs},其中:Gi=(Gi1(1),...,Gin(n)),
G-1={G1 -1,...,Gs-1},其中:Gi -1=(Gi1(1) -1,...,Gin(n) -1), 
Gij(j),Gij(j) -1∈Sj,1≤j≤n, 
上式中的Gij(k)、Gij(k) -1分别表示其自变量数目为k、并对于其第k个自变量可逆、在G、G-1的第i个函数向量中的第j个函数。这种类型的G的优点是:在加密过程中,各函数之间是独立的,后一次计算不需要引用前一次计算的结果;但在解密过程中,后一次计算要引用前一次计算的结果,使得解密函数比加密函数复杂,即:第i层的加密函数向量Gi为: 
ui1=Gi1(1)(vi1), 
ui2=Gi2(2)(vi1,vi2), 
uin=Gi2(2)(vi1,vi2,...,vin), 
而第i层的对应的解密函数向量Gi -1的函数规模却发生了爆炸: 
vi1=Gi1(1) -1(ui1), 
vi2=Gi2(2) -1(vi1,ui2)=Gi2(2) -1(Gi1(1) -1(ui1),ui2), 
…… 
vin=Gin(n) -1(vi1,vi2,...,vi,n-1,uin
Gin(n) -1(Gi1(1) -1(ui1),Gi2(2) -1(Gi1(1) -1(ui1),ui2),...,Gi,n-1(n-1) -1(...),uin)。 
其他问题说明:当我们求有理分式的值时,可能会遇到虽然分母不是0多项式、但分母多项式作为函数的值为0、从而导致加解密发生错误。虽然其概率很小,仍应采取必要的容错或纠错措施。 
为更清楚地表述本实施例的具体实施方式,下面描述一个小数据的例子,如图5、图6所示,其中,虚框501表示采用单向函数链x=H(w)进行处理的过程,虚框502表示采用公钥E’(x)进行处理的过程;虚框601表示采用私钥z=D(y)进行处理的过程,虚框602表示采用逆函数H-1(z)及私钥的秘密参数e3进行处理的过程。 
设F为有限域Fp,p=17,n=n’=2,m=3,s=1,H1,H2,H3为3个单向函数,为便于验证,我们假定其算法为H1(α)=H2(α)=H3(α)=α3mod17,函数R(x)的参数e3=2,设置单向函数链H(w)的算法为:
x1=(w1+H1(w2))modp=(w1+w2 3)modp,x2=(w2+H2(x1))modp=(w2+x1 3)modp=(w2+(w1+w2 3)3)modp,x3=H3(x2)=x2 3modp=(w2+x1 3)3modp=(w2+(w1+w2 3)3)3modp; 
其线性变换T、T-1(用A,B表示)和非线性变换G、G-1分别为: 
A 1 = a 111 a 112 a 121 a 122 = 1 2 3 4 , A 2 = a 211 a 212 a 221 a 222 = 11 12 13 14 ,
A 1 - 1 = c 111 c 112 c 121 c 122 = a 122 a 111 a 122 - a 112 a 121 - a 112 a 111 a 122 - a 112 a 121 - a 121 a 111 a 122 - a 112 a 121 a 111 a 111 a 122 - a 112 a 121 ,
A 2 - 1 = c 211 c 212 c 221 c 222 = a 222 a 211 a 222 - a 212 a 221 - a 212 a 211 a 222 - a 212 a 221 - a 221 a 211 a 222 - a 212 a 221 a 211 a 211 a 222 - a 212 a 221 ,
B1=(b11,b12)=(1,2),B2=(b21,b22)=(5,7), 
G11(1):  u 11 = 1 v 11 mod 17 , G12(2):  u 12 = v 11 v 12 mod 17 ,
G11(1) -1 v 11 = 1 u 11 mod 17 , G12(2) -1:  v 12 = v 11 u 12 mod 17 ;
运用上述参数推导出E’(x)=E(x): 
u01=(x1+e3x3)modp,u02=x2, 
v11=(a111u01+a112u02+b11)modp, 
v12=(a121u01+a122u02+b12)modp, 
u11=(1/v11)modp, 
u12=(v11/v12)modp, 
v21=(a211u11+a212u12+b21)modp
= ( b 21 + a 211 b 11 + a 112 x 2 + a 111 ( x 1 + e 3 x 3 ) + a 212 ( b 11 + a 112 x 2 + a 111 ( x 1 + e 3 x 3 ) ) b 12 + a 122 x 2 + a 121 ( x 1 + e 3 x 3 ) ) mod p ,
v 22 = ( a 221 u 11 + a 222 u 12 + b 22 ) mod p
= ( b 22 + a 221 b 11 + a 112 x 2 + a 111 ( x 1 + e 3 x 3 ) + a 222 ( b 11 + a 112 x 2 + a 111 ( x 1 + e 3 x 3 ) ) b 12 + a 122 x 2 + a 121 ( x 1 + e 3 x 3 ) ) mod p ,
代入具体的值,推导出y=(y1,y2)=E(x)=(E1(x1,x2,x3),E2(x1,x2,x3)),其中: 
y 1 = E 1 ( x 1 , x 2 , x 3 ) = v 21
= 9 + 16 x 1 + 9 x 1 2 + 10 x 2 + 10 x 1 x 2 + x 2 2 + 15 x 3 + 2 x 1 x 3 + 3 x 2 x 3 + 2 x 3 2 12 + 13 x 1 + x 1 2 + 14 x 2 + 9 x 1 x 2 + 14 x 2 2 + 9 x 3 + 4 x 1 x 3 + x 2 x 3 + 4 x 3 2 mod 17 ,
y 2 = E 2 ( x 1 , x 2 , x 3 ) = v 22
= 1 + 6 x 1 2 + 15 x 2 + 8 x 1 x 2 + 9 x 2 2 + 7 x 1 x 3 + 16 x 2 x 3 + 7 x 3 2 12 + 13 x 1 + x 1 2 + 14 x 2 + 9 x 1 x 2 + 14 x 2 2 + 9 x 3 + 4 x 1 x 3 + x 2 x 3 + 4 x 3 2 mod 17 ;
由于n=n’=2,我们规定E’(x)=E(x)。 
然后,推导出对应的解密函数D(y): 
u11=(c211(y1-b21)+c212(y2-b22))modp, 
u12=(c221(y1-b21)+c222(y2-b22))modp, 
v11=(1/u11)modp, 
v12=(v11/u12)modp, 
u 01 = ( c 111 ( v 11 - b 11 ) + c 112 ( v 12 - b 12 ) ) mod p ,
= ( c 111 ( - b 11 + 1 c 211 ( y 1 - b 21 ) + c 212 ( y 2 - b 22 ) ) + c 112 ( - b 12 +
1 ( c 211 ( y 1 - b 21 ) + c 212 ( y 2 - b 22 ) ) ( c 221 ( y 1 - b 21 ) + c 222 ( y 2 - b 22 ) ) ) ) mod p
= ( a 122 ( - b 11 + 1 a 222 ( y 1 - b 21 ) a 211 a 222 - a 212 a 221 - a 212 ( y 2 - b 22 ) a 211 a 222 - a 212 a 221 ) a 111 a 122 - a 112 a 121 -
( a 112 ( - b 12 + 1 / ( ( - a 221 ( y 1 - b 21 ) a 211 a 222 - a 212 a 221 + a 211 ( y 2 - b 22 ) a 211 a 222 - a 212 a 221 )
( a 222 ( y 1 - b 21 ) a 211 a 222 - a 212 a 221 - a 212 ( y 2 - b 22 ) a 211 a 222 - a 212 a 221 ) ) ) ) / ( a 111 a 122 - a 112 a 121 ) ) mod p ,
u 02 = ( c 121 ( v 11 - b 11 ) + c 122 ( v 12 - b 12 ) ) mod p
= ( c 121 ( - b 11 + 1 c 211 ( y 1 - b 21 ) + c 212 ( y 2 - b 22 ) ) + c 122 ( - b 12 +
1 ( c 211 ( y 1 - b 21 ) + c 212 ( y 2 - b 22 ) ) ( c 221 ( y 1 - b 21 ) + c 222 ( y 2 - b 22 ) ) ) ) mod p
= ( - a 121 ( - b 11 + 1 a 222 ( y 1 - b 21 ) a 211 a 222 - a 212 a 221 - a 212 ( y 2 - b 22 ) a 211 a 222 - a 212 a 221 ) a 111 a 122 - a 112 a 121 +
( a 111 ( - b 12 + 1 / ( ( - a 221 ( y 1 - b 21 ) a 211 a 222 - a 212 a 221 + a 211 ( y 2 - b 22 ) a 211 a 222 - a 212 a 221 )
( a 222 ( y 1 - b 21 ) a 211 a 222 - a 212 a 221 - a 212 ( y 2 - b 22 ) a 211 a 222 - a 212 a 221 ) ) ) ) / ( a 111 a 122 - a 112 a 121 ) ) mod p ;
若D(y)采用展开后表示形式,将上式代入具体的值,推导出 
z=(z1,...,zn)=D(y)=(D1(y1,y2),D2(y1,y2)),其中: 
z 1 = D 1 ( y 1 , y 2 ) = u 01 = 15 + 10 y 1 + 2 y 2 14 + 15 y 1 + y 1 2 + 12 y 2 + 11 y 1 y 2 + 11 y 2 2 mod 17 ,
z 2 = D 2 ( y 1 , y 2 ) = u 02 = 10 + 2 y 1 + 8 y 1 2 + y 2 + 3 y 1 y 2 + 3 y 2 2 14 + 15 y 1 + y 1 2 + 12 y 2 + 11 y 1 y 2 + 11 y 2 2 mod 17 ;
显然,上述的展开后的E(x)、D(y)与展开之前的它们相比,其层次和嵌套方式等结构信息丢失了,这一性质为密码分析带来了巨大的困难;但通常D(y)的次数很高,只有在函数很简单时才能把它完全展开。 
计算单向函数链的逆H-1(z),需要使用私钥的秘密参数的e3: 
x1=(z1-e3H3(z2))modp, 
w2=z2-H2(x1)=(z2-H2(z1-e3H3(z2)))modp, 
w1=x1-H1(w2)=((z1-e3H3(z2))-H1(z2-H2(z1-e3H3(z2))))modp, 
虽然真实的单向函数是不可展开的,但按照本实施例的特殊规定: 
w2=(z2-(z1-2z2 3)3)modp, 
w1=(z1-2z2 3-(z2-(z1-2z2 3)3)3)modp; 
例如:设明文w=(7,8),x=H(w)=(9,6,12),密文y=E(x)=(3,12);z=D(y)=(16,6),恢复的明文w=H-1(z)=(7,8),这说明上述加解密算法是正确的。同理可证明签名算法的正确性。 
相应的,针对上述实施例,本发明还提供了一装置实施例,包括以下模块: 
公钥生成单元,用于生成一包含有E’(x)的公钥,其中,所述E’(x)为在域F上的从(x1,...,xm)到(y1,...,yn’)的非线性映射函数组,所述E’(x)包括n’个函数,所述n’个函数中含有关于(x1,...,xm)的有理分式函数;其中,m,n’为正整数,m≥n’; 
私钥生成单元,用于生成一与所述公钥相对应的私钥; 
单向函数链确定单元,用于设置单向函数链H(w),以及单向函数链的逆函数H-1(z); 
签名单元,用于采用所述私钥先把待签名的消息y”变换为中间结果z,然后运用单向函数链的逆函数H-1(z)将中间结果z转换为数字签名w;和 
验证单元,用于通过单向函数链H(w)将数字签名w转换为中间结果x,然后采用所述公钥对所述中间结果x进行译码,得到译码结果y;以及比较译码结果y和待验证的消息y’,根据比较结果确定数字签名w是否正确。
PKI(Public Key Infrastructure)是基于公钥密码而建立起来的网络信任技术体制。近年来,PKI建设面临重大挑战,突出表现在管理成本急剧增加。其主要原因之一是目前的公钥密码体制难以适应超大规模网络的复杂使用环境。本发明提出了一个公钥密码应对网络信任体系建设的挑战的基本对策:即采用基于身份的公钥密码编码体制。 
所谓“基于身份”,就是让公钥的内容就是用户的身份标志ID——诸如姓名、电话、Email等信息的某种组合,用这些信息本身,就能直接确定出这个公钥是属于谁的;而不再需要像PKI那样用一个公钥证书把用户的ID与这个用户的公钥绑定在一起。这种技术点的实质是“全网所有用户共用一个公钥”。“基于身份”的实现为网络环境下的公钥管理带来的好处:一是经济效益显著;二是用户容量巨大;三是实现了公钥数据与用户标识的一体化管理。 
参照图7a和图7b,示出了一种用于编码和译码数字消息的方法实施例,图7a示出了步骤流程图,图7b示出了数据流向图。该实施例采用了基于身份的技术点,具体可以包括: 
步骤701、选择正整数m,n’,r,其中,m≥n’; 
步骤702、生成一包含有E’(x,ID)的公钥,其中,所述E’(x,ID)为在域F上的从(x1,...,xm,ID1,...,IDr)到(y1,...,yn’)的非线性映射函数组,所述E’(x,ID)包括n’个函数,所述n’个函数中含有关于(x1,...,xm,ID1,...,IDr)的有理分式函数;所述ID=(ID1,...,IDr)为授权用户的身份标识; 
步骤703、针对身份标识为ID(K)的授权用户,生成一与该身份标识相对应的私钥;其中,K为用户编号; 
步骤704、采用所述公钥和ID(K),对消息M进行编码,得到编码消息N;采用所述私钥对该编码消息N进行译码,得到译码消息L; 
或者,步骤705、采用所述私钥对消息M’进行编码,得到编码消息N’;采用所述公钥和ID(K),对该编码消息N’进行译码,得到译码消息L’。 
本实施例可以通过以下步骤得到公钥和私钥: 
选择正整数n,其中,m≥n≥n’,并且m>n’; 
设置由x到y的可逆非线性映射函数组:(y1,...,yn)=E(x,ID)=(E1(x1,...,xm, ID1,...,IDr),...,En(x1,...,xm,ID1,...,IDr)); 
依据E(x,ID)的逆函数,生成私钥; 
选取E(x,ID)中的n’个函数作为E’(x,ID),得到公钥;其中,E’(x,ID)含有关于(x1,...,xm)的有理分式函数:E’(x,ID)=(E1(x1,...,xm,ID1,...,IDr),...,En’(x1,...,xm,ID1,...,IDr))。 
优选的,本实施例也可以通过以下步骤得到公钥和私钥: 
选择正整数n,其中,m≥n≥n’; 
设置接口函数R(x),其用于根据(x1,...,xm)得到n个关于(x1,...,xm)的函数:u0(x)=(u01(x1,...,xm),...,u0n(x1,...,xm))=R(x); 
选取s+1个域F上的n元可逆线性变换T=(T1,...,Ts+1),其中,每个Ti包括n个域F上的关于(α1,...,αn)的n元线性多项式; 
选取s个域F上的n元可逆非线性变换G=(G1,...,Gs),其中,每个Gi包括n个域F上的关于(α1,...,αn)的函数; 
所述T和/或G中的至少一个系数为ID的映射函数; 
依据预置规则,合成所述u0(x)、T和G,得到从x、ID到y的非线性映射函数组:(y1,...,yn)=E(x,ID)=(E1(x1,...,xm,ID1,...,IDr),...,En(x1,...,xm,ID1,...,IDr)); 
选取其中的n’个函数作为E’(x,ID),得到公钥;其中,E’(x,ID)中含有关于(x1,...,xm,ID1,...,IDr)的有理分式函数;E’(x,ID)=(E1(x1,...,xm,ID1,...,IDr),...,En,(x1,...,xm,ID1,...,IDr)); 
生成T的逆函数T-1,生成G的逆函数G-1;把授权用户的身份标识的值ID(K)代入T-1和G-1,计算出与该身份标识相关的D(y);生成与该身份标识相对应的私钥,所述私钥包括R(x)和D(y)。 
上述生成公私钥的过程,在前面实施例中已经详细描述,这里主要强调一个地方:所述T和/或G中的至少一个系数为ID的映射函数。即,在T中任一个或者多个Ti的至少一个系数为ID的映射函数;和/或,在G中任一个或者多个Gi的至少一个系数为ID的映射函数。优选的,最后一层Ti中的至少一个系数为ID的映射函数;和/或,最后一层Gi中的至少一个系数为ID的映 射函数。 
这样做的好处是:限制了公钥E’(x,ID)的函数规模。例如,E’(x,ID)仅仅是关于(ID1,...,IDr)的一次函数。反之,如果把T1中的系数规定为ID的函数,经过非线性变换后ID的次数增加,使得公钥的函数规模太大,降低实用性。 
从数学角度描述本实施例的一个优选例子如下: 
设ID为经过规定的变换以后的用户身份标识,ID=(ID1,...,IDr),r为正整数,IDi∈F;把公钥E’(x)中的系数规定为ID的映射函数,该公钥经过展开、化简、整理后可表示为F上的m+r元非线性变换: 
(y1,...,yn,)=E’(x,ID) 
=(E1(x1,...,xm,ID1,...,IDr),...,En,(x1,...,xm,ID1,...,IDr)), 
y j = E j ( x 1 , . . . , x m , ID 1 , . . . , ID r ) = Σ k 1 , . . . , k m k 1 + . . . + k m ≤ π j 1 Σ ρ 1 , . . . , ρ r ρ 1 + . . . + ρ r ≤ τ e j 1 , k 1 . . . k m , ρ 1 . . . ρ r ID 1 ρ 1 . . . ID r ρ r x 1 k 1 . . . x m k m Σ k 1 , . . . , k m k 1 + . . . + k m ≤ π j 0 Σ ρ 1 , . . . , ρ r ρ 1 + . . . + ρ r ≤ τ e j 0 , k 1 . . . k m , ρ 1 . . . ρ r ID 1 ρ 1 . . . ID r ρ r x 1 k 1 . . . x m k m ,
xi,yj,  e j 0 , k 1 . . . k m , ρ 1 . . . ρ r , e j 1 , k 1 . . . k m , ρ 1 . . . ρ r , IDk∈F, 
1≤i≤m,1≤j≤n,1≤k≤r,πj0≥0,πj1≥0,τ>0, 
并且在π10,π20,...,πn’0中至少有一个πj0≥1;把该E’(x,ID)作为公钥密码系统中全体用户共享的基于身份的公钥。 
本实施例中结合“ID映射”的目的在于:实现基于身份的公钥密码体制。下面详细描述具体实现过程的例子: 
第一步、把密码参数T、G规定为ID的函数 
设授权用户的身份标识ID=(ID1,...,IDr),r为正整数,IDi∈F;由私钥分配中心把T、G中的函数的系数,规定为ID的映射函数,从而使T、G成为ID的函数; 
第二步、把T、G合成为E(x,1D),建立公钥E’(x,ID) 
把u0(x)、T、G合成为F上的非线性变换: 
y=(y1,...,yn)=E(x,ID) 
=(E1(x1,...,xm,ID1,...,IDr),...,En(x1,...,xm,ID1,...,IDr)), 
展开、化简以后,
y j = E j ( x 1 , . . . , x m , ID 1 , . . . , ID r ) = Σ k 1 , . . . , k m k 1 + . . . + k m ≤ π j 1 Σ ρ 1 , . . . , ρ r ρ 1 + . . . + ρ r ≤ τ e j 1 , k 1 . . . k m , ρ 1 . . . ρ r ID 1 ρ 1 . . . ID r ρ r x 1 k 1 . . . x m k m Σ k 1 , . . . , k m k 1 + . . . + k m ≤ π j 0 Σ ρ 1 , . . . , ρ r ρ 1 + . . . + ρ r ≤ τ e j 0 , k 1 . . . k m , ρ 1 . . . ρ r ID 1 ρ 1 . . . ID r ρ r x 1 k 1 . . . x m k m ,
xi,yj,  e j 0 , k 1 . . . k m , ρ 1 . . . ρ r , e j 1 , k 1 . . . k m , ρ 1 . . . ρ r , IDk∈F, 
1≤i≤m,1≤j≤n,1≤k≤r,πj0≥0,πj1≥0,τ>0; 
令E’(x,ID)=(E1(x1,...,xm,ID1,...,IDr),...,En,(x1,...,xm,ID1,...,IDr)), 
E , ( x , ID ) ⊆ E ( x , ID ) ;
把E’(x,ID)作为全体用户共享的公钥,公开发布; 
第三步、把T-1、G-1合成为D(y),建立每个用户的私钥{D(y),R(x)} 
私钥分配中心把授权用户的ID代入密码参数T-1、G-1,把T-1、G-1合成为D(y),然后把{D(y),R(x)}作为私钥,发给授权用户秘密保存; 
在上述合成中,ID的微小差别,在经过一系列公式推导后,所得到的公钥和私钥将出现巨大的差别。 
第四步、进行加密与解密、数字签名与验证 
把授权用户K的身份标识ID(K),代入E’(x,ID),推导出E’K(x),再进行加密或验证数字签名的数据处理,即:y=E’K(x)=E’(x,ID(K))。 
为更清楚地表述本实施例的具体实施方式,下面描述一个小数据的例子: 
我们把前述的实施例进行局部修改:设r=1,即ID=(ID),e3=2,B1=(b11,b12)=(1,2),B2=(b21,b22)=(5+15ID+ID2,6+16ID+ID2), 
A 1 = a 111 a 112 a 121 a 122 = 1 2 3 4 , A 1 - 1 = 15 1 10 8 ,
A 2 = a 211 a 212 a 221 a 222 = 1 + 11 ID + ID 2 2 + 12 ID + ID 2 3 + 13 ID + ID 2 4 + 14 ID + ID 2 ,
A 2 - 1 = 15 + 10 ID + 8 ID 2 1 + 2 ID + ID 2 1 + 6 ID + 9 ID 2 1 + 2 ID + ID 2 10 + 15 ID + 9 ID 2 1 + 2 ID + ID 2 8 + 3 ID + 8 ID 2 1 + 2 ID + ID 2 ,
运用上述推导出E(x)的类似方法,计算出全体用户共享的公钥为: 
E’(x,ID)=E(x,ID)=(E1(x1,x2,x3,ID),E2(x1,x2,x3,ID)),其中: 
y1=E1(x1,x2,x3,ID) 
=((16+10ID+13ID2+5x1+10IDx1+9ID2x1+2IDx1 2+7ID2x1 2+6x2+14IDx2+11ID2x2+8x1x2+15IDx1x2+16ID2x1x2+16x2 2+5IDx2 2+4ID2x2 2+10x3+3IDx3+ID2x3+8IDx1x3+11ID2x1x3+16x2x3+13IDx2x3+15ID2x2x3+8IDx3 2+11ID2x3 2)/(12+13x1+x1 2+14x2+9x1x2+14x2 2+9x3+4x1x3+x2x3+4x3 2))mod17, 
y2=E2(x1,x2,x3,ID) 
=((13+7ID+13ID2+10x1+15IDx1+9ID2x1+13x1 2+15IDx1 2+7ID2x1 2+14x2+5IDx2+11ID2x2+14x1x2+4IDx1x2+16ID2x1x2+10x2 2+16IDx2 2+4ID2x2 2+3x3+13IDx3+ID2x3+x1x3+9IDx1x3+11ID2x1x3+11x2x3+8IDx2x3+15ID2x2x3+x3 2+9IDx3 2+11ID2x3 2)/(12+13x1+x1 2+14x2+9x1x2+14x2 2+9x3+4x1x3+x2x3+4x3 2))mod17; 
私钥分配中心为各个授权用户建立私钥,例如,对于ID=6的用户,把ID的值代入有关的密码参数: 
B2=(b21,b22)=(5+15ID+ID2,6+16ID+ID2)=(12,2), 
A 2 - 1 = 15 + 10 ID + 8 ID 2 1 + 2 ID + ID 2 1 + 6 ID + 9 ID 2 1 + 2 ID + ID 2 10 + 15 ID + 9 ID 2 1 + 2 ID + ID 2 8 + 3 ID + 8 ID 2 1 + 2 ID + ID 2 = 14 15 9 13 ,
然后推导出该用户的私钥D(y)为: 
z 1 = D 1 ( y 1 , y 2 ) = 2 + 12 y 1 + 6 y 2 9 + 2 y 1 + y 1 2 + 13 y 2 + 4 y 1 y 2 + 6 y 2 2 mod 17 ,
z 2 = D 2 ( y 1 , y 2 ) = 8 + 7 y 1 + 8 y 1 2 + 6 y 2 + 15 y 1 y 2 + 14 y 2 2 9 + 2 y 1 + y 1 2 + 13 y 2 + 4 y 1 y 2 + 6 y 2 2 mod 17 ;
例如:设明文w=(7,8),x=H(w)=(9,6,12),密文y=E(x,ID)=(4,9);
z=D(y)=(16,6),恢复的明文w=H-1(z)=(7,8),说明上述加解密算法是正确的。同理可证明签名算法的正确性。 
相应的,针对上述实施例,本发明还提供了一装置实施例,包括以下模块: 
公钥生成单元,用于生成一包含有E’(x,ID)的公钥,其中,所述E’(x,ID)为在域F上的从(x1,...,xm,ID1,...,IDr)到(y1,...,yn’)的非线性映射函数组,所述E’(x,ID)包括n’个函数,所述n’个函数中含有关于(x1,...,xm,ID1,...,IDr)的有理分式函数;所述ID=(ID1,...,IDr)为授权用户的身份标识;其中,m,n’,r为正整数,m≥n’; 
私钥生成单元,用于针对身份标识为ID(K)的授权用户,生成一与该身份标识相对应的私钥; 
加解密单元,用于采用所述公钥和ID(K),对消息M进行编码,得到编码消息N;采用所述私钥对该编码消息N进行译码,得到译码消息L; 
或者,签名验证单元,用于采用所述私钥对消息M’进行编码,得到编码消息N’;采用所述公钥和ID(K),对该编码消息N’进行译码,得到译码消息L’。 
下面介绍一些上述实施例具体实现过程中的诀窍性知识。 
如何使得公钥中ID的次数比较低、私钥中的等价的ID的次数非常高: 
(1)在加密的最后一层密码参数(例如Gs中的系数)中注入ID的映射,对于推导解密函数的推导过程来说,相当于在第一层就注入了ID的映射,经过后面的多层非线性变换,使解密函数中的ID的次数得到放大。 
(2)使用比较大的n,在解密时依次计算vi1,...,vin的过程中,由于vi,j-1要参与vij的运算,使得解密函数的ID的次数被串行放大。 
(3)采用其非线性次数保持不变的非线性变换,例如把Gj设置为: 
u jk = G jk ( v j 1 , . . . , v jn ) = t jk 0 + t jk 1 v j 1 + . . . + t jkn v jn t j 00 + t j 01 v j 1 + . . . + t j 0 n v jn mod p ,
tjkl,tj0l∈Fp,ujk,vjk∈Fp(x1,...,xm),k=1,...,n, 
然后由Gj推导出
Figure S071A0307920070628D000362
。例如,对于n=2,  G j - 1 = ( G j 1 - 1 , G j 2 - 1 ) 为: 
v j 1 = - t j 12 t j 20 + t j 10 t j 22 - t j 22 t j 00 u j 1 + t j 20 t j 02 u j 1 + t j 12 t j 00 u j 2 - t j 10 t j 02 u j 2 t j 12 t j 21 - t j 11 t j 22 + t j 22 t j 01 u j 1 - t j 21 t j 02 u j 1 - t j 12 t j 01 u j 2 + t j 11 t j 02 u j 2 mod p
v j 2 = t j 11 t j 20 - t j 10 t j 21 + t j 21 t j 00 u j 1 - t j 20 t j 01 u j 1 - t j 11 t j 00 u j 2 + t j 10 t j 01 u j 2 t j 12 t j 21 - t j 11 t j 22 + t j 22 t j 01 u j 1 - t j 21 t j 02 u j 1 - t j 12 t j 01 u j 2 + t j 11 t j 02 u j 2 mod p
显然,若把上述加密过程中的系数tjkl规定为ID的映射函数,则解密过程ID的次数是加密过程中ID的次数的n倍,而y的次数却保持不变。 
进一步,本实施例还可以结合单向函数链的技术点,即还包括设置单向函数链H(w),以及单向函数链的逆函数H-1(z)的步骤;则,本实施例中具体的编译码步骤就可以优化为: 
针对加解密的情形,可以为:通过单向函数链H(w)将原始消息转换为中间结果消息M,采用所述公钥和ID(K),对消息M进行编码,得到编码消息N;以及,采用所述私钥对该编码消息N进行译码,得到译码消息L,通过单向函数链的逆函数H-1(z)将中间结果消息L转换为最终译码结果; 
针对签名的情形,可以为:采用所述私钥对消息M’进行编码,得到中间结果z,通过单向函数链的逆函数H-1(z)将中间结果z转换为数字签名消息N’;以及,通过单向函数链H(w)将数字签名消息N’转换为中间结果x,采用所述公钥和ID(K),对该中间结果x进行译码,得到译码消息L’。 
由于关于单向函数链的技术点,在前面已经详细描述,故在此不再赘述。 
进一步,本实施例中建立私钥的方法可以优化如下,包括以下子步骤: 
子步骤a、由T-1和G-1计算得到D(y),并且,所述D(y)与ID相关; 
子步骤b、将所述D(y)分为至少两个部分,保存在至少两个私钥分配中心,每个部分都与ID相关; 
子步骤c、各私钥分配中心把授权用户标识ID(K)代入各自秘密保存的那部分D(y),计算出私钥的一部分,发送给该用户; 
子步骤d、该用户将各部分的私钥合成,计算得到私钥。 
从数学角度对上述过程的一个例子描述如下(如图8所示): 
(1)、由网络中唯一的一个一级私钥分配中心KDC11建立公钥E’(x,ID),并建立对应于E’(x,ID)的私钥生成函数: 
z=(z1,...,zn)=D(y,d1,d2,...) 
=(D1(y1,...,yn,d1,d2,...),...,Dn(y1,...,yn,d1,d2,...)), 
该函数中的变元d1,d2,...是ID的映射函数:d1=f1(ID),d2=f2(ID),...;
(2)、KDC11按照约定的方法,把D(y,d1,d2,...)分离成h个部分:{D(1)(y,d1,d2,...),...,D(h)(y,d1,d2,...)},分别发给h个二级私钥分配中心,即对于1≤j≤h,把D(j)(y,d1,d2,...)发给KDC2j秘密保存;并把f1(ID),f2(ID),...,发给所有的二级私钥分配中心秘密保存;其中,所述的“把D(y,d1,d2,...)分离成h个部分”的具体实现方法,属于公知技术。 
(3)、在为某个授权用户K建立私钥时,KDC21,...,KDC2h分别先把该授权用户K的身份标识ID(K)的值,代入到ID的映射函数f1(ID),f2(ID),...,计算出d1,d2,...的值;再把d1,d2,...的值代入到KDC21,...,KDC2h各自秘密保存的D(j)(y,d1,d2,...),计算出DK (j)(y),然后分别把DK (j)(y)发给该用户。 
(4)、授权用户K从KDC21,...,KDC2h分别领取DK (1)(y),...,DK (h)(y),按照约定的方法,还原为该用户的完整的私钥DK(y)。 
采用多个私钥分配中心合成私钥的技术点,是为了保证即使是私钥分配中心的内部人员,也无法窃取用户的私钥。为更清楚地表述具体实施方式,下面描述一个小数据的例子: 
在前述的实施例中,设A1,B1中的元素是数,A2,B2中的元素是ID的映射,G中没有参数,则私钥生成函数为 
z=(z1,z2)=D(y,A2,B2)=(D1(y,A2,B2),D2(y,A2,B2)),其中: 
z1=D1(y1,y2,a211,a212,a221,a222,b21,b22
=((a212 2a221 2+15a211a212a221a222+a211 2a222 2+2a212a221 2b21+15a211a221a222b21+15a211a212a221b22+2a211 2a222b22+15a212a221 2y1+2a211a221a222y1+2a211a212a221y2-2a211 2a222y2)/(16a221a222b21 2+a212a221b21b22+a211a222b21b22+16a211a212b22 2+2a221a222b21y1+16a212a221b22y1+16a211a222b22y1+16a221a 222y1 2+16a212a221b21y2+16a211a222b21y2+2a211a212b22y2+a212a221y1y2+a211a222y1y2+16a211a212y2 2))mod17 
z2=D2(y1,y2,a211,a212,a221,a222,b21,b22
=((a212 2a221 2+15a211a212a221a222+a211 2a222 2+3a212a221 2b21+14a211a221a222b21+16a221a222b21 2+14a211a212a221b22+3a 211 2a222b22+a212a221b21b22+a211a222b21b22+16a211a212b22 2+14a212a221 2y1+3a211a221a222y1+2a221a222b21y1+16a212a221b22y1+16a211a222b22y1+16a221a222y1 2+3a211a212a221y2+14a211 2a222y2+ 16a212a221b21y2+16a211a222b21y2+2a211a212b22y2+a212a221y1y2+a211a222y1y2+16a211a212y2 2)/(2a221a222b21 2+15a212a221b21b22+15a211a222b21b22+2a211a212b22 2+13a221a222b21y1+2a212a221b22y1+2a211a222b22y1+2a221a222y1 2+2a212a221b21y2+2a 211a222b21y2+13a211a212b22y2+15a212a221y1y2+15a211a222y1y2+2a211a212y2 2))mod17 
设h=2,把D(y,A2,B2)分解成2部分,例如可以规定为: 
D(1)(y,A2,B2)=D(y,A2,B2)中的两个分子多项式, 
D(2)(y,A2,B2)=D(y,A2,B2)中的两个分母多项式。 
KDC11把上述的D(1)(y,A2,B2)发给KDC21,把D(2)(y,A2,B2)发给KDC22,同时把ID对于d1,d2,...的映射函数,以及R(x),也发给它们。 
为某个授权用户建立私钥时,KDC21、KDC22分别先把该用户的ID代入映射函数,计算出a211,a212,a221,a222,b21,b22,再把它们分别代入: 
D(1)(y,a211,a212,a221,a222,b21,b22),D(2)(y,a211,a212,a221,a222,b21,b22),计算出D(1)(y)、D(2)(y),然后分别发送给该用户; 
授权用户从KDC21、KDC22分别领取D(1)(y)、D(2)(y),然后按照规定的方法还原为D(y)。 
上述方案中:各KDC2i并不是由于管理制度和计算能力的制约、而是由于缺少信息,而无法窃取到用户的私钥;而掌握全部秘密的KDC11平时处于关闭封存状态,不直接参与建立私钥。建议KDC11在建立私钥生成函数时,对有关变量(例如a211,a212,a221,a222,b21,b22)重新命名,可达到更好的效果。 
为了实现私钥形态的个性化,本实施例还可以进一步包括步骤:在生成私钥的过程中,插入随机变换W()以及逆W-1()。 
从数学角度对的私钥形态个性化描述如下: 
在合成私钥D(y)的过程中,插入随机变换W()以及逆W-1(): 
D(y)=Db(Da(y))=Db(W-1(W(Da(y))))=D’b(D’a(y)), 
其中D’a()=W(Da()),D’b()=Db(W-1()),把W()、W-1()分别从D’a()、D’b()中分解出来是困难的。W()、W-1()的具体实现方法属于公知技术。 
总之,实现私钥形态个性化的基本构思是:在推导D(y)的过程中插入随机 变换,以掩盖D(y)与ID之间的相关性,并把R(x)隐藏起来;从而使得:对于不同用户的私钥D(y),不仅其数学性质不同,而且其函数的表达形式还受到了两种相互独立的因素——来自ID和随机变换——的双重控制,有效地提高了抗合谋攻击能力。 
为更清楚地表述具体实施方式,下面描述一个小数据的例子(如图9所示):在T1 -1、R-1之间插入随机线性变换W1()、W1 -1(),在G1 -1、T2 -1之间插入随机线性变换W2()、W2 -1(),其具体步骤如下: 
第一步,计算: 
u’1j=Du’1j(y1,...,y8),1≤j≤8,它们均为8元有理分式,其分子、分母均为线性多项式,分母相同。 
第二步,依次计算: 
v11=Dv11(u’11,...,u’18),其为8元2次有理分式; 
v12=Dv12(u’11,...,u’18v 11),其为9元2次有理分式; 
v13=Dv13(u’11,...,u’18v 11v 12),其为10元2次有理分式; 
v14=Dv14(u’11,...,u’18v 11v 12v 13),其为11元2次有理分式; 
v15=Dv15(u’11,...,u’18v 11,...,v 14),其为12元2次有理分式; 
v16=Dv16(u’11,...,u’18v 11,...,v 15),其为13元2次有理分式; 
v17=Dv17(u’11,...,u’18v 11,...,v 16),其为14元2次有理分式; 
v18=Dv18(u’11,...,u’18v 11,...,v 17),其为15元2次有理分式; 
上述的v 11,...,v 17:在推导公式时,代入v1j的变元符号;在进行解密计算时,代入v1j的值。 
第三步,计算: 
z’j=Dz,j(v11,...,v18),1≤j≤8,其为8元线性多项式; 
第四步,依次计算: 
xj=Dxj(z’1,...,z’8),j=7,8,其为8元线性多项式; 
(x9,x10,x11,x12)=K2(x7,x8),其为一组单向函数的组合; 
xj=Dxj(z’1,...,z’8,x9,x10,x11,x12),1≤j≤6,其为12元线性多项式; 
(w1,...,w8)=K1 -1(x1,...,x8),其为一组单向函数的组合。 
其中,(z1,...,z6)作为一组中间结果隐藏在第四步的计算过程中,可理解为 私钥中的R(x)的参数也隐藏在个性化的私钥中,对授权用户保密。 
当采用“多个私钥分配中心联合建立用户私钥”时,应使各个二级私钥分配中心都使用相同的Wi()、
Figure S071A0307920070628D000411
下面从工程应用的角度,进一步理解密码算法的定量设计,对本发明进行更详尽的分析。参照图10,设n=n’=8,m=12,s=2: 
(1)根据允许的加解密出错概率,设置足够大的p。 
(2)设置合适的单向函数链,例如其K2部分把四个单向函数的功能合并在一个单向函数中。 
(3)设置n、m、T、G应考虑以下因素: 
不定方程组E’(x)=(y1,...,yn’)的解集的元素数量约为pm-n’,应大于264。 
设δ是E’(x)关于x的次数,则一个m元δ次多项式的项的数量为  C m + δ δ = ( m + δ ) ! m ! δ ! , 其反映了公钥的存储空间和加密速度,应尽量小。 
设λ是D(y)关于y的次数,则一个n元λ次多项式的项的数量为
Figure S071A0307920070628D000413
其反映了运用线性攻击法破译私钥的困难性,应尽量大。实施线性攻击的条件是已知函数z=u0=R(x),能大批量地随机产生(z、y)对。 
在基于身份方式下,设τ是E’(x,ID)关于ID1,...,IDr的次数,则一个m+r元δ+τ次多项式的项的数量为
Figure S071A0307920070628D000414
其反映了公钥的存储空间和加密速度,应尽量小。 
在基于身份方式下,为了隐藏ID的映射函数,可把建立D(y)的推导过程划分成若干段: 
D(y)=Dk(...Db(Da(y))...), 
并把Da(),Db(),...,Dk()分别展开;由于ID映射到Da(y),因此该Da(y)的每个系数等价于一个关于ID的r元μ次多项式,该多项式的项的数量为应使其远大于攻击者收集大量私钥的操作能力。 
设p为32比特,n=8,m=12,s=2,G1为: 
G11:u11=(t111v11+t112)modp, 
G11 -1:  v 11 = u 11 - t 112 t 111 mod p ,
G1j:  u 1 j = ( t 1 j 1 v 1 , j - 1 v 1 j + Σ 1 ≤ k ≤ h ≤ j - 1 γ 1 jkh v k v h + Σ k = 1 j - 1 ρ 1 jk v k + ϵ 1 j ) mod p , j=2,...,8, 
G1j -1:  v 1 j = u 1 j - Σ 1 ≤ k ≤ h ≤ j - 1 γ 1 jkh v k v h - Σ k = 1 j - 1 ρ 1 jk v k - ϵ 1 j t 1 j 1 v 1 , j - 1 mod p , j=2,...,8, 
其中,参数t1jk、γ1jkh、ρ1jk、ε1j为二次有理分式中的系数; 
G2采用如前所述的“其非线性次数保持不变的非线性变换”: 
G 2 j : u 2 j = t 2 j 0 + t 2 j 1 v 21 + . . . + t 2 j 8 v 28 t 200 + t 201 v 21 + . . . + t 208 v 28 mod p , j=1,...,8 
G 2 j - 1 : v 2 j = g 2 j 0 + g 2 j 1 u 21 + . . . + g 2 j 8 u 28 g 200 + g 201 u 21 + . . . + g 208 u 28 mod p , j=1,...,8 
其中,G2 -1中的系数gijk,应理解为是关于G2中的系数t200,...,t288的8次函数;设G2是ID的1次函数,则G2 -1是ID的8次函数。 
上述方案的有关技术指标和加解密步骤如下: 
pm-n≈232(12-8)=2128;  C m + δ δ = C 12 + 2 2 = 91 , 即E(x)总共有91×9=819个项(8个相同的分母多项式,应算作为1个多项式);但在基于身份方式下,设τ=1,r=4,  C m + δ δ C r + τ τ = C 12 + 2 2 C 4 + 1 1 = 455 , 即E’(x,ID)共有455×9=4095个项。其加密步骤为: 
第一步,计算x=H(w): 
(x1,...,x8)=K1(w1,...,w8),其为一组单向函数的组合; 
(x9,x10,x11,x12)=K2(w7,w8),其为一组单向函数的组合; 
第二步,计算E’(x,ID): 
yj=Ej(x1,...,x12,ID1,...,ID4),1≤j≤8,其为16元3次有理分式。D(y)关于y的次数λ=255,  C n + λ λ = C 8 + 255 255 = 509850594887712 , 即在已知R(x)的条件下进行线性攻击所需要的存储空间为: 
( C 8 + 255 255 ) 2 = 259947629107353817789888594944 > 2 64 ;
在基于身份方式下,假设Da(y)关于y的次数为4,则μ=4×8=32,完成合谋攻击需要收集的私钥数量  C r + μ μ = C 4 + 32 32 = 58905 。提高该指标的主要方法是增加r。例如,当r由4增加到10时,  C m + δ δ C r + τ τ = C 12 + 2 2 C 10 + 1 1 = 1001 , 即E’(x,ID)的函 数规模仅由4095个项增加到1001×9=9009个项,但其抗合谋攻击的指标
Figure S071A0307920070628D000431
却由58905增加到  C 10 + 32 32 = 1471442973 , 增加了24979.9倍,相当于:若对我国的有14亿人口的公民身份证公钥密码系统进行合谋攻击,至少需要收买14亿7千万个私钥,显然失去了进行合谋攻击的意义。 
当然:即使Da(y)关于y的次数为4,其函数规模仍然很大。为此,优选的,建议采用前述的“私钥形态个性化”技术点。 
采用前述的优选实施例,通过运用ID映射的方法,建立基于身份的工作方式,使得全网所有用户共用一个公钥,为网络环境下的公钥管理带来了极大的方便;以及通过运用“多个私钥分配中心合成私钥”和“私钥形态个性化”的方法,提高密码系统的抗合谋攻击能力。 
本说明书中的各个实施例均基于同一技术构思,所以在描述时重点说明的都是该实施例的独特之处,各个实施例之间相同相似的部分互相参见即可。并且,对于系统实施例而言,由于其基本相应于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。 
以上对本发明所提供的一种用于编码和译码数字消息的方法和系统,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (16)

1.一种用于编码和译码数字消息的方法,其特征在于,包括:
选择正整数m,n’,其中,m≥n’,xm、yn’是域F中的元素,(x1,...,xm)、(y1,...,yn’)均为由域F中的元素所组成的向量;
选择正整数n,其中,m≥n≥n’,并且m>n,xm、yn是域F中的元素,x=(x1,...,xm),y=(y1,...,yn)均为由域F中的元素所组成的向量;
设置由x到y的可逆非线性映射函数组:(y1,...,yn)=E(x)=(E1(x1,...,xm),...,En(x1,...,xm));
依据E(x)的逆函数,生成私钥;
选取E(x)中的n’个函数作为E’(x),得到公钥;其中,E’(x)含有关于(x1,...,xm)的有理分式函数:E’(x)=(E1(x1,...,xm),...,En’(x1,...,xm));
当用于加解密过程时,m>n=n’;
采用所述公钥对消息M进行编码,得到编码消息N;采用所述私钥对该编码消息N进行译码,得到译码消息L;
或者,采用所述私钥对消息M’进行编码,得到编码消息N’;采用所述公钥对该编码消息N’进行译码,得到译码消息L’。
2.一种用于编码和译码数字消息的方法,其特征在于,包括:
选择正整数m,n’,其中,m≥n’,xm、yn’是域F中的元素,(x1,...,xm)、(y1,...,yn’)均为由域F中的元素所组成的向量;
生成一包含有E’(x)的公钥,其中,所述E’(x)为在域F上的从(x1,...,xm)到(y1,...,yn’)的非线性映射函数组,所述E’(x)包括n’个函数,所述n’个函数中含有关于(x1,...,xm)的有理分式函数;
生成一与所述公钥相对应的私钥;
设置单向函数链H(w),以及单向函数链的逆函数H-1(z);
通过单向函数链H(w)将消息w转换为中间结果x,然后采用所述公钥对所述中间结果x进行编码,得到编码结果y;和
采用所述私钥将编码结果y变换为中间结果z,然后运用单向函数链的逆函数H-1(z)将中间结果z转换为译码消息w。
3.如权利要求2所述的方法,其特征在于,通过以下步骤得到公钥和私钥:
选择正整数n,其中,m>n=n’,αn是域F中的元素,(α1,...,αn)是由域F中的元素所组成的向量;
设置接口函数R(x),其用于根据(x1,...,xm)得到n个关于(x1,...,xm)的函数:u0(x)=(u01(x1,...,xm),...,u0n(x1,...,xm))=R(x);
选取s+1个域F上的n元可逆线性变换T=(T1,...,Ts+1),其中,每个Ti包括n个域F上的关于(α1,...,αn)的n元线性多项式;
选取s个域F上的n元可逆非线性变换G=(G1,...,Gs),其中,每个Gi包括n个域F上的关于(α1,...,αn)的函数;
依据预置规则,合成所述u0(x)、T和G,得到从x到y的非线性映射函数组:(y1,...,yn)=E(x)=(E1(x1,...,xm),...,En(x1,...,xm));
选取E(x)中的n’个函数作为E’(x),得到公钥;其中,E’(x)中含有关于(x1,...,xm)的有理分式函数;E’(x)=(E1(x1,...,xm),...,En’(x1,...,xm));
生成T的逆函数T-1;生成G的逆函数G-1;由T-1和G-1计算得到E(x)的逆函数D(y);生成私钥,所述私钥包括R(x)和D(y);所述私钥中的R(x)用于同单向函数链的逆函数H-1(z)一起将中间结果z转换为译码消息w。
4.如权利要求3所述的方法,其特征在于,所述预置规则为:
把函数组u0(x)代入到T1,把T1代入到G1,把G1代入到T2,把T2代入到G2,...,把Tj代入到Gj,...,把Ts代入到Gs,把Gs代入到Ts+1
或者,把函数组u0(x)代入到T1,把T1代入到G1,把G1代入到T2,把T2代入到G2,...,把Tj代入到Gj,...,把Ts代入到Gs
5.一种用于数字签名的方法,其特征在于,包括:
选择正整数m,n’,其中,m≥n’,xm、yn’是域F中的元素,(x1,...,xm)、(y1,...,yn’)均为由域F中的元素所组成的向量;
生成一包含有E’(x)的公钥,其中,所述E’(x)为在域F上的从(x1,...,xm)到(y1,...,yn’)的非线性映射函数组,所述E’(x)包括n’个函数,所述n’个函数中含有关于(x1,...,xm)的有理分式函数;
生成一与所述公钥相对应的私钥;
设置单向函数链H(w),以及单向函数链的逆函数H-1(z);
采用所述私钥先把待签名的消息y”变换为中间结果z,然后运用单向函数链的逆函数H-1(z)将中间结果z转换为数字签名w;和
通过单向函数链H(w)将数字签名w转换为中间结果x,然后采用所述公钥对所述中间结果x进行译码,得到译码结果y;
比较译码结果y和待验证的消息y’,根据比较结果确定数字签名w是否正确。
6.如权利要求5所述的方法,其特征在于,通过以下步骤得到公钥和私钥:
选择正整数n,其中,m>n≥n’,αn是域F中的元素,(α1,...,αn)是由域F中的元素所组成的向量;
设置接口函数R(x),其用于根据(x1,...,xm)得到n个关于(x1,...,xm)的函数:u0(x)=(u01(x1,...,xm),...,u0n(x1,...,xm))=R(x);
选取s+1个域F上的n元可逆线性变换T=(T1,...,Ts+1),其中,每个Ti包括n个域F上的关于(α1,...,αn)的n元线性多项式;
选取s个域F上的n元可逆非线性变换G=(G1,...,Gs),其中,每个Gi包括n个域F上的关于(α1,...,αn)的函数;
依据预置规则,合成所述u0(x)、T和G,得到从x到y的非线性映射函数组:(y1,...,yn)=E(x)=(E1(x1,...,xm),...,En(x1,...,xm));
选取E(x)中的n’个函数作为E’(x),得到公钥;其中,E’(x)中含有关于(x1,...,xm)的有理分式函数;E’(x)=(E1(x1,...,xm),...,En’(x1,...,xm));
生成T的逆函数T-1;生成G的逆函数G-1;由T-1和G-1计算得到E(x)的逆函数D(y);生成私钥,所述私钥包括R(x)和D(y);所述私钥中的R(x)用于同单向函数链的逆函数H-1(z)一起将中间结果z转换为数字签名w。
7.一种用于编码和译码数字消息的方法,其特征在于,包括:
选择正整数m,n’,r,其中,m≥n’,xm、yn’、IDr是域F中的元素(x1,...,xm,ID1,...,IDr)、(y1,...,yn’)均为由域F中的元素所组成的向量;
选择正整数n,其中,m>n≥n’,xm、yn、αn是域F中的元素,(α1,...,αn)、x=(x1,...,xm)、y=(y1,...,yn)是由域F中的元素所组成的向量;
设置接口函数R(x),其用于根据(x1,...,xm)得到n个关于(x1,...,xm)的函数:u0(x)=(u01(x1,...,xm),...,u0n(x1,...,xm))=R(x);
选取s+1个域F上的n元可逆线性变换T=(T1,...,Ts+1),其中,每个Ti包括n个域F上的关于(α1,...,αn)的n元线性多项式;
选取s个域F上的n元可逆非线性变换G=(G1,...,Gs),其中,每个Gi包括n个域F上的关于(α1,...,αn)的函数;
所述T和/或G中的至少一个系数为ID的映射函数;
依据预置规则,合成所述u0(x)、T和G,得到从x、ID到y的非线性映射函数组:(y1,...,yn)=E(x,ID)=(E1(x1,...,xm,ID1,...,IDr),...,En(x1,...,xm,ID1,...,IDr));
选取E(x,ID)中的n’个函数作为E’(x,ID),得到公钥;其中,E’(x,ID)中含有关于(x1,...,xm,ID1,...,IDr)的有理分式函数;E’(x,ID)=(E1(x1,...,xm,ID1,...,IDr),...,En’(x1,...,xm,ID1,...,IDr));
生成T的逆函数T-1,生成G的逆函数G-1;把授权用户的身份标识的值代入T-1和G-1,计算出与该身份标识相关的E(x,ID)的逆函数D(y);生成与该身份标识相对应的私钥,所述私钥包括R(x)和D(y);
采用所述公钥和ID(K),对消息M进行编码,得到编码消息N;采用所述私钥对该编码消息N进行译码,得到译码消息L;
或者,采用所述私钥对消息M’进行编码,得到编码消息N’;采用所述公钥和ID(K),对该编码消息N’进行译码,得到译码消息L’。
8.如权利要求7所述的方法,其特征在于:
选择正整数n,其中,m≥n≥n’,并且m>n’,xm、yn是域F中的元素,x=(x1,...,xm)、y=(y1,...,yn)均为由域F中的元素所组成的向量;
设置由x到y的可逆非线性映射函数组:(y1,...,yn)=E(x,ID)=(E1(x1,...,xm,ID1,...,IDr),...,En(x1,...,xm,ID1,...,IDr));
依据E(x,ID)的逆函数,生成私钥;
选取E(x,ID)中的n’个函数作为E’(x,ID),得到公钥;其中,E’(x)含有关于(x1,...,xm)的有理分式函数:E’(x,ID)=(E1(x1,...,xm,ID1,...,IDr),...,En’(x1,...,xm,ID1,...,IDr));
当用于加解密过程时,m>n=n’。
9.如权利要求7所述的方法,其特征在于,通过以下步骤建立私钥:
计算得到D(y),所述D(y)与ID相关;
将所述D(y)分为至少两个部分,保存在至少两个私钥分配中心,每个部分都与ID相关;
各私钥分配中心根据授权用户的ID计算得到私钥的一部分,发送给该用户;
该用户将私钥的各个部分合成,计算得到私钥。
10.如权利要求7所述的方法,其特征在于,
还包括设置单向函数链H(w),以及单向函数链的逆函数H-1(z)的步骤;
则,具体的编译码步骤优化为:
通过单向函数链H(w)将原始消息转换为中间结果消息M,采用所述公钥和ID(K),对消息M进行编码,得到编码消息N;以及,采用所述私钥对该编码消息N进行译码,得到译码消息L,通过单向函数链的逆函数H-1(z)以及私钥将中间结果消息L转换为最终译码结果;
或者,采用所述私钥对消息M’进行编码,得到中间结果z,通过单向函数链的逆函数H-1(z)以及私钥将中间结果z转换为数字签名消息N’;以及,通过单向函数链H(w)将数字签名消息N’转换为中间结果x,采用所述公钥和ID(K),对该中间结果x进行译码,得到译码消息L’。
11.一种用于编码和译码数字消息的系统,其特征在于,包括:
公钥生成单元,用于生成一包含有E’(x)的公钥,其中,xm、yn是域F中的元素,(x1,...,xm)、(y1,...,yn’)均为由域F中的元素所组成的向量,所述E’(x)为在域F上的从(x1,...,xm)到(y1,...,yn’)的非线性映射函数组,所述E’(x)包括n’个函数,所述n’个函数中含有关于(x1,...,xm)的有理分式函数;其中,m,n’为正整数,m≥n’;
私钥生成单元,用于生成一与所述公钥相对应的私钥;
加解密单元,用于采用所述公钥对消息M进行编码,得到编码消息N;采用所述私钥对该编码消息N进行译码,得到译码消息L;
或者,签名验证单元,用于采用所述私钥对消息M’进行编码,得到编码消息N’;采用所述公钥对该编码消息N’进行译码,得到译码消息L’。
12.一种用于编码和译码数字消息的系统,其特征在于,包括:
选择正整数m,n’,其中,m≥n’,xm、ym’是域F中的元素,(x1,...,xm)、(y1,...,yn’)均为由域F中的元素所组成的向量;
公钥生成单元,用于生成一包含有E’(x)的公钥,其中,所述E’(x)为在域F上的从(x1,...,xm)到(y1,...,yn’)的非线性映射函数组,所述E’(x)包括n’个函数,所述n’个函数中含有关于(x1,...,xm)的有理分式函数;其中,m,n’为正整数,m≥n’;
私钥生成单元,用于生成一与所述公钥相对应的私钥;
单向函数链确定单元,用于设置单向函数链H(w),以及单向函数链的逆函数H-1(z);
加密单元,用于通过单向函数链H(w)将消息w转换为中间结果x,然后采用所述公钥对所述中间结果x进行编码,得到编码结果y;和
解密单元,用于采用所述私钥将编码结果y变换为中间结果z,然后运用单向函数链的逆函数H-1(z)将中间结果z转换为译码消息w。
13.一种用于数字签名的系统,其特征在于,包括:
选择正整数m,n’,其中,m≥n’,xm、yn’是域F中的元素,(x1,...,xm)、(y1,...,yn’)均为由域F中的元素所组成的向量;
公钥生成单元,用于生成一包含有E’(x)的公钥,其中,所述E’(x)为在域F上的从(x1,...,xm)到(y1,...,yn’)的非线性映射函数组,所述E’(x)包括n’个函数,所述n’个函数中含有关于(x1,...,xm)的有理分式函数;其中,m,n’为正整数,m≥n’;
私钥生成单元,用于生成一与所述公钥相对应的私钥;
单向函数链确定单元,用于设置单向函数链H(w),以及单向函数链的逆函数H-1(z);
签名单元,用于采用所述私钥先把待签名的消息y”变换为中间结果z,然后运用单向函数链的逆函数H-1(z)将中间结果z转换为数字签名w;和
验证单元,用于通过单向函数链H(w)将数字签名w转换为中间结果x,然后采用所述公钥对所述中间结果x进行译码,得到译码结果y;以及,比较译码结果y和待验证的消息y’,根据比较结果确定数字签名w是否正确。
14.一种用于编码和译码数字消息的系统,其特征在于,包括:
选择正整数m,n’,r,m≥n,xm、yn’、IDr是域F中的元素,(x1,...,xm,ID1,...,IDr)、(y1,...,yn’)均为由域F中的元素所组成的向量;
公钥生成单元,用于生成一包含有E’(x,ID)的公钥,其中,所述E’(x,ID)为在域F上的从(x1,...,xm,ID1,...,IDr)到(y1,...,yn’)的非线性映射函数组,所述E’(x,ID)包括n’个函数,所述n’个函数中含有关于(x1,...,xm,ID1,...,IDr)的有理分式函数;所述ID=(ID1,...,IDr)为授权用户的身份标识;;
私钥生成单元,用于针对身份标识为ID(K)的授权用户,生成一与该身份标识相对应的私钥;
加解密单元,用于采用所述公钥和ID(K),对消息M进行编码,得到编码消息N;采用所述私钥对该编码消息N进行译码,得到译码消息L;
或者,签名验证单元,用于采用所述私钥对消息M’进行编码,得到编码消息N’;采用所述公钥和ID(K),对该编码消息N’进行译码,得到译码消息L’。
15.一种用于数字签名的方法,其特征在于,包括:
选择正整数m,n’,n,其中,m=n>n’,xm、yn’是域F中的元素,(x1,...,xm)、(y1,...,yn’)均为由域F中的元素所组成的向量;
设置由x到y的可逆非线性映射函数组:(y1,...,yn)=E(x)=(E1(x1,...,xm),...,En(x1,...,xm));
依据E(x)的逆函数,生成私钥;
选取E(x)中的n’个函数作为E’(x),得到公钥;其中,E’(x)含有关于(x1,...,xm)的有理分式函数:E’(x)=(E1(x1,...,xm),...,En’(x1,...,xm));
采用所述私钥对消息M’进行编码,得到编码消息N’;采用所述公钥对该编码消息N’进行译码,得到译码消息L’。
16.一种用于数字签名的系统,其特征在于,包括:
函数组确定单元,用于设置由x到y的可逆非线性映射函数组:(y1,...,yn)=E(x)=(E1(x1,...,xm),...,En(x1,...,xm));
私钥生成单元,用于依据E(x)的逆函数,生成私钥;
公钥生成单元,用于选取E(x)中的n’个函数作为E’(x),得到公钥;其中,E’(x)含有关于(x1,...,xm)的有理分式函数:E’(x)=(E1(x1,...,xm),...,En’(x1,...,xm));其中,m,n’,n为正整数,m=n>n’;
签名验证单元,用于采用所述私钥对消息M’进行编码,得到编码消息N’;采用所述公钥对该编码消息N’进行译码,得到译码消息L’。
CN 200710100307 2007-06-07 2007-06-07 一种用于编码和译码数字消息的方法和系统 Expired - Fee Related CN101321059B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN 200710100307 CN101321059B (zh) 2007-06-07 2007-06-07 一种用于编码和译码数字消息的方法和系统
PCT/CN2007/070263 WO2008148274A1 (fr) 2007-06-07 2007-07-10 Procédé et système de codage et de décodage de message numérique

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 200710100307 CN101321059B (zh) 2007-06-07 2007-06-07 一种用于编码和译码数字消息的方法和系统

Publications (2)

Publication Number Publication Date
CN101321059A CN101321059A (zh) 2008-12-10
CN101321059B true CN101321059B (zh) 2011-02-16

Family

ID=40093146

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 200710100307 Expired - Fee Related CN101321059B (zh) 2007-06-07 2007-06-07 一种用于编码和译码数字消息的方法和系统

Country Status (2)

Country Link
CN (1) CN101321059B (zh)
WO (1) WO2008148274A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3434000B1 (en) * 2016-05-20 2020-09-16 Huawei Technologies Co., Ltd. Method for flexible sparse code multiple access codebook design, transmission and detection
US10020839B2 (en) * 2016-11-14 2018-07-10 Rampart Communications, LLC Reliable orthogonal spreading codes in wireless communications
US10965352B1 (en) 2019-09-24 2021-03-30 Rampart Communications, Inc. Communication system and methods using very large multiple-in multiple-out (MIMO) antenna systems with extremely large class of fast unitary transformations

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006046187A1 (en) * 2004-10-28 2006-05-04 Koninklijke Philips Electronics N.V. Method and system for obfuscating a cryptographic function
CN1832403A (zh) * 2006-04-24 2006-09-13 北京易恒信认证科技有限公司 Cpk可信认证系统

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DK1049289T3 (da) * 1999-04-29 2005-02-14 Cp8 Technologies Offentlig nögle underskriftfremgangsmåde og -systemer
CN1870499B (zh) * 2005-01-11 2012-01-04 丁津泰 产生新的多变量公钥密码系统的方法
WO2007057610A1 (fr) * 2005-11-18 2007-05-24 France Telecom Systeme et procede cryptographique d'authentification ou de signature

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006046187A1 (en) * 2004-10-28 2006-05-04 Koninklijke Philips Electronics N.V. Method and system for obfuscating a cryptographic function
CN1832403A (zh) * 2006-04-24 2006-09-13 北京易恒信认证科技有限公司 Cpk可信认证系统

Also Published As

Publication number Publication date
WO2008148274A1 (fr) 2008-12-11
CN101321059A (zh) 2008-12-10

Similar Documents

Publication Publication Date Title
CN101374043B (zh) 密钥协商的方法、加/解密的方法及签名/验证的方法
CN103414569B (zh) 一种建立抗攻击的公钥密码的方法
US8744075B2 (en) Quantum public key encryption system
CN101321058B (zh) 一种用于编码和译码数字消息的方法和系统
CN101938463A (zh) 安全地评估对加密信号施加的函数的方法
Abusukhon et al. A hybrid network security algorithm based on Diffie Hellman and Text-to-Image Encryption algorithm
CN106941407A (zh) 一种平台数据动态加密的方法和装置
CN103780382A (zh) 一种基于超球面的多变量公钥加密/解密系统及方法
Gafsi et al. High securing cryptography system for digital image transmission
JP2011147047A (ja) プロキシ再暗号化システム、送信装置、再暗号化鍵生成装置、プロキシ装置、受信装置、プロキシ再暗号化方法、それらのプログラムおよび記録媒体
CN111865555B (zh) 一种基于k-Lin假设的同态加密方法
CN103346875A (zh) 混沌保密通信系统中数字混沌密码的产生方法
CN107147486A (zh) 一种基于动态变长码的平台数据加密方法和装置
WO2014030706A1 (ja) 暗号化データベースシステム、クライアント装置およびサーバ、暗号化データ加算方法およびプログラム
CN113141247A (zh) 一种同态加密方法、装置、系统及可读存储介质
Bhardwaj et al. Study of different cryptographic technique and challenges in future
CN101321060B (zh) 一种用于编码和译码数字消息的方法和系统
CN101321059B (zh) 一种用于编码和译码数字消息的方法和系统
CN104919753B (zh) 解密服务提供装置、处理装置、安全性评价装置、程序以及记录介质
HS et al. Comparative study and performance analysis of encryption in RSA, ECC and Goldwasser-Micali cryptosystems
CN101582170A (zh) 一种基于椭圆曲线密码体制的遥感图像加密方法
CN103220130A (zh) 数字混沌保密通信的加密及解密方法
CN108494556A (zh) 一种高效的rsa算法加密元数据文件的方法
Murugan An efficient algorithm on quantum computing with quantum key distribution for secure communication
CN107276759A (zh) 一种高效的门限加密方案

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20110216

Termination date: 20130607