关于计算机安全的一些碎碎念

我很少谈论自己所在行业,"Security Is Our Top Priority" is BS 这篇文章与我对安全领域的理解不谋而合,作为一个计算机安全行业的从业者,我想简单分享一下自己对于计算机安全的思考:

  • 当其他人在询问你做某件事情的理由时,如果你的回答仅仅是这么做更安全,你需要停下思考一下自己这么做除了帮助别人解决问题之外有多少是为了「保护自己」,同时还要诚实地告诉自己 —— 结果高于自我;
  • 我一直觉得安全是个不讨喜的行业,做得最优秀的安全一定是默默无闻不被感知的,一旦安全被感知了,安全人员可能就要「背锅」了;
  • 安全之所以被划分为「非功能性需求」,跟管理学逻辑是类似的,当资源有限的情况下安全需要进行合理的管理 —— 将安全纳入到一个优先级框架中进行风险控制;
  • 安全一定是有边界的,明确的安全边界假设除了降低解决问题的复杂度,更重要的是降低管理「成本」,因为管控安全边界的成本一定低于管控安全的成本;
  • 安全是无止境,对安全从业者一定是的,对除此以外其他人一定不是的;
  • 安全是平衡的「艺术」,它真正的价值是解决用户的信任问题。举个例子,汽车都会有安全问题,作为汽车安全从业者,你不需要把它设计成「无坚不摧」的坦克才会有用户去买,你只需要设计好安全带、防撞梁、安全气囊,并且做好安全测试保证风险控制有效,就能让用户信任并购买;

最后附上博客原文翻译:

几年前,我被邀请去做一个关于软件安全的会议演讲。其实,我并没有真正被邀请,而是我的公司购买了一个包含演讲席位的赞助包,我回复了一封内部邮件,自愿参与了这个活动 🤣 无论如何,在准备我的演讲过程中,我意识到了几个关于安全的重要观点,这些观点自此一直萦绕在我的心头:

1. **安全是无止境的**。你总是可以投入更多努力来提高安全性。质量和安全、员工满意度等也是如此。
2. 安全的需求与**便捷的用户体验**需求**相冲突**。增强一个方面往往会损害另一个方面。

现在,有些组织宣称“安全是我们的首要任务”。真的吗?你想要将一个没有上限的事情作为你的首要任务?我的意思是,安全是一件好事,但这听起来是不是有点太简单了?实际上,像这样的空洞营销声明可能会让我有点生气。在这篇文章中,我将帮助你理解如何解读这样的声明,以及在现实生活中如何处理安全问题。我将涵盖:

*   一个哲学性的介绍
*   “安全是我们的首要任务”实际上意味着什么?
*   你应该在多大程度上重视安全?
*   公司应该怎么说替代这句话?

## 安全性与用户体验平衡的哲学思考

安全的无限性以及它与用户体验(UX)之间的平衡让我想起了某件事。我不得不停下来思考了一会儿,然后我想起来了。大约在我19或20岁的时候,我发现了GK Chesterton。我非常喜欢他,因为他让我意识到实际上有非常了不起的基督教思想家,而在我那种多少算是福音派的背景中,这样的人并不多。不幸的是,尽管有Chesterton的影响,但与20岁时的我希望的相反,我个人的信仰并没有坚持下去。不过,我还是从他的著作中学到了很多至今仍感激的东西。这里有一段与我们讨论的话题相关的引用:

> “现代社会并不邪恶;在某些方面,现代社会太过美好了。它充满了狂野而被浪费的美德。当一个宗教体系被粉碎(正如基督教在宗教改革中被粉碎那样),被释放的不仅仅是恶习。恶习确实被释放了,它们四处游荡并造成破坏。但美德也被释放了;美德游荡得更加疯狂,美德造成的破坏更加可怕。现代社会充满了旧基督教美德的疯狂。美德之所以疯狂,是因为它们彼此孤立,独自游荡。因此,有些科学家只关心真理;而他们的真理是无情的。因此,有些人文主义者只关心怜悯;而他们的怜悯(很遗憾地说)往往是不真实的。”——GK Chesterton,《正统》,1908年

Chesterton的意思是,好的事物(美德)如果被过分追求或者脱离了其他好的事物,就可能变成坏事。这听起来似乎是显而易见的,确实如此。但是一旦你掌握了这个模式,就会发现它一直在发生。在这篇博文中,我们谈论的是那些忽视了UX的安全狂热者,但在我们的政治世界中也是如此。有些人将多样性、公平性和包容性(DEI)推行到极致,以至于将白人男性妖魔化。有些人将家庭价值观推崇到极致,让其他人感到格格不入。家庭价值观和包容性都是好东西,但如果它们被孤立对待,就可能走向极端,并在群体之间造成分裂。

