下载本文的 PDF 版本 PDF

答案当然是 42

如果我们希望我们的网络足够难以 проникнуть,我们就必须提出正确的问题。

托马斯·瓦德洛,独立顾问

为什么安全如此困难?作为一名安全顾问,我很高兴人们有这种感觉,因为这种看法支付了我的抵押贷款。但是,构建坏人无法 проникнуть 的系统真的那么困难吗?

好吧,我刚刚给你扔了一个难题。实际上是两个。第一个是可爱的词语“无法 проникнуть”。一个很好的绝对词语,让人感觉你完全安全可靠(另外两个词语也给人类似的印象)。如果我们谈论的是你的网络的安全,或任何系统的安全,你告诉我你需要它是无法 проникнуть 的、安全的、可靠的,或任何类似的绝对概念,这表明有利可图。对我而言。

我不想听起来太愤世嫉俗,我当然也不想让人觉得这是一个骗局。我为我的客户提供了良好的价值,许多其他安全顾问和专业人士也是如此。我知道我为我的客户节省了金钱,并使他们更安全。但“更安全”不是“安全”,在客户和开发人员理解这种差异之前,安全对他们来说将仍然是一个困难且昂贵的命题。

困难在于人类对绝对事物的渴望。许多技术问题都基于绝对概念。飞机要么飞起来,要么飞不起来。网络路由器要么工作,要么不工作。方程式要么产生正确的答案,要么不产生正确的答案。

涉及人员的问题很少有这种明确性。这是真正理解安全作为技术专家或管理人员的第一个基本认识。安全是一个人的问题,而不仅仅是一个技术问题。

当我们设计网络路由器时,我们基本上是在解决逻辑和物理问题。我们可以为您的设备定义测试,并且可以完全重复这些测试,以便我们可以调试设备。如果我们有足够的测试,并且我们的设备通过了这些测试,那么我们的路由器就可以工作了。

防火墙等安全设备在物理上通常类似于网络路由器(实际上可能是同一设备的一部分),但好的测试更难开发。为什么?因为现在我们的测试必须考虑人员。为了准确反映真实世界,它们不会都是可重复的,而我们试图防御的人可能不会遵守我们的规则。

如果我们希望我们的网络足够难以 проникнуть,我们就必须提出正确的问题。对于许多人,即使是技术上很复杂的人,考虑网络安全的基础知识也归结为购买哪种防火墙的问题。但让我们退后一步,尝试从第一原理来看待这个问题。绝对事物行不通,所以我们必须问的第一个问题是:我们如何设计一个足够安全的网络?

思考“足够安全”这个短语应该很快让我们想知道,“对谁足够安全?”换句话说:谁在攻击我们的网络?

好吧,那是本文第一段中的第二个难题。还记得坏人吗?这个短语让人联想到电影中的罪犯弓着身子在电脑屏幕前,或者可能是 14 岁的社交障碍者在家庭地下室里。但事实上,他们可能是任何人。他们甚至可能是我们认识的人。而且很有可能他们是我们雇佣的人,并且可能信任的人。安全行业的一个真理是:如果安全问题涉及金钱,那就寻找内部人员。

在我的安全顾问工作中,我有机会研究过许多不同的网络安全系统,包括成功的和不成功的。我看到了各种组织如何保护其计算基础设施和专有信息。我与许多同行交谈过,他们也有类似的观点。纵观这一切,一个反复出现的主题很明确:对于大多数成功的入侵,要么障碍非常低,要么动机水平非常高。

这并不是说没有复杂而危险的 проникновение,或者攻击者没有使用所谓的“零日漏洞”(在防御者可以修补之前,尽早利用新发现的漏洞)。这并不是说防御良好的网络不会被 проникнуть。正如托马斯·杰斐逊所说,网络安全的代价是永恒的警惕,这仍然是正确的。但在很多情况下,要么是网络设计者让它足够容易,要么是攻击者真的非常想要它。

技能、动机、机会

考虑到以上所有情况,我们可能会做出这样的断言:如果攻击者有足够的技能、动机和机会,任何计算机系统都可能被 проникнуть。由此,保护我们网络的策略自然而然地分为两个主要目标

现在这些是技术专家可以接受和扩展的目标。此外,这些目标可以指导我们从微观到宏观层面的安全工作。

