阿华代码,不是逆风,就是我疯
你们的点赞收藏是我前进最大的动力!!
希望本文内容能够帮助到你!!
目录
一:HTTP为什么不安全
二:HTTPS加密过程
1:密码学中的概念
(1)明文
(2)密文
(3)密钥
(4)对称加密
(5)非对称加密
(6)公钥和私钥
2:HTTPS工作过程
(1)引入对称加密
(2)非对称加密
(3)证书加密
一:HTTP为什么不安全
在介绍HTTP的那一篇文章中我们提了一嘴,HTTP是明文传输,不安全的。HTTPS在HTTP的基础上,引入了一个加密层(SSL)来保证安全性——防运营商劫持篡改Referer~(可以参考这篇文章)
【网络原理】——HTTP请求头中的属性-CSDN博客
比如我们想要下载一个音乐播放器,点击了下载,蹦出来的并不是这个音乐播放器的下载链接,而变成另一个的了,很常见的挂羊头卖狗肉~
二:HTTPS加密过程
1:密码学中的概念
(1)明文
传输的真实的数据,表达的实际意思
(2)密文
给明文经过加密之后得到的结果就是密文,不直观,不易理解
(3)密钥
可以理解成对照表,比如我们将字符A设置成明文,我给字符A按照ASCII码值进行加密,我们通过ASCII码值表对照,知道了密文97所代表就是A.
(4)对称加密
加密和解密使用的同一个密钥,我们举个简单的例子哈,看下面的图(这种感觉,我称之为偷感)
(5)非对称加密
加密和解密使用的是两个密钥,比如K1密钥和K2密钥,这两者成对的,
使用K1来加密,此时就是K2来解密;使用K2来加密,此时就是K1来解密
(6)公钥和私钥
公开出去,大家都知道的叫做公钥;私自保留的,只有自己知道的叫私钥
2:HTTPS工作过程
由引入我们知道,运营商劫持的根本原因在于“明文传输”,于是我们也提出了好几种加密对策,主要针对header和body进行加密
(1)引入对称加密
通过对称加密的方式,针对传输的数据进行加密操作
关键点:
①对称加密,客户端和服务器使用的是同一个密钥
②不同的客户端,需要使用不同的密钥
③TCP建立连接后,在进行SSL握手(交换/传输密钥),最后才是加密传输
注:每个客户端连接到服务器的时候,都要自己生成一个随机密钥,在传输告知给服务器(服务器也可以生成,调换一下角色,关键在于密钥的传输),如果黑客入侵路由器拿到了这个密钥,意味着加密操作就没有意义了。
解决方式:对咱们得密钥也进行加密
(2)非对称加密
主要目的就是为了对“对称密钥”进行加密,确保密钥的安全性
关键点:
①传输问题上,可以让服务器生成公钥和私钥,把公钥传输给客户端,自己手持私钥
②非对称加密消耗CPU的资源远远高于对称加密,所以不能大规模使用
③黑客入侵不了的根本原因:不能对公钥进行解密
注:可以理解成——我持有信箱和和钥匙(私钥),邮递员持有信箱的锁(公钥)
(3)证书加密
问题引入:中间人攻击
上述非对称加密任然有问题——服务器可以生成一对公钥和密钥,那么黑客也可以模仿生成一对假的公钥和秘钥进行冒充
这里我们设置对称秘钥为key,非对称秘钥中公钥为pub,私钥为pri。
解决方式:引入证书
问题关键就是,客户端在拿到公钥的时候,有办法验证这个公钥是真的,不是冒充的
证书:是一个结构化的数据(里面包含很多数据,比如:服务器的主域名、公钥、证书的有效期,以字符串的形式呈现),需要服务器从第三方公正机构进行申请
注意:
①证书的信息是基于字符串提供,便于后面我们使用算法进行计算
②证书的私钥只有公正机构有,如果黑客用公钥解密证书,并用自己的私钥加密签名,客户端会解密失败,所以黑客无法重新生成加密的签名。
③私钥对应解密的公钥系统电脑自带就有
④校验和是对证书中的字段用(CRC,MD5等)算法得到一个较短的字符串
⑤客户端拿到证书做两件事:对证书签名解密得到校验和1,对证书的字段进行计算得到校验和2,再比较两者