网络基本知识-公钥、密钥、数字证书
客户端 = > 服务端: 加个微信~
服务端 = > 客户端: 你礼貌吗?
客户端 = > 服务端: 加不加?
服务端 = > 客户端: 我的微信号:mahuatengshishabi(此时服务端用RSA非对称加密算法的私钥进行了加密,私钥只有服务端保存)
客户端 = > 服务端: 是的,我找的就是mahuatengshishabi,是你没错(此时客户端用公开的公钥解密了服务端加密的内容,验证了服务端的身份)
Problem :
在上面的例子中,黑客无法冒充服务端给客户端发数据,因为私钥只有服务端有,所以黑客加密内容发给客户端,客户端用公钥是无法解开的。
但是有个问题喔,就是因为公钥是公开的,黑客是不是就可以通过公钥解开服务端发给客户端的 “微信号” 了,说明这也是不安全的。
第一步:客户端 = > 服务端: 加个微信~
第二步:服务端 = > 客户端: 你礼貌吗?
第三步:客户端 = > 服务端: 加不加?
第四步:服务端 = > 客户端: 我的微信号:mahuatengshishabi(此时服务端用RSA非对称加密算法的私钥进行了加密,私钥只有服务端保存)
第五步:客户端 = > 服务端: 是的,我找的就是mahuatengshishabi,我已经申请你的好友了(此时客户端用公开的公钥解密了服务端加密的内容,之后我们的通讯通过 对称加密进行 ,然后把 对称加密算法和密钥 用 RSA公钥 加密发了过去)
第六步:服务端 = > 客户端: 好的,我已经同意了(此时服务端用对称加密算法和密钥进行加密)
第七步:客户端 = > 服务端: ok,我们已经是好友了(此时客户端用对称加密算法和密钥进行加密)
Problem :
在上面例子中,第五步客户端把堆成加密算法和密钥通过RSA的公钥进行加密,发给了服务端,这点的做法是,除了真正的服务端以外,其他人无法解密,因为私钥只有服务端才有,服务端收到数据后,用私钥进行解密,后续用对称加密进行通讯。
第一步:客户端 = > 黑客: 加个微信~(此时就被黑客在某个路由节点截取了)
第二步:服务端 = > 客户端: 先转500(此时把黑客生成的公钥发给客户端,黑客持有私钥)
第三步:客户端 = > 服务端: 已经转了~(此时客户端用黑客的公钥进行加密)
第四步:服务端 = > 客户端: 我的微信号:mayunshishabi(此时黑客用RSA非对称加密算法的私钥进行了加密,私钥只有服务端保存,公钥公开)
第五步:客户端 = > 服务端: 好的我已经加了,同意下(此时客户端用黑客的公钥解密了黑客加密的内容,【 这里无法验证服务端身份 】,之后我们的通讯通过 对称加密进行 ,然后把 对称加密算法和密钥 用 RSA公钥 加密发了过去)
第六步:服务端 = > 客户端: 不同意,再转500 (此时黑客用对称加密算法和密钥进行加密)
第七步:客户端 = > 服务端: 小丑竟是我自己(此时客户端用对称加密算法和密钥进行加密)
..........
我们用chorme浏览器进入,打开证书:
可以看到证书的相关信息