本發(fā)明涉及的是一種物聯(lián)網(wǎng)設(shè)備間無(wú)線加密控制的技術(shù),具體是一種基于量子隨機(jī)數(shù),同時(shí)結(jié)合一次一密加密算法的遠(yuǎn)程安全控制系統(tǒng)及方法。
背景技術(shù):
遠(yuǎn)程控制技術(shù)在控制領(lǐng)域中的重要組成部分,一般分為有線遠(yuǎn)程控制和無(wú)線遠(yuǎn)程控制。物聯(lián)網(wǎng)設(shè)備之間采用的無(wú)線方式發(fā)送控制相比于傳統(tǒng)的有線方式具有更大的被竊聽甚至篡改的危險(xiǎn),然而很多控制系統(tǒng)中都還主要是通過使用無(wú)加密處理的明文指令。過去的一百年內(nèi)密碼學(xué)發(fā)展迅速,現(xiàn)代密碼學(xué)主要分為兩類:一類是對(duì)稱密碼系統(tǒng),另一類是非對(duì)稱密碼系統(tǒng)。常用的非對(duì)稱密碼算法有RSA、Merkler‐Hellman、ELGamal、Rabin等。常用的對(duì)稱密碼系統(tǒng)有DES、AES、RC5等。一次一密亂碼本屬于對(duì)稱密碼體系,是一種理想的加密方案,理論上講,使用一次一密算法加密的系統(tǒng)是不可破譯的。一次一密加密算法主要應(yīng)用于高度機(jī)密的低帶寬信道,很早就被軍方和政府用于保密最高機(jī)密文件。一次一密算法要求密鑰為真隨機(jī)數(shù),而傳統(tǒng)上常常利用計(jì)算機(jī)根據(jù)特定算法產(chǎn)生偽隨機(jī)數(shù),偽隨機(jī)數(shù)經(jīng)過足夠長(zhǎng)的時(shí)間后會(huì)產(chǎn)生序列重復(fù),這一點(diǎn)限制了一次一密在民用和商用等方面更廣泛的應(yīng)用。如今隨著現(xiàn)代量子技術(shù)的發(fā)展,我們可以利用量子力學(xué)的不確定性原理來(lái)獲取量子真隨機(jī)數(shù),因此日漸商品化的量子真隨機(jī)數(shù)發(fā)生器使得一次一密算法有了更大的應(yīng)用前景。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明針對(duì)現(xiàn)有的量子隨機(jī)加密技術(shù)無(wú)法應(yīng)用于物聯(lián)網(wǎng),且動(dòng)作與指令的同步性難以滿足要求等缺陷,提出一種用于物聯(lián)網(wǎng)遠(yuǎn)程控制的保密控制方法及系統(tǒng),以硬件方式存儲(chǔ)及管理密鑰,通過利用量子真隨機(jī)數(shù),即可靠的真隨機(jī)數(shù)密鑰源,結(jié)合一次一密加密算法,可以實(shí)現(xiàn)基于上述系統(tǒng)開發(fā)的遠(yuǎn)程安全控制,在物聯(lián)網(wǎng)遠(yuǎn)程無(wú)線通信設(shè)備之間實(shí)現(xiàn)絕對(duì)安全的保密控制。
本發(fā)明是通過以下技術(shù)方案實(shí)現(xiàn)的:
本發(fā)明涉及一種用于物聯(lián)網(wǎng)遠(yuǎn)程控制的保密控制方法,以量子隨機(jī)數(shù)密鑰序列在加密端存儲(chǔ)器中的不同存儲(chǔ)位置作為明鑰,在每次對(duì)明文指令一次一密加密操作后對(duì)明鑰進(jìn)行同步更新,并作為密文指令的一部分;當(dāng)解密端進(jìn)行解密時(shí),首先讀取解密端存儲(chǔ)器中對(duì)應(yīng)密文指令中的明鑰得到密鑰的存儲(chǔ)位置,然后讀取密鑰并對(duì)密文指令進(jìn)行一次一密解密。
所述的密文指令包括但不限于:指令來(lái)源標(biāo)志、指令長(zhǎng)度、功能標(biāo)志位、數(shù)據(jù)位、校驗(yàn)值、密鑰地址、偏移地址。
所述的密文指令中存有密鑰的使用情況信息,優(yōu)選在末尾部分存儲(chǔ)了密鑰的使用情況信息,該信息與密鑰存儲(chǔ)單元相結(jié)合才有意義,實(shí)際并不包含真正的密鑰,因此不影響系統(tǒng)整體的安全性。
所述的一次一密是指:通過量子隨機(jī)數(shù)產(chǎn)生器(采用但不限于Quantis USB以4Mps的速度)生成的隨機(jī)比特流數(shù)據(jù),其中的每位密鑰數(shù)據(jù)僅被加密使用一次,加密后的密鑰數(shù)據(jù)位以后不再加密且需要定時(shí)更新,以保證密鑰序列的安全性。
所述的同步更新是指用量子隨機(jī)數(shù)發(fā)生器重新生成密鑰,優(yōu)選將其分別寫入發(fā)送以及解密端的密鑰存儲(chǔ)模塊中。
所述的存儲(chǔ)器設(shè)置于加密端和解密端且均保存有完全相同的密鑰,分別用于加密和解密。
所述的加密、解密操作通過將明文與密文按一次一密位的字節(jié)流方式異或操作完成。
所述的同步更新是指:將加密端加密指令所用的密鑰存儲(chǔ)地址作為明鑰存放于指令結(jié)尾部分,解密端接收到指令后首先根據(jù)明鑰內(nèi)容讀取出對(duì)應(yīng)密鑰,得到正確密鑰后對(duì)指令進(jìn)行解密。每次發(fā)送、接收完畢需要更新密鑰地址,即指記錄每次使用過的密鑰部分和待加密指令的長(zhǎng)度,自動(dòng)生成更新后的密鑰讀取位置,即得到下一次加密所需的密鑰的存放地址,根據(jù)此地址讀取密鑰,并進(jìn)行對(duì)指令進(jìn)行加密操作。
本發(fā)明涉及一種實(shí)現(xiàn)上述方法的系統(tǒng),包括:密鑰生成模塊、密鑰管理模塊、加密發(fā)送模塊以及接收解密模塊,其中:密鑰生成模塊與密鑰管理模塊相連并傳輸密鑰信息,密鑰管理模塊與加密發(fā)送模塊相連進(jìn)行一次一密加密操作,密鑰管理模塊與接收解密模塊相連進(jìn)行一次一密解密操作,密文發(fā)送模塊與密文接收模塊相連并傳輸密文指令。
所述的密鑰管理模塊包括:嵌入式控制單元和密鑰存儲(chǔ)單元,其中:嵌入式控制單元與密鑰存儲(chǔ)單元相連并傳輸密鑰信息。
所述的加密發(fā)送模塊包括:一次一密加密單元、同步地址管理單元以及無(wú)線發(fā)射單元,其中:一次一密加密單元與同步地址管理單元相連并傳輸密鑰信息,一次一密加密單元單元與無(wú)線發(fā)射單元相連并發(fā)送密文指令。
所述的接收解密模塊包括:一次一密解密單元、同步地址管理單元以及無(wú)線接收單元,其中:一次一密解密單元與同步地址管理單元相連并傳輸密鑰信息,一次一密解密單元單元與無(wú)線接收單元相連并接收解密密文指令。
本發(fā)明涉及上述系統(tǒng)的遠(yuǎn)程安全控制方法,包括以下步驟:
步驟1:在雙方進(jìn)行保密通信之前,首先對(duì)加密發(fā)送模塊以及接收解密模塊補(bǔ)充(或更新)密鑰,即將量子隨機(jī)數(shù)生成器產(chǎn)生的二進(jìn)制隨機(jī)比特流寫入通信雙方的同步地址管理單元中。
此步驟的執(zhí)行周期根據(jù)密鑰存儲(chǔ)單元的存儲(chǔ)容量大小以及指令發(fā)送次數(shù)的實(shí)際情況進(jìn)行調(diào)整,可以一個(gè)月甚至更長(zhǎng)時(shí)間更新一次密鑰。
步驟2:當(dāng)無(wú)線發(fā)射單元需要發(fā)射指令給無(wú)線接收單元時(shí),由嵌入式控制單元控制首先根據(jù)密鑰首地址從密鑰存儲(chǔ)單元中讀取與明文等長(zhǎng)度的密鑰數(shù)據(jù),然后由一次一密加密單元將其與準(zhǔn)備發(fā)送的明文指令進(jìn)行異或操作,即一次一密加密。最后無(wú)線發(fā)射單元將密文指令發(fā)送出去,同時(shí)更新密鑰地址,去除掉本次操作已經(jīng)使用的密鑰部分。
步驟3:當(dāng)接收解密模塊接收到加密發(fā)送模塊發(fā)送來(lái)的加密指令時(shí),一次一密解密單元首先讀取指令末尾字節(jié)得到解密密鑰存放地址,根據(jù)該地址從同步地址管理單元中讀取相應(yīng)的解密密鑰,得到密鑰后將密文指令與密鑰進(jìn)行異或解密,即一次一密的解密,得到明文指令,最終可以執(zhí)行指令對(duì)應(yīng)的操作。
技術(shù)效果
與現(xiàn)有技術(shù)相比,本發(fā)明通過將真隨機(jī)數(shù)產(chǎn)生器與通信設(shè)備分離,設(shè)計(jì)了密鑰存儲(chǔ)、管理單元以及通信協(xié)議,實(shí)現(xiàn)控制端和遠(yuǎn)程執(zhí)行端加密、解密的同步;其次,為了確保密鑰的絕對(duì)安全,本發(fā)明以硬件的方式設(shè)計(jì)了密鑰存儲(chǔ)及更新單元,避免了密鑰泄漏;最后,本發(fā)明采用一次一密加密算法保證了密文指令理論上的完全不可破譯。因此,該遠(yuǎn)程控制方案是絕對(duì)安全的。
附圖說(shuō)明
圖1為實(shí)施例1中物聯(lián)網(wǎng)設(shè)備加密控制系統(tǒng)結(jié)構(gòu)圖;
圖2為實(shí)施例1中遙控發(fā)送端指令結(jié)構(gòu)圖(以無(wú)人機(jī)控制指令為例);
圖3為實(shí)施例1中接收端指令結(jié)構(gòu)圖(以無(wú)人機(jī)控制指令為例);
圖4為截獲的明文及密文數(shù)據(jù)波形。
具體實(shí)施方式
實(shí)施例1
如圖1所示,本實(shí)施例涉及一種應(yīng)用于無(wú)人機(jī)系統(tǒng)的保密控制系統(tǒng),包括:量子隨機(jī)生成模塊、密鑰管理模塊、無(wú)人機(jī)指令執(zhí)行接收端以及無(wú)人機(jī)指令發(fā)送端,其中:量子隨機(jī)數(shù)發(fā)生模塊與密鑰管理模塊相連并傳輸密鑰信息,密鑰管理模塊與無(wú)人機(jī)指令發(fā)送端相連并進(jìn)行一次一密加密,密鑰管理模塊與無(wú)人機(jī)指令接收端相連并進(jìn)行一次一密解密,無(wú)人機(jī)指令發(fā)送端與無(wú)人機(jī)指令執(zhí)行接收端無(wú)線連接并傳輸密文指令。
本實(shí)施例涉及上述系統(tǒng)的安全控制方法,包括以下步驟:
步驟1.密鑰的補(bǔ)充與更新:檢測(cè)無(wú)人機(jī)指令執(zhí)行接收端與無(wú)人機(jī)指令發(fā)送端的密鑰存儲(chǔ)模塊中是否保留有足夠的隨機(jī)數(shù)密鑰信息,當(dāng)沒有足夠密鑰或需要重新更新密鑰時(shí),通過量子隨機(jī)生成模塊生成隨機(jī)數(shù)密鑰數(shù)據(jù),保存在外部存儲(chǔ)設(shè)備如SD卡中,通過密鑰管理模塊的密鑰補(bǔ)充電路,將一份密鑰文件先后寫入到發(fā)送和接收端的Flash外部存儲(chǔ)芯片中,以此保證加密、解密端芯片中的隨機(jī)數(shù)相同。當(dāng)Flash外部存儲(chǔ)芯片中已有足夠的密鑰,則跳過步驟1直接進(jìn)行步驟2;
步驟2.信息的加密與發(fā)送:無(wú)人機(jī)指令發(fā)送端設(shè)備啟動(dòng)后,接著上一次保存的當(dāng)前密鑰地址(若首次使用,則從初始地址0x000000)開始,從密鑰管理模塊的Flash存儲(chǔ)芯片中讀取固定M個(gè)密鑰,保存在緩存區(qū),分成N組,使得每組的密鑰長(zhǎng)度大于等于明文指令的長(zhǎng)度。取第1組密鑰字節(jié)與指令字節(jié),按位進(jìn)行異或得到密文。將密鑰的開始位置和組別附加到密文指令的末尾部分,指令結(jié)構(gòu)如圖2,圖2中的a[27]‐a[29]為密鑰開始位置,a[30]‐a[31]為組別。最后通過無(wú)人機(jī)指令發(fā)送端的無(wú)線發(fā)射單元將加密后的密文指令發(fā)送出去。同時(shí),若無(wú)人機(jī)指令發(fā)送端的一次一密加密單元啟動(dòng)讀取密鑰時(shí)產(chǎn)生了誤碼,導(dǎo)致無(wú)法正確加密或解密,一次一密加密單元將自動(dòng)重新進(jìn)行重讀密鑰以及重新加密、發(fā)送。
步驟3.信息的接收與解密:當(dāng)無(wú)人機(jī)指令執(zhí)行接收端的無(wú)線接收單元接收到遙控指令時(shí),首先讀取指令末尾的密鑰存儲(chǔ)地址,根據(jù)地址取出相應(yīng)密鑰字節(jié),在一次一密解密單元控制下與明文指令字節(jié)按位進(jìn)行異或得到明文,最后識(shí)別出明文指令的含義,執(zhí)行相應(yīng)的任務(wù),發(fā)送收到應(yīng)答信號(hào),指令結(jié)果如圖3。同時(shí),若無(wú)人機(jī)指令執(zhí)行接收端讀取密鑰時(shí)產(chǎn)生了誤碼,導(dǎo)致無(wú)法正確加密或解密,一次一密解密單元將自動(dòng)重新進(jìn)行重讀密鑰以及重新解密。
所述的隨機(jī)數(shù)密鑰數(shù)據(jù)在每次加密指令時(shí),根據(jù)所需加密指令的長(zhǎng)度消耗相同長(zhǎng)度的密鑰。具體實(shí)現(xiàn)方案為:將每次加密的指令長(zhǎng)度進(jìn)行累加,該信息決定下次所使用密鑰的起始位置,從而實(shí)現(xiàn)已經(jīng)被使用過的密鑰下次將不再被使用。
所述的密鑰長(zhǎng)度M取值需要適中,不宜過大,以免讀取密鑰花費(fèi)時(shí)間太長(zhǎng),導(dǎo)致無(wú)法及時(shí)將指令發(fā)送出去;不宜過小,以過度免頻繁地讀取Flash存儲(chǔ)芯片,縮短Flash存儲(chǔ)芯片壽命。
所述的密鑰使用情況信息中包括一個(gè)整形數(shù)組,存儲(chǔ)在Flash芯片地址空間的開頭部分,用于記錄用戶過去使用密鑰長(zhǎng)度,即當(dāng)前密鑰位置,這個(gè)信息只包含密鑰的使用情況,而不包含任何具體的密鑰信息,單獨(dú)存在沒有任何意義,不影響系統(tǒng)的安全性。
所述的系統(tǒng)在初次運(yùn)行時(shí)密鑰使用情況信息為:0x000000,每次加密前,先從同步地址管理單元中讀取密鑰使用情況信息,并將其映射到一個(gè)用于控制密鑰讀取的位置的變量X,當(dāng)消耗了M個(gè)密鑰,即加密了長(zhǎng)度為M的指令后,執(zhí)行X=X+M,即更新X值作為新的密鑰使用情況信息內(nèi)容,并重新存入密鑰管理模塊。
與現(xiàn)有技術(shù)相比,本實(shí)施例使用的是由量子隨機(jī)數(shù)產(chǎn)生器產(chǎn)生的真隨機(jī)數(shù),并且具有較快的隨機(jī)數(shù)生成速率,每個(gè)密鑰只使用一次,實(shí)現(xiàn)了真正的一次一密無(wú)人機(jī)遠(yuǎn)程安全控制。本方法使用的加密、解密算法都是按位操作,處理器執(zhí)行速度快,可以實(shí)現(xiàn)實(shí)時(shí)指令傳輸,即實(shí)時(shí)控制。因此,基于本發(fā)明的遠(yuǎn)程安全控制系統(tǒng)可方便地實(shí)現(xiàn)無(wú)人機(jī)的安全保密控制。
為了驗(yàn)證加密指令的可靠性,用帶有NRF24L01無(wú)線模塊的電路分別截獲遙控器發(fā)射到空中的明文、密文電磁波指令數(shù)據(jù),將數(shù)據(jù)保存到SD卡中,用Matlab軟件進(jìn)行數(shù)據(jù)處理。最終可得如圖4所示波形。由此可見,加密前的明文具有明顯的周期性,加密后的密文雜亂無(wú)章。
上述具體實(shí)施可由本領(lǐng)域技術(shù)人員在不背離本發(fā)明原理和宗旨的前提下以不同的方式對(duì)其進(jìn)行局部調(diào)整,本發(fā)明的保護(hù)范圍以權(quán)利要求書為準(zhǔn)且不由上述具體實(shí)施所限,在其范圍內(nèi)的各個(gè)實(shí)現(xiàn)方案均受本發(fā)明之約束。