在動物界有一說法——數量多就安全(safety in numbers),這是真的。然而,物聯網中,未來十年預計將有數十億台互通的設備,而這些設備即使數量再多也不會降低安全風險。實際上,如果這麼多設備可能共享相同的程式碼庫(codebase)或硬體設計,那麼只會提高風險。

實際情況是,這世界將會更互通互連,無論在現實世界和網路上,都變得更容易侵犯個人空間。在某種程度上,現代社會沒有太多選擇,它需要透過互連性來滿足日漸增長的糧食生產、公共交通和能源分配需求。協調風險和需求這兩種的典範,將是新興的物聯網滿足已建立的IT基礎設施。

嵌入式產業(embedded industry)可以從企業部門學習到許多為了提供安全性而開發的技術,防火牆、認證、加密和入侵偵測都是從企業領域內開始發展。也許最重要的是,必須知道所有這些技術要能協調運作,不能只靠單一解決方案來確保IT的安全性,每項技術必須發揮各自的作用。

不幸的是,這種技術無法直接從IT領域轉移到物聯網。舉例來說,將防火牆設在點對點傳輸(ad hoc)的設備上是困難的(儘管嵌入式防火牆確實存在);相同地,對於在資源受限設備中配置入侵偵測功能,諸如智慧感測器和其他「邊緣節點(edge node)」,在實現可靠性方面也可能是困難的。然而,認證和加密的安全技術絕對可以——也應該——運用在嵌入式領域。

採取物聯網安全的必要措施是因為不同設備互通的方式。由於其性質,物聯網將面臨已知和未知的設備相對頻繁地加入和離開網路。當這些網路被認為是「本地(local)」,並且僅包括本地的設備時,安全風險可能較低。但實際上,無線設備可以從相當遠的距離加入「本地」網路,例如鎖住的門和高牆的實體障礙對無線訊號來說沒有或只有很小的障礙。

此外,即使有線介面也可能受到實體存取(physical access)的威脅,目前沒有任何安全措施曾被(或可以)運用。這些介面可以是任何類型的串列埠或並列埠,例如PCI Express、控制區域網路(CAN)、USB或甚至(且事實證明相當普遍)聯合測試工作群組(Joint Test Action Group,JTAG)/邊界掃描(Boundary Scan)。這個問題並不一定是介面本身缺乏安全性,而是設備和資料透過介面連接到網路這一方面缺乏安全性。

目前已經有一些保護有線介面的措施。USB Type-C的推出是為了防止未經授權的USB Type-C充電器和設備在系統上執行存取動作,也許其他主要的介面也應該採用類似的措施,特別是那些以資訊傳輸為主的通訊協定(protocol),雖然這些舉動無法保護早已部署的數百萬個設備,但未來至少有助於保護連接到物聯網的那些設備。

直到所有的有線和無線介面受到保護之前——甚至之後——現在有方法可遵循。例如,使用加密和身份驗證可以顯著提升物聯網的整體安全性,開放Web軟體安全計畫(owasp.org)已經確認一些IoT中所稱的攻擊表面區域(Attack Surface Areas),這些發生的主要原因在於缺少或不良地執行加密或雙重驗證(Two-Factor Authentication)。

20170510NT01P1 圖1 公開金鑰基礎建設(The Public Key Infrastructure,PKI)方法允許資料安全地傳送給其預期接收者。

許多支援物聯網功能的微控制器(MCU)已經支援加密和認證功能。例如ARM將其TrustZone技術運用到Cortex-M核心技術中,該技術目前廣泛地應用在物聯網市場。TrustZone技術提供電晶體層級的「硬線防火牆(hardwired firewall)」,讓受信任的軟體能完全隔離不受信任的軟體,由於是在硬體方面執行,所以TrustZone仍可提供許多物聯網應用所需的即時運作功能。

不知如何著手進行物聯網設計?ARM Design Start提供簡單快速的解決方案!

但即使採用加密和身份驗證,設備端仍可能受到威脅。越來越常見的攻擊形式透過要求系統重新啟動或更新,並在此時利用機會安裝惡意軟體,有一種解決方案是使用安全開機(Secure Boot),此技術確保系統中的韌體不會受到危害,此方法可能就像防止晶片上快閃記憶體(on-chip Flash)被覆蓋(overwrite)一樣簡單,或者像在啟動時驗證韌體一樣常見。舉例來說,當TrustZone與安全開機和受信任的操作系統一起使用時,它將建立ARM所稱的可信執行環境(Trusted Execution Environment,TEE)。

一些製造商現在採用自己專用的解決方案來支援安全開機,如恩智浦(NXP)開發的保證開機(High Assurance Boot)。透過儲存在晶片內建ROM記憶體中的軟體庫來執行,該軟體庫用來加密認證外接記憶體內的韌體,使用數位簽章(digital signature)和公開金鑰基礎建設來進行認證,韌體透過私密金鑰(private key)進行登入,並使用公共金鑰(public key)進行驗證,這種方法用來建立設備間的信任根(Root of Trust)。

20170510NT01P2 圖2 嵌入式應用中的可信執行環境防止核心運作受到外部應用程式的危害。(圖片來源:ARM)

建立設備間的信任根是物聯網的有效防禦機制,要求兩個設備間在交換任何敏感資訊之前必須進行身份驗證(被視為敏感資訊的類型通常像是登入網路的密碼)。在許多沒有信任機制的情況下,攻擊者利用缺乏要求驗證的漏洞,透過未加密資料交換的過程獲取密碼。

這種情況很容易發生。大多數無線通訊協定的應用早於物聯網的出現,特別是短距離協定,最初的預設為未加密的交換機制。幸運的是,最近新興的通訊協定,如Thread,將安全和加密「內建(built in)」於核心中,而藍牙現在強制採用加密金鑰交換(encrypted key exchange)以確保資料交換的安全。在選定的無線技術中了解並採用安全防護功能為現今產品設計的重點。

隨著數十億台設備開始連網,IT基礎架構的攻擊面也開始增加。由於許多目前正在安裝的物聯網節點——且未來也可能——沒有充分考慮到安全性,因而存在的威脅將造成困擾。毫無疑問地,確保物聯網節點安全的責任在於負責開發的原始設備製造商(OEM),而不是負責基礎設施安全的廠商。

這兩方將因為閘道器(gateway)而發生衝突:閘道器負責將物聯網資料和服務連接到網際網路中的其他設備,然而因為通道作用(channeling)本質上是一個全新的應用領域,目前尚不清楚誰將確保其安全,而且該如何做。目前沒有單一解決方案或供應商成為業界實際上的閘道器供應商,但嵌入式和企業部門將此視為目標。如同安全性,這方面不能完全仰賴別人,即使最安全的閘道器仍然需要確認在整個網路上的安全性。