繁体
首页

第91章 职业道德和责任(3)(3 / 3)

9.3.5 发布安全漏洞

麻省理工学院的三个学生计划在一个安全会议上演讲一篇论文,内容是关于波士顿的公交收费系统的安全性漏洞。在波士顿交通运输部门的请求下,法官下令这些学生取消其演讲,并且不要散发他们的研究论文。学生们正在辩论是否应该在网络上发布他们的论文。[9] 假设你是其中的一个学生。

如果你想要散发这篇论文,你的理由是什么?你可能会认为法官的命令违反了你的言论自由,而发布该论文是一种抗议。你想要在网上发布论文可能与你计划在该会议中做演讲的理由是一样的:为了使其他安全专家意识到该问题,也许是为了促成关于安全补丁的工作,也许是为了鞭策交通运输部门来解决问题。发布该漏洞会带来一些风险。如果人们利用了该信息,那么交通系统可能会失去一笔可观的收入。你和你的合作者可能会因为违反法庭命令,而面临法律诉讼。你的大学也可能面临一些负面后果,因为这项工作属于一个学校研究项目中的一部分。

在实际的案例中,交通运输部门请求了五个月的禁令,以提供时间让他们解决该问题。法官在一个星期后就取消了该禁令。我们拥有一个健全的法律制度,在双方产生分歧时,都有机会展示他们的论点。该系统具有大量的缺陷,但它比大多数系统还是要好。维护一个和平、文明的社会,要求我们有时不得不接受一个公正的评判所做出的决定。无视法律的决定在某些情况下可能是道德的,但不能仅因为一个人的好恶就无视法律。

9.3.6 规约文档

你是一个比较初级的程序员,任务是开发一个模块,从贷款申请表中收集相关数据,并将其转换成用于评估的应用程序所需的格式。你会发现在一些表格中缺少人口统计数据,特别是关于种族和年龄的数据。你的程序该怎么做呢?你应该怎么做?

你应该咨询该程序的规格说明文档(规约)。任何一个项目都应该具有由客户或开发项目的公司经理(或两者一起)批准的规约。你的公司有道德和业务上的责任,以确保规约是完整的,并且开发一个满足这些说明的程序。这里的问题在伦理上包括,但是却超越了,一个公司完成商量好的任务和别人付钱给你做的事情。

假如你在规约中没有找到覆盖你的问题的任何内容。下一步应该是把这个问题告知你的经理。假设经理告诉你说,“如果种族那栏是空的,程序可以假定是白人,因为反正银行无论种族也都应该一视同仁。”你是否应该接受你的经理的决定?不应该。你没有权力在没有咨询客户或公司里负责该程序设计的更高级别的管理人员之前,自行决定在规约中没有包含的事项。你的经理可能也不具有这样的权限。经理这样快速和简单的回应,表明他或她的行为并不负责。此外,你的公司必须要把它所做的任何决定都写入文档。也就是说,规约需要修订,从而它们才是完整的。(SE准则3.11)。

从伦理的角度来看,为什么请教别人很重要?有关程序如何处理异常情况的决定可能造成严重后果。你(和你的经理)可能不够了解该程序的用途,无法做出很好的决定。在这个例子中,很可能程序中评估贷款申请的模块根本不会使用关于种族的数据。也有可能借款人或政府希望使用关于种族的数据,以确保遵守了禁止歧视的政策和法律。