我想自己实现一个“密码管理器”

2014-12-26 13:18:56 +08:00
 gno23x
我想自己造个“密码管理器”的轮子,通过Web实现,不考虑类似LastPass的自动填充的功能,只用于存储密码。

我初步设想是这样的:

- 只需要记住一个密码,暂且称之为“last pass”好了。
- “last pass”通过PBKDF2函数生成一个key,这个key用于AES加密,这个key我们称之为“PBKDF2 key”
- “PBKDF2 key”用来加密(使用AES算法)另一个key,这个“另一个key”我们用来加密(也是使用AES算法)我们在各个网站的登录密码(或其它需要加密的密码),“另一个key”我们称为“password key”
- 需要一个密码(比如GitHub的登录密码)的时候,输入“last pass”,通过PBKDF2函数得到“PBKDF2 key”,然后用“PBKDF2 key”去解密加密后的“password key”,最后通过解密得到的“password key”去解密我们存储的密码
- 全站https

除了密码管理以外,还有一个想整合进去的功能,就是为每个网站生成一个唯一的用户名,增加社工的成本。

不知道这个设计有没有缺陷,想听下大家的看法。 :)
6586 次点击
所在节点    奇思妙想
46 条回复
gno23x
2014-12-26 17:40:16 +08:00
@zix KeePass通过Mono平台可以在OS X下使用,不过毕竟不是原生UI,会有一些小问题。而且用KeePass的话,人不在电脑旁的话,需要密码怎么办?
9hills
2014-12-26 17:48:27 +08:00
@gno23x 穷举说的简单。。求穷举

huami算法,你现在获取我在一个叫 cracker 的论坛的加密密码是:K3945b18c8426F51。这个论坛我明确告诉你,我用的代号就是cracker

求穷举我的密码,谢谢
9hills
2014-12-26 17:51:31 +08:00
@gno23x 花密用的HMAC算法,这个计算性能你是能算出来的,然后算下每小时能穷举多少个组合,就知道穷举是不太可能了。。

假如我选择了Bcrypt,那更是没戏。。
gno23x
2014-12-26 17:53:01 +08:00
@9hills 上面说了考虑得比较极端,如果cracker论坛没有任何防刷机制的话,你的密码比较短且不复杂的话,穷举还是有可能的。 :)
9hills
2014-12-26 17:55:09 +08:00
@gno23x 已经和cracker没关系了吧。我在cracker论坛的密码你都知道了

huami本质是一个算法
Z = huami(X, Y)

现在你知道了Z是K3945b18c8426F51,Y是cracker,求X

你是可能穷举,那可以试试。。
geew
2014-12-26 18:05:02 +08:00
@9hills http://flowerpassword.com/app/web 看到评论
"万一哪天花密宕机了怎么办"
gno23x
2014-12-26 18:06:22 +08:00
@9hills

纯数字,8位,一年时间,每秒需要试3.17个密码。
英文数字混合的话,8位,一年时间,每秒试89456.8个密码。

如果只有一个密码的话,这个密码当然会设置得相对复杂,所以穷举成本确实蛮高。

实际上我也没仔细算过这个成本,所以我上面保守得说了“考虑得比较极端”,也提了“容易是相对的”。

:)
9hills
2014-12-26 18:38:55 +08:00
@geew (´-ω-`) 我还写了个cli版本的,本地用
fityme
2014-12-26 19:17:53 +08:00
写了个离线版alfred的workflow,能自动复制到剪切板。。。
然后我自己没在用(还没买正版alfred...
wadezhao
2014-12-26 19:25:28 +08:00
@gno23x 我的意思就是加密算法用现成的就好了,如果你想做一个应用,精力多放在界面和易用性上就好。
hiboshi
2014-12-26 20:33:53 +08:00
@gno23x keepass会生成 本地数据文件,是加密的,如果放心直接云端。
KentY
2014-12-26 21:42:32 +08:00
我从写了自己的密码管理器一直用,5,6年了。但不是web的。
https://github.com/sk1418/passwdmanager
gno23x
2014-12-27 00:16:36 +08:00
@hiboshi 同步是没问题,关键是没有KeePass,就没法看内容。在外面,只有手机的情况下就没法要到密码了。
@KentY 没电脑在身边就没办法了吧。
shepherd
2014-12-27 03:30:03 +08:00
@gno23x 一直在用黑莓上的密码管理器,重要一点的账号基本上都是不同密,强度足够,而且定期更换。
有段时间有过一个想法,就是设计一个跟工行电子密码器类似的便携设备,主要功能就跟1Password一类的密码管理软件类似,既方便携带,又能保证一定安全性。
其实,总感觉密码这种东西记脑子里最安全,但是人不可能记住那么多复杂无规律的密码,所以如果要借助工具记录的话,这种工具越远离互联网越安全吧。“安全”这东西都是有依赖性的,不存在独立的绝对的安全。
sNullp
2014-12-27 03:58:40 +08:00
endoffight
2014-12-27 07:09:05 +08:00
keepass满足不了你吗?
gno23x
2014-12-27 08:37:57 +08:00
@shepherd 黑莓随身带挺麻烦吧,突然想到准备换手机,旧手机里头放个密码管理器貌似不错,还能如你所说远离互联网,哈哈。

@sNullp 不错,php写的,可以研究一下。

@endoffight KeePass功能是不错,就是人不在电脑旁边就拿不到密码了。
kstsca
2014-12-27 08:52:26 +08:00
如何解决 类似 qq 登陆 密码输入,一个一个输?
GeekGao
2014-12-27 10:21:33 +08:00
自编算法表,然后把人肉加密记录在email里发给自己多个账户比啥都靠谱
silver
2014-12-27 13:02:10 +08:00
@gno23x 人不在电脑旁什么意思,总会有个手持设备吧。keepass下分支版覆盖各种系统和手持,同步数据库啊。要有心还不如以keepass为基础做个不错的界面。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/156853

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX