一种身份标识设备及其工作方法与流程

文档序号:13577314阅读:189来源:国知局
一种身份标识设备及其工作方法与流程

本发明涉及信息安全领域,尤其涉及一种身份标识设备及其工作方法。



背景技术:

随着网络技术的发展,网络生活在人们的生活中占据越来越重要的地位,涉及到日常生活的方方面面。然而,网络应用在给人们生活带来便利的同时,以网络诈骗、钓鱼攻击等为代表的安全威胁也随之日益增多。用户身份认证是解决上述问题的重要过程,通过对用户网络身份进行认证,可以确保实体身份的有效性。

目前国内的远程网络身份验证普遍使用“关联比对”方法,即将用户输入的“姓名+身份证号”等个人信息,传到后台对个人信息的正确性进行比对来认定其身份。“关联比对”方法在大规模应用的场景下主要存在以下问题:容易造成个人信息泄露,采集个人信息的网络应用服务机构安全水平不一,个人信息大规模泄露的风险越来越高。目前,我国已建立了电子身份标识(electronicidentity,eid)系统,该系统依托公安部的全国公民身份信息库,为保证网络用户身份的真实性提供了信任基础。因此,如何依托eid系统的优势,发明一种实现安全网络身份认证的身份标识设备及其工作方法是我们要解决的技术问题。



技术实现要素:

为解决现有技术中存在的技术问题,本发明提出了一种身份标识设备及其工作方法。

本发明的技术方案采用的技术方案如下:

一种身份标识设备,包括:

接收模块,用于接收终端下发的指令,并判断接收到的指令的类型,若是个人证书指令则触发证书导入模块,若是数据压缩指令则触发哈希计算模块,若是签名指令则触发签名计算模块;

证书导入模块,用于从所述接收模块接收到的所述个人证书指令的数据域数据中获取个人身份认证相关文件标识符和证书数据,根据所述个人身份认证相关文件标识符查找到个人证书文件、个人公钥文件、个人私钥文件、内部公钥文件和内部私钥文件,将所述证书数据写入所述个人证书文件,将所述内部公钥文件中的公钥和所述内部私钥文件中的私钥分别写入所述个人公钥文件和所述个人私钥文件,清空所述内部公钥文件和所述内部私钥文件,向终端返回表示执行成功的状态码;

哈希计算模块,用于对所述接收模块接收到的所述数据压缩指令的数据域数据进行压缩计算得到哈希数据,向终端返回表示执行成功的状态码和所述哈希数据;

签名计算模块,用于从所述接收模块接收到的所述签名指令的数据域数据中获取私钥文件标识符和所述哈希数据,根据所述私钥文件标识符找到所述个人私钥文件,根据所述个人私钥文件中的私钥和所述哈希数据计算得到签名结果,向终端返回表示执行成功的状态码和所述签名结果。

优选的,上述证书导入模块具体包括第一获取单元、第一查找单元、验证单元、公钥比对单元和数据写入单元;

所述第一获取单元,用于从所述导入个人证书指令的数据域数据中获取管理信息中心公钥文件标识符、内部公钥文件标识符、内部私钥文件标识符、个人证书文件标识符、个人公钥文件标识符、个人私钥文件标识符和证书数据,并触发第一查找单元;

所述第一查找单元,用于根据所述管理信息中心公钥文件标识符查找到管理信息中心公钥文件,根据所述内部公钥文件标识和所述内部私钥文件标识符符查找到内部公钥文件和内部私钥文件,根据所述个人证书文件标识符查找到个人证书文件,根据所述个人公钥文件标识符和所述个人私钥文件标识符查找到个人公钥文件和个人私钥文件;

所述验证单元,用于使用所述第一获取单元获取的所述管理信息中心公钥文件中的公钥验证所述证书数据,若验证成功则触发公钥比对单元,若验证失败则向终端返回表示执行失败的状态码;

所述公钥比对单元,用于比对所述第一获取单元获取到的所述证书数据中包含的公钥与所述第一查找单元查找到的所述内部公私钥文件中的公钥是否一致,是则触发数据写入单元,否则向终端返回表示执行失败的状态码;

所述数据写入单元,用于将所述证书数据写入所述个人证书文件,将所述内部公钥文件中的公私和所述内部私钥文件中的私钥分别写入所述个人公钥文件和所述个人私钥文件,清空所述内部公钥文件和所述内部私钥文件,向终端返回表示执行成功的状态码。

上述验证单元,具体用于根据所述管理信息中心公钥文件中的公钥和预设曲线参数组成第一拼接结果,对所述第一拼接结果进行哈希计算得到公钥哈希值,根据所述公钥哈希值和所述证书数据组成第二拼接结果,对所述第二拼接结果进行哈希计算得到哈希结果,用所述管理信息中心公钥文件中的公钥对所述哈希结果进行sm2验签,若验签成功则触发所述公钥比对单元,否则向终端返回表示执行失败的状态码。

优选的,所述设备还包括生成模块;所述接收模块,还用于当接收到终端下发的指令是生成密钥对指令时,触发所述生成模块;

所述生成模块,用于从所述生成密钥对指令的数据域数据中获取公钥文件标识符和私钥文件标识符,查找设备中是否存在分别与所述公钥文件标识符和所述私钥文件标识符对应的内部公钥文件和内部私钥文件,是则生成内部公钥和私钥,并分别写入所述内部公钥文件和所述内部私钥文件,向终端返回表示行成功的状态码,否则向终端返回表示文件不存在的状态码。

优选的,所述设备还包括密钥导入模块;所述接收模块,还用于当接收到终端下发的指令是导入密钥指令时,触发所述密钥导入模块;

所述密钥导入模块,用于从所述导入密钥指令的数据域数据中获取公钥或私钥文件标识符以及公私钥参数;查找是否存在与所述公钥或私钥文件标识符对应的指定公私钥文件,是则将所述公私钥参数写入到所述指定公私钥文件中,向终端返回表示执行成功的状态码,否则向终端返回表示文件不存在的状态码。

所述密钥导入模块,具体用于从所述导入密钥指令的数据域数据中获取载体公钥与载体私钥文件标识符以及载体公钥与载体私钥;查找是否存在分别与所述载体公钥与载体私钥文件标识符对应的载体公钥与载体私钥文件,是则将所述载体公钥与载体私钥分别写入到所述载体公钥与载体私钥文件中,向终端返回表示执行成功的状态码,否则向终端返回表示文件不存在的状态码;

或者所述密钥导入模块,具体用于所述管理信息中心公钥导入单元,用于从所述导入密钥指令的数据域数据中获取管理信息中心公钥文件标识符以及管理信息中心公钥;查找是否存在与所述管理信息中心公钥文件标识符对应的管理信息中心公钥文件,是则将所述管理信息中心公钥写入到所述管理信息中心公钥文件中,向终端返回表示执行成功的状态码,否则向终端返回表示文件不存在的状态码。

优选的,所述设备还包括公钥导出模块;所述接收模块,还用于当接收到终端下发的指令是导出公钥指令时,触发所述公钥导出模块;

所述公钥导出模块,用于从所述导出公钥指令的数据域数据中获取公钥文件标识符和签名私钥文件标识符,根据所述公钥文件标识符获取待导出的公钥,根据所述签名私钥文件标识符获取签名私钥,使用所述签名私钥对所述待导出的公钥计算得到数字签名,向终端返回所述待导出的公钥、所述数字签名和表示执行成功的状态码。

上述哈希计算模块具体包括第一判断单元和第一计算单元;

所述第一判断单元,用于判断所述数据压缩指令的数据域数据是否包含卡外数据和/或卡内指定文件数据,是则触发所述第一计算单元,否则向终端返回表示数据压缩失败的状态码;

所述第一计算单元,用于对所述数据压缩指令的数据域数据进行压缩计算得到哈希数据,向终端返回表示执行成功的状态码和所述哈希数据。

上述签名计算模块具体包括第二获取单元、第二查找单元和第二计算单元;

所述第二获取单元,用于从所述签名指令的数据域数据中获取私钥文件标识符和哈希数据;

所述第二查找单元,用于根据所述第二获取单元获取的所述私钥文件标识符查找所述个人私钥文件,若查找到则触发第二计算单元,若未查找到则向终端返回表示指定文件不存在的状态码;

所述第二计算单元,用于根据所述第二查找单元查找到的所述个人私钥文件中的私钥和所述第二获取单元获取的所述哈希数据计算得到签名结果,向终端返回表示执行成功的状态码和所述签名结果。

所述签名计算模块还包括第二判断单元;

所述第二查找单元,具体用于当查找到所述个人私钥文件时触发第二判断单元;

所述第二判断单元,用于判断是否已通过pin码验证,是则触发所述第二计算单元,否则向终端返回表示签名失败的状态码。

所述第二判断单元,具体用于判断是否设置有验pin成功标志,是则判断结果是已通过pin码验证,触发所述第二计算单元,否则判断结果是未通过pin码验证,向终端返回表示签名失败的状态码;

所述设备还包括验pin模块,所述接收模块,还用于当接收到终端下发的指令是验pin指令时,触发所述验pin模块;

所述验pin模块,用于根据设备上存储的pin码对所述验pin指令的数据域数据进行验证,若验证成功则设置验pin成功标志,并向终端返回表示执行成功的状态码,若验证失败则设置验pin失败标志,向终端返回表示验pin失败的状态码。

上述身份标识设备的工作方法,包括以下步骤:

步骤s1:设备接收终端下发的指令,并判断接收到的所述指令的类型,若是导入个人证书指令则执行步骤s2,若是数据压缩指令则执行步骤s3,若是签名指令则执行步骤s4;

步骤s2:所述设备从所述导入个人证书指令的数据域数据中获取个人身份认证相关文件标识符和证书数据,根据所述个人身份认证相关文件标识符查找到个人证书文件、个人公钥文件、个人私钥文件、内部公钥文件和内部私钥文件,将所述证书数据写入所述个人证书文件,将所述内部公钥文件中的公钥和所述内部私钥文件中的私钥分别写入所述个人公钥文件和所述个人私钥文件,清空所述内部公钥文件和所述内部私钥文件,向终端返回表示执行成功的状态码,返回步骤s1;

步骤s3:所述设备对所述数据压缩指令的数据域数据进行压缩计算得到哈希数据,向终端返回表示执行成功的状态码和所述哈希数据,返回步骤s1;

