国密分组密码的设计特征
1 简介
SM4 分组密码的工作模式是中国国家密码管理局于 2012 年发布的对称分组密码算法,采用 128 位分组大小和 128 位密钥长度,与 AES 类似。
作为分组密码,SM4 可以结合多种工作模式(Modes of Operation)来处理任意长度的明文数据。这些模式决定了如何将明文分成块、如何处理块之间的依赖关系,以及是否提供额外功能如认证或完整性保护。
用户查询中列出的 8 种模式为:ECB、CBC(假设“CBCCFB”为 CBC 和 CFB 的连写)、CFB、OFB、CTR、GCM、CCM 和 XTS。
2 加密分类
- 国密分组密码加密模式的特征
SM4算法作为国密标准分组密码,主要特征包括:
分组长度:128位(与AES相同)。
密钥长度:128位。
轮数:32轮非线性迭代结构。
加解密对称性:加解密算法结构相同,仅轮密钥使用顺序相反。
设计理念:
采用Feistel网络结构(与DES类似),而非AES的SPN结构。
强调安全性与软硬件实现效率的平衡。
工作模式:
支持国际通用的ECB、CBC、CFB、OFB、CTR等模式。
国密标准中定义了适用于特定场景的自定义工作模式,如用于加密与MAC生成的复合模式。
3 加密模式的特殊设计(国密标准)
- SM4-CTR模式:
支持并行计算,适用于高速数据加密。
*SM4-CBC模式:
需配合填充规则(如PKCS#7)使用,保证数据完整性。
*SM4-GCM模式:
支持认证加密(AEAD),在物联网、通信协议中常用。
- 其他类型的密码加密
** 1. 对称密码
流密码(Stream Cipher):
对数据流逐位/逐字节加密。
国密标准:ZUC(祖冲之算法),用于4G/5G通信加密。
其他示例:RC4、ChaCha20。
** 2. 非对称密码(公钥密码)
使用公钥加密、私钥解密。
国密标准:
SM2:基于椭圆曲线密码(ECC),用于数字签名、密钥交换、加密。
SM9:基于身份密码(IBC),无需数字证书。
其他示例:RSA、ECC、ElGamal。
** 3. 哈希函数与消息认证码
哈希函数:
国密标准:SM3(杂凑算法),生成256位哈希值,用于数字签名与完整性验证。
其他示例:SHA-256、MD5(已不安全)。
消息认证码(MAC):
如HMAC-SM3、GMAC(与GCM模式配合)。
** 4. 密码协议与混合加密
密钥交换协议:
如SM2密钥交换协议、DH协议。
混合加密:
结合对称加密(高效)与非对称加密(密钥管理),如使用SM2加密SM4的密钥。
注意:需安装支持 SM4 的库(如 tongsuopy)。纯 Python 实现 GHASH 和 SM4 较慢,不推荐生产使用。
另一个选项:GmSSL-Python(ctypes 绑定 GmSSL C 库),示例类似但接口略不同。
4 小结
本文概要说明分组国密这些模式并非 SM4 独有,而是标准的分组密码模式,但 SM4 可以无缝应用它们。以后将详细解读每个模式,包括其定义、工作原理、数学表示(简化版)、优缺点、安全考虑,以及在 SM4 中的典型应用场景。
- 点赞
- 收藏
- 关注作者
评论(0)