抵御网络攻击的新方法

抵御网络攻击的新方法
本内容由人工智能自动翻译。

在过去10年里,计算机安全研究人员已经表明,恶意黑客无需看到你的数据,也能窃取你的数据。通过观察计算机访问内存组的模式,攻击者可以推断出其中存储内容的 惊人之多 。

此类攻击在云端尤其构成严峻风险,因为你无法控制哪些应用程序与自己的应用程序共享服务器空间。攻击者可以在多台云服务器上加载小程序,这些程序只做一件事:窥探他人的数据。

两年前,麻省理工学院斯里尼·德瓦达斯(Srini Devadas)课题组的研究人员——他是麻省理工学院电气工程与计算机科学系的埃德温·西布利·韦伯斯特教授—— 提出 了一种通过伪装内存访问模式来挫败此类攻击的方法。如今,他们已开始在硬件中实现这一方法。

今年3月,在编程语言与操作系统架构支持会议上,他们展示了一款定制芯片的设计布局,该芯片将采用他们的方案,目前正进入制造阶段。而在5月举行的IEEE现场可编程定制计算机国际研讨会上,他们将介绍该方案的一些额外改进,这些改进已在可重构芯片上进行测试。

该方案的原理是:每当芯片需要从某个特定内存地址读取数据时,也应查询一批其他地址,这样攻击者就无法判断芯片真正关注的是哪一个地址。当然,这意味着芯片与内存之间传输的数据量远超通常所需。

为了尽量减少所需的额外数据,研究人员将内存地址存储在一种称为“树”的数据结构中。家谱就是树的一个常见例子:每个“节点”(一个人的名字)只连接到其上方的一个节点(代表此人父母的节点),但可以连接到下方的多个节点(此人的子女)。

每个地址都会被随机分配到树中的一条路径——一串从树顶延伸到底部、不会回溯的节点。当芯片需要某个特定地址中存储的数据时,也会请求同一路径上所有其他节点的数据。

在此前的研究中,德瓦达斯课题组的研究人员证明,从单条路径读取数据,对攻击者造成的迷惑程度,与芯片读取所有正在使用的内存地址——也就是树中的每个节点——一样。

打破僵局

然而,从一条路径读取数据后,芯片还必须将数据写入整条路径;否则,攻击者就可能判断出哪个节点才是目标。但芯片很少会把数据存回读取数据时所在的同一个节点。

节点往往位于多条路径上:最简单的例子是,位于树顶的单个节点,也就是根节点,处于每一条路径上。当芯片向内存写入一个数据块时,会尽可能将其向树的下方推送;这意味着要找到该数据块所分配路径与刚刚读取的路径分叉之前的最后一个空位。

“树的根部比树的底部小得多,”麻省理工学院电气工程与计算机科学专业研究生、论文合著者之一阿尔伯特·权(Albert Kwon)说。“所以直观上,你会想尽可能把数据往下推向底部,这样顶部就不会拥堵。”

写入数据时,芯片仍必须遵循路径中的节点顺序;否则,攻击者又可能推断出有关正在存储数据的信息。在此前对类似系统的尝试中,这意味着要按照内存地址在树中的最终位置对地址进行排序。

“排序在硬件中并不容易,”德瓦达斯课题组另一位研究生、这篇新论文的第一作者克里斯·弗莱彻(Chris Fletcher)说。“所以等你把所有东西都排好序时,性能已经受到明显影响。”

在他们最新论文介绍的芯片中,弗莱彻、德瓦达斯、权及其合著者——同为麻省理工学院电气工程与计算机科学专业研究生的凌任(Ling Ren),以及康涅狄格大学、加州大学伯克利分校和卡塔尔计算研究所的同事——采取了不同的方法。他们为芯片增加了一条额外的内存电路,其中的存储槽可以映射到树中任意一条路径上的节点序列。确定数据块的最终位置后,只需将其存入电路中对应的存储槽。随后,所有数据块都会按顺序读出。

囤积秘密

这款新芯片还采用了另一项提高效率的技巧:它不是每次读入数据后都写出数据,而是每读取五次才写出一次。其他读取操作中,它只需丢弃所有伪装数据。等到最终写回数据时,平均而言,它会有五个额外数据块需要存入最后读取的路径。不过,树中通常有足够多的空位容纳这些额外数据块。如果空位不足,系统用于尽可能将数据向树下方推送的常规协议,也能应对顶部偶尔出现的拥堵。

如今的芯片有称为缓存的小型本地内存组,用于存储频繁使用的数据;对于能高效使用缓存的应用程序,所有这些额外的读写通常只会使计算时间增加约20%。对于不能高效使用缓存的应用程序,计算时间可能增加到原来的五倍,甚至更多。

不过,研究人员表示,他们方案的一项优势是,实现该方案的电路可以直接加入现有芯片设计,无需大幅改造。随后,这一额外安全层可以按需开启或关闭。有些云应用可能会始终启用它;有些可能完全不启用;还有一些则可能只在处理信用卡号码等敏感信息时才启用。

“这是一项开创性工作,”马里兰大学计算机科学助理教授伊莱恩·施(Elaine Shi)说,她曾研究过类似的安全方案。“多年来,这类安全算法的成本一直高得令人难以承受。这基本上是他们首次证明,可以将开销控制在两倍。此前,开销可能高得离谱,甚至达到数万倍。他们构建了这一系统,并证明在一类基准测试中,平均速度减慢仅为两倍。”

“想想Java与C的差异,速度减慢很可能超过两倍,”她说。“两倍根本不算什么。而且,你只需在涉及信用卡号码或基因组数据等敏感数据的部分代码中承担这项开销。”

本文由 麻省理工学院新闻合作发布。本文的发布并不意味着世界经济论坛认可其中观点。

要及时了解议程动态, 请订阅我们的每周通讯。

作者:拉里·哈迪斯蒂是《麻省理工学院新闻》的特约撰稿人。

图片:2013年6月24日,在华沙的一间办公室里,一名男子手持笔记本电脑,电脑上投射出二进制代码图像。路透社/卡茨佩尔·彭佩。

分享:

授权与转载
世界经济论坛发布的文章,可依据《知识共享署名-非商业性使用-禁止演绎4.0国际公共许可协议》以及我方《使用条款》进行转载。 本文所表达的观点仅代表作者个人立场,并不代表世界经济论坛的观点。