解密信号应用

2020-12-11 19:06:21

帮派成员和毒贩们迅速采取了掩护其通讯的方式。这就是为什么执法机构看到采用诸如Signal之类的高度加密应用程序的迅速增加的原因,该应用程序包含图像模糊等功能以阻止警察查看数据。

几乎无法解密随Signal发送的消息和附件……直到现在。

Signal是一种加密的通信应用程序,旨在使来自第三方程序的已发送消息和附件尽可能安全。 Signal不仅对其发送的数据使用端到端加密,而且该应用程序还采用了专有的开源加密协议“ Signal Protocol™”。这样的应用程序使解析数据以进行法医分析变得极为困难。

随着人们开始更多地在线交流,这种大流行及其影响推动了Signal的空前注册。根据分析公司App Annie的数据,到2020年5月,Signal在全球的下载量超过了100万次。

犯罪分子正在使用此应用程序进行通信,发送附件并进行非法交易,以使他们与执法部门保持离散和不可见。由于它实际上对所有元数据都进行了加密以保护用户,因此,法律机构已经提出了要求加密软件开发人员启用“后门”的措施,以使他们能够访问人们的数据。

在达成此类协议之前,Cellebrite会继续与执法部门密切合作,以使机构能够使用Cellebrite Physical Analyzer以及Cellebrite Advanced Services执行的提取操作,对Signal应用程序中的数据进行解密和解码。让我们仔细看看Cellebrite如何使之成为可能。

Signal使用SqlScipher对其数据库进行加密,因此读取它需要一个密钥。我们发现获取密钥需要从共享的首选项文件中读取一个值,并使用名为“ AndroidSecretKey”的密钥对其进行解密,该密钥由名为“ Keystore”的android功能保存。

获得解密的密钥后,我们需要知道如何解密数据库。为此,我们使用了Signal的开源代码,并查找了对数据库的任何调用。在回顾了几十个代码类之后,我们终于找到了我们想要的东西:

找到这个之后,我们简单地在数据库上运行SqlCipher,解密的密钥以及页面大小和kdf迭代的值4096和1。通过这样做,我们设法解密了数据库。

然后在PA的“ signal.db”下显示了一个新的子节点,称为“ signal.db.decrypted”。这就是我们新数据库现在的样子。

邮件存储在名为“ sms”的表中的“ signal.db.decrypted”文件下,附件存储在“ app_parts”文件夹下。

链接消息和附件需要同时解析“ sms”表和另一个称为“ part”的表。

链接附件文件和消息后,我们发现附件也已加密。这次,加密更加难以破解。我们再次查看了共享的首选项文件,并在“ pref_attachment_encrypted_secret”下找到了一个值,该值下具有“ data”和“ iv”字段。

“数据”字段包含一个加密的json文件,该文件一旦被解密,便包含已发送附件的解密密钥。该json包含三个键:“ ClassicCipherKey”,“ ClassicMacKey”和“ ModernKey”。

较新版本的Signal使用“ ModernKey”。获取“ ModernKey”后,我们进入了“部件”表中名为“ data_random”的表中每一行的字段。

现在我们需要将“ ModernKey”和“ data_random”值转换为解密密钥和“ IV”以使解密工作。在某些情况下,“ IV”具有值,但是在此博客中,我们仅指定“ IV”为空的常见情况。因此,我们再次查看了Signal的开源代码,发现了这一点:

这小段代码完全告诉我们我们要寻找的是:如何从“ ModernKey”和“ data_random”生成解密密钥和“ IV”。使用HmacSHA256算法对密钥进行哈希处理,其中使用“ ModernKey”作为初始化向量创建新的哈希,然后在“ data_random”上计算哈希。

获取解密密钥后,我们现在需要知道要使用哪种解密算法。我们返回到Signal的开源代码,发现了以下内容:

看到这告诉我们Signal在CTR模式下使用AES加密。我们在CTR模式下将解密密钥与AES加密一起使用,并对附件文件进行了解密。

解密文件后,我们在“ app_parts”文件夹中的每个节点下获得了一组新的子节点。

这些文件是信号消息中发送的附件。现在,使用在解析消息时创建的消息和附件之间的链接,可以将附件添加到对话中,并查看聊天参与者看到的聊天内容。

解密信号消息和附件不是一件容易的事。 为了从头开始创建新功能,它需要在许多不同方面进行大量研究。 但是,在Cellebrite,寻找新方法来帮助那些使我们的世界更安全的人,这是我们每天致力于的工作。