分享

密码管理软件Keepass2.x深度使用小结

 azure1944 2015-10-21

密码管理软件Keepass2.x深度使用小结

自从前段时间(大概是去年)国内外网站大面积的用户信息密码的泄漏,各个网络服务的二步验证的推出,某著名网站编辑的apple账号被社会工程学攻击清空设备所有数据事件的发生,我就开始用Keepass来管理自己重置后新建的随机密码,那个时候因为没有考虑太多从1.x升级到2.x之后Keepass所变更的一些东西,依然通过1.x的使用习惯用的Keepass(当然也有当初工作平台主要是以Linux OS为主的原因——不过现在跨平台的KeepassX的alpha版本已经支持2.x的数据库了,时代真的是在变化啊)。直到最近看到Android上出现的新兴应用Keepass2android,彻底改变了在Android上使用Keepass数据库的使用体验(下文再详细介绍),于是又开始重新审视Keepass2.x这个密码管理软件——发现我之前用这个软件只是只接触了他强大功能的冰山一角而已。于是写点东西稍微总结一下。


为什么选择Keepass

现在密码管理的服务和软件很多,大概大家用的最多的想必是Lastpass了,和浏览器的无缝集成,快速,方便,安全。我也有段时间用过这个服务。那么为什么我最后选择的是Keepass呢,有以下几点:

  • 个人服务和企业服务的平衡点。自己的隐私信息到底要不要托管给第三方服务?还是自己建立一个服务器自己托管?我认为这个是没有完美的答案的。例如第三方服务——如Lastpass,还有各个云服务Dropbox等——当他们爆出用户信息泄漏之类的事件的时候,很明显你只是被波及到了,而不是针对你个人的,也就是说从被Hack的概率来讲,被攻击的概率比自己建立服务器要高很多。但是第三方服务拥有个人无法拥有的安全保护技术,比如Dropbox的分布式加密保存,这点上个人建设服务器是完全办不到的,成本非常高。然后再看个人建设服务器虽然安全保护上没有第三方服务商高,但是可以明显减轻被hack的风险。当然这个和你个人的名声挂钩(如XX逗士之类的就不会减轻太多,只能说活该)所以说到底选择哪个,还是要根据你个人的情况选择。我因为是个小小小,所以比起pin-point attack还是被波及要危险一点,所以选择了个人管理密码的工具。
  • Keepass 2.x对云同步的优化以及密钥文件的组合。keepass数据库现在对云同步服务非常友好,解锁数据库之后会生成交换用的临时文件,然后到保存的时候才会保存到最终路径,解决了1.x时代因为临时写入而导致在Dropbox上同步的时候会损坏数据库的问题。那么如果把数据库文件进行云同步的话,安全性不就和lastpass差不多了么?你别忘了Keepass除了Master Password之外,还有一个可选的密钥文件。密码数据库本身在云同步服务上进行同步,但是密钥文件只放在可信任的设备的固定位置上,这样的话就算你通过社会工程学从云同步服务获得了数据库文件,甚至有了主密码,但是任何网络资源里面都没有这个密钥文件,只有我所信任的设备里的一个小小的角落里才有这个文件,如果你还不放心,你还可以通过插件让keepass支持一次性密码,即二步验证的登陆支持。
  • 自动输入除了浏览器之外,还能应用于所有的桌面应用程序。由于Keepass识别自动输入的依据是窗口标题,支持通配符和正则表达式,因此非常地灵活,甚至可以给每个密码根据不同的窗口标题设置不同的”输入密码的方式“,自动模拟输入用户名和密码的流程,能够应付几乎所有情况的自动化需求。
  • 双通道自动输入方式。下文再进行介绍。
  • 有非常强大的手机客户端。同上。

当然Keepass也有一些不足之处,比如用户名无法自动输入中文等。

自动输入

Keepass除了可以灵活安全地保存自己的密码数据库之外,一个最吸引人的特点大概就是它的自动输入功能了。除了在数据库中选中指定项后执行自动输入就可以在上一个激活窗口聚焦的输入框上执行预设好的数据输入(比如用户名–tab–密码–回车)之外,还可以通过全局快捷键,让Keepass通过窗口标题自动识别并在数据库中选择相应的密码项后直接执行自动输入。在1.x的时代,这些窗口识别以及输入序列的编辑是要通过在备注那一项写代码来实现,而且通配符只能放在关键字始末,定制性非常差,但是在2.x之后,自动输入被专门放到一个标签中,并提供非常灵活的规则设置。

