在过去的几年里,每当Signal遇到使用传统或新的密码结构似乎无法克服的问题时,他们就会求助于使用英特尔的SGX。SGX为信号开发人员提供了一些非常理想的功能。
然而,对新交所的批判性分析经常表明,它是一项从根本上不可靠的技术。与我们在过去30年中使用的加密结构不同,SGX更易于利用,每隔几年就会发现新的突破性问题。
本文将首先关注什么是SGX,Signal如何使用SGX,它提出的好处,然后是SGX的问题和Signals在SGX的实现。
英特尔软件保护扩展(SGX)是一组CPU指令代码,允许CPU创建特殊的飞地(内存的私有区域)。在这些飞地内部,CPU可以执行代码,而无需外部进程能够读取或保存在该飞地内执行的代码。SGX还支持一种称为远程证明的功能,该功能允许客户端验证服务器上运行的代码是否为预期的开放源代码。
由于SGX提供的非常有吸引力的原则,Signal已经在现有和新提出的功能中实现了它。这些措施包括:
当您注册Signal时,您输入您的电话号码,Signal会自动将您与同样使用Signal的其他联系人连接起来。Signal之所以能做到这一点,是因为该应用程序会扫描你手机的联系人列表,发现已经使用同一电话号码注册了Signal的用户。然后,在您的联系人列表和Signals用户数据库中的用户将被添加为用户,然后您可以立即在应用程序上发送消息。
然而,上述方案的天真实现将导致信号服务器在他们注册Signal时知道每个人的完整联系人列表。相反,Signal在飞地内执行此联系发现过程。该飞地允许信号服务器提供远程证明,证明在飞地内运行的代码与它们在网上发布的代码相同,并且还确保信号服务器不能从飞地中渗出用户的联系人列表。Enclave产生的最终结果将是联系人列表和所有签约到Signal的用户的交集(匹配的Signal用户)。
Signal最近发表了一篇博客,在这里对他们即将推出的用户名功能进行了预览。基本前提将是允许用户指定口令或PIN,使用密钥导出函数(KDF)扩展该口令,然后将该密钥与由信号服务器生成的某个安全随机数组合。这成为允许用户恢复社交图或生成附加应用密钥的主密钥。重要的是,可以限制对该随机性的访问,因为它保存在信号服务器上,并且如果没有该随机性,则不能恢复主密钥。这使得用户无法简单地使用暴力密钥,因为Signal可以实现身份验证要求,比如每次猜测都需要验证码。
然而,这个想法也与SGX有关,因为选择密码时生成的安全随机值必须是信号开发人员不知道的,否则他们可能会暴力强制所有信号密码。SGX也是必需的,因为用户必须将其密码的散列副本直接发送到信号服务器,信号服务器无法知道用户的密码是什么,否则他们将能够恢复其主密钥和社交图,即使他们没有安全的随机性。因此,在安全飞地内产生每个密码短语的随机性,并且散列密码短语之间的比较也在安全飞地内发生。这意味着信号服务器应该既看不到散列密码短语,也看不到与其相关联的安全随机性。
如果一切正常,该方案应该允许用户随身携带(传统上)有点弱的密码短语,如“Melon1284”,并保护该密码短语免受暴力攻击,同时仍然能够完全恢复他们的帐户。
Signal的联合创始人和创建者莫克西·马林斯派克似乎也作为顾问参与了Mobilecoin。尽管完全未经证实,但有人猜测Mobilecoin将作为一种货币被整合到Signal中。
Mobilecoin可能是最近Signal Secure Value复苏的灵感来源。Mobilecoin在2017年发表了一篇论文,称:
在SGX Enclave中运行MobileCoin允许节点安全地管理用户的密钥。客户端可以在将其密钥连同短恢复PIN一起传输到远程飞地之前对其MobileCoin节点执行远程证明。然后,MobileCoin节点可以对对密钥的经过身份验证的访问进行速率限制,而Enclave则阻止节点操作员或任何危害节点的人绕过软件,试图直接强行访问密钥。
这种设计非常接近Signal将使用的过程,但是Signal将用Signal公钥-私钥对替换加密货币密钥。
现在我们对SGX是什么以及Signal如何使用它有了一个合理的理解,让我们来看看SGX的一些问题。
SGX是完全专有的,仅在某些英特尔处理器上受支持,并且需要使用属性英特尔api。
最近在这里发表的一篇论文强调了这个问题。此漏洞允许进行更一般的SGX攻击,但作为本文的一部分,他们将探讨Signal的联系发现和安全值恢复方案。关于联系人发现,他们说:
通过以第四节中描述的方式完全攻破SGX,恶意信号服务器将能够创建一个Enclave,公开其接收的所有数据,同时通过远程证明向客户端证明该Enclave正在执行私人联系人发现的良性发布操作。这将使他们能够读出用户的散列标识符,并执行字典攻击以了解用户地址簿的内容,从而使将SGX合并到私人联系人发现中的目的化为乌有。
“通过破坏飞地的机密性,攻击者可以提取c2…。在本文中称为[安全随机]“…。并获得不限次数的暴力破解用户密码的尝试。“。
这也不是新交所第一次受到损害。以前发现了各种侧通道攻击,包括:
虽然不是所有这些攻击都直接适用于SGX的信号实现,但这表明SGX容易受到主动和旁路攻击的趋势令人担忧。
英特尔自己提供SGX远程认证服务,但要求用户完成公司许可协议,并根据具体情况获得英特尔的批准。
Intel还允许云提供商通过他们自己的云平台提供远程证明服务,但是,从公开的信息来看,这项服务似乎只在IBM、阿里巴巴和Microsoft Azure云平台上可用。
如果Signal真的接受了开源软件的原则,为什么他们要把关键特性建立在数据中心部署极其有限的SGX上呢?这些特性使得部署与网络集成的开源信号分支变得极其困难。
据我们现在所知,Signal对新交所的依赖似乎是一个潜在的安全风险。无数研究人员一次又一次地证明SGX在许多方面是不安全的。作为个人用户,您可以选择使用不依赖SGX的报文传送应用程序来消除任何潜在的利用漏洞。
请在下面的评论中让我知道你是否喜欢这种类型的内容,我可以在未来考虑做更多这样的内容。