本發(fā)明涉及數(shù)據(jù)安全領(lǐng)域,尤其涉及一種加密方法及系統(tǒng)。
背景技術(shù):
隨著科學(xué)技術(shù)的發(fā)展,人們對(duì)電腦技術(shù)的研究更加地全面,對(duì)機(jī)密信息的探測(cè)途徑越來越多。對(duì)于密碼算法而言,傳統(tǒng)僅局限于通信信道中信息的截取與分析已經(jīng)無法滿足攻擊者的需求,他們已經(jīng)逐漸開始將目標(biāo)定位于密碼算法的運(yùn)行平臺(tái)(如個(gè)人電腦、服務(wù)器等),通過越來越先進(jìn)的技術(shù)對(duì)算法運(yùn)行時(shí)的內(nèi)部狀態(tài)進(jìn)行觀測(cè)、改動(dòng)等操作,從而獲取機(jī)密信息,破壞密碼算法所要保護(hù)的機(jī)密性、完整性、不可否認(rèn)性等。
這樣的攻擊方式被稱之為白盒攻擊。傳統(tǒng)的密碼算法在這樣的攻擊環(huán)境的平臺(tái)上運(yùn)行毫無安全性可言,因此需要研究開發(fā)出一種新的密碼技術(shù),能夠在不可信任平臺(tái)上運(yùn)行時(shí)保證所需的安全性,達(dá)到更高級(jí)別信息安全的目的。
白盒密碼即是這樣一種密碼技術(shù),通過結(jié)合代數(shù)、概率、混淆、軟件保護(hù)、信息隱藏等知識(shí),研究如何設(shè)計(jì)安全的白盒密碼算法和白盒攻擊環(huán)境下密碼算法的安全評(píng)估;用于保護(hù)密碼算法及其相關(guān)軟件在不可信任環(huán)境下的安全執(zhí)行;白盒密碼是對(duì)傳統(tǒng)黑盒密碼安全概念的一次顛覆,它將更加全面地保護(hù)機(jī)密信息。
白盒密碼可以應(yīng)用到任何在不可信任的運(yùn)行平臺(tái)上執(zhí)行的密碼方案,因此其應(yīng)用前景非常的廣泛,可以應(yīng)用于數(shù)字內(nèi)容的安全發(fā)行,為內(nèi)容創(chuàng)作者和提供者的數(shù)字資產(chǎn)提供防止盜竊或?yàn)E用的安全保護(hù);可以應(yīng)用于無線自組網(wǎng)絡(luò)、云計(jì)算等的安全計(jì)算,為不可信任終端處理機(jī)密信息提供防觀測(cè)、防篡改、防竊取等服務(wù);可以應(yīng)用于軟件保護(hù),破壞軟件設(shè)計(jì)的原有的結(jié)構(gòu)從而防止逆向工程等等。
然而,在白盒密碼的技術(shù)實(shí)現(xiàn)方面,到目前為止還未有公認(rèn)的安全的且實(shí)現(xiàn)效率較高的白盒密碼方案出現(xiàn),因此,設(shè)計(jì)能夠抵抗白盒攻擊的安全有效的密碼算法迫在眉睫,是目前保證網(wǎng)絡(luò)安全的一個(gè)重要手段。
技術(shù)實(shí)現(xiàn)要素:
為了解決上述技術(shù)問題,本發(fā)明提供一種加密方法及系統(tǒng)。
本發(fā)明是以如下技術(shù)方案實(shí)現(xiàn)的:
一種加密方法,所述方法應(yīng)用于服務(wù)器-客戶端架構(gòu)或者服務(wù)器-瀏覽器架構(gòu)的分布式系統(tǒng)之中,所述方法包括:
服務(wù)器獲取用戶的數(shù)據(jù)加密請(qǐng)求,所述數(shù)據(jù)加密請(qǐng)求包括關(guān)鍵字、待加密數(shù)據(jù)的長(zhǎng)度和用戶標(biāo)識(shí);根據(jù)所述關(guān)鍵字和用戶標(biāo)識(shí)獲取用戶所在的一個(gè)或者多個(gè)群組標(biāo)識(shí);若獲取到的群組標(biāo)識(shí)為多個(gè),則從中按照約定算法選擇一個(gè)目標(biāo)群組標(biāo)識(shí);若獲取到的群組標(biāo)識(shí)只有一個(gè),則獲取到的群組標(biāo)識(shí)即為目標(biāo)群組標(biāo)識(shí);按照預(yù)設(shè)算法根據(jù)所述用戶標(biāo)識(shí)、目標(biāo)群組標(biāo)識(shí)和所述待加密數(shù)據(jù)的長(zhǎng)度得到特征值;根據(jù)所述特征值在預(yù)設(shè)的加密算法集合中抽取加密因子并將所述加密因子傳輸至客戶端,所述加密因子包括第一混合種子、第二混合種子、第一加密算法和第二加密算法;
客戶端獲取用戶輸入的字符,并按照預(yù)設(shè)的采集順序?qū)@取到的字符進(jìn)行排列,并按照預(yù)設(shè)的第一混合算法將獲取到的字符與所述第一混合種子混合以生成目標(biāo)字符串;根據(jù)所述第一加密算法對(duì)所述目標(biāo)字符串進(jìn)行加密得到加密字符串;按照預(yù)設(shè)的第二混合算法將所述加密字符串和所述第二混合種子進(jìn)行混合以得到混合加密字符串;獲取自身硬件信息,根據(jù)所述硬件信息和所述混合加密字符串生成加密密鑰;根據(jù)所述第二加密算法將所述混合加密字符串,結(jié)合所述加密密鑰運(yùn)算得到加密密文,將所述加密密文發(fā)送至服務(wù)器。
進(jìn)一步地,所述第一混合種子和第二混合種子可以包括一個(gè)或多個(gè)字符串的組合,所述字符串可以包括英文、數(shù)字、符號(hào)及其組合。
進(jìn)一步地,若所述第一加密算法為公鑰加密算法,則所述加密因子還包括加密密鑰,不同的第一加密算法所對(duì)應(yīng)的公鑰加密算法的保密級(jí)別和得到的加密密鑰長(zhǎng)度不同。
進(jìn)一步地,所述第一加密算法是異或運(yùn)算或者對(duì)稱算法等任意一種可逆運(yùn)算方法;所述第二加密算法是sm3、md5等雜湊算法進(jìn)行運(yùn)算得到的算法。
進(jìn)一步地,所述待加密數(shù)據(jù)可以為應(yīng)用于某種加密算法的密鑰。
進(jìn)一步地,所述特征值為正整數(shù)。
一種加密系統(tǒng),所述系統(tǒng)包括服務(wù)器和客戶端,
所述服務(wù)器包括:
請(qǐng)求獲取模塊,用于獲取用戶的數(shù)據(jù)加密請(qǐng)求,所述數(shù)據(jù)加密請(qǐng)求包括關(guān)鍵字、待加密數(shù)據(jù)的長(zhǎng)度和用戶標(biāo)識(shí);
目標(biāo)群組標(biāo)識(shí)獲取模塊,用于根據(jù)所述關(guān)鍵字和用戶標(biāo)識(shí)獲取用戶所在的一個(gè)或者多個(gè)群組標(biāo)識(shí);若獲取到的群組標(biāo)識(shí)為多個(gè),則從中按照約定算法選擇一個(gè)目標(biāo)群組標(biāo)識(shí);若獲取到的群組標(biāo)識(shí)只有一個(gè),則獲取到的群組標(biāo)識(shí)即為目標(biāo)群組標(biāo)識(shí);
特征值獲取模塊,用于按照預(yù)設(shè)算法根據(jù)所述用戶標(biāo)識(shí)、目標(biāo)群組標(biāo)識(shí)和所述待加密數(shù)據(jù)的長(zhǎng)度得到特征值;
加密因子處理模塊,用于根據(jù)所述特征值在預(yù)設(shè)的加密算法集合中抽取加密因子并將所述加密因子傳輸至客戶端,所述加密因子包括第一混合種子、第二混合種子、第一加密算法和第二加密算法;
所述客戶端包括:
字符輸入模塊,用于獲取用戶輸入的字符;
目標(biāo)字符串生成模塊,用于按照預(yù)設(shè)的采集順序?qū)@取到的字符進(jìn)行排列,并按照預(yù)設(shè)的第一混合算法將獲取到的字符與所述第一混合種子混合以生成目標(biāo)字符串;
混合加密字符串得到模塊,用于根據(jù)所述第一加密算法對(duì)所述目標(biāo)字符串進(jìn)行加密得到加密字符串;按照預(yù)設(shè)的第二混合算法將所述加密字符串和所述第二混合種子進(jìn)行混合以得到混合加密字符串;
加密密鑰生成模塊,用于獲取自身硬件信息,根據(jù)所述硬件信息和所述混合加密字符串生成加密密鑰;
加密密文處理模塊,用于根據(jù)所述第二加密算法將所述混合加密字符串,結(jié)合所述加密密鑰運(yùn)算得到加密密文,將所述加密密文發(fā)送至服務(wù)器。
本發(fā)明的有益效果是:
本發(fā)明提供一種加密方法及系統(tǒng),通過根據(jù)用戶標(biāo)識(shí)獲取加密因子,并根據(jù)加密因子對(duì)待加密數(shù)據(jù)進(jìn)行加密,所述待加密數(shù)據(jù)也可以是某個(gè)加密算法的密鑰,整個(gè)加密過程實(shí)現(xiàn)了將算法密鑰融合到算法中的白盒加密技術(shù)。充分利用用戶的個(gè)人信息以及社交信息獲取對(duì)應(yīng)的加密因子,從而對(duì)不同的用戶使用不同的加密算法,從而進(jìn)一步提升了加密的復(fù)雜度,提升了數(shù)據(jù)安全性。
附圖說明
圖1是本發(fā)明實(shí)施例提供的加密方法流程圖;
圖2是本發(fā)明實(shí)施例提供的加密因子的獲取方法流程圖;
圖3是本發(fā)明實(shí)施例提供的群組的查找方式流程圖;
圖4是本發(fā)明實(shí)施例提供的加密過程流程圖。
具體實(shí)施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步地詳細(xì)描述。
實(shí)施例1:
一種加密方法,所述方法應(yīng)用于服務(wù)器-客戶端架構(gòu)或者服務(wù)器-瀏覽器架構(gòu)的分布式系統(tǒng)之中,如圖1所示所述方法包括:
s101.服務(wù)器獲取用戶的數(shù)據(jù)加密請(qǐng)求,并返回加密因子。
具體地,所述數(shù)據(jù)加密請(qǐng)求包括關(guān)鍵字、待加密數(shù)據(jù)的長(zhǎng)度和用戶標(biāo)識(shí)。所述待加密數(shù)據(jù)可以為某個(gè)加密算法的密鑰。所述關(guān)鍵字可以為空。
具體地,加密因子的獲取方法如圖2所示,包括下述步驟:
s1011.根據(jù)所述用戶標(biāo)識(shí)獲取用戶所在的一個(gè)或者多個(gè)群組標(biāo)識(shí)。
s1012.判斷獲取到的群組標(biāo)識(shí)的數(shù)量。
群組是可表示多用戶之間通信關(guān)系的數(shù)據(jù)對(duì)象,群組中的各個(gè)用戶標(biāo)識(shí)所對(duì)應(yīng)的終端之間可以進(jìn)行一對(duì)多、多對(duì)一以及多對(duì)多之間的通信。可利用群組標(biāo)識(shí)將多個(gè)用戶標(biāo)識(shí)聯(lián)系起來而用來表示群組,群組中的任意一個(gè)用戶標(biāo)識(shí)所對(duì)應(yīng)的終端能夠與該群組中的其它用戶標(biāo)識(shí)所對(duì)應(yīng)的終端通信,從而可以實(shí)現(xiàn)多方通信。群組包括但不限于即時(shí)通信群組、基于社交網(wǎng)絡(luò)的群組、多人語(yǔ)音通信組、多人視頻通信組、基于已有的群組而建立的討論組、多人會(huì)話組等。不同的群組的安全等級(jí)可能不同,其對(duì)應(yīng)的加密因子也可能產(chǎn)生不同,因此,本實(shí)施例中對(duì)于群組的選擇結(jié)果將直接影響到加密因子的獲取結(jié)果,從而對(duì)終端的加密復(fù)雜度產(chǎn)生影響。而用戶并不能夠完全按照自己的意愿選擇加密因子,而需要受制于用戶所處的社會(huì)關(guān)系(群組),避免低等級(jí)的用戶使用高等級(jí)的加密服務(wù)而導(dǎo)致的資源浪費(fèi)。
所述群組的查找方式如圖3所示,包括:
s1.根據(jù)用戶標(biāo)識(shí)獲取用戶所在的群組集,所述群組集為用戶所在的全部群組構(gòu)成的集合;
s2.在所述群組集中查找到與關(guān)鍵字匹配的群組;
服務(wù)器響應(yīng)于該群組查找請(qǐng)求,根據(jù)群組查找請(qǐng)求所攜帶的關(guān)鍵字來查找與該關(guān)鍵字匹配的群組。具體可以將該關(guān)鍵字進(jìn)行分詞獲得關(guān)鍵字分詞,判斷該關(guān)鍵字分詞是否存在于群組的群組文本資料中來判斷該關(guān)鍵字是否與該群組匹配。從而可以查找到與關(guān)鍵字匹配的群組,獲得查找到的群組。其中,群組文本資料包括但不限于群組標(biāo)識(shí)、群組名稱、群組介紹信息、群組分類信息、群組地理位置信息和群組標(biāo)簽信息等。
s3.根據(jù)多個(gè)維度的排序因子分別計(jì)算每個(gè)查找到的群組對(duì)應(yīng)每一維度的排序值。
排序值是對(duì)查找到的群組進(jìn)行排序的數(shù)值形式的直接依據(jù),比如可以百分制分?jǐn)?shù)的形式表示。預(yù)設(shè)了多個(gè)維度,對(duì)于每一個(gè)查找到的群組,服務(wù)器將計(jì)算其對(duì)應(yīng)多個(gè)維度中每一個(gè)維度的排序值。具體計(jì)算對(duì)應(yīng)一個(gè)維度的排序值時(shí),根據(jù)該維度的排序因子進(jìn)行計(jì)算。排序因子是指為對(duì)查找到的群組進(jìn)行排序而計(jì)算相應(yīng)的排序值時(shí)應(yīng)考慮的因素或成分。排序因子包括但不限于群組成員數(shù)量、群組成員容量、是否為預(yù)設(shè)指定群組、群組活躍度、群組活躍等級(jí)、群組地理位置、是否被舉報(bào)存在安全風(fēng)險(xiǎn)的群組安全屬性、經(jīng)服務(wù)器自動(dòng)分析而確定的群組是否存在安全風(fēng)險(xiǎn)的群組安全屬性、群組標(biāo)志位、加入群組的難易等級(jí)、群組資料完整度、群組有效管理數(shù)、群組信息豐富度、群組關(guān)系稠密度、群組性別分布數(shù)據(jù)、群組年齡分布數(shù)據(jù)和根據(jù)關(guān)鍵字和群組文本資料計(jì)算獲得的文本相關(guān)度。
s4.根據(jù)多個(gè)維度各自的排序優(yōu)先級(jí)別和每個(gè)查找到的群組所對(duì)應(yīng)每一維度的排序值對(duì)查找到的群組進(jìn)行排序。
多個(gè)維度中每個(gè)維度各自具有排序優(yōu)先級(jí)別,且每個(gè)維度的排序優(yōu)先級(jí)別高低各不相同,排序優(yōu)先級(jí)別高的維度在排序時(shí)優(yōu)先被考慮。具體地,總體上按照排序優(yōu)先級(jí)別從高到低的順序而根據(jù)相應(yīng)的維度的排序值對(duì)查找到的群組進(jìn)行排序,當(dāng)多個(gè)群組對(duì)應(yīng)同一維度的排序值相同時(shí),再按照該多個(gè)群組對(duì)應(yīng)的排序優(yōu)先級(jí)別僅次于該同一維度的維度的排序值來對(duì)該多個(gè)群組進(jìn)行局部排序。
s5.獲取帶有排序結(jié)果的一個(gè)或多個(gè)群組標(biāo)識(shí)。
s1013.若獲取到的群組標(biāo)識(shí)為多個(gè),則從中按照約定算法選擇一個(gè)目標(biāo)群組標(biāo)識(shí)。
s1014.若獲取到的群組標(biāo)識(shí)只有一個(gè),則獲取到的群組標(biāo)識(shí)即為目標(biāo)群組標(biāo)識(shí)。
s1015.按照預(yù)設(shè)算法根據(jù)所述用戶標(biāo)識(shí)、目標(biāo)群組標(biāo)識(shí)和所述待加密數(shù)據(jù)的長(zhǎng)度得到特征值。
s1016.根據(jù)所述特征值在預(yù)設(shè)的加密算法集合中抽取加密因子,所述加密因子包括第一混合種子、第二混合種子、第一加密算法和第二加密算法。
加密算法集合用于表征特征值以及與特征相對(duì)應(yīng)的加密因子之間的對(duì)應(yīng)關(guān)系,所述特征值為正整數(shù),每個(gè)特征值對(duì)應(yīng)于唯一的一組加密因子。特征值越高,對(duì)應(yīng)的加密因子越復(fù)雜,相應(yīng)的,使用加密因子對(duì)數(shù)據(jù)進(jìn)行加密的安全性也就越高。
s102.客戶端根據(jù)所述加密因子對(duì)數(shù)據(jù)進(jìn)行加密,并將加密結(jié)果反饋至服務(wù)器。
具體地,客戶端加密過程如圖4所示,包括:
s1021.獲取用戶輸入的字符,并按照預(yù)設(shè)的采集順序?qū)@取到的字符進(jìn)行排列,并按照預(yù)設(shè)的第一混合算法將獲取到的字符與所述第一混合種子混合以生成目標(biāo)字符串。
具體地,所述采集順序用戶可以與服務(wù)器約定。比如正向采集、逆向采集以及跳躍采集均可。
s1022.根據(jù)所述第一加密算法對(duì)所述目標(biāo)字符串進(jìn)行加密得到加密字符串。
進(jìn)一步地,若所述第一加密算法為公鑰加密算法,則所述加密因子還包括加密密鑰,不同的第一加密算法所對(duì)應(yīng)的公鑰加密算法的保密級(jí)別和得到的加密密鑰長(zhǎng)度不同。
s1023.按照預(yù)設(shè)的第二混合算法將所述加密字符串和所述第二混合種子進(jìn)行混合以得到混合加密字符串。
進(jìn)一步地,所述第一混合種子和第二混合種子可以包括一個(gè)或多個(gè)字符串的組合,所述字符串可以包括英文、數(shù)字、符號(hào)及其組合。
s1024.獲取自身硬件信息,根據(jù)所述硬件信息和所述混合加密字符串生成加密密鑰。
具體地,硬件相關(guān)信息包括屏幕參數(shù)、尺寸、材質(zhì)、內(nèi)存容量、外存容量、cpu性能、攝像頭像素、終端型號(hào)、應(yīng)用終端imei、應(yīng)用終端mac地址中的任意一種或多種。
s1025.根據(jù)所述第二加密算法將所述混合加密字符串,結(jié)合所述加密密鑰運(yùn)算得到加密密文,將所述加密密文發(fā)送至服務(wù)器。
進(jìn)一步地,所述第一加密算法還可以是異或運(yùn)算或者對(duì)稱算法等任意一種可逆運(yùn)算方法;所述第二加密算法可以是sm3、md5等雜湊算法進(jìn)行運(yùn)算得到的算法。
實(shí)施例2:
一種加密系統(tǒng),所述系統(tǒng)包括服務(wù)器201和客戶端202,
所述服務(wù)器201包括:
請(qǐng)求獲取模塊2011,用于獲取用戶的數(shù)據(jù)加密請(qǐng)求,所述數(shù)據(jù)加密請(qǐng)求包括待加密數(shù)據(jù)的長(zhǎng)度和用戶標(biāo)識(shí);
目標(biāo)群組標(biāo)識(shí)獲取模塊2012,用于根據(jù)所述用戶標(biāo)識(shí)獲取用戶所在的一個(gè)或者多個(gè)群組標(biāo)識(shí);若獲取到的群組標(biāo)識(shí)為多個(gè),則從中按照約定算法選擇一個(gè)目標(biāo)群組標(biāo)識(shí);若獲取到的群組標(biāo)識(shí)只有一個(gè),則獲取到的群組標(biāo)識(shí)即為目標(biāo)群組標(biāo)識(shí);
特征值獲取模塊2013,用于按照預(yù)設(shè)算法根據(jù)所述用戶標(biāo)識(shí)、目標(biāo)群組標(biāo)識(shí)和所述待加密數(shù)據(jù)的長(zhǎng)度得到特征值;
加密因子處理模塊2014,用于根據(jù)所述特征值在預(yù)設(shè)的加密算法集合中抽取加密因子并將所述加密因子傳輸至客戶端,所述加密因子包括第一混合種子、第二混合種子、第一加密算法和第二加密算法;
所述客戶端202包括:
字符輸入模塊2021,用于獲取用戶輸入的字符;
目標(biāo)字符串生成模塊2022,用于按照預(yù)設(shè)的采集順序?qū)@取到的字符進(jìn)行排列,并按照預(yù)設(shè)的第一混合算法將獲取到的字符與所述第一混合種子混合以生成目標(biāo)字符串;
混合加密字符串得到模塊2023,用于根據(jù)所述第一加密算法對(duì)所述目標(biāo)字符串進(jìn)行加密得到加密字符串;按照預(yù)設(shè)的第二混合算法將所述加密字符串和所述第二混合種子進(jìn)行混合以得到混合加密字符串;
加密密鑰生成模塊2024,用于獲取自身硬件信息,根據(jù)所述硬件信息和所述混合加密字符串生成加密密鑰;
加密密文處理模塊2025,用于根據(jù)所述第二加密算法將所述混合加密字符串,結(jié)合所述加密密鑰運(yùn)算得到加密密文,將所述加密密文發(fā)送至服務(wù)器。
以上所揭露的僅為本發(fā)明較佳實(shí)施例而已,當(dāng)然不能以此來限定本發(fā)明之權(quán)利范圍,因此依本發(fā)明權(quán)利要求所作的等同變化,仍屬本發(fā)明所涵蓋的范圍。