Schneier的安全忠告
上QQ阅读APP看书,第一时间看更新

大众汽车与作弊软件

最初发表于CNN.com(2015年9月28日)

在过去的六年中,大众汽车一直在对其柴油车的排放测试中作弊。这些汽车中的计算机能够检测到是否正在进行测试,并可以临时更改其发动机的工作方式,从而使它们看上去比实际情况更环保。当不进行测试时,它们排出的污染物是测试时的40倍。问题曝光后,大众汽车的首席执行官辞职,并且大众汽车将面临昂贵的召回成本、巨额罚款甚至更严重的后果。

测试作弊在美国公司中有着悠久的历史。这在汽车排放控制和其他场景中经常发生。在大众汽车案例中,作弊功能被预先编程到控制汽车排放的算法中。

计算机让人们能够以新的方式作弊。由于作弊行为被封装在软件中,因此恶意行为可能对测试本身影响不大,但由于该软件以“智能”的方式实现了正常对象所不具备的功能,因此该作弊可能更微妙、更难检测。

我们已经有智能手机制造商在处理器基准测试中作弊的例子:检测何时进行测试并人为地提高性能。其他行业也存在这样的情况。

物联网时代正在来临。许多行业都在向自己的设备中添加微型计算机,这将为制造商带来新的作弊机会。灯泡里的微型计算机可能会使监管机构以为它更节能;温度传感器可能会使购买者误以为食品储存的温度是更安全的;投票机似乎运行得很好,除了11月的第一个星期二,那天它们会偷偷地将几个百分点的选票从一个政党的候选人切换给另一政党的候选人。

我担心的是,一些公司高管不会将大众汽车的故事看作反面教材,而是将其视为可以逃避六年处罚的例子。

而且他们会用更聪明的手法作弊。对于大众汽车所有的这种行为,一旦人们认真地去调查它,那么就很容易发现。更聪明的做法是使作弊看起来像是一次意外——软件整体质量太差,以至于产品发布时会有成千上万的问题。

这些问题中的大多数不会影响产品正常运行,这就是你的软件通常运行良好的原因。其中一些功能确实如此,这就是为什么你的软件偶尔会出现故障并需要不断更新。让作弊软件看起来像一个编程错误,可以让作弊行为更像是一种意外。而且不幸的是,这种可否认的作弊比人们想象得要容易。

计算机安全专家认为,情报部门多年来一直在做这种事情,无论是否经过软件开发人员的同意。

对于这类问题,我们不能用传统的计算机安全解决方案来解决。传统的计算机安全性旨在防止外部黑客入侵你的计算机和网络。该汽车软件可以阻止车主调整自己的发动机以使其运行得更快,但在此过程中会排放更多的污染物。我们需要应对的是一个截然不同的威胁:在设计阶段就编写了它不应该有的行为。

我们已经知道如何保护自己免受公司不良行为的影响。里根在谈到核条约时曾说过:“Trust,but verify(信任,但要核查),”我们需要能够验证与我们的生活息息相关的软件。

软件验证分为两部分:透明度和监督。透明意味着我们可以获取源代码来进行分析。这样做的必要性显而易见。如果制造商可以隐藏代码,则隐藏作弊软件要容易得多。

但是,使用开放源代码软件的人都知道,透明度并不能有效地减少作弊或提高软件质量。这只是第一步。必须分析代码。而且由于软件是如此复杂,因此分析不能仅限于每隔几年进行一次的政府测试。我们也需要私人分析。

美国和德国私人实验室的研究人员发现了大众汽车的作弊行为。因此,透明度不仅意味着向政府监管机构及其代理公司提供该源代码,还意味着将代码提供给所有人。

在软件世界中,透明度和监督都受到威胁。这些公司经常以这些软件是专有软件为由拒绝公开其源码,并且会尝试去压制这些找到问题的安全研究员。这些公司的理由虽然也是合理的,但是公众的利益和安全要高于商业利益。

专有软件正越来越多地用于关键应用中:投票机、医疗设备、呼吸分析仪、配电系统、决定其人是否可以登机的系统。我们将对生活的更多控制权交给了软件和算法。透明是验证它们没有欺骗我们的唯一方法。

某些企业高管也通过作弊来攫取利润。上周我们看到了另一个例子:现已解散的美国花生公司前首席执行官斯图尔特·帕内尔(Stewart Parnell)因故意运送被沙门氏菌污染的产品而被判处28年徒刑,这个刑期看似过分,但他的作弊导致9人死亡,还有更多人患病。

软件只会使这样的渎职行为更容易实施且难以证明。很少有人了解这样的阴谋。这些作弊行为可以提前完成,而不需要在临近测试时间时实施或到现场实施。而且如果该软件在很长时间内都未被检测到,那么这些公司的员工甚至会忘记它们的存在。

我们需要对控制我们生活的各种软件进行完善的测验,让这些软件对公众更加透明。