指纹信息安全保护方法的设计与实现

2021-08-18 08:33于赫杨宇
电子测试 2021年14期
关键词:秘钥明文加密算法

于赫,杨宇

(长春大学电子信息工程学院,吉林长春,130022)

0 引言

目前市场上在售的电子锁为了压缩成本而选择一些仿制芯片和传感器进行生产[1-2],且很多指纹锁不对采集到的用户生物信息进行加密,只是简单的存储在产品的芯片中,一旦用户数据被窃取,会对用户的信息安全造成极大的威胁[3]。本文设计的指纹密码锁通过指纹和密码识别方式进行双重保护,方便使用的同时又提高了安全性,具有一定的实用价值。

1 总体设计

通过分析和对比各个模块,综合多方位的考虑,本设计选择STC89C52 作为主控芯片;结合LCD12864 液晶显示实时操作内容与提示;同时加入了指纹识别采集功能,能够通过管理密码进入进行添加和删除指纹信息,密码锁的密码等信息采用AT24C02 进行存储;解锁、修改密码等操作采用矩阵键盘输入。总体系统方案见图1。

图1 系统总体设计方案

人体生物指纹信息采集模块选用AS608,其具有高速DSP 处理能力,能采集与识别指纹。该模块提取的指纹特征文件为256KB,模板文件为512KB。指纹图像录入用时不到0.5s,可在-20 ~40℃的环境下正常工作。存储容量120/375/880枚,可控制指纹的采集、识别、删除、添加等操作。RAM 内设置有图像缓冲区与两个个人生物指纹信息特征文件的缓冲区,通过指令可以读写缓冲区里的数据。缓冲区中的资料断电后不保存,当模块重新上电复位后,模块将会先自检设备的握手口令有没有被恶意修改,如果没有,模块就认为没有必要验证口令的需求,并进入到正常的工作状态,验证口令在断电后依然保存在FLASH 中。

2 系统的安全保障

本设计在指纹模块采集完用户的指纹信息数据后,会通过AES128 加密算法对用户的个人生物信息进行加密,再将加密后的数据进行存储,从根源上保护用户的个人信息安全与隐私。

2.1 AES128 加密算法简介

AES 加密算法在加密的过程需要经过十轮的重复和变换。加密大致步骤如下:①密钥扩展;②初始轮;③重复轮,每一重复轮之中又包含着字节间的减法运算、行移位、列混合、轮密钥加法运算等操作;④最终轮。最终轮与前九轮相比,没有列混合这项操作。由于该算法是对称的分组密码体制,所以它解秘的过程就是上述操作步骤的逆运算。因为这些操作都可逆,所以按照倒推的方法进行运算就可计算得到初始的明文。加密和解密的过程中,每轮的秘钥均由初始密钥通过扩展运算得到。

2.2 AES 的基本结构

AES 加密算法的本质是一种分组密码,它加密前将需要加密的明文等分成长度相等的组,每次只对其中的一组数据进行加密,重复这个过程直至所有组加密完成。每个分组的只能是128 位,通过计算可以得知每个分组等于16 个字节,平均每个字节为8 位。与明文分组不同的是,密钥的长度可以有三种选择,分别为128、192、256 位。不同长度的秘钥所要完成的加密轮数不同,128 位密钥需要10 轮加密,192 位密钥需要12 轮加密,256 位密钥需要14 轮加密,见表1。本设计使用的是AES-128,即密钥长度为128 位,加密轮数为10 轮。

表1 AES 加密算法密钥长度对应加密轮数

2.3 AES 加密过程

AES128 加密算法的加密过程要经过10 轮的字节替换、行位移、轮秘钥加,外加9 轮的列混淆才能完成整个加密。前9 轮按照字节替换、行位移、列混淆、轮秘钥加的顺序对输入的明文进行加密,第10 轮仅包含字节替换、行位移、轮秘钥加三种变换。通过这大量的字节变换,仅能加密16 个字节的明文,若要加密全部128 位明文,则需要8 次这样的加密计算。由于该算法是对称的分组密码体制,所以解密的过程就是上述操作步骤的逆运算。加密和解密的过程中,每轮的秘钥均由初始密钥通过扩展运算得到。

(1)轮密钥加:在加密算法加密的过程中,每一轮的输入与轮密钥进行一次异或(当前分组和扩展密钥的一部分按位进行异或运算)。

(2)字节替换:每一轮都需要进行一次字节的替换,通过预先设置好的S 盒完成一个字节到另外一个字节的映射(S盒与逆S 盒是一一对应的关系)。例如:字节24 替换后的值为S{x,y}=S{2,4}=36,再通过逆S 盒即可得到替换前的值,S-1{x,y}=S{3,6}=24。

(3)行移位:它的功能则是置换一个4x4 矩阵。操作方法:保持首行不变,第二行循环向左位移一个字节,第三行循环向左位移两个字节,第四行循环向左位移三个字节。

(4)列混淆:列混淆是利用GF(28)域上算术特性的一个代替,作用是提供算法的扩散性。

3 系统主程序流程

3.1 主函数

主函数是程序的入口函数,是完整程序中必不可少的一部分。在该函数的开头一般会先对所使用的单片机以及一些外围器件进行初始化和重新赋值一些变量,在主程序的设计中通常我们不会存放过多的代码。具体需要使用到的代码一般都是写一个函数进行封装,封装后的函数可以在主函数进行调用,这样的写法既方便阅读又方便后续修改。具体流程图见图2。

图2 主函数流程图

3.2 AS608 指纹搜索子函数

AS608 采用串口通讯协议与单片机进行通讯,用户可以通过发送对应的数据包控制指纹模块完成对应的功能。在控制AS608 指纹模块搜索指纹的时候先发送采集指纹信息,然后等待采集完成后再发送指纹匹配指令,如果指纹匹配成功则返回成功,否则返回失败。指纹搜索子函数流程图见图3。

图3 搜索指纹子函数流程图

4 结论

本设计以单片机STC89C52作为密码锁监控装置的检测和控制核心,采用矩阵键盘输入的电子密码和指纹密码解锁两种解锁方式。系统采用LCD12864 液晶显示屏实时更新显示信息,并设有修改密码功能,在解锁或修改密码未确定时可以进行退格或重输的操作。在指纹信息传回存储芯片前,采用AES128 加密算法对采集到的指纹信息进行加密,从而确保个人生物信息的安全性。

猜你喜欢
秘钥明文加密算法
ETC秘钥国产化升级改造方案设计与实现
干细胞开启未来大健康的“秘钥” 专家与媒体面对面活动走进中源协和—山西省干细胞基因工程有限公司
奇怪的处罚
基于Unity 3D的产品秘钥二维码实现
HES:一种更小公钥的同态加密算法
奇怪的处罚
基于小波变换和混沌映射的图像加密算法
四部委明文反对垃圾焚烧低价竞争
基于二元多项式与中国剩余定理的多秘密分享方案
对称加密算法RC5的架构设计与电路实现