• 安全机制(security) - 加解密算法 - 对称加密 - 加解密模式


    说明

    • 大部分对称加密算法支持多种加密模式,每种模式的运算结果也不相同。
    • 加解密模式是分组加密算法通用的机制,不同算法可能支持相同的加密模式,不同算法支持的加密模式也可能不同。
    • 加密和解密需要使用相同的模式才能得到正确的结果。
    • 不同的加解密算法区别在于单次加解密运算的不同,而加解密模式的不同体现在iv的使用和组与组的关联上。

    基础模式

    ECB(Electronic Code Book/电码本模式)

    • ECB 模式是加解密算法支持的最基础,最简单的模式,ECB只依赖key(秘钥)。
    • 注意:在任何情况下都不推荐使用ECB模式。

    实现原理

    • 使用key分别对每一组明文进行加密,之后按照顺序将每组加密后的数据连在一起即可,加解密过程中各组数据互不影响。
      在这里插入图片描述

    优缺点

    1. 优点
    • 简单
    • 组与组之间没有关联,利于并行计算,误差不会被传递。
    1. 缺点
    • 暴露明文的一些规律,重复的明文组会得到重复的密文。
    • 当密文被篡改时,解密后对应的明文分组也会出错,且解密者察觉不到密文被篡改了,ECB完全没有支持对密文的完整性校验。

    CBC(Cipher Block Chaining/加密分组链接模式)

    • 为了解决ECB模式重复明文组产生重复密文的问题,CBC模式使用反馈机制使每组数据加密过程链接在一起,有了关联。
    • CBC模式依赖key和iv(初始化向量)。

    实现原理

    1. 使用IV和第一组明文作异或运算,再将异或后的数据使用key加密,加密后得到第一组密文。
    2. 使用第一组密文和第二组明文作异或运算,再将异或后的数据使用key加密,加密后得到第二组密文,后面的组依此类推。
    • 注意: 初始化向量(iv)只在第一组明文中使用,所有明文组加密使用相同密钥。
      在这里插入图片描述

    优缺点

    1. 优点
    • 安全性好于ECB,不容易主动攻击,适合传输长度长的报文,是SSL、IPSec的标准,每个密文块依赖于所有的信息块,明文消息中一个改变会影响所有密文块。
    1. 缺点
    • 更复杂,运算量更大些,
    • 发送方和接收方都需要知道初始化向量
    • 加密过程是串行的,无法被并行化(在解密时,从两个邻接的密文块中即可得到一个平文块。因此,解密过程可以被并行化)。

    CFB(加密反馈模式)

    • 加密反馈模式中,数据用更小的单元加密(可以是8位,即一个字符的长度),这个长度小于定义的块长(通常是64位)。假设我们一次处理j位(j通常取8)。
    • CFB模式每一组加密后需要将密文填入下一组的iv最后面。

    实现原理

    1. 采用64位iv,iv使用key加密后生成 已加密的iv。
    2. 加密后的初始化向量(iv)最左边的j位与明文前j位进行异或运算,产生第一组密文C。
    3. 初始化向量(iv)左移j位, 将第一组密文C填入iv的最右边 j位。
    • 后面的组依此类推。

    OFB(输出反馈模式)

    • OFB模式和CFB很类似,区别在于:OFB模式是将iv加密的输出填入下一组的iv中。

    实现原理

    1. 采用64位iv,iv使用key加密后生成 已加密的iv。
    2. 加密后的初始化向量(iv)最左边的j位与明文前j位进行异或运算,产生第一组密文C。
    3. 初始化向量(iv)左移j位, 将第一组已加密的iv填入iv的最右边 j位。
    • 后面的组依此类推。

    CTR(计数器模式)

    • 计数器模式使用序号(称为计数器,通常是一个常数)作为算法的输入。

    实现原理

    1. 使用key对counter进行加密,生成已加密的counter。
    2. 使用已加密的counter与第一组明文做异或运算,得到第一组密文。
    3. counter递增(通常是增加1)。
    • 后面的组依此类推。

    总结

    1. ECB和CBC使用key加密明文,而CFB、OFB、CTR使用key加密iv。

    复杂模式

    • 基础模式(ECB、CFB、CFB等)不能提供密文的完整性和正确性保证,如果在消息传输或者黑客攻击等情况下,密文存在缺失或者部分数据错误,解密后的数据实际上是不对的,用户无法感知的,并且可能将解密后错误的数据当做明文。
    • 密文完整性和正确性的校验需要借助一类算法(MAC)的帮助。

    MAC(Message Authentication Code/消息认证码)

    • MAC是一类算法,使用秘钥(key)和消息生成固定长度的数据,也称为Auth Tag。
    • MAC跟哈希算法有点像,但比哈希要复杂,Mac的生成和验证过程都是需要密钥。

    工作流程

    1. 消息发送者(Sender)和接收者(Receiver)共享同一个Key,并且约定使用同一个MAC算法 Algorithm。
    2. Sender把要传递的消息Message使用Key和MAC Algorithm计算出MAC,将 Message和MAC一起发送给Receiver。
    3. Receiver收到Message和MAC后,将Message使用约定的Key和MAC算法 Algorithm计算出MAC_1,通过对比MAC和MAC_1 来判断消息是否已被更改。

    GMAC(Galois Message Authentication Code/伽罗瓦消息验证码)

    • GMAC是一种MAC算法,利用伽罗华域(Galois Field,GF,有限域)乘法运算来计算消息的 MAC 值。

    GCM(Galois/Counter Mode)

    • GCM模式,G是指GMAC,C是指 CTR,在CTR模式基础上增加GMAC算法校验,解决了CTR 不能对加密消息进行完整性校验的问题。

    引用

    • https://blog.csdn.net/new9232/article/details/122670049
  • 相关阅读:
    http客户端Feign
    ElasticSearch(二):ES集群安装
    编程之美1 让CPU占用率曲线听你指挥
    【C语言】二级指针的深度理解,峰值的寻找(每日小细节004)
    OpenGL -文字
    resp协议
    [JS真好玩] 嘘!我改了掘金源代码!1行代码,让表格支持page_size切换,从每页10条变为20条!
    三维重建之NeRF(pytorch)
    【无标题】灵遁者:一个好听的名字当然重要,因为这个名字代表你
    2023 收入最高的十大编程语言
  • 原文地址:https://blog.csdn.net/qazw9600/article/details/128153892