概述 | |
---|---|
設計者 | 清華大學、國家密碼管理局商用密碼檢測中心、解放軍信息工程大學、中國科學院數據與通信保護研究教育中心 |
首次發布 | 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年間,當時在山東大學的王小雲團隊通過比特追蹤法實現了MD5、SHA-0、RIPEMD[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』以及若干(0至511)個比特『0』,使得總長度(比特數)對512取模同餘於448,並將原始消息長度(比特數)按64位大端序整數附在最後。這樣,該消息可以分割為若干個512位長度的消息分組。
- 對每一分組進行迭代壓縮:
- 消息擴展:先將消息分組劃分為16個32位長度的消息字;再通過三組異或運算獲得52個消息字,構成消息字組W;再通過消息字組W獲得64個消息字,構成消息字組W';捨去W64至W67(對後續計算沒有用處),形成64對消息字。
- 消息壓縮:給定一個256位的初始值(第0分組為IV,其他分組為上一分組處理完成後的中間值),對64對消息字分別進行迭代壓縮,得到壓縮值。
- 消息壓縮後,將初始值與壓縮值再進行異或運算,按大端序輸出獲得的中間值。
- 最後一分組迭代壓縮後得到的值為散列值,長度為256位[14]。
應用
在商用密碼體系中,SM3主要用於數字簽名及驗證、消息認證碼生成及驗證、隨機數生成等,其算法公開[15][16]
安全性及效率
參考文獻
- ↑ Mendel, Florian & Nad, Tomislav & Schläffer, Martin. (2013). Finding Collisions for Round-Reduced SM3. 10.1007/978-3-642-36095-4_12.
- ↑ Jian ZOU, Le DONG. Improved preimage and pseudo-collision attacks on SM3 hash function. 10.11959/j.issn.1000-436x.2018011.
- ↑ 3.0 3.1 国家密码管理局公告(第23号). 國家商用密碼管理辦公室. 2012-03-21 [2016-07-24].
- ↑ SM3密码杂凑算法. 中國互聯網絡信息中心. 2013-12-04 [2016-07-24].
- ↑ 王小雲. SM3密碼雜湊算法[J]. 信息安全研究, 2016, 2(11): 983-994.
- ↑ 6.0 6.1 《信息安全技術 SM3密碼雜湊算法》(徵求意見稿)編制說明 《SM3密碼雜湊算法》標準編制組
- ↑ 王小雲; 馮登國; 來學嘉; 於紅波. Collisions for Hash Functions MD4, MD5, HAVAL-128 and RIPEMD. Cryptology ePrint Archive. 2004 (英語).
- ↑ 王小雲; 殷益群; 於紅波. Finding Collisions in the Full SHA-1. Advances in Cryptology – CRYPTO 2005. 2005-08-14. doi:10.1007/11535218_2.
- ↑ 王小云:浩然厚德心无旁骛 为国家信息安全贡献力量. 人民網. [2024-01-07].
- ↑ 王小云院士设计SM3密码,保护6亿智能电网用户上亿银行卡. 澎湃網. 清華大學. [2024-01-07].
- ↑ 中华人民共和国行业标准备案公告(2012年第8号). 國家標準化管理委員會. [2024-01-07].
- ↑ 我国SM2/3/9密码算法正式成为ISO/IEC国际标准. 國家商用密碼管理辦公室. 2018-11-22 [2019-01-18].
- ↑ Goldwasser, Shafi; Bellare, Mihir. Lecture Notes on Cryptography. July 2008 [2023-03-28].
- ↑ GB/T 32905-2016 信息安全技术 SM3密码杂凑算法.
- ↑ 国家密码管理局公告(第22号). 國家商用密碼管理辦公室. 2010-12-17 [2016-08-06].
- ↑ SM3密碼雜湊算法 (簡體中文)
- ↑ An Efficient and Low-Power Design of the SM3 Hash Algorithm for IoT. Electronics. 2019-09-11 [2021-02-11] (美國英語).