密码管理软件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呢,有以下几点:
当然Keepass也有一些不足之处,比如用户名无法自动输入中文等。 自动输入Keepass除了可以灵活安全地保存自己的密码数据库之外,一个最吸引人的特点大概就是它的自动输入功能了。除了在数据库中选中指定项后执行自动输入就可以在上一个激活窗口聚焦的输入框上执行预设好的数据输入(比如用户名–tab–密码–回车)之外,还可以通过全局快捷键,让Keepass通过窗口标题自动识别并在数据库中选择相应的密码项后直接执行自动输入。在1.x的时代,这些窗口识别以及输入序列的编辑是要通过在备注那一项写代码来实现,而且通配符只能放在关键字始末,定制性非常差,但是在2.x之后,自动输入被专门放到一个标签中,并提供非常灵活的规则设置。 对于一个网站的用户名和密码,网站的标题可能多种多样,比如”欢迎归来“,比如”登陆“等等,这个时候你就可以设置多个窗口标题识别设置;如果想只针对固定的浏览器,你也可以在最后加上一般在浏览器标题上出现的浏览器标识。假如同一个网站有只需要输入密码的情况,也可以通过根据窗口标题识别来指定这样的网页的自动输入只要输入”密码–回车“的序列。甚至还可以通过自定义项目来增加除了用户名和密码之外的项目并追加进自动输入脚本序列中,也可以追加别的按键序列来自动化输入操作。比如:
就可以在发送自动输入指令之后等候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的读取和写入,也有不少独特的功能:
最后总结Lastpass什么的弱爆了。 |
|