为什么通过默默无闻的安全性是一个坏主意?[关闭]


72

我最近遇到了一个系统,其中所有数据库连接都由以各种方式(包括base 64编码,md5sums和各种其他技术)掩盖的例程进行管理。

就是我,还是这太过分了?有哪些选择?


1
真的吗 老实说,您将坐在这里告诉我和全世界,默默无闻是个坏主意?这不是一个坏主意,也不应该成为防止未授权访问的总计划。一项出色的安全计划应要求其晦涩难懂,加强密码,加密并在发现后关闭后门。
杰夫

1
/ etc / shadow晦涩难懂地提供了更多的安全性。在/ etc / shadow之前,所有用户都可以读取/ etc / passwd中的哈希,这使得它们容易受到彩虹表攻击。将它们放在只能由root读取的/ etc / shadow中,可以掩盖来自非特权用户的哈希值。
爱丽丝·旺德

2
强制执行访问控制通常被认为是“晦涩”(如果正确完成,密码哈希也不是)。
eckes 2015年

Answers:


113

默默无闻的安全将把您的钱埋在树下。唯一使它安全的是没人知道它的存在。真正的安全性就是将其置于锁或密码锁的保护之下,例如保险箱。您可以将保险箱放在街角,因为确保它安全的原因是只有一个人可以进入其中。

如下面的评论中@ ThomasPadron-McCarty所述:

如果有人发现了密码,则只需更改密码即可,这很容易。如果有人找到了位置,则需要将钱挖出来并将其移到其他地方,这需要更多的工作。而且,如果您在程序中使用默默无闻的安全性,则必须重写该程序。


15
下一个问题是:将位置保密和将密码保密有什么区别?
艾伯特

4
@Albert的区别在于,在没有知识的情况下找到位置/晦涩的可能性(高)与在没有知识的情况下找到密码的可能性(低)之间的大小顺序有关。
Rex M

27
另一个答案:如果有人发现了密码,则可以更改密码,这很容易。如果有人找到了位置,则需要将钱挖出来并将其移到其他地方,这需要更多的工作。而且,如果您在程序中通过默默使用安全性,则必须重新编写程序...
Thomas Padron-McCarthy

3
好答案。你把钱埋在哪棵树下?
克里斯·巴伦斯

31
如果我在保险箱中将钱埋在树下怎么办?
MathieuPagé09年

37

可以通过隐晦的安全性来说是不好的,因为它通常暗示着隐性被用作主要的安全手段。直到发现它为止,隐匿性很好,但是一旦有人解决了您的特定隐晦性,您的系统就会再次变得脆弱。鉴于攻击者的坚持不懈,这完全没有安全性。

绝不能将晦涩之处用作适当安全技术的替代方法。

另一种主题是将模糊处理作为隐藏源代码以防止复制的一种手段。我在这个话题上分歧很大。我能理解您为什么想要这样做,就我个人而言,我从来没有遇到过这样的情况。


2
+1:可以完全公开用于加密和适当密钥管理的代码。阅读所需的所有代码,您将永远不会得到密钥。如果您付给您的亲朋好友足够多的钱,那么即使是社会工程学也不会透露关键。
S.Lott

15

通过隐蔽性实现安全性是一个有趣的话题。(正确地)它是替代有效安全性的对象。密码学的典型原理是消息未知,但内容未知。加密算法通常被广泛发布,并由数学家进行分析,过一段时间后,人们对它们的有效性有了一定的信心,但永远不能保证它们的有效性。

有些人隐藏了他们的密码算法,但这被认为是一种危险的做法,因为这样的算法就没有经过同样的审查。只有像NSA这样有大量预算和数学人员的组织,才能摆脱这种方法。

近年来,最有趣的发展之一就是隐匿的风险,即这种做法是将消息隐藏在图像,声音文件或其他某种媒介中。隐写分析中的最大问题是识别消息是否存在,从而使信息变得晦涩难懂。

去年,我遇到一个故事,说研究人员计算了隐秘通道的容量,但真正有趣的是:

以这种方式研究隐身通道会导致一些与直觉相反的结果:例如,在某些情况下,寻找隐藏数据的算法数量加倍可以增加隐秘通道的容量。

换句话说,用于识别消息的算法越多,其有效性就越差,这与通常通过模糊性对安全性提出的批评相反。

有趣的东西。


如果您是生活在阴影中的犯罪或恐怖组织,则通过隐匿性(隐写术)进行安全保护非常有用。但是,如果您不生活在阴影中,那么最好的选择就是适当的安全技术。
yfeldblum

