当这些优美的文字展现在您面前时,崭新的一年已经来临。“又一年!又一次猛烈的打击!”正如丁尼生雷鸣般地说道。或者正如汉弗莱·李特尔顿 (q.g.)1 可能会说,“时间这令人厌恶的里程表又咔哒一声,增加了熵的折磨。” 不那么浮夸地说,除了努力不在支票上写 2007 年之外,我们中的许多人还会借此机会反思去年做的所有蠢事,并决心不再重蹈覆辙2。更不用说我们未能做的所有好事了。我想到的是我错过了必要的分号,但插入多余的分号同样是灾难性的。任何像样的计算机语言都应该知道我的语句应该在哪里终止,然后正确地重新分配提供的标点符号?更智能的 Lisp 语言擅长 DWIM(做我想要做的),平衡那些该死的、多余的括号。但我离题了,因为我种下了一个已知会引发读者反馈的话题3。
正如我们的英国圣公会 общее исповедание 谦卑地承认的那样,“我们没有做那些我们应该做的事情。我们做了那些我们不应该做的事情。” 人们永远无法确定所有教派是否仍然使用从青少年时期在每日早祷仪式中重复获得的完全相同的措辞。那种罪恶的遗漏和犯错的庄严平衡可能在一些自由派教区被淡化了:“哦,主啊,考虑到我的基因、糟糕的父母和不足的教育系统,我做得还算不错。” 这并不像您想象的那么愤世嫉俗。我发现我们过去忏悔的“我们身上没有良善”在某些仪式中已经改为“我们身上没有健康”。
恶意软件中的“mal”与嘉德骑士团中的邪恶“mal”是同一个词:Honi soit qui mal y pense。这句相当古老的法语格言的意思是:为那些对此抱有恶意想法的人感到羞耻。在这里,我们可以将其理解为未指明的“it”,第三人称无生命代词,或者,为什么不再次窃笑我们对信息技术的缩写。最初的“it”是什么会引起羞耻感,最好留给(挤眉弄眼)对束带在功能失调的王室家庭中的作用的猜测。
与 Queue 读者更相关的是持续存在的恶意软件之恶。特别是,我要谈谈我的老朋友,SSU(索诺玛州立大学)的乔治·莱丁 (George Ledin Jr.) 教授的困境,他在那里教授计算机安全已有 30 多年。在 SSU,CS 作为其 ES(工程科学)系的一部分运作,这表明普遍偏向于我们公平交易的实践、以实验室为中心、亲自动手、实践方面。莱丁最近因开设恶意软件课程(我现在将其提升为一个大写的研究领域,即使“学科”一词似乎不合适)而受到许多批评(和一些赞扬)。
莱丁颠覆了(臭名昭著的)模板“X 被认为是有害的”4,为《 通讯》(2005 年 1 月)撰写了一篇题为“不教授病毒和蠕虫是有害的”的社论。彼得·诺伊曼 (Peter Neumann) 的重要内部风险网站包含指向此专栏和相关专栏的链接5。
莱丁呼吁更公开地讨论恶意软件的结构和内部运作,但并未引起 的太多反馈。然而,当莱丁在 2007 年春季学期开设专门针对恶意软件的特定课程时,媒体嗅到了争议,派遣记者和摄影师采访他和他的学生6。学生们被展示了如何编写恶意代码,以逃避当前的防病毒产品。
在我看来,有两个主要的、同样合理的论点在相反的方向拉扯着我。支持莱丁的观点是,他与生物学的类比是有说服力的。在医学院和实验室中,我们研究、教授甚至制造(基因操作等)各种危及生命的病毒,目的是为了在与大自然不断演变的生物危害作斗争并开发不断变化的防御措施。这些知识及其可能产生的细菌无疑是危险的,甚至可能是世界末日的,如果落入坏人之手。然而,尽管 100% 的安全性是无法实现的,但没有人建议教授病毒生物学和操作是有害的。考虑到类似的安全措施,使用与外部网络隔离的计算机,莱丁声称病毒代码的泄漏可以像生物危害一样有效地控制。
反对莱丁的观点是,他低估了恶意软件的危险性,他强调我们当前的攻击相对来说是微不足道的烦恼,并暗示反恶意软件行业过分热衷于为了商业利益而制造恐慌。事实上,莱丁报告说,如果他继续教授病毒构建,三家防病毒公司已威胁说不会雇用任何 SSU 毕业生。他的学生确实通过创建当前防御系统无法检测到的新病毒,以及通过创建触发误报的无害代码,揭示了现有反恶意软件产品的许多弱点。然而,公平地说,新的变异每天都在 SSU 封闭环境之外的真实世界中出现,而且正如莱丁承认的那样,检测、分析变异和全新攻击,以及用技术术语来说,将混蛋钉在十字架上,总是需要时间。
凭借作恶者的狡猾和代码的真实意图是不可计算的公理(讨论!),人们必须始终预期一定程度的误报,以平衡未检测到的更大风险(误报?)。这里的重点似乎是,例如,某些标头被错误地识别为病毒签名,这纯粹是统计推断,而代码主体本身可能是良性的。人们需要让 SSU 测试病毒脱离环境,以便在正常条件下测试防病毒行业的效率。我可以站在莱丁这边,建议防病毒公司实际上可以通过招募那些在莱丁的课程中掌握了恶意软件细微之处的 SSU 毕业生而受益。
挑战是古老的“需要知道”问题,许多当局在我们邪恶的后 9/11 和 7/7 世界中都面临着这个问题。无论是莱丁的学生还是 AVG 的员工被教导病毒 DIY,我们都无法保证这些知识会被用于善良而不是恶作剧(正如麦克斯韦·斯马特过去常说的那样)。在银行保险箱建造者与银行锁破坏者的历史上,详细蓝图的可用性受到了严格控制。那时和现在一样,安全漏洞通常来自内部人员,链条中最薄弱的环节是人类的贪婪。除了莱丁引用的微不足道的、平庸的恶意软件烦恼之外,现代黑客攻击还有一个巨大的利润丰厚的方面,它基于身份盗窃和其他欺骗行为。当恶意软件技巧可以指挥如此诱人的外包奖励时,应该信任谁呢?
然后我们必须提到对重要信息基础设施的政治和军事入侵和攻击的真实案例。将此类危险与人体炸弹袭击者相提并论并不牵强。大多数西方政府都通过了法律,禁止或限制发布制造各种恐怖武器的说明。在某些地方,这些针对传统上被归入科学数据自由交流范畴的内容的禁令已扩大到限制仅仅(仅仅?)煽动他人产生邪恶思想和暴力的书籍和布道。在全球网络宇宙中监管这些法律绝非易事,但那些受害者可以通过不必要的偏执来为这些法律辩护。“莱丁事件”提出了这些棘手的两难困境:在争取更大自由的斗争中限制自由。
然而,不那么戏剧化的是,绝大多数计算机用户永远无法掌握也不关心掌握恶意软件的阴暗角落。他们被迫依赖于极其聪明的程序员构建的永不完美的防御系统,希望这些程序员因其廉洁而获选并获得相应的报酬!
《伦敦时报》已将密码字添加到其纵横填字游戏和数独的剧目中。我仍然每天解决数独,但发现密码字是一个令人耳目一新的变化。它不如数独那么无聊,因为它显然更不可计算,它依赖于您对自然语言的知识,并辅之以(偶尔会受到阻碍)一些密码学知识。13x13 的网格看起来像一个纵横填字游戏,黑色方块对称排列,留下白色行和列,您可以在其中插入通常的向下-向上区域,其中带有互锁字母以形成英语(在《泰晤士报》版本中)单词。但是没有传统的纵横填字游戏线索。相反,每个白色方块都标有一个介于 1 到 26 之间的数字。您想要的是每个数字到唯一字母 A 到 Z 的隐藏映射。一些方块已预先填充了字母,因此通常您从知道数字-字母分配中的三个开始。在 13x13 网格下方是一个编号为 1 到 26 的 2x13 网格。当您推断出每个数字的映射时,您可以将它们写在底部网格中,然后当然,在主 13x13 网格中构建字母。了解英文字母和字母对的频率自然很有用,但狡猾的密码字设置者也知道这些频率,并且可以设置 SYZYGY 和其他 Scrabble 最爱等惊喜。设置者保证每个字母 A 到 Z 至少使用一次。或者,更确切地说,他们保证可以映射整个字母表,这意味着最多可以有一个字母未使用,然后在您获得已使用的 25 个字母时,该字母将被唯一确定。
例如,密码字 117 提供了一个七个方块的序列,读作 22 | 25 | 7=W | 9=D | 2=E | 26 | 1 |。我们立即用字母 W、D 和 E 填充任何 7、9 或 2 方块。接下来,我们看看 ??WDE?? 是否匹配任何合法的英文单词。不太像 Unix 正则表达式,因为每个 ? 都必须匹配不同的字母!我选择了 POWDERS,但后来当赋值 1=S 在其他地方被证明是不可能时,我不得不回溯。结果证明 1=Y,产生 POWDERY。
我向鲍勃·托克森(以 Linux 安全而闻名)展示了这个问题,他正途经伦敦(前往亚特兰大-特拉维夫,以便不必要的精确)。他同意,给定允许单词的词典,肯定存在一种求解算法,但最佳的时间-空间-节省策略需要相当谨慎。与报纸数独一样,我们假设至少存在一个解决方案:设置者设计的解决方案。它是否是唯一的,这是一个单独的、令人烦恼的问题。可预测地征求读者反馈。
最后,回答我标题中的反问。所有事物都被证明永远不相等。您将它们全部扔进一个标有“通用类”的袋子中,每个都用匿名的剩余礼品纸包裹着。然后您必须面对袋子本身,它肯定也属于袋子?新年快乐!
斯坦·凯利-布特尔 (STAN KELLY-BOOTLE) 出生于英国利物浦,20 世纪 50 年代在剑桥大学攻读纯数学专业,之后在开创性的 EDSAC I 上涉足计算机科学的杂质。他的许多著作包括《魔鬼的 DP 词典》(麦格劳-希尔,1981 年)、《理解 Unix》(Sybex,1994 年)以及最近的电子书《计算机语言—斯坦·凯利-布特尔读者》。《软件开发杂志》已 提名 他为首届年度斯坦·凯利-布特尔折衷技术奖的获得者,以表彰他在“技术和文学方面的终身成就”。诺贝尔奖和图灵奖都没有获得如此珍贵的同名认可。在他的笔名斯坦·凯利 (Stan Kelly) 下,他还享受着作为歌手和词曲作者的平行职业生涯。可以通过 [email protected] 联系到他。
最初发表于 Queue 第 6 卷,第 1 期—
在 数字图书馆 中评论本文