亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

數(shù)據(jù)處理、加密、完整性校驗(yàn)方法及身份鑒別方法及系統(tǒng)與流程

文檔序號(hào):12493867閱讀:971來源:國(guó)知局
數(shù)據(jù)處理、加密、完整性校驗(yàn)方法及身份鑒別方法及系統(tǒng)與流程

本發(fā)明涉及信息安全技術(shù)領(lǐng)域,具體而言,涉及一種數(shù)據(jù)處理、加密、完整性校驗(yàn)方法及身份鑒別方法及系統(tǒng)。



背景技術(shù):

加密技術(shù)自古代就已開始研究,信息的保護(hù)無論是軍事、政府還是商業(yè)乃至個(gè)人,都是非常重要的。一些部門及組織,對(duì)加密強(qiáng)度有著極高的需求。如果加密信息被破譯,其后果可能是非常嚴(yán)重的。隨著人類社會(huì)進(jìn)入計(jì)算時(shí)代、商業(yè)時(shí)代,大數(shù)據(jù)加密成為一種重要需求,如數(shù)據(jù)庫加密、磁盤加密、云加密等。在信息安全領(lǐng)域,現(xiàn)有的加密技術(shù)通常包括公鑰算法、對(duì)稱分組算法、數(shù)字摘要算法(哈希函數(shù))。

目前客戶端和服務(wù)器之間在進(jìn)行身份鑒別、數(shù)據(jù)交換的時(shí)候,數(shù)據(jù)大多數(shù)時(shí)候需要在網(wǎng)絡(luò)中傳輸。而數(shù)據(jù)在網(wǎng)絡(luò)上進(jìn)行傳輸?shù)臅r(shí)候,很容易被非法竊取,而大多數(shù)用戶習(xí)慣使用弱密碼,對(duì)于一個(gè)弱密碼,通過字典型強(qiáng)力破解,攻擊者很容易獲得密碼的原文,因而造成用戶密碼的泄露,因此一種較為可靠的數(shù)據(jù)網(wǎng)絡(luò)傳輸方法以及安全的身份鑒別技術(shù)成為目前亟待解決的問題。



技術(shù)實(shí)現(xiàn)要素:

有鑒于此,本發(fā)明實(shí)施例的目的在于提供一種數(shù)據(jù)處理、加密、完整性校驗(yàn)方法及身份鑒別方法及系統(tǒng),能夠更加可靠的實(shí)現(xiàn)客戶端和服務(wù)器之間數(shù)據(jù)的傳輸。

第一方面,本發(fā)明實(shí)施例提供了一種數(shù)據(jù)處理方法,包括:

預(yù)先設(shè)置黑箱秘鑰,所述的黑箱秘鑰是一個(gè)隨機(jī)數(shù),其長(zhǎng)度大于等于64字節(jié);

對(duì)參與處理的輸入數(shù)據(jù),使用所述的黑箱密鑰進(jìn)行混雜運(yùn)算,獲得中間值數(shù)據(jù);

使用預(yù)設(shè)的哈希函數(shù),對(duì)所述中間值數(shù)據(jù)進(jìn)行單向散列運(yùn)算,獲得所述中間值數(shù)據(jù)的Hash結(jié)果。

第二方面,本發(fā)明實(shí)施例還提供一種數(shù)據(jù)加密方法,包括:獲取待處理信息;所述待處理信息中包括多個(gè)待加密字段,以及多個(gè)非加密字段;

將所述多個(gè)非加密字段進(jìn)行拼接,形成字符串格式的秘鑰明文鍵值;

將所述秘鑰明文鍵值作為輸入數(shù)據(jù),使用如上述權(quán)利要求1所述的方法對(duì)所述的秘鑰明文鍵值數(shù)據(jù)進(jìn)行處理,獲取與所述秘鑰明文鍵值對(duì)應(yīng)的Hash結(jié)果;

將所述秘鑰明文鍵值對(duì)應(yīng)的Hash結(jié)果作為對(duì)稱加密算法的密鑰,對(duì)待加密字段進(jìn)行加密和/或解密。

第三方面,本本發(fā)明實(shí)施例還提供一種數(shù)據(jù)完整性校驗(yàn)方法,包括:

獲取完整性校驗(yàn)數(shù)據(jù);

將所述完整性校驗(yàn)數(shù)據(jù)與預(yù)存的完整性校驗(yàn)值進(jìn)行比對(duì)校驗(yàn);

其中,所述完整性校驗(yàn)數(shù)據(jù)以及所述完整性校驗(yàn)值均通過下述方式獲得:

獲取數(shù)據(jù)表,并將所述數(shù)據(jù)表中所有的字段值,逐項(xiàng)連接成為一個(gè)字符串格式的待校驗(yàn)數(shù)據(jù);

將所述待校驗(yàn)數(shù)據(jù)作為輸入數(shù)據(jù),使用如上述權(quán)利要求1所述的方法進(jìn)行處理,獲取與所述待校驗(yàn)數(shù)據(jù)對(duì)應(yīng)的Hash結(jié)果;

將與所述待校驗(yàn)數(shù)據(jù)對(duì)應(yīng)的Hash結(jié)果作為完整性校驗(yàn)值進(jìn)行保存,和/或,作為所述待完整性校驗(yàn)數(shù)據(jù)。

第四方面,本發(fā)明實(shí)施例提供一種身份鑒別方法,應(yīng)用于包括客戶端以及服務(wù)器的系統(tǒng)中,所述服務(wù)器創(chuàng)建至少一個(gè)RSA秘鑰對(duì),所述秘鑰對(duì)中的私鑰在所述服務(wù)器端通過上述權(quán)利要求2所提供的方法進(jìn)行加密存儲(chǔ);所述公鑰在所述服務(wù)器明文存儲(chǔ);

所述身份鑒別方法包括:

客戶端生成認(rèn)證服務(wù)請(qǐng)求信息,并使用隨機(jī)秘鑰以及公鑰對(duì)所述服務(wù)請(qǐng)求信息進(jìn)行加密,生成公鑰保護(hù)信息發(fā)送至所述服務(wù)器;所述公鑰保護(hù)信息包括:使用隨機(jī)秘鑰加密的服務(wù)請(qǐng)求信息,以及使用公鑰加密的所述隨機(jī)秘鑰;

所述服務(wù)器使用與所述公鑰對(duì)應(yīng)的私鑰對(duì)所述公鑰保護(hù)信息進(jìn)行解密,獲取所述隨機(jī)秘鑰以及所述服務(wù)請(qǐng)求信息;

所述服務(wù)器根據(jù)所述服務(wù)器請(qǐng)求信息,生成反饋信息,并使用所述隨機(jī)秘鑰將所述反饋信息加密后,發(fā)送至客戶端;所述反饋信息中攜帶有密碼挑戰(zhàn)數(shù)據(jù);

所述客戶端根據(jù)所述密碼挑戰(zhàn)數(shù)據(jù)以及用戶的密碼信息,生成第二次認(rèn)證請(qǐng)求信息,并使用所述公鑰加密后,發(fā)送至服務(wù)器;

所述服務(wù)器使用與所述公鑰對(duì)應(yīng)的私鑰對(duì)所述第二次認(rèn)證請(qǐng)求信息進(jìn)行解密,并根據(jù)所述第二次認(rèn)證請(qǐng)求信息中所攜帶的密碼運(yùn)算數(shù)據(jù),對(duì)用戶進(jìn)行身份鑒別。

