最好的加密方式就是公开?为什么现代密码学这么奇怪?
2024-07-18 22:33

最好的加密方式就是公开?为什么现代密码学这么奇怪?

本文来自微信公众号:差评X.PIN (ID:chaping321),作者:橙子,视频制作:B站差评君,美编:焕妍,题图来自:视觉中国

文章摘要
本文介绍了现代密码学的发展历程和原理,以及古典密码学的弱点。通过讲解古典密码的对称加密和现代密码的非对称加密方式,阐述了信息安全的重要性。

• 💡 揭示了古典密码学的对称加密弱点和现代密码学的非对称加密优势

• 🧠 解释了现代密码学中的RSA算法原理和应用场景

• 🔒 强调了信息安全中人类情感和密码学技术之间的关系

现在,在你的脑子里想一个五位数,那么如何悄无声息地把它传递给差评君呢?


来看一个好法子,假设你想的数字是66666或者12345等等。


请将它与差评君的幸运数字2359相乘,只取结果的后五位打在公屏,我就能知道你所想的数字是什么。准备好了么?



接下来就是debug的时刻,将你取到的五位数再乘12039,结果的后五位就是你所想的数字。看起来像个魔术对吧?


其实除了魔术,它还有个更牛的出处——现代密码学,甚至你的银行卡、邮件、聊天软件也和它有着千丝万缕的联系。


所以它和现代密码学有什么关系,它的原理又是什么?为什么要设计成这样呢?我们来扒一扒不一样的密码学!


天才数学家的现代化密码学构想


聊到密码学,就不得不提起那个男人!克劳德·艾尔伍德·香农。



他在1949年发表的《保密系统的通信理论》一书,用数学的方式将密码学划分为古典密码和现代密码。但因为现代密码学的理论听起来太二了,诞生后竟被晾了三十多年。


比如现代密码学中的柯克霍夫原则讲(Kerckhoffs)密码系统应该被所有人都知道加密方式是什么,这一听,不是神经病言论吗,加密方式都让人知道了,还研究个毛啊?


再比如Vernam提出的符合香农完善保密的一次一密理论,听起来更神经了,用一次密码换一次谁受得了。但如果看完古典密码踩过的坑,你就知道这些言论有多合理了!


古典密码


在古典密码的时代,密码学的概念是比较模糊的,尽管大量被用在军事领域,但加密方式更像是一种艺术行为。



反正就一个理念:瞎换乱转,你猜去吧。


这可不是我在开玩笑,期刊论文里就是这么写的。虽然维基百科中,古典密码被总结为替换式密码或移项式密码又或者两者混合。


但要注意,这里是总结为而不是定义为,这就说明古典密码仍是一个充满想象力的名词。


比如对外国人而言,其实中文本身就是个古典密码。


举个例子,what is your name这句话,我们逐一替换成汉语,再移项就变成了:你的名字是什么。这不是完美符合古典密码替换移向的要求嘛。



当然这种推理也确实很脑洞大开,但毕竟古典密码本就是在用脑洞创造一种,你懂我懂他不懂的新语言。


比如先秦兵书《六韬》中提到的阴符,这是由钓鱼佬姜太公姜子牙发明的,为了快速传递前方战报,而不被敌方知晓,他发明了一种用不同长度的鱼竿来传递战报的方法,这也是我国史料记载中最早的军事密码。



再比如公元前700年,古希腊军队用一种叫作Scytale的圆木棍来进行保密通信。其使用方法是:


把长带状羊皮纸缠绕在圆木棍上,然后在上面写字;解下羊皮后上面只有杂乱无章的字符,只有再次以同样的方式缠绕到同样粗细的棍子上,才能看出所写的内容。


柯南中的密码棒灵感就来源于此。


当然除此之外还有很多好玩的古典密码,比如凯撒密码,栅栏密码等等。


这里留给万能小伙伴补充,但古典密码存在一个致命的弱点,那就是太对称了。这是什么意思呢?


这个对称有两层含义,一是古典密码的加密是可逆的,一旦知道怎么加密,很容易就可以反推出怎么解密。所以古人他只是古他不傻啊,随便抓个活口不就知道这密码怎么玩的了吗?



另一个对称的意思则是,不管你如何对明文进行替换,总会形成一种明文和密文的一一对应关系,但这也存在一个很大的弊端,那就是语言的使用是有规律性的