步骤s4:所述设备从所述签名指令的数据域数据中获取私钥文件标识符和所述哈希数据,根据所述私钥文件标识符找到所述个人私钥文件,根据所述个人私钥文件中的私钥和所述哈希数据计算得到签名结果,向终端返回表示执行成功的状态码和所述签名结果,返回步骤s1。

上述个人身份认证相关文件标识符包括管理信息中心公钥文件标识符、内部公钥文件标识符、内部私钥文件标识符、个人证书文件标识符、个人公钥文件标识符和个人私钥文件标识符;所述步骤s2具体包括:

步骤s2-1:所述设备从所述导入个人证书指令的数据域数据中获取管理信息中心公钥文件标识符、内部公钥文件标识符、内部私钥文件标识符、个人证书文件标识符、个人公钥文件标识符、个人私钥文件标识符和证书数据;

步骤s2-2:所述设备根据所述管理信息中心公钥文件标识符查找到管理信息中心公钥文件,根据所述内部公钥文件标识和所述内部私钥文件标识符符查找到内部公钥文件和内部私钥文件,根据所述个人证书文件标识符查找到个人证书文件,根据所述个人公钥文件标识符和所述个人私钥文件标识符查找到个人公钥文件和个人私钥文件;

步骤s2-3:所述设备使用所述管理信息中心公钥文件中的公钥验证所述证书数据,若验证成功则执行步骤s2-4,若验证失败则向终端返回表示执行失败的状态码,返回步骤s1;

步骤s2-4:所述设备比对所述证书数据中包含的公钥与所述内部公私钥文件中的公钥是否一致,是则执行步骤s2-5,否则向终端返回表示执行失败的状态码,返回步骤s1;

步骤s2-5:所述设备将所述证书数据写入所述个人证书文件,将所述内部公钥文件中的公私和所述内部私钥文件中的私钥分别写入所述个人公钥文件和所述个人私钥文件,清空所述内部公钥文件和所述内部私钥文件,向终端返回表示执行成功的状态码,返回步骤s1。

所述步骤s2-3具体为:所述设备根据所述管理信息中心公钥文件中的公钥和预设曲线参数组成第一拼接结果,对所述第一拼接结果进行哈希计算得到公钥哈希值,根据所述公钥哈希值和所述证书数据组成第二拼接结果,对所述第二拼接结果进行哈希计算得到哈希结果,用所述管理信息中心公钥文件中的公钥对所述哈希结果进行sm2验签,若验签成功则执行步骤s2-4,否则向终端返回表示执行失败的状态码,返回步骤s1。

优选的,上述步骤s1还包括:若所述设备接收到的所述指令类型是生成密钥对指令,则执行以下步骤:

步骤a1:从所述生成密钥对指令的数据域数据中获取公钥文件标识符和私钥文件标识符;

步骤a2:查找是否存在分别与所述公钥文件标识符和所述私钥文件标识符对应的内部公钥文件和内部私钥文件,是则执行步骤a3,否则向终端返回表示文件不存在的状态码,返回步骤s1;

步骤a3:生成内部公钥和私钥,并分别写入所述内部公钥文件和所述内部私钥文件,向终端返回表示行成功的状态码,返回步骤s1。

优选的,上述步骤s1还包括:若所述设备接收到的所述指令类型是导入密钥指令,则执行以下步骤:

步骤b1:从所述导入密钥指令的数据域数据中获取公钥或私钥文件标识符以及公私钥参数;

步骤b2:查找是否存在与所述公钥或私钥文件标识符对应的指定公私钥文件,是则执行步骤b3,否则向终端返回表示文件不存在的状态码,返回步骤s1;

步骤b3:将所述公私钥参数写入到所述指定公私钥文件中,向终端返回表示执行成功的状态码,返回步骤s1。

所述公钥或私钥文件标识符具体为载体公钥与载体私钥文件标识符,所述公私钥参数具体为载体公钥与载体私钥;或者所述公钥或私钥文件标识符具体为管理信息中心公钥文件标识符,所述公私钥参数具体为管理信息中心公钥。

所公私钥参数为公钥明文或私钥明文或公钥密文或私钥密文。

优选的,上述步骤s1还包括:若所述设备接收到的所述指令类型是导出公钥指令,则执行:从所述导出公钥指令的数据域数据中获取公钥文件标识符和签名私钥文件标识符,根据所述公钥文件标识符获取待导出的公钥,根据所述签名私钥文件标识符获取签名私钥,使用所述签名私钥对所述待导出的公钥计算得到数字签名,向终端返回所述待导出的公钥、所述数字签名和表示执行成功的状态码,返回步骤s1。

所述签名私钥文件标识符为载体私钥文件标识符,所述签名私钥为载体私钥。

优选的,上述步骤s3具体包括:

步骤d1:所述设备判断所述数据压缩指令的数据域数据是否包含卡外数据和/或卡内指定文件数据,是则执行步骤d2,否则向终端返回表示数据压缩失败的状态码,返回步骤s1;

步骤d2:所述设备对所述数据压缩指令的数据域数据进行压缩计算得到哈希数据,向终端返回表示执行成功的状态码和所述哈希数据,返回步骤s1。

优选的,上述步骤s4具体包括:

步骤c1:从所述签名指令的数据域数据中获取私钥文件标识符和哈希数据;

