欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

[翻译]深入了解MD4,MD5,SHA哈希密码算法与破解技术

[翻译]深入了解MD4,MD5,SHA哈希密码算法与破解技术

此文前几日发在我的知乎专栏微博并得到不错的阅读量和赞赏、

微博阅读已破两百万


----------------------你就当上面是个广告好了,版主可删-----------------------------

简介
密码(password)是最广泛使用的认证系统之一,防止未经授权的用户访问系统,无论是离线还是在线。在大多数系统中,密码是通过加密存储的,以便为每个用户提供安全性。然而,在这些密码的加密之内,仍然存在漏洞。本文将回顾关于密码哈希(hash)函数的学术和出版文献,特别指出MD4,MD5,SHA算法以及在Linux操作系统中使用Salt字符串。

在此之后,洞察密码破解的方法为检验(reviews),确定字典攻击,暴力攻击和彩虹表(Rainbow Table)的使用。本次审查将允许更深入地了解安全功能和可能的漏洞在此机制内进行调查后。调查将使用UNIX开发的软件John Ripper和RainbowCrack来查看最常见的密码破解方法之一。

John Ripper是一个密码破解器,它将多密码密码破解技术组合到一个程序中,更具体地说,利用字典攻击和强力方法来识别用户的密码,并且可以针对各种密码加密算法运行。暴力和字典攻击生成所有可能的明文密码,因为它处理和比较哈希与目标哈希,一旦匹配的密码可以识别。彩虹表攻击是一种以空间换时间的黑客攻击方法,它将进行预计算,并把结果存储在所谓的彩虹表中。

彩虹表(彩虹表如何工作?)包含目标密码哈希运行直到它达到匹配的纯文本/散列链的列表。调查将首先主要在Linux操作系统中使用John Ripper; 对该系统中的密码文件运行字典/强力攻击,其使用SHA512算法。在Windows操作系统将调查Rainbow攻击,以从MD5哈希函数提取密码。我们将调查这两个软件,以允许解释哈希函数和密码破解技术在现代操作系统及其中的文件系统。下列调查突出并解释了使用破解技术作为访问用户系统的手段突出显示了在入侵方法和计算机取证中的使用。此外,这将提供对密码哈希算法的安全功能的进一步了解,并识别关键计算机网络安全中的漏洞,允许我们批判性地评估,理解和部署这些方法。

哈希函数(MD4,SHA,MD5和DES)和Salt字符串

所有系统通常都需要使用用户名和密码进行身份验证。解释了获得访问的典型实例分为两个阶段:

认证(Authentication) - 这是系统检查标识符的地方; 这可能是一个电子邮件地址或用户名。然后它将根据系统的密码文件检查密码,如果匹配正确,则允许访问。

授权(Authorisation) - 这是系统根据其数据库检查标识符或密码,以识别用户在该系统中的权限级别。

所以大多数系统都以加密格式存储和发送密码,以最大限度地防御潜在的攻击和漏洞。大多数系统包含使用输入字符串创建输出字符串的单向函数。

哈希算法是加密口令的最受欢迎的方法。当用户以明文形式创建密码时,它通过散列算法运行以产生存储在文件系统中的密码文本。三种最广泛使用的算法是MD5,SHA和RIPEMD; 然而所有算法都来自MD4的格式

总结了所使用的主要算法:

·MD4:具有3轮16步,输出位长度为128位。

·MD5:具有4轮16步,输出位长128位。

·SHA-1:具有4个20阶的步长和160位的输出位长度。

·RIPEMD-160:具有5轮16步,输出位长160位。

·SHA-256:具有64轮单步,输出位长度为256位。

·SHA-384:实际上与SHA-512相同,除了输出被截断为383位。

·SHA-512:具有80个单步的轮数和512位的输出位长度。

Linux和Windows之间的安全特性的主要区别是UNIX系统使用Salt Strings。如(Whitaker和Newman,2005)所述,salt字符串生成随机生成的值,该值随着使用密码哈希处理的每个密码存储。这允许为系统中的每个密码提供额外的安全性,特别是对于简单密码或重用密码。

调查字典和彩虹攻击密码哈希

首先,我们将使用John The Ripper来研究Linux内字典攻击和暴力攻击的功能。大多数Linux系统可以选择使用哪个哈希函数来存储密码,在Linux系统中,使用的哈希算法在文件/etc/login.defs中定义,以查看我们可以执行的算法:

$ grep -A 18 ENCRYPT_METHOD /etc/login.defs

在这里我们已经确定这个系统使用SHA512如上所述。在此系统上,所用的用户可以访问/ etc / shadow文件

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功