因此,我正在为我们的学校设计一个门身份验证系统(无法真正详细介绍),以便只有经过身份验证的人员才能穿过某个内部门。他们认为应将其内部工作保密,以防止任何人对其进行反向工程。我认为这将是默默无闻的安全性,这很糟糕。按照Kerckhoff的原则,我对系统进行了设计,以使知道它的工作原理不会帮助您进入,只有拥有钥匙才能帮助您进入。他们仍然坚持认为,与其说让更多的人知道,不如说应该更少。

采用封闭式设计是一个好主意吗?如果不是,那是为什么?

P.S.在我设计了大部分内容并告诉一堆人之后,他们才告诉我这是个秘密,如果这有所作为(我不知道他们希望它成为秘密)。
P.P.S.尽管它不对外开放,但它所保护的房间比学校其他地方都包含更多有价值的东西,因此,如果我们采用封闭式设计而不是开放式设计,我希望对手无论如何都能对它进行反向工程,但我不确定该如何传达。

评论

让我猜猜...您的学校位于苏格兰的一座古老城堡中。校长是古怪的老胡子。房间里有一面镜子...看起来有些失业的作家已经把安全系统撒在了脑后。

打开系统内部工作的原因通常是为了获得免费的同行评价。在学校环境中,我非常怀疑会收到太多的安全反馈,而是有人告诉某人告诉那个房间的人。

他们认为应将其内部工作保密,以使没人能对其进行反向工程。东西被反向工程的原因?因为不知道...

我想问一问为什么为什么学校已经设计出自己的门认证系统,而现在已经有各种各样的商业产品在做同样的事情(学校可能已经在使用它来保护自己的门)。如果您的秘密太过秘密而无法通过卡访问或PIN键盘来保护,请将生物识别设备添加到“安全”房间,并严格控制谁注册使用该设备。

Google的“分层安全性”。认真对待安全性的任何人都将实现分层的安全性,其中的保密性/模糊性不仅是合法的层,而且是重要的层(尽管它不应该是CRITICAL层)。这就是为什么真正优秀的管理员将其服务器配置为不泄漏他们使用的软件版本。这增加了攻击者的工作量,因为攻击者需要先探究您的设计,然后才能进行破解。

#1 楼

默默无闻并不是采取适当的安全措施。作为您唯一或最实质性的安全措施,依靠隐晦性或多或少是主要的罪过。但是,如果已经按照该原则对系统进行了适当的安全保护,那么这将被误导。这绝不意味着“告诉敌人有关您系统的所有信息,因为他们无论如何都知道”。通过模糊性来应用安全性是因为它几乎没有价值。同时,对于这样的系统,保护其设计的机密性也几乎没有危害。

评论


“默默无闻的安全性还不错。”感谢您说某些人不会接受的内容。

–布拉德·布查德(Brad Bouchard)
16年2月2日在21:55

“在保护其设计的机密性方面丝毫没有伤害”并不是真的。正如汤姆·里克(Tom Leek)所述,教育在学校中很重要,通过发布设计,人们可能会指出缺陷。

–山姆
16年2月2日在22:03

我将第一段改写为:“默默无闻并不坏。依靠默默无闻来获得安全性,似乎仅凭它就足够了,这或多或少是主要的罪过。”我认为这将是您的意思更简单的措词。

– jpmc26
16年2月2日在22:03

@ jpmc26“默默无闻不是安全,这只是一件事”

– PyRulez
16年2月2日在22:29

每当您需要密码来访问资源时,您都会通过模糊性来依赖安全性。

– alexw
16-2-4在23:15

#2 楼

保密设计不会使门本身安全。但是,如果认为它增加了安全性是一种危险的妄想。因此,如果您正确地完成了工作,那么透露细节应该是无害的。如果您做得不好,请开除自己,然后聘请合适的人。安全。在学校环境中,未发布系统详细信息会危害安全性,因为学校到处都是学生,而且众所周知,学生是爱管闲事的无政府主义者,将特别吸引那些对他们保密的事物的逆向工程。众所周知,在学生计算机室中,保持低安全性事件的最佳方法是将root / Administrator密码提供给几个学生-当学生想涉足计算机安全性时,给予他完全访问权限消除了尝试破坏事物的所有动机,并将他变成免费的警察助理来监视其他学生。我听说在某些学校中,他们至少有时会实际进行教学法。您的学校可能想试一试。

