找一个密码管理器替代 Bitwarden

一开始用的这个,丑到爆炸……而且有些bug……

神锁离线版。

完全不访问网络,不必担心云端服务器泄露数据。这里有提供检验是否真离线的方法:你说离线就离线,是不是真离线? - 知乎

安全芯片加密,属于第四代密码管理器,可以不使用主密码。这里有讲解加密原理:密码管理器进化史(4/4) - 知乎

App支持Android手机,插件支持Chrome、Firefox等浏览器。
密码等数据只存储在手机上,受安全芯片保护。插件不存储密码,需要配合手机端app扫码使用。这设计可以很大程度上降低浏览器带来的安全风险,可以看这篇硬核文章了解更多,神锁离线版插件的安全设计 - 知乎

可以保存一次性密码(OTP);
自动填充能安全匹配账号,识别恶意欺诈;
提供数百个定制化账号安全模板,可以存储安全问题与答案、恢复代码等等。

没什么特别的地方,但是收费还特别贵,不怎么样

没什么特别的地方是指哪些方面呢?

如果看安全模型,光是数据加密方式就与市面上其他的密码管理器不一样了。

市面上绝大多数密码管理器都是依赖主密码进行加密,密码管理器进化史(2/4) - 知乎 ,忘记主密码就无法查看数据,Why Password Managers Are Great Until You Lose Your Password - CNET

而神锁离线版解决了这个问题,使用手机安全芯片加密,就算不设置主密码也可以保证数据安全。用户也可以选择在安全芯片加密的基础上再叠加一层主密码保护,而且不用担心忘记,因为主密码可以“找回”, 0Password,忘记密码管理器的主密码怎么办? - 知乎

另外再举个例子,插件的设计。

大多数密码管理器都有提供浏览器插件,安全性很大程度上依赖于浏览器,有些安全风险无法避免, sean cassidy : Browser Extension Password Managers Should Not Be Used

假设一个极端情况,浏览器存在严重的安全漏洞,比如零日漏洞。

  • 使用神锁离线版插件,数据都只存储在手机app上,由安全芯片保护。在使用扫码填充时才将一个密码从手机端app加密发送到插件,因此浏览器上的恶意程序只有在用户做填充时,才可以偷取用户的一个密码。
  • 而使用其他插件密码管理器,在输入主密码后,浏览器上的恶意程序可以偷取所有保存的密码。

最后还想提一下,神锁离线版使用可验证的安全技术。用户可以自己去验证是否真的安全,而不是选择相信开发者不作恶。比如扫码填充,数据从手机app端发送到插件端,是否真的使用了端到端加密?服务商是否真的不能偷看密码?用户都可以一一检查, 验证神锁离线版插件的安全机制 - 知乎

上面很多人都提到了Keepass,对比Keepass,神锁离线版的设计也有自己的优势,比如一位用户曾经评论到的:

2 个赞

一些问题:

  1. 多设备同步/备份应该算是刚需,请问是怎么解决的呢?
  2. 二维码是不是太过复杂了?应该可以通过类似 uuid 这样的手段来缩短,反正二维码的目的就是匹配扩展和手机,让它们可以通过服务器进行联系、传输数据。
  3. 由 2 引发的问题,为什么移动端选择密码之后还要打开浏览器?App 不直接和服务器通信吗?而且这些数据留在浏览器里是不是也不安全?
  4. 为什么不从国外开始推广?国外市场更开放、竞争更充分,相比之下国产软件在国内的名声实在不算好。

采用手机安全芯片加密这一点,目测会有两点问题

  1. 云端同步存储基本做不到。即使做到,也需要源手机密钥的验证。会在换机场景下带来不便以及用户忘记同步数据即密钥库全灭的风险。

  2. 需要设备带有安全芯片。虽然现在大部分手机已经支持,但老设备以及由于一些原因无法使用TEE的设备(eg. 解锁了 BootLoader 的OPPO/一加设备会自动屏蔽TEE)仍然会带来纯系统层面实现的密钥认证的安全问题,甚至于不可使用。

因此我个人认为,最好是除了手机等终端设备的安全芯片,也支持其他形式的安全芯片(例如canokey,yubikey)作为另一选择

  1. App是不联网的,数据不会上传到服务器,没有云端同步,但可以手动备份恢复。备份的数据使用AES-256和PBKDF2算法加密,用户需要设置备份密码。备份可以存在备用机或者U盘等安全的地方,完全由用户自己掌控。备份密码也是可以找回的,不用担心忘记,设计原理与找回主密码一致,安全性有保证。

  2. 使用神锁,不需要注册登录,不需要提供任何个人信息。App与插件之间建立联系需要依赖二维码,扫码的设计也有使用UUID,但更重要的是密钥交换,建立端到端加密通道。

    (1)插件检测到页面登录框后,生成椭圆曲线密钥对 (ECC 密钥对) ,将公钥和网址等信息编码成二维码,展示在页面上。

    (2)用户使用神锁离线版 app 扫码后,app 会让用户选择要填充的账号。

    (3)用户选择账号后,神锁离线版 app 就会:生成 ECC 密钥对,使用ECDH 算法生成共享密钥,使用共享密钥加密用户名、密码等信息。

    (4)神锁离线版 app 启动手机浏览器,将加密数据和 ECC 公钥发送到插件。

    (5)插件使用 ECDH 算法生成共享密钥,解密得到用户名和密码。

    (6)插件将用户名和密码填充到登录框中

  3. App不联网,需要借助手机浏览器负责联网发送数据。App联网直接和服务器通信的话就说不清楚会不会做些啥了。通过浏览器运行云端的 H5 网页程序把数据发送到插件端,发送的数据作为 H5 网页的参数输入,H5 网页也能方便查看源代码,用户完全可以自行审计整个数据传输的安全性。

    数据是先在App端加密,然后经过手机浏览器,最终到达插件端解密的。使用端到端加密(ECDH 密钥协商)可以保证传输过程的安全,确保用户数据不会由于云端传输而被黑客或者内部员工偷取,也不用担心经过手机浏览器会不会不安全。

    这篇文章有非常详细地讲解这个安全设计:神锁离线版插件的安全设计 - 知乎

  4. 我们现在国内外都有用户,英文名 ID Guard Offline,在App Store和Google Play都能下载。可能是国内用户被无良厂商吓怕了吧…我们也有用户反馈说几年前用过某硬件密码管理器,连最基本的安全设计都没做好。当然,海外的厂商也有经常被曝出问题的,比如LastPass…

    选择密码管理器,还是要看实际安全模型做得怎样。只要产品是好的,最终也会获得认可,我也相信我们的用户是有足够的判断能力的。

2 个赞
  1. 支持备份恢复。可以在App内加密备份数据,然后存到备用机、U盘等用户认为安全可信的地方,由用户自己保管。换机的时候,就把备份发送到新手机,恢复数据。

    离线的密码管理器都是需要用户自己做好备份的,因为数据不会上传到厂商服务器,没法自动云端同步。神锁还做了提醒备份的功能,每次用户保存了新密码后都会有提醒,因此也不用担心忘记备份最新的数据。

  2. 出于安全考虑,不支持没有安全芯片的手机使用。

    不支持外置key。首先,外置key一般是用作验证,而非加密。其次,绑定手机上的安全芯片可以确保用户必须持有设备并通过设备验证,增加了两个验证因素。最后,手机内置安全芯片,限制了黑客破解的计算性能,相比高性能计算机甚至大规模服务器集群,难度要大很多。