10
“犯罪或恐怖分子”有点哲学意义。您是否包括Huguenots,苏联的萨米萨达出版商和伊朗同性恋者?
Brent.Longborough,

12

这个主意不好的主要原因是它不能解决潜在的问题,而只是试图隐藏它们。迟早会发现问题。

另外,额外的加密将产生额外的开销。

最后,过度的模糊(如使用校验和)使维护成为噩梦。

更好的安全性替代方法是消除代码中的潜在弱点,例如强制输入以防止注入攻击。


是的,它是代码完整性检查技术,但是它用于加密数据库连接的某些方面。
Jrgns

根据数据库的命中频率,增加一些额外的加密/解密步骤可能会产生巨大的开销。
z-

但是,如果它用于获取额外的敏感信息,那么这种额外的安全措施是可以理解的。您绝对不希望在任何网络上以明文广播SSN。
z-

但是,那么...加密和加密之间是有区别的,那么加密实际上是在做什么?
z-

7

从安全漏洞中恢复的能力是一个因素。如果有人发现您的密码,只需重设即可。但是,如果有人发现您的计划晦涩难懂,您就会被水淹。


6

所有这些人都同意,默默无闻不是安全,而是为自己付出时间。话虽如此,但实施一个体面的安全系统然后添加一层额外的模糊性仍然有用。可以说,明天有人在ssh服务中发现无与伦比的裂缝/漏洞,无法立即进行修补。

通常我已经在内部实现了……所有面向公众的服务器仅公开所需的端口(http / https),仅此而已。然后,一台面向公众的服务器将通过一些晦涩的高编号端口将ssh暴露给互联网,并通过端口扫描触发器设置来阻止任何试图找到它的IP。

默默无闻在安全领域中占有一席之地,但并非作为第一道和最后一道防线。在上面的示例中,我没有对ssh进行任何脚本/机器人攻击,因为他们不想花时间搜索非标准的ssh服务端口,如果这样做,他们不太可能在另一层ssh之前找到它。安全介入并切断它们。


分布式扫描可能会打乱您的视线。如果我通过TOR扫描,则只能用一台计算机扫描您的SSH端口。
疯子实验家

而且他可以轻松地将TOR网络列入黑名单。如果您购买代理,它们可能将位于同一子网中,而他可能会限制该子网。这些障碍并非没有意义。
Eric Muyser

@EricMuyser对于只有美国市场的客户,我最终只将ARIN列入白名单。对于除0day机器人以外的所有事物,这都是一个相当有效的策略。
大卫

默默无闻可能是阻止僵尸程序的绝佳工具。到目前为止,在许多安全设置中,它们是您最大的担忧。如今,有许多机器人在利用诸如Wordpress之类的流行软件中的安全漏洞,并试图入侵尽可能多的站点。
盖尔韦勒

4

所有可用的安全形式实际上都是默默无闻的安全形式。每种方法都增加了复杂性并提供了更好的安全性,但是它们都依靠某种算法和一个或多个密钥来还原加密的数据。多数人称其为“通过模糊实现安全”,这是有人选择了最简单,最容易破解的算法之一。

诸如字符转换之类的算法易于实现且易于破解,因此这是一个不好的主意。它可能总比没有好,但是最多只能阻止对数据的随意浏览,而这是不容易阅读的。

Internet上有出色的资源,您可以用来教育自己所有可用的加密方法以及它们的优缺点。


4

安全性就是根据人们所知道的,他们是谁或拥有的财产来允许他们进入或拒绝他们。目前,生物特征识别技术不善于找到自己的身份,并且总是存在问题(针对发生严重事故的人的指纹读取器,伪造的指纹等)。因此,实际上,很多安全性都是关于混淆某些东西。

良好的安全性就是将您必须保密的东西降至最低。如果您拥有正确加密的AES通道,则可以让坏人看到除密码以外的所有内容,从而确保您的安全。这意味着您可以攻击的区域要小得多,并且可以专注于保护密码。(不是那么简单。)

为此,您必须对除密码之外的所有内容都充满信心。这通常意味着使用许多专家研究过的行业标准密码。任何人都可以创建自己无法破解的密码,但并不是每个人都可以使Bruce Schneier无法破解。由于完全缺乏密码安全性的理论基础,因此密码的安全性是由许多非常聪明和知识渊博的人尝试提出攻击来确定的,即使他们不切实际(对密码的攻击总会变得更好) ,再也不差)。这意味着加密算法需要广为人知。我对Advanced Encryption Standard(高级加密标准)非常有信心,而对于Joe编写并混淆的专有算法几乎没有信心。

