作为着名的密码专家,奥古斯特·柯克霍夫斯的成就就是我们称之为柯克霍夫斯原则的密码学理论:
真正的密码系统应该做到就算被所有人知道系统的运作过程,仍然是安全的。如果安全受到破坏,只需替换密钥,而不必替换整个系统。
这实际上是他最初在着作《军事密码学》中阐述的六项原则中的第二项,该文发表于1883年,介绍了军事加密技术的现状,并提出了改善法国军事密码系统的建议。按照今天的标准,奥古斯特·柯克霍夫斯提出的密码设计实践六原则似乎稍嫌过时:
1、系统应该有良好的可用性,除非通过数学手段,否则不可能被解开。
2、设计系统的时间不应该为保密或者折中等因素导致交流过程变得更加复杂。(柯克霍夫斯原则)
3、密钥必须容易记忆,并且要保证更改方便。
4、应该支持通过电报传递加密文件。
5、设备或者文件应该是便携式的,方便单人操作。
6、系统使用起来应该非常简单,不需要记忆大量规则,或者给使用者造成心理压力。
实际上,依据这些原则而建立的密码系统可以说是坚不可摧的。只要将所用的词汇更新一下,就可以避免这些原则仅仅属于某一特定历史时期之类的误解:
1、系统应该有良好的可用性,除非通过数学手段,否则不可能被解开。由于可能被破解,因此系统应该是可替换的。
在严格意义上来说,第二句话并不是必要的,但它可以帮助让观点更突出。在实践过程中,安全技术不是处于永远静态有效的状态中。它必须在和破解者的"竞争"中保持领先地位。
2、设计系统的时间不应该为保密或者折中等因素导致交流过程变得更加复杂。
你可能会注意到,这一原则实际上并不需要任何更新,以保证其基本思想的相关性或和实际的联系。这可能也是它为什么会成为受到高度重视和众所周知的思想理论,特别是在加密和安全政策领域的原因之一。还有一点要重视的就是使用系统(只要不是设计到系统中的)不属于系统设计的范畴,因此,并不一定适用本原则。
3、使用该系统的必要条件是,只有单人了解,说明应该非常简单,更改设置也比较方便。
对于大多数使用者来说,用于加密系统的实际密钥必须方便记忆和更改。关于实际密钥的关键因素是,对于OpenPGP之类系统的私人密钥来说应当包含了必要的部分,可以进行有效的保护,防止被拦截、猜测或者被未经授权的人破获。
4、该加密系统应该支持从普通到高级的通讯技术,并且可以支持包括速记通讯在内的新通讯方式。为了专注于专门的用途,专用的加密系统可以对传播手段进行限制,但不应该在所有的时间都进行限制。
在那个历史时期,电报既不是先进的也不是普通的通讯方式。柯克霍夫斯在当初提出这种说法的真正目的是确保用于军事用途的加密系统的实用性。因此,我们应该关注的不是在当前环境下条件的变化,而是应该了解关键是根据实际情况选择使用不同的通讯方式。
5、设备或者文件应该是便携式的,方便单人操作,在不可预知的情况下也应该保证正常使用。
从实践的角度来说,依靠通用的加密系统保证所有用户的安全是不合理的,人力网络的时代可以确保密码只有通过设备才能被开,这样的安全性是足够的。但时代已经发生了变化,并且将继续发生变化。如果加密系统还是假定实际情况属于受到限制的状态,该加密系统根本不会经得起时间的考验。
6、系统使用起来应该非常简单,不需要记忆大量规则,或者给使用者造成心理压力。
除了增加"使用"这个词,来确定什么是用户应该做的,什么是加密系统工具应该处理的以外,没有什么需要更改的。在加密系统的实践中,我们应该注意到这一点,即用户使用的部分不应该过于复杂,大量的文件会导致在使用时经常出现问题。基本技能、良好的习惯以及了解加密系统的密钥应该是可以使用该系统所需的全部知识和技能。
当前世界上最好的使用最广泛的加密系统,都基本上符合这些原则,尽管其中的不少显得更长或者限制更多一些。在选择新加密系统的时间,你应该按照这些原则来确认它是否满足从当前到未来的实际需求。