写点什么

安全中的道德问题

  • 2018-09-02
  • 本文字数:4537 字

    阅读完需:约 15 分钟

本文要点

  • 与安全一样,技术道德(tech ethics)力图避免我们的系统对用户或他人造成伤害。
  • 不同于安全,技术道德是一个全新的理念。此方面的资源、最佳实践以及可提供帮助的专家都十分稀缺。
  • 就像我们都需要大体了解安全问题一样,我认为在技术行业中同样需要大体了解道德问题,并对其建立信心。
  • 与对待安全问题一样,我们同样有权利去考虑代码中的道德和错误,阐述我们的想法,并采取一些行动。事实上,这就是正确的做法。
  • 开发人员是防止生产中出现非道德代码的最后防御堡垒。

应今年六月在伦敦召开的 Open Security Summit 大会邀请,我举办了该大会首次安全和道德问题研讨会。

在座各位都并非专家

安全是一个完备的学科,但并非我的术业专攻。该学科有一些优秀的资源可供我参考,还有不少记录良好的最佳实践。如仍需补充,我还可以寻求专家的帮助。

我也并非道德专家,但在道德方面很难获得帮助。我可参考的资源和最佳实践非常少,也缺少可求助的专家。这是因为实用的技术道德是一个新的概念,不存在任何有资格指导我们做事的道德明星。但这也许并非坏事。

我们需要一起学习。我们有权利去考虑代码中的道德和错误,阐述我们的想法,并采取一些行动。事实上,这就是正确的做法。

什么是道德?

我对“技术道德”(tech ethics)的定义是,尽量避免我们的代码会对用户或其他任何人产生伤害。该定义看似十分宽泛。一些事情是老生常谈,例如所有的数据丢失(备份错误)。也有一些事情是新提出的,例如让人们任意做出决定(算法公平)。技术道德就是如何从始至终地避免产生任何形式的伤害。

技术具备令人惊叹的力量。我喜欢自身所处的这个智能的、有思想的工程行业。但是我们突然意识到,我们的产品在很多情况下会对大众产生伤害,因此我们必须慎重行事。我们会对社会某些领域的恶化推波助澜,例如能源的使用,污染,排斥,虚假新闻,操纵,身体危险,宣传,心理健康等。

在全球范围内,科技正在迅速发展。如果我们做错了,可能会影响到数十亿人。这种恐惧感促使我认为,自己不应去做任何可能影响技术发展的事情。技术驱动文化应该是别人操心的事情,此重任不应落在我头上。我们的产品只是软件,必须有人去设计、编写、部署和操作它们,正是我们这样聪明而又有思想的工程师。那么我们应该成为最后的防御堡垒,还是继续把责任推脱给他人?

道德如何影响安全?

我将技术道德定义为尽可能保护用户免受伤害。同样,安全的主要目的就是力图保护用户避开那些妄图通过我们的系统去伤害或抢劫他们的人。看上去,似乎安全是道德的一个方面。安全并未涵盖全部道德(还存在其它一些方法,有人可以不需要借助第三方帮助或是代码漏洞,就可以破坏代码),只是其中一部分而已。因此,通过查看那些适用于安全的道德,或许我们可以对技术道德产生更好的认识。

我不喜欢以 Kant 方法处事

我们在思考技术道德问题时,除安全之外,还有哪些潜在的资源可用?在十八世纪,欧洲人对道德和理论( Adam Smith 称之为“道德情感”)曾有过狂热。 许多著名的哲学家,例如 Adam Smith 本人、Immanuel Kant、Jeremy Benthamde 等人,花了大量时间设计出了一些不容置疑的(有效可编程的)规则。在他们看来,人们可以遵循这些规则而做到明辨是非。其中两套当前广为人知的规则集是 Kant 提出的“三大箴言”(Three Maxims) Bentham 提出的“功利主义”(Utilitarianism)。功利主义在当时被人们彻底批判(并且没有任何充分理由)为非自然、无情的并有点反乌托邦的。但事实证明,它是最容易编程实现的。

功利主义

在功利主义看来,如果一个行为从统计上看利大于弊,那么该行为就可被定义为正确。功利主义完全根据结果而非意图判断行动的积极性。它适用于我们这些软件工程师、一些政府统计部门、报纸的头条新闻等,并且是可编程的!我们所需要的只是一个目标,以及一些衡量目标的方法。这的确很奇妙!我们只要完成了对道德的定义,就可以按时回家休息去。

是否认为这很好?那么 Jeremy Bentham 这一派道德学者们会踢你的屁股。功利主义的问题在于,它轻易地接纳了一下令人不快的边缘条件。一个常用的黑镜(Black Mirror)式思考实验(不可否则并没有在 18 世纪使用过)假设你去医院看望一位朋友。在进入医院后,它们的新设备检测出你健康的心脏、肺、肝脏和肾脏可以分别挽救五个病人的生命。但是你的社交朋友数量很少,这意味着几乎没有人会挂念你。这样从统计上看,牺牲你而去拯救更受他人欢迎的五位患者不但是可取的,而且在道德上应势在必行!

