通过查看某种意义上相反的东西,也许更容易理解 Security-by-Obscurity 的含义:Auguste Kerckhoffs 的第二原则(现在通常简称为Kerckhoffs 原则),于 1883 年在La Cryptographie Militaire的两篇文章中提出:
[密码] 不得要求保密,必须能够落入敌人手中而不会造成不便。
克劳德·香农将其重新表述为:
敌人知道系统。
埃里克·雷蒙德(Eric Raymond)为:
任何不假设敌人拥有源代码的安全软件设计已经是不可信的。
该原则的另一种表述是
系统的安全性必须仅取决于密钥的保密性,而不是系统的保密性。
因此,我们可以简单地将 Security-by-Obscurity 定义为任何不遵循该原则的系统,因此我们巧妙地定义了密码:-)
这条原则之所以有意义有两个基本原因:
- 密钥往往比系统小得多,因此更容易保护。
- 破坏密钥的保密性只会破坏受该密钥保护的所有通信的保密性,破坏系统的保密性会破坏所有通信。
请注意,它并没有说明您不能对系统保密。它只是说你不应该依赖它。您可以使用 Security-by-Obscurity 作为额外的防线,但您不应该假设它确实有效。
但是,总的来说,密码学很难,而且密码系统很复杂,因此您几乎需要发布它,以吸引尽可能多的眼球。这个星球上只有极少数组织真正拥有必要的聪明人来秘密设计密码系统:过去,当数学家是爱国者,政府很富有时,那些是美国国家安全局和克格勃,现在是 IBM 和一个几年后,这将是中国特勤局和国际犯罪集团。