一种命令处理方法、电子设备及存储介质与流程

文档序号:20114729发布日期:2020-03-17 19:41阅读:119来源:国知局
一种命令处理方法、电子设备及存储介质与流程

本发明涉及互联网领域,尤其涉及一种基于fido规范的命令处理方法、电子设备及存储介质。



背景技术:

目前,智能卡安全设备需要安装对应的中间件才可进行访问。安装中间件较麻烦而且安装中间件的过程中可能会出现安装失败,或者中间件因出现问题需要升级更新,可能会造成无法访问智能卡安全设备的问题,从而给用户带来不必要的麻烦。



技术实现要素:

为了克服现有技术的不足,本发明的目的在于提供一种命令处理方法,无需安装中间件即可实现业务功能。

一种命令处理方法,由智能卡安全设备执行,包括:

接收第一fido认证请求命令;

从所述第一fido认证请求命令中获取预设应用的apdu命令,执行所述apdu命令以得到第一响应数据;

将所述第一响应数据封装到第一fido认证响应命令中并返回。

进一步地,所述apdu命令封装在所述第一fido认证请求命令的keyhandle字段中,所述第一响应数据封装在所述第一fido认证响应命令的signature字段中。

进一步地,所述接收第一fido认证请求命令之前,还包括:

接收fido注册请求命令;

生成并发送fido注册响应命令,所述fido注册响应命令中包括指示智能卡安全设备支持所述预设应用的信息。

一种命令处理方法,包括:

服务器接收客户终端发送的交易请求;

所述服务器依据所述交易请求生成并向客户终端发送第一fido认证请求命令,所述第一fido认证请求命令中包括预设应用的apdu命令;

接收第一fido认证响应命令,并从所述第一fido认证响应命令中获取智能卡安全设备执行所述apdu命令得到的第一响应数据。

进一步地,所述apdu命令封装在所述第一fido认证请求命令的keyhandle字段中,所述第一响应数据封装在所述第一fido认证响应命令的signature字段中。

进一步地,在步骤服务器接收客户终端发送的交易请求之后还包括:服务器向客户终端发送fido注册请求命令,并接收智能卡安全设备执行所述fido注册请求命令得到的fido注册响应命令;根据所述fido注册响应命令判断所述智能卡安全设备是否支持预设应用,若不支持则拒绝所述交易请求。

进一步地,所述方法还包括:

所述客户终端获取用户输入,并根据所述用户输入生成第一认证信息,将所述第一认证信息添加到向所述智能卡安全设备发送的第二fido认证请求的apdu命令中。

进一步地,所述apdu命令包括从所述智能卡安全设备获取的随机数,所述客户终端根据用户输入和所述随机数生成所述第一认证信息,使用所述第一认证信息替换所述第一fido认证请求中的所述随机数,并向所述智能卡安全设备发送替换后的第一fido认证请求。

一种电子设备,包括存储器、处理器以及存储在存储器中的程序,所述程序被配置成由处理器执行,处理器执行所述程序时实现:

如上所述的命令处理方法。

一种存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的命令处理方法。

相比现有技术,本发明较佳实施例中,通过对fido规范的命令进行扩展,封装预定格式的预定协议的命令功能指令及命令功能响应数据实现了扩展的命令功能,无需安装额外的插件或者接口软件,减少了客户安装额外中间件的麻烦,提高了智能卡安全设备的开发效率及工作的稳定性。

附图说明

图1为本发明的命令处理方法的实施例一的流程图;

图2为本发明的命令处理方法的实施例二的流程图;

图3为本发明的命令处理方法的实施例三的流程图;

图4为本发明的命令处理方法的实施例四的流程图;

图5为本发明的命令处理方法的实施例五的流程图;

图6为本发明的电子设备的示意图。

具体实施方式

下面,结合附图以及具体实施方式,对本发明做进一步描述,需要说明的是,在不相冲突的前提下,以下描述的各实施例之间或各技术特征之间可以任意组合形成新的实施例。

实施例一

参阅图1,图1为本发明第一实施例提供的一种命令处理方法的流程示意图,本实施例方法可以通过fido规范的命令实现证书功能。该方法包括以下步骤:

