如何利用指紋驗證保障微控制器型 IoT 元件的安全性
資料提供者:DigiKey 北美編輯群
2019-06-06
為了確保產品或系統的安全性,設計人員面臨的壓力與日俱增,尤其是要連接物聯網 (IoT) 時。許多公開的駭客事件已顯示出密碼的脆弱性、個人識別碼 (PIN) 是多麼容易被複製,而近場通訊 (NFC) 型識別證又可能遭竊。設計人員需要提升安全性,同時也必須控制成本與設計時間。若要同時達到這兩項目標,其中一個方法便是指紋辨識 (ID)。
然而,指紋安全性在實作上一直面臨挑戰。若想使用內含指紋辨識韌體、資料處理與調整功能,以及主機通訊功能的控制器或數位訊號處理器 (DSP),從零開始設計指紋掃描系統,不僅涉及到極為複雜的技術細節,而且前期的學習成本相當高。
幸好現在已有現成的硬體和軟體,可執行指紋辨識系統幕後的所有繁複工作。本文將說明指紋辨識的基本知識,然後再介紹 DFRobot 公司的 SEN0188 指紋註冊與驗證單元。這款自足式單元可介接到任何搭載通用型非同步收發器 (UART) 介面的主機微控制器。
接下來,本文將展示如何使用 SEN0188,將指紋辨識安全功能加入到使用 IoT 網路的設施,對駭客或實體攻擊更有抵抗能力。
指紋辨識的基本知識
指紋是每隻手指及大拇指指腹上的紋路,其摩擦力可讓手指更輕易抓取物品。受到 DNA 的部分影響以及隨機產生的過程,每個人的指紋紋路都是獨一無二的,兩個人擁有相同指紋的可能性微乎其微,甚至連同卵雙胞胎的指紋也不同。因此,指紋辨識成了高安全性系統的絕佳檢測方法。
指紋辨識系統的操作分成兩個部分:註冊與驗證。在指紋註冊程序中,會先識別清晰的指紋,然後儲存以供日後使用。指紋會由專用掃描器掃描一次或多次,然後進行數位化處理。隨後會分析數位化指紋,確保其為有效指紋。如果指紋有效,則會將其連同個人身份資訊 (如身份證號、姓名、識別證號碼等),一起儲存在快閃記憶體或 EEPROM 等非揮發性記憶體中。如果指紋無效,則必須再掃描一次。
在指紋驗證程序中,會對清晰的指紋進行掃描,然後與儲存在非揮發性記憶體中的數位化指紋進行比對以進行驗證。接著,指紋掃描系統會指示主機,掃描的指紋是否與儲存在記憶體中的有效指紋相符,還是比對無效。
IoT 存取安全性
IoT 連接了許多原本獨立的系統。在這些系統中,有些需要中度安全性,例如學校與企業的系統。不過,如果水處理廠和電網等重大系統遭到非法入侵,會造成毀滅性的後果,因此需要加強安全性。針對這些系統,開發人員一直在尋求更好的方式,以最少的成本確保安全性,因為許多 IoT 元件本身的設計成本就很低廉。在此類情況下,可以輕鬆加入指紋辨識功能以及安全識別證。
在這些網路中採用 IoT 的優勢在於,指紋的掃描結果可透過網路傳輸來通知。若偵測到未授權的存取,警報會響起,甚至在極端情況下,IoT 網路可鎖住所有系統,甚至撥打電話給主管機關。
在進行安全辨識用途的指紋註冊時,最好有技術人員或安全專業人士在場,以確保正確執行註冊作業。掃描器和手指皆要保持乾淨。技術人員必須確實檢查受掃描者的身份。註冊成功後,安全專業人士可以加入受掃描者姓名或員工識別證編號等額外資訊。
從頭開始設計指紋掃描系統涉及到很多技術細節,因此對許多預算緊繃的設計人員來說難以實行。現在多虧有了 DFRobot 的 SEN0188 指紋感測器等現成硬體,就可靠這個自足式指紋註冊與驗證單元執行指紋識別系統的所有「苦差事」 (圖 1)。
圖 1:DFRobot 的 SEN0188 指紋感測器單元包含指紋註冊與驗證作業所需的全部硬體與韌體,可透過 UART 介面與微控制器進行通訊。(圖片來源:DFRobot)
SEN0188 可在 3.8 至 7.0 V 的電壓範圍內工作,並最多耗用 130 mA 的電流。其具有寬廣的工作溫度範圍 (-20°C 至 +60°C),且能承受高達 80% 的相對濕度,因此適合用於許多戶外環境。
圖 1 顯示,使用者將手指放在左邊的指紋光學感測器上。取得註冊或驗證所需的指紋影像,只需不到一秒鐘的時間。每個指紋都會存成 512 位元組的範本檔案,存入內部快閃記憶體中。SEN0188 的內部快閃記憶體可儲存多達 1000 個指紋。
SEN0188 的 UART 可從感測器下面進行存取 (圖 2)。
圖 2:UART 連接處位於 DFRobot 的 SEN0188 指紋感測器下面。(圖片來源:DFRobot)
開啟電源時,SEN0188 的預設鮑率為 57600 bps,此數值可在 9600 bps 至 115200 bps 之間調整。UART 連接使用下列訊號:
|
表 1:SEN0188 的引腳配置採用非同步 UART 連接與主機進行通訊。(表格來源:DFRobot)
此外,UART 介面還可連接到個人電腦或筆電上的 DFRobot 軟體,以輔助開發指紋系統,包括註冊與驗證韌體的除錯作業。
在微控制器系統中使用 DFRobot 的 SEN0188
在自足式微控制器系統中,SEN0188 介接到的板件需具有功能足夠的微控制器,並採用視覺指示器,以指出放在感測器上指紋的狀態。STMicroelectronics 的 STM32F7308-DK 探索套件,擁有自足式指紋辨識系統所需的全部功能。此套件採用功能強大、搭載 Arm® Cortex®-M7 核心的 STM32F730I8K6 微控制器。此板件具有高速時脈用的 25 MHz 振盪器;以及低速時脈用的 32.768 kHz 振盪器。此板件還有 64 KB 的晶片上程式快閃記憶體、額外的 64 MB 外部快閃記憶體,以及 256 KB 系統 SRAM。
在周邊裝置支援與通訊方面,此板件有多個序列介面,包括三個 I2C 和五個 SPI 介面,還有四個 UART/USART,可輕易與 SEN0188 進行通訊。當以 3.6 V 供電時,STM32F730I8K6 微控制器可相容於 DFRobot 指紋感測器的 TTL 邏輯層級介面。
此探索板還隨附 Arduino™ 相容的子板 (圖 3);雖然這塊板件在開發過程中很有用,但在指紋辨識應用中並不需要用到,因此可從主板拆下來。
圖 3:STMicroelectronics 的 STM32F7308-DK 探索板擁有自足式指紋辨識系統所需的全部功能。左上方連接的板件可支援 Arduino 子板,而右下方的 ESP-01 連接器可支援任何相容的 ESP8266 板。(圖片來源:STMicroelectronics)
另外,此板件還有一個 240 x 240 TFT LCD 顯示器,能以視覺方式指示指紋是否通過驗證。
若要連接到 Wi-Fi 網路,STM32F7308-DK 探索套件具有插槽,可連接任何業界標準的 ESP8266 Wi-Fi 板。例如,SparkFun Electronics 的 WRL-13678 便是一款與 ESP8266 相容的板件 (圖 4)。
圖 4:SparkFun Electronics 的 WRL-13678 是 ESP8266 相容板,且具有 ESP-01 排針座連接器。此板件可插入 STMicroelectronics 探索板,輕鬆提供 Wi-Fi 存取能力。(圖片來源:SparkFun Electronics)
如圖 3 所示,此板件可插入探索板右下方的 ESP-01 連接器。WRL-13678 具有自己的板載天線,可讓探索板輕鬆連接 2.4 GHz Wi-Fi 網路。
在 Wi-Fi 連網的 IoT 安全系統中,任何的安全存取或拒絕存取,都可傳輸到任何 IoT 節點。此功能相當有用,可存取其他受到嚴格限制的區域或系統。舉例來說,有人要存取設施內部受到嚴格限制的區域,但沒有適當的權限,卻試圖在任意入口處登入,而遭到指紋掃描器回報,系統就可將此嘗試動作歸類為潛在的安全違反事項,並採取適當行動。
具備此安全等級的設施,同時又對離開設施的人員要求進行身份驗證,也是很常見的做法。這不僅能提供所有出入紀錄,還能將未授權人士困在建築物內,同時警告保全人員。
指紋安全功能實作
SEN0188 感測器可使用簡易的命令集,透過 UART 介面與 STMicroelectronics 的主機探索板進行通訊。命令共有 22 個,包括指紋的註冊、驗證、刪除;多種搜尋命令;內部快閃記憶體的直接讀寫;狀態讀取;感測器安全性的設定。此外,感測器還可取得任何已儲存的指紋點陣圖影像並傳輸到主機上,讓探索板在自己的 TFT LCD 上顯示該影像。
指紋註冊功能可在指紋辨識站以 PIN 或密碼啟用。不過,更安全的註冊方法是從網路某處 (如安全防護站) 將命令傳輸到探索板 IoT 端點,以啟用註冊功能。另外,手機或平板電腦等行動裝置也可用來授權註冊,並可用來確認註冊是否成功。
SEN0188 上的指紋光學感測器區域具有 LED 背光,可使用 OpenLED 和 CloseLED 命令,由主機進行開啟與關閉。在安全環境中,此功能相當實用,可在系統準備接受指紋時才會亮起指紋感測器。在安全事件發生期間可以關閉背光,以指出此時不會接受任何存取要求,即便是已授權人員也不例外。
SEN0188 預設的 UART 訊框採用 1 個開始位元、8 個數據位元,以及 1 個停止位元。首先會傳輸數據的最低有效位元 (LSB)。啟動電源後,SEN0188 需要 300 ms 進行初始化並執行自我檢測。然後會傳輸一個位元組 55h 到主機,表示已經準備就緒。主機也會發送 GetEcho 命令到感測器,請求該 55h 確認碼。如果主機未收到這個位元組,則表示 SEN0188 發生故障、SEN0188 與主機間的通訊中斷,或是 SEN0188 尚未啟動。
SEN0188 的設計旨在提供指紋驗證的安全環境,並提供許多安全功能,包括密碼保護。預設的四位元組出廠密碼是 00000000h,且應在現場裝設系統前變更此密碼。密碼可藉由感測器的密碼設定命令 SetPwd 儲存在感測器的內部快閃記憶體中。
為了提高安全性,感測器命令集並未包含密碼讀取命令。若遺失感測器密碼,便無法使用 SEN0188 感測器。不提供任何硬體式或軟體式重設功能,因此無法還原感測器或已儲存的指紋。
另外,感測器還有一個預設的四位元組位址 FFFFFFFFh,儲存在內部快閃記憶體中,可使用 SetAddr 命令進行變更。
所有的指紋驗證與儲存作業都在感測器內部執行,這可避免儲存的指紋或驗證程序遭到竄改。
在初次使用之前,將所有儲存在指紋掃描器中的指紋全數刪除,是較明智的安全預防措施。Empty 命令可用來刪除所有儲存在感測器內部快閃記憶體中的指紋範本。
結論
對嵌入式系統與 IoT 系統來說,存取安全性是越來越重要的應用,但需要在成本、簡易性和有效性之間取得恰當的平衡。如前文所述,DFRobot 的 SEN0188 指紋感測器可讓設計人員快速開發原型產品與系統,提供敏感區域的安全存取功能。只需介接搭載有 TFT LCD 顯示器的 STM32F7308-DK 探索套件以及 SparkFun Electronics 的 WRL-13678 Wi-Fi 板,便可開發出簡易、可靠且容易使用的安全系統。

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