《网络(一):简单易懂的Https工作原理》
“记少不记多,才能记得更多”,所以本文绝不拷贝大量理论知识,只有核心。
文章结构
1、http与https
http到https,他们到底有何不同,我们需要简单的对这两种协议进行了解。
1)http协议:是tcp/ip协议簇中的一种协议,所以想要了解http还是得从tcp协议说起,由于tcp的三次握手、四次挥手机制保证了数据传输的可靠性。网络上对于tcp协议的介绍太多了,请百度。
2)https协议 可以理解为https = http+ssl;那么什么是ssl,它是一种安全机制、即在网络传输前对身份进行认证,对传输的数据进行加密解密处理。
3)http与https比较
http和https它们的基础协议都相同、http是明文传入、不对身份进行校验,是不全的,https对传输数据进行加密,对请求方身份进行认证,确保数据传输安全,由于对数据的加解密需要耗费一定时间,所以https的速度低于http。
2、http存在漏洞
为何弃用http,而使用https?
由于http不对服务器身份进行验证、传输数据容易被篡改,但它本分没有丝毫的感知,这样就很容易受到攻击,此时客户端和服务器还是正常进行着数据交互,只是数据已经被篡改了。
image.png
3、对称加密和非对称加密
因为https的工作原理是基于这两种解密方式展开的。所以只有了解对称加密和非对称加密才够理解https的工作原理,以及为何这么做的原因
1)对称加密(也叫私钥加密),是指加密和解密使用相同的密钥的加密算法。它的缺点是加密和解密的密钥相同,在传输过程中容易被获取密钥。
2)非对称加密,是指加解密算法不同,非对称加密算法有两个密钥:公开密钥(public key)和私有密钥(private key);并且加密密钥和解密密钥是成对出现的。公钥对数据进行加密且它是公开的,私钥对数据进行解密且它是私有的。因此在传入过程中即便被获取了公钥也无法获解密该密文数据。
4、https的工作原理
采用对称加密对数据进行加密,然后将加密后的数据data和密钥key一起传给服务器,服务器根据key对数据进行解密。
image.png由于对称加密的密钥和解密的密钥相同,如果该通信通道被破解,那么密钥和密文都暴露于黑客手中,自然就能轻易的对密文进行解密了。
显然采用非对称加密更加的安全,如下图所示,服务器把公钥传输费客户端,客户端对数据进行加密处理,然后将加密后的密文传输给服务器,由于服务器拥有唯一的私钥,只有它才能加密该密文数据,这样可以保证数据的安全。
image.png
对称加密不够安全,非对称加密安全但是加解密速度远慢与对称加密,特别数据传输数据量较大的情况。那么https到底采取哪种加密方式呢?
答案是:两种方式结合使用
1.[Server]生成一对密钥:公钥和私钥,“PublicKey”,“PrivateKey”
2.[Server]服务端将公钥(PublicKey)发送到客户端
3.[Client]生成一个对称密钥(ClientKey),然后用ClientKey加密数据。
4.[Client]使用公钥(PublicKey)加密ClientKey.这时,ClientKey是安全的,只有服务器拥有PrivateKey对其进行解密
5.[Client]发送用ClientKey加密后的信息及用PublicKey加密过的ClientKey到服务端
6.[Server]服务端使用PrivateKey解密加密过的ClientKey,得到解密后的ClientKey,并用ClientKey解密消息密文。
整个过程,加密密文都是安全的,综上,https的原理就是,用对称加密方式加密传输数据,用非对称加密方式对 对称加密的密钥进行加密,保证了该密钥的安全也就保证了由该密要加密后的数据的安全。