• Linux网络:HTTP 与 HTTPS



    全文约 1689 字,预计阅读时长: 5分钟


    前言

      浏览器的难度成本特别高,不亚于任何一款工业及软件。由于某年谷歌内核开源,才有了百花争鸣的局面,导致前端的标准有八成一样,剩下的两成自由发挥。有人的地方,便有市场,有市场便会有斗争。

      HTTP的报文可以通过某些应用程序,以代理劫持浏览器的方式,进行HTTP请求抓取。无论是GET 方法还是 POST 方法传输的报文都是一览无遗。只有经过加密的数据,才能保证在理论上是安全的。
    在这里插入图片描述


    数据指纹

    • 一个文本内容,用哈希算法提取出文本中的部分内容,将此文本发送给对方,用同样的算法,也能提取到相同的部分内容,这部分内容叫做摘要。
      • 对摘要再进行特定的加密得到的数据,就叫做数据指纹。MD5对摘要再加密形成的指纹数据长度是确定的。
      • 凡是对原始文本做任何修改,进行摘要形成指纹后,得到的指纹数据差别会非常大。
      • 登录时,服务端数据库中的数据指纹和你的指纹数据进行对比;还有采取 “ 密码加盐 ”等方法。

    对称加密 | 非对称加密

    • 对称加密:加密和解密都用一个密钥。非对称加密:公钥加密,私钥解密;或者私钥加密,公钥解密。
      • 异或运算,是一种简易的加密算法。
    x ^ y = z; 
    z ^ y = x;
    // x 是数据,y是密钥 z是加密之后的结果。
    
    • 1
    • 2
    • 3
    • 所有的密码学加密算法,是和CPU算力相关。如果向破解一个加密的数据,只要我们的算力足够,就大概率可以破解。何为安全?安全就是破解的成本 远大于 破解的收益,因为强大的算力是需要强大的成本的。

      客户端与服务端进行通信时,对称加密意味着对方必须知道你的密钥。密钥也是数据,客户端在进行发送数据之前,必须先将密钥给对方。非对称加密中,一般公钥是公开的,私钥必须保存。

      那么http选择什么种类的加密算法呢?不能使用对称加密,因为第一次的交换密钥就是一个大问题。可以使用两个公钥私钥算法解决,但需要 所有的 客户端和服务端提前内置公钥和私钥,这样只能用私钥解密,可以保证单向的数据安全。其中对称加密效率快一些,非对称加密效率特别低。因此需要将两者通过某种方法组合一下,便有了在密钥协商阶段:用非对称加密解密算法,加密通信阶段用对称加密解密算法。


    密钥协商 | 加密通信

    • 前期ssl握手期间,使用非对称加密,来交换对称加密的密钥;通信期间,采用对称加密保证数据安全。
      在这里插入图片描述

    中间人攻击

    • 中间人在http发起请求后,截取服务端返回的明文公钥 A;因为此时的通信是裸奔状态。之后把原本服务端的公钥A换成自己的公钥 M 返回给客户端。
    • 客户端以为自己获取到的服务端的公钥A,但其实是M。于是就将自己的对称密钥D,用公钥M加密,再发送给服务器;
    • 此时唯有中间人的私钥m,才可以解开;截取请求以后,解密得到客户端的密钥D。中间人再将客户端密钥D,用A公钥加密;返回给服务端。
    • 中间人,服务端都得到了客户端的对称密钥D,浑然不知。
      在这里插入图片描述

    安全证书

    • 如何确认对方发来的公钥是合法的,没有被篡改?此时需要有权威的机构(CA机构)对网站、服务器进行合法认证,颁发数字证书。
      • 用证书的目的是为了证明服务端发过来的公钥是合法的。
    • 那么如何证明证书是合法的、而且没有被篡改过?证书与服务器公钥之间进行怎样的配合呢?
      • 颁给服务端的证书的找摘要,用CA机构的私钥加密,用CA公钥解密获取摘要。只要对证书的内容有任何修改,指纹的变化就非常大,CA公钥解不开指纹。
      • 客户端通过对比证书摘要 和 指纹揭秘之后的携带的摘要是否相等,来判定是否篡改过。
      • 同时也证明了证书的合法性。
    • 申请 与 颁发证书流程:

    在这里插入图片描述

    • 颁发证书过程:
      在这里插入图片描述
    • 客户端对服务端发送过来的证书进行认证:
      在这里插入图片描述

    在这里插入图片描述

    • 证书返回给客户端的过程中,也是明文传送的。中间人如果修改了证书的数字指纹,客户端用且只用CA的公钥解密进行证书认证时,造成的现象是解不开。
    • 中间人监听,攻击也是有成本的;如果拿不到对称密钥就对数据进行破坏,此时服务端便会发现并进行反追踪等等…

      因此世界上的任何一份证书+指纹,没有任何一个人可以修改。因为没有CA的密钥,无法重新二次生成指纹。

    • 操作系统、浏览器出厂时,内置了各种权威机构的根认证机构的各种证书(公钥)。OS、浏览器、CA认证机构利益不冲突,互相促进。
      在这里插入图片描述

    寄语

    • 计算机世界的任何名词,都有相应的软、硬件提供底层支持,计算机的发展与现实世界中的商业竞争密不可分。
    • 下一篇:UDP 与 TCP 协议
  • 相关阅读:
    超强满血不收费的AI绘图教程来了(在线Stable Diffusion一键即用)
    【TypeScript】语法详解 - 类型操作
    拓端tecdat|R语言高级图像处理
    java框架-Spring-扩展原理
    DIVFusion:首个耦合互促低光增强&图像融合的框架
    c语言中常见的数学函数
    记一次生产频繁发生FullGC问题
    【死磕slam14】slambook2第五讲 详解stereoVision.cpp
    idea+springboot+findbus
    2022年11月华南师范大学自考本科计算机信息管理系统加考实践题目
  • 原文地址:https://blog.csdn.net/WTFamer/article/details/126492179