功利主义或统计方法会出现极端边缘情况,这往往是由于算法的不公平性所导致的。如果满足目标 KPI,即便的确有少数人受到了影响,那么根据定义算法也一定是好的。不敲开鸡蛋就不会做出煎蛋!

如果你认为这在现实中永远不会发生,那么我们只需要看一下美国政府在也门使用算法生成的无人机杀戮名单。据记者及人权律师 Cori Crider 透露,数千名显然是无辜的人,在一个本应得到美国帮助的国家被美国所使用的功利主义方法杀害,这只是为了达成一个可接受的平民伤亡情况。最近在英国,我们看到了一些非常不人道的行为,包括:为了达到某个目标,一些英国终身公民被自己的政府强行驱逐;为了实现更整洁的街道,一些无家可归的人被送进监狱。不可否认,这些英国案件尚未完全流程化。一旦如此,结果将会更糟。

Kant 方法

那么,Immanuel Kant 提出的规则是否适用?Kant 对道德行为采取了更严格的态度,其中包括三个与 Bentham 的功利主义相冲突的元素。首先,Kant 提出了人是目的而非手段的理念。其次,他认为无论一个目标是多么有价值,任何人都不应该为追求该目标而做出牺牲或受到伤害。第三,Kant 提出了著名的“普世缄言”(Maxim of Universality),它能快速地检查一个人是否表现出了不道德的行为。我将其解释为“是否可扩展?”,其理念在于如果所有人都做过你想要做的行为,那么你应扪心自问该行为是否依然有效,或者说依然有意义。如果没有意义,那么将自己的利益置于他人之前就是错误的。最后应提及的 Kant 原则,就是即使你认为欺骗会符合他人的最佳利益,也不应该因此而做出欺骗。因为这样做就是剥夺了他人获得知情和做出理性选择的权利。

Kant 方法可解决医院思考实验(你不应牺牲自己去拯救他人)和美国无人机袭击(不会杀死无辜者)的问题。它也会解决除污染(它不能扩展)、Facebook 假新闻收入流和谷歌新推出的 Duplex 人类模拟器(请不要说谎)等问题。

不能完全依赖于 Kant 方法

Kant 方法听上去很棒!算我一个!但不幸的是,功利主义或多或少会产生作用。Kant 肯定可排除很多不良行为,但它也几乎禁止了其它所有事情(汽车导致居民死亡,当前用电情况无法扩展。对此我们尚没有可行的解决方案,甚至没有考虑如何给出一个善意的谎言)。

功利主义的确适用。过去 200 年中的大部分进展受益于此。我们从不担心一些边缘情况。有时它们会被新闻报道,这时我们会考虑(或被迫)去解决它们。但问题是,我们是否可以继续忽略非主线错误,并以《卫报》、缓刑组织(Reprieve)甚至《每日邮报》作为我们的可观察和警报工具?

如果我们试图使用“设身处地(Compassionate)的功利主义”缓解存在于这些边缘案例中的道德问题,那么需要解决两件事情:

  1. 确保主线的正确。这样从平均情况看我们不会对用户造成伤害。
  2. 设身处地找出、处理并解决非主线损害案件(如有必要,可包括一些特殊情况)。

不幸的是,该做法与安全或工业安全一样,不可避免是亡羊补牢的(即只有发生了一些不好的事情,我们才能从中汲取经验教训)。但是,如果大家可以分享自己的经验教训,那么就会减少更进一步的损害。我认为这就是最好的方式。它依赖于观察、监测、报告和学习,这些并非仅是由各大新闻报道提供。

应在安全中采取哪些措施?

在安全领域,最佳实践是刻意采取功利主义的方法。对于一个高价值系统,是非常难以确保其安全的。大家都明白,我们的对手就是一个玩长期游戏的潜伏代理,正如我追的美剧《美国谍梦》(“The Americans”)中的情节。另一方面,大多数安全专家专注于修复最有可能导致安全漏洞的一些相对简单的问题,而破坏者如果足够坚定,最终可能就会突破。在这种情况下,安全的目的是确定已发生的违规情况,并采取一些临时措施,至少会通知受影响的用户他们的数据已被泄露。

该方法并非危言耸听,也不是完全功利的。良好的安全性仍然可预见并处理边缘情况(发生违规),并尝试以某种方式缓解问题,而不仅是只要在主线上就可接受偶发故障。我们可能会将此视为上文介绍的“设身处地的功利主义”。其中存在着部分 Kant 方法,包括我们会优先考虑让受害者知情。

如何从道德考量中受益?

2018 年的 Stack Overflow 开发人员调查中,给出了询问开发人员是否最终对自己代码的不道德使用负责的选项。其中,80%的人表示不会负责,并认为这是董事会、股东和产品负责人(PO)的责任。

如果一家企业将安全交给一些对企业知之甚少的股东,那么你会为这样的企业工作吗?我希望你不会。这是非常不专业的做法。在大多数情况下,应用的安全是由多个文化上的防火墙保证的。在安全性上,董事会和股东有可能会达成一致,但技术专业人员具有最后的发言权,因为他们了解产品、环境和选择情况。安全团队是防止企业做出不安全行动的最后防御堡垒。