步骤c2:根据所述私钥文件标识符查找所述个人私钥文件,若查找到则执行步骤c3,若未查找到则向终端返回表示指定文件不存在的状态码,返回步骤s1;

步骤c3:根据查找到的所述个人私钥文件中的私钥和所述哈希数据计算得到签名结果,向终端返回表示执行成功的状态码和所述签名结果,返回步骤s1。

所述步骤c3之前还包括,判断是否已通过pin码验证,是则执行所述步骤c3,否则向终端返回表示签名失败的状态码,返回步骤s1。

所述判断是否已通过pin码验证具体为,判断是否设置有验pin成功标志,是则已通过pin码验证,否则未通过pin码验证;

相应的,所述步骤s1还包括:若所述设备接收到的所述指令类型是验pin指令,是则执行以下步骤:根据设备上存储的pin码对所述验pin指令的数据域数据进行验证,若验证成功则设置验pin成功标志,并向终端返回表示执行成功的状态码,若验证失败则设置验pin失败标志,向终端返回表示验pin失败的状态码。

本发明的有益效果在于,本发明提供的身份标识设备及其工作方法,在用户通过网络并使用所述身份标识设备登录网络应用时,设备与终端的交互过程中无需输入和传递个人信息,防止了网络应用平台泄露个人信息,有效提高了用户网络身份认证的安全性。

附图说明

图1是本发明实施例1提供的一种身份标识设备的工作方法流程图;

图2是本发明实施例2提供的一种身份标识设备的工作方法流程图;

图3是本发明实施例2提供的一种个人证书的导入流程图;

图4是本发明实施例2提供的一种内部公私钥的生成流程图;

图5是本发明实施例2提供的一种管理信息中心公钥的导入流程图。

具体实施方式

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

实施例1

本实施例提供的一种身份标识设备的工作方法,如图1所示,包括以下步骤:

步骤s1:设备接收终端下发的指令;

步骤s2:设备判断所述指令的类型,若是导入个人证书指令则执行步骤s3,若是数据压缩指令则执行步骤s6,若是签名指令则执行步骤s8;

步骤s3:设备从所述导入个人证书指令的数据域数据中获取个人身份认证相关文件标识符和证书数据,根据所述个人身份认证相关文件标识符查找到个人证书文件、个人公钥文件、个人私钥文件、内部公钥文件和内部私钥文件;

优选的,本实施例中所述个人身份认证相关文件标识符包括内部公钥文件标识符、内部私钥文件标识符、个人证书文件标识符、个人公钥文件标识符和个人私钥文件标识符;

进一步的,还包括管理信息中心公钥文件标识符,相应的,步骤s3具体包括:

步骤1:设备从所述导入个人证书指令的数据域数据中获取管理信息中心公钥文件标识符、内部公钥文件标识符、内部私钥文件标识符、个人证书文件标识符、个人公钥文件标识符、个人私钥文件标识符和证书数据;

步骤2:所述设备根据所述管理信息中心公钥文件标识符查找到管理信息中心公钥文件,根据所述内部公钥文件标识和所述内部私钥文件标识符符查找到内部公钥文件和内部私钥文件,根据所述个人证书文件标识符查找到个人证书文件,根据所述个人公钥文件标识符和所述个人私钥文件标识符查找到个人公钥文件和个人私钥文件;

步骤3:所述设备使用所述管理信息中心公钥文件中的公钥验证所述证书数据,若验证成功则执行步骤4,若验证失败则向终端返回表示执行失败的状态码,返回步骤s1;

步骤4:所述设备比对所述证书数据中包含的公钥与所述内部公私钥文件中的公钥是否一致,是则执行步骤s4,否则向终端返回表示执行失败的状态码,返回步骤s1。

步骤s4:设备将所述证书数据写入所述个人证书文件,将所述内部公钥文件中的公钥和所述内部私钥文件中的私钥分别写入所述个人公钥文件和所述个人私钥文件,清空所述内部公钥文件和所述内部私钥文件;

步骤s5:设备向终端返回表示执行成功的状态码,返回步骤s1;

步骤s6:设备对所述数据压缩指令的数据域数据进行压缩计算得到哈希数据;

步骤s7:设备向终端返回表示执行成功的状态码和所述哈希数据,返回步骤s1;

步骤s8:设备从所述签名指令的数据域数据中获取私钥文件标识符和所述哈希数据,根据所述私钥文件标识符找到所述个人私钥文件,根据所述个人私钥文件中的私钥和所述哈希数据计算得到签名结果;

步骤s9:设备向终端返回表示执行成功的状态码和所述签名结果,返回步骤s1。

本实施例中优选的,上述步骤s2还包括:若所述设备接收到的所述指令类型是导入密钥指令,则执行以下步骤:

步骤b1:从所述导入公钥指令的数据域数据中获取公钥或私钥文件标识符以及公私钥参数;

所述公钥或私钥文件标识符具体为载体公钥与载体私钥文件标识符,所述公私钥参数具体为载体公钥与载体私钥;或者所述公钥或私钥文件标识符具体为管理信息中心公钥文件标识符,所述公私钥参数具体为管理信息中心公钥。

优选的,所公私钥参数可以为公钥明文或私钥明文或公钥密文或私钥密文。

