2010年及以后的密码破解
我在最近几天看了一下密码学和相关的问题,现在我很困惑。我有一个关于密码强度的问题,希望有人能通过分享他们如何思考以下问题来澄清我的困惑。我正在为这些事情着迷,但需要花时间以其他方式:-)2010年及以后的密码破解
假设我们有一个由大写和小写字母字符,数字和常用符号组成的八位密码。这意味着我们有96^8 = = 7.2万亿个不同的可能密码。
据我所知,至少有两种方法来破解这个密码。一种是尝试一种暴力攻击,我们试图猜测每个可能的字符组合。现代处理器(2010年,例如Core i7 Extreme)每秒能猜出多少个密码(单个密码猜测需要多少指令?为什么)?我的猜测是,需要几年时间的现代处理器才能打破这样的密码。
另一种方法是获取由操作系统存储的密码的散列,然后搜索冲突。根据所使用的散列类型的不同,我们可能比暴力破解更快得到密码。关于此的若干问题:
- 上述句子中的断言是否正确?
- 我该如何考虑查找MD4,MD5等散列冲突的时间?
最后,无论使用AES-128/256的文件加密强度如何,弱链接仍然是我使用的en /解密密码。即使破解密码文本的时间要比宇宙的寿命还要长,对我的解密/加密密码(猜测密码,然后尝试解密文件,尝试下一个密码......)的暴力破解可能会比以前更成功比宇宙的末日还要晚。那是对的吗?
我会很感激,如果人们可以怜悯我,帮助我思考这些可能很简单的问题,以便我可以重新工作。
据我所知,至少有两个 方法来打破这个密码。 一个是尝试蛮力攻击 我们试图猜测每个可能的 字符的组合。现代处理器(例如 2010,Core i7 Extreme for eg)有多少个 密码可以猜出 每秒(有多少指令 单个密码猜测需要以及为什么)?
正如您所看到的,这取决于所使用的算法。 SHA1是一种常见(虽然很差)的选择,所以我们来考虑一下。
软件中的best SHA1 implementations声称在1024字节块上每字节少至5.8个周期;让我们慷慨大方,并假设它在单个512位块上效率很高;这意味着每块371.2个周期,或者相当于每个密码猜测。在你建议的处理器上,其中Wikipedia claims的处理能力为147,600 MIPS,对于整个处理器来说,每个内核每秒可以有4亿次的猜测,或者每秒不到23亿次。请注意,这些都非常乐观,但至少应该保持在球场上。
另一种可能性是专用硬件:this声称在FPGA上运行,每块有82个时钟周期,运行速度为350MHz - 这听起来并不令人印象深刻,每秒只有420万次猜测,直到你认为只有在每个内核14,500个门,您可以构建一个很多这些大小的Core i7。
还要记住,一个好的密码散列方案会重复散列密码 - 数百甚至数千次 - 这会使您必须以相同的因子完成的工作量增加。
但是,如果你没有权限访问密码哈希值 - 这通常是不可能的,所有这些都是不相关的。在这种情况下,你受限于你猜测的速度,而一个设计良好的系统很容易检测到你的暴力攻击,并将你关闭,使得密码的大小有些不相关。
另一种方法将包括 获得我的密码的哈希由操作系统存储 然后 搜索冲突。根据 使用的散列类型,我们可能会得到 的密码比通过 暴力破解更快。有关 若干问题关于此:
上述句子 中的说法是否正确?
不完全是。你似乎已经假设你在第一个问题中有密码散列。蛮力攻击是搜索每个可能的密码 - 他们不是两个截然不同的东西。
我怎么觉得大概需要 找到冲突的MD4,MD5的时间等 哈希?
目前还没有已知的针对MD5或SHA1的实际原像攻击。我不确定MD4,但现在没有人正确地使用它!
最后,不管 强度的使用 AES-二百五十六分之一百二十八文件加密,薄弱环节仍然是用我的 EN /解密密码。即使 破密文将采取比 宇宙的寿命更长 ,我 德/加密密码蛮力攻击(猜 密码,然后尝试解密文件, 尝试下密码...) ,可能会比 宇宙的末尾早成功 。那是对的吗?
正确,这就是为什么好的加密系统不会直接使用密码生成密钥加密消息,而是使用其他系统(如公钥加密),要求攻击者首先获取私钥(应该难以摆脱),然后试图破解密码。
我不确定你的意思是什么“断言”?当然,它可能会更快。 但是,一般来说,您不必担心使用散列方法作为攻击媒介。发现这些碰撞在理论上应该是非常困难的(阅读:不切实际),但是如果有算法可以快速确定碰撞,那么相应的散列算法就很简单并且简单地被破坏,所有依赖它的应用程序都必须交换它另一个。
你不知道。你应该坚持使用未知的算法。例如,MD5和SHA1被认为是坏的。尽管似乎并没有真正有效的应用来实际发现碰撞,但研究人员认为它可能即将到来。目前,f.ex.在MD5上最着名的原像攻击对于大于100的东西的威力具有2的复杂度。考虑到这比宇宙中的原子数量多,但已经被认为是不安全的,所以甚至不必担心这些算法考虑安全。
那里不知道。
是的,在蛮力攻击方面,我仍然认为猜测再猜的方法是最实用的。
为了让你的头散尽一点点考虑这样的:你要多久才能安全地存储信息?大多数情况下,真正需要一到两年的时间,在这种情况下,正常的AES-256应该可以保持正常。如果你需要更长时间的安全性,那么你应该尽可能选择最大的密钥,并希望获得最好的安全性,但是不能保证。甚至连臭名昭着的一次性垫也不会让你摆脱这个问题。
嗨,弗兰克,断言是,给予密码哈希的findind碰撞比强制密码更快/更实用。你的建议(不要使用破坏的算法)很好,但你并不总是能控制这个。例如,Mac OS X似乎在使用SHA-1创建密码哈希。显然有算法可以在2^63操作中找到SHA-1散列冲突。这听起来不太好。 – mttr 2010-05-14 12:10:15
MD5和SHA1因冲突攻击而被破解,而不是原始图像攻击,这是使密码哈希易受攻击的必要条件。虽然我也不会推荐他们,但我不知道任何“相信它可能即将到来”的研究人员。 – 2010-05-14 14:34:05
密码的更大问题是它们很少真正是随机的。很多人会在密码中使用全部或部分字词,这意味着使用字典进行攻击会大大减少必须搜索可能密码的空间。即使密码是由一个人“随机”生成的(不使用机械辅助,如伪随机生成器),我们也会产生无意识的偏见,影响我们如何做出“随机”的东西,这可以被攻击者利用。
另一个问题是人们会经常使用相同的密码进行多种不同的登录。并非所有登录都是密码安全的;实际上,仍然有应用程序以纯文本的形式传输密码。他们也容易被键盘记录器捕获,而这些记录往往可以通过看起来无害的载体传输,如USB拇指驱动器。
这是迄今为止我在这个问题上的最新进展。
的处理器指令的数量的单个密码猜测+解密周期需要的是,当然,依赖于硬件和解密算法。我不知道如何正确地思考这个问题,但我的猜测是,一个这样的循环可能需要大约1000条指令。现在,如果我们采用能够达到150,000 MIPS的英特尔酷睿i7至尊版CPU,那么这给我们带来了每秒150,000,000吉尼斯的数量,您今天可以轻松购买的个人电脑即可实现。
所以对于作为问题描述的密码(比如,密码为AES256加密文件),蛮力试图打破它,能够成功在不到556天。
如果1000个指令的一个猜测解密周期的假设是正确的,那么一个标准的PC,你可以买到今天可在不到两年的时间破解你的AES256加密的文件这样的密码。唷,谜语解决了。
我的结论是,八位字母+符号字符仍足以让最实用的目的。而在两年时间里,我们都必须学会记住甚至更长的密码:-)
我不能回答数量问题,而是:
您的可能性计算的8个字符的密码假设所有的组合都是可能的,包括那些非常难以记忆或打字的组合。通常,这种类型的密码往往是在某种加密的容器中,并带有其他密码。人们实际使用的密码倾向于生活在该范围的较小部分。更不用说7.2E15对于一个坚定的攻击者是不够的。
好操作系统试图竭尽所能地隐藏实际的密码,此外他们通过插入一些随机的字符转换成密码哈希(当然,节约盐)盐的密码。这意味着制作一个可能密码散列的“彩虹表”并不实用。
但是,您需要考虑的是威胁,这里有四个重要组件。
你在捍卫谁?在街上的青少年孩子和国家安全局之间有很大的区别。脚本小子将尝试在家中通过互联网传递的内容,而国家安全局将使用专家和计算能力。其他人都介于两者之间。
你有多直接针对?如果入侵者试图在系统上查找帐户,则您的密码不必牢不可破,比系统上最弱的帐户要困难得多。
您希望阻止入侵者多久?一些信息将在两年后过时,其他信息可能会持续很长时间。作为推论,预期的攻击者有多确定?
如果您的帐户被分解成多么糟糕?如果你闯入我的Facebook账户,你可以发布据称来自我的东西,除此之外,你不会得到任何不易获取的信息。如果你闯入我的一个在线银行账户,我会更加关注。
良好的操作系统永远不会存储实际的密码,但它的一些签名。当用户输入密码时,其签名将被计算并与系统中存储的密码进行比较。 Unix从那时起就是这样工作的。 – lhf 2010-05-14 14:47:29
如果你使用加密,你的哈希不应该(也不会)被保存在任何地方。所以没有碰撞攻击是可能的。 – 2010-05-14 13:54:58
的确如此。这个问题有两种情况。一个是通过冲突检索密码的可行性,以及即使没有散列密码也可以强制密码的可行性。 – mttr 2010-05-14 14:10:39