神锁离线版自第一版发布以来就坚持做安全技术创新,不做差不多的密码管理器。我们团队针对当今的攻击手段做深入分析,将神锁离线版的抗攻击能力提升到最高水平,应对新的安全挑战。
两大安全设计原则始终贯穿神锁离线版的整个开发:
最小化攻击面是软件安全最重要的原则之一。软件暴露的攻击面越大,防范黑客攻击就越困难。我们在设计功能时都尽可能减少暴露攻击面,或者对必然暴露的攻击面做技术防护,降低数据泄露的风险。
大家都知道App未必完全如同开发者声称的那样工作。我们研发可以验证的安全技术,公开验证的方法,让用户可以亲自检验,不需要相信任何人的鬼话,只需相信客观技术。
神锁离线版使用新技术新设计,解决了其他密码管理器存在的安全问题,本文将针对以下几点做展开讲解:
说到密码管理器的安全性,大家最关心也最容易想到的就是加密方式。随着技术的发展进步,密码管理器的加密方式也在不断改进,安全性持续提升。
回顾整个密码管理器的发展进化史,根据加密方式的不同、破解难度的高低,可以将密码管理器大概划分为4代。
第一代密码管理器,也就是最早出现的密码管理器,是由浏览器集成的,用于帮助用户填充密码。第一代密码管理器,通常都是明文保存密码,没有加密保护或者使用很容易破解的加密,黑客获取数据库就可查看密码。
后来到了大概2000年左右,海外开始出现独立的专业密码管理器,比较有代表性的就是KeePass、Password Safe。第二代密码管理器带来了真正的加密保护,基于用户设置的主密码生成加密密钥,用来加密存储的数据。
现在市面上很多密码管理器都声称使用了军事级别加密,其实就是使用了AES-256加密算法。用户需要设置并记住一个主密码,密码管理器基于该主密码,利用PBKDF2算法生成加密密钥,再使用AES-256算法加密数据。
大多数密码管理器的加密核心原理如上图所示,在具体细节处理上都可能做一些独特的设计和扩展。
AES-256算法几乎无法被破解,黑客只会尝试获取加密密钥key。使用第二代密码管理器,用户数据的安全性取决于设置的主密码,主密码泄露可能导致所有密码被盗。
所以,要想真正保护存储的数据安全,主密码需要满足两个条件:足够长足够强,不能被别人知道。
但可惜,在现实生活中,用户在使用主密码时会有各种各样的问题:
为了削弱主密码问题带来的安全威胁,第三代密码管理器的典型代表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查看数据啦。
戳视频看演示更直观 👇
某些密码管理器也有尝试解决忘记主密码的问题,但安全设计背后所需的信任水平要求与神锁离线版不同,技术对比如下:
神锁离线版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.。
绝大多数密码管理器提供插件版时,都基于浏览器的插件开发接口实现完整的密码管理器,称之为插件密码管理器。
插件密码管理器的安全性很大程度依赖于浏览器,黑客利用浏览器漏洞可能会破解插件密码管理器,导致用户数据泄露。
基于 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与插件配合使用,让用户在电脑端浏览器上也能安全地填充密码。
神锁离线版插件连接网络,不存储任何数据,尽管输出环境不安全,也不会威胁到其他密码的安全。设计原理如下:
架构图
序列图
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网站上使用自动填充,防止提交密码时泄露密码。
红色警告
,提醒用户谨慎操作。以上讲解都是点到即止,有些内容可能未能深入剖析,如果有未讲明白的内容,欢迎留言讨论。
当然,神锁离线版的安全技术及优势远不止以上说到的,安全设计也体现在产品的很多细节处,看官网博客可了解更多
喜欢我们的产品或技术的小伙伴,可以关注神锁离线版微信公众号,或者加入QQ群“神锁离线版用户群”与我们聊聊。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。