HTTPS加密流程

目录

对称加密

非对称加密

证书


既然要保证数据的安全, 就需要加密, 网络传输中不再使用明文和传输了,而是使用加密后的密文, 加密的方式有很多种, 整体可以分为两大类, 对称加密和非对称加密.

对称加密

         对称加密实际上就是通过同一个密钥, 把明文加密称为密文, 然后通过这个密钥, 将密文解密为明文.

        一个很简单的例子就是, 按位异或, 假设明文a =  1234, key = 8888, 那么, 我们对这个a\进行加密得到了密文A = a ^ key = 1234 ^ 8888 = 9834. 如果要解密, 就可以对密文A进行相同的异或操作, 也就是a = A ^ key = 1234.

        如果客户端要向服务器发送一则明文, 需要对其先进行加密, 中途虽然可能被黑客截获到, 但是因为黑客没有密钥, 所以无法对密文进行解密, 也就无法知道密文里面的有价值的信息, 只能按照原路发给目标服务器, 服务器拥有密钥, 然后就可以通过这个密钥对密文进行解密.

        但是事情并没有想象的那么简单, 我们说, 一个服务器可以对很多个客户端提供服务, 也就是说需要同时管理很多个客户端的key,而且每个人用的key必须都是不同的:

 此时, 服务器就需要维护记录:

客户端1的key为key1;
客户端2的key为key2;
.........

以此类推..

        这么多客户端, 每个人用的秘钥都必须是不同的(如果是相同那密钥就太容易扩散了, 黑客就也能拿到了). 因此服务器就需要维护每个客户端和每个密钥之间的关联关系, 这也是个很麻烦的事情~

        因此就出现了一种比较理想的方式, 也就是, 在服务器和客户端建立连接的时候, 就提前协商好这次的密钥是什么.

         客户端首先将自己的密钥信息发送给服务器, 但是这个过程中被黑客截获到了, 然后服务器收到之后发送确认信息, 客户端收到这个确认信息之久,就知道了服务器已经知道密钥是多少了, 然后客户端才会发送加密后的密文给服务器, 黑客此时同样可以截获这个密文, 但是, 如果黑客已经拥有了密钥, 那么就可以获取到里面有用的信息.

        所以此时如果把密钥的信息也是明文传输的话, 那么前面的加密操作就形同虚设.

        因此密钥的传输也需要加密传输. 这就需要另外有一个加密方式了

非对称加密

        非对称加密要用到两个密钥, 一个叫做 "公钥", 一个叫做 "私钥".

  • 公钥, 就是告诉客户端, 明文需要通过何种方式加密
  • 私钥, 用来解密被加密过的密文

        公钥和私钥是配对的. 最大的缺点就是运算速度非常慢,比对称加密要慢很多

  1. 服务器生成本地非对称密钥, 将公钥发送给客户端, 然后客户端使用此公钥来加密明文
  2. 客户端在本地生成对称密钥, 通过公钥加密, 然后发送给服务器
  3. 客户端将明文发送给服务器, 即使是被黑客截获, 但是没有服务器的私钥,是无法还原出原文的
  4. 服务器收到密文之后, 使用本地的私钥进行解密.
  5. 服务器获取到对称密钥, 后续通信只需要对称密钥即可, 即使截取到密文也不知道密钥是多少

        但是这样, 也并非绝对安全, 假设, 这个公钥如果被黑客给伪造了呢? 如果是伪造的, 那么该如何判别呢?

        如果使用被伪造的公钥加密, 然后被截取后, 黑客就可以直接还原里面的内容

        这就需要下面的证书了:

证书

        在客户端和服务器刚一建立连接的时候, 服务器给客户端返回一个 证书.这个证书包含了刚才的公钥, 也包含了网站的身份信息.

        证书里面有这些属性:

  • 服务器的URL
  • 证书的过期时间
  • 颁布整数的机构
  • 服务器自己的公钥pub
  • ..........
  • 加密后的签名

什么是签名? 签名就是, 先对证书里面的所有属性, 计算出的一个校验和

再由证书颁布机构使用自己的私钥对这个签名进行加密:

 对比于非对称加密, 要想要让公钥不被伪造, 就将其换成证书, 如上图,

        客户端拿到证书之后, 首先会对证书的内容进行校验, 计算出校验和,然后得到了初始的签名,然后使用权威机构的公钥进行解密, 得到的签名为初始的签名sum1,sum2

        如果sum1和sum2不一样, 那么就可以说这个证书被篡改过,否则就是未被篡改过, 那么黑客是否可以为伪造一个证书呢?

        事实上是不行的, 在黑客拿到证书之后, 黑客虽然可以进行解密被加密的签名, 伪造证书之后(也就是将证书中的公钥换成自己的, 然后重新计算校验和, 也就是签名), 计算出的签名是无法加密的, 因为如果你要加密, 就需要拿到权威机构的私钥才能加密, 但是这个私钥只在权威机构哪里存在, 且没有直接暴露在网络当中.

        如果客户端这边识别到签名没有被加密, 那么就会发现这个证书已经被篡改

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值