使用電子紙顯示器,指出關鍵 IoT 節點中的嚴重錯誤與安全性損害
資料提供者:DigiKey 北美編輯群
2020-08-27
物聯網 (IoT) 和工業物聯網 (IIoT) 節點逐漸用於越來越安全的系統中。在這些系統內,網路的整體安全與保障比網路上個別元件的功能性更重要。這表示,如果某個 IoT 節點發現自身遭到破壞,或將會發生無法挽回的韌體錯誤,則最安全的做法可能是盡可能立刻將節點斷電,以免節點和網路發生潛在的危險後果。
不過,節點一旦斷電,揮發性記憶體的所有內容都會遺失。若將偵錯資料儲存在 EEPROM 或快閃記憶體等非揮發性記憶體中,則耗時又耗電,還會增加潛在損害的風險。此外,假如電源啟動順序也遭到破壞,則系統遭到破壞的程度,可能會導致無法在電源啟動時回讀可信賴資料。
本文將說明如何輕鬆將電子紙顯示器 (EPD) 連接到 IoT 或 IIoT 節點,以顯示最後一個已知的錯誤,以視覺方式指出斷電事件的原因,以便技術人員採取適當的動作。接著會以 Pervasive Displays 和 Display Visions 的電子紙顯示器為例,探討如何將這些顯示器連接到微控制器並進行設定,以在不耗電或耗用極少電力的情況下提供診斷資訊。
高安全性的 IoT 與 IIoT 節點
IoT 和 IIoT 節點的設計人員責任越來越大,需要採取越來越精細的安全方法,以確保主機微控制器正常運作。一般來說,有三種安全威脅必須加以防範:
- 微控制器韌體故障
- 從感測器、鍵盤、序列周邊裝置,或其他外部裝置輸入的無效資料
- 惡意人士的行為
微控制器韌體故障的原因有很多,例如安裝的韌體有編碼錯誤;計算無效而導致故障;或是在極罕見情況下,微控制器發生硬體故障。經妥善編寫的韌體,通常會藉由清理子常式和函數的輸入來偵測故障。在韌體鎖住或重複循環的極端情況下,監控設備逾時會將韌體還原,方法是引導至錯誤控制子常式或執行微控制器硬重置。
若基於外部感測器故障或遭到竄改等原因而發生輸入資料失效的情況,則會有超出範圍的資料,且可能未適當納入到應用程式碼的考量中。舉例來說,如果控制室中有人,但環境溫度感測器卻錯誤顯示 250°F 的高溫,可能代表感測器故障或遭到惡意竄改。粗心的韌體編程者可能並未針對如此高的溫度讀數編寫程式碼,後果的嚴重性可大可小,小至資料記錄錯誤,大至允許入侵者存取安全區域,或嚴重到發生控制演算法計算錯誤,則可能會導致設備故障或人員嚴重受傷。潛在的不良後果不少。
惡意人士的不同之處在於,他們可能蓄意造成 IoT 節點故障。駭客攻擊的舉動引發故障時,可能會被安全常式偵測為入侵,但也可能偽裝成韌體故障或無效的外部輸入資料。上述環境溫度讀數達到 250°F 的範例,可能是因為某個想測試入侵方法的惡意人士,在測試韌體於如此高讀數下的行為表現;例如若 250°F 的環境溫度讀數被誤判為火災,門可能會自動解鎖。
對韌體故障做出回應
無論錯誤來源為何,高安全性 IoT 及 IIoT 節點中的微控制器韌體絕不得容許故障。任何及所有故障都必須進行編碼處理並加以圍阻。子常式和函數的輸入必須進行清理,所有感測器輸入資料必須進行驗證。監控設備計時器必須進行編程,以根據已知的執行時間,偵測出費時過久的鎖定程式碼或循環程式碼。
在高安全性的 IoT 或 IIoT 節點中偵測到韌體故障時,無論故障是出於意外還是蓄意,韌體都必須儘早圍阻事件發生。常見的動作包括嘗試對故障進行補償。如果某個感測器發生故障且總是超出範圍,韌體可能會將此感測器設定成「跛行模式」,以補償不良的資料,直到感測器更換為止。若韌體常式回傳的結果不正確,則可能會重新進行初始化。通常,錯誤程式碼會透過網路傳送,以向網路主機告知問題。
不過,某些高安全性的 IoT 或 IIoT 節點有一類特別的故障,無法也不得對其進行補償或應對。這類故障包括實體竄改偵測、內部檢查碼失效、某些內建自我測試 (BIST) 失效,以及因韌體遭到破壞或系統遭駭所導致的任何故障。對於這些高安全性情況,唯一的選擇是立即安全地將節點斷電。當節點無法回應網路請求時,網路主機會判定節點已斷電。如果節點在未向主機傳送錯誤報告的情況下斷電,並且忽視重新啟動的網路命令,則表示發生嚴重故障,必須派遣技術人員實際檢查節點找出原因。
然而,節點一旦斷電,所有揮發性記憶體和狀態資料都會立即抹除。也因此,就算有辦法診斷出關機的原因,診斷的難度也非常高。可選擇將診斷資料儲存在 EEPROM 或快閃記憶體等非揮發性記憶體中,然後再將節點斷電。但問題在於,寫入這幾種記憶體需要時間,這期間節點必須保持啟動,因此可能會導致額外的損害。
用電子紙診斷嚴重錯誤
電子紙顯示器 (EPD) 的耗電量很低,可先儲存並顯示錯誤及診斷資訊,緊接著再將節點斷電。節點斷電後,EPD 能在無電力的情況下繼續呈現顯示影像長達數天或數週。顯示器上的資訊能以視覺方式向技術人員指出關機原因,以便其判斷是否能安全將 IoT 節點開機,或是該讓其脫離網路,以進行詳細分析。
Pervasive Displays 的 E2271CS091 EPD 模組,就是一款適合用來顯示診斷資訊的 EPD 範例。此模組能藉由 SPI 序列介面連接到任何相容的微控制器,並擁有高對比 2.71 吋顯示器 (圖 1)。
圖 1:E2271CS091 EPD 模組擁有高對比 2.71 吋顯示器,解析度為 264 x 176 畫素。此模組具有寬廣的視角,並能藉由 SPI 介面連接到任何相容的微控制器。(圖片來源:Pervasive Displays)
E2271CS091 EPD 模組使用主動矩陣薄膜電晶體 (TFT) 顯示器,原生解析度為 264 x 176 畫素 (117 dpi)。因此顯示器能呈現許多資訊,協助技術人員進行診斷。防眩螢幕擁有將近 180˚ 的寬廣視角,即使安裝在不尋常的位置,仍可輕易查看顯示器。此 EPD 需要 3.0 V 的電源供應器。
主機微控制器經由顯示器的 24 引腳帶狀連接器,透過 SPI 介面將資料傳送至 EPD。SPI 資料通訊僅有單向傳輸,即從主機微控制器傳遞至 EPD。若要從 EPD 傳遞回主機微控制器,唯一的通訊途徑是帶狀連接器上的「裝置忙碌」引腳,這可大幅簡化介面,並提高所顯示診斷資料的可信度。
如果偵測到錯誤或駭客入侵舉動,且錯誤嚴重到需要將節點關機,則必須先以韌體、監控設備或其他方法進行圍阻。接著必須將控制權交給轉移給錯誤記錄常式,再藉此將資料傳送至 EPD。此錯誤記錄常式應該是優先權最高的任務,以免資料中斷或受損。為達到最高的可靠性,建議讓此錯誤記錄常式完全自給自足,而不調用外部的子常式或函數。在理想情況下,錯誤記錄常式應位於永遠受到寫入保護的快閃記憶體中,以保障程式碼的完整性,即使在韌體更新後也不受影響。
在以錯誤資料更新 EPD 之前,主機微控制器應先透過 SPI 介面,將軟重置命令傳送至 EPD,以清除顯示器。接著會以一連串的位元組序列傳送黑白顯示資訊;這些位元組的每一個位元都代表 EPD 上的一個畫素。序列完成後,錯誤記錄常式即可關閉微控制器。不同製造商的微控制器有不同的關閉方式,視架構和製造商而定。在某些情況下,且基於安全理由,製造商可能會有非公開的微控制器關閉方式,需索取才會提供。也可選擇使用外部電路來斷開微控制器的供電,但這會增加系統的複雜性,進而降低可靠性。因此,對微控制器進行韌體關閉控制會是首選方式。
為了協助使用 EPD 進行開發,Pervasive Displays 提供 B3000MS034 EPD 擴充套件 (圖 2)。套件中含有一片擴充板,板上帶有一個連接器,可用於 24 引腳 EPD 顯示器,還有一些連接器可用於其他需要 40 引腳和 26 引腳連接器的 Pervasive Displays EPD。此擴充板與 Texas Instruments 的 LaunchPad 開發及評估套件相容,也能搭配其他開發套件使用。20 引腳橋接纜線可連接到 20 引腳 90˚ 排針座連接器,若焊接至擴充板,就可在開發期間監測送往 EPD 的控制訊號。
圖 2:在 Pervasive Displays 的 E2271CS091 EPD 模組擴充套件中,擴充板上有 24 引腳連接器可連接顯示器的 24 引腳帶狀纜線。套件中還有橋接纜線和一個 90˚ 的 20 引腳排針連接器。(圖片來源:Pervasive Displays)
另一個 EPD 選擇是 Display Visions 的 EA EPA20-A (圖 3)。
圖 3:Display Visions 的 EA EPA20-A EPD 是 172 x 72 顯示器,可在未連接電源的情況下維持顯示狀態。(圖片來源:Display Visions)
此 EPD 擁有 172 x 72 灰階顯示器,並且也使用 SPI 介面與主機微控制器通訊。此 EPD 的功耗極低,僅需單一 3.3 V 電源,而且在顯示內容變更期間只耗用 40 mW 功率。Display Visions 的 EA EPA20-A EPD 也能在沒有電力時維持顯示狀態。
結論
有時,高安全性的 IoT 與 IIoT 節點必須在發生嚴重的韌體錯誤或偵測到威脅時以斷電的方式進行應變。這會導致揮發性資料全部遺失,包括主機微控制器的內部狀態。不過,狀態和診斷資料可在關機前傳送至連接的 EPD,並顯示長達數日或數週。如此即可為技術人員提供所需的資訊,以判斷關機的原因,若有必要,更可在日後採取預防措施,以保障節點與網路的安全。

聲明:各作者及/或論壇參與者於本網站所發表之意見、理念和觀點,概不反映 DigiKey 的意見、理念和觀點,亦非 DigiKey 的正式原則。