1、本科生毕业设计(论文)外文翻译MD5 算法的安全性分析摘要哈希算法是常用的密码散列转换理论上不可破译。本文分析了散列算法MD5 密码存储安全风险和讨论不同的解决方案,如盐和迭代散列。我们建议使用 MD5 密码存储的一种新方法,利用外部信息,计算盐和随机密钥加密的密码的 MD5 计算之前。我们建议使用键拉伸使哈希计算速度较慢,使用 XOR 加密做最后的散列值可能在任何标准的彩虹表找到。关键词组成;MD5;密码存储安全;数据安全;字典攻击;彩虹表一 介绍随着计算机技术的出现,在数据库中存储信息,而不是存储在纸上的文件变得更加高效。网络应用程序,需要用户身份验证,通常通过比较它们的真正的密码,这是通
2、常存储在该公司的私人数据库,验证输入的密码。如果数据库和因此这些密码被攻破,攻击者将有无限的访问这些用户的个人。现在,数据库使用哈希算法来保护存储的密码,但仍有安全漏洞。最近在 2012,俄罗斯黑客公布大名单的破解密码的知名社交网站如 LinkedIn。这些攻击被认为是成功的,由于使用了一个弱哈希算法。二 散列函数哈希函数是一种单向加密函数接受一个可变大小的输入明文 M,产生一个固定大小的哈希输出。它是难以破译的哈希和任何试图破解它几乎是不可行的。一个“安全”的哈希函数应该能够抵抗图像攻击和碰撞攻击。由于鸽笼原理和生日悖论,会有一定的投入,将产生相同的散列结果。输出长度是固定大小的128 位,
3、使 2128 个可能的输出哈希值。这个值,因为它可能看起来大,是不是无限的,因此造成的碰撞。A. MD5 算法MD5(消息摘要算法 5)是由 Ron Rivest 在 1991。MD5 处理可变长度的消息转换成固定长度的输出 128 位。MD5 是一种常用的哈希函数。它的工作块的512 位,并处理每个块通过 4 轮,其中每一轮依次处理 16 个子块(每 32 位) 。在处理前,将 512 位信息分为 16 个子块。如果一个消息块是不到 512 位,它是填充如图 1 所示。该算法的详细解释可以在1找到。三 MD5 算法在密码存储安全方面的应用它是存储在数据库中的密码明文高度不安全。为了提高密码的
4、安全,MD5算法可以用于哈希原密码的哈希值,而不是明文存储在数据库中。在认证过程中,输入密码的 MD5 散列,也以类似的方式,和结果的哈希值与特定的用户数据库中的哈希值进行比较。四 MD5 算法的安全性分析MD5 算法是容易攻击的两种主要类型:字典攻击和彩虹表。A. 字典攻击在字典攻击,攻击者尝试所有可能的密码在一个详尽的列表,称为字典。攻击者哈希密码的字典和执行对妥协的哈希密码的二进制搜索。通过预计算这些可能的密码的哈希值,并将它们存储在一个哈希表中,该方法可以更快地进行计算。B. 彩虹表彩虹表是由哈希链组成的,它们比哈希表更有效,因为它们优化了存储需求,但查找的速度稍慢一些。彩虹表不同于哈
5、希表,它们是使用减少和哈希函数创建的。还原功能转换一个哈希值明文。明文不原始明文的哈希值是生成的,但另一个。通过交替的哈希函数的还原功能,交替的密码和哈希值的链形成。只有第一(链的起始点)和最后一个明文(链的终点)生成存储在表。破译密码,我们首先处理密码通过还原功能,直到我们找到一个匹配一个链的终点。然后我们把链对应的起点和再生散列链找到的原始明文密码。彩虹表是非常容易在网上现在。有很多密码破解系统和网站使用彩虹表,例如,ophcrack。当然,使用彩虹表不保证 100%的成功率,破解密码系统。然而,更大的字符集用于创建彩虹表和较长的哈希链的长度,更大的将彩虹表。五 对策研究A. 信息熵密码强
6、度通常用信息熵来衡量。简单来说,信息熵越高,密码越强,就越难破解它。一个密码的 6 个字符将要求只有 26 试图用尽所有可能在蛮力攻击,而密码与 42 个字符将需要 242 个尝试。可以看出,密码越长,字符集的字符越大,密码越强。作为最佳实践和初步要求,应用程序应该坚持用户在注册过程中使用了强大的密码。强密码在字典中存在的风险较小。常见的简单的密码,如“123456”已经被微软的 Hotmail 禁止。B. 腌制最常见的原因之一,成功的密码破解攻击像对 LinkedIn 是因为他们使用的哈希值。这使得黑客利用彩虹表破解系统容易得多,特别是考虑到很多用户使用非常普遍,简单的密码,这些密码散列结果
7、相似相似。盐是由一连串的追加到明文然后散列特征信息辅助件。盐使密码更耐彩虹表为盐渍哈希密码将有更高的信息熵,因此不太可能存在于预先计算的彩虹表。通常情况下,盐应该是至少 48 位。盐可以用以下方法实现:1) 所有的密码单盐:因为盐是足够长的和复杂的,一个标准的彩虹表,不能用于破译咸哈希。然而,2 个相同的密码仍然会产生相同的哈希。2) 不同的随机密码并储存盐盐在数据库本身:如果我们使用不同的盐的每个密码,密码将有不同的哈希值相同的两。攻击者已经生成每个用户不同的彩虹表,这使得攻击者破解哈希计算难度。这些盐可以以明文存储在数据库中。盐的目的不是秘密,但要有足够的随机性来打败彩虹表的使用。3) 使
8、用现有的列值:一个现有的列值,如用户名可以用作盐。此解决方案类似于上面讨论的二次解决方案。它击败了标准的彩虹表的使用,但黑客可能会产生一个特定的用户名,例如, “根”或“管理员”彩虹表。4) 使用可变定位计算盐:盐的位置可以前缀(盐添加在前面的密码),中缀(附加在密码盐(盐)或后缀附加在密码结束) 。如果盐的位置是随机的,然后破解的密码是更难。例如,我们可以设置盐位置等于密码长度的模 3。盐可以通过使用一个随机的字符序列(存储在数据库中) ,并使用其他字符(嵌入在代码中)计算。例如,盐可以是一个组合的前两个字母的用户名,随机序列的字符和最后 2 个字母的用户名。5) 使用可变定位计算盐包括外部
9、数据库和应用程序代码信息:黑客现在已经进入数据库,包含应用程序服务器。他还需要获得破解密码所需的附加信息。C. MD5 处理的改进下面的方法可以用来提高 MD5 处理:1) 改进的哈希函数:哈希计算函数被改变,例如使用下列函数之一,如图所示(1) , (2)和(3):hash = Hash (password + salt) (1)hash = Hash (Hash (password) + salt) (2)hash = Hash (password + salt + key) (3)2) 迭代散列:密码散列的次数。MD5 算法是一种快速的散列函数,即,它是计算计算速度快。迭代散列使得计算速
10、度较慢,因此计算更慢,更难以破解。通常可以做的迭代次数等于 1000。3) 密钥拉伸:这使得一个密码更耐预计算攻击,使攻击的工作量较大。使用迭代散列,其中一个弱密钥被输入到哈希算法和输出结果在一个更强的密钥。有 3 个关键的拉伸方法,这取决于用于迭代哈希的输入:a) 简单的关键拉伸:只有关键是哈希迭代,如(4) 。不含盐。key = Hash (key) (4)b) 密码:密码钥匙拉在 the used with the key are both in the环。c) salted the key:关键伸展,密码和盐是 used in the 环。this method is the best
11、 of the three key 拉伸的方法。4) 变换密码散列:之前在计算密码的 MD5 哈希值,后者是使用一个简单的密码转化法。5) 链接法和 XOR(异或)密码:如果迭代使用散列,从当前迭代输出哈希用于下一次迭代的输入。我们用一个简单的异或加密计算最终哈希“异或”所有迭代的哈希值。一个简单的异或密码通常是显示在表(5) 。如果密钥是随机的话,密文将破解几乎不可能。plaintext XOR key = ciphertext (5)D一种改进的 MD5 处理实例现在我们将展示我们如何哈希密码使用改进版本的 MD5 数据库。有五个主要步骤参与。首先,随机长度的随机长度是第一个产生。它的字符
12、集是 0-9,A-Z,a-z 。这个随机密钥字符串是用来生成复杂的密码,也存储在数据库中的密码验证后使用。其次,将密码转换为一个复杂的密码,通过柱状移位密码。假设随机密钥是“ydcia” ,密码是“crazyrichard” ,密码是先转换成一个 5 列的矩阵(同随机密钥长度)和空白细胞交替填入“*”和“”,如图所示。采用柱状移位密码,复杂的口令生成是“雅*交流* ridcrrzh ”。再次,盐是通过寻找与复杂的密码随机密钥字符串的异或值计算,排排。在我们的例子中,盐是“%我 B ”“”S6 * R。第四,为每个用户生成一个额外的 128 位随机信息字符串,并存储在一个外部文件中,例如在闪存驱
13、动器中。最后,对密码进行哈希运算使用一个公式的基础上,重点拉伸。哈希过程类似于一个密码块链接的方法,在一轮输出用于另一轮的输入,如图 3 所示。通过计算和前一轮一轮的散列值的异或结果,由此产生的散列值是不可能在任何标准的彩虹表找到。最后的密码是储存在数据库。该系统对用户进行认证通过计算哈希值(随机密钥是使用从数据库中检索) ,并与存储的密码。一个例子是哈希密码将出现在数据库如图 4 所示。整体算法可以概括为图 5。这里使用的初始化向量是附加信息,这是一个随机字符串的 128 位。每个用户具有不同的初始化向量值。六 性能分析首先,使用一个标准的彩虹表攻击会失败因为密码存储在数据库中并不是十六进制
14、的形式也不在任何标准的彩虹表存在。我们尝试了几个在线 MD5 解密工具如 http:/www.md5decrypter.co.uk/和下载的软件工具如该隐和阿贝尔。但是,既然他们都使用彩虹表的 MD5 哈希值,以十六进制形式和存储的哈希值是 ASCII,袭击已经失败,从一开始,如图 6 所示。同时,通过异或输出哈希值从每个迭代使得它几乎不可能找到原哈希输出在第一轮。一般来说,如果我们异或明文与密文计算的关键,我们可以重新通过异或密文得到明文与密钥。然而,如果密钥是随机的,那么它是几乎不可能回到明文。在我们的例子中,关键是完全随机的,因为我们是散列中间的哈希值,因此给出了最终的哈希值,这是不可能
15、的,以破译它。此外,即使用户有 2 个相同的密码,随机密钥用于加密的密码将是不同的,导致在不同的复杂的密码。此外,每个用户的初始化向量和盐是不同的。对于用户使用相同的密码,最终的哈希值将是完全不同的。七 结论密码存储安全是数据安全的一个重要方面,因为现在大多数系统都需要使用密码的身份验证方法。例如 MD5 的散列算法通常用于加密明文密码的字符串,在理论上无法解密黑客由于其单向加密功能。然而,随着时间的推移,攻击成为可能通过使用字典表和彩虹表。在本文中,我们讨论了不同的方法来阻止这些攻击:(1)一个强大的密码来减少它在词典中存在的概率的使用, (2)用盐,(3)关键的拉伸和迭代散列进行 MD5
16、计算慢, (4)链接的方法,在一个迭代输出用于下一次迭代的输入和每个密码不同的初始化向量的使用, (5)加密的密码哈希和前(6)异或密码做最后的散列值可能在任何一个彩虹表找到。所提出的方法的实现是用 C #作为编程语言和微软 SQL Server 数据库进行。与我们所提出的方法,攻击者将现在必须侵入到数据库中,服务器包含的应用程序代码以及外部文件。致谢本文报道了北京自然科学基金资助项目(批准号:4112037) 。作者要感谢和承认亲戚、朋友和同事的支持和帮助。参考文献1 Rivest, R. The MD5 message-digest algorithm. RFC 1321, 37 (Apr
17、il 1992).2 Zhang Shaolan, Xing Guobo, Yang Yixian, Improvement and Security Analysis on MD5 J. Computer Application, 2009, vol. 29(4):947-949.3 Xiaoling Zheng, JiDong Jin, Research for the Application and Safety of MD5 Algorithm in Password Authentication, 9th International Conference on Fuzzy Syste
18、ms and Knowledge Discovery, 2012.4 H. Mirvaziri, Kasmiran Jumari, Mahamod Ismail, Z. Mohd Hanapi, A new Hash Function Based on Combination of Existing Digest Algorithms , The 5th Student Conference on Research and Development SCOReD 2007, 11-12 December 2007, Malaysia.5 Md. Didarul Alam Chawdhury, a
19、nd A.H.M. Ashfak Habib, Security Enhancement of MD5 Hashed Passwords by using the Unused Bits of TCP Header, Proceedings of 11th International Conference on Computer and Information Technology (ICCIT 2008) 25-27 December, 2008, Khulna, BangladeshSecurity Analysis of MD5 algorithm in Password Storage
20、Mary Cindy Ah Kioon, ZhaoShun Wang and Shubra Deb Das School of Computer and Communication Engineering University of Science and Technology (USTB), Beijing Beijing 100083, China email: , and shubra_Abstract Hashing algorithms are commonly used to convert passwords into hashes which theoretically c
21、annot be deciphered. This paper analyses the security risks of the hashing algorithm MD5 in password storage and discusses different solutions, such as salts and iterative hashing. We propose a new approach to using MD5 in password storage by using external information, a calculated salt and a rando
22、m key to encrypt the password before the MD5 calculation. We suggest using key stretching to make the hash calculation slower and using XOR cipher to make the final hash value impossible to find in any standard rainbow table.Keywords-component; MD5; Password Storage Security; Data Security; Dictiona
23、ry attacks; Rainbow TablesI. INTRODUCTIONWith the advent of computer technology, it became more productive to store information in databases instead of storing in paper documents. Web applications, needing user authentication, typically validate the input passwords by comparing them to the real pass
24、words, which are commonly stored in the companys private databases. If the database and hence these passwords were to become compromised, the attackers would have unlimited access to these users personal. Nowadays, databases use a hash algorithm to secure the stored passwords but there are still sec
25、urity breaches. Recently in 2012, Russian hackers released a big list of cracked passwords from the well-known social networking sites including LinkedIn. These attacks were found to be successful due to the use of a weak hashing algorithm. II. HASH FUNCTION A hash function is a one-way encryption f
26、unction that takes a variable-size input plaintext m and generates a fixed- size hash output. It is computationally hard to decipher the hash and any attempt to crack it is practically infeasible. A “secure” hash function should be able to resist pre-image attacks and collision attacks. Due to the pigeonhole principle and birthday paradox, there will be some inputs that will produce the same hash result. The output length is of fixed size 128
Copyright © 2018-2021 Wenke99.com All rights reserved
工信部备案号:浙ICP备20026746号-2
公安局备案号:浙公网安备33038302330469号
本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。