SM3

求闻百科,共笔求闻
SM3
概述
设计者清华大学国家密码管理局商用密码检测中心、解放军信息工程大学中国科学院数据与通信保护研究教育中心
首次发布2010年12月17日
系列商用密码家族
衍生自SHA-1、SHA-2、SCH4
认证GB/T 32905-2016、ISO/IEC 10118-3:2018
密码细节
摘要长度256位元
分组长度512位元
结构默克尔·达姆加德结构
重复回数64
最佳公开破解
2013年2月研究表明可在实际可行的时空复杂度内实现20轮的碰撞攻击[1]
2018年2月7日研究表明可实现32轮的原像攻击,其时间复杂度为2254.5,内存复杂度为25[2]
国家密码管理局于2013年10月自行评估,认为其安全性优于SHA256(256位元未裁剪的SHA-2)
容易受到长度扩展攻击

SM3(其中“SM”指“商用密码”)是中华人民共和国的一种商用密码散列函数标准,由中国科学院数据与通信保护研究教育中心和清华大学王小云团队等研发,由国家密码管理局于2010年12月17日发布[3][4],由中华人民共和国国家标准GB/T 32905-2016《信息安全技术 SM3密码杂凑算法》规范[5]

开发

2002年1月21日,国家密码管理委员会办公室下达了杂凑算法研制任务的通知,此后中国境内各个研究机构提出了7种杂凑算法,并选中了中国科学院数据与通信保护研究教育中心研制的SCH4杂凑算法[6]。2004年至2005年间,当时在山东大学的王小云团队通过比特追踪法实现了MD5SHA-0RIPEMD[7]SHA-1[8]等散列函数的碰撞攻击。随后,国家密码管理局请专家组对SCH4算法进行了针对性分析,分析结果表明该算法不能有效抵御比特追踪法分析[6]。王小云成为新的设计组组长,负责修订SCH4算法[9]。其间,出于对SHA-2安全性的潜在担忧,美国国家标准技术研究所向全球密码学者征集新的国际标准密码算法,而王小云由于认为默克尔-达姆加德结构本身并没有安全性问题,只是需要更加健壮的压缩函数,并且当时正在设计国家密码算法的过程中,因而并未参与[10]

SM3算法由国家密码管理局于2010年12月17日发布。其国家标准的文本于2012年2月完成审查,并先以行业标准GM/T 0004-2012 《SM3密码杂凑算法》于2012年3月21日公告实施[3][11]。2016年8月29日,SM3算法成为国家标准,自2017年3月1日起实施。

SM3签名算法收录于ISO/IEC 10118-3:2018《信息安全技术杂凑函数第3部分:专用杂凑函数》[12]

算法

SM3算法的基础仍然是默克尔-达姆加德结构,与MD5、SHA-1、SHA-2一致。默克尔-达姆加德结构的构造决定了,如果压缩函数是安全的,那么对应的散列函数算法就是安全的[13]:147,因此SM3主要加强了压缩函数的复杂度,以提升其安全性。

SM3算法的流程如下:

  1. 消息填充分组:消息后接上一个比特‘1’以及若干(0至511)个比特‘0’,使得总长度(比特数)对512取模同余于448,并将原始消息长度(比特数)按64位大端序整数附在最后。这样,该消息可以分割为若干个512位长度的消息分组。
  2. 对每一分组进行迭代压缩:
    1. 消息扩展:先将消息分组划分为16个32位长度的消息字;再通过三组异或运算获得52个消息字,构成消息字组W;再通过消息字组W获得64个消息字,构成消息字组W';舍去W64至W67(对后续计算没有用处),形成64对消息字。
    2. 消息压缩:给定一个256位的初始值(第0分组为IV,其他分组为上一分组处理完成后的中间值),对64对消息字分别进行迭代压缩,得到压缩值。
    3. 消息压缩后,将初始值与压缩值再进行异或运算,按大端序输出获得的中间值。
  3. 最后一分组迭代压缩后得到的值为散列值,长度为256位[14]

应用

商用密码体系中,SM3主要用于数字签名及验证、消息认证码生成及验证、随机数生成等,其算法公开[15][16]

安全性及效率

安全性及效率与SHA-256相当[17]

参考文献

  1. Mendel, Florian & Nad, Tomislav & Schläffer, Martin. (2013). Finding Collisions for Round-Reduced SM3. 10.1007/978-3-642-36095-4_12.
  2. Jian ZOU, Le DONG. Improved preimage and pseudo-collision attacks on SM3 hash function. 10.11959/j.issn.1000-436x.2018011.
  3. 3.0 3.1 国家密码管理局公告(第23号). 国家商用密码管理办公室. 2012-03-21 [2016-07-24]. 
  4. SM3密码杂凑算法. 中国互联网络信息中心. 2013-12-04 [2016-07-24]. 
  5. 王小云. SM3密码杂凑算法[J]. 信息安全研究, 2016, 2(11): 983-994.
  6. 6.0 6.1 《信息安全技术 SM3密码杂凑算法》(征求意见稿)编制说明 《SM3密码杂凑算法》标准编制组
  7. 王小云; 冯登国; 来学嘉; 于红波. Collisions for Hash Functions MD4, MD5, HAVAL-128 and RIPEMD. Cryptology ePrint Archive. 2004 (英语). 
  8. 王小云; 殷益群; 于红波. Finding Collisions in the Full SHA-1. Advances in Cryptology – CRYPTO 2005. 2005-08-14. doi:10.1007/11535218_2. 
  9. 王小云:浩然厚德心无旁骛 为国家信息安全贡献力量. 人民网. [2024-01-07]. 
  10. 王小云院士设计SM3密码,保护6亿智能电网用户上亿银行卡. 澎湃网. 清华大学. [2024-01-07]. 
  11. 中华人民共和国行业标准备案公告(2012年第8号). 国家标准化管理委员会. [2024-01-07]. 
  12. 我国SM2/3/9密码算法正式成为ISO/IEC国际标准. 国家商用密码管理办公室. 2018-11-22 [2019-01-18]. 
  13. Goldwasser, Shafi; Bellare, Mihir. Lecture Notes on Cryptography. July 2008 [2023-03-28]. 
  14. GB/T 32905-2016 信息安全技术 SM3密码杂凑算法. 
  15. 国家密码管理局公告(第22号). 国家商用密码管理办公室. 2010-12-17 [2016-08-06]. 
  16. SM3密码杂凑算法 (简体中文)
  17. An Efficient and Low-Power Design of the SM3 Hash Algorithm for IoT. Electronics. 2019-09-11 [2021-02-11] (美国英语). 

参见