首页 >> 数学 >> 文章

作者:D-Horse

6vl6np[4]

美国国家安全局(NSA)为了破译恐怖组织的密码以挫败其阴谋,斥巨资建造了一台可以破解一切密码的机器:万能解密机。这是美国作家丹•布朗在其小说《数字城堡》中虚构的情节。以人类今日之科技实力,打造这样一台无坚不摧的“神器”还只是个遥远的梦想,但如何在网络社会中保护自己的个人隐私一直是个现实的问题。20多年来,现代人已经掌握了“数字城堡”——密码的构造方法,自认为可以高枕无忧,但事实远非如此。

越复杂的密码越安全吗

很不幸,答案是否定的。人们通常认为,把密码设得越复杂,别人就越难猜到,但这样一来无疑增加了记忆的难度。而对于那些企图窥探你秘密的人来说,他们也只是想不到,而非“猜不到”。现如今,还有几个人破译密码是靠大脑“猜”的呢?

5shesw

这就正如 XKCD 所说的那样:经过二十年的努力,我们成功地陷入一个误区,那就是把密码设的越来越难以记忆,然而却被计算机很轻松地就破解出来了。

保证密码强度的关键是什么

那保证密码强度的关键到底是什么呢?其实,上面的漫画已经给出了答案:密码长度。

这里引入信息学中的信息熵(我们常听人说这个信息多、那个信息少,对信息“多少”的量化就是信息熵),用它来作为密码强度的评估标准。信息熵计算公式为 H = L * log 2 N,其中,L表示密码的长度,N的取值见下表:

qjwqle

从上面的公式和表中,我们可以看到,密码强度 (H) 与密码长度 (L) 和密码包含字符的种类 (N) 这两个因素有关。然而它们对密码强度的影响是呈指数倍的关系。

举个例子,假设密码长度的单位为比特,8个比特即为一个字节(即输入密码时的一个字符,一个字节可以代表256个不同字符),如果某台超级计算机的计算能力为每秒能完成 2 56 次组合运算,破解8个字符组成的密码仅需4分16秒。当密码长度达到16个字符的时候,暴力破解它需要 149,745,258,842,898 年!要知道太阳的寿命也只有约10,000,000,000 年,而目前世界上速度最快的计算机K Computer也只能每秒完成约 2 53 次运算。当然,这只是一个极端化的例子。事实上,我们可以用来当密码使用的字符只有 95 个( 26 个小写字母 + 26 个大写字母 + 10个数字 + 33个标点符号)。

更大的风险所在 :万能钥匙

在现实生活中,我们都选择“一把钥匙开一扇门”。谁都不会希望有一把钥匙既能用来开家门,也能用来开车门、公司的门、宿舍的门,因为这把“万能钥匙”一旦丢失,损失将是惨重的。随着网络社会的发展,如今大多数人都握有十多个网站的账号,你是继续选择“一把钥匙开一扇门”的策略,还是改用“万能钥匙”的策略呢?如果是前者,那么无疑将增加你的记忆负荷,如果是后者,安全隐患是显而易见的。

5iy2g8

图像来源:XKCD

而要说的是,许多人都意识到了这点,并且为了避免这种情况,相当一部分人选择将密码分为两部分,一个主要部分(比如是 123456 ),另一部分则根据账户而定: QQ 的密码就设为 qq123456 ,而 gmail 的密码则是 gmail123456 等等。但如此直白的设置,颇有掩耳盗铃的味道,一旦一个账户失窃,看穿这个规律,也不过一秒的事情而已。

与黑客的博弈

为了规避上述种种风险,大家开始设定许多个又长又复杂的密码。但复杂的长密码并不容易记住,更何况是要记住好几个这样密码(请问有谁没有忘记过密码呢)。在经历了多次遗忘密码的痛苦之后,人们又开始倾向性地选择那些容易让自己记住的信息作为自己的密码。比如自己或亲人的姓名、生日、电话号码等等。但这恰恰把安全隐患留给了躲在暗处的黑客。

有人对用户的密码做过统计,研究他们设置密码时的偏好,并将统计结果绘制成图。 61% 的用户喜欢使用人名、地名、字典词汇和纯数字来设置他们的密码。甚至还有2.6%的用户直接把他们的用户名当做密码使用(比如把 guokr123@ ...的密码直接设置为 guokr123 )。这些都是具有安全隐患的密码设置策略!黑客们了解用户的密码设置习惯后,就可以编写“密码词典”,有了这本词典后,就可以在暴力破解的时候大大提高精准性。比如在 这里 可以下载到 10,000 个常见密码的词典(该词典作者称有 99.8% 的用户都是使用这本词典中的密码)。有人对Sony公司的用户密码也做过 研究调查 ,结果也令人堪忧。

m3bgwv

用户密码设置使用习惯

有网站如 1PASSWORD 给出了新的策略。它相当于为你提供了一个带锁的记事本,可以让你把所有的密码记在这个记事本上,你只需保留开锁的钥匙/密码即可。撇开这个网站的靠谱程度不谈,单单为了这样一个记事本,你就要付出 40 美元的代价。同时请别忘了,它仅仅为你解决了记忆密码的问题,还是没有逃开设置密码这个更加头疼的问题。

