一种基于可信执行环境的免密认证方法及系统与流程

文档序号:15931001发布日期:2018-11-14 01:38阅读:361来源:国知局

本发明涉及信息安全领域,尤其涉及一种基于可信执行环境的免密认证方法及系统。

背景技术

目前,随着计算机技术的快速发展,网上银行(简称网银)越来越普及,有更多的人开始使用这种方便快捷的网银服务,如个人网上银行、企业网上银行、手机银行等;

目前,网上银行在安全认证方面多采用数字证书,数字证书的载体多为智能密钥设备,而个人识别码相当于访问智能密钥设备的钥匙;智能密钥设备需要授权才可以使用,授权过程即为验证个人识别码流程,在进行网上交易时,每笔交易都要多次输入个人识别码进行验证,操作比较繁琐,且手动输入容易出错,用户体验感较差。



技术实现要素:

本发明的目的是为了克服现有技术的缺陷,提出一种基于可信执行环境的免密认证方法及系统。

一种基于可信执行环境的免密认证方法,包括:

步骤s1、终端接收用户输入的生物特征,并通过本地认证功能验证生物特征是否合法,是则向智能密钥设备发送获取待签名数据请求,执行步骤s2;否则免密认证失败,结束;

步骤s2、智能密钥设备生成待签名数据,并将待签名数据发送给终端;

步骤s3、终端在可信执行环境中查找私钥,使用查找到的私钥对待签名数据进行签名得到签名值,并将签名值发送给智能密钥设备;

步骤s4、智能密钥设备使用公钥对签名值进行验签,判断是否验签通过,是则向终端发送验签通过响应,结束;否则向终端发送验签失败响应,结束。

一种基于可信执行环境的免密认证系统,包括终端和智能密钥设备;

终端包括第一免密认证模块;智能密钥设备包括第二免密认证模块;

第一免密认证模块包括:

第一接收单元,用于接收用户输入的生物特征;还用于接收智能密钥设备发送的待签名数据;

第一生物特征验证单元,用于通过本地认证功能验证第一接收单元接收到的所述生物特征是否合法;

第一发送单元,用于当第一生物特征验证单元验证所述生物特征合法之后向智能密钥设备发送获取待签名数据请求;还用于向智能密钥设备发送签名单元生成的所述签名值;

签名单元,用于当第一接收单元接收到待签名数据时,在可信执行环境中查找私钥,使用查找到的私钥对待签名数据进行签名得到签名值;

第二免密认证模块包括:

第二接收单元,用于接收终端发送的获取待签名数据请求;还用于接收所述终端发送的签名值;

待签名数据生成单元,用于当第二接收单元接收到获取待签名数据请求时生成待签名数据;

第二发送单元,用于将待签名数据生成单元生成待签名数据发送给终端;还用于当验签单元判定验签通过时,向终端发送验签通过响应;还用于当验签单元判定验签未通过时,向终端发送验签失败响应;

验签单元,用于当第二接收单元接收到的签名值时,使用公钥对签名值进行验签,判断是否验签通过。

本发明的有益效果在于,本发明提供的一种基于可信执行环境的免密认证方法及系统,将由智能密钥设备执行的验证个人识别码流程由终端支持的本地认证功能代替,用户仅需输入生物特征即可代替原先输入个人识别码这个繁琐的过程,操作简单。

附图说明

为了更清楚的说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1至图2为本发明实施例1中提供的一种基于可信执行环境的免密认证方法的流程图;

图3至图4为本发明实施例2中提供的一种基于可信执行环境的免密认证方法的流程图;

图5为本发明实施例3中提供的一种基于可信执行环境的免密认证系统的方框图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例1

本发明提供了一种基于可信执行环境的免密认证方法,包括:免密认证方法和启用免密认证方法。

当终端接收到启用免密认证信号时,执行启用免密认证方法;

启用免密认证方法,参见图1,包括:

步骤101、终端判断是否已启用免密认证,是则提示用户已启用免密认证,结束;否则执行步骤102;

具体的,终端判断是否可以可信执行环境中查找到密钥对,是则判定已启用免密认证,否则判定没有启用免密认证;

步骤102、终端判断是否支持本地认证功能,是则执行步骤103,否则启用免密认证失败,结束;

具体的,终端调用letcontext=lacontext()leterror:nserror?context.canevaluatepolicy(.deviceownerauthenticationwithbiometrics,&error)判断返回值,如果返回true则支持本地认证功能,如果返回error,则判断error的值是否为touchidnotavailabletouchidnotenrolled,如果是则不支持本地认证功能,否则支持本地认证功能;

