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

我最近遇到一个系统,所有的数据库连接都是以各种方式遮蔽的例程来pipe理的,包括base64编码,md5sums和其他各种技术。

这只是我,还是这个矫枉过正? 有什么select?

通过默默无闻的安全将埋葬你的钱在一棵树下。 唯一让它安全的是没有人知道它在那里。 真正的安全是把它放在一个锁或组合,比如在一个安全的地方。 你可以把保险柜放在街angular,因为保险箱的安全是除了你之外没有人能进去。

正如@ ThomasPadron-McCarty在下面的评论中提到的那样:

如果有人发现密码,您可以更改密码,这很容易。 如果有人发现这个位置,你需要把钱挖到别的地方去,这样做更有用。 如果你在程序中使用默默无闻的安全措施,你将不得不重写程序。

通过默默无闻的安全可以说是不好的,因为它往往意味着默默无闻被用作主要的安全手段。 在被发现之前,朦胧是没有问题的,但是一旦有人找出了你的隐瞒,那么你的系统又会变得脆弱。 鉴于攻击者的持续存在,这相当于没有任何安全性。

永远不应该使用晦涩的手段来替代适当的安全技术。

隐藏作为隐藏源代码以防止复制的手段是另一个主题。 我对这个话题颇有分歧。 我可以理解你为什么希望这样做,我个人从来没有遇到过这样的情况。

通过默默无闻的安全是一个有趣的话题。 作为有效的安全措施的替代品(正确的)是被诽谤的。 密码学中的一个典型原理是消息是未知的,但内容不是。 encryptionalgorithm通常被广泛公布,由math家进行分析,一段时间后,它们的有效性就形成了一些信心,但从来没有保证它们是有效的。

有些人隐藏他们的密码algorithm,但这被认为是一种危险的做法,因为那样的algorithm没有经过相同的审查。 只有那些拥有大量预算的国家安全局和math家的工作人员才能摆脱这种方式。

近年来更有趣的发展之一是隐写术的风险,这是隐藏在图像,声音文件或其他媒体信息的做法。 隐写分析中最大的问题是确定是否有消息存在,从而使这种安全性变得模糊。

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

以这种方式研究隐秘信道导致了一些反直觉的结果:例如,在某些情况下,寻找隐藏数据的algorithm数量翻倍可以增加隐写信道的容量。

换句话说,用来识别消息的algorithm越多,其效果就越差,这与通过默默无闻的安全性的正常批评背道而驰。

有趣的东西。

这是一个坏主意的主要原因是它不固定的基本问题,只是试图隐藏它们。 迟早会发现问题。

另外,额外的encryption将会产生额外的开销。

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

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

一个因素是从安全漏洞中恢复的能力。 如果有人发现你的密码,只需重置它。 但是如果有人发现你的晦涩难懂的计划,你会感到困惑。

所有这些人同意使用默默无闻,不是安全,它购买自己的时间。 这就是说有一个体面的安全系统实施,然后添加一个额外的模糊层仍然是有用的。 可以说,明天有人会发现无法打补丁的ssh服务无法打补丁,无法立即修补。

作为一个规则,我已经在内部实施…所有面向公众的服务器只公开所需的端口(HTTP / HTTPS),仅此而已。 一个面向公众的服务器然后将ssh暴露在互联网上的一些模糊的高编号端口和端口扫描触发设置,以阻止任何IP的尝试find它。

默默无闻在安全的世界中占有一席之地,而不是第一道防线和最后一道防线。 在上面的例子中,我没有对ssh进行任何脚本/机器人攻击,因为他们不想花时间search非标准的ssh服务端口,如果他们这样做,他们不太可能在另一层之前find它安全措施并将其切断。

安全是关于让人们进入或者closures他们,取决于他们知道什么,他们是谁,或者他们拥有什么。 目前,生物识别技术并不擅长于find自己的身份,总会遇到一些问题(指纹识别人员不良事故,伪造指纹等)。 所以,实际上,很多安全性都是关于混淆的东西。

良好的安全性就是把你必须保密的东西保持在最低限度。 如果你有一个正确encryption的AES频道,你可以让坏人看到除了密码之外的所有信息,而且你是安全的。 这意味着你有一个小得多的区域可以攻击,并且可以专注于保护密码。 (并不是那么简单)

