在将桌面链接到移动设备时,Signal应用程序如何阻止QRLjack?

时间:2018-04-18 15:06:50

标签: security encryption privacy

我正在尝试将桌面应用程序链接到我的项目的移动版本。假设移动应用程序是安全的,桌面应用程序只需将会话链接到移动设备以方便使用。

在我的研究中,我遇到了QRLjacking exploit。这是一个社交工程漏洞,与让用户泄露密码没有什么不同。

有趣的是,Signal应用程序似乎不容易受到QRLjacking攻击,尽管它们也通过QR代码将桌面链接到移动设备。

我想知道信号应用的秘诀是什么。幸运的是,代码在这里:https://github.com/signalapp/Signal-Desktop

根据我的分析,我认为这是他们所做的:

  1. 用户注册移动设备。设备发送签名的预密钥 到信号服务器
  2. 用户可以使用端到端加密协议与其他Signal用户聊天,但对我来说更有趣的是它们在链接到桌面时如何防止QR漏洞。
  3. 用户安装桌面应用。首先要注意的是它是一个使用电子打包的JavaScript应用程序。这使得在社会工程技术中难以使用。安装包可以签名并验证为可信任。
  4. 安装后,桌面应用会生成预密钥并将其发送到服务器。
  5. 桌面使用自己的公钥来检查服务器是否链接到移动设备。如果没有,请继续执行步骤6.
  6. 使用UUID密钥将公钥发送到服务器。服务器存储它。 UUID用于QR码。
  7. 用户抬起移动设备并使用信号应用程序扫描QR码。
  8. 移动应用使用二维码下载桌面应用的公钥。
  9. 移动应用程序向桌面应用程序发送加密的确认消息,桌面应用程序使用该应用程序验证其私钥。
  10. 桌面应用程序应用程序要求用户命名此桌面应用程序,通常这是运行它的主机的名称。桌面应用程序将此消息发送到移动设备(当然是加密的)。
  11. 在移动设备上,链接设备现在显示出来。用户可以随时删除链接设备,该链接设备立即为桌面所知。
  12. 我认为服务器根本不用来保留消息。我认为桌面与移动点播同步。
  13. 总之,Signal以下列方式缓解了QRLjacking漏洞利用:

    • 该应用不是基于浏览器的,而是安装的。可以使用证书对安装包进行签名和验证。
    • 桌面应用程序还可以在本地安全地存储密钥,而不是在服务器上。这使得很难进行社交工程攻击,因为这需要实际接管桌面应用程序运行的机器。

    我的分析是否正确?

0 个答案:

没有答案