專利名稱:一種新口令認(rèn)證方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及信息網(wǎng)絡(luò)安全技術(shù)領(lǐng)域,特別是一種新口令認(rèn)證方法和裝置。
技術(shù)背景
信息安全是指通過保護(hù)應(yīng)用、數(shù)據(jù)或者設(shè)備,使其免受非法授權(quán)的訪問或使用,以 達(dá)到保護(hù)信息和資源、保護(hù)用戶及其私有性等目的,并確保在各種攻擊下,應(yīng)用和數(shù)據(jù)在傳 輸過程中的安全性。數(shù)據(jù)安全作為信息安全最基本、最重要的環(huán)節(jié),一直是人們關(guān)注的焦 點(diǎn)。重要信息流逝,將給個人、企業(yè)帶來損失,因此對重要信息進(jìn)行加密,具有非凡的意義。 隨著信息安全要求的不斷提高,隨之而來的是層出不窮的各種口令加密算法,比如DES等, 再結(jié)合不可逆的哈希算法以生成加密密鑰,比如MD4等,這是目前主流軟件的口令加密方 式,而加密密鑰的生成是這個過程中最重要的一個步驟,只要保持傳輸過程中加密密鑰的 安全性以及口令的安全性,就可以保證加密數(shù)據(jù)的安全性。隨著科技的不斷發(fā)展,各種攻擊 手段也隨之跟進(jìn),因此對于哈希算法的安全性要求也隨之提高。
就目前的技術(shù)水平而言,想要逆推現(xiàn)在的主流哈希算法或者利用CPU的計(jì)算能力 來窮舉哈希算法以取得密鑰,顯得有點(diǎn)力不從心,要花費(fèi)的代價甚至超過數(shù)據(jù)本身的價值。 然而并行解析技術(shù)的的出現(xiàn)改變了這一局面。
目前主流軟件的信息加密存在一定的缺陷,口令窮舉的數(shù)據(jù)路徑具有高度的并行 性,并行技術(shù)已然對傳統(tǒng)口令學(xué)構(gòu)成了巨大的威脅。對于這類簡單的加密算法要解析口令, 將是瞬間的事情,而口令一旦泄露了,數(shù)據(jù)就沒有安全性可言。如果采用復(fù)雜的加密過程, 比如增加哈希算法的循環(huán)輪次,雖然可以從一定程度上增加算法的抗并行平臺解析性,但 是也會增加數(shù)據(jù)解密的性能損耗,甚至使實(shí)時性得不到保證。下面分析幾款主流軟件加密 算法缺陷
NT Hash、MD5、SHAl等哈希算法,屬于計(jì)算密集型算法,利用并行技術(shù)可輕易對其 進(jìn)行技術(shù),因此直接利用哈希算法加密用戶口令的軟件,其安全性已大幅降低,比如QQ09 的用戶口令就是采用若干次MD5+TEA的方式進(jìn)行加密,屬于計(jì)算密集型,其在并行平臺上 的口令解析速度已達(dá)10億/s的數(shù)量級。
PDF的用戶口令采用50次MD5+20次RC4的方式加密,它通過少許循環(huán)增加計(jì)算量 以增強(qiáng)軟件安全性,但由于RC4只采用大小為256個字節(jié)的密鑰調(diào)度數(shù)組,也可輕易得到并 行加速,從而導(dǎo)致安全性降低。
Office07采用5萬次SHA1+AES的方式加密,而Office采用10萬次SHA1+AES的 方式,它們都是通過增加哈希輪次以增加軟件的安全性,該方式哈希算法比較單調(diào),數(shù)據(jù)并 行度比較高,OfficelO則減半,但解密時間卻增倍。
文檔壓縮軟件WinRAR是另外一個通過增加哈希輪次以增加軟件安全性的典型, 單純增加哈希輪次雖然可從較大程度上保證安全性,但同時會影響解密的實(shí)時性。
存儲加密軟件TrueCrypt的加密有3種哈希+8種加密算法供用戶選擇,算法雖然 比較多樣,但是一旦算法被確定下來,其數(shù)據(jù)路徑也具有高度的并行性,也可以輕易被并行平臺解析。據(jù)了解,TrueCrypt中RIPEMD160+AES的加密方式通過并行加速。 發(fā)明內(nèi)容
本發(fā)明的目的在于克服現(xiàn)有技術(shù)之不足,提供一種能有效抵抗口令解析的新口令 認(rèn)證機(jī)制,在算法過程中安插了不同的哈希算法選擇,不同的口令,其數(shù)據(jù)路徑可能完全不 一樣,可以有效打破并行平臺的多線程機(jī)制。該算法過程不僅有大量的片外存儲器存取操 作(Box讀寫),能在數(shù)據(jù)讀寫上造成很大的延遲,有效遏制了并行平臺的數(shù)據(jù)吞吐率,又通 過循環(huán)次數(shù)為N的主循環(huán)體增加計(jì)算量,從而致使并行平臺口令解析無法進(jìn)行,而且最后 輸出的密鑰也是一個哈希值,同樣具有哈希算法的安全性。
本發(fā)明提供了一種新口令認(rèn)證方法,包括
步驟1,接收輸入的原始口令;
步驟2,生成隨機(jī)值hit值;
步驟3,根據(jù)所述隨機(jī)值Mlt值和所述原始口令(Password),通過哈希算法生成 初始密鑰Hash。;具體為=Hashtl = H。(salt+password),記Hash。的大小為Ltl個字節(jié);
步驟4,用Hash。通過字符串轉(zhuǎn)換,生成初始密鑰向量D,HaShQ的大小為Ltl個字節(jié), D是一個大小為2*1^個字節(jié)的4維向量數(shù)組[X,y, z, w];
步驟5,根據(jù)初始密鑰Hashtl,通過混合邏輯填充,初始化密鑰盒Box,
步驟6,根據(jù)初始化密鑰盒Box和初始密鑰向量D,通過邏輯運(yùn)算,生成新密鑰向量 D,;
步驟7,取新密鑰向量D’為最終密鑰key。
優(yōu)選地,所述步驟6之后還包括步驟
根據(jù)所述初始密鑰向量D和所述初始化密鑰盒Box,通過對初始化密鑰盒Box進(jìn)行 混合邏輯填充,生成新的密鑰盒Box ;
之后還包括循環(huán)計(jì)算步驟,具體包括
設(shè)置循環(huán)上限為N ;
選擇哈希算法;
在每一次循環(huán)計(jì)算中,根據(jù)當(dāng)前密鑰向量D’n的第一個字節(jié)D’n(0)選擇不同的哈 希算法;所述η為大于或等于零,小于N的整數(shù),表示當(dāng)前循環(huán)輪次,N為循環(huán)上限,當(dāng)η = 0時,D’ ^為所述步驟6所生產(chǎn)的密鑰向量D’ ;
根據(jù)當(dāng)前循環(huán)第η次和當(dāng)前密鑰向量D’n,構(gòu)造下一輪循環(huán)過程密鑰Hashn+1 ;具體 為:Hashn+1 = H(n+D,n), η e
根據(jù)Hashn+1生成下一輪循環(huán)過程密鑰向量Dn+1,具體為Dn+1 = Convert_to_ String(Hashn+1);所述Convert_to_String為字符串向量轉(zhuǎn)化函數(shù);
根據(jù)下一輪循環(huán)過程密鑰向量Dn+1和新的密鑰盒Box,通過邏輯運(yùn)算,生成下一輪 循環(huán)過程新密鑰向量D’n+1 ;
所述步驟7 “取新密鑰向量D’n+1為最終密鑰key”,為最后一次循環(huán)η = N-I時計(jì) 算得到的新密鑰向量D’n。
本發(fā)明還公開了一種新口令認(rèn)證裝置,包括
接收模塊,用于接收輸入的原始口令;
隨機(jī)值生成模塊,用于生成隨機(jī)值,確保同一口令、同一數(shù)據(jù)在不同時刻最終的加 密信息不一樣;
初始密鑰生成模塊,與接收模塊和隨機(jī)值生成模塊相連,用于根據(jù)隨機(jī)值和原始 口令,通過哈希算法生成初始密鑰Hash。;
初始密鑰向量生成模塊,與初始哈希值生成模塊相連,用于用Hash。通過字符串轉(zhuǎn) 換,生成初始密鑰向量D ;
初始密鑰盒生成模塊,與初始密鑰生成模塊相連,根據(jù)該模塊生成的初始密鑰 Hash0,通過混合填充,初始化密鑰盒Box ;
新密鑰向量生成模塊,與所述初始密鑰向量生成模塊和所述初始密鑰盒Box生成 模塊相連,用于根據(jù)初始化密鑰盒Box和初始密鑰向量D,通過邏輯運(yùn)算,生成新密鑰向量 D,;
最終密鑰生成模塊,與所述新密鑰向量生成模塊相連,用于取出新密鑰向量D’,作 為最終密鑰key輸出。
優(yōu)選地,為了達(dá)到更好的效果,還包括新密鑰盒Box生成模塊和循環(huán)計(jì)算模塊;
新密鑰盒Box生成模塊,與初始密鑰向量生成模塊和初始密鑰盒Box生成模塊相 連,用于根據(jù)初始密鑰向量D和初始化密鑰盒Box,通過對初始化密鑰盒Box進(jìn)行自身邏輯 填充,生成新的密鑰盒Box;
循環(huán)計(jì)算模塊,與所述新密鑰盒Box生成模塊、新密鑰向量生成模塊相連,用于根 據(jù)設(shè)置的循環(huán)次數(shù)N進(jìn)行循環(huán)計(jì)算,每次循環(huán)中,選擇哈希算法,根據(jù)當(dāng)前循環(huán)第η次和當(dāng) 前密鑰向量D’ η,構(gòu)造下一輪循環(huán)過程密鑰Hashn+1,并根據(jù)Ha shn+1生成下一輪循環(huán)過程密 鑰向量Dn+1,并根據(jù)下一輪循環(huán)過程密鑰向量Dn+1和密鑰盒Box,生成下一輪循環(huán)過程新密 鑰向量D’ n+1,并把最后一環(huán)節(jié)的循環(huán)計(jì)算得到的D’ N作為最終密鑰向量發(fā)送給最終密鑰生 成模塊;
所述η為大于或等于零,小于N的整數(shù),表示當(dāng)前循環(huán)輪次,N為循環(huán)上限,當(dāng)η = 0時,D’ ^為所述新密鑰向量生成模塊所生產(chǎn)的密鑰向量D’。
本發(fā)明的有益效果是,利用隨機(jī)&ilt值,增加了算法過程的隨機(jī)特性,安插了不 同的哈希算法選擇,使不同口令具有不同的數(shù)據(jù)路徑,從而打破平行平臺的多線程機(jī)制;哈 希算法的輸入數(shù)據(jù)塊生成方式以及哈希的數(shù)據(jù)輸入方式;算法通過一個主循環(huán)體實(shí)現(xiàn)密鑰 盒Box、哈希算法、哈希輸入數(shù)據(jù)的不斷更新,增加適當(dāng)?shù)膬?nèi)存存取次數(shù)以及計(jì)算量,遏制了 并行平臺的數(shù)據(jù)和指令吞吐率,從而致使并行平臺口令解析無法進(jìn)行;整個算法過程是不 可逆的,算法最后的輸入時一個哈希值,同樣具有算法的安全性。非法授權(quán)者在不知道口令 的情況下,想要嘗試口令以取得機(jī)密數(shù)據(jù),幾乎是不可能的。該算法的安全性極高,彌補(bǔ)了 當(dāng)前軟件加密的安全缺陷,可抵抗口令暴力解析,能有效保護(hù)用戶口令和數(shù)據(jù)的安全性。
圖1為本發(fā)明的一種新口令認(rèn)證方法流程示意圖;具體實(shí)施方式
參見圖1所示,本發(fā)明的一種新口令認(rèn)證方法,包括
步驟1,接收輸入的原始口令;
步驟2,生成隨機(jī)值,口令學(xué)上習(xí)慣稱之為Mlt值;
本步驟中,生成隨機(jī)值&ilt值,確保即使同一口令、同一數(shù)據(jù),不同時刻輸出的加 密數(shù)據(jù)不一樣,增加該方法的隨機(jī)性。
步驟3,根據(jù)隨機(jī)值Mlt值和原始口令(Password),通過哈希算法生成初始密鑰 Hash0;
本步驟中,隨機(jī)值Mlt值和原始口令(Password)為輸入,選取現(xiàn)有的哈希算法中 的一種,當(dāng)成默認(rèn)哈希算法H。,H0可以為MD5、SHAl, RIPEMD160等算法。具體為=Hashtl = H0(salt+password);記 Hash。的大小為 L。個字節(jié)。
步驟4,用Hash。通過字符串轉(zhuǎn)換,生成初始密鑰向量D ;
本步驟具體為把Hash。轉(zhuǎn)為字符串向量,記為D,則D是一個大小為2*LQ個字節(jié)的 4 維向量數(shù)組[x,y,z,w],每一維占用一個字節(jié)D = Convert_to_String(Hash0);這里 Convert_ to_String是實(shí)現(xiàn)字符串向量轉(zhuǎn)化的函數(shù)接口,可自行實(shí)3 ,其輸入為Hash。,輸出為D。
比如=Hash0 = 0x11223300,L0 = 4 個字節(jié);則
D = Convert_to_String (Hash0)
= Convert_to_String (0x11223300)
=〃 11223300〃
D 變?yōu)?8 個字節(jié),且[‘1,,‘1,,‘2,,‘2,]和[‘3,,‘3,,‘0,,‘0,]分別組成 2個4維向量。
步驟5,根據(jù)初始密鑰Hashtl,通過混合填充,初始化密鑰盒Box ;
這里,由于Box是通過密鑰生成的,故常稱之為密鑰盒。
本步驟中,密鑰盒Box初始化以初始密鑰HashO和Box自身為輸入,進(jìn)行填充混 合,定義Box如下unsigned int Box [4] [256] 0具體混合填充方法如下,其中%表示求余運(yùn)算,&表示按位與運(yùn)算,“表示異或運(yùn)算
權(quán)利要求
1.一種新口令認(rèn)證方法,其特征在于,包括如下步驟 步驟1,接收輸入的原始口令;步驟2,生成隨機(jī)值Mlt值;步驟3,根據(jù)所述隨機(jī)值Mlt值和所述原始口令,通過哈希算法生成初始密鑰Hash。; 具體為HashQ = HQ(salt+password),記 Hash。的大小為 Ltl 個字節(jié);步驟4,用Hash。通過字符串轉(zhuǎn)換,生成初始密鑰向量D,HaShQ的大小為Ltl個字節(jié),D是 一個大小為2禮。個字節(jié)的4維向量數(shù)組[X,y,ζ, w];步驟5,根據(jù)初始密鑰Hashtl,通過混合邏輯填充,初始化密鑰盒Box,步驟6,根據(jù)初始化密鑰盒Box和初始密鑰向量D,通過邏輯運(yùn)算,生成新密鑰向量D’ ;步驟7,取新密鑰向量D’為最終密鑰key。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟6之后還包括步驟根據(jù)所述初始密鑰向量D和所述初始化密鑰盒Box,通過對初始化密鑰盒Box進(jìn)行混合 邏輯填充,生成新的密鑰盒Box ; 還包括循環(huán)計(jì)算步驟,具體包括 設(shè)置循環(huán)上限為N; 選擇哈希算法;在每一次循環(huán)計(jì)算中,根據(jù)當(dāng)前密鑰向量D’n的第一個字節(jié)D’n(0)選擇不同的哈希算 法;所述η為大于或等于零,小于N的整數(shù),表示當(dāng)前循環(huán)輪次,N為循環(huán)上限,當(dāng)η = 0時, 為所述步驟6所生產(chǎn)的密鑰向量D’ ;根據(jù)當(dāng)前循環(huán)第η次和當(dāng)前密鑰向量D’ η,構(gòu)造下一輪循環(huán)過程密鑰Hashn+1 ;具體為 Hashn+1 = H(n+D,n), η e
;根據(jù)初始密鑰Hash0,通過混合邏輯填充,初始化密鑰盒Box,根據(jù)初始化密鑰盒Box和初始密鑰向量D,通過邏輯運(yùn)算,生成新密鑰向量D’;取新密鑰向量D’為最終密鑰key。該方法的安全性極高,彌補(bǔ)了當(dāng)前軟件加密的安全缺陷,可抵抗口令暴力解析,能有效保護(hù)用戶口令和數(shù)據(jù)的安全性。
文檔編號H04L9/32GK102045169SQ20101059038
公開日2011年5月4日 申請日期2010年12月10日 優(yōu)先權(quán)日2010年12月10日
發(fā)明者張永光, 張雪峰, 湯偉賓 申請人:廈門市美亞柏科信息股份有限公司