用于物聯(lián)網(wǎng)終端與云端通訊的加密方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種通訊處理方法,尤其涉及一種用于物聯(lián)網(wǎng)終端與云端通訊的加密方法,具有雙向認(rèn)證的輕量級物聯(lián)網(wǎng)安全解決方案。
【背景技術(shù)】
[0002]當(dāng)前物聯(lián)網(wǎng)的發(fā)展已經(jīng)逐步步入快車道,物聯(lián)網(wǎng)產(chǎn)品的特性包括:隨時在線、遠(yuǎn)程控制。導(dǎo)致物聯(lián)網(wǎng)產(chǎn)品必須能夠通過因特網(wǎng)連接云端,隨時隨地的上傳、接收數(shù)據(jù)及相關(guān)控制請求,而任何連接到因特網(wǎng)的設(shè)備都必須考慮到黑客攻擊的可能性,因而產(chǎn)生了加密需求,要滿足加密需求存在兩條解決道路:
簡易賬號密碼加密:可以在資源有限的MCU上實現(xiàn),但無法完成服務(wù)器終端之間的雙向認(rèn)證,也無法解決黑客重放攻擊問題。
[0003]SSL協(xié)議加密??梢詫崿F(xiàn)雙向認(rèn)證和解決黑客重放攻擊問題。但常用的open SSL協(xié)議需要上M級別的Flash和RAM空間,即便是裁剪版的SSL協(xié)議也要上百K的Flash和數(shù)十K的RAM。
[0004]而在實際應(yīng)用環(huán)境中,大部分物聯(lián)網(wǎng)終端設(shè)備都要滿足低功耗和低成本的兩低要求,使得大部分的物聯(lián)網(wǎng)終端只能被迫選擇簡易賬號密碼加密方式。從而存在如下問題:
I)只有云端的單向認(rèn)證,沒有終端和云端的雙向認(rèn)證,一旦黑客盜取云端數(shù)據(jù),可模擬服務(wù)器數(shù)據(jù)反向攻擊控制物聯(lián)網(wǎng)終端設(shè)備。
[0005]2)物聯(lián)網(wǎng)產(chǎn)品長期在線需要終端隨時與云端保持?jǐn)?shù)據(jù)溝通,黑客可以直接抓取終端和云端的溝通數(shù)據(jù),對物聯(lián)網(wǎng)終端和云端任意一端進(jìn)行重放攻擊,進(jìn)而癱瘓物聯(lián)網(wǎng)終端或者云端。
[0006]圖1為現(xiàn)有認(rèn)證過程示意圖,圖2為現(xiàn)有數(shù)據(jù)通訊過程示意圖。請參見圖1和圖2,物聯(lián)網(wǎng)終端出廠時或者用戶第一次使用時在云端注冊一個賬號和密碼,在物聯(lián)網(wǎng)終端與云端溝通的過程中,主要分為兩個過程:
I)首先是連接請求認(rèn)證過程:由物聯(lián)網(wǎng)終端發(fā)送對應(yīng)的賬號和密碼給云端進(jìn)行連接認(rèn)證請求,云端根據(jù)所收到的賬號和密碼在其數(shù)據(jù)庫中進(jìn)行比對,比對結(jié)果符合要求的情況下,由云端產(chǎn)生AES秘鑰再回傳給物聯(lián)網(wǎng)終端,云端將該AES加密秘鑰存入對應(yīng)賬號數(shù)據(jù)庫,物聯(lián)網(wǎng)終端收到秘鑰后使用該秘鑰加密ACK信號,并將加密ACK信息與用戶名等信息一同回傳給云端,云端接到信號后,依據(jù)用戶名找到AES秘鑰后,解析ACK信號是否成功,不成功則連接創(chuàng)建失敗,成功則該物聯(lián)網(wǎng)終端連接請求完成,如圖1所示。
[0007]2)之后是數(shù)據(jù)通信過程:物聯(lián)網(wǎng)終端直接使用連接建立過程中協(xié)商的AES加密秘鑰,把對應(yīng)數(shù)據(jù)進(jìn)行AES加密連同賬號傳送至云端,云端收到數(shù)據(jù)包后依據(jù)賬號信息找到AES秘鑰,使用AES秘鑰對數(shù)據(jù)包進(jìn)行解密,解密后若要回復(fù)數(shù)據(jù)給物聯(lián)網(wǎng)終端,則同樣使用AES秘鑰對數(shù)據(jù)進(jìn)行加密后發(fā)送,物聯(lián)網(wǎng)終端在收到數(shù)據(jù)后使用AES秘鑰進(jìn)行數(shù)據(jù)解密,完成數(shù)據(jù)包中要求的下一步動作,如圖2所示。
[0008]由上可見,現(xiàn)有輕量級的物聯(lián)網(wǎng)終端與云端通訊的加密方法客觀存在如下問題: 1.只有云端對物聯(lián)網(wǎng)終端的單向認(rèn)證機(jī)制,一旦黑客竊取到任何有關(guān)物聯(lián)網(wǎng)終端的數(shù)據(jù),可以直接在因特網(wǎng)上發(fā)起對物聯(lián)網(wǎng)終端的攻擊。
[0009]2.在物聯(lián)網(wǎng)終端與云端的連接建立后,兩者相互之間的通信雖然也有AES加密,黑客無法破解其中通信數(shù)據(jù),但是黑客通過抓取通信過程中完整數(shù)據(jù)包,使用重放攻擊方式即可攻擊物聯(lián)網(wǎng)終端或者云端任意一端,從而實現(xiàn)癱瘓該系統(tǒng)的目的。
【發(fā)明內(nèi)容】
[0010]本發(fā)明所要解決的技術(shù)問題是提供一種用于物聯(lián)網(wǎng)終端與云端通訊的加密方法,能夠?qū)崿F(xiàn)可靠的雙向認(rèn)證,大大降低對計算和存儲資源的消耗,滿足輕量級物聯(lián)網(wǎng)的安全需求。
[0011]本發(fā)明為解決上述技術(shù)問題而采用的技術(shù)方案是提供一種用于物聯(lián)網(wǎng)終端與云端通訊的加密方法,包括如下步驟:a)在物聯(lián)網(wǎng)終端和云端同時預(yù)存由物聯(lián)網(wǎng)終端ID、AES秘鑰和Auth碼三部分組成的固定字節(jié)數(shù)秘鑰;b)每次建立連接時,所述云端隨機(jī)生成新的AES碼,所述物聯(lián)網(wǎng)終端和云端通過比對新的AES碼和預(yù)存AES秘鑰進(jìn)行雙向認(rèn)證,認(rèn)證成功后,物聯(lián)網(wǎng)終端將AES秘鑰更新為新的AES碼;c)連接建立成功后雙方進(jìn)行數(shù)據(jù)通訊,所述物聯(lián)網(wǎng)終端定時發(fā)送Keep Alive包至云端保持連接可用。
[0012]上述的用于物聯(lián)網(wǎng)終端與云端通訊的加密方法,其中,所述步驟b)中物聯(lián)網(wǎng)終端和云端的雙向認(rèn)證過程如下:bl)所述物聯(lián)網(wǎng)終端發(fā)送連接認(rèn)證請求給云端,所述連接認(rèn)證請求數(shù)據(jù)包中包括物聯(lián)網(wǎng)終端ID和Auth碼;b2)所述云端接收后判斷物聯(lián)網(wǎng)終端ID和Auth碼是否與其數(shù)據(jù)庫中的一致,不一致則認(rèn)證失敗;b3)所述云端隨機(jī)生成一個新的AES碼,并將此AES碼存入該物聯(lián)網(wǎng)終端ID對應(yīng)的數(shù)據(jù)庫中;b4)所述云端將原始AES碼作為挑戰(zhàn)秘鑰返回給物聯(lián)網(wǎng)終端,返回數(shù)據(jù)包中包含物聯(lián)網(wǎng)終端ID、挑戰(zhàn)秘和新的AES碼;b5)所述物聯(lián)網(wǎng)終端接收后判斷接收到的挑戰(zhàn)秘鑰是否與其內(nèi)部存儲的原始AES碼相同,不同則雙向認(rèn)證失?。籦6)所述物聯(lián)網(wǎng)終端存儲新的AES碼,并回復(fù)挑戰(zhàn)ACK包給云端,回復(fù)數(shù)據(jù)包中包含該物聯(lián)網(wǎng)終端ID和新的AES碼;b7)所述云端接收后比對AES碼是否為之前隨機(jī)為該該物聯(lián)網(wǎng)終端ID產(chǎn)生的AES碼,若不正確,則擦除存入該物聯(lián)網(wǎng)終端ID的新AES碼,雙向認(rèn)證失敗。
[0013]上述的用于物聯(lián)網(wǎng)終端與云端通訊的加密方法,其中,所述步驟c)中連接建立成功后雙方數(shù)據(jù)通訊過程如下:cl)在每次通訊數(shù)據(jù)包中設(shè)置tx_attack_seq和ng_attack_seq ;c2)所述物聯(lián)網(wǎng)終端取出之前給云端發(fā)送的32位tx_attack_seq,按照預(yù)定的累加或累減規(guī)律進(jìn)行變化后存儲于物聯(lián)網(wǎng)終端,并對除物聯(lián)網(wǎng)終端ID外所有數(shù)據(jù)都使用新AES加密后發(fā)送至云端;c3)所述云端判斷物聯(lián)網(wǎng)終端ID是否為數(shù)據(jù)庫內(nèi)注冊號,若不是,則云端丟棄數(shù)據(jù),本次數(shù)據(jù)通訊結(jié)束,若是,則找到物聯(lián)網(wǎng)終端ID對應(yīng)的新AES進(jìn)行數(shù)據(jù)解密;c4)所述云端判斷解密后數(shù)據(jù)包中的tx_attack_seq是否已達(dá)到極值,若達(dá)到則重新發(fā)起雙向認(rèn)證;c5)所述云端繼續(xù)判斷該物聯(lián)網(wǎng)終端ID本次tx_attack_seq是否按照預(yù)定的累加或累減規(guī)律變化,若沒有,則云端丟棄,此次數(shù)據(jù)通訊結(jié)束,若按照規(guī)律變化則將本次最新tx_attack_seq數(shù)值寫入對應(yīng)物聯(lián)網(wǎng)終端ID數(shù)據(jù)庫;c6)所述云端將數(shù)據(jù)庫中ng_attack_seq按照預(yù)定累加或累減規(guī)律變化存儲并將ng_attack_Seq使用新AES加密后放入回復(fù)ACK包發(fā)送給物聯(lián)網(wǎng)終端;c7)所述物聯(lián)網(wǎng)接收數(shù)據(jù)包并使用新的AES秘鑰解密,判斷解密后本次ng_attack_seq是否已達(dá)到極值,是則重新發(fā)起雙向認(rèn)證連接;若不是則物聯(lián)網(wǎng)終端判斷該物聯(lián)網(wǎng)終端ID本次ng_attack_Seq是否按照預(yù)定的累加或累減規(guī)律變化,若沒有,則物聯(lián)網(wǎng)終端丟棄,本次數(shù)據(jù)通訊結(jié)束,若按照規(guī)律變化則物聯(lián)網(wǎng)終端執(zhí)行數(shù)據(jù)包要求對應(yīng)動作,存儲最新的ng_attack_seq,完成本次數(shù)據(jù)通訊過程。
[0014]上述的用于物聯(lián)網(wǎng)終端與云端通訊的加密方法,其中,所述tx_attack_seq和ng_attack_seq為兩個32位整型數(shù)值。
[0015]本發(fā)明對比現(xiàn)有技術(shù)有如下的有益效果:本發(fā)明提供的用于物聯(lián)網(wǎng)終端與云端通訊的加密方法,通過在物聯(lián)網(wǎng)終端和云端預(yù)置秘鑰數(shù)據(jù)實現(xiàn)可靠的雙向認(rèn)證,大大降低對計算和存儲資源的消耗,滿足輕量級物聯(lián)網(wǎng)的安全需求。此外,本發(fā)明利用整型數(shù)據(jù)按規(guī)律累加或累減來識別通信數(shù)據(jù)的唯一性和到達(dá)數(shù)據(jù)邊界時重新注冊認(rèn)證解決了重放攻擊問題。
[0016]
【附圖說明】
[0017]圖1為現(xiàn)有認(rèn)證過程示意圖;
圖2為現(xiàn)有數(shù)據(jù)通訊過程示意圖;
圖3為本發(fā)明用于物聯(lián)網(wǎng)終端與云端通訊的系統(tǒng)架構(gòu)示意圖;
圖4為本發(fā)明用于物聯(lián)網(wǎng)終端與云端的加密通訊流程示意圖;
圖5為本發(fā)明物聯(lián)網(wǎng)終端和云端之間的雙向認(rèn)證流程;
圖6為本發(fā)明物聯(lián)網(wǎng)終端和云端之間的數(shù)據(jù)通訊流程圖。
[0018]
【具體實施方式】
[0019]下面結(jié)合附圖和實施例對本發(fā)明作進(jìn)一步的描述。
[0020]圖3為本發(fā)明用于物聯(lián)網(wǎng)終端與云端通訊的系統(tǒng)架構(gòu)示意圖;圖4為本發(fā)明用于物聯(lián)網(wǎng)終端與云端的加密通訊流程示意圖。
[0021]請參見圖3和圖4,本發(fā)明提供的用于物聯(lián)網(wǎng)終端與云端通訊系統(tǒng)組成部分主要包括三部分,云端、路由器網(wǎng)關(guān)設(shè)備和物聯(lián)網(wǎng)終端,其中路由器網(wǎng)關(guān)設(shè)備在通訊中一般是透傳的透明設(shè)備。該解決方案的關(guān)鍵在于兩個部分,一個部分為同時存儲于物聯(lián)網(wǎng)終端和云端的固定字節(jié)數(shù)秘鑰部分,該秘鑰由若干字節(jié)的物聯(lián)網(wǎng)終端ID、AES秘鑰和若干字節(jié)的Auth碼組成;另一部分為連接認(rèn)證成功后,在兩端之間每次通訊數(shù)據(jù)包中的兩個