比如这张图表,这是一份来自皮特网对3.5万亿份文稿分析后得出的字母和单词使用频率分析报告,也就说明不管你怎么替换,经过多少层替换,只要被截获的密文一多,总会被频率分析法拿捏。



当然虽然问题找出来了,但显然古典密码学家们并没有很好地解决这个问题,甚至间接证明了古典密码是真不行。


比如二战时期,古典密码的巅峰之作——恩格码机(Enigma)



在加密时,只要在机器的键盘上输入想要加密的明文(dianzan),亮起来的就是被加密好的密文。而且明文中相同的字母也会被加密成了不同密文,这就很好地防止了频率分析法。


另外即便知道其运作原理也是很难破解的。


这是怎么做到的呢?


我们来到恩格玛机的内部,转子装置,在这个装置的右端输入轮上,有26个触点,分别链接键盘上的26个字母。



装置的中部由同样带有26个触点的多个转轮组成,但与输入轮有些区别,在转轮的内部额外多了一些杂乱的交换机制,意味着输入板的字母每经过一个转轮时被替换1次。



而在装置的末端有一个叫做反射板的装置,它仍有26个触点,这里的触点两两组合组成同游泳比赛一样的折返点。


并且字母会在这里被再次交换后,仍要重返转轮,再次进行替换,最终才能回到起点。



这样就完成了一次加密流程,可以看出这是多次替换的叠加,但其实恩格玛机还有点睛之笔,在每次按下键盘时,一个特殊的杠杆装置会带动转轮转动一次,并且转轮上有一个特殊的轮纹,当前一个转轮转动一周后,后一个转轮也会转动一次。


这就使得按下每个字母时用到的加密线路都是不一样的,这样频率分析法也就失效了



另外这样的设计,即便是知道其运作原理,逆向破解也是非常困难的。


以最初的恩尼格玛机为例,它的内部有三排刚刚提到的轮纹轮盘,每个轮盘上有26个字母,皆可转动,这样来看我们就有一万七千五百多种方式设置轮盘的初始位置。


除此之外,为了保险起见它的外侧还附加了一组交换机制,也就是说如果连通o和e,当按下o,其实相当于是按下了e。


假设我们每次任选6对进行交换,根据概率论的算法,我们又产生了一千多亿种可能,仅是这些初始位置的方案已经有1700万亿种可能了。



而后代的恩尼格玛机,甚至一度将轮盘数增加到了8个,要逆向推算的运算量更是指数级上升,在没计算机的时代,想通过逆向穷举的方式破解几乎是天方夜谭。


况且当时的恩尼格玛机每天都会更换一次初始方案。这也就说明,当天如果算不出,第二天就要重新计算。这给暴力破解又上了一层难度。



但了解二战的小伙伴都知道,恩格玛机最终还是被破解了,甚至没等到计算机诞生。


1940年,计算机之父,英国数学家阿兰·图灵,就破解了恩尼格玛机。



但刚刚不是说没计算机不可能破解嘛?这说法确实没错,但遭不住德国人太轴又太飘啊,不管发啥,都得来一句heil hitler。



哎,不仅如此,德国人还很喜欢汇报,时不时就要给长官发一句:报告长官,啥事没有!再附一句heil hitler。


按照礼节那长官也得回一句(heil hitler)表示啊收到了~照理来说,这屁大点事直接发就好了,不行,至少在德国人那里不行,要保守元首所有的秘密,包括这份愚忠!必须恩格玛一下!


这严谨又白给的操作很快就让图灵拿到很多明密对应的线索,依靠这些线索他和他的同事戈登·韦尔奇曼发明出一种叫做“炸弹机”的解密机,真的硬生生逆向破解了恩格玛机。


所以这又一次说明像古典密码这样,知道怎么加密就能知道怎么解密的对称加密方法,从根本上来说是肯定会被破解的,只不过是时间问题罢了。



现代密码学


那有没有一种加密方式,信息发出者只知道怎么加密不知道怎么解密,而信息接受者既知道怎么加密又知道怎么解密的方法呢?


其实这就是现代密码学的研究方向之一,也就是如何实现非对称加密



这种加密方式,在古典密码的基础上,引入了密钥的概念,将密钥分为公钥和私钥,公钥用来加密,私钥用来解密。这样即便是把加密方式公开出去,只要私钥仍然安全,这个加密系统就不会被破解。


