儘管@TomLeek和@Iszi的答案(都是很好的順便說一句)似乎是直接矛盾的,但您已經收到了幾個很好的答案。
它們都有很好的觀點:一方面,保密設計不會使系統安全,而公開審查它可以使您(可能)找到您未曾考慮的某些漏洞;另一方面,只要不是設計安全的關鍵因素,就可以將設計秘密保密並沒有什麼害處。
雙方都是絕對正確的-有時。
我認為可以公平地說,在一般性辯論中,雙方都同意保守設計秘密根本不會直接增加安全性。
在最壞的情況下,它只是隱藏安全漏洞(取決於您認為對誰最隱蔽的安全漏洞,這可能是好事,也可能不是好事)。
在最佳情況下(不會存在可被暴露的小漏洞)發佈設計),它仍然不能提高安全性-但可以確實最小化攻擊面。
最小化攻擊面(即使不存在攻擊面漏洞)絕對是一件好事;但是,這需要權衡和權衡發布的好處(即需要更多的關注者進行審查)以及將其保密的不利方面-例如傾向於將它作為安全控制(一種默默無聞的流行安全),作為一種安全劇院的形式。
值得一提的是,正如@Tikiman所暗示的那樣,僅僅發佈設計是不足以確保對其進行審查的-尤其是那些有能力找到漏洞並且也有能力的人傾向於將它們透露給您。在很多情況下,只有那些懷有惡意的惡意人員才能審查已發布的設計,因此您將無法獲得預期的收益。而且,通常甚至都不知道他們的設計是否屬於上述最佳情況或最壞情況。
最重要的是-在許多安全方面,直接的答案仍然是:這取決於。
這裡要考慮一個明確的權衡-如果這是一個複雜的密碼系統,答案將是明確的;如果這是一個需要大量實施的典型企業系統,那麼答案很清楚。
在這種情況下,我傾向於 ,就像@Tom所說的那樣,但出於第二個原因-部分是無政府狀態的用戶群,大部分是教學目標。
請注意,這些實際上並不是真正的安全考慮-至少不是直接考慮。
(哦,關於@Tikiman的觀點-這裡涉及的教學法意味著您實際上可以確保至少在整個班級中都對設計進行了審查;-))