深入浅出:SM4 加密算法及其多种工作模式详解

深入浅出:SM4 加密算法及其多种工作模式详解

在这里插入图片描述

引言

SM4 是中国国家密码管理局定义的对称分组加密算法,广泛应用于无线局域网安全协议等领域。作为中国商用密码算法之一,SM4 采用 128 位的分组长度和密钥长度,提供了高效且安全的加密性能。本文将介绍 SM4 算法的基础,并深入探讨常见的几种工作模式,包括 ECB、CBC、CFB、OFB、CTR 以及 GCM,以帮助读者理解其在不同应用场景下的优势和使用方式。


1. 什么是 SM4 加密算法?
1.1 SM4 算法的背景

SM4 是中国自主设计的对称分组加密算法,与全球著名的 AES(高级加密标准)类似。SM4 通过 128 位的密钥对数据进行加密或解密,其特点是效率高,适合硬件实现。特别是在移动通信和物联网等场景中,它的使用日益广泛。

1.2 SM4 的加密过程

SM4 的加密过程将数据块分成 128 位(16 字节)的分组进行加密,使用 32 轮加密操作,基于复杂的置换和替代(P-box 和 S-box)。由于其固定的 128 位分组长度,处理非 128 位整数倍的明文数据时,通常需要进行填充。


2. 工作模式:不同的数据加密方式

SM4 的核心加密过程是基于分组的,但在实际应用中,数据往往不是单个固定的 128 位分组,因此需要结合不同的 工作模式 来处理任意长度的数据块。工作模式定义了如何将数据分块,并控制加密块之间的依赖性。以下是常见的工作模式及其伪随机流生成机制的详细解释。

2.1 ECB(电子密码本模式 - Electronic Codebook Mode)

ECB 是最简单的加密模式,它将明文划分为独立的 128 位分组,对每个分组独立进行加密。

特点

  • 每个分组独立加密,密文与明文之间存在一一对应关系。
  • 不同分组之间没有关联,易于并行处理。

缺点

  • 安全性较低。相同的明文块总是加密为相同的密文块,容易被攻击者识别出模式。

适用场景

  • 适合处理结构化的数据(如加密图片),但不推荐用于大量的纯文本数据。
明文:  P1 P2 P3 P4 ...
密文:  C1 C2 C3 C4 ...
2.2 CBC(密码分组链接模式 - Cipher Block Chaining Mode)

CBC 通过引入链式依赖来提高安全性。它将每个明文块与前一个密文块异或后再进行加密,第一个分组需要一个初始化向量(IV)来开始链式加密。

特点

  • 每个分组依赖于前一个分组,无法并行处理。

优点

  • 安全性高,适合大多数情况下的加密需求。

缺点

  • 需要初始化向量 (IV),加密过程是顺序进行的。
明文:  P1 P2 P3 P4 ...↓   ↓   ↓IV ⊕ P1 ⊕ P2 ⊕ P3 ⊕ P4↓   ↓   ↓   ↓
密文:  C1  C2  C3  C4 ...
2.3 CFB(加密反馈模式 - Cipher Feedback Mode)

CFB 是一种流模式,允许加密不满 128 位的数据块。CFB 的基本思想是,先将初始化向量加密,然后将输出与明文进行异或操作生成密文。

生成伪随机流的步骤

  1. 初始化向量(IV):选择一个随机的 IV。
  2. 加密 IV:将 IV 输入到 SM4 算法中,生成 R1。
  3. 生成密文
    • 将 R1 与第一个明文块 P1 异或,生成密文 C1。
  4. 使用密文生成下一个伪随机流
    • 将 C1 输入 SM4,生成 R2,并以此类推。

优点

  • 能够处理流数据,安全性较高。

缺点

  • 解密过程必须顺序进行,无法并行化。
        IV -> SM4 -> R1↓P1 ⊕ R1 = C1
2.4 OFB(输出反馈模式 - Output Feedback Mode)

OFB 与 CFB 类似,但加密过程不依赖于前一个密文块。OFB 通过将上一个加密结果作为输入,生成伪随机流。

生成伪随机流的步骤

  1. 初始化向量(IV):选择随机的 IV。
  2. 加密 IV:对 IV 加密,得到 R1。
  3. 生成密文
    • 将 R1 与明文 P1 异或,生成 C1。
  4. 生成下一个伪随机流
    • 将 R1 输入 SM4 生成 R2,并以此类推。因此无须顺序执行。可以提前生成随机流。

优点

  • 非常适合流式数据加密,具有良好的并行性。

缺点

  • 如果 IV 重复,可能导致安全性问题。
        IV -> SM4 -> R1↓P1 ⊕ R1 = C1
2.5 CTR(计数器模式 - Counter Mode)

CTR 模式通过计数器生成伪随机流,每个分组的加密是独立的,因此可以并行处理。

