1707630985
1707630986
(2) 关于数字遗产问题,可参阅拙作《闲话数字遗产》——已收录于本书。
1707630987
1707630988
1707630989
1707630990
1707630992
霍金的派对:从科学天地到数码时代 代码混淆——福音还是噩梦?(1)
1707630993
1707630994
1707630995
1707630996
1707630997
互联网也许是很多人的“温柔乡”,但从技术上讲,它其实是一个凶险的“江湖”,任何“混”得足够久的“老江湖”都不仅知道,很可能还亲自见识过各种恶意程序或恶意行为。拿我自己来说,就既受过网络攻击,也见过不止一个克隆我主页的网站。这些软件层面的侵害对我来说只是心情上的烦扰,对显著依赖互联网的个人、公司乃至政府部门来说,如何保护自己的软件可就是一个重要课题了。
1707630998
1707630999
保护软件有着双重意义:一是保护软件的知识产权(intellectual property),防止被人盗用;二是保护软件中可能隐含的诸如技术漏洞等私密信息,防止被人利用。就保护思路而言,目前主要有两条:一条是加密(encryption),另一条是代码混淆(obfuscation)。两者的主要区别是前者需解密(decryption),后者则不需要——因为后者只是将代码换成普通人难以读懂、在计算机上却仍能运行,且功能相同的形式,很多网站采用的JavaScript代码混淆就是很好的例子。
1707631000
1707631001
本文将主要谈谈代码混淆。
1707631002
1707631003
由于无需解密,代码混淆使用起来比较方便。不过,目前的代码混淆对普通的“肉眼凡胎”虽宛如天书,却往往不足以阻挡训练有素的入侵者,或者用加州大学洛杉矶分校的计算机学家萨海(Amit Sahai)的话说,只是一种“减速路障”(speed bump),让入侵者多费几天时间而已,而非真正可靠。
1707631004
1707631005
那么,真正可靠的代码混淆是怎样的呢?从理论上讲,应该是具有完美“黑箱”(blackbox)特色的,即除了软件本身许可的输入和输出之外,不能让人窥视任何其他信息的。但不幸的是,2001年,刚才提到的萨海与几位同事证明了具有完美“黑箱”特色的代码混淆——就像很多其他“完美”的东西一样——是不可能实现的。不过,与这个坏消息同时,萨海等人提出了一种虽比“黑箱”稍弱,却比现有方法有效得多的代码混淆。这种代码混淆的基本特点是:两个软件只要输入和输出性质相同,经代码混淆后就会变得不可分辨。2007年,美国麻省理工学院和微软公司的几位研究者证明了这是理论上最好的代码混淆——当然,已被证明为不可能的完美“黑箱”除外。
1707631006
1707631007
接下来的问题是:这种“理论上最好的代码混淆”有可能实现吗?这个问题目前还没有完全确定的答案,但2013年,萨海等人提出了一种很有希望的实现手段。那种手段还具有一个额外优点,那就是所给出的代码混淆是建立在一种被称为“多线性拼图”(multilinear jigsaw puzzle)的数学技巧之上的,而那种数学技巧很可能是极难破解的——对于普通黑客所能利用的计算资源来说,可能需要耗时数百年。如果说目前的代码混淆只是“减速路障”,那么这种新的代码混淆——用萨海的话说——就算得上是“铜墙铁壁”(iron wall)了。这种“铜墙铁壁”引起了很多研究者的兴趣,以至于在萨海等人的方法提出后短短6个月的时间里,标题中带有“代码混淆”一词的论文数目就超过了过去17年的总和。
1707631008
1707631009
但是且慢兴奋!这种“很有希望的实现手段”目前还有两个问题:一个是理论层面的,即“多线性拼图”这一数学技巧的破解难度尚未得到严格证明。另一个是实用层面的,即这种代码混淆还处于“纸上谈兵”阶段,因为混淆后的代码并不是能在现实计算机上运行的代码。不仅如此,这种代码混淆还会显著增加代码长度,从而哪怕能在现实计算机上运行,速度也会慢得多。这些都极大地制约了它的实用性。
1707631010
1707631011
而更麻烦的则是,那种“最好的代码混淆”也许好到了“物极必反”的境界。假如上面提到的问题全被解决了,那它无疑既是保护软件知识产权的屏障,也是掩盖软件漏洞的保护伞。但稍稍细想,就不难发觉这些功用全是双刃剑。比如它的屏障作用既有助于保护软件知识产权,也便于盗用软件知识产权,因为破解越困难,也就意味着盗用行为越难被发现和确认。又比如它的保护伞作用既可以掩盖软件漏洞,也可以隐藏恶意软件,因为破解越困难,也就越能隐藏“恶意”。因此,“最好的代码混淆”若真能进入实用阶段,对普罗大众究竟是福音还是噩梦恐怕还很难说。
1707631012
1707631013
(1) 本文发表于《科学画报》2014年第9期(上海科学技术出版社出版)。
1707631014
1707631015
1707631016
1707631017
1707631019
霍金的派对:从科学天地到数码时代 在大型强子对撞机的幕后(1)
1707631020
1707631021
1707631022
1707631023
1707631024
日内瓦西北郊有一个著名的科学中心——欧洲核子研究组织(European Organization for Nuclear Research,CERN)。那里有目前世界上最大的高能粒子加速器——大型强子对撞机(Large Hadron Collider)。这个周长27千米的庞然大物在过去几年里可谓新闻不断,比如有人担心它可能会因产生微型黑洞而毁灭地球(如今还担着这份心的读者可用拙作《黑洞略谈》(2)来宽宽心)。而它对与质量的起源有着密切关系、被称为“上帝粒子”(the God particle)的所谓希格斯粒子(Higgs)的寻找更是科学家、媒体和公众共同关注的焦点。
1707631025
1707631026
不过,相对少为人知的是,CERN除了科学中心这一身份外,还是一个重量级的信息技术中心,尤其是在互联网发展史上起到过很重要的作用。20世纪90年代初,CERN的计算机科学家伯纳斯-李(Tim Berners-Lee)与同事研发出了以超文本(hypertext)为基础的网站,成为互联网上最重要的服务之一——万维网(World Wide Web)——的发明者,CERN则成为了万维网的诞生地。CERN扮演这一角色不是偶然的。事实上,早在万维网诞生之前,它就已是欧洲最主要的电脑网络枢纽。而且直至今日,CERN在互联网领域里依然维持着重要地位。2008年,外界甚至一度传闻CERN即将推出新一代的互联网。
1707631027
1707631028
那消息很快被证实为是不确实的,但它也并非空穴来风,其源头就是大名鼎鼎的大型强子对撞机。该对撞机的“日常”工作就是让大量粒子以极高的能量相互碰撞,而物理学家们要做的则是通过那些碰撞来探索大自然的奥秘——其中包括寻找希格斯粒子。但这个简短介绍却忽略了一个极重要的“幕后”环节——对数据的处理。
1707631029
1707631030
跟老式物理实验中的看仪表读数据、铺稿纸做计算完全不同,大型强子对撞机产生的数据是如此之多,不仅使得肉眼读取和纸笔分析变得不再现实,就连大型计算机也应付为艰。更要命的是,那些数据是以极快的速度源源产生出来的,从而必须以极快的速度进行采集、甄别和存储。除此之外,物理学家们当然还希望尽可能迅速地分析数据。这一系列艰巨工作把CERN再次推到了信息技术的前沿。
1707631031
1707631032
为了以最快的速度处理数据,CERN建立了目前世界上最大的网格计算系统——全球大型强子对撞机计算网格(World Wide LHC computing grid,WLCG)。WLCG的核心部分被称为“零级中心”(Tier 0)。该中心与负责采集、甄别数据的“计数室”(counting room)以每秒100亿比特(10 Gb/s)的超高速光缆相联,接收甄别后的数据——别小看这甄别,它是用数以千计的计算机共同进行的,将来自大型强子对撞机的多达每秒3000亿字节(300 GB)以上的数据剔除99.9%左右,从而大大减少后续处理的工作量。“零级中心”所获得的数据又通过每秒100亿比特的超高速光缆传往北美、欧洲和亚洲的11个“一级中心”(Tier 1),而后者则通过普通互联网与分布在世界几十个国家的150个“二级中心”(Tier 2)相联。截至2011年底,在这个庞大的网络上已有约26万台电脑(确切地说是26万个中央处理器),总存储空间高达15亿亿字节(150 PB,约相当于两亿张光盘),每天处理的数据达几十万亿字节。当我们在报纸上读到一则有关希格斯粒子的消息时,也许很少有人会想到过大型强子对撞机幕后那个庞大的计算机网络,以及为该网络而工作着的数以万计的工程师。正是他们与科学家们一起,从浩如烟海的数据之中淘出了有用信息。也正是有了他们的帮助,科学家们才可以在几星期甚至更短的时间内将数据变成论文或新闻。
1707631033
1707631034
高能粒子在日内瓦郊外的一个小空间内碰撞着,信息却在散布于全球的几十万台电脑中处理着,这是所谓“大科学”的典型例子。
[
上一页 ]
[ :1.707630985e+09 ]
[
下一页 ]