2020年1月1日,《中華人民共和國密碼法》正式施行。國家鼓勵和支持密碼科學(xué)技術(shù)研究與應(yīng)用,促進(jìn)密碼科學(xué)技術(shù)進(jìn)步與創(chuàng)新,加強密碼人才培養(yǎng)和隊伍建設(shè),采取多種形式加強密碼安全教育。本書是在國家密碼管理局和中國密碼學(xué)會的指導(dǎo)下,依據(jù)我國發(fā)布的商用密碼算法標(biāo)準(zhǔn)編寫而成的。本書作者長期從事密碼學(xué)的教學(xué)與科研工作,編寫材料來自多年教學(xué)和科研案例。本書詳細(xì)講解商用密碼概述、祖沖之序列密碼算法、SM2橢圓曲線公鑰密碼算法、SM3密碼雜湊算法、SM4分組密碼算法、SM9標(biāo)識密碼算法,包括密碼算法的設(shè)計原理和實現(xiàn)過程等,并在C語言環(huán)境下編程實現(xiàn)了密碼算法,以期幫助廣大密碼愛好者更好地理解和使用商用密碼算法。本書適合作為高等院校信息安全專業(yè)、網(wǎng)絡(luò)空間安全專業(yè)或其他相關(guān)專業(yè)學(xué)生的教材,也可作為相關(guān)領(lǐng)域教學(xué)、科研人員及工程技術(shù)人員的參考書。
李子臣,博士,教授,博士生導(dǎo)師,清華大學(xué)計算機科學(xué)與技術(shù)系出站博士后。主要從事公鑰密碼學(xué)、數(shù)字簽名、后量子密碼等方面的研究。現(xiàn)任中國密碼學(xué)會理事、中國密碼學(xué)會教育與科普工作委員會副主任、中國人工智能學(xué)會理事、中國人工智能學(xué)會智能傳媒學(xué)會常務(wù)副理。先后參加和承擔(dān)完成了國家973計劃項目,國家自然科學(xué)基金重大研究計劃項目,"十五”國家科技攻關(guān)計劃,全國博士后基金項目,省自然科學(xué)基金等多項科研項目等。先后在IEEE、IEE、IPL、《電子學(xué)報》、《通信學(xué)報》等學(xué)術(shù)刊物和國際國內(nèi)學(xué)術(shù)會議上發(fā)表學(xué)術(shù)論文100余篇。編寫教材多部。
第1章 商用密碼概述 1
1.1 商用密碼的概念 1
1.2 商用密碼的算法介紹 3
1.3 商用密碼的應(yīng)用 5
第2章 祖沖之序列密碼算法 8
2.1 算法描述 8
2.1.1 參數(shù)描述 8
2.1.2 參數(shù)產(chǎn)生 11
2.1.3 算法運行 13
2.1.4 安全性分析 15
2.2 加密/解密算法和完整性算法 16
2.2.1 加密/解密算法 16
2.2.2 完整性算法 18
2.3 算法實現(xiàn) 19
2.3.1 算法舉例 19
2.3.2 程序流程 22
2.3.3 實現(xiàn)環(huán)境 23
2.3.4 核心代碼 23
2.3.5 實現(xiàn)結(jié)果 26
2.3.6 性能分析 27
2.4 本章小結(jié) 27
第3章 SM2橢圓曲線公鑰密碼算法 28
3.1 加密/解密算法描述 28
3.1.1 參數(shù)產(chǎn)生 28
3.1.2 密鑰產(chǎn)生 30
3.1.3 加密/解密過程 30
3.1.4 安全性分析 32
3.2 加密/解密算法實現(xiàn) 34
3.2.1 算法舉例 34
3.2.2 算法實現(xiàn) 35
3.2.3 實現(xiàn)結(jié)果 38
3.3 數(shù)字簽名算法描述 40
3.3.1 參數(shù)與密鑰的產(chǎn)生 40
3.3.2 數(shù)字簽名生成、驗證過程 40
3.3.3 數(shù)字簽名算法安全性分析 43
3.4 數(shù)字簽名算法實現(xiàn) 43
3.4.1 算法舉例 43
3.4.2 算法實現(xiàn) 44
3.4.3 實現(xiàn)結(jié)果 47
3.5 密鑰協(xié)商算法描述 49
3.5.1 密鑰協(xié)商過程 49
3.5.2 密鑰協(xié)商算法安全性分析 51
3.6 密鑰協(xié)商算法實現(xiàn) 52
3.6.1 算法舉例 52
3.6.2 算法實現(xiàn) 53
3.6.3 實現(xiàn)結(jié)果 55
3.6.4 性能分析 56
3.7 本章小結(jié) 56
第4章 SM3密碼雜湊算法 57
4.1 算法參數(shù)與函數(shù) 57
4.2 算法描述 58
4.2.1 消息填充與擴展 58
4.2.2 壓縮函數(shù) 59
4.2.3 迭代過程 59
4.3 設(shè)計原理 60
4.3.1 壓縮函數(shù)的設(shè)計 60
4.3.2 消息擴展算法的設(shè)計 62
4.4 算法實現(xiàn) 62
4.4.1 核心代碼 62
4.4.2 實現(xiàn)結(jié)果 68
4.5 本章小結(jié) 69
第5章 SM4分組密碼算法 70
5.1 算法參數(shù) 70
5.2 基本密碼構(gòu)件 70
5.3 加密/解密算法描述 72
5.3.1 密鑰擴展算法 73
5.3.2 加密/解密流程 73
5.3.3 算法分析 74
5.4 算法實現(xiàn) 75
5.4.1 算法舉例 75
5.4.2 程序流程 77
5.4.3 實現(xiàn)環(huán)境 78
5.4.4 核心代碼 78
5.4.5 實現(xiàn)結(jié)果 79
5.5 本章小結(jié) 82
第6章 SM9標(biāo)識密碼算法 83
6.1 加密/解密算法描述 83
6.1.1 參數(shù)產(chǎn)生 83
6.1.2 密鑰產(chǎn)生 86
6.1.3 加密/解密流程 86
6.1.4 加密/解密算法安全性分析 88
6.2 加密/解密算法實現(xiàn) 90
6.2.1 算法舉例 90
6.2.2 算法實現(xiàn) 97
6.2.3 實現(xiàn)結(jié)果 104
6.3 數(shù)字簽名算法描述 105
6.3.1 參數(shù)與密鑰的產(chǎn)生 106
6.3.2 算法流程 106
6.3.3 數(shù)字簽名算法安全性分析 109
6.4 數(shù)字簽名算法實現(xiàn) 109
6.4.1 算法舉例 109
6.4.2 算法實現(xiàn) 115
6.4.3 實現(xiàn)結(jié)果 120
6.5 密鑰交換協(xié)議描述 122
6.5.1 參數(shù)產(chǎn)生 122
6.5.2 協(xié)議流程 123
6.5.3 密鑰交換協(xié)議安全性分析 125
6.6 密鑰交換協(xié)議實現(xiàn) 125
6.6.1 算法舉例 125
6.6.2 核心代碼 138
6.6.3 實現(xiàn)結(jié)果 143
6.7 本章小結(jié) 145
參考文獻(xiàn) 146