第五方面,本發(fā)明實(shí)施例還提供一種數(shù)據(jù)加密系統(tǒng),包括:包括客戶端以及服務(wù)器,所述服務(wù)器創(chuàng)建至少一個(gè)RSA秘鑰對(duì),所述秘鑰對(duì)中的私鑰在所述服務(wù)器端通過上述權(quán)利要求2所提供的數(shù)據(jù)加密方法進(jìn)行加密后存儲(chǔ);所述公鑰在所述服務(wù)器明文存儲(chǔ);所述身份鑒別系統(tǒng)包括:

客戶端生成認(rèn)證服務(wù)請(qǐng)求信息,并使用隨機(jī)秘鑰以及公鑰對(duì)所述服務(wù)請(qǐng)求信息進(jìn)行雙重加密后,生成公鑰保護(hù)信息發(fā)送至所述服務(wù)器;所述公鑰保護(hù)信息包括:使用隨機(jī)秘鑰加密的服務(wù)請(qǐng)求信息,以及使用公鑰加密的所述隨機(jī)秘鑰;

所述服務(wù)器使用與所述公鑰對(duì)應(yīng)的私鑰對(duì)所述公鑰保護(hù)信息進(jìn)行解密,獲取所述隨機(jī)秘鑰以及所述服務(wù)請(qǐng)求信息;

所述服務(wù)器根據(jù)所述服務(wù)請(qǐng)求信息,生成反饋信息,并使用所述隨機(jī)秘鑰將所述反饋信息加密后,發(fā)送至客戶端;所述反饋信息中攜帶有密碼挑戰(zhàn)數(shù)據(jù);

所述客戶端根據(jù)所述密碼挑戰(zhàn)數(shù)據(jù)以及用戶的密碼信息,生成第二次認(rèn)證請(qǐng)求信息,并使用所述公鑰加密后,發(fā)送至服務(wù)器;

所述服務(wù)器使用與所述公鑰對(duì)應(yīng)的私鑰對(duì)所述第二次認(rèn)證請(qǐng)求信息進(jìn)行解密,并根據(jù)所述第二次認(rèn)證請(qǐng)求信息中所攜帶的密碼運(yùn)算數(shù)據(jù),對(duì)用戶進(jìn)行身份鑒別。

本發(fā)明實(shí)施例所提供的數(shù)據(jù)處理、加密、完整性校驗(yàn)方法及身份鑒別方法及系統(tǒng),能夠更加可靠的實(shí)現(xiàn)客戶端和服務(wù)器之間數(shù)據(jù)的傳輸。

為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能更明顯易懂,下文特舉較佳實(shí)施例,并配合所附附圖,作詳細(xì)說明如下。

附圖說明

為了更清楚地說明本發(fā)明實(shí)施例的技術(shù)方案,下面將對(duì)實(shí)施例中所需要使用的附圖作簡(jiǎn)單地介紹,應(yīng)當(dāng)理解,以下附圖僅示出了本發(fā)明的某些實(shí)施例,因此不應(yīng)被看作是對(duì)范圍的限定,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他相關(guān)的附圖。

圖1示出了本發(fā)明實(shí)施例所提供的一種數(shù)據(jù)處理方法的流程圖;

圖2示出了本發(fā)明實(shí)施例所提供的一種數(shù)據(jù)加密方法的流程圖;

圖3示出了本發(fā)明實(shí)施例所提供的一種數(shù)據(jù)完整性校驗(yàn)方法的流程圖;

圖4示出了本發(fā)明實(shí)施例所提供的一種身份鑒別方法的流程圖;

圖5示出了本發(fā)明實(shí)施例所提供的身份鑒別方法中,密碼挑戰(zhàn)數(shù)據(jù)在服務(wù)端的算法流程圖;

圖6示出了本發(fā)明實(shí)施例所提供的身份鑒別方法中,客戶端根據(jù)所述密碼挑戰(zhàn)數(shù)據(jù)以及用戶密碼,生成第二次認(rèn)證請(qǐng)求信息的具體方法流程圖;

圖7示出了本發(fā)明實(shí)施例所提供的一種身份鑒別系統(tǒng)的結(jié)構(gòu)示意圖。

具體實(shí)施方式

為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。通常在此處附圖中描述和示出的本發(fā)明實(shí)施例的組件可以以各種不同的配置來布置和設(shè)計(jì)。因此,以下對(duì)在附圖中提供的本發(fā)明的實(shí)施例的詳細(xì)描述并非旨在限制要求保護(hù)的本發(fā)明的范圍,而是僅僅表示本發(fā)明的選定實(shí)施例。基于本發(fā)明的實(shí)施例,本領(lǐng)域技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)的前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。

目前客戶端和服務(wù)器之間相互發(fā)送的數(shù)據(jù)包在網(wǎng)絡(luò)上進(jìn)行傳輸?shù)臅r(shí)候,容易被非法劫持,而大多數(shù)用戶習(xí)慣使用弱密碼,對(duì)于一個(gè)弱密碼,通過字典型強(qiáng)力破解,攻擊者很容易獲得的密碼原文,因而造成用戶密碼的泄露,因此一種較為可靠的數(shù)據(jù)處理方法成為目前亟待解決的問題。基于此,本申請(qǐng)?zhí)峁┮环N數(shù)據(jù)處理、加密、完整性校驗(yàn)方法及身份鑒別方法及系統(tǒng),可以實(shí)現(xiàn)客戶端和服務(wù)器之間的數(shù)據(jù)更加可靠的傳輸。

為便于對(duì)本實(shí)施例進(jìn)行理解,首先對(duì)本發(fā)明實(shí)施例所公開的一種數(shù)據(jù)處理方法進(jìn)行詳細(xì)介紹,該方法可以應(yīng)用于多種領(lǐng)域,例如實(shí)現(xiàn)一次一密的對(duì)稱算法,用于數(shù)據(jù)庫的加密以及數(shù)據(jù)完整性校驗(yàn)、實(shí)現(xiàn)分散性安全數(shù)據(jù)庫、實(shí)現(xiàn)用戶身份鑒別等多種用途。

參見圖1所示,本發(fā)明實(shí)施例所提供的數(shù)據(jù)處理方法,具體包括:

S101:預(yù)先設(shè)置黑箱秘鑰,所述的黑箱秘鑰是一個(gè)隨機(jī)數(shù),其長(zhǎng)度大于等于64字節(jié);

S102:對(duì)參與處理的輸入數(shù)據(jù),使用所述的黑箱密鑰進(jìn)行混雜運(yùn)算,獲得中間值數(shù)據(jù);

S103:使用預(yù)設(shè)的哈希函數(shù),對(duì)所述中間值數(shù)據(jù)進(jìn)行單向散列運(yùn)算,獲得所述中間值數(shù)據(jù)的Hash結(jié)果。

在具體實(shí)現(xiàn)的時(shí)候,該數(shù)據(jù)處理方法,又稱為黑箱加密算法,或稱黑箱算法,該黑箱加密算法包括四個(gè)要素:算法(A)、黑箱秘鑰(K)、黑箱輸入(Bm)、黑箱輸出(Bh,即中間值數(shù)據(jù)的Hash結(jié)果)。四要素的關(guān)系可以表述為以下公式:

Bh=A(K,Bm)

黑箱算法具有以下特征:

(1)K是一個(gè)固定長(zhǎng)度的真隨機(jī)數(shù),其典型長(zhǎng)度為1kB字節(jié)(8192位),最小長(zhǎng)度為64字節(jié)。在一個(gè)實(shí)際的黑箱算法應(yīng)用系統(tǒng)中,K值是嚴(yán)格保密的。K通常稱為黑箱秘鑰。

(2)Bm是一個(gè)任意長(zhǎng)度信息值,即參與處理的輸入數(shù)據(jù)。