步骤b2:查找是否存在与所述公钥或私钥文件标识符对应的指定公私钥文件,是则执行步骤b3,否则向终端返回表示文件不存在的状态码,返回步骤s1;

步骤b3:将所述公私钥参数写入到所述指定公私钥文件中,向终端返回表示执行成功的状态码,返回步骤s1。

本实施例中优选的,上述步骤s2还包括:若所述设备接收到的所述指令类型是导出公钥指令,则执行:从所述导出公钥指令的数据域数据中获取公钥文件标识符和签名私钥文件标识符,根据所述公钥文件标识符获取待导出的公钥,根据所述签名私钥文件标识符获取签名私钥,使用所述签名私钥对所述待导出的公钥计算得到数字签名,向终端返回所述待导出的公钥、所述数字签名和表示执行成功的状态码,返回步骤s1。具体的,所述签名私钥文件标识符为载体私钥文件标识符,所述签名私钥为载体私钥。

实施例2

本实施例提供的一种身份标识设备的工作方法,该设备上电初始化之后执行如图2所示流程,具体如下:

步骤101:接收终端下发的指令;

本实施例中设备接收到的终端下发的指令的第3、第4字节分别是指令的p1参数和p2参数。

步骤102:判断所述指令的类型,若是选择指令则执行步骤103,若是读二进制数指令则执行步骤108,若是验pin指令则执行步骤110,若是数据压缩指令则执行步骤114,若是签名指令则执行步骤118;

具体,根据接收到的所述指令的第2字节判断所述指令的类型,若第2字节等于a4则所述指令是选择指令,若第2字节等于b0则所述指令是读二进制数指令,若第2字节等于20则所述指令是验pin指令,若第2字节等于c4则所述指令是数据压缩指令,若第2字节等于48或4e则所述指令是签名指令。

例如,所述选择指令为:00a4040008a000000003454944;

所述读二进制数指令为:00b0000080;

所述验pin指令为:0020000003111111;

所述数据压缩指令为:80c401010ac1081122334455667788;

所述签名指令为:

804e000028c2021012c1820020228c5edbd4150cd02785f763c074ddcd2e21294465341cfe48530b589ba0fc85。

步骤103:判断所述选择指令的p1参数,若等于00则执行步骤104,若等于04则执行步骤106;

具体的,若p1参数等于00则表示所述选择指令的数据域数据为被选择的文件标识符(fid),若p1参数等于04则所述选择指令的数据域数据为被选择的应用标识符(aid)。

步骤104:从所述选择指令的数据域数据中获取文件标识符,根据所述文件标识符选择指定的个人证书文件;

步骤105:向终端返回表示执行成功的状态码,返回步骤101;

例如,向终端返回的表示执行成功的状态码是9000。

步骤106:从所述选择指令的数据域数据中获取应用标识符,根据所述应用标识符选择eid应用;

步骤107:向终端返回表示执行成功的状态码和所述eid应用的文件控制信息,返回步骤101;

步骤108:根据所述读二进制数指令中包含的应用控制参数读取指定的个人证书文件;

步骤109:向终端返回表示执行成功的状态码和所述指定的个人证书文件,返回步骤101;

步骤110:从所述验pin指令的数据域数据中获取明文pin码;

步骤111:判断获取的所述明文pin码是否与卡片上存储的pin码一致,是则执行步骤112,否则执行步骤113;

进一步的,当设备接收到所述验pin指令时还包括,判断所述验pin指令的p1参数,若等00则执行所述步骤110,若等于01则执行步骤110';

步骤110':对卡片上存储的pin码计算哈希值,并用计算得到的哈希值对卡片上的随机数进行加密计算得到密文pin,判断所述验pin指令的数据域数据是否与所述密文pin一致,是则执行步骤112,否则执行步骤113。

步骤112:设置验pin成功标志,并向终端返回表示执行成功的状态码,返回步骤101;

例如,向终端返回的表示执行成功的状态码是9000。

步骤113:设置验pin失败标志,向终端返回表示验pin失败的状态码,返回步骤101;

例如,向终端返回的表示验pin失败的状态码为63cx。

步骤114:判断所述数据压缩指令的数据域数据是否包含卡外数据和/或卡内指定文件数据,是则执行步骤115,否则执行步骤117;

本步骤具体的:设备根据所述数据压缩指令的p1参数来判断数据域数据的类型,若p1参数的最高两位是‘00’则表示数据域数据包含的是卡外数据,若p1参数的最高两位是‘01’则表示数据域数据包含的是卡内指定文件数据,若p1参数的最高两位是‘10’则表示数据域数据包含卡外数据和卡内指定文件数据。

步骤115:对所述数据压缩指令的数据域数据进行压缩计算得到哈希数据;

具体的,根据所述数据压缩指令的p2参数确定压缩计算方法,优选的,若p2参数的最低两位是‘01’则对数据域数据进行sha1哈希计算得到哈希数据,若p2参数的最低两位是‘10’则对数据域数据进行sha256哈希计算得到哈希数据,若p2参数的最低两位是‘11’则对数据域数据进行sm3哈希计算得到哈希数据。

例如,计算得到的哈希数据为:

62519c9bb2dcde13cf6f96252fa69a6ad4f3ec43a87358b5e31784aa5f4e43c8。

