时间:2016-09-17 14:02:23 来源: 复制分享
有关编程的好笑的笑话太多了,其中最有趣的一个笑话是:为什么程序员在淋浴的时候死了?因为洗发液的瓶子说:“打泡,洗头,重复”。你没理解吗?这就是所谓的无限循环。程序员严格遵循这一清晰指令,“重复”执行指令循环直到死亡。你觉得不可理喻吗?多年来,电脑一直陷入这样的圈套。
▲图片来源:Getty Images
事实上,这是经典的“fork炸弹”(fork bomb)攻击即耗尽电脑的资源,让人无法再使用它。fork炸弹非常精简,有时只有短短几个字符。
一位用户在网上作出解释,这组字符在一些计算机语言中定义某个无意义的功能,然后让计算机反复执行它。计算机不会问为什么它只会服从命令。但是,请不要在家里运行这一代码,因为它有可能会导致你的系统变得非常迟缓,甚至造成死机。
2013年,据剑桥大学的研究人员估计,电脑病毒每年对全球经济造成的损失达3120亿美元。即使很小的程序错误也会造成很大的损失比如放错位置的一行代码可能让战舰不能移动。那么,这些短小的代码具体是如何导致巨大灾难的呢?
“给出一套指令,计算机就会执行但是计算机只会逐字逐句的执行,”威斯康星大学麦迪逊分校(University of Wisconsin-Madison)的计算机专家本利布利特(Ben Liblit)说。
“它们不具有常识。”
为什么计算机会陷入死循环?利比利特提到,那是因为电脑循环计算数千次甚至数百万次是一件非常有用的事。正是通过这一方式,电脑可以在一瞬间完成人类需要很长时间才能完成的计算比如编辑一份长长的名单,确保首字母都是大写的。对循环次数并没有限制,这就意味着不管在理论上,还是在实践中,计算机可以一直循环下去,直到它无法运行。
▲计算机可以做一些有用的事,计算机系统可以发挥很大作用,但计算机也会出现故障,计算机系统也会出故障。(图片来源:Getty Images)
历史记载,首例造成问题的fork炸弹发生于1978年。与上述例子类似,它涉及的程序也十分短小昵称是“wabbit”它会无限次备份自己。
这是一种恶意程序,它常常伪装成日常的文件,并作为电邮附件发送至受害者的电脑。如果受害者下载并运行该文件,那就会引爆等待着的fork炸弹。
F-Secure的网络安全专家米科许珀宁(Mikko Hypponen)称,还可以制作一种压缩文件夹,当你去解压缩时,它会不断解压出越来越多的内部文件。这被称为“解压炸弹”,一个著名的例子是一个在未解压时只有42比特的病毒。它可以塞满整个硬盘,并且占满内存,让杀毒软件失效。
2014年,有人发现加密敏感数据的软件存在严重的缺陷,它被成为Heartbleed,攻击者可以通过这一错误窃取隐私数据,比如密码和信用卡信息。但是,正如萨里大学的艾伦伍德沃德(Alan Woodward)所说,发起攻击的代码非常短只有四比特。
最近,对心怀恶意的黑客来说,这些打包后十分短小的病毒代码非常有用。比如在2010年,有人报告发现“推特病毒”,它会打开多个弹出窗口。电脑使用者一旦把鼠标指针移至被感染的推文上就会激活它。连白宫的官方推特账户也在一时间受到影响。
在Mandalorian公司工作的网络安全专家史蒂夫洛德(Steve Lord)也常常发现非常短小的恶意程序。他说,最近他在研究的是把而已代码插入单个数据包内。数据包是电脑之间通过互联网发送的小段数据。这个病毒相当复杂,它会破坏VPN安全连接。
或许造成电脑故障的最短小的代码是“0”。任何数除以零都无法得到确定的数字,这是计算机无法处理的。
▲因为放错位置的“0”,导致整艘约克城号航空母舰(USS Yorktown)在演习中停止运转。(图片来源:Getty Images)
洛德指出,这一情况出现在1997年9月的约克城号航空母舰上。航母上运行的某一程序中,数字0放错了地方,它所带来的错误导致整艘船在演习过程中被迫停止运行。它后来被拖回港口。
“感谢上帝这不是发生在战斗中。”洛德说。
洛德还提到Tiny Banker这一恶意软件,它会感染电脑的浏览器,当用户试图登录网银账户时,它就会复制登录信息。它的大小是20000比特,已经感染了全世界数千个系统。
“就视窗系统的程序来说,它小到可笑的地步。”洛德说。
但这一切都不意味着电脑在根本上容易出错它只是说明工程师面临棘手的挑战,他们要想办法保护电脑免受恶意攻击或出现内部错误。洛德认为,虚拟世界的一点小错误就会造成严重的后果,这一现象带有一定的“美感”。不过美国海军恐怕不会同意。
利布利特说,计算机有一种能力,它会坚定不移的贯彻执行,不论结果的好坏。他说:“计算机可以做一些有用的事,计算机系统可以发挥很大作用,但计算机也会出现故障,计算机系统也会出故障”至少,在大多数情况下,你可以关机重启。