LinPass:跨平台密码安全工具(通用密码+情景密码=复杂密码)

2015-08-11 12:25:17 +08:00
 lzhtony

为什么写LinPass

这几天看到至今尚未明朗的"某大厂"脱库事件,顿时觉得有些惶恐.之前还不觉得什么,现在想一想密码还是需要一站一密比较稳妥.

于是就开始尝试各种密码管理: LastPass,KeePass...都挺不错的.然而有一些共同的问题:

  1. 跨平台的支持不够简单方便.
  2. 需要一个数据库,如果丢了就完蛋了.
  3. 超级密码又产生新的安全隐患(尽管小得多).
  4. 你真的放心把密码存在别人的服务器里吗?即使是本地数据库大多数人也是把数据库传网盘的吧.

后来又看到了一个叫"花密"的网站: http://www.flowerpassword.com
诶!这思路不错啊,用一个通用密码一个情景密码生成一个复杂密码,就可以保证你的密码安全.

然而观察之后发现它的算法并不尽如人意,比如只有16位,没有符号,字母不是26个等等.

LinPass简介

自己写了一个简陋的密码工具"LinPass"用来改善以上问题,测试地址:http://www.lxpark.com/pass/

主要优点有:

  1. 生成8,16,20,32位的四种密码.
  2. 可以自定义字符表(Key Map),添加特殊符号.(如果加入更多的特殊符号可以让它们出现的概率更大些)
  3. JS加密,可离线使用,安全性高.
  4. 使用html+js开发,天然开源,可以自由改动算法和默认Key Map.
  5. 使用html+js开发,可以放进U盘里,只要有浏览器就能用,也解决了跨平台的问题.
  6. 密码,情景,字符表三者缺一不可,其中两个被盗都无法还原密码.

git查看地址:https://github.com/Viclis/LinPass

zip下载地址:http://pan.baidu.com/s/1i3iwyWH

tips:

  1. 自定义默认字符表: 只需将红色方框中的value属性改为你的字符表即可!

结语

欢迎提出你的建议!

5031 次点击
所在节点    分享创造
56 条回复
lzhtony
2015-08-11 15:01:04 +08:00
@yyfearth 感谢花时间码了这么多字.

关于map,其实我一开始的想法是用数据库来存储,也就是需要注册,然后提交map,由服务器来保管,后来考虑到要在本地运行就变成现在这样.

map保存的问题,可以通过上面的修改默认字符表的tip所说的,改到html里,然后将这个html保存好,比如放U盘和网盘,就和保存KeePass的数据库一样,之后打开就能用.如果实在不想保存一个map,可以使用默认map,也就是网站里的大写,小写,数字,符号这么个顺序.

还有可用性问题,这点我本意是通过修改KeyMap就能做到.因为不在KeyMap里面的字符是不会出现在密码里的,所以通过更改KeyMap可以符合大多数的要求.但是必须要特殊字符这点确实不能保证,这是需要修改的地方.下一步要添加一些选项用来更改KeyMap和保证字符的性质.

手机上的输入框基本都是可以粘贴的,所以可以不用手输.不过会考虑做手机端的App的.

最后还是需要您的截图,如果有源码更好了,多谢啦!
lzhtony
2015-08-11 15:03:03 +08:00
@gaohongyuan 不用的.可以让16位的自动截断
@eae29qvc IOS需要打开浏览器访问.
eae29qvc
2015-08-11 15:09:13 +08:00
@lzhtony 跟你的思路差不多,其实弄个浏览器插件加手机版就足够了,手动输的情况很少,我的map直接写死到代码里了,反正就我自己用。。一直纠结ios咋搞,为了记个密码还得买个开发者账号。。
eae29qvc
2015-08-11 15:11:03 +08:00
@lzhtony 有的网站要求大写小写加数字组合,所以最好保证每种最少有一个
lzhtony
2015-08-11 15:13:08 +08:00
@eae29qvc ios app吗?木有做过.组合的确实是欠考虑了,不过用这个生成16位以上少掉一种的概率不大.
@sengxian 那是自然的,人家做了多久.也没想过什么干不干得过的,只是想拿出来和大家讨论和分享.
eae29qvc
2015-08-11 15:15:19 +08:00
@lzhtony 你截的图里16位的密码就没数字
lzhtony
2015-08-11 15:16:01 +08:00
@eae29qvc 好像是哈...需要改进一下.
eae29qvc
2015-08-11 15:25:06 +08:00
@lzhtony 用chrome做插件,插件的数据可以保存到google的服务器上,用同一个google账号登录就能同步到其他电脑上,这样就可以保存map了
lzhtony
2015-08-11 15:27:38 +08:00
@eae29qvc 插件不会做呐...而且也不是什么地方都能上google的...
eae29qvc
2015-08-11 15:30:24 +08:00
@lzhtony 就是js。。1个小时就学会了。。其实手机版也就平时出门用下,一般浏览器插件就够了,个人经验
lzhtony
2015-08-11 15:33:25 +08:00
@eae29qvc 谢谢,找个时间学一学.
yyfearth
2015-08-11 15:37:41 +08:00
@lzhtony 这样一来 不同场景 存储不同 KeyMap 造成的困难比记忆困难的问题还难以解决了
而且不仅仅是 KeyMap 储存各种参数的困难已经不小了
如果需要数据库来帮你保存 那么安全性和方便性还不如1p lastpass

图片我分开回复你

我没办法提供源码是因为代码本身也被我加密了
就算是在内存解密并把代码导出来也是被混淆过的
而真正的源代码 被我加密保存到了某个角落
而且是用我自己修改过的编译器和工具链才能编译运行
而这些东西我也找不到了

@eae29qvc iOS 不需要开发app 直接打开dropbox或者自己服务器上面的网页也可以
另外就是要在别人电脑上输入密码的时候太痛苦了
eae29qvc
2015-08-11 15:46:07 +08:00
@yyfearth 在别人电脑输是少数情况吧,如果经常要手动输的那就生成短一点的密码
lzhtony
2015-08-11 15:49:42 +08:00
@yyfearth 现在的想法是添加几个选项,约束生成的密码,可以解决适用性问题.
yyfearth
2015-08-11 15:56:26 +08:00
@lzhtony @eae29qvc



一开始要求输入主密码用来解密算法的js代码
Map 是 hardcode 替换了某些特殊字符

之前也是做了Chrome 扩展 自动提取场景和密码要求

当时认为只需要记住主密码就够了
顶多记住 round 数 如果密码泄漏 需要重新生成密码
后面发现最大障碍还是不同的密码需求以及网站的变更
比如网站域名有多个 或者变了
或者密码要求变了之类
一开始不觉得有大问题 但是生成了200+个密码后 问题就比较明显了
不得不依赖密码存储
eae29qvc
2015-08-11 16:09:26 +08:00
@yyfearth 一些小网站直接用弱密码,泄露了不心疼
yyfearth
2015-08-11 16:16:57 +08:00
@eae29qvc 麻烦的就是那些比较重要的网站(但不至于重要到必须记住密码)
举个🌰 比如 QQ 和 微信 账号密码相同但是场景不同的情况
比如 密码被泄漏 必须换密码的情况
比如一些网站一开始是 最多16位不可以特殊字符
然后改成8-20位 必须 大小写+数字+可选某些特殊字符 不可以空格

另外不管我怎么改进扩展 就是没有Chrome自带的或1p或lastpass 自动输入方便
lzhtony
2015-08-11 16:49:34 +08:00
@yyfearth 新版已出,添加了约束选项和自定义长度,把密码用掩码遮盖. 地址: http://www.lxpark.com/pass/
21grams
2015-08-11 16:59:39 +08:00
还是lastpass好,各平台插件齐全。
lzhtony
2015-08-11 17:01:42 +08:00
@21grams 主要是有些时候不能装软件(比如别人电脑).

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

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

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

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

© 2021 V2EX