大家都知道,由于账号越来越多,密码记忆变得越来越困难。许多人(我自己也是😂,直到上周发现我的印象笔记再在陌生设备登录)。为了方便记忆,偷懒的在多个网站使用同一个密码,这将导致一个账户密码泄露后,其它账号将面临泄露的风险。
当然,许多人就开始使用密码管理器来生成,记忆密码了。比较著名的有 1Password、LastPass、KeePass、Enpass 等等。
但我觉得,如果都直接存明文,万一密码管理器的主密码泄露,或者加密算法被黑客破解(虽然可能性很低),但一旦出问题,里面的所有账号就都裸奔了。
于是想到先对密码加密,然后将加密后的密码存放到密码管理器上,这样,即使被泄露,密码也是被加密的,对我们几乎没有影响。
基于此,我做了一个小的工具,效果如下:
密码加密,基于 AES-CTR-256
大家觉得有没有必要对密码管理器的密码进行加密后保存呢? 虽然我明白密码管理器存的时候可能是加密了存的。
其次就是,如果所有的账号密码都用密码管理器来管理,你们平时会备份账号密码不?是使用什么方式备份的呢?
欢迎大家留言讨论,注册以来第一发帖😂。
PS (我上周末花了一整天的时间把之前所有的账号修改了密码,部分重要的账号用了此工具加密密码, 以后应该会轻很多了吧~)
最后,贴下仓库地址:encrypt-password
欢迎 star ~
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 的密码还是最长的,那么你所有网站的密码就都泄露了。 |
2
zackZhong OP 同一个密码的加密多次的结果总是相同的 ,md5 不也是一样的? 加密同一个字符串 得到的结果就是一样的。
> 如果你知道密码 A 和密码 B 的密文,你可以算出 A xor B , 但是我的密码和账号都是存在密码管理器上了的呀 我做的事情是对密码管理器生成的密码进行二次加密,然后每次输入密码的时候 先从密码管理器里拿到 加密后的密码,然后再解密,再粘贴到制定位置。 这样难到不是更安全一些吗 |
3
zackZhong OP 贴个链接,你可以进去试一下:
[在线地址]( https://itboos.github.io/project/encrypt-password/) |
4
koswu 2020-04-25 10:28:35 +08:00 via Android
创造的精神值得鼓励,但是想法有漏洞
密码管理器的主密码泄露----这个加密工具的 key 泄露也会被解开 加密算法被破解------要这都行的时候,这个工具的加密算法一样也会被破解 想不到有什么实用的点诶 |
5
stanl 2020-04-25 10:59:08 +08:00
我还是选择记在脑子里,我密码基本都是,网站或者 APP 的名称做前缀加一串固定的密码,这样会不会也有风险?
|
6
toan 2020-04-25 11:00:02 +08:00 via Android
安全性都是相对的,密码管理工具也是为了方便,一个密码用在密码管理工具上,然后工具管理一堆密码。
自己加密解密,其性质都差不多,一个密码设在加密工具上,工具加密一堆密码。可能好处就在于可以用不同密码串加密不同密码,但又有新的问题,这么多密码串又要怎么管理?😂 |
8
geelaw 2020-04-25 11:11:05 +08:00
|
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: 这工具无法在密码管理软件发生泄露的前提下,保护密码的安全。 |
10
nvkou 2020-04-25 11:19:56 +08:00 via Android
等等。chrome 密码同步为啥就不能用了?反正要么谷歌全家桶,要么苹果全家桶。密码管理的核心不就是授权的同时足够方便吗。我自己谷歌账号有多种二次验证,保障主账号安全。chrome 密码同步有单独密码。剩下的就是设备管理而已,这一点也不难。选购硬件加密产品,手机开启设备追踪。你偷我设备可以,别妄想我数据。
|
11
zackZhong OP |
12
FS1P7dJz 2020-04-25 11:34:43 +08:00
如果我是恶意作者
这个工具我认为是用来记录彩虹表 |
13
zackZhong OP @nvkou mac Chrome 在登录的状态下,进入密码管理界面,输入 电脑 的密码就可以查看各个账号的密码了。
电脑开机密码 一般 都不会设置的很复杂吧,不能自动填入 |
14
nvkou 2020-04-25 11:44:29 +08:00 via Android
@zackZhong 这是原始问题。你也不能不记住银行卡密码吧。或者不能丢失你的软件的密钥吧。反正设备硬盘是 TPM 加密的。无法拆下来读原文件。这才显得你登录密码有意义
|
15
oott123 2020-04-25 12:09:39 +08:00 via Android 1
#8 说得很对,如果密码管理器本身是安全的,无论你对送入密码管理器的东西做什么都不会让它变得不安全。
所以你的思路也是有问题的。如果你想更安全一些,我认为可以: * 换用没有云存储的密码管理软件,离线存储密码库,避免密码库泄露 * 定期更换主密码,避免主密码泄露 * 选择更长的主密码,避免暴力破解 |
16
oott123 2020-04-25 12:10:16 +08:00 via Android
更正:上文的「避免」应为「缓解」
|
17
reself 2020-04-25 12:35:09 +08:00 via Android
串联起来的安全系统,安全性取决于最薄弱的环节。安全领域造轮子风险很大。
|
19
ITJoker 2020-04-25 13:25:55 +08:00 via Android
我之前也搞过,Python 版本的,三次加密,第一次和第三次都是 rsa 加密的,第二次自己搞了个加密方法。然后同步到 git 。感觉破解难度挺大的😂
|
20
sexb 2020-04-25 15:47:41 +08:00
加个私钥就很安全了吧,私钥记在脑子里,知道算法不知道私钥也不行。
|
21
zooo 2020-04-25 15:55:14 +08:00
。。。一个密码管理软件就够了,你们有那么机密的东西需要加密的很很安全吗?我没有。。
|
22
Zien 2020-04-25 16:25:22 +08:00
算了,我还是用 keepass 吧
|
23
eason1874 2020-04-25 16:35:50 +08:00
有点意思,我也做一个看看
|
24
chendl111 2020-04-25 17:24:25 +08:00
用 LastPass
|
28
nonrk 2020-04-26 10:51:21 +08:00
直接用基于网址算法,你的头脑固定码就是私钥,网址就是公钥,然后给予的私钥公钥计算出密码,无需管理工具
|
29
Kazetachinu 2020-04-29 07:47:33 +08:00 via iPhone
😉😉加密后放在密码管理器里,实在不放心,就再多套几次娃。
|