生成伪随机流的步骤

  1. 初始化向量(IV):选择一个随机的 IV。
  2. 计数器(Counter):初始化计数器,通常从 0 开始。
  3. 生成伪随机流
    • 将 IV 和计数器结合,输入 SM4 生成 R1。
    • 递增计数器,继续生成 R2、R3 等。
  4. 生成密文
    • 将 R1、R2 与明文异或生成密文。

优点

  • 并行性强,适合多处理器系统。

缺点

  • 必须确保计数器唯一,避免重用。
        IV || CTR -> SM4 -> R1, R2, ...↓P1 ⊕ R1 = C1, P2 ⊕ R2 = C2
2.6 GCM(Galois/Counter Mode)

GCM 是一种结合了 CTR 模式和身份验证的加密模式。它提供了加密和认证功能,适合对数据进行加密时也需要验证数据完整性的场景。

生成伪随机流的步骤

  1. 初始化向量(IV):选择随机的 IV。
  2. 计数器(Counter):初始化计数器,结合 IV。
  3. 加密
    • 使用 CTR 模式生成伪随机流。
  4. 计算身份验证标签
    • 结合明文和其他附加数据,生成一个身份验证标签,确保数据的完整性和来源。

优点

  • 提供加密和认证功能,安全性极高。

缺点

  • 复杂度较高,处理时间相对较长。

3. 总结

SM4 算法是中国商用密码体系的重要组成部分,其 128 位分组加密特性和高效的性能使其广泛应用于安全通信、无线网络等领域。在实际使用中,不同的工作模式满足了各种应用场景的需求:

  • ECB 简单但安全性较低,适合结构化数据。(高安全场景不推荐使用)
  • CBC 具有良好的安全性,适合大多数应用。
  • CFB 和 OFB 将分组加密转化为流加密,适合流式数据。
  • CTR 模式不仅安全,还支持并行处理。
  • GCM 结合了加密和认证,适合对安全性要求极高的场景。

根据具体需求,选择合适的工作模式能够极大地提升 SM4 算法的实际效果。


参考文献
  1. 《中国密码标准 SM4 算法规范》
  2. 密码学相关文献及论文

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1642.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

摄像机实时接入分析平台LiteAIServer视频智能分析软件诊断噪声检测

在科技日新月异的今天,视频监控系统的应用日益广泛,从公共安全到家庭防护,从生产线管理到交通监控,视频监控已经成为现代社会不可或缺的一部分。然而,噪声问题一直是影响视频画面清晰度和可用性的关键因素。为了解决这…

NumPy安装

1.NumPy简介 NumPy(Numerical Python) 是 Python 语言的扩展程序库,支持大量维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。 NumPy 的前身 Numeric 最早由 Jim Hugunin 与其它协作者共同开发,2005 年,Travis Oliph…

推荐几款TOP级AI驱动的单元测试工具

这篇文章,我想对开发人员人员来说更有帮助,毕竟开发同学“苦单元测试久已”! 软件开发是一项创造性的工作,但其中也包含着许多乏味的任务。其中最乏味的莫过于编写“单元测试”了,用于验证软件组件是否按预期工作。单…

C#的Event事件示例小白级剖析

1、委托Delegate 首先说一下delegate委托,委托是将方法作为参数进行传递。 // 定义了一个委托类型public delegate void MyDelegate(int num);// 定义了一个啥也不干的委托实例public MyDelegate m_delegate _ > {};// 定义了一个和委托相同格式的方法public …

JWT-混淆算法

jwt - RS256(RSA SHA-256) 题目来源:DownUnderCTF2021 Web jwt 外国的比赛,找不到线上的环境了,github中有Docker,拖下来用docker生成一个本地环境 原题wp链接: https://ctftime.org/write…

物联网开发教程专栏介绍与专栏说明——列表目录查阅(持续更新)

阿齐Archie《物联网开发:完整实现单片机通信模组云服务器智能应用软件》专栏 为方便查阅学习本专栏,特整理专栏介绍与专栏说明 一、专栏介绍 物联网开发教程专栏目前有P1和P2系列,P1系列为《手把手完整实现STM32ESP8266MQTT阿里云APP应用》…

Matlab实现海洋捕食者优化算法(MPA)求解路径规划问题

目录 1.内容介绍 2.部分代码 3.实验结果 4.内容获取 1内容介绍 海洋捕食者优化算法(MPA)是一种基于自然界海洋生物捕食行为的优化算法,它通过模拟海洋捕食者如鲨鱼、海豚等在寻找猎物时的群体协作和个体行为来探索最优解。MPA因其出色的全局…

数据结构(8.5_1)——归并排序

