最聪明的人无法破坏的服务器基础设施从根本上来说是可能的吗?

信息安全 服务器
2021-08-13 01:43:57

TL;博士:

也许我的问题的细节太过分了,但我想确保这个问题很清楚,因为这个话题似乎很广泛。但在这里。“最聪明”这个词的基本意思是,而不是字面意思。

最聪明的人无法破坏的服务器基础设施从根本上来说是可能的吗?

背景:

我读过有关大型银行(或作弊网站)的服务器被入侵的文章,在一篇基于对对此案感兴趣的互联网安全公司的采访中,一位专家声称存在高技能的犯罪组织,尤其是在中国和俄罗斯,他们拥有大量资源、工具和世界上一些“最好的”黑客,而这位专家声称“地球上没有任何系统”(当然,连接到网络)是他们无法做到的。 t 妥协于他们可用的资源。

(Web-Server)信息安全就像国际象棋:

我不是国际象棋棋手,也不是信息安全专家。专家,但我是一名编写服务器软件的程序员,我对此很感兴趣。忽略任何可能使我的方案无效的国际象棋因素,例如可能先下棋的人具有优势或类似的东西,将信息安全想象成世界上两个最好的国际象棋棋手之间的国际象棋游戏。

经典: 如果你和我玩国际象棋游戏,在国际象棋游戏方面拥有更高技能、知识和智慧的人将获胜。

编程场景 1: 或者,如果我们以数字方式玩游戏,那么编写最聪明的国际象棋软件的人可能会赢。

编程场景 2: 或者,这是关键,也许我们俩都擅长国际象棋和编程,以至于我们都编写了下棋的计算机程序,以至于我们的程序都无法获胜,并且游戏以僵局。

考虑一个服务器基础设施,例如银行服务器或应用程序服务器,它必须与 Web 上的客户端通信,但不得允许犯罪方侵入其数据存储。

  • 该服务器基础架构的安全性可能类似于编程场景 1,这意味着无论如何,谁拥有最好的软件和信息安全知识,例如发明安全策略的人,总是有机会突破服务器基础设施的防御,无论多么安全。从根本上说,没有完美的防御是不可能的。

  • 或者它可以像编程场景 2一样,从根本上可以开发一个服务器基础架构,该基础架构使用一种(从根本上)无法被更智能的程序击败的安全策略。完美的防御基本上是可能的。

问题

那么是哪一个呢?

4个回答

“从根本上说,没有完美的防御是不可能的。”

在国际象棋中,您有 64 个方格、2 个人下棋,以及一套不变的、众所周知的规则。

在服务器基础设施中,有数不清的资产和接近这些资产的方法,未知数量的玩家,以及不断变化的规则,玩家故意试图弯曲、破坏或绕过规则。

考虑两个可以证明我观点的元素:零日巧克力棒

首先,零日在游戏进行时改变了规则。虽然一方获得了这一元素的好处,但另一方并没有意识到这一优势,并且可能仍然无法应对这些攻击,即使它们最终被知晓。每个零日都是一条不均衡地应用于游戏的新规则。即使可以设计并完美应用“完美的安全策略”,零日也可能意味着该策略建立在防御方可能永远不知道的未知弱点之上。

其次,巧克力棒在破坏基础设施安全方面比任何其他元素都做得更多。我的意思是,人们可能会被贿赂或诱使“换边”,并为对方提供优势,有时甚至是巧克力棒(研究表明)。网络钓鱼、贿赂、数据泄露等都是游戏中人性的一部分,技术无法完全解释。只要基础设施中有一个拥有权力的人,系统就会一直存在这个弱点。

该怎么办?

在历史上,我们看到过多次大规模的防御尝试被一些小而无法预料的事情(例如,中国的长城大门打开了一个作为蒙古人双重间谍的妃子)的情况。作为防御者,目标不是建立完美的防御,而是设计一个弹性和透明的基础设施,可以快速看到攻击并完全响应。不是更高的墙壁,而是更警觉的民兵。不是不可动摇的基础,而是可替换的架构。

安全可以证明,但你必须了解证明了什么

https://sel4.systems/FAQ/proof.pml

我们在高级自然语言中的证明语句如下:

seL4 微内核的二进制代码正确地实现了其抽象规范中描述的行为,仅此而已。此外,规范和 seL4 二进制文件满足称为完整性和机密性的经典安全属性。

