初羿瑩,施 陽
基于Hash加密的軟件密碼認(rèn)證方案探究
初羿瑩,施 陽
(佳木斯大學(xué)信息電子技術(shù)學(xué)院,佳木斯154007)
對于軟件密碼尤其是網(wǎng)絡(luò)軟件的密碼,如果使用明文進(jìn)行管理與保管,一旦系統(tǒng)被黑客攻擊或者某一管理人員出于經(jīng)濟(jì)利益進(jìn)行竊取,可能會產(chǎn)生較為嚴(yán)重的用戶經(jīng)濟(jì)或其它方面的損失,出于對保護(hù)用戶經(jīng)濟(jì)利益以及個人隱私方面的考慮,一種能夠有效的保護(hù)用戶密碼信息并能夠同時進(jìn)行密碼認(rèn)證的方案亟待提出。從描述Hash加密的基本原理出發(fā),提出了一種基于Hash加密的網(wǎng)絡(luò)軟件密碼認(rèn)證方案,以此解決網(wǎng)絡(luò)軟件的密碼安全問題。最后,通過對不同Hash加密算法在認(rèn)證過程中的時間對比,確認(rèn)該方案能夠應(yīng)用在網(wǎng)絡(luò)軟件系統(tǒng)認(rèn)證的實踐之中。
軟件密碼認(rèn)證;Hash加密;認(rèn)證方案
網(wǎng)絡(luò)化技術(shù)水平的進(jìn)步以及網(wǎng)絡(luò)經(jīng)濟(jì)的發(fā)展,使得當(dāng)前軟件行業(yè)進(jìn)入到網(wǎng)絡(luò)化的大時代。以各種網(wǎng)絡(luò)管理系統(tǒng)為主體的網(wǎng)絡(luò)化軟件,已廣泛深入到人們的日常生活當(dāng)中。毫無疑問,若想獲得網(wǎng)絡(luò)化軟件所帶來的便利,用戶首先需要注冊網(wǎng)絡(luò)化軟件,并通過軟件的登錄界面進(jìn)入到系統(tǒng)中,然后才能使用該軟件所提供的各種功能。因此,軟件的服務(wù)器保存了大量用戶設(shè)定的登錄服務(wù)密碼,這些密碼能夠保障用戶正常使用軟件所提供的服務(wù),并為用戶帶來便利。然而,使用明文將這些密碼保存在系統(tǒng)所在的服務(wù)器中,可能會存在兩方面的安全隱患。一方面,以黑客攻擊為首的攻擊行為,可能在服務(wù)器被攻破的情況下獲取大量的用戶密碼,進(jìn)而對用戶的隱私或者經(jīng)濟(jì)安全帶來威脅;另一方面,以資質(zhì)較差的管理人員為首的攻擊行為,可能利用用戶當(dāng)前的明文密碼去分析用戶其它不同類別的相關(guān)軟件的用戶信息,進(jìn)而對用戶的信息安全造成威脅。因此,如何安全有效地對網(wǎng)絡(luò)化軟件的密碼進(jìn)行管理,使得各種攻擊行為都無法有效獲得用戶密碼成為了當(dāng)前網(wǎng)絡(luò)化軟件研究的一個主要方面,并引起廣大研究者的普遍關(guān)注,目前也獲得了一定的研究成果。但這些研究成果尚存在多種亟待改善的不足。針對當(dāng)前該領(lǐng)域研究存在的不足,以及用戶密碼這一敏感信息自身的特殊性,提出了一種基于Hash加密的網(wǎng)絡(luò)軟件密碼認(rèn)證方案。該方案無需對數(shù)據(jù)庫中的密碼進(jìn)行特殊處理,且能夠有效地將用戶密碼進(jìn)行加密處理,同時由于該方案采用單向加密方式,使得攻擊者無法通過其它手段獲得密鑰進(jìn)而識別潛在的用戶密碼,具有最大程度的密碼安全保護(hù)能力。
Hash加密是一種能夠?qū)⑷我忾L度的二進(jìn)制數(shù)值轉(zhuǎn)換映射為一段固定非等長度的二進(jìn)制數(shù)值的轉(zhuǎn)換算法,其中轉(zhuǎn)換后的二進(jìn)制數(shù)值被稱為Hash值,且Hash值是一段數(shù)據(jù)唯一且極其緊湊的數(shù)值表示形式[1]。Hash的加密過程可以形式化表示為:
其中,無論n的取值為多少,k為一個固定取值。
如果Hash一段明文或該段明文中的任一一個字母更改后,其計算后產(chǎn)生的Hash值都將不同,且若要找到Hash值為同一個值的兩個完全不同的輸入,在計算上是不可能實現(xiàn)的。因此,數(shù)據(jù)的Hash值可以用來檢驗數(shù)據(jù)的完整性[2]。
目前典型的Hash算法包括MD2、MD4、MD5、SHA-1和SHA256等等。由于Hash加密具有以上優(yōu)點,因此很多人考慮將這樣一種加密算法應(yīng)用在對密碼等多種信息的認(rèn)證方案使用上?;谶@樣一種思想,Hash加密算法被首先嘗試用在口令保護(hù)的策略研究方面,王新房等人設(shè)計了一個Active X Server部件,并基于這種部件給出了相應(yīng)的C++實現(xiàn)代碼[3],在利用Hash加密進(jìn)行認(rèn)證方面進(jìn)行了有益的嘗試。在此之后,王寧等人為了增強這種Hash加密方法在認(rèn)證方面的能力,提出了一種能夠克服傳統(tǒng)挑戰(zhàn)/應(yīng)答方案認(rèn)證開銷大的缺點,并提供通信雙方的相互認(rèn)證、避免各種攻擊且能夠有效地保護(hù)用戶身份信息的方法[4]。在2014年,張磊等人在總結(jié)前人工作的基礎(chǔ)上,開始嘗試在網(wǎng)絡(luò)化的教務(wù)管理系統(tǒng)中使用Hash加密方法對用戶密碼加以保護(hù)[5]。但是,以上種種嘗試僅是對某一特殊指定的軟件系統(tǒng)進(jìn)行Hash加密的測試和探索,其研究成果不能形成有效的基于Hash加密的密碼保護(hù)方案,不能在實踐領(lǐng)域提供較強的理論參考與技術(shù)。鑒于此,新提出的保護(hù)方案無論在理論參考還是在實踐探索方面均具有較高的參考價值。
一般情況下,網(wǎng)絡(luò)化軟件系統(tǒng)的使用包含注冊和登錄兩個基本過程,這樣的一種數(shù)據(jù)處理方式?jīng)Q定了Hash加密在密碼管理中的應(yīng)用同樣需要分為兩個主要方面,一方面可認(rèn)為是利用Hash加密產(chǎn)生密文,密碼在用戶注冊過程中產(chǎn)生;另外一個過程應(yīng)用在用戶登錄計算,即用戶輸入的登錄密碼在Hash加密狀態(tài)下與系統(tǒng)保存的密碼之間的認(rèn)證過程,以便用戶登錄軟件系統(tǒng),使用軟件系統(tǒng)的基本功能,這一過程可認(rèn)為是密碼的認(rèn)證使用過程。以上這兩個方面可以表示為如圖1所示的兩個子密碼管理功能。
圖1 Hash加密的密碼管理
由這兩個主要的加密密碼處理過程,可以得出基于Hash加密的密碼處理基本流程:
用戶首先在注冊時輸入自身的明文密碼,由系統(tǒng)使用Hash加密將明文密碼加密后獲得密文密碼并保存在服務(wù)器當(dāng)中。由于Hash函數(shù)自身的特性,這個保存的密文密碼即使攻擊者獲得之后,也無法獲知密碼的真實情況,且無法通過尋找能獲得相同Hash值的方法對該密碼進(jìn)行猜測。在用戶登錄階段,用戶輸入明文密碼,系統(tǒng)將明文密碼使用Hash函數(shù)進(jìn)行加密,并獲得加密后的密文密碼。同時,系統(tǒng)從數(shù)據(jù)庫中調(diào)用已保存的密文密碼,并將密文密碼與當(dāng)前用戶數(shù)據(jù)與加密后的密文密碼進(jìn)行比對,當(dāng)兩組密碼能夠吻合時,用戶登錄該網(wǎng)絡(luò)系統(tǒng),否則當(dāng)前用戶為非法用戶,系統(tǒng)拒絕該用戶的登陸行為,用戶無法獲得系統(tǒng)提供的任何服務(wù)。
為了便于理解,算法1給出了使用Hash加密方法進(jìn)行密文驗證的整個過程:
算法1密文驗證
輸入:密碼明文p、系統(tǒng)保存密碼密文c
int i=3;//此處為第1行,設(shè)定用戶可嘗試輸入3次密碼while(i>0)
用戶輸入自身密碼明文p;
系統(tǒng)調(diào)用Hash函數(shù)對p加密獲得c’;
系統(tǒng)調(diào)用保存密文c;
if(c’==c)
輸出1;
break;
else
i--;
end if
輸出0;
end
在算法1中,第1行設(shè)定了用戶嘗試登錄輸入密碼的次數(shù),以此防止攻擊者通過窮舉攻擊猜測獲得用戶密碼。第3-12行給出了算法通過Hash加密獲得用戶密文密碼并與系統(tǒng)中保存的密文密碼進(jìn)行比較并驗證登錄的整個過程,若比較成功則輸出1,此時表示用戶輸入密碼吻合,用戶可進(jìn)行登錄之后的操作,否則在嘗試3次之后,輸出0,表示當(dāng)前用戶為非法用戶,可以在規(guī)定的時間范圍之后再次嘗試登錄。
從對算法1的分析中可以獲知,采用Hash加密進(jìn)行用戶密碼管理的主要手段,是通過登錄過程中加密后的密文與系統(tǒng)中保存的密文之間對比實現(xiàn)的。這種安全機制實際上是取決于Hash函數(shù)加密后的密文具有強抗碰撞性的特點,即在計算上是無法找到能夠與當(dāng)前明文不同的另一段明文在加密后具有相同的Hash值的。因此,使用該方法是能夠為用戶的密碼提供有效的保護(hù)的。同時,由于對用戶密碼使用Hash獲得的Hash值,具有與原密碼完全不同的數(shù)值或字符組成方式,使得攻擊者即使獲得該值也無法獲知用戶密碼,因而無法通過該密碼猜測用戶在當(dāng)前網(wǎng)絡(luò)化軟件系統(tǒng)中的隱私信息,更無法猜測獲得其它網(wǎng)絡(luò)化軟件系統(tǒng)的用戶信息[6]。
在對算法的測試過程中,使用了MD5、SHA1和SHA256作為Hash加密的主要方法對用戶密碼加以測試,測試主要從算法的加密時間和密碼比對兩方面進(jìn)行[7]。算法的執(zhí)行時間表示為:
其中,te表示加密時間,tp表示加密后字符比對時間。通過實驗比對得到了如圖2所示的幾種Hash加密算法執(zhí)行時間隨密碼長度的變化曲線[8]。
圖2 Hash加密算法的執(zhí)行時間對比
從圖2中可以看到,盡管Hash加密算法在登錄認(rèn)證的過程中所需的執(zhí)行時間隨用戶密碼長度的增長而逐漸增加,若是所增加的時長尚在用戶可承受的等待時間范圍之內(nèi),即使耗時最多的SHA256在輸入密碼較長的情況下,其處理時間仍在微秒級的范圍,因此該方法可應(yīng)用于具體網(wǎng)絡(luò)化軟件密碼管理的實踐當(dāng)中[9]。
針對網(wǎng)絡(luò)化軟件用戶密碼使用明文保存可能會產(chǎn)生信息安全威脅的問題,提出了一種基于Hash加密的網(wǎng)絡(luò)化軟件密碼管理方案,該方案通過單向加密利用當(dāng)前存在的主流Hash加密方法對用戶輸入明文密碼信息進(jìn)行加密,使得攻擊者無法通過獲得的加密密文獲得用戶密碼信息,更無法分析用戶其它相關(guān)隱私信息。同時,利用Hash加密后信息的強碰撞性,使用加密和系統(tǒng)保存密碼校驗的方法,實現(xiàn)非解密情況下的用戶登錄驗證,在保障系統(tǒng)順利運行的情況下,有效保障了用戶個人密碼信息的安全。最后,對實驗獲得的算法執(zhí)行時間進(jìn)行比對分析,進(jìn)一步證明了所提出的方法具有較強的實踐性,能夠廣泛應(yīng)用在各種網(wǎng)絡(luò)化軟件的密碼認(rèn)證過程中,且對軟件的正常運行毫無影響。
[1]Boesgaard C.Applied Cryptography[J].Protocols Algorithms&Source Codein CChapter,2001,9(1-2):873-874.
[2] 谷利澤,鄭世慧,楊義先.現(xiàn)代密碼學(xué)教程[M].北京郵電大學(xué)出版社,2009.Gu Lize,Zheng Shihui,Yang Yixian.Modern Cryptography Course[M].Beijing University of Posts and Telecommunications Press,2009.
[3] 王新房,易文飛,鄧亞玲.基于單向Hash函數(shù)的口令保護(hù)策略[J].現(xiàn)代電子技術(shù),2016,(11):21-23+26.Wang Xinfang,Yi Wenfei,Deng Yaling.Password Protection Strategy Based on One-Way Hash Function [J].Modern Electronic Technology,2016,(11):21-23+26.
[4] 王寧,邱緒東,羅嬪.基于hash函數(shù)和公鑰算法的一次性口令方案[J].計算機應(yīng)用研究,2009,26(02):716-718.Wang Ning,Qiu Xudong,Rowepin.One Time Password Scheme Based on Hash Function and Public Key Algorithm[J].Computer Application Research,2009,26(02):716-718.
[5] 張磊,陳美娜,薛丹.高校教務(wù)管理的數(shù)據(jù)安全研究[J].河北軟件職業(yè)技術(shù)學(xué)院學(xué)報,2014,16(02):55-57.Zhang Lei,Chen Meina,Xue Dan.Research on Data Security of University Educational Administration [J].Journal of Hebei Software Institute,2014,16(02):55-57.
[6] 劉軍霞,王曉燕,楊先文.一種基于對稱密碼的USB認(rèn)證器設(shè)計與應(yīng)用[J].微處理機,2015(3):68-71.Liu Junxia,Wang Xiaoyan,Yang Xianwen.Design and Application of a USBAuthenticator Based on Symmetric Cryptography[J].Microprocessor,2015(3):68-71.
[7] 高穎,葛飛,劉寧,郭淑霞.基于COM技術(shù)的虛擬儀表ActiveX 控件開發(fā)[J].微處理機.2013(06):42-45.Gao Ying,Ge Fei,Liu Ning,Guo Shuxia.Development of Virtual Instrument ActiveX Control Based on COMTechnology[J].Microprocessor.2013(06):42-45.
[8] 葉偉偉,歐慶于,柏小武.基于服務(wù)架構(gòu)的密碼服務(wù)系統(tǒng)認(rèn)證方案研究[J].信息網(wǎng)絡(luò)安全.2016(05):37-43.Ye Weiwei,Ou Qingyu,Bai XiaoWu.Research on authentication schemeof cryptographic servicesystembased on Service Architecture[J].Information Network Security.2016(05):37-43.
[9] 毛明,陳少暉,袁征,賈永興.關(guān)于Hash函數(shù)MD5的解析[J].計算機科學(xué).2016(11):106-108.Mao Ming,Chen Shaohui,Yuan Zheng,Jia Yongxing.Analysisof Hash Function MD5,[J].Computer Science.2016(11):106-108.
Research on Software Password Authentication Scheme Based on Hash Encryption
The password used in software especially in network software is easy to be attacked by hackers or stolen by some administrator for commercial purpose,if administrated and stored in plaintext.Then serious economic or other losses will be incurred to the users.In order to cope with this condition,and protect the economic interests of the users and privacy concerns,a method which can provide the service of password information protection as well as password authentication scheme is urgently needed.Starting with describing the basic principle of Hash encryption,a network software password authentication scheme based on Hash encryption is proposed to solve the password security problem of network software.Finally,by comparing the timings of different Hash encryption algorithm during the authentication,it is confirmed that the scheme can be applied in the practice of network software system certification.
Software password authentication;Hash encryption;Authentication scheme
10.3969/j.issn.1002-2279.2017.06.014
A
1002-2279-(2017)06-0062-04
初羿瑩(1996—),女,黑龍江省哈爾濱市人,本科在讀,主研方向:計算機應(yīng)用。
施陽(1981—),男,江蘇省鎮(zhèn)江市人,講師,主研方向:軟件工程,javaee網(wǎng)絡(luò)開發(fā),數(shù)據(jù)庫應(yīng)用。
2017-10-24