文章目录
- 一、什么是HTTPS协议
- 二、理解关键字
- 三、为什么要加密
- 四、常见的加密方式
- 1.对称加密
- 2.非对称加密
- 五、如何进行加密?
- 1.只使用对称加密
- 2.只使用非对称加密
- 3.双方都使用非对称加密
- 4.使用对称加密+非对称加密
- 5.对称加密+非对称加密+CA证书认证
- 5.1数据摘要(数据指纹)
- 5.2数字签名
- 申请证书
- 数字签名形成过程
- CA证书的认证过程
- 回到方案5
一、什么是HTTPS协议
HTTPS协议是HTTP协议在应用层的基础上,加上一层加密层形成的协议。
二、理解关键字
- 1.加密就是把明文(要传输的信息)进行一系列变换,生成密文的过程。
- 2.解密就是把密文再进行一系列变换,还原成明文的过程。
三、为什么要加密
未被劫持时:
被劫持后:
下载链接就被替换成了qq.com。
在互联网上,?明文传输是比较危险的事情!!!
HTTPS?就是在?HTTP?的基础上进行了加密,?进一步的来保证用户的信息安全
四、常见的加密方式
1.对称加密
采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密,特征:加密和解密所用的密钥是相同的。
举个例子:
客户端要给服务器发送一个明文数字5,但是不想直接发送一个数字5,而是经过密钥加密后,发送的是一个密文数字7。
服务器接收到密文7后,需要使用与客户端相同的密钥来进行解密。
特点:算法公开、计算量小、加密速度快、加密效率高。
2.非对称加密
非对称加密会有一个公钥,一个私钥,明文经过公钥加密后,这个世界上只有唯一一个私钥能对该密文进行解密。而反过来,使用私钥对一个明文进行加密后,也只有唯一一个公钥可以对该密文解密。
公钥是指:公开的密钥,私钥:不公开,自己保存的密钥。
特点:效率低,算法复杂,计算量大。
五、如何进行加密?
1.只使用对称加密
然而,会出现一个非常严重的问题。
在客户端向服务器发送请求的过程,往往需要通过路由器等网络设备,而这些设备如果被黑客入侵,就会出现下面问题。
而一旦将密钥直接发送,就会被黑客知晓,这个加密就形同虚设,所以还需要对密钥进行加密,也就是:密钥的密钥。
但此时就会产生一个问题,这样就要加无数个密钥。
方案一不安全。
2.只使用非对称加密
1.客户端获取到服务器的公钥,此时黑客也会获取到服务器的公钥。
2.客户端使用公钥加密后发送密文给服务器。黑客无法解密,因为黑客没有私钥。
3.服务器使用自己的私钥进行解密。
4.服务器再次使用自己的私钥,对另一个明文进行加密发送给客户端,此时黑客获取到密文,使用服务器的公钥进行解密。获取到了服务器发送给客户端的明文,极有可能篡改。
总结:方案二也不安全,仅仅在客户端向服务器发送密文时安全,服务器向客户端发送密文时会被黑客截取解密。
3.双方都使用非对称加密
- 1.客户端发送自己的公钥C给服务器
- 2.服务器发送自己的公钥P给客户端
- 3.客户端使用服务器的公钥P进行加密,服务器使用自己的私钥P’进行密文解密
- 4.服务器使用客户端的公钥C加密,客户端使用自己的私钥C’进行密文解密
整个过程看似黑客都无法破解密文,因为黑客没有私钥。
然而仍然是不安全的,还有效率太低。
具体怎么不安全,后面说。
4.使用对称加密+非对称加密
这个方案先来解决效率问题。
1.在前期,服务器直接发送公钥P给客户端,即使黑客获取到,也没有意义。
此时,客户端通过公钥P,对自己的对称密钥C进行加密,由于黑客没有服务器的私钥P’,也就无法获取到客户端的对称密钥C。
而在服务器获取到客户端的对称密钥C后,就使用对称加密的方式进行HTTPS请求和响应,这样效率就会提高了。
2.安全问题实际上还是没有得到解决,因为一旦黑客在最一开始就获取到了服务器的公钥P,就可以对其进行篡改,将其篡改成黑客自己的公钥和私钥。
- 1.获取到服务器的公钥P后,将其篡改,并发送自己的公钥H给客户端,公钥本身无法说明自己的可信性,客户端无法识别真伪,会误认为H就是客户端的公钥。
- 2.客户端将自己的对称密钥通过第一步获取到的"服务器"的公钥H进行加密: C+H-YYY黑客截取到报文后进行解密:YYY+H’= C,从此获取到了客户端的密钥C。
- 3.黑客再用自己曾经获取到的服务器的公钥P,将密钥C加密后发送给服务器,C+P= str ,发送给服务器,服务器使用自己的私钥P’解密后P’+str=C,获取到了客户端的对称密钥C,从此客户端和服务器使用对称密钥进行通信的所有报文信息,都暴露了。
总结:方案4存在的问题是,客户端无法认证从服务器收到的公钥P是否可信!!!
为了解决这个问题,引入了CA证书这个东西。
5.对称加密+非对称加密+CA证书认证
为了更清楚理解CA证书,先引入几个概念。
5.1数据摘要(数据指纹)
• 数据摘要,其基本原理是利⽤单向散列函数(Hash函数)对信息进行运算,⽣成⼀串固定长度的数字摘要。数字摘要并不是⼀种加密机制,但可以⽤来判断数据有没有被窜改。
• 摘要常见算法:有MD5、SHA1、SHA256、SHA512等,算法把⽆限的映射成有限,因此可能会有碰撞(两个不同的信息,算出的摘要相同,但是概率⾮常低)
• 摘要特征:和加密算法的区别是,摘要严格意义不是加密,因为没有解密,只不过从摘要很难反推原信息,通常用来进行数据对比。
举个例子:
这里有一篇文章:通过MD5算法后,生成一串固定长度的字符串XXXXXXXXXXXXXXXXXXXXXXXX,这个字符串通常会很长,这个字符串就是数字摘要。
5.2数字签名
• 摘要经过加密,就得到数字签名。
申请证书
1.申请者需要生成公钥和私钥对,私钥自己保存,公钥,申请者的域名,申请者信息(法人,名字等等),申请者的公钥,这些信息需要生成一个.csr请求文件,提交给CA权威机构进行审核。
重要的是,如果认证成功,证书的主要内容如下:
其中最重要的信息是:
- 1.公钥
- 2.数字签名
在证书的明文信息中,这个公钥信息,是属于申请者的公钥。
而实际上,还有一个公钥私钥对,是CA权威机构专属的公钥和私钥对,是用来生成数字签名的。
数字签名形成过程
关于数字签名,前面说过,就是由数据摘要经过加密后形成的。
但是这怎么加密呢???
就是通过CA机构自己的私钥进行加密的!!!
- .csr文件中的明文信息经过MD5等算法后,形成数据摘要,数据摘要再经过CA机构的私钥进行加密后,形成数字签名,数字见面跟明文信息结合起来后,就形成了证书。
这两个公钥私钥是不一样的,一个是CA权威机构自己的公钥私钥对,一个是申请者的公钥私钥对。
CA证书的认证过程
回到方案5
解释清楚CA证书后,
方案5就是在方案4的基础上,解决了公钥的可信性的问题。
CA机构是世界上唯一的能颁发认证证书的机构,除非他授权当地的一些机构,否则没有任何机构能有权限颁发CA证书。
所以,安全性就得到了保障。