識(shí)別出來是非法請(qǐng)求,通過該驗(yàn)證程序進(jìn)一步防止被破解的客戶端訪問服務(wù)器。
[0084]在一個(gè)可選的實(shí)施例中,第一終端通過第二終端的驗(yàn)證信息校驗(yàn)數(shù)據(jù)傳輸請(qǐng)求的合法性可以包括:從驗(yàn)證信息中獲取使用第二終端的私鑰對(duì)請(qǐng)求時(shí)間戳加密得到的加密時(shí)間戳,其中,請(qǐng)求時(shí)間戳用于記錄第二終端生成數(shù)據(jù)傳輸請(qǐng)求的時(shí)刻;使用第二終端的公鑰對(duì)加密時(shí)間戳進(jìn)行解密,得到請(qǐng)求時(shí)間戳;從數(shù)據(jù)傳輸請(qǐng)求中獲取第二終端的終端標(biāo)識(shí);獲取第一終端上記錄的具有終端標(biāo)識(shí)的記錄時(shí)間戳;若解密得到的請(qǐng)求時(shí)間戳與第一終端上記錄的記錄時(shí)間戳相同,則確定數(shù)據(jù)傳輸請(qǐng)求不合法。
[0085]可選地,在解密加密時(shí)間戳得到請(qǐng)求時(shí)間戳之后,可以從第一終端記錄的歷史信息中查找與該請(qǐng)求時(shí)間戳相同的歷史時(shí)間戳(即上述的記錄時(shí)間戳),若存在該歷史時(shí)間戳,且該歷史時(shí)間戳與請(qǐng)求時(shí)間戳對(duì)應(yīng)的終端標(biāo)識(shí)一致,則確認(rèn)該數(shù)據(jù)傳輸請(qǐng)求不合法;反之,合法。
[0086]在上述實(shí)施例中,為了有效防止第一終端可以被模擬請(qǐng)求攻擊,還可以通過數(shù)據(jù)傳輸請(qǐng)求中的時(shí)間戳對(duì)該數(shù)據(jù)傳輸請(qǐng)求進(jìn)行校驗(yàn)。
[0087]具體地,可以將第二終端的應(yīng)用程序在生成數(shù)據(jù)傳輸請(qǐng)求時(shí)的時(shí)間戳進(jìn)行加密,得到加密時(shí)間戳,將該加密時(shí)間戳隨同數(shù)據(jù)傳輸請(qǐng)求一起發(fā)送至第一終端。
[0088]在上述實(shí)施例中,第一終端在接收到該數(shù)據(jù)傳輸請(qǐng)求之后,數(shù)據(jù)傳輸請(qǐng)求中的加密時(shí)間戳進(jìn)行解密,得到解密后的時(shí)間戳。第一終端對(duì)于接收到的每個(gè)數(shù)據(jù)傳輸請(qǐng)求均執(zhí)行上述的操作,并將解密后的時(shí)間戳和發(fā)送該數(shù)據(jù)傳輸請(qǐng)求的終端標(biāo)識(shí)記錄下來。在每獲取到一個(gè)新的時(shí)間戳?xí)r,從第一終端記錄的時(shí)間戳中查找與該新的時(shí)間戳的終端標(biāo)識(shí)一致的歷史時(shí)間戳,若歷史時(shí)間戳與該新的時(shí)間戳也一致,則認(rèn)為該數(shù)據(jù)傳輸請(qǐng)求為非法請(qǐng)求。
[0089]可選地,若歷史時(shí)間戳與新的時(shí)間戳一致,還可以確認(rèn)該歷史時(shí)間戳對(duì)應(yīng)的歷史數(shù)據(jù)傳輸請(qǐng)求也為非法請(qǐng)求。
[0090]需要說明的是,可以使用RSA算法對(duì)應(yīng)用程序的簽名、時(shí)間戳以及DH算法的公開值作為一個(gè)整體進(jìn)行加密;也可以使用RSA算法分別對(duì)應(yīng)用程序的簽名、時(shí)間戳以及DH算法的公開值進(jìn)行加密,本申請(qǐng)對(duì)此不做限制。
[0091]在另一個(gè)可選的實(shí)施例中,第一終端可以基于應(yīng)用程序的簽名和請(qǐng)求時(shí)間戳的共同驗(yàn)證結(jié)果確定數(shù)據(jù)傳輸請(qǐng)求是否為合法請(qǐng)求。
[0092]具體地,若解密得到的應(yīng)用程序的簽名與第一終端存儲(chǔ)的該應(yīng)用程序的簽名一致、且第一終端上記錄的具有終端標(biāo)識(shí)的記錄時(shí)間戳中不存在與解密得到的請(qǐng)求時(shí)間戳相同的時(shí)間戳,則確定數(shù)據(jù)傳輸請(qǐng)求合法。反之,不合法。
[0093]本發(fā)明上述實(shí)施例中的,第一終端為服務(wù)器,第二終端為客戶端;或第二終端為服務(wù)器,第一終端為客戶端。
[0094]下面以第一終端為服務(wù)器、第二終端為客戶端、應(yīng)用程序?yàn)槲⑿艖?yīng)用為例,結(jié)合圖4詳述本發(fā)明上述實(shí)施例。如圖4所示,該實(shí)施例可以通過如下步驟實(shí)現(xiàn):
[0095]步驟S401:通過微信界面獲取數(shù)據(jù)傳輸指令。
[0096]具體地,用戶可以通過操作安裝在客戶端上微信應(yīng)用的界面生成該指令,上述的操作可以包括點(diǎn)擊操作、長(zhǎng)按操作等。
[0097]步驟S402:獲取微信應(yīng)用的安卓簽名、生成數(shù)據(jù)傳輸請(qǐng)求的請(qǐng)求時(shí)間戳以及DH算法的公開值。
[0098]步驟S403:對(duì)安卓簽名、請(qǐng)求時(shí)間戳和DH算法的公開值進(jìn)行RSA算法加密,得到加密請(qǐng)求。
[0099]步驟S404:對(duì)加密請(qǐng)求進(jìn)行簽名,得到請(qǐng)求簽名。
[0100]步驟S405:將加密請(qǐng)求和請(qǐng)求簽名發(fā)送至微信服務(wù)器。
[0101]步驟S406:微信服務(wù)器通過請(qǐng)求簽名對(duì)加密請(qǐng)求進(jìn)行驗(yàn)證。
[0102]驗(yàn)證方式與上述實(shí)施例中的驗(yàn)證方式一致,在此不再贅述。
[0103]步驟S407:若驗(yàn)證通過,則對(duì)加密請(qǐng)求進(jìn)行解密,得到解密后的安卓簽名、請(qǐng)求時(shí)間戳和DH算法的公開值。
[0104]步驟S408:基于解密后的安卓簽名和請(qǐng)求時(shí)間戳進(jìn)行數(shù)據(jù)傳輸請(qǐng)求驗(yàn)證。
[0105]驗(yàn)證方式與上述實(shí)施例中的驗(yàn)證方式一致,在此不再贅述。
[Ο?Ο?]步驟S409:若驗(yàn)證數(shù)據(jù)傳輸請(qǐng)求為合法請(qǐng)求,則計(jì)算DH算法的公開值對(duì)應(yīng)的共享密鑰。
[0107]步驟S410:服務(wù)器將服務(wù)器的DH算法公開值發(fā)送至客戶端。
[0108]步驟S411:客戶端基于服務(wù)器的DH算法公開值計(jì)算共享密鑰。
[0109]步驟S412:使用共享密鑰加密待傳輸數(shù)據(jù),得到加密傳輸數(shù)據(jù)。
[0110]步驟S413:服務(wù)器將加密傳輸數(shù)據(jù)發(fā)送至客戶端。
[0111]步驟S414:客戶端使用共享密鑰解密加密傳輸數(shù)據(jù)。
[0112]在該實(shí)施例中未示出服務(wù)器與客戶端之間的響應(yīng)數(shù)據(jù)的發(fā)送和接收過程,本申請(qǐng)對(duì)服務(wù)器與客戶端之間的響應(yīng)數(shù)據(jù)的發(fā)送和接收過程不做限定。
[0113]需要說明的是,對(duì)于前述的各方法實(shí)施例,為了簡(jiǎn)單描述,故將其都表述為一系列的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本發(fā)明,某些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作和模塊并不一定是本發(fā)明所必須的。
[0114]通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到根據(jù)上述實(shí)施例的方法可借助軟件加必需的通用硬件平臺(tái)的方式來實(shí)現(xiàn),當(dāng)然也可以通過硬件,但很多情況下前者是更佳的實(shí)施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)(如ROM/RAM、磁碟、光盤)中,包括若干指令用以使得一臺(tái)終端設(shè)備(可以是手機(jī),計(jì)算機(jī),第一終端,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。
[0115]實(shí)施例2
[0116]根據(jù)本發(fā)明實(shí)施例,還提供了一種用于實(shí)施上述數(shù)據(jù)傳輸方法的數(shù)據(jù)傳輸裝置,如圖5所示,該裝置包括:獲取單元51、密鑰處理單元53和加密傳輸單元55。
[0117]其中,獲取單元51用于獲取第二終端發(fā)送的數(shù)據(jù)傳輸請(qǐng)求,其中,數(shù)據(jù)傳輸請(qǐng)求中至少攜帶有使用第二終端的私鑰對(duì)第二終端的第一交換密鑰進(jìn)行加密得到的第一加密數(shù)據(jù)。
[0118]密鑰處理單元53用于使用第二終端的公鑰對(duì)第一加密數(shù)據(jù)進(jìn)行解密得到第一交換密鑰,并根據(jù)第一交換密鑰獲取第一終端與第二終端的共享密鑰。
[0119]加密傳輸單元55用于使用共享密鑰對(duì)待傳輸?shù)臄?shù)據(jù)進(jìn)行加密,得到加密傳輸數(shù)據(jù),并將加密傳輸數(shù)據(jù)發(fā)送給第二終端。
[0120]采用上述實(shí)施例,在使用DH算法交換第二終端和第一終端的交換密鑰(該交換密鑰可以為兩個(gè)終端的DH算法的公開值)時(shí),第二終端用RSA算法加密交換密鑰,即自己的私鑰加密自己的交換密鑰,第一終端用第二終端的公鑰解密該交換密鑰,以得到第二終端的交換密鑰,并獲取第二終端與第一終端的共享密鑰。在上述過程中,攻擊者需首先破解加密后的交換密鑰,然后才能進(jìn)行中間人攻擊,增加了破解難度,通過上述方案提供了數(shù)據(jù)傳輸過程的安全性,解決了現(xiàn)有技術(shù)中現(xiàn)有的加密算法在數(shù)據(jù)傳輸時(shí)安全性差的技術(shù)問題。
[0121]上述DH算法中第二終端A發(fā)送給第一終端B的KjPn即為本申請(qǐng)實(shí)施例中第二終端的第一交換密鑰。第二終端加密第二終端的第一交換密鑰使用的是公開密鑰密碼RSA算法。
[0122]在上述實(shí)施例中,第二終端用自己的私鑰對(duì)DH算法產(chǎn)生的第一交換密鑰(即交換文,或公開值)進(jìn)行加密,生成不可讀取的密文Dsk(即上述實(shí)施例中的第一加密數(shù)據(jù)),然后將第一加密數(shù)據(jù)Dsk傳送給第一終端,第一終端在接收到第一加密數(shù)據(jù)之后,使用第二終端的公鑰進(jìn)行解碼Decrypt運(yùn)算,得到第一交換密鑰。可選地,第一終端在接收到該第一加密數(shù)據(jù)之后,可以使用公鑰對(duì)該第一加密數(shù)據(jù)進(jìn)行簽名校驗(yàn),在校驗(yàn)有效的情況下,解密該第一加密數(shù)據(jù)。
[0123]通過上述實(shí)施例,第二終端使用RSA算法加密傳輸DH算法產(chǎn)生的公開值(即上述實(shí)施例中的第一交換密鑰),攻擊者在攔截該數(shù)據(jù)傳輸請(qǐng)求之后,需要先破解RSA算法,才能進(jìn)行中間人攻擊,增加了破解難度。
[0124]根據(jù)本發(fā)明的上述實(shí)施例,裝置還可以包括如圖6所示的:密鑰加密單元61,用于在將加密傳輸數(shù)據(jù)發(fā)送給第二終端之前,第一終端向第二終端發(fā)送使用第二終端的公鑰對(duì)第一終端的第二密鑰公開值進(jìn)行加密得到的第二加密數(shù)據(jù),其中,第二密鑰公開值用于第二終端獲取共享密鑰。
[0125]裝置還可以包括:數(shù)據(jù)解密單元63,用于在將加密傳輸數(shù)據(jù)發(fā)送給第二終端之后,使用共享密鑰對(duì)加密傳輸數(shù)據(jù)進(jìn)行解密,得到待傳輸?shù)臄?shù)據(jù),其中,共享密鑰是第二終端使用第二終端的私鑰對(duì)第二加密數(shù)據(jù)進(jìn)行解密得到第二密鑰公開值,并根據(jù)第二密鑰公開值獲取到的。
[0126]需要說明的是,上述DH算法的第一終端B發(fā)送給第二終端A的Kb和η即為本申請(qǐng)實(shí)施例中第一終端的第二交換密鑰。
[0127]在上述實(shí)施例中,第一終端向第二終端發(fā)送第一終端的第二交換密鑰時(shí),同樣使用第二終端的公鑰對(duì)第二交換密鑰進(jìn)行加密得到第二加密數(shù)據(jù),將該第二加密數(shù)據(jù)發(fā)送給第二終端。第二終端在接收到該第二加密數(shù)據(jù)之后,使用第二終端的私鑰對(duì)第二加密數(shù)據(jù)進(jìn)行解密,得到第二交換密鑰,并根據(jù)第二交換密鑰獲取共享密鑰(該共享密鑰的獲取采用DH算法中的共享密鑰的算法)。
[0128]通過本發(fā)明的上述實(shí)施例,第二終端和第一終端在交換各自的交換密鑰時(shí),均可以使用RSA算法加密上述兩個(gè)終端的交換密鑰,攻擊者在攔截該數(shù)據(jù)傳輸請(qǐng)求之后,需要先破解RSA算法,才能進(jìn)行中間人攻擊,增加了破解難度。
[0129]進(jìn)一步地,在第二終端和第一終端均獲取共享密鑰之后,可以使用該共享密鑰加密傳輸數(shù)據(jù)。
[0130]具體地,密鑰處理單元可以包括:校驗(yàn)?zāi)K,用于通過第二終端的驗(yàn)證信息校驗(yàn)數(shù)據(jù)傳輸請(qǐng)求的合法性,其中,數(shù)據(jù)傳輸請(qǐng)求還攜帶有第二終端的驗(yàn)證信息;密鑰解密模塊,用于若校驗(yàn)出數(shù)據(jù)傳輸請(qǐng)求為合法請(qǐng)求,則第一終端使用第二終端的公鑰對(duì)第一加密數(shù)據(jù)進(jìn)行解密得到第一交換密鑰。
[0131 ]通過上述實(shí)施例,可以有效驗(yàn)證第二終端的合法性,防止被破解的第二終端訪問第一終端。
[0132]