HTTPS加密流程

尹相辉 (yinxianghui66) - Gitee.com

文章目录

目录

文章目录

一、HTTPS

二、HTTPS加密过程

1.对称密钥

2.非对称密钥

3.中间人攻击

4.证书 


一、HTTPS

HTTPS可以理解为就是在HTTP上多加了一层加密层  

在我们使用HTTP的时候往往都是明文传输 这就导致数据可能在传输过程中被篡改

HPPS就是为了保证数据传输的可靠性 在HTTP的基础上进行加密 进一步保证安全

二、HTTPS加密过程

1.对称密钥

对称密钥就是一个密钥key 可以对数据进行加密和解密 使用对称密钥对数据进行加密 传输给服务器 服务器再使用对称密钥解密拿到数据 这样可以一定程度上保证数据的安全 但是会有一些问题,我的服务器如何拿到这个密钥? 还是需要网络传输 但是传输密钥也会被截获 所以就出现了非对称密钥来解决

HTTPS加密流程_第1张图片

 

2.非对称密钥

非对称密钥分为两个密钥 一个公钥(pub)  一个私钥(pri) 我们可以用任一方进行加密或者解密(但是一方加密时  只能用另一方解密) pub+ 明文->密文 pri+密文->明文 或者pri+明文 ->密文 pub+密文->明文

这样我们就可以将私钥存储在服务器中 不进行网络传输(也就没有被篡改的风险) 客户端问服务器密钥是多少? 服务器返回一个公钥 客户端拿到这个公钥 之后都按照这个公钥进行加密 传输加密的数据 服务器拿到加密数据就可以使用服务器的私钥进行解密 拿到数据  这样即使黑客截取到了加密的数据 因为没有这个公钥对应的私钥 就无法进行解密篡改数据

HTTPS加密流程_第2张图片

3.中间人攻击

但是非对称密钥也是有问题的 这么想 一开始是客户端问服务器公钥是多少??  此时黑客截取了这个消息 冒充服务器返回了一个黑客自己的公钥pub2 然后将原本的数据发给服务器 服务器返回服务器的公钥pub1(黑客截取下这个消息 不发送给客户端) 此时客户端收到的是黑客的pub2 他无法辨别对面是不是服务器 所以就只能使用pub2进行加密数据 发给服务器 此时黑客再次截取 此时的数据是pub2加密的 所以黑客可以使用pri2解析拿到数据 再伪装成客户端,使用pub1进行加密发给服务器 服务器收到了数据使用pri1正常进行解析 但是数据已经全部被黑客截取了。。。

HTTPS加密流程_第3张图片

4.证书 

为了解决中间人攻击等问题 我们引入了证书  也就是一开始问服务器公钥是什么? 此时不问这个了 问服务器你的证书是什么?返回一个证书

证书中有许多属性 其中就包括 公钥 网站的信息 签名等等

客户端拿到整数后 关键是怎么对整数进行验证

证书中有个签名属性 这个属性是权威机构使用私钥进行加密的 此时客户端使用操作系统内置权威机构的公钥解析 拿到这个签名中的校验和 和 客户端对自己属性重新进行计算校验和 对比两个校验和 如果相同 则证书未被篡改 此时就可以信任

此时黑客就没有办法了 即使他冒充客户端/服务器 拿到了整数 想要对整数中的任何数据进行修改 就会导致校验和(根据证书中的属性计算)和签名中的校验和不同 就可以发现数据被篡改了

如果黑客想要篡改签名 也是没有用的 因为黑客拿不到权威机构的私钥 就无法对签名进行修改(其实可以改 但是传输到客户端 客户端使用权威机构的公钥解密就会发现解密不了从而也就是不安全的) 只能读取 不能修改 进而保证安全

HTTPS加密流程_第4张图片

 


以上就是本文的全部内容了,如果有任何问题欢迎私信改正或交流哦~欢迎大佬们.感谢您的支持

                ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        HTTPS加密流程_第5张图片                        

 

你可能感兴趣的:(HTTPS,网络,https,http,javaee)