所以现代密码学家们公开加密方式的做法,其实是不会影响到加密系统的安全的。


还记得我们开头的那个魔术游戏么?


2359就是一个公钥,任何人都可以用它来加密。理论上差评君只要保护好用来解密的私钥12039,这就是一个非对称加密。


原理也很简单,当公钥与私钥相乘时你会发现结果为28400001,意味着五位以内的数与他们两个接连相乘后,相当于乘了00001。



但这对于应用级非对称加密而言,显然不够安全,想更进一步,要用到数学上一种特殊函数,


叫做活板门单向函数,又叫单向陷门函数,这种函数正向计算非常容易,但想反推回去几乎是一件不可能的事情,不过如果知道某些关键信息,反推也会变得非常容易。


比如非常著名的RSA算法,银行、邮件、聊天软件,几乎所有你能想到的涉及数字的领域都在它的保护之下,算得上妥妥的应用级了,它的加密原理使用的就是单项陷门函数。



加密时只需要按照公钥的数据求幂再求余就可以得到密文。举个简单的例子,比如需要加密的数字是5,公钥是(7,33),只需要按照公钥的数据将明文5求7次方再对33求余,可以求得密文14。


如果想按照怎么加密就怎么解密的思路逆推明文,第一步反推就会卡住,因为对33求余得14的数有无限多种可能,这也意味着这样无法确定出明文到底是什么。



但如果持有私钥(3,33),我们只需要按照私钥的数据对密文再次求幂求余。就可以还原出明文5。这就实现了加密与解密过程的分离,那既然无法反推,那能不能通过公钥算出私钥呢?


来看看私钥和公钥的制作过程:


首先我们选取两个质数,质数的乘积记为N,通过欧拉函数φ(n)=(p-1)*(q-1),计算出函数φ,之后我们选取一个整数E,E既要满足1私钥则通过计算E的模φ(n)乘法逆元求得。


当我们在只知道公钥的情况下,想推算出私钥,必然需要得到最开始的两个质数。


因为这里为了方便大家理解所取质数比较小,而通常情况下,这个质数是非常大的,即便是我们在公钥里可以知道两个质数的乘积,但想通过因式分解逆推出两个质数,按照现有的计算水平至少要算到这期视频破千万。



不过理论上量子计算机倒是行,额……除非你能在量子计算机上凑齐4096个逻辑量子比特来有效运行Shor算法。但由于量子需要错误纠正,你操作的量子计算机至少需要数百万个物理量子比特。



额,目前最先进的也仅有数十到数百量子比特的规模。这也意味着未来几十年内暴力破解类似RSA算法中的单向陷门函数基本没戏。


所以,对现在的我们而言,加密算法已经很强大了,但这万万不代表着绝对的安全。


最后


因为这些强大的加密算法只能保证你银行卡里的钱不被随意篡改。


但如果使用者防范意识不够强,在某些网站输入了自己的密码,又或者用同样的用户名和密码注册了很多不同的app,这些都极有可能被黑客拿来暴力破解。



回看密码学的每个时代,似乎人一直都是严谨密码的最大漏洞。


正如美国的密码学学者布鲁斯·施奈尔所言:“安全就像链条,它取决于最薄弱的环节。”


在信息安全的世界里,技术可以构建起高墙,而在人类的世界里,富有情感成了安全里最大的漏洞。


虽然密码学很枯燥,但我们仍满怀热情,希望更多人知道,意识到,提高警惕保护好自己,这才是现代密码学的终门。


图片、资料来源

密码学的发展和技术—肖微

古典密码术—谭亦夫宋培非李子臣(北京印刷学院)

数学不好也能听懂的算法—技术蛋老师

恺撒密码,完美加密,与现代密码学初探—乐正垂星

基于单向陷门函数的加密算法——郭姝施滔滔张新玉

《图解密码技术》——结城浩著周自恒译

密码争夺战——小浪底不浪


本文来自微信公众号:差评X.PIN (ID:chaping321),作者:橙子,视频制作:B站差评君,美编:焕妍

本内容为作者独立观点,不代表虎嗅立场。未经允许不得转载,授权事宜请联系hezuo@huxiu.com
如对本稿件有异议或投诉,请联系tougao@huxiu.com
正在改变与想要改变世界的人,都在 虎嗅APP
赞赏
关闭赞赏 开启赞赏

支持一下   修改

确定