步骤s110:客户终端在检测到证书签名用户操作时,产生证书签名业务请求,将所述证书签名业务请求发送至服务器,服务器接收所述证书签名业务请求。

在本发明实施例中,较佳的,用户可以在客户终端的浏览器中进行证书签名操作,例如:用户在客户终端的浏览器中发起一笔交易,此交易需要用户在智能卡安全设备做签名进行身份验证,从而发起证书签名操作。

步骤s120:所述服务器依据证书签名业务请求生成fido注册请求指令,向智能卡安全设备发送fido注册请求指令,智能卡安全设备接收所述fido注册请求指令。

步骤s130:所述智能卡安全设备依据fido注册请求指令生成fido注册响应指令,向服务器发送fido注册响应指令,服务器接收所述fido注册响应指令。

其中,fido注册响应指令中包括keyhandle、x509证书及签名。

本实施中,若智能卡安全设备支持预定的扩展功能,可以通过在keyhandle或x509证书中包括预定编码来设定。例如,假设通过keyhandle来设定,可以在keyhandle中包括格式为flag1+flag2+userkey的编码,其中,flag1标识智能卡安全设备是否支持预定的扩展功能;flag2标识后续数据userkey的类型,userkey为数据信息,可以是apdu或密钥句柄值。

本实施例中,预定的扩展功能包括证书签名及验证密码等功能。

步骤s140:服务器依据fido注册响应指令判断智能卡安全设备是否支持预定的扩展功能,若否,证书功能失败,执行步骤s150;若是,执行步骤s160。

步骤s150:按照fido规范直接把注册时返回的keyhandle(flag1+flag2+userkey)通过fido认证请求指令下发给智能卡安全设备,使得智能卡安全设备内部验证userkey的正确性,从而实现fido的标准流程。

步骤s160:根据所述密码验证业务请求生成fido认证请求指令,在fido认证请求指令的keyhandle中包括以预定格式封装的预定协议的apdu指令,并向客户终端发送所述fido认证请求指令,客户终端接收所述fido认证请求指令。

在一个较佳的实例中,keyhandle中的以预定格式封装的预定协议的业务功能指令可以是“flag1+flag2+apdu”,其中的apdu是业务功能指令(applicationprotocoldataunit),例如随机数获取指令可以是01010084000009,其中第一个“01”表示支扩展功能,第二个“01”表示后续跟着业务功能指令。

步骤s170:客户终端将所述fido认证请求指令发送到智能卡安全设备。

可以理解为,客户终端将服务器的fido认证请求指令按照fido标准进行转换后发送转换后的fido认证请求指令到智能卡安全设备。

步骤s180:所述智能卡安全设备执行客户终端发送的所述fido认证请求指令中keyhandle中的apdu指令,产生业务功能响应数据,将所述业务功能响应数据按照预定协议封装到fido认证响应指令的signature中,并向服务器发送fido认证响应指令;服务器接收fido认证响应指令,获得其中的业务功能响应数据。

可以理解为:当用户进行签名验证时,apdu指令为签名指令,产生业务功能响应数据即签名结果,用于进行签名验证。

本发明实施例通过对fido规范的命令进行扩展,实现了证书功能,无需安装额外的插件或者接口软件,减少了客户安装额外中间件的麻烦,提高了智能卡安全设备的开发效率及工作的稳定性。

当需要对智能卡安全设备进行受限功能访问时,传统的方法是客户终端发起验证,由客户终端获取用户权限,以实现对智能卡安全设备的受限功能访问,但是fido规范是由服务端发起和主导的受限访问,而用户密码是在客户终端输入的,服务端如何获取用户权限以访问智能卡安全设备的受限功能,传统方法无法实现,本发明下面的第二实施例和第三实施例中的方案可以解决这一技术问题。

实施例二

参阅图2,图2为本发明第二实施例提供的一种命令处理方法的流程示意图,本实施例方法可以通过fido规范的命令验证用户输入密码,获取智能卡安全设备的访问权限。该方法包括以下步骤:

步骤s210:客户终端在检测到密码验证用户操作时,产生密码验证业务请求,将所述密码验证业务请求发送至服务器,服务器接收所述密码验证业务请求。

