做了一个密码加密的小工具, 用于加密密码生成器的密码(大家平时会用密码管理器管理密码不) - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
zackZhong
V2EX    分享创造

做了一个密码加密的小工具, 用于加密密码生成器的密码(大家平时会用密码管理器管理密码不)

  •  
  •   zackZhong 2020-04-25 09:31:53 +08:00 5077 次点击
    这是一个创建于 2000 天前的主题,其中的信息可能已经有所发展或是发生改变。

    大家都知道,由于账号越来越多,密码记忆变得越来越困难。许多人(我自己也是,直到上周发现我的印象笔记再在陌生设备登录)。为了方便记忆,偷懒的在多个网站使用同一个密码,这将导致一个账户密码泄露后,其它账号将面临泄露的风险。

    当然,许多人就开始使用密码管理器来生成,记忆密码了。比较著名的有 1PasswordLastPassKeePassEnpass 等等。

    但我觉得,如果都直接存明文,万一密码管理器的主密码泄露,或者加密算法被黑客破解(虽然可能性很低),但一旦出问题,里面的所有账号就都裸奔了。

    于是想到先对密码加密,然后将加密后的密码存放到密码管理器上,这样,即使被泄露,密码也是被加密的,对我们几乎没有影响。

    基于此,我做了一个小的工具,效果如下:

    密码加密,基于 AES-CTR-256

    • 支持对字符串进行加密
    • 支持对加密后的串进行解密
    • 生成的串支持一件复制
    • 支持自定义 AES key

    大家觉得有没有必要对密码管理器的密码进行加密后保存呢? 虽然我明白密码管理器存的时候可能是加密了存的。

    其次就是,如果所有的账号密码都用密码管理器来管理,你们平时会备份账号密码不?是使用什么方式备份的呢?

    欢迎大家留言讨论,注册以来第一发帖。

    PS (我上周末花了一整天的时间把之前所有的账号修改了密码,部分重要的账号用了此工具加密密码, 以后应该会轻很多了吧~)

    最后,贴下仓库地址:encrypt-password

    欢迎 star ~

    29 条回复    2020-04-29 07:47:33 +08:00
    geelaw
        1
    geelaw  
       2020-04-25 10:03:20 +08:00   9
    这个不能真的用来管理密码,因为它实际上就是 multi-time pad,非常不安全。

    你的加密算法(不是说密钥生成算法)没有任何随机性,同一个密码的加密多次总是相同的,这表示你的加密方法不具有选择明文攻击下的安全性。默认情况下,使用的加密算法应该具有选择密文攻击下的安全性。

    如果你知道密码 A 和密码 B 的密文,你可以算出 A xor B 。一个非常严重的推论是:如果你知道密码 A 、密码 A 的密文和密码 B 的密文,如果 B 的长度不超过 A,则可以完整还原密码 B 。假设你在网站 A 的密码因为网站 A 的失误泄露了,而你的密码的密文也泄露了,好巧不巧,网站 A 的密码还是最长的,那么你所有网站的密码就都泄露了。
    zackZhong
        2
    zackZhong  
    OP
       2020-04-25 10:17:07 +08:00
    同一个密码的加密多次的结果总是相同的 ,md5 不也是一样的? 加密同一个字符串 得到的结果就是一样的。

    > 如果你知道密码 A 和密码 B 的密文,你可以算出 A xor B , 但是我的密码和账号都是存在密码管理器上了的呀

    我做的事情是对密码管理器生成的密码进行二次加密,然后每次输入密码的时候 先从密码管理器里拿到 加密后的密码,然后再解密,再粘贴到制定位置。

    这样难到不是更安全一些吗
    zackZhong
        3
    zackZhong  
    OP
       2020-04-25 10:17:54 +08:00
    贴个链接,你可以进去试一下:
    [在线地址]( https://itboos.github.io/project/encrypt-password/)
    koswu
        4
    koswu  
       2020-04-25 10:28:35 +08:00 via Android
    创造的精神值得鼓励,但是想法有漏洞
    密码管理器的主密码泄露----这个加密工具的 key 泄露也会被解开
    加密算法被破解------要这都行的时候,这个工具的加密算法一样也会被破解
    想不到有什么实用的点诶
    stanl
        5
    stanl  
       2020-04-25 10:59:08 +08:00
    我还是选择记在脑子里,我密码基本都是,网站或者 APP 的名称做前缀加一串固定的密码,这样会不会也有风险?
    toan
        6
    toan  
       2020-04-25 11:00:02 +08:00 via Android
    安全性都是相对的,密码管理工具也是为了方便,一个密码用在密码管理工具上,然后工具管理一堆密码。
    自己加密解密,其性质都差不多,一个密码设在加密工具上,工具加密一堆密码。可能好处就在于可以用不同密码串加密不同密码,但又有新的问题,这么多密码串又要怎么管理?
    maolaohei
        7
    maolaohei  
       2020-04-25 11:05:22 +08:00 via Android
    @stanl 如果有人获取了你的密码,就知道规律了
    geelaw
        8
    geelaw  
       2020-04-25 11:11:05 +08:00
    @zackZhong #2 > MD5...
    我没说过 MD5 是选择明文安全的加密算法。实际上单纯 MD5 三个字符并不代表任何一种加密算法。

    > 但我的密码存在密码管理器上。
    如果你认为存在密码管理器里面就安全了,为什么还要先加密再存呢?如果密码管理器本身是安全的,无论你对送入密码管理器的东西做什么都不会让它变得不安全(理论情况下,也假设你做的事情都是高效的),但是是否“更安全”并不是明显的事情,尤其是你做的额外操作并没有什么特别的安全性的时候。

    @koswu #4 这个想法的问题在于这个加密工具的 key 不泄露也很容易攻击,不需要等到 AES 被破解的一天。
    yzwduck
        9
    yzwduck  
       2020-04-25 11:16:56 +08:00   1
    #2
    你的设想是在密码管理工具的基础上,再提供一层保护,即使密码管理工具发生信息泄露,也能保护密码安全。
    但是用 AES-CTR 模式加密是一个严重问题,如果不用随机的初始向量 /值,它加密的效果相当于给明文 xor 一个*固定*的随机数据。一旦多个密文泄露,就可以根据密文推算出明文的 xor 关系。如果还知道或推测出一个明文的话,所有的密文都能及其简单地算出对应的明文。

    示例,用 password 为密码:
    加密 123456 的结果是 0ef3e887bea1,明密文异或为 3fc1dbb38b97 ;
    加密 m2DaUG 的结果是 52f39fd2ded0,明密文异或为 3fc1dbb38b97 ;
    看出问题了吗?破译密文根本就不用算 AES 。

    TL;DR: 这工具无法在密码管理软件发生泄露的前提下,保护密码的安全。
    nvkou
        10
    nvkou  
       2020-04-25 11:19:56 +08:00 via Android
    等等。chrome 密码同步为啥就不能用了?反正要么谷歌全家桶,要么苹果全家桶。密码管理的核心不就是授权的同时足够方便吗。我自己谷歌账号有多种二次验证,保障主账号安全。chrome 密码同步有单独密码。剩下的就是设备管理而已,这一点也不难。选购硬件加密产品,手机开启设备追踪。你偷我设备可以,别妄想我数据。
    zackZhong
        11
    zackZhong  
    OP
       2020-04-25 11:27:08 +08:00
    @geelaw @yzwduck 谢谢两位的回答,看来你们安全知识比我懂多的多

    #9 对的,你的设想是在密码管理工具的基础上,再提供一层保护,即使密码管理工具发生信息泄露,也能保护密码安全

    然后,基于这种设想,有没有更好的 加密模式 或者其它加密算法 推荐呢

    感觉的思路应该是没问题的,就是实现上有问题
    FS1P7dJz
        12
    FS1P7dJz  
       2020-04-25 11:34:43 +08:00
    如果我是恶意作者
    这个工具我认为是用来记录彩虹表
    zackZhong
        13
    zackZhong  
    OP
       2020-04-25 11:35:55 +08:00
    @nvkou mac Chrome 在登录的状态下,进入密码管理界面,输入 电脑 的密码就可以查看各个账号的密码了。
    电脑开机密码 一般 都不会设置的很复杂吧,不能自动填入
    nvkou
        14
    nvkou  
       2020-04-25 11:44:29 +08:00 via Android
    @zackZhong 这是原始问题。你也不能不记住银行卡密码吧。或者不能丢失你的软件的密钥吧。反正设备硬盘是 TPM 加密的。无法拆下来读原文件。这才显得你登录密码有意义
    oott123
        15
    oott123  
       2020-04-25 12:09:39 +08:00 via Android   1
    #8 说得很对,如果密码管理器本身是安全的,无论你对送入密码管理器的东西做什么都不会让它变得不安全。

    所以你的思路也是有问题的。如果你想更安全一些,我认为可以:

    * 换用没有云存储的密码管理软件,离线存储密码库,避免密码库泄露
    * 定期更换主密码,避免主密码泄露
    * 选择更长的主密码,避免暴力破解
    oott123
        16
    oott123  
       2020-04-25 12:10:16 +08:00 via Android
    更正:上文的「避免」应为「缓解」
    reself
        17
    reself  
       2020-04-25 12:35:09 +08:00 via Android
    串联起来的安全系统,安全性取决于最薄弱的环节。安全领域造轮子风险很大。
    reself
        18
    reself  
       2020-04-25 12:36:39 +08:00 via Android
    @reself fix: 不管串不串联,只要归为同一个安全统,都取决于最薄弱的环节
    ITJoker
        19
    ITJoker  
       2020-04-25 13:25:55 +08:00 via Android
    我之前也搞过,Python 版本的,三次加密,第一次和第三次都是 rsa 加密的,第二次自己搞了个加密方法。然后同步到 git 。感觉破解难度挺大的
    sexb
        20
    sexb  
       2020-04-25 15:47:41 +08:00
    加个私钥就很安全了吧,私钥记在脑子里,知道算法不知道私钥也不行。
    zooo
        21
    zooo  
       2020-04-25 15:55:14 +08:00
    。。。一个密码管理软件就够了,你们有那么机密的东西需要加密的很很安全吗?我没有。。
    Zien
        22
    Zien  
       2020-04-25 16:25:22 +08:00
    算了,我还是用 keepass 吧
    eason1874
        23
    eason1874  
       2020-04-25 16:35:50 +08:00
    有点意思,我也做一个看看
    chendl111
        24
    chendl111  
       2020-04-25 17:24:25 +08:00
    用 LastPass
    koswu
        25
    koswu  
       2020-04-25 18:05:20 +08:00
    @geelaw CTR 模式。。这还真没注意到。。。没有 IV 。。但是换成 CFB 也挺简单的
    styletjy
        26
    styletjy  
       2020-04-25 21:38:37 +08:00   1
    @yzwduck 竟然碰到熟悉的头像, lol ;-)
    zackZhong
        27
    zackZhong  
    OP
       2020-04-25 21:41:09 +08:00
    @oott123 老哥的意见很有建设性,
    nonrk
        28
    nonrk  
       2020-04-26 10:51:21 +08:00
    直接用基于网址算法,你的头脑固定码就是私钥,网址就是公钥,然后给予的私钥公钥计算出密码,无需管理工具
    Kazetachinu
        29
    Kazetachinu  
       2020-04-29 07:47:33 +08:00 via iPhone
    加密后放在密码管理器里,实在不放心,就再多套几次娃。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1130 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 23:31 PVG 07:31 LAX 16:31 JFK 19:31
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86