评论


“如果你做得不好,那就开除你自己。”而且最好在实施设计之前先通过揭示设计来弄清楚这一点,对吗? (尽管我对安全性设计很有信心,但是仍然是一个很好的预防措施。)

– PyRulez
16年2月2日在20:46

@PyRulez:操作概念是“审查”。您需要其他人进行一些额外的分析。开放的出版物可以帮助获得免费评论。

–汤姆韭菜
16年2月2日在20:47

您是否有“将root /管理员密码提供给几个学生的密码”的来源?我想了解更多。

–约翰内斯·库恩(Johannes Kuhn)
16年3月3日在8:03

@Nelson与不给他们根密码有什么不同?

–阿伦
16年3月3日,9:02

+1为“学生被认为是爱管闲事的无政府主义者”

–悉尼
16年3月3日在15:46

#3 楼

尽管@TomLeek和@Iszi的答案(都是不错的顺便说一句)似乎是直接矛盾的,但您已经收到了好几个答案。

它们都具有很强的优势:一方面,保密设计不会使系统安全,而公开审查将使您(可能)发现某些您尚未考虑的漏洞;另一方面,将设计保密并不会对您造成太大伤害,只要这不是设计安全性的关键因素即可。

双方都是绝对正确的-有时。

我认为可以公平地说,在一般性辩论中,双方都同意保守设计秘密根本不会直接增加安全性。安全弱点(取决于您认为谁对谁最隐蔽,这可能不是好事)。
在最佳情况下(发布设计不会暴露任何小漏洞) ,它仍然不能提高安全性-但却可以使攻击面最小化。

使攻击面最小化(即使没有漏洞)绝对是一件好事。但是,这需要权衡和权衡发布的好处(即需要更多的关注者进行审查)以及将其保密的不利方面-例如倾向于将其作为安全控制(暗淡的流行安全)和安全剧院的一种形式。

还值得注意的是,正如@Tikiman所暗示的那样,仅发布设计还不足以确保对其进行审查-尤其是那些能够发现漏洞并且也倾向于向您披露漏洞的人。在许多情况下,只有那些怀有恶意的恶意人员才能审查已发布的设计,因此您将无法获得预期的收益。而且,通常甚至不知道他们的设计是属于上述最佳情况还是最坏情况。

因此,最重要的是-就像许多安全方面的事情一样,直接的答案仍然是:取决于。

这里有一个需要权衡的问题-如果这是一个复杂的密码系统,答案将是清楚的;如果这是一个需要大量实施的典型企业系统,那么答案很清楚。

我在这种情况下的倾向就像@Tom所说的,但出于上述第二个原因-部分是无政府的用户群,大部分是教学目标。

请注意,这些实际上并不是真正的安全考虑-至少不是直接考虑。

(哦,关于@Tikiman的观点-这里涉及的教学法意味着您实际上可以确保至少在整个班级中都对设计进行了审查;-))

评论


当您在浏览时,请不要忘记阐述Tikiman163的答案。

– PyRulez
16年2月2日在22:31

@PyRulez我添加了一两个评论,例如它们。。。虽然我的意图不是逐点反驳其他答案,但是却对比了晦涩/开源辩论的两面...

–AVID♦
16年2月2日在22:41

#4 楼

Daniel Missler的这篇文章太棒了!其他控件是绝对合法的。


有了这个概念,一个更好的问题是
鉴于我已经有了控件的资源,还是我最好添加其他
(基于非模糊性)控件?


也将伪装学用作obscurity as another layer of security。伪装就是一个有力的例子。考虑一个装甲战车,例如M-1。该坦克配备有一些最先进的
装甲,并已被反复证明在实际战斗中是有效的。