在本发明实施例中,较佳的,用户可以在客户终端的浏览器中进行密码验证操作,例如:用户在客户终端的浏览器中发起一笔交易,此交易需要用户智能卡安全设备做签名进行身份验证,而使用用户智能卡安全设备做签名需要验证用户密码,从而发起密码验证操作。

步骤s220:所述服务器依据密码验证业务请求生成fido注册请求指令,向智能卡安全设备发送fido注册请求指令,智能卡安全设备接收所述fido注册请求指令。

步骤s230:所述智能卡安全设备依据fido注册请求指令生成fido注册响应指令,向服务器发送fido注册响应指令,服务器接收所述fido注册响应指令。

其中,fido注册响应指令中包括keyhandle、x509证书及签名。

本实施中,若智能卡安全设备支持预定的扩展功能,可以通过在keyhandle或x509证书中包括预定编码来设定。例如,假设通过keyhandle来设定,可以在keyhandle中包括格式为“flag1+flag2+userkey”的编码。

本实施例中,预定的扩展功能包括密码验证功能。

步骤s240:服务器依据fido注册响应指令判断智能卡安全设备是否支持预定的扩展功能,若否,获取智能卡安全设备的访问权限失败,执行步骤s250,若是,执行步骤s260。

步骤s250:若智能卡安全设备支持fido规范则:按照fido规范直接把注册时返回的keyhandle(flag1+flag2+userkey)通过fido认证请求指令下发给智能卡安全设备,使得智能卡安全设备内部验证userkey的正确性,从而实现fido的标准流程。若智能卡安全设备不支持fido规范则访问失败。

步骤s260:根据所述密码验证业务请求生成第一fido认证请求指令,在第一fido认证请求指令的keyhandle中包括以预定格式封装的预定协议的随机数获取指令,并向客户终端发送所述第一fido认证请求指令,客户终端接收所述第一fido认证请求指令。

在一个较佳的实例中,keyhandle中的以预定格式封装的预定协议的随机数获取指令可以是“flag1+flag2+apdu”,其中的apdu是预定义的指令格式,例如随机数获取指令可以是01010084000009,其中第一个“01”表示支扩展功能,第二个“01”表示后续跟着业务功能指令。

步骤s270:所述客户终端将所述第一fido认证请求指令发送到智能卡安全设备。

可以理解为,客户终端将服务器的第一fido认证请求指令按照fido标准进行转换后发送转换后的第一fido认证请求指令。

步骤s280:智能卡安全设备从客户终端发来的第一fido认证指令的keyhandle中获得随机数获取指令,执行所述随机数获取指令生成随机数rand,并将随机数rand以预定协议封装到第一fido认证响应指令的signature中,将所述第一fido认证响应指令发送至所述客户终端,客户终端接收所述第一fido认证响应指令。

步骤s290:所述客户终端从所述第一fido认证响应指令的signature中获取随机数rand,并获取用户输入密码,对所述随机数rand和用户输入密码进行预定运算,使得用户输入密码对随机数rand进行加密,得到密码验证信息encrand。

步骤s2100:客户终端将密码验证信息encrand以预定协议封装到第二fido认证请求指令的keyhandle中,并将所述第二fido认证请求指令发送给智能卡安全设备,智能卡安全设备接收所述第二fido认证请求指令。

步骤s2110:智能卡安全设备依据所述随机数rand和第二fido认证请求指令中的密码验证信息encrand对所述用户输入密码进行验证,获得密码验证结果,将获得的密码验证结果封装在第二fido认证响应指令中的signature中,将所述第二fido认证响应指令发送至所述服务器,服务器接收所述第二fido认证响应指令。

在本发明实施例中,智能卡安全设备将保存的用户密码对第二fido认证请求指令中的密码验证信息encrand进行解密,并且对随机数rand进行比对;或者智能卡安全设备将保存的用户密码和随机数计算得出encrand2再与第二fido认证请求指令中的密码验证信息encrand进行比对。

步骤s2120:所述服务器对第二fido认证响应指令中的signature中的密码验证结果进行解析,若所述密码验证结果表示验证通过,则获得智能卡安全设备的访问权限,进而允许访问取智能卡安全设备中的受限功能。

实施例三

