我在过去几天看了一下密码学和相关问题,现在我很困惑。我有一个关于密码强度的问题,我希望有人可以通过分享他们如何通过以下问题思考来消除我的困惑。我对这些事情很着迷,但需要花费我的时间:-)
假设我们有一个八位数的密码,由大写和小写字母,数字和常用符号组成。这意味着我们有96 ^ 8~ = 7.2千万种不同的可能密码。
据我所知,至少有两种方法可以破解此密码。一种是尝试蛮力攻击,我们试图猜测每种可能的角色组合。现代处理器(2010年,Core i7 Extreme)每秒猜测多少密码(单个密码猜测需要多少指令以及为什么)?我的猜测是需要多年的现代处理器来破解这样的密码。
另一种方法包括获取操作系统存储的密码哈希值,然后搜索冲突。根据所使用的哈希类型,我们可能会比暴力攻击更快地获得密码。关于这一点的一些问题:
最后,无论使用AES-128/256的文件加密强度如何,弱链接仍然是我使用的en / decryption密码。即使打破加密的文本需要比宇宙的生命周期更长的时间,对我的de /加密密码的蛮力攻击(猜测密码,然后尝试解密文件,尝试下一个密码......),可能会提前很多成功而不是宇宙的尽头。那是对的吗?
如果人们可以怜悯我并帮助我思考这些可能简单的问题,我将非常感激,这样我才能重新开始工作。
答案 0 :(得分:3)
据我所知,至少有两个 打破此密码的方法。 一种是尝试蛮力攻击 我们试图猜测每一个可能的地方 人物组合。多少 密码可以是现代处理器(in 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的大小构建一个 lot 。
另外请记住,一个好的密码哈希方案会反复散列密码 - 数百甚至数千次 - 这会增加你必须按相同因素完成的工作量。
但是,如果您无法访问密码哈希,那么所有这些都是无关紧要的 - 您通常不会这样做。在这种情况下,你受到猜测的速度的限制,一个设计良好的系统将很容易检测到你的暴力攻击,并切断你,使密码的大小有点无关紧要。
另一种方法包括 获取我的密码哈希值 然后由操作系统存储 搜索碰撞。取决于 我们可能得到的哈希类型 密码要快得多 蛮力攻击。一些 关于这个的问题:
是上述句子中的断言 正确的吗?
不完全是。您似乎已经在第一个问题中假设您有密码哈希。蛮力攻击正在搜索每个可能的密码 - 它们不是两个截然不同的东西。
我如何考虑所需的时间 找到MD4,MD5等的碰撞 散列?
目前还没有针对MD5或SHA1的已知实际原像攻击。我不确定MD4,但是他们心智正常的人现在不应该使用它!
最后,无论如何 使用的文件加密强度 AES-128/256,弱链接仍然是我的 使用en / decryption密码。即使 打破加密文本需要 比...的寿命更长 宇宙,对我的蛮力攻击 de /加密密码(猜测 密码,然后尝试解密文件, 尝试下一个密码...),可能会成功 比结束早很多 宇宙。这是对的吗?
正确,这就是为什么好的加密系统不会直接使用密码生成的密钥加密消息,而是使用其他系统,如公钥加密,要求攻击者首先获取您的私钥(这应该是困难的)第一个地方),然后试图破解密码。
答案 1 :(得分:2)
我不确定你的意思是什么?当然,它可能会更快。 但是,通常,您不必担心将哈希方法用作攻击向量。从理论上讲,找到这些碰撞应该是非常困难的(阅读:不切实际),但是如果有一种快速确定碰撞的算法,那么相应的散列算法很简单并且简单地被破坏,所有依赖它的应用程序都必须交换它另一个。
你没有。您应该坚持使用未知的算法。例如,MD5和SHA1被视为已损坏。虽然似乎没有真正有效的应用可用于实际发现碰撞,但研究人员认为它可能即将到来。目前,f.ex。 MD5上最着名的原像攻击的复杂度为2,大于100的力量。考虑到这不仅仅是宇宙中的原子数,而且已经被认为是不安全的,你甚至不必费心去做算法被认为是安全的。
不知道那里。
是的,就蛮力攻击而言,我仍然认为猜测 - 尝试猜测 - 再次尝试是最切实可行的。
要清醒一点,请考虑一下:您想要安全存储信息多长时间?大多数情况下,真正需要一两年,在这种情况下,正常的AES-256应该保持良好状态。如果您需要更长的安全性,那么您应该尽可能选择最大的密钥并希望获得最好的密钥,但不能保证。甚至臭名昭着的一次性垫也不会让你免于那个问题。
答案 2 :(得分:1)
到目前为止,这是我对这个问题的进展的最新消息。
单个密码猜测+解密周期所需的处理器指令数量当然取决于硬件和解密算法。我不确定如何正确地思考这个问题,但我的猜测是,一个这样的循环可能需要大约1,000个指令。现在,如果我们采用能够达到150,000 MIPS的英特尔酷睿i7至尊CPU,那么我们每秒可以轻松购买的PC可以实现150,000,000次猜测。
因此,对于问题中描述的密码(例如,AES256加密文件的密码),蛮力企图破解它,可以在不到556天内成功。
如果假设一个猜测 - 解密周期的1,000条指令是正确的,那么您今天可以购买的单个标准PC可以在不到两年的时间内为您的AES256加密文件破解这样的密码。哎呀,这个谜语得到了解决。
我的结论是,八位数的字母数字+符号字符对于大多数实际用途来说仍然足够。在两年的时间里,我们都必须学会记住更长的密码: - )
答案 3 :(得分:0)
密码的一个更大问题是它们很少真正随机。许多人会在密码中使用全部或部分单词,这意味着使用字典进行攻击会大大减少必须搜索可能密码的空间。即使密码是由一个人“随机”生成的(不使用机械辅助,例如伪随机生成器),我们也会产生无意识的偏见,影响我们如何尝试制造“随机”的东西,这可以被攻击者利用。
另一个问题是,人们经常会为许多不同的登录使用相同的密码。并非所有登录都是加密安全的;事实上,仍然存在以明文形式传输密码的应用程序。它们也容易被键盘记录器捕获,键盘记录器通常可以通过看似无害的矢量传输,如USB拇指驱动器。
答案 4 :(得分:0)
我不能回答定量问题,但是:
您计算8个字符密码的可能性假设所有组合都是可能的,包括非常难以记忆或键入的组合。通常,这种类型的密码往往是某种带有其他密码的加密容器。人们实际使用的密码往往生活在该范围的较小部分。更不用说7.2E15对于一个坚定的攻击者是不够的。
好的操作系统会尽可能地隐藏实际的密码,此外,他们通过在密码哈希中插入一些随机字符来填充密码(当然,也可以保存盐)。这意味着制作可能密码哈希的“彩虹表”实际上并不那么实用。
但是,您需要考虑的是威胁,这里有四个重要组成部分。
你是谁在防守?街头青少年和NSA之间存在重大差异。脚本小子将尝试在他的家庭盒子上传播的东西,而NSA将使用专家和大量的计算能力。其他人都介于两者之间。
你是如何直接针对目标的?如果入侵者试图在系统上找到一个帐户,那么您的密码不一定是不可破解的,只比系统中最弱的帐户困难得多。
你希望多久阻止入侵者?有些信息将在两年后过时,其他信息可能会更长一些。作为推论,预期的攻击者有多坚定?
如果您的帐户遭到破坏会有多糟糕?如果你闯入我的Facebook帐户,你就可以发布据称来自我的内容,除此之外你不会得到任何不易获取的信息。如果你闯入我的一个网上银行账户,我会更加担心。