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