2024年1月18日发(作者:)
封面
作者:PanHongliang
仅供个人学习
Hash函数在信息安全中的重要运用
学号:姓名:罗杨
摘要:随着计算机和Internet在各行各业的广泛应用,信息高速化的交互
传递过程中,信息安全问题备受关注。而基于hash函数的各种算法的产生和运用,为信息上一把牢固的安全之锁,md5、sha-1文件校验,加密存储,数字签名,PKI建设等对各种信息有充分的安全保障,能有效地防止攻击,保证真实信息不被修改或者泄露。
关键词:哈希 hash md5 数字签名 PKI 散列 校验 公钥 私钥
一、定义
Hash,一般翻译做"散列",也有直接音译为"哈希"的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。HASH主要用于信息安全领域中加密算法,他把一些不同长度的信息转化成杂乱的128位的编码里,叫做Hash值。
二、 算法举例
1、MD4
MD4(RFC 1320)是 MIT 的 Ronald L. Rivest 在 1990 年设计的,MD 是
Message Digest 的缩写。它适用在32位字长的处理器上用高速软件实现--它是基于 32 位操作数的位操作来实现的。
MD4散列的例子:
MD4 ("") = 31d6cfe0d16ae931b73c59d7e0c089c0
MD4 ("a") = bde52cb31de33e46245e05fbdbd6fb24
MD4 ("abc") = a448017aaf21d8525fc10ae87aa6729d
MD4 ("message digest") = d9130a8164549fe818874806e1c7014b
2、MD5
MD5(RFC 1321)是 Rivest 于1991年对MD4的改进版本。它对输入仍以512位分组,其输出是4个32位字的级联,与 MD4 相同。MD5比MD4来得复杂,并且速度较之要慢一点,但更安全,在抗分析和抗差分方面表现更好。
MD5散列例子:
MD5 ("") = d41d8cd98f00b204e9800998ecf8427e
MD5 ("a") = 0cc175b9c0f1b6a831c399e269772661
MD5 ("abc") = 900150983cd24fb0d6963f7d28e17f72
MD5 ("message digest") = f96b697d7cb7938d525a2f31aaf161d0
3、SHA1
SHA1是由NIST NSA设计为同DSA一起使用的,它对长度小于264的输入,产生长度为160bit的散列值,因此抗穷举(brute-force)性更好。
SHA1散列的例子:
SHA1 ("abc") = a9993e36 4706816a ba3e2571 7850c26c 9cd0d89d
SHA1
("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq")
= 84983e44 1c3bd26e baae4aa1 f95129e5 e54670f1
MD5 和 SHA1 可以说是目前应用最广泛的Hash算法,而它们都是以 MD4 为基础设计的。
三、函数特性
1、单向性(one-way),从预映射,能够简单迅速的得到散列值,而在计算上不可能构造一个预映射,使其散列结果等于某个特定的散列值,即构造相应的M=H-1(h)不可行。这样,散列值就能在统计上唯一的表征输入值,因此,密码学上的
Hash 又被称为"消息摘要(message digest)",就是要求能方便的将"消息"进行"摘要",但在"摘要"中无法得到比"摘要"本身更多的关于"消息"的信息。
2、是抗冲突性(collision-resistant),即在统计上无法产生2个散列值相同的预映射。给定M,计算上无法找到M',满足H(M)=H(M') ,此谓弱抗冲突性;计算上也难以寻找一对任意的M和M',使满足H(M)=H(M') ,此谓强抗冲突性。要求"强抗冲突性"主要是为了防范所谓"生日攻击(birthday attack)",在一个10人的团体中,你能找到和你生日相同的人的概率是2.4%,而在同一团体中,有2人生日相同的概率是11.7%。类似的,当预映射的空间很大的情况下,算法必须有足够的强度来保证不能轻易找到"相同生日"的人。
四、应用举例
1、文件校验
MD5 Hash算法的"数字指纹"特性,使它成为目前应用最广泛的一种文件完整性校验算法,它常被用在下面的2种情况下:
第一是文件传送后的校验,将得到的目标文件计算 md5 checksum,与源文件的md5 checksum 比对,由两者 md5 checksum 的一致性,可以从统计上保证2个文件的每一个码元也是完全相同的。这可以检验文件传输过程中是否出现错误,更重要的是可以保证文件在传输过程中未被恶意篡改。一个很典型的应用是ftp服务,用户可以用来保证多次断点续传,特别是从镜像站点下载的文件的正确性。
第二是用作保存二进制文件系统的数字指纹,以便检测文件系统是否未经允许的被修改。不少系统管理/系统安全软件都提供这一文件系统完整性评估的功能,在系统初始安装完毕后,建立对文件系统的基础校验和数据库,因为散列校验和的长度很小,它们可以方便的被存放在容量很小的存储介质上。此后,可以定期或根据需要,再次计算文件系统的校验和,一旦发现与原来保存的值有不匹配,说明该文件已经被非法修改,或者是被病毒感染,或者被木马程序替代。
下面是一款MD5校验工具的使用:
2、数字签名
运用非对称加密体系与hash函数结合实现数字签名,也就是应用自己的私钥对散列值进行加密所得到的结果就是“数字签名”。
电子邮件中实现数字签名过程如下图:
发件人:
收件人:
3、PKI
公钥基础设施(PKI)是一种运用公钥的概念与技术来实施并提供安全服务的具有普遍适用性的网络安全基础设施。而Hash函数在PKI中有着极其重要的地位。运用Hash函数进行数据源认证和数据的完整性验证,还可以获得消息摘要。
消息摘要有两个基本属性:两个不同的报文难以生成相同的消息摘要;难以对一个指定的摘要生成一个报文,只能由报文推算出消息摘要。
一台自动取款机(ATM)不需要解密一个消费者的个人标识数字(PIN码)。磁条卡将顾客的代码单向地加密成一段HASH值,一旦插卡时,ATM机将计算用户PIN码的HASH值并产生一个结果,然后再将这段结果与用户卡上的HASH值比较。使用这种方法,PIN码是安全的,即使那些维护修理ATM机的人员也无法获取用户的信息。
4、网站和系统安全
在设计网站程序时,常常要涉及到将数据加密后存入数据库的问题,比如系统用户注册后的用户名和密码存放,后台管理员用户和密码的存放,如果采用明码存放于数据库中,一旦数据库被别人恶意下载并打开后,就能直接看到用户名和密码,从而造成系统用户信息的泄漏,为系统带来灭顶之灾。
针对以上问题,解决的办法一般是将数据加密后再存入数据库,常见的是将用户名明码存放,将密码加密后存放。当然,对于加密的算法也有一定的要求,那就是加密信息应该是单向、不可逆的,不能够被其他算法还原。所以运用了hash函数的md5算法在网站信息安全中起到了重要的作用。
如以下ASP网站中,为md5算法函数的子程序,对于需要加密的数据,可以通过文件包含和调用md5()函数来实现数据传输前、存储前的加密。
内部md5函数举例:
数据库加密过的字段:
在UNIX系统中用户的密码就是以MD5(或其它类似的算法)经加密后存储在文件系统中。当用户登录的时候,系统把用户输入的密码计算成MD5值,然后再去和保存在文件系统中的MD5值进行比较,进而确定输入的密码是否正确。通过这样的步骤,系统在并不知道用户密码的明码的情况下就可以确定用户登录系统的合法性。这不但可以避免用户的密码被具有系统管理员权限的用户知道,而且还在一定程度上增加了密码被破解的难度。
五、hash的作用意义
散列算法长期以来一直在计算机科学中大量应用,对于计算机安全、网络安全有突出贡献,随着现代密码学的发展,单向散列函数已经成为信息安全领域中一个重要的结构模块,我们有理由深入研究其设计理论和应用方法。
参考文献:
【1】 网络安全技术纵览(一) 天极网
【2】 应用密码学,Bruce Schneier著,吴世忠等译。
【3】 中国PKI论坛
【4】 张辉岳《绿盟安全月刊》
【5】 MIT Laboratory for Computer Scienceand RSA Data Security, Inc.
R. RivestApril 1992
版权申明
本文部分内容,包括文字、图片、以及设计等在网上搜集整理。版权为潘宏亮个人所有
This article includes some parts, including text,
pictures, and design. Copyright is Pan Hongliang's personal
ownership.
用户可将本文的内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。除此以外,将本文任何内容或服务用于其他用途时,须征得本人及相关权利人的书面许可,并支付报酬。
Users may use the contents or services of this
article for personal study, research or appreciation, and
other non-commercial or non-profit purposes, but at the
same time, they shall abide by the provisions of copyright
law and other relevant laws, and shall not infringe upon
the legitimate rights of this website and its relevant
obligees. In addition, when any content or service of this
article is used for other purposes, written permission and
remuneration shall be obtained from the person concerned
and the relevant obligee.
转载或引用本文内容必须是以新闻性或资料性公共免费信息为使用目的的合理、善意引用,不得对本文内容原意进行曲解、修改,并自负版权等法律责任。
Reproduction or quotation of the content of this
article must be reasonable and good-faith citation for the
use of news or informative public free information. It
shall not misinterpret or modify the original intention of
the content of this article, and shall bear legal liability
such as copyright.


发布评论