本發(fā)明涉及信息安全領(lǐng)域,特別是涉及一種基于白盒的加密方法及系統(tǒng)。
背景技術(shù):
近年來,隨著移動(dòng)互聯(lián)網(wǎng)、智能終端、大數(shù)據(jù)、云計(jì)算等的發(fā)展,移動(dòng)互聯(lián)網(wǎng)從一種技術(shù)演變?yōu)槿藗兩畹沫h(huán)境。伴隨證券賬戶自由流動(dòng)制度的實(shí)施,證券開戶、交易、服務(wù)等環(huán)節(jié)已實(shí)現(xiàn)網(wǎng)絡(luò)化?;ヂ?lián)網(wǎng)金融的移動(dòng)化趨勢(shì)在證券行業(yè)日益深入,越來越多的投資者通過手機(jī)、平板電腦等移動(dòng)終端進(jìn)行交易。中證協(xié)數(shù)據(jù)顯示,去年券商網(wǎng)上業(yè)務(wù)占比繼續(xù)提升,網(wǎng)上開戶占比由2014年的50%提高到2015年的92%;網(wǎng)上交易人數(shù)占比由2014年的79。28%提高到2015年的84。43%。這些網(wǎng)上開戶和網(wǎng)上交易數(shù)據(jù)中,幾乎九成來自移動(dòng)終端的網(wǎng)上行為。大型金融機(jī)構(gòu)、第三方在線支付網(wǎng)站成為網(wǎng)絡(luò)釣魚的主要對(duì)象,黑客仿冒這些網(wǎng)站或偽造購物網(wǎng)站誘騙用戶登錄和交易,竊取用戶賬號(hào)密碼,從而造成用戶經(jīng)濟(jì)損失。手機(jī)終端業(yè)務(wù)的發(fā)展對(duì)其交易的安全可靠性提出了挑戰(zhàn),尤其是對(duì)于客戶信息的保密保護(hù),對(duì)于交易過程當(dāng)中信息的盜取,都是我們面臨的巨大挑戰(zhàn)。
現(xiàn)有技術(shù)中,目前證券交易平臺(tái)在手機(jī)端多采用:用戶名+靜態(tài)密碼+數(shù)字驗(yàn)證碼作為登錄方式,通過利用軟鍵盤來增加賬號(hào)或密碼的安全性,軟鍵盤是通過軟件模擬鍵盤通過鼠標(biāo)點(diǎn)擊或者觸屏輸入字符,是為了防止木馬記錄鍵盤輸入的密碼,一般在一些銀行的網(wǎng)站上要求輸入帳號(hào)和密碼的地方容易看到。但是現(xiàn)有的軟件模擬鍵盤安全性還不夠高,依然存在數(shù)據(jù)監(jiān)聽、數(shù)據(jù)截取等風(fēng)險(xiǎn),交易時(shí)直接輸入密碼進(jìn)行交易,其依然存在安全風(fēng)險(xiǎn),極易受到撞庫、網(wǎng)絡(luò)釣魚等攻擊,用戶在輸入交易密碼時(shí)極易被盜取,給用戶帶來極大的經(jīng)濟(jì)損失,因此急需一種基于移動(dòng)端的安全方案來保證交易密碼的輸入安全。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供了一種基于白盒的加密方法及系統(tǒng),其目的是將密碼逐個(gè)加密,然后使用白盒算法加密密碼,防止傳輸中加密種子泄露。
本發(fā)明提供的技術(shù)方案如下:
一種基于白盒的加密方法,包括步驟:
S100應(yīng)用終端獲取用戶輸入的字符,將所述字符和白盒種子根據(jù)預(yù)設(shè)的字符加密算法和預(yù)設(shè)的采集順序進(jìn)行加密組合,得到組合密碼;S200所述應(yīng)用終端將所述組合密碼根據(jù)預(yù)設(shè)的密碼加密算法進(jìn)行加密運(yùn)算,得到加密密文;S300服務(wù)器將所述加密密文進(jìn)行解密,獲得所述用戶預(yù)設(shè)密碼。
本發(fā)明中,通過白盒密碼技術(shù)(一種將算法密鑰融合到算法中的加密技術(shù))安全的保護(hù)鍵盤,鍵盤可以是電腦使用的實(shí)體鍵盤,也可以是應(yīng)用終端上的軟件模擬鍵盤。應(yīng)用終端上的軟件模擬鍵盤通過鼠標(biāo)點(diǎn)擊或者觸屏,獲取用戶輸入的字符,將輸入的字符經(jīng)過字符加密算法和密碼加密算法的雙重加密,得到的密文發(fā)送給服務(wù)器,可以防止木馬記錄鍵盤輸入的密碼或者非法用戶進(jìn)行數(shù)據(jù)監(jiān)聽、數(shù)據(jù)截取,從而極大地保障了用戶經(jīng)濟(jì)安全。這里字符加密算法的運(yùn)算次數(shù)和密碼加密算法的運(yùn)算次數(shù)是至少一次。將白盒密碼技術(shù)運(yùn)用于應(yīng)用終端的密碼鍵盤上可以很好的防止暴力破解。本發(fā)明將用戶輸入的字符先分開加密,然后整體加密,能很好的防止通過內(nèi)存dump(dump功能是備份文件,在特定時(shí)刻,將整個(gè)儲(chǔ)存裝置或儲(chǔ)存裝置之某部分的內(nèi)容記錄在另一儲(chǔ)存裝置中)攻擊獲取密碼。這里白盒種子用來表示插件ID一一對(duì)應(yīng)的字符串,加密存儲(chǔ)在插件中。
進(jìn)一步的,所述步驟S100包括步驟:S110所述應(yīng)用終端按照預(yù)設(shè)的采集順序,獲取用戶輸入的字符;S120所述應(yīng)用終端獲取自身的用戶相關(guān)信息,并根據(jù)所述用戶相關(guān)信息結(jié)合隨機(jī)數(shù)生成字符串;S130所述應(yīng)用終端根據(jù)白盒算法將所述字符串進(jìn)行加密生成所述白盒種子;S140所述應(yīng)用終端將獲取的所述字符根據(jù)所述預(yù)設(shè)的字符加密算法,結(jié)合所述白盒種子,一對(duì)一進(jìn)行運(yùn)算,得到加密字符;S150所述應(yīng)用終端按照預(yù)設(shè)的采集順序?qū)@得的所述加密字符進(jìn)行排列,得到所述組合密碼;
其中,所述用戶相關(guān)信息包括用戶電話號(hào)碼信息、身份信息、地址信息中的任意一種或多種,所述隨機(jī)數(shù)由所述應(yīng)用終端和所述服務(wù)器同步生成。
本發(fā)明中,根據(jù)時(shí)間順序,獲取用戶輸入的字符,根據(jù)字符加密算法對(duì)采集到的字符和生成的白盒種子進(jìn)行逐個(gè)加密,這樣即使非法用戶根據(jù)撞庫或者釣魚的方式獲得加密處理后的組合密碼,但是非法用戶不能得知白盒種子是如何生成的,如果非法用戶只根據(jù)獲取的組合密碼進(jìn)行登錄,由于組合密碼≠用戶預(yù)設(shè)密碼,導(dǎo)致非法用戶不能通過非法獲得的組合密碼進(jìn)行賬戶登錄、交易支付,極大地保護(hù)了用戶的經(jīng)濟(jì)安全和隱私安全。其中生成白盒種子采用的算法可以是國際加密算法或國內(nèi)加密算法中的任意一種或多種。生成組合密碼的算法是異或運(yùn)算或者對(duì)稱算法等任意一種可逆運(yùn)算方法。
進(jìn)一步的,所述步驟S200包括步驟:S210所述應(yīng)用終端獲取自身的硬件相關(guān)信息,根據(jù)所述硬件相關(guān)信息結(jié)合挑戰(zhàn)碼生成加密密鑰;S220所述應(yīng)用終端根據(jù)預(yù)設(shè)的密碼加密算法將所述組合密碼,結(jié)合所述加密密鑰,進(jìn)行加密運(yùn)算得到加密密文;S230所述應(yīng)用終端將所述加密密文發(fā)送至所述服務(wù)器;
其中,所述硬件相關(guān)信息包括屏幕參數(shù)、尺寸、材質(zhì)、內(nèi)存容量、外存容量、CPU性能、攝像頭像素、終端型號(hào)、應(yīng)用終端IMEI、應(yīng)用終端MAC地址中的任意一種或多種,所述挑戰(zhàn)碼由所述服務(wù)器和/或所述應(yīng)用終端生成。
本發(fā)明中,為了進(jìn)一步保障用戶的賬戶密碼等信息,使用密碼加密算法對(duì)組合密碼進(jìn)行加密得到加密密文,應(yīng)用終端將加密密文傳輸給服務(wù)器,其中,生成加密密鑰的方式是SM3、MD5等雜湊算法進(jìn)行運(yùn)算的得到的,眾所周知,SM3為單向散列函數(shù),不能從結(jié)果推出挑戰(zhàn)碼和用戶硬件信息,這樣即使非法用戶在傳輸過程中,利用撞庫的方式或者窮舉的方式等任何非法途徑獲得加密密文,進(jìn)行破解用戶采用何種算法以及加密密鑰,但是卻不能獲知用戶的硬件相關(guān)信息,保護(hù)用戶的信息安全。由于不能獲知隨機(jī)數(shù),進(jìn)而不能獲知用戶密碼,由于組合密碼≠用戶預(yù)設(shè)密碼,導(dǎo)致非法用戶不能通過非法獲得的組合密碼進(jìn)行賬戶登錄、交易支付,極大地保護(hù)了用戶的經(jīng)濟(jì)安全和隱私安全。同時(shí)不同的客戶端使用不同的算法,使算法破解難度增加,極大的保護(hù)了用戶的經(jīng)濟(jì)安全和隱私安全。
進(jìn)一步的,所述步驟S300包括步驟:S310所述服務(wù)器對(duì)所述加密密文進(jìn)行解密,得到認(rèn)證組合密碼;S320所述服務(wù)器驗(yàn)證所述認(rèn)證組合密碼與所述組合密碼是否一致,若是執(zhí)行步驟S330;否則,執(zhí)行步驟S360;S330所述服務(wù)器根據(jù)所述預(yù)設(shè)的字符加密算法,一對(duì)一進(jìn)行運(yùn)算得到解密字符,并將所述解密字符按照所述預(yù)設(shè)的采集順序排列,得到用戶認(rèn)證密碼;S340所述服務(wù)器驗(yàn)證所述用戶認(rèn)證密碼與所述用戶預(yù)設(shè)密碼是否一致,若是執(zhí)行步驟S350;否則,執(zhí)行步驟S360;S350所述服務(wù)器輸出獲得所述用戶預(yù)設(shè)密碼成功信息;S360所述服務(wù)器輸出獲得所述用戶預(yù)設(shè)密碼失敗信息。
本發(fā)明中,因?yàn)榉欠ㄓ脩舨荒塬@知隨機(jī)數(shù),隨機(jī)數(shù)只有服務(wù)器和用戶知道根據(jù)什么算法得到的,因此即使非法用戶,根據(jù)窮舉等非法方式偽造合法用戶得知加密密文,進(jìn)而獲得組合密碼偽裝合法用戶想要進(jìn)行登錄,但是不能獲知用戶預(yù)先設(shè)置的字符加密算法以及生成的隨機(jī)數(shù),就不能獲知白盒種子,由于白盒種子與用戶密碼進(jìn)行運(yùn)算,再根據(jù)時(shí)間順序組合就得到組合密碼,就算非法用戶獲得了組合密碼,但是卻不能根據(jù)組合密碼推算出用戶預(yù)設(shè)密碼,即組合密碼≠用戶預(yù)設(shè)密碼,從而不能進(jìn)行手機(jī)轉(zhuǎn)賬和支付業(yè)務(wù)時(shí)非法登陸合法用戶的賬戶,大大地保護(hù)了用戶的經(jīng)濟(jì)安全和隱私安全。
進(jìn)一步的,所述步驟S360之后包括步驟:S400所述服務(wù)器根據(jù)獲得的所述用戶預(yù)設(shè)密碼成功信息,將所述用戶預(yù)設(shè)密碼進(jìn)行保存;S500所述服務(wù)器根據(jù)獲得的所述用戶預(yù)設(shè)密碼失敗信息,發(fā)出告警提示信息至所述應(yīng)用終端;S510所述應(yīng)用終端根據(jù)所述告警提示信息,判斷是否需要重新執(zhí)行密碼加密認(rèn)證,若是執(zhí)行步驟S100;否則,執(zhí)行步驟S520;S520所述應(yīng)用終端解除與服務(wù)器之間的聯(lián)系。
本發(fā)明中,如果是合法用戶輸入密碼,那么服務(wù)器根據(jù)一系列的運(yùn)算得到認(rèn)證組合密碼,驗(yàn)證與用戶事先已經(jīng)保存的密碼是一致的,那么服務(wù)器就能夠判斷用戶通過密碼認(rèn)證。如果是合法用戶不小心輸入了錯(cuò)誤的密碼,那么應(yīng)用終端發(fā)出告警提示信息,合法用戶判斷是否是自己輸入錯(cuò)誤,如果是那么就可以重新輸入密碼,再次進(jìn)行密碼認(rèn)證。如果是非法用戶輸入了組合密碼,但是非法用戶不能根據(jù)該組合密碼逆運(yùn)算得到用戶預(yù)設(shè)密碼,因此應(yīng)用終端發(fā)出告警提示信息,合法用戶判斷是否是自己輸入錯(cuò)誤,如果不是那么應(yīng)用終端解除與服務(wù)器之間的聯(lián)系,例如微信或者支付寶等應(yīng)用軟件凍結(jié)用戶賬號(hào),避免一些不法分子可能會(huì)趁機(jī)在手機(jī)支付寶或者微信內(nèi)獲取到信息,造成合法用戶的損失。
進(jìn)一步的,所述步驟S100之前包括步驟:S010預(yù)先設(shè)置所述字符加密算法、所述密碼加密算法、所述采集順序;其中,所述字符加密算法和所述密碼加密算法均采用對(duì)稱算法;所述采集順序?yàn)橛脩糨斎胱址臅r(shí)間順序或時(shí)間逆序。
本發(fā)明中,在所述服務(wù)器與所述應(yīng)用終端進(jìn)行數(shù)據(jù)通信之前,用戶根據(jù)自身實(shí)際情況設(shè)置字符加密算法、密碼加密算法和采集順序,算法包括國際算法和國內(nèi)算法,例如DES算法,TDEA算法,Blowfish算法,RC5算法,SM系列算法。這樣,不同的用戶采用不同的算法和不同的采集順序,使算法破解難度增加,加大安全性。
本發(fā)明還提供一種基于白盒的密碼加密系統(tǒng),包括:應(yīng)用終端和服務(wù)器;所述應(yīng)用終端與所述服務(wù)器通訊連接;
所述應(yīng)用終端,獲取用戶輸入的字符,將所述字符和白盒種子根據(jù)預(yù)設(shè)的字符加密算法和預(yù)設(shè)的采集順序進(jìn)行加密組合,得到組合密碼;所述應(yīng)用終端,將所述組合密碼根據(jù)預(yù)設(shè)的密碼加密算法進(jìn)行加密運(yùn)算,得到加密密文;所述服務(wù)器,服務(wù)器將所述加密密文進(jìn)行解密,獲得所述用戶預(yù)設(shè)密碼。
本發(fā)明中,應(yīng)用終端上的軟件模擬鍵盤通過鼠標(biāo)點(diǎn)擊或者觸屏,這里的軟件模擬鍵盤字符包括數(shù)字字符和字母字符,其中鍵盤字符是隨機(jī)排列出現(xiàn)的,這樣防止木馬通過記錄屏幕的輸入點(diǎn)竊取輸入信息,獲取用戶輸入的字符后,將輸入的字符經(jīng)過字符加密算法和密碼加密算法的雙重加密,得到的密文發(fā)送給服務(wù)器,即為加密傳輸,有效防范了鍵盤鉤子、數(shù)據(jù)監(jiān)聽、數(shù)據(jù)截取等風(fēng)險(xiǎn),從而極大地保障了用戶經(jīng)濟(jì)安全。這里字符加密算法的運(yùn)算次數(shù)和密碼加密算法的運(yùn)算次數(shù)是至少一次。
進(jìn)一步的,所述應(yīng)用終端包括:獲取模塊、白盒種子生成模塊、第一加密模塊和組合模塊;所述獲取模塊與所述白盒種子生成模塊通訊連接;所述白盒種子生成模塊與所述第一加密模塊通訊連接;所述第一加密模塊與所述組合模塊通訊連接;
所述獲取模塊,按照預(yù)設(shè)的采集順序,獲取用戶輸入的字符;并獲取所述應(yīng)用終端自身的用戶相關(guān)信息;
所述白盒種子生成模塊,根據(jù)所述用戶相關(guān)信息結(jié)合隨機(jī)數(shù)生成字符串;并根據(jù)白盒算法將所述字符串進(jìn)行加密生成所述白盒種子;所述第一加密模塊,將獲取的所述字符根據(jù)所述預(yù)設(shè)的字符加密算法,結(jié)合所述白盒種子,一對(duì)一進(jìn)行運(yùn)算,得到加密字符;所述組合模塊,按照預(yù)設(shè)的采集順序?qū)@得的所述加密字符進(jìn)行排列,得到所述組合密碼;
其中,所述用戶相關(guān)信息包括用戶電話號(hào)碼信息、身份信息、地址信息中的任意一種或多種,所述隨機(jī)數(shù)由所述應(yīng)用終端和所述服務(wù)器同步生成。
本發(fā)明中,生成白盒種子采用的算法可以是國際加密算法或國內(nèi)加密算法中的任意一種或多種。生成組合密碼的算法是異或運(yùn)算或者對(duì)稱算法等任意一種可逆運(yùn)算方法。獲取用戶輸入的字符,根據(jù)字符加密算法對(duì)采集到的字符和生成的白盒種子,根據(jù)時(shí)間順序一個(gè)對(duì)一個(gè)進(jìn)行逐個(gè)加密,這樣即使非法用戶根據(jù)撞庫或者釣魚的方式獲得加密處理后的組合密碼,但是非法用戶不能得知白盒種子是如何生成的,如果非法用戶只根據(jù)獲取的組合密碼進(jìn)行登錄,由于組合密碼≠用戶預(yù)設(shè)密碼,導(dǎo)致非法用戶不能通過非法獲得的組合密碼進(jìn)行賬戶登錄、交易支付,將用戶輸入的字符先分開加密,然后整體加密,能很好的防止通過內(nèi)存dump文件攻擊獲取密碼,增加了用戶的經(jīng)濟(jì)安全和隱私安全。
進(jìn)一步的,所述應(yīng)用終端還包括:白盒密鑰生成模塊、第二加密模塊和發(fā)送模塊;所述白盒密鑰生成模塊與所述獲取模塊通訊連接;所述第二加密模塊與所述白盒密鑰生成模塊通訊連接;所述發(fā)送模塊與所述第二加密模塊通訊連接;
所述獲取模塊,還獲取所述應(yīng)用終端的硬件相關(guān)信息;所述白盒密鑰生成模塊,根據(jù)所述硬件相關(guān)信息結(jié)合挑戰(zhàn)碼生成加密密鑰;所述第二加密模塊,根據(jù)預(yù)設(shè)的密碼加密算法將所述組合密碼,結(jié)合所述加密密鑰,進(jìn)行加密運(yùn)算得到加密密文;所述發(fā)送模塊,將所述加密密文發(fā)送至所述服務(wù)器;
本發(fā)明中,硬件相關(guān)信息包括屏幕參數(shù)、尺寸、材質(zhì)、內(nèi)存容量、外存容量、CPU性能、攝像頭像素、終端型號(hào)、應(yīng)用終端IMEI、應(yīng)用終端MAC地址中的任意一種或多種。其中,為了進(jìn)一步保障用戶的賬戶密碼等信息,使用密碼加密算法對(duì)合法加密字符進(jìn)行加密得到加密密文,應(yīng)用終端將加密密文傳輸給服務(wù)器,這樣即使非法用戶在傳輸過程中,利用撞庫的方式或者窮舉的方式等任何非法途徑破解用戶采用何種算法以及加密密鑰,但是卻不能獲知該時(shí)刻隨機(jī)數(shù),進(jìn)而不能獲知組合密碼,這樣就通過雙重加密的方式安全的保護(hù)了組合密碼,而且不同用戶在不同的客戶端使用不同的算法,使算法破解難度增加。導(dǎo)致非法用戶不能通過非法獲得的用戶密碼進(jìn)行賬戶登錄、交易支付,極大的保護(hù)了用戶的經(jīng)濟(jì)安全和隱私安全。其中,生成加密密鑰的方式是SM3、MD5等雜湊算法進(jìn)行運(yùn)算的得到的,眾所周知,SM3為單向散列函數(shù),不能從結(jié)果推出挑戰(zhàn)碼和用戶硬件信息,大大保護(hù)用戶的信息安全。
進(jìn)一步的,所述服務(wù)器包括:解密模塊、判斷模塊和控制模塊;所述解密模塊與所述發(fā)送模塊通訊連接;所述判斷模塊與所述解密模塊通訊連接;所述控制模塊與所述判斷模塊通訊連接;
所述解密模塊,根據(jù)所述解密輪密鑰對(duì)所述加密密文進(jìn)行解密,得到認(rèn)證組合密碼;所述驗(yàn)證模塊,驗(yàn)證所述認(rèn)證組合密碼與所述組合密碼是否一致;所述控制模塊,還當(dāng)認(rèn)證組合密碼與所述組合密碼一致時(shí),根據(jù)所述白盒種子,結(jié)合所述預(yù)設(shè)的字符加密算法,一對(duì)一進(jìn)行運(yùn)算得到解密字符,并將所述解密字符按照所述預(yù)設(shè)的采集順序排列,得到用戶認(rèn)證密碼;所述控制模塊,還當(dāng)認(rèn)證組合密碼與所述組合密碼不一致時(shí),輸出獲得所述用戶預(yù)設(shè)密碼失敗信息;所述驗(yàn)證模塊,還驗(yàn)證所述用戶認(rèn)證密碼與所述用戶預(yù)設(shè)密碼是否一致;所述控制模塊,還當(dāng)所述用戶認(rèn)證密碼與所述用戶預(yù)設(shè)密碼一致時(shí),輸出獲得所述用戶預(yù)設(shè)密碼成功信息;所述控制模塊,還當(dāng)所述用戶認(rèn)證密碼與所述用戶預(yù)設(shè)密碼不一致時(shí),輸出獲得所述用戶預(yù)設(shè)密碼失敗信息。
本發(fā)明中,因?yàn)榉欠ㄓ脩舨⒉荒塬@取到隨機(jī)數(shù),因此即使根據(jù)窮舉等非法方式偽造合法用戶得到用戶在加密認(rèn)證過程中傳輸給服務(wù)器的加密密文,進(jìn)行偽裝合法用戶登錄,但是不能獲知用戶預(yù)先設(shè)置的字符加密算法以及生成的隨機(jī)數(shù),進(jìn)而就不能獲知白盒種子,由于白盒種子與用戶密碼進(jìn)行運(yùn)算,再根據(jù)時(shí)間順序組合就得到組合密碼,就算非法用戶獲得了組合密碼,但是卻不能根據(jù)組合密碼推算出用戶預(yù)設(shè)密碼,即由于這樣得到的組合密碼≠用戶預(yù)設(shè)密碼,從而不能在進(jìn)行手機(jī)轉(zhuǎn)賬和支付業(yè)務(wù)時(shí)成功登陸合法用戶的賬戶,大大地保護(hù)了用戶的經(jīng)濟(jì)安全和隱私安全。
進(jìn)一步的,所述服務(wù)器還包括:保存模塊和告警模塊;所述保存模塊與所述控制模塊通訊連接;所述告警模塊與所述控制模塊通訊連接;
所述應(yīng)用終端還包括判斷模塊和管理模塊,所述判斷模塊與所述告警模塊通訊連接;所述管理模塊與所述判斷模塊通訊連接;
所述保存模塊,根據(jù)獲得的所述用戶預(yù)設(shè)密碼成功信息,將所述用戶預(yù)設(shè)密碼進(jìn)行保存;所述告警模塊,根據(jù)獲得的所述用戶預(yù)設(shè)密碼失敗信息,發(fā)出告警提示信息至所述應(yīng)用終端;所述判斷模塊,根據(jù)所述告警提示信息,判斷是否需要重新執(zhí)行密碼加密認(rèn)證;所述管理模塊,當(dāng)需要重新執(zhí)行密碼加密過程時(shí),重新輸入密碼進(jìn)行密碼加密認(rèn)證過程;所述管理模塊,當(dāng)不需要重新執(zhí)行密碼加密過程時(shí),解除與服務(wù)器之間的聯(lián)系。
本發(fā)明中,如果是合法用戶輸入了正確的密碼,那么服務(wù)器根據(jù)一系列的運(yùn)算得到用戶預(yù)設(shè)密碼,驗(yàn)證與用戶事先已經(jīng)保存的密碼是一致的,那么服務(wù)器就能夠判斷用戶通過密碼認(rèn)證。如果是合法用戶不小心輸入了錯(cuò)誤的密碼,那么應(yīng)用終端發(fā)出告警提示信息,合法用戶判斷是否是自己輸入錯(cuò)誤,如果是那么就可以重新輸入密碼,再次進(jìn)行密碼認(rèn)證。如果是非法用戶根據(jù)非法途徑獲得組合密碼并輸入,但是非法用戶不能逆運(yùn)算得到用戶預(yù)設(shè)密碼,只能得到組合密碼,由于組合密碼≠用戶預(yù)設(shè)密碼,因此應(yīng)用終端發(fā)出告警提示信息,合法用戶判斷是否是自己輸入錯(cuò)誤,如果不是那么應(yīng)用終端解除與服務(wù)器之間的聯(lián)系,例如微信或者支付寶等應(yīng)用軟件凍結(jié)用戶賬號(hào),避免一些不法分子可能會(huì)趁機(jī)在手機(jī)支付寶或者微信內(nèi)獲取到信息,造成合法用戶的損失。
進(jìn)一步的,所述應(yīng)用終端還包括:設(shè)置模塊,所述設(shè)置模塊與所述獲取模塊通訊連接;所述設(shè)置模塊,預(yù)先設(shè)置字符加密算法、密碼加密算法和采集順序;其中,所述字符加密算法和所述密碼加密算法均采用對(duì)稱算法;所述采集順序?yàn)橛脩糨斎胱址臅r(shí)間順序或時(shí)間逆序。
本發(fā)明中,在所述服務(wù)器與所述應(yīng)用終端進(jìn)行數(shù)據(jù)通信之前,用戶根據(jù)自身實(shí)際情況設(shè)置字符加密算法、密碼加密算法和采集順序,這樣,不同的用戶可以根據(jù)自己的需求采用不同的算法規(guī)則,使算法破解難度增加,加大安全性。
與現(xiàn)有技術(shù)相比,本發(fā)明提供一種基于白盒的加密方法及系統(tǒng),至少帶來以下一種技術(shù)效果:
1、將白盒密碼技術(shù)運(yùn)用于應(yīng)用終端的密碼鍵盤上可以很好的防止暴力破解。
2、將用戶輸入的字符先分開加密,然后整體加密,能很好的防止通過緩存文件攻擊獲取密碼。
3、不同的用戶采用不同的算法規(guī)則,使算法破解難度增加,加大安全性。
附圖說明
下面將以明確易懂的方式,結(jié)合附圖說明優(yōu)選實(shí)施方式,對(duì)一種基于白盒的加密方法及系統(tǒng)的特性、技術(shù)特征、優(yōu)點(diǎn)及其實(shí)現(xiàn)方式予以進(jìn)一步說明。
圖1是本發(fā)明一種基于白盒的加密方法一個(gè)實(shí)施例的流程圖;
圖2是本發(fā)明一種基于白盒的加密方法另一個(gè)實(shí)施例的流程圖;
圖3是本發(fā)明一種基于白盒的加密方法另一個(gè)實(shí)施例的流程圖;
圖4是本發(fā)明一種基于白盒的密碼加密系統(tǒng)一個(gè)實(shí)施例的結(jié)構(gòu)圖;
圖5是本發(fā)明一種基于白盒的密碼加密系統(tǒng)另一個(gè)實(shí)施例的結(jié)構(gòu)圖;
圖6是本發(fā)明一種基于白盒的密碼加密系統(tǒng)另一個(gè)實(shí)施例的結(jié)構(gòu)圖;
圖7是本發(fā)明一種基于白盒的加密方法另一個(gè)實(shí)施例的流程圖;
圖8是本發(fā)明一種基于白盒的加密方法另一個(gè)實(shí)施例的結(jié)構(gòu)圖。
具體實(shí)施方式
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)照附圖說明本發(fā)明的具體實(shí)施方式。顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖,并獲得其他的實(shí)施方式。
為使圖面簡潔,各圖中只示意性地表示出了與本發(fā)明相關(guān)的部分,它們并不代表其作為產(chǎn)品的實(shí)際結(jié)構(gòu)。另外,以使圖面簡潔便于理解,在有些圖中具有相同結(jié)構(gòu)或功能的部件,僅示意性地繪示了其中的一個(gè),或僅標(biāo)出了其中的一個(gè)。在本文中,“一個(gè)”不僅表示“僅此一個(gè)”,也可以表示“多于一個(gè)”的情形。
參照?qǐng)D1所示,本發(fā)明提供一種基于白盒的加密方法的一個(gè)實(shí)施例,包括:
S100應(yīng)用終端獲取用戶輸入的字符,將所述字符和白盒種子根據(jù)預(yù)設(shè)的字符加密算法和預(yù)設(shè)的采集順序進(jìn)行加密組合,得到組合密碼;
S200所述應(yīng)用終端將所述組合密碼根據(jù)預(yù)設(shè)的密碼加密算法進(jìn)行加密運(yùn)算,得到加密密文;
S300服務(wù)器將所述加密密文進(jìn)行解密,獲得所述用戶預(yù)設(shè)密碼。
具體的,在本實(shí)施例中,鍵盤字符包括數(shù)字字符和字母字符,鍵盤字符以符號(hào)圖片顯示。應(yīng)用終端上的軟件模擬鍵盤通過鼠標(biāo)點(diǎn)擊或者觸屏,獲取用戶輸入的字符,將輸入的字符經(jīng)過字符加密算法和密碼加密算法的雙重加密,得到的密文發(fā)送給服務(wù)器,可以防止木馬記錄鍵盤輸入的密碼或者非法用戶進(jìn)行數(shù)據(jù)監(jiān)聽、數(shù)據(jù)截取,從而極大地保障了用戶經(jīng)濟(jì)安全。這里字符加密算法的運(yùn)算次數(shù)和密碼加密算法的運(yùn)算次數(shù)是至少一次。將白盒密碼技術(shù)運(yùn)用于應(yīng)用終端的密碼鍵盤上可以很好的防止暴力破解。本發(fā)明將用戶輸入的字符先分開加密,然后整體加密,能很好的防止通過內(nèi)存dump攻擊獲取密碼。
參照?qǐng)D2所示,本發(fā)明提供一種基于白盒的加密方法的另一個(gè)實(shí)施例,包括:
S110所述應(yīng)用終端按照預(yù)設(shè)的采集順序,獲取用戶輸入的字符;
S120所述應(yīng)用終端獲取自身的用戶相關(guān)信息,并根據(jù)所述用戶相關(guān)信息結(jié)合隨機(jī)數(shù)生成字符串;
S130所述應(yīng)用終端根據(jù)白盒算法將所述字符串進(jìn)行加密生成所述白盒種子;
S140所述應(yīng)用終端將獲取的所述字符根據(jù)所述預(yù)設(shè)的字符加密算法,結(jié)合所述白盒種子,一對(duì)一進(jìn)行運(yùn)算,得到加密字符;
S150所述應(yīng)用終端按照預(yù)設(shè)的采集順序?qū)@得的所述加密字符進(jìn)行排列,得到所述組合密碼;
S210所述應(yīng)用終端獲取自身的硬件相關(guān)信息,根據(jù)所述硬件相關(guān)信息結(jié)合挑戰(zhàn)碼生成加密密鑰;
S220所述應(yīng)用終端根據(jù)預(yù)設(shè)的密碼加密算法將所述組合密碼,結(jié)合所述加密密鑰,進(jìn)行加密運(yùn)算得到加密密文;
S230所述應(yīng)用終端將所述加密密文發(fā)送至所述服務(wù)器;
S310所述服務(wù)器對(duì)所述加密密文進(jìn)行解密,得到認(rèn)證組合密碼;
S320所述服務(wù)器驗(yàn)證所述認(rèn)證組合密碼與所述組合密碼是否一致,若是執(zhí)行步驟S330;否則,執(zhí)行步驟S360;
S330所述服務(wù)器根據(jù)所述預(yù)設(shè)的字符加密算法,一對(duì)一進(jìn)行運(yùn)算得到解密字符,并將所述解密字符按照所述預(yù)設(shè)的采集順序排列,得到用戶認(rèn)證密碼;
S340所述服務(wù)器驗(yàn)證所述用戶認(rèn)證密碼與所述用戶預(yù)設(shè)密碼是否一致,若是執(zhí)行步驟S350;否則,執(zhí)行步驟S360;
S350所述服務(wù)器輸出獲得所述用戶預(yù)設(shè)密碼成功信息;
S360所述服務(wù)器輸出獲得所述用戶預(yù)設(shè)密碼失敗信息。
在本實(shí)施例中,用戶相關(guān)信息包括用戶電話號(hào)碼信息、身份信息、地址信息中的任意一種或多種。硬件相關(guān)信息包括屏幕參數(shù)、尺寸、材質(zhì)、內(nèi)存容量、外存容量、CPU性能、攝像頭像素、終端型號(hào)、應(yīng)用終端IMEI、應(yīng)用終端MAC地址中的任意一種或多種。
具體的,在本實(shí)施例中,其中生成白盒種子采用的算法可以是國際加密算法或國內(nèi)加密算法中的任意一種或多種。
生成組合密碼的算法是異或運(yùn)算或者對(duì)稱算法等任意一種可逆運(yùn)算方法。
生成加密密鑰的算法是SM3、MD5等雜湊算法進(jìn)行運(yùn)算的得到的,眾所周知,SM3為單向散列函數(shù),不能從結(jié)果推出挑戰(zhàn)碼和用戶硬件信息。
生成加密密文的算法是根據(jù)SM4、DES等對(duì)稱可逆算法。
在本實(shí)施例中,根據(jù)時(shí)間先后順序,獲取用戶輸入的字符,根據(jù)字符加密算法對(duì)采集到的字符和生成的白盒種子進(jìn)行偶數(shù)次的對(duì)稱運(yùn)算逐個(gè)加密,例如進(jìn)行偶數(shù)次的異或運(yùn)算,下面進(jìn)行舉例:假如根據(jù)用戶自身的用戶相關(guān)信息比如生日0216,當(dāng)用戶需要輸入密碼進(jìn)行驗(yàn)證時(shí),服務(wù)器和手機(jī)端均根據(jù)用戶選擇的算法隨機(jī)生成相同的隨機(jī)數(shù),該隨機(jī)數(shù)為1567,用戶信息0216和隨機(jī)數(shù)生成字符串02161567,預(yù)先設(shè)置的白盒算法例如將數(shù)字序列0123456789一一對(duì)應(yīng)轉(zhuǎn)換為白盒ID—8639701524,這個(gè)將字符串0123456789相互轉(zhuǎn)換為8639701524的方法是用戶事先選擇的一種白盒算法。那么根據(jù)用戶事先選擇的白盒算法生成白盒種子即為58616714,白盒種子58616714的二進(jìn)制分別表示為0101,1000,0110,0001,0110,0111,0001,0100。那么用戶輸入密碼41382165,用戶輸入密碼41382165的二進(jìn)制分別表示為0100,0001,0011,1000,0010,0001,0110,0101。將用戶輸入的密碼和白盒種子的二進(jìn)制按照一對(duì)一逐個(gè)分別進(jìn)行異或運(yùn)算,即0100⊕0101=1001,0001⊕1000=1001,……,0101⊕0100=1001,表示為十六進(jìn)制即得到的加密字符分別為9,9,9,9,8,8,7,9按照用戶輸入41382165的時(shí)間先后順序得到的組合密碼就是99998879。這里服務(wù)器根據(jù)應(yīng)用終端的硬件相關(guān)信息比如用戶手機(jī)的型號(hào)信息,以及服務(wù)器生成的挑戰(zhàn)碼,進(jìn)行運(yùn)算生成加密密鑰,這樣將組合密碼99998879根據(jù)加密密鑰進(jìn)行加密得到加密密文,應(yīng)用終端將加密密文發(fā)送至服務(wù)器,然后服務(wù)器將得到的加密密文,根據(jù)與加密密鑰匹配的解密密鑰進(jìn)行進(jìn)行解密得到組合密碼,進(jìn)一步將組合密碼進(jìn)行逆運(yùn)算得到用戶輸入的預(yù)設(shè)密碼41382165。這里,因?yàn)榉?wù)器與應(yīng)用終端使用的算法和生成的隨機(jī)數(shù)是一致的,隨機(jī)數(shù)是由應(yīng)用終端和服務(wù)器根據(jù)相同的算法和相同的觸發(fā)條件生成,因此服務(wù)器與應(yīng)用終端生成的隨機(jī)數(shù)一致,但是生成的隨機(jī)數(shù)服務(wù)器與應(yīng)用終端之間并不進(jìn)行傳輸下發(fā)過程,所以在傳輸過程中非法用戶是不能獲得隨機(jī)數(shù)的,進(jìn)而不能獲得白盒種子。由于白盒種子與用戶密碼進(jìn)行運(yùn)算,再根據(jù)時(shí)間順序組合就得到組合密碼,就算非法用戶獲得了組合密碼,但是卻不能根據(jù)組合密碼推算出用戶預(yù)設(shè)密碼,即因此只有和服務(wù)器綁定的應(yīng)用終端和服務(wù)器知道兩者使用的算法和隨機(jī)數(shù)。這樣即使非法用戶根據(jù)撞庫或者釣魚的方式獲得加密處理后的加密密文,但是非法用戶不能獲取白盒種子,因此即使通過暴力破解的方式得到組合密碼99998879,但是不能根據(jù)組合密碼逆推運(yùn)算得到用戶輸入的預(yù)設(shè)用戶密碼,即因?yàn)榻M合密碼≠用戶預(yù)設(shè)密碼,如果非法用戶只根據(jù)非法獲取的組合密碼進(jìn)行登錄,導(dǎo)致非法用戶不能非法進(jìn)行賬戶登錄、交易支付,極大地保護(hù)了用戶的經(jīng)濟(jì)安全和隱私安全。其中,生成加密密鑰的方式是SM3、MD5等雜湊算法進(jìn)行運(yùn)算的得到的,眾所周知,SM3為單向散列函數(shù),不能從結(jié)果推出挑戰(zhàn)碼和用戶硬件信息,這樣即使非法用戶在傳輸過程中,利用撞庫的方式或者窮舉的方式等任何非法途徑獲得加密密文,進(jìn)行破解用戶采用何種算法以及加密密鑰,但是卻不能獲知用戶的硬件相關(guān)信息,保護(hù)用戶的信息安全。同時(shí),不同的客戶端使用不同的算法,使算法破解難度增加,挑戰(zhàn)碼可以是服務(wù)器生成,也可以是應(yīng)用終端生成,但是一般由應(yīng)用終端比如手機(jī)生成的挑戰(zhàn)碼,隨機(jī)性不高,而且在向服務(wù)器傳輸時(shí)容易被截取,安全性不高,這里優(yōu)先使用服務(wù)器生成挑戰(zhàn)碼,挑戰(zhàn)碼可以是根據(jù)時(shí)間因子和/或事件因子生成。這樣非法用戶就不能在進(jìn)行手機(jī)轉(zhuǎn)賬和支付業(yè)務(wù)時(shí)成功登陸合法用戶的賬戶,大大地保護(hù)了用戶的經(jīng)濟(jì)安全和隱私安全。
對(duì)于數(shù)字排列:
1.取硬件ID,本實(shí)施例中可以取手機(jī)IMEI碼。
2.取當(dāng)前時(shí)間信息T,單位為毫秒。
3.計(jì)算EK(H(ID)+EK(T));
3.1其中,首先通過哈希算法計(jì)算硬件ID算出的一安全單向的散列函數(shù)H(ID),通過加密算法加密時(shí)間信息EK(T),再加密H(ID)和EK(T),即得到EK(H(ID)+EK(T)),將結(jié)果轉(zhuǎn)化為0-9之間的一個(gè)數(shù)r1;
3.2取0-9數(shù)列(鍵盤字符中的10個(gè)數(shù)字)中排列在r1位置的數(shù)a1;
3.3其中0-9數(shù)列除掉a1,剩9個(gè)數(shù),繼續(xù)第3.2步,結(jié)果轉(zhuǎn)為0-8之間的數(shù)r2,然后再取數(shù)列(9個(gè)數(shù))排列在r2位置的數(shù),以此繼續(xù)下去。
4.可取出序列:a1、a2、a3……。
舉例,假設(shè)上述步驟獲得的序列為數(shù)字隨機(jī)序列:412357698,則表示,第4個(gè)數(shù)字鍵盤字符放第1位,第1個(gè)數(shù)字鍵盤字符放第2位,…,第8個(gè)數(shù)字鍵盤字符放第9位。從而將數(shù)字的鍵盤字符隨機(jī)排列。
對(duì)于字母排列:同數(shù)字排列,先取0-25之間的數(shù),然后依次取26次即可,比如字母隨機(jī)序列:23213145310…,則表示第23個(gè)字母鍵盤字符放第1位,第2個(gè)字母鍵盤字符圖片放第2位…,在此不作贅述。
應(yīng)用終端通過SOTP算法、DES、3DES、RC2、RC4、IDEA、RSA、SM系列等加密算法隨機(jī)生成隨機(jī)數(shù),SOTP算法在申請(qǐng)?zhí)?01410532214.3專利中已經(jīng)公開。
參照?qǐng)D3所示,本發(fā)明提供一種基于白盒的加密方法的另一個(gè)實(shí)施例,包括:
S010預(yù)先設(shè)置所述字符加密算法、所述密碼加密算法、所述采集順序;
S100應(yīng)用終端獲取用戶輸入的字符,將所述字符和白盒種子根據(jù)預(yù)設(shè)的字符加密算法和預(yù)設(shè)的采集順序進(jìn)行加密組合,得到組合密碼;
S200所述應(yīng)用終端將所述組合密碼根據(jù)預(yù)設(shè)的密碼加密算法進(jìn)行加密運(yùn)算,得到加密密文;
S310所述服務(wù)器對(duì)所述加密密文進(jìn)行解密,得到認(rèn)證組合密碼;
S320所述服務(wù)器驗(yàn)證所述認(rèn)證組合密碼與所述組合密碼是否一致,若是執(zhí)行步驟S330;否則,執(zhí)行步驟S360;
S330所述服務(wù)器根據(jù)所述預(yù)設(shè)的字符加密算法,一對(duì)一進(jìn)行運(yùn)算得到解密字符,并將所述解密字符按照所述預(yù)設(shè)的采集順序排列,得到用戶認(rèn)證密碼;
S340所述服務(wù)器驗(yàn)證所述用戶認(rèn)證密碼與所述用戶預(yù)設(shè)密碼是否一致,若是執(zhí)行步驟S350;否則,執(zhí)行步驟S360;
S350所述服務(wù)器輸出獲得所述用戶預(yù)設(shè)密碼成功信息;
S360所述服務(wù)器輸出獲得所述用戶預(yù)設(shè)密碼失敗信息;
S400所述服務(wù)器根據(jù)獲得的所述用戶預(yù)設(shè)密碼成功信息,將所述用戶預(yù)設(shè)密碼進(jìn)行保存;
S500所述服務(wù)器根據(jù)獲得的所述用戶預(yù)設(shè)密碼失敗信息,發(fā)出告警提示信息至所述應(yīng)用終端;
S510所述應(yīng)用終端根據(jù)所述告警提示信息,判斷是否需要重新執(zhí)行密碼加密認(rèn)證,若是執(zhí)行步驟S100;否則,執(zhí)行步驟S520;
S520所述應(yīng)用終端解除與服務(wù)器之間的聯(lián)系。
具體的,在本實(shí)施例中,在所述服務(wù)器與所述應(yīng)用終端進(jìn)行數(shù)據(jù)通信之前,用戶根據(jù)自身實(shí)際情況設(shè)置字符加密算法、密碼加密算法和采集順序,這樣,不同的用戶采用不同的算法規(guī)則,使算法破解難度增加,加大安全性。如果是合法用戶輸入了正確的密碼,那么服務(wù)器根據(jù)一系列的運(yùn)算得到用戶預(yù)設(shè)密碼,驗(yàn)證與用戶事先已經(jīng)保存的密碼是一致的,那么服務(wù)器就能夠判斷用戶通過密碼認(rèn)證。如果是合法用戶不小心輸入了錯(cuò)誤的密碼,那么應(yīng)用終端發(fā)出告警提示信息,合法用戶判斷是否是自己輸入錯(cuò)誤,如果是那么就可以重新輸入密碼,再次進(jìn)行密碼認(rèn)證。如果是非法用戶輸入了組合密碼,但是非法用戶不能根據(jù)該組合密碼逆運(yùn)算得到用戶預(yù)設(shè)密碼,因此應(yīng)用終端發(fā)出告警提示信息,合法用戶判斷是否是自己輸入錯(cuò)誤,如果不是那么應(yīng)用終端解除與服務(wù)器之間的聯(lián)系,例如微信或者支付寶等應(yīng)用軟件凍結(jié)用戶賬號(hào),將應(yīng)用軟件與服務(wù)器之間的關(guān)系解除,事后用戶可以再重新綁定兩者之間的關(guān)系,有效地避免一些不法分子可能會(huì)趁機(jī)在手機(jī)支付寶或者微信內(nèi)獲取到信息,造成合法用戶的損失。在所述服務(wù)器與所述應(yīng)用終端進(jìn)行數(shù)據(jù)通信之前,用戶根據(jù)自身實(shí)際情況設(shè)置字符加密算法、密碼加密算法和采集順序,算法包括國際算法和國內(nèi)算法,例如DES算法,TDEA算法,Blowfish算法,RC5算法,SM系列算法。這樣,不同的用戶采用不同的算法和不同的采集順序,使算法破解難度增加,加大安全性。
參照?qǐng)D4所示,本發(fā)明提供一種基于白盒的密碼加密系統(tǒng)1000的一個(gè)實(shí)施例,包括:
應(yīng)用終端1100和服務(wù)器1200;所述應(yīng)用終端1100與所述服務(wù)器1200通訊連接;
所述應(yīng)用終端1100,獲取用戶輸入的字符,將所述字符和白盒種子根據(jù)預(yù)設(shè)的字符加密算法和預(yù)設(shè)的采集順序進(jìn)行加密組合,得到組合密碼;
所述應(yīng)用終端1100,將所述組合密碼根據(jù)預(yù)設(shè)的密碼加密算法進(jìn)行加密運(yùn)算,得到加密密文;
所述服務(wù)器1200,將所述加密密文進(jìn)行解密,獲得所述用戶預(yù)設(shè)密碼。
本發(fā)明中,應(yīng)用終端1100上的軟件模擬鍵盤通過鼠標(biāo)點(diǎn)擊或者觸屏,這里的軟件模擬鍵盤字符包括數(shù)字字符和字母字符,其中鍵盤字符是隨機(jī)排列出現(xiàn)的,這樣防止木馬通過記錄屏幕的輸入點(diǎn)竊取輸入信息,獲取用戶輸入的字符后,將輸入的字符經(jīng)過字符加密算法和密碼加密算法的雙重加密,得到的密文發(fā)送給服務(wù)器1200,即為加密傳輸,有效防范了鍵盤鉤子、數(shù)據(jù)監(jiān)聽、數(shù)據(jù)截取等風(fēng)險(xiǎn),從而極大地保障了用戶經(jīng)濟(jì)安全。這里字符加密算法的運(yùn)算次數(shù)和密碼加密算法的運(yùn)算次數(shù)是至少一次。
參照?qǐng)D5所示,本發(fā)明提供一種基于白盒的密碼加密系統(tǒng)1000的另一個(gè)實(shí)施例,所述應(yīng)用終端1100包括:獲取模塊1110、白盒種子生成模塊1120、第一加密模塊1130、組合模塊1140、白盒密鑰生成模塊1150、第二加密模塊1160和發(fā)送模塊1170;
所述獲取模塊1110與所述白盒種子生成模塊1120通訊連接;所述白盒種子生成模塊1120與所述第一加密模塊1130通訊連接;所述第一加密模塊1130與所述組合模塊1140通訊連接;;所述白盒密鑰生成模塊1150與所述獲取模塊1110通訊連接;所述第二加密模塊1160與所述白盒密鑰生成模塊1150通訊連接;所述發(fā)送模塊1170與所述第二加密模塊1160通訊連接;
所述服務(wù)器1200包括:解密模塊1210、判斷模塊1180和控制模塊1230;所述解密模塊1210與所述發(fā)送模塊1170通訊連接;所述判斷模塊1180與所述解密模塊1210通訊連接;所述控制模塊1230與所述判斷模塊1180通訊連接;
所述獲取模塊1110,按照預(yù)設(shè)的采集順序,獲取用戶輸入的字符;并獲取所述應(yīng)用終端1100自身的用戶相關(guān)信息;
所述白盒種子生成模塊1120,根據(jù)所述用戶相關(guān)信息結(jié)合隨機(jī)數(shù)生成字符串;并根據(jù)白盒算法將所述字符串進(jìn)行加密生成所述白盒種子;
所述第一加密模塊1130,將獲取的所述字符根據(jù)所述預(yù)設(shè)的字符加密算法,結(jié)合所述白盒種子,一對(duì)一進(jìn)行運(yùn)算,得到加密字符;
所述組合模塊1140,按照預(yù)設(shè)的采集順序?qū)@得的所述加密字符進(jìn)行排列,得到所述組合密碼;
所述獲取模塊1110,還獲取所述應(yīng)用終端1100的硬件相關(guān)信息;
所述白盒密鑰生成模塊1150,根據(jù)所述硬件相關(guān)信息結(jié)合挑戰(zhàn)碼生成加密密鑰;
所述第二加密模塊1160,根據(jù)預(yù)設(shè)的密碼加密算法將所述組合密碼,結(jié)合所述加密密鑰,進(jìn)行加密運(yùn)算得到加密密文;
所述發(fā)送模塊1170,將所述加密密文發(fā)送至所述服務(wù)器1200;
所述解密模塊1210,根據(jù)所述解密輪密鑰對(duì)所述加密密文進(jìn)行解密,得到認(rèn)證組合密碼;
所述驗(yàn)證模塊1220,驗(yàn)證所述認(rèn)證組合密碼與所述組合密碼是否一致;
所述控制模塊1230,還當(dāng)認(rèn)證組合密碼與所述組合密碼一致時(shí),根據(jù)所述預(yù)設(shè)的字符加密算法,一對(duì)一進(jìn)行運(yùn)算得到解密字符,并將所述解密字符按照所述預(yù)設(shè)的采集順序排列,得到用戶認(rèn)證密碼;
所述控制模塊1230,還當(dāng)認(rèn)證組合密碼與所述組合密碼不一致時(shí),輸出獲得所述用戶預(yù)設(shè)密碼失敗信息;
所述驗(yàn)證模塊1220,還驗(yàn)證所述用戶認(rèn)證密碼與所述用戶預(yù)設(shè)密碼是否一致;
所述控制模塊1230,還當(dāng)所述用戶認(rèn)證密碼與所述用戶預(yù)設(shè)密碼一致時(shí),輸出獲得所述用戶預(yù)設(shè)密碼成功信息;
所述控制模塊1230,還當(dāng)所述用戶認(rèn)證密碼與所述用戶預(yù)設(shè)密碼不一致時(shí),輸出獲得所述用戶預(yù)設(shè)密碼失敗信息。
具體的,本發(fā)明實(shí)施例中,例如根據(jù)時(shí)間先后順序,獲取用戶輸入的字符,根據(jù)字符加密算法對(duì)采集到的字符和生成的白盒種子進(jìn)行逐個(gè)加密,其中,為了進(jìn)一步保障用戶的賬戶密碼等信息,使用密碼加密算法對(duì)合法加密字符進(jìn)行加密得到加密密文,應(yīng)用終端1100將加密密文傳輸給服務(wù)器1200,這樣即使非法用戶在傳輸過程中,利用撞庫的方式或者窮舉的方式等任何非法途徑破解獲取加密密文,但是卻不能獲知隨機(jī)數(shù)進(jìn)而不能獲知用戶預(yù)設(shè)密碼,安全的保護(hù)了用戶預(yù)設(shè)密碼,同時(shí)不同的客戶端使用不同的算法,使算法破解難度增加,進(jìn)一步保護(hù)了組合密碼。即使非法用戶非常厲害獲得加密處理后的加密密文從而破解加密密文得到組合密碼,但是其中生成白盒種子采用的算法可以是國際加密算法或國內(nèi)加密算法中的任意一種或多種。生成組合密碼的算法是異或運(yùn)算或者對(duì)稱算法等任意一種可逆運(yùn)算方法。只有和服務(wù)器綁定的應(yīng)用終端和服務(wù)器知道兩者使用的算法和隨機(jī)數(shù),即只有它們知道使用的白盒種子,這樣即使非法用戶根據(jù)撞庫或者釣魚的方式獲得加密處理后的加密密文,但是非法用戶不能獲取白盒種子,因此即使通過暴力破解的方式得到組合密碼,但是不能根據(jù)組合密碼逆推運(yùn)算得到用戶輸入的用戶預(yù)設(shè)密碼,非法用戶根據(jù)獲取的組合密碼進(jìn)行登錄,即因?yàn)榻M合密碼≠用戶預(yù)設(shè)密碼,導(dǎo)致非法用戶不能通過非法獲得的用戶密碼進(jìn)行賬戶登錄、交易支付,極大的保護(hù)了用戶的經(jīng)濟(jì)安全和隱私安全。
其中,所述用戶相關(guān)信息包括用戶電話號(hào)碼信息、身份信息、地址信息中的任意一種或多種,所述隨機(jī)數(shù)由所述應(yīng)用終端和所述服務(wù)器同步生成。硬件相關(guān)信息包括屏幕參數(shù)、尺寸、材質(zhì)、內(nèi)存容量、外存容量、CPU性能、攝像頭像素、終端型號(hào)、應(yīng)用終端IMEI、應(yīng)用終端MAC地址中的任意一種或多種。
參照?qǐng)D6所示,本發(fā)明提供一種基于白盒的密碼加密系統(tǒng)1000的另一個(gè)實(shí)施例,所述服務(wù)器1200還包括:保存模塊1250和告警模塊1260;所述保存模塊1250與所述控制模塊1230通訊連接;所述告警模塊1260與所述控制模塊1230通訊連接;所述應(yīng)用終端1100還包括判斷模塊1180和管理模塊1190,所述判斷模塊1180與所述告警模塊1260通訊連接;所述管理模塊1190與所述判斷模塊1180通訊連接;
所述保存模塊1250,根據(jù)獲得的所述用戶預(yù)設(shè)密碼成功信息,將所述用戶預(yù)設(shè)密碼進(jìn)行保存;
所述告警模塊1260,根據(jù)獲得的所述用戶預(yù)設(shè)密碼失敗信息,發(fā)出告警提示信息至所述應(yīng)用終端1100;
所述判斷模塊1180,根據(jù)所述告警提示信息,判斷是否需要重新執(zhí)行密碼加密認(rèn)證;
所述管理模塊1190,當(dāng)需要重新執(zhí)行密碼加密過程時(shí),重新輸入密碼進(jìn)行密碼加密認(rèn)證過程;
所述管理模塊1190,當(dāng)不需要重新執(zhí)行密碼加密過程時(shí),解除與服務(wù)器1200之間的聯(lián)系;
進(jìn)一步的所述應(yīng)用終端1100還包括:設(shè)置模塊1101,所述設(shè)置模塊1101與所述獲取模塊通訊連接;
所述設(shè)置模塊1101,預(yù)先設(shè)置字符加密算法、密碼加密算法和采集順序;
其中,所述字符加密算法和所述密碼加密算法均采用對(duì)稱算法;所述采集順序?yàn)橛脩糨斎胱址臅r(shí)間順序或時(shí)間逆序。
本發(fā)明中,在所述服務(wù)器1200與所述應(yīng)用終端1100進(jìn)行數(shù)據(jù)通信之前,用戶根據(jù)自身實(shí)際情況設(shè)置字符加密算法、密碼加密算法和采集順序,算法包括國際算法和國內(nèi)算法,例如DES算法,TDEA算法,Blowfish算法,RC5算法,SM系列算法。這樣,不同的用戶采用不同的算法和不同的采集順序,使算法破解難度增加,加大安全性。如果是合法用戶輸入了正確的密碼,那么服務(wù)器1200根據(jù)一系列的運(yùn)算得到用戶預(yù)設(shè)密碼,驗(yàn)證與用戶事先已經(jīng)保存的密碼是一致的,那么服務(wù)器1200就能夠判斷用戶通過密碼認(rèn)證。如果是合法用戶不小心輸入了錯(cuò)誤的密碼,那么應(yīng)用終端1100發(fā)出告警提示信息,合法用戶判斷是否是自己輸入錯(cuò)誤,如果是那么就可以重新輸入密碼,再次進(jìn)行密碼認(rèn)證。如果是非法用戶輸入了組合密碼,但是非法用戶不能根據(jù)該組合密碼逆運(yùn)算得到用戶預(yù)設(shè)密碼,因此應(yīng)用終端1100發(fā)出告警提示信息,合法用戶判斷是否是自己輸入錯(cuò)誤,如果不是那么應(yīng)用終端1100解除與服務(wù)器1200之間的聯(lián)系,例如微信或者支付寶等應(yīng)用軟件凍結(jié)用戶賬號(hào),避免一些不法分子可能會(huì)趁機(jī)在手機(jī)支付寶或者微信內(nèi)獲取到信息,造成合法用戶的損失。
參照?qǐng)D7所示,本發(fā)明提供一種基于白盒的加密方法的一個(gè)實(shí)例,包括:
1、其中簡單的位運(yùn)算,例如流加密:將用戶輸入的第一個(gè)字符與種子的第一個(gè)字符異或,當(dāng)輸入第二個(gè)字符時(shí)與白盒種子的第二個(gè)字符異或,以此類推;
2、組合加密字符的規(guī)則是根據(jù)用戶輸入的順序;
3、白盒種子的生成是根據(jù)用戶傳入的手機(jī)100信息和用戶的一些信息如手機(jī)號(hào)等,結(jié)合密碼卡生成的隨機(jī)數(shù)生成一個(gè)字符串,然后根據(jù)白盒母算法加密該字符串生成一個(gè)固定的白盒種子;
4、白盒密鑰的生成是根據(jù)服務(wù)器生成的挑戰(zhàn)碼和手機(jī)100的硬件信息使用白盒密碼技術(shù)的加密接口加密生成一個(gè)加密密鑰作為SM4加密的種子;
5、后臺(tái)是指遠(yuǎn)端的服務(wù)器200。
本實(shí)施例中,本發(fā)明主要解決一般的安全鍵盤容易被惡意軟件攔截、破解密碼?;诎缀忻艽a技術(shù)發(fā)明的密碼鍵盤過程如圖7和圖8所示,應(yīng)用終端屏幕上的鍵盤生成的字符種類隨機(jī),字符出現(xiàn)的位置隨機(jī),這樣可以防止木馬通過記錄屏幕的輸入點(diǎn)竊取輸入信息。由于手機(jī)100的系統(tǒng)鍵盤容易被外界監(jiān)聽盜取密碼,現(xiàn)在市場上提供的系統(tǒng)鍵盤多使用公開的加密算法,而加密種子的生成一般由手機(jī)100生成,隨機(jī)性不高,而且在向服務(wù)器200傳輸時(shí)容易被截取,安全性不高,本發(fā)明使用白盒算法,安全的保護(hù)了種子,同時(shí)不同的客戶端使用不同的算法,使算法破解難度增加。將密碼鍵盤集成在銀行手機(jī)100APP中,在進(jìn)行手機(jī)100轉(zhuǎn)賬和支付業(yè)務(wù)時(shí)調(diào)用該密碼鍵盤進(jìn)行密碼輸入驗(yàn)證。將白盒密碼技術(shù)運(yùn)用于移動(dòng)端的密碼鍵盤上可以很好的防止暴力破解。將用戶輸入的數(shù)分開加密后整體加密很好的防止手機(jī)100內(nèi)存dump攻擊獲取密碼。將用戶輸入的密碼逐個(gè)加密,按照時(shí)間先后順序得到組合加密字符,然后使用白盒算法加密密碼,防止傳輸中加密種子泄露。當(dāng)然,這里包括但是不限于異或運(yùn)算,只要是對(duì)稱可逆運(yùn)算,那么只需要計(jì)算次數(shù)是偶數(shù)次就能夠進(jìn)行逆推出用戶輸入的用戶預(yù)設(shè)密碼。
應(yīng)當(dāng)說明的是,上述實(shí)施例均可根據(jù)需要自由組合。以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。