李敏盛 鐘堅 梁磊
(1.廣西廣播電視無線傳播樞紐臺;2廣西廣電網(wǎng)絡(luò)股份有限公司崇左分公司)
隨著業(yè)務(wù)的發(fā)展,廣播電視遠(yuǎn)程監(jiān)控系統(tǒng)的數(shù)據(jù)通訊也將逐漸從現(xiàn)有的2M私有SDH光纖網(wǎng)絡(luò)轉(zhuǎn)移到帶寬資源更充裕的IP數(shù)據(jù)承載網(wǎng)中,但該承載網(wǎng)也有其他單位和企業(yè)在使用,本單位的監(jiān)控數(shù)據(jù)有可能在中途被截獲、泄露,甚至被篡改,將有可能會影響廣播電視的安全播出,還有可能帶來嚴(yán)重的負(fù)面影響。為解決這個信息安全問題,本文提出了一種基于物聯(lián)網(wǎng)平臺Android Things實現(xiàn)臺站端與服務(wù)端加密通信傳輸?shù)脑O(shè)計方案。
對稱加密采用同一個密鑰對數(shù)據(jù)進(jìn)行加解密,也稱單密鑰加密,優(yōu)點是加解密速度快、效率高;缺點是在傳送數(shù)據(jù)前,加密方和解密方得商定好密鑰,如果某一方的密鑰被泄露,那么加密的數(shù)據(jù)就不安全了。
非對稱加密算法是生成兩個鑰匙(公鑰和私鑰),使用公鑰對數(shù)據(jù)進(jìn)行加密,使用私鑰進(jìn)行解密。例如設(shè)備A要向設(shè)備B發(fā)送隱秘數(shù)據(jù),且只能是設(shè)備B才能解讀,這時設(shè)備B先生成一對密鑰,將公鑰發(fā)給A,設(shè)備A使用公鑰對明文數(shù)據(jù)加密,再將加密后的數(shù)據(jù)傳送給B,設(shè)備B將收到的信息使用私鑰進(jìn)行解密,即使A發(fā)送的消息中途被截獲,因沒有私鑰進(jìn)行解密,數(shù)據(jù)就無法解讀。優(yōu)點是安全性相對于對稱加密更好,缺點是加密和解密需要的時間久、速度慢。
AES全稱為高級加密標(biāo)準(zhǔn)(Advanced Encryption Standard),是對稱加密的一種。
RSA是非對稱加密算法,算法可靠性來源于歐拉定理,對極大整數(shù)做因數(shù)分解,只要其密鑰的長度足夠長,加密的數(shù)據(jù)幾乎是不可能被解破的。
圖1
Android Things是基于Android,主要運用于物聯(lián)網(wǎng)嵌入式設(shè)備的操作系統(tǒng),使用Weave協(xié)議與外部的傳感器/設(shè)備進(jìn)行對話。Android Things已經(jīng)支持Raspberry Pi 3 、 Intel Edison、NXP Pico 等硬件平臺,還可以基于TensorFlow(谷歌第二代人工智能系統(tǒng))進(jìn)行機(jī)器學(xué)習(xí)和深度學(xué)習(xí)。
本方案的設(shè)計思路是在原系統(tǒng)架構(gòu)的基礎(chǔ)上,改變了終端設(shè)備直連到交換機(jī)的方式,在設(shè)備與交換機(jī)之間增加一個基于Android Things操作系統(tǒng)的嵌入式設(shè)備(下文中都稱其為系統(tǒng)控制控器),它的功能是:(1)實現(xiàn)客戶端與服務(wù)端相互加密數(shù)據(jù)傳輸;(2)終端設(shè)備被系統(tǒng)控制器隔離開,就算有人遠(yuǎn)程惡意攻入網(wǎng)絡(luò),沒有密鑰解密,也無法對終端設(shè)備進(jìn)行控制、更改等操作,提高了網(wǎng)絡(luò)信息安全性。圖1為系統(tǒng)架構(gòu)的網(wǎng)絡(luò)拓?fù)鋱D。
RSA算法的安全性能很高,但加密和解密速度比較慢,適合短內(nèi)容的加解密。而AES加密和解密的速度比較快,適合長內(nèi)容的加解密,但其密鑰不易保存和傳輸,安全性能相對較差。了解這兩種加密算法的優(yōu)缺點后,本方案揚長避短,先使用AES加密長度較長的正文內(nèi)容,再用RSA的公鑰對長度較短的AES密鑰進(jìn)行加密。當(dāng)另端收到加密的數(shù)據(jù)后,先使用RSA的私鑰解密出AES密鑰,然后用AES密鑰解密出正文內(nèi)容。這種混合的加解密方式既保證了效率又保證了安全性。
(1)系統(tǒng)控制器啟動時或者每隔一段時間,都會自動生成新的RSA密鑰,然后主動將該公鑰發(fā)送給服務(wù)端,并向服務(wù)端請求服務(wù)端的RSA公鑰;服務(wù)端啟動時或每隔一段時間,也會生成一個新的RSA密鑰,并將該公鑰分發(fā)給所有在線客戶端。流程看圖2。
圖2
(2)系統(tǒng)控制器會定時詢問終端設(shè)備的狀態(tài)信息,并將狀態(tài)信息主動上報給服務(wù)端。上報過程的加解密流程如下:①.生成一個新的AES密鑰,使用AES算法對狀態(tài)信息加密;②.使用服務(wù)端的RSA公鑰對AES密鑰加密;③.將已加密數(shù)據(jù)發(fā)送給服務(wù)端;④.服務(wù)端收到加密數(shù)據(jù)后,使用本端的RSA私鑰解密出AES密鑰;⑤.再用AES密鑰解密出狀態(tài)信息。流程看圖3。
(3)服務(wù)端下發(fā)控制指令給系統(tǒng)控制器的加解密流程如下:①.生成一個新的AES密鑰,使用該密鑰加密控制指令;②.使用系統(tǒng)控制器端的RSA公鑰對AES密鑰進(jìn)行加密;③.將加密數(shù)據(jù)發(fā)送給系統(tǒng)控制器;④.系統(tǒng)控制器收到加密數(shù)據(jù)后,使用本端的RSA私鑰解密出AES密鑰;⑤.使用AES密鑰解密出控制指令并下發(fā)給終端設(shè)備;⑥.終端設(shè)備將執(zhí)行結(jié)果返回給系統(tǒng)控制器,再按照上面所述的上報過程的加解密流程,將執(zhí)行結(jié)果返回服務(wù)端。流程看圖4。
圖3
假如使用密鑰長度為1024位的RSA進(jìn)行加密,密文長度最大值是128字節(jié)。使用128位AES算法對內(nèi)容信息加密,密文長度是隨明文長度大小變化而改變。但是對TCP和UDP傳輸協(xié)議來說,TCP的MTU默認(rèn)是1460字節(jié),UDP的MTU默認(rèn)是1472字節(jié),當(dāng)一個數(shù)據(jù)包的長度超過這兩個長度時,數(shù)據(jù)包就會被自動拆分,所以在軟件設(shè)計時有兩個方案選擇:(1)確保加密后的數(shù)據(jù)不超過上面兩個數(shù),(2)在進(jìn)行TCP或UDP數(shù)據(jù)接收時,判斷當(dāng)前長度是否為零,如果不為零繼續(xù)接收,直到收到上報端口的數(shù)據(jù)長度為零時,才將收到的幾個包進(jìn)行合并,然后再進(jìn)行解密。
Android Things 操作系統(tǒng)沒有像Windows系統(tǒng)一樣有直接的操作界面,為了配置系統(tǒng)控制器程序的內(nèi)置參數(shù),必須為其開發(fā)可以通過網(wǎng)口進(jìn)行配置的程序,本方案計劃使用WEB頁面方式對其進(jìn)行配置。
Android Things支持USB、藍(lán)牙、有線網(wǎng)絡(luò)、無線網(wǎng)絡(luò) ,并提供了一個萬能的通道,支持 I2C、SPI 和 UART 的數(shù)據(jù)傳輸,這三種串行接口,可以直接外接各種傳感設(shè)備。比如調(diào)用臺站門口攝像頭,將靠近門口的人像抓拍下來后,使用Tensorflow深度學(xué)習(xí)來識別是工作人員還是陌生人,如果是工作人員將語音提示歡迎話語,如果是陌生人將語音提示一些提醒話語。
本方案主要通過基于Andriod Things 操作系統(tǒng)的物聯(lián)網(wǎng)開發(fā)平臺,來實現(xiàn)客戶端與服務(wù)端之間數(shù)據(jù)加密傳輸,提高遠(yuǎn)程監(jiān)控系統(tǒng)的可靠性,也為以后實現(xiàn)站內(nèi)人工智能自動化,實現(xiàn)免維護(hù)臺站打下一個基礎(chǔ),因此,有較好的應(yīng)用推廣價值。
[1]陳魯生,沈世鎰.現(xiàn)代密碼學(xué)(第二版)[M].科學(xué)出版社.2008-08