如何使用指纹认证保障基于微控制器的物联网设备安全

作者:Bill Giovino

投稿人:DigiKey 北美编辑

为了确保产品或系统的安全性,设计人员承受的压力越来越大。尤其当这些产品或系统需要连接到物联网 (IoT),更可谓“压力山大”。许多已公开的黑客事件表明密码的脆弱性,个人识别码 (PIN) 可以轻松复制,基于近场通信 (NFC) 的徽章亦可轻松窃取。设计人员既需要提高安全性,同时又要控制成本和设计时间,而使用指纹识别 (ID) 即可一举两得。

然而,指纹安全往往难以实现。使用微控制器或数字信号处理器 (DSP),结合指纹识别固件、数据处理和调节以及主机通信,从头开始设计指纹扫描系统,技术细节可能相当复杂,学习曲线也相当陡峭。

所幸,目前市面上现成的硬件和软件可以解决指纹识别系统的大部分难题。本文将阐示指纹识别的基础知识,并介绍 DFRobot 推出的 SEN0188。通过通用异步接收器/发射器 (UART) 接口,这款自足式指纹登记与验证单元可与任何主机微控制器连接。

此外,本文还将展示如何使用 SEN0188 为物联网网络设备加入指纹识别安全功能,从而让设备更能抵御黑客攻击或物理攻击。

指纹识别的基础知识

指纹是每只手的手指指腹上凹凸的纹路,指纹能增加手指的摩擦力,从而更容易发力并抓紧物件。指纹的形成部分源于 DNA 的表达,部分受随机因素影响,因而每个人的指纹纹路都是独一无二的,几乎不可能存在两个人拥有相同的指纹。即使是同卵双胞胎,指纹也有所不同。因此,对于要求高安全性的系统,指纹识别是十分可靠的检测方法。

指纹识别系统具有两种操作 - 登记与验证。指纹登记是识别并存储清晰的指纹以供日后使用。使用专用扫描仪一次或多次扫描指纹,将其数字化,然后分析数字化指纹,确保指纹有效。如果指纹有效,则将其连同 ID 号、姓名和徽章号等个人识别信息,一并存储在闪存或 EEPROM 等非易失性存储器中。如果指纹无效,则必须再次扫描手指。

指纹验证是扫描清晰的指纹,并与非易失性存储器中存储的数字化指纹进行比照以验证。然后指纹扫描系统将向主机指示扫描的指纹是否与存储器中存储的有效指纹相匹配,或者匹配是否无效。

物联网访问安全性

许多以前独立的系统现在都可通过物联网连接,其中包括一些要求中等安全性的系统,如学校和企业。但是,非法侵入水处理厂和电网等关键系统可能会造成极具破坏性的影响,因此仍需要加强安全性。对于这些系统,开发人员一直在寻求更好的方法,以最低的成本确保系统安全性,因为许多物联网设备本身的设计成本就很低廉。在这些系统中,可以轻松添加指纹识别与安全徽章。

这些物联网网络的优点在于,指纹扫描结果的通知可以通过网络传输。如果检测到未经授权的访问,就可以发出警报,或是在极端情况下,物联网网络可以锁定所有系统,甚至致电相关机构。

在进行用于安全识别的指纹登记时,最好有技术人员或安全专业人员在场,以确保操作正确。扫描仪和手指都必须保持干净。技术人员必须严格验证被扫描人员的身份。一旦登记成功,安全专业人员就可以添加人员姓名或员工 ID 号等其他信息。

对于许多预算紧张的设计人员而言,从头开始设计指纹扫描系统所涉及的技术细节使得实施难度过大。目前,DFRobot 推出的 SEN0188 指纹传感器(自足式指纹登记与验证单元)等现成硬件可以解决指纹识别系统的大部分难题(图 1)。

图 1:DFRobot 的 SEN0188 指纹传感器单元包含指纹登记与验证所需的所有硬件和固件,可通过 UART 接口与微控制器通信。(图片来源:DFRobot)

SEN0188 的工作电压范围为 3.8 至 7.0 V,最大电流为 130 mA。该传感器的工作温度范围宽(-20℃ 至 + 60℃),可承受的相对湿度高达 80%,适用于许多户外应用。

如图 1 所示,用户将手指按在左侧的指纹光学传感器上,只需不到一秒,即可获取指纹图像用于登记或验证。每个指纹都作为 512 字节的模板文件存储在内部闪存中。SEN0188 的内部闪存最多可存储 1000 个指纹。

SEN0188 的 UART 可通过传感器底部进行连接(图 2)。

图 2:DFRobot 的 SEN0188 指纹传感器底部配有 UART 接口。(图片来源:DFRobot)

上电后,SEN0188 的默认波特率为 57600 bps,可在 9600 bps 到 115200 bps 之间进行调整。UART 接口使用以下信号:

引脚编号 信号名称 方向 描述
1 VTOUCH - 未连接
2 SOUT - 未连接
3 VIN 输入 电源输入(3.8 至 7.0 V)
4 TD (Tx)
输出 UART 发送数据输出
5 RD (Rx)
输入 UART 接收数据输入
6 GND   信号接地

