官方公众号企业安全新浪微博
FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。
FreeBuf+小程序
开源不是金钟罩
简介
KeePass
是开源免费的密码管理器,自2003年11月发布以来广受欢迎。作为第二代密码管理器的典型代表,KeePass
超越了前一代,为密码管理带来了真正的加密保护,可以有效防止泄密。
经过十几年的发展,KeePass
功能越来越强大,并且积累了数百万用户。除了最早支持的Windows平台外,KeePass
已经被广泛移植到Linux,Mac,Android,iOS等所有主流平台。在Play Store中,KeePass2Android
, KeePassDroid
等 Android 移植版下载量已经超过1百万。
风险
由于KeePass
开源免费,大量用户慕名而来,但他们却不理解安全使用KeePass
的前提条件。在 Password managers aren't all they're cracked up to be. Here's why一文中,Kayla Matthews介绍了密码管理器并非牢不可破,警告用户不要沉迷于假的安全感。开源不会给KeePass
一个金钟罩,如果使用不当,同样会面临严重的风险。
绝大多数的KeePass
产品,都使用公共存储空间保存数据库文件(iOS移植版除外,因为iOS没有公共存储空间)。加密后的数据库文件,很容易被系统上的其他App访问,离泄密实际上只有一个主密码的距离。
通常,黑客即使偷取了KeePass
数据库,也仍然需要破解主密码才能够偷取里面保存的密码。如果主密码设置得很长、很复杂、又不重用,暴力破解还是很有难度的。但是有一类App却能够轻而易举地获得主密码:输入法。
很多人都会使用第三方输入法,而输入法把用户键入的字符上传到云端早已不是什么秘密,要不怎么改进输入体验呢?只要偷取KeePass
数据库的恶意程序,能够同时从输入法的数据里面偷取到主密码,那么破解保存的所有密码就再容易不过了。又或者,邪恶地想象一下,如果恶意的输入法偷取了KeePass
数据库呢?
在iOS平台上,由于沙盒限制,即使是输入法也无法偷取KeePass
数据库,但是其他平台并没有这个保护。
Android平台不是也有沙盒吗?
Android系统确实有沙盒保护机制,能够限制恶意程序访问App的内部数据,可惜几个流行的KeePass
Android移植版本,全都把数据库文件保存在外部存储中。同时,几乎所有流行的输入法App都具备偷取密码的足够权限:
外部存储,可以读取KeePass数据库文件;
网络,可以将主密码和数据库文件发送到云端。
如果读取了KeePass
的数据库,又知道主密码,那么再利用KeePass
的开源加密算法,就能够很快解密出保存的密码。当然,开源并非必要条件,在黑客的电脑上使用KeePass
程序打开数据库并输入主密码,也立即可以解密。
那些流行的输入法可以信任吗?
至于你们信不信,我反正信了不信!
建议
在Android这样有沙盒保护的平台上,将密码数据库保存在外部存储中是非常危险的,KeePass
的开发者显然更重视某些便利性,而非用户数据的安全性。如果仍然想要使用 KeePass
密码管理器,建议:
在小米、华为等手机上,启用安全键盘。在输入密码时,安全键盘会代替默认输入法,防止密码被输入法偷取。
禁止输入法访问外部存储。
禁用输入法的联网权限,或者选择没有联网权限的输入法(如果你找得到的话)。
当然,常规安全操作也是必不可少的,比如及时更新系统安全补丁,不要安装来源不明的App等。
如果你更在意密码管理的安全性,建议不要使用 Android 版本的 KeePass
程序,推荐使用我们的第四代密码管理器:神锁离线版。