做了一个密码加密的小工具, 用于加密密码生成器的密码(大家平时会用密码管理器管理密码不)
大家都知道,由于账号越来越多,密码记忆变得越来越困难。许多人(我自己也是
大家都知道,由于账号越来越多,密码记忆变得越来越困难。许多人(我自己也是
你的加密算法(不是说密钥生成算法)没有任何随机性,同一个密码的加密多次总是相同的,这表示你的加密方法不具有选择明文攻击下的安全性。默认情况下,使用的加密算法应该具有选择密文攻击下的安全性。
如果你知道密码 A 和密码 B 的密文,你可以算出 A xor B 。一个非常严重的推论是:如果你知道密码 A 、密码 A 的密文和密码 B 的密文,如果 B 的长度不超过 A,则可以完整还原密码 B 。假设你在网站 A 的密码因为网站 A 的失误泄露了,而你的密码的密文也泄露了,好巧不巧,网站 A 的密码还是最长的,那么你所有网站的密码就都泄露了。
> 如果你知道密码 A 和密码 B 的密文,你可以算出 A xor B , 但是我的密码和账号都是存在密码管理器上了的呀
我做的事情是对密码管理器生成的密码进行二次加密,然后每次输入密码的时候 先从密码管理器里拿到 加密后的密码,然后再解密,再粘贴到制定位置。
这样难到不是更安全一些吗
> 但我的密码存在密码管理器上。
如果你认为存在密码管理器里面就安全了,为什么还要先加密再存呢?如果密码管理器本身是安全的,无论你对送入密码管理器的东西做什么都不会让它变得不安全(理论情况下,也假设你做的事情都是高效的),但是是否“更安全”并不是明显的事情,尤其是你做的额外操作并没有什么特别的安全性的时候。
@koswu #4 这个想法的问题在于这个加密工具的 key 不泄露也很容易攻击,不需要等到 AES 被破解的一天。
示例,用 password 为密码:
加密 123456 的结果是 0ef3e887bea1,明密文异或为 3fc1dbb38b97 ;
加密 m2DaUG 的结果是 52f39fd2ded0,明密文异或为 3fc1dbb38b97 ;
看出问题了吗?破译密文根本就不用算 AES 。
TL;DR: 这工具无法在密码管理软件发生泄露的前提下,保护密码的安全。
#9 对的,你的设想是在密码管理工具的基础上,再提供一层保护,即使密码管理工具发生信息泄露,也能保护密码安全
然后,基于这种设想,有没有更好的 加密模式 或者其它加密算法 推荐呢
感觉的思路应该是没问题的,就是实现上有问题
所以你的思路也是有问题的。如果你想更安全一些,我认为可以:
* 换用没有云存储的密码管理软件,离线存储密码库,避免密码库泄露
* 定期更换主密码,避免主密码泄露
* 选择更长的主密码,避免暴力破解