荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: Peter (小飞侠), 信区: Program
标  题: 再谈DES算法的应用并RSA加密算法
发信站: BBS 荔园晨风站 (Wed Jan 27 17:41:04 1999), 转信


  DES算法
    DES算法是1975年3月IBM公司公开发表的,1977年,美国国家标准
局(ANSI)公布用于非国家保密机关,开创了公开全部加密算法的先例
。其安全性一直是人们关心的热点,当年美国国家标准局就成立了专
门研究小组进行研究,1978年公布的研究结论认为,10至15年内DES算
法的安全性不成问题。
    现在已过了20年,虽说还没有看到破译DES加密算法的报道,但人
们对DES安全性的顾虑一直存在。当年美国斯坦福大学的研究小组认
为S盒的设计虽然不是线性的,然而也不是随机的,似乎是针对某一种
目的而设计的,可能还存在有弱点。虽然每秒检验一百万个密钥的计
算机要搜索全部密钥需2285年,但一百万台机器并行工作,或者用一台
每秒1012个密钥的专用机器进行穷举搜索,则不足一天就可破密,所以
现在人们已经纷纷转向使用密钥长度为128位的国际数据加密算法IDE
A(International Data Encryption Algorithm),它比DES算法要安全
得多,且只使用8次迭代运算,比使用16次迭代运算的DES算法在速度上
也毫无逊色。
    DES算法目前仍有广大的用户,但通常的应用都是与RSA算法等相
结合,如首先对报文M进行完整性校验(Message Integrity Check),求
出唯一的报文完整性控制码MICO,再产生8组7 bit的二进制随机数,连
同每组的校验位构成64bit二进制数作为报文M的DES算法密钥K,对报
文M加密生成密文C,最后把K用RSA算法加密作为报文头部的第一部分,
把MICO用RSA算法进行电子签名后再加密作为报文头部的第二部分,放
在密文C的前部,同时发送。接收方在收到报文后,用RSA算法解密K和M
ICO,同时通过解密电子签名确定发报方的身份,再用密钥K对密文C 用
DES算法解密得到报文M,对报文M进行完整性校验得报文完整性控制码
MIC,检验MIC是否与MICO相等以确认报文的完整性。
    应特别指出的是,DES算法并没有贵报第6期上所说的"应用误区",
64bit二进制块是8个b ytes,每个byte为8bit,通常标为位0至位7,是
自右向左排列,这就是说,64bit应排列成一个8 行8列的矩阵,与通常
矩阵不同的是这个矩阵的物理排法为行数自上而下,列数自右向左,如
0 x0、0x1、0x2、0x4、0x8、0x10、0x20和0x40,这8个字节构成的64
bit矩阵为:
            第第第第第第第第
       I, J→8 7 6 5 4 3 2 1
      ↓    列列列列列列列列
    第1行   0 0 0 0 0 0 0 0——0x0  第 1byte
    第2行   0 0 0 0 0 0 0 1——0x1  第 2byte
    第3行   0 0 0 0 0 0 1 0——0x2  第 3byte
    第4行   0 0 0 0 0 1 0 0——0x4  第 4byte
    第5行   0 0 0 0 1 0 0 0——0x8  第 5byte
    第6行   0 0 0 1 0 0 0 0——0x10 第 6byte
    第7行   0 0 1 0 0 0 0 0——0x20 第 7byte
    第8行   0 1 0 0 0 0 0 0——0x40 第 8byte
            位位位位位位位位
            7 6 5 4 3 2 1 0
    如果矩阵行、列分别用I、J表示,这64bit每位所对应的位数Z与I
、J的关系为:
    Z=J+(I-1)*8
    DES算法中的第8、16、24、32、40、48、56、64位即为我们通常
所表示的各字节的位7 ,位7通常用来表明+/-符号,而在DES算法的密
钥中用来作为奇偶校验位,去掉它们不会对加、解密形成任何"应用误
区",收报方只是利用这些位对密钥K进行校验,如果这些位全为0,一般
说明没有对密钥K进行奇偶校验,否则就要对这8个字节全部验算奇偶
校验,看其是否一致,如不一致就说明密钥K在传送中有错。所谓"应用
误区"是由于错排了位的顺序所致。
    RSA算法
    RSA加密算法是全世界第一个公开密钥密码系统,是由Rivet、Sha
mir和Adleman三人于1 978年提出的。RSA算法中用到的一些量是:
    1.素数p和q(保密的);
    2.n=p*q(公开的);
    3.φ(n)=(p-1)*(q-1)(保密的);
    4.加密密钥e(公开的)要满足0〈e〈φ(n),且e和φ(n)的最大公
约数为1(互素);
    5.解密密钥d(保密的)要满足0〈d〈φ(n),且d*e mod φ(n)=1(m
od是模运算,也称取余运算)。
    如果用M代表明文,C代表密文,E(M)代表对明文加密运算,D(C)代
表对密文解密运算,则有:
    E(M)=M^e mod n=C
    D(C)=C^d mod n=M
    RSA算法安全性的理论基础是大数的因子分解问题至今没有很好
的算法,因而公开e和n不易求出p、q及d。RSA算法要求p和q是两个足
够大的素数(例如100位十进制数)且长度相差比较小。

    电子签名
    我们知道在公开密钥密码体系中,可在公开的密码簿(或密码库)
中查到用户A的公开密钥nA和eA,但解密密钥dA只有用户A自己才知道
。用户A要向用户B发一组签名的信息M,于是用户A先用自己的解密密
钥dA对明文M加密生成签名密文FA:
    DA(M)=M^dA mod nA=FA
    为确保只有用户B才能知道其内容,再用用户B的加密密钥nB和eB
对FA加密生成密文:
    EB(FA)=FA^eB mod nB=C
    用户B收到用户A的密文C后进行解密:
    DB(C)=C^dB mod nB=FA
    知道是用户A的签名密文,于是再用用户A的加密密钥解密:
    EA(FA)=FA^eA mod nA=M
    由于用户B知道只有用户A才能把明文M加密生成FA,这就可以确信
报文是用户A发来的。这种加密方法可以作为用户A身份的说明,因而
称作电子签名。
    RSA算法的安全性比DES算法高得多,但运算所需机时约是DES算法
的100倍,二者结合使用,可以扬长避短,相得益彰。

--
※ 来源:.BBS 荔园晨风站 bbs.szu.edu.cn.[FROM: 192.168.1.3]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店