一种智能终端的安全指纹识别方法
【技术领域】
[0001 ] 本发明涉及数据安全技术以及智能终端技术。
【背景技术】
[0002]目前,移动终端的指纹识别方案主要是借助第三方指纹识别芯片完成对用户的身份验证,由于第三方的指纹识别芯片对用户的指纹数据的相关操作是在Android等普通操作系统环境下完成的,对于指纹这种敏感且唯一的生物特征信息而言,用户的指纹信息没有得到强有力的安全保护,极有可能被恶意的程序所截获。
【发明内容】
[0003]本发明所要解决的技术问题是,提供一种能防止被恶意应用程序截获的适用于智能终端的安全指纹识别方法。
[0004]本发明为解决上述技术问题所采用的技术方案是,一种智能终端的安全指纹识别方法,包括以下步骤:
[0005]I)指纹注册:
[0006]1-1)普通操作系统的指纹识别模块向安全操作系统的指纹识别模块的请求传输指纹图像数据的密钥;由安全操作系统的监视模块将普通操作系统切换至安全操作系统;所述安全操作系统为智能终端嵌入式硬件的安全隔离区域中运行的操作系统;
[0007]1-2)安全操作系统的指纹识别模块将用于加密指纹图像数据的密钥发送至普通操作系统的指纹识别模块;由监视模块将安全操作系统切换至普通操作系统;
[0008]1-3)普通操作系统的指纹识别模块触发指纹图像采集器采集指纹图像数据并使用接收到的传输指纹图像数据的密钥对指纹图像数据加密后发送至安全操作系统的指纹识别模块;由监视模块将普通操作系统切换至安全操作系统;
[0009]1-4)安全操作系统的指纹识别模块解密指纹图像数据后提取出指纹特征作为注册用户的指纹特征,再对注册用户的指纹特征进行内部加密后存储;由监视模块将安全操作系统切换至普通操作系统;
[0010]2)指纹验证:
[0011]2-1)普通操作系统的指纹识别模块向安全操作系统的指纹识别模块的请求传输指纹图像数据的密钥;由监视模块将普通操作系统切换至安全操作系统;
[0012]2-2)安全操作系统的指纹识别模块将用于加密指纹图像数据的密钥发送至普通操作系统的指纹识别模块;由安全操作系统的监视模块将安全操作系统切换至普通操作系统;
[0013]2-3)普通操作系统的指纹识别模块触发指纹图像采集器采集指纹图像数据并使用接收到的传输指纹图像数据的密钥对指纹图像数据加密后发送至安全操作系统的指纹识别模块;由监视模块将普通操作系统切换至安全操作系统;
[0014]2-4)安全操作系统的指纹识别模块解密指纹图像数据后提取出指纹特征,再内部解密注册用户的指纹特征进行匹配,得到指纹相似度结果;由监视模块将安全操作系统切换至普通操作系统;
[0015]2-5)普通操作系统的指纹识别模块获取相似度结果与阈值比较判断是否匹配成功,当相似度结果大于阈值则匹配成功,否则匹配失败。
[0016]本发明的有益效果是,提供了一种芯片级的安全系统框架下的指纹识别的安全方法,提取的指纹特征加密存储在隔离区域上,借助于该隔离区域将有效的保障对敏感的指纹图像数据操作的私密性,极大的提高智能终端领域指纹识别的安全性。
【附图说明】
[0017]图1是本发明指纹识别基于的系统框架图;
[0018]图2是安全操作系统中指纹识别模块框架图。
【具体实施方式】
[0019]下面结合附图和具体实施例对本发明作进一步具体描述:
[0020]图1智能终端系统是一个具有隔离区域的嵌入式系统100包括普通空间区域101与空间隔离安全区域102。本发明操作系统设计为两个并行运行的空间隔离的操作系统,别是运行在普通空间区域101的非安全操作系统103和运行在空间隔离安全区域102的安全操作系统107以及负责着非安全操作系统与安全操作系统转换的监视器程序110。嵌入式平台位于操作系统之上,为应用程序开发提供接口。
[0021]普通空间区域的非安全操作系统上运行指纹识别程序105以及其他应用104。普通空间区域的非安全操作系统(普通操作系统)103是指搭载在目前主流的智能终端之上的操作系统,本实施例以Android系统为例。该普通操作系统可以安装来自安卓应用市场以及部分其他不受信任的应用程序,所以该操作系统的安全性并不能得到保证,如果处理用户的关键数据资源,其安全性更得不到保证。运行在此环境上的指纹识别程序,通过指纹图像采集器获得用户的指纹图像信息并向安全操作系统发出请求,以获取其内部存储的共享密钥,之后利用AES-256对称加密算法对其去头后的指纹图像数据进行加密处理,由监视器程序将密文传输到安全操作系统内部进行处理;
[0022]隔离空间环境上运行指纹识别服务安全进程109以及其他安全服务108。此处的安全操作系统是指运行在具有空间隔离功能的处理器的安全环境下,通过在CPU内核内部开辟一块可信的代码区,主要完成隔离空间区域上安全操作系统的启动引导和根据非安全环境的服务请求标识判断并创建对应的安全服务进程以及普通空间区域上非安全的操作系统的加载启动等操作。运行在此环境上的指纹识别服务安全进程,通过解密获得非安全操作系统传入的指纹图像数据密文,之后利用内部的指纹图像处理算法,进行指纹图像数据的预处理、特征提取、特征模板的RSA-2048非对称算法的加密存取、指纹特征匹配等操作,完成指纹识别过程的全部操作,并由监视器程序将匹配结果返回给运行在非安全操作系统上的指纹识别程序;
[0023]负责两空间区域切换的监视器程序标识110,运行在监视器环境下,负责切换安全操作系统与非安全操作系统的运行环境,存储和恢复切换时系统环境的运行状态信息;连接非安全操作系统和安全操作系统内监视器程序的纽带TrustZone访问控制驱动标识106。
[0024]图2为具有安全操作系统中指纹识别安全服务框架图,包含可以用于对指纹图像数据和指纹特征进行加解密操作的加解密模块112、指纹数据预处理模块113以及指纹特征匹配模块114,指纹特征匹配模块114中包含指纹特征数据库115以及指纹特征匹配运算模块116,指纹特征数据库115中包括有安全存储模块117。
[0025]普通操作系统中的指纹识别模块用于运行指纹识别程序;
[0026]安全操作系统中的指纹识别模块用于运行指纹识别服务安全进程;
[0027]安全操作系统指纹识别模块中的加解密模块存储有用于提供普通操作系统与安全操作系统之间安全传输指纹图像数据所采用的密钥以及安全操作系统对指纹特征进行内部加解密所采用的密钥。
[0028]智能终端的指纹识别安全方法的具体运行流程如下:
[0029]指纹注册过程,包括步骤:
[0030]步骤101:指纹图像数据的采集加密。普通空间区域上运行指纹识别程序,同时获取存储在隔离区域上用于指纹图像数据加密的密钥,当点击注册按钮时,触发指纹图像采集器采集用户的指纹图像数据,并对其进行加密操作;
[0031]本步骤所包含如下具体流程:
[0032]①.用户触发Android指纹识别程序运行,点击指纹注册按钮,进行用户指纹注册操作;该应用程序会申请一块充足的内存空间,用于存放存储在安全操作系统内部加解密模块的共享密钥,并向安全操作系统发送获取用于传输指纹图像数据的密钥请求标识FP_ENCRYPT ;
[0033]②.Android指纹识别程序会将此段内存空间物理地址和请求标识传递给相应的寄存器,以便安全操作系统进行赋值操作;通过执行特定的安全监视调用Secure MonitorCall (SMC)指令,从而切换运行环境到监视器环境下。经监视器程序判断是来自Android的服务请求后,借助于协处理器保存当前Android的上下文以及恢复即将所切换到的安全环境的上下文;
[0034]③.安全操作系统监听到有来自非安全环境的服务请求时,则会读取监视器存储的参数值,并与其内部已定义的服务标识进行对比,若验证通过,则安全操作系统的主进程会创建对应该服务请求的指纹识别服务安全进程,并将其加入到就绪队列,等待调度;
[0035]④.安全操作系统调度并运行指纹识别服务安全进程,创建指纹识别服务的安全会话,从而将指纹识别的应用程序与指纹识别的安全服务实例连接起来,根据指纹识别的服务命令标识FP_ENCRYPT调用对应的函数,通过指纹加解密模块将所获得的用于加密实际指纹图像数据的共享密钥写入到Android指纹识别程序开辟的内存空间并设置相应寄存器的标识值,执行SMC指令陷入到监视器环境;
[0036]⑤.首先监视器程序读取相应寄存器的标识值,以判断当前监视器模式由安全环境切换而来,之后监视器程序会通过协处理器保存安全操作系统的上下文环境,并恢复之前Android的上下文环境。此时,Android指纹识别程序则成功获得用于传输指纹图像数据的共享密钥;
[0037]⑥.用户将手指轻按压指纹图像采集器,首先将采集的指纹图像的大小与预设的指纹图像阈值比较,若大于阈值,则表示指纹采集成功,否则重新采集指纹;之后会读取采集到的指纹图像,通过读取指纹图像的头部信息,如图像文件的类型、分辨率等信息,判断采集到的指纹图像的有效性,若验证通过,则去掉该指纹图像文件不必要的的头部信息,只保留实际的指纹图像数据信息以减少指纹加密的数据量;最后通过调用AES-256对称加密算法使用上面流程⑤所获得的共享密钥对去头后的实际指纹图像数据进行加密操作,使得指纹图像数据以密文的形式存在,从而有效的避免用户指纹图像数据被恶意程序所劫获;
[0038]步骤102:指纹图像数据的安全传输。保存当前系统的运行状态,将已加密的敏感的指纹图像数据传递到隔离区域,切换到安全执行环境;
[0039]本步骤所