https

HTTPS是HTTP的安全版,即HTTP下加入SSL层。目的是为了保证信息的安全性。A给B发了一条消息,只有A和B知道,即使中间被拦截了也无法解读消息!

使用什么加密算法

1.  对称加密算法:A与B使用同一个秘钥,A向B传输信息使用秘钥对信息进行加密,B使
    同一秘钥对信息进行解密,如果这一个秘钥只有A和B知道,那么就可以保证信息传
    输的安全。
2. 非对称加密算法:有一个私钥和一个公钥,用私钥加密的信息只有用公钥可以解密,
    用公钥加密的信息只有用私钥才可以解开

如果传输数据的时候使用非对称加密,服务器保存一份私钥,将公钥发给各个客户端,那么各个客户端的公钥都是一样的,客户端A和服务器交互的过程中,对信息进行了加密,客户端B也可以使用相同的公钥对服务器的数据进行解密。如果要做到客户端A和服务器传输数据时只有客户端A和服务器能够解密对方信息,那就必须使用对称加密算法,而且客户端A和客户端B的秘钥还不相同!也就是说服务器给每一个客户端的秘钥都不相同,然后使用对称加密算法对数据加密解密这样就可以做到每一个客户端的数据只有自己和服务器能够知道。

如何传输秘钥

所以对数据传输时使用对称加密算法。那么问题来了!服务器在给每一个客户端分配秘钥时,如果这个时候被中间人拦截下来,中间人也知道了客户端的秘钥,就可以拦截客户端的所有数据并对其进行解密!所以就得想一个办法在传输秘钥的时候不能让第三方知道。不让第三方知道其实也简单,在传输秘钥时在加一次密就可以了。那么又会产生一个新的问题,给秘钥加密的秘钥如何保证传输呢?如果再加一次密还是解决不了问题!

所以在协商秘钥的过程中可以使用非对称加密算法,尽管服务器向客户端传输数据是不安全的,但是客户端向服务传输数据时只有服务器可以解密。客户端使用公钥加密自己传输数据要用的对称秘钥告诉服务器,只有服务器能够解密客户端要用的秘钥,之后传输数据都使用此秘钥对数据加密,这样就可以做到数据传输的安全

客户端如何得到公钥

上面已经分析出,客户端使用公钥加密自己的秘钥传给客户端。如果这个公钥不安全呢?第三方可以伪冒服务器给客户端传输公钥,然后又可以伪冒客户端给服务器传输秘钥。那我们如何保证客户端拿到的公钥是真正的服务器发给我们的而不是被掉包的呢?所以客户端必须要验证这个服务器的真伪!这时候就要有一个权威机构了,这里的权威机构能够验证服务器的真伪

第三方权威机构证书

服务器将自己的公钥给权威机构,权威机构将服务器的公钥加密后生成证书给客户端。这时候客户端可以根据证书得到服务器的公钥,怎么得到的呢?

浏览器和操作系统会维护一个权威的第三方机构列表(包括它们的公钥)。因为客户
端接收到的证书中会写有颁发机构,客户端就根据这个颁发机构的值在本地找相应的公
钥。权威机构的证书上写着如何根据证书的内容生成证书编号。客户端拿到证书后根据
证书上的方法自己生成一个证书编号,如果生成的证书编号与证书上的证书编号相同,
那么说明这个证书是真实的。然后再获取证书中的服务器的公钥

最后总结一下

HTTPS要使客户端与服务器端的通信过程得到安全保证,必须使用的对称加密算法,但是协商对称加密算法的过程,需要使用非对称加密算法来保证安全,然而直接使用非对称加密的过程本身也不安全,会有中间人篡改公钥的可能性,所以客户端与服务器不直接使用公钥,而是使用数字证书签发机构颁发的证书来保证非对称加密过程本身的安全。这样通过这些机制协商出一个对称加密算法,就此双方使用该算法进行加密解密。从而解决了客户端与服务器端之间的通信安全问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值