导语:Signal Desktop应用程序在加密本地存储消息的过程中所犯的错误使其对攻击者敞开了大门。
Signal Desktop应用程序在加密本地存储消息的过程中所犯的错误使其对攻击者敞开了大门。
安装Signal Desktop后,它将创建一个名为db.sqlite的加密SQLite数据库,用于存储用户的消息。程序在安装时自动生成此数据库的加密密钥,而无需与用户进行任何交互。
在记事本中打开加密数据库
由于每次Signal Desktop打开数据库时都需要加密密钥,因此它将以纯文本形式存储到PC上名为%AppData%\Signal\config.json和Mac上名为~/Library/Application Support/Signal/config.json的文件中。
打开config.json文件,任何人都可以使用解密密钥。
带有解密密钥的Config.json文件
根据在Signal Desktop中发现问题的Nathaniel Suchy所说,这使得用户的数据库对任何可以访问计算机的攻击者或恶意软件都是开放的。
Suchy在谈话中告诉BleepingComputer,
经验教训,数据库加密是个非常好的方法。
为了说明此问题,BleepingComputer安装了Signal Desktop应用程序并发送了一些测试消息。首先,我们打开config.json文件以获取加密密钥,如上所示。
然后,我们使用名为SQLite Database Browser的程序打开位于%AppData%\Roaming\Signal\sql\db.sqlite的数据库。如你所见,程序会提示我们输入解密密钥。
当我们输入从config.json文件中得到的解密密钥,就可以打开数据库,从而可以完全访问其内容。
加密数据库是保护用户个人消息的好方法,但是当任何人都可以轻松访问密钥时,它就会崩溃。据Suchy说,这个问题可以通过要求用户输入密码来轻松解决,该密码将用于生成永远不会存储在本地的加密密钥。
使用用户生成的加密密钥是云备份、密码管理器、加密钱包和身份验证协议等服务的常见做法,因为只有用户才能访问密钥。但是,使用这种方法唯一需要注意的是,如果用户丢失密钥,数据将永远丢失。
这个漏洞发生在前两天报告的另一个不同的Signal问题之后,当从Signal Chrome扩展升级到Signal Desktop时,未加密的消息存储在文本文件中。
BleepingComputer通过Twitter联系Signal以征求意见,但在本文发布时尚未收到回复。