一种认证器及其实现方法与流程

文档序号:14197086阅读:392来源:国知局
一种认证器及其实现方法与流程
本发明涉及身份认证
技术领域
,尤其涉及一种认证器及其实现方法。
背景技术
:现有技术中,普遍采用的用户身份认证方法有如下两种,一种是用户名和用户密码的静态认证方式,用户名和用户密码这些用作用户身份认证的认证数据需要通过网络上传给后台服务器,这种认证方式的缺陷是:认证数据在网络上传输不安全;另一种是采用动态口令(otp)的认证方式,这种认证方式的缺陷是:后台服务器需要保存用户的种子和密钥等信息,这些信息一旦泄露则用户的认证信息就泄露了。因此,寻求一种相比静态认证方式和动态认证方式更为安全的认证方法是本发明要解决的问题。技术实现要素:为解决现有技术中的问题,本发明提供了一种认证器及其实现方法。本发明的技术方案如下:一种认证器的实现方法,包括:步骤s1:认证器接收认证器接口发送的认证命令,并解析所述认证命令;步骤s2:所述认证器根据解析到的命令标签值判断所述认证命令的类型,若是注册命令则执行步骤s3,若是签名命令则执行步骤s4;步骤s3:所述认证器从解析到的命令数据域中获取密钥令牌信息;所述认证器生成认证密钥对,将所述密钥令牌信息与所述认证密钥对关联并保存,根据所述认证密钥对中的认证公钥创建注册数据;使用所述认证密钥对中的认证私钥对所述注册数据计算签名得到注册数据签名值,根据所述注册数据和所述注册数据签名值创建注册断言数据;根据所述注册断言数据和表示执行成功的状态码组成注册命令响应返回给所述认证器接口,返回步骤s1;步骤s4:所述认证器从解析到的命令数据域中获取密钥令牌信息和交易数据,根据所述密钥令牌信息获取与之关联的认证私钥;根据所述交易数据创建待签名数据,使用所述认证私钥对所述待签名数据计算签名得到交易签名值,根据所述待签名数据和所述交易签名值创建签名断言数据;根据所述签名断言数据和表示执行成功的状态码组成签名命令响应返回给所述认证器接口,返回步骤s1。优选的,上述步骤s3具体包括:步骤a1:所述认证器从解析到的命令数据域中获取用户名、断言类型信息和密钥令牌信息;步骤a2:所述认证器生成认证密钥对,根据所述密钥令牌信息、所述认证密钥对中的认证私钥和所述用户名创建原始密钥信息并存储;根据所述认证密钥对中的认证公钥创建注册数据;步骤a3:所述认证器根据所述断言类型信息确定签名密钥,并使用确定的签名密钥对所述注册数据进行签名得到注册数据签名值,根据所述注册数据和所述注册数据签名值创建注册断言数据;根据所述注册断言数据和表示执行成功的状态码组成注册命令响应返回给所述认证器接口,然后返回步骤s1。优选,上述步骤s4具体包括:步骤b1:所述认证器从解析到的命令数据域中获取密钥令牌信息,根据所述密钥令牌信息查找到原始密钥信息;步骤b2:所述认证器判断所述命令数据域中包含的交易数据的类型,若是交易内容则向用户显示所述交易内容,待收到用户确认时对所述交易内容进行哈希计算得到交易哈希值,然后执行步骤b3,若是交易哈希值则直接执行步骤b3;步骤b3:所述认证器根据所述交易哈希值创建待签名数据,使用所述原始密钥信息中包含的认证私钥对所述待签名数据进行签名得到交易签名值,根据所述待签名数据和所述交易签名值创建签名断言数据;根据所述签名断言数据和表示执行成功的状态码组成签名命令响应返回给所述认证器接口,然后返回步骤s1。所述步骤s3与步骤s4之前还包括:所述认证器判断是否已通过生物特征验证,是则直接执行下一步,否则待通过所述生物特征验证之后再执行下一步。进一步的,上述步骤s3还包括:所述认证器随机生成与所述认证密钥对关联的密钥句柄并存储。相应的,所述步骤s4中所述根据所述密钥令牌信息获取与之关联的认证私钥具体为:根据所述密钥令牌信息查找认证器内部存储的与之对应的所有原始密钥信息,若查找到的结果是一个则获取所述原始密钥信息中包含的认证私钥,若查找到的结果大于一个则将查找到的所述原始密钥信息中包含的密钥句柄显示给用户进行选择,根据用户选定的密钥句柄确定唯一的认证私钥;若未查找到则向认证器接口返回表示执行失败的状态码。进一步的,所述步骤s3中所述认证器返回给所述认证器接口的所述注册命令响应中还包含有所述密钥句柄;相应的,所述步骤s4具体为:所述认证器从解析到的命令数据域中获取密钥令牌信息、密钥句柄和交易数据,根据所述密钥令牌信息和所述密钥句柄查找到认证私钥;根据所述交易数据创建待签名数据,使用所述认证私钥对所述待签名数据计算签名得到交易签名值,根据所述待签名数据和所述交易签名值创建签名断言数据;根据所述签名断言数据和表示执行成功的状态码组成签名命令响应返回给所述认证器接口,返回步骤s1。本发明提供的一种认证器,包括:接收模块,用于接收认证器接口发送的认证命令,并解析所述认证命令;判断模块,用于根据所述接收模块解析到的命令标签值判断所述认证命令的类型,若是注册命令则触发第一操作模块,若是签名命令则触发第二操作模块;第一操作模块,用于从所述接收模块解析到的命令数据域中获取密钥令牌信息;用于生成认证密钥对,将所述密钥令牌信息与所述认证密钥对关联并保存,用于根据所述认证密钥对中的认证公钥创建注册数据,使用所述认证密钥对中的认证私钥对所述注册数据计算签名得到注册数据签名值,根据所述注册数据和所述注册数据签名值创建注册断言数据;以及用于根据所述注册断言数据和表示执行成功的状态码组成注册命令响应返回给所述认证器接口;第二操作模块,用于从所述接收模块解析到的命令数据域中获取密钥令牌信息和交易数据,根据所述密钥令牌信息获取与之关联的认证私钥;根据所述交易数据创建待签名数据,使用所述认证私钥对所述待签名数据计算签名得到交易签名值,根据所述待签名数据和所述交易签名值创建签名断言数据;以及用于根据所述签名断言数据和表示执行成功的状态码组成签名命令响应返回给所述认证器接口。优选的,本发明所述认证器还包括身份验证模块;所述判断模块,具体用于根据所述接收模块解析到的命令标签值判断所述认证命令的类型,若是注册命令或签名命令则触发所述身份验证模块;所述身份验证模块,用于判断是否已通过生物特征验证,是则根据所述判断模块判断得到的认证命令类型触发第一操作模块或第二操作模块,否则触发系统生物特征模块完成生物特征验证操作。所述第一操作模块,还用于随机生成与所述认证密钥对关联的密钥句柄并存储。所述第二操作模块包括:查找单元、签名单元和响应单元;所述查找单元,用于从所述接收模块解析到的命令数据域中获取密钥令牌信息和交易数据;根据所述密钥令牌信息查找认证器内部存储的与之对应的所有原始密钥信息,若查找到的结果是一个则获取所述原始密钥信息中包含的认证私钥,若查找到的结果大于一个则将查找到的所述原始密钥信息中包含的密钥句柄显示给用户进行选择,根据用户选定的密钥句柄确定唯一的认证私钥;若未查找到则生成表示执行失败的状态码并触发响应单元;所述签名单元,用于根据所述查找模块获取的所述交易数据创建待签名数据,使用所述查找模块确定的所述认证私钥对所述待签名数据计算签名得到交易签名值,根据所述待签名数据和所述交易签名值创建签名断言数据,根据所述签名断言数据和表示执行成功的状态码组成签名命令响应;所述响应单元,用于将所述签名单元组成的所述签名命令响应返回给所述认证器接口;以及用于在收到所述查找单元的触发时将所述表示执行失败的状态码返回给所述认证器接口。进一步的,所述第一操作模块还用于将生成的所述密钥句柄包含在所述注册命令响应中返回给所述认证器接口;相应的,所述第二操作模块包括:查找单元、签名单元和响应单元;所述查找单元,用于从所述接收模块解析到的命令数据域中获取密钥令牌信息、密钥句柄和交易数据;根据所述密钥令牌信息和所述密钥句柄查找到认证私钥;所述签名单元,用于根据所述查找模块获取的所述交易数据创建待签名数据,使用所述查找模块确定的所述认证私钥对所述待签名数据计算签名得到交易签名值,根据所述待签名数据和所述交易签名值创建签名断言数据,根据所述签名断言数据和表示执行成功的状态码组成签名命令响应;所述响应单元,用于将所述签名单元组成的所述签名命令响应返回给所述认证器接口。本发明的有益效果如下:本发明提供的认证器及其实现方法,该认证器可以实现如下认证功能,由认证器生成认证密钥对,认证器通过认证器接口与后台服务器交互,一方面在交互过程中作为认证信息的认证私钥不会出现在网络传输中,也不需要预先保存在后台服务器,可有效防止认证信息的泄露,另一方面身份认证中所使用的认证密钥对是非对称密钥,可有效增强认证安全性。附图说明图1是本发明实施例1提供的一种认证器实现方法的流程图;图2是本发明实施例2提供的一种认证器实现方法的流程图;图3是本发明实施例3提供的一种认证器实现的注册流程示意图;图4是本发明实施例3提供的一种认证器实现的签名流程示意图。具体实施方式为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。本发明中提及的命令及命令的数据域数据均采用"tag-length-value"(tlv)数据格式。优选的,本发明实施例中提及的系统是指集成有认证器和认证器接口的系统,例如,本发明实施例中所述系统可以是手机的系统,相应的,预置系统密钥是指手机中预置的密钥,系统生物特征验证接口是指手机中的具有身份识别功能的生物特征验证接口,系统密钥生成接口是指手机中的具有密钥生成功能的密钥生成接口,系统签名接口是指手机中的具有签名功能的签名计算接口。实施例1如图1所示,本实施例提供的一种认证器的实现方法,包括以下步骤:步骤s1:认证器接收认证器接口发送的认证命令,并解析所述认证命令;具体的,认证器按照tlv格式解析所述认证命令,其中的t为命令标签值,l为命令数据域中数据长度,v为命令数据域中数据。步骤s2:认证器根据解析到的命令标签值判断所述认证命令的类型,若是注册命令则执行步骤s3,若是签名命令则执行步骤s4;具体的,若解析到的命令标签值等于0x3402则所述认证命令是注册命令,若解析到的命令标签值等于0x3403则所述认证命令是签名命令。步骤s3:认证器从解析到的命令数据域中获取密钥令牌信息;所述认证器生成认证密钥对,将所述密钥令牌信息与所述认证密钥对关联并保存,根据所述认证密钥对中的认证公钥创建注册数据;使用所述认证密钥对中的认证私钥对所述注册数据计算签名得到注册数据签名值,根据所述注册数据和所述注册数据签名值创建注册断言数据;根据所述注册断言数据和表示执行成功的状态码组成注册命令响应返回给所述认证器接口,然后返回步骤s1;具体的,认证器将所述注册断言数据和表示执行成功的状态码作为数据域中数据按照tlv格式封装为注册命令响应返回给所述认证器接口;其中,t为注册命令响应标签值,l为注册命令响应数据域中数据长度,v为注册命令响应数据域中数据。例如,t=0x3602。优选的,认证器生成的所述认证密钥对是非对称密钥对。步骤s4:认证器从解析到的命令数据域中获取密钥令牌信息和交易数据,根据所述密钥令牌信息获取与之关联的认证私钥;根据所述交易数据创建待签名数据,使用所述认证私钥对所述待签名数据计算签名得到交易签名值,根据所述待签名数据和所述交易签名值创建签名断言数据;根据所述签名断言数据和表示执行成功的状态码组成签名命令响应返回给所述认证器接口,然后返回步骤s1。具体的,认证器将所述签名断言数据和表示执行成功的状态码作为数据域中数据按照tlv格式封装为签名命令响应返回给所述认证器接口;其中,t为签名命令响应标签值,l为签名命令响应数据域中数据长度,v为签名命令响应数据域中数据。例如,t=0x3603。进一步的,本实施例中,所述步骤s3还包括:所述认证器随机生成与所述认证密钥对关联的密钥句柄并存储,认证器返回给所述认证器接口的所述注册命令响应中同时还包含有所述密钥句柄;相应的,所述步骤s4中认证器从解析到的命令数据域中还可以获取到密钥句柄,并在查找认证私钥时根据所述密钥令牌信息和所述密钥句柄精确查找到唯一的认证私钥。优选的,步骤s3中认证器会根据密钥令牌信息、认证私钥和密钥句柄创建一条原始密钥信息保存在认证器的密钥信息列表中。步骤s4中认证器在查找认证私钥时,根据签名命令数据域中获取的密钥令牌信息和密钥句柄在密钥信息列表中查找到对应的一条原始密钥信息,并获取其中包含的认证私钥。实施例2如图2所示,本实施例提供的一种认证器的实现方法,包括以下内容:步骤1:认证器接收认证器接口发送的认证命令,根据tlv格式解析所述认证命令;具体的,所述认证命令采用tlv格式,命令的数据域(即tlv中的v)也是tlv格式。优选的,本步骤还包括,当认证器接收到认证命令时,根据tlv格式解析所述认证命令,当所认证命令格式正确时还进一步判断是否已通过生物特征验证,是则执行下一步,否则需先完成生物特征验证;当所认证命令格式不正确时则向认证器接口返回错误状态码。具体的,认证器调用系统生物特征验证接口,根据所述系统生物特征验证接口返回结果判断是否已通过生物特征验证,若已通过则执行下一步,否则触发系统生物特征验证接口进行生物特征验证。例如,生物特征验证可以是指纹验证、虹膜验证等等。步骤2:认证器根据解析到的命令标签值判断所述认证命令的类型,若是注册命令则执行步骤3,若是签名命令则执行步骤8;若是其他命令则执行步骤15;具体的,本实施例中所述其他命令包括获取信息命令、注销命令;优选的,若解析到的命令标签值是0x3402,则所述认证命令是注册命令,若解析到的命令标签值是0x3403,则所述认证命令是签名命令,若解析到的命令标签值是0x3401,则所述认证命令是获取信息命令,若解析到的命令标签值是0x3404,则所述认证命令是注销命令。例如,注册命令为:34025a000d280100010a2e2000a821c4979105877b2ca7ae57e0d9d42c9b638b22cb472b157f99c8e2097436ad0628030073646607280200083e052820007868736f616c613b7369656b65697a6b616f613b646a66646f646673613b6c6b签名命令为:34034d000d280100010a2e2000a821c4979105877b2ca7ae57e0d9d42c9b638b22cb472b157f99c8e2097436ad052820007868736f616c613b7369656b65697a6b616f613b646a66646f646673613b6c6b步骤3:认证器从解析到的注册命令数据域中获取用户名、断言类型信息和密钥令牌信息;具体的,认证器根据tlv格式对所述注册命令数据域的数据进行解析,根据用户名标签(tag=0x2806)获取用户名,根据断言类型标签(tag=0x2807)获取断言类型信息,根据密钥令牌标签(tag=0x2805)获取密钥令牌信息。优选的,用户名的最大长度是128字节,密钥令牌信息的最大长度是32字节。例如,根据tag=0x2806获取的用户名为736466;根据tag=0x2807获取的断言类型信息为3e08;根据tag=0x2805获取的密钥令牌信息为7868736f616c613b7369656b65697a6b616f613b646a66646f646673613b6c6b。步骤4:认证器生成认证密钥对,根据所述密钥令牌信息、所述认证密钥对中的认证私钥和所述用户名创建原始密钥信息,将创建的所述原始密钥信息以密文形式存储;本实施优选的,所述原始密钥信息的结构如下:密钥令牌信息认证私钥用户名长度值用户名优选的,认证器中存储有密钥信息列表,认证器使用预置系统密钥对所述原始密钥信息进行加密得到原始密钥信息的密文并存入所述密钥信息列表中。本步骤所述认证器生成认证密钥对还可以具体为:认证器调用系统生成密钥接口,并获取所述系统密钥生成接口返回的数据作为认证密钥对。优选的,本实施例中的认证密钥对是非对称密钥对,例如sm2密钥对。例如,生成的认证密钥对如下:048a3d060bffd68f1f16fd7c49d51609e24d8b2356577b5517016d8631ba40acd2dadababeb13dbeb70b33ece2008c6ffc12cedb3d2f6e4456471db8d50c616d76步骤5:认证器随机生成密钥标识,根据所述密钥标识和所述认证密钥对中的认证公钥创建注册数据;具体的,根据tlv格式创建注册数据,其中注册数据的t值对应0x3e03,注册数据的v值对应tlv格式封装的密钥标识和tlv格式封装的认证公钥,注册数据的l值对应所述密钥标识和所述认证公钥的总长度。进一步的,所述密钥标识的t值对应0x2e09,所述认证公钥的t值对应0x2e0c。步骤6:认证器根据所述断言类型确定签名密钥,并使用确定的签名密钥对所述注册数据进行签名得到注册数据签名值,根据所述注册数据和所述注册数据签名值创建注册断言数据;具体的,根据tlv格式创建注册断言数据,其中注册断言数据的t值对应0x3e01,注册断言数据的v值对应tlv格式封装的所述注册数据和tlv格式封装的所述注册数据签名值,注册断言数据的l值对应所述注册数据和所述注册数据签名值的总长度。进一步的,所述注册数据的t值对应0x3e04,所述注册数据签名值的t值对应0x2e06。优选的,所述使用确定的签名密钥对所述注册数据进行签名得到注册数据签名值可以具体为:认证器将所述签名密钥和注册数据作为输入参数调用系统签名接口得到所述注册签名值。例如,创建的注册断言数据为:033ecb000b2e09003039364523303030360e2e0700010001020001010a2e2000a821c4979105877b2ca7ae57e0d9d42c9b638b22cb472b157f99c8e2097436ad092e20006672323539366572686b65336a343836387a3177386639316b686339717039370d2e080000000000000000000c2e5b003059301306072a8648ce3d020106082a8648ce3d030107034200048a3d060bffd68f1f16fd7c49d51609e24d8b2356577b5517016d8631ba40acd2dadababeb13dbeb70b33ece2008c6ffc12cedb3d2f6e4456471db8d50c616d76083e4b00062e47003045022022bc4824efbe363ffe55b54dcec2317194a4d10cc2760d689531a5493299a08c0221008ded5255654816057f62dcd054905a96fc07e5ad031b7e80d537df61a3d9908d。步骤7:认证器根据所述注册断言数据和表示执行成功的状态码组成注册命令响应返回给所述认证器接口,然后返回步骤1;具体的,所述注册命令响应是tlv格式,其中注册命令响应对应的tag=0x3602,注册命令响应的v值包括表示执行成功的状态码和注册断言数据;其中,注册命令响应的v值中包含的表示执行成功的状态码也采用tlv格式封装组成,例如:tag=0x00,value=uaf_cmd_status_ok。步骤8:认证器从解析到的签名命令数据域中获取密钥令牌信息;具体的,认证器根据tlv格式对所述签名命令数据域的数据进行解析,根据密钥令牌信息标签(tag=0x2805)获取密钥令牌信息。步骤9:认证器根据所述密钥令牌信息查找认证器中存储的与之对应的原始密钥信息,若查找到则执行步骤11,若未查找到则执行步骤10;步骤10:认证器向认证器接口返回表示执行失败的状态码,返回步骤1;具体的,认证器向认证器接口返回的表示执行失败的状态码采用tlv格式封装组成;其中tag=0x09;value=uaf_cmd_status_key_disappeared_permanently。步骤11:认证器判断所述签名命令数据域中包含的交易相关数据的类型,若是交易内容则执行步骤12,若是交易哈希值则执行步骤13;具体的,认证器根据所述签名命令数据域中包含的交易相关数据的标签值判断其类型,若包含有标签值0x2810则表示签名命令数据域中包含的是交易内容,若包含有标签值0x2e10则表示签名命令数据域中包含的是交易哈希值。步骤12:认证器向用户显示所述交易内容,待收到用户确认时,对所述交易内容进行哈希计算得到交易哈希值;步骤13:认证器根据所述交易哈希值创建待签名数据,使用原始密钥信息中包含的认证私钥对所述待签名数据进行签名得到交易签名值,根据所述待签名数据和所述交易签名值创建签名断言数据;具体的,认证器根据所述交易哈希值和tlv格式创建所述待签名数据,待签名数据对应的tag=0x3e04,待签名数据的v值中除包含有交易哈希值,还可以包含有认证器标识、密钥标识等信息。本步骤按照tlv格式创建所述签名断言数据,其中签名断言数据的t值对应0x3e02,签名断言数据的v值包含tlv格式的待签名数据和tlv格式的交易签名值,签名断言数据的l值对应所述待签名数据和所述交易签名值的总长度。进一步的,所述待签名数据的t值对应0x3e04,所述交易签名值的t值对应0x2e06。优选的,所述使用原始密钥信息中包含的认证私钥对所述待签名数据进行签名得到交易签名值可以具体为:认证器将所述认证私钥和待签名数据作为输入参数调用系统签名接口得到所述交易签名值。步骤14:认证器根据所述签名断言数据和表示执行成功的状态码组成签名命令响应返回给所述认证器接口,然后返回步骤1;具体的,所述签名命令响应是tlv格式,其中签名命令响应对应的tag=0x3603,签名命令响应的v值包括表示执行成功的状态码和签名断言数据;其中,注册命令响应的v值中包含的表示执行成功的状态码也采用tlv格式,例如:tag=0x00,value=uaf_cmd_status_ok。步骤15:认证器执行其他相应操作,并向认证器接口返回相应的命令响应,然后返回步骤1。例如,认证器接收到获取信息命令时,根据认证器信息和表示执行成功的状态码组成获取信息命令响应返回给所述认证器接口。实施例3本实施例提供的认证器的实现方法,包括认证器实现的注册功能和签名功能,优选的,本实施例中所述认证器的实现所依托的系统简称为客户端,当客户端接收到上层下发的注册命令或签名命令时,所认证器通过客户端的认证器接口接收所述注册命令或签名命令,并执行本实施例中如图3和图4所示操作流程,并最终由客户端将认证器接口接收到的命令响应返回给上层。具体的,如图3所述,认证器实现的注册流程包括:当认证器接收到认证器接口下发的注册命令时,执行以下步骤:步骤101:从注册命令数据域中获取用户名、断言类型信息和密钥令牌信息;例如,客户端接收到上层下发的注册命令如下:[{"header":{"upv":{"major":1,"minor":0},"op":"reg","appid":"https://xtrongv2adapter.azurewebsites.net/trustedfacets/1","serverdata":"yzjsbs5sekjhwmt0v1ziqknua1f3vti1uvewae9xrfkxvm5cngqyvmzia1zfylzgbmvfchhprzlxzecwm01blldiunlimjvuuvdsdgfxnvfjbtlxwldoma"},"challenge":"g0ffkvtpbnd0snpchnx65vpxwe_nedmqgxjq8ojtm70","policy":{"accepted":[[{"aaid":["9874#0001"]}],[{"aaid":["9874#0101"]}],[{"aaid":["ffff#0001"]}],[{"aaid":["ffff#0002"]}],[{"aaid":["ffff#0003"]}],[{"aaid":["ffff#0004"]}],[{"aaid":["ffff#0005"]}],[{"aaid":["ffff#0006"]}],[{"aaid":["ffff#0007"]}],[{"aaid":["ffff#0008"]}],[{"aaid":["ffff#0009"]}],[{"aaid":["ffff#0010"]}],[{"aaid":["ffff#0011"]}],[{"aaid":["ffff#0012"]}],[{"aaid":["ffff#0013"]}],[{"aaid":["ffff#0014"]}],[{"aaid":["ffff#0015"]}],[{"aaid":["ffff#0016"]}],[{"aaid":["ffff#0017"]}],[{"aaid":["ffff#5201"]}],[{"aaid":["0014#1001"]}],[{"aaid":["0033#0001"]}],[{"aaid":["0033#0101"]}],[{"aaid":["0043#1001"]}],[{"aaid":["0043#1002"]}],[{"aaid":["0052#0002"]}],[{"aaid":["0059#0001"]}],[{"aaid":["0059#0002"]}],[{"aaid":["0059#0003"]}],[{"aaid":["005b#0001"]}],[{"aaid":["005b#1001"]}],[{"aaid":["096e#0006"]}],[{"aaid":["0045#1005"]}],[{"aaid":["0054#1707"]}],[{"aaid":["0050#0001"]}],[{"aaid":["0010#0004"]}],[{"aaid":["0030#3000"]}],[{"aaid":["0030#3001"]}],[{"aaid":["0052#0001"]}],[{"aaid":["0058#0000"]}],[{"aaid":["0058#0001"]}],[{"aaid":["0055#0001"]}],[{"aaid":["0056#0001"]}],[{"aaid":["0037#0001"]}]]},"username":"sdf"}]。步骤102:判断是否支持所述断言类型信息,是则执行步骤104,否则执行步骤103;步骤103:向认证器接口返回表示执行失败的状态码,结束;步骤104:生成认证密钥对,根据所述密钥令牌信息、所述认证密钥对中的认证私钥和所述用户名创建原始密钥信息,并使用预置系统密钥加密所述原始密钥信息得到原始密钥信息密文,将所述原始密钥信息密文保存在密钥信息列表中;步骤105:随机生成密钥标识,根据所述密钥标识和所述认证密钥对中的认证公钥创建注册数据;步骤106:判断断言类型,若是第一预设类型则执行步骤107,若是第二预设类型则执行步骤108;步骤107:使用所述密钥标识对所述注册数据进行签名得到注册数据签名值,根据所述注册数据和所述注册数据签名值创建注册断言数据,然后执行步骤109;步骤108:使用所述认证密钥对中的认证私钥对所述注册数据进行签名得到注册数据签名值,根据所述注册数据和所述注册数据签名值创建注册断言数据;例如,本步骤创建得到的所述注册断言数据如下:033ecb000b2e09003039364523303030360e2e0700010001020001010a2e2000a821c4979105877b2ca7ae57e0d9d42c9b638b22cb472b157f99c8e2097436ad092e20006672323539366572686b65336a343836387a3177386639316b686339717039370d2e080000000000000000000c2e5b003059301306072a8648ce3d020106082a8648ce3d030107034200048a3d060bffd68f1f16fd7c49d51609e24d8b2356577b5517016d8631ba40acd2dadababeb13dbeb70b33ece2008c6ffc12cedb3d2f6e4456471db8d50c616d76083e4b00062e47003045022022bc4824efbe363ffe55b54dcec2317194a4d10cc2760d689531a5493299a08c0221008ded5255654816057f62dcd054905a96fc07e5ad031b7e80d537df61a3d9908d。步骤109:根据所述注册断言数据和表示执行成功的状态码组成注册命令响应返回给认证器接口,结束。例如,由客户端返回给上层的注册命令响应如下:[{"assertions":[{"assertion":"at4eaqm-ywallgkamdk2rsmwmda2di4haaeaaqiaaqekliaaqchel5efh3ssp65x4nnuljtjiyllrysvf5ni4gl0nq0jliaazniyntk2zxjoa2uzajq4njh6mxc4zjkxa2hjoxfwotcnlggaaaaaaaaaaaamllsamfkwewyhkozizj0caqyikozizj0daqcdqgaeij0gc__wjx8w_xxj1ryj4k2li1zxe1uxaw2gmbparnla2rq-st2-twsz7oiajg_8es7bps9urfzhhbjvdgftdgg-swaglkcameucick8sctvvjy__lw1tc7cmxgupnemwnynajuxpukymacmaieaje1svwvifgv_ytzqvjbalvwh5a0dg36a1tffyapzki0","assertionscheme":"uafv1tlv"}],"fcparams":"eyjhchbjrci6imh0dhbzoi8vehryb25ndjjhzgfwdgvylmf6dxjld2vic2l0zxmubmv0l1rydxn0zwrgywnldhmvmsisimnoywxszw5nzsi6ikcwrmzlvlrwqk5emfnuuenitlg2nvzwehdlx25frg1rz3hkcthvanrtnzailcjjagfubmvsqmluzgluzyi6e30simzhy2v0suqioijhbmryb2lkomfway1rzxktagfzadptdllanfnnyxm5vdirnkrwtmo1njzpc2n1bnmifq","header":{"appid":"https://xtrongv2adapter.azurewebsites.net/trustedfacets/1","op":"reg","serverdata":"yzjsbs5sekjhwmt0v1ziqknua1f3vti1uvewae9xrfkxvm5cngqyvmzia1zfylzgbmvfchhprzlxzecwm01blldiunlimjvuuvdsdgfxnvfjbtlxwldoma","upv":{"major":1,"minor":0}}}]。如图4所示,认证器实现的签名流程包括:当认证器接收到认证器接口下发的签名命令时,执行以下步骤:步骤201:从签名命令数据域中获取密钥令牌信息;例如:客户端接收到上层下发的签名命令如下:[{"header":{"upv":{"major":1,"minor":0},"op":"auth","appid":"https://xtrongv2adapter.azurewebsites.net/trustedfacets/1","serverdata":"yzjsbs5aa0pvwm5kegntmdvvsfjhvg1wzmnrefjwvll0zdjoue5fagzjr2rmy205rvzfy3rxrgxsytborlnrlldiunlimjvuuvdsdgfxnvfjbtlxwldoma"},"challenge":"fbtfwqrm9ptzne_rlquv-wco4h_pg_rodtg-x9qkhei","policy":{"accepted":[[{"aaid":["9874#0001"]}],[{"aaid":["9874#0101"]}],[{"aaid":["ffff#0001"]}],[{"aaid":["ffff#0002"]}],[{"aaid":["ffff#0003"]}],[{"aaid":["ffff#0004"]}],[{"aaid":["ffff#0005"]}],[{"aaid":["ffff#0006"]}],[{"aaid":["ffff#0007"]}],[{"aaid":["ffff#0008"]}],[{"aaid":["ffff#0009"]}],[{"aaid":["ffff#0010"]}],[{"aaid":["ffff#0011"]}],[{"aaid":["ffff#0012"]}],[{"aaid":["ffff#0013"]}],[{"aaid":["ffff#0014"]}],[{"aaid":["ffff#0015"]}],[{"aaid":["ffff#0016"]}],[{"aaid":["ffff#0017"]}],[{"aaid":["ffff#5201"]}],[{"aaid":["0014#1001"]}],[{"aaid":["0033#0001"]}],[{"aaid":["0033#0101"]}],[{"aaid":["0043#1001"]}],[{"aaid":["0043#1002"]}],[{"aaid":["0052#0002"]}],[{"aaid":["0059#0001"]}],[{"aaid":["0059#0002"]}],[{"aaid":["0059#0003"]}],[{"aaid":["005b#0001"]}],[{"aaid":["005b#1001"]}],[{"aaid":["096e#0006"],"keyids":["zniyntk2zxjoa2uzajq4njh6mxc4zjkxa2hjoxfwotc"]}],[{"aaid":["0045#1005"]}],[{"aaid":["0054#1707"]}],[{"aaid":["0050#0001"]}],[{"aaid":["0010#0004"]}],[{"aaid":["0030#3000"]}],[{"aaid":["0030#3001"]}],[{"aaid":["0052#0001"]}],[{"aaid":["0058#0000"]}],[{"aaid":["0058#0001"]}],[{"aaid":["0055#0001"]}],[{"aaid":["0056#0001"]}],[{"aaid":["0037#0001"]}]]}}]。步骤202:使用预置系统密钥对认证器中存储的密钥信息列表中的原始密钥信息进行解密,通过对获取的所述密钥令牌信息和解密出的解密结果进行比对筛选原始密钥信息;步骤203:判断筛选到的原始密钥信息个数,若等于0则执行步骤204,若大于1则执行步骤205,若等于1则执行步骤206;步骤204:向认证器接口返回表示执行失败的状态码,结束;步骤205:选取筛选到的第一个原始密钥信息,执行步骤206;进一步的,上述步骤104中还可以包括:随机生成与所述认证密钥对关联的密钥句柄并存储;认证器中存储的所述原始密钥信息中包含有认证私钥及其密钥句柄;本步骤可以替换为:将筛选到的所有原始密钥信息中的密钥句柄显示给用户供用户选择,根据用户选定的密钥句柄确定唯一的认证私钥。步骤206:从筛选到的原始密钥信息中获取认证私钥;步骤207:判断所述签名命令数据域中包含的交易相关数据的类型,若是交易内容则执行步骤208,若是交易哈希值则执行步骤209;具体的,认证器根据所述签名命令数据域中包含的交易相关数据的标签值判断其类型,若包含有标签值0x2810则表示签名命令数据域中包含的是交易内容,若包含有标签值0x2e10则表示签名命令数据域中包含的是交易哈希值。步骤208:向用户显示所述交易内容,待收到用户确认时,对所述交易内容进行哈希计算得到交易哈希值,然后执行步骤209;步骤209:根据所述交易哈希值创建待签名数据,使用所述认证私钥对所述待签名数据进行签名得到交易签名值,根据所述待签名数据和所述交易签名值创建签名断言数据;例如:本步骤创建的所述签名断言数据如下:043e7e000b2e09003039364523303030360e2e050001000102000f2e1000796e756f633269716c736861346d32730a2e2000350aa5bc429c74e0f60ffc2a6de161cd0838d7162aebcdfed156c5c681e11073102e0000092e20006672323539366572686b65336a343836387a3177386639316b686339717039370d2e040000000000062e47003045022100f59091d5ffb5acbf214e2523c0babebf2055d7c6aa84da30c7268804154357cc02202d83df574c1aa642266b2f85e6f81f23f34da529f907988c16882a571d06db4a步骤210:根据所述签名断言数据和表示执行成功的状态码组成签名命令响应返回给认证器接口,结束。例如,由客户端返回给上层的签名命令响应如下:[{"assertions":[{"assertion":"aj7naaq-fgallgkamdk2rsmwmda2di4faaeaaqiady4qahludw9jmmlxbhnoytrtmnmkliaanqqlvekcdod2d_wqbefhzqg41xyq683-0vbfxohhehmqlgaacs4gagzymju5nmvyagtlm2o0ody4ejf3ogy5mwtoyzlxcdk3ds4eaaaaaaaglkcameuciqd1kjhv_7wsvyfojspaur6_ifxxxqqe2jdhjogefunxzaiglypfv0wapkimay-f5vgfi_nnpsn5b5imfogqvx0g20o","assertionscheme":"uafv1tlv"}],"fcparams":"eyjhchbjrci6imh0dhbzoi8vehryb25ndjjhzgfwdgvylmf6dxjld2vic2l0zxmubmv0l1rydxn0zwrgywnldhmvmsisimnoywxszw5nzsi6imzcvgz3cxjtovb0wk5lx3jmuvvwlxdjtzrix3bnx3jvrfrhlvg5uwtirukilcjjagfubmvsqmluzgluzyi6e30simzhy2v0suqioijhbmryb2lkomfway1rzxktagfzadptdllanfnnyxm5vdirnkrwtmo1njzpc2n1bnmifq","header":{"appid":"https://xtrongv2adapter.azurewebsites.net/trustedfacets/1","op":"auth","serverdata":"yzjsbs5aa0pvwm5kegntmdvvsfjhvg1wzmnrefjwvll0zdjoue5fagzjr2rmy205rvzfy3rxrgxsytborlnrlldiunlimjvuuvdsdgfxnvfjbtlxwldoma","upv":{"major":1,"minor":0}}}]。实施例4本实施例提供了一种认证器,通过与认证器接口交互工作,对认证器接口发来的认证命令的处理来实现注册和签名的功能。所述认证器具体包括以下功能模块:接收模块,用于接收认证器接口发送的认证命令,并解析所述认证命令;判断模块,用于根据所述接收模块解析到的命令标签值判断所述认证命令的类型,若是注册命令则触发第一操作模块,若是签名命令则触发第二操作模块;第一操作模块,用于从所述接收模块解析到的命令数据域中获取密钥令牌信息;用于生成认证密钥对,将所述密钥令牌信息与所述认证密钥对关联并保存,用于根据所述认证密钥对中的认证公钥创建注册数据,使用所述认证密钥对中的认证私钥对所述注册数据计算签名得到注册数据签名值,根据所述注册数据和所述注册数据签名值创建注册断言数据;以及用于根据所述注册断言数据和表示执行成功的状态码组成注册命令响应返回给所述认证器接口;第二操作模块,用于从所述接收模块解析到的命令数据域中获取密钥令牌信息和交易数据,根据所述密钥令牌信息获取与之关联的认证私钥;根据所述交易数据创建待签名数据,使用所述认证私钥对所述待签名数据计算签名得到交易签名值,根据所述待签名数据和所述交易签名值创建签名断言数据;以及用于根据所述签名断言数据和表示执行成功的状态码组成签名命令响应返回给所述认证器接口。优选的,本实施例中所述第一操作模块具体包括获取单元、注册单元、存储单元和发送单元;所述获取单元,用于从所述接收模块解析到的命令数据域中获取用户名、断言类型信息和密钥令牌信息;所述注册单元,用于在所述获取单元获取到所述用户名、断言类型信息和密钥令牌信息之后生成认证密钥对,根据所述获取单元获取的所述密钥令牌信息、所述用户名与生成的所述认证密钥对中的认证私钥创建原始密钥信息并存储在所述存储单元;根据所述认证密钥对中的认证公钥创建注册数据;根据所述获取单元获取的所述断言类型信息确定签名密钥,并使用确定的签名密钥对所述注册数据进行签名得到注册数据签名值,根据所述注册数据和所述注册数据签名值创建注册断言数据;根据所述注册断言数据和表示执行成功的状态码组成注册命令响应;或者是,所述注册单元具体用于在所述获取单元获取到所述用户名、断言类型信息和密钥令牌信息之后生成认证密钥对,根据所述获取单元获取的所述密钥令牌信息、所述用户名与生成的所述认证密钥对中的认证私钥创建原始密钥信息,使用预置系统密钥对创建的所述原始密钥信息进行加密得到原始密钥信息的密文并存储到所述存储单元中的密钥信息列表中;根据所述认证密钥对中的认证公钥创建注册数据;根据所述获取单元获取的所述断言类型信息确定签名密钥,并使用确定的签名密钥对所述注册数据进行签名得到注册数据签名值,根据所述注册数据和所述注册数据签名值创建注册断言数据;根据所述注册断言数据和表示执行成功的状态码组成注册命令响应。所述发送单元,用于将所述注册单元组成的所述注册命令响应返回给所述认证器接口;所述存储单元,用于存储所述注册单元创建的所述原始密钥信息。进一步的,所述第一操作模块还包括第一判断单元,用于判断所述认证器是否支持所述获取单元获取的所述断言类型信息,是则触发所述注册单元,否则生成表示执行失败的状态码;所述发送单元,还用于将所述第一判断单元生成的表示执行失败的状态码返回给所述认证器接口。优选的,所述注册单元具体包括:密钥生成单元、数据创建单元、签名密钥确认单元、签名计算单元、响应组成单元;所述密钥生成单元,用于生成认证密钥对和密钥标识;所述数据创建单元,用于根据所述获取单元获取的所述密钥令牌信息、所述用户名与所述密钥生成单元生成的所述认证密钥对中的认证私钥创建原始密钥信息并存储在所述存储单元;还用于根据所述认证密钥对中的认证公钥创建注册数据;所述签名密钥确定单元,用于根据所述获取单元获取的所述断言类型信息判断断言类型,若是第一预设类型则确定要使用的签名密钥为所述密钥标识,若是第二预设类型则确定要使用的签名密钥为所述认证密钥对中的认证私钥;所述签名计算单元,用于使用所述签名密钥确定单元确定的签名密钥对所述数据创建单元创建的所述注册数据进行签名得到注册数据签名值,根据所述注册数据和所述注册数据签名值创建注册断言数据;所述响应组成单元,用于根据所述签名计算单元创建的所述注册断言数据和表示执行成功的状态码组成注册命令响应。优选的,本实施例中所述第二操作模块具体包括查找单元、第二判断单元、签名单元和响应单元;所述查找单元,用于从所述接收模块解析到的命令数据域中获取密钥令牌信息,根据所述密钥令牌信息查找到原始密钥信息;所述第二判断单元,用于判断所述接收模块解析到的所述命令数据域中包含的交易数据的类型,若是交易内容则向用户显示所述交易内容,待收到用户确认时对所述交易内容进行哈希计算得到交易哈希值,然后触发所述签名单元,若是交易哈希值则直接触发所述签名单元;优选的,所述第二判断单元具体用于根据所述接收模块解析到的所述命令数据域中包含的交易数据标签值判断所述交易数据的类型,若包含有第一预设标签值则表示所述命令数据域中包含的是交易内容,向用户显示所述交易内容,待收到用户确认时对所述交易内容进行哈希计算得到交易哈希值,然后触发所签名单元,若包含有第二预设标签值则表示所述命令数据域中包含的是交易哈希值,直接触发所述签名单元。所述签名单元,用于在收到所述第二判断单元的触发时,根据所述交易哈希值创建待签名数据,使用所述查找单元查找到的所述原始密钥信息中包含的认证私钥对所述待签名数据进行签名得到交易签名值,根据所述待签名数据和所述交易签名值创建签名断言数据;根据所述签名断言数据和表示执行成功的状态码组成签名命令响应;所述响应单元,用于将所述签名单元组成的所述签名命令响应返回给所述认证器接口。优选的,所述查找单元具体用于从所述接收模块解析到的命令数据域中获取密钥令牌信息,根据所述密钥令牌信息查找存储单元中存储的与之对应的原始密钥信息,若查找到则触发所述第二判断单元,若未查找到生成表示执行失败的状态码并触发所述响应单元;所述响应单元,还用于在收到所述查找单元的触发时将所述表示执行失败的状态码返回给所述认证器接口。或者是,所述查找单元具体用于从所述接收模块解析到的命令数据域中获取密钥令牌信息,使用预置系统密钥对认证器中存储的密钥信息列表中的原始密钥信息进行解密,通过对获取的所述密钥令牌信息和解密出的解密结果进行比对来筛选原始密钥信息,若筛选到则触发所述第二判断单元,否则生成表示执行失败的状态码并触发所述响应单元;所述响应单元,还用于在收到所述查找单元的触发时将所述表示执行失败的状态码返回给所述认证器接口。优选的,所述查找单元还包括有判断子单元;所述判断子单元,用于在所述查找单元触发所述第二判断单元之前,判断筛选结果的个数,若等于1则触发所述第二判断单元,否则选定第一个筛选到的原始密钥信息之后触发所述第二判断单元。进一步的,本实施例中的所述认证器还包括身份验证模块;所述判断模块,具体用于根据所述接收模块解析到的命令标签值判断所述认证命令的类型,若是注册命令或签名命令则触发所述身份验证模块;所述身份验证模块,用于判断是否已通过生物特征验证,是则根据所述判断模块判断得到的认证命令类型触发第一操作模块或第二操作模块,否则触发系统生物特征模块完成生物特征验证操作。所述身份验证模块,具体用于当收到所述判断模块的触发时,调用系统生物特征验证接口,根据所述系统生物特征验证接口返回结果判断是否已通过生物特征验证,是则根据所述判断模块判断得到的认证命令类型触发第一操作模块或第二操作模块,否则触发系统生物特征模块完成生物特征验证操作。实施例5本实施例提供了一种认证器,包括以下功能模块:接收模块,用于接收认证器接口发送的认证命令,并解析所述认证命令;判断模块,用于根据所述接收模块解析到的命令标签值判断所述认证命令的类型,若是注册命令则触发第一操作模块,若是签名命令则触发第二操作模块;进一步的,本实施例中所述认证器的接收模块接收到的认证命令经所述判断模块判断为其他命令类型时,则触发其他相应操作模块执行相应操作之后向认证器接口返回相应的命令响应,例如,认证器的判断模块判断所述接收模块接收到的认证命令是获取信息命令时,触发第三操作模块,所述第三操作模块,用于根据认证器信息和表示执行成功的状态码组成获取信息命令响应返回给所述认证器接口。第一操作模块,用于从所述接收模块解析到的命令数据域中获取密钥令牌信息;用于生成认证密钥对,将所述密钥令牌信息与所述认证密钥对关联并保存,用于根据所述认证密钥对中的认证公钥创建注册数据,使用所述认证密钥对中的认证私钥对所述注册数据计算签名得到注册数据签名值,根据所述注册数据和所述注册数据签名值创建注册断言数据;以及用于根据所述注册断言数据和表示执行成功的状态码组成注册命令响应返回给所述认证器接口;第二操作模块,用于从所述接收模块解析到的命令数据域中获取密钥令牌信息和交易数据,根据所述密钥令牌信息获取与之关联的认证私钥;根据所述交易数据创建待签名数据,使用所述认证私钥对所述待签名数据计算签名得到交易签名值,根据所述待签名数据和所述交易签名值创建签名断言数据;以及用于根据所述签名断言数据和表示执行成功的状态码组成签名命令响应返回给所述认证器接口。优选的,所述第一操作模块,还用于随机生成与所述认证密钥对关联的密钥句柄并存储。相应的,所述第二操作模块包括:查找单元、签名单元和响应单元;所述查找单元,用于从所述接收模块解析到的命令数据域中获取密钥令牌信息和交易数据;根据所述密钥令牌信息查找认证器内部存储的与之对应的所有原始密钥信息,若查找到的结果是一个则获取所述原始密钥信息中包含的认证私钥,若查找到的结果大于一个则将查找到的所述原始密钥信息中包含的密钥句柄显示给用户进行选择,根据用户选定的密钥句柄确定唯一的认证私钥;若未查找到则生成表示执行失败的状态码并触发响应单元;所述签名单元,用于根据所述查找模块获取的所述交易数据创建待签名数据,使用所述查找模块确定的所述认证私钥对所述待签名数据计算签名得到交易签名值,根据所述待签名数据和所述交易签名值创建签名断言数据,根据所述签名断言数据和表示执行成功的状态码组成签名命令响应;所述响应单元,用于将所述签名单元组成的所述签名命令响应返回给所述认证器接口;以及用于在收到所述查找单元的触发时将所述表示执行失败的状态码返回给所述认证器接口。进一步的,本实施例中所述第一操作模块还用于将生成的所述密钥句柄包含在所述注册命令响应中返回给所述认证器接口;相应的,所述第二操作模块包括:查找单元、签名单元和响应单元;所述查找单元,用于从所述接收模块解析到的命令数据域中获取密钥令牌信息、密钥句柄和交易数据;根据所述密钥令牌信息和所述密钥句柄查找到认证私钥;优选的,所述查找单元具体用于从所述接收模块解析到的命令数据域中获取密钥令牌信息、密钥句柄和交易数据;根据所述密钥令牌信息查找到认证器内部存储的与之对应的所有原始密钥信息,并根据所述密钥句柄对所有原始密钥信息中的认证私钥进行筛选确定唯一的认证私钥。所述签名单元,用于根据所述查找模块获取的所述交易数据创建待签名数据,使用所述查找模块确定的所述认证私钥对所述待签名数据计算签名得到交易签名值,根据所述待签名数据和所述交易签名值创建签名断言数据,根据所述签名断言数据和表示执行成功的状态码组成签名命令响应;所述响应单元,用于将所述签名单元组成的所述签名命令响应返回给所述认证器接口。以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本
技术领域
的技术人员在本发明公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1