V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
这是一个专门讨论 idea 的地方。

每个人的时间,资源是有限的,有的时候你或许能够想到很多 idea,但是由于现实的限制,却并不是所有的 idea 都能够成为现实。

那这个时候,不妨可以把那些 idea 分享出来,启发别人。
takashiki
V2EX  ›  奇思妙想

想到了一种密码的生成和管理方式

  •  
  •   takashiki · 2020-04-05 15:41:15 +08:00 · 3278 次点击
    这是一个创建于 1453 天前的主题,其中的信息可能已经有所发展或是发生改变。

    核心就是我们只要记住一个密码,然后不同站点或应用的密码都通过相同的算法计算出来,大致步骤如下:

    1.根据我们需要生成的密码的应用,确定应用名、密码包含的字符表 alphabet 、密码长度

    2.把我们自己能记住的统一密码,拼上对于的应用名之后进行 hash

    3.将 hash 值转成二进阶字符串后,按需要生成的密码长度进行分组

    4.分组后得到的字符串转成数字,模 alphabet 的长度得到余数,以该余数为 index 去 alphabet 中取相应的字符

    5.上一步得到的所有字符拼接后即生成该应用的密码

    按这个思路的话,我们可以自己定义三到五个密码强度规则,分别对应不同的 alphabet 和长度,不同应用按自己所需的密码强度选择不同的规则。

    现在浏览器和各端的操作系统基本都有密码云同步,基本只要新设置密码的时候生成一次就好。后面偶尔需要找已生成密码的时候,也只要记得自己的统一密码和几个密码规则就好,不需要保存全量的密码数据。

    不知道类似思路的东西有没有人做过,我之后打算尝试用这种方式管理自己的密码。

    上午花了点时间用 ts 写了个简单的实现,具体可以看代码:https://github.com/takashiki/pacious

    20 条回复    2020-04-05 23:01:45 +08:00
    Kagari
        1
    Kagari  
       2020-04-05 15:52:14 +08:00   ❤️ 2
    恭喜你又写了个花密的竞品
    我觉得可以简化一下然后用脑算,别 hash 了
    infun
        2
    infun  
       2020-04-05 15:53:16 +08:00
    密码找回最简单
    lostberryzz
        3
    lostberryzz  
       2020-04-05 16:07:37 +08:00
    为什么不每一个网站都用随机密码?然后用密码管理软件记
    geelaw
        4
    geelaw  
       2020-04-05 16:14:11 +08:00   ❤️ 2
    使用 hash 函数 ❌
    使用伪随机函数 ✔

    这样会得到一个具有适应性密码泄露安全性的方案:使坏者可以请求任意 app 的密码,最终它需要猜出一个未曾见过密码的 app 的密码,希望它猜不出来。

    一种方式是把 hash 函数建模为随机预言,这样 hash 函数可以充当伪随机函数,但是这显然不如伪随机函数好,后者是标准模型下可证明安全。

    在实践中,大家相信 AES 是伪随机函数(而且 AES 比 SHA256 快,而且 SHA256 已经不能被建模为随机预言了),所以正确的做法应该是通过 KDF 把密码变成 AES key,然后把 app 名字编码为 AES 输入,把 AES 输出映射为 app 密码。
    wangxiaoaer
        5
    wangxiaoaer  
       2020-04-05 16:14:40 +08:00 via Android
    我的 v2 密码是 v2denglubiubiubiu 其它登录同理 哪有那么复杂。
    h503mc
        6
    h503mc  
       2020-04-05 16:16:41 +08:00 via iPhone
    @wangxiaoaer 给密码?
    loading
        7
    loading  
       2020-04-05 16:17:27 +08:00
    密码管理器不香么?
    secondwtq
        8
    secondwtq  
       2020-04-05 16:36:37 +08:00
    根据回复来看,相比于”密码的生成和管理方式“,楼主搞一搞”密码的生成和管理方式的管理方式“可能更好
    maninfog
        9
    maninfog  
       2020-04-05 16:39:07 +08:00 via iPhone
    @wangxiaoaer 你骗人
    GordonL
        10
    GordonL  
       2020-04-05 16:39:48 +08:00
    @wangxiaoaer 骗子,人与人之间的信任呢?😠
    kaiki
        11
    kaiki  
       2020-04-05 16:40:26 +08:00
    写在纸上贴显示器上是不是更方便?
    takashiki
        12
    takashiki  
    OP
       2020-04-05 17:18:50 +08:00
    @geelaw #4 学习了
    freakxx
        13
    freakxx  
       2020-04-05 18:55:38 +08:00
    其实没必要那么麻烦

    可以自己用一种规则

    域名的特殊简称 + 熟悉的字符串 + [len(域名)| 数字的数字] + 符号

    比如 V2EX 的密码可以是

    v2ex imyourfather123 1(如果没带数字那就是 0) !(数字对应的符号)
    wolfan
        14
    wolfan  
       2020-04-05 19:14:06 +08:00   ❤️ 1
    我将密码分作三类。
    - 关键工具:如微信、支付宝等,可以通过短信验证码方式登录的。这一类随机一个 24 位全字节密码,就是那种自己也不记得的,反正可以重置。
    - 重要工具:如微博、QQ 、各视频、音乐和邮箱等,主要是常用且偶尔需要登录的工具,且其中有付费项目。这一类用一个强密码,能记得下的。
    - 无关紧要的:这样的用了个超简单的,反正丢了就丢了这样的。

    我对密码的态度就是:反正再强的密码也抵挡不了被撞开的风险,再简单的密码也能挡下千军万马,最终还是逃不掉后台的泄露。
    imn1
        15
    imn1  
       2020-04-05 19:15:17 +08:00
    算法不重要啦,弄个乱序码表,查询就行
    怎样做到方便又不会被中途截获更重要,最难是剪贴板权限……
    mumbler
        16
    mumbler  
       2020-04-05 20:19:20 +08:00 via Android
    @wolfan +1,一模一样的方法,忘记了也就试三次就出来了
    ClarkAbe
        17
    ClarkAbe  
       2020-04-05 22:46:15 +08:00 via iPhone
    @lostberryzz 不小心刷机了,然后还没备份而且为了安全采用的是本地服务,凉凉
    lostberryzz
        18
    lostberryzz  
       2020-04-05 22:51:12 +08:00
    @ClarkAbe 要是电脑被偷了怎么办?硬盘坏了怎么办?这些问题没有考虑过吧
    lostberryzz
        19
    lostberryzz  
       2020-04-05 22:52:41 +08:00
    @ClarkAbe keepass 和 bitwarden 都可以自建,本地也有缓存,也可以自己定时导出备份,基本可以满足需求
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3156 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 13:02 · PVG 21:02 · LAX 06:02 · JFK 09:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.