(3)Bh是一個(gè)固定長(zhǎng)度的偽隨機(jī)數(shù),其典型長(zhǎng)度為16字節(jié)(128位),還可以根據(jù)實(shí)際需要選擇其他長(zhǎng)度。

(4)在A,K確定的情況下,Bm和Bh具有單向?qū)?yīng)關(guān)系,也就是說,確定的Bm輸入可以計(jì)算出唯一的Bh輸出。

(5)計(jì)算過程是不可逆的,也就是說,通過Bh值不可能獲取K和Bm的任何信息特征。同時(shí)也意味著,如果想找出一個(gè)Bm輸入值,使其Bh輸出是某個(gè)特定數(shù)值,唯一的可行方法就是窮舉Bm輸入,直到其Bh輸出符合給定數(shù)值。而這種窮舉計(jì)算,在K值未知的情況下,是無法實(shí)施的。

(6)Bh具有隨機(jī)數(shù)統(tǒng)計(jì)特性(散列性),也就是說,無論給定何種有規(guī)律或者無規(guī)律的多個(gè)Bm輸入序列,其對(duì)應(yīng)的Bh輸出序列始終符合隨機(jī)數(shù)分布特性。

對(duì)參與處理的數(shù)據(jù)以及預(yù)設(shè)的黑箱密鑰進(jìn)行混雜運(yùn)算,實(shí)際上就是針對(duì)黑箱輸入Bm和黑箱秘鑰K,采用預(yù)先設(shè)定的算法進(jìn)行混雜運(yùn)算。所述的混雜算法可以是多種多樣的,可以根據(jù)安全需求和速度需求進(jìn)行綜合考量,選擇某種具體計(jì)算過程,例如:

Bh=MD5(K+Bm);

該方案就是將K值和Bm按字節(jié)順序合并,再計(jì)算合并信息的MD5值。更為復(fù)雜的方案可以將K值和Bm的混雜運(yùn)算設(shè)計(jì)為交替加密、解密,或者按照一定規(guī)律將K和Bm的字節(jié)進(jìn)行有序或者無序的字節(jié)混雜過程。只要能滿足第(4)條要求,K值和Bm進(jìn)行任何混雜都是允許的。

在上述S103中,預(yù)設(shè)的哈希函數(shù)可以是MD5、SHA等算法,這些算法經(jīng)過海量的驗(yàn)證和研究,具有較高的安全性,即便S102中的混雜運(yùn)算很簡(jiǎn)單,最終經(jīng)過S103的計(jì)算后,也可以保證算法整體具有足夠的安全性。

黑箱算法可以看作一種變異的哈希算法,具有不可逆性,因此不能獨(dú)立作為加密/解密算法。黑箱算法與某種對(duì)稱算法結(jié)合使用,則可以實(shí)現(xiàn)一次一密的密碼體制。方案如下:

通訊雙方(Alice,Bob)必須使用相同黑箱AK,相同黑箱的含義就是算法A和秘鑰K都相同。Alice和Bob可以事先約定某種Bm輸入序列,當(dāng)然他們也可以隨時(shí)變換約定。雙方的這種約定無需任何保密,最簡(jiǎn)單的約定可以使用每天的日期值作為一種序列。他們的每次通訊,都按順序使用約定序列中的元素,該元素作為Bm輸入黑箱AK,得到對(duì)應(yīng)的Bh輸出值,Bh值再作為通訊數(shù)據(jù)的加/解密秘鑰值。

上述方案也可以實(shí)現(xiàn)為一種自動(dòng)鏈路加密機(jī),在一條數(shù)據(jù)鏈路的兩端,使用相同黑箱AK,鏈路的每個(gè)數(shù)據(jù)報(bào)需要增加一個(gè)簡(jiǎn)短明文報(bào)頭,包含著Bm值,而數(shù)據(jù)報(bào)本身則使用對(duì)應(yīng)的Bh值加密。根據(jù)黑箱算法的特征,只要Bm值不出現(xiàn)重復(fù)使用,Bh值將符合隨機(jī)數(shù)統(tǒng)計(jì)規(guī)律,完全滿足了一次一密的密碼體制。

參見圖2所示,本發(fā)明實(shí)施例還體統(tǒng)一種數(shù)據(jù)加密方法,在上述實(shí)施例的基礎(chǔ)上,該數(shù)據(jù)加密方法具體包括:

S201:獲取待處理信息;所述待處理信息中包括多個(gè)待加密字段,以及多個(gè)非加密字段;

S202:將所述多個(gè)非加密字段進(jìn)行拼接,形成字符串格式的秘鑰明文鍵值;

S203:將所述秘鑰明文鍵值作為輸入數(shù)據(jù),使用如上述實(shí)施例的黑箱算法對(duì)所述的秘鑰明文鍵值數(shù)據(jù)進(jìn)行處理,獲取與所述秘鑰明文鍵值對(duì)應(yīng)的Hash結(jié)果;

S204:將所述秘鑰明文鍵值對(duì)應(yīng)的Hash結(jié)果作為對(duì)稱加密算法的密鑰,對(duì)待加密字段進(jìn)行加密和/或解密。

在具體實(shí)現(xiàn)的時(shí)候,該數(shù)據(jù)加密方法用于對(duì)包含有多個(gè)待加密字段以及多個(gè)非加密字段的待處理信息進(jìn)行加密處理。例如,該待處理信息可以是某公司員工的身份信息以及工資信息。員工的身份信息不需要進(jìn)行加密處理,將其作為非加密字段,而員工的工資信息需要進(jìn)行加密,將其作為待加密字段。待加密字段可能有一個(gè),也可能有多個(gè),非加密字段可能有一個(gè),也可能有多個(gè)。在進(jìn)行加密的時(shí)候,會(huì)將多個(gè)非加密字段進(jìn)行拼接,具體的拼接順序可以根據(jù)用戶的實(shí)際需求進(jìn)行具體的設(shè)定。由于非加密字段在存儲(chǔ)的時(shí)候也是明文存儲(chǔ)的,因此可以將拼接后所形成的字符串作為加密時(shí)的密鑰明文鍵值。將該密鑰明文鍵值作為輸入數(shù)據(jù),使用如上述圖1對(duì)應(yīng)的實(shí)施例的方法進(jìn)行處理,獲取與密鑰明文鍵值對(duì)應(yīng)的Hash結(jié)果,將與密鑰明文鍵值對(duì)應(yīng)的Hash結(jié)果作為對(duì)稱加密算法的密鑰,對(duì)待加密字段進(jìn)行加密。當(dāng)需要對(duì)加密后的數(shù)據(jù)進(jìn)行解密的時(shí)候,只需要再次將非加密字段進(jìn)行拼接,形成字符串格式的密鑰明文鍵值,然后使用與上述圖1對(duì)應(yīng)的實(shí)施例的方法對(duì)密鑰明文鍵值進(jìn)行處理,再次獲得密鑰明文鍵值對(duì)應(yīng)的Hash結(jié)果,完成解密。在整個(gè)過程中,實(shí)際上黑箱密鑰是一直處于保密狀態(tài),針對(duì)不同的待處理信息,由于非加密字段都不一樣,因此,最終所形成的對(duì)稱加密算法的密鑰必然有所區(qū)別,最終能夠獲得的加密數(shù)據(jù)也有所區(qū)別。