因此,有效的装甲,如果将坦克涂成与周围环境相同的颜色,对坦克的危险会以某种方式增加吗?还是将来让我们完全看不见坦克的时候呢?我们降低了装甲的效力吗?
不,我们没有。使得难以看清的东西并不能更容易地在发现或发现时进行攻击。这只是必须结束的谬论。

当目标是减少成功的攻击次数时,以可靠的,经过测试的安全性开始
,并在层中添加模糊性yield
总体上可以提高安全性。迷彩在战场上做到了这一点,而PK / SPA在保护强化服务时做到了这一点。评论也很棒,他说如果将单词adding更改为enforcing会更好,所以总的来说,它看起来像这样
由模糊性提供的安全性很差,但是将模糊性作为其他控件之上的一层实施的安全性可以绝对合法。假设您在战场上是安全的,因为您认为自己的战车涂有与环境相同的颜色,这简直就是胡说八道。但是,使您的坦克的防御力更强,并加上能够给您提供伪装能力的油漆作为另一道保护层,这是非常好的!

评论


如果您考虑到通过打开设计而获得的评论,这种类推法是否会破裂?

–JoãoPortela
16年3月3日在14:01

也许在“正在添加模糊性”问题中,您应该将“添加”更改为“强制”。如果一个人仅在自己的头脑中设计系统,那么设计自然就很模糊,无需任何额外的努力。即使在设计人员详细记录了系统内容之后,只要仅将其保留在设计人员的权限之内,该设计就仍会以几乎为零的额外努力保持合理的模糊性。但是,将设计放入共享访问存储库中会威胁(但不会自动破坏)系统的模糊性。那时需要付出努力来执行它。

– Iszi
16年3月3日在15:19

@JoãoPortela在当前实施中,任何设计的风险只能通过发布该设计的详细信息来增加。坦克装甲确实是一个很好的类比,尽管使用伪装作为类比中的模糊层可能不是最好的。考虑一个已经处于战争状态的国家。他们的坦克在积极战斗中部署在前线。通过开源设计,当发现坦克结构或装甲的化学缺陷时,敌人几乎可以获得与您相同的信息。敌人很可能会投入更多资源来寻找它们。

– Iszi
16年2月3日在15:28

当模糊是唯一的保护时,总比没有保护好。相信这种情况下的默默无闻可以确保您的安全,但这可能是致命的。

– gnasher729
16年3月3日在16:19