对于一个网站的用户名和密码,网站的标题可能多种多样,比如”欢迎归来“,比如”登陆“等等,这个时候你就可以设置多个窗口标题识别设置;如果想只针对固定的浏览器,你也可以在最后加上一般在浏览器标题上出现的浏览器标识。假如同一个网站有只需要输入密码的情况,也可以通过根据窗口标题识别来指定这样的网页的自动输入只要输入”密码–回车“的序列。甚至还可以通过自定义项目来增加除了用户名和密码之外的项目并追加进自动输入脚本序列中,也可以追加别的按键序列来自动化输入操作。比如:

{DELAY 500}^+1{CLEARFIELD}{UserName}{TAB}{Password}

就可以在发送自动输入指令之后等候500毫秒后按Ctrl+Shift+1(在Windows上设置为切换成英语输入的快捷键)然后清空输入框内容,输入用户名,按tab切换到密码输入框,然后输入密码。然后手动按回车即可登陆这些程序/网站。

自动输入并不通过剪贴板进行,而是让Keepass模拟按键序列来完成,所以不支持中文。从安全的角度上这样的自动输入可以防止剪贴板监控木马获取你的用户名和密码,但是实际上也没有办法防止KeyLogger木马的监控获取。为此,Keepass还提供”双通道自动输入模式“。其原理其实非常简单——让一个密码部分通过剪贴板粘贴部分通过模拟按键输入然后再进行整合。至于这个过程又相当黑科技:先把用户名或密码等根据随机生成的1-3个字府长度分割成有限个小节,然后把奇数项合并成一段字符后复制到剪贴板;转到输入框之后先粘贴至输入框,光标闪回最前然后慢慢地把剩下的偶数项通过模拟按键插进去。由于自动输入前就Block掉了剪贴板的Event监控,于是Keylogger实际上只能获得一段信息的部分信息,而无法获得完整的信息(只能看到Ctrl+V)。如果要获得完整的信息的话只能通过以几毫秒为单位定时监控的剪贴板监控程序和Keylogger的组合才能看到

替代Google验证器

当多数网站的用户名和密码泄漏的时候,迅速抬头的就是双因素验证(2-Factor Authentication,2FA),俗称二步验证。开启二步验证之后,登陆网站除了需要用户名和密码之外,还需要预先登录在手机上的验证器根据时刻生成的验证码才能登陆成功。但是每次登陆的时候需要掏出手机打开验证器,是不是有点麻烦?Keepass的第三方插件里面有个神器KeeOTP,即可使用Keepass来保存及显示二步验证的验证码,并且执行自动输入

KeeOTP支持目前Google验证器所使用的Time-based OTP(TOTP),所以同时也可以用在大多数的网络服务如Outlook,Evernote,Dropbox和坚果云等服务上。只要在编辑或开关二步验证设置的时候选择通过provided code而不是QR扫图来追加验证设备,然后通过手机的验证器和Keepass上的验证设置同时追加的话,就能同时通过Google验证器或者Keepass的数据库来调出需要的验证码,有keepass的时候甚至还可以通过自动输入功能把验证码直接输入出来。非常方便。

当然,因为二步验证用设备的增加,所以在另一层意义上增加了被别人验证的风险。所以在别的社会工程学攻击上需要额外的注意。

Android客户端

Android的keepass客户端中最老牌的应该是KeepassDroid。提供初步的2.x支持,还有通过Android的系统复制剪贴板来调出其中的用户名和密码,总体功能上比较初步,当时也只能想到”能够在Android上用到Keepass就已经感谢老天了“的地步。不过现在有个应用Keepass2Android,不仅完全支持了2.x的读取和写入,也有不少独特的功能:

  • 支持直接从云同步服务读取数据库文件。目前支持Skydrive,Google Drive和Dropbox。当然,密钥文件放在手机里而不会放到网上去。
  • 快速解锁。因为手机的特殊性质,输入主密码比较麻烦,所以它提供了解锁之后再次解锁只需要输入密码最后几位即可。如果这个快速解锁密码输错,将需要重新输入完整的密码。
  • 可以通过在浏览器里用分享功能把URL分享给Keepass2Android,它就会帮你自动识别相应的项目并且开启调用程序。实际上就等于完美集成各种浏览器了,而浏览器本身不需要装任何扩展。
  • 调用用户名和密码程序不再需要系统剪贴板协助。而是调用它自带的输入法模块,这个输入法模块本身即能快速调用相应项的用户名和密码甚至是别的自定义项。完全杜绝了各个监控剪贴板的应用以及动机不纯的输入法应用。

最后总结

Lastpass什么的弱爆了。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多