默默无闻的有效作用

信息安全 职业教育 朦胧
2021-08-27 16:38:12

通过默默无闻的安全是一件坏事,这是信息安全中公认的智慧和教条。告诉人们为什么要避免某些事情可能会更加困难,因为没有明确的界限来描述您试图禁止的明显有效的策略。

例如 -在非默认端口上运行 ssh端口敲门都被建议作为提高 ssh 安全性的方法,并且两者都被批评为由于晦涩而无效的安全性。

在这种特殊情况下,两种解决方案都会降低系统对自动化尝试的可见性。这对提高 ssh 作为工具的有效性或减少对其他 ssh 安全措施的需求没有任何帮助。它确实提供了一种将严重尝试与自动路人区分开来的方法,从而提高了系统的可管理性。

  • 除了可管理性/有效性之外,还有哪些区别描述了有效/无效使用模糊性之间的界限?
  • 哪些类比描述了对晦涩的有效使用或区分这种用法和无效使用?
  • 哪些类比显然支持默默无闻的有效性,为什么?
  • 还有哪些具体的实现是有效的默默无闻角色的例子?
3个回答

有趣的问题。我对此的想法是,在许多情况下,模糊信息有助于安全,因为它可以迫使攻击者产生更多可以检测到的“噪音”。

默默无闻是“坏事”的地方可能是防守者依靠这种默默无闻作为关键控制,如果没有这种默默无闻,控制就会失败。

因此,除了您在上面给出的那个之外,有效使用模糊性可能是从面向 Internet 的服务中删除软件名称和版本信息。这样做的好处是:

  • 如果攻击者想查明是否正在使用易受攻击的服务版本,他们将不得不进行多次查询(例如,查找默认文件,或者可能测试对某些查询的计时响应)。与返回版本的单个请求相比,此流量更有可能出现在 IDS 日志中。此外,指纹识别协议并不是针对所有服务开发的,因此它实际上可能会大大减慢攻击者的速度
  • 另一个好处是版本号不会被Shodan 之类的服务索引。这可能与针对特定服务版本的所有实例执行自动攻击的情况相关(例如,已发现该版本的 0 天)。将其隐藏在横幅中,实际上可以防止给定的服务实例成为该攻击的牺牲品。

也就是说,它不应该是唯一的防线。在上面的示例中,服务仍应进行强化和修补以帮助维护其安全性。

我认为默默无闻失败的地方是它所依赖的地方。诸如未更改的硬编码密码、使用“本地加密”混淆秘密或基于没有人会攻击它的想法来决定是否修补服务的风险决定。因此,没有人会发现/知道/攻击这种情况的想法通常会失败,可能是因为防御者限制了他们对谁是有效攻击者的概念。可以说,一个没有动机的外部攻击者可能不会花时间来解开一个模糊的控制,但如果攻击者结果是一个心怀不满的前雇员,那么硬编码的密码可能会导致一些严重的问题。

你错误地描述了传统智慧。传统智慧并没有说默默无闻是坏事。它说通过默默无闻来依赖安全性是不好的:它通常会导致系统脆弱或不安全。请注意区别。默默无闻可能会增加一些额外的安全性,但你不应该依赖它,它不应该是你的主要防御。您应该准备好隐匿处可能会被刺穿,并相信您有足够的防御能力来处理这种情况。

这里的一个重要概念是Kerckhoff 原理早在 1800 年代,Kerckhoff 就已经阐明了为什么我们应该通过默默无闻对安全性持怀疑态度,以及如何在密码学的适当和不适当使用之间划清界限。关于 Kerckhoff 原理Wikipedia 文章非常好,也是一个很好的起点。

这里有几点需要思考:

  • 正如维基百科的文章所说,“为确保系统安全而必须保留的秘密越少越简单,维护系统安全就越容易。” 因此,在其他条件相同的情况下,我们需要保密的事情越少,就越容易保护系统。

  • 一般来说,将系统中使用的设计或算法对专门的攻击者保密的希望很小。因此,任何系统的安全性依赖于其设计的保密性,从长远来看,注定要失败——从短期来看,它正在承担不必要的风险。

  • 最糟糕的秘密是一旦泄露或泄露给未经授权的各方就无法更改的秘密。最好的秘密是在怀疑泄露时可以轻松更改的秘密。构建一个安全依赖于对系统设计保密的系统是保密的最糟糕的用途之一,因为一旦系统部署,如果它的秘密泄露,就很难改变(你必须替换所有部署的副本具有全新实现的系统,通常非常昂贵)。构建一个安全性依赖于每个用户选择随机密码短语的系统会更好,因为如果密码泄露(例如,用户将密码输入网络钓鱼站点然后说“糟糕!”),更改相对容易用户的密码,不会给他人带来不便。

  • 或者,正如 Kerckhoff 在 1800 年代所写的那样,密码系统的设计不能被要求保密,它必须能够落入敌人手中而不会带来不便。这基本上是对我之前观点的重述,在特定领域。

由于这些原因,设计良好的系统通常会尽量减少它们对秘密的依赖程度。当需要秘密时,通常会将它们设计为将所有需要的秘密集中到一个加密密钥或密码中,如果被泄露,可以很容易地更改。

通过默默无闻的安全性是不好的部分。默默无闻可以提高安全性,但您不能仅依靠默默无闻来提供安全性。

绝对的咒语总是有害的。;) 理解咒语背后的原因和所涉及的权衡是很重要的。

例如,在跑步时将钥匙藏在屋外是一种隐蔽的安全措施,但如果您打算在 30 分钟内回来,这可能是可以接受的风险(而且不是高风险目标?)。

“从不使用 goto”也可以这样说。有时 goto 是在某些情况下编写清晰代码的最佳方式。作为一名经验丰富的专业人士,您需要了解指南的原因,以便了解权衡取舍。