本發(fā)明涉及客戶端的驗(yàn)證領(lǐng)域,具體涉及一種基于GPU(Graphics Processing Unit,圖形處理器)算法的客戶端驗(yàn)證方法及系統(tǒng)。
背景技術(shù):
直播平臺在運(yùn)營過程中,會對每個(gè)直播頻道的觀看用戶進(jìn)行實(shí)時(shí)統(tǒng)計(jì),以便觀眾用戶能夠了解同時(shí)觀看直播的人數(shù);在此基礎(chǔ)上,直播平臺會對每個(gè)頻道的觀看人數(shù)進(jìn)行排序,將觀看人數(shù)多的頻道推薦至靠前的頻道列表中,以讓更多的用戶來進(jìn)行觀看更精彩的直播。
但是,現(xiàn)有的直播平臺一般使用一條傳輸直播協(xié)議,直播協(xié)議的使用明文會在在網(wǎng)絡(luò)中傳輸,Hack攻擊者只需要分析清楚一個(gè)在線用戶與服務(wù)器的交互協(xié)議后,通過在服務(wù)器上偽造同樣的協(xié)議,即可實(shí)現(xiàn)偽造用戶觀看的目的,進(jìn)而能夠?qū)χ付l道進(jìn)行刷人氣。因此,現(xiàn)有的直播平臺統(tǒng)計(jì)的直播頻道觀看人數(shù)不夠準(zhǔn)確,進(jìn)而降低了直播頻道的推薦質(zhì)量。
技術(shù)實(shí)現(xiàn)要素:
針對現(xiàn)有技術(shù)中存在的缺陷,本發(fā)明解決的技術(shù)問題為:對具備GPU的客戶端進(jìn)行精準(zhǔn)驗(yàn)證,本發(fā)明能夠有效防止Hack對指定頻道進(jìn)行刷人氣,保證了直播平臺統(tǒng)計(jì)的直播頻道觀看人數(shù)的準(zhǔn)確度、以及直播平臺推薦的直播頻道的質(zhì)量。
為達(dá)到以上目的,本發(fā)明提供的種基于GPU算法的客戶端驗(yàn)證方法,包括以下步驟:
步驟A、在客戶端中使用非對稱加密算法生成客戶公鑰和客戶私鑰,在服務(wù)端中使用非對稱加密算法生成服務(wù)公鑰和服務(wù)私鑰;客戶端將服務(wù)公鑰和客戶私鑰通過非對稱加密算法加密生成通信key,服務(wù)端將客戶公鑰和服務(wù)私鑰通過非對稱加密算法加密生成通信key,轉(zhuǎn)到步驟B;
步驟B:服務(wù)端生成驗(yàn)證比對數(shù)據(jù),每對驗(yàn)證比對數(shù)據(jù)包括指定像素的圖片計(jì)算數(shù)據(jù)、以及通過GPU算法對圖片計(jì)算數(shù)據(jù)進(jìn)行計(jì)算得到的圖片驗(yàn)證數(shù)據(jù);服務(wù)端將圖片計(jì)算數(shù)據(jù)通過通信key的方式下發(fā)至客戶端;客戶端通過GPU算法將圖片計(jì)算數(shù)據(jù)進(jìn)行計(jì)算后,將計(jì)算得到的圖片驗(yàn)證數(shù)據(jù)通過通信key的方式上傳至服務(wù)端,轉(zhuǎn)到步驟C;
步驟C:服務(wù)端判斷下發(fā)的圖片計(jì)算數(shù)據(jù)對應(yīng)的本地圖片驗(yàn)證數(shù)據(jù),是否與接收的圖片驗(yàn)證數(shù)據(jù)相同,若是,則確定當(dāng)前客戶端為正??蛻舳?,否則確定當(dāng)前客戶端為異??蛻舳恕?/p>
在上述技術(shù)方案的基礎(chǔ)上步驟B中所述圖片驗(yàn)證數(shù)據(jù)的計(jì)算方法為:采用GPU算法同時(shí)對圖片計(jì)算數(shù)據(jù)的每個(gè)像素A的R、G、B值進(jìn)行計(jì)算,得到圖片驗(yàn)證數(shù)據(jù);
對R值的計(jì)算規(guī)則為:R2=R1·X1+Y1,其中R2為計(jì)算后像素A的R值,R1為計(jì)算前像素A的R值;
對G值的計(jì)算規(guī)則為:G2=G1·X2+Y2,其中G2為計(jì)算后像素A的G值,G1為計(jì)算前像素A的G值;
對B值的計(jì)算規(guī)則為:B2=B1+Y3,其中B2為計(jì)算后像素A的G值,B1為計(jì)算前像素A的G值;
步驟B中所述通過通信key的方式的具體流程為:發(fā)送端將傳輸數(shù)據(jù)通過對稱加密算法進(jìn)行加密后發(fā)送至接收端,加密key為步驟A中的通信key,接收端將加密的傳輸數(shù)據(jù)進(jìn)行解密后,還原傳輸數(shù)據(jù);傳輸數(shù)據(jù)為服務(wù)端下發(fā)的圖片計(jì)算數(shù)據(jù)、或者客戶端上傳的圖片驗(yàn)證數(shù)據(jù)。
在上述技術(shù)方案的基礎(chǔ)上步驟A中客戶端將服務(wù)公鑰和客戶私鑰加密生成通信key之前,需要獲取并解密經(jīng)服務(wù)端采用對稱加密算法加密的服務(wù)公鑰;服務(wù)端將客戶公鑰和服務(wù)私鑰加密生成通信key之前,也需要獲取并解密經(jīng)客戶端采用對稱加密算法加密的客戶公鑰;客戶公鑰和服務(wù)公鑰加密的key相同;
加密的key的設(shè)置方法為:在客戶端中生成1個(gè)32位的隨機(jī)數(shù)X、并發(fā)送至服務(wù)端;在服務(wù)端中生成1個(gè)32位的隨機(jī)數(shù)Y、并發(fā)送至客戶端;服務(wù)端和客戶端均對X和Y使用相同的哈希算法進(jìn)行計(jì)算,生成新的隨機(jī)數(shù)C,C即為加密的key。
在上述技術(shù)方案的基礎(chǔ)上步驟B中所述驗(yàn)證比對數(shù)據(jù)由服務(wù)端預(yù)先生成,生成數(shù)量為至少300對;所述下發(fā)的圖片計(jì)算數(shù)據(jù)來源于:在所有驗(yàn)證比對數(shù)據(jù)中隨機(jī)抽取的1對驗(yàn)證比對數(shù)據(jù),該對驗(yàn)證比對數(shù)據(jù)中的圖片計(jì)算數(shù)據(jù)即為下發(fā)的圖片計(jì)算數(shù)據(jù)。
在上述技術(shù)方案的基礎(chǔ)上步驟B中服務(wù)端下發(fā)圖片計(jì)算數(shù)據(jù)之前,需要對圖片計(jì)算數(shù)據(jù)采用加密算法進(jìn)行加密;客戶端上傳圖片驗(yàn)證數(shù)據(jù)之前,也需要對圖片驗(yàn)證數(shù)據(jù)進(jìn)行加密。
與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點(diǎn)在于:
參見步驟B和C可知,采用本發(fā)明的服務(wù)端對客戶端進(jìn)行驗(yàn)證時(shí),服務(wù)端和客戶端均需要將原始的圖片計(jì)算數(shù)據(jù),根據(jù)GPU算法計(jì)算,才能得到正確的圖片驗(yàn)證數(shù)據(jù)。本發(fā)明限制了客戶端的使用需求,即客戶端必須具備GPU,而現(xiàn)有技術(shù)中偽造協(xié)議的服務(wù)器上不具備GPU,即服務(wù)器無法計(jì)算本發(fā)明闡述的圖片驗(yàn)證數(shù)據(jù)。因此,本發(fā)明能夠精準(zhǔn)驗(yàn)證客戶端是否為正常客戶端,進(jìn)而有效防止了Hack對指定頻道進(jìn)行刷人氣,保證了直播平臺統(tǒng)計(jì)的直播頻道觀看人數(shù)的準(zhǔn)確度、以及直播平臺推薦的直播頻道的質(zhì)量。
進(jìn)一步,參見步驟A可知,本發(fā)明的服務(wù)端和客戶端會通過通信key傳輸數(shù)據(jù),而通信key是客戶端和服務(wù)端自行協(xié)商得到,并未通過網(wǎng)絡(luò)傳輸,顯著增加了Hack得知通信key的難度,保證了客戶端與服務(wù)端傳輸數(shù)據(jù)的安全。
進(jìn)一步,參見步驟A可知,本發(fā)明的通信key根據(jù)客戶端和服務(wù)端產(chǎn)生的32位隨機(jī)數(shù)得到,進(jìn)而使得每個(gè)客戶端的通信key均不相同,避免Hack知曉1臺客戶端的通信key后偽造多臺客戶端。
進(jìn)一步,參見步驟B可知,本發(fā)明的服務(wù)端會預(yù)先生成至少300對驗(yàn)證比對數(shù)據(jù),服務(wù)端下發(fā)的圖片計(jì)算數(shù)據(jù)從所有驗(yàn)證比對數(shù)據(jù)中隨機(jī)抽取,進(jìn)而使得下發(fā)每個(gè)客戶端的圖片計(jì)算數(shù)據(jù)均不相同,避免Hack知曉1臺客戶端圖片計(jì)算數(shù)據(jù)后偽造多臺客戶端;而且驗(yàn)證比對數(shù)據(jù)預(yù)先生成會減小服務(wù)端工作的壓力,提高服務(wù)端的工作效率。
進(jìn)一步,參見步驟B可知,本發(fā)明的服務(wù)端下發(fā)數(shù)據(jù)之前、以及客戶端上傳數(shù)據(jù)之前,均需要對數(shù)據(jù)進(jìn)行加密,進(jìn)一步保證了數(shù)據(jù)傳輸?shù)陌踩?/p>
附圖說明
圖1為本發(fā)明實(shí)施例中基于GPU算法的客戶端驗(yàn)證方法的流程圖。
具體實(shí)施方式
以下結(jié)合附圖及實(shí)施例對本發(fā)明作進(jìn)一步詳細(xì)說明。
參見圖1所示,本發(fā)明實(shí)施例中的基于GPU算法的客戶端驗(yàn)證方法,包括以下步驟:
S1:在客戶端中使用非對稱加密算法(RSA加密算法)生成配對的客戶公鑰和客戶私鑰;將客戶公鑰采用對稱加密算法(AES加密算法,Advanced Encryption Standard,高級加密標(biāo)準(zhǔn))加密后,發(fā)送至服務(wù)端;在服務(wù)端中使用非對稱加密算法生成配對的服務(wù)公鑰和服務(wù)私鑰,將服務(wù)公鑰采用對稱加密算法加密后,發(fā)送至客戶端,客戶公鑰和服務(wù)公鑰加密的key相同、且預(yù)先設(shè)置,轉(zhuǎn)到S2。
S1中加密的key的設(shè)置方法為:
S101:在客戶端中生成1個(gè)32位的隨機(jī)數(shù)X、并發(fā)送至服務(wù)端;在服務(wù)端中生成1個(gè)32位的隨機(jī)數(shù)Y、并發(fā)送至客戶端,轉(zhuǎn)到S102。
S102:服務(wù)端和客戶端均對X和Y使用相同的哈希算法進(jìn)行計(jì)算,生成新的隨機(jī)數(shù)C,C即為加密的key。
S2:在客戶端中對加密后的服務(wù)公鑰進(jìn)行解密后,通過非對稱加密算法,將解密后的服務(wù)公鑰和客戶私鑰加密生成通信key;在服務(wù)端中對加密后的客戶公鑰進(jìn)行解密后,通過非對稱加密算法,將解密后的客戶公鑰和服務(wù)私鑰加密生成通信key;客戶公鑰和服務(wù)公鑰解密的key均與S2中加密的key相同,轉(zhuǎn)到S3。
S3:服務(wù)端預(yù)先生成至少300對(本實(shí)施例中為10000對)驗(yàn)證比對數(shù)據(jù),每對驗(yàn)證比對數(shù)據(jù)包括指定像素(128·128)的圖片計(jì)算數(shù)據(jù)、以及通過GPU算法對圖片計(jì)算數(shù)據(jù)進(jìn)行計(jì)算得到的圖片驗(yàn)證數(shù)據(jù)。服務(wù)端隨機(jī)抽取1對驗(yàn)證比對數(shù)據(jù),將驗(yàn)證比對數(shù)據(jù)中的圖片計(jì)算數(shù)據(jù)采用MD5加密算法(Message Digest Algorithm MD5,消息摘要算法第五版)加密后,通過通信key的方式將圖片計(jì)算數(shù)據(jù)下發(fā)至客戶端,轉(zhuǎn)到S4。
GPU與CPU的區(qū)別在于:CPU雖然有多核,但總數(shù)沒有超過兩位數(shù),每個(gè)核都有足夠大的緩存和足夠多的數(shù)字和邏輯運(yùn)算單元,并輔助有很多加速分支判斷甚至更復(fù)雜的邏輯判斷的硬件;GPU的核數(shù)遠(yuǎn)超CPU,被稱為眾核,每個(gè)核擁有的緩存大小相對小,數(shù)字邏輯運(yùn)算單元也少而簡單,因此GPU能夠良好的應(yīng)用于數(shù)值分析、海量數(shù)據(jù)處理、金融分析等領(lǐng)域。
S4:客戶端將圖片計(jì)算數(shù)據(jù)進(jìn)行解密后,生成一張圖片,通過GPU算法將該圖片進(jìn)行計(jì)算后,生成一張新的圖片,新的圖片數(shù)據(jù)即為圖片驗(yàn)證數(shù)據(jù);將圖片驗(yàn)證數(shù)據(jù)采用MD5加密算法加密后,通過通信key的方式將圖片驗(yàn)證數(shù)據(jù)上傳至服務(wù)端,轉(zhuǎn)到S5。
S5:服務(wù)端將圖片驗(yàn)證數(shù)據(jù)解密后,判斷接收的圖片驗(yàn)證數(shù)據(jù),是否與S3中抽取的驗(yàn)證比對數(shù)據(jù)中的本地圖片驗(yàn)證數(shù)據(jù)相同,若是,則確定當(dāng)前客戶端為正常客戶端(即合法用戶使用的客戶端),否則確定當(dāng)前客戶端為異??蛻舳?即非法用戶Hack使用的客戶端)。
S3和S4中圖片驗(yàn)證數(shù)據(jù)的計(jì)算方法為:采用GPU算法,同時(shí)(GPU具備并行的處理功能,因此能夠提高計(jì)算效率)對圖片計(jì)算數(shù)據(jù)的每個(gè)像素A的R(RED,紅)、G(GREEN,綠)、B(BLUE,藍(lán))值進(jìn)行計(jì)算,得到圖片驗(yàn)證數(shù)據(jù)。
對R值的計(jì)算規(guī)則為:R2=R1·X1+Y1,其中R2為計(jì)算后像素A的R值,R1為計(jì)算前像素A的R值,X1和Y1可自定義設(shè)置,本實(shí)施例中X1為0.5,Y1為21。
對G值的計(jì)算規(guī)則為:G2=G1·X2+Y2,其中G2為計(jì)算后像素A的G值,G1為計(jì)算前像素A的G值,X2和Y2可自定義設(shè)置,本實(shí)施例中X2為0.7,Y2為-25。
對B值的計(jì)算規(guī)則為:B2=B1+Y3,其中B2為計(jì)算后像素A的G值,B1為計(jì)算前像素A的G值,Y3可自定義設(shè)置,本實(shí)施例中Y3為45。
S3和S4中通過通信key的方式的具體流程為:發(fā)送端(服務(wù)端或者客戶端)將傳輸數(shù)據(jù)(服務(wù)端下發(fā)的圖片計(jì)算數(shù)據(jù)、或者客戶端上傳的圖片驗(yàn)證數(shù)據(jù))通過對稱加密算法進(jìn)行加密后(加密key即為S2中的通信key),發(fā)送至接收端。接收端(服務(wù)端或者客戶端)將加密的傳輸數(shù)據(jù)進(jìn)行解密,解密key即為S2中的通信key(若解密失敗則證明接收端沒有通信Key,即接收端非法),還原傳輸數(shù)據(jù)。
本發(fā)明實(shí)施例中的基于GPU算法的客戶端驗(yàn)證系統(tǒng),包括分別位于客戶端和服務(wù)端上的通信key生成模塊、位于服務(wù)端上的比對數(shù)據(jù)生成模塊、圖片計(jì)算數(shù)據(jù)下發(fā)模塊和圖片驗(yàn)證數(shù)據(jù)比對模塊、以及位于客戶端上的圖片驗(yàn)證數(shù)據(jù)計(jì)算模塊。
客戶端的通信key生成模塊用于:使用非對稱加密算法生成客戶公鑰和客戶私鑰,將服務(wù)公鑰和客戶私鑰通過非對稱加密算法加密生成通信key。
服務(wù)端的通信key生成模塊用于:在服務(wù)端中使用非對稱加密算法生成服務(wù)公鑰和服務(wù)私鑰;將客戶公鑰和服務(wù)私鑰通過非對稱加密算法加密生成通信key。
比對數(shù)據(jù)生成模塊用于:生成驗(yàn)證比對數(shù)據(jù),每對驗(yàn)證比對數(shù)據(jù)包括指定像素的圖片計(jì)算數(shù)據(jù)、以及通過GPU算法對圖片計(jì)算數(shù)據(jù)進(jìn)行計(jì)算得到的圖片驗(yàn)證數(shù)據(jù)。
圖片計(jì)算數(shù)據(jù)下發(fā)模塊用于:將驗(yàn)證比對數(shù)據(jù)中的圖片計(jì)算數(shù)據(jù)通過通信key的方式下發(fā)至客戶端的圖片驗(yàn)證數(shù)據(jù)計(jì)算模塊。
圖片驗(yàn)證數(shù)據(jù)計(jì)算模塊用于:客戶端通過GPU算法將圖片計(jì)算數(shù)據(jù)進(jìn)行計(jì)算后,將計(jì)算得到的圖片驗(yàn)證數(shù)據(jù)通過通信key的方式上傳至服務(wù)端的圖片驗(yàn)證數(shù)據(jù)比對模塊。
圖片驗(yàn)證數(shù)據(jù)比對模塊用于:判斷圖片計(jì)算數(shù)據(jù)下發(fā)模塊下發(fā)的圖片計(jì)算數(shù)據(jù)對應(yīng)的本地圖片驗(yàn)證數(shù)據(jù),是否與圖片驗(yàn)證數(shù)據(jù)計(jì)算模塊上傳的圖片驗(yàn)證數(shù)據(jù)相同,若是,則確定圖片驗(yàn)證數(shù)據(jù)計(jì)算模塊所屬的客戶端為正常客戶端,否則確定所述所屬的客戶端為異??蛻舳恕?/p>
比對數(shù)據(jù)生成模塊和圖片驗(yàn)證數(shù)據(jù)計(jì)算模塊計(jì)算圖片驗(yàn)證數(shù)據(jù)的工作流程為:采用GPU算法同時(shí)對圖片計(jì)算數(shù)據(jù)的每個(gè)像素A的R、G、B值進(jìn)行計(jì)算,得到圖片驗(yàn)證數(shù)據(jù):
對R值的計(jì)算規(guī)則為:R2=R1·X1+Y1,其中R2為計(jì)算后像素A的R值,R1為計(jì)算前像素A的R值;
對G值的計(jì)算規(guī)則為:G2=G1·X2+Y2,其中G2為計(jì)算后像素A的G值,G1為計(jì)算前像素A的G值;
對B值的計(jì)算規(guī)則為:B2=B1+Y3,其中B2為計(jì)算后像素A的G值,B1為計(jì)算前像素A的G值。
圖片計(jì)算數(shù)據(jù)下發(fā)模塊和圖片驗(yàn)證數(shù)據(jù)計(jì)算模塊通過通信key的方式的工作流程為:發(fā)送端將傳輸數(shù)據(jù)通過對稱加密算法進(jìn)行加密后發(fā)送至接收端,加密key為通信key生成模塊中的通信key,接收端將加密的傳輸數(shù)據(jù)進(jìn)行解密后,還原傳輸數(shù)據(jù);傳輸數(shù)據(jù)為圖片計(jì)算數(shù)據(jù)下發(fā)模塊下發(fā)的圖片計(jì)算數(shù)據(jù)、或者圖片驗(yàn)證數(shù)據(jù)計(jì)算模塊上傳的圖片驗(yàn)證數(shù)據(jù)。
客戶端的通信key生成模塊將服務(wù)公鑰和客戶私鑰加密生成通信key之前,需要獲取并解密經(jīng)服務(wù)端采用對稱加密算法加密的服務(wù)公鑰;所述服務(wù)端的通信key生成模塊將客戶公鑰和服務(wù)私鑰加密生成通信key之前,需要獲取并解密經(jīng)客戶端采用對稱加密算法加密的客戶公鑰;客戶公鑰和服務(wù)公鑰加密的key相同。
加密的key的設(shè)置方法為:客戶端的通信key生成模塊生成1個(gè)32位的隨機(jī)數(shù)X、并發(fā)送至服務(wù)端;服務(wù)端的通信key生成模塊生成1個(gè)32位的隨機(jī)數(shù)Y、并發(fā)送至客戶端;服務(wù)端和客戶端的通信key生成模塊均對X和Y使用相同的哈希算法進(jìn)行計(jì)算,生成新的隨機(jī)數(shù)C,C即為加密的key。
所述比對數(shù)據(jù)生成模塊生成的驗(yàn)證比對數(shù)據(jù)的數(shù)量為至少300對;所述圖片計(jì)算數(shù)據(jù)下發(fā)模塊下發(fā)的圖片計(jì)算數(shù)據(jù)來源于:在所有驗(yàn)證比對數(shù)據(jù)中隨機(jī)抽取的1對驗(yàn)證比對數(shù)據(jù),該對驗(yàn)證比對數(shù)據(jù)中的圖片計(jì)算數(shù)據(jù)即為下發(fā)的圖片計(jì)算數(shù)據(jù)。
所述圖片計(jì)算數(shù)據(jù)下發(fā)模塊下發(fā)圖片計(jì)算數(shù)據(jù)之前,需要對圖片計(jì)算數(shù)據(jù)采用加密算法進(jìn)行加密;所述圖片驗(yàn)證數(shù)據(jù)計(jì)算模塊上傳圖片驗(yàn)證數(shù)據(jù)之前,也需要對圖片驗(yàn)證數(shù)據(jù)進(jìn)行加密。
進(jìn)一步,本發(fā)明不局限于上述實(shí)施方式,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也視為本發(fā)明的保護(hù)范圍之內(nèi)。本說明書中未作詳細(xì)描述的內(nèi)容屬于本領(lǐng)域?qū)I(yè)技術(shù)人員公知的現(xiàn)有技術(shù)。