优选的,本实施例中步骤115中的所述数据压缩指令的数据域数据是经过sm2预处理得到的数据。

所述sm2预处理的过程包括:终端对个人证书的公钥与预设曲线参数的拼接结果进行sm3哈希计算得到公钥哈希值,将所述公钥哈希值与待签名明文数据进行拼接组成所述数据压缩指令的数据域数据。

或者是,所述sm2预处理的过程包括:终端通过向卡片下发第一次数据压缩指令得到公钥哈希值,然后将根据所述公钥哈希值与待签名明文数据组成第二次数据压缩指令的数据域数据发送给卡片。具体的,终端根据个人证书的公钥与预设曲线参数组成第一次数据压缩指令的数据域数据发送给卡片,卡片对接收到的第一次数据压缩指令的数据域数据进行sm3哈希计算得到公钥哈希值并返回给终端,然后终端根据所述公钥哈希值与待签名明文数据组成第二次数据压缩指令的数据域数据发送给卡片。

步骤116:向终端返回表示执行成功的状态码和所述哈希数据,返回步骤101;

步骤117:向终端返回表示数据压缩失败的状态码,返回步骤101;

例如,向终端返回的表示数据压缩失败的状态码是6a86。

步骤118:从所述签名指令的数据域数据中获取私钥文件标识符和哈希数据;

步骤119:根据所述私钥文件标识符查找指定的个人私钥文件,若查找到则执行步骤120,若未查找到则执行步骤123;

步骤120:判断是否设置有验pin成功标志,是则执行步骤121,否则执行步骤124;

具体的,若当前设置有验pin成功标志则表示有个人私钥文件的使用权限。

步骤121:根据查找到的指定的个人私钥文件中的私钥和所述哈希数据计算得到签名结果;

具体的,设备根据所述签名指令的第2字节确定签名算法类型,若第2字节等于48则从所述签名指令的数据域数据中获取的是rsa私钥文件标识符,根据所述rsa私钥文件标识符查找到rsa私钥文件,使用rsa私钥对所述哈希数据计算得到签名结果;若第2字节等于4e则从所述签名指令的数据域数据中获取的是sm2私钥文件标识符,根据所述sm2私钥文件标识符查找到sm2私钥文件,使用sm2私钥对所述哈希数据计算得到签名结果。

例如,查找到的sm2私钥为:

8beffc0894aea06b007979c29de55a3dd83a334cd998f89f66907726c60b5011;

所述哈希数据为:

62519c9bb2dcde13cf6f96252fa69a6ad4f3ec43a87358b5e31784aa5f4e43c8;

计算得到的签名结果为:

694e229ef7636a343014648f2218d81469c1a7e3ec29e0263d0c37df515799c4e95454125843f33329d4b400568a9bd21ede5c203abdf9e14501b09439bcc212。

步骤122:向终端返回表示执行成功的状态码和所述签名结果,返回步骤101;

步骤123:向终端返回表示指定文件不存在的状态码,返回步骤101;

例如,向终端返回的表示指定文件不存在的状态码是6a82。

步骤124:向终端返回表示签名失败的状态码,返回步骤101。

例如,向终端返回的表示签名失败的状态码是6a80。

进一步的,本实施例的个人证书文件和个人私钥文件是在卡片发行阶段完成卡内导入的,关于卡片内的个人证书和个人公私钥文件的导入过程如图3所示,具体如下:

当设备接收到终端下发的导入个人证书指令时,执行以下步骤:

步骤201:从所述导入个人证书指令的数据域数据中获取管理信息中心公钥文件标识符、内部公私钥文件标识符、个人证书文件标识符、个人公私钥文件标识符和证书数据;

具体的,若设备接收到终端下发的指令的第2字节等于c8则表示接收到的所述指令是导入个人证书指令;优选的,个人证书的格式符合x509。

本步骤具体包括:

步骤201-1:判断接收到的所述导入个人证书指令的p1参数,若p1参数的最高位是0则表示是第1次命令,执行步骤201-2;若p1参数的最高位是1则表示是下一条命令,执行步骤201-3;

步骤201-2:从所述导入个人证书指令的数据域中获取管理信息中心公钥文件标识符、内部公私钥文件标识符、个人证书文件标识符、个人公私钥文件标识符;

步骤201-3:从所述导入个人证书指令的数据域中获取证书数据。

步骤202:根据所述管理信息中心公钥文件标识符查找到管理信息中心公钥文件,根据所述内部公私钥文件标识符查找到内部公私钥文件,根据所述个人证书文件标识符查找到个人证书文件,根据所述个人公私钥文件标识符查找到个人公私钥文件;

本步骤还包括,若根据获取的各个文件标识符查找不到与之对应的文件,则向终端返回表示表示指定文件不存在的状态码,例如,若未查找到文件,则向终端返回6a82。

步骤203:使用所述管理信息中心公钥文件中的公钥验证所述证书数据,若验证成功则执行步骤204,若验证失败则执行步骤207;

本步骤可以具体为:对所述管理信息中心公钥文件中的公钥与预设曲线参数的拼接结果进行sm3哈希计算得出公钥哈希值,对所述公钥哈希值与所述证书数据的拼接结果进行sm3哈希计算得到哈希结果,用所述管理信息中心公钥文件中的公钥对所述哈希结果进行sm2验签,若验签成功则执行步骤204,否则执行步骤207。