让我们更深入地分析我们的第一个目标,首先借助词典的帮助:技能被定义为“通过培训或经验获得或发展的熟练程度、能力或灵巧性”;动机是“唤起有机体采取行动以实现预期目标的心理特征”;机会是“有利或有利的环境或环境组合。”

技能。 攻击者如何变得更熟练地 проникнуть 网络?一种方法是通过实践。借助现成的软件,攻击者可以建立自己的测试网络并了解它们,直到找到他们可以利用的弱点。这需要相当高的技能和动机,因为找到一个好的漏洞可能需要很大的耐心。但是,通过将该漏洞打包在软件中并分发,更多的攻击者可以利用该缺陷,而无需足够聪明地找到它。

另一种方法是军事界所谓的情报。了解目标网络的设计。了解其受保护和监控的方式。了解运行它的人员。知识就是力量,如果你想打开坚固的东西,请使用电动工具。

因此,我们可以通过提出以下问题来分析我们断言的技能部分:我们如何最大限度地提高 проникнуть 我们的网络所需的技能量?我们如何最大限度地减少操作我们网络防御所需的技能量?我们如何阻止攻击者获取我们网络的知识?鉴于我们的网络信息不可避免地会暴露在 Internet 上,我们如何使这些知识对攻击者来说不太有用?我们如何知道我们正在遭受攻击?

通过回答这些问题,我们可以开始看到我们如何使用技术手段使我们的网络难以 проникнуть。是什么使防御难以 проникнуть?答案可能包括:良好的设计;该设计的良好实施;正确的配置;持续供应最新的补丁;以及多个冗余层。现在我们正在获得一些看起来像技术规范的东西。

你可以尝试向你正在考虑购买的设备制造商索要这些品质,但你也应该向他们提出一些其他重要问题:你如何向我证明你的设备具有良好的设计、良好的实施等?你的设计和实施多久由独立的第三方审核一次?你多久发布一次安全补丁?你是根据问题检测还是问题解决发布补丁?你的设备上次被攻破是什么时候,是如何完成的,你是如何发现的,以及你花了多长时间发布补丁?

动机。 是什么驱使某人攻击我们的网络?好吧,首先,与驱使几乎任何人做任何事情的原因相同——例如愤怒、贪婪、爱、恨、复仇,当然,还有每个人最喜欢的:金钱。再加上更多理性的原因,例如好奇心和挑战的刺激,我们将毫不费力地找到人们攻击我们的理由。

当然,动机是双向的。攻击者受自身欲望的驱动,但也可能因网络对待他们的方式而受到鼓励或阻止。用诱人的线索戏弄他们,他们会把它当作一场要赢的游戏。用失望和困惑来回应每一个挑战,也许他们会在别处寻找乐趣。

一些探索动机问题的问题是:哪些情况或资源导致人们想要攻击我们?我们在防御网络中的行动是增加还是减少了某人继续攻击的动机?什么会促使人们不攻击我们的网络?

中国古代将军孙子有一句名言:“善战者,能战于敌之庙算,而屈人之兵。”做到这一点的一种方法是创造一种潜在攻击者不知道你的网络的情况。如果他们从未想到要攻击你,并且没有任何东西打扰他们对你的幸福无知,那么他们永远不会打扰你。

这种做法称为隐蔽式安全,实际上确实有效——只要你保持隐蔽。问题就在这里。因为正如我们这些在 Google 上搜索过自己的人所知,在当今世界保持隐身可能非常困难。隐身当然没有坏处,但它还不够。你必须为它失败的那一天做好计划。

我曾经看过一位单口喜剧演员的表演,他的表演部分包括说服观众借给他一些私人物品,比如钱包或手提包,以某种无害的借口,只是为了当众翻遍里面的东西,以牺牲那个人为代价来获得笑声。他设法得到了一位女士的手提包,并开始往外掏东西,但当他发现的第一件东西原来是一把 .38 口径的警用手枪时,他非常明智而迅速地放回原处,合上手提包,把它还给了那位女士,然后继续进行下一个表演。