在整個(gè)方法中黑箱密鑰一直是處于保密狀態(tài),輸入數(shù)據(jù)輸入黑箱后,再由黑箱輸出中間值數(shù)據(jù)的Hash結(jié)果,不管是在數(shù)據(jù)傳輸?shù)臅r(shí)候,還是在與其他通訊主體進(jìn)行通訊的過程中,所傳輸?shù)臄?shù)據(jù)中均不會(huì)攜帶黑箱密鑰,而黑箱密鑰和輸入數(shù)據(jù)進(jìn)行混雜運(yùn)算后,還要使用預(yù)設(shè)的哈希函數(shù)對(duì)中間值數(shù)據(jù)進(jìn)行單向散列運(yùn)算,因此也就無從對(duì)黑箱密鑰進(jìn)行破解。提高了加密的可靠性。

例如:某個(gè)數(shù)據(jù)表由四個(gè)字段構(gòu)成,第1和第2字段不需要加密,第3和第4字段需要加密,數(shù)據(jù)表中的明文內(nèi)容為:

a1,a2,a3,a4;

b1,b2,b3,b3;

c1,c2,c3,c4;

……

加密過程:(a1+a2)作為黑箱的輸入數(shù)據(jù),得到ha,ha則用來加密或解密a3和a4,因此第1個(gè)數(shù)據(jù)記錄的實(shí)際存儲(chǔ)結(jié)果為:

a1,a2,Cf(a3),Cf(a4)

其中,Cf(a3)是a3用ha加密后是密文值,Cf(a4)是a4用ha加密后的密文值。后續(xù)數(shù)據(jù)記錄以此類推,前兩項(xiàng)都是明文值存儲(chǔ),后兩項(xiàng)都是密文值存儲(chǔ)。

以上算法的安全性在于,在沒有黑箱秘鑰的情況下,將無法計(jì)算每條數(shù)據(jù)記錄的加/解密秘鑰值。換言之,在沒有黑箱的情況下,僅僅通過a1和a2不可能恢復(fù)出a3和a4的明文數(shù)值。

以上算法的適用范圍并不僅僅局限于數(shù)據(jù)庫的數(shù)據(jù)表,任何在數(shù)據(jù)結(jié)構(gòu)上可以解析為數(shù)據(jù)表模式的場(chǎng)景都可以應(yīng)用此算法。

參見圖3所示,本發(fā)明實(shí)施例還提供一種數(shù)據(jù)完整性校驗(yàn)方法,該方法包括:

S301:獲取完整性校驗(yàn)數(shù)據(jù);

S302:將所述完整性校驗(yàn)數(shù)據(jù)與預(yù)存的完整性校驗(yàn)值進(jìn)行比對(duì)校驗(yàn);

其中,所述完整性校驗(yàn)數(shù)據(jù)以及所述完整性校驗(yàn)值均通過下述方式獲得:

獲取數(shù)據(jù)表,并將所述數(shù)據(jù)表中所有的字段值,逐項(xiàng)連接成為一個(gè)字符串格式的待校驗(yàn)數(shù)據(jù);

將所述待校驗(yàn)數(shù)據(jù)作為輸入數(shù)據(jù),使用如上述權(quán)利要求1所述的方法進(jìn)行處理,獲取與所述待校驗(yàn)數(shù)據(jù)對(duì)應(yīng)的Hash結(jié)果;

將與所述待校驗(yàn)數(shù)據(jù)對(duì)應(yīng)的Hash結(jié)果作為完整性校驗(yàn)值進(jìn)行保存,和/或,作為所述待完整性校驗(yàn)數(shù)據(jù)。

在具體實(shí)現(xiàn)的時(shí)候,在對(duì)數(shù)據(jù)的完整性進(jìn)行校驗(yàn)的之前,需要先獲取待校驗(yàn)的數(shù)據(jù)表,然后將數(shù)據(jù)表中所有的字段值逐項(xiàng)連接成為一個(gè)字符串格式的待校驗(yàn)數(shù)據(jù),然后將該待校驗(yàn)數(shù)據(jù)作為輸入數(shù)據(jù),使用預(yù)先設(shè)置的黑箱密鑰對(duì)其進(jìn)行混雜運(yùn)算,獲取待校驗(yàn)數(shù)據(jù)對(duì)應(yīng)的中間值數(shù)據(jù),然后使用預(yù)設(shè)的哈希函數(shù),對(duì)該待校驗(yàn)數(shù)據(jù)的中間值數(shù)據(jù)進(jìn)行單向散列運(yùn)算,獲得該中間值數(shù)據(jù)的Hash結(jié)果,并將該Hash結(jié)果作為完整性校驗(yàn)值進(jìn)行保存。在用戶需要對(duì)數(shù)據(jù)表的完整性進(jìn)行校驗(yàn)的時(shí)候,可以將其所獲取的數(shù)據(jù)表中所有的字段值逐項(xiàng)連接成一個(gè)字符串格式的待校驗(yàn)數(shù)據(jù),執(zhí)行與獲取完整性校驗(yàn)值相同的操作,將最終所獲取的Hash結(jié)果作為待完整性校驗(yàn)數(shù)據(jù),然后使用該待完整性校驗(yàn)數(shù)據(jù)與之前預(yù)先存儲(chǔ)的完整性校驗(yàn)值進(jìn)行比對(duì),如果兩者一致,則認(rèn)為數(shù)據(jù)是完整的,如果兩者不一致,則認(rèn)為數(shù)據(jù)不完整。

具體地,假設(shè)一個(gè)數(shù)據(jù)表包含若干字段,該數(shù)據(jù)表在使用時(shí),需要檢查每項(xiàng)記錄是否保持完整,所謂保持完整就是指記錄數(shù)據(jù)沒有被修改過。為實(shí)現(xiàn)此目的,需要給數(shù)據(jù)表增加一個(gè)額外字段,用來存儲(chǔ)完整性校驗(yàn)值。所述完整性校驗(yàn)值的計(jì)算方法為,把一個(gè)記錄中的所有字段值,但是不包括所述額外字段,逐項(xiàng)連接為一個(gè)字符串格式數(shù)據(jù),作為圖1所對(duì)應(yīng)的實(shí)施例所提供的數(shù)據(jù)處理方法的輸入數(shù)據(jù),得到對(duì)應(yīng)的Hash結(jié)果,該結(jié)果即為本條數(shù)據(jù)記錄的完整性校驗(yàn)值,存放到額外字段中。

校驗(yàn)方法和計(jì)算方法基本一致,區(qū)別在于,校驗(yàn)時(shí),得到的hash結(jié)果要與存放在額外字段中的數(shù)值進(jìn)行比對(duì),如果比對(duì)相等,說明數(shù)據(jù)完整性沒有被破壞,如果比對(duì)不相等,說明數(shù)據(jù)完整性受到破壞。

用數(shù)據(jù)表舉例如下:

a1,a2,a3,a4,chk-a;

b1,b2,b3,b3,chk-b;

c1,c2,c3,c4,chk-c;

……

以上數(shù)據(jù)表,增加一個(gè)額外字段,用來存儲(chǔ)chk-a、chk-b、chk-c……。chk-a,就是a1+a2+a3+a4連接格式數(shù)據(jù),再經(jīng)過黑箱運(yùn)算的hash輸出值,chk-b,chk-c……以此類推。

以上算法的安全性在于,在沒有黑箱秘鑰的情況下,篡改任何一個(gè)數(shù)據(jù)值,都無法重新計(jì)算對(duì)應(yīng)的校驗(yàn)值。換言之,任何數(shù)據(jù)篡改都可以被黑箱算法察覺出來。

以上算法的適用范圍并不僅僅局限于數(shù)據(jù)庫的數(shù)據(jù)表,任何在數(shù)據(jù)結(jié)構(gòu)上可以解析為數(shù)據(jù)表模式的場(chǎng)景都可以應(yīng)用此算法。

