学者的责任

Hacker News Top 新闻

摘要

一位学者的个人随笔,讲述了他发现 Intel 超线程缓存侧信道漏洞(可泄露 RSA 私钥比特位)的经过,以及此后历时六个月、最终促成各大操作系统厂商在 2005 年协同发布补丁的负责任披露过程。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/10/31 21:21

# 学者的责任 Source: https://www.daemonology.net/blog/2026-10-31-The-Duty-of-a-Scholar.html 2004年11月16日——距我来到牛津恰好π年——我提交了博士论文(https://www.daemonology.net/papers/thesis.pdf)。但说实话,我当时的心思并不在论文上;我一直在思考最近在 Intel CPU 上发现的一个问题:他们在2002年推出的"超线程"(同时多线程)功能,可能通过缓存状态在执行线程之间泄露信息。当时有个玩笑说,尽管美国国家安全局(NSA)近年来变得更加开放,也开始认真对待其防御角色,但他们永远不会公开讨论的密码学领域只有一个——侧信道攻击——而这本身也构成了一个侧信道,暴露了他们对该领域的重视程度。作为计算机安全领域的从业者,且深知 NSA 在这个话题上颇有心得,我的当务之急是确定我所发现的信息泄露是否足以构建一个实用的密码学侧信道。到12月中旬,我已经做出了一个概念验证利用程序,能够窃取足够的 RSA 私钥比特来重建整个密钥,于是我将注意力转向了这个难题中最棘手的部分:在公开披露之前,悄悄通知安全团队并与他们合作修复该问题。 这成了我接下来六个月的工作。当我的牛津同窗们忙于修改论文、申请工作时,我把这些都搁置了(这让我的导师们相当恼火):我有一份责任,它优先于单纯的职业考量。事实证明,没有工作这件事在五月初派上了用场——Intel 对我即将发表的论文感到恼火,要求 Yahoo 命令我撤回论文;而 Yahoo 非常乐意地回复说,与许多 FreeBSD 开发者不同,我实际上并不是他们的雇员,他们无权威胁解雇我。2005年5月13日,我在 BSDCan(https://www.bsdcan.org/)上发表了论文,并发布了相关安全公告(https://www.daemonology.net/hyperthreading-considered-harmful/);FreeBSD、NetBSD、Red Hat、SCO 和 Ubuntu 也在同时或不久之后发布了各自的安全公告。 任何参与开源软件安全的人都会熟悉这一流程——负责任披露(如今更广泛地称为"协调披露",因为业内一些人曾对"责任"这个概念感到困惑)——尽管这次披露过程的时长不太寻常。如果你发现了一个安全漏洞,你不应该忽略它(更不应该把它卖给坏人);反过来,直接公开漏洞并寄希望于好人能在坏人利用之前修复它,也是不负责任的。相反,你有责任确定谁需要了解这个问题,并私下联系他们,以便在问题公开后能立即向用户发布补丁。 在这件事上,我恰好处于一种非同寻常的状态,可以暂停自己的生活:我单身、没有孩子,在答辩完论文返回加拿大老家后,免费住在我(非常宽容的)父母的地下室。虽然我有一些开支要应付——作为1型糖尿病患者,我必须购买胰岛素——但住在加拿大意味着我不需要担心住院产生的巨额费用。如果我住在美国,我将不得不优先寻找工作和医疗保险,很可能无法履行命运交给我的这项使命。 工程师们当然对这类责任并不陌生:虽然具体措辞因司法管辖区而异,但几乎所有职业伦理准则都要求*无论是否存在个人关联*,都必须对安全隐患采取行动。例如,IEEE 的成员承诺"将公众的安全、健康和福祉置于首位……",而这项义务并不限于该工程师所参与项目中出现的隐患:凡是认识到隐患存在的工程师,都有"立即披露"的义务。然而,与软件安全漏洞的负责任披露一样,这项义务的范围也是有限的:如果有人在*低效地*完成工作,是没有义务举报的。作为法律义务,这是合理的;但作为道德义务,我觉得这标准定得太低了。 工程准则通常还规定了逐级上报的流程:在常见的情况下,持证工程师在其参与的项目中发现隐患时,首先应向雇主报告他们的顾虑;只有在无果的情况下,才应采取更直接的措施。这既高效又务实:向一个不采取行动的人报告问题,不一定足以履行义务,但反过来,广泛地报告所有事情,则可能淹没那些真正需要广泛关注的事项。我一贯遵循同样的原则;例如,2009年我发现 Amazon EC2 的防火墙默认情况下会破坏 Path MTU Discovery,并向 Amazon 报告了这个问题;但到2012年11月,我判断 Amazon 不会着手解决这个问题,于是我在博客上写文章建议 Amazon 的客户自行修复 Path MTU Discovery(https://www.daemonology.net/blog/2012-11-28-broken-EC2-firewall.html)。(事实上,Amazon 很快就修复了这个 bug。)虽然这绝不是一个安全或计算机安全方面的问题,但我认为,既然我知道了这件事,就有道德义务分享这些知识来帮助受影响的人。 在《星际迷航:下一代》的剧集"首要职责"(The First Duty)中,已故的 Patrick Stewart 以 Jean-Luc Picard 的身份,发表了关于真理的一段令人难忘的台词: > 每一位星际舰队军官的首要职责就是忠于真理,无论是科学真理、历史真理还是个人真理!这是星际舰队赖以建立的指导原则!如果你无法鼓起勇气站出来,坦诚所发生的一切,你就不配穿那身制服! 这里描述的职责是揭示真相而非隐瞒真相的义务;我认同这项义务,但我觉得它还不够。在我看来,这项义务还应包括*主动去寻找应该被告知真相的人*。以"没人问过我"为借口,就是未能履行这项义务。 关于责任和伦理,哲学家们已著述甚丰,尤其是德国启蒙哲学家 Fichte,在他1794年系列讲座的第四讲中有一些有趣的论述——《论学者的使命》(*Über die Bestimmung des Gelehrten*,常被译为 *The Vocation of the Scholar*),本篇文章的标题也由此而来。Fichte 认为,学者与知识之间有一种特殊的关系:学者"占有知识不是为了自己,而是为了社会"。囤积知识对学者来说是不合适的;相反,学者有义务将知识传授给他人——用 Fichte 有些夸张的话来说,充当"人类的导师"。另一方面,没有必要也不适当地让每个人都深入了解"他自己不得不进行的那些深层次探究";相反,学者在传递所需的具体知识时,依赖的是他人对其诚实的信任。Fichte 指出,"学者永远不会受到诱惑,通过强制或使用武力使人们接受他的信念……他也不会欺骗他们"。学者不是柏拉图的哲学王;他们的职责是提供必要的知识,而非强制人们如何使用这些知识。 当然,我并不完全同意 Fichte 的观点。Fichte 将学者视为所有阶层中最高贵的,甚至邀请每位学者将自己视为"真理的祭司";生活在更加平等的时代,我完全拒绝这种定位。我也不接受 Fichte 在前一篇讲座《论社会中的阶层区分》(*On the Distinction of Classes in Society*)中的表述,即学者分享知识的义务源于偿还社会为我们所做的一切;在我看来,这项义务并非源于对社会的亏欠,而是附着于知识本身,无论知识掌握在谁手中。 这项义务,自然也不是无限的。正如 Fichte 所指出的,没有义务强迫人们根据共享的知识去行动——事实上,我们有道德义务尊重每个人选择如何行动的自由。同样,也不必成为"卡珊德拉"(不被相信的预言者):就像任何礼物一样,人们可以拒绝接受知识这份礼物,无论这多么不明智;最终,如果所有有能力根据某项知识采取行动的人都已被告知,这项义务就已经完成了。 在现代用语中,"学者"和"研究员"这两个词常常重叠使用,但对我来说二者有非常明确的区别:研究员创造新知识,而学者将这些知识传递给需要它的人——这个定义比 Fichte 的更窄,因为 Fichte 笔下的学者还肩负着努力拓展知识的使命。当然,很多人既是研究员也是学者;但也有大量从事研究、发表论文却并未真正传播其发现的人。论文发表在期刊上却从未被阅读,几乎已成陈词滥调;但即使是被阅读的论文,如果只有学者读到,而没有任何有能力根据研究成果采取行动的人读到,也不一定能产生应有的影响力。我的本科母校——Simon Fraser University(https://www.sfu.ca/),我担任其校董已有二十余年——自称为"加拿大的参与型大学",并特别强调不仅重视学术产出,也重视将学术知识与现实世界相连接的工作。在我看来,真正的学者是那些自觉受知识义务约束的人:去寻找应该与之分享知识的人。 每个人都可以在社会中选择自己的角色,并非每个人对每一项义务都有相同的感受;而且,正如2005年我的经历会因是否需要获取医疗保险而有所不同,无论一个人对某项义务的感受多么强烈,并非每个人都有能力去践行它。但对我来说,我选择了学者的生活与使命。

相似文章

AMD不愿修复的远程代码执行漏洞

Hacker News Top

一名研究人员发现AMD的AutoUpdate软件存在远程代码执行漏洞,原因在于不安全的HTTP下载链接和缺乏证书验证。AMD最初以超出范围为由不予理会,但在公众关注后同意发布CVE并修复。

AMD拒绝向研究人员支付1万美元漏洞赏金

Hacker News Top

AMD拒绝了研究员Paul LaRosa提出的1万美元漏洞赏金,此前他发现了AMD Windows自动更新程序中的一个关键HTTP漏洞,可导致中间人攻击;该公司花了124天修复该问题,且仍使用弱CRC32校验和。