在巨大利益的吸引下,很多公司對物聯網(IoT)蜂擁而上。遠到供應鏈半導體公司,發動開發了各種各樣的硬件——為物體提供微小的微控制器單元(MCU),為集線器提供高能效的SoC,以及為云數據中心提供功能強大的加速器,這些都是IoT的底層支撐。
近到企業信息技術(IT)領域的巨人們開發了工作臺,編程人員可以在其中編寫云應用程序,融合來自物體的數據,做出響應,命令它們執行。中間則是現有的大量的有線和無線網絡,努力實現這些新的不對稱網絡,把云、集線器和端點交織在一起。
ARM? CTO Mike Muller在最近的ARM TechCon的主題演講中列舉了這類問題的一個例子——安全。“從工程師的角度想像一下遇到的難題。IoT要求沒有安全設計經驗的嵌入式設計人員保護價值1美元的MCU不受互聯網上所有威脅的侵擾。”
沒有人愿意IoT的應用開發僅限于一些博學者,只有他們同時掌握了應用算法、嵌入式h系統硬件和軟件、短距離數據包射頻、互聯網協議,以及企業IT環境。因此,所有這些領域的供應商都擴展了他們的平臺,為基本上只是應用程序專家的工程師建立單一的開發環境。在IoT的看法上缺少共同點,但這些平臺看起來卻在一種技術上不太可能的想法上統一起來:萬維網。
網絡成為共同語言
網絡的確適合作為公共載體滿足IoT上的所有特殊利益需求。網絡開發比較簡單,避免了處理復雜的底層系統,很少甚至不需要進行實際編程。網絡的交換格式和協議本質上非常適合互聯網,很容易通過各類網關和防火墻。網絡以硬件無關的方式,在熟悉的目標上使用非常直觀的比喻:表征狀態傳送(ReST)。
如果您沒有參與網絡開發,那么,這一術語可能不太好解釋。ReST是客戶端和服務器之間的會話模型(圖1)。客戶端可以向服務器發出四種主要申請:Get、Put、Delete,或者名為Post的Put變異。這是超文本傳送協議HTTP中定義的標準方法。每一種申請都包括了統一資源標識符(URI——一般只是一個Web URL),來表示服務器上的某一項目、控制信息,如果需要,還會有數據串。數據通常是JavaScript對象標記(JSON)或者XML格式,這些都是人類可讀的。
圖 1.ReSTful會話支持客戶端使用小規模HTTP方法,支持來自服務器的通用響應。
一個典型的ReSTful交換會以客戶端發出Get申請開始,要求獲得服務器上的某一URI。服務器以狀態字符串回應,表示其響應——從“here you go”直至煩人的“404 Page Not Found”,然后是數據串。數據表示申請的URI的當前狀態,以申請格式進行編碼。
要重點指出的是,根據HTTP的無保證特性,服務器并沒有保存以前傳送的信息,或者客戶端狀態的信息。因此,服務器并不知道前面的申請成功與否,也不知道這是不是有故障的網絡第35次傳送同樣的申請。
劃分平臺
ReSTful立刻吸引了來自IT世界的供應商。例如,Oracle的軟件開發資深總監Robert Clark解釋說,Oracle在IoT上的方法是把物體當做ReSTful端點。Oracle的體系結構基于一組云應用程序接口(API),為新的或者已有的企業應用提供多種IoT服務。服務的最底層為物體提供ReSTful連接。但是,Oracle支持您構建物體的虛擬模型,通過模型管理實際物體,收集數據,分析數據,把數據傳送給命令和控制算法,或者傳送給傳統的企業應用程序。概念上,Oracle以近乎實時的方式把真實世界集成到了統一的企業數據池中。
并非只有Oracle一家是這樣想的。Intel的Wind (以前的Wind River)提出了相似的概念,但是從嵌入式的角度出發,而不是企業和軟件的角度。與Oracle一樣,Wind提供了基于云的應用平臺,通過ReSTful API與物體通信。但是在其邊緣管理系統中,Wind把軟件堆棧向下擴展到了集線器以及運行在物體上的嵌入式軟件中——前提是物體能夠支持。
微小物體
隨著端點越來越小,問題的本質出現了變化。很容易想象交流供電的工業控制器運行android,通過10 Mbps以太網端口支持ReSTful連接。但是,讓我們考慮一個更輕型的設備。
在他的ARM TechCon主題演講中,Muller描述了一個正在進行原型開發的胰島素筆。您打開蓋,刺到自己身上,采一些血。筆分析采樣,通過藍牙向智能手機應用程序報告其結果。采樣、分析和傳輸所需的能量都來自您打開蓋這一動作——器件本身沒有其他的電源。
微小的Cortex?-M0微控制器單元(MCU)在這種回收電源的支持下以非常小的占空比工作,并不適合作為網站主機——或者任何其他類型的HTTP終端。但是,ARM依然裝配了一個平臺,能夠通過無線集線器匹配,把這種微小的端點放到基于網絡的IoT中。
平臺從ARM的微小mbed內核程序開始:含有單線程監視程序的服務包,傳感器接口和無線調制解調器驅動,以及傳送數據用的足夠的協議堆棧。舉一個例子,NXP在其集成了低功耗無線收發器的MPU射頻系列MCU中使用了mbed。NXP首席產品應用工程師Ian Morris解釋說,采用微小的輕型監視程序,mbed為集線器提供了Thread連接。Thread是一種多方協議,用于IoT端點。它使用了IEEE 802.15.4無線網格網的6LoWPAN協議,支持IP可尋址以及高級加密系統(AES)。
通過Thread連接物體和智能集線器,或者通過藍牙連接智能電話,通過互聯網,建立從支持HTTP連接的物體到設備的通路,還可以連接至云端。ARM認為這種異構連接不僅是支持ReSTful數據會話的方法,而且還是在微小物體和云之間劃分大規模嵌入式操作系統的方法:操作系統即服務(圖2)。
圖 2.一個完整的嵌入式操作系統可以在非常簡單的物體、集線器和云之間進行劃分。
幾個問題
在您提出疑問之前,這看起來似乎很好。最先提出異議的是控制工程師。在他們的環境中,IoT必須支持傳感器計算響應環路,其可靠性和固定延時必須有保證——至少是確定性的延時。但無論802.15.4網格網,還是6LoWPAN或者HTTP都不能保證服務達到這一水平。關鍵控制環路必須使用本地的確定性網絡。物體只能通過云端獲得非實時服務,例如,數據記錄、用戶接口,或者離線自適應監視和調整等。
一個非常有趣的研究領域是怎樣結合本地簡單的實時反饋環路和復雜得多的算法,例如,狀態估算器、預測算法,或者機器學習等,通過非確定性的鏈接與控制環路分開。大計算量算法會在云端運行,可以訪問企業規模的數據集。對于物體或者集線器而言,控制環路可以是本地的。而鏈接將很有可能是ReSTful HTTP鏈路。這一體系結構功能很強大,但是也存在穩定性和可靠性等切實問題。
控制工程師提出了他們的問題后,電源管理專家也有異議。首先,JSON或者XML等人類可讀格式在墻插電源和帶寬無限的環境中是非常方便的,但是在獨立的電池供電或者能量回收無線系統中,幾乎不可能使用。這一問題對于傳感器而言更嚴重,傳感器的負載可能只有幾個字節,而占空比會很長。
讓我們看一個簡單的實例。即使是智能電話中魯棒的電池也無法勝任IoT集線器隨意完成的工作。在一次特別有趣的ARM TechCon主題演講中,谷歌開發人員提議Colt McAnlis介紹了商場里智能電話的窘境。
他介紹說,“每隔10英尺您就會走到另一個藍牙零售廣告信標的范圍內。信標會連接您的電話。它會讓您的電話讀取其GPS位置,通過4G網絡連接至云端應用程序,報告其位置,以及您的購物歷史,然后下載某些制作精美的廣告和產品介紹。再過10英尺,會有另一個信標,另一次4G連接,更多的圖片廣告。在這種環境下,一塊新電池能夠持續工作一小時就很不錯了。”
但是這些在Muller提出的IoT開發人員最關心的一個問題面前就顯得無關緊要了:既不是性能也不是功耗,而是可信問題。IoT干線已經延伸到寫字樓、家庭和汽車中——支線也滲透到了危險的機器中、安全系統中,以及人體中,安全越來越重要,再也不是可有可無的,而且很難實現。
目前源自網絡的IoT是依靠會話層安全(TLS):端到端對稱負載加密。TLS本質上對于欺騙和人在中間攻擊是無能為力的。的確很難找到一種加密方法,微小物體支持它,也能夠有效的抵御有組織的攻擊。
最難的一個問題是怎樣保護加密密鑰。NXP的Morris觀察到,目前有些芯片能夠保護不受側面通道的攻擊,甚至能夠保護安全密鑰庫。他提醒說,“扔掉一個燒壞的智能燈泡就意味著您交出了智能家庭的密鑰。”安全智能卡一般會被保護不受物理攻擊的威脅,除此之外,業界對保持密鑰不受持續性攻擊方面還沒有太多的經驗。
Muller指出在不同的環境下有同樣的問題。ARM雇傭了專業服務來建立無線網絡,為TechCon提供智能電話應用軟件。ARM的一個黑客小組只花了幾個小時的時間就完全攻破了網絡。除了其他的脆弱點之外,他們還發現了無線集線器上有一個未受保護的加密密鑰庫。
細分的未來
這些問題并不會阻止IoT繼續沿網絡這種線路發展——實際上,成為物物聯網(WoT,Web of Things)。但是技術問題,還有大公司但凡有希望建立他們自己事實上的標準都不會彼此合作,這些導致了細分。
我們將看到,新出現的WoT按照不同的企業而分散開,大公司會在其客戶基礎上打造概念上相似但是不具有互操作性的平臺。我們還會看到按照功能進行細分,可靠性、確定性或者特殊的網絡需求等問題都促使對網絡進行分段劃分。
不幸的是,我們將清楚的看到,整個WoT經過了一系列的災難性攻擊后,供應商單打獨斗的工作以保護其產品安全并不能實現全系統的整體安全。這種未來是不可避免的。但是考慮到企業IT系統、所謂的安全政府系統,以及國家電網中那些尚未解決的安全漏洞,我們在這方面還缺少經驗,那么,成功的攻擊在未來也有可能是不可避免的。“最小公分母”是有代價的。