本書從密碼算法的軟硬件實現(xiàn)及其優(yōu)化的角度進行論述,內容包括密碼算法實現(xiàn)的基礎技術、分組密碼原理與實現(xiàn)技術、公鑰密碼原理與實現(xiàn)技術、序列密碼原理與實現(xiàn)技術、Hash函數(shù)實現(xiàn)原理與技術、數(shù)字簽名實現(xiàn)原理與技術。本書也重點論述了適應目前資源約束物聯(lián)網(wǎng)環(huán)境下的輕量級密碼算法原理與優(yōu)化實現(xiàn)技術,包括典型輕量級密碼算法優(yōu)化的實現(xiàn)方法,輕量級密碼算法的設計原理與方法,并以作者提出的Magpie輕量級密碼算法為例進行設計方法學的介紹,以經典的DES和AES密碼算法為例介紹密碼算法FPGA的實現(xiàn)方法。最后,論述了密碼芯片的主要攻擊與防御技術。
信息安全在當代信息社會無比重要,密碼是信息安全的基石。社會需要大批的信息安全人才,一本好的密碼學教材顯得非常重要。
作者多年從事信息安全研究與教學,發(fā)現(xiàn)目前特別需要一本既匯聚密碼學基礎,又能體現(xiàn)密碼算法與硬件優(yōu)化實現(xiàn),同時又能有最新密碼技術的書籍。本書能夠讓讀者閱讀之后,快速入門并迅速掌握密碼軟硬件的實現(xiàn)技術,能夠對密碼算法安全設計有所思考。
對常見的密碼算法原理及其實現(xiàn)技術進行了概括性提高,對目前適合資源約束的新型輕量級分組密碼算法進行了優(yōu)化實現(xiàn),并以有自主知識產權的Magpie輕量級密碼算法為例,結合設計方法學論述了輕量級密碼算法的設計理念。密碼算法及其芯片仍然是攻擊者的重點攻擊對象,論述了主要攻擊技術及其防御方法。有些內容是作者的最新研究成果,還有一些內容是作者博士期間的研究工作。
本書的主要特點是: 以初學者的角度進行論述、強調基礎、注重實踐操作能力的培養(yǎng),力求使學習者在掌握密碼算法基本原理的基礎上,能夠對密碼設計與優(yōu)化方法有所掌握,特別是對硬件語言實現(xiàn)及密碼算法優(yōu)化有較深的理解,對目前密碼算法的主要攻擊技術及其防御方法有所掌握。
本書主要由李浪教授負責編寫與組織統(tǒng)稿,其中李浪負責編寫第1~第6章、第8章和第10.1、第10.2、第10.5節(jié),鄒祎負責編寫第7章與第10.4節(jié),許瓊方負責編寫第10.3節(jié),王玉奇對目錄和內容架構提出了寶貴意見,中南大學郭迎博士對相關章節(jié)進行了詳細的校對,同時提出了許多建設性的意見。特別值得指出的是,李浪教授負責的嵌入式計算與信息安全研究所的劉波濤、余孝忠、曾婷、杜國權、李配對本書的附錄進行了編寫,并為全書進行了大量的基礎性工作,如對程序源碼及其實現(xiàn)都進行了認真的實驗與校對。本書的編寫得到了清華大學出版社張民老師的大力支持,同時一些基礎性原理與內容參考了大量同行的相關著作與教材,在參考文獻中也進行了注明,作者在此一并表示感謝。
本書獲得了湖南省普通高等學校教學改革研究項目“基于協(xié)同創(chuàng)新的地方本科院校計算機專業(yè)應用人才培養(yǎng)研究”的資助(NO.2014382)。
盡管作者以最大的努力去編著本書,但由于作者的學識和水平畢竟有限,特別是書中有些內容是作者教學與科研中的原創(chuàng)成果,因此難免有需要商榷之處,誠望讀者不吝賜教斧正。
本書制作了配套的電子課件,方便使用本書的老師進行教學使用,課件可從清華大學出版社網(wǎng)站http://www.tup.tsinghua.edu.cn下載,也可聯(lián)系作者索取。
李浪2014年5月
第1章 緒論
1.1 信息安全與密碼技術
1.1.1 信息安全簡述
1.1.2 密碼技術簡述
1.1.3 信息安全與密碼技術的關系
1.2 密碼技術發(fā)展簡介
1.2.1 古代密碼
1.2.2 近代密碼
1.2.3 現(xiàn)代密碼
1.3 密碼工程學的基本概念
1.3.1 密碼工程學的主要任務
1.3.2 密碼系統(tǒng)的概念
1.3.3 對密碼系統(tǒng)的攻擊
1.3.4 密碼系統(tǒng)的安全性
1.3.5 密碼體制的分類
1.3.6 對稱與非對稱密碼體制的主要特點
習題
第2章 密碼工程學的基礎技術
2.1 密碼工程學的VC基礎
2.1.1 簡述
2.1.2 密碼算法的C/C++實現(xiàn)
2.1.3 C++程序開發(fā)過程
2.1.4 實例
2.2 密碼算法的硬件實現(xiàn)技術
2.2.1 Verilog HDL
2.2.2 仿真軟件ModelSim
第3章 分組密碼體制
3.1 分組密碼的設計原則與評估
3.1.1 分組密碼的設計原則
3.1.2 分組密碼評估
3.2 分組密碼的設計方法
3.2.1 Feistel結構
3.2.2 SPN結構
3.2.3 Lai-Massey結構
3.3 數(shù)據(jù)加密標準
3.3.1 DES概述
3.3.2 DES的設計準則
3.3.3 DES的加密原理
3.3.4 DES的加密算法程序實現(xiàn)
3.4 高級加密標準
3.4.1 算法的總體設計思想
3.4.2 算法基本運算
3.4.3 算法變換
3.4.4 AES解密
3.4.5 密鑰擴展算法
3.4.6 算法實例
3.5 分組密碼工作模式
3.5.1 電子密碼本模式
3.5.2 密碼分組鏈接模式
3.5.3 密碼反饋模式
3.5.4 輸出反饋模式
3.5.5 其他模式
習題
第4章 公鑰密碼體制
4.1 概述
4.1.1 公鑰密碼體制提出的背景
4.1.2 公鑰密碼體制的基本思想
4.1.3 公鑰密碼的應用
4.2 公鑰密碼的數(shù)學基礎
4.2.1 素數(shù)和互素數(shù)
4.2.2 模運算
4.2.3 費馬定理和歐拉定理
4.2.4 素性檢驗
4.2.5 歐幾里得算法
4.2.6 中國剩余定理
4.2.7 離散對數(shù)
4.2.8 平方剩余
4.2.9 群論
4.2.10 有限域
4.3 RSA公鑰密碼體制
4.3.1 RSA算法描述
4.3.2 RSA的實現(xiàn)
4.3.3 RSA算法的程序實現(xiàn)
4.3.4 RSA的安全性
4.3.5 對RSA的攻擊
4.4 ElGamal公鑰密碼體制
4.4.1 ElGamal密碼體制描述
4.4.2 ElGamal算法程序實現(xiàn)
4.5 橢圓曲線密碼體制
4.5.1 概述
4.5.2 橢圓曲線的概念與運算
4.5.3 橢圓曲線密碼的編程實現(xiàn)
習題
第5章 序列密碼
5.1 序列密碼的基本概念
5.1.1 同步序列密碼
5.1.2 自同步序列密碼
5.2 線性反饋移位寄存器
5.3 基于LFSR的序列密碼
5.3.1 基于LFSR的序列密碼密鑰流生成器
5.3.2 基于LFSR的序列密碼體制
5.4 序列密碼算法RC4
習題
第6章 Hash函數(shù)與消息鑒別
6.1 Hash函數(shù)的概念
6.1.1 Hash函數(shù)的性質
6.1.2 Hash函數(shù)的應用
6.2 Hash函數(shù)的構造與設計
6.2.1 安全Hash函數(shù)的結構
6.2.2 Hash函數(shù)的設計方法
6.3 安全散列算法SHA
6.3.1 SHA-1
6.3.2 其他SHA算法
6.4 對散列函數(shù)的攻擊
6.4.1 生日悖論
6.4.2 生日攻擊
6.5 消息鑒別
6.5.1 基于消息加密的鑒別
6.5.2 基于Hash函數(shù)的消息鑒別
6.5.3 HMAC
習題
第7章 數(shù)字簽名技術
7.1 數(shù)字簽名概述
7.1.1 數(shù)字簽名的特性
7.1.2 數(shù)字簽名的要求
7.1.3 數(shù)字簽名的執(zhí)行方式
7.1.4 數(shù)字簽名的分類
7.2 基于公鑰密碼體制的典型數(shù)字簽名方案
7.2.1 RSA數(shù)字簽名方案及編程實現(xiàn)
7.2.2 ElGamal數(shù)字簽名方案
7.2.3 數(shù)字簽名標準及編程實現(xiàn)
7.2.4 基于橢圓曲線密碼的數(shù)字簽名算法
7.3 特殊數(shù)字簽名方案
7.3.1 收方不可否認數(shù)字簽名
7.3.2 盲簽名
7.3.3 門限簽名
習題
第8章 輕量級分組密碼
8.1 輕量級密碼算法簡介
8.1.1 輕量級分組密碼算法的產生
8.1.2 輕量級分組密碼算法的發(fā)展歷程
8.1.3 輕量級分組密碼算法的設計原則與評估
8.2 典型輕量級密碼算法的優(yōu)化實現(xiàn)方法
8.2.1 PRESENT密碼算法
8.2.2 Piccolo密碼算法
8.3 新輕量級分組密碼算法Magpie
8.3.1 Magpie技術背景
8.3.2 Magpie算法描述
習題
第9章 密碼算法的FPGA實現(xiàn)
9.1 AES密碼算法的Verilog HDL實現(xiàn)
9.1.1 字節(jié)替換模塊
9.1.2 列混合模塊
9.1.3 密鑰擴展模塊
9.1.4 AES算法的主模塊
9.1.5 S盒變換模塊與tab模塊
9.2 AES密碼算法的FPGA實現(xiàn)
9.2.1 AES的主要優(yōu)化
9.2.2 實驗分析
9.2.3 AES算法的FPGA實現(xiàn)
9.2.4 AES算法優(yōu)化效果分析
9.3 DES密碼算法的Verilog HDL實現(xiàn)
9.3.1 初始置換IP及逆初始置換IP-1模塊
9.3.2 輪函數(shù)F模塊
9.3.3 密鑰擴展模塊設計
9.3.4 主模塊
9.4 DES密碼算法的FPGA實現(xiàn)
9.4.1 實驗分析
9.4.2 DES優(yōu)化實現(xiàn)
9.4.3 DES算法的EDK操作流程
9.4.4 優(yōu)化效果分析
習題
第10章 密碼芯片的主要攻擊與防御技術
10.1 簡述
10.2 差分攻擊與防御技術
10.2.1 差分攻擊原理
10.2.2 DES差分分析
10.2.3 差分攻擊防御技術
10.2.4 差分密碼的分析推廣
10.3 代數(shù)攻擊
10.3.1 解方程法
10.3.2 MQ問題轉化為 SAT問題的求解
10.3.3 對AES單輪代數(shù)的攻擊
10.4 故障攻擊與防御技術
10.4.1 故障攻擊模型研究
10.4.2 故障攻擊技術
10.4.3 故障攻擊防御技術
10.5 功耗攻擊與防御技術
10.5.1 功耗攻擊模型研究
10.5.2 功耗攻擊技術
10.5.3 功耗攻擊防御技術
10.5.4 實驗方法
10.5.5 分析與討論
10.6 一種SMS4加密算法的差分功耗攻擊
10.6.1 SMS4加密算法簡介
10.6.2 SMS4加密算法的功耗攻擊模型
10.6.3 SMS4加密算法的差分功耗攻擊點
10.6.4 SMS4加密算法的差分功耗攻擊實驗
10.6.5 SMS4差分功耗攻擊仿真平臺設計
10.7 一種防御高階功耗攻擊的SMS4掩碼方法
10.7.1 抗高階功耗攻擊SMS4算法
10.7.2 抗高階功耗攻擊隨機掩碼SMS4算法
10.7.3 偽隨機固定值掩碼SMS4算法
10.7.4 實驗結果與分析
習題
附錄A 密碼工程學實驗
A1 實驗一DES程序實現(xiàn)
A2 實驗二AES程序實現(xiàn)
A3 實驗三RSA程序實現(xiàn)
A4 實驗四ECC程序實現(xiàn)
A5 實驗五PRESENT程序實現(xiàn)
A6 實驗六Piccolo程序實現(xiàn)
附錄B 主要習題參考答案
參考文獻