HTTPS

目录

一、密钥加密

1、对称加密

2、非对称加密

二、HTTPS的工作过程

三、中间人攻击问题


HTTPS (全称:Hypertext Transfer Protocol Secure),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证 保证了传输过程的安全性。HTTPS 在HTTP 的基础下加入SSL,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。

HTTPS不是协议,而是通过SSL/TLS协议提供的安全连接进行的HTTP通信。

一、密钥加密

密钥是密码和明码之间的对应替代关系,分为对称密钥非对称密钥

1、对称加密

在传递信息时,信息分为明文和密文。明文是真正要表达的信息**,密文通过加密来掩盖原始信息,要得到明文就需要密钥来解析密文。**使用同一个密钥来加密和解密,就是对称加密。


2、非对称加密

非对称加密有一对两个密钥,一个为"公钥",一个为"私钥"。

用一个钥匙加密,用另一个钥匙解密。


二、HTTPS的工作过程

HTTPS加密过程,主要是对HTTP的header和body进行加密。

1、先引入对称加密

每个客户端的密钥是不同的,客户端给服务器发送信息和密钥,服务器记录每一个密钥,对信息进行解密,这种加密方式安全性不高,在通信过程中很容易被拦截,然后拿到密钥对客户端信息进行解析。

2、非对称加密

为解决对称加密安全性不高的问题,引入了非对称加密。服务器会生成一个公钥和私钥,公钥给客户端,私钥服务器自己保存,客户端再生成一个对称加密,使用服务器给的公钥对密钥进行再次加密,得到了密钥的密文。


3、既然引入了非对称加密,为什么还需要引入对称加密呢?

进行非对称加密,运算成本高,速度慢。

对称加密,运算成本低,速度块。

使用非对称加密,只是用于关键环节(传递密钥),成本可控。要是传输大量的业务数据,要使用效率高的对称密钥,如果使用非对称加密,传输效率会大幅度降低。

三、中间人攻击问题

使用对称加密和非对称加密的过程,就是HTTPS的基本盘,但是还是存在漏洞。

1、中间人攻击问题

在客户端给服务器申请公钥,服务器返回公钥的时候,黑客通过攻击中间传输信息的设备**,拿到服务器给的公钥,并自己生成一对公钥和私钥,将自己生成的公钥,返回给客户端。** 当客户端使用黑客给的公钥进行加密,传输到黑客这里,黑客就可以使用自己的私钥进行解密,再通过刚才拿到的服务器公钥加密发送给服务器,让服务器无法察觉。


2、解决中间人攻击问题(SSL协议)

关键要点: 客户端没有分辨公钥是不是中间人伪造的能力,就可以引入第三方可以被大家信任的**"公证机构"**,来证明公钥是正确的,不是伪造的。

当服务器生成公钥和私钥,就会对公证机构发出申请,申请内容包括域名、公钥等信息。公证机构就会对服务器申请的内容进行检测,通过就会完成申请,然后给服务器颁发证书,证书内容包括域名、公钥、数字签名等。

**数字签名:**公证机构颁发证书的时候,公证机构就会对证书中的各个属性进行计算,然后得 到一个校验和,并对这个校验和进行非对称加密,公证机构持有私钥,公钥发给各个客户端 设备(内置到系统中),就得到了数字签名。

客户端拿到了证书,也拿到了证书中的服务器的公钥,客户端就会验证这个公钥是否是服务器最初的公钥(是否被中间人篡改),这个过程就叫做证书的校验。

**证书的校验:**核心机制就是通过内置到系统的公钥对数字签名进行解密,得到校验和,重新计算校验和,然后和解密出的校验和进行对比。

如果校验和一致,则证书没有被修改,公钥可信,可以进行通信。


HTTPS加密的整体过程:

1、对称加密,加密业务数据

2、非对称加密,加密对称密钥

3、使用证书,校验服务器的公钥


相关推荐
李少兄12 小时前
Unirest:优雅的Java HTTP客户端库
java·开发语言·http
可乐加.糖13 小时前
一篇关于Netty相关的梳理总结
java·后端·网络协议·netty·信息与通信
吴盐煮_13 小时前
使用UDP建立连接,会存在什么问题?
网络·网络协议·udp
忆源16 小时前
SOME/IP-SD -- 协议英文原文讲解9(ERROR处理)
网络·网络协议·tcp/ip
低头不见1 天前
tcp的粘包拆包问题,如何解决?
网络·网络协议·tcp/ip
Aa美少女战士1 天前
单域名 vs 通配符:如何选择最适合你的 SSL 证书?
网络协议·https·ssl
咕噜签名1 天前
如何申请p12证书
网络协议·https·ssl
2a3b4c1 天前
SSL/TLS
网络协议·https·ssl
沫夕残雪1 天前
HTTP,请求响应报头,以及抓包工具的讨论
网络·vscode·网络协议·http
the_nov1 天前
14.网络套接字TCP
linux·c++·网络协议