【Python爬虫历程】HTTPS传输加密知识点

HTTP请求都是明文传输的,所谓的明文指的是没有经过加密的信息,如果HTTP请求被黑客拦截,并且里面含有银行卡密码等

敏感数据的话,会非常危险。

为了解决这个问题,Netscape 公司制定了HTTPS协议,HTTPS可以将数据加密传输,也就是传输的是密文,即便黑客在传输

过程中拦截到数据也无法破译,这就保证了网络通信的安全。

 

我们首先要知道一些密码学的知识。

(1)明文: 未被加密过的原始数据。

(2)密文:明文经过加密处理之后会变成密文,密文解密之后可以得到原始的明文。

(3)**:**是一种参数,它是在明文转换为密文或将密文转换为明文的算法中输入的参数。**分为对称**与非对称**,分别应用在对称加密和非对称加密上。

(4)对称加密:对称加密又叫做私钥加密,即信息的发送方和接收方使用同一个**去加密和解密数据。对称加密的特点是算法公开、加密和解密速度快,适合于对大数据量进行加密,常见的对称加密算法有DES、3DES、TDEA、Blowfish、RC5和IDEA。
①加密过程:明文 + 加密算法 + 私钥 => 密文
②解密过程:密文 + 解密算法 + 私钥 => 明文
其加密过程中的私钥与解密过程中用到的私钥是同一个**,这也是称加密之所以称之为“对称”的原因。由于对称加密的算法是公开的,所以一旦私钥被泄露,那么密文就很容易被**,所以对称加密的缺点是**安全管理困难。

(5)非对称加密:非对称加密也叫做公钥加密。非对称加密与对称加密相比,其安全性更好。对称加密的通信双方使用相同的**,如果一方的**遭泄露,那么整个通信就会被**。而非对称加密使用一对**,即公钥和私钥,且二者成对出现。私钥被自己保存,不能对外泄露。公钥指的是公共的**,任何人都可以获得该**。用公钥或私钥中的任何一个进行加密,用另一个进行解密。
①被公钥加密过的密文只能被私钥解密,过程如下:
明文 + 加密算法 + 公钥 => 密文, 密文 + 解密算法 + 私钥 => 明文
②被私钥加密过的密文只能被公钥解密,过程如下:
明文 + 加密算法 + 私钥 => 密文, 密文 + 解密算法 + 公钥 => 明文
由于加密和解密使用了两个不同的**,这就是非对称加密“非对称”的原因。
非对称加密的缺点是加密和解密花费时间长、速度慢,只适合对少量数据进行加密。
在非对称加密中使用的主要算法有:RSA、Elgamal、Rabin、D-H、ECC(椭圆曲线加密算法)等。

 

HTTPS在传输的过程中会涉及到三个**:

服务器端的公钥私钥,用来进行非对称加密

客户端生成的随机**,用来进行对称加密

一个HTTPS请求实际上包含了两次HTTP传输,可以细分为8步。
1.客户端向服务器发起HTTPS请求,连接到服务器的443端口

2.服务器端有一个**对,即公钥和私钥,是用来进行非对称加密使用的,服务器端保存着私钥,不能将其泄露,公钥可以发送给任何人。

3.服务器将自己的公钥发送给客户端。

4.客户端收到服务器端的公钥之后,会对公钥进行检查,验证其合法性,如果发现发现公钥有问题,那么HTTPS传输就无法继续。严格的说,这里应该是验证服务器发送的数字证书的合法性,关于客户端如何验证数字证书的合法性,下文会进行说明。如果公钥合格,那么客户端会生成一个随机值,这个随机值就是用于进行对称加密的**,我们将该**称之为client key,即客户端**,这样在概念上和服务器端的**容易进行区分。然后用服务器的公钥对客户端**进行非对称加密,这样客户端**就变成密文了,至此,HTTPS中的第一次HTTP请求结束。

5.客户端会发起HTTPS中的第二个HTTP请求,将加密之后的客户端**发送给服务器。

6.服务器接收到客户端发来的密文之后,会用自己的私钥对其进行非对称解密,解密之后的明文就是客户端**,然后用客户端**对数据进行对称加密,这样数据就变成了密文。

7.然后服务器将加密后的密文发送给客户端。

8.客户端收到服务器发送来的密文,用客户端**对其进行对称解密,得到服务器发送的数据。这样HTTPS中的第二个HTTP请求结束,整个HTTPS传输完成。

【Python爬虫历程】HTTPS传输加密知识点