本申請涉及數據安全技術領域,尤其涉及數據發送、接收方法及裝置。
背景技術:
如今,各電信運營商平臺、互聯網應用平臺以及云計算平臺等都在逐步開放自身具有的能力,開發者們可以利用這些能力開放平臺更好地進行創造開發。例如,電信運營商能力開放平臺在整合并且利用現有電信IMS(IP多媒體子系統)、ISAG(綜合業務接入網關)核心網資源的基礎上,采用統一的多層級的開放接口來開放電信能力,開發者利用上述能力可以不斷創造出更好的商業應用,并向用戶提供更優質的服務。
針對機器人開發與設計而言,利用上述能力開放平臺能夠不斷推動機器人技術的發展以及人工智能研究的不斷深入,從而能夠更高效地設計出能夠完成特定任務的機器人。
在某些特定的應用場景下,為保證通信安全,機器人與能力開放平臺需進行加密通信。但是,已有通信加密方式都比較常規,一旦使用的加密密鑰被破解,整個通信過程就會存在安全風險。
技術實現要素:
本申請實施例提供一種數據發送、接收方法及裝置,用以在機器人與云端設備之間進行通信時,提升加密通信的穩定性。
本申請實施例提供一種數據發送方法,包括:
根據預設的密鑰生成算法,動態生成新的本端公鑰和新的本端私鑰;
利用原本端私鑰對第一數據包生成數字簽名;所述第一數據包包括:待傳輸數據和所述新的本端公鑰;
將所述原本端私鑰替換為所述新的本端私鑰;
利用隨機生成的對稱密鑰加密所述第一數據包,并利用對端公鑰加密所述對稱密鑰;
將所述數字簽名、加密后的第一數據包以及加密后的對稱密鑰發送至對端。
進一步可選地,本端為機器人,所述對端為所述機器人與云端設備之間的代理服務器;或者,本端為機器人與云端設備之間的代理服務器,所述對端為所述機器人。
進一步可選地,在本端為所述代理服務器時,所述代理服務器基于默認密鑰和令牌機制與所述機器人建立加密通信通道。
進一步可選地,所述代理服務器基于默認密鑰和令牌機制與所述機器人建立加密通信通道,包括:所述代理服務器根據所述機器人的注冊信息,將所述機器人的ID加入白名單;所述代理服務器將所述默認密鑰發送至所述機器人,以供所述機器人生成第一令牌;所述代理服務器接收所述機器人發送的所述機器人的公鑰以及所述機器人基于所述默認密鑰生成的所述第一令牌;所述代理服務器根據所述白名單中所述機器人的ID、所述默認密鑰以及所述第一令牌,確定所述機器人為合法身份,并保存所述機器人的公鑰;所述代理服務器發送所述代理服務器的公鑰至所述機器人,并確定所述機器人成功接收所述代理服務器的公鑰。
本申請實施例提供一種數據接收方法,包括:
接收對端發送的數字簽名、加密后的第一數據包以及加密后的對稱密鑰;
根據原對端公鑰對所述數字簽名進行簽名驗證;
若所述數字簽名通過簽名驗證,利用原本端私鑰解密所述加密后的對稱密鑰,以獲得對稱密鑰;
利用所述對稱密鑰解密所述加密后的第一數據包,以獲得第一數據包;所述第一數據包包括待傳輸數據和新的對端公鑰;
將所述原對端公鑰替換為所述新的對端公鑰。
進一步可選地,所述方法還包括:根據預設的密鑰生成算法,動態生成新的本端公鑰和新的本端私鑰;以及在利用原本端私鑰解密所述加密后的對稱密鑰之后,將所述原本端私鑰替換為所述新的本端私鑰。
進一步可選地,所述第一數據包還包括:驗證參數;所述方法還包括:根據所述驗證參數,對所述待傳輸數據進行合法性驗證;若所述合法性驗證通過,則將所述待傳輸數據發送至云端設備或對端。
進一步可選地,所述驗證參數包括:所述對端生成的令牌、所述對端生成的隨機數以及時間戳;所述根據所述驗證參數,對所述待傳輸數據進行合法性驗證,包括:驗證在所述時間戳所表征的時間范圍內,所述對端生成的隨機數與本端生成的隨機數的一致性;驗證所述對端生成的令牌是否在有效期。
本申請實施例還提供一種數據發送裝置,包括:
密鑰更新模塊,用于根據預設的密鑰生成算法,動態生成新的本端公鑰和新的本端私鑰;以及,將原本端私鑰替換為所述新的本端私鑰;
簽名模塊,用于利用原本端私鑰對第一數據包生成數字簽名;所述第一數據包包括:待傳輸數據和所述新的本端公鑰;
加密模塊,用于利用隨機生成的對稱密鑰加密所述第一數據包,并利用對端公鑰加密所述對稱密鑰;
數據發送模塊,用于將所述數字簽名、加密后的第一數據包以及加密后的對稱密鑰發送至對端。
本申請實施例還提供一種數據接收裝置,包括:
數據接收模塊,用于接收對端發送的數字簽名、加密后的第一數據包以及加密后的對稱密鑰;
驗簽模塊,用于根據原對端公鑰對所述數字簽名進行簽名驗證;
解密模塊,用于在所述數字簽名通過簽名驗證時,利用原本端私鑰解密所述加密后的對稱密鑰,以獲得對稱密鑰,以及利用所述對稱密鑰解密所述加密后的第一數據包,以獲得第一數據包;所述第一數據包包括待傳輸數據和新的對端公鑰;
密鑰更新模塊,用于將所述原對端公鑰替換為所述新的對端公鑰。
本申請實施例提供的數據發送、接收方法及裝置,在數據的發送與接收過程中,動態地產生非對稱的密鑰,增加了通信過程中密鑰被破解的難度,進而增加了通信過程被攻擊的難度,提升了數據通信過程中的安全性。
附圖說明
為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
圖1是本申請實施例提供的一數據發送方法的流程示意圖;
圖2是本申請實施例提供的一數據接收方法的流程示意圖;
圖3是本申請實施例提供的機器人向代理服務器發送數據的流程示意圖;
圖4是本申請實施例提供的代理服務器向機器人發送數據的流程示意圖;
圖5是本申請實施例提供的機器人與代理服務器建立加密通信通道的流程示意圖;
圖6是本申請實施例提供的一種數據發送裝置的結構示意圖;
圖7是本申請實施例提供的一種數據接收裝置的結構示意圖;
圖8是本申請實施例提供的另一數據接收裝置的結構示意圖;
圖9是本申請實施例提供的另一數據接收裝置的結構示意圖。
具體實施方式
為使本發明實施例的目的、技術方案和優點更加清楚,下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
針對現有機器人應用場景中存在的通信安全問題,本申請實施例提供一種解決方案,核心原理是:在數據的發送與接收過程中,動態地產生非對稱的密鑰,增加了通信過程中密鑰被破解的難度,進而增加了通信過程被攻擊的難度,提升了數據通信過程中的安全性。
以下部分將結合圖1以及圖2對機器人應用場景中的數據發送以及數據接收方法進行詳細闡述。
圖1是本申請實施例提供的一數據發送方法的流程示意圖,結合圖1,該方法包括如下的步驟:
步驟101、根據預設的密鑰生成算法,動態生成新的本端公鑰和新的本端私鑰。
步驟102、利用原本端私鑰對第一數據包生成數字簽名;所述第一數據包包括:待傳輸數據和所述新的本端公鑰。
步驟103、將所述原本端私鑰替換為所述新的本端私鑰。
步驟104、利用隨機生成的對稱密鑰加密所述第一數據包,并利用對端公鑰加密所述對稱密鑰。
步驟105、將所述數字簽名、加密后的第一數據包以及加密后的對稱密鑰發送至對端。
針對步驟101,本端與對端是通信過程中相對的兩端。在數據發送過程中,本端是數據發送端,對端是數據接收端。例如,在客戶端與服務端進行通信的過程中,若本端為客戶端,則對端為服務端;若本端為服務端,則對端為客戶端。
本端公鑰以及本端私鑰是本端在數據傳輸過程中,對所需傳輸的數據進行加密解密使用的非對稱密鑰。本端私鑰,是本端的私有密鑰,只有本端可以保管。本端公鑰,是本端的公開密鑰,可以交由對端進行保管以使得對端能夠解密本端采用本端私鑰加密的數據。
在本實施例中,本端每次發送數據時,可根據預設的密鑰生成算法,動態生成新的本端公鑰和新的本端私鑰。所述預設的密鑰生成算法可以是RSA算法(非對稱加密算法)。新的本端公鑰和新的本端私鑰,不同于本端保存的原本端公鑰和原本端私鑰。
針對步驟102,第一數據包,包括本端需要向對端傳輸的數據以及上一步驟中生成的新的本端公鑰。為便于描述和區分,將本端需要向對端傳輸的數據稱為待傳輸數據。其中,通過第一數據包將新的本端公鑰發送至對端,可便于對端對下次發送的數據進行解密。為保證第一數據包在傳輸過程中的安全性以及完整性,本端利用原本端私鑰對第一數據包生成數字簽名。數字簽名能夠保證數據傳輸的完整性,同時對于數據接收者而言,也可對數據發送者進行身份認證。
在對第一數據包進行簽名時,首先獲取第一數據包的摘要信息,再用原本端私鑰對該摘要信息進行加密。對端在接收到本端的數字簽名后,采用預先保存的原本端公鑰進行解密獲得摘要信息;若對端能夠成功解密數字簽名,則對端可確定該數字簽名確實是由本端生成的。
針對步驟103,采用原本端私鑰對第一數據包進行簽名之后,采用步驟101中生成的新的本端私鑰替換原本端私鑰。
在本申請實施例的技術方案中,本端私鑰和本端公鑰是動態更新的,每一次通信過程都會使用上一次通信過程產生的新的本端公鑰和本端私鑰進行數據加密和解密,并且還會產生新的本端公鑰和新的本端私鑰以便于在下次通信過程中使用新的公鑰和私鑰進行數據加密和解密,從而增加了通信過程被攻擊的難度。其中,上一次通信過程產生的新的本端公鑰和本端私鑰,實際上為本次通信過程中的原本端公鑰和原本端私鑰。
針對步驟104,對稱密鑰是本端隨機產生的,因此其它設備非法保管該隨機生成的對稱密鑰的可能性較低,因此,采用隨機產生的對稱密鑰對第一數據包進行加密可進一步增加數據傳輸過程中的安全性。對端在接收到利用隨機生成的對稱密鑰加密的第一數據包之后,需采用隨機生成的對稱密鑰對加密后的第一數據包進行解密。
為保證對端能成功解密加密后的第一數據包,本端需將該隨機生成的對稱密鑰發送至對端。為防止在發送該隨機生成的對稱的密鑰的過程中遭到惡意截獲,從而使得待第一數據包遭到破壞或盜取,本端采用對端的公鑰對該隨機生成的對稱的密鑰進行加密。由于采用對端公鑰加密的數據只有對端的私鑰才能解密,且對端私鑰僅僅由對端進行保管,因此避免了該隨機生成的對稱的密鑰被惡意截獲之后用惡意篡改或偷盜第一數據包的可能性。
針對步驟105,將數字簽名、加密后的第一數據包以及加密后的對稱密鑰發送至對端,從而對端在接收到上述數據之后,根據數字簽名進行簽名驗證,在驗證通過之后,解密得到對稱密鑰進而解密第一數據包并獲取第一數據包中的數據。
本申請實施例提供的數據發送方法,在數據的發送過程中,動態地產生非對稱的密鑰,使得每次數據發送過程都可以使用新的私鑰進行數字簽名,并通過隨機生成的對稱密鑰進行數據加密,增加了非法設備破解密鑰的難度,增加了通信過程被攻擊的難度,提升了數據發送過程的安全性。
在本申請實施例的以上或以下實施例中,可選的,可采用RSA算法動態生成公鑰和新的私鑰,以下部分對RSA算法進行簡單的介紹。
RSA算法是一種非對稱密碼算法,該算法需要一對密鑰,即公鑰和私鑰,使用其中一個加密,并用另一個解密。在RSA算法中,若A對所述傳輸的數據采用私鑰加密,則B只能通過與該私鑰配對的公鑰才能對經該私鑰加密的數據進行解密,這種加密方式能夠保證B接收到的數據確實是由A發送的。若A對所述傳輸的數據采用公鑰加密,則B只能通過與該公鑰配對的私鑰才能對經該公鑰加密的數據進行解密,這種加密方式能夠保證A發送的數據只能被B接收到。
RSA的算法涉及三個參數,n、e1、e2,其中,e1和e2是一對相關的值。e1的取值可以任意取,但要求e1與(p-1)*(q-1)互質。對e2進行取值時,要求(e2*e1)mod((p-1)*(q-1))=1。其中,p、q是任意兩個大質數,n是兩個大質數p、q的積,n的二進制表示密鑰長度。(n,e1),(n,e2)是一對秘鑰,其中(n,e1)為公鑰,(n,e2)為私鑰。設A為明,B為密文,則私鑰加密時A=B^e2mod n;公鑰解密時,B=A^e1mod n,其中,mod為求余函數。
可選的,在本申請的上述實施例中,利用隨機生成的對稱密鑰加密第一數據包,可通過序列加密算法實現。
在序列加密算法中,加密第一數據包時,首先通過密鑰發生器輸出一組隨機位序列Kl,K2,…,Ki,該隨機位序列即隨機生成的對稱密鑰。將待加密的第一數據包的明文位序列Pl,P2,…,Pi與對稱密鑰Kl,K2,…,Ki進行異或運算,即可得到加密后的第一數據包的密文序列Ci=Pi+Ki。
解密時,利用加密后的第一數據包的密文序列Ci=Pi+Ki與該對稱密鑰Kl,K2,…,Ki進行異或運算即可得到第一數據包的明文序列Pi=Ci+Ki。本實施例中通過隨機生成的對稱密鑰對第一數據包進行加密,不存在數據擴展和錯誤傳播,實時性好,且加密解密容易實現。
圖2是本申請實施例提供的一數據接收方法的流程示意圖,結合圖2,該方法包括如下的步驟:
步驟201、接收對端發送的數字簽名、加密后的第一數據包以及加密后的對稱密鑰。
步驟202、根據原對端公鑰對所述數字簽名進行簽名驗證。
步驟203、若所述數字簽名通過簽名驗證,利用原本端私鑰解密所述加密后的對稱密鑰,以獲得對稱密鑰。
步驟204、利用所述對稱密鑰解密所述加密后的第一數據包,以獲得第一數據包;所述第一數據包包括待傳輸數據和新的對端公鑰。
步驟205、將所述原對端公鑰替換為所述新的對端公鑰。
針對步驟201,本端接收到的對端發送的數據包括數字簽名、加密后的第一數據以及加密后的對稱的密鑰。
針對步驟202,在接收到上述數據之后,本端首先應確定數據是否是對端發送的,確定方法可以通過對接收到的數字簽名進行簽名驗證實現。
由于對端發送的數字簽名是用對端的原對端私鑰加密的,若本端能用保存在本地的原對端公鑰對該數字簽名成功解密,則可證明接收到的數據確實是由對端發送的。進一步可選地,本端還可根據接收到的第一數據包進行計算產生一個摘要信息,對比解密獲得的摘要信息與計算得到的摘要信息的一致性。如果二者相同,則說明本端收到的第一數據包是完整的,在傳輸過程中沒有被修改,否則說明第一數據包被修改過。
針對步驟203,數字簽名通過驗證之后,進一步需解密所接收到的加密后的第一數據包。在解密之前,需要預先獲取用于解密第一數據包的對稱密鑰。由于接收到的加密后的對稱密鑰是對端利用原本端公鑰進行加密的,因此,本端可以用原本端私鑰進行解密得到對稱密鑰。
針對步驟204,利用上一步驟中獲得的對稱密鑰,解密加密后的第一數據包。解密后得到第一數據包所包括的待傳輸數據和新的對端公鑰。
針對步驟205,本端以解密得到的第一數據包中的新的對端公鑰更新本端保存的原對端公鑰,實現對端的非對稱密鑰的動態更新。當本端下一次向對端發送數據時,可以采用新的對端公鑰對數據進行加密,當下一次接收到對端發送的加密數據時,可以用該新的對端公鑰進行解密。
進一步可選地,承接于上述實施例,本端還可執行如下的步驟:
步驟206、根據預設的密鑰生成算法,動態生成新的本端公鑰和新的本端私鑰;
步驟207、在利用保存的原本端私鑰解密所述加密后的對稱密鑰之后,將所述原本端私鑰替換為所述新的本端私鑰。
上述步驟中,動態生成新的本端公鑰和新的本端私鑰可以采用RSA算法實現。得到新的本端私鑰之后,以新的本端私鑰替換保存的原本端私鑰。在本申請實施例的技術方案中,本端私鑰和本端公鑰是動態更新的,每一次通信過程都會使用上一次通信過程產生的新的本端公鑰和本端私鑰進行數據加密和解密,并且還會產生新的本端公鑰和新的本端私鑰以便于在下次通信過程中使用新的公鑰和私鑰進行數據加密和解密,從而增加了通信過程被攻擊的難度。其中,上一次通信過程產生的新的本端公鑰和本端私鑰,實際上為本次通信過程中保存的原本端公鑰和原本端私鑰。
本申請實施例提供的數據接收方法,在數據的接收過程中,可以動態地更新對端的非對稱的密鑰,使得在每次數據接收過程中都可以使用新的對端公鑰進行簽名驗證,并通過對端傳輸過來的隨機生成的對稱密鑰進行數據解密,增加了非法設備破解密鑰的難度,增加了通信過程被攻擊的難度,提升了數據接收過程的安全性。
接續于上述實施例,在一可選的實施方式中,對端發送的第一數據包還包括:驗證參數。相應地,本端可以根據所述驗證參數,對所述待傳輸數據進行合法性驗證。若合法性驗證通過,則將所述待傳輸數據發送至云端設備或對端。
可選的,驗證參數包括:對端生成的令牌(token)、對端生成的隨機數以及時間戳。基于此,根據所述驗證參數,對所述待傳輸數據進行合法性驗證,包括:驗證在該時間戳所表征的時間范圍內,對端生成的隨機數與本端生成的隨機數的一致性;若一致,則繼續驗證對端生成的令牌(token)是否在有效期,若在有效期,則確定對端發送過來的數據是合法的;若不在有效期或隨機數未通過一致性驗證,則丟棄接收到的第一數據包。
在一可選的實施方式中,本申請實施例提供的數據發送方法以及數據接收方法可以應用于機器人與云端設備的數據共享過程中。
在一種可能的應用場景中,機器人集群與云端設備進行數據共享時,云端設備來自第三方。在這種情況下,來自第三方的云端設備在通信過程中屬被動一方,例如,以該云端設備是能力開放平臺為例,機器人集群與能力開放平臺進行通信時,被動的能力開放平臺可能存在配合上的難度。與此同時,為保證機器人集群與能力開放平臺之間通信安全,通常采用特定的加密方式對通信數據進行加密。例如,能力開放平臺采用https(Hyper Text Transfer Protocol over Secure Socket Layer,超文本傳輸協議通過安全套接字層)雙向加密方式,在通信的過程中,雙方需要不停地對證書進行維護。當機器人集群包含的機器人的數量較多時,不間斷地進行證書維護的難度較大。
為解決上述缺陷,本申請實施例在機器人集群與能力開放平臺之間增設代理服務器,機器人集群中的每個機器人都可通過代理服務器訪問能力開放平臺。在這個過程中,運維人員需維護代理服務器與能力開放平臺之間的加密通信過程,以及機器人集群與代理服務器之間的加密通信過程。由于代理服務器非第三方設備,運維方便且穩定,不耗費較多運維資源。因此,運維人員的運維難度從維護機器人集群與能力開放平臺之間的加密通信過程,降低至維護代理服務器與能力開放平臺之間的加密通信過程,極大縮小了維護成本。與此同時,代理服務器可以監控機器人集群以及能力開放平臺之間的通信過程,并對該通信過程進行分析。基于上述監控以及分析,代理服務器能夠輸出相關的安全通信報告和/或行為報告,更加有利于攔截外來入侵以及危險預警。
在本申請實施例中,本端與對端是相對的概念,在數據發送的場景下,數據發送端是本端,數據接收端是對端。例如,機器人向代理服務器發送數據時,機器人作為本端,代理服務器是對端。代理服務器向機器人發送數據時,代理服務器作為本端,機器人是對端。
同理,在數據接收的場景下,數據接收端是本端,數據發送端是對端。例如,代理服務器接收機器人發送的數據時,代理服務器作為本端,機器人是對端。機器人接收代理服務器發送的數據時,機器人作為本端,代理服務器是對端。以下部分將結合具體的應用場景對本申請實施例的數據發送以及數據接收方法進行詳細闡述。
圖3是本申請實施例提供的機器人向代理服務器發送數據的流程示意圖,結合圖3,該數據發送過程包括如下的步驟:
步驟301、機器人根據預設的密鑰生成算法動態生成新的機器人公鑰和新的機器人私鑰。
步驟302、機器人利用原機器人私鑰對第一數據包生成數字簽名;第一數據包包括:待傳輸數據和新的機器人公鑰。
其中,待傳輸數據可以是機器人欲通過代理服務器向云端設備發送的數據,也可以是機器人在接收到云端設備通過代理服務器發送的數據,向代理服務器反饋回執數據等。
步驟303、機器人將原機器人私鑰替換為新的機器人私鑰。
步驟304、機器人利用隨機生成的對稱密鑰加密第一數據包,并利用代理服務器公鑰加密對稱密鑰。
步驟305、機器人將數字簽名、加密后的第一數據包以及加密后的對稱密鑰發送至代理服務器。
步驟306、代理服務器接收機器人發送的數字簽名、加密后的第一數據包以及加密后的對稱密鑰。
步驟307、代理服務器根據原機器人公鑰對數字簽名進行簽名驗證。
由于機器人發送的數字簽名是用機器人的原機器人私鑰加密的,若代理服務器用保存在本地的原機器人公鑰對該數字簽名成功解密,則可證明接收到的數據確實是由機器人發送的。進一步可選地,代理服務器還可根據接收到的第一數據包進行計算產生一個摘要信息,對比解密獲得的摘要信息與計算得到的摘要信息的一致性。如果二者相同,則說明代理服務器收到的第一數據包是完整的,在傳輸過程中沒有被修改,否則說明第一數據包被修改過。
可選的,在本申請實施例中,代理服務器還可以進一步根據機器人發送數據時攜帶的其他信息進一步進行驗證。例如,代理服務器接收機器人發送的數據時,獲取機器人的ID號和/或機器人的IP地址等。代理服務器根據機器人的ID號,查詢機器人注冊時生成的白名單,若該機器人的ID號存在于該白名單內,則確定該機器人有權限與代理服務器之間進行通信。代理服務器進一步還可根據機器人的IP地址,查看該IP地址是否與代理服務器預先配置的IP地址一致或是否在某一設定的IP段內,若一致或在設定的IP段內,則確定該機器人有權限與代理服務器之間進行通信。
步驟308、代理服務器在數字簽名通過簽名驗證時,利用原代理服務器私鑰解密加密后的對稱密鑰,以獲得對稱密鑰。
步驟309、代理服務器利用對稱密鑰解密加密后的第一數據包,以獲得第一數據包;第一數據包包括待傳輸數據和新的機器人公鑰。
步驟310、代理服務器將原機器人公鑰替換為新的機器人公鑰。
步驟312、代理服務器以云端設備許可的加密方式加密待傳輸數據,并將加密后的所述待傳輸數據發送至云端設備。
在本申請實施例中,機器人發送至代理服務器的第一數據包中還包括驗證參數,其中驗證參數包括機器人生成的令牌、機器人生成的隨機數以及時間戳;代理服務器需根據上述驗證參數,對接收到的待傳輸數據進行合法性驗證。可選的,代理服務器可驗證在該時間戳所表征的時間范圍內,機器人生成的隨機數與代理服務器生成的隨機數的一致性,若一致,則接下來驗證機器人生成的令牌是否在有效期。若在有效期,則將所述待傳輸數據發送至云端設備或機器人。若不在有效期或隨機數未通過一致性驗證,則丟棄該待傳輸數據。
可選的,確定機器人發送的數據的合法性之后,若確定該待傳輸數據是機器人欲通過代理服務器發送至云端設備的數據,則代理服務器按照云端設備許可的加密方式加密該待傳輸數據,并將加密后的待傳輸數據發送至云端設備。例如,該云端設備為能力平臺時,代理服務器采用能力平臺許可的https雙向加密方式對該待傳輸數據進行加密,并將加密后的待傳輸數據發送至能力平臺。
在一種可能的情形下,代理服務器接收到機器人發送的數據或成功向云端設備發送數據之后,會向機器人發送回執數據,以使機器人確定數據發送成功。該回執數據可以是云端設備接收到代理服務器發送的數據之后反饋至代理服務器的,也可以是代理服務器在成功發送數據之后生成的。在另一種可能的情形下,機器人通過代理服務器向云端設備請求數據,云端設備響應該請求并下發相應的數據至代理服務器,此時代理服務器需作為數據的發送端向機器人發送數據。以下部分結合圖4具體闡述代理服務器向機器人發送數據時的實現過程。
圖4是本申請實施例提供的代理服務器向機器人發送數據的流程示意圖,結合圖4,該數據發送過程包括如下的步驟:
步驟401、代理服務器根據預設的密鑰生成算法動態生成新的代理服務器公鑰和新的代理服務器私鑰。
步驟402、代理服務器利用原代理服務器私鑰對第一數據包生成數字簽名;第一數據包包括:待傳輸數據和所述新的代理服務器公鑰。
步驟403、代理服務器將原代理服務器私鑰替換為新的代理服務器私鑰。
步驟404、代理服務器利用隨機生成的對稱密鑰加密第一數據包,并利用機器人公鑰加密對稱密鑰。
步驟405、代理服務器將數字簽名、加密后的第一數據包以及加密后的對稱密鑰發送至機器人。
步驟406、機器人接收代理服務器發送的數字簽名、加密后的第一數據包以及加密后的對稱密鑰。
步驟407、機器人根據原代理服務器公鑰對數字簽名進行簽名驗證。
步驟408、機器人在數字簽名通過簽名驗證時,利用原機器人私鑰解密所述加密后的對稱密鑰,以獲得對稱密鑰。
步驟409、機器人利用對稱密鑰解密加密后的第一數據包,以獲得第一數據包;第一數據包包括待傳輸數據和新的代理服務器公鑰。
步驟410、機器人將原代理服務器公鑰替換為新的代理服務器公鑰。
在圖3以及圖4對應的實施例中,在機器人與云端設備之間增設代理服務器,從而,在云端設備不便于進行通信維護的情況下,降低了機器人與云端設備加密通信的維護難度,提升了機器人與云端設備之間加密通信的穩定性
在機器人和代理服務器正式通信之前,機器人和代理服務器通過獲取彼此的公鑰來建立加密的通信通道。在機器人注冊時,代理服務器生成一個與機器人的ID對應的默認密鑰,以供機器人生成第一令牌;機器人向代理服務器發送機器人的公鑰時,會攜帶該第一令牌。代理服務器根據該機器人的ID、默認密鑰以及該第一令牌,確定該機器人為合法身份,并保存該機器人的公鑰。并且,代理服務器發送代理服務器的公鑰至該機器人,并確定該機器人成功接收代理服務器的公鑰。具體建立的過程將在以下實施例中具體闡述。
圖5是本申請實施例提供的機器人與代理服務器建立加密通信通道的流程示意圖,該實施例以機器人和代理服務器兩端交互的角度對通信通道的建立過程進行闡述,如圖5所示,包括如下的步驟:
步驟501、機器人在代理服務器注冊。
步驟502、代理服務器根據所述機器人的注冊信息,將機器人的ID加入白名單。
步驟503、代理服務器將默認密鑰發送至機器人。
步驟504、機器人基于該默認密鑰生成第一令牌。
步驟505、代理服務器接收機器人發送的機器人的公鑰以及第一令牌。
步驟506、代理服務器根據白名單中該機器人的ID以及默認密鑰生成第二令牌。
步驟507、代理服務器驗證第一令牌與第二令牌相同且第一令牌仍在有效期,保存機器人的公鑰。
步驟508、代理服務器發送代理服務器的公鑰以及用代理服務器的公鑰加密的第一驗證數據至機器人。
步驟509、機器人利用接收到的代理服務器的公鑰對接收到的加密的第一驗證數據進行解密得到的第二驗證數據。
步驟510、代理服務器接收機器人發送的第二驗證數據。
步驟511、代理服務器驗證所述第一驗證數據與第二驗證數據一致,則確定機器人成功接收到代理服務器的公鑰。
在步驟505中,默認密鑰是機器人在向代理服務器注冊時,代理服務器生成的默認密鑰,該默認密鑰與機器人的ID號對應。
針對步驟505~步驟506,代理服務器接收到機器人發送的第一令牌(token)之后,根據第一令牌中包含的機器人的ID查詢預存的白名單,若白名單中存在該ID,則進一步查詢該ID對應的默認密鑰;根據該ID以及對應的默認密鑰生成第二令牌。
針對步驟508~511,代理服務器向機器人發送自己的公鑰時,攜帶有利用代理服務器的私鑰加密的驗證數據。從而,機器人在接收到用代理服務器的私鑰加密的驗證數據之后,用接收到的代理服務器的公鑰解密,得到驗證數據并將驗證數據發送至代理服務器。代理服務器接收到機器人發送的驗證數據之后,對比接收到的驗證數據與本地保存的驗證數據的一致性,若一致,則確定機器人成功接收到了自己的公鑰。
本實施例中,在機器人和代理服務器正式通信之前,機器人在代理服務器處注冊,代理服務器生成一個與機器人的ID對應的默認密鑰。機器人以及代理服務器根據機器人的ID以及對應的默認密鑰生成令牌,用以在機器人向代理服務器發送公鑰時做安全性驗證。由于該默認密鑰分別保存在機器人以及代理服務器端,導致令牌的偽造難度增大,提升了機器人和代理服務器之間建立加密通道過程中的安全性。
圖6是本申請實施例提供的一種數據發送裝置的結構示意圖,結合圖6,該機器人包括如下的模塊:
密鑰更新模塊61,用于根據預設的密鑰生成算法,動態生成新的本端公鑰和新的本端私鑰;以及,將原本端私鑰替換為所述新的本端私鑰;
簽名模塊62,用于利用所述原本端私鑰對第一數據包生成數字簽名;所述第一數據包包括:待傳輸數據和所述新的本端公鑰;
加密模塊63,用于利用隨機生成的對稱密鑰加密所述第一數據包,并利用對端公鑰加密所述對稱密鑰;
數據發送模塊64,用于將所述數字簽名、加密后的第一數據包以及加密后的對稱密鑰發送至對端。
圖7是本申請實施例提供的一種數據接收裝置的結構示意圖,結合圖7,該代理服務器包括如下的模塊:
數據接收模塊71,用于接收對端發送的數字簽名、加密后的第一數據包以及加密后的對稱密鑰;
驗簽模塊72,用于根據原對端公鑰對所述數字簽名進行簽名驗證;
解密模塊73,用于在所述數字簽名通過簽名驗證時,利用原本端私鑰解密所述加密后的對稱密鑰,以獲得對稱密鑰,以及利用所述對稱密鑰解密所述加密后的第一數據包,以獲得第一數據包;所述第一數據包包括待傳輸數據和新的對端公鑰;
密鑰更新模塊74,將所述原對端公鑰替換為所述新的對端公鑰。
進一步可選地,所述密鑰更新模塊74,還用于根據預設的密鑰生成算法,動態生成新的本端公鑰和新的本端私鑰;以及在利用原本端私鑰解密所述加密后的對稱密鑰之后,將所述原本端私鑰替換為所述新的本端私鑰。
進一步可選地,所述第一數據包還包括:驗證參數;所述驗簽模塊72還用于:根據所述驗證參數,對所述待傳輸數據進行合法性驗證。如圖8所示,所述代理服務器還包括數據發送模塊75。若所述合法性驗證通過,則所述第二數據發送模塊75將所述待傳輸數據發送至云端或對端。
進一步可選地,所述驗證參數包括:所述對端生成的令牌、所述對端生成的隨機數以及時間戳;所述驗簽模塊72具體用于:驗證在所述時間戳所表征的時間范圍內,所述對端生成的隨機數與本端生成的隨機數的一致性;驗證所述對端生成的令牌是否在有效期。
進一步可選地,如圖9所示,本申請實施例提供的代理服務器還包括通信建立模塊76,用于基于默認密鑰和令牌機制建立加密通信通道。
通信建立模塊76具體用于根據所述機器人的注冊信息,將所述機器人的ID加入白名單;將所述默認密鑰發送至所述機器人,以供所述機器人生成第一令牌;接收所述機器人發送的所述機器人的公鑰以及所述機器人基于所述默認密鑰生成的所述第一令牌;所述代理服務器根據所述白名單中所述機器人的ID以及所述默認密鑰生成第二令牌;所述代理服務器驗證所述第一令牌與所述第二令牌相同且所述第一令牌仍在有效期,保存所述機器人的公鑰;
所述代理服務器發送所述代理服務器的公鑰以及用所述代理服務器的公鑰加密的第一驗證數據至所述機器人;所述代理服務器接收所述機器人發送的第二驗證數據;所述第二驗證數據是所述機器人利用接收到的所述代理服務器的公鑰對接收到的加密的第一驗證數據進行解密得到的;所述代理服務器驗證所述第一驗證數據與第二驗證數據一致,則確定所述機器人成功接收所述代理服務器的公鑰。
本實施例中,在機器人和代理服務器正式通信之前,機器人在代理服務器處注冊,代理服務器生成一個與機器人的ID對應的默認密鑰。機器人以及代理服務器根據機器人的ID以及對應的默認密鑰生成令牌,用以在機器人向代理服務器發送公鑰時做安全性驗證。由于該默認密鑰分別保存在機器人以及代理服務器端,導致令牌的偽造難度增大,提升了機器人和代理服務器之間建立加密通道過程中的安全性。
以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網絡單元上。可以根據實際的需要選擇其中的部分或者全部模塊來實現本實施例方案的目的。本領域普通技術人員在不付出創造性的勞動的情況下,即可以理解并實施。
通過以上的實施方式的描述,本領域的技術人員可以清楚地了解到各實施方式可借助軟件加必需的通用硬件平臺的方式來實現,當然也可以通過硬件。基于這樣的理解,上述技術方案本質上或者說對現有技術做出貢獻的部分可以以軟件產品的形式體現出來,該計算機軟件產品可以存儲在計算機可讀存儲介質中,如ROM/RAM、磁碟、光盤等,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務器,或者網絡設備等)執行各個實施例或者實施例的某些部分所述的方法。
最后應說明的是:以上實施例僅用以說明本發明的技術方案,而非對其限制;盡管參照前述實施例對本發明進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分技術特征進行等同替換;而這些修改或者替換,并不使相應技術方案的本質脫離本發明各實施例技術方案的精神和范圍。