目录
一、使用对称加密
1、定义
2、加密/解密过程
二、使用非对称加密
1、对称加密弱点
2、非对称加密过程
(1)、定义
(2)、加密/解密过程
三、使用证书加密
1、非对称加密弱点
2、使用证书加密过程
(1)、定义
(2)、加密/解密过程
一、使用对称加密
1、定义
只有一个密钥key,加密和解密都使用同一个密钥,速度较快。
客户端生成自己的密钥后,将key通过网络发送给服务端用于加密和解密。
2、加密/解密过程
- 客户端:明文+key=>密文
- 服务器:密文+key=>明文
客户端通过key针对要发送的数据进行加密,然后将密文通过网络传输给服务器
服务器通过key针对接收的数据进行解密,然后获取到真实数据。
此时如果黑客没有密钥key,即使拿到密文也无法读取或篡改,信息安全得到保障。
注:
服务器对应的客户端很多个,不同的客户端使用的密钥不相同。
二、使用非对称加密
1、对称加密弱点
客户端生成了自己的密钥后,通过网络把key发送给服务器,但是这个数据报也可能会被黑客截获。此时黑客就获取了密钥key可以破解/加密密文。因此对于这种弱点就需要引入非对称加密的方法来解决。
2、非对称加密过程
(1)、定义
为了保证对称密钥能够安全到达服务器,我们便引入了非对称加密用来保护对称密钥,非对称加密在对称密钥传输完成后就可以不再使用。因此客户端和服务器的业务数据传输本质上仍然是使用对称加密的方式,
(2)、加密/解密过程
服务器生成两个密钥:公钥(pub)和私钥(pri)
- 明文+pub=>密文
- 密文+pri=>明文
此时当黑客拿到被pub加密的key时,由于没有和pub配对的私钥pri,因此黑客无法解密拿不到key,于是就无法针对密文进行解析和篡改。
三、使用证书加密
1、非对称加密弱点
针对非对称加密进而发展出了中间人攻击:
- 黑客自主生成一对非对称密钥pri2和pub2
- 截获并记住客户端发送的公钥pub后,将自己生成的pub2发送给客户端
- 黑客接收到客户端发送的密文后,使用自己的pri2针对密文进行解密并拿到key
- 接着使用服务器的pub对key进行加密并把密文发送给服务器
2、使用证书加密过程
(1)、定义
中间人攻击破解的关键在于让客户端能够信任公钥,因此我们可以使用证书来保证公钥的正确性。
证书:
- 明文部分:服务器的url、证书的过期时间、颁布证书的机构、服务器的公钥pub......
- 密文部分:签名
签名的加密是先针对证书的所有属性计算一个效验和即签名,再由证书颁布机构使用自己的私钥对这个签名进行加密。
如果没有被使用中间人攻击,按照相同的算法计算得到的签名也一定是相同的,反之如果签名不同就说明原始的数据一定发生过改变。
此时黑客是无法篡改证书的:
- 获取到证书后使用客户端内置的公钥解密,然后将证书中服务器的公钥替换成自己的公钥
- 接着针对证书中的各个属性重新计算签名
- 最后黑客需要把签名重新加密,但是加密的私钥只有权威机构才拥有,所以无法重新加密,因此篡改不了。
(2)、加密/解密过程
客户端拿到证书后针对证书进行效验:
- 得到初始的签名sum1:客户端使用系统中内置的权威机构的公钥pub2,针对上述证书中的加密签名进行解密得到初始签名
- 计算现在的签名sum2:客户端使用相同签名计算的算法,通过证书中的属性重新计算得到sum2
- 判断数据是否被篡改:比较两个签名sum1和sum2是否相同,如果相同说明证书中的数据都是未被篡改过的原始数据,密钥可以使用;如果签名不同说明证书的数据被篡改过,密钥无法使用
注:上述流程的对称加密+非对称加密+证书的过程就是HTTPS=HTTP+SSL