步骤204:比对所述证书数据中包含的公钥与所述内部公私钥文件中的公钥是否一致,是则执行步骤205,否则执行步骤207;

步骤205:将所述证书数据写入所述个人证书文件,将所述内部公私钥文件中的公私钥写入所述个人公私钥文件,清空所述内部公私钥文件;

步骤206:向终端返回表示执行成功的状态码,结束。

步骤207:向终端返回表示执行失败的状态码,结束。

进一步的,本实施例中导入个人证书时所用到的内部公私钥是在制卡阶段生成并存储在卡内的,关于所述内部公私钥的生成过程如图4所示,具体如下:

当设备接收到终端下发的生成密钥对指令时,执行以下步骤:

步骤301:从所述生成密钥对指令的数据域数据中获取公私钥文件标识符;

具体的,若设备接收到终端下发的指令的第2字节等于42则表示接收到的所述指令是生成密钥对指令;优选的,生成的密钥对是rsa密钥对。

步骤302:查找是否存在与所述公私钥文件标识符对应的文件,是则执行步骤303,否则执行步骤305;

步骤303:生成内部公钥和私钥,并写入与所述公私钥文件标识符对应的内部公私钥文件中;

优选的,采用sm2算法计算生成非对称的内部公钥和私钥。

步骤304:向终端返回表示执行成功的状态码,结束;

步骤305:向终端返回表示文件不存在的状态码,结束。

进一步的,本实施例中导入个人证书时所用到的管理信息中心公钥是在制卡阶段生成并存储在卡内的,关于所述管理信息中心公钥的导入过程如图5所示,具体如下:

当设备接收到终端下发的导入公私钥指令时,执行以下步骤:

步骤401:从所述导入公私钥指令的数据域数据中获取管理信息中心公钥文件标识符和管理信息中心公钥;

具体的,若设备接收到终端下发的指令的第2字节等于c6或c2时则表示接收到的所述指令是导入公私钥指令。

步骤402:查找是否存在与所述管理信息中心公钥文件标识符对应的文件,是则执行步骤403,否则执行步骤405;

步骤403:将所述管理信息中心公钥写入到与所述管理信息中心公钥文件标识符对应的管理信息中心公钥文件中;

步骤404:向终端返回表示执行成功的状态码,结束;

例如,向终端返回的表示执行成功的状态码是9000。

步骤405:向终端返回表示文件不存在的状态码,结束。

例如,向终端返回的表示文件不存在的状态码是6a82。

实施例3

本实施例提供的一种身份标识设备,包括接收模块、证书导入模块、哈希计算模块和签名计算模块,各个模块的功能具体如下:

接收模块,用于接收终端下发的指令,并判断接收到的指令的类型,若是个人证书指令则触发证书导入模块,若是数据压缩指令则触发哈希计算模块,若是签名指令则触发签名计算模块;

证书导入模块,用于从所述接收模块接收到的所述个人证书指令的数据域数据中获取个人身份认证相关文件标识符和证书数据,根据所述个人身份认证相关文件标识符查找到个人证书文件、个人公钥文件、个人私钥文件、内部公钥文件和内部私钥文件,将所述证书数据写入所述个人证书文件,将所述内部公钥文件中的公钥和所述内部私钥文件中的私钥分别写入所述个人公钥文件和所述个人私钥文件,清空所述内部公钥文件和所述内部私钥文件,向终端返回表示执行成功的状态码;

哈希计算模块,用于对所述接收模块接收到的所述数据压缩指令的数据域数据进行压缩计算得到哈希数据,向终端返回表示执行成功的状态码和所述哈希数据;

签名计算模块,用于从所述接收模块接收到的所述签名指令的数据域数据中获取私钥文件标识符和所述哈希数据,根据所述私钥文件标识符找到所述个人私钥文件,根据所述个人私钥文件中的私钥和所述哈希数据计算得到签名结果,向终端返回表示执行成功的状态码和所述签名结果。

本实施例中优选的,所述证书导入模块具体包括第一获取单元、第一查找单元、验证单元、公钥比对单元和数据写入单元;

所述第一获取单元,用于从所述导入个人证书指令的数据域数据中获取管理信息中心公钥文件标识符、内部公钥文件标识符、内部私钥文件标识符、个人证书文件标识符、个人公钥文件标识符、个人私钥文件标识符和证书数据,并触发第一查找单元;

所述第一查找单元,用于根据所述管理信息中心公钥文件标识符查找到管理信息中心公钥文件,根据所述内部公钥文件标识和所述内部私钥文件标识符符查找到内部公钥文件和内部私钥文件,根据所述个人证书文件标识符查找到个人证书文件,根据所述个人公钥文件标识符和所述个人私钥文件标识符查找到个人公钥文件和个人私钥文件;

所述验证单元,用于使用所述第一获取单元获取的所述管理信息中心公钥文件中的公钥验证所述证书数据,若验证成功则触发公钥比对单元,若验证失败则向终端返回表示执行失败的状态码;

公钥比对单元,用于比对所述第一获取单元获取到的所述证书数据中包含的公钥与所述第一查找单元查找到的所述内部公私钥文件中的公钥是否一致,是则触发数据写入单元,否则向终端返回表示执行失败的状态码;

