在电视剧《亮剑》片尾,有这么一个剧情,李云龙长期与田雨分居,张白鹿趁虚而入,试图抢走李云龙。
突然发现,这一段可以用来解释SSL/TLS原理,再完美不过了。
假如老李长命百岁,张白鹿贼心不死,田雨成了一名计算机天才,事情会怎么发展呢?
由于工作的关系,李云龙和田雨长期分居,不过现在好了,有了计算机,彼此虽然不能见面,但可以通过网络,进行聊天,传输一些数据。
张白鹿发现了李云龙和田雨在网络上聊天,她想,毕竟两人没有面对面聊天,能不能篡改他们之间的聊天内容呢?
果不其然,张白鹿意外发现,可以把田雨传输给李云龙的数据拦下来,篡改后再发给李云龙。
“太好了,李云龙和田雨离定了!”
这时张白鹿就发动的,便是中间人攻击(Man-in-the-MiddleAttack)
后来李云龙和田雨发现不对劲,传输的数据内容,会被张白鹿篡改,但田雨和张白鹿已经撕破脸皮,也找不到她,怎么办?为了应对张白鹿的攻击,李云龙和田雨开始对数据进行加密。
田雨做了两把一模一样的钥匙,趁着休息日,到李云龙的指挥部,把其中一把钥匙交给了他。由于钥匙只有他们两人知道,所以钥匙也被称为“密钥。”
当田雨要给李云龙发送数据前,先用密钥对数据进行加密,待李云龙收到后,再使用密钥对数据进行解密。
密钥没有通过网络传递,所以张白鹿无法获取,即便传输的数据被拦截,数据内容也无法被篡改。万一哪天张白鹿真的获得了密钥,也没关系,依样画葫芦,再送给李云龙一个新的密钥就好了。
李云龙和田雨使用相同的密钥,所以这种加密算法被称之为对称加密算法。
这样一来,张白鹿的诡计落了空,无法窃取他们俩的数据了。
过了很长时间,技术不断发展,计算机计算速度越来越来快。张白鹿寻思,能不能暴力破解密钥?
还真的成功了!田雨设计的密钥长度只有56bit,在以前不可能被暴力破解,现在计算速度快,几天时间便轻轻松松搞定了!
于是,张白鹿又开始监听和篡改李云龙和田雨之间传输的数据。
怎么办?田雨能想到的第一个办法,是增加密钥长度,直接把密钥长度增加至256bit,这样一来,张白鹿不可能通过暴力破解的方法,破解密钥了。
好景不长,李云龙早就认识到读书的重要性,现在要出国留学,不可能再和田雨面对面交换密钥,而且有时候田雨还需要和其他人沟通交流,不可能跟那么多人私下见面,商量一个密钥。
有什么办法,可以既不见面,又能保证数据不被张白鹿窃取和篡改呢?
聪明的田雨又想到了一个办法。通过特定的算法,生成一个密钥对(含一个公钥和一个私钥),同时也告诉李云龙生成一个密钥对,公钥均对外公开,私钥自己留着。
当田雨要向李云龙发送数据时,先用私钥加密hash值,,再用李云龙的公钥加密数据,数据到达李云龙后,李云龙用自己的私钥解密数据,最后用田雨的公钥解密hash值,对比两个hash值,即可验证数据的完整性。
由于李云龙和田雨用不同密钥解密,因此这种算法被称为非对称加密算法。
有了非对称加密,张白鹿窃取和篡改数据难度提高了不少,但她贼心不死,钻研了几天后,又找到了新的窃密方法。
既然李云龙和田雨要交换公钥,那拦截公钥,换成自己的不就行了?
田雨要给李云龙发送消息时,用自己的私钥加密了数据的hash值,之后用张白鹿的公钥加密数据。张白鹿拦截后,便能使用自己的私钥解密数据,这时数据的内容就能看到了!
这样一来,张白鹿只要篡改完数据,再用自己的私钥加密hash值、用李云龙的公钥加密数据发给李云龙。李云龙还以为真是田雨发的数据,其实这些数据已经被张白鹿篡改过了。
一切又回到了原点。
这时候,田雨找到了师长,想让师长做保。
师长知道田雨的困难后,对田雨说:“没关系,我来做证人,保证公钥的真实性。”
于是,李云龙和田雨在传输数据前,会把自己的公钥和一些其他信息交给师长,师长用自己的私钥加密数据,加密完的数据成为数字证书,证书包含了师长的公钥。
当李云龙收到田雨传递过来的师长加密之后的数字证书后,李云龙再通过师长发布的证书,来解密田雨的数字证书,最终获得田雨的公钥。
问题又来了,怎么保证师长的证书不被劫持呢?张白鹿完全可以将一个假的证书发给田雨。
小瞧师长了!师长会把自己的证书,集成在浏览器或操作系统里,李云龙拿到浏览器或者操作系统的时候,已经有证书了,没必要从网络获取,张白鹿也就无法劫持了。
没错,师长就是颁发数字证书的机构,它会对公钥的合法性进行检验。
至此,张白鹿再也没有办法窃取和篡改李云龙和田雨之间的通信,小三上位的梦想,彻底破裂了。