防止撞庫攻擊的多因子身份認(rèn)證方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于信息安全技術(shù)領(lǐng)域,特別涉及一種用戶登錄口令生成及存儲方法,具體是一種防止撞庫攻擊的多因子身份認(rèn)證方法,可用于服務(wù)器對用戶的身份認(rèn)證能力的增強以及防止用戶在不安全網(wǎng)站注冊時泄漏重復(fù)使用的登錄口令。
【背景技術(shù)】
[0002]開放網(wǎng)絡(luò)上的安全通信是現(xiàn)代密碼學(xué)的研究熱點之一。密碼學(xué)作為信息安全的核心技術(shù),提供了加/解密、消息摘要、數(shù)字簽名等密碼算法,能夠?qū)崿F(xiàn)信息的機密性、完整性和不可抵賴性。密碼在數(shù)據(jù)保護(hù)、安全接入、信任體系建設(shè)等多個方面發(fā)揮著重要的作用,是解決?目息安全冋題最有效和最經(jīng)濟的途徑。
[0003]口令簡單易記,使用方便,無需硬件支持。因此,基于口令認(rèn)證構(gòu)造高質(zhì)量的身份認(rèn)證是一個成熟有效的方法??诹钫J(rèn)證密鑰交換的安全性完全依賴于用戶口令的保密性,因此,對口令的保護(hù)尤為重要。但開放環(huán)境中的安全問題日益突出,僅依靠口令來確認(rèn)身份的認(rèn)證方式面臨著嚴(yán)峻的挑戰(zhàn)。用戶輸入口令時,容易遭受監(jiān)窺;或者電腦中毒,鍵盤輸入口令時,木馬程序會記錄鍵盤輸入;為了記憶的方便,用戶通常將手機號碼、生日、門牌號等容易記憶的數(shù)字作為口令,用戶口令容易猜測,安全性較差。而且用戶為了方便好記,常常在多個不同的網(wǎng)站使用同一個口令,進(jìn)一步引發(fā)撞庫攻擊,撞庫是黑客通過收集互聯(lián)網(wǎng)已泄露的用戶和密碼信息,生成對應(yīng)的字典表,嘗試批量登陸其他網(wǎng)站后,得到一系列可以登錄的用戶。很多用戶在不同網(wǎng)站使用的是相同的帳號密碼,因此黑客可以通過獲取用戶在A網(wǎng)站的賬戶從而嘗試登錄B網(wǎng)址,這就可以理解為撞庫攻擊。
[0004]現(xiàn)有口令大多在注冊階段經(jīng)用戶一次性生成,并直接或經(jīng)過簡單加密存儲在服務(wù)器端,沒有進(jìn)行混淆運算來保證其在被盜情況下不被非法用戶使用。且登錄階段過于簡單,對用戶的身份驗證能力不夠強,非法用戶可從目標(biāo)較大的服務(wù)器端入手,竊取可直接使用的用戶口令,并假冒合法用戶身份登錄網(wǎng)站。為了增強系統(tǒng)的安全性,雙因子認(rèn)證的機制被提出,即在口令因子的基礎(chǔ)上,增加一個物理因子,如智能卡,口令卡,電子口令牌等。即使一個認(rèn)證因子被攻破,雙因子認(rèn)證系統(tǒng)仍然是安全的。但這些認(rèn)證因子大多不是用戶習(xí)慣隨身攜帶的設(shè)備,如智能卡讀卡器或者指紋識別器,缺乏實用性;而且只是簡單地存儲或顯示信息,沒有參與用戶生成口令的運算過程,若設(shè)備丟失,則該因子可被攻擊者輕易利用,安全性低。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的目的在于克服上述已有技術(shù)的不足,提出一種防止撞庫攻擊的多因子身份認(rèn)證方法,其特征在于,所述多因子包括有用戶口令,手機和手環(huán),三者缺一不可,多因子共同參與完成用戶的注冊及登錄,本發(fā)明的具體實現(xiàn)步驟包括:
[0006](I)初始化階段:
[0007]Ia)完成手環(huán)初始化:注冊激活手環(huán),并將其綁定到用戶U指定的手機端上,確保手環(huán)具有藍(lán)牙功能,并能與所關(guān)聯(lián)手機端進(jìn)行藍(lán)牙連接;
[0008]Ib)確保用戶U在注冊階段使用的PC端是安全可信的;
[0009](2)注冊階段:
[0010]用戶U在PC端利用短口令pwd,通過中止密鑰導(dǎo)出函數(shù)(HKDF),生成原始主密鑰k和驗證字符串V ;通過搖手環(huán)生成隨機數(shù)X,利用原始主密鑰k和隨機數(shù)X,在PC端生成安全性加強的用戶注冊口令Pu ;用戶U在服務(wù)器S進(jìn)行首次注冊,服務(wù)器S為該用戶U生成隨機數(shù)1,利用用戶注冊口令Pu和隨機數(shù)y,生成安全性更強的服務(wù)器存儲口令ps ;用戶U利用手機端串碼MEI和短口令pwd的hash值,加密服務(wù)器S發(fā)來的隨機數(shù)y,在手機端生成隱藏信息ctext ;服務(wù)器S最終把用戶注冊信息安全存儲在數(shù)據(jù)庫中,注冊信息包括:身份標(biāo)識id,隱藏信息ctext,用戶手機號num,驗證字符串v和服務(wù)器存儲口令ps ;
[0011](3)預(yù)登錄階段:
[0012]3a)用戶U將自己的身份標(biāo)識id發(fā)送給服務(wù)器S ;
[0013]3b)服務(wù)器S收到用戶身份標(biāo)識id后,查找數(shù)據(jù)庫中與用戶身份標(biāo)識id相對應(yīng)的隱藏信息ctext和驗證字符串V,然后生成一個隨機數(shù)challenge,并將隨機數(shù)challenge與隱藏信息ctext和驗證字符串V —起發(fā)回給用戶U ;
[0014]3c)用戶U利用服務(wù)器發(fā)來的驗證字符串V,并在手機端上輸入注冊階段使用的短口令pwd,通過HKDF計算導(dǎo)出注冊階段生成的原始主密鑰k,即HKDF.Extract (v,pwd) 一 (k):
[0015]3d)用戶U通過搖手環(huán)行為生成注冊時的隨機數(shù)X’并將隨機數(shù)X通過藍(lán)牙發(fā)送到手機纟而上;
[0016]3e)用戶U在手機端利用原始主密鑰k和隨機數(shù)X,生成用戶注冊口令PU ;
[0017]3f)用戶U利用手機端串碼頂EI和短口令pwd的hash值,解密隱藏信息ctext,得到注冊階段該網(wǎng)站服務(wù)器生成的隨機數(shù)y;再在手機端利用用戶注冊口令PU和隨機數(shù)y,生成服務(wù)器存儲口令PS ;
[0018](4)登錄階段:
[0019]4a)用戶U結(jié)合服務(wù)器存儲口令ps和收到的隨機數(shù)challenge,計算消息認(rèn)證碼R = MAC (ps, challenge),并將消息認(rèn)證碼R發(fā)送給服務(wù)器S ;
[0020]4b)服務(wù)器S收到消息認(rèn)證碼R后,查找數(shù)據(jù)庫中與用戶身份標(biāo)識id相對應(yīng)的服務(wù)器存儲口令ps,再結(jié)合challenge,計算消息認(rèn)證碼R’ = MAC (ps, challenge);最后,比較用戶U發(fā)送的消息認(rèn)證碼R與服務(wù)器S計算出的消息認(rèn)證碼R’,若相等,則允許用戶U登錄;否則,拒絕登錄請求。
[0021]本發(fā)明通過結(jié)合兩個因子手機和手環(huán)來加強該密鑰的安全性,以防止惡意攻擊者通過攻擊防范能力較薄弱的網(wǎng)站以獲得其數(shù)據(jù)庫中的用戶賬號和密碼,從而使用這些已經(jīng)泄漏的信息偽裝成合法用戶的身份嘗試登錄其他更有價值的網(wǎng)站,并由此盜取更多的個人信息,進(jìn)一步防止撞庫所得的隱私信息被犯罪分子利用來進(jìn)行詐騙等犯罪。增強了服務(wù)器驗證登錄用戶身份的能力,從根本上避免了撞庫攻擊可能給用戶帶來的損失。
[0022]本發(fā)明與現(xiàn)有技術(shù)相比具有以下優(yōu)點:
[0023]1.本發(fā)明中用戶只需記憶一個簡單的短口令pwd,通過對中止密鑰導(dǎo)出函數(shù)(HKDF)輸入不同的隨機數(shù)r,從而針對不同網(wǎng)站生成不同的原始主密鑰k和驗證字符串V,根本上避免了撞庫攻擊的發(fā)生;進(jìn)一步保證對于不同網(wǎng)站,用戶注冊口令Pu也不相同,SP使惡意服務(wù)器進(jìn)行共謀,也無法通過破解用戶信息得到用戶在其他安全網(wǎng)站的注冊口令;服務(wù)器存儲口令ps由服務(wù)器針對不同用戶生成不同的隨機數(shù)y而得到,且不同服務(wù)器針對同一用戶生成的隨機數(shù)y也都不相同,從而再次避免了撞庫攻擊的發(fā)生;
[0024]2.本發(fā)明對原始主密鑰k進(jìn)行了兩次結(jié)合多因子的運算,增強了對用戶身份進(jìn)行驗證的能力,有效避免了單一口令因子易被盜用并進(jìn)行身份偽裝的危險;本發(fā)明將便捷的手環(huán)作為除手機因子之外的另一個因子,利用手環(huán)輔助生成最終用于登錄的服務(wù)器存儲口令ps,方便用戶操作,應(yīng)用范圍廣。
【附圖說明】
[0025]圖1為本發(fā)明的總流程圖;
[0026]圖2為本發(fā)明中用戶注冊階段的子流程圖;
[0027]圖3為本發(fā)明中用戶預(yù)登錄階段的子流程圖;
[0028]圖4為本發(fā)明中用戶登錄階段的子流程圖。
【具體實施方式】
[0029]下面通過附圖和【具體實施方式】進(jìn)一步說明本發(fā)明的實施方案。
[0030]現(xiàn)階段的身份認(rèn)證大多依靠安全性較差的短口令,口令簡單易猜測且較易重復(fù)使用,不同用戶容易使用相同的簡單口令,易遭受暴力破解攻擊;同一用戶在不同網(wǎng)站使用相同口令,易遭受撞庫攻擊。為此,本發(fā)明展開了探索和研究,提出了一種可防止暴力破解攻擊和撞庫攻擊的多因子身份認(rèn)證方法。
[0031]實施例1
[0032]本發(fā)明是一種防止撞庫攻擊的多因子身份認(rèn)證方法,本發(fā)明中多因子包括有用戶口令,手機和手環(huán),三者缺一不可,多因子共同參與完成用戶的注冊及登錄,參照圖1,本發(fā)明的具體實現(xiàn)步驟包括:
[0033](I)初始化階段:
[0034]Ia)完成手環(huán)初始化:注冊激活手環(huán),并將其綁定到用戶U指定的手機端上,確保手環(huán)具有藍(lán)牙功能,并能與所關(guān)聯(lián)手機端進(jìn)行藍(lán)牙連接。
[0035]Ib)確保用戶U在注冊階段使用的PC端是安全可信的。
[0036](2)注冊階段:
[0037]用戶U在PC端利用自己方便記憶的短口令pwd,通過中止密鑰導(dǎo)出函數(shù)(HKDF),生成原始主密鑰k和驗證字符串V ;通過搖手環(huán)生成隨機數(shù)X,利用原始主密鑰k和隨機數(shù)X,在PC端生成安全性加強的用戶注冊口令pu ;用戶U在服務(wù)器S進(jìn)行首次注冊,服務(wù)器S為該用戶U生成隨機數(shù)y,利用用戶注冊口令pu和隨機數(shù)y,生成安全性更強的服務(wù)器存儲口令ps ;用戶U利用手機端串碼頂EI和短口令pwd的hash值,加密服務(wù)器S發(fā)來的隨機數(shù)