美文网首页区块链大学区块链研习社
杨白劳黄世仁密码算法发展史

杨白劳黄世仁密码算法发展史

作者: 夏之绘 | 来源:发表于2018-08-10 15:59 被阅读8次

    友情提示:本文使用Markdown编写,黑色背景文字可能需要横向拖动才能看清全文

    杨白劳想告诉外地打工的喜儿黄世仁欺压自己的事实,当然是不想让黄世仁及其手下知道的,杨白劳只会写汉语拼音,不会写汉字,他的信息是:

    huang shi reng qi ren tai shen xi er kuai hui lai jiu ba ba ba ba xian zai hen ji
    黄世仁欺人太甚,喜儿快回来救爸爸,爸爸现在很急
    

    他有以下方法可以把信息送出去,

    1、掩耳盗铃法

    直接写在纸张上,放在信里密封好,托人递给喜儿。

    别人拆了信就能看到信息,基本没防护。

    2、字母偏移法

    和喜儿之间有个字母偏移的约定,比如今天是7月3号,当月第3天,则abcd字母依次偏移3位,成为defg。对原来的信息进行字母偏移后,信息变得面目全非,看上去很安全。

    字母偏移法
    原文:huang shi ren qi ren tai shen xi er kuai hui lai jiu ba ba ba ba xian zai hen ji
    密文:KXDQJ VKL ....
    

    这里的3其实就是秘钥。
    只要耐心的黄世仁及他的家丁,将25种平移方法都尝试一遍,原信息就水落石出了。

    顺便说下,这就是历史上赫赫有名的凯撒密码。
    黄世仁的破解方法就是暴力破解(brute-force attack)法,由于密钥种类太少,他只是用了一点点暴力就解决问题了。

    3、字母映射法

    你也可以叫它简单替换密码。

    和喜儿之间还有另一个字母映射的约定,比如a->W,b->Y,c->H,d->F,26个字母都有不重复的映射关系,对原信息相应处理,这次似乎很安全了。


    字母映射法

    然而狡猾的黄世仁依然通过通过特殊手段破解了密码,他是怎么做到的呢?他是通过词频攻击实现破解的。比如因为爸爸写给女儿的信,那么爸爸这个词出现的频率就会高一点(还有女儿),根据上面的映射关系,可以看到密文里有很多sd组合,可以得出sd->ba,即s->d,d->a。这样就有两个字母被破解了,使用该手法可以逐渐破解所有密文。

    注意: 词频攻击破解手法,前提是密文样本量要充足,可以根据词频推出字母映射关系。如果密文只有短短的如下信息

    TAJ VJW
    

    你能看出来密文里写的是"hui jia(回家)"吗?
    因此,我们可以认为如果密文很短的话,杨白劳可以把信息安全传给喜儿。

    4、黑科技字母映射法

    心灵手巧的杨白劳制造出了一台密码机器,取名“恩尼格玛”。(别问我为什么他能造出密码机,还要种地)这也是一台字母映射的机器。当键盘上的某个键被按下时,这个字母被加密后的密文字母所对应的小灯泡就亮了起来。如果只是简单的映射,那么和前面的方法二三并没有什么区别,这次杨白劳做了几重防护:


    恩尼格玛密码机
    • 由于每天初始化密码机的时候,都要根据一张表设定很多参数,当然这些参数每天都不一样。所以今天按下a,d亮起来了,明天就可能换成q亮起来。
    • 每次按下按键后,机器中的转子就会转一圈,映射关系又会发生变化。所以,第一次按键按下a,d亮起来了,再按下a,就换成q亮起来了。


      image.png

    神通广大的黄世仁家丁,通过国际友人的帮助还是破解了这台看上去无懈可击的“恩尼格玛”,具体怎么破解的,请大家移步这个链接。这台“恩尼格玛”其实是二战德国设计的密码机器,原理远比我上面说的复杂,破解功臣就有赫赫有名的图灵,有一部电影讲了这个破解的故事——《模仿游戏》。

    5、对称加密算法

    杨白劳苦心孤诣,研究出了对称加密算法。他将信息和加密密钥一起经过特殊加密算法处理后,使其变成很复杂的加密密文发送出去。喜儿收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。

    对称加密算法使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密,这就要求解密方事先必须知道加密密钥。

    黄世仁这次真的没辙了,是杨白劳棋高一着。一切似乎很完美,然而似乎哪里不对?

    是的,问题来了,杨白劳怎么把密钥安全送出去呢?放在信封里吗?一切似乎又回到了原点...
    有人可能会说,喜儿和杨白劳见一面把密钥拿到了不就好了吗?是的,那再想想我们寄信是为了什么呢?

    6、非对称加密算法

    杨白劳绝不认输,呕心沥血研究出了终极级大杀器,非对称加密算法。

    这种算法需要两个密钥:公开密钥(publickey)私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。

    整个过程如下:

    • 喜儿生成一对密钥,并将其中的一把作为公用密钥向杨白劳公开;
    • 杨白劳使用该密钥对信息进行加密后再发送给喜儿;
    • 喜儿再用自己保存的另一把专用密钥对加密后的信息进行解密。

    由于公钥是公开的,所以寄送公钥的纸张连信封都不用装,甚至可以抄送黄世仁一份!

    其实有点像喜儿有很多带锁的箱子(公钥),还有一把能开这些箱子的“万能钥匙”(私钥),她把箱子发给杨白劳甚至黄世仁,杨白劳可以把信放在箱子里,只有喜儿可以开.

    事情到了这里似乎终于圆满了,杨白劳终于可以通过非对称加密给喜儿说点悄悄话了。然后,还是有一个很大的问题没有解决,不知道你发现了没有?

    黄世仁冒充杨白劳写信咋办?

    公钥谁都可以得到,狡诈的黄世仁写了这样一封信给喜儿(偷懒,汉语拼音部分省去)

    喜儿,我在家里很好,宅心仁厚黄世仁成天来我家送温暖,你在外安心。
    就是最近猪圈翻新,需要点钱,我没有银行卡,你打到黄世仁卡上。
    卡号:6323998XXXXXXXX
    

    在损失了一笔血汗钱后,杨白劳痛定思痛,又想出了一个大杀器:

    7、数字签名

    杨白劳想到刚刚发明的非对称加密还有另一种妙用:
    首先,杨白劳用自己的私钥对一段无关紧要的信息加密(比如自己的名字“杨白劳”),然后把密文和明文发送给喜儿,喜儿使用杨白劳的公钥解密,如果能够成功解密,且解密的内容和明文一样,就可以证明信息确实是杨白劳发出的。

    后来杨白劳发现数字签名还可以用于和黄世仁之间的交易,黄世仁数字签名的交易,他是无法抵赖的。

    从恶如流的黄世仁并没善罢甘休,他又想出了新的坏点子:

    黄世仁篡改信息咋办?

    黄世仁懒得破解杨白劳的密文,他用喜儿的公钥重新加密了一条诈骗信息,然后加上真实的杨白劳的签名,发出去了。一件惨案,又要发生了。

    8、哈希算法

    惨痛的损失再次教做人。杨白劳真的快变成白劳了。魔高一尺,道高一丈,他又想出了一个妙招。
    哈希算法。

    他想出一种将所发信息生成摘要的方法,即无论多长的信息,最后都会很快变成256个字节的摘要。而且就算黄世仁得到了这256个字节,反向去推原信息也是不可能的。

    配合上面所发明的签名算法使用,这次终于安全了。

    • 杨白劳先用喜儿的公钥将将明文加密,生成密文
    • 杨白劳再将密文用哈希算法生成摘要,将摘要用自己的私钥加密,生成摘要的密文,与密文一起传送给喜儿。
    • 喜儿用杨白劳的公钥才能解密摘要的密文,然后用HASH函数对收到的密文产生一个摘要信息,与解密的摘要信息对比。
    • 如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过,因此数字签名能够验证信息的完整性。
    • 确认完整性后,喜儿再用自己的密钥解密密文就好了!

    过程比较复杂,我们通过一张图来展示:


    过程图示

    万事大吉!!


    只是一张美女图

    一张图讲解上述密码学演化过程:

    密码学演化过程

    相关文章

      网友评论

        本文标题:杨白劳黄世仁密码算法发展史

        本文链接:https://www.haomeiwen.com/subject/esflbftx.html