前言
神锁离线版自第一版发布以来就坚持做安全技术创新,不做差不多的密码管理器。我们团队针对当今的攻击手段做深入分析,将神锁离线版的抗攻击能力提升到最高水平,应对新的安全挑战。
两大安全设计原则始终贯穿神锁离线版的整个开发:
– 最小化攻击面
最小化攻击面是软件安全最重要的原则之一。软件暴露的攻击面越大,防范黑客攻击就越困难。我们在设计功能时都尽可能减少暴露攻击面,或者对必然暴露的攻击面做技术防护,降低数据泄露的风险。
– 安全技术可验证
大家都知道App未必完全如同开发者声称的那样工作。我们研发可以验证的安全技术,公开验证的方法,让用户可以亲自检验,不需要相信任何人的鬼话,只需相信客观技术。
神锁离线版使用新技术新设计,解决了其他密码管理器存在的安全问题,本文将针对以下几点做展开讲解:
– 安全芯片加密:主密码不再是最重要的因素,泄露主密码不会导致数据被盗。
– 找回主密码:可以在好友协助下解锁,忘记主密码不会导致数据丢失。
– 存储联网分离:App与插件配合使用,分离攻击面,浏览器漏洞不影响存储安全。
– 自动填充防欺诈:填充信息可视化,识别覆盖攻击,防止恶意软件骗取用户密码。
安全芯片加密
说到密码管理器的安全性,大家最关心也最容易想到的就是加密方式。随着技术的发展进步,密码管理器的加密方式也在不断改进,安全性持续提升。
回顾整个密码管理器的发展进化史,根据加密方式的不同、破解难度的高低,可以将密码管理器大概划分为4代。
第一代密码管理器,也就是最早出现的密码管理器,是由浏览器集成的,用于帮助用户填充密码。第一代密码管理器,通常都是明文保存密码,没有加密保护或者使用很容易破解的加密,黑客获取数据库就可查看密码。
后来到了大概2000年左右,海外开始出现独立的专业密码管理器,比较有代表性的就是KeePass、Password Safe。第二代密码管理器带来了真正的加密保护,基于用户设置的主密码生成加密密钥,用来加密存储的数据。
现在市面上很多密码管理器都声称使用了军事级别加密,其实就是使用了AES-256加密算法。用户需要设置并记住一个主密码,密码管理器基于该主密码,利用PBKDF2算法生成加密密钥,再使用AES-256算法加密数据。
大多数密码管理器的加密核心原理如上图所示,在具体细节处理上都可能做一些独特的设计和扩展。
AES-256算法几乎无法被破解,黑客只会尝试获取加密密钥key。使用第二代密码管理器,用户数据的安全性取决于设置的主密码,主密码泄露可能导致所有密码被盗。
所以,要想真正保护存储的数据安全,主密码需要满足两个条件:足够长足够强,不能被别人知道。
但可惜,在现实生活中,用户在使用主密码时会有各种各样的问题:
– 密码本身强度不够,很容易被黑客破解
– 输入密码时,被别人看到或者被手机上的恶意App偷取
– 重用密码,其中一个平台泄露会威胁到密码管理器的安全
密码泄露这事儿可常见了,have i been pwned收集到的密码泄露证据记录高达113亿,已经远超地球人口总数了……
为了削弱主密码问题带来的安全威胁,第三代密码管理器的典型代表1Password,设计了一个叫two-secret key derivation (2SKD)的方法来生成加密密钥。使用1Password,除了要设置主密码外,还需要把主密钥Secret Key保存起来。Secret Key不同步到云端。
在新设备登录第二代密码管理器时,只需输入账号密码就可以解密云端同步下来的数据。在新设备登录第三代密码管理器时,除了账号密码外,还需要输入Secret Key才能解密云端下载的数据。即使用户泄露主密码、云端服务器被入侵,黑客依然无法获取用户存储在第三代密码管理器中的数据。
当用户首次在设备上登入自己的账号后,第三代密码管理器就会把Secret Key保存在本地,不会让用户每次都输入。数据库和Secret Key都保存在设备上,如果设备端被恶意软件入侵,那黑客获取这两者都不难,就差破解主密码了。
所以,第三代密码管理器提升了云端的安全性,但在设备端的安全性与第二代一样,都是主要依赖用户设置的主密码,主密码泄露可能导致所有密码被盗。
现在,大多数智能手机都集成了生物识别技术,而为了安全地处理用户的生物信息,也都引入了安全芯片。
`TEE` 是独立于CPU和操作系统的安全芯片系统(`iOS` 中叫 `Secure Enclave`)。指纹传感器硬件线路直连安全芯片,直接将扫描的生物数据发送到安全芯片内部进行验证,安全芯片只将验证结果告知操作系统,保证生物数据的安全。
神锁离线版使用安全芯片技术加密保护存储的数据,进一步增加解锁条件,不再担心主密码泄露。
☝️ 安全芯片加密数据示意图
神锁离线版App请求安全芯片创建加密密钥,并请求安全芯片使用该加密密钥执行加密算法。数据加解密都由安全芯片处理,神锁离线版App只能得到加密/解密的结果,得不到加密密钥。
只有创建密钥的App才能请求安全芯片使用该密钥执行加密算法。
安全芯片中存储的数据都是加密的,运行时的内存也是加密的,神锁离线版App的加密密钥存储在芯片内部。即使是外部的操作系统,也无法访问安全芯片中的数据、无法获取神锁离线版App的加密密钥。
因此,有安全芯片保护,即使用户不设置主密码/主密码泄露/主密码被暴力破解,数据仍是非常安全的。经安全芯片加密的数据只能在本机经安全芯片解密,离开本机将无法解密。所以,黑客即使通过应用克隆攻击等方式偷取了神锁离线版App的数据库,也无法解密得到原文。
应用克隆攻击就是,利用系统漏洞或者特殊权限将App数据克隆迁移到新手机,以窃取隐私信息、盗取账号及资金等。
防应用克隆攻击效果演示:神锁离线版 VS LastPass 👇
找回主密码
密码管理安全应该包含两大方面的内容:数据保密性和数据可用性。很多密码管理器都相当注重保障数据保密性,在这方面也下了不少功夫,但在数据可用性方面则少了些作为。
正如上面说过的,很多密码管理器都是基于用户设置的主密码来生成加密密钥,用户必须记住主密码,如果忘记主密码,数据库将无法解密,存储的密码都丢失了。CNET编辑Scott Stein也曾发表一篇文章描述这种痛苦经历。
神锁离线版不依赖主密码生成加密密钥,而是直接使用安全芯片内部的密钥,因此可以不设置主密码,没有记主密码的烦恼。
当然,为了满足用户更高的安全要求,神锁离线版还额外提供了一层主密码保护,供用户选择是否启用。如果用户选择再加一层主密码保护,那他们可能也会因为忘记主密码而导致丢失所有数据。
为解决这问题,神锁离线版精心设计了好友协助找回主密码的功能,忘记主密码也仍然可以解锁查看数据库,同时保证了数据保密性与可用性。
使用安全芯片内部的密钥,通过AES-256算法加密主密码,密文发送给好友保存在Ta的神锁离线版App中,同样受安全芯片保护,黑客想获取都难。密钥只存储在用户手机安全芯片中,好友没有密钥,无法解密密文获得主密码,保证了主密码不泄露,不怕好友“背叛”。
忘记主密码时就可以叫好友打开Ta的神锁离线版App将保存的密文发送回来,用户在手机上就可以通过安全芯片解密得到主密码,进而解锁手机App查看数据啦。
戳视频看演示更直观 👇
某些密码管理器也有尝试解决忘记主密码的问题,但安全设计背后所需的信任水平要求与神锁离线版不同,技术对比如下:
– 神锁离线版 VS 可以重置主密码的密码管理器(例如谷歌)
谷歌密码管理器只需要验证用户身份,即可重新授权用户访问存储的数据。用户存储的数据并不依赖于主密码加密,而是完全依赖于服务商的控制和保护,主密码只是用来限制访问。
神锁离线版不允许用户直接重置主密码,数据保护仍然依赖于该主密码加密。神锁离线版额外增加了备选方案,允许用户将主密码加密后发送给好友保存。
– 神锁离线版 VS 好友可获取主密码的密码管理器(例如Bitwarden)
Bitwarden密码管理器的紧急访问功能允许受信任的好友获取用户的主密码访问数据库。用户的主密码使用好友密钥对的公钥加密,在忘记主密码时,可以叫好友请求紧急访问,然后将加密的主密码发送给好友,好友用密钥对的私钥可以解密获得主密码,进而访问用户的数据库。这个设计要求好友非常可信,允许对方看到数据库。
神锁离线版加密主密码的密钥由安全芯片生成并保护,好友没有密钥,不能解密获取主密码,也不能访问用户的数据库。这个设计只需要信任好友帮助保存一个加密文件即可,对方无法看到数据库。
存储联网分离
神锁离线版App没有网络访问权限,完全不联网,用户数据只存储在手机上由安全芯片加密保护,不会上传到云端服务器,减少攻击面,杜绝一切网络相关攻击。
数据存储在神锁离线版App是很安全了,那电脑端使用如何解决?
现在市面上常见的密码管理器的电脑端解决方案无非两种:桌面客户端,浏览器插件。经深入调查后发现,这两种解决方案在安全性方面都不太理想。
由于桌面平台没有完善的沙盒保护,恶意软件不仅可以读取软件存储的数据,还可以通过Keylogger或者扫描内存数据等方法偷取密码管理器的主密码。而且,桌面平台没有普遍配置安全芯片,在桌面平台做密钥管理远不如智能手机安全。
Independent Security Evaluators 前年发布的报告指出,通过扫描内存可以找到桌面端密码管理器的主密码 Password Managers: Under the Hood of Secrets Management。华盛顿邮报也曾公开了一个演示视频 Password managers have a security flaw. But you should still use one.。
安全研究员 Adrian Bednarek 提取1Password主密码
绝大多数密码管理器提供插件版时,都基于浏览器的插件开发接口实现完整的密码管理器,称之为插件密码管理器。
插件密码管理器的安全性很大程度依赖于浏览器,黑客利用浏览器漏洞可能会破解插件密码管理器,导致用户数据泄露。
基于 Web 技术的插件密码管理器程序,无法访问操作系统的底层接口,而要完全依赖浏览器的密码输入框,无法防范Keylogger攻击。
浏览器漏洞众多,是除操作系统外,被黑客攻击最多的平台。浏览器天然联网的特性,让很多漏洞更容易被黑客远程利用,基于浏览器平台的插件密码管理器也很容易被攻击。
浏览器插件技术暴露难以控制的攻击面。安全研究员Martin Vigo曾在Even the LastPass Will be Stolen, Deal with It!)中演示了破解LastPass插件的方法,其中基于插件客户端的方法就有4种。
浏览器的插件开发接口基于Web技术,非常开放灵活,恶意程序通过DOM/JS,几乎可以访问页面中的任何数据。著名安全研究员 Sean Cassidy 在他的博客Browser Extension Password Managers Should Not Be Used中认为插件密码管理器风险无法避免。
神锁离线版独创设计了扫码远程加密填充方案,App与插件配合使用,让用户在电脑端浏览器上也能安全地填充密码。
神锁离线版插件连接网络,不存储任何数据,尽管输出环境不安全,也不会威胁到其他密码的安全。设计原理如下:
架构图
序列图
1. 插件检测到页面登录框后,生成椭圆曲线密钥对 (ECC 密钥对,elliptic-curve public–private key pair) ,将公钥和网址等信息编码成二维码,展示在电脑端页面上。
2. 用户使用神锁离线版App扫描电脑端页面二维码后,App会让用户选择要填充的账号。
3.用户选择账号后,神锁离线版App就会:
a. 生成 ECC 密钥对
b. 使用ECDH 算法生成共享密钥
c. 使用共享密钥加密用户名、密码等信息
4.神锁离线版App调用手机浏览器,将加密数据和ECC公钥发送到插件
5.插件使用ECDH算法生成共享密钥,解密得到用户名和密码
6.插件将用户名和密码填充到电脑端页面登录框中
通过App端到插件端的ECDH密钥协商,实现了端到端加密,确保用户密码不会由于云端传输而被黑客甚至内部员工偷取。
用户手动扫码填充,能够避免恶意程序在用户没有意识的情况下发动攻击自动偷取密码。
和插件密码管理器对比,最大的不同是,桌面或者网页中的恶意程序无法攻击神锁离线版App,存储在App中的其他密码安全性完全不受影响。
对于插件的安全设计,我们也提供了验证的方法:验证神锁离线版插件的安全机制
自动填充防欺诈
使用过密码管理器的朋友应该都知道自动填充功能,点击两三下就能自动填写账号密码,不需要手动输入,真是方便快捷。但可能很多人都没有关注过自动填充的安全问题,自动填充是大多数密码管理器暴露的一个主要攻击面。
去年的一篇论文Revisiting Security Vulnerabilities in Commercial Password Managers,重点研究了一些密码管理器自动填充的防欺诈能力,发现它们普遍做得都不够好。
神锁离线版App的高级防欺诈能力可以有效防范这些欺诈,对暴露的攻击面做防护,进一步提升自动填充的安全性。在App上填充时,神锁离线版会检测请求自动填充的App的安全性,识别出恶意App,防止恶意App盗取密码。在网页上填充时,神锁离线版会检测用户是不是在不安全的HTTP网站上使用自动填充,防止提交密码时泄露密码。
– 自动填充安全可视化
显示请求自动填充的信息,如用户名、密码等,防止恶意网站或App通过隐藏密码框来骗取密码。
恶意网站或者App可能会隐藏密码框,让用户误以为不需要填充密码。结果使用自动填充时会把密码填进隐藏的密码框里,这样密码也就被盗了,而当事人却浑然不知。
– 检测近年开始流行的新型攻击——覆盖攻击
覆盖攻击就是,当用户打开某个正常App时,恶意App会强行覆盖在正常App上层展示一个伪造的登录界面,人眼无法分辨真伪。用户在这个伪造界面输入的用户名和密码会被恶意App窃取。
如果遇到覆盖攻击偷取密码,自动填充就会弹出 `红色警告`,提醒用户谨慎操作。
后记
以上讲解都是点到即止,有些内容可能未能深入剖析,如果有未讲明白的内容,欢迎留言讨论。
当然,神锁离线版的安全技术及优势远不止以上说到的,安全设计也体现在产品的很多细节处,看官网博客可了解更多https://www.bluespace-labs.com/blog/
喜欢我们的产品或技术的小伙伴,可以关注神锁离线版微信公众号,或者加入QQ群“神锁离线版用户群”与我们聊聊。
发表评论
您还未登录,请先登录。
登录