但是,加密算法的实现存在问题。容易无意间留下漏洞,可以找到钥匙或进行其他恶作剧。它发生在PGP的备用签名字段中,以及在Debian Linux上实现的SSL的弱点。OpenBSD甚至发生了这种情况,它可能是最容易获得的最安全的操作系统(我认为十年来最多有两个漏洞利用)。因此,这些工作应该由信誉良好的公司来完成,如果实现是开源的,我会感觉更好。(封闭源代码不会阻止坚定的攻击者,但是这会使随机的好人更难找到要封闭的漏洞。)

因此,如果我想要安全性,我会尝试使我的系统尽可能可靠,这意味着除了密码外,其他系统都应尽可能开放。

在已经很安全的系统上通过模糊处理将安全性分层可能会有所帮助,但是,如果系统是安全的,则没有必要,如果不安全,最好的办法就是使其安全。将晦涩难懂的事物称为不太受欢迎的“替代医学”形式-它不太可能有太大帮助,虽然它本身不太可能造成太大伤害,但这可能会使患者不太可能去看合格的医生或计算机安全专家。

最后,我想为Bruce Schneier的博客制作一个完全不请自来且毫无兴趣的插件,无非是感兴趣的读者。我从中学到了很多有关安全性的知识。


3

评估,测试或改进安全产品的最佳方法之一是让庞大,精明的同仁小组对其进行改进。

依靠其安全性而成为“黑匣子”的产品无法享受这种测试的好处。当然,成为“黑匣子”总是会引起人们怀疑(通常是有道理的),他们无论如何都不会经受这种审查。


“评估,测试或改进安全产品的最好方法之一是让庞大,精明的同仁小组对其进行改进。” -同意 因此,显然,您应该在此处发布数据库详细信息以及所有相关例程。让我们在您的数据库上“播放”,我们将告诉您它的安全性。:)
abelenky

@abelenky:如果我是“完全安全的数据库系统”的软件的发明者/所有者,那么我很乐意将其开发出来,作为一个潜在的用户,我希望它即使在所有情况下都是安全的我的架构已发布。
Brent.Longborough

3

我曾在一种情况下辩称,密码保护实际上是默默无闻的安全措施。我能想到的唯一的安全性不是某种形式的生物统计安全性。

除了一点点语义和选择之外,在需要真正安全性的任何情况下,STO(通过模糊性实现安全性)显然都是不好的。但是,在某些情况下,这并不重要。我经常对文本文件进行XOR填充,我不希望任何人阅读。但是我真的不在乎他们是否这样做,我只是希望不要阅读它。在这种情况下,这并不重要,并且XOR焊盘是易于发现STO的完美示例。


是的,我一直想知道我自己有什么区别。
Rimian 2010年

2

几乎从来不是一个好主意。可以这么说,不系安全带开车是个好主意吗?当然,您可以找到一些合适的情况,但是由于经验而引起的痛苦似乎是显而易见的。


这更像是用纸板安全带驾驶。乍一看看上去很安全,但没有提供任何真正的保护。
格雷格,

纸板安全带覆盖着玻璃碎片。即使没有事故,您仍然会感到痛苦。
EBGreen

没有正确的隐喻。更像是在没有安全带的情况下以疯狂的速度行驶,沿着难以找到的后方道路行驶,希望没人能发现后方道路。
S.Lott

1

弱加密只会阻止动机最弱的黑客,因此它并不是没有价值的,它也不是很有价值,尤其是在可以使用诸如AES之类的强加密的情况下。

默默无闻的安全性是基于这样的假设,即您很聪明并且用户很愚蠢。如果该假设是基于傲慢而不是经验数据,那么您的用户和黑客将确定如何调用隐藏方法,打开未链接的页面,反编译并从.dll中提取纯文本密码,等等。

就是说,向用户提供全面的元数据不是一个好主意,并且只要您以加密,授权,身份验证和所有其他安全原则进行备份,遮盖是完全有效的技术。



1

我要补充的一点尚未提到,那就是互联网具有令人难以置信的通过模糊性破坏安全性的功能。

正如一次又一次地表明的那样,如果您唯一的辩护是“没人知道后门/错误/漏洞利用存在”,那么只需一个人偶然发现它,几分钟之内,数百人将知道。第二天,几乎每个想知道的人都会。哎哟。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.