IoT由內而外的安全
很多物聯(lián)網(wǎng)(IoT)設備都是我們日常生活中所使用的,例如家電和恒溫器等,因此,網(wǎng)絡(luò )安全應是IoT系統供應商首先要考慮的問(wèn)題。人們在日常生活中遇到問(wèn)題最容易讓人沮喪:如果您的冰箱由于軟件缺陷而停止工作,這是不是也會(huì )成為頭版頭條!
本文引用地址:http://dyxdggzs.com/article/201808/388213.htmIoT產(chǎn)品在安全上有各種層面的考慮,從基本的數據流加密到用戶(hù)和設備級的認證等。在這篇文章中,我們重點(diǎn)介紹網(wǎng)絡(luò )級安全。
一個(gè)典型的IoT設備位于私有網(wǎng)路中,在防火墻的后面。這種體系結構既有優(yōu)點(diǎn)也有問(wèn)題。一方面,它減少了設備與防火墻和Wi-Fi網(wǎng)絡(luò )本身的安全接觸,無(wú)論如何,減輕了網(wǎng)絡(luò )供應商的安全責任。安全代理有助于降低CPU成本。另一方面,防火墻阻止了云服務(wù)器出于通過(guò)移動(dòng)應用程序進(jìn)行控制的目的而直接連接IoT設備。
有些技術(shù)能夠幫助旁路防火墻,支持從云端到IoT設備的輸入連接。但是,很多這類(lèi)技術(shù)利用了漏洞,并不是所有網(wǎng)絡(luò )都支持這樣做,而且,這種體系結構很難設計一種真正安全的 IoT設備。旁路防火墻最簡(jiǎn)單、最安全、最可靠的方法是IoT設備符合“僅輸出連接”規則:所有連接都是從設備向云端發(fā)起,然后,設備應保持這一連接是開(kāi)放的。這一方法簡(jiǎn)單而且更安全,這是因為它不依靠防火墻的開(kāi)放端口,也不依靠讓防火墻完成數據流路由的技術(shù),例如,NAT會(huì )話(huà)穿越(STUN)方法等。
建立連接后,我們應選擇怎樣高效的使用連接,在響應和資源占用之間達到均衡。HTTP 長(cháng)輪詢(xún)是一種雙向通信,基于“由內而外輸出 標準的方法 (圖1)。

圖1. 雙向通信,基于由內而外標準的方法
在長(cháng)輪詢(xún)模型中,IoT 設備向服務(wù)器發(fā)出HTTP請求。服務(wù)器延遲對HTTP請求的響應,直至經(jīng)過(guò)了預先設定的時(shí)間周期,或者直至收到要求響應IoT設備的命令或者請求。如果命令是必須的,服務(wù)器會(huì )立即響應命令,IoT客戶(hù)端處理命令。IoT客戶(hù)端會(huì )立即發(fā)出另一服務(wù)器 HTTP 請求,開(kāi)始循環(huán)。如果命令或者請求需要向服務(wù)器提供結果,那么,它會(huì )在新的長(cháng)輪詢(xún)請求中進(jìn)行。
這一方法有幾種優(yōu)點(diǎn)。從IoT設備的角度看,HTTP簡(jiǎn)單,輕量,而且還有很多支持庫。HTTP還提供了互聯(lián)網(wǎng)路由功能,包括對長(cháng)輪詢(xún)所需要的持續連接的支持。
HTTP還支持任意負載,您可以靈活的選擇與設備相關(guān)的消息。我們成功的在長(cháng)輪詢(xún)上使用了JSON/REST語(yǔ)法,以及谷歌協(xié)議緩沖消息。
從云端服務(wù)器的角度看,大部分工作框架都是設計成處理HTTP請求,支持服務(wù)器開(kāi)發(fā)人員自由的使用現有工作框架和庫以加速開(kāi)發(fā)。
HTTP 長(cháng)輪詢(xún)還支持服務(wù)器通過(guò)簡(jiǎn)單的實(shí)現更長(cháng)的響應延時(shí),從而控制帶寬利用率。而且,通過(guò)增加簡(jiǎn)單的“輪詢(xún)定時(shí)器”,迫使 IoT 客戶(hù)端延時(shí)HTTP請求,這樣,您很容易獲得真輪詢(xún)模型,一方面,犧牲響應時(shí)間,而另一方面,降低了對資源的占用,可以使用電池供電。
WebSockets 是另一種選擇,與HTTP長(cháng)輪詢(xún)非常相似。WebSockets與HTTP幀頭配合使用,效率非常高。WebSockets還提供實(shí)時(shí)設備至服務(wù)器提醒功能,某些應用會(huì )需要這一功能。為獲得長(cháng)輪詢(xún)模型的實(shí)時(shí)提醒功能,必須使用單獨的套接字,以保持服務(wù)器控制的長(cháng)輪詢(xún)通道。
然而,并不是所有服務(wù)器工作框架都支持WebSockets,在很少的一些實(shí)際應用中,網(wǎng)絡(luò )布線(xiàn)會(huì )成為問(wèn)題。在不遠的將來(lái),WebSockets 會(huì )是很好的選擇,但是目前而言,我不會(huì )使用它,除非您的目標環(huán)境支持它。
這些技術(shù)的基礎都是傳輸控制協(xié)議(TCP)套接字。合理可行的安全模型在這一套接字連接上對數據流進(jìn)行加密。雖然最近有些不好的消息,但是安全套接字層(SSL)或者傳送層安全(TLS)仍然是加密層最好的選擇。SSL 通過(guò)的審查最多,支持最多,也最被容易理解。
您想過(guò)要發(fā)明自己的協(xié)議?考慮到最近的安全缺陷,例如,目前出名的“Heartbleed” 缺陷,它來(lái)自一些大公司的SSL和開(kāi)放源庫,這說(shuō)明了很難開(kāi)發(fā)一種真正安全的協(xié)議,更不用說(shuō)正確的實(shí)現它。因此,在嘗試自己的安全方案之前一定要三思。
然而,SSL 本質(zhì)上是一種大規模協(xié)議,在連接建立過(guò)程中需要很多次握手。這種開(kāi)銷(xiāo)進(jìn)一步說(shuō)明所有通信應使用持續連接方法,好在HTTPS長(cháng)輪詢(xún)(結合TCP套接字“保持連接”,因此,每次輪詢(xún)不會(huì )重新打開(kāi))適合這一應用。
SSL還會(huì )占用大量的代碼空間和運行時(shí)存儲器。對于資源豐富的云服務(wù)器,SSL資源開(kāi)銷(xiāo)并不是太大的問(wèn)題,但是對于低成本IoT設備卻不然,這是因為存儲器和CPU功耗是首當其沖要考慮的。當考慮IoT設備的SSL庫時(shí),如果您選擇的SSL庫提供了選項來(lái)禁用您不使用的功能,那么應評估您需要使用 SSL 的哪些功能。您還應該看看目標硬件能否幫助您減輕負載。SSL 基于高級加密標準(AES)、安全哈希算法(SHA),以及其他標準密碼算法。很多硬件平臺提供專(zhuān)門(mén)的加密硬件,把這些計算從CPU中卸載下來(lái)。
最后,這些方法實(shí)際上是在資源和理解安全需求之間達到均衡。認真的思考,提前規劃好有助于解決很多棘手的問(wèn)題。
評論