基于互素序列和杠杆函数的多变量公钥加密方法

文档序号:7891068阅读:95来源:国知局
专利名称:基于互素序列和杠杆函数的多变量公钥加密方法
基于互素序列和杠杆函数的多变量公钥加密方法(一) 技术领域公开密钥加密方法(简称公钥加密方法或公钥加密方案)属于密码技术和计算机技术领域, 是信息安全和可信计算的核心技术之一。(二) 背景技术密码技术的发展经历了古典密码技术、对称密码技术和公钥密码技术三个阶段。1976年, 美国学者Diffie和Hellman提出公钥密码的思想,标志着公钥密码技术的来临。目前,普遍 使用的公钥加密技术有RSA、Rabin和ElGamal等方案(参见《应用密码学》,美国Bruce Schneier 著,吴世忠、祝世雄等译,机械工业出版社,2000年1月,第334-342页)。为了缩短参数长 度,ElGamal方案常在椭圆曲线上模拟实现,此时,它被称为ECC方案。另外,我国学者陶 仁骥曾提出了FAPKC1方案(参见《计算机学报》,19S5(U), pp.401-409)。RSA、 Rabm和ElGamal等方案均是美国人发明的。它们的安全性基于大数问题难于求解 的性质,即在有限的时间和资源内,对大数进行因式分解或求离散对数几乎是不可能的。这 是一种渐近安全。随着计算机运行速度的提高,它们的安全参数已变得越来越大,极大地降 低了加解密的效率。特别是将来量子计算机的出现,使得大数因式分解和离散对数求解可以 在多项式时间内进行。此外, 一些学者在经过分析之后指出FAPKC1也是不安全的。(三) 发明内容本发明是对"REESSE1公钥密码体制"(《计算机工程与科学》,2003(10), pp.l3-16)中加密方案的一个革新,但是,两者的某些数学概念仍然是类似的。本发明用于计算机和通信网络中字符、文字、图形、图象和声音等各种数据与文件的加 密和解密,以确保数据、文件内容的保密存储与传输,可广泛应用于电子商务、电子金融和 电子政务中。本发明希望我们国家在公钥加密领域能够拥有自己的核心技术,以确保国家的信息安全、 经济安全和主权安全,同时提高我国防范金融和税务欺诈的技术手段。木节内容略去了对有关性质和结论的证明,如果需要补上,我们将立即呈交。3.1两个基本概念3.1.1互素序列的定义与性质定义如果A、爿2、…、^是"个两两不同的整数,满足VA、 4P付带z'",或者gcd(A,4)=1;或者gcd(A, 4)^1,但对任意&^'、j', (A/gcd(A, 4)"A且CVgcd",' 4)"A, 那么,这些整数被称为互素序列,记为{為,乂2,…,乂 },简记为{4}。注意,在本文中,我们仅要求每个^>0,且VA、4附带W/,有gcd(A, ^)=1。 性质对于任意正整数w^n,如果从互素序列{4}中随机选取w个元素,并构造子集 A2,…,J;cm},那么互素子集积,x2| x…被唯一地确定,即从G到^4;q, Jx2,…,^cj的映射是一对一的。 这里,MW、 w巧i、…、M^l等表示数的绝对值。 证明略。3.1.2杠杆函数设".)是由整数到整数的单射函数,其定义域为{1, 2,…,m},值域为{5, 6,…,Af-1}, 这里A/为模数。
在"REESSE1公钥密码体制"一文中,我们论述了当从公钥推导私钥时,需考虑"(W的 全排列数"!,这意味着,当"足够大时,穷举K(W的全排列在多项式时间内是不可行的;但 从私钥恢复明文或进行数字签名时只需考虑K(W的累加和,使得解密或签名在关于n的多项 式时间内可行。因此,{《0}是在"公开"一端计算量大,在"私有"一端计算量小。故我们称具 有上述特征的".)为杠杆函数。注意在本文中,(A》是序列《A、爿2、…、爿 }的简写,(C,)是序列《d、 C2、…、CJ的 简写。{,(0}是"个杠杆函数值{《1)、《(2)、…、€(")}的简写。乘法运算"J x B"简写成'M5"。 "mod"代表求余。"gcd"代表最大公约数。"代表赋值。 代表两边对M求余相等。3.2本发明的技术方案本发明是一种基于非均匀超递增序列的公钥加密方法,简称REESSEl+加密方法,根据 该方法,可制造公钥加密、解密芯片、或开发公钥加密、解密软件等。因此,本发明是一种 生产公钥加密解密产品所必须遵循的基本原理与技术方案,而不是物理产品本身。本技术方案,由密钥生成、加密和解密等三部分组成。 3.2.1公钥加密与解密操作本文中,把加密之前的文件或数据叫明文,加密之后的文件或数据叫密文。假设用户V欲通过网络向用户U发送一个文件或数据,且以保密的方式进行。用户V与 用户U欲实现这么一个保密通信过程,其模式如下密钥生成首先,用户U应该去第3方权威机构(CA认证中心或数字证书中心)领取一 对由密钥生成部件输出的私钥(PnvateKey)与公钥(PublicKey),私钥必须由用户U自己保管, 不得泄密;公钥则允许以公钥证书的形式向外界公开发放,以便于使用。加密操作用户V从CA认证中心获得用户U的公钥证书,在运行加密部件的机器上对 欲发送的明文进行加密,得到密文,并通过网络把密文传送给用户U。解密操作用户U接收到用户V发送来的密文后,在运行解密部件的机器上用自己的私 钥对密文进行解密,恢复出明文。在公钥加密方法中,为了提高加密的效率,通常采用混合密码技术,即用对称密码体制 来加密明文,再用公钥密码体制来加密对称密钥。对称密码体制所使用的加密密钥与解密密 钥本质上是同一个密钥,被称为会话密钥。3.2.2密钥生成部分令明文分组或对称密钥的长度为"、序列长度为巧=3" / 2 (即序列的3个项对应到分组的 2个比特)、A为本方法中的最大素数。应该选取适当的A以至M不是太大。密钥生成部分供CA认证中心使用,用来产生一对私钥和公钥,其实现方法是(1) 随机生成一个奇互素序列{為,乂2,…,^}、且(XA^Aj(2) 找到一个素整数M满^〉n^A、且不是太大(3) 选择正整数巧< <5<^使得§03(& M- 1) = 1(4) 随机选择正整数『<^,计算『—1(5) 顺序划分{5, 6,…,巧+ 4}为巧/3个单元,赋任意空闲单元的一排列到 {"3_; —2),《3_7-1),€(3》},踏=1, 2,…,巧/3(6) 计算C,+ (A『"'YmodM,对/=1, 2,…,巧,结束最后,以(《C,)、 iW)为公钥,以({^,}、『—、& M)为私钥,"(0}可以丢弃。3.2.3加密部分加密部分供发送方使用,用来对明文进行加密。发送方为获得加密密钥即接收方公钥, 须从CA认证中心取得接收方的公钥证书。假设GC,)、 M)是公钥,6^2…6,,是M比特的明文分组。则加密部分的实现方法是 (1) 置<5<~ 1, 1(2) 若62, —^2,:01,则。<~ C C3, —2modM,否则 若&2,——1&2,= 10,则。<~ 。dmodM,否则 若62,-.^2, = 11,则。<~ 。C3, —。modAf(3) 令!<~!+1,若/2"/2,转至(2)'否则结束 最后,密文。被得到。注意,62, —^2,代表两个相邻的比特,下面同样。3.2.4解密部分序列《A)可以被顺序划分为巧/ 3 = n / 2单元。每个单元包含3个元素,其中存在一个最大 数。假设n/2个最大项分别是4、 J2、…、J /2。 事先,计算c^=nU,,对^=1, 2,…,"/2并存储A、 。2、 、 C^/2到私钥的位置。解密部分供接收方使用,用来对密文进行解密。接收方以自己的私钥作为解密密钥。假设({為}、『—、& M)是私钥,C 是密文。则解密部分的实现方法是(1) 计算。仨。1/<JmodA/(2) 重复(5<~ d『—'modM直到(5为奇数且(^S。"/2 .(3) 置6^2…6" — 0, G<~ d, !<~"/2, 7<~0(4) 若^43,力IG,贝1」62, —^2, — 3—j禾口 G — G/爿3卜" 否贝1^—;十1,且若/^2,转至(4)(5) 令z — z - 1 ,若Q 1且l < G《。,,则/ <~ 0并转至(4)(6) 若G^1,则转至(2),否则结束最后,h62…&将是原始的明文分组或对称密钥。显然,只要C 是一个真正的密文,该解密方案总能够正常终止。3.2.5解密的正确性因为(S:, 0是一个阿贝尔群,即交换群,所以,VA:e[l,1],有『*『"三1 (modM)。令^2…^是一个"比特的明文分组。从3.2.3节知(5三n" C,'(modM),其中C,三(modM)。 令^三Z乙"'》,(mod M — 1)' G三EI 二爿广'(modM)。 那么,我们需要证明Y三G(。/oM). 证明根据3.2.4节,<formula>formula see original document page 7</formula>)。上述证明过程也给出了寻找G的方法。注意,在实际应用中,明文分组6^2…^是事先不知道的,因此,我们不能直接计算yt。 然而,因为A: e (5,1;!,《①范围是非常狭窄的,我们可以通过乘『—1 modA/来试探性地搜索 A:,并验证G在被(A)中的某些项整除后是否等于1。不难理解,当条件G-1被满足的同时, 原始的明文6^2…^亦被求出。3.3优点和积极效果 3.3.1安全性较高可以用归约法证明C, = (Af"'Y(modM)和。三n乙(modM)是比离散对数问题更困 难的,因此,从公钥推导私钥、或从密文破译明文在多项式时间内是不可行的。另外,由于5e(巧,M)是相当大的,因此,企图利用连分式方法攻击私钥也是不可行的。 其实可以分析知,只要^2巧就能使得连分式方法攻击失效。而且,问题C,三(A『"'y (modM)和。三n乙C,' (modM)在量子图灵机上也很可能是多项 式时间内无解的。这预示着本方案具有远大的应用潜力。3.3.2模数长度较短通过计算不难发现,当明文分组长度"=80、 96、 112、 128时,模数M的比特长度可以 分别为320、 384、 448、 512,相对来说,是较短的。3.3.3运算速度较快本方法的加密操作只需做最多"/2个模乘运算,通过比较发现它比流行的RSA、 ECC 方案要快许多倍。解密操作需要0("2)个模乘运算,也比同等安全程度的RSA方案要快上许 多倍。3.3.4技术可以公开本发明的实现技术完全可以公开,用户的公钥(Public Key)也可以完全向外界公开发放。 只要私钥(Private Key)不泄密,就可以完全保证密文的安全。3.3.4对国家安全有利互联网是一种开放网,显而易见,在上面传输的各种信息必须进行加密。.由于我国政府、国防、金融、税务等重要部门业已使用互联网作为通信工具,因此,信 息安全关系到国家主权安全和经济安全。从密码制衡的角度来讲, 一个泱泱大国的信息安全不能建立在外来的密码方案基础之上, 因此,研究我们完全自主的、原始创新的公钥加密与数字签名方案显得势在必行、刻不容缓 和具有重大意义。
具体实施方式
该公钥加密方法的特点是它能够让每一用户得到两个密钥, 一个 密钥可以公开,用于加密, 一个密钥只能私人拥有,用于解密。这样,就不会担心密钥在网 上传递过程中泄密了。当约定通信者在网上传输信息时,发送者使用接收者的公钥对文件或 消息进行加密,接收者收到密文后使用自己的私钥对其进行解密。每个用户可以到指定的CA(Certificate Authentication)认证中心取得两个密钥。CA认证中 心是对用户进行登记、对密钥进行产生、分发和管理的一个机构。它利用3.2.2节的密钥生成 方法产生用户的公钥与私钥。本加密方法可以用逻辑电路芯片或程序语言来实现,它包括两部分(1)根据密钥生成方 法开发出芯片或程序,由CA认证中心使用;(2)根据3.2.3、 3.2.4节的加密与解密方法开发 出芯片或程序,由一般用户使用。
权利要求
1、基于互素序列和杠杆函数的多变量公钥加密方法,由密钥生成、加密和解密三个部分组成,密钥生成部分供第3方权威机构产生用户的一对私钥和公钥,加密部分供发送方使用接收方的公钥把明文转换为密文,解密部分供接收方使用自己的私钥把密文还原成明文,其特征在于·密钥生成部分采用了下列步骤(1)随机生成一个奇互素序列<math-cwu><![CDATA[<math> <mrow><mo>{</mo><msub> <mi>A</mi> <mn>1</mn></msub><mo>,</mo><msub> <mi>A</mi> <mn>2</mn></msub><mo>,</mo><mo>&CenterDot;</mo><mo>&CenterDot;</mo><mo>&CenterDot;</mo><mo>,</mo><msub> <mi>A</mi> <mover><mi>n</mi><mo>~</mo> </mover></msub><mo>}</mo><mo>,</mo> </mrow></math>]]></math-cwu><!--img id="icf0001" file="S2008100936317C00011.gif" wi="32" he="3" top= "73" left = "87" img-content="drawing" img-format="tif" orientation="portrait" inline="no"/-->且id="icf0002" file="S2008100936317C00012.gif" wi="17" he="3" top= "73" left = "126" img-content="drawing" img-format="tif" orientation="portrait" inline="no"/>(2)找到一个素整数M满足<math-cwu><![CDATA[<math> <mrow><mi>M</mi><mo>></mo><msubsup> <mi>&Pi;</mi> <mrow><mi>i</mi><mo>=</mo><mn>1</mn> </mrow> <mover><mi>n</mi><mo>~</mo> </mover></msubsup><msub> <mi>A</mi> <mn>1</mn></msub><mo>,</mo> </mrow></math>]]></math-cwu><!--img id="icf0003" file="S2008100936317C00013.gif" wi="19" he="3" top= "80" left = "83" img-content="drawing" img-format="tif" orientation="portrait" inline="no"/-->且不是太大(3)选择正整数<math-cwu><![CDATA[<math> <mrow><mover> <mi>n</mi> <mo>~</mo></mover><mo>&lt;</mo><mi>&delta;</mi><mo>&lt;</mo><mi>M</mi> </mrow></math>]]></math-cwu><!--img id="icf0004" file="S2008100936317C00014.gif" wi="15" he="2" top= "88" left = "63" img-content="drawing" img-format="tif" orientation="portrait" inline="no"/-->使得gcd(δ,M-1)=1(4)随机选择正整数W<M,计算W-1(5)顺序划分<math-cwu><![CDATA[<math> <mrow><mo>{</mo><mn>5,6</mn><mo>,</mo><mo>&CenterDot;</mo><mo>&CenterDot;</mo><mo>&CenterDot;</mo><mo>,</mo><mover> <mi>n</mi> <mo>~</mo></mover><mo>+</mo><mn>4</mn><mo>}</mo> </mrow></math>]]></math-cwu><!--img id="icf0005" file="S2008100936317C00015.gif" wi="31" he="4" top= "102" left = "59" img-content="drawing" img-format="tif" orientation="portrait" inline="no"/-->为id="icf0006" file="S2008100936317C00016.gif" wi="7" he="3" top= "102" left = "94" img-content="drawing" img-format="tif" orientation="portrait" inline="no"/>个单元,赋任意空闲单元的一排列到{l(3j-2),l(3j-1),l(3j)},对j=1,2,…,id="icf0007" file="S2008100936317C00017.gif" wi="6" he="2" top= "110" left = "118" img-content="drawing" img-format="tif" orientation="portrait" inline="no"/>(6)计算Ci←(AiWl(i))δmod M,对i=1,2,…,id="icf0008" file="S2008100936317C00018.gif" wi="2" he="2" top= "118" left = "123" img-content="drawing" img-format="tif" orientation="portrait" inline="no"/>结束最后,以({Ci)、M)为公钥,以({Ai}、W-1、δ、M)为私钥,且私钥只能由用户私自拥有;·加密部分采用了下列步骤发送方以接收方的公钥({Ci}、M)作为加密密钥,针对n比特的明文分组b1b2…bn做(1)置<math-cwu><![CDATA[<math> <mrow><mover> <mi>G</mi> <mo>^</mo></mover><mo>&LeftArrow;</mo><mn>1</mn><mo>,</mo> </mrow></math>]]></math-cwu><!--img id="icf0009" file="S2008100936317C00019.gif" wi="11" he="3" top= "149" left = "48" img-content="drawing" img-format="tif" orientation="portrait" inline="no"/-->i←1(2)若b2i-1b2i=01,则<math-cwu><![CDATA[<math> <mrow><mover> <mi>G</mi> <mo>^</mo></mover><mo>&LeftArrow;</mo><mover> <mi>G</mi> <mo>^</mo></mover><msub> <mi>C</mi> <mrow><mn>3</mn><mi>i</mi><mo>-</mo><mn>2</mn> </mrow></msub><mi>mod</mi><mi> M</mi><mo>,</mo> </mrow></math>]]></math-cwu><!--img id="icf0010" file="S2008100936317C000110.gif" wi="35" he="3" top= "156" left = "79" img-content="drawing" img-format="tif" orientation="portrait" inline="no"/-->否则若b2i-1b2i=10,则<math-cwu><![CDATA[<math> <mrow><mover> <mi>G</mi> <mo>^</mo></mover><mo>&LeftArrow;</mo><mover> <mi>G</mi> <mo>^</mo></mover><msub> <mi>C</mi> <mrow><mn>3</mn><mi>i</mi><mo>-</mo><mn>1</mn> </mrow></msub><mi>mod</mi><mi> M</mi><mo>,</mo> </mrow></math>]]></math-cwu><!--img id="icf0011" file="S2008100936317C000111.gif" wi="35" he="3" top= "164" left = "79" img-content="drawing" img-format="tif" orientation="portrait" inline="no"/-->否则若b2i-1b2i=11,则<math-cwu><![CDATA[<math> <mrow><mover> <mi>G</mi> <mo>^</mo></mover><mo>&LeftArrow;</mo><mover> <mi>G</mi> <mo>^</mo></mover><msub> <mi>C</mi> <mrow><mn>3</mn><mi>i</mi><mo>-</mo><mn>0</mn> </mrow></msub><mi>mod</mi><mi> M</mi> </mrow></math>]]></math-cwu><!--img id="icf0012" file="S2008100936317C000112.gif" wi="34" he="3" top= "171" left = "79" img-content="drawing" img-format="tif" orientation="portrait" inline="no"/-->(3)令i←i+1,若i≤n/2,转至(2),否则结束最后,得到密文id="icf0013" file="S2008100936317C000113.gif" wi="3" he="3" top= "186" left = "64" img-content="drawing" img-format="tif" orientation="portrait" inline="no"/>它将被发送给接收方;·解密部分采用了下列步骤接收方以自己的私钥({Ai})、W-1、δ、M)作为解密密钥并计算出id="icf0014" file="S2008100936317C000114.gif" wi="5" he="3" top= "203" left = "146" img-content="drawing" img-format="tif" orientation="portrait" inline="no"/>id="icf0015" file="S2008100936317C000115.gif" wi="5" he="3" top= "203" left = "154" img-content="drawing" img-format="tif" orientation="portrait" inline="no"/>…、id="icf0016" file="S2008100936317C000116.gif" wi="8" he="3" top= "203" left = "171" img-content="drawing" img-format="tif" orientation="portrait" inline="no"/>针对密文id="icf0017" file="S2008100936317C000117.gif" wi="3" he="3" top= "210" left = "38" img-content="drawing" img-format="tif" orientation="portrait" inline="no"/>做(1)计算<math-cwu><![CDATA[<math> <mrow><mover> <mi>G</mi> <mo>^</mo></mover><mo>&LeftArrow;</mo><msup> <mover><mi>G</mi><mo>^</mo> </mover> <mrow><mn>1</mn><mo>/</mo><mi>&delta;</mi> </mrow></msup><mi>mod</mi><mi> M</mi> </mrow></math>]]></math-cwu><!--img id="icf0018" file="S2008100936317C000118.gif" wi="29" he="3" top= "217" left = "53" img-content="drawing" img-format="tif" orientation="portrait" inline="no"/-->(2)重复<math-cwu><![CDATA[<math> <mrow><mover> <mi>G</mi> <mo>^</mo></mover><mo>&LeftArrow;</mo><mover> <mi>G</mi> <mo>^</mo></mover><msup> <mi>W</mi> <mrow><mo>-</mo><mn>1</mn> </mrow></msup><mi>mod</mi><mi> M</mi> </mrow></math>]]></math-cwu><!--img id="icf0019" file="S2008100936317C000119.gif" wi="32" he="3" top= "224" left = "53" img-content="drawing" img-format="tif" orientation="portrait" inline="no"/-->直到id="icf0020" file="S2008100936317C000120.gif" wi="3" he="3" top= "225" left = "94" img-content="drawing" img-format="tif" orientation="portrait" inline="no"/>为奇数且<math-cwu><![CDATA[<math> <mrow><mover> <mi>G</mi> <mo>^</mo></mover><mo>&le;</mo><msub> <mover><mi>G</mi><mo>&CenterDot;</mo> </mover> <mrow><mi>n</mi><mo>/</mo><mn>2</mn> </mrow></msub> </mrow></math>]]></math-cwu><!--img id="icf0021" file="S2008100936317C000121.gif" wi="14" he="3" top= "225" left = "114" img-content="drawing" img-format="tif" orientation="portrait" inline="no"/-->(3)置b1b2…bn←0,<math-cwu><![CDATA[<math> <mrow><mi>G</mi><mo>&LeftArrow;</mo><mover> <mi>G</mi> <mo>^</mo></mover><mo>,</mo> </mrow></math>]]></math-cwu><!--img id="icf0022" file="S2008100936317C000122.gif" wi="12" he="3" top= "232" left = "74" img-content="drawing" img-format="tif" orientation="portrait" inline="no"/-->i←n/2,j←0(4)若A3i-j|G,则b2i-1b2i←3-j和G←G/A3i-j,否则j←j+1,且若j≤2,转至(4)(5)令i←j-1,若i≥1且<math-cwu><![CDATA[<math> <mrow><mn>1</mn><mo>&lt;</mo><mi>G</mi><mo>&le;</mo><msub> <mover><mi>G</mi><mo>&CenterDot;</mo> </mover> <mi>i</mi></msub><mo>,</mo> </mrow></math>]]></math-cwu><!--img id="icf0023" file="S2008100936317C000123.gif" wi="17" he="3" top= "254" left = "83" img-content="drawing" img-format="tif" orientation="portrait" inline="no"/-->则j←0开转至(4)(6)若G≠1,则转至(2),否则结束最后,接收方恢复山发送方的原始明文b1b2…bn。
全文摘要
基于互素序列和杠杆函数的多变量公钥加密方法,属于密码技术和计算机技术领域;包括密钥生成、加密和解密三个部分;其用户拥有两个密钥,一个只能私有,叫私钥,一个可以公开,叫公钥,它从C<sub>i</sub>≡(A<sub>i</sub>W<sup>l(i)</sup>)<sup>δ</sup>(mod M)得来,且从它不能推导出私钥({A<sub>i</sub>}、W、δ);公钥用于把明文转换成密文(加密),私钥用于把密文还原成明文(解密);该方法具有模数小、安全性高、计算速度较快、技术可以公开等特点,可用于手机、计算机和通信网络中任何文件、数据的保密存储与传输。
文档编号H04L9/28GK101267300SQ20081009363
公开日2008年9月17日 申请日期2008年4月17日 优先权日2008年4月17日
发明者吕述望, 苏盛辉, 蔡吉人 申请人:苏盛辉;吕述望;蔡吉人
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1