定义 归并:把两个或多个已经有序的序列合并成一个 归并后: 2路归并 把两个或多个已经有序的序列合并成一个 m路归并 m路归并,每选出一个元素需要对比关键字m-1次 归并排序(手算) 代码实现 算法效率分析 2路归并的“归并树”——形态上…

软件开发详解:基于食堂采购系统源码开发现代化供应链管理平台实战

下文,小编将从食堂采购系统源码切入,为大家详细解答如何开发现代化供应链管理平台。 一、供应链管理平台的功能需求 供应链管理平台的设计,需要满足企业从原料采购到成品交付的完整业务流程。以下是基于食堂采购系统源码开发的供应链管理平…

【99.9%解决】vue3+vite+typescript+vscode使用@alias路径别名配置不正确导致红色波浪线的解决办法

相信很多人设置了别名“”后在编辑器内产生了大量的红色波浪线,警告无法读取相关模块。网上针对这个问题都没有好好分析原因,并且提供真正理解之下的解决方案。我在历经各种失败后,总结出这篇文章,希望对大家有所帮助。 当然我因为…

「Mac畅玩鸿蒙与硬件18」鸿蒙UI组件篇8 - 高级动画效果与缓动控制

高级动画可以显著提升用户体验,为应用界面带来更流畅的视觉效果。本篇将深入介绍鸿蒙框架的高级动画,包括弹性动画、透明度渐变和旋转缩放组合动画等示例。 关键词 高级动画弹性缓动自动动画缓动曲线 一、Animation 组件的高级缓动曲线 缓动曲线&#…

BFS解决拓扑排序(3)_火星词典

个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 BFS解决拓扑排序(3)_火星词典 收录于专栏【经典算法练习】 本专栏旨在分享学习算法的一点学习笔记,欢迎大家在评论区交流讨论💌 目录…

QT中使用图表之QChart绘制X轴为日期时间轴的折线图

显然X轴是日期时间轴的话,那么我们使用的轴类就得是QDateTimeAxis QChart中日期时间轴的精度是毫秒 因此图表里面的数据的x值需要是一个毫秒数,才能显示出来 --------------------------------------------------------------------------------------…

C++现代教程七之模块

优点 编译时间减少:模块消除了重复解析和编译头文件的需要,从而显著减少了编译时间。特别是在大型项目中,这一点尤为重要。更好的封装性:模块允许更严格的封装,可以明确地控制哪些符号对外可见。这有助于减少命名冲突和…

ML 系列:第 18 部 - 高级概率论:条件概率、随机变量和概率分布

文章目录 一、说明二、关于条件概率2.1 为什么我们说条件概率?2.2 为什么条件概率在统计学中很重要 三、 随机变量的定义3.1 定义3.2 条件概率中的随机变量 四、概率分布的定义五、结论 一、说明 条件概率是极其重要的概率概念,它是因果关系的数学表述&…

Spring @RequestMapping 注解

文章目录 Spring RequestMapping 注解一、引言二、RequestMapping注解基础1、基本用法2、处理多个URI 三、高级用法1、处理HTTP方法2、参数和消息头处理 四、总结 Spring RequestMapping 注解 一、引言 在Spring框架中,RequestMapping 注解是构建Web应用程序时不可…

Nginx简单安装

nginx(“engine x”)是一个具有高性能的 http 和反向代理 的 web服务器,同时也是个 POP3/SMTP/IMAP代理服务器。 web服务器:也叫网页服务器,WebServer ,主要功能是为用户提供网上信息浏览服务。 http&am…

硅谷甄选(七)属性管理模块

属性管理模块 6.1 属性管理模块的静态组件 属性管理分为上面部分的三级分类模块以及下面的添加属性部分。我们将三级分类模块单独提取出来做成全局组件 6.1.1 三级分类全局组件&#xff08;静态&#xff09; 注意&#xff1a;要在src\components\index.ts下引入。 <temp…

完美日记营销模式对开源 AI 智能名片 2 + 1 链动模式 S2B2C 商城小程序的启示

摘要&#xff1a;本文通过分析完美日记在营销中利用社会基础设施升级红利、网红与新流量平台、KOL 和私域流量等策略取得成功的案例&#xff0c;探讨其对开源 AI 智能名片 2 1 链动模式 S2B2C 商城小程序在营销推广、用户获取与留存、提升复购率等方面的启示&#xff0c;为商城…

【Hive sql 面试题】统计Top3歌单以及每个Top3歌单下的Top3歌曲(难)

表数据如下&#xff1a; 1 1 经典老歌 1 月亮代表我的心 2 1 经典老歌 1 月亮代表我的心 3 1 经典老歌 3 夜来香 4 1 经典老歌 4 我只在乎你 5 1 经典老歌 5 千言万语 6 1 经典老歌 5 千言万语 7 2 流行金曲 7 突然好想你 8 2 流行金曲 8 后来 9 2 流行金曲 9 童话 10 2 流行金…