这一切真的安全么——一个开发项目引发的思考

最近在做一个涉及资产和地理位置的 Web App,每次向用户保证“安全”的时候(包括财产和隐私),我都会不由自主的问自己,真的安全么?所以在这里详细讨论一下。不过事先声明,我做的 app 可能无法绝对安全,但并不比同类的差,请自行比较。

首先说,这世界上可能没有绝对安全,有的话也不属于人类。即使你躲在家中,也面临各种小概率灾难的威胁:大地震,大洪水,陨石撞击,火山喷发。很多人认为小概率事件不可能发生,但事实却是,我们不知道会不会发生。“不知道”不等不“不会”1

很多人在 2019 年都觉得不会再发生非典那样严重的疫情。确实,结果 2020 年来了个更严重的疫情。我们不知道的事情,不代表不存在。

没有了绝对安全,就只剩下相对安全了。“相对”的意思是“依靠一定条件而存在”(《现代汉语词典》)。我们可以大致可以猜想,如果安全需要依赖的条件多且苛刻,那么这种安全其实很不稳定。若真如此,人类生存的安全性就很让人“焦虑”,因为人类的依存需求很多,甚至有可能是自然界中最多的。

回到一个 Web App 上来,它真的安全么?这需要看他依赖的条件,其中至少包含以下几点:

  1. 访问国际互联网的通路,包括 DNS,CDN 等
  2. 云计算服务商的软硬件,包括设施维护、灾备处理等
  3. 开发人员,包括其工作设备、开发工具、知识水平等诸多方面

这中间任何环节出现问题,安全都将受到考验。比如云服务商意外删除了数据怎么办(这种事不是没有发生过),开发人员的工作设备被入侵了怎么办(开发人员也无法搞清设备的每一个细节)。所以很多选择,并不是基于深刻理解,而是基于经验、品牌等,觉得那样没问题。所以安全就变成了,你依赖我,我依赖他们,他们依赖更多他们,脆弱性很可能就在这个链条中不断积累。

如果上面的说明让你觉得我开发的 app 很不安全,那我得说,你接触到的网站都差不多,我开发的并没有更不安全。可能大公司有实力考虑更小的意外事故,所以他们自建机房(不使用云服务商)、监控工作人员的设备,但如果他们真的那么安全,每隔一段时间就会出现的数据泄露是怎么来的。所以,事实可能是,他们并没有更安全,相反,如果他们不花大价钱做更多防护,就会大大地不安全。他们必须为安全付出更大的成本,这里没有选择的余地。当然,小公司也可能泄露数据,但是因为没人关注或者干脆公司自己都不知道,所以知道的人少。但大公司更容易成为“靶子”应该是确定的。

并且,从某种程度上来说,个人开发可能还具有某些优势:接触敏感数据的人少。大公司里都是打工的人,你并不能指望每个人都对你的数据安全上心(肯定有兢兢业业的人,不误伤)。而且他们都是有限责任公司,只要不违法,很多责任是在“有限”之外的。这鼓励了人们创新2,因为不用承担更多的责任,但有时会给别人留下了隐患。有人可能会反驳说,参与公司投资、购买公司产品,都是个人做出的选择,“自己为自己的选择负责”;这在今天的背景下听起来没有问题,甚至还站上了某些道德高地,但当社会中因此出现越来越多的 inverse hero1、占据不对称优势的人,有些事情可能会发生改变。这里谨引用章北海在“自然选择号”上留下的一句话3

新的文明在诞生,新的道德也在形成

当然,我也只是猜,不要太当真。但一个难以否认的事实是,个人越来越无法为自己“负责”了,因为我们依赖的东西越来越多:手机、网络、软件、房子、车子、各种食品商品供应链,每一个你都不甚了解,但又不得不依赖,你越来越多的需要别人为你负责。从这个角度说,我觉得“有限责任公司”可能只是个历史阶段性产物。注意,我没说要对我做的 app 承担 100% 的责任,这对我是不公平的,至少在今天这个环境下。

我知道有些圈子流行“生命不息,折腾不止”,这挺好。但以后人们可能会更加关注一个问题:你折腾的是谁。如果是你自己,大家应该会勉强接受(当然,你也可以无视大家是否接受);如果是别人,你的生命可能需要休息……开玩笑的,只是为了文字表达上的对称而已;有些人会愿意你折腾他们,可以去找这些人,或许。注意,我没有暗指罗永浩老师,只是在给这句话加个注脚而已。

有人会说,这世界不是零和游戏,资源越折腾越多。有可能。一个著名的例子是罗马俱乐部报告了人类增长的极限4,说石油等资源会在接下来几十年到 100 年之内用尽,但人类却通过不断探测新储备、开发新能源,延长了这一时间,人们因此大受鼓舞。但问题是,你怎么知道人类永远能找到下一个能量来源。或者,换个说法,我们和我们的子孙(如果你有的话)本来没必要开发更高难度的资源,但是因为更容易的资源被前人用完了,所以逼迫着下一代不得不发展新能源;如果他们开发不出来,世界人口将会打折。这里没有选择的余地。

所以,那些鼓吹甚至笃信“正和游戏”理论,但所作所为却只有消耗当前相对便宜的资源的人,你们真的不是在给自己的贪婪找借口么?不过,我不想控诉谁,今日之局面不是一人之所为;我也无法批判谁,在今天的世界观下,消费主义也是我默认的行为。然而,静静地看,有些变化已悄然发生。

回到正题,怎么解决安全问题呢?

有些人认为是发展新的安全技术。这比较容易理解,毕竟,“发展是解决一切问题的总钥匙”5。但有时我也会有些犹豫,毕竟,宇宙已经发展 130 亿年了,却没有给人类营造一个没有问题的空间;人类文明已经发展 1 万年了,眼看着问题好像越来越多(天灾好像少了,但人祸却变多了6)。所以,我们是不是把这个世界看错了?

注意,我并没有否定“进步论”,我目前还没有这个能力;而且,我自己也在努力进步。但借助上面的思考,对于安全问题,或许可以有不一样的解决方向:不发生,就不会有问题。如果我压根就不让敏感数据产生,或者不使用高敏感数据,大家都可以相对安全。

基于此,相对最安全的方式其实是,不做这个 app。如果非要做,不使用、不存储敏感数据,就没有数据泄露等一系列问题。如果不得不存储私钥等数据,才使用一些安全技术。总之,能不发生的,就都不要发生。这多少印证了索福克勒斯(Sophocles,《俄狄浦斯王》作者)的名言7

Not to be born is, beyond all estimation, best
没出生才是最好的情况

这就是我对“安全”的一些思考。可能有些消极,但我们都要坚强的活下去,继续面对问题,继续解决问题……开玩笑的,生活还是很美好的,天空很蓝,阳光很明媚。

1. 《反脆弱》
2. 《公司的力量》
3. 刘慈欣. (2008). 黑暗森林. In 三体Ⅱ (pp. 420): 重庆出版社.
4. Wikipedia Contributors. (2020, March 10). The Limits to Growth. Retrieved April 3, 2020, from Wikipedia website: https://en.wikipedia.org/wiki/The_Limits_to_Growth‌
5. “一带一路”演讲
6. 《物演通论》
7. Contributors to Wikimedia projects. (2005, January 29). ancient Greek playwright. Retrieved April 3, 2020, from Wikiquote.org website: https://en.wikiquote.org/wiki/Sophocles#Oedipus_at_Colonus‌