做了一个基于 Google OAuth 的密码管理器雏形,求分析安全性

2014-07-31 08:20:01 +08:00
 sNullp
Github: https://github.com/snullp/goPwd
Demo: https://pwd.bigsquirrel.me

希望回复有理有据,高质量的分割线----------------

这个管理器的思路是通过OAuth获得一个Unique的MasterKey,然后用一个密码生成算法 根据(Entity name,MasterKey,Options)来生成密码。

管理器不使用数据库,减少了被脱库的风险。

假设服务器的filesystem content和memory content是安全的。

整个环节,因为生成算法是公开的,所以唯一需要注意的就是MasterKey。目前MasterKey是存在php的session里的,可以被认为是安全的吧?
MasterKey 是由Google的 UID(google account对应的唯一id)和 Google OAuth后端id(每个人都可以申请) 结合后哈希生成的。所以需要 Google OAuth后端id 保密(后端id需要存在config file里)。目前的设计上看在这点上是否有疏忽?
3135 次点击
所在节点    分享创造
11 条回复
yangqi
2014-07-31 08:39:10 +08:00
sNullp
2014-07-31 08:41:25 +08:00
@yangqi 感谢。
不过 Google 的后端和我的代码里都做了相应的处理,文中的问题应该不会出现。
sNullp
2014-07-31 08:47:32 +08:00
@yangqi Google will verify redirect_url parameter and block unauthorized redirection in their side. Also, in my code, api/auth.php will also check if the token is returned by Google.
shyrock
2014-07-31 11:27:34 +08:00
最好有个示意图说明这个密码的生成方法和使用方法。。。
sNullp
2014-07-31 11:30:11 +08:00
@shyrock 呃。。什么是密码的使用方法。。
生成方法,就是登录后输入网站名就吐给你一个密码。。
shyrock
2014-07-31 11:36:15 +08:00
@sNullp 然后呢,这个密码每次都不一样?怎么存储?
sNullp
2014-07-31 11:49:28 +08:00
@shyrock 。。。每次是一样的。。
“用一个密码生成算法 根据(Entity name,MasterKey,Options)来生成密码”

所以不需要存储
mcfog
2014-07-31 12:27:05 +08:00
http://www.passwordmaker.org/ 用户路过,表示根本不需要什么中心服务器
sNullp
2014-07-31 12:35:26 +08:00
@mcfog exactly这个思路,只是做成了php的版本
rankjie
2014-07-31 13:03:17 +08:00
看了下 https://github.com/snullp/goPwd/blob/master/include/Generators/naive.pwdGen.php ,所以就是对于但以用户而言,密码目前只是根据名称来计算出唯一值,那么就有以下问题需要改进:

1:假设我要修改某站点的密码,那么我就必须改名称才行了,不过这是小问题... options 利用起来就好了

2:公开的算法,然后唯一凭证就是 Google OAuth后端id 和 Google的 UID ,为什么你相信这两组数据是被保密的呢?我看不出这两个 id 对于 Google 而言有什么需要保密的地方
sNullp
2014-07-31 13:16:33 +08:00
@rankjie 感谢回复,想换密码必须要换算法,比如换个字典。。

uid根本就不是保密的。但后端id配有一个secret,那个secret应该是保密的。。写在配置文件里。

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

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

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

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

© 2021 V2EX