优秀的密码设置策略

如何设定一个靠谱的密码?

果壳网曾经有 文章提到了一些密码设置上参考建议,里面提到“用统一规则记住多个不同密码”是个不错的选择。毕竟记住一个规则比记住一串杂乱无序的字符要容易多了,也可以实现“一把钥匙开一扇门”的策略。在这里不妨举个例子,给出一个简单的密码设置规则(以电子信箱为例):

[密码]=2*([用户名标识符(小写/大写)]+[用户名长度]+[.]+[网站标识符(大写/小写)])

例:guokr123@gmail.com,密码为:gk8.GM GK8.gm

    songshuhui@hotmail.com 密码为:ssh10.HTSSH10.ht

但是,真的安全了么?

k2wdps

图像来源:XKCD

所以还请读者记住的就是,一个优秀的密码可以尽可能地降低风险,但它不能将风险降为零。

关于密码的问题,在果壳的 小组 中有一个欢乐的讨论。本文的作者 汉化了 “How secure is my password” 这个网站 , 来测测 你的密码用普通的电脑,花多少时间才会被暴力破解掉吧。

wjvjj7

参考资料:

[1] I’m sorry, but were you actually trying to remember your comical passwords?

[2] The science of password selection

[3] A brief Sony password analysis

原文发表于果壳网 死理性派 主题站 《你的密码安全吗?小心那些隐藏的陷阱

0
为您推荐

