本帖最后由 Gfan 于 2022-2-28 11:24 编辑
随着信息化技术的飞速发展,信息安全问题已经影响到日常生活甚至国家安全。摆脱对国外技术和产品的过度依赖,建设行业网络安全环境,增强行业信息系统的“安全可控”能力显得尤为必要和迫切,国家有关机构站在国家安全和长远战略的高度提出了推动国密算法应用实施、加强行业安全可控的要求。 极海APM32F407系列MCU,结合当前环境要求,设计出了支持国密算法(SM2,SM3,SM4)的IP, 符合国家密码管理局认定和公布的密码算法标准及其应用规范,并凭借显著的性能优势,已应用至新能源、工业控制、医疗设备等众多领域。
国密算法成员介绍 ·
国密算法(国家商用密码算法),是国家密码管理局指定的自主可控的国产算法,包含SM1,SM2,SM3,SM4,SM7,SM9,ZUC(祖冲之算法)等。
SM1 分组加密算法(算法不公开),安全保密强度跟 AES 相当,仅以IP核的形式存在于芯片中,需要通过加密芯片的接口进行调用。
SM2 非对称加密算法(算法公开),基于椭圆曲线密码(ECC)的公钥密码算法标准,适用签名/验签,加解密,密钥交换,信息加密,登录认证等。可替代RSA/DH/ECDSA/ECDH等国际算法。
SM3 是一种密码杂凑算法,其算法公开。适用于数字签名和验证、消息认证码的生成与杂凑算法(算法公开),适用数字签名/验证、消息认证码的生成/验证,以及随机数摘要的生成,可满足电子认证服务系统等应用需求。可替代MD5/SHA-1/SHA-2等国际算法。验证以及随机数的生成,可以满足电子认证服务系统等应用需求。用于替代MD5/SHA-1/SHA-2等国际算法。
SM4 是一种分组加密算法,其算法公开。是我国自主设计的分组对称对称加密(算法公开),我国自主设计的分组对称密码算法,与AES算法具有相同的密钥长度、分组长度,即128bit,适用无线区域网标准。可替代DES/AES等国际算法。密码算法,与AES算法具有相同的密钥长度、分组长度,都是128bit。用于替代DES/AES等国际算法。
SM7 分组加密算法(算法不公开)。适用于非接IC卡应用包括身份识别类应用,票务类应用,支付与通卡类应用。
SM9 基于标识的非对称密码算法(算法公开)。加密强度等同于3072位密钥的RSA加密算法,适用与身份认证(云技术,电子邮件,智能终端,互联网等),可替代基于数字证书的PKI/CA体系。
ZUC 流加密算法,可适用于3GPP LTE通信中的加解密。
对称加密与非对称加密 ·
对称加密:指信息的发送方和接收方采用同一个密钥去进行数据的加密和解密。
非对称加密:指需要两个不同的密钥(公开密钥public key、私有密钥private key)进行加解密,如果用公开密钥对数据进行加密,只有对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有对应的公开密钥才能解密。
SM2/SM3/SM4 ·
在物联网和信息安全领域,主要使用SM2,SM3,SM4对设备进行验证、签名、加密通信,从而实现完整数据的安全传输。极海APM32F407通过软硬结合的方式实现了上述三种国密算法。
SM2详解
基于《SM2椭圆曲线公钥密码算法》由软件设计实现。
功能特性 抗攻击性强、CPU占用少、内存占用少、网络消耗低、加密速度快。
_ | SM2 | RSA | 算法结构 | 基本椭圆曲线(ECC) | 基于特殊的可逆模幂运算 | 计算复杂度 | 完全指数级 | 亚指数级 | 公钥位数 | 256bit | 2048bit | 秘钥生成速度 | 较RSA算法快百倍以上 | 慢 | 解密加密速度 | 较快 | 一般 |
安全性: ECC算法的单位安全强度远高于RSA算法,可用较少的计算能力提供比RSA算法更高的安全强度,而所需的密钥长度却远比RSA算法低。目前基于ECC的SM2 证书普遍采用256位密钥长度,加密强度等同于 3072 位 RSA证书,远高于业界普遍采用的2048位RSA证书。 此外,为了提高安全强度必须不断增加密钥长度,ECC算法密钥长度增长速度较慢,而RSA算法密钥长度则需呈倍数增长。
对称秘钥长度(bit) | ECC秘钥长度(bit) | RSA秘钥长度(bit) | 保密 年限
| 80 | 160 | 1024 | 2010 | 122 | 224 | 2048 | 2030
| 128 | 256 | 3072 | 2040
| 192 | 384 | 7680 | 2080
| 256 | 512 | 15360 | 2120 |
高效性: 在TLS握手过程中,更长的密钥意味着必须来回发送更多数据以验证连接,产生更大性能损耗和时间延迟。因此,ECC算法能够以较小的密钥和较少的数据传递建立HTTPS连接,确保相同安全强度的前提下提升连接速度。
函数描述 函数 | 描述 | SM2_Cinfig | 初始化ECC算法参数,执行其余函数前必须配置此函数。 | SM2_Gen_KeyPair | 生成一对密钥,公钥(32Bytes)和私钥(64Bytes) | SM2_Encryption | 加密明文(1-2048 Bytes),生成密文,输出为:(04 || C1 || C2 || C3). | SM2_Decryption | 解密密文(98-2145 Bytes),生成明文。 | SM2_Preprocess | 签名预处理,输入Message and ID,生成 e: pointer to the H256. | SM2_Signature
| 签名,输入e值,生成signature.R(32Bytes)signature.S(32Bytes) | SM2_Verify | 验签,返回验签结果(SM2_VERIFY_SUCESS) |
注:
1. 密文输出顺序为 C1,C2,C3(旧标准),C1,C3,C2(新标准GM/T 0009-2012)。 2. 04为压缩标识(1Byte),C1为公钥xy分量(64Bytes),C2为加密数据(与明文长度一致),C3为摘要值(32Bytes)。
性能描述 芯片型号:APM32F407IGT6 验证平台:Keil_V5.29 验证方法:循环执行1000次 驱动版本:APM32F4xx_SM_DriverV1.0 操作 | 明文长度(Byte) | 时间(s) | 平均时间(ms)
| SM2_Gen_KeyPair | 2048 | 3.89465367 | 3.89 | SM2_Encryption | 2048 | 0.21780688 | 0.21 | SM2_Decryption | 2048 | 22.01989933 | 22 | SM2_Preprocess | 2048 | 1.73319654 | 1.7 | | 2048 | 4.10555868 | 4.1 | SM2_Verify | 2048 | 7.90497210 | 7.9 |
注:该性能数据由极海实验室获得。
SM3详解
基于GM/T0004-2012《SM3密码杂凑算法》由硬件设计实现。
功能特性 在商用密码体系中,SM3主要用于数字签名及验证、消息认证码生成及验证、随机数生成等,其安全性及效率与 SHA-256 相当。
_ | 消息长度(bit) | 块大小(bit) | RSA秘钥长度(bit) | 摘要长度(bit) | SHA-1 | <2^64 | 512 | 32 | 160 | SHA-224 | <2^64 | 512 | 32 | 224
| SHA-256 | <2^64 | 512 | 32 | 256
| SM3 | <2^64 | 512 | 32 | 256
| SHA-384 | <2^128 | 1024 | 64 | 384 | SHA-512 | <2^128 | 1024 | 64 | 512
| SHA-512/224 | <2^128 | 1024 | 64 | 224 | SHA-512/256 | <2^128 | 1024 | 64 | 256
|
函数描述 函数 | 描述 | SM3_Config | 初始化SM3参数,初始化模式(IVinit),存储模式(endian) | SM3_Update | 更新SM3计算值(内部调用,仅SM2使用) | SM3_Final | 计算最后信息块(内部调用,仅SM2使用) | SM3_Calc | 输入:消息,输出:摘要值(32Bytes) |
性能描述 芯片型号:APM32F407IGT6 验证平台:Keil_V5.29 验证方法:循环执行1000次 驱动版本:APM32F4xx_SM_DriverV1.0 操作 | 明文长度(Byte) | 时间(s) | 平均时间(ms)
| SM3_Calc | 512 | 0.36011912 | 0.36 | SM3_Calc | 1024 | 0.53363102 | 0.53 | SM3_Calc | 2048 | 0.88014293 | 0.88 | SM3_Calc | 4096 | 1.57265483 | 1.57 |
注:该性能数据由极海实验室获得。
SM4详解
基于GM/T0002-2012《SM4分组密码算法》由硬件设计实现。
功能特性 该算法的分组长度为128bits,密钥长度为128bits。与DES和AES算法类似,加密算法与密钥扩展算法都采用32轮非线性迭代结构。
_ | SM4 | DES | 算法结构 | 基本轮函数加迭代,包含非线性变换。 | 使用标准的算术和逻辑运算,先代替后置换,不包含非线性变换。 | 计算轮数 | 32轮 | 16轮(TDES 16轮*3) | 秘钥长度 | 128bit | 64bit(TDES 128bit) | 实现性能 | 软件和硬件实现都快 | 软件实现慢,硬件实现快。 | 安全性 | 较高 | 较低(TDES 较高) |
加解密模式 功能 | 描述 | ECB | 电子密码本模式 每个明文块对应固定的密文块。 优点:并行运算,速度快,易标准化,适合短数据加密。 缺点:不能隐藏数据格式,抗攻击性弱(重放,替换,删除) | CBC | 密码分组链接模式 每个明文快与前一个密文块异或后再进行加密。 优点:隐藏数据格式,抗攻击性强,适合报文完整性和用户身份认证。 缺点:不能并行加密,易出现错误传播。 |
ECB(Electronic Codebook)
CBC(Cipher Block Chaining)
函数描述 函数 | 描述 | SM4_ECB | ECB加解密模式,输入明文长度必须为128bits倍数,无IV参数。 | SM4_CBC | CBC加解密模式,输入明文长度必须为128bits倍数,IV参数为16 Bytes。 |
注:
1. IV:初始化向量(Initialization Vector) 使用 CBC 模式时需输入该参数。 2. 由于加密第一个明文分组时,不存在前一个密文分组,所以要事先准备好一个分组长度的 IV 变量来替代前一个密文分组。
性能描述 芯片型号:APM32F407IGT6 验证平台:Keil_V5.29 验证方法:循环执行1000次 驱动版本:APM32F4xx_SM_DriverV1.0 操作 | 明文长度(Byte) | 时间(s) | 平均时间(ms)
| SM4_ECB_Encryption | 256 | 0.05038697 | 0.05 | SM4_ECB_Decryption | 256 | 0.05357748 | 0.05 | SM4_CBC_Encryption | 256 | 0.05200602 | 0.05 | SM4_CBC_Decryption | 256 | 0.05523221 | 0.05 | SM4_ECB_Encryption | 1024 | 0.18686316 | 0.18 | SM4_ECB_Decryption | 1024 | 0.21655959 | 0.21 | SM4_CBC_Encryption | 1024 | 0.18520844 | 0.18 | SM4_CBC_Decryption | 1024 | 0.21491673 | 0.21 |
注:该性能数据由极海实验室获得。
|