教你一个传纸条不被班主任抓住的法子(续集)

前情回顾:教你一个传纸条不被班主任抓住的法子

抱怨

“小明,我觉得你上次教我的那个非对称加密法运算太复杂了,而且为了密钥对的安全性,我不得不挑了些大素数去用,计算器都算不过来了……”小明都还没坐下,就看到小红忙不迭地抱怨起来了。

“是的呢,我最近也发现这样太折腾。”小明似乎也有点hold不住的样子,附和道。

看到小明竟然也没有抵赖,一改过去贫嘴的毛病,小红反倒觉得有点不好意思起来了,轻声安慰道:“小明你的非对称加密还是非常巧妙的,上次我在数学课上知道费马小定理的时候都没想到竟然还能这样使用。”

“不瞒你说,我已经想出了一个两全其美的方案。”小明故作神秘,不紧不慢地从书包里面掏出了草稿纸。

快速加密

“我们可以用简单的移位加密。”小明飞快地在草稿纸上写起来,“比如说,当明文是‘hello’,所有字母往后移一位,就是‘ifmmp’。”

看到小红欲言又止的样子,小明补充道:“我知道这个方法有隐患,万一班主任手痒起来一个一个去试,或者对着密文一通发呆通过字母排布发现出什么端倪,就会解密了。”

小红知道小明显然已经有了稳妥的方案,没有打断小明,继续耐心听讲。

“下面来关键内容了!”小明成竹在胸,“我可以先跟你约定一个密钥(1,2,3,4),意思是让明文的每个字母逐个按照密钥去进行移位,那就是这样……”

担心小红没看明白,小明还很贴心地画了一个表格。

明文 移位 密文
h 1 i
e 2 g
l 3 o
l 4 p
o 1 p

交换密钥

“我明白啦!”等小明的表格列完,小红恍然大悟,“而且这样解密也很容易,只要把过程逆着过来就行。”

小明也对自己这个杰作很是满意,自谦了一下:“我也只是站在巨人的肩膀上,这就是被古代人玩坏的古典加密法啦。”

“但我觉得我们这个密钥也不能长期用同一个,总觉得不安全。”小红显然是尝过班主任的厉害,心有余悸。

“还记得我们上次说过的非对称加密方法吗?”小明难掩心中的得意,扶了一下眼镜,继续说,“我们每次传消息的时候,都先拟定一串移位加密的密钥,并且用非对称加密的办法把它加密了,岂不妙哉?”

“妙啊!”小红喜不自胜,“等我把移位加密的密钥解密出来,后面我们的聊天内容就可以用简单的移位加密进行了,是吗?”

心花怒放的小明再也不装了,得意洋洋地接过话头:“这样子加密解密的运算量就会少很多,而且我们每次聊天都用不同的移位密钥,别人想要暴力破解的难度就会大大增加!”

“小明YYDS!”

中间人攻击

“你们不能低估了人心的险恶!”

没想到一直有人在身后,小明和小红都吓了一跳,回头一看,竟然是班长。

班长丝毫没有觉得不好意思,来到二人跟前,继续说道:“最近我已经发现了班里面有一些班主任的狗腿子在搞事情,好些同学在传纸条的时候着了道。”

小明大吃一惊,问道:“难道是我的非对称性加密法有破绽?”

“也不怪你,毕竟你还是太嫩了。”班长少年老成,连嗓音也是充满磁性,“你有没有想过一种可能,小红给你的公钥其实并不是小红的……”

“没可能,我们是面对面交换的公钥!”小红一听,连忙辩解道。

“但有些同学因为嫌麻烦,没有面对面交换公钥,叫上了其他同学去帮忙传递,就在这步骤上出了问题。”

“啪!”小明一拍额头,一脸痛苦,显然是意识到问题所在,“我果然还是低估了人性。”

“这是怎么回事?”小红似乎没反应过来。

“设想一下,”班长站到了小红和小明中间,慢慢解释起来,“如果你们俩找我帮忙传递纸条和公钥,我使坏把我的公钥给了你俩,然后你们还信了,会怎样?”

“啊!”小红花容失色,“那我用班长你的公钥加密了信息,交给你加密后的纸条,你自然也可以知道内容……”

“不仅如此,班长解密后,再用我的公钥再加密一次给到我,我自己收到消息后也丝毫不会察觉到问题。”小明补充道

“你以为这就完了?”班长痛心疾首,显然是想到了什么不愉快的回忆,“我在中间还可以篡改消息,把(1, 3, 1, 4)改成(4, 1, 9),这误会就大了。”

班长认证

看着小明和小红方寸大乱的样子,班长又突然觉得于心不忍,安慰他们说:“你们也不用太担心,同学们信任我选了我当班长,我自然责无旁贷。”说完,班长拿出了一个小本本,继续说道:“小明你上次推广的那一套非对称加密法,我也研究了一番,我发现我可以反过来用。”

“确实没问题,公钥和私钥简单来说就是费马小定理里面的两个对φ(n)同模的数。”小明嘴上说道,心中对班长的佩服又多了一分。

班长打开小本本,说道:“来,小明小红你们两个,把你们的公钥告诉我。”

尽管不知道班长葫芦里卖什么药,小明和小红还是照办了。

“算上你们俩,我已经把全班同学的公钥都收录了,并且用我自己的私钥加密……”,只见班长掏出计算器一顿猛按,随后在本本上记下了计算结果,并在旁边标注了小明和小红,继续说,“我会把小本本的内容和我自己的公钥公开,当你们需要给谁传纸条的时候,就用我的公钥把收件人的公钥解密出来。我在收录同学们公钥内容的时候,会严格核实各个同学的身份。”

小明和小红都瞪大了好奇的双眼,隐约觉得有点不对劲,但一时半会又反应不过来。

“我知道你们在担心什么。”班长不以为忤,耐心解释道,“我这个小本本是用82年的牛皮纸做的,而且上面的笔迹只有我可以写出来,没有人可以仿冒。”

“所以说,只要是记在这个82年的小本本上的信息,就是经过班长您的加密和认证,对吧?”小红询问道。

“没错!要是你们哪个人要更换自己的密钥对,也记得要找我重新登记公钥信息。只要是没有经过我的认证,你们都可以视作不安全的通信。”班长神色肃然,似乎是在交代一件很重要的事情。

小明和小红肃然起敬,给班长敬了一个少先队队礼,齐声说:“班长辛苦了!”

“为同学们服务!”班长回礼道。

“班长你对我们同学们这般慈爱,以后我就叫你‘CA’吧!”小明又回到了那副嬉皮笑脸的样子。

“好,那我就是你们的CA!”班长收到了来自同学的肯定,胸前的红领巾仿佛又鲜艳了一些。

笔者后记

没想到随手瞎写三个小学生的对话就把TLS的基础原理给演绎了出来,虽然是有点尬聊和牵强附会,但好歹也算是完稿了。

而在目前主流方案里面,对称加密时使用的是AES,但因为加密步骤演绎起来太复杂,如果强行写在故事里面反而有点怪诞,就用了古典加密法去推进剧情。

十一长假的即兴小创作。