完整性是指未经许可不得更改数据,机密性是指未经许可不得读取数据。

我们的证明甚至更进一步,表明未经许可无法推断数据——在一定程度上。已知存在所谓的信息侧通道(也称为隐蔽通道)。该证明仅涵盖正式模型中存在的那些信息推理通道:机密性证明涵盖了所有内核存储通道,但不包括必须凭经验处理的时序通道。

那么,为什么不是每个人都只使用 sel4 呢?(目前您最有可能遇到它的地方是在某些 Apple 设备的 TrustZone 处理器上)。

答案是证明只涵盖内核,而不是您可能想要运行的任何用户空间软件。例如,没有经过验证的安全网络服务器,更不用说您可能希望在其上运行的应用程序的语言实现了。而且您还必须证明您的 Web 应用程序是安全的。开发这些东西需要非常大的投资,没有大公司有兴趣投资。

高安全性系统通常在密钥和登录管理点受到攻击

如果您的管理员错误地将他的密码留在了 pastebin 上,那么系统的安全性并不重要。就在前几天,我们看到一名 TSA 员工在 Twitter 上发布了一张 TSA 行李锁(物理)万能钥匙的照片,所以这些现在都被泄露了。弱密码、可猜测密码、不安全存储的密码、错误的硬件安全令牌、复制的指纹:所有这些都是可能的攻击媒介。

没有人找到任何特别的理由相信他们已经找到了这样一个系统。

你提到了国际象棋,这是一个在 8x8 网格上的好游戏。考虑到现代服务器比这稍微复杂一些。让我们改用 65536x65536 的棋盘,让它更逼真。此外,在国际象棋中,你玩得越多,可能的位置就越少。相反,一个更现实的系统就像围棋。你玩得越多,这个位置就越能得到纠缠。我会注意到围棋游戏使我们在国际象棋计算机上的工作显得微不足道。

大约在 1970 年左右,康威试图打破围棋游戏。他发现棋盘似乎经常被分成子游戏,每个子游戏都在其空间中发挥作用,最终获胜。他发现他们一起工作的方式非常复杂。结果,他发现了超现实数,这是一种比我们在物理学中使用的实数更庞大的数字方案。不是开玩笑,实际上预测全球天气比通过分而治之在围棋中获胜更容易。这里能有一个“赢”的案例吗?也许。祝你好运找到它。唯一确定的方法是一次性计算整个 65536x65536 板。

凯文·米特尼克 (Kevin Mitnick) 在他的一本书中评论道:

唯一真正安全的计算机是与互联网断开连接、断电、拔掉电源、存放在混凝土掩体中、受到武装警卫的计算机。即便如此,我也会时不时地检查一下。”

这样的系统可能存在,但我们可能找不到

我们有许多用于安全的算法。其中一些可能是正确的。具体来说,其中一些可能难以破解。事实上,我们知道有些是完全不可能破解的(一次性完成)。问题在于实施

安全与谁更聪明无关。安全是关于防御者的谨慎与攻击者的智慧和创造力。如果防守者能够非常仔细地遵循算法,他们就不必非常出色。完美的防守与完美的进攻导致了安全领域的防守胜利。

问题是服务器通常是复杂的机器。您拥有操作系统和程序的奇迹,以及不同的协议和编程语言和 AHH。在这样的环境中几乎不可能拥有完美的安全性。

另一方面,如果一个系统足够简单,人类可能会使其完美。例如,我有一条消息 $M$,编码为从 1 到 6 的数字。我现在将掷骰子,这将是密钥 $K$,并将添加 $M$ 和 $K$ 模块化 $6$ ,得到密文$C$。

密文为 5 美元。信息是什么?

这个例子非常简单,我可以合理地考虑所有可能性。另一方面,服务器相当复杂。

我们可以从中得到什么建议。保持简单,愚蠢。(KISS 原则。)尽管制作完美的服务器可能超出了我们人类的能力范围,但服务器和我们的算法越简单越好。记录您的代码,使其易于理解,使其简单。每一行代码都有一个原因。使用简单的操作系统(注意:不要将简单性与易用性混为一谈。想想 Arch Linux,而不是 iOS。)只保留最少的程序。选择一种定义很小、没有奇怪规则之类的编程语言(我在看你,javascript。)虽然这不会让它变得完美,但它会让你更安全。