创建障碍,让潜在的入侵者相信继续入侵真的不明智,这是阻止某些攻击者的绝佳方法。告诉他们他们将被监控很好,但在某种程度上证明他们确实正在被监控甚至更好。当然,你可能会做得过火。反击入侵者虽然很诱人,但几乎总是一个非常糟糕的主意。为什么?好吧,除了法律和道德原因外,它很可能会实际上增加他们攻击你的动机。这变成了私人恩怨!

想象一下你的防御在攻击者看来是什么样的。事实上,你应该自己尝试一下,并获得第一手的经验。它们看起来像电子游戏吗,敦促玩家争取更高的分数?还是它们让你看起来冷酷、无情和严肃,没有幽默感,并且有一支由侦探和律师组成的大型团队,只是在等待有人愚蠢地踏入陷阱?

这些图像中哪一个会让你想再试一次?哪一个会让你想悄悄离开,永不回头?

机会。 我们希望最大限度地减少攻击者尝试 проникновение 的机会。机会是什么样的?它可能就像一个意外地留在暴露于 Internet 的网络端口上运行的程序一样简单。或者它可能是在窗户外可见的白板,或者是一份对网络设计过于诚实的白皮书。它甚至可能像一位让孩子在公司发放的笔记本电脑上玩游戏的管理人员那样间接。它可能是为现在已解散的项目设置的临时但被遗忘的无线集线器。它可能是一些众所周知的商业软件,但存在一个不太为人所知的缺陷。它可能是选择不当的加密算法,也可能是邮件室工作人员在离开时将备份磁带塞进了口袋。

这些是我们必须提出的评估机会的问题:我们是否知道我们网络的所有进出方式?我们如何确定我们真的知道所有这些方式?我们如何知道我们的网络是按照我们认为的方式构建的?我们是否关闭了所有不必要的进入我们网络的路径?我们如何知道我们已经成功关闭了它们?我们如何知道它们保持关闭状态?如果情况发生变化,我们该怎么办?如果以前值得信赖的软件中发现了新的漏洞?如果该软件部署在 1,000 台服务器上?

我记得向一位客户报告详细的安全审计结果。我开始说:“你们在总部办公室的防火墙还不错,但你们在瑞士的防火墙太糟糕了!”总裁看着 IT 人员。IT 人员互相看着对方,最后有人说:“瑞士有什么防火墙?”事实证明,该公司在一年前与另一家公司合并并连接了他们的网络。没有人注意到存在一个从未被锁定的完全开放的 Internet 连接。

测量你的网络是不够的。你必须尽可能频繁地持续测量它,以确保没有任何变化。Nessus 等工具可以免费使用来做到这一点,但很少有人有效地利用它们。如果你有能力创建自定义工具,那就更好了,因为公共工具也对你的攻击者可用,但私有工具只有你和你的团队知道。

这使我们想到了所有话题中最困难的话题:内部人员。考虑这一点很痛苦,但最有技能、动机和机会攻击你网络的人通常为你工作,并且对他们的工作或生活中的某些方面感到不满。一些有用的问题是:你信任谁,信任多少?那些人是否信任其他人,让我们不知道他们有访问权限?如果我们发现有人滥用这种信任,我们该如何检测?我们如何限制滥用这种信任造成的损害?我们是否有任何现任或前任员工可能会对我们的安全造成问题?我们自己员工中谁对我们的网络了解得足够多以至于很危险?

以一种不会疏远这些内部人员的方式处理内部攻击的可能性是很棘手的,但这是可以做到的。一种方法是将具有关键访问权限的人员限制在尽可能少的数量,然后坦诚地对待这些人,并征求他们的帮助。一种方法是让他们互相监督。这听起来很苛刻,但它在许多敏感情况下都使用。例如,军方采用双人规则或禁止单人区域方法,其中某些职能必须由两名授权人员并肩执行。

解决这个问题的最佳方法可能是让那些可能对你的安全造成问题的人保持快乐、投入和意识到潜在的麻烦——以及违规的后果。利用他们的创造力和善意来改善你的安全。

将所有内容联系在一起

我们的第二个主要目标,即决定在任何给定的安全措施上投入多少精力,表明没有技术项目生活在真空中。任何技术决策的政治和财务影响通常对实际构建的内容产生重大影响。因此,对于任何特定的安全措施,网络设计人员都必须考虑以下问题:我们愿意为这项安全措施支付多少钱?我们的用户群会接受我们认为必要的安全措施吗?他们相信这些措施是必要的吗?安全性的提高是否证明成本是合理的?我们如何知道我们的安全措施真的在起作用?

