胡祥義 杜麗萍 郭建偉
(北京市科技情報(bào)研究所網(wǎng)絡(luò)密碼認(rèn)證技術(shù)北京市重點(diǎn)實(shí)驗(yàn)室 北京 100044)
隨著網(wǎng)絡(luò)應(yīng)用的不斷發(fā)展,解決具有海量用戶的網(wǎng)絡(luò)快速認(rèn)證技術(shù)需求迫在眉睫,這種安全需求主要是要提高海量用戶的密鑰交換的速度,使用現(xiàn)有技術(shù)已經(jīng)不能滿足處理大數(shù)據(jù)的安全需求。若使用雙鑰密碼體制如:RSA或ECC算法,建立安全認(rèn)證協(xié)議,PKI架構(gòu)建設(shè)成本較高,認(rèn)證協(xié)議效率較低,制約了PKI技術(shù)針對海量用戶的應(yīng)用?;诹钆圃O(shè)備的動態(tài)口令認(rèn)證系統(tǒng)提高了時效,但是,這類動態(tài)口令是由用戶根據(jù)動態(tài)令牌顯示屏上顯示的動態(tài)口令,實(shí)時輸入計(jì)算機(jī)后,由客戶端再提交到網(wǎng)絡(luò)認(rèn)證中心端,實(shí)施網(wǎng)絡(luò)身份認(rèn)證,該認(rèn)證模式容易受到“假銀行”式的病毒攻擊,安全等級相對來說較低些。
為解決動態(tài)口令的安全隱患,我們提出采用輕量級密碼算法和一種安全單鑰管理方法,在客戶機(jī)和認(rèn)證中心兩端建立加密和認(rèn)證協(xié)議,將用戶在客戶機(jī)端輸入的靜態(tài)口令和認(rèn)證系統(tǒng)自動生成的靜態(tài)口令,通過密鑰元素代替表,代替成一次一變的認(rèn)證密鑰,再生成動態(tài)口令,實(shí)現(xiàn)身份認(rèn)證,從而,建立一種基于動態(tài)口令的身份認(rèn)證系統(tǒng)。
在客戶端的客戶機(jī)上使用USB接口的智能卡,或者在移動終端上使用SD智能卡,在智能卡的芯片里,建立客戶端的加密系統(tǒng),寫入:輕量級密碼算法、單鑰組合生成算法、客戶端動態(tài)口令認(rèn)證協(xié)議,且寫入數(shù)據(jù):客戶端智能卡的標(biāo)識和一套“密鑰種子”表C的元素。
每個用戶的客戶端智能卡都有唯一的標(biāo)識,且兩兩互不相同,每位用戶都持有不同的一支基于USB接口的智能卡或SD智能卡。
認(rèn)證中心由認(rèn)證服務(wù)器和加密卡硬件設(shè)備組成,在認(rèn)證服務(wù)器的PCI接口上插入加密卡,在加密卡的芯片里建立認(rèn)證中心端的加密系統(tǒng),寫入輕量級密碼算法、單鑰組合生成算法、認(rèn)證中心端用戶的靜態(tài)口令和“密鑰種子”表C元素的加密和數(shù)字簽名協(xié)議,認(rèn)證中心端用戶的靜態(tài)口令和“密鑰種子”表C元素密文的解密和簽名驗(yàn)證協(xié)議,認(rèn)證中心端動態(tài)口令認(rèn)證協(xié)議,在認(rèn)證中心端認(rèn)證服務(wù)器的硬盤存儲區(qū),建立“密鑰種子”數(shù)據(jù)庫,該數(shù)據(jù)庫中存儲每條記錄的字段內(nèi)容為:①用戶名i、用戶客戶端智能卡的標(biāo)識Ti、②用戶的靜態(tài)口令密文、③“密鑰種子”表Ci元素的密文、④靜態(tài)口令和“密鑰種子”表Ci元素的數(shù)字簽名即:靜態(tài)口令和“密鑰種子”表 Ci元素摘要信息Gi的密文,其中:i=1~n, n為全體云用戶數(shù)量總和。
安全單鑰管理技術(shù)是指:通過單鑰組合生成算法來實(shí)時產(chǎn)生認(rèn)證密鑰,解決認(rèn)證系統(tǒng)中單鑰更新的管理方法。
單鑰組合生成算法是通過一組時間戳和隨機(jī)數(shù)組成的選取參數(shù),來對一套“密鑰種子”表C的元素進(jìn)行選取,用時間戳對“密鑰種子”表C的“行”元素進(jìn)行選取,選出W行Y列的“密鑰種子”表C的(V×Y)子表D,再根據(jù)隨機(jī)數(shù),對(V×Y)子表D的“列”元素進(jìn)行選取,選出V個元素,將這V位元素組成一套(V×1)“密鑰種子”子表E,其中:W=109,V=36,Y=32,將“密鑰種子”子表E的元素,與全體靜態(tài)口令元素之間,建立一一對應(yīng)關(guān)系,生成密鑰元素代替表,再根據(jù)用戶輸入的靜態(tài)口令和認(rèn)證系統(tǒng)自動增添的靜態(tài)口令,從密鑰元素代替表中選出對應(yīng)的密鑰元素,并合成一組認(rèn)證密鑰。
在密鑰初始化過程中,由認(rèn)證中心端加密卡芯片里的隨機(jī)數(shù)發(fā)生器,生成一組F1字節(jié)隨機(jī)數(shù),F(xiàn)1= 1744字節(jié),將F1字節(jié)的隨機(jī)數(shù)組成,一套W×Y的密鑰種子表C,
其中:表C的元素為占1字節(jié), W=109, Y=16;
密鑰種子表C的組成:“年”子集 、“月”子集 、“日”子集 、“時”子集 和固定子集組成,“年”子集占10行16列,“月”子集占12行16列,“日”子集占31行16列,“時”子集占24行16列,“固定”子集占32行16列,5個子集共占W=109行,16列。
2.3.1 由時間戳從“密鑰種子”表C的元素中選V=36行元素,首先,根據(jù)時間戳從表C選出4行,其方法是:用時間戳“年”數(shù)字中個位數(shù)的數(shù)值,取表C中“年”對應(yīng)的行數(shù),如:時間戳為:2013XXXXXX,則:取表C中的第4行,……,用時間戳“時”數(shù)字的數(shù)值,取表C中“時”對應(yīng)的“行”,如:時間戳為:20XXXXXX21,則:取表C中的第74行,再將表C的“固定”子集共32行全部選出,共選出V=36行,組成:36×16表C的子表D,
其中:表D的元素占1字節(jié),表D中第5行~第V=36 行的元素與表C的第78行~第W=109行的元素完全相同;
2.3.2 根據(jù)隨機(jī)數(shù)從表D中選出V=36位元素,設(shè):隨機(jī)數(shù)為:Q1,Q2,......,Q36,對應(yīng)隨機(jī)數(shù)的數(shù)值分別為:q1,q2,......,q36,當(dāng)Y=16時,每位隨機(jī)數(shù)為4比特十六進(jìn)制數(shù)組成,36位隨機(jī)數(shù)對應(yīng)的數(shù)值為:0~15之間,用:q1,q2,......,q36,對表D的1~ V=36行中列的元素進(jìn)行選取,即:用第1位隨機(jī)數(shù)Q1的數(shù)值q1,來選取表D第1行的第q1 +1列的元素,用第2位隨機(jī)數(shù)Q2的數(shù)值q2,來選取表D第2行的第q2 +1列的元素, ......,用第V=36位隨機(jī)數(shù)Q36的數(shù)值q36,來選取表D第V=36行的第q36 +1列的元素,共選取V=36個元素,將選取出的這36個元素組成一個(36×1)的子密表E;
其中:“密鑰種子”子密表E的元素占1字節(jié),V=36 。
2.3.3 建立密鑰元素代替表
用戶的全體靜態(tài)口令由0~9或A~Z組成,將這36個數(shù)字或字母與表E的元素建立一一對應(yīng)關(guān)系,即:將“0”對應(yīng)子表E的第1行元素E1,將“1”對應(yīng)子表E的第2行元素E2,……,將“Z”對應(yīng)子表E的第36行元素E36,組成密鑰元素代替表:
表1 組成密鑰元素代替表
2.3.4 生成認(rèn)證密鑰
(1)增添靜態(tài)口令,設(shè):用戶的靜態(tài)口令的長度為:N1=6~16位,認(rèn)證密鑰K占16字節(jié)(128比特),由N1位靜態(tài)口令從密鑰元素代替表中,選取N1組密鑰元素來合成認(rèn)證密鑰K,若合成的認(rèn)證密鑰K小于16字節(jié),則認(rèn)證系統(tǒng)增添N2位靜態(tài)口令,其中:N2=Y-N1位,Y=16或32,表C的元素占1或0.5字節(jié),N1=6~16位,N2=0~26位。
若時間戳的“時”為偶數(shù),從0到9這連續(xù)的10個數(shù)字,再從A到P這連續(xù)16個英文字母共26位口令元素中,取N2位數(shù)字或英文字母作為增添的靜態(tài)口令。若時間戳的“時”為奇數(shù),從A到Z這連續(xù)26個英文字母中,取N2位英文字母作為增添的靜態(tài)口令。
(2)生成認(rèn)證密鑰,
設(shè):用戶輸入的N1位靜態(tài)口令為:R1、R2、……、RN1 ,由認(rèn)證系統(tǒng)增添的靜態(tài)口令為:T1、T2、……、TN2 。由靜態(tài)口令:R1、R2、……、RN1,從密鑰元素代替表選出對應(yīng)的N1組密鑰元素 “Eb1 、Eb2 、……、Eb N1”,1≤ b 1 ~ b N1 ≤36,將“Eb1 、Eb2 、……、Eb N1”合并后作為K1,Y=16,表C的元素都占1字節(jié),則N1組密鑰元素占6~16字節(jié)。
由認(rèn)證系統(tǒng)自動增添的靜態(tài)口令:T1、T2、……、TN2 ,從密鑰元素代替表選出對應(yīng)的N2組密鑰元素為:“Ec 1 、Ec 2 、……、Ec N2”, 將“Ec 1 、Ec 2 、……、Ec N2”,1≤c 1 ~ c N2 ≤36,合并后作為K2 。Y=16,表C的元素都占1字節(jié),則N2組密鑰元素共占0~10字節(jié)。
將K1與K2合并成認(rèn)證密鑰K,即:K= Eb1 、Eb2 、……、Eb N1 、Ec 1 、Ec 2 、……、Ec N2 。
舉例說明,設(shè):N1位用戶靜態(tài)口令為“ 9、A、1、0、Z、Z”,共6位,根據(jù)密鑰元素代替表代替后,生成的密鑰元素K1=“E10 、E11 、E2 、E1 、E36 、E36 ”;
當(dāng)時間戳中“時”為偶數(shù)時,則認(rèn)證系統(tǒng)增添的靜態(tài)口令為:“0~9,即:N2=16-6=10位,根據(jù)密鑰元素代替表代替后,生成的密鑰元素K2 =“E1、E2、……、E10” 。將K1與K2合并后生成K,即:K= “E10 、E11 、E2 、E1 、E36 、E36、E1、E2、……、E10” 。當(dāng)時間戳的“時”為奇數(shù)時,則認(rèn)證系統(tǒng)增添的靜態(tài)口令為:“A~J”,即:N2=16-6=10位,根據(jù)密鑰元素代替表代替后,生成的密鑰元素K2 =“E11 、E12、……、E20” 。將K1與K2合并后生成K,即:K= “E10 、E11 、E2 、E1 、E36 、E36 、 E11 、E12 、……、E20”,其中:K占16字節(jié)。
當(dāng)用戶登錄WEB服務(wù)器后,首先,用戶輸入用戶名和用戶的靜態(tài)口令,由連接WEB服務(wù)器的認(rèn)證中心端加密系統(tǒng),產(chǎn)生一組時間戳和隨機(jī)數(shù),并產(chǎn)生認(rèn)證生命周期T,將該組時間戳和隨機(jī)數(shù)發(fā)送客戶端智能卡芯片里,在客戶端智能卡芯片里,根據(jù)時間戳和隨機(jī)數(shù)組成的單鑰組合生成算法,首先,生成密鑰元素代替表,再將用戶輸入的H1位用戶的靜態(tài)口令,代替成H1組密鑰元素并合成密鑰元素K1,將認(rèn)證系統(tǒng)自動增添的N2位靜態(tài)口令,代替成N2組密鑰元素并合成密鑰元素K2,將K1與K2合并成認(rèn)證密鑰K,客戶端加密系統(tǒng)用認(rèn)證密鑰K將隨機(jī)數(shù)加密成密文,得到隨機(jī)數(shù)密文即:動態(tài)口令,并與用戶名和客戶端智能卡的標(biāo)識等3組認(rèn)證參數(shù)一起發(fā)送給認(rèn)證中心端。
認(rèn)證中心端加密系統(tǒng),在接收到客戶端發(fā)送來的3組認(rèn)證參數(shù)后,首先,計(jì)算對應(yīng)的認(rèn)證生命周期T,測試T是否過期,若過期,則為非法用戶,返回“非法用戶!”,否則,認(rèn)證中心端的加密系統(tǒng),根據(jù)用戶名和客戶端智能卡的標(biāo)識,在“密鑰種子”數(shù)據(jù)庫中定位對應(yīng)的記錄,將該記錄對應(yīng)的H1位靜態(tài)口令密文和“密鑰種子”表C元素密文,輸入加密卡芯片里,在加密卡芯片里,用一組固定對稱密鑰KK,將該記錄中的靜態(tài)口令密文和“密鑰種子”表C元素密文解密,再根據(jù)根據(jù)時間戳和隨機(jī)數(shù)組成的單鑰組合生成算法,對“密鑰種子”表C元素進(jìn)行選取,生成密鑰元素代替表,將H1位靜態(tài)口令代替成H1組密鑰元素并合成K1,將認(rèn)證系統(tǒng)自動增添的H2位靜態(tài)口令,代替成H2組密鑰元素并合成K2,將K1和K2合并成認(rèn)證密鑰K,認(rèn)證中心的加密系統(tǒng),用K加密隨機(jī)數(shù)生成認(rèn)證中心端的動態(tài)口令,通過對比兩端的動態(tài)口令是否相同?來判斷客戶端的用戶身份是否合法。
認(rèn)證中心端加密系統(tǒng),在加密卡芯片里,用摘要算法(如:SM3或SHA-1等)對用戶的靜態(tài)口令和密鑰種子表C元素進(jìn)行摘要,得到其摘要信息L1,再用一組固定的對稱密鑰KK,分別將每個用戶的靜態(tài)口令和“密鑰種子”表C的元素加密成密文,并將每個用戶的靜態(tài)口令和“密鑰種子”表C元素的“摘要”信息L1進(jìn)行加密,得到每個用戶的靜態(tài)口令和“密表種子”表C元素的密文,并得到每個用戶的靜態(tài)口令和“密表種子”表C元素摘要信息L1的密文即:每個用戶靜態(tài)口令和“密表種子”表C元素?cái)?shù)字簽名,再將每個用戶的用戶名、客戶端智能卡的標(biāo)識、用戶的靜態(tài)口令密文、“密鑰種子”表C元素的密文、用戶的靜態(tài)口令和“密表種子”表C元素的數(shù)字簽名,一并事先存儲在認(rèn)證中心端的“密鑰種子”數(shù)據(jù)庫中。
認(rèn)證中心端加密系統(tǒng),首先,在“密鑰種子”數(shù)據(jù)庫中選出一條記錄,輸入加密卡芯片里,在加密卡芯片里,調(diào)用固定對稱密鑰KK,將該記錄中用戶的靜態(tài)口令和“密鑰種子”表C元素密文解密,并將用戶的靜態(tài)口令和“密表種子”表C元素的數(shù)字簽名解密,得到用戶的靜態(tài)口令和“密鑰種子”表C元素的明文,并得到用戶的靜態(tài)口令和“密鑰種子”表C元素摘要的明文L1,再調(diào)用“摘要”算法對用戶的靜態(tài)口令和“密鑰種子”表C元素,進(jìn)行摘要得到摘要信息L2,通過對比L1和L2是否相同?來判別認(rèn)證中心端對應(yīng)用戶的靜態(tài)口令和“密鑰種子”表C的元素是否可信、完整。
客戶端用戶的靜態(tài)口令一部分由用戶輸入計(jì)算機(jī),一部分由認(rèn)證系統(tǒng)自動產(chǎn)生,通過密鑰元素代替表生成認(rèn)證密鑰,認(rèn)證密鑰生成過程都是在智能卡或加密卡的芯片里生成,明文不出芯片,保證兩端認(rèn)證密鑰運(yùn)行安全。
客戶端“密鑰種子”和單鑰組合生成算法,存放在智能卡芯片里,保證客戶端單鑰組合生成算法和“密鑰種子”數(shù)據(jù)的存儲安全。認(rèn)證中心端的單鑰組合生成算法存放在加密卡芯片里,全體用戶的靜態(tài)口令和“密鑰種子”是以密文的形式存儲,保證認(rèn)證中心端單鑰組合生成算法和全體用戶密鑰種子的存儲安全,防止黑客通過篡改用戶的各種認(rèn)證參數(shù),來攻擊認(rèn)證系統(tǒng)。
由時間戳和隨機(jī)數(shù)組成的單鑰組合生成算法,從“密鑰種子”表C中選出的36組元素,組成的子表E并由子表E元素,與全體靜態(tài)口令元素組成密鑰元素代替表中的密鑰元素變化量為:1636或3236,即:2144 或2180,基本上一次一變。
用戶輸入計(jì)算機(jī)的靜態(tài)口令雖然不變,且認(rèn)證系統(tǒng)自動增添的靜態(tài)口令也基本不變,但是,經(jīng)過實(shí)時產(chǎn)生一次一變的密鑰元素表的代替,生成的認(rèn)證密鑰一次一變。
用一次一變的認(rèn)證密鑰加密36位隨機(jī)數(shù)生成隨機(jī)數(shù)密文即:動態(tài)認(rèn)證口令,其中:每位十六進(jìn)制的隨機(jī)數(shù)占4比特,36位十六進(jìn)制隨機(jī)數(shù)共占144比特,變化量為:2144,動態(tài)口令的變化量也為:2144 ,基本上一次一變。
采用挑戰(zhàn)/應(yīng)答式認(rèn)證模式,能通過在認(rèn)證中心端設(shè)置認(rèn)證過程的生命周期T,來控制用戶進(jìn)行身份認(rèn)證的整個進(jìn)程,防止黑客利用截獲的動態(tài)認(rèn)證口令,來攻擊認(rèn)證系統(tǒng)。
采用一種安全單鑰管理技術(shù)建立安全協(xié)議的策略,是基于智能卡和加密卡的芯片是可信的基礎(chǔ)上,認(rèn)證系統(tǒng)中的各種安全協(xié)議,是在智能卡芯片和加密卡芯片里完成,都是基于“芯片級”的協(xié)議,安全性高。
本方案提出在客戶機(jī)端智能芯片和認(rèn)證中心端加密卡芯片里,采用輕量級密碼和安全單鑰管理技術(shù)來建立動態(tài)口令認(rèn)證系統(tǒng),將用戶輸入的靜態(tài)口令和認(rèn)證系統(tǒng)增添的靜態(tài)口令,通過一次一變的密鑰元素代替表代替后,生成的認(rèn)證密鑰一次一變,并產(chǎn)生的動態(tài)認(rèn)證口令也一次一變,保證認(rèn)證系統(tǒng)既高效,又安全。能滿足具有海量用戶的網(wǎng)絡(luò)身份認(rèn)證,為我國未來網(wǎng)絡(luò)的應(yīng)用和發(fā)展保駕護(hù)航。
[1] GM/T 0021-2012, 動態(tài)口令密碼應(yīng)用技術(shù)規(guī)范.
[2]專利申請?zhí)枺?00510107835.8 發(fā)明名稱:一種防止銀行信用卡被盜用的方法 發(fā)明人:胡陽.
[3]胡祥義,徐冠寧,杜麗萍.基于云計(jì)算的文件加密傳輸方法[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用.2013.5.
[4]沈昌祥.云計(jì)算安全與等級保護(hù)[J].信息安全與通信保密.2012.
[5]馮登國.開啟云計(jì)算安全時代[J].信息網(wǎng)絡(luò)安全.2011.
[6]張?jiān)朴?陳清金.云計(jì)算安全關(guān)鍵技術(shù)分析[J].電信科學(xué).2010.
[7]馮志剛,馬超.淺談云計(jì)算安全[J].科技風(fēng).2010.
[8]田景成.云計(jì)算與密碼技術(shù)[J].信息安全與通信保密.2012