目录
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、使用证书,校验服务器的公钥