表 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)

该电路板插入开发板右下方的 ESP-01 连接器,如图 3 所示。WRL-13678 配备独立板载天线,使开发板可轻松连接 2.4 GHz 的 Wi-Fi 网络。

在带 Wi-Fi 网络的物联网安全系统中,任何安全访问或拒绝访问都可以传输到所有物联网节点。对于允许访问其他高度受限的区域或系统,这一点相当有用。例如,如果设施内部某个高度受限区域接收到访问请求,但是拥有许可的人均未登录,所有入口的指纹扫描仪亦没有记录,那么系统可能会将此访问尝试归为潜在的安全违规并采取适当措施。

对于这种安全级别的设施而言,要求离开设施时也进行身份验证并不罕见。这不仅能为所有出入口提供记录,还防止未经授权人员逃离,同时提醒安全专业人员。

实现指纹安全

SEN0188 传感器通过 UART 接口,使用简单的命令集与主机 STMicroelectronics 开发板进行通信。命令集共有 22 个命令,包括登记、验证和删除指纹;各种搜索命令;直接读写内部闪存;读取状态;以及设置传感器的安全性。此外,传感器还可以检索任何存储指纹的位图图像并发送至主机,而开发板的 TFT LCD 可以显示这些指纹图像。

使用 PIN 码或密码,即可在指纹识别站启用指纹登记。不过,从安全保护站等物联网网络端点向开发板发送命令来启用指纹登记,则相对更安全。另外,手机或平板电脑等移动设备可用于授权登记,也可用于验证指纹登记是否成功。

SEN0188 的指纹光学传感器区域带 LED 背光,主机使用 OpenLEDCloseLED 命令即可轻松开启和关闭。只有在系统允许接受指纹时才点亮指纹传感器,这在安全环境中相当有用。发生安全事件时,可以关闭背光以指示当前不接受访问,即使是授权人员也不例外。

SEN0188 默认 UART 帧使用 1 个起始位、8 个数据位和 1 个停止位。数据的最低有效位 (LSB) 先发送。上电后,SEN0188 需要 300 ms 进行初始化并运行自检,然后向主机发送 55h 的单字节,指示已准备就绪。主机也可以向传感器发送 GetEcho 命令以请求 55h 确认码。若主机未接收到该字节,则表示 SEN0188 发生故障、SEN0188 与主机之间的通信中断,或 SEN0188 未通电。

SEN0188 旨在为指纹认证提供安全环境,也能提供密码保护等诸多安全功能。4 字节的默认出厂密码为 00000000h,系统投入应用前必须更改密码。使用传感器设置密码命令 SetPwd,可将密码存储在传感器的内部闪存中。

为了提高安全性,传感器命令集不包括读取密码命令。如果传感器密码丢失,SEN0188 传感器将无法使用 - 没有硬件或软件复位可以恢复传感器或存储的指纹。

传感器的 4 字节默认地址为 FFFFFFFFh,存储在内部闪存中,使用 SetAddr 命令即可更改。

所有指纹认证和存储都在传感器内部执行,以防篡改存储的指纹或验证过程。

首次使用前,删除指纹扫描仪中存储的所有指纹是明智的安全预防措施。Empty 命令支持该功能,该命令可删除传感器内部闪存中存储的所有指纹模板。

总结

在嵌入式和物联网系统应用中,安全访问的重要性与日俱增,但同时也需要在成本、简易性和有效性之间取得适当平衡。如上所述,设计人员借助 DFRobot 的 SEN0188 指纹传感器,即可快速设计原型和开发系统,确保敏感区域的访问安全性。将该传感器与带 TFT LCD 显示屏的 STM32F7308-DK 开发套件和 SparkFun Electronics 的 WRL-13678 Wi-Fi 板连接,即可开发简单、可靠且易于使用的安全系统。

免责声明:各个作者和/或论坛参与者在本网站发表的观点、看法和意见不代表 DigiKey 的观点、看法和意见,也不代表 DigiKey 官方政策。

关于此作者

Bill Giovino

Bill Giovino 是一名电子工程师,拥有美国雪城大学的电气工程学士学位,是先后从设计工程师、现场应用工程师跨界到技术营销部门的少数成功人士之一。

25 年来,Bill 一直喜欢在技术和非技术用户面前为包括 STMicroelectronics、Intel 和 Maxim Integrated 在内的许多公司推广新技术。在 STMicroelectronics 工作期间,Bill 作为领头人帮助该公司在微控制器领域取得了早期成功。在 Infineon,经过 Bill 精心策划,该公司的首个微控制器设计便在美国汽车领域大获全胜。作为 CPU Technologies 公司的营销顾问,Bill 帮助了许多公司,让其表现不佳的产品大获成功。

Bill 是物联网的早期尝试者,包括将第一个完整的 TCP/IP 协议栈植入微控制器。Bill 秉持“教育式销售”信条,在通过在线促销产品时强调清晰明了的书面沟通的重要性。他是广受欢迎的 LinkedIn 半导体市场营销群的群主,精通 B2E。

关于此出版商

DigiKey 北美编辑