专利名称:利用多项式系数转换信息的多重rsa加密方法
技术领域:
本发明属于计算机数据加密技术领域,特别涉及采用RSA算法进行多重加密的方法及其实现。
数据加密是信息安全领域的一个重要部分,它在金融、军事等领域都有着广泛的应用。密码技术也是一门古老的技术,传统密码要求通信双方在通信前先约定一个相同的密钥,由于密钥信息在网上传输容易造成密钥信息被截获,从而使得通信变得不安全。1976年美国学者Diffie和Hellman提出公开密钥密码的概念,从根本上克服了传统密码在密钥分配上的困难。而RSA算法(该算法是由Ronald L Rivest、AdiShamir和Leonard Adleman三位提出者命名的)则是公开密钥密码算法中的典型代表之一。自从RSA被提出以来,人们已经对RSA算法进行了许多深入的研究,目前已经进入了实际应用阶段。
现在,RSA算法不仅在数字签名中得到了重要应用,在多重加密方面也开始得到应用。用RSA算法实现两重加密的一种简单情形的步骤如下(多重加密原理相同)1.发送方A和接收方B各产生一套加密参数(PA,QA,RA,φ(RA),SKA,PKA)和(PB,QB,RB,φ(RB),SKB,PKB)。其中P,Q为大素数,R为P和Q的乘积,φ(R)为R的欧拉函数,其值为P-1与Q-1的乘积,SK为私钥,R和PK为公钥。
并且P、Q、φ(R)、SK秘密,R和PK公开。
2.发送方A对明文X进行分组,并对分组后的明文用自己的私钥SKA进行加密。
3.发送方A对步骤2中所得到的结果用接收方B的公钥PKB进行进一步加密得密文Y,即Y=PKB(SKA(X))。
4.接收方B在收到密文Y后,用自己的私钥SKB对Y进行解密。
5.接收方B用发送方A的公钥PKA对步骤4中结果进行进一步解密,得到分组后的明文。
6.接收方B将分组明文合并,恢复出明文X。
在上述过程中,由于只有A具有私钥SKA,因此除A外任何人都不能产生密文SKA(X),所以SKA(X)就相当于A的签名信息。在上述情形下,B可以实现对报文源的鉴别,同时在公开信道中,信息是以PKB(SKA(X))的形式进行传输。要对此信息进行解密,必须同时具有B的私钥SKB和A的公钥PKA,显然只有B可以做到这一点,因此,上述情形能保证信息的安全性。
但是,上述情形在实现过程中却存在问题。由于RSA算法基于推广欧拉定理,其对信息的大小必须限制在
。因而在上述步骤2中,其信息的有效范围为
,而在步骤3中,其信息的有效范围为
。显然由步骤2所得结果SKA(X)在
内,而根据RSA算法原理,要使SKA(X)在用B的公钥PKB进一步加密后,能被B用私钥SKB正确解密,必须有SKA(X)在
内。因此上述情形得以正确实现的条件是RA-1≤RB-1,即RA≤RB,否则,接收方B将无法从密文Y正确恢复出明文X,而这一条件常常是得不到满足的。
已有的一种克服上述缺陷的方法是重新分组法,其具体步骤是在对明文X的分组信息用SKA加密后,比较SKA(X)中每组信息与RB的大小,如果数值大于RB,将其重新分组,将该组分割成小于RB的两部分,然后对这两部分用PKB分别进行加密。当接收方B接收到信息后,先进行解密,将解密后的两部分进行还原,再还原成一个分组,最后再用PKA进行解密,恢复出明文。
该方法虽然克服了RSA算法在进行多重加密时的固有缺陷,却又引进了另外一个问题。对RSA算法来说,原文01234和1234是等同的,算法本身只对一个有效整数进行运算,因此,在按照直接重新分组方法对数据重新分组时,就必须设法避免出现以0开头的数据组,否则在明文恢复过程中就会丢失数据组开头的0,以至无法正确恢复明文。但通常很难甚至常常无法做到这一点。
本发明的目的在于为克服已有技术的不足之处,提出一种利用多项式系数转换信息的多重RSA加密方法,以使用RSA算法的多重加密过程的实际应用成为可能。
本发明提出的一种利用多项式系数转换信息的多重RSA加密方法,其特征在于通过构造多项式X’=anRBn+an-1RBn-1+...+a1RB+a0(其中n根据条件式RBn<RA<RBn+1确定),将不满足RSA算法条件(信息必须在
内)的数据X’转换成满足条件的数据组(an,an-1,...,a1,a0),从而正确实现RSA多重加密。
本发明具体包括以下内容仍考虑前述两重加密简单情形的实现过程。设置发送方参数为(PA,QA,RA,φ(RA),SKA,PKA),接收方参数为(PB,QB,RB,φ(RB),SKB,PKB),其中P,Q为大素数,R为P和Q的乘积,φ(R)为R的欧拉函数,其值为P-1与Q-1的乘积,SK为私钥,R和PK为公钥。并且P、Q、φ(R)、SK秘密,R和PK公开,明文为X。首先对RA、RB进行比较,当RA≤RB时,实现步骤如下1.发送方A对明文X进行分组,并对分组后的明文用自己的私钥SKA进行加密。
2.发送方A对步骤2中所得到的结果用接收方B的公钥PKB进行进一步加密得密文Y,即Y=PKB(SKA(X))。
3.接收方B在收到密文Y后,用自己的私钥SKB对Y进行解密。
4.接收方B用发送方A的公钥PKA对步骤4中结果进行进一步解密,得到分组后的明文。
5.接收方B将分组明文合并,恢复出明文X。
当RA>RB时,则其实现步骤则为1.发送方A和接收方B各产生一套加密参数(PA,QA,RA,φ(RA),SKA,PKA)和(PB,QB,RB,φ(RB),SKB,PKB)。
2.发送方A对明文X进行分组,并对分组后的明文用自己的私钥SKA进行加密,结果记为X’=SKA(X)。
3.构造X’=anRBn+an-1RBn-1+...+a1RB+a0(其中n根据据条件式RBn<RA<RBn+1确定),
此时可保证an,an-1,...,a1,a0都满足区间
,于是X’转换为(an,an-1,...,a1,a0)。
4.发送方A对步骤3中所得到的结果(an,an-1,...,a1,a0)用接收方B的公钥PKB进行进一步加密得密文Y,即Y=PKB(an,an-1,...,a1,a0)。
5.接收方B在收到密文Y后,用自己的私钥SKB对Y进行解密,得到(an,an-1,...,a1,a0)。
6.接收方B按照X’=anRBn+an-1RBn-1+...+a1RB+a0计算得到X’。
7.接收方B用发送方A的公钥PKA对步骤6中结果X’进行进一步解密,得到分组后的明文。
8.接收方B将分组明文合并,恢复出明文X。
进行多重加解密时,其方法原理与两重加密时一样,只是发送方重复两重加密时的比较和构造多项式转换信息的过程,接收方重复两重加密时比较和按照多项式计算恢复信息的过程。
本发明的优点通过构造多项式X’=anRBn+an-1RBn-1+...+a1RB+a0(其中n根据条件式RBn<RA<RBn+1确定),将不满足RSA算法条件(信息必须在
内)的数据X’转换成满足条件的数据组(an,an-1,...,a1,a0),从而巧妙地克服了RSA实现多重加密时的固有缺陷,正确实现了RSA多重加密。
实施例本发明设计出一个利用多项式系数转换信息的m重RSA加密方法的实施例实现过程如下加密过程1)I=1,输入加密密钥k1,k2,k3,...,km,模数r1,r2,r3,...,rm;2)对明文X进行加密得Y=k1(X);3)若I大于或等于m,转8);4) 若r1≤rI+1,X=Y,I=I+1,转2);否则n=0,转5);5)Y除以rI+1,令Y等于商,an等于余数,n=n+16)若Y大于或等于rI+1重复5);7)令an=Y,X=(an,an-1,...,a1,a0),I=I+1,转2);8)结束;解密过程1)I=1,输入解密密钥k1,k2,k3,...,km,模数r1,r2,r3,...,rm;2)对密文Y进行解密得X=k1(Y),X为L组数据;3)若I大于或等于m,转11);4)若r1≥rI+1,令Y=X,I=I+1,转2);5)令rtemp=r1,n=0;6)rtemp=rtemp*r1,n=n+1;7)若rI+1>rtemp,重复6),否则,令j=0;
8)Yj=Xj*(n+1)r1n+Xj*(n+1)+1r1n-1+...+Xj*(n+1)+n-1r1+Xj(n+1)+n,j=j+19)若j<L/(n+1),重复8);10)I=I+1,转2);11)结束;其中上述加密过程中的步骤4)至步骤7)、解密过程中的步骤4)至步骤9)为本方法所特有。
在本实施例中,设m=2,且发送方参数为(PA=77543,QA=28655359,RA=2222022502937,φ(RA)=2221993770036,SKA=96199,PKA=1173418928527)接收方参数为(PB=6481,QB=932803,RB=6045496243,φ(RB)=6044556960,SKB=79057,PKB=736292593)原文X=234567,1234,567。
第一次加密后得到中间密文X’=SKA(X)=1727263351962,410137493623,521441498695。显然,X’中的数据段超出了区间
。
由于1727263351962=285*6045496243+4296922707410137493623=67*6045496243+5089245342521441498695=86*6045496243+1528821797因此按照前述方法信息X’转换成了X”=285,4296922707,67,5089245342,86,1528821797,这样得到了满足条件的数据段X”。对X”进行第二次加密后得到密文Y=3713464222,393795402,4569632797,5194613300,3307779347,1773416609。接收方B用SKB,、PKA和相应的算法解密后正确恢复出明文234567,1234,567。
上述实例在PC机上用Visual C++6.0编程实现。
权利要求
1.一种利用多项式系数转换信息的多重RSA加密方法,其特征在于通过构造多项式X’=anRBn+an-1RBn-1+...+a1RB+a0其中n根据据条件式RBn<RA<RBn+1确定,可将信息必须在
内的不满足RSA算法条件的数据X’转换成满足条件的数据组(an,an-1,...,a1,a0),从而正确实现RSA多重加密。
2.如权利要求1所述的方法,其应用于一种简单的两重加密情形包括以下的具体步骤设置发送方参数为(PA,QA,RA,φ(RA),SKA,PKA),接收方参数为(PB,QB,RB,φ(RB),SKB,PKB),其中P,Q为大素数,R为P和Q的乘积,φ(R)为R的欧拉函数,其值为P-1与Q-1的乘积,SK为私钥,R和PK为公钥。并且P、Q、φ(R)、SK秘密,R和PK公开,明文为X首先对RA、RB进行比较,当RA≤RB时,实现步骤如下1)发送方A对明文X进行分组,并对分组后的明文用自己的私钥SKA进行加密2)发送方A对步骤2中所得到的结果用接收方B的公钥PKB进行进一步加密得密文Y,即Y=PKB(SKA(X))3)接收方B在收到密文Y后,用自己的私钥SKB对Y进行解密;4)接收方B用发送方A的公钥PKA对步骤4中结果进行进一步解密,得到分组后的明文;5)接收方B将分组明文合并,恢复出明文X当RA>RB时,则其实现步骤则为1)发送方A和接收方B各产生一套加密参数(PA,QA,RA,φ(RA),SKA,PKA)和(PB,QB,RB,φ(RB),SKB,PKB);2)发送方A对明文X进行分组,并对分组后的明文用自己的私钥SKA进行加密,结果记为X’=SKA(X);3)构造X’=anRBn+an-1RBn-1+...+a1RB+a0(其中n根据据条件式RBn<RA<RBn+1确定),此时可保证an,an-1,...,a1,a0都满足区间
,于是X’转换为(an,an-1,...,a1,a0);4)发送方A对步骤3中所得到的结果(am,an-1,...,a1,a0)用接收方B的公钥PKB进行进一步加密得密文Y,即Y=PKB(an,an-1,...,a1,a0);5)接收方B在收到密文Y后,用自己的私钥SKB对Y进行解密,得到(an,an-1,...,a1,a0);6)接收方B按照X’=anRBn+an-1RBn-1+...+a1RB+a0计算得到X’;7)接收方B用发送方A的公钥PKA对步骤6中结果X’进行进一步解密,得到分组后的明文;8)接收方B将分组明文合并,恢复出明文X。
3.如权利要求1所述的方法,其应用于M重加解密的具体步骤如下加密过程1)I=1,输入加密密钥k1,k2,k3,...,km,模数r1,r2,r3,...,rm2)对明文X进行加密得Y=ki(X)3)若I大于或等于m,转8);4)若ri≤rI+1,X=Y,I=I+1,转2);否则n=0,转5)5)Y除以rI+1,令Y等于商,an等于余数,n=n+1;6)若Y大于或等于rI+1,重复5)7)令an=Y,X=(an,an-1,...,a1,a0),I=I+1,转2);8)结束解密过程1)I=1,输入解密密钥k1,k2,k3,...,km,模数r1,r2,r3,...,rm2)对密文Y进行解密得X=ki(Y),X为L组数据;3)若I大于或等于m,转11);4)若ri≥ri+1,令Y=X,I=I+1,转2);5)令rtemp=ri,n=0;6)rtemp=rtemp*ri,n=n+1;7)若ri+1>rtemp,重复6),否则,令j=0;8)Yj=Xj*(n+1)rin+Xj+(n+1)+1rin-1+...+X1*(n+1)+n-1r1+Xj*(n+1)+n,j=j+1;9)若j<L/(n+1),重复8);10)I=I+1,转2);11)结束。
全文摘要
本发明属于计算机数据加密技术领域,本发明通过构造多项式X’=a
文档编号H04L9/28GK1263393SQ00103359
公开日2000年8月16日 申请日期2000年3月3日 优先权日2000年3月3日
发明者贾惠波, 史熙, 熊剑平 申请人:清华大学