4.7 指纹特征提取与密钥生成 4.7.1 指纹特征提取 指纹模块完成指纹采集、指纹登记、指纹 1:N 和 1:1 比对等与指纹有关的操作。它由高速信号处理器 DSP 芯片 TMS320VC5416、指纹传感器(滑动式)、高性能指纹比对算法等软硬件组成。采用 SPI 总线接口和控制器通信。模块上的指纹传感器芯片为 AuthenTec 公司的EntréPad 2510 芯片,该芯片体积功耗都很小,对各种指纹适应能力非常强,并且从原理上讲只对人的真皮皮肤有反应,从根本上杜绝了人造指纹的问题。
下面是指纹模块硬件内部原理框图:

图 4-4指纹 模块 内部 硬件 框图
下面是指纹模块识别算法流程图:

图 4-5指 纹识 别算 法流 程图
4.7.2密钥生成
这部分 工作是由MicroBlaze完成的。MicroBlaze从指纹模块读取到某个 指纹特征数据后,通过 ANSI X9.17 算法产生密钥。ANSI X9.17 是最强的伪随机数发生器之一,有一些应用使用了这种方法,如金融安全应用和 PGP 等。

图 4-6ANSI X9.17 伪 随机 数发 生器
上图中 K 为密钥,按照 ANSI X9.17 这个密钥是保密的。指纹特征数据分为 128bit 每组,最后一组若不足 128bit 则以 0 补足,作为 DTi 输入。Vi 为第 i 轮的初始种子值。Ri 为第 i轮产生的伪随机数。作品中取最后一轮产生的伪随机数作为密钥。
5 硬件框图
系统硬件实现框图如图 5-1 系 统 硬 件 实 现 框 图 所 示 。 虚 线 框 内 均 在starter kit 开发板上实现,虚线框外在自行设计的电路板上实现。

图 5-1系统硬 件实 现框 图
5.1 微处理器模块(MicroBlaze 系统) 本系统中使用了 Xilinx 公司 IP Version 为 6.00a 的 Microblaze 软核作 为 CPU。其主要工作是过滤 PC 与 U 盘之间的数据传输,解析协议,提取需要加/解密部分交给 AES 模块,与指纹模块通信并生成密钥。系统部分 IP 核定义总结如表 5-1 所示:
表 5-1 MicroBlaze 系统部分 IP 核定义
5.2
AES
加密模块
AES 模块是用 VHDL 语言设计的加密电路,采用 128 位密钥,工作在 CBC 模式。用户通过指纹验证后,MicroBlaze 获得 128 位密钥,然后将其写入 AES 模块。AES 模块内部存储并扩展密钥,用其加密 MicroBlaze 发来的数据。图 5-2 是本模块引脚图。

图 5-2AES 模块引脚图
Microblaze 首先 将 密 钥发 给 AES 模 块 , AES 模 块完 成 密 钥扩 展 后发 出 信 号通 知Microblaze。 这 时 ,Microblaze 便可 以 将 数据 写 入 AES 模 块, 运 算完 成 后 读出 数 据 。当Microblaze 发到“de”端口的信号为“0”时,AES 模块工作在加密模式,为“1”时工作在解密模式。
Microblaze 是 32 位的处理器,密钥和数据需要分 4 次写入或读出。我们定义了一组握手协议来完成密钥及数据的交互。写入密钥时,首先 Microblaze 将最低的 1 个字写进 idata_enc, 再将 key_check_enc 设为“00”。AES 模块判断出 key_check_enc 等于 key_kw_enc,在下一个时钟周期将 idata_enc 的数据读入,并将 key_kw_enc 信号加 1。Microblaze 发现 key_check_enc 与 key_kw_enc 不等,证实上一次写入的数据已经被 AES 模块接收,于是将下一个字的密钥加到 idata_enc,再将key_check_enc 加 1。这样,新的一个字的密钥就被写入 AES 模块。当 key_kw_enc 为“11”时,加 1 后又重新回到“00”,4 个字的密钥就成功写入。写入密钥的波形图如下:

图 5-3
写入数据的过程相似,不再赘述。
密钥 写入 波形 图读出数据时,以 data_check_enc 信号为地址, odata_enc 输出运算结果中相应的字。 AES 算法需要进行 10 轮运算。本模块中每轮运算仅需 8 个时钟周期 ,80 个时钟周期即可 完 成 一 次 加 密 或 解 密 运 算 。 按 照 系 统 50MHz 的 时 钟 频 率 计 算 , 本 模 块 最 高 可 达 到10Mbyte/s 的加解密速度。当然,每次加密前需要将数据写入 AES 模块,加密后再将数据读出。这部分占用的时间取决于 Microblaze 处理器的指令周期,所以实际应用中的运算速度要比 10Mbyte/s 小。
5.3 USB 接口电路模块 USB 接口电路以两块美国 MAXIM 公司的 MAX3421E 芯片为核心。MAX3421E 是一款USB 控制器,既可作 USB 外设又可作 USB 主机。在这里,与 PC 相连的 MAX3421E 芯片使用 USB 外设工作模式 ,与 U 盘相连的 MAX3421E 芯片使用 USB 主机工作模式。

图 5-4
芯片具有通信速 率可高达USB 接 S 口电 路信 号图 26MHz 的 SPI 接口,在Micro Blaze系统中使用的是v1.00.d 版本的 opb_spi IP 核实现 SPI 接口,其允许的最小分频数为 2,而 opb bus 的时钟频率为 50MHz, 所以 此 处 spi bus 时 钟 频率 为 25MHz。两 块 芯片 均 工作 在 SPI 从机 模 式,MicroBlaze 系 统的 SPI 口为 主 机模 式。 主 从机 的 SPI 工 作方 式均 保 持默 认: CPHA=0,CPOL=0。 MAX3421 芯片提供了 D+、D-引脚,在串联 33Ω电阻后可直接连至 USB 总线。而且芯片内部集成了 ESD 保护和 VBCOMP,使外围电路进一步简化。为进一步保护插入的设备,我们在主机工作模式的 MAX3421 芯片外部又添加了限流芯片 MIC2545A,限流电阻选取 470Ω,最大允许电流为 490mA。
MAX3421 芯片内部集成了±15KV ESD 保护功能,故外围电路中没有再增加静电防护电路。
5.4 指纹模块 指纹模块采用深圳艾菲尔公司设计生产的 EFM-200 通用型指纹识别模块。它由高速信号处理器 DSP、指纹传感器芯片 AES2510、高性能指纹比对算法等软硬件组成。

图 5-5指 纹模 块接 口定 义
指纹模块通过 SPI 接口与 MicroBlaze 系统通信,指纹模块为从机,MicroBlaze 系统为主机。工作模式为:CPHA=0,CPOL=1。Pin3 为 SPI 从机选择引脚(低电平使能),Pin7 为SPI CLOCK 引脚,Pin8 为 MISO 引脚,Pin10 为 MOSI 引脚。MicroBlaze 系统中使用 v1.00.e版本的 opb_spi IP 核实现 SPI 接口,opb 总线频率为 50MHz,分频系数采用 16。
Pin1 为指纹模块中断脚,本系统中采用查询该引脚的方式来获得指纹模块状态信息,当该引脚为低电平时,说明指纹模块准备好数据待主机读取。Pin9 为电源使能引脚,当其置低时,指纹模块上电。在 MicroBlaze 系统中通过 opb_gpio IP 核对其进行控制。Pin6、Pin5 为电源和地,均与开发板相连。Pin2、Pin4 为保留引脚。图 4.7 是其示意图。
|