參見圖4所示,本發(fā)明實(shí)施例還提供一種身份鑒別方法,該方法主要應(yīng)用于包括客戶端以及服務(wù)器的系統(tǒng)中,所述服務(wù)器創(chuàng)建至少一個(gè)RSA秘鑰對(duì),所述秘鑰對(duì)中的私鑰在所述服務(wù)器端通過上述圖2所對(duì)應(yīng)的實(shí)施例的數(shù)據(jù)加密方法處理后存儲(chǔ);所述公鑰在所述服務(wù)器明文存儲(chǔ);具體包括:

S401:客戶端生成認(rèn)證服務(wù)請(qǐng)求信息,并使用隨機(jī)秘鑰以及公鑰對(duì)所述服務(wù)請(qǐng)求信息進(jìn)行加密后,生成公鑰保護(hù)信息發(fā)送至所述服務(wù)器;所述公鑰保護(hù)信息包括:使用隨機(jī)秘鑰加密的服務(wù)請(qǐng)求信息,以及使用公鑰加密的所述隨機(jī)秘鑰;

S402:所述服務(wù)器使用與所述公鑰對(duì)應(yīng)的私鑰對(duì)所述公鑰保護(hù)信息進(jìn)行解密,獲取所述隨機(jī)秘鑰以及所述服務(wù)請(qǐng)求信息;

S403:所述服務(wù)器根據(jù)所述服務(wù)器請(qǐng)求信息,生成反饋信息,并使用所述隨機(jī)秘鑰將所述反饋信息加密后,發(fā)送至客戶端;所述反饋信息中攜帶有密碼挑戰(zhàn)數(shù)據(jù);

RSA秘鑰對(duì)的存儲(chǔ)以及加密方案,具體包括:

RSA秘鑰對(duì)的存儲(chǔ)數(shù)據(jù)表的定義為(符合MySQL5.6的定義語法):

CREATE TABLE IF NOT EXISTS SKI_List

(PK_ID INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,

XTimeStamp datetime default CURRENT_TIMESTAMP(),

nSTR VARCHAR(600),

eSTR VARCHAR(600),

dSTR VARCHAR(600),

pSTR VARCHAR(600),

qSTR VARCHAR(600),

uSTR VARCHAR(600),

e1STR VARCHAR(600),

e2STR VARCHAR(600));

以上數(shù)據(jù)表定義了10個(gè)數(shù)據(jù)字段,PK_ID(序列號(hào)),XTimeStamp(時(shí)間戳),nSTR(公鑰數(shù)值n),eSTR(公鑰數(shù)值e)這四個(gè)數(shù)據(jù)字段,屬于不需要加密的明文字段,其余的六個(gè)字段屬于私鑰數(shù)值,需要加密。數(shù)據(jù)表的特征符合權(quán)利要求3的算法特征。也就是說,PK_ID、XTimeStamp、nSTR、eSTR是明文直接存儲(chǔ),其他字段則是密文存儲(chǔ),加密和解密秘鑰就是(PK_ID+XTimeStamp+nSTR+eSTR)經(jīng)過黑箱運(yùn)算后得出的hash值。

另外,在具體實(shí)現(xiàn)的時(shí)候,客戶端可以通過直接查詢、間接查詢等方法,獲取服務(wù)器的某個(gè)RSA公鑰。對(duì)于每個(gè)呼應(yīng)過程,客戶端所發(fā)出的報(bào)文用一個(gè)隨機(jī)秘鑰R進(jìn)行加密,R本身再用應(yīng)答服務(wù)器的公鑰進(jìn)行加密。服務(wù)器在收到報(bào)文后,從數(shù)據(jù)庫中檢索對(duì)應(yīng)的私鑰,使用私鑰對(duì)R進(jìn)行解密還原,再使用所得到的R值還原報(bào)文數(shù)據(jù)。而服務(wù)器在向客戶端發(fā)送反饋結(jié)果數(shù)據(jù)時(shí),使用R進(jìn)行加密,最終客戶端在收到加密的反饋結(jié)果數(shù)據(jù)報(bào)文后,能夠再使用R對(duì)其進(jìn)行解密。上述過程實(shí)現(xiàn)了兩個(gè)目的:首先是實(shí)現(xiàn)了網(wǎng)絡(luò)數(shù)據(jù)報(bào)的加密保護(hù),可以確保通訊數(shù)據(jù)在鏈路環(huán)節(jié)不可被竊取。其次,基于RSA算法的特性,可以確保服務(wù)器的真實(shí)性,杜絕了假冒服務(wù)器的攻擊。

上述S401-S403實(shí)際上是第一個(gè)呼應(yīng)過程。該過程實(shí)現(xiàn)的目的,就是客戶端從服務(wù)器獲取密碼挑戰(zhàn)數(shù)據(jù)。所述呼應(yīng)過程,就是指客戶端向服務(wù)器發(fā)送一段完整的數(shù)據(jù)報(bào)文(呼叫),服務(wù)器完整接收,再根據(jù)報(bào)文內(nèi)容執(zhí)行相應(yīng)的程序步驟,并得出一段結(jié)果數(shù)據(jù),服務(wù)器再將結(jié)果數(shù)據(jù)完整反饋給客戶端(應(yīng)答)。

S404:所述客戶端根據(jù)所述密碼挑戰(zhàn)數(shù)據(jù)以及用戶的密碼信息,生成第二次認(rèn)證請(qǐng)求信息,并使用所述公鑰加密后,發(fā)送至服務(wù)器;

S405:所述服務(wù)器使用與所述公鑰對(duì)應(yīng)的私鑰對(duì)所述第二次認(rèn)證請(qǐng)求信息進(jìn)行解密,并根據(jù)所述第二次認(rèn)證請(qǐng)求信息中所攜帶的密碼運(yùn)算數(shù)據(jù),對(duì)用戶進(jìn)行身份鑒別。

在上述S404-S405中,實(shí)際上執(zhí)行的是第二個(gè)呼應(yīng)過程,在該呼應(yīng)過程中,客戶端會(huì)首先根據(jù)密碼挑戰(zhàn)數(shù)據(jù)以及用戶的密碼運(yùn)算數(shù)據(jù),生成第二次認(rèn)證請(qǐng)求信息,在該認(rèn)證請(qǐng)求信息中,應(yīng)當(dāng)至少包括兩部分內(nèi)容:1、客戶端對(duì)服務(wù)器所發(fā)送的密碼挑戰(zhàn)數(shù)據(jù)的算法回應(yīng),在該回應(yīng)中混雜了用戶的密碼信息(或者稱為鑒別密碼、用戶口令或者賬號(hào)口令)。2、需要服務(wù)器執(zhí)行的功能請(qǐng)求命令。該功能請(qǐng)求命令在使用公鑰進(jìn)行加密之前,還使用另外一個(gè)二次加密秘鑰進(jìn)行加密,該二次加密秘鑰是在S404中,基于密碼挑戰(zhàn)數(shù)據(jù)和用戶密碼混雜計(jì)算得到。另外,如果認(rèn)證方式有多種,還可以在認(rèn)證請(qǐng)求中包含具體的認(rèn)證方式識(shí)別標(biāo)識(shí)。第二次呼應(yīng)過程,實(shí)際使用了雙重冗余加密方案,可以確保用戶密碼不會(huì)在通訊鏈路中被攻擊者破解出來。

本發(fā)明實(shí)施例還提供了一種通過兩次呼應(yīng)過程實(shí)現(xiàn)用戶身份認(rèn)證的實(shí)施步驟:

所述服務(wù)器,在數(shù)據(jù)庫存儲(chǔ)的3個(gè)關(guān)鍵數(shù)據(jù)項(xiàng):

(1)UserName---用戶的標(biāo)識(shí)名稱,這是用戶的字符串標(biāo)識(shí),也稱為賬號(hào)名,或者用戶名;

(2)PWD---用戶預(yù)先設(shè)定的身份鑒別密碼,簡(jiǎn)稱用戶密碼,需要指出的是,PWD的存儲(chǔ)使用了黑箱算法,使用了權(quán)利2描述的加密方法。這就意味著,如果服務(wù)器的數(shù)據(jù)庫發(fā)生失泄密事件,但是黑箱秘鑰沒有泄露,此種情況下,用戶的PWD仍然處于高度安全狀態(tài),攻擊者無法解密出任何用戶的PWD,也不可能判斷出某兩個(gè)用戶是否使用了相同的PWD。

(3)Auth.INC---身份鑒別協(xié)議使用的重放抵抗因子,這是一個(gè)無符號(hào)的整數(shù)值,用戶創(chuàng)建時(shí)系統(tǒng)自動(dòng)完成初始化,在后續(xù)使用中只有單向步進(jìn)+1的操作。

1、所述身份鑒別的第一次呼應(yīng):

本次呼應(yīng),完成的協(xié)議功能就是客戶端獲得了一個(gè)挑戰(zhàn)變量。

(1)客戶端構(gòu)造數(shù)據(jù):pwd.challenge=hmy1970;

(2)以上數(shù)據(jù)中,“hmy1970”標(biāo)識(shí)一個(gè)用戶名;

(3)客戶端構(gòu)造一個(gè)隨機(jī)數(shù),稱為R,R值為16字節(jié);

(4)客戶端用R值加密“pwd.challenge=hmy1970”,加密結(jié)果稱為Cm;

(5)客戶端用服務(wù)器公鑰加密R值,加密算法為RSA,加密結(jié)果為Rp;

(6)客戶端把Rp和Cm發(fā)送到服務(wù)器;

(7)服務(wù)器首先要檢索私鑰,然后用私鑰解密Rp,解密結(jié)果必然是R;

(8)服務(wù)器用R值解密Cm,解密結(jié)果必然是“pwd.challenge=hmy1970”;

(9)服務(wù)器在數(shù)據(jù)庫中檢索用戶名“hmy1970”,獲得與之關(guān)聯(lián)的Auth.INC值;

(10)服務(wù)端回饋數(shù)據(jù):PWD=1131 32921BAB7BAD53E419B21

服務(wù)端回饋數(shù)據(jù)中包含了3個(gè)分項(xiàng)數(shù)據(jù),其算法含義為:

1131:此數(shù)值就是hmy1970用戶關(guān)聯(lián)的Auth.INC重放抵抗因子,每發(fā)生一次成功的PWD鑒別,該因子自動(dòng)步進(jìn)+1。比如,本次鑒別如果執(zhí)行成功,下次再執(zhí)行此協(xié)議時(shí),該值就是1132。

32921:這是一個(gè)定時(shí)滾動(dòng)變量,可以稱為動(dòng)態(tài)秘鑰索引碼,在服務(wù)端,此索引碼保存于一個(gè)數(shù)組隊(duì)列中,隊(duì)列的長(zhǎng)度可以滿足5min之內(nèi)的滾動(dòng)。服務(wù)端在回饋此變量時(shí),始終使用隊(duì)尾的最新變量。也就是說,如果用戶執(zhí)行第2次呼應(yīng)的時(shí)間間隔超過5min,該索引碼就已經(jīng)自動(dòng)失效(已經(jīng)滾出隊(duì)列),無法用于認(rèn)證計(jì)算了。該索引碼實(shí)際上還關(guān)聯(lián)了一個(gè)隨機(jī)數(shù),此隨機(jī)數(shù)和該變量同時(shí)滾進(jìn)滾出。實(shí)際上,該索引碼的核心用途就是用來檢索對(duì)應(yīng)的隨機(jī)數(shù)。

BAB7BAD53E419B21:這是8字節(jié)長(zhǎng)度的隨機(jī)數(shù),該數(shù)值和32921有著直接關(guān)聯(lián)性。

圖5是密碼挑戰(zhàn)數(shù)據(jù)在服務(wù)端的算法流程圖。在圖5中,服務(wù)器回饋的A數(shù)據(jù)就是(Auth.INC存儲(chǔ)值+1),B數(shù)據(jù)則是最新N值的直接引用。C1數(shù)據(jù)則是和N關(guān)聯(lián)的隨機(jī)數(shù),固定長(zhǎng)度為8字節(jié),它具有以下特征:

(1)C1數(shù)據(jù)來源于多用戶共享的隊(duì)列數(shù)據(jù)。因此,無論有多少客戶端同時(shí)發(fā)起挑戰(zhàn)請(qǐng)求,服務(wù)器都不會(huì)產(chǎn)生額外的內(nèi)存開銷。這對(duì)服務(wù)器響應(yīng)大量并發(fā)請(qǐng)求是非常有利的。

(2)C1數(shù)據(jù)具有時(shí)間限制性,只有B數(shù)據(jù)仍然處于隊(duì)列當(dāng)中時(shí),服務(wù)器才能檢索到對(duì)應(yīng)的C1數(shù)據(jù)。如果B數(shù)據(jù)已經(jīng)滾出隊(duì)列,意味著C1數(shù)據(jù)也同時(shí)失效。

2、所述身份鑒別的第二次呼應(yīng):

客戶端通過第一次呼應(yīng)獲取挑戰(zhàn)數(shù)據(jù)之后,應(yīng)及時(shí)執(zhí)行第二次呼應(yīng),防止B數(shù)據(jù)和C1數(shù)據(jù)過期失效。

本次呼應(yīng),完成的協(xié)議功能就是客戶端基于用戶密碼響應(yīng)服務(wù)器回饋的挑戰(zhàn)數(shù)據(jù)。本次呼應(yīng)也使用了第一次呼應(yīng)所用的公鑰加密步驟,對(duì)其中的重復(fù)性內(nèi)容不再贅述,僅敘述有區(qū)別的程序步驟:

(1)客戶端發(fā)送數(shù)據(jù):

authentication=pwd

AuthStr=hmy1970 1131 32921 0F36E4677A6073DA0F55B015BD727C4A

ActionEnc=GGRxYAruEn3IrbcUlkRfaaWCc

(2)服務(wù)端回饋數(shù)據(jù):