因此,我们需要在所有美好的事物之间找到一个健康的平衡,不让任何一个走向极端而忽视其他。这并不容易!如果你是一个安全极端主义者,即使你还是被黑客攻击了,至少可以说你已经竭尽全力来提高安全性。另一方面,如果你在安全性和UX之间取得了平衡,并为了更好的UX而做出了一些降低安全性的决定,然后遭到了黑客攻击。你如何为自己辩护?说“现实是复杂的,我们在这种情况下决定优先考虑UX”并不是一个听起来很好的回答。捍卫非极端立场需要勇气,因为极端主义者总是有更有力的口号。

## “安全是我们的首要任务”实际上意味着什么?

安全真的是无限的吗?我认为是的。实际上,银行最安全的运营方式可能是关闭他们的在线业务,购买一个大保险库,并在门外部署一支小型军队。即便如此,安全检查的强度和军队的规模也可以无限增加。然而,大多数人还是更愿意通过银行应用程序的面部识别来转账,并认为这种安全程度已经足够好。

公司真的会这么说吗?是的。比如微软的“[将安全置于一切之上](https://blogs.microsoft.com/blog/2024/05/03/prioritizing-security-above-all-else/)”,AWS的“[在AWS,云安全是最高优先级](https://docs.aws.amazon.com/whitepapers/latest/aws-overview/security-and-compliance.html)”,Meta的“[保护您的数据是我们的最高优先级](https://about.meta.com/actions/protecting-privacy-and-security/)”,还有很多其他例子。

这听起来不错,但在实践中,这是否意味着只要有人提出以牺牲UX、消费者价格等为代价来提高安全性的想法,你就会实施?因为这似乎是它的意思。当然,答案是否定的,所以我对这些声明并不太认真,尽管我理解这给客户带来了一种温暖而模糊的感觉。我更希望组织能够坦诚和清晰,但我只能梦想在一个这样的世界里。

实际上,这些公司所表达的可能是:

> “我们有一个平衡的优先级框架,我们对问题进行分类并给予每个问题加权得分。我们给UX问题分配20%,安全25%,技术债务10%,新功能20%,等等。正如你所见,风险是首要优先级,因为25%高于20%。”

或者他们可能意味着:

> “安全(达到我们行业中标准水平的安全性)是我们的首要任务。一旦我们实施了足够的安全措施,我们就会专注于其他问题。”

如果你有完全诚实的安全声明的例子,比如“我们关心安全,因为我们需要你信任我们,因此它是我们的首要任务之一”,我会非常感兴趣。请在评论中分享!

## 安全性应该做到什么程度?

当我在2018年做那次演讲时,我还不清楚到底应该在何处划线。自那以后,我开始使用ISO 14971和ISO 27001这样的风险框架进行工作,现在我已经有了一些工具来帮助我处理这个问题。

一切始于一个评分机制:弄清楚我们需要保护的是什么,存在哪些风险,以及这些风险发生的可能性和严重程度如何。你将可能性和严重性相乘,为每个风险得出一个风险分数,然后将这些分数映射到低、中、高三个等级。

- 如果风险分数是低的,你可以安全地接受这个风险。
- 如果是中等,你应该考虑风险控制,除非有正当理由不这么做。
- 如果是高风险,你必须实施风险控制。

然后,一旦风险控制措施到位,验证它们是否真正减轻了风险,剩余风险是否现在变低或不存在。这样你就完成了。

听起来简单,但低、中、高的界限我们应该怎么划分呢?我总是把一些决策者聚在一起,给他们提供可能出错的情况的例子,然后请他们提出一个评分系统。接着询问他们愿意接受哪些类型的风险,同时考虑到如果应用了风险控制,产品或流程会是什么样子。

这个简单的评分系统包括风险矩阵、风险偏好/风险接受政策和风险清单。这是一个简单的工具,可以帮助你做出决策。

## 我们应该怎么说?

几十年来,全球都在以成熟的方式处理安全、质量和安全问题。让我们推广那些实际这么做的公司,而不是说这是他们的首要任务。这是一个没有意义的声明。

在我理想的世界里,公司会说:“我们维护着最先进的安全体系,因为没有客户的信任,我们作为公司就没有存在的权利。因此,这是我们工作中最重要的事情之一,我们投入了大量的精力。”这可能对大多数人来说听起来没有那么好,但这样说的公司肯定会给我留下深刻的印象。