19世纪,荷兰语言学家和密码学家奥古斯特·柯克霍夫提出了一个至今仍被奉为圭臬的原则:
“一个密码系统的安全性,不应依赖于算法的保密,而应依赖于密钥的保密。”
翻译成人话就是:你的加密方法可以公开给全世界看,只要密钥还在你手里,别人就破解不了。
这个原则听起来简单,却彻底改变了密码学的发展方向。在柯克霍夫之前,人们习惯把算法也当作秘密,结果往往是算法泄露,一切白费。柯克霍夫之后,密码学家们开始公开讨论、公开评审、公开竞争——AES的诞生就是全球公开征集的结果。
现代密码学的所有算法,都是公开的。你可以在网上找到AES、RSA、SHA-256的完整技术文档。这听起来有点反直觉:算法都公开了,那还怎么保密?
秘密全在密钥里。一个256位的AES密钥,可能的取值比宇宙中的原子还多。你知道算法,也知道密文,但不知道密钥,那就只能面对天文数字般的可能性望洋兴叹。
这就是现代密码学的根基:安全,不靠隐藏,而靠数学。