ActionRet=iyFMmMtr0yMj6gztLPf0B1qTHYA9O1Y7Rhc1fBWtR9mb5sM5gE MuFn6gopLCVkQmqO9bDOd1wPnhnS)EtwZDd4RPo8IXZQtd8jeXx3ummdYP8odtot YJHJ)9w4XaXMcvTvYY(UdVkHlfh2NwKy(oqQz9YgdV7p4kGGRxYAruam3Ib

客戶端發(fā)送數(shù)據(jù)的解釋:

authentication=pwd指明這是一個(gè)對(duì)挑戰(zhàn)變量的PWD響應(yīng)報(bào)文;

AuthStr=hmy1970 1131 32921 0F36E4677A6073DA0F55B015BD727C4A

AuthStr條目中,包含了四個(gè)數(shù)據(jù)項(xiàng):U、A、B、C2。其中U是用戶名,A和B就是第一次呼應(yīng)回饋的A數(shù)據(jù)和B數(shù)據(jù)。C2數(shù)據(jù)則是基于用戶密碼參與的混雜運(yùn)算結(jié)果。具體算法步驟為:

—進(jìn)行數(shù)據(jù)連接:A+第1次回饋的C1數(shù)據(jù)+用戶密碼;

—計(jì)算以上連接數(shù)據(jù)的MD5-hash值,此hash值即為C2數(shù)據(jù);

ActionEnc條目是加密之后的功能請(qǐng)求命令,加密算法使用了IDEA算法,加密秘鑰為Kp,Kp使用以下算法步驟:

—進(jìn)行數(shù)據(jù)連接,用戶名稱+第1次回饋的C1數(shù)據(jù)+A+用戶密碼;

—計(jì)算以上連接數(shù)據(jù)的MD5-hash值,此hash值即為Kp值;

—需要指出,Kp不會(huì)出現(xiàn)在網(wǎng)絡(luò)數(shù)據(jù)中;

服務(wù)端對(duì)報(bào)文數(shù)據(jù)的響應(yīng)流程:

(1)基于用戶名稱,檢索關(guān)聯(lián)的Auth.INC數(shù)據(jù),假設(shè)從數(shù)據(jù)庫讀取的數(shù)值為A’,則必須滿足A=A’+1,否則視為認(rèn)證無效,回饋錯(cuò)誤信息;

(2)基于用戶名稱,檢索關(guān)聯(lián)的PWD數(shù)據(jù);

(3)基于B數(shù)據(jù),檢索關(guān)聯(lián)C1隨機(jī)數(shù),如果B數(shù)據(jù)無法檢索,視為認(rèn)證無效,回饋錯(cuò)誤信息;

(4)基于以上數(shù)據(jù)項(xiàng),服務(wù)器可以計(jì)算C2數(shù)據(jù),計(jì)算結(jié)果為C2’;

(5)如果C2和C2’不相等,視為認(rèn)證無效,回饋錯(cuò)誤信息;

(6)對(duì)存儲(chǔ)的Auth.INC數(shù)據(jù)進(jìn)行步進(jìn)+1操作;

(7)基于以上數(shù)據(jù)項(xiàng),服務(wù)器也可以計(jì)算Kp值,在C2值比對(duì)相等的情況下,服務(wù)端計(jì)算的Kp值必然和客戶端計(jì)算的Kp值相等;

(8)用Kp值解密ActionEnc條目數(shù)據(jù);

(9)根據(jù)指令文本執(zhí)行相應(yīng)動(dòng)作;

(10)執(zhí)行結(jié)果用Kp值加密;

(11)ActionRet條目就是加密后的回饋結(jié)果;

上述的第(1)和第(6)步驟,是抵抗報(bào)文重放攻擊的關(guān)鍵點(diǎn)。由于Auth.INC的單調(diào)+1,使得當(dāng)前已經(jīng)響應(yīng)過的報(bào)文,如果再次重發(fā)給服務(wù)器,必然在第(1)步驟就被判定為認(rèn)證無效。

對(duì)該協(xié)議的最有效攻擊就是能夠直接寫操作服務(wù)器數(shù)據(jù)庫,將Auth.INC非法篡改,通常而言,這種攻擊很難實(shí)現(xiàn)。其次,由于C1的時(shí)間滾動(dòng)特性,這種數(shù)據(jù)庫篡改操作也必須限制在C1沒有滾出隊(duì)列之前才能奏效,一旦C1滾出隊(duì)列,即使篡改Auth.INC也沒有意義了。

參見圖6所示,所述客戶端根據(jù)所述密碼挑戰(zhàn)數(shù)據(jù)以及用戶密碼,生成第二次認(rèn)證請(qǐng)求信息,具體包括:

S601用所述密碼挑戰(zhàn)數(shù)據(jù)以及用戶密碼進(jìn)行混雜計(jì)算,在混雜計(jì)算時(shí),使用兩種不同的混雜計(jì)算過程,獲取兩個(gè)不同的秘鑰值,作為校驗(yàn)秘鑰和加密秘鑰;所述的C2值就是校驗(yàn)秘鑰,所述的Kp值就是加密秘鑰。

S602:將所述校驗(yàn)秘鑰發(fā)送至服務(wù)器,以使所述服務(wù)器根據(jù)所述校驗(yàn)密鑰,檢驗(yàn)客戶端使用的用戶密碼是否正確,從而決策接受或者拒絕客戶端提出的功能請(qǐng)求命令;

S603:使用所述加密秘鑰加密所述的功能請(qǐng)求命令。

客戶端發(fā)送的ActionEnc條目和服務(wù)器回饋的ActionRet條目,都使用了IDEA加密保護(hù),加密秘鑰則是Kp,Kp的算法也已經(jīng)明確。

因此,用Kp加/解密ActionEnc和ActionRet視為第1重保護(hù)。有了這一重保護(hù),即使不用公鑰加密算法,協(xié)議也具備了基本的安全性。攻擊者不可能從網(wǎng)絡(luò)數(shù)據(jù)中直接獲取到用戶密碼的原值。必須對(duì)網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行字典強(qiáng)力攻擊,才可能猜測(cè)出用戶的密碼,如果用戶密碼有足夠的復(fù)雜度,字典攻擊也就無法奏效了。

雖然協(xié)議是安全的,但是大部分用戶往往喜歡使用很弱的密碼,字典強(qiáng)力攻擊對(duì)于猜測(cè)弱密碼是非常有效的。因此,協(xié)議過程實(shí)際上還啟用了第2重加密,即服務(wù)器公鑰加密。這就是所述的雙重冗余保護(hù)技術(shù)。

客戶端發(fā)出的數(shù)據(jù)報(bào),使用服務(wù)器公鑰封裝保護(hù)后,就徹底阻斷了對(duì)用戶密碼進(jìn)行字典攻擊的可能性。

如果不使用公鑰保護(hù)步驟,攻擊者可以從網(wǎng)絡(luò)鏈路中截獲以下兩個(gè)協(xié)議數(shù)據(jù)項(xiàng):

第一次呼應(yīng)的應(yīng)答數(shù)據(jù):

PWD=1131 32921BAB7BAD53E419B21

第二次呼應(yīng)的呼叫數(shù)據(jù):

AuthStr=hmy1970 1131 32921 0F36E4677A6073DA0F55B015BD727C4A

基于這兩個(gè)數(shù)據(jù)項(xiàng),攻擊者就可以通過字典強(qiáng)力攻擊破解出用戶密碼。

而使用公鑰加密后,這兩個(gè)數(shù)據(jù)項(xiàng)也轉(zhuǎn)為加密數(shù)據(jù),在沒有服務(wù)器私鑰的情況下,攻擊者無法解密出原文,也就無法實(shí)施字典攻擊??梢钥闯?,對(duì)于弱密碼的情況,雙重冗余保護(hù)是很有必要的。

本發(fā)明實(shí)施例所提供的身份鑒別方法,客戶端和服務(wù)器之間進(jìn)行了兩次呼應(yīng)過程,在每一次呼應(yīng)過程中,客戶端所發(fā)出的數(shù)據(jù)都進(jìn)行了公鑰加密,首先是實(shí)現(xiàn)了網(wǎng)絡(luò)數(shù)據(jù)報(bào)的加密保護(hù),可以確保通訊數(shù)據(jù)在鏈路環(huán)節(jié)不可被竊取。其次,基于RSA算法的特性,可以確保服務(wù)器的真實(shí)性,杜絕了假冒服務(wù)器的攻擊。而在第一次呼應(yīng)之后,客戶端會(huì)收到服務(wù)器所反饋的密碼挑戰(zhàn)數(shù)據(jù),第二次呼應(yīng)是基于該密碼挑戰(zhàn)數(shù)據(jù)發(fā)起的,使得兩次呼應(yīng)之間緊密結(jié)合起來,能夠更加可靠的實(shí)現(xiàn)客戶端和服務(wù)器之間的鑒別。

在上述實(shí)施例中,所述密碼挑戰(zhàn)數(shù)據(jù)包括:與用戶關(guān)聯(lián)的抵抗報(bào)文重放變量以及隨機(jī)挑戰(zhàn)變量;

所述服務(wù)器驗(yàn)證客戶端的用戶密碼是否正確;

如果密碼為正確,在發(fā)出所述反饋信息之前,所述抵抗報(bào)文重放變量步進(jìn)+1;

如果密碼驗(yàn)證為錯(cuò)誤,所述抵抗報(bào)文重放變量無步進(jìn)操作。

在具體實(shí)現(xiàn)的時(shí)候,該實(shí)施例使得該認(rèn)證方法具備了抵抗重放攻擊的能力,第1次呼應(yīng),服務(wù)器返回的隨機(jī)挑戰(zhàn)變量中包含了一個(gè)抵抗因子,該抵抗因子和用戶有綁定關(guān)系。在第二次呼應(yīng)中,如果用戶密碼被服務(wù)端判定為正確,服務(wù)端會(huì)自動(dòng)將該因子步進(jìn)+1。所述的Auth.INC,所述的A變量,就是所述的重放抵抗變量,或稱抵抗因子。

另外需要注意的是,第一次呼應(yīng)的過程結(jié)束之后,客戶端應(yīng)當(dāng)在預(yù)設(shè)時(shí)間內(nèi)執(zhí)行第二次呼應(yīng)過程,兩次呼應(yīng)的間隔時(shí)間不能太久。如果超出預(yù)設(shè)時(shí)間,將導(dǎo)致身份鑒別的失敗。即:

所述服務(wù)器在發(fā)出所述反饋信息后,判斷是否在預(yù)設(shè)時(shí)間內(nèi)接收到客戶端所發(fā)送的第二次認(rèn)證請(qǐng)求信息;

如果否,則對(duì)所述密碼挑戰(zhàn)數(shù)據(jù)做失效處理。

可以看出,抵抗重放攻擊的單調(diào)因子,確保客戶端數(shù)據(jù)報(bào)在短時(shí)段內(nèi)重放無效;而隨機(jī)挑戰(zhàn)變量則確保客戶端數(shù)據(jù)報(bào)在長(zhǎng)時(shí)段內(nèi)重放無效。這兩個(gè)因子的聯(lián)合作用,確保了任何客戶端數(shù)據(jù)報(bào)都無法實(shí)現(xiàn)重放攻擊。

另外,需要注意的是,每個(gè)用戶和服務(wù)端之間需要預(yù)設(shè)一個(gè)共享密碼,稱為用戶密碼或者用戶口令。所述的用戶密碼在服務(wù)端加密存儲(chǔ)于數(shù)據(jù)庫中,加密算法可以由圖2所對(duì)應(yīng)的實(shí)施例所提供的數(shù)據(jù)加密方法實(shí)現(xiàn)。所述的PWD,就是所述的用戶密碼。

另外,在本發(fā)明實(shí)施例中,所述服務(wù)器在對(duì)用戶進(jìn)行身份鑒別之后,還包括:根據(jù)鑒別結(jié)果,以及所述的功能請(qǐng)求命令,生成第二次反饋數(shù)據(jù);

將所述第二次反饋數(shù)據(jù)進(jìn)行雙重冗余加密后,發(fā)送至客戶端。

本發(fā)明又一實(shí)施例還提供一種身份鑒別系統(tǒng),參見圖7所示,包括客戶端以及服務(wù)器,所述服務(wù)器創(chuàng)建至少一個(gè)RSA秘鑰對(duì),所述秘鑰對(duì)中的私鑰在所述服務(wù)器端通過上述圖2所對(duì)應(yīng)的實(shí)施例所提供的數(shù)據(jù)加密方法進(jìn)行加密后存儲(chǔ);所述公鑰在所述服務(wù)器明文存儲(chǔ);所述身份鑒別系統(tǒng)包括:

客戶端生成認(rèn)證服務(wù)請(qǐng)求信息,并使用隨機(jī)秘鑰以及公鑰對(duì)所述服務(wù)請(qǐng)求信息進(jìn)行雙重加密后,生成公鑰保護(hù)信息發(fā)送至所述服務(wù)器;所述公鑰保護(hù)信息包括:使用隨機(jī)秘鑰加密的服務(wù)請(qǐng)求信息,以及使用公鑰加密的所述隨機(jī)秘鑰;

所述服務(wù)器使用與所述公鑰對(duì)應(yīng)的私鑰對(duì)所述公鑰保護(hù)信息進(jìn)行解密,獲取所述隨機(jī)秘鑰以及所述服務(wù)請(qǐng)求信息;

所述服務(wù)器根據(jù)所述服務(wù)器請(qǐng)求信息,生成反饋信息,并使用所述隨機(jī)秘鑰將所述反饋信息加密后,發(fā)送至客戶端;所述反饋信息中攜帶有密碼挑戰(zhàn)數(shù)據(jù);

所述客戶端根據(jù)所述密碼挑戰(zhàn)數(shù)據(jù)以及用戶的密碼信息,生成第二次認(rèn)證請(qǐng)求信息,并使用所述公鑰加密后,發(fā)送至服務(wù)器;

所述服務(wù)器使用與所述公鑰對(duì)應(yīng)的私鑰對(duì)所述第二次認(rèn)證請(qǐng)求信息進(jìn)行解密,并根據(jù)所述第二次認(rèn)證請(qǐng)求信息中所攜帶的密碼運(yùn)算數(shù)據(jù),對(duì)用戶進(jìn)行身份鑒別。

本實(shí)施例中,客戶端和服務(wù)器的具體功能和交互方式,可參見圖1-圖6對(duì)應(yīng)的實(shí)施例的記載,在此不再贅述。

另外,本發(fā)明實(shí)施例所提供的身份鑒別系統(tǒng)中,所述客戶端在根據(jù)所述密碼挑戰(zhàn)數(shù)據(jù)以及用戶的密碼信息,生成第二次認(rèn)證請(qǐng)求信息時(shí),具體用于:

用所述密碼挑戰(zhàn)數(shù)據(jù)以及用戶密碼進(jìn)行混雜計(jì)算,在混雜計(jì)算時(shí),使用兩種不同的混雜計(jì)算過程,獲取兩個(gè)不同的秘鑰值,作為校驗(yàn)秘鑰和加密秘鑰;

將所述校驗(yàn)秘鑰發(fā)送至服務(wù)器,以使所述服務(wù)器根據(jù)所述校驗(yàn)密鑰,檢驗(yàn)客戶端使用的用戶密碼是否正確,從而決策接受或者拒絕客戶端提出的功能請(qǐng)求命令;

使用所述加密秘鑰加密所述的功能請(qǐng)求命令。

本發(fā)明實(shí)施例所提供的數(shù)據(jù)處理、加密、完整性校驗(yàn)以及身份鑒別方法及系統(tǒng)的計(jì)算機(jī)程序產(chǎn)品,包括存儲(chǔ)了程序代碼的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述程序代碼包括的指令可用于執(zhí)行前面方法實(shí)施例中所述的方法,具體實(shí)現(xiàn)可參見方法實(shí)施例,在此不再贅述。

所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡(jiǎn)潔,上述描述的系統(tǒng)和系統(tǒng)的具體工作過程,可以參考前述方法實(shí)施例中的對(duì)應(yīng)過程,在此不再贅述。

所述功能如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:U盤、移動(dòng)硬盤、只讀存儲(chǔ)器(ROM,Read-Only Memory)、隨機(jī)存取存儲(chǔ)器(RAM,Random Access Memory)、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。

以上所述,僅為本發(fā)明的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以所述權(quán)利要求的保護(hù)范圍為準(zhǔn)。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1