协议

1、HTTP 协议(HyperText Transfer Protocol,超文本传输协议):是客户端浏览器或其他程序与Web服务器之间的应用层通信协议 。

2、HTTPS 协议(HyperText Transfer Protocol over Secure Socket Layer):可以理解为HTTP+SSL/TLS, 即 HTTP 下加入 SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL,用于安全的 HTTP 数据传输。
HTTPS 原理全解析
如上图所示 HTTPS 相比 HTTP 多了一层 SSL/TLS

SSL(Secure Socket Layer,安全套接字层):1994年为 Netscape 所研发,SSL 协议位于 TCP/IP 协议与各种应用层协议之间,为数据通讯提供安全支持。

TLS(Transport Layer Security,传输层安全):其前身是 SSL,它最初的几个版本(SSL 1.0、SSL 2.0、SSL 3.0)由网景公司开发,1999年从 3.1 开始被 IETF 标准化并改名,发展至今已经有 TLS 1.0、TLS 1.1、TLS 1.2 三个版本。SSL3.0和TLS1.0由于存在安全漏洞,已经很少被使用到。TLS 1.3 改动会比较大,目前还在草案阶段,目前使用最广泛的是TLS 1.1、TLS 1.2。

以上内容转发自:HTTPS系列干货(一):HTTPS 原理详解


以下内容总结来源:b站:【web安全3】【硬核】HTTPS原理全解析

1. http 明文传输

直接用http协议进行传输的过程中,数据是明文的,如果发送的数据中包含敏感数据(密码,金额)等,将会变得非常危险。
HTTPS 原理全解析

2. 使用对称加密传输

对称加密:只有一个**,假设为key。那么用key加密的数据,只能用key来进行解密。
HTTPS 原理全解析
使用对称加密进行传输,传输过程中传输的都是密文,但是依旧不安全。
因为客户端有很多,不可能为每个客户端都量身制定一个key存储在服务端,数据量太大。
因此只能服务端有一个key,用来对数据进行加密,那么黑客也是一个用户,同样可以得到这个key,大家都用一个key,那么加密与不加密就没有意义。
HTTPS 原理全解析

3. 使用非对称加密

非对称加密:有两个**,一个公钥(pKey)一个私钥(sKey),公钥和加密算法公开,私钥只有服务端知道不公开。公钥加密的数据只有私钥能解密,私钥加密的数据只有公钥能解密。
HTTPS 原理全解析
如下图中:客户端向服务端索要公钥,得到公钥后,将数据用公钥加密后发送,由于私钥只有服务端存在,因此数据只能被服务端解密,黑客无计可施。
但是当服务端给客户端发送数据的时候,因为客户端是不存在私钥的,只能用私钥进行加密。私钥加密的数据并不安全,因为公钥是公开的,黑客同样可以获取公钥,因此服务器给客户端发送的数据并不安全。
HTTPS 原理全解析

4. 对称+非对称加密

对称加密中:如果每个客户端都有一个独立的**,那么传输就安全了
非对称加密中:客户端向服务端发送数据是安全的,但是服务端给客户端发送数据不安全

将对称加密和非对称加密进行结合:
1.客户端组织一个唯一的用于对称加密的**key,通过对称加密的方式发送给服务端(安全)。
2.将数据都用key进行对称加密,然后发送,因为黑客获取不到key,不能**数据。
HTTPS 原理全解析
但是上面的方法就真的就安全了吗?还没
假设黑客从一开始就捕获了请求,一直作为中间人对数据进行转发,依旧存在问题:

如图所示,黑客从始至终都参与这客户端和服务端的数据交互,但是客户端并不知道。此时黑客便可以对数据进行修改(金额,密码)进而实现破坏。
HTTPS 原理全解析

5. CA 认证

CA 证书:CA 认证机构给服务器颁发
CA证书 = 服务器公钥 + 签名 + 颁发者与申请者信息

客户端向服务端索要CA证书,得到证书后,会对证书进行检验真伪,于是黑客不能像 4 中一样作为一个中间人存在,确保数据安全。

在用CA机构的公钥对CA证书进行解密的时候,并不需要向CA机构去索要,操作系统中会写死很多CA机构的公钥,解密后就可以得到服务端公钥。
HTTPS 原理全解析

CA 证书的签发过程

1.服务方 S 向第三方机构CA提交公钥、组织信息、个人信息(域名)等信息并申请认证。

2.CA 通过线上、线下等多种手段验证申请者提供信息的真实性,如组织是否存在、企业是否合法,是否拥有域名的所有权等。

3.如信息审核通过,CA 会向申请者签发认证文件,CA 证书。

证书包含以下信息:
申请者公钥、申请者的组织信息和个人信息、签发机构 CA 的信息、有效时间、证书***等信息的明文,同时包含一个签名

签名的产生算法: 首先,使用散列函数计算公开的明文信息的信息摘要,然后,采用 CA 的私钥对信息摘要进行加密,密文即签名。

4.客户端 C 向服务器 S 发出请求时,S 返回CA证书文件。

5.客户端 C 读取证书中的相关的明文信息,采用相同的散列函数计算得到信息摘要,然后,利用对应 CA 的公钥解密签名数据,对比证书的信息摘要,如果一致,则可以确认证书的合法性,即公钥合法。

6.客户端然后验证证书相关的域名信息、有效时间等信息;

7.客户端会内置信任 CA 的证书信息(包含公钥),如果CA不被信任,则找不到对应 CA 的证书,证书也会被判定非法。

相关文章: