【密码学03】对称密码算法

前一篇文章【密码学02】密码系统原理及数学背景 提到了密码算法。每个密码算法都基于相应的数学理论。密码学发展至今,已经产生了大量优秀的密码算法,通常分为两类:对称密码算法和非对称密码算法。

对称密码算法是指有了加密密钥就可以推算出解密密钥,有了解密密钥就可以推算出加密密钥的的算法。还是用公式表示比较简洁:

       EK1(P) = C

       DK2(C) = P

其中E为加密算法,D为解密算法,P为明文,C为密文,K1为加密密钥,K2为解密密钥。在对称密码算法中,有了K1,就可以推算出K2,而有了K2,也可以推算出K1。实际应用的大多数对称密码算法中,K1K2相同。因此对称密码算法的加密与解密关系如下:

       EK(P) = C

       DK(C) = P

加密与解密都使用密钥K

之所以叫对称加密算法,就是加密与解密的密钥相同。

常见的对称密码算法有以下这些:

1) DES,数据加密标准。由IBM1970年代开发。DES算法使用的密钥长度表示为64(bit),但每个第8为都用作奇偶校验,所以对于使用者而言,密钥长度是56位。DES将消息分成64位长的分组,一次加密一个分组,最后一个分组如果不满64位,需要按照某种策略填满64位,如下图所示。

 

DES由于密钥太短,而且密钥空间中存在弱密钥,因此现在已经不再安全了。1977年斯坦福大学的两位密码学大师DiffieHelman设计了一台机器,只要给定一小段明文和匹配的密文,一天之内即可推算出密钥。

2) 三重DESDES的增强版本。如下图所示,还是利用DES密码算法,但是利用三次,加密过程为“加密-解密-加密”,解密过程为“解密-加密-解密”。

 

     用公式可以表示为:

        EK1(DK2(EK3(P))) = C     //加密

        DK1(EK2(DK3(C))) = P     //解密

由于三次过程使用的密钥不一样,所以相当于增加了密钥长度。实际应用中,K1K3是相同的,也就是外层的两次加密和两次解密使用相同的密钥。这样,三重DES的密钥长度就相当于K1+K2的长度,即112(DES的密钥长度为56)。采用“加密-解密-加密”模式的理由是为了与DES保持兼容,只要设置K1=K2=K3,三重DES不就和DES一样了吗?只是多了两道运算步骤而已。

三重DES只是DES的一个变种,还有其它变种,例如DESXCRYPT(3)GDESRDESsnDES等等。

3) AES,高级加密标准。也叫Rijndael算法,由两位比利时密码学家发明,参与了NIST(美国标准和技术委员会)1997年组织的公开密码学竞赛,最终以优异的技术特性胜出成为加密标准。AES以前一篇文章提到的迦罗瓦域理论为数学基础。AES也是分块对数据加密,只是块的长度并不像DES那样定死为64位。Rijndael的密钥长度可以从128位起以32位为间隔递增到256位。

Rijndael算法完全公开、安全性好、运算速度极快。如果取密钥长度为128位,想用穷举法破解密钥,就算有一台内含1000亿个处理器的计算机,并且每个处理器每秒处理100亿个密钥,也要运行100亿年才能搜索完整个密钥空间。

4) 其它对称密码算法,有IDEALuciferMadrygaNewDESFEALREDOCLOKIRC2MMBGOSTCASTBlowfishSAFER3-WAYRC5、等等,现在的密码算法真是太多了。IDEAInternational Data Encryption Algorithm(国际数据加密算法)的缩写,该算法设计者是James MasseyXuejia Lai(来学嘉)博士。来学嘉是瑞士籍华人,1954年出生,西安电子科大的硕士毕业生。James Massey是来学嘉的导师。

IDEA算法安全性比DES(AES差不多),能抵抗差分密码分析的攻击,而DES不行。IDEA的加密速度比DES快,加密数据速率可达到177MB/秒,也和AES差不多。

 

posted on 2008-12-05 23:10  Hananbaum  阅读(3979)  评论(0编辑  收藏  举报