• 嵌入式算法19---国家商用密码SM算法


    1、国家商用密码

    数据加密和解密所涉及到的算法大致可分为以下三大类:单向散列算法(杂凑算法),对称加密算法,公开密钥加密算法(非对称加密算法)。大部分算法出自国外,事实上我国国家密码管理局也发布了一系列国产商用密码算法,即SM系列,但是简称国密算法,命名上太过随意。

    国密算法包括 SM1、SM2、SM3 、SM4、SM7、SM9、ZUC(祖冲之加密算法),其中SM1 和 SM7 算法不公开,其余算法已成为 ISO/IEC 国际标准。

    2、国密算法

    SM1、SM4、SM7、ZUC是对称算法,SM2、SM9是非对称算法,SM3是哈希算法。
    在这里插入图片描述

    2.1 SM1对称加密算法

    SM1 算法是分组密码算法,对称加密,分组长度和密钥长度都为 128 位,算法安全保密强度及相关软硬件实现性能与 AES 相当。该算法不公开,仅以IP核的形式存在于芯片中,需要通过加密芯片的接口进行调用,诸如智能IC卡、智能密码钥匙、加密卡等安全产品,广泛应用于电子政务、电子商务及国民经济的各个应用领域。

    2.2 SM2公钥密码算法

    SM2为椭圆曲线(ECC)公钥加密算法,非对称加密,用来替换 RSA 算法,在不少政府网站会见到此类加密算法。

    2.3 SM3杂凑算法

    SM3 为密码杂凑算法,采用密码散列(hash)函数标准,用于替代 MD5/SHA-1/SHA-2 等国际算法,是在 SHA-256 基础上改进实现的一种算法,消息分组长度为 512 位,摘要值长度为 256 位。在商用密码体系中,SM3 主要用于数字签名及验证、消息认证码生成及验证、随机数生成等。据国家密码管理局表示,其安全性及效率要高于 MD5 算法和 SHA-1 算法,与 SHA-256 相当。在SM2,SM9标准中使用。

    2.4 SM4对称加密算法

    SM4 为无线局域网标准的分组加密算法,对称加密,用于替代 DES/AES 等国际算法,SM4 算法与 AES 算法具有相同的密钥长度和分组长度,均为 128 位,故对消息进行加解密时,若消息长度过长,需要进行分组,要消息长度不足,则要进行填充。加密算法与密钥扩展算法都采用 32 轮非线性迭代结构,解密算法与加密算法的结构相同,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。

    2.5 SM7对称加密算法

    SM7 算法不公开,是一种分组密码算法, 分组长度为128比特,密钥长度为128比特。SM7适用于非接触式IC卡,应用包括身份识别类应用(门禁卡、工作证、参赛证),票务类应用(大型赛事门票、展会门票),支付与通卡类应用(积分消费卡、校园一卡通、企业一卡通等)。

    2.6 SM9标识密码算法

    SM9 为标识加密算法(Identity-Based Cryptography),非对称加密,标识加密将用户的标识(如微信号、邮件地址、手机号码等)作为公钥,省略了交换数字证书和公钥过程,使得安全系统变得易于部署和管理,适用于互联网应用的各种新兴应用的安全保障,如基于云技术的密码服务、电子邮件安全、智能终端保护、物联网安全、云存储安全等等。这些安全应用可采用手机号码或邮件地址作为公钥,实现数据加密、身份认证、通话加密、通道加密等。在商用密码体系中,SM9 主要用于用户的身份认证,据新华网公开报道,SM9 的加密强度等同于 3072 位密钥的 RSA 加密算法。

    2.7 ZUC祖冲之流密码算法

    ZUC 为流密码算法,对称加密,该机密性算法可适用于 3GPP LTE 通信中的加密和解密,该算法包括祖冲之算法(ZUC)、机密性算法(128-EEA3)和完整性算法(128-EIA3)三个部分。用来替换RC4算法。

    3、源码

    商密算法中除SM1和SM7不公开外,其他几个开源。商用密码源码地址
    http://www.scctc.org.cn/templates/General/index.aspx?nodeid=73
    包括源码和范例,免责声明等信息,可以很方便的移植到C嵌入式软件中。

    4、小节

    密码算法作为国家战略资源,在大数据和云计算的时代,对信息得保护尤其重要。国家商密算法可以替代部分常用的非国产算法,但目前应用还不是很普及。

  • 相关阅读:
    Java项目:SSM在线美食分享推荐平台网站
    [docker]笔记-portainer的安装
    PointNet++改进策略 :模块改进 | EdgeConv | DGCNN, 动态图卷积在3d任务上应用
    ClickHouse副本节点数据损坏恢复
    【茗创科技】如何看待心理学实验中的数据缺失?
    【JavaEE】Servlet API 详解(HttpServlet类)
    面试高频问题----2
    【mysql 统计表里面6个月的数据】
    Spring Security-自定义登录页面和认证过程其他常用配置
    Python Opencv实践 - 车辆统计(2)检测线绘制,车辆数量计数和显示
  • 原文地址:https://blog.csdn.net/chengjunchengjun/article/details/126321007