第四代密码管理器,
安全技术: 基于安全芯片的数据保护技术,不再担心主密码泄露
过去的十几年,各种密码管理器软件层出不穷,各类营销口号花样百出,而所使用的数据保护技术在本质上却没有太大的改进。
很多对数据安全有更高要求的用户只能选择专用硬件密码管理器产品,默默忍受着诸多不便。
让人兴奋的是,智能手机的发展为我们带来了很多新的安全技术,沙盒隔离便是其中之一。
在iOS和Android系统上,所有App都可以选择使用沙盒隔离,每个App的私有数据都不能被其他App访问。即使用户不小心安装了恶意App,该恶意App也无法偷取其他App的私有数据(除非它能够突破沙盒保护或者获取到root权限)。
当然,也并不是所有App都会使用沙盒隔离,相反,有些App可能会选择使用外部存储,比如Keepass2Android
。Keepass2Android
数据库保存在外部存储中,所有能够访问外部存储的App都能够读取该数据库。
使用 Keepass2Android
的朋友们要注意了,如果你手机上不小心安装了恶意App(例如恶意的输入法),该App就可以一边截获你输入的主密码,一边读取数据库文件,那你存储的所有密码都会泄露!
沙盒技术虽然对数据保护起到一定的作用,却也难以防止数据因系统备份、网络同步、应用克隆等操作而泄露。
真正激动人心的是,智能手机带来了安全芯片的普及,这也为第四代密码管理器的诞生奠定了坚实的技术基础。
现在大多数智能手机都集成了生物识别技术,而为了安全地处理用户的生物信息,也都引入了安全芯片。
图中的 TEE
是独立于CPU和操作系统的安全芯片系统(iOS
中叫 Secure Enclave
)。指纹传感器硬件线路直连安全芯片,直接将扫描的生物数据发送到安全芯片内部验证,安全芯片只告诉操作系统验证结果,保证了生物数据的安全。
App使用指纹验证的过程大概如下:
应用程序先调用操作系统API,请求系统验证指纹
操作系统指纹管理和服务组件,请求TEE验证用户指纹
TEE读取并且验证指纹数据
TEE把验证结果告知操作系统,操作系统再告知应用程序
因此,担心App偷取指纹数据的用户大可放心,App根本就无法读取你的指纹数据!
不过,使用人脸识别的App倒是可以采集人脸数据,因为摄像头扫描的数据是App直接处理的(iPhone 面容ID验证除外)。
第四代密码管理器使用手机安全芯片保护用户数据。
安全芯片中存储的数据都是加密的,运行时的内存也是加密的,加密密钥存储在芯片内部。即使是外部的操作系统,也无法访问安全芯片中的数据、无法获取加密数据的密钥。
☝️ 安全芯片加密数据示意图
App可以请求安全芯片创建密钥,并且只有创建密钥的App才能请求安全芯片使用这个密钥执行加密算法。不论是加密还是解密,都由安全芯片处理,App只能够得到加密/解密的结果,而得不到密钥。
回顾第二代密码管理器,既不能写死密钥,也不能把密钥和数据库一起保存,所以只能通过主密码生成密钥来加密数据。
而现在,第四代密码管理器可以使用安全芯片来安全地存储密钥了。就算用户不设置主密码,数据也是非常安全的,因为即使任何其他App偷取了数据库,也无法解密得到原文。
使用第四代密码管理器,只要手机解锁密码足够安全,又不担心女朋友查看你保存的密码,那就完全可以不设置主密码了。
安卓手机用户不要使用图案解锁,这篇论文说只需要五次就能破解。
如果担心在手机解锁状态下被他人偷窥密码,也可以使用主密码进一步保护数据的。
第四代密码管理器的密钥存储在安全芯片内部,加密的数据只能够在本机解密,离开本机将无法解密。
1. 不设置主密码仍然足够安全
第二代和第三代密码管理器,必须依赖主密码生成密钥来保护数据,否则就和第一代密码管理器一样,可以被其他程序读取用户数据。
第四代密码管理器,保护数据的密钥存储在安全芯片内部,即使是操作系统也不可提取,因此不设置主密码也能保护用户数据。
2. 数据库被盗+泄露主密码,仍然安全
第二代和第三代密码管理器,如果同时泄露了数据库文件和主密码(以及第三代的SecretKey),黑客就可以使用同样的算法解密出数据。
第四代密码管理器,使用了存储在安全芯片内部的密钥来保护数据,黑客无法从安全芯片中提取出密钥,无法解密数据。
3. 数据库被盗+暴力破解,仍然安全
第二代和第三代密码管理器,如果数据库文件(以及第三代的SecretKey)泄露了,并且主密码不够强,黑客就可能通过租用大量云服务计算资源进行暴力破解。
第四代密码管理器,使用了存储在安全芯片内部的密钥来保护数据,即使黑客暴力破解了主密码,也无法解密数据。
当然,有利就有弊,使用安全芯片大幅提升安全性的同时,第四代密码管理器也难以同步数据到其他设备。
由于密钥存储在安全芯片内部,无法从一个手机迁移到另一个手机,所以如果仅仅把加密后的数据同步到新手机,同样也是无法解密的。
任何技术都是可以被攻击的,第四代密码管理器也不例外,毕竟App不可能100%弄清楚使用者是合法用户还是黑客。
回顾一下,黑客要偷取前几代密码管理器中保存的密码应具备的条件:
第一代密码管理器,能够读取 数据库文件 即可;
第二代密码管理器,需要读取 数据库文件 + 偷取/破解 主密码;
第三代密码管理器,需要读取 数据库文件 + 偷取/破解 主密码 + 读取 主密钥;
第四代密码管理器,尽管读取 数据库文件 + 偷取/破解 主密码 也无法解密。黑客还需要:
控制手机(因为数据离开手机就无法解密);
突破安全芯片的防护;