为了做到这一点,除了密码之外,您必须对所有信息都有信心。 这通常意味着使用众多专家所关注的行业标准密码。 任何人都可以创造一个密码,但不是每个人都可以创造一个密码,而Bruce Schneier不能破坏密码。 由于密码安全性缺乏理论基础,密码的安全性取决于许多非常聪明和有见识的人试图提出攻击,即使这些攻击不实际(对密码的攻击总是会变得更好,从来没有更糟)。 这意味着密码algorithm需要广为人知。 我对高级encryption标准有非常强烈的信心,几乎没有一个Joe写和混淆的专有algorithm。

但是,encryptionalgorithm的实现存在问题。 不经意间留下漏洞很容易find钥匙,或者做其他恶作剧。 它发生在PGP的备用签名字段,以及在Debian Linux上实施SSL的弱点。 甚至发生在OpenBSD上,这可能是最安全的操作系统(我认为这是十年来的两次攻击)。 因此,这些应该由一个有信誉的公司来完成,如果实现是开源的,我会感觉更好。 (封闭的源代码不会阻止一个确定的攻击者,但是这会让随便的好人难以find漏洞。)

因此,如果我想要安全性,我会尽可能使我的系统尽可能可靠,这意味着除密码以外尽可能开放。

通过在已经安全的系统之上隐藏分层安全可能会有所帮助,但是如果系统是安全的,则不是必需的,如果不安全,最好的办法是使其安全。 想想像“替代医学”这样一些不太有名的forms,这样的模糊不清 – 它不太可能有很大的帮助,虽然它本身不太可能受到很大的伤害,但是可能会使患者看不到一个有能力的医生或计算机安全专家。

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

真的吗? 你真的会坐在这里告诉我和世界这个晦涩难懂的主意? 这不是一个坏主意,它不应该是你的防止未经授权访问的总体计划。 一个很好的安全计划应该要求默默无闻,强大的密码,encryption,closures后门。

评估,testing或改进安全产品的最好方法之一就是让它被一个庞大而聪明的同行组织所抨击。

依靠“黑匣子”安全的产品不能从这种testing中获益。 当然,作为一个“黑匣子”总是会引起怀疑(经常是合理的),他们不会经得起这种审查。

所有可用的安全forms实际上都是通过默默无闻的安全forms。 每种方法都增加了复杂性并提供了更好的安全性,但是它们都依赖于一些algorithm和一个或多个密钥来恢复encryption的数据。 大多数人所说的“通过隐晦安全”是有人select最简单最容易的algorithm之一。

字符转换等algorithm很容易实现,易于破解,这就是为什么他们是一个坏主意。 这可能比没有好,但是最多只能停止对数据的轻视。

互联网上有很多优秀的资源可以用来教育自己所有可用的encryption方法及其优点和缺点。

在一个案例中,我认为密码保护通过默默无闻是真正的安全。 我能想到的唯一的安全措施不是STO,而是某种生物识别安全措施。

除了这一点的语义和挑剔,STO(安全通过默默无闻)显然是不好的,在任何情况下,你需要真正的安全。 但是,可能有些情况并不重要。 我会经常XOR填充一个文本文件,我不想让任何人阅读。 但我真的不在乎,如果他们这样做,我只是宁愿不读。 在这种情况下,这并不重要,XOR键盘是一个很容易找出STO的完美例子。

这几乎不是一个好主意。 同样的道理,驾驶不带安全带是个好主意吗? 当然,你可以find一些适合的案例,但是由于经验而产生的反应似乎是显而易见的。

弱encryption只会阻碍黑客的动力,所以它不是没有价值的,只是没有什么价值,特别是当像AES这样的强encryption可用时。

通过默默无闻的安全是基于你是聪明的,你的用户是愚蠢的假设。 如果这个假设是基于傲慢,而不是经验数据,那么你的用户和黑客将决定如何调用隐藏的方法,调出未链接的页面,反编译和提取.dll中的明文密码等。

也就是说,向用户提供全面的元数据不是一个好主意,只要你用encryption,授权,authentication和所有其他的安全原则进行备份,模糊就是完全有效的技术。

如果操作系统是Windows,请查看使用数据保护API(DPAPI)。 这是不安全的,是一个存储无人值守过程login凭证的好方法。 几乎所有人都在这里说,通过默默无闻的安全并没有给你太多的保护。

http://msdn.microsoft.com/en-us/library/ms995355.aspx

http://msdn.microsoft.com/en-us/library/ms998280.aspx

我必须补充一点,那就是互联网通过默默无闻的方式打破安全的难以置信的能力。

正如一次又一次地表明的那样,如果你唯一的防范是“没有人知道后门/漏洞/漏洞”,那么只需要一个人绊倒它,几分钟之内就会有数百人知道。 第二天,几乎每个想知道的人都会。 哎哟。