信管网综合知识
信息安全工程师 - 综合知识 导航

信息安全工程师考点梳理(4):公钥加密安全性、RSA密码

2016年09月26日来源:信管网 作者:cnitpm

信息安全工程师考点梳理(4):公钥加密安全性、RSA密码

2.5.1.4 公钥加密安全性

       设M为明文,C为密文,E未公开密钥密码的加密算法,D为解密算法,Ke为公开的加密钥,Kd为保密的解密钥,每个用户都分配一对密钥,而且将所有用户的公开的加密Ke存入共享的密钥库PKDB。
        再设用户A要把数据M安全保密地传送给用户B,我们给出以下三种通信协议:
1.确保数据的秘密性
        发方:
         ① A首先查PKDB,查到B的公开的加密钥KeB。
         ② A用KeB加密M得到密文C: C=E(M,KeB)
         ③A发C给B。
       收方:
        ① B接受C。
        ② B用自己的保密的解密钥KdB解密C,得到明文M=D(C,KdB)。
        由于只有用户B才拥有保密的解密钥KdB,而且由公开的加密钥KeB,所以只有用户B才能获得明文M,其他任何人都不能获得明文M,从而确保了数据的秘密性。
        然而这一通信协议却不能确保数据的真实性。这是因为PKDB是共享的,任何人都可以查到B的公开的加密钥KeB,因此任何人都可以冒充A通过发假密文C′=E(M′,KeB),来发假数据M′给B,而B不能发现。
        为了确保数据的真实性,可采用下面的通信协议。
2.确保数据的真实性
        发方:
         ① A首先用自己的保密的解密钥KdA解密M,得到密文C:C=D(M,KdA)。
         ② A发C给B。
        收方:
         ① B接受C。
         ② B查PKDB,查到A的公开的加密钥KeA。
         ③ 用KeB加密C得到M=E(C,KeA)。
        由于只有用户A才拥有保密的解密KdA,而且由公开的加密钥KeA在计算上不能推出保密的解密钥KdA,所以只有用户A才能发送数据A。其他任何人都不能冒充A发送数据M,从而确保了数据的真实性。
        然而这一通信协议却不能确保数据的秘密性。这是因为PKDB是共享的,任何人都可以查到A的公开的加密钥KeA,因此任何人都可以获得数据M。
        为了同时确保数据的秘密性和真实性,可将以上两个协议结合起来,采用下面的通信协议。
3.同时确保数据的秘密性和真实性
        发方:
         ① A首先用自己的保密的解密钥KdA解密M,得到中间密文S:S=D(M,KdA)。
         ② 然后A查PKDB,查到B的公开的加密钥KeB。
         ③ A用KeB加密S得到最终的密文C:C=E(S,KeB)
         ④ A发C给B。
        收方:
         ① B接受C。
         ② B用自己的保密的解密钥KdB解密C,得到中间密文S=D(C,KdB)。
         ③ B查PKDB,查到A的公开的加密钥KeA。用KeB加密S得到M=E(S,KeA)。
        由于这一通信歇息综合利用了上述两个通信协议,所以能够同时确保数据的秘密性和真实性。具体地,由于只有用户A才用户保密的解密钥KeA,而且由公开的加密钥KeA在计算上不能推出保密的解密钥KdA,所以只有用户A才能正确进行发方的第①步操作,才能发送数据M。其他任何人都不能冒充A发送数据M,从而确保了数据的真实性。又由于只有用户B才拥有保密的解密钥KdB,而且,由公开的加密钥KeB在计算上不能推出保密的解密钥KdB,所以只有用户B才能正确进行收方的第②步操作,才能获得明文M,其他任何人都不能获得明文M,从而确保了数据的秘密性。
2.5.2 RSA密码
        1978年美国麻省理工学院的三名密码学者R.L.Rivest,A.Shamir和L.Adleman提出了一种基于大合数因子分解困难性的公开密钥密码,简称为RSA密码。
2.5.2.1 基本的RSA密码体制:参数、加密算法、解密算法
       ① 随机地选择两个大素数P和q,而且保密;
        ② 计算n=pq,将n公开;
        ③ 计算φ(n)=(p-1)(q-1),对φ(n)保密;
        ④ 随机地选取一个正整数e,1<e<φ(n)且(e,φ(n))=1,将e公开;
        ⑤根据ed=1  mod  φ(n),求出d,并对d保密;
        ⑥ 加密运算: C=Me  mod  n    (2—42)
        ⑦解密运算:M=Cd  mod  n    (2—43)
        由以上算法可知,RSA密码的公开加密钥Ke=<n,e>,而保密的解密钥Kd=<p,q,d,φ(n)>。
        说明:算法中的φ(n)是一个数论函数,称为欧拉(Euler)函数。φ(n)表示在比n小的正整数中与n互素的数的个数。例如,φ(6)=2,因为在1,2,3,4,5中与6互素的数只有1和5两个数。若p和q为素数,且n=pq,则φ(n)=(p-1)(q-1)。
        例 2-2 令p=47,q=71,n=47×71=3337,φ(n)=φ(3337)=46×70=3220。选取e=79,计算d=e-1mod3220=1019mod3220。公开e=79和n=3337,保密p=47,q=71,d=1019和φ(n)=3220。
        设明文M=688 232 687 966 668 3,进行分组,M1=688,M2=232,M3=687,M4=966,M5=668,M6=003。M1的密文C1=68879mod3337=1570,继续进行类似计算,可得最终密文
        C=1570 2756 2091 2276 2423 158
        如若解密,计算M1=15701019mod3337=688,类似地可解密还原出其他明文。
2.5.2.2 RSA密码体制的特点
        RSA算法具有加解密算法的可逆性,加密和解密运算可交换,可同时确保数据的秘密性和数据的真实性。
2.5.2.3 RSA密码的安全性
        只要合理地选择参数,正确地使用,RSA就是安全的。为了确保RSA密码的安全,必须认真选择RSA的密码参数:p和q要足够大并且p和q应为强素数(Strong Prime)。加密密钥和认证密钥选n为1042位,而平台根密钥和存储根密钥则选n为2048位。此外,还要注意以下参数的选择:
    (1)e的选择
        为了使加密速度快,根据“反复平方乘”算法,e的二进制表示中应当含有尽量少的1。一种办法是选择尽可能小的e,或选择某些特殊的e。
    (2)d的选择
        与e的选择类似,为了使解密速度快,希望选用小的d,但是d太小也是不好的。
    (3)不要许多用户共同一个模数n

温馨提示:因考试政策、内容不断变化与调整,信管网提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准!

分享至:

信管网 - 信息系统项目管理专业网站

下载APP-在线学习