2.1 对称密码学
对称密码学的核心是对称加密算法。对称加密算法是应用较早的加密算法,技术成熟。在对称加密算法中,数据发信方将明文(原始数据)和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。收信方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。在对称加密算法中,使用的密钥只有一个,发、收信双方都使用这个密钥对数据进行加密和解密,这就要求解密方事先必须知道加密密钥。
2.1.1 对称加密算法原理与特点
对称加密(也叫私钥加密)指加密和解密使用相同密钥的加密算法。有时又叫传统密码算法,就是加密密钥能够从解密密钥中推算出来,同时解密密钥也可以从加密密钥中推算出来。而在大多数对称算法中,加密密钥和解密密钥是相同的,所以也称这种加密算法为秘密密钥算法或单密钥算法。它要求发送方和接收方在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄露密钥就意味着任何人都可以对他们发送或接收的消息解密,所以密钥的保密性对通信的安全性至关重要。如图2-1所示为对称加密原理。
图2-1 对称加密原理
对称加密算法的特点是算法公开、计算量小、加密速度快、加密效率高。对称加密算法的不足之处是,交易双方都使用同样的钥匙,因此秘钥交换或者说秘钥管理比较困难,安全性很难得到保证。此外,每对用户每次使用对称加密算法时,都需要使用其他人不知道的唯一钥匙,这会使得发收信双方所拥有的钥匙数量呈几何级数增长,密钥管理成为用户的负担。图2-2所示为对称密码算法的加解密过程示意图。
图2-2 对称密码算法的加解密过程示意图
对称加密算法在分布式网络系统上使用较为困难,主要是因为密钥管理困难,使用成本较高。而与公开密钥加密算法比起来,对称加密算法能够提供加密和认证,却缺乏签名功能,使得使用范围有所缩小。
2.1.2 对称加密算法举例
典型的对称加密算法包括DES算法、3DES算法、TDEA算法、Blowfish算法、RC5算法、IDEA算法、AES加密算法等。下面以DES算法为例子,简要介绍对称加密算法。
DES算法(见图2-3)又称为美国数据加密标准,是1972年美国IBM公司研制的对称密码体制加密算法。明文按64位进行分组,密钥长64位,密钥事实上是56位参与DES运算(第8、16、24、32、40、48、56、64位是校验位,使得每个密钥都有奇数个1),分组后的明文组和56位的密钥按位替代或交换的方法形成密文组的加密方法。
图2-3 DES算法结构
DES算法入口参数有三个:key、data、mode。key为加密解密使用的密钥,data为加密解密的数据,mode为其工作模式。当模式为加密模式时,明文按照64位进行分组,形成明文组,key用于对数据加密;当模式为解密模式时,key用于对数据解密。实际运用中,密钥只用到了64位中的56位,这样才具有高的安全性。
DES算法把64位的明文输入块变为64位的密文输出块(分为L0和R0两部分),它所使用的密钥(用Kn表示)也是64位,整个算法的主流程图如图2-4所示。
图2-4 DES算法流程图
由上面的原理和流程可以看出,对称加密算法的核心是位置的代换和字母的替换。感兴趣的读者可以自己编写DES算法。网上也有一些免费代码可以参考。