数据写入单元,用于将所述证书数据写入所述个人证书文件,将所述内部公钥文件中的公私和所述内部私钥文件中的私钥分别写入所述个人公钥文件和所述个人私钥文件,清空所述内部公钥文件和所述内部私钥文件,向终端返回表示执行成功的状态码。

其中,上述验证单元,具体用于根据所述管理信息中心公钥文件中的公钥和预设曲线参数组成第一拼接结果,对所述第一拼接结果进行哈希计算得到公钥哈希值,根据所述公钥哈希值和所述证书数据组成第二拼接结果,对所述第二拼接结果进行哈希计算得到哈希结果,用所述管理信息中心公钥文件中的公钥对所述哈希结果进行sm2验签,若验签成功则触发所述公钥比对单元,否则向终端返回表示执行失败的状态码。

进一步的,本实施例中所述设备还包括生成模块;所述接收模块,还用于当接收到终端下发的指令是生成密钥对指令时,触发所述生成模块;

所述生成模块,用于从所述生成密钥对指令的数据域数据中获取公钥文件标识符和私钥文件标识符,查找设备中是否存在分别与所述公钥文件标识符和所述私钥文件标识符对应的内部公钥文件和内部私钥文件,是则生成内部公钥和私钥,并分别写入所述内部公钥文件和所述内部私钥文件,向终端返回表示行成功的状态码,否则向终端返回表示文件不存在的状态码。

进一步的,本实施例中所述设备还包括密钥导入模块;所述接收模块,还用于当接收到终端下发的指令是导入密钥指令时,触发所述密钥导入模块;

所述密钥导入模块,用于从所述导入密钥指令的数据域数据中获取公钥或私钥文件标识符以及公私钥参数;查找是否存在与所述公钥或私钥文件标识符对应的指定公私钥文件,是则将所述公私钥参数写入到所述指定公私钥文件中,向终端返回表示执行成功的状态码,否则向终端返回表示文件不存在的状态码。

其中,上述密钥导入模块,具体用于从所述导入密钥指令的数据域数据中获取载体公钥与载体私钥文件标识符以及载体公钥与载体私钥;查找是否存在分别与所述载体公钥与载体私钥文件标识符对应的载体公钥与载体私钥文件,是则将所述载体公钥与载体私钥分别写入到所述载体公钥与载体私钥文件中,向终端返回表示执行成功的状态码,否则向终端返回表示文件不存在的状态码。

或者所述密钥导入模块,具体用于所述管理信息中心公钥导入单元,用于从所述导入密钥指令的数据域数据中获取管理信息中心公钥文件标识符以及管理信息中心公钥;查找是否存在与所述管理信息中心公钥文件标识符对应的管理信息中心公钥文件,是则将所述管理信息中心公钥写入到所述管理信息中心公钥文件中,向终端返回表示执行成功的状态码,否则向终端返回表示文件不存在的状态码。

进一步的,本实施例中所述设备还包括公钥导出模块;所述接收模块,还用于当接收到终端下发的指令是导出公钥指令时,触发所述公钥导出模块;

所述公钥导出模块,用于从所述导出公钥指令的数据域数据中获取公钥文件标识符和签名私钥文件标识符,根据所述公钥文件标识符获取待导出的公钥,根据所述签名私钥文件标识符获取签名私钥,使用所述签名私钥对所述待导出的公钥计算得到数字签名,向终端返回所述待导出的公钥、所述数字签名和表示执行成功的状态码。

优选的,本实施例中所述哈希计算模块具体包括第一判断单元和第一计算单元;

所述第一判断单元,用于判断所述数据压缩指令的数据域数据是否包含卡外数据和/或卡内指定文件数据,是则触发所述第一计算单元,否则向终端返回表示数据压缩失败的状态码;

所述第一计算单元,用于对所述数据压缩指令的数据域数据进行压缩计算得到哈希数据,向终端返回表示执行成功的状态码和所述哈希数据。

所述签名计算模块具体包括第二获取单元、第二查找单元和第二计算单元;

所述第二获取单元,用于从所述签名指令的数据域数据中获取私钥文件标识符和哈希数据;

所述第二查找单元,用于根据所述第二获取单元获取的所述私钥文件标识符查找所述个人私钥文件,若查找到则触发第二计算单元,若未查找到则向终端返回表示指定文件不存在的状态码;

所述第二计算单元,用于根据所述第二查找单元查找到的所述个人私钥文件中的私钥和所述第二获取单元获取的所述哈希数据计算得到签名结果,向终端返回表示执行成功的状态码和所述签名结果。

进一步的,所述签名计算模块还包括第二判断单元;

所述第二查找单元,具体用于当查找到所述个人私钥文件时触发第二判断单元;

所述第二判断单元,用于判断是否已通过pin码验证,是则触发所述第二计算单元,否则向终端返回表示签名失败的状态码。

所述设备还包括验pin模块,所述接收模块,还用于当接收到终端下发的指令是验pin指令时,触发所述验pin模块;

所述验pin模块,用于根据设备上存储的pin码对所述验pin指令的数据域数据进行验证,若验证成功则设置验pin成功标志,并向终端返回表示执行成功的状态码,若验证失败则设置验pin失败标志,向终端返回表示验pin失败的状态码。

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

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