步骤103、终端提示用户输入个人识别码;当接收到用户输入的个人识别码时,向智能密钥设备发送用户输入的个人识别码;

需要说明的是,个人识别码(英文全称:personalidentificationnumber,英文缩写:pin);

具体的,本实施例中,终端设备接收到的个人识别码为111111;终端将接收到的个人识别码进行md5加密运算得到的加密结果为

96e79218965eb72c92a549dd5a330112;

终端将类别字节80、指令字节f0、参数0000、数据的长度10以及加密结果96e79218965eb72c92a549dd5a330112顺序拼接,并将拼接结果发送给智能密钥设备;

需要说明的是,步骤103之前还包括:终端设备与智能密钥设备建立连接,建立连接的方式包括但是不限于通过蓝牙方式连接。

步骤104、智能密钥设备判断接收到的个人识别码是否合法,是则向终端发送验证成功响应,执行步骤105;否则向终端发送验证失败响应,结束;

具体的,智能密钥设备从接收到的数据中获取加密结果,并对解密结果进行解密得到个人识别码,判断接收到的个人识别码与预先存储的个人识别码是否一致,是则向终端发送验证成功响应,执行步骤105;否则向终端发送验证失败响应,结束;

本实施例中,智能密钥设备判断接收到的个人识别码是否合法,是则向终端发送验证成功响应9000,执行步骤105;否则向终端发送验证失败响应6ffx,结束;

步骤105、终端接收用户输入的生物特征,通过本地认证功能验证用户输入的生物特征是否合法,是则执行步骤106,否则启用免密认证失败,结束;

具体的,生物特征可以为指纹特征、虹膜特征或者面部特征。

更为详细的,终端通过调用letcontext=lacontext()

