V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hopestar86
V2EX  ›  PHP

关于密码破解难度的提问

  •  
  •   hopestar86 · 2014-03-22 17:49:12 +08:00 · 5649 次点击
    这是一个创建于 3906 天前的主题,其中的信息可能已经有所发展或是发生改变。
    在不知道 密钥 和知道 加密解密算法 的情况下,给你N串加密字符串,破解出来耗时长吗?

    准备写个小程序将一般重要的密码,手动输入密钥加密,需要用到时手动输入密钥解密
    (一般重要的密码 都是自己本地电脑上keepass随机生成的,这个小程序主要是应急用 (小程序还有其他功能所以就没采用那个在线存密码的网站来的))

    用的thinkphp的Crypt加密类,如果破解需要5 6天时间的话,我就采用。
    (如果你愿意花5 6天破解一般重要密码的话,说明你真够无聊的 ^_^)
    16 条回复    1970-01-01 08:00:00 +08:00
    loading
        1
    loading  
       2014-03-22 17:55:41 +08:00 via iPhone
    拼上一个128位的salt,还是那么短时间么?
    wwek
        2
    wwek  
       2014-03-22 18:00:21 +08:00
    密码还是要加盐的·
    icylogic
        3
    icylogic  
       2014-03-22 18:28:08 +08:00 via iPad
    两次hash加盐,有现成轮子,前段时间startup上有过http://blog.jobbole.com/61872/#toc3
    9hills
        4
    9hills  
       2014-03-22 18:30:56 +08:00
    Crypt是有salt的,别说5.6天了,5、6年也不可能

    但是生成的不适合做密码,还是以它的生成结果再转换成适合密码的格式才行
    hopestar86
        5
    hopestar86  
    OP
       2014-03-22 18:48:24 +08:00
    @wwek

    @icylogic

    md5 hash后我自己都得不到密码,这种只能用于密码校验吧

    @9hills

    这里说的是最严重的情况,即你的程序文件(加解密方法) 和 数据库都被获取

    “生成结果再转换成适合密码” base64?
    jsonline
        6
    jsonline  
       2014-03-22 18:50:32 +08:00 via Android
    加真随机眼就基本无解了。
    raincious
        7
    raincious  
       2014-03-22 19:36:13 +08:00
    @hopestar86

    > “生成结果再转换成适合密码” base64?

    base64等于没转换。为了安全的话,SHA512自己跑100轮其实也就够了嗯。这样除非是特别牛叉的指定攻击一个人的密码,否则盗取密码的人逆算出所有密码的代价太大了。
    9hills
        8
    9hills  
       2014-03-22 19:39:37 +08:00
    @hopestar86 首先你要使用安全性高的Bcrypt,然后有两种使用场景

    1. 强固定密码 + 可泄漏的salt。把salt放入程序文件,但是使用强密码。salt泄漏后可以计算彩虹表,但由于Bcrypt的计算难度很大,相当于速度很慢的穷举(有多慢?差不多一个密码得试0.3s,而且硬件基本无关)。可以计算出你的密码被穷举到的概率是非常小的,5、6年不夸张

    但是这个的弱点是,你需要为每个站都设置一个强固定密码,否则一旦某个站被明文脱裤。。。那反过来讲,既然每个站都设了强密码,那还用这套系统干啥。。


    2. 强固定密码 + 弱salt(不固定,但容易被猜到,比如站点的名字) 这样你只需要记住一个固定密码,然后根据不同的站点使用不同的salt。。。这个就算这个站被明文脱裤,也不影响其他站的密码

    你需要记忆的仅仅是一个固定密码,然后每个站的名字你可以选择域名的中间部分,比如v2ex。我就是这么做的,安全性没有任何问题。。

    所以推荐你用第二种。
    raincious
        9
    raincious  
       2014-03-22 20:09:43 +08:00
    @9hills +1

    上次被骂之后我已经学得很乖,密码都是N次Hash(SHA512,第一次的时候加站点的SALT)跑好,然后开始算个随机Salt跑再crypt N次(算法根据服务器,Blowfish排第一)。

    但其实任何密码都是不安全的,在拿到加密的串之后。

    不过呢,如果真的能保证加密算法的保密性,自己写个位偏移或许也是安全的。但是最佳事件不是自己发明一个算法然后期望别人不会算出规律来破解,而是使用现有的强算法,根据业界多年的最佳经验来做加密。
    SkyFvcker
        10
    SkyFvcker  
       2014-03-22 21:22:14 +08:00
    楼上几位都理解错了,楼主要的是加密,而不是校验,因此Hash是不能用的(因为无法解密)
    对Crypt类不清楚,查资料发现是用的DES。
    虽说DES目前还没有可以5-6天可以破解,但是有条件还是推荐AES。
    相比而言我认为比算法选择更重要的是口令安全,毕竟枚举口令比枚举密钥空间要简单很多。
    SkyFvcker
        11
    SkyFvcker  
       2014-03-22 22:12:52 +08:00
    更正一下,DES目前用专用设备可以做到一天内破解,看楼主需求了
    9hills
        12
    9hills  
       2014-03-22 22:44:32 +08:00 via iPad
    @SkyFvcker 你可以搜索下我推荐的BCrypt

    另外我没提hash ...
    11138
        13
    11138  
       2014-03-22 22:50:37 +08:00
    目前比较好的选择是AES和Blowfish。
    BCrypt使用的就是Blowfish算法。
    emric
        14
    emric  
       2014-03-22 23:04:22 +08:00
    暂时在用 PBKDF2 + sha256 + salt
    把 PBKDF2 丢到客户端计算, 不知道这算不算的上好的方法.
    fange01
        15
    fange01  
       2014-03-22 23:09:25 +08:00
    关键是你的常用密码都已经泄露的,再加密有个鸟用。。。有个几个T社工库的大有人在
    lygmqkl
        16
    lygmqkl  
       2014-03-24 14:19:35 +08:00
    fenge01+1 问题就在于常用密码被泄漏,有几个人能做到分级密码?有几个人能做到定期更换密码?有几个人能做到分级密码+定期更换?

    大数据库不会被破,成本太高,个别密码不是被破得,是被“获得”得。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1180 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 23:57 · PVG 07:57 · LAX 15:57 · JFK 18:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.