https__0">https 简介
https 也是一个应用层协议,他是由 http 和 SSL 组成的(在 http 的基础上进行加密,把原本http 的明文传输变为了密文传输),简称为 https。
加密的方式大体分为两大类,分别是对称加密和非对称加密。
对称加密
对称加密就是只生成一个密钥,这个密钥既是用来加密,也是用来解密的。
大致流程如下:
首先客户端生成一个密钥,然后通过网络传输发送给服务器,服务器先保存起来,之后两者之间传输的数据均由这个密钥进行加密或者解密。
https://i-blog.csdnimg.cn/direct/672e9c593c0e44cc9f0240ddb02d6780.png" alt="在这里插入图片描述" />
非对称加密
由于对称传输使用的密钥是直接公开在网路中的,如果此时有一个路由器被黑客劫持,那么就可能会被黑客篡改信息,造成不良的影响,如下图:
https://i-blog.csdnimg.cn/direct/1a5250cd5359462b8a860bb23150147e.png" alt="在这里插入图片描述" />
因此如果密钥只用一个并且是公开传输,其实很不安全,这时候引入非对称传输。
非对称传输使用两个密钥,一个是公钥,另一个是私钥,公钥就是和上面的对称传输的密钥类似,是公开出去的,而私钥是自己保存的,不对外公开的。
公钥既可以用来解密,也可以用来加密,私钥也是,但是公钥和私钥两者只能做其中一件,例如,如果使用公钥来加密,那私钥就是用来解密的,如果私钥是用来加密,那公钥就是用来解密的。
公钥和私钥由服务器生成,服务器会把公钥公开出去,私钥会自己保存。
https://i-blog.csdnimg.cn/direct/8681c2c0b39d4a53a0317a6749cd7522.png" alt="在这里插入图片描述" />
由于非对称加密消耗的算力比较大,所以一般我们使用非对称加密的是对称加密产生的密钥,不涉及庞大的业务数据。
对称加密则是针对业务数据加密的,只要非对称加密安全,就能保证对称加密的密钥不会泄漏,也就保证了此次会话的安全性。
中间人攻击
非对称加密也不一定安全,黑客可以利用设备伪装成服务器,给客户端发送假冒的公钥,如下图所示:
https://i-blog.csdnimg.cn/direct/a8a682f8ffec4f08a89bdbb36c3278ed.png" alt="在这里插入图片描述" />
这就是中间人攻击。
数字证书
为了避免发生中间人攻击,我们需要验证从服务器获得公钥是不是来自服务器的。
在服务器使用https 之前,会像CA机构进行权威认证,申请一份数字证书。
服务器把证书传输给浏览器,浏览器从证书里获取公钥,证书就如身份证,证明服务端公钥的权威性
数字证书的制作:
首先CA机构会使用非对称加密算法生成公钥和私钥,使用私钥来对数字证书进行加密,数字证书包含服务器的域名、公钥、数字签名、证书所有者、证书有效日期等等,通过算法把这些数据进行加密,客户端通过公钥进行解密验证,只要出现错误就会弹出警告这个网站不安全。
首先公钥的传输不是通过网络传输的,而是在电脑安装系统的时候就会把公钥一同保存到电脑里,这样黑客就无法进行中间人攻击伪造假证书。
有了数字证书之后,服务器和客户端之间的通信如下图所示:
https://i-blog.csdnimg.cn/direct/73c92912aa7447f98eff75b946615430.png" alt="在这里插入图片描述" />
在对称加密基础上引入非对称加密,在非对称加密的基础上又引入了数字证书,这样就保证了我们的数据传输的安全性。
理解数字签名:
数字签名本质上就是校验和,首先对一串数据进行哈希函数运算获得散列值,然后使用CA自己的私钥进行加密散列值,然后这串原始数据和加密过的散列值会一起存放在数字证书里,客户端使用CA的公钥对散列值进行解密获得校验和1,对原始的数据使用相同的散列函数运算得到校验和2,如果这两个校验和是一致的就说明签名是合法有效的。
客户端验证数字证书的步骤:
首先判断证书是否过期
其次判断证书的发布机构是否可以信任(操作系统中已内置的受信任的证书发布机构)
最后验证证书是否被篡改:从系统获取该证书机构的公钥,对签名进行解密获得校验和1,然后计算整个证书的hash值,得到校验和2,判断两个校验和是否相等。相等则说明证书没有被篡改过。
为什么黑客篡改不了数字签名,因为一旦篡改,里面的校验和也要跟着改,黑客没有CA的私钥,无法进行正确的加密,这样客户端使用公钥解密就会发现两个校验和对不上。