context.evaluateaccesscontrol(access,.usekeysign,<提示信息>)函数,提示用户输入生物特征,该函数触发{success,errorin//doverifyorfaile}函数,根据该函数中的参数判断验证是否通过,当参数为ture时验证通过,当参数为false时验证失败。

步骤106、终端在可信执行环境中生成密钥对,并将密钥对中的公钥导出可信执行环境;

当终端的操作系统为ios系统时,使用seckeycreaterandomkey在keychain中生成非对称算法密钥对,并使用seckeycopypublickey获取公钥。

当终端的操作系统为android系统时,使用keypairgenerator类示例的方法generatekeypair生成非对称算法密钥对,通过生成的keypair类示例的getpublic获取公钥。

需要说明的是,当终端的操作系统为ios系统时,可信执行环境具体为keychain;当终端的操作系统为android系统时,可信执行环境具体为密钥库系统。可信执行环境中生成的密钥对中的私钥不可导出,即可以使用私钥,但无法提取私钥。当通过可信执行环境存储的私钥执行签名操作时,将待签名的数据馈送到执行加密操作的系统进程。

更为详细的,终端从可信执行环境中导出的公钥具体为:

b0478979c641fb4229b2b52895be7803929bef009fe620b7732b9da6ef4769bc9c7e2f905c26e4b3ee76dfcaf79a7870cf32b156135e4edc6323ac5afffda46c5d13f215d0eb5417b0e57fa5f600bcdba7e45e8e8cab47ceec15510725584ba10cfa9fa95e4027d7a769a772e4efdc2d55625f9e0a20714ed56ab07e057900d5;

步骤107、终端向智能密钥设备发送导出的公钥;

具体的,本实施例中终端将类别字节80、指令字节f1、参数0000、数据的长度80以及公钥

b0478979c641fb4229b2b52895be7803929bef009fe620b7732b9da6ef4769bc9c7e2f905c26e4b3ee76dfcaf79a7870cf32b156135e4edc6323ac5afffda46c5d13f215d0eb5417b0e57fa5f600bcdba7e45e8e8cab47ceec15510725584ba10cfa9fa95e4027d7a769a772e4efdc2d55625f9e0a20714ed56ab07e057900d5顺序拼接,并将拼接结果发送给智能密钥设备;

步骤108、智能密钥设备保存接收到的公钥。

具体的,智能密钥设备将公钥保存到随机存取存储器(randomaccessmemory,ram)中,当断电时,自动删除公钥;

当终端接收到验证个人识别码信号时,执行免密认证方法;

免密认证方法包括:参见图2,包括:

步骤201、终端判断是否已启用免密认证,是则执行步骤206,否则执行步骤202;

具体的,终端判断是否可以可信执行环境中查找到密钥对,是则判定已启用免密认证,否则判定没有启用免密认证;

步骤202、终端提示用户开启免密认证,判断是否在预设时间内接收到启用免密认证的触发信息,是则执行启用免密认证方法,结束;否则执行步骤203;

步骤203、终端提示用户输入个人识别码,当接收到用户输入的个人识别码时,执行步骤204;

步骤204、终端向智能密钥设备发送用户输入的个人识别码;

具体的,本实施例中,终端设备接收到的个人识别码为111111;终端将接收到的个人识别码进行md5加密运算得到的加密结果为

96e79218965eb72c92a549dd5a330112;

终端将类别字节80、指令字节f0、参数0000、数据的长度10以及加密结果96e79218965eb72c92a549dd5a330112顺序拼接,并将拼接结果发送给智能密钥设备;

需要说明的是,步骤204之前还包括:终端设备与智能密钥设备建立连接,建立连接的方式包括但是不限于通过蓝牙方式连接。

步骤205、智能密钥设备判断接收到的个人识别码是否合法,是则向终端发送验证成功响应,结束;否则向终端发送验证失败响应,结束;

具体的,智能密钥设备从接收到的数据中获取加密结果,并对解密结果进行解密得到个人识别码,判断接收到的个人识别码与预先存储的个人识别码是否一致,是则向终端发送验证成功响应,结束;否则向终端发送验证失败响应,结束;

本实施例中,智能密钥设备判断接收到的个人识别码是否合法,是则向终端发送验证成功响应9000,结束;否则向终端发送验证失败响应6ffx,结束;

步骤206、终端接收用户输入的生物特征,通过本地认证功能验证用户输入的生物特征是否合法,是则执行步骤207;否则个人识别码验证失败,结束;

步骤207、终端向智能密钥设备发送获取待签名数据请求;

本实施例中,终端将类别字节00、指令字节84、参数0000以及期望返回的待签名数据长度08顺序拼接得到获取待签名数据请求,具体为:0084000008;

步骤208、智能密钥设备生成待签名数据,并向终端发送待签名数据;

具体的,智能密钥设备生成随机数,将随机数作为待签名数据,并向终端发送待签名数据;

更为详细的,智能密钥设备生成的随机数具体为:d3d9922f1f8e1f55;

本实施例中,智能密钥设备将随机数d3d9922f1f8e1f55和状态值9000顺序拼接,将拼接结果发送给终端;

步骤209、终端在可信执行环境中查找私钥,使用查找到的私钥对所述待签名数据进行签名得到签名值;

本实施例中,当终端的操作系统为ios系统时,通过secitemcopymatching函数从可信执行环境中查找私钥,使用查找到的私钥通过函数seckeycreatesignature对随机数进行签名;

当终端的操作系统为android系统时,通过keystore的getentry方法从可信执行环境中查找与设备序列号对应的私钥,使用查找到的私钥通过signature类的initsign方法对随机数进行签名;

具体的,终端使用查找到的私钥对随机数进行签名得到的签名值具体为:67543094fe5647dda3b78bca4f2156378b5c620d6c598b3d3db5658be2a81c627488ca91e5008967ec57c304a5afbc240601638849f1b8e2b2cf2a42368613cafd374945423868991bbbdf97ab4562d73fe070a32285322fa165572ee8863a763e21f1e47a2da9cde4f1736366d091284a1d5aae2ca0bd5dbc8d2f9862e33e5c。

步骤210、终端向智能密钥设备发送签名值;

具体的,本实施例中,终端将类别字节80、指令字节f2、参数0000、数据的长度80,以及签名值67543094fe5647dda3b78bca4f2156378b5c620d6c598b3d3db5658be2a81c627488ca91e5008967ec57c304a5afbc240601638849f1b8e2b2cf2a42368613cafd374945423868991bbbdf97ab4562d73fe070a32285322fa165572ee8863a763e21f1e47a2da9cde4f1736366d091284a1d5aae2ca0bd5dbc8d2f9862e33e5c顺序拼接,并将拼接结果发送给智能密钥设备;

步骤211、智能密钥设备获取公钥,使用获取到的公钥对接收到的签名值进行验签,判断验是否验签通过,是则向终端发送验证成功响应,结束,否则向终端发送验证失败响应,结束。

当终端与智能密钥设备断开连接之后还包括:终端在可信执行环境中删除密钥对。

本实施例提供一种基于可信执行环境的免密认证方法,由于在一次智能密钥设备和终端连接的过程中,用户可能会被要求多次输入个人识别码,通过本方法,在一次智能密钥设备和终端连接的过程中,用户仅需输入一次个人识别码,在其后使用智能密钥设备进行网银登录或者交易等需要验证个人识别码的操作时,即可通过录入生物特征代替输入个人识别码,简化了用户输入个人识别码这个繁琐的过程,很好的提升了用户体验,且本实施例中还将私钥写入了可信执行环境,使得私钥不可导出,更加安全可靠。

实施例2

本实施例提供了一种基于可信执行环境的免密认证方法,包括免密认证方法和启用免密认证方法。

当终端接收到启用免密认证信号时,执行启用免密认证方法:

启用免密认证方法,参见图3,包括:

步骤301、终端向智能密钥设备发送获取设备序列号请求;

具体的,终端将类别字节80、指令字节ea、参数0000以及期望返回的数据长度00顺序拼接得到获取设备序列号请求,并将获取设备序列号请求发送给智能密钥设备;终端发送的获取设备序列号请求具体为:80ea000000;

需要说明的是,步骤301之前还包括:终端设备与智能密钥设备建立连接,建立连接的方式包括但是不限于通过蓝牙方式连接。

步骤302、智能密钥设备向终端发送自身的设备序列号;

具体的,本实施例中智能密钥设备的设备序列号具体为:d7c28c541d9b966a;

具体的,本实施例中智能密钥设备将设备序列号d7c28c541d9b966a和状态值9000顺序拼接,将拼接结果发送给终端;

步骤303、终端根据接收到的设备序列号判断是否已启用免密认证,是则提示用户已启用免密认证,结束,否则执行步骤304;

具体的,终端根据设备序列号判断是否可以在可信执行环境中查找到密钥对,是则判定已启用免密认证,否则判定未启用免密认证;

步骤304、终端判断是否支持本地认证功能,是则执行步骤305,否则启用免密认证失败,结束;

具体的,终端调用letcontext=lacontext()leterror:nserror?context.canevaluatepolicy(.deviceownerauthenticationwithbiometrics,&error)判断返回值,如果返回true则支持本地认证功能,如果返回error,则判断error的值是否为touchidnotavailabletouchidnotenrolled,如果是则不支持本地认证功能,否则支持本地认证功能;

步骤305、终端提示用户输入个人识别码,当接收到用户输入的个人识别码时,向智能密钥设备发送用户输入的个人识别码;

具体的,本实施例中,终端设备接收到的个人识别码为111111;终端将接收到的个人识别码进行md5加密运算得到的加密结果为

96e79218965eb72c92a549dd5a330112;

终端将类别字节80、指令字节f0、参数0000、数据的长度10以及加密结果96e79218965eb72c92a549dd5a330112顺序拼接,并将拼接结果发送给智能密钥设备;

步骤306、智能密钥设备判断接收到的个人识别码是否合法,是则向终端发送验证成功响应,执行步骤307;否则向终端发送验证失败响应,启用免密认证失败,结束;

具体的,智能密钥设备从接收到的数据中获取加密结果,并对解密结果进行解密得到个人识别码,判断接收到的个人识别码与预先存储的个人识别码是否一致,是则判定接收到的个人识别码合法,否则判定接收到的个人识别码不合法;

具体的,智能密钥设备判断接收到的个人识别码是否合法,是则向终端发送验证成功响应9000,执行步骤307;否则向终端发送验证失败响应6ffx,启用免密认证失败,结束;

步骤307、终端设备接收用户输入的生物特征,通过本地认证功能验证生物特征是否合法,是则执行步骤308,否则启用免密认证失败,结束;

步骤308、终端生成索引值,将设备序列号和所述索引值对应保存,在可信执行环境中生成密钥对,设置设备序列号为密钥对的查找标识,并将密钥对中的公钥导出可信执行环境;

具体的,终端通过letattributes:[string,any]=[ksecattrlabelasstring:d7c28c541d9b966a,//bindkeypairewithusbkey]设置设备序列号为密钥对中私钥的查找标识,通过调用函数varerror:nserror?letprikey=seckeycreaterandomkey(attributes,&error)函数生成密钥对;并通过letpubkeydata=seckeycopyexternalrepresentation(pubkey,&error)asdata函数导出密钥对中的公钥。

需要说明的是,当终端为ios系统时,可信执行环境具体为keychain;当终端为android系统时,可信执行环境具体为密钥库系统。可信执行环境中生成的密钥对中的私钥不可导出,即可以使用私钥,但无法提取私钥。当通过可信执行环境存储的私钥执行签名操作时,将待签名的数据馈送到执行加密操作的系统进程。

更为详细的,终端生成的密钥对中的公钥具体为:

b0478979c641fb4229b2b52895be7803929bef009fe620b7732b9da6ef4769bc9c7e2f905c26e4b3ee76dfcaf79a7870cf32b156135e4edc6323ac5afffda46c5d13f215d0eb5417b0e57fa5f600bcdba7e45e8e8cab47ceec15510725584ba10cfa9fa95e4027d7a769a772e4efdc2d55625f9e0a20714ed56ab07e057900d5;

步骤309、终端向智能密钥设备发送导出的的公钥和索引值;

具体的,本实施例中,终端将类别字节80、指令字节f3、参数0000、数据长度8c、索引值标识49、索引值的长度08、索引值b7c56421d537198e、公钥标识4e、公钥的长度80以及公钥

b0478979c641fb4229b2b52895be7803929bef009fe620b7732b9da6ef4769bc9c7e2f905c26e4b3ee76dfcaf79a7870cf32b156135e4edc6323ac5afffda46c5d13f215d0eb5417b0e57fa5f600bcdba7e45e8e8cab47ceec15510725584ba10cfa9fa95e4027d7a769a772e4efdc2d55625f9e0a20714ed56ab07e057900d5顺序拼接,将拼接结果发送给智能密钥设备。

步骤310、智能密钥设备将接收到的索引值和公钥对应保存。

当终端接收到验证个人识别码信号时,执行免密认证方法;

免密认证方法,参见图4,包括:

步骤401、终端向智能密钥设备发送获取设备序列号请求;

具体的,终端将类别字节80、指令字节ea、参数0000以及期望返回的数据长度00顺序拼接得到获取设备序列号请求,并将获取设备序列号请求发送给智能密钥设备;终端发送的获取设备序列号请求具体为:80ea000000;

需要说明的是,步骤401之前还包括:终端设备与智能密钥设备建立连接,建立连接的方式包括但是不限于通过蓝牙方式连接。

步骤402、智能密钥设备向终端发送自身的设备序列号;

具体的,本实施例中智能密钥设备的设备序列号具体为:d7c28c541d9b966a;

具体的,本实施例中智能密钥设备将设备序列号d7c28c541d9b966a和状态值9000顺序拼接,将拼接结果发送给终端;

步骤403、终端根据接收到的设备序列号判断是否已启用免密认证,是则执行步骤408,否则执行步骤404;

具体的,终端判断是否可以根据设备序列号在可信执行环境中查找到密钥对,是则判定已启用免密认证,否则判定没有启用免密认证;

步骤404、终端提示用户开启免密认证,判断是否在预设时间内接收到启用免密认证的触发信息,是则执行启用免密认证方法,结束;否则执行步骤405;

步骤404中,当终端判定在预设时间内接收到启用免密认证的触发信息时,执行步骤301至步骤310;

步骤405、终端提示用户输入个人识别码,当接收到用户输入的个人识别码时,执行步骤406;

步骤406、终端向智能密钥设备发送用户输入的个人识别码;

具体的,本实施例中,终端设备接收到的个人识别码为111111;终端将接收到的个人识别码进行md5加密运算得到的加密结果为

96e79218965eb72c92a549dd5a330112;

终端将类别字节80、指令字节f0、参数0000、数据的长度10以及加密结果96e79218965eb72c92a549dd5a330112顺序拼接,并将拼接结果发送给智能密钥设备;

步骤407、智能密钥设备判断接收到的个人识别码是否合法,是则向终端发送验证成功响应,结束;否则向终端发送验证失败响应,结束。

具体的,智能密钥设备从接收到的数据中获取加密结果,并对解密结果进行解密得到个人识别码,判断接收到的个人识别码与预先存储的个人识别码是否一致,是则向终端发送验证成功响应,结束;否则向终端发送验证失败响应,结束。

步骤408、终端接收用户输入的生物特征,通过本地认证验证用户输入的生物特征是否合法,是则执行步骤409,否则个人识别码验证失败,结束;

步骤409、终端向智能密钥设备发送获取待签名数据请求;

本实施例中,终端将类别字节00、指令字节84、参数0000以及期望返回的待签名数据长度08顺序拼接得到获取待签名数据请求,具体为:0084000008;

步骤410、智能密钥设备生成待签名数据,并向终端发送生成的待签名数据;

具体的,智能密钥设备生成随机数,将随机数作为待签名数据,并向终端发送待签名数据;

更为详细的,智能密钥设备生成的随机数具体为:d3d9922f1f8e1f55;

本实施例中,智能密钥设备将随机数d3d9922f1f8e1f55和状态值9000顺序拼接,将拼接结果发送给终端;

步骤411、终端根据设备序列号在可信执行环境中查找密钥对,使用密钥对中的私钥对待签名数据进行签名得到签名值,并根据设备序列号获取与其对应的索引值;

本实施例中,当终端的操作系统为ios系统时,通过secitemcopymatching函数从可信执行环境中查找与设备序列号对应的私钥,使用查找到的私钥通过函数seckeycreatesignature对随机数进行签名;

当终端的操作系统为android系统时,通过keystore的getentry方法从可信执行环境中查找与设备序列号对应的私钥,使用查找到的私钥通过signature类的initsign方法对随机数进行签名;

需要说明的是,当终端的操作系统为ios系统时,可信执行环境具体为keychain;当终端的操作系统为android系统时,可信执行环境具体为密钥库系统。保存在可信执行环境的密钥不可导出,即可以使用密钥,但无法提取密钥。当通过可信执行环境存储的密钥执行签名操作时,将待签名的数据馈送到执行加密操作的系统进程。

具体的,终端使用查找到的私钥对随机数进行签名得到的签名值具体为:67543094fe5647dda3b78bca4f2156378b5c620d6c598b3d3db5658be2a81c627488ca91e5008967ec57c304a5afbc240601638849f1b8e2b2cf2a42368613cafd374945423868991bbbdf97ab4562d73fe070a32285322fa165572ee8863a763e21f1e47a2da9cde4f1736366d091284a1d5aae2ca0bd5dbc8d2f9862e33e5c。

步骤412、终端向智能密钥设备发送签名值和索引值;

具体的,本实施例中,终端将类别字节80、指令字节f4、参数0000、数据的长度8c、索引值标识49、索引值的长度08、索引值b7c56421d537198e、签名值标识53、签名值的长度80、签名值

67543094fe5647dda3b78bca4f2156378b5c620d6c598b3d3db5658be2a81c627488ca91e5008967ec57c304a5afbc240601638849f1b8e2b2cf2a42368613cafd374945423868991bbbdf97ab4562d73fe070a32285322fa165572ee8863a763e21f1e47a2da9cde4f1736366d091284a1d5aae2ca0bd5dbc8d2f9862e33e5c顺序拼接,将拼接结果发送给智能密钥设备。

步骤413、智能密钥设备根据索引值获取公钥,使用获取到的公钥对接收到的签名值进行验签,判断是否验签通过,是则向终端发送验证成功响应,结束,否则向终端发送验证失败响应,结束。

优选的,步骤305之前还包括,终端接收用户选择的免密认证方式,将设备序列号与用户选择的免密认证方式对应保存;

步骤309具体包括:终端将免密认证方式、导出的公钥和索引值发送给智能密钥设备;

步骤310具体为:智能密钥设备将公钥、索引值以及免密认证方式对应保存;

所述方法中还包括:终端与智能密钥设备断开连接;终端根据设备序列号获取与其对应保存的免密认证方式,当免密认证方式为允许本次连接启用时,根据设备序列号在可信执行环境中查找密钥对,并删除查找到的密钥对;智能密钥设备获取与索引值对应保存的免密认证方式,当免密认证方式为允许本次连接启用时,删除与索引值对应保存的免密认证方式和公钥以及索引值。

本实施例提供一种通过生物特征实现智能密钥设备认证的方法,用户只需在启用免密认证的方法中输入一次个人识别码,在其后使用智能密钥设备进行网银登录或者交易等需要验证个人识别码的操作时,即可通过录入生物特征代替输入个人识别码,简化了用户输入个人识别码这个繁琐的过程,很好的提升了用户体验;且本实施例中还将私钥写入了可信执行环境,使得私钥不可导出,更加安全可靠。

实施例3

本实施例提供了一种基于可信执行环境的免密认证系统,参见图5,包括终端和智能密钥设备;

终端包括第一免密认证模块;智能密钥设备包括第二免密认证模块;

第一免密认证模块包括:

第一接收单元11,用于接收用户输入的生物特征;还用于接收智能密钥设备发送的待签名数据;

第一生物特征验证单元12,用于通过本地认证功能验证第一接收单元11接收到的生物特征是否合法;

第一发送单元13,用于当第一生物特征验证单元12验证生物特征合法之后向智能密钥设备发送获取待签名数据请求;还用于向智能密钥设备发送签名单元14生成的签名值;

签名单元14,用于当第一接收单元11接收到待签名数据时,在可信执行环境中查找私钥,使用查找到的私钥对待签名数据进行签名得到签名值;

第二免密认证模块包括:

第二接收单元21,用于接收终端发送的获取待签名数据请求;还用于接收终端发送的签名值;

待签名数据生成单元22,用于当第二接收单元21接收到获取待签名数据请求时生成待签名数据;

更为详细的,待签名数据生成单元22,具体用于生成随机数,将随机数作为待签名数据。

第二发送单元23,用于将待签名数据生成单元22生成待签名数据发送给终端;还用于当验签单元判定验签通过时,向终端发送验签通过响应;还用于当验签单元24判定验签未通过时,向终端发送验签失败响应;

验签单元24,用于当第二接收单元21接收到的签名值时,使用公钥对签名值进行验签,判断是否验签通过。

优选的,第一免密认证模块还包括:第一判断单元,用于判断是否已启用免密认证;

第一接收单元11,具体用于当第一判断单元判定已启用免密认证时,接收用户输入的生物特征。

优选的,第一免密认证模块还包括:第一提示单元,用于当第一判断单元判定没有启用免密认证时,提示用户输入个人识别码;

第一接收单元11,还用于接收用户输入的个人识别码;

第一发送单元13,还用于将第一接收单元11接收到的个人识别码发送给智能密钥设备;

第二接收单元21,还用于接收终端发送的个人识别码;

第二免密认证模块还包括:第二判断单元,用于判断第二接收单元21接收到的个人识别码是否合法;

第二发送单元23,还用于当第二判断单元判定个人识别码合法时,向终端发送验证成功响应;还用于当第二判断单元判定个人识别码不合法时,向终端发送验证失败响应。

优选的,第一免密认证模块还包括:第三判断单元,用于判断是否支持本地认证功能;

第一接收单元11,具体用于当第三判断单元判定支持本地认证功能时接收用户输入的生物特征;

第一免密认证模块还包括:第二提示单元,用于当第三判断单元判定不支持本地认证功能时,提示用户不支持免密认证。

优选的,第一免密认证模块还包括第一删除单元,用于当与智能密钥设备断开连接之后,终端从可信执行环境中删除密钥对;第二免密认证模块还包括:第二删除单元,用于当与终端断开连接之后,删除自身保存的公钥。

更进一步的,终端还包括:第一启用免密认证模块;

第一启用免密认证模块包括:第三接收单元、第二生物特征生成单元、第三发送单元、密钥对生成单元;

智能密钥设备还包括:第二启用免密认证模块;

第二启用免密认证模块包括:第四判断单元、第四发送单元、第四接收单元、保存单元;

第三接收单元,用于接收用户输入的个人识别码;还用于当接收到智能密钥设备发送的个人识别码验证成功响应时,接收用户输入的生物特征;

第二生物特征验证单元,用于通过本地认证功能验证第三接收单元接收到的生物特是否合法;

密钥对生成单元,用于当第二生物特征验证单元验证生物特征合法时,在可信执行环境中生成密钥对,并将密钥对中的公钥导出可信执行环境;

第三发送单元,还用于将第三接收单元接收到的个人识别码发送给智能密钥设备;还用于将密钥对生成单元导出的公钥发送给智能密钥设备;

第四接收单元,用于接收终端发送的个人识别码,还用于接收终端发送的公钥;

第四判断单元,用于判断第四接收单元接收到的个人识别码是否合法;

第四发送单元,还用于当第四判断单元判定个人识别码合法时,向终端发送个人识别码验证成功响应;当第四判断单元判定个人识别码不合法时,向终端发送个人识别码验证失败响应;

第一保存单元,用于保存第四接收单元接收到的公钥。

更为详细的,第一保存单元,具体用于将第四接收单元接收到的公钥保存到随机存取存储器;

相应的,第一免密认证模块还包括:第三删除单元,用于从可信执行环境中删除密钥对。

优选的,第一启用免密认证模块还包括:

第一获取单元,用于从智能密钥设备中获取设备序列号;

索引值生成单元,用于当第二生物特征验证单元验证生物特征合法之后,生成索引值;

第二保存单元,用于将获取单元获取到的设备序列号和索引值生成单元生成的索引值对应保存;

密钥对生成单元,具体用于在可信执行环境中生成密钥对,设置获取单元获取到的设备序列号为密钥对的查找标识,并将密钥对中的公钥导出可信执行环境;

第三发送单元,具体用于将密钥对生成单元导出的公钥和密钥对生成单元生成的索引值发送给智能密钥设备;

第四接收单元,具体用于接收终端发送的公钥和索引值;

第一保存单元,具体用于将第四接收单元接收到的公钥和索引值对应保存;

第一免密认证模块,还包括:

第二获取单元,用于从智能密钥设备中获取设备序列号;

签名单元14,具体用于当第一接收单元11接收到待签名数据时,根据第二获取单元获取到的设备序列号在可信执行环境中查找私钥,使用查找到的私钥对待签名数据进行签名得到签名值;

第三获取单元,用于根据第二获取单元获取到的设备序列号获取与其对应的索引值;

第一发送单元13,还用于将第三获取单元获取到的索引值和签名单元14签名得到的签名值发送给智能密钥设备;

第二接收单元21,具体用于接收终端发送的索引值和签名值;

验签单元24,具体用于当第二接收单元21接收到的签名值时,根据第二接收单元21接收到的索引值获取公钥,使用获取到的公钥对签名值进行验签,判断是否验签通过。

优选的,第三接收单元,还用于接收用户选择的免密认证方式;

第一启用免密认证模块还包括:第三保存单元,用于将第一获取单元获取到的设备序列号与第三接收单元接收到的免密认证方式对应保存;

第三发送单元,具体用于体用于将第三接收单元接收到的免密认证方式、密钥对生成单元导出的公钥和密钥对生成单元生成的索引值发送给智能密钥设备;

第四接收单元,具体用于接收终端发送的免密认证方式、公钥和索引值;

第一保存单元,具体用于将第四接收单元接收到的免密认证方式、公钥和索引值对应保存;

第一免密认证模块,还包括:第四删除单元,用于与智能密钥设备断开连接之后,根据设备序列号获取与其对应保存的免密认证方式,当免密认证方式为允许本次连接启用时,根据设备序列号在可信执行环境中查找密钥对,并删除查找到的密钥对;

第二免密认证模块,还包括:第五删除单元,用于与终端断开连接之后,根据索引值对应保存的免密认证方式,当免密认证方式为允许本次连接启用时,删除与索引值对应保存的免密认证方式和公钥以及索引值。

优选的,第一启用免密认证模块还包括:第五判断单元,用于判断是否已启用免密认证;

第三接收单元,具体用于当第五判断单元判定没有启用免密认证之后,接收用户输入的个人识别码;

第三提示单元,用于当第五判断单元判定启用免密认证之后,提示用户已开启免密认证。

优选的,第一免密认证模块还包括:第六判断单元,用于判断是否已启用免密认证;

第一接收单元11,具体用于当第六判断单元判定已启用免密认证之后,接收用户输入的生物特征;

第四提示单元,用于当第六判断单元判定没有开启免密认证之后,提示用户开启免密认证;

第六判断单元,用于当第四提示单元提示用户开启免密认证之后,判断是否在预设时间内接收到启用免密认证的触发信息;

触发单元,用于当第六判断单元判定在预设时间内接收到启用免密认证的触发信息之后,触发第一启用免密认证模块。

优选的,第一接收单元11,还用于当第六判断单元判定在预设时间内没有接收到启用免密认证的触发信息之后,接收用户输入的个人识别码;

第一发送单元13,还用于将第一接收单元11接收到的个人识别码发送给智能密钥设备;

第二接收单元21,还用于接收终端发送的个人识别码;

第二免密认证模块还包括:第七判断单元,用于判断第二接收单元21接收到的个人识别码是否合法;

第二发送单元23,还用于当第七判断单元判定个人识别码合法时向终端发送验证成功响应;还用于当第七判断单元判定个人识别码不合法时向终端发送验证失败响应。

优选的,第一启用免密认证模块还包括第八判断单元,用于判断是否支持本地认证功能;

第三接收单元,具体用于当第八判断单元判定支持本次认证功能时,接收用户输入的个人识别码;

第五提示单元,用于当第八判断单元判定不支持本次认证功能时,提示用户不支持免密认证。

需要说明的是,第三接收单元,具体用于当接收到启用免密认证信号时,接收用户输入的个人识别码;第一接收单元11,具体用于当接收到验证个人识别码的信号时,接收用户输入生物特征。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1