“在互联网上,没人知道你是一条狗”。知名国际大厂也未必像他们说的一样保护我们的数据安全:
备受舆论压力的大厂都这样,那管理所有密码的密码管理器能放心吗?神锁离线版插件声称采用了端到端加密技术,连内部员工都无法偷取用户密码,是不是真的呢?
来,我们告诉你怎么亲手验证我们的安全技术!
神锁离线版可能是唯一一个能告诉用户怎样验证安全技术的密码管理器。
不用太担心不懂技术细节,只需要有一点耐心,就可以和我们一起动手做实验!
比萨斜塔 来自 Saffron Blaze
首先,本次实验的目的是验证:
- 密码会不会偷偷发送给服务器?
- 如果没有直接发送密码,会不会把密钥偷偷发送给服务器?
基本原理
回顾一下神锁离线版插件架构和原理:
我们在app中选择要填充的账号后,用户名和密码是怎么从手机发送到插件的呢?
- app加密用户名和密码等信息;
- app启动手机浏览器,通过浏览器打开网页程序,将要传输的加密数据发送到云端;
- 插件从云端接收到加密数据后,解密出用户名和密码,填充到网页中。
插件实现端到端加密(End-to-end encryption, E2EE)的关键在于借助ECDH算法,可以在插件和app(下图中Alice和Bob)之间建立共享的加密密钥,确保通信安全。
主要步骤:
- app和插件分别生成一次性的椭圆曲线(ECC)密钥对
- 交换可以公开的公钥(Public Key)
- 使用自己的私钥(Private Key)和对方的公钥(Public Key),生成相同的加密密钥(shared secret)
实验准备
实验条件:安装并使用神锁离线版app和插件。
以 Edge 浏览器为例,先设置断点,以便截获传输数据进行分析。步骤如下:
-
从浏览器菜单中,找到
扩展
,打开插件管理界面
-
在插件管理中找到神锁离线版,点击
背景页
链接,打开浏览器调试窗口
-
设置截获数据的断点:
这里稍微麻烦一点,点击4次,分别选择:
- 源代码(Sources),
- 页面(Page),
- 程序脚本(background.js),
- 找到
onServerMessage
函数的定义,在左边行号上点击,设置红色的断点。
实验操作
- 浏览器中打开登录网页 http://www.stealmylogin.com/demo.html ,会看到扫码填充框
-
使用神锁离线版app扫码,app从二维码中可以得到正在填充的网站域名和插件公钥
实验中不要使用真实账号密码,以防泄密给第三方网站。
-
选择账号后,app会打开手机浏览器开始填充。点击浏览器的地址栏,复制地址并记录下来。地址有点长,大概是这个样子:
https://app-link.bluespace.tech:8081/remote-fill/index.html#a=&t=1609300964&host=www.stealmylogin.com&to=15579832-e41c-4b17-8615-b6507a02dd4b&key=MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAELzVA%2B9q