在计算机网络安全领域中,为了防止信息在传送的过程中被非法窃听,保证信息的机密性,采用数据加密技术对信息进行加密,这是在前面学习的内容;另一方面,为了防止信息被篡改或伪造,保证信息的完整性,可以使用报文鉴别技术。
所谓报文鉴别,就是验证对象身份的过程,如验证用户身份、网址或数据串的完整性等,保证其他人不能冒名顶替。因此,报文鉴别就是信息在网络通信的过程中,通信的接收方能够验证所收到的报文的真伪的过程,包括验证发送方的身份、发送时间、报文内容等。
那么,为什么不直接采用前面所讲过的数据加密技术对所要发送的报文进行加密呢,这样不是也可以达到防止其他人篡改和伪造的目的吗?这主要是考虑计算效率的问题。因为在特定的计算机网络应用中,很多报文是不需要进行加密的,而仅仅要求报文应该是完整的、不被伪造的。例如,有关上网注意事项的报文就不需要加密,而只需要保证其完整性和不被篡改即可。如果对这样的报文也进行加密和解密,将大大增加计算的开销,是不必要的。对此,可以采用相对简单的报文鉴别算法来达到目的。
目前,经常采用报文摘要(Message Digest,也称消息摘要)算法来实现报文鉴别。报文摘要的实现示意如图4-12所示。下面简单地介绍报文摘要的基本原理。
图4-12 报文摘要实现示意图
(1)在发送方,将长度不定的报文m经过报文摘要算法(也称为MD算法)运算后,得到长度固定的报文H(m)。H(m)称为报文摘要。(2)使用密钥K对报文H(m)进行加密,生成报文摘要密文EK(H(m))并将其拼接在
报文m上,一起发送到接收方。
(3)在接收方,接收到报文m和报文摘要密文EK(H(m))后,将报文摘要密文解密还原为H(m)。
(4)将接收到的报文m经过MD算法运算得到报文摘要,并将该报文摘要和H(m)比较,判断两者是否相同,从而判断接收到的报文是否是发送端发送的。
这样,只对长度较短的报文摘要H(m)进行加密,而不是对整个报文m进行加密,提高了计算的效率,却达到了同样的效果。
为了实现报文鉴别的不可篡改、不可伪造的目的,MD算法必须满足下面的几个条件。
(1)给定一个报文m,计算其报文摘要H(m)是非常容易的。
(2)给定一个报文摘要值y,想得到一个报文x,使H(x)=y是很难的,或者即使能够得到结果,所付出的代价相对其获得的利益是很高的。也即报文摘要算法是单向、不可逆的。
(3)给定m,想找到另外一个m',使H(m)=H(m')是很难的。
这样,就保证了攻击者无法伪造另外一个报文m',使得H(m)=H(m'),从而达到了报文鉴别的目的。
报文和报文摘要的关系就如同一个人和他的一根头发的关系。通过头发(相当于“报文摘要”)能够判断是属于哪个人(相当于“报文”)的,但是通过头发不能还原出一个人的全部。
目前,报文摘要一般是采用单向散列函数(Hash Function,也称为哈希函数)来实现的,常用的单向散列函数算法有MD5算法、SHA算法等。
通常用“摔盘子”的过程来比喻单向散列函数的单向不可逆的运算过程:把一个完整的盘子摔烂是很容易的,这就好比通过报文m计算报文摘要H(m)的过程;而想通过盘子碎片还原出一个完整的盘子是很困难甚至不可能的,这就好比想通过报文摘要H(m)找出报文m的过程。
(一)MD5算法及其演示实验
MD5算法是在20世纪90年代初由MIT Laboratory for Computer Science和RSA Data Security Inc的Ronald L.Rivest开发出来,经MD2、MD3和MD4发展而来,提供了一种单向的哈希函数。MD5算法是以一个任意长度的信息作为输入,输出一个128位的报文摘要信息。MD5算法是对需要进行报文摘要的信息按512位分块处理的。首先对输入信息进行填充,使信息的长度等于512的倍数;然后对信息依次进行处理,每次处理512位。每次进行4轮,每轮16步,总共64步的信息变换处理,每次输出结果为128位,然后把前一次的输出结果作为后一次信息变换的输入,最后得到一个128位的哈希摘要结果。
MD5的安全性弱点在于其压缩函数的冲突已经被找到。1995年有论文指出,花费100万美元,设计寻找冲突的特制硬件设备,平均在24天内可以找出一个MD5的冲突(即找到两个不同的报文以产生同样的报文摘要)。但是,对于一个给定的报文摘要,要找到另外一个报文产生同样的报文摘要是不可行的。目前,MD5算法仍被认为是最安全的哈希算法之一,已经在很多应用领域中当成了标准使用,如在很多电子邮件应用程序中都用到了MD5算法。
MD5算法也是应对特洛伊木马程序的一个有效的工具。通过计算每个文件的数字签名,就可以检查文件是否被感染,或者是否被替换。
下面通过实验来进一步掌握MD5算法。
【实验目的】
通过对MD5加密和破解工具的使用,掌握MD5算法的作用及其安全性分析。
【实验原理】
MD5算法的工作原理。(www.daowen.com)
【实验环境】
一台预装Windows 7/Windows Server 2008/Windows Server 2003的主机。
软件工具:MD5Verify、MD5Crack。
【实验内容】
任务1:使用MD5Verify加密字符串和文件;对比MD5密文;使用MD5Verify可以通过MD5算法加密字符串和文件,计算出其报文摘要。
可以计算字符串“12345”的MD5密文,如图4-13所示。
还可以通过对比MD5密文判断密是否一致,如图4-14所示。
图4-13 使用MD5Verify加密字符串
图4-14 使用MD5Verify对比MD5密文
任务2:使用MD5Crack破解MD5密文。
MD5Crack是一款能够破解MD5密文的小工具。将把图4-13中生成的MD5密文复制到MD5Crack中,并设置字符集为“数字”,单击按钮进行MD5破解,如图4-15所示。由于原来的MD5明文都是数字并且比较简单,所以破解将很快完成。如果MD5明文既有数字又有字母,破解将花费非常长的时间,这进一步说明了MD5算法较高的安全性。
图4-15 使用MD5Crack破解MD5密文
(二)SHA(Secure Hash Algorithm)
SHA是1992年由美国国家安全局(National Security Agency,NSA)研制并提供给美国国家标准和技术研究所(National Institute of Standards and Technology,NIST)的。原始的版本通常称为SHA或者SHA-0,1993年公布为联邦信息处理标准FIPS 180。后来NSA公开了SHA的一个弱点,导致1995年出现了一个修正的标准文件FIPS 180-1。这个文件描述了经过改进的版本,即SHA-1,现在是NIST的推荐算法。
SHA-1算法对长度不超过264的报文产生一个160位的报文摘要。与MD5算法一样,也是对需要进行报文摘要的信息按512位分块处理的。当接收到报文的时候,这个报文摘要可以用来验证数据的完整性。在传输的过程中,数据很可能会发生变化,这时候就会产生不同的报文摘要。
SHA-1算法的安全性比MD5算法高,经过加密专家多年来的发展和改进已日益完善,现在已成为公认的最安全的散列算法之一,并被广泛使用。
SHA家族除了SHA-1算法之外,还有SHA-224、SHA-256、SHA-384和SHA-512等4个算法。这四者有时并称为SHA-2,其安全性较高,至今尚未出现对SHA-2有效的攻击。
(三)报文鉴别技术的实际应用
报文鉴别技术在实际中应用广泛。在Windows操作系统中,就使用了报文鉴别技术来产生每个账户密码的Hash值。图4-16表示用账户审计工具LC5审计出来的Windows XP操作系统的账号及其密码。从图4-16中可以看到,Windows XP操作系统中默认保留了每个账户密码的LM和NTLM两种Hash值。关于账户审计工具LC5和LM、NTLM加密的详细内容,可以参考第六章中Windows Server操作系统安全的相关内容。
图4-16 Windows XP操作系统中账户密码的Hash值
同样,在银行、证券等很多安全性较好的系统中,用户设置的密码信息也是转换为Hash值之后再保存到系统中的。由于上面所讲的Hash值的第3个特点,这样的设计保证了用户只有输入原先设置的正确密码,才能通过Hash值的比较验证,从而正常登录系统。同时,这样的设计也保证了密码信息的安全性,如果黑客得到了系统后台的数据库文件,从中最多也只能看到用户密码信息的Hash值,而无法还原出原来的密码。
另外,在实际应用中,由于直接对大文档进行数字签名很费时,所以通常采用先对大文档生成报文摘要,再对报文摘要进行数字签名的方法。而后,发送者将原始文档和签名后的文档一起发送给接收者。接收者用发送者的公钥破解出报文摘要,再将其与自己通过收到的原始文档计算出来的报文摘要相比较,从而验证文档的完整性。如果发送的信息需要保密,可以使用对称加密算法对要发送的“报文摘要+原始文档”进行加密。具体的过程可以参考PGP系统的基本工作原理。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。