安全工作的一个奇怪方面是,如果它成功了,就很难证明其成本是合理的。如果你的汽车上周没有被盗,并且你有一个方向盘锁,那么没有被盗是因为锁,还是因为没有人试图偷它?除非我们有办法衡量攻击尝试或考虑的次数,否则很难知道。衡量系统并知道它是否在工作,以及我们是否真的在遭受攻击,有助于我们了解我们是否物有所值。

考虑以下问题

哪些指标告诉我们已经尝试过攻击?

攻击的特征是什么?

提出这些问题可能是一个痛苦的过程,但提出这些问题的时间是在前端,以便我们可以考虑它们的答案并相应地制定我们的计划。

鉴于所有这些复杂的问题,我们可能会想寻求外部帮助来帮助理清这些问题。关于安全顾问,我们应该问一些问题:他们是否在打 FUD(恐惧、不确定性和怀疑)牌?他们是否提供保证或确定性?(如果是,请仔细检查他们的资格。)我们是否获得了对我们网络的真实分析,或者只是现成扫描工具的(可能经过重新格式化的)输出?他们是否提出要解决他们正在诊断的问题?如果是这样,我们如何知道他们已经告诉我们他们发现的所有问题?也许他们只是列出了他们可以解决的问题...

为什么安全很难?好吧,用阿尔伯特·爱因斯坦的话来说,问题通常保持不变,但答案一直在变化。

托马斯·A·瓦德洛是网络和计算机安全顾问,《网络安全流程》的作者

acmqueue

最初发表于 Queue 第 3 卷,第 5 期
数字图书馆 中评论本文





更多相关文章

Jinnan Guo, Peter Pietzuch, Andrew Paverd, Kapil Vaswani - 使用机密联邦学习的可信 AI
安全性、隐私性、问责制、透明度和公平性原则是现代 AI 法规的基石。经典的 FL 设计高度强调安全性和隐私性,但以牺牲透明度和问责制为代价。CFL 通过将 FL 与 TEE 和承诺相结合,弥补了这一差距。此外,CFL 还带来了其他理想的安全属性,例如基于代码的访问控制、模型机密性和推理期间的模型保护。机密计算的最新进展,例如机密容器和机密 GPU,意味着现有的 FL 框架可以无缝扩展,以低开销支持 CFL。


Raluca Ada Popa - 机密计算还是密码计算?
通过 MPC/同态加密与硬件 enclave 进行安全计算,提出了涉及部署、安全性和性能的权衡。关于性能,这在很大程度上取决于您想到的工作负载。对于简单的求和、低阶多项式或简单的机器学习任务等简单工作负载,这两种方法都可以在实践中随时使用,但对于复杂的 SQL 分析或训练大型机器学习模型等丰富的计算,目前只有硬件 enclave 方法足够实用,可以用于许多现实世界的部署场景。


Matthew A. Johnson, Stavros Volos, Ken Gordon, Sean T. Allen, Christoph M. Wintersteiger, Sylvan Clebsch, John Starks, Manuel Costa - 机密容器组
此处提供的实验表明,Parma(在 Azure 容器实例上驱动机密容器的架构)增加的额外性能开销不到底层 TEE 增加的开销的百分之一。重要的是,Parma 确保了容器组所有可达状态的安全不变性,并以证明报告为根基。这允许外部第三方与容器安全地通信,从而实现各种需要机密访问安全数据的容器化工作流程。公司获得了在云中运行其最机密工作流程的优势,而无需在其安全要求上妥协。


Charles Garcia-Tobin, Mark Knight - 使用 Arm CCA 提升安全性
机密计算具有通过将监管系统从 TCB 中移除来提高通用计算平台安全性的巨大潜力,从而减小了 TCB 的大小、攻击面以及安全架构师必须考虑的攻击向量。机密计算需要在平台硬件和软件方面进行创新,但这些创新有可能增强对计算的信任,尤其是在由第三方拥有或控制的设备上。机密计算的早期消费者将需要自行决定他们选择信任的平台。





© 保留所有权利。

© . All rights reserved.