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

facebook 保存明文密码了?

  •  
  •   kukat · 2015-09-02 15:04:28 +08:00 · 3248 次点击
    这是一个创建于 3376 天前的主题,其中的信息可能已经有所发展或是发生改变。

    刚 facebook 提示我有异常登录,让我修改密码。

    为了方便记忆,我只改了原密码其中的一个字母的大小写,然后提示信息如下:

    Your new password is too similar to your current password. Please try another password.

    注:修改密码页面是不需要输入原密码的,那么 facebook 是怎么拿新旧密码检查的呢?

    http://ww2.sinaimg.cn/large/4031dcb8gw1evo4fv53eij20yq0f8gnp.jpg

    9 条回复    2015-09-15 11:33:38 +08:00
    wy315700
        1
    wy315700  
       2015-09-02 15:21:39 +08:00
    simhash
    shuax
        2
    shuax  
       2015-09-02 15:22:17 +08:00
    也许有一种 similar hash 算法,算出来的两个 hash 很接近就说明密码接近呗。
    比如“ 123 ” -> 6 , “ 132 ” - > 6 。服务器只保存了 6 。
    laoyuan
        3
    laoyuan  
       2015-09-02 15:41:07 +08:00
    只是保存了 lowercase (password ) 的密文
    clino
        4
    clino  
       2015-09-02 15:45:38 +08:00
    那如果黑客拿到了 simhash 的数据是不是会比较容易猜出密码呢
    caoyue
        5
    caoyue  
       2015-09-02 18:06:43 +08:00   ❤️ 3
    记得之前在 stackoverflow 还是哪里看到的,有个据说是 Facebook 的人确认过,用的是类似这样的方法:
    1. 用户注册,设置密码 password "abc123", Facebook 存 hash
    1. 用户提交 new password ,假设是 “ Abc123"
    2. Facebook 会根据这个密码,生成一堆 ” abc123",“ aBC123" … 这样的密码,然后去和之前的 hash 比对,中了就会出现 similar password 的提示


    另外, simhash 对短文本效果不是太好吧,对密码相似性判断这种需求应该不太有效
    ryd994
        6
    ryd994  
       2015-09-03 07:05:10 +08:00 via Android
    @caoyue 如果只是大小写的话,一开始就存一份全部小写的就解决问题了。
    caoyue
        7
    caoyue  
       2015-09-03 12:17:10 +08:00
    @ryd994
    应该不只是大小写的变换,我只是举个栗子而已……
    而且全部存小写会降低安全性,那要求密码包含大小写还有什么意义= =
    suriv520
        8
    suriv520  
       2015-09-15 10:56:47 +08:00
    @caoyue
    从技术角度比较悲观的估计, facebook 就是存了你的“明文”密码。

    1. 针对 simhash 或者类似的算法,破解密码只需要穷举找到不断逼近的最优解就行了,遗传算法就能非常高效地解决这个问题。相似度算法,就相当于在密码序列的坐标上,给你了一块指路牌;

    2. 针对“生成一堆 abc123 ”这种做法,咳咳,这与保存明文密码有多大区别……
    caoyue
        9
    caoyue  
       2015-09-15 11:33:38 +08:00
    @suriv520
    1. 你可以自己尝试 simhash 在短文本的可靠程度,基本没有意义。
    2.「生成一堆 abc123 」的前提是用户有很大概率在修改密码的时候提交与之前相似的密码。
    3. 如果你都能拿到用户提交的密码了,还管什么数据库明不明文……
    3. 如果你不能拿到用户提交的密码,随便拿个密码就「生成一堆 abc123 」然后算,那是穷举,你能把穷举的难度降低到接近明文么……

    当然了,要是「悲观的估计」,所有密码都是「明文」的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1004 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 22:48 · PVG 06:48 · LAX 14:48 · JFK 17:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.