74 Responses to “你的密码安全吗?小心那些隐藏的陷阱”

  1. 飞翔的矜持说道:

    在果壳看过吧,转过来没说明?

  2. byzod说道:

    这文绝壁是发过的吧?

  3. SotongDJ说道:

    作者忽略了Lastpass……

  4. roger218说道:

    我的密码好简单

  5. Aaron J说道:

    通过本文 我决定随便找个风雅颂或者五言诗背下来当密码

  6. shavy说道:

    担心暴力破解都是浮云。被盗的QQ啥的,现在哪有被暴力破解的,都是键盘记录之类的方式

    • Metaverse说道:

      输密码时分段错位输入,总不可能连鼠标轨迹都详细记录吧?

  7. 说道:

    烦死,一堆密码

  8. clane说道:

    现实当中的暴力破解只有两种情况(非国家安全机关):
    1.密码位数实在太短,在线破解6位以下,非在线8位以下,而且往往仅限于数字,不可能带有标点符号,以及大小写区别
    2.基于字典的暴力破解
    一个好的密码不要很长,只要有一些特殊字符让你的密码不在常用的字典之中就ok了。最好的方法是使用一个短密码<=8位(以方便记忆),但带有几个特殊字符。比如文中的tr0mb0ne,在现实应用中已经是一个很好的密码了。如果0改成shift + 0,密码最终为tr)mb)ne,那就更完美了。

    最最重要的是,把你的密码按安全程度,分档次管理。哪一类档次的网站使用哪一类档次的密码。黑客专门有一个行业: 洗库。每次某网站被攻破,存有帐号密码的数据库被倒手转卖之后,专门有很多人会用其中的帐号密码去尝试他们感兴趣的网站(这个过程就是洗库) 。这些人对这些账号密码是哪里来的并不感兴趣,只是碰运气的在游戏网站甚至支付网站尝试帐号密码,所以同一用户名使用相同密码,是一件非常危险的事。 针对这种,在这方面,lastpass是一个相当不错的应用,能够在提供相当的安全之下,让多密码带来的麻烦降低到最低程度。

  9. clane说道:

    补充下:复杂的密码,往往并不安全,因为人脑没法记住,不得不把它存储下来,不管存储在哪里都是很危险的。曾经有过这么一个案例,某公司安全部门要求系统密码必须xx位以上,而且每个月轮换。最终结果是,很多员工把密码写在便签上并粘贴在显示器旁边。。。而且现在很多移动应用上也需要登录,一个简短的好密码更是能带来极大的便利性。

  10. Izual_Yang说道:

    我的第一反应:那个网站难道不是用来收集你们的密码的么?虽然匿名,但毕竟你们都在往它的md5字典里添砖加瓦……

    仔细一看是纯js的,不提交数据到网络

  11. sonnyhcx说道:

    About 1 trillion years
    厄。。我的密码看样子还不错。。。。

  12. sonnyhcx说道:

    不过不久的将来我相信会出现自带指纹密码或者是虹膜密码之类的电脑的。

  13. 夜风过耳说道:

    规律设密,自然可以规律破解,本质上还是图灵测试

  14. M2000型说道:

    简单的密码不怕暴力破解,就怕人工猜。所以只要安全分级管理信息,减少高安全级别和低安全级别在多个地方的关联性就好,不仅仅是注册信息,还包括你发布、回复过的贴。
    高安全级别的可以记录在家里的纸质上,并把已经熟记的部分用*** --带过

    • M2000型说道:

      密保问题也要规划好,不知道多少地方密保还是明文的,到时什么强密码都是浮云。除了一些手机、U盾、动态密码卡等实物绑定验证稍微安全点,很多常用的地方要依赖密保问题这道防线了,特别是那些可以通过邮箱取回的邮箱要被关注到。

  15. 楚门说道:

    在中国,数据库密码都是明文保存……所以,认命吧

  16. Achilles Wong说道:

    有特别需求我就用1Password算一个高级密码

  17. 西红柿炒自己说道:

    呃,除了闲着无聊的,谁会来破解我的密码呢……

  18. wb说道:

    我的密码简单的3小时难的要600年

  19. itsuki说道:

    不是所有的系统都允许你爆破的...

  20. pasternak说道:

    其实最根本的办法是研究出一种不需要密码的办法。

  21. 冷水说道:

    很多网站都在分析csdn的密码分布了,科技宅们居然不珍惜这个宝贵数据分析分析啊?

  22. 薇如尘土说道:

    “结果也令人堪忧”是一个文法错误句,“堪忧”就是令人担忧的意思,高中语文讲了千百次的典型错误没想到作者犯了

  23. mazhechao说道:

    好的密码不在长度,而在于密码空间的大小。

  24. yachinghu说道:

    It would take a desktop PC
    About 408 thousand years
    to hack your password
    可是我的密码也是很有规律呀!

  25. 张哲远说道:

    用那个网站实验了一下,发现随便写的一个简单密码需要15年才能破出来:zzy12+8=20,那个,zzy是我名字缩写~~类似的随便编个算式,比如126邮箱就写个126+126=252,如果写错误算式会更好,也更简单,比如12+6=126,在前面或后面或前后都加上名字缩写~~这密码完美了~~还防止重复

  26. pl8787说道:

    用字典法破解应该很快的~~~主要是各种字符混杂

  27. 乘风破浪说道:

    一定要分级,一般地方用普通密码,与隐私,金钱有关的就换个高级的密码~

  28. 拼音佳佳说道:

    无价值的账号就用简单密码,有价值账号就用复杂密码.绝对禁止的就是:不管有没有价值都用同一个密码.比如QQ和一个邮箱就用复杂密码并且不一样.各大论坛的ID就用简单密码,即便是一样的也无所谓,因为价值不大.

  29. 白忆说道:

    真心觉得这样的文章不错!!!继续加油!!!

  30. wiki说道:

    密码之后是权限。同学们,windows8要来了。

  31. zzjb说道:

    那个监测网站,怎么算出来强度和注册时那些网站给的完全不同呢?

  32. zhuyugang说道:

    我的密码是XYZ,Z有时是正数,有时为负数,如果天气好的话,火星上的哈勃大叔可以把它看得清清楚楚!

  33. ghost说道:

    我认为,在现在这个手持设备计算能力疯狂扩张的年代,很多观念要变一变了。

    比如,可以搞一个密码管理程序放手机上。这样,只需要记忆一个密码,这个密码可以搞的极长极复杂,只要自己能牢牢记住即可。

    然后,其它网站全部使用自动生成的高强密码,这种随机密码可以根据网站级别不同,选用纯字母、字母+数字、字母+特殊符号等组合——这主要是因为纯字母在手机上容易输入,后面两种就不那么好输入了。

    平时,所有这些密码会被加密后存储于手机,并可定时备份到指定的电子邮箱。

    加密算法甚至可以用多种不同的通用算法轮流加密若干次,甚至加密过程中还可以对密码做几次变换。这个过程甚至可以持续5秒——对个人用户来说,这点延迟完全无所谓。

    但,对破解者来说,哪怕他知道整个过程,验证一个密码也只能花5秒进行,而且完全无法利用彩虹表之类加速。

    这样,只要那个唯一的密码是安全的,一切就都是安全的,只要保护好这唯一的一个密码即可;加密后的数据完全不必保护,丢网上,谁爱钻牛角尖谁破解去。我还真不信用近10种不同的高强度通用加密算法轮流加密过的数据,居然还有人能攻破。

    于是,访问的任何网站都可以单独用一个机器生成的、毫无意义的绝佳密钥(并不需要去记忆),任何一个网站的密码丢了都不成问题。

    • coelolepid说道:

      嗯,这个早就实现了:keepass,一个open source密码管理软件。

      • ghost说道:

        嗯,第N次看到这个软件了,^_^

        目前的主要问题是,国内的android市场是非google的,被锁定到国内运营商了;可以通过root工具尝试使用google的android市场,但较为复杂,也有一定危险。

        使用国内运营商的东西,风险还是很大的——除了中国,还有哪个国家能允许一个360一样的流氓,从个人PC上抓敏感信息、还把这个信息丢网上让人下载一个多月?

        类似keeppass这样的软件,被国内运营商加个广告,要求互联网/通讯录/SD卡等等权限,我一点都不信上面会没有木马。即使现在没有,以后肯定会有。

        所以,这种软件,能自己写还是自己来;至少也要直接从国外网站下载。

        • lyem说道:

          说实话,真的是异想天开,漏洞百出。

          一个小偷把你的手持设备偷了去,或者就你自己掉了,你就哭爹喊娘叫奶奶吧,你记住那个‘唯一的密码’又有何用?

          神马,定时备份到指定的电子邮箱,电子邮箱安全吗?又是把密码链中的一环放在了脆弱的地方。别说邮箱被人搞了,就是你想用的时候,那天邮箱服务器宕机,时间不必太长,一天取不了款了,干不了事了,就够你受的了。

          ‘任何网站都可以单独用一个机器生成的、毫无意义的绝佳密钥(并不需要去记忆)’你每次输密码,都掏出手机,先输那个‘唯一的密码’,等手机显示了密码后再一个一个往上抄,中间你还别抄错了。不然你每次输个密码5分钟!这时间里你还要防别人偷窥哦,越是记不住一个一个抄的时间长,越给人偷窥者提供便利。

          总之,感觉你的想法太幼稚。

          • ghost说道:

            外行了不是?你最好还是通过google或其它途径,多少了解点加解密常识再来吧。

            随便说下,我那堆加密过的东西,才不关心它在哪里——如果有谁写的东西居然还需要关心,那显然不过是一个外行在闭门造车。

            甚至,如果松鼠会允许上传和匿名下载附件的话,我宁可把它直接贴论坛上,取名就叫“我的密码本”,连我的加/解密程序都一块放上去,叫“我的密码管理器”——如果有人愿意把我这些东西贴的到处都是,那才叫求之不得呢。

            这样,等我到网吧上网时,就可以通过搜索把两者下下来,用我的唯一口令解密,找到松鼠会密码,登录。

            只要搞定键盘记录器,这一套动作就是绝对安全的。

            ——之所以要用android/ios搞,其实为的只是防PC上烂大街的键盘记录器,不愿意在网吧之类机器上输密码而已。而android通过虚拟机隔离、ios appstore的严格审查都使得它们更容易保证安全性。

            至于偷窥……输主密码全显示*,你以为用30个星就能解密吗?敢在网吧随便用的,肯定不过是些丢了也无所谓的网站而已——你会在网吧输银行密码?

          • lyem说道:

            小孩,知道一点皮毛就在那遐想---‘瞎想’

            再仔细看看我的意见吧,深入的东西我没多说,只从实用的方面说几点,就足以否定你了〔否定的是你的方法远不是最优方案,轻易地就可找到比你优越得多的方法,可是你还在洋洋得意〕,你就像经常在新闻里报道的‘民间发明家’,鼓捣出若干‘发明’,看似有道理,实都属似是而非,没一样实用。

            这次csdn泄密码事件,令我惊讶,一个程序员网站,这么弱智,就像楼下“试试”朋友说得那样。

            所以应该强制各类网站采用MD5码保存密码,其模式仿照ATM密码验证的模式。这样网站只是‘零知识证明’的一个验证者,对用户密码一无所知,泄密后不会泄露用户密码〔虽然王小云找到了MD5碰撞的方法,但显然还无法逆向推导出MD5码的哪怕一个可用明文〕所以对于一般网站,这方法强度足够。并且网站实施简便,用户不增负担〔这2点其实很重要〕。

          • ghost说道:

            见过的民科多了,不过像你这样没水准还胆敢口出恶言的还真没几个。

            你不妨去看看哪怕最粗浅的论文,看哪篇谈加密谈安全谈攻击的,敢不把“不安全的信道“”不安全的存储介质“当作前提条件——忽略这个前提的,后面一句都不要看,肯定是个无知的民科。

            一个破MD5,居然能被你和”零知识验证“扯到一起,这也真算是奇葩了——以你的智商,肯定想不到如果网站仅仅存储MD5,那么用户登录时,是传他的密码好呢,还是传他的密码的MD5好——不是小看你,我根本不相信你有能耐把这个过程用自己的话说清楚。

            都啥年代了,还存MD5就安全……知道啥叫加盐吗?听说过彩虹表没?
            我现在机器上就有个彩虹表,可以覆盖90%的常见密码——包括经过字符代换的如pa55uu0rd(password)这样看似安全实则2B的双词甚至三词组合——换句话说,你敢把用户密码的MD5亮出来,我几分钟内把你90%以上的用户剥光。

            尤其是,现在补充过来自CSDN/天涯等网站的数据后,日后再加上新挖掘出的一些常见代换规则,这个彩虹表可能会让你这样的外行连想出一个不在字典范围的密码都难。

            想玩的话,不妨到这个网站试试,看看有几个MD5过的8位左右的英文单词/双词/甚至经过o~0 s~5之类代换的“好”密码是解不出来的:
            http://www.md5this.com/

            这样的网站现在用google一抓一大把,我之前玩过的某个命中率极高的找不到了,这个是随便搜的,我甚至都没试过。不过我还是相信它会让很多人大吃一惊。

            甚至,现在我手里还有若干个hadoop集群——这玩意儿就是google的bigtable和map-reduce的开源实现,专搞并行计算的。

            别说你那傻乎乎的单纯MD5了,就是加了盐,这盐随机性差点到我这里就是找死。利用这几个集群的多余计算能力,半小时不到就能把那些命中率90%以上的彩虹表重新搞出来。

            甚至,由于MD5计算速度太快,哪怕不用彩虹表投机取巧,用集群穷举并生成整个64bit的密码空间的所有MD5也不过就是个把星期时间和几十P存储空间而已。

            一边鄙视真正可以无视信道攻击的高级加密算法,一边把早已被撕的稀烂的MD5推崇备至:就这还有胆出言不逊,你难道就一点都不觉得羞臊吗?

            我不得不怀疑,除了听说过MD5,你究竟还知道点啥。

  34. 万茂华说道:

    密码问题无解~
    本人的做法是弄几组密码,比如支付类网站一个密码。所有无所谓的论坛一个密码。邮箱一个密码。

  35. 逐风者说道:

    何必那么复杂,罪简单的才是最安全的。一切都是浮云,有规律就有可能被找到,长度才是硬道理,让时间来做最好的密码,让破译者跟太阳比赛吧!

  36. 不知道说道:

    以暴力破解来衡量的密码强度有多大的实际参考价值,我觉得这点值得商榷吧

  37. 阿克萨说道:

    密码不能是和你有相关的信息,不能小于10位,最好没有规律

  38. 试试说道:

    管你多复杂,多少位的密码,碰上明文保存的2b网站,一样玩完

    • ghost说道:

      还得加上直接上MD5却不懂啥叫盐以及如何安全加盐的2b网站。

      由于多次泄密,现在人们的密码设计习惯早已被数据挖掘无数遍了;甚至可以说,一个非专业甚至半专业人士人冥思苦想出的密码,往往很难超脱字典攻击甚至只是最原始的彩虹表的覆盖范围。

      傻呵呵的直接MD5,后果就是90%以上的用户资料无异于明文保存。

      从这个意义上说,其实网站就是用我曾设想过的最变态的方式产生单向函数来保存密码都无济于事——比如说,用RSA 2048甚至4096当单向函数:删去它的私钥,用公钥签名算法代替MD5来做散列。

      但即便如此,你仍然无法保护那些用12345678做密码的人。

      并且,常识告诉我们,不能依赖算法保密来保证安全性。

      上述算法中,公钥其实和传统的密钥不一样,它是算法的一部分,是无法保密的。

      由于计算能力越来越强大,存储越来越便宜,针对这个公钥构造彩虹表,仍然会直接剥光90%以上的用户。

      所以,现在必须改变观念,让“用户设计并记忆密码”成为过去。

      因为首先,他们可能越来越难设计出不在攻击范围内的密码;其次,网站并不可靠,所以在不同网站使用不同密码必将成为新的常识;最后,密码记忆是个很大的负担,尤其是还得管理很多非常难猜因而也非常难记的密码时。

      这实际上是逼迫用户把它们写到纸上或存储到数字设备里。这恐怕比明文密码更危险。

      所以,使用机器生成无法预料的且不在字典里的密码、并利用加密技术甚至如U盾一样在各种数字终端内嵌加密芯片,帮助用户管理密码是大势所趋。

      • ghost说道:

        随便科普一下,在加解密算法这个问题上,和行外人士所猜想的不同,不是越藏的深就越安全;恰恰相反,是越不用藏越安全。

        因为,你藏的再深,信息通过互联网传输时,你总不能跟着去;这一段路上,信息是可能会暴露而且一定会暴露的。

        类似的,甚至你把硬盘摘下来,挖个坑埋了,再浇上混凝土盖上个大厦,都无法100%保证它不会被偷走。甚至你就是天天抱着它,还可能会碰上个拿着5块钱的扳手的家伙……

        所以,讨论信息安全,绝不能以加密后的信息还需要保密为前提条件;讨论加密算法,也绝不能寄希望于“算法藏起来让人偷不到”。

        甚至,有这样的真实案例:DOS时代曾有个病毒,它把代码每几条指令都加了一次密;启动部分会用某个密码解开两三个指令执行;然后用这两三个指令的机器码当密钥,再解开下面的两三个指令……如此反复,直到整个病毒执行结束。

        如果你在中间下了断点,会导致内存中的指令被替换为int 3;这就导致后面的代码解密失败,于是程序崩溃。也就是说它不仅反复加密,而且又随便给调试器下了个绊子。

        很不幸,这个病毒仍然被人彻底研究透了,kv300之类软件就可以轻易干掉它。

        现代密码学早已解决这个问题,方法就是:从一开始就假设加密算法和加密后的数据就是完全掌握在攻击者手里的;现在,从这个前提开始,设计一套方法,让攻击者哪怕动用半个世界的电脑,都无法找到密码和/或明文。

        不仅如此,现代密码学还要求:
        不能根据很多密文猜出明文和/或密钥;
        不能通过大量明文和它们加密后的结果的研究而猜出密钥——准确点说,连发现了明文和加密结果/密码之间的某种统计规律都不行。

        每一种现代加密算法都经过了以上苛刻的考验,没有任何人能够找到它们的明文-密文-密码任意两者间的任何模式。

        所以,如果有人傻乎乎的,以为加密后的信息丢了是个很重大的问题,那他的密码学知识只是道听途说而已,根本就没摸着门:因为密码学研究的,就是当你的一切秘密——除了密码——落到攻击者手里的时候,如何让他们“到宇宙终结都搜不完你的密钥空间”。

        同样,如果一个人的研究,居然不是以“除了密码一切都已泄漏”为假想前提,我们额可以想象,他的东西不安全到了何等程度。

        类似的,CSDN明文口令事件,暴露出的最大问题不是口令明文或口令仅MD5没有加盐;而是他们根本就没有“如果一切已经泄漏该怎么办”这样的意识。

        正是这方面的浅薄,使他们的网站安全形同虚设,甚至敏感数据库都可能被“拖”。

        至于最后数据库里存的是明文还是MD5甚至MD5+salt,其实已经不重要了:因为我说过,利用已有的90%覆盖率的彩虹表,可以以零点几秒(纯MD5)到几秒(MD5+很傻的盐)到1分钟(MD5+很好的盐)一个的速度,把里面90%的用户“剥光”。

        • ghost说道:

          我之前帖子里设想的、用许多种不同的加密算法反复加密十次以上,实质上并不能增加多少密钥空间大小(也就是并不能提高那些通用加密算法本身的安全性);不过,我的真实目标也不在这里,而是想拖慢密码搜索速度。

          不是说9x%的用户都用同样的1万个密码吗?那么攻击者平均只需尝试不到1万次,就能找出一个弱密码用户的密码,这在MD5+salt的情况下仍然可能就是1分钟而已,因为每秒就能算出上千个MD5——至于纯MD5,你就别来搞笑了,直接一个SQL查询就出来:只要密码在彩虹表里,哪怕这个彩虹表夸张到居然有10亿条,结果都仍然是“查询执行完毕,本次执行耗费0.22秒”。

          但如果这个散列/加密算法本身就要5秒,那么尝试1万次就是5万秒,这个代价就会使得攻击者望而却步。

          因为一个普通用户的密码实在不值什么钱,里面有银行密码的概率太低;就是有,也几乎可以肯定没有银行帐号(好的软件应该提醒用户不要同时保存这些);就是有银行帐号,里面可能也只有几百块钱。如果以每个用户5万秒(36000秒是10小时)的代价跑了几千个用户的资料,最终却不过得到几百块钱——不说时间和人工,这点钱明显都不够买烧的那些电。

          于是,这个长达5秒、又无法优化的蜗牛算法,就有效的保护了用中低安全级别密码的用户。

          而一旦你设的密码很牛,这个蜗牛算法会让任何攻击者绝望……

  39. lyem说道:

    上面这位的行文方式颇像‘民科’,自问自答地长篇大论。对待他们可不能逐条理论,累死你,他们还卷土再来,没完没了。得用硬质的事实来将他们军。

    给你个〔你认为搞笑的〕纯MD5‘231c30752537b7a58b2b300da72396eb’用你的彩虹表SQL查询吧,找到明文你就可以在这尽情表演,我们再无发言。找不到你就闭嘴吧。哦对了,明文是刚刚我随便想的一个内容有意义的密码,终身不会忘哦,还是纯字母数字哦,20位以内哦。普通用户密码?这就是了。你不是90%以上吗?找吧。

    记住,用事实说话哦,贴出明文来支持你的发言权哦。我给的可是你认为最弱不禁风的方法,这是你借此来论证只有用你的所谓妙法才够保密的。

    • ghost说道:

      照你这猪头的逻辑,松鼠会都他妈在自问自答,他们都是民科。

      你有能耐,请给出建设性的意见,或者请指出我的哪怕一条原则性错误。

      最后,如果你喜欢用泼妇的方式来秀的弱智和无耻,那么,不要怪我请你看草你马。

      老子混这么久网络,还是第一次被个傻逼民科骂民科。

    • ghost说道:

      看看你丫自始至终放你妈的什么屁。

      老子说加密后的东西能放邮箱,是哪个白痴王八蛋说那不安全?

      老子给人科普说现代密码学不依赖算法和密文保密,那个王八蛋怎么怂了?

      哦,又哪个王八蛋要用MD5糊弄用户?老子说90%的用户密码都在彩虹表里,哪个王八蛋连个基本的概率都他妈不懂,就这还有脸出来秀?他妈这种逼还有一点点做人的最起码的自尊没有?

    • ghost说道:

      我操你祖宗,老子这句话就丢这里了。

      不好意思,老子说粗话了;但老子没骂人。因为这种除了讨点口头便宜吊毛都不懂的傻逼,它妈根本就不是人。

      你麻痹稍微有点自重好不好?你麻痹这里是人玩的地方,傻逼王八蛋想找骂,老子让你享受个痛快。

    • ghost说道:

      长篇大论?你想听,老子就日你妈日到痛快。什么破烂玩意儿。

      你妈逼不学无术没关系,谁都是从不会来的。居然还他妈出口不逊。你真不给你妈装人。你就这样在大庭广众之下,让人看你他妈是个有人生没人养的?

    • ghost说道:

      真你妈的人渣

    • ghost说道:

      学术争论,意见不一样没关系。少他妈一口一个民科。

      尤其是,你他妈不光瞎扣帽子当即就被证明错了、而且反而被证明该顶民科帽子的是你自己——你他妈怎么不敢回我直接回你那贴?——真是脸皮厚的出奇,就这样都能假装没看到?

      老子要像你丢这么大人,恐怕三五年连马甲都不好意思上松鼠会。

      甚至于,都几天了,随你怎么挑衅,老子都忍住不把你丫是个白痴的真相给揭出来,你他妈倒好,自己看不懂,被抓到痛脚装不知道,就他妈腆着脸绕着圈给人扣帽子。

      我真不明白这种无耻之徒是怎么被调教出来的。你父母就这样给你做的榜样?

      实在没法不佩服您的没羞没骚。

    • ghost说道:

      松鼠会有人懂密码学。至少我知道奥卡姆剃刀比我强无数倍。

      只要有一个人能找出我这些“长篇大论”的“民科”文章里有一句原则性错误,我立刻给你道歉,并恢复你在我眼里的人籍。

      否则,请恕我今后将永不再拿你当人看,也不再回你任何帖——我还没下贱到要和一个没人格的家伙生气。

      ——另外,对你这种过于下作、过于不要脸的,我不得不附上个郑重声明:
      ——网上发贴,往往难于字斟句酌;尤其是回帖又不能编辑;汉语语法错误、个别字词打错在所难免;这些当然不能算在“原则性错误”里面。

  40. ghost说道:

    照你这猪头的逻辑,松鼠会都他妈在自问自答。

    你有能耐,请给出建设性的意见,或者请指出我的哪怕一条原则性错误。

    最后,如果你喜欢用泼妇的方式来秀的弱智和无耻,那么,不要怪我请你看草你马。

  41. lyem说道:

    疯狗被戳中神经,开始发病。

    大家来看疯狗秀。

    疯狗别忘我的打狗棒啊:纯MD5‘231c30752537b7a58b2b300da72396eb’你不是厉害吗,咬断我的打狗棒,给你发放疯狗许可证。

    • ghost说道:

      你就继续给你妈丢人吧。

      老子说彩虹表覆盖90%的密码,什么时候说过100%破解任何密码了?你懂这两个的差别不懂?你丫学过概率没有?你初高中的概率跟着猪学的?

      ——看你不懂,还出来瞎叫唤,老子才不得不给本来就明白的很多读者饶舌——诸如密码学就是为了对付攻击者,让他搜到宇宙终结都搜不完所有密钥空间。

      哦,这逼刚从我这里学个乖,转眼就拿它过来对付我?你妈还有半点人脑子没有?你妈这算是秀你的无耻,还是藐视读者的智商?

      我真的很奇怪。你妈究竟怎么教育你的?你妈除了会教你用些“莫须有”的理由给人扣帽子,还会点什么?

  42. lyem说道:

    果不其然,几天工夫,疯狗只会绕着打狗棒无力地狂吠。 还概率呢,你的狗头能明白? 还90%,是用你的狗嘴拱出来的数字吧。 在我的打狗棒跟前,你的狗屁彩虹表一直对你输出‘not found’吧,你那2下狗尿抬失败率就是100%。看着你歇斯底里的狗样,真是可笑啊可鄙。

    打狗棒戳在这,我不会再来鄙视你了。继续狂吠吧,疯狗。 ^_^

    你正是:
    无知蠢货,跳梁小丑,只懂卖弄,不知廉耻。

  43. ghost说道:

    http://www.youxia.org/2011/12/youxia_password_md5.html

    游侠原创:MD5处理之后的密码就坚不可摧吗?(附实验数据)

      这两天关于CSDN等一批网站的密码被公布的新闻散布在网络上,无论是科技类、安全类、黑客类的网站,还是博客、微博,都讨论得如火如荼。游侠发现一些人认为密码经过MD5处理之后,就安全了,就万无一失了,但是,真是吗?

      我们知道,MD5的算法,已经被王晓云教授攻克,但是即便如此,对绝大多数人而言,甚至是绝大多数黑客而言,两个不同实体碰撞得到一个MD5也是有非常大的难度的(不过的确有人搞定了,某网站曾经发布了2个文件,不一样大小,却是一样的MD5值)。

      游侠在这里要说的是:密码,即使用MD5处理,依然不安全。当然,我不会只动嘴,我用例子说话。

      既然是要做测试,就要找一个贴近现实的数据库而不是自己造的数据,于是游侠找到了某个正在运行中的系统的数据库,有将近6000个帐号(获取手段基本合法)。我把密码拷贝到EmEditor中去,一行一个密码。我第一次截取的1-200,第二次截取的3800-3999,这样每次200个密码,一共400个密码。

      然后分两批把这些MD5处理之后的密码提交到某MD5破解系统,看看结果:

    第一次测试结果:

    第二次测试结果:

      理想很丰满,现实很骨感:

      第一次:200个密码36秒破解完毕,搞定192个,成功率96%
      第二次:200个密码25秒破解完毕,搞定198个,成功率99%

      游侠在测试之前,认为瞬时破解成功率应该在50%左右的,总破解成功率应该在95%以上,但是可能需要一定周期。但是结果无情的粉碎了我的期望——400个密码在半分钟的破解成功率居然到了97.5%!

      很多人说MD5不可逆,所以是保险的。但是你们显然忽略了一点……MD5的对比数据库!

      举个例子:admin经过32位md5处理后是21232f297a57a5a743894a0e4a801fc3,显然是很长的一串字符,但是有人把这样的数据做到一个数据库里面……,比如:

      12345 827ccb0eea8a706c4c34a16891f84e7b 
      abcde ab56b4d92b40713acc5af89985d4b786
      !@#$% 507250b947cc397023a9595001fcf167
      ……

      当这个数据库有几十亿记录的时候,就可以囊括绝大多数人的密码!这就是为什么,我找到的这些密码在这破解系统面前为什么如此脆弱!一句话:MD5的算法黑客基本是搞不定的,但是不代表不能知道你的密码。不知道你看明白了没?

      再简单点,举个例子:MD5处理之后的密码是一把锁,正常情况下只有一把钥匙可以打开。但是如果有一个开锁匠有几十亿把钥匙,那么这个开锁匠不用研究锁子的设计原理,他也有极大的希望用他手中的钥匙一把把的尝试,最终打开这把锁!

      正是因为有了计算机,有了各种自动化的程序,即使有几十亿把钥匙,也可以在极短的时间内测试完毕,所以……你一定明白了!

      如果您想进一步了解MD5与相关解密技术,请参考百度百科:
      MD5:http://baike.baidu.com/view/7636.htm
      彩虹表:http://baike.baidu.com/view/2143893.htm

      看完之后,相信您对密码安全性在认识上会有极大的提升。这也是游侠今天做这个测试的目的——能让大家知道,我们的密码有多不安全,也让大家知道,MD5处理之后的密码依然不那么安全。

      作者:张百川(网路游侠)
      网站:http://www.youxia.org
      转载请注明来源!谢谢合作。

  44. laughskydragon说道:

    测过了,我的qq密码的破解需要12.2亿年,淘宝密码的破解要800万年。

  45. 夜珊瑚礁说道:

    对于一般人来说,最靠谱的还是个人的安全等级用几套密码吧

  46. 午饭说道:

    敢在网吧随便用的,肯定不过是些丢了也无所谓的网站而已——你会在网吧输银行密码?
    =============
    比如淘宝支付宝绑定了银行卡,而支付密码、登录密码如果是那个人常用账号密码的话,用不着去网吧都能被破解,你以为只有网吧才能偷号啊?

  47. limlip说道:

    感觉那个测试密码的网站太夸张了吧,我用我的一个密码试了下,竟然要2 trillion年

  48. zy说道:

    好像这个可以用一种加密算法 RSA 算的

  49. reching说道:

    我觉得最影响密码破解的是网速,本人在国外的博客站每次登陆都要等个10秒才出登陆界面,再等5秒看密码输没输对....

  50. reching说道:

    再时不常的来个连接超时...

  51. 有明丶说道:

    对于一个密码,用户们也不要光去看他需要多少年解开。这个测试其实是一个非常不准确而且没有意义的测算,它或许仅仅是将你的密码的可能排列组合的情况做了一个分析,得出一个排列总数,然后乘以每次尝试密码的时间。然而对一个黑客,除非是有目的或出于某种特殊原因的攻击某一特定目标,在一般情况下是不会使用穷举法破解密码的。例如大家为WORD加密时,同样也会为你提示你的密码需要N年破解,但是随意到网上下一个WORD密码破解软件,N年就会变为几毫秒。
    所以我以为密码安全的问题不是简单靠用户提升他们的密码长度、复杂度这么简单的。正如文章一开始提到的,或许一个密码破解的时间是3天或是550年,但是即使三天,对于一个黑客来说都是一次浪费。 现在的黑客仅存非常小的几率去使用“字典”一次次尝试密码,因为这完全不能提高他们的效率。而密码安全的问题,更多也需要保存密码的各个网络机构、社会机构自身提高安全系数。正如前段时间爆出的CSDN数据库泄漏事件,正是由于古老的明文密码机制没有得到跟新所致。

  52. Michael说道:

    想找到不在彩虹表中的MD5太容易了,随便找个文件算个MD5值不就得了呗。

  53. 拓步ERP软件说道:

    其实密码是否强,只是相对的,对于某些人来说根本就不是难度,这个你懂的。拓步ERP软件:www.toberp.com

  54. airportcon说道:

    我的密码...931 trillion years