https

https的诞生

http是明文传输,在传输数据的过程中容易被黑客攻击,所以就有了https

https就是在应用层和传输层中间加一个加密层

加密方法

对称加密

对称加密只有一个密钥,使用这个密钥加密,解密。

过程:

客户端发送一个随机数和加密列表给服务器

服务器收到之后从加密列表中选择加密方式,再产生一个随机数,一起发送给客户端

客户端和服务端利用两个随机数和选择的加密方法生成密钥加密

缺陷:在传输过程中,密钥容易被获取,不安全

非对称加密

非对称加密分为公钥和私钥,公钥加密只能用私钥解密,私钥加密只能用公钥解密

公钥和私钥都由服务器产生

过程:

客户端发送一个随机数和非对称加密列表给服务端

服务端发送选择一个非对称加密的方法,产生随机数,以及公钥给客户端

客户端和服务端就利用这两个随机数,和公钥密钥来加密

缺陷:公钥是传输到了信道中,可以被黑客窃取,所以服务器发给客户端的消息会被窃取

     采用非对称加密效率低

非对称加密和对称加密

因为非对称加密效率太低,就采用对称加密和非对称加密相结合的方式

过程:

客户端发送一个随机数和对称加密列表,非对称加密列表给服务器

服务器发送选择的加密方法,以及一个随机数给,公钥发送给客户端

客户端收到之后,产生一个随机数,然后用传递过来的公钥加密这个随机数,然后发送给服务端

客户端和服务端就用产生的这三个随机数,以及选择的对称加密方式来加密传递的数据

因为客户端产生的第二个随机数是通过非对称加密传递的,黑客即使截取了也解不出来。

这样加密已经很完美了,但是依然存在问题,如果客户端从一开始通信的就是黑客的服务器

所以就需要对服务器的身份进行验证

数字证书

数字证书是由CA颁发的证书

加密的过程与对称加密和非对称加密组合的方式基本一致,只是服务端给客户端发送的是数字证书(公钥在数字证书中)

客户端收到服务端发送过来的数字证书之后,要验证是否是有效的数字证书。

验证方式:验证数字签名

客户端有CA的公钥,利用公钥解密,得到信息摘要A,然后才采用CA相同的hash函数来获取摘要B,如果摘要A和摘要B一致,就说明是有效的数字证书

在这个过程中CA的合法性也被验证,如果CA太小众,就验证给这个CA颁发数字证书的CA,一直向上查找。系统有内置的CA

数字证书的颁发:

公司要申请数字证书,就把自己的相关信息和公钥发给CA,CA验证公司是否合法,如果合法,对明文信息采用hash函数获得信息摘要,然后用CA的私钥加密,得到数字签名。

 

hash算法又称摘要算法

不管传入多长的字符,最后生成的字符长度总是相同的

我们常用到的加密方法md5,SHA-x

例如

用户的密码以及身份证信息等存储的到数据库中时,最好采用加密的方式存储,避免数据库被攻击时,黑客直接看到用户私密信息

用户从网络上下载文件的时候,避免文件被黑客替换

都是不可逆的,不能通过生成的加密字符串逆推得到密钥

但是需要防止彩虹表注入,即黑客知道某些字符串加密之后的字符串,然后采用暴力推导的方式获取真正的密码。

采用了加盐的方式来解决这个问题,因为盐是随机的,而且是黑客不知道的,

 

如若内容有误,请务必指正

posted @ 2020-08-10 15:13  kkkllo  阅读(410)  评论(0)    收藏  举报