在信息安全领域,数字加密(密码学)是非常重要的一门学科。信息安全防御的三个目标:“进不来”、“拿不走”、“看不懂”,在实现的过程中无不涉及数字加密,而且最后一道防线“看不懂”更是数字加密技术的直接应用。
通俗的讲,数据加密、解密是对数据的变换,涉及数学、计算机科学、电子与通信等学科,基础学科是数学。在实际应用中,数字加密被用来达成这些目标:信息保密(数据加密、文件加密),身份鉴别,数据完整性(防篡改),可信赖(数字签名、电子印章)。
数字加密的过程由加密算法和密钥组合完成。其中,密钥是参与算法实现过程中的一组关键信息(Key),根据算法的不同,有时还要分为公共密钥和私有密钥。古老的基于字符替换的古典密码(算法)已经很少使用,目前常用的加密算法按密钥管理的方式可分为对称算法、公开密钥算法。
现行的主流数据加密标准主要来自计算机的起源地美国,常用的包括DES、RSA和MD5。
DES
DES是一个分组加密算法,它以64位分组对数据加密。64位一组的明文从算法的一端输入,64位的密文从另一端输出,算法需要进行16轮编码。
DES是一个对称算法,加密和解密用的是同一算法。密钥长度为64bit,其中有效密钥长度56bit,其余8bit为奇偶校验。DES的整个体制是公开的,系统的安全性主要依赖密钥的保密。
DES主要用于数据传输加密。
RSA
RSA在1978年诞生于美国名校MIT。简单地说,就是两个很大的质数,一个公开,另一个保密,前者成为“公用密钥”,后者成为“私有密钥”。这两个密钥相互补充,即公用密钥的密文可以用私有密钥来解密,反之也成立。
RSA要求每一个用户拥有自己的一种密钥:公开的加密密钥,用以加密明文;保密的解密密钥,用于解密密文。
在RSA密钥体制的运行中,当A用户发文件给B用户时,A用户用B的公开密钥加密明文,B用户则用解密密钥解读密文。
RSA密钥可从40位到2048位,加密时块大小可变,但不超过密钥的长度,RSA算法把每一块明文转化为与密钥长度相同的密文块。密钥越长,加密效果越好,但开销也大。常用128bit-512bit长度的密钥,具有非常高的加密强度。硬件实现的最快的RSA算法所消耗的时间也是DES算法的1000倍。
RSA属于密钥传输(交换)加密,比较知名的应用SSL、PGP都成功应用了RSA算法。
MD5
MD5,即Message-Digest Algorithm 5(信息-摘要算法),它是一种基于杂凑函数(HASH)的密码算法,由RSA的设计者R.Rivest于20世纪90年代初开发出来。
MD5的最大作用在于,将不同格式的大容量文件信息在用数字签名软件来签署私人密钥前“压缩”成一种保密的格式,关键之处在于--这种“压缩”是不可逆的。
MD5的典型应用是对一段信息产生信息摘要(Message-Digest),防篡改。MD5算法通过其不可逆的字符串变换算法,产生了一个唯一的MD5信息摘要。如果有第三方认证机构,则MD5就可以防止文件作者“抵赖”,即所谓的数字签名。
MD5算法:以512位分组来处理输入的信息,且每一个分组又被划分为16个32位子分组。经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32为分组级联后将生成一个128位散列值。
2004年8月17日的美国加州圣巴巴拉的国际密码学会议(Crypto’2004)上,来自中国山东大学的王小云教授做了破译MD5、HAVAL-128、MD4和RIPEMD算法的报告,公布了MD系列算法的破解结果。在数小时内,给出的算法可以使两个文件可以产生相同的“指纹”。可见这种方法并不是万能的。