向M-1添加迷彩是作为额外的“现场”安全层,在测试,工程或设计甚至“战备状态”期间,都不会将其视为实际坦克安全规格的“一部分”(我想这可能是如果没有迷彩,这不会被认为是战斗准备就绪的,但是迷彩也不会被视为提高坦克的预期战场性能。真正的”安全性。人们看到“迷彩”,然后想到“现在很安全!”

–安东尼
16年2月8日在12:23

#5 楼

虽然未真正回答您的问题,但这可能是对您学校的争论。

我认为有人可以访问授权的密钥/身份是真正的风险。人们很草率,使用错误的密码,并始终写下秘密。很久以前,我学校的一位老师曾经把整个学校的钥匙放在一个学生洗手间里。

如果我想进入那个房间,我什至不用费心去寻找一个安全孔。在软件中;我会偷钥匙,尝试篡改物理锁,或尝试其他外部方法。为了破坏数据的系统; “我会用棒球棍”。

#6 楼

我有一个很长的解释,似乎似乎在漂移,所以我将给出一个简短的答案,然后论证。简短的答案,这是通过隐蔽实现的安全性,但这可能不是问题,因为与系统联系的人数众多。因此,可能不值得争论。

您的主张是正确的,将系统设计保密是通过obscurity(STO)进行的安全性。 STO是个坏主意的主要原因是,可以通过仔细观察和社会工程的正确应用,在所有情况下对最初不了解内部工作原理的系统进行反向工程。如果您是唯一了解系统工作原理的人,那么您是唯一可以验证系统完整性的人。因此,如果您的设计中存在潜在的可绕过缺陷,而其他人对您的设计进行逆向工程并发现它,则与您未对设计保密的情况相比,他们可以更轻松地利用它。他们也更有可能将其发现和非法使用保密。

这是因为,如果您公开设计的知识,就会有更多的人研究它,审查设计的人也越多,有人发现并告知您的可能性就越大。设计缺陷甚至可能不在一般概念上,而是在特定的实现上,例如在其他安全算法的实现中存在缓冲区溢出的机会。公共密码基元使用的主要概念是,通过使每个人都知道您的密码基元算法,其他人可以对其进行审查。在许多人这样做之后,可以合理地确定您的设计是安全的。困难在于,因为您正在为学校设计设计,所以只有极少数人可以查看您的设计,而很少有人可以理解它们。查看您的设计的人越少,发现缺陷的每个人就越不可能报告该缺陷。他们的方式在实际安全性上可能大致相等。

评论


我认为这很关键。攻击者需要知道(a)密码或(b)可利用的设计缺陷。如果那里有一百万个Acme键盘,那么发现(b)(如果存在)会更容易,因为攻击者可以购买和拆解十个Acme键盘。在这种情况下,Acme corp。最好发布设计,这样他们就不会沾沾自喜,并且有更好的机会立即了解任何缺陷。但是,如果只存在一个Acme键盘,那么将其设计缺陷与密码一样保密是可行且值得的。

– Bobtato
16年3月3日在14:35

这个答案有很大的缺陷,因为它认为宣传设计会增加正在审查它的人的数量,这些人既不怀有敌意又有能力。当然,它使系统更易于被许多人查看。但是您不知道实际上有多少人会去审查它。或者其中有多少人在他们的审查中甚至会知识渊博,技能娴熟且足够透彻,以发现任何缺陷。或发现缺陷的人的意图是什么。

– Iszi
16年3月3日在15:49

Iszi,我非常明确地谈到了一个事实,即如果他发布了他的设计,就不太可能对其进行审查。如果您要反驳某人,请不要同意他们的评估。至少,尝试在评论之前先完整阅读您要评论的内容,您可以很容易地意识到您没有指出缺陷,只需阅读我说过STO在这种情况下还不错的第一段。

– Tikiman163
16-2-4在16:25



@ Tikiman163您确实指出,到最后,但开始也强烈暗示了相反的意思,因此应改善答案。在当前状态下,我不认为它会增加讨论的内容。

–放松
16年2月5日在22:53

#7 楼

一个明显的目标是学生不能破解门认证系统。

如果我们假设身份验证系统稍微但不是很容易被黑客入侵,并且有些学生具有一些但没有高级黑客技能,那么很有可能通过使认证系统变得更加困难。系统不可用的详细信息足以使该组(学生)无法接触到它。

另一方面,一旦系统如此安全以至于无法对其进行破解,比查找或逆向工程系统的工作要困难得多,那么将细节保密就不再有用。

#8 楼

如果我对这扇门负责,那么我对机密性会有同样的要求。如果世界(和您的工作)是完美的,那么默默无闻的确是没有用的。

但是,请考虑一下现实世界中实际发生的事情。我认为您会使用最先进的算法来尽力而为。但是魔鬼隐藏了细节,而实现细节会削弱安全性。即使算法确实很安全,SSL库还是在不久前就发生了。

在公开安全系统详细信息时,您想要的是同行会审核您的实现并警告您漏洞在攻击者发现和使用之前。如果您认识安全系统方面的专家并请他们审查您的工作,我认为即使在您所在的学校,这也将被视为一种很好的做法-恕我直言,至少应该如此。但是,如果您只发布它,则您的第一批读者更有可能是为防盗门所针对的读者!并且您当然不希望他们成为第一个对您的工作进行审查的可能缺陷的人。

TL / DR:如果您构建一个通用的安全系统,那么该系统可能会有大量的读者,因此您不使用立即将其发布,您应该尽可能广泛地发布它,以获得良好的评价。但是,如果您构建将立即用于真实安全性的专用实现,则仅向可信赖的专家披露详细信息,以避免帮助攻击者发现可能的缺陷。