为什么技术道德并非如此?它有什么不同?我们是否希望董事会能够比了解加密策略那样更好地理解机器学习的测试数据限制?如果是这样,那么我们太天真了。

机器学习专家必须保护用户免受错误决定的影响。开发人员必须保护用户免受他们所创建算法的伤害。这些算法可能会令人上瘾,也可能会导致剥削压迫。运维和 DevOps 人员必须要保护用户免受数据中心日积月累的低效、非清洁能源使用的影响。

除了我们这些技术人员,那么还有谁应承担责任呢?我们是编写代码的人,对于代码所造成的任何伤害,我们的直接责任要远大于那些试图保护用户免受他人伤害的安全专业人员。虽然开发人员可能不会对自己的最终负责,但是美国法院却不同意。去年,一名大众汽车工程师因编写不道德的代码而在美国入狱近 4 年。因此,如果开发人员缺少道德规范,那么用户安全就不仅仅是处于危险中。这也是我们自身的自由权利所在。

就像我们都需要大体了解安全问题一样,我认为在技术行业中同样需要大体了解道德问题,并对其建立信心。我们需要这些优秀的资源、记录良好的最佳实践和一些专家。我今年七月在伦敦举办了一次 Coed:Ethics 大会,力图推动该项工作的启动。 DataKindUK 等这样的慈善机构,以及 Doteveryone 等智库正致力于制定指导方针和流程。 Container Solutions 等科技企业正在试验这些流程,并提供反馈。InfoQ 将对大会录像,并免费提供。我们正在 Github 建设资源。

现在需要大家积极思考我们这一领域中的道德问题。并非只有专家才能参与。正如 Disraeli 所说:“历史是由那些参与的人创造的”。

作者简介

Anne Currie 具有二十多年的科技行业工作经验,从 90 年代的微软后台服务器、2000 年代的国际在线内衣商店,以及 2010 年代最新的 DevOps 技术和容器编排。Anne 是一些生产力、零售和 DevOps 领域科技初创企业的联合创始人。她目前供职于位于伦敦的 Container Solutions。

查看英文原文: The Ethics of Security

2018-09-02 18:291508
用户头像

发布了 391 篇内容, 共 135.0 次阅读, 收获喜欢 256 次。

关注

评论

发布
暂无评论
发现更多内容

Android面试主题整理合集(三)

android 程序员 移动开发

Android面试老生常谈的 View 事件分发机制,看这一篇就够了!

android 程序员 移动开发

App基于手机壳颜色换肤?先尝试一下用 KMeans 来提取图像中的主色

android 程序员 移动开发

Bmob后端云+ImageLoader框架实现图文列表

android 程序员 移动开发

Angular-集成-Typescript-版本-Echarts-(附代码)

android 程序员 移动开发

AsyncTask相关知识

android 程序员 移动开发

BAT资深面试官-带你破解Android高级面试

android 程序员 移动开发

Android面经分享:快手、字节跳动、百度

android 程序员 移动开发

Android面试官必问的事件分发,你答得上来吗?

android 程序员 移动开发

App怎么做才能永不崩溃

android 程序员 移动开发

Android:彻底消灭OOM的实战经验分享(千分之1-5----万分之0-2)

android 程序员 移动开发

APP 热修复都懂了,你会 SDK 热修复吗?最全方案在这里!

android 程序员 移动开发

ARouter系列3:继续学习(手写一个Arouter框架)

android 程序员 移动开发

ClassLoader在热修复中的应用

android 程序员 移动开发

Android面试大全基础篇(校招+社招)含答案

android 程序员 移动开发

Android面试:一个进程有多少个-Context-对象?看似初级的问题,答的好的人确不多

android 程序员 移动开发

Android:AsyncTask使用

android 程序员 移动开发

Android:帧动画和补间动画看这篇就足够了!

android 程序员 移动开发

Android面试必问:Handler、Bitmap、线程

android 程序员 移动开发

Android高频网络面试专题必知必会

android 程序员 移动开发

App 金刚区导航菜单,类似淘宝、QQ 音乐等 APP 导航,方格布局横向滑动翻页带滚动条

android 程序员 移动开发

Android面试必备!爆火超全的《Android性能优化全方面解析》

android 程序员 移动开发

Android面试题之性能优化篇

android 程序员 移动开发

Android面试题(window、进程、线程篇

android 程序员 移动开发

APP终极瘦身方案

android 程序员 移动开发

Android面试官:“来给我讲讲View绘制?

android 程序员 移动开发

Android面试:IntentService源码分析

android 程序员 移动开发

Android题集四大组件之Service

android 程序员 移动开发

Android高级面试题:面试十几家公司入职外企后,掌握这几个关键点面试通过率很大

android 程序员 移动开发

Android高级架构师整理面试经历发现?(大厂面经+学习笔记

android 程序员 移动开发

AOP 最后一块拼图 _ AST 抽象语法树 —— 最轻量级的AOP方法

android 程序员 移动开发

安全中的道德问题_架构_Anne Currie_InfoQ精选文章