【计算机网络】应用层协议Https

文章目录

  • 前言
  • Http
  • 加密方法
    • 对称加密
    • 非对称加密
    • 数据摘要(数据指纹)
    • 数字签名
  • 加密方案
    • 只使用对称加密
    • 只使用非对称加密
    • 双方都使用非对称加密
    • 对称+非对称
  • 证书

前言

上一篇文章中,我们提到http是不安全的,尽管采用了cookie和session的方案,仍然有可能被中途拿走用户信息,针对http不安全的特性,https顺势诞生。

Http

http在传输过程中,完全是明文传送,这样信息很有可能被篡改和盗取,https在http基础上新增了一层加密层,保证数据安全可靠,不被篡改。

由于我们的数据包都会经过运营商/黑客的网络设备,运营商的网络设备就可以解析出我们传输的任何数据,并直接进行篡改。

加密方法

在互联网上明文传输是非常危险的,因此我们最好对数据进行加密。常见的加密方法有以下几种

对称加密

  • 采用单密钥系统的加密,同一个密钥既可以加密和解密
  • 算法公开,计算量小,效率较高

非对称加密

  • 需要两个密钥来进行加密,分别是公钥和私钥
  • 算法强度很高,加密速度非常慢。

公钥对数据加密后,形成密文
私钥对密文解密后,形成明文

私钥对明文加密后,形成密文
公钥对密文解密后,形成明文

数据摘要(数据指纹)

数据指纹(数据摘要):如图字面意思,就是利用单向的哈希函数对信息运算,生成一串固定长度的数字摘要,这个过程是不可逆的。

数据指纹不是一种加密机制,但可以判断数据有没有被篡改,因为任何一点修改都会让数据指纹大幅度变化。

数字签名

将数字摘要进行加密后,就形成了数字签名。

数字摘要也必须要加密,不然中间人完全可以把哈希值重新计算骗过我们。

加密方案

只使用对称加密

只使用方案一是不安全的,因为在交换密钥的时候我们仍然要明文传输,中间人完全有能力拿到这个密钥。同时,服务器需要维护每个客户端对应的密钥关系,也非常麻烦。
【计算机网络】应用层协议Https_第1张图片

只使用非对称加密

服务器依然要向客户端明文发送自己的公钥,这让中间人有机可乘,偷偷替换为自己的公钥B。
【计算机网络】应用层协议Https_第2张图片

双方都使用非对称加密

这种方式依然会被中间人劫持,同时还衍生出了效率问题。
【计算机网络】应用层协议Https_第3张图片

对称+非对称

方案4在3的基础上提高了效率,但依然无法避免安全问题。中间人仍然可以替换公钥A。
【计算机网络】应用层协议Https_第4张图片

证书

综合上述方案,我们发现,即使后续中间人无法干涉,但我们无法确保客户端收到的公钥一定是客户端发送的!

服务端在使用HTTPS前需要向CA机构申领数字整数,服务器将证书给浏览器,浏览器直接在证书获取公钥,证书必须具有权威性。

CA认证流程:
【计算机网络】应用层协议Https_第5张图片
签名和验证:
【计算机网络】应用层协议Https_第6张图片

那CA机构的公钥就不怕被中间人截取了吗?因为CA机构是权威机构,为了保证合法性,一般在浏览器和操作系统内部,出厂下载的时候就内置了CA的公钥。

  • 改变数据会让hash值改变,与正确的散列值不同
  • 改变签名,无法被正确的CA公钥正确解密
  • 无法自己替换证书,因为只有CA具有私钥

综上,对称+非对称+CA认证的证书共同保证了https是一个安全的协议!

公钥私钥生成

其他问题:

  • 为什么哈希值要加密?要防止中间人重新计算哈希值

  • 为什么要哈希,直接对签名加密就好了?为了节省时间。

你可能感兴趣的:(计算机网络,计算机网络,https,网络)