参阅图3,图3为本发明第三实施例提供的一种命令处理方法的流程示意图,本实施例方法可以通过fido规范的命令验证用户输入密码,获取智能卡安全设备的访问权限。该方法包括以下步骤:

步骤s310:客户终端在检测到密码验证用户操作时,产生密码验证业务请求,将所述密码验证业务请求发送至服务器,服务器接收所述密码验证业务请求。

在本发明实施例中,较佳的,用户可以在客户终端的浏览器中进行密码验证操作。

步骤s320:所述服务器依据密码验证业务请求生成fido注册请求指令,向智能卡安全设备发送fido注册请求指令,智能卡安全设备接收所述fido注册请求指令。

步骤s330:所述智能卡安全设备依据fido注册请求指令生成fido注册响应指令,向服务器发送fido注册响应指令,服务器接收所述fido注册响应指令。

其中,fido注册响应指令中包括keyhandle、x509证书及signture。

本实施中,若智能卡安全设备支持预定的扩展功能,可以通过在keyhandle或x509证书中包括预定编码来设定。例如,假设通过keyhandle来设定,可以在keyhandle中包括格式为flag1+flag2+userkey的编码。

步骤s340:服务器依据fido注册响应指令判断智能卡安全设备是否支持预定的扩展功能,若否,获取智能卡安全设备的访问权限失败,执行步骤s350,若是,执行步骤s360。

步骤s350:继续按照fido规范直接把注册时返回的keyhandle(flag1+flag2+userkey)通过fido认证请求指令下发给智能卡安全设备,使得智能卡安全设备内部验证userkey的正确性,从而实现fido的标准流程。

步骤s360:根据所述密码验证业务请求生成第一fido认证请求指令,在第一fido认证请求指令的keyhandle中包括以预定格式封装的预定协议的随机数获取指令,并向客户终端发送所述第一fido认证请求指令,客户终端接收所述第一fido认证请求指令。

在一个较佳的实例中,keyhandle中的以预定格式封装的预定协议(adpu协议)的随机数获取指令可以是“flag1+flag2+apdu”,其中的apdu是预定义的指令格式,例如随机数获取指令可以是01010084000009,其中第一个“01”表示支扩展功能,第二个“01”表示后续跟着业务功能指令。

步骤s370:所述客户终端将所述第一fido认证请求指令发送到智能卡安全设备。

可以理解的,客户终端将服务器的第一fido认证请求指令按照fido标准进行转换后发送转换后的第一fido认证请求指令。

步骤s380:智能卡安全设备从客户终端发来的第一fido认证请求指令的keyhandle中获得随机数获取指令,执行所述随机数获取指令生成随机数rand,并将随机数rand以预定协议封装到第一fido认证响应指令的signature中,将所述fido认证响应指令发送至所述客户终端,客户终端接收所述第一fido认证响应指令。

步骤s390:所述客户终端从所述第一fido认证响应指令的signature中获取随机数rand,把所述第一fido认证响应指令发送到服务器,服务器接收所述第一fido认证响应指令。

较佳的,客户终端在本地缓存获取的随机数rand。

步骤s3100:服务器生成并向客户终端发送第二fido认证请求指令,客户终端接收所述第二fido认证请求指令。所述第二fido认证请求指令的keyhandle中包括以预定格式封装的预定协议的第一密码验证信息encrand。本实施例中,第一密码验证信息encrand可以是依据从第一fido认证响应指令的signature中获取随机数rand后按预定运算生成的其他随机数,也可以是随机数rand本身,或者是其他数据,只要符合需要的数据格式。

步骤s3110:客户终端获取用户输入密码,对缓存的随机数rand和用户输入密码进行预定运算,使得用户输入密码对随机数rand进行加密,得到第二密码验证信息encrand2。

步骤s3120:客户终端以第二密码验证信息encrand2替换第二fido认证请求指令的keyhandle中的第一密码验证信息encrand,并将经过替换后的第二fido认证请求指令发送给智能卡安全设备,智能卡安全设备接收所述第二fido认证请求指令。

步骤s3130:智能卡安全设备依据所述随机数rand和第二fido认证请求指令的的keyhandle中的第二密码验证信息encrand2对所述用户输入密码进行验证,获得密码验证结果,将获得的密码验证结果封装在第二fido认证响应指令的signature中,将所述第二fido认证响应指令发送至所述服务器,服务器接收所述第二fido认证响应指令。

