7.8 小结

对称加密算法经由古典加密算法演化而来,是现代密码学的重要组成部分。对于大多数对称加密算法而言,解密算法是加密算法的逆运算,加密密钥和解密密钥相同,这也是对称加密算法名称的由来。

对称加密算法家族庞大,迄今为止约有20多种。比较具有代表性的算法有5种:DES、DESede、AES、IDEA和PBE。

DES(Data Encryption Standard,数据加密标准)算法最具代表性,由IBM最先提出并经美国国家标准局制定为数据加密标准,堪称经典对称加密算法,为后续对称加密算法的发展奠定了坚实的基础。自20世纪70年代至20世纪末,DES算法一直稳坐对称加密算法宝座。历经20年发展,DES算法不仅应用在软件行业成为电子商务必不可少的加密算法,同时也逐步渗透到硬件行业。

Java 6支持DES算法实现,支持56位密钥长度;通过Bouncy Castle可将DES算法密钥延长至64位。

越来越多的密码学研究机构发现,密钥长度仅有56位的DES算法越来越不安全。DES算法有三点安全隐患:密钥太短、迭代偏少和半公开性。这使得DES算法的淘汰成为一种必然,但要淘汰DES算法必须找到合适的替代方案。

针对密钥太短和迭代偏少的问题,有人提出了多重DES的方式来克服这些缺陷。比较典型的有两重DES(2DES)、三重DES(3DES)和四重DES(4DES)等几种形式,但在实际应用中一般采用3DES方案,它还有两个别名—Triple DES和DESede。

DESede算法将密钥长度增至112位或168位,抗穷举攻击的的能力显著增强。但究其核心仍是DES算法,虽然增加迭代次数提高了安全性,但与此同时也造成处理速度较慢,密钥计算时间加长,加密效率不高的问题。

Java 6支持DES算法实现,支持112位或168位密钥长度;通过Bouncy Castle可将DES算法密钥延长至128位或192位。

DESede算法的种种劣势宣告DES算法改良路线失败,对称加密算法前途陷入困境,迫切需要产生新的对称加密算法,AES算法和IDEA算法呼之欲出。

由比利时人Daemen和Rijmen提出的Rijndael算法,以其密钥设置快、存储要求低、在硬件实现和限制存储的条件下性能优异当选AES算法。AES算法支持3种长度的密钥,分为128位、192位和256位。基于较高的安全性,AES常被用于通用移动通信系统。

Java 6支持AES算法实现,支持128位、192位和256位3种长度密钥。但要实现256位长度密钥则需获得无政策限制权限文件(Unlimited Strength Jurisdiction Policy Files);通过Bouncy Castle可获得更多填充方式,增强AES算法安全性。

IDEA(International Data Encryption Algorithm,国际数据加密标准)算法是目前较为常用的电子邮件加密算法之一。电子邮件加密软件PGP(Pretty Good Privacy)使用了具有商业版权的IDEA算法,实现邮件加密/解密工作。

Java 6不支持IDEA算法实现,但通过Boucy Castle可获得相应实现,并支持128位长度密钥。

PBE(Password Based Encryption,基于口令加密)算法是一种基于口令的加密算法,其特点在于口令由用户自己掌管,采用随机数(这里我们叫做盐)杂凑多重加密等方法保证数据的安全性。

PBE算法并没有真正构建新的加密/解密算法,而是对我们已知的对称加密算法(如DES算法)做了包装。使用PBE算法对数据做加密/解密操作时,其实是使用了DES或AES等其他对称加密算法做了相应的操作。其密钥长度与相关PBE算法息息相关,如PBEWithMD5AndDES算法根据对应DES算法,其密钥长度为56位。

Java 6支持PBE算法实现,通过Boucy Castle可获得更多的PBE算法实现。

对称加密算法是现代密码学中不可或缺的算法分支之一,与之相对的非对称加密算法虽然在安全性上大大优于对称加密算法,但却无法在加密/解密速度上与之媲美。