但这同时也引发了隐私方面的担忧。一个云服务器集群可能同时为 1000 个客户运行应用程序,而托管服务提供商对此毫不知情。其中一个应用程序可能另有图谋:监视其他 999 个

客户。加密可以提高云服务器的安全性。只有在实际处理数据时才能对其进行解密;计算结果在发送出芯片之前会被重新加密。

然而,在过去的十年左右,人们逐渐意识到,即使计算机采取了加密措施,其内存访问模式——即数据在不同内存地址的存储和访问频率——仍然会泄露大量隐私信息。

在六月份举行的国际计算机体系结构研讨会上,麻省理工学院的研究人员介绍了一种名为 Ascend 的新型安全硬件组件,它可以伪装服务器的内存访问模式,使攻击者无法从存储的数据中推断出任何信息。 Asciend还能抵御另一种攻击,即计时攻击。这种攻击试图通过计算耗时来推断信息。

计算权衡:
过去也曾提出过类似的方案,但通常都因为计算开销过大而牺牲了安全性。“这是首次提出一种硬件设计方案(尚未实现),能够在保证如此高安全性的同时,将性能开销降低三到四倍,”埃德温·西布利·韦伯斯特电气工程与计算机科学教授斯里尼·德瓦达斯(Srini Devadas)说道,她的团队正是这套新系统的开发者。“人们原本以为性能开销会是原来的100倍。”

德瓦达斯解释说,隐藏内存访问模式的“简单方法”是从每个内存地址(无论是内存芯片还是硬盘)请求数据,并检索除目标地址处存储的数据之外的所有内容。但这速度太慢,不切实际。

Devadas 和他的合作者(研究生 Ling Ren、Xiangyao Yu 和 Christopher Fletcher,以及研究科学家 Marten van Dijk)的做法是将内存地址组织成一种称为“树”的数据结构。家谱就是一个常见的“树”的例子,其中每个“节点”(在本例中代表一个人的名字)只连接到其上方的一个节点(代表这个人的父母),但可以连接到其下方的多个节点(代表这个人的子女)。

在 Ascend 中,地址被随机分配给各个节点。每个节点都位于树中的某条“路径”或路由上,从树顶开始,从一个节点移动到另一个节点,不会回溯,直到到达一个没有其他连接的节点。当处理器需要从特定地址获取数据时,会向路径上的所有地址发送请求,包括目标地址。

为了防止攻击者从内存访问序列推断出任何信息,Ascend 每次访问的内存地址都是一个特定的地址,并且会随机更改该地址,该地址存储在树的某个位置。因此,通过同一路径多次访问同一地址的情况将非常罕见。

隐藏地址所需的计算量也更少。Ascend
通过将虚拟请求限制在单一路径上,而不是发送到所有内存地址,从而指数级地减少了伪装地址所需的计算量。在另一篇尚未印刷出版但可在线获取的论文中,研究人员证明,路径查询提供的安全性与查询所有内存地址的安全性相当。Ascend

还能防御点攻击。假设外包给云端的计算任务是将嫌疑犯的监控照片与网络上的其他随机照片进行比较。监控照片本身会被加密,因此不会被窥探。但基于云端的间谍软件仍然可以推断出正在比较的是哪些公开照片。比较所花费的时间可以反映出源照片的一些信息:明显不同的人的照片可能很容易排除,但长相非常相似的人的照片可能需要更长时间才能区分。

因此,Ascend 的内存访问方案还有一招“绝技”:它会定期向内存发送请求——即使处理器正忙且不需要新数据。这样一来,攻击者就无法预知任何特定计算需要多长时间。

作者:Larry Hardesty,麻省理工学院新闻办公室

更多信息