步骤s3140:所述服务器对第二fido认证响应指令的signature中的密码验证结果进行解析,若所述密码验证结果表示验证通过,则获得智能卡安全设备的访问权限,进而允许访问取智能卡安全设备中的受限功能。

实施例四

图4示出本发明第四实施例的一种命令处理方法,由服务器执行,本实施例的方法可以在fido规范的命令中加载预定协议的业务功能指令来实现相应的业务功能。所述方法包括:

s410:获得智能卡安全设备的第一fido指令。

s420:依据所述第一fido指令判断所述智能卡安全设备是否支持预定的扩展功能,若是,则生成并发送第二fido指令,所述第二fido指令包括以预定格式封装的预定协议的apdu指令。

较佳的,依据所述第一fido指令判断所述智能卡安全设备是否支持预定的扩展功能包括:判断所述第一fido指令是否包括预定编码,若是,则判定所述智能卡安全设备支持预定的扩展功能。

较佳的,在所述生成并发送第二fido指令后还包括:获得所述智能卡安全设备的第三fido指令,所述第三fido指令中包括以所述预定格式封装的预定协议的业务功能响应数据,所述业务功能响应数据对应于所述第二fido指令的adpu指令。

较佳的,所述业务功能指令包括密码验证指令;所述业务功能响应数据包括密码验证结果。

较佳的,在所述获得所述智能卡安全设备的第三fido指令后还包括:对所述密码验证结果进行解析,若所述密码验证结果表示验证通过,则获得所述智能卡安全设备的访问权限。

较佳的,所述第一fido指令为fido注册响应指令,所述第二fido指令为fido认证请求指令,第三fido指令为fido认证响应指令。所述业务功能指令封装在keyhandle中,所述业务功能响应数据封装在signature中。

实施例五

图5示出本发明第五实施例的一种命令处理方法,由智能卡安全设备执行,本实施例的方法可以在fido规范的命令中加载预定协议的业务功能指令来实现相应的业务功能,包括:

s510:接收第二fido指令。

s520:若判断所述第二fido指令为扩展功能指令,则生成第三fido指令。

较佳的,所述判断所述第二fido指令为扩展功能指令包括:判断所述第二fido指令是否包括预定编码,若是,则判定所述第二fido指令为扩展功能指令。

s530:发送所述第三fido指令,所述第三fido指令包括对应于所述扩展功能的以预定格式封装的预定协议的业务功能响应数据。

较佳的,本实施例中的第二fido指令为fido认证请求指令,第三fido指令为fido认证响应指令。所述智能卡安全设备支持所述扩展功能时所述第二fido指令中包括以预定格式封装的预定协议的业务功能指令,所述业务功能指令封装在keyhandle中,第三fido指令中的所述业务功能响应数据封装在signature中。

较佳的,在接收所述第二fido指令之前还包括:

接收第六fido指令;

生成并发送第一fido指令,所述第一fido指令中包括指示所述智能卡安全设备支持预定的扩展功能的信息。

较佳的,所述第六fido指令为fido注册请求指令,所述第一fido指令为fido注册响应指令。所述指示所述智能卡安全设备支持预定的扩展功能的信息封装在keyhandle或x509证书中。

实施例六

图6为本发明实施例的一种电子设备,包括存储器100、处理器200以及存储在存储器100中的程序,所述程序被配置成由处理器200执行,处理器200执行所述程序时实现:

第四实施例中由服务器执行的命令处理方法;或

第五实施例中的由智能卡安全设备执行的命令处理方法。

本发明实施例中,智能卡安全设备较佳的为智能卡安全设备,例如:usbkey、蓝牙盾、智能卡,当然,并不限于此,也可以是例如:手机、平板电脑、inse等其他支持fido规范指令的电子设备。

通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质(如rom/ram、磁碟、光盘等)中,包括若干指令用以使得一台设备(可以是个人计算机、服务器或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。

上述实施方式仅为本发明的优选实施方式,不能以此来限定本发明保护的范围,本领域的技术人员在本发明的基础上所做的任何非实质性的变化及替换均属于本发明所要求保护的范围。

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