即使密码系统的任何细节已为人悉知,只要密钥未泄露,它也应是安全的。 ——柯克霍夫原则
Fig. 1: Auguste Kerckhoffs(1835-1903),荷兰语言学家、密码学家
一、引言生而为人,自会有秘密,每个人天赋应拥有自己的隐私。但大多数人可能与我一样,从小到大很难去掌握自己的隐私。还记得中学时代早恋的我们吗,每天要跟喜欢的人传递很多次小纸条,但总难免会有些意外发生。比如,一张纸条要过很多人的手才能传到自己或对方的手中,这期间小纸条的内容要么会被传递者偷偷翻看,要么就会在传递过程中被老师抓获。一旦写满情话的小纸条内容被他人看到,我们难免陷入尴尬;如果被老师发现,那可就要挨批、写检讨,甚至带家长了。相信相当一部分小伙伴都会有类似的经历。
如果可以,谁希望自己的隐私泄露呢?有人可能会想到用胶带把小纸条密封住,也可以把小纸条夹在书本里。但其实这换汤不换药,一旦次数多了,大家总会有所意识。还会有同学想到对小纸条的内容进行加密,比如,「我很想你,放学后我们一起走吧」这样的文字,用别人看不懂的符号来表达,就是「BHLGDCMJBIFNAEK」:
这是古典密码学的方法,加密与解密的过程更有艺术性和趣味性。不过,在现代社会中存在的风险比较大。因为信息的频繁传递需要变换不同的机制,而每次机制都要跟随小纸条一起传递,所以仍然不会有太好的效果。如果双方使用一套完备的符号转换机制,那么在一定时间内,人或者现代计算机都可以破解。因此,当使用古典密码学方法时,双方通信过程中的信息始终是在不安全的信道中传输的。
有没有一种办法彻底解决信道安全的问题呢?目前不太可能,但是如果基于信道是不安全的假设,现代密码学提供了「对称 / 私钥密码学」和「非对称 / 公钥密码学」两种实现密码系统的安全的方案:
第一种是「对称 / 私钥密码学」。假设有一个专门适用于存放小纸条的小保险箱,Alice 和 Bob 为此配了两把相同的钥匙,每次存放完小纸条后都给保险箱上锁,这个小保险箱经由多位同学之手到达 Alice 手中后可以用钥匙解锁,回复完信息后再用钥匙上锁,传给 Bob 后再用同一把钥匙解锁即可,这样就可以确保信息在传送过程中的安全。但这个方法也有缺点,因为两个人使用的是相同的钥匙,如果其中一把钥匙不小心被情敌搞到手,他 / 她复制了一把相同的钥匙,之后就可以在通信双方均不知情的情况下偷偷查看双方的信息。
第二种方案是「非对称 / 公钥密码学」。某个周末,Alice 和 Bob 一起去买了两套机制相同的保险箱,每个保险箱都有公钥和私钥。这个公钥表明谁是该保险箱的所有者,而保险箱则保证每张小纸条放进去之后无法取出,只能通过私钥打开保险箱。当 Alice 要给 Bob 写信时,她把小纸条塞进 Bob 的保险箱里,经由多为同学传递后到 Bob 的手中后,Bob 用他自己的私钥打开保险箱。在整个通信过程中,除了掌握私钥的 Bob ,无人可以打开 Bob 的保险箱,即使是 Alice 也不行。反过来,如果 Bob 要给 Alice 写信,只需使用带有 Alice 公钥的保险箱即可。而发现这种密码系统的实用性后,其他同学也会感到兴趣,他们也可以购买带有公钥与私钥的保险锁,之后大家都能愉快地使用这种密码系统进行隐私交流了。
这就是现代密码学的核心要点:秘密与隐私绝不能因为密码系统在信道中被拦截而泄露,密码系统的安全只需要取决于密钥(公钥密码学中取决于私钥)的安全。
不过,在生活中我们对密码学的感知较少,通常接触到的是不同信息系统的账号登录密码。但这类密码只是一种便于人类可读与记忆的用户口令,计算机会用它来生成更为复杂的密码学意义上的密钥。
实际上,在现代社会中,基于现代密码学技术的应用已经无形地渗透到日常工作生活的方方面面,我们在网络上的各种隐私、数据与资产就是被幕后的密码学所加密与保护的。譬如,二代身份证、防伪火车票 / 电子发票、银行卡 / 网银 U 盾、汽车智能钥匙、4G/5G/WiFi、移动通话、微信信息传输、语音 / 视频通话、电子邮件、移动支付、网络购物、百度 / 谷歌 / 阿里云盘、Web 网页的 HTTPS 访问等等。
那么,这样一个影响现代社会如此深刻的密码学思想是谁最先提出的呢?为什么会设计出这种密码系统?
通常情况下,有人会想到现代密码学的奠基人香农,他那篇基于信息论的《保密系统的通信理论》将「敌人知道系统」作为对一个系统安全性分析时的安全假设。然而,「敌人知道系统」只是香农对前人思想的一个提炼与总结,真正的发明者是 19 世纪的一位荷兰语言学家与密码学家奥古斯特·柯克霍夫(Auguste Kerckhoffs)。
1883 年初,柯克霍夫在《军事科学杂志》(Journal des Sciences Militaires)上发表两份题为《军事密码学》(La Cryptographie Militaire)的报告,一举奠定其在现代密码学上的先驱者地位。时至今日,密码学与网络安全领域的学术专著与论文仍然在引用柯克霍夫的力作,Twitter、Medium、Reddit 等社交平台上依稀可见柯克霍夫的身影。这些文献引用的大多是柯克霍夫在《军事密码学》中提出的关于密码安全系统的六项原则[10]: