zoukankan      html  css  js  c++  java
  • 浅尝https

    HTTPS

      http超文本传输协议,所以的东西都是明文传输,容易被拦截,被攻击,我们希望能对通话内容进行加密,那么因此而生,出现了https

      https:在http的基础上新增加了SSL层

      先放图

      

    // http 超文本传输协议
    // https 加密的超文本传输协议

    // 对称加密
    浏览器生成一个秘钥,然后将秘钥传输给服务器,之后每次传输浏览器都使用该秘钥加数据加密传输给服务器
    服务器使用得到的秘钥解密加密的数据,因为使用的是同一个秘钥所以称为对称加密
    缺点 秘钥容易被截取,难么也相当于裸奔了

    // 非对称加密算法 RSA
    秘钥分成公钥和私钥 公钥是大家都知道的,私钥是要保存好,谁都不能告诉的。 经过公钥加密的数据,只有通过对应的私钥才能解密
    浏览器有自己的公钥和私钥,服务器也有自己的公钥和私钥
    1浏览器拿到服务器的公钥,将数据加密,传送给服务器,服务器用自己的私钥解密,拿到传输数据
    2服务器也可以拿到浏览器的公钥,加数据加密,传输给浏览器,浏览器通过自己的私钥,将私钥解密,拿到服务器返回的数据
    这样一来秘钥就不会被截取了,所以的信息也都加密了

    缺点 RSA加密,比较慢,比对称加密慢个几百倍,所以需要改进

    // 非对称加密和 对称加密结合
    浏览器生成一个秘钥,将其作为数据,通过非对称加密传输给服务器,服务器通过自己的私钥,拿到这个对称加密的秘钥
    之后数据传输我们就用对称加密,对称加密的秘钥也有了

    完美了解决了,数据加密,也防止了秘钥被拦截 ,good

    // 中间人攻击

    中间人截取服务器给客户端发送的公钥,将中间人的公钥发给客户端,那么客户端用中间人的公钥加密的数据,就能被中间人解密,
    中间人拿到服务器的公钥,加密数据传输给服务器,服务器也能拿到客户端的数据,并且毫无察觉,数据其实已经被截取了。

    // 解决中间人攻击,也就是要确认对方身份信息

    // CA 有信度的公正中心

    服务器将自己的公钥,认证信息,其他消息,用hash算法生成 消息摘要
    服务器将消息摘要找CA ,用ca的私钥对齐进行加密 生成数字签名
    然后服务器将 公钥,认证信息,其他消息组合的混合消息和数字签名组合成数字证书,发送给客户端
    然后客户端拿到该数字证书
    客户端用相同的hash算法将混合消息生成消息摘要,
    客户端拿到CA的公钥,将数字签名进行解密,得到服务器生成的消息摘要,进行对比,就知道有没有被串改
    这要就完美的防止了中间人攻击

    总结一下,https的整个过程

    客户端像服务器发送请求
    1.客户端想服务器请求公钥
    2.服务器将数字证书,包括公钥key,数字签证(数字签证是通过CA私钥加密的)等信息 返回客户端
    3.客户端验证服务器信息,通过CA的公钥解密数字签字,验证公钥key是否是服务器的,
    4.客户端生成对称加密秘钥,通过服务器的公钥加密传输给服务器
    5.服务器得到信息,通过自己的私钥,解密数据,得到对称加密的秘钥
    6.双发都知道秘钥了,可以开始加密传输数据了

  • 相关阅读:
    ORM 实现数据库表的增删改查
    数据库表设计(一对多,多对多)
    Razor模板引擎
    文件的上传(表单上传和ajax文件异步上传)
    生成验证码封装(新版)
    MD5加密
    反射的一些基本用法
    数据的增删改查(三层)<!--待补充-->
    linux文件的硬连接和软连接
    linux磁盘用满的两种情况
  • 原文地址:https://www.cnblogs.com/czkolve/p/11646504.html
Copyright © 2011-2022 走看看