楊元原博士國密課堂 · 第一期 | 商用密碼應用安全性評估:Part1. 密碼算法概述
本期主講人
楊元原(yuan) 博士,國家網絡(luo)與信息系統安全產品質量監(jian)督檢(jian)驗(yan)中心(xin)(公安部第三研究所)商用密碼(ma)應(ying)用安全(quan)性評估負責人(ren)
什么是密碼算法?
密(mi)(mi)碼(ma)學(xue)(xue)(xue)(Cryptology)是研究(jiu)密(mi)(mi)碼(ma)編制、密(mi)(mi)碼(ma)破(po)譯(yi)和(he)密(mi)(mi)碼(ma)系統設計的的一(yi)門綜合性科學(xue)(xue)(xue),其包(bao)括密(mi)(mi)碼(ma)編碼(ma)學(xue)(xue)(xue)和(he)密(mi)(mi)碼(ma)分析學(xue)(xue)(xue)。密(mi)(mi)碼(ma)編碼(ma)學(xue)(xue)(xue)(Cryptography)主(zhu)要研究(jiu)對信息進(jin)行編碼(ma),實現對信息的隱蔽。密(mi)(mi)碼(ma)分析學(xue)(xue)(xue)(Cryptanalytics)主(zhu)要研究(jiu)加密(mi)(mi)消(xiao)息的破(po)譯(yi)或消(xiao)息的偽(wei)造。
在密(mi)(mi)碼(ma)(ma)(ma)(ma)編碼(ma)(ma)(ma)(ma)學理論(lun)中,密(mi)(mi)碼(ma)(ma)(ma)(ma)算(suan)(suan)(suan)法是研究的(de)核(he)心。常見(jian)的(de)密(mi)(mi)碼(ma)(ma)(ma)(ma)算(suan)(suan)(suan)法包(bao)括對(dui)稱(cheng)密(mi)(mi)碼(ma)(ma)(ma)(ma)算(suan)(suan)(suan)法、公鑰密(mi)(mi)碼(ma)(ma)(ma)(ma)算(suan)(suan)(suan)法和密(mi)(mi)碼(ma)(ma)(ma)(ma)雜(za)(za)湊(cou)算(suan)(suan)(suan)法三(san)個類別。習(xi)慣(guan)上,對(dui)稱(cheng)密(mi)(mi)碼(ma)(ma)(ma)(ma)算(suan)(suan)(suan)法簡稱(cheng)為“對(dui)稱(cheng)密(mi)(mi)碼(ma)(ma)(ma)(ma)”,公鑰密(mi)(mi)碼(ma)(ma)(ma)(ma)算(suan)(suan)(suan)法簡稱(cheng)為“公鑰密(mi)(mi)碼(ma)(ma)(ma)(ma)”,密(mi)(mi)碼(ma)(ma)(ma)(ma)雜(za)(za)湊(cou)算(suan)(suan)(suan)法簡稱(cheng)為“雜(za)(za)湊(cou)算(suan)(suan)(suan)法”。
商(shang)用(yong)(yong)密(mi)碼(ma)(ma)是(shi)經我國密(mi)碼(ma)(ma)管理機構(gou)認可(ke)的、用(yong)(yong)于對不涉(she)及國家秘密(mi)內容的信息進行加密(mi)保護(hu)或者安全認證所使用(yong)(yong)的密(mi)碼(ma)(ma)技術和密(mi)碼(ma)(ma)產品。目(mu)前發布(bu)的商(shang)用(yong)(yong)密(mi)碼(ma)(ma)算(suan)法(fa)涵蓋了對稱密(mi)碼(ma)(ma)算(suan)法(fa)、公鑰密(mi)碼(ma)(ma)算(suan)法(fa)和密(mi)碼(ma)(ma)雜湊算(suan)法(fa)三大類。
(1)對稱密碼算法
對稱密(mi)碼(ma)(ma)算(suan)(suan)法(fa)(fa)加密(mi)過程(cheng)與解密(mi)過程(cheng)使用相(xiang)同的或容易相(xiang)互推(tui)導得出的密(mi)鑰,即加密(mi)和解密(mi)兩方(fang)的密(mi)鑰是“對稱”的。對稱密(mi)碼(ma)(ma)算(suan)(suan)法(fa)(fa)還可以細分為分組密(mi)碼(ma)(ma)算(suan)(suan)法(fa)(fa)和流密(mi)碼(ma)(ma)算(suan)(suan)法(fa)(fa)。
分(fen)(fen)(fen)組密碼(ma)(ma)算法(fa)(fa)(block cipher):分(fen)(fen)(fen)組密碼(ma)(ma)首先(xian)對(dui)明文消息根據分(fen)(fen)(fen)組大小進行分(fen)(fen)(fen)組,再將(jiang)明文分(fen)(fen)(fen)組、密鑰和初(chu)始向量(如(ru)果(guo)有)一起作為(wei)輸入,通過分(fen)(fen)(fen)組加密算法(fa)(fa)直接(jie)輸出密文分(fen)(fen)(fen)組(摘(zhai)自《商用(yong)密碼(ma)(ma)應用(yong)與安全(quan)性評估(gu)》)。
流(liu)密(mi)碼(ma)(ma)(ma)算(suan)法(stream cipher):又(you)稱序(xu)列(lie)密(mi)碼(ma)(ma)(ma)。序(xu)列(lie)密(mi)碼(ma)(ma)(ma)將密(mi)鑰(yao)(yao)(yao)和初始向(xiang)量作(zuo)為輸入,通(tong)過(guo)密(mi)鑰(yao)(yao)(yao)流(liu)生成(cheng)算(suan)法輸出(chu)密(mi)鑰(yao)(yao)(yao)流(liu)(也(ye)稱擴展密(mi)鑰(yao)(yao)(yao)序(xu)列(lie)),然(ran)后將明文序(xu)列(lie)和密(mi)鑰(yao)(yao)(yao)流(liu)進行異或,得(de)到密(mi)文序(xu)列(lie)(摘自《商用密(mi)碼(ma)(ma)(ma)應(ying)用與安(an)全性評估》)。
常用的對(dui)稱密碼算(suan)法包括(kuo):
(2)公鑰密碼算法
公鑰(yao)密(mi)(mi)(mi)(mi)碼(ma)算(suan)法(fa)又稱非(fei)對稱密(mi)(mi)(mi)(mi)碼(ma)算(suan)法(fa),既可用于加(jia)密(mi)(mi)(mi)(mi)和解(jie)密(mi)(mi)(mi)(mi),也可用于數字簽(qian)名(ming),打破(po)了對稱密(mi)(mi)(mi)(mi)碼(ma)算(suan)法(fa)加(jia)密(mi)(mi)(mi)(mi)和解(jie)密(mi)(mi)(mi)(mi)必須(xu)使(shi)用相同密(mi)(mi)(mi)(mi)鑰(yao)的限制,很好地解(jie)決了對稱密(mi)(mi)(mi)(mi)碼(ma)算(suan)法(fa)中(zhong)存在的密(mi)(mi)(mi)(mi)鑰(yao)管(guan)理難(nan)題。公鑰(yao)密(mi)(mi)(mi)(mi)碼(ma)算(suan)法(fa)包括公鑰(yao)加(jia)密(mi)(mi)(mi)(mi)和私鑰(yao)簽(qian)名(ming)(數字簽(qian)名(ming))兩種(zhong)主要用途。
常用的公鑰(yao)密碼算法包(bao)括:

(3)雜湊算法
密(mi)碼(ma)(ma)雜湊(cou)(cou)(cou)算(suan)法(fa)(fa)也稱作“散列算(suan)法(fa)(fa)”或“哈(ha)希算(suan)法(fa)(fa)”,現在的密(mi)碼(ma)(ma)行業標準(zhun)統稱其為密(mi)碼(ma)(ma)雜湊(cou)(cou)(cou)算(suan)法(fa)(fa),簡稱“雜湊(cou)(cou)(cou)算(suan)法(fa)(fa)”或“雜湊(cou)(cou)(cou)函數”。密(mi)碼(ma)(ma)雜湊(cou)(cou)(cou)算(suan)法(fa)(fa)對任(ren)意(yi)長(chang)度(du)的消息進行壓(ya)縮(suo),輸(shu)出定長(chang)的消息摘要或雜湊(cou)(cou)(cou)值。
常(chang)用的雜湊(cou)算法包括:

哪些(xie)是密碼學常用術(shu)語(yu)?
密碼學(xue)中(zhong)經(jing)常(chang)用到以(yi)下幾(ji)個術(shu)語:
明(ming)(ming)文(wen):被(bei)隱蔽的(de)消(xiao)息稱作明(ming)(ming)文(wen),通常(chang)用m表示。其英文(wen)為(wei)Message和Plaintext。明(ming)(ming)文(wen)就是沒(mei)有(you)被(bei)加密(mi)的(de)消(xiao)息。
密文(wen):將(jiang)明文(wen)隱(yin)蔽(bi)后的結(jie)果稱作(zuo)密文(wen)或密報,通常(chang)用c表示(shi)。其英(ying)文(wen)為Ciphertext。密文(wen)就是加密后的結(jie)果。
加密(mi)(Encryption):將(jiang)明文變換成密(mi)文的過程稱作加密(mi),該過程表示為。
解密(Decryption):由密文恢(hui)復出明文的(de)過程稱(cheng)作脫(tuo)密,該過程表示為。
密(mi)鑰(key) :控制(zhi)或(huo)參與密(mi)碼變換的可變參數稱為密(mi)鑰。密(mi)鑰又分為加密(mi)密(mi)鑰和(he)解密(mi)密(mi)鑰。
加(jia)密(mi)(mi)(mi)密(mi)(mi)(mi)鑰是加(jia)密(mi)(mi)(mi)時用的密(mi)(mi)(mi)鑰。
解密密鑰是解密時用(yong)的密鑰。加(jia)、解密密鑰與成(cheng)對使用(yong)。
加密函(han)(han)(han)數與解密函(han)(han)(han)數互為逆函(han)(han)(han)數,即(ji)對所有明文,都有

一(yi)個密(mi)文只(zhi)能有一(yi)個解(jie)密(mi)結(jie)果。
如何設計密碼算法?
(1)密碼(ma)算法即使(shi)達不到理(li)論上(shang)是(shi)不可破的,也應當是(shi)實際上(shang)不可破的;
(2)密(mi)碼(ma)算(suan)法(fa)的安(an)全性(xing)不依賴于(yu)對加密(mi)體(ti)制或(huo)算(suan)法(fa)的保(bao)密(mi),而依賴于(yu)密(mi)鑰(yao),即(ji)滿(man)足(zu)柯(ke)克霍(huo)夫斯(si)(Kerckhoff)假(jia)設;
(3)加密算法和解密算法適用于密鑰(yao)空間中的(de)所有(you)元素,弱密鑰(yao)除外(wai);
(4)密碼(ma)算法應易于(yu)實(shi)現和使用。
關注下期:《商用密碼應用安全性評估:Part2. 商用密碼算法》
(來源(yuan):國(guo)家網安(an)檢測(ce)中心)