作者:克里斯多夫8226;米姆斯 微软能够复制用户计算机上的运行环境 现在,开发者能够很轻易地组建在功能丰富的浏览器上运行的应用程序。但使这些应用程序免于被黑客攻击却是另外一回事了。 玩得安全:微软的研究人员应用Ripley保证包括游戏在内的多个网页应用程序的安全。 鉴于此,微软研究院的科学家们开拓了一种新的方法,通过有效地克隆用户浏览器和远程运行,来保护复杂的网络应用程序的安全。 许多最新的网页应用程序都会区分服务器可执行代码和客户端代码。那么,问题就是去探测在用户家庭个人电脑上运行的代码是否以某种方式受到了损害。近日在芝加哥举行的计算机与通信安全协会上,微软发布了名为Ripley的最近解决方案。 Ripley比之前在网页应用程序安全方面做出的努力更深一步。致力于网络应用安全方面的加州大学伯克利分校研究员亚当8226;巴尔特(Adam Barth)(他并没有参与这个项目)说:“它将整体保护推向了逻辑上的极限。Ripley不仅确证来自某个网页的问询,也确证用户的实际行为是被应用程序交互界面所允许的。” Ripley通过创建计算环境的副本并将其运行在服务器上,来阻止恶意用户或者远程黑客改变网页浏览器内部运行的代码。然后,Ripley会将用户的行为,包括鼠标的点击、按键和其他的输入,以一种压缩的“事件流”从客户端向服务器发送。这个流会在服务器上的客户端应用程序副本上运行,这种虚拟副本会和用户家中浏览器上的应用程序进行比较。如果存在不符之处,Ripley就会断开客户端。 微软研究院Ripley工程的主要开发者本8226;利夫史特斯(Ben Livshits)说:“你不能信任客户端发生的任何事情。从开发者的观点看,那几乎就是魔鬼。” Ripley对于最终用户来讲是不可见的,并且不会影响网页应用程序的正常功能。“只有那些怀有恶意的家伙才会担心,他们一旦提交结果会发生些什么。” 利夫史特斯和他微软的同事埃姆雷8226;克斯曼(Emre Kiciman)面临的挑战之一就是,在组建Ripley时,怎样去创建用户环境――网页应用程序和运行它的软件引擎――的副本,它实际上要足够小,以便高容量的网页服务器能够同时处理成百上千的用户请求。 利夫史特斯说:在服务器上,“如果你想运行浏览器里的副本,每个浏览器实例需要使用50-60兆内存容量。”他和克斯曼提出的方案却是运行一个“ 没有头脑的浏览器”――一个仅仅仿真浏览器功能的仿真器,但对于Ripley至关重要。这会减少浏览器与应用程序副本的内存占用量,每个程序约减少1到1.5兆。 通过精简服务器端的用户浏览器应用程序的副本,利夫史特斯和克斯曼进一步降低了Ripley的性能负载。在包括购物车、游戏和博客引擎在内的五个应用程序实验中,由于服务器中央处理器增加的运算而导致的延时增加了约为1毫秒。 在某些情况下,Ripley甚至加强了网页应用程序的性能,因为服务器端的客户端应用程序副本是由.Net重新编写,这种编程语言比在客户端运行的JavaScript快10到100倍。有时,这甚至允许Ripley在客户端做出请求前,预测下一个客户端应用请求是什么,并事先将数据送入客户端。

利夫史特斯说:“仔细想想,这真是一个神奇的事情,它导致的是0延迟。” 目前,对使用Ripley去保护网页应用程序安全感兴趣的开发人员,不得不把关于Ripley文章中的想法在自己喜欢的应用程序框架下重新实现。然而,利夫史特斯和克斯曼认为,Ripley可以使网页应用程序核心安全部分大众化,让它进入到非专业的开发者当中。 “目前为止,我认为,人们是靠手动解决这些问题的。” 克斯曼说,“你让专家介入,他们就裁剪你的应用程序来应对挑战,但那不能做到规模效应,并且在需要改动时显得很不灵活。我们正在努力做的,就是使网页开发平台发展到一种任何人都可以使用那些专家使用的技术这一地步。”加州伯克利的巴特斯认为,Ripley是确认非认证行为不能执行的解决方案,是大趋势下的一部分。“我认为,Ripley更多是一个想法实验:如果服务器来认证所有事情,那将会发生什么?”他说。“这项工作表明,如果我们认证比现在更多的信息,安全性就会受益。” 本文为美国Technology Review授权文章,未经书面许可,严禁转载使用。