国密加密算法
SM2(非对称加密算法)
- 类型:是非对称加密算法,基于椭圆曲线密码实现。
- 特点:包括有数字签名算法、密钥交换协议,公钥加密算法等部分,其中256位的安全强度比RSA 2048位高,但运算速度更快。
- 使用场景:使用在数字签名,密钥交换,公钥加密等场景,在电子商务、电子政务领域应用广泛,电子合同签署过程中的数字签名。可以确保合同签署方的身份真实,还能保证合同未被篡改修改。
SM2的签名验签(私钥用作签名;公钥用于验签)
- 应用场景
- SM2用于数字签名和验签,签名使用私钥对数据进行加密,验签使用公钥对签名进行解密并且验证数据的完整性和真实性,
- 具体实现:
- SM2算法的数字签名过程包括生成签名和验证签名两个步骤。生成签名时,首先对消息进行哈希处理,然后使用私钥对哈希值进行签名,生成一对签名值。验证签名时,使用对应的公钥和消息的哈希值对签名进行验证。
SM2的加密解密(私钥用户解密;公钥用于加密)
应用场景
金融支付 | 网银加密、移动支付签名 | SM2 + SM4 + SM3 |
---|---|---|
电子政务 | 公文加密传输、身份认证 | SM2 证书 + SM4-CBC |
物联网 | 设备安全配网、固件签名 | SM2 轻量化实现 + SM4-ECB |
区块链 | 数字资产交易签名 | SM2 + Keccak 哈希 |
医疗健康 | 患者数据加密、电子处方签名 | SM2 + SM4-CBC |
SM3(哈希算法)
- 类型:哈希算法(生成数据的唯一“指纹”)
- 特点:
- 主要保证消息的完整性
- 不需要密钥
- 无法知道是谁发的数据
- 作用:
- 你给他任意一端数据(文字、消息、密码),它就会计算出一个唯一的、固定长度的"指纹"(256位的哈希值)
- 使用场景:
- 主要使用在验证数据的完整性、数字签名消息摘要的生成,在网络通讯中保证消息没有被修改。
- 数字证书(M2数字证书)
- 安全通信协议(TSL/SSL)
- 区块链或者数字货币
- 软件/固件的完整性校验
SM3-HMAC(消息认证–加了“密码”)
- 本质
- 消息认证码(生成带密钥的防伪标签)
- **特点:**消息认证码(生成带密钥的防伪标签)
- 输入必须要有数据+密钥
- 主要保证数据完整性和数据真实性(带密码的指纹)
- 作用:
- 在SM3的基础上加了一个密钥,你给它一段数据+只有你知道和接收方知道的密钥,会计算出一个带密钥的"认证标签"(MAC)
- 不仅经可以检查文件本身是否被修改了,还可以检查这个文件确实是那个知道密钥的人给你的
两者的对比
特点 | SM3 | SM3-HMAC |
---|---|---|
本质 | 哈希函数 (生成数据指纹) | 消息认证码 (生成带密钥的防伪标签) |
核心输入 | 数据 | 数据 + 密钥 |
密钥 | 不需要 | 必须要有 |
主要保证 | 数据完整性 (数据没被篡改) | 数据完整性 + 数据真实性 (谁发的?) |
类比 | 指纹扫描仪 (只看指纹是谁的) | 带密码的印章 (盖了章就知道是谁盖的) |
SM4(对称加密算法)
- 类型:对称加密算法
- 特点:分组密码算法,分组长度和密钥长度均为128位,采用32轮非线性迭代结构,解密过程只需要将加密密钥反序使用就可以。算法结构简洁高效。
- 使用场景:用来替代DES/AES等国际密码算法,在移动通讯、物联网等领域广泛应用,如对无线局域网中的数据进行加密解密。
3.1 SM4-ECB(电子密码本模式)
- 工作原理:
- 将明文分割为128位分组,每个分组独立使用SM4加密,没有反馈
- 若明文长度不足128位,需要填充(如PKCS#7)
- 特点:
- 容易实现,但是存在安全缺陷,相同的明文分组加密时结果是相同的,暴露数据模式
- 适用场景:
- 仅仅适用于加密单分组数据(如密钥加密),不推荐使用长数据
3.2 SM4-CBC(密码分组链接模式)
- 工作原理:
- 每个明文分组在加密之前与前一个密文分组异或(首个分组与初始化向量IV异或**)**
- 加密之后的结果作为下一组分****组的IV
- 特点:
- 与SM4-ECB不同,是隐藏明文模式,相同的明文分组加密的结果是不同的
- 需要确保IV的随机性和唯一性
- 注意:
- IV必须由随机数生成
- 必须填充到完整的分组
3.3 SM4-MAC(分为SM4-CBC-MAC和SM4-CMAC)
消息认证码(MAC)用于验证数据完整性和真实性
3.3.1 .SM4-CBC-MAC(取最后一个密文作为MAC的值)
- 工作原理:
- 使用CBC模式加密整个消息,取最后一个密文分组作为MAC的值
- 密钥与加密密钥可以相同也可以不同
- 步骤
-
- 使用SM4-CBC加密消息,IV通常全部设置为0
-
- 最后密文的最后一个分组进行截断,让MAC使用。
-
- 缺点
- 适用于固定长度的消息
3.3.2. SM4-CMAC
- 工作原理:
- 改进CBC-MAC的安全性,通过使用两个子密钥(K1, K2)处理末尾分组
- 特点
- 安全性较高,支持任意长度消息,自动补位,末尾块与k1k2异或防篡改,
- 建议使用独立密钥
SM4-CBC-MAC和SM4-CMAC对比 |
---|
对比项 | SM4-CBC-MAC | SM4-CAMC |
---|---|---|
工作原理 | 直接使用CBC模式加密,取最后的分组作为MAC | 改进CBC算法,基于MAC模式但是安全性能高 |
加密结构 | 直接使用CBC加密 | 使用两个子密钥对末尾进行加密 |
消息长度 | 只支持固定的长度,否则需要填充 | 支持任意长度消息 |
末尾填充方式 | 自动补位,末尾块与K1/K2异或防篡改 | 需要手动填充,但填充可能会被利用 |
密钥要求 | 可以和加密密钥相同,但是存在风险 | 建议使用独立的密钥 |
标准化 | 依赖CBC模式,无独立标准 | 符合国际标准 |
使用场景 | 仅限固定长度数据 | 任意长度 |