一、加密知识回顾
单向加密
不可逆,只要输入的内容一样,输出的密文一定是一样的,有任何修改, 产生的密文都是不同的。例如,md5。
对称加密
加密和解密使用同一把密钥,加密解密速度特别快。例如, DES。
非对称加密
使用公钥和私钥进行加密和解密,公钥加密私钥解,私钥加密公钥解。加密、解密的过程非常慢。例如, RSA。
注:以上内容,纯粹是加密的知识,和https没有任何关系。下面我们开始讲解 https的过程。
二、通过一个需求,明白https的过程
假设:小明 ❤️小花。青春期的男女通过写情书方式交往,怕人发现,需要保密传递。
Question: 💌情书如何安全传递?
学完上面👆‘加密知识’,我们很容易想到,把通信的内容加密。
Question:💌情书什么方式加密?
首先,单向加密肯定不行,小花收到信,解不出来,这恋爱还谈个屁。
其次,对称加密是可以,小花只要有密钥,就可以把内容解出来。最后,非对称加密也是可以的,小明用自己的私钥加密,小花拿到小明的公钥,也可以把内容解出来
Question:对称🆚非对称如何抉择?
学完上面👆‘加密知识’,对称加密速度快,非对称加密速度慢。
那么,小明小花这俩人都是碎嘴子,话多的很,而去肯定也想快速交流。如果使用非对称方式加密解密很慢,那估计得郁闷死,太慢急死个人。
因此,使用对称加密方式比较快的方式最合适。小明小花,都持有同一把密钥,双方互相都能解密出来对方发的信。
小明❤️小花通信使用对称加密。假如密钥是 S🔑 ,双方都使用同一把密钥 S🔑 进行加密解密。
这样小明就可以能愉快的和小花说情话了,而且内容是加密的,加密解密的速度也很快,也很nice。
这时候,有一个情敌叫老王。在💌情书在传输的过程中,密钥 S 🔑被老王🐶截获了。小明、小花、老王,都有相同的密钥 S 🔑了。
那么,小明和小花之间没有秘密可言了,他们发的信,老王都能解开看,看完再加密,再发给小花,这还得了。
三、如何解决密钥 S 🔑在传输的过程中被截获
现在的问题变成了:小明如何把 密钥 S 🔑 安全的传给小花。 这和👆上面的问题“小明如何把情书传给小花”非常类似了。
Question:小明如何安全的把密钥 S 🔑 传输给小花?
如果密钥S的传输过程不安全,那么后面的通信就是不安全的。反之,密钥S能安全的传输给小花,那么后面的通信就是安全的。
学完上面👆‘加密知识’,我们很容易想到,把密钥 S 🔑用非对称加密。
首先,小明生成一对私钥和公钥。小明把 公钥给了小花,
方法一,👦小明用私钥对密钥 S 🔑加密,加密后的密文S0🔒传输给小花👧,小花用公钥对 密文S0🔒解密得到密钥 S 🔑。
方法二,小花👧用公钥 对 密钥 S 🔑 进行加密,加密后的 密文S0🔒传输给小明,小明用 私钥 对 密文S0🔒解密出来 密钥 S 🔑。
但是,聪明的老王🐶发现,小明的 公钥 是公开的,谁都可以下载。也就是说,老王也可以对 密文S0🔒进行解密得到密钥 S 🔑。
因此,方法一失败。方法二成功。
四、小结
为了方便理清思路,重新梳理一遍:小明选择使用效率高的‘对称加密’密钥 S 🔑方式给小花传递情书,再通过通过效率慢的‘非对称加密’🔐方式将密钥 S 🔑二次加密。而且此时‘非对称加密’工作量很小,密钥 S 🔑安全的传输给对方之后,后面的通信就直接使用对称加密了,这样效率就高了。
我们懂了:如果用非对称加密,我只要拿到谁的公钥,我和谁通信,就是安全的。比如,你有一对私钥和公钥,我只要拿到你的公钥,然后用你的公钥进行加密传输内容,只有你自己能解开,因为私钥只有你自己有。反过来说,只要你用自己的私钥加密,其它人用你的公钥如果能解开,那么证明这封信一定以及肯定是你写的。比如,你需要发一个通知,但是又要确保这个通知一定是你发的,为了怕别人在中间窜改,你可以用你的私钥对通知进行加密,其它人想看的话,通过下载你的公钥,进行解密。能解密出来,说明通知一定是你发的,其它人想在中间涂改,因为没有你的私钥重新加密,所以行不通。
当然,别以为到这,老王🐶就会轻易放弃,“没用挖补了的墙角,只有不努力的小三”。下一篇,看老王🐶如何进行反攻。
点击关注,持续更新。😍