首页> 中国专利> 一种脱机认证数据的个人化方法及个人化设备

一种脱机认证数据的个人化方法及个人化设备

摘要

本发明涉及智能卡领域,提供了一种脱机认证数据的个人化方法及个人化设备,包括:个人化设备获取静态数据,根据预设格式组织包含静态数据的待签名数据;个人化设备生成随机数,使用发卡行私钥对随机数和待签名数据进行签名得到数字签名;根据数字签名以及待签名数据中除去静态数据的其余数据生成签名数据;个人化设备根据预设数据分组标识符和签名数据组合为数据分组;根据数据分组创建个人化指令,并将个人化指令写入个人化文件;当个人化文件完成时,个人化设备选择卡片的主安全域,打开安全通道,并将个人化文件中的个人化指令发送给卡片。通过本方法可以自动将生成的签名数据转换为个人化指令,使得个人化过程效率提高且更加准确。

著录项

  • 公开/公告号CN107302437A

    专利类型发明专利

  • 公开/公告日2017-10-27

    原文格式PDF

  • 申请/专利权人 飞天诚信科技股份有限公司;

    申请/专利号CN201710637779.1

  • 发明设计人 陆舟;于华章;

    申请日2017-07-31

  • 分类号H04L9/32(20060101);H04L9/30(20060101);H04L9/08(20060101);

  • 代理机构

  • 代理人

  • 地址 100085 北京市海淀区学清路9号汇智大厦B楼17层

  • 入库时间 2023-06-19 03:38:37

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-10-08

    授权

    授权

  • 2017-11-24

    实质审查的生效 IPC(主分类):H04L9/32 申请日:20170731

    实质审查的生效

  • 2017-10-27

    公开

    公开

说明书

技术领域

本发明涉及智能卡领域,尤其涉及一种脱机认证数据的个人化方法及个人化设备。

背景技术

随着电子技术的发展,智能卡凭借其存储信息量大和安全性高的优势,广泛应用于金融、交通、通讯、商业、教育、医疗、社保和旅游娱乐等多个行业领域。

目前,智能卡中静态数据被恶意篡改,信息被盗取,卡片被复制的事情时有发生,人们使用是智能卡的安全问题得不到保障,严重影响了智能卡用户的财产安全,为解决以上问题需进行静态数据认证或者动态数据认证,但是现有技术中静态数据认证或者动态数据认证过程中需要的脱机认证数据的个人化过程比较繁琐,且个人化过程中需要人为参与,容易出现人为错误,造成个人化数据不准确,并且个人化过程效率低下。

发明内容

本发明的目的是为了解决现有技术中存在的不足,提供了一种脱机认证数据的个人化方法及个人化设备。

本发明提供一种脱机认证数据的个人化方法,包括:

步骤S1、个人化设备确定当前操作的卡片,并获取所述当前操作的卡片的静态数据,根据预设格式组织包含静态数据的待签名数据;

步骤S2、个人化设备生成随机数,使用发卡行私钥对随机数和待签名数据进行签名得到数字签名;根据数字签名以及待签名数据中除去静态数据的其余数据生成签名数据;

步骤S3、个人化设备根据预设数据分组标识符和签名数据组合为数据分组;根据数据分组创建个人化指令,并将个人化指令写入个人化文件;

当个人化文件完成时,个人化方法还包括:个人化设备选择卡片的主安全域,打开安全通道,并将个人化文件中的个人化指令发送给所述当前操作的卡片。

本发明提供一种脱机认证数据的的个人化设备,包括:

获取模块,用于确定当前操作的卡片,并获取所述当前操作的卡片的静态数据;

待签名数据组织模块,用于根据预设格式组织包含获取模块获取到的静态数据的待签名数据;

随机数生成模块,用于生成随机数;

签名模块,用于使用发卡行私钥对待签名数据组织模块组织的待签名数据和随机数生成模块生成的随机数进行签名得到数字签名;

签名数据生成模块,用于根据签名模块生成的数字签名以及待签名数据中除去静态数据的其余数据生成签名数据;

数据分组组合模块,用于根据预设数据分组标识符和签名数据生成模块生成的签名数据组合为数据分组;

创建个人化指令模块,用于根据数据分组组合模块组合的数据分组创建个人化指令;

写入模块,用于将创建个人化指令模块创建的个人化指令写入个人化文件;

发送模块,用于当个人化文件完成时选择卡片的主安全域,打开安全通道,并将个人化文件中的个人化指令发送给当前操作的卡片。

本发明取得的有益效果是:采用本发明的技术方法,获取与卡片一一对应的静态数据,并自动根据静态数据进行签名,并根据签名结果自动生成个人化指令,并将个人化指令写入个人化文件,使得智能卡个人化过程效率提高且更加准确。

附图说明

图1为本发明实施例2提供的一种脱机认证数据的个人化方法的流程图;

图2为本发明实施例3提供的一种脱机认证数据的个人化方法的流程图;

图3为本发明实施例4提供的一种脱机认证数据的个人化设备的模块图。

具体实施方式

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

实施例1

本实施例提供了一种脱机认证数据的个人化方法,包括:

步骤S1、个人化设备确定当前操作的卡片,并获取当前操作的卡片的静态数据,根据预设格式组织包含静态数据的待签名数据;

静态数据具体包括:应用主账户、应用生效日期、应用失效日期和应用版本号。

步骤S2、个人化设备生成随机数,使用发卡行私钥对随机数和待签名数据进行签名得到数字签名;根据数字签名以及待签名数据中除去静态数据的其余数据生成签名数据;

步骤S1具体为:个人化设备确定当前操作的卡片,并获取当前操作的卡片的静态数据,将签名数据格式、数据验证代码和静态数据顺序拼接生成待签名数据;

相应的,根据数字签名以及待签名数据除去静态数据的其余数据生成签名数据具体为:将签名数据格式、数据验证代码和数字签名顺序拼接生成签名数据,签名数据即为静态签名数据。

或者,步骤S1具体为:个人化设备确定当前操作的卡片,并获取当前操作的卡片的静态数据,将IC卡公钥数据与静态数据顺序拼接生成待签名数据;

相应的,根据数字签名以及待签名数据除去静态数据的其余数据生成签名数据具体为:将IC卡公钥数据和数字签名顺序拼接生成签名数据,签名数据即为IC卡公钥证书。

具体的,使用发卡行私钥对随机数和待签名数据进行签名得到数字签名具体为:使用发卡行私钥对随机数和待签名数据通过SM2算法进行签名得到数字签名。

更进一步的,使用发卡行私钥对随机数和待签名数据进行签名得到数字签名具体包括:

步骤A-1、个人化设备将用户可辨别标识比特长度、用户可辨别标识、椭圆曲线参数和发卡行公钥顺序拼接得到第一数据;将第一数据进行SM3密码杂凑算法得到第一杂凑值;

步骤A-2、个人化设备将待签名数据和第一杂凑值顺序拼接得到第二数据,将第二数据进行SM3密码杂凑算法得到第二杂凑值;

步骤A-3、个人化设备用随机数发生器生成第一随机数;根据第一随机数计算椭圆曲线点;

步骤A-4、个人化设备计算椭圆曲线点的横坐标和第二杂凑值之和,将计算得到的结果与椭圆曲线上基点的阶进行模运算得到第三数据;

步骤A-5、个人化设备判断第三数据与第一预设值是否相等,是则返回步骤 A-3,否则执行步骤A-6;

步骤A-6,个人化设备判断第三数据与第一随机数之和是否等于椭圆曲线上基点的阶,是则返回步骤A-3,否则执行步骤A-7;

步骤A-7、个人化设备计算1与发卡行私钥之和的模逆得到第四数据,计算第三数据与发卡行私钥之积得到第五数据,计算第一随机数与第五数据之差得到第六数据,将第六数据与椭圆曲线上基点的阶进行模运算得到第七数据,计算第四数据和第七数据之积得到第八数据;

步骤A-8、个人化设备判断第八数据是否等于第二预设值,是则返回步骤 A-3,否则执行步骤A-9;

步骤A-9、个人化设备将第三数据与第八数据顺序拼接得到数字签名。

步骤S3、个人化设备根据预设数据分组标识符和签名数据组合为数据分组;根据数据分组创建个人化指令,并将个人化指令写入个人化文件;

个人化设备根据预设的数据分组标识符和签名数据组合为数据分组具体为:个人化设备计算签名数据长度,将预设数据分组标识符、签名数据长度和签名数据顺序拼接生成数据分组。

根据数据分组创建个人化指令具体为:根据数据分组组织APDU指令;数据分组为APDU指令的命令数据域。

当个人化文件完成时,个人化方法还包括:个人化设备选择卡片的主安全域,打开安全通道,并将个人化文件中的个人化指令发送给当前操作的卡片。

优选的,步骤S1之后,S2之前还包括:

步骤B1、个人化设备检查签名数据是否满足预设条件,是则执行步骤B2, 否则签名数据生成失败;

步骤B1具体为:个人化设备判断签名数据的格式是否正确,是则判定签名数据满足预设条件,否则判定签名数据不满足预设条件。

步骤B2、个人化设备使用发卡行公钥对签名数据中的数字签名进行验证,判断验证是否通过,是则执行步骤S3,否则签名数据生成失败。

步骤B2具体为:个人化设备使用发卡行公钥对签名数据中的数字签名通过 SM2算法进行验证,判断验证是否通过,是则执行步骤S3,否则签名数据生成失败。

更进一步的,步骤B2具体包括:

步骤C1、个人化设备将用户可辨别标识比特长度、用户可辨别标识、椭圆曲线参数和发卡行公钥顺序拼接生成第九数据;将第九数据进行SM3运算生成第三杂凑值;

步骤C2、个人化设备将第三杂凑值和待签名数据顺序拼接生成第十数据;将第十数据进行SM3运算生成第四杂凑值;

步骤C3、个人化设备从静态数字签名中获取第三数据和第八数据,计算第三数据与第八数据之和得到第十一数据,将第十一数据和椭圆曲线上的基点的阶进行模运算得到第十二数据;

步骤C4、个人化设备根据第八数据、第十二数据、椭圆曲线的基点以及发卡行公钥计算椭圆曲线点;

步骤C5、个人化设备计算第四杂凑值与椭圆曲线点的横坐标之和得到第十三数据,将第十三数据与椭圆曲线上基点的阶进行模运算得到第十四数据;

步骤C6、个人化设备判断第十四数据与第三数据是否相等,是则执行步骤 S3,否则验签失败,结束。

优选的,步骤S1中获取静态数据之后,根据预设格式组织包含静态数据的待签名数据之前,还包括:

步骤D1、个人化设备判断静态数据中是否包括静态数据认证标签列表,是则执行步骤D2,否则执行根据预设格式组织包含静态数据的待签名数据;

步骤D2、个人化设备判断静态数据认证标签列表中是否只包含应用交互特征的标签,是则执行根据预设格式组织包含静态数据的待签名数据,否则静态签名数据生成失败。

实施例2

本实施例提供一种脱机认证数据的个人化方法,具体为脱机认证数据中的静态签名数据的个人化方法,如图1所示,具体包括:

步骤101、个人化设备确定当前操作的卡片,并获取所述当前操作的卡片的静态数据;

具体的,静态数据包括应用主账号、应用生效日期、应用失效日期和应用版本号等智能卡静态数据;

本实施例中,需认证的静态数据具体为:

0X 5A086228000100001117 5F2403301231 5F2503950701 9F08020030,其中第一个字节至第十个字节为应用主账号;第十一字节至第十六字节为应用生效日期;第十七字节至第二十二字节为应用失效日期;第二十三字节至第二十七字节为应用版本号。

步骤101具体为:个人化设备确定当前操作的卡片,并获取与当前操作的卡片相关联的静态数据;

更进一步的,个人化设备读取当前操作的卡片表面预先印刷的卡片信息,例如卡号,并从静态数据文件中获取与所述卡片信息相关联的静态数据。

更为详细的,从静态数据文件中获取与所述卡片信息相关联的静态数据具体为:从静态数据文件中获取应用主账号与卡片信息一致的静态数据。

或者步骤101具体为:个人化设备确定当前操作的卡片,并从静态数据文件中获取一条静态数据。;

步骤102、个人化设备判断静态数据中是否包括静态数据认证标签列表,是则执行步骤103,否则执行步骤104;

本实施例中静态数据为TLV格式,即静态数据认证标签列表是由标签、数据长度以及数据组成的。

具体的,判断静态数据中是否包含静态数据认证标签列表的标签,即判断需认证的静态数据中是否包含0X4A;是则判定静态数据中包括静态数据认证标签列表;否则判定静态数据中不包括静态数据认证标签列表;

步骤103、个人化设备判断静态数据认证标签列表中是否只包含应用交互特征的标签,是则执行步骤104,否则静态签名数据生成失败,结束;

步骤103具体包括:

步骤103-1、个人化设备判断静态数据认证标签列表的数据长度是否为1是则执行步骤103-2;否则静态签名数据生成失败,结束;

步骤103-2、个人化设备判断静态数据认证标签列表的数据是否为应用交互特征的标签,是则执行步骤104;否则静态签名数据生成失败。

具体的,个人化设备判断静态数据认证标签列表的数据是否为0X82,是则执行步骤104;否则静态签名数据生成失败。

步骤104、个人化设备根据签名数据格式、数据验证代码和静态数据生成待签名数据;

具体的,签名数据格式为预设字节0X13,数据验证代码为发卡行分配的代码,本实施例中具体为0XDAC5;将签名数据格式、数据验证代码和需认证的静态数据顺序拼接生成待签名数据, 0X13DAC55A0862280001000011175F24033012315F25039507019F08020030。

步骤105、个人化设备生成随机数,并使用发卡行私钥对待签名数据和随机数进行签名得到静态数字签名;

步骤105具体为:个人化设备生成随机数,并使用发卡行私钥对待签名数据和随机数通过SM2算法进行签名得到静态签名数据;

更进一步的,步骤105中,使用发卡行私钥对待签名数据和随机数进行签名得到静态数字签名,具体包括:

步骤105-1、个人化设备将用户可辨别标识比特长度、用户可辨别标识、椭圆曲线参数和发卡行公钥顺序拼接得到第一数据;将第一数据进行SM3密码杂凑算法得到第一杂凑值;

本实施例中,第一数据具体为:

0x008031323334353637383132333435363738FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFC28E9FA9E9D9F5E344D5A9E4BCF6509A7F39789F515AB8F92DDBCBD414D940E9332C4AE2C1F1981195F9904466A39C9948FE30BBFF2660BE1715A4589334C74C7BC3736A2F4F6779C59BDCEE36B692153D0A9877CC62A474002DF32E52139F0A0C3AC12B81B9D175936B5BF72BB8FE3A2266BC013B2E94F5837F16AA1C01AA7323B75626AB64D02AED20CC6F440841F10EE6873BCBEA3F41D6869D0FEADD71154;其中前十八个字节为固定数据,其后的一百二十八字节为预设的椭圆曲线参数,其后的六十四个字节为发卡行公钥。

SM3运算具体为将输入的数据映射为一个32字节的哈希值;本实施例中根据第一数据进行SM3运算生成的第一哈希值为:

228C5EDBD4150CD02785F763C074DDCD2E21294465341CFE48530B589BA0FC85。

步骤105-2、个人化设备将待签名数据和第一杂凑值顺序拼接得到第二数据,将第二数据进行SM3密码杂凑算法得到第二杂凑值;

具体的,将第一杂凑值和待签名数据串联得到的第二数据具体为:

0X228C5EDBD4150CD02785F763C074DDCD2E21294465341CFE48530B589BA0FC855A0862280001000011175F24033012315F25039507019F08020030;

本实施例中生成的第二哈希值具体为:

0XB178B75CAE400122778070132278EE73D511846076424A4041E8E427759FF7B6。

步骤105-3、个人化设备用随机数发生器生成第一随机数;根据第一随机数计算椭圆曲线点;

具体的随机数生成器生成的第一随机数记作K,计算椭圆曲线上的基点的K 倍点,计算得到的椭圆曲线上的基点的K倍点记为椭圆曲线点。

步骤105-4、个人化设备计算椭圆曲线点的横坐标和第二杂凑值之和,将计算得到的结果与椭圆曲线上基点的阶进行模运算得到第三数据;

步骤105-5、个人化设备判断第三数据是与第一预设值是否相等,是则返回步骤105-3,否则执行步骤105-6;

步骤105-6,个人化设备判断第三数据与第一随机数之和是否等于椭圆曲线上基点的阶,是则返回步骤105-3,否则执行步骤105-7;

步骤105-7、个人化设备计算1与发卡行私钥之和的模逆得到第四数据,计算第三数据与发卡行私钥之积得到第五数据,计算第一随机数与第五数据之差得到第六数据,将第六数据与椭圆曲线上基点的阶进行模运算得到第七数据,计算第五数据和第七数据之积得到第八数据;

步骤105-8、个人化设备判断第八数据是否等于第二预设值,是则返回步骤 105-3,否则执行步骤105-9;

步骤105-9、个人化设备将第三数据与第八数据顺序拼接得到静态数字签名;

步骤106、个人化设备根据签名数据格式、数字验证代码和静态数字签名生成静态签名数据;

具体的,签名数据格式为预设字节0X13,数据验证代码为发卡行分配的代码,本实施例中具体为0XDAC5;将签名数据格式、数据验证代码和静态数字签名顺序拼接生成静态签名数据。

静态签名数据具体为:

0X13DAC59BABD0781722AC9D1AA73E3EED30A5B91FA1BA3CE6E51B492FFF4FDF810C607AF738D73B359659BA8F755E0BF38B9F1289E0FC2B84F518A60C852FB01290E61A

步骤107、个人化设备检查静态签名数据格式是否正确,是则执行步骤108,否则静态数据认证失败,结束;

具体的,步骤107具体为:个人化设备判断静态签名数据中的签名数据格式的值是否为OX13,是则继续检查,否则判断静态签名数据中的数据验证代码的值是否为发卡行分配的代码即OXDAC5,是则静态签名数据格式正确,否则静态签名数据格式不正确;

步骤108、个人化设备使用发卡行公钥对静态签名数据中的静态数字签名进行验证,判断验证是否通过,是则执行步骤109,否则静态签名数据生成失败,结束。

步骤108具体为,个人化设备使用发卡行公钥对静态签名数据中的静态签名数据通过SM2算法进行验签,判断验证是否通过,若验证通过则执行步骤109,否则静态签名数据生成失败,结束。

进一步的,步骤108中使用发卡行公钥对静态签名数据中的静态数字签名进行验证,具体包括:

步骤108-1、个人化设备将用户可辨别标识比特长度、用户可辨别标识、椭圆曲线参数和发卡行公钥串联生成第九数据;将第九数据进行SM3运算生成第三杂凑值;

本实施例中第九数据具体为

0X008031323334353637383132333435363738FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFC28E9FA9E9D9F5E344D5A9E4BCF6509A7F39789F515AB8F92DDBCBD414D940E9332C4AE2C1F1981195F9904466A39C9948FE30BBFF2660BE1715A4589334C74C7BC3736A2F4F6779C59BDCEE36B692153D0A9877CC62A474002DF32E52139F0A0C3AC12B81B9D175936B5BF72BB8FE3A2266BC013B2E94F5837F16AA1C01AA7323B75626AB64D02AED20CC6F440841F10EE6873BCBEA3F41D6869D0FEADD71154。

本实施例中第三杂凑值具体为:

0X228C5EDBD4150CD02785F763C074DDCD2E21294465341CFE48530B589BA0FC85。

步骤108-2、个人化设备将第三杂凑值和待签名数据串联生成第十数据;将第十数据进行SM3运算生成第四杂凑值;

本实施例中第十数据具体为:

0X228C5EDBD4150CD02785F763C074DDCD2E21294465341CFE48530B589BA0FC8513DAC55A0862280001000011175F24033012315F25039507019F08020030。本实施例中第四哈希值具体为:

0XB178B75CAE400122778070132278EE73D511846076424A4041E8E427759FF7B6。

步骤108-3、个人化设备从静态数字签名中获取第三数据和第八数据,计算第三数据与第八数据之和得到第十一数据,将第十一数据和椭圆曲线上的基点的阶进行模运算得到第十二数据;

步骤108-4、个人化设备根据第八数据、第十二数据、椭圆曲线的基点以及发卡行公钥计算椭圆曲线点;

具体的,将第八数据记为S,计算椭圆曲线上基点的S倍点,将第十二数据记为T,计算发卡行公钥的T倍点,将S倍点与T倍点相加得到椭圆曲线点。

步骤108-5、个人化设备计算第四杂凑值与椭圆曲线点的横坐标之和得到第十三数据,将第十三数据与椭圆曲线上基点的阶进行模运算得到第十四数据;

步骤108-6、个人化设备判断第十四数据与第三数据是否相等,是则执行步骤109,否则验签失败,结束。

步骤109、个人化设备根据预设的数据分组标识符和静态签名数据生成数据分组;

具体的,个人化设备计算静态签名数据长度,将数据分组标识符、静态数据长度和静态数据顺序拼接得到数据分组;

步骤110、个人化设备根据数据分组创建个人化指令,并将创建的个人化指令写入个人化文件;

具体的,个人化指令的数据格式为CLA+INS+P1+P2+Lc+DGI+Length +Data;

其中,CLA为命令报文的类别字节、INS为命令报文的指令字节、P1和P2 为引用控制参数和块编号、Lc为数据DGI+Length+Data的长度、DGI为数据分组标识符;Length为静态签名数据长度;Data为静态签名数据;

本实施例中个人化指令具体为0X80 E2 00 04

A02054770459313DAC59BABD0781722AC9D1AA73E3EED30A5B91FA1BA3CE6E51B492FFF4FDF810C607AF738D73B359659BA8F755E0BF38B9F1289E0FC2B84F518A60C852FB01290E61A;其中OX80为CLA,E2为INS即存储数据命令的指令字节,00为 P1,05为P2,4A为Lc,其后的数据为DATA,包括静态签名数据的标签OX93和静态签名数据。

当个人化文件完成时,个人化方法还包括:个人化设备选择卡片的主安全域,打开安全通道,并将个人化文件中的个人化指令发送给当前操作的卡片。

个人化设备等待接收智能卡返回的响应数据,若响应数据中包括0X9000则表明静态签名数据成功写入智能卡,否则静态签名数据写入失败。

当卡片的卡面没有预先印刷卡片信息时,则该方法还包括:个人化设备从静态数据中获取应用主账号印刷到卡面。

实施例3

本实施例提供一种脱机认证数据的个人化方法,具体为脱机认证中的IC卡公钥证书的个人化方法;如图2所示,具体包括:

步骤201、个人化设备确定当前操作的卡片,并获取所述当前操作的卡片的静态数据;

具体的,静态数据包括应用主账号、应用生效日期、应用失效日期和应用版本号等智能卡静态数据;

本实施例中,需认证的静态数据具体为:

0X 5A086228000100001117 5F2403301231 5F25039507019F08020030,其中第一个字节至第十个字节为应用主账号;第十一字节至第十六字节为应用生效日期;第十七字节至第二十二字节为应用失效日期;第二十三字节至第二十七字节为应用版本号。

步骤201具体为:个人化设备确定当前操作的卡片,并获取与当前操作的卡片相关联的静态数据;

更进一步的,个人化设备读取当前操作的卡片表面预先印刷的卡片信息,例如卡号,并从静态数据文件中获取与所述卡片信息相关联的静态信息。

更为详细的,从静态数据文件中获取与所述卡片信息相关联的静态数据具体为:从静态数据文件中获取应用主账号与卡片信息一致的静态数据。

或者步骤201具体为:个人化设备确定当前操作的卡片,并从静态数据文件中获取一条静态数据。;

步骤202、个人化设备判断静态数据是否包括静态数据认证标签列表,是则执行步骤203,否则执行步骤204;

本实施例中静态数据为TLV格式,即静态数据认证标签列表是由标签、数据长度以及数据组成的。

具体的,判断静态数据是否包含静态数据认证标签列表的标签,即判断静态数据中是否包含0X4A;是则判定静态数据中包括静态数据认证标签列表;否则判定静态数据中不包括静态数据认证标签列表;

步骤203、判断静态数据认证标签列表中是否只包含应用交互特征的标签,是则执行步骤204,否则IC卡公钥证书生成失败;

步骤203具体包括:

步骤203-1、判断静态数据认证标签列表的数据长度是否为1是则执行步骤 203-2;否则IC卡公钥证书生成失败;

步骤203-2、判断静态数据认证标签列表的数据是否为应用交互特征的标签即判断静态数据认证标签列表的数据是否为0X82,是则执行步骤204;否则IC 卡公钥证书生成失败。

步骤204、根据IC卡公钥数据和静态数据生成待签名数据。

具体的,将个人化数据中的证书格式、应用主账号、证书失效日期、证书序列号、IC卡公钥签名算法标识、IC卡公钥加密算法标识、IC卡公钥参数标识、 IC卡公钥长度和IC卡公钥顺序拼接作为IC卡公钥数据,将IC卡公钥数据以及静态数据顺序拼接得到待签名数据。

本实施例中获取到的待签名数据具体为0X14 6228000100001117FFFF 1230000001 04 00 11 40

C3AC12B81B9D175936B5BF72BB8FE3A2266BC013B2E94F5837F16AA1C01AA7323B75626AB64D02AED20CC6F440841F10EE6873BCBEA3F41D6869D0FEADD71154

5A0862280001000011175F24033012315F25039507019F08020030

其中待签名数据的第一个字节0X14为证书格式,第二个字节至第十一字节0X6228000100001117FFFF为应用主账号;第十二个字节至第十三字节OX1230为证书失效日期,第十四字节至第十六字节0X000001为证书序列号;第十七字节 0X04为IC卡公钥签名算法标识;第十八字节0X00为IC卡公钥加密算法标识;第十九字节0X11为IC卡公钥参数标识,用于标识椭圆曲线;第二十字节0X40 为IC卡公钥长度;第二十一字节至第六十字节为IC卡公钥,其后的二十七个字节为静态数据;

步骤205、个人化设备生成随机数,并使用发卡行私钥对待签名数据和随机数进行签名得到IC卡数字签名;

步骤205具体为:个人化设备生成随机数,并使用发卡行私钥对待签名数据和随机数通过SM2算法进行签名得到IC卡数字签名;

本实施例中得到的IC卡数字签名具体为0X AF3A6E51AC91005CDD6136497793091D8A52EA3AD49D8C215FB25A9E3B9E110511D0 089A7450147553147BF4144E435CC55DE8C8C0D0BFE34115DE19804333A5

具体的,步骤205中使用发卡行私钥对待签名数据和随机数进行签名得到 IC卡数字签名与实施例1中提到的使用发卡行私钥对待签名数据和随机数进行签名得到静态数字签名的过程类似在此不再赘述;

步骤206、个人化设备根据IC卡公钥数据和IC卡数字签名生成IC卡公钥证书。

具体的,将个人化数据中的证书格式、应用主账号、证书失效日期、证书序列号、IC卡公钥签名算法标识、IC卡公钥加密算法标识、IC卡公钥参数标识、 IC卡公钥长度和IC卡公钥顺序拼接作为IC卡公钥数据,将IC卡公钥数据与 IC卡数字签名顺序拼接得到IC卡公钥证书。

本实施例中生成IC卡公钥证书具体为:

0X 6228000100001117FFFF 1230 000001 04 00 11 40

C3AC12B81B9D175936B5BF72BB8FE3A2266BC013B2E94F5837F16AA1C01AA7323B75626AB64D02AED20CC6F440841F10EE6873BCBEA3F41D6869D0FEADD71154

DD956D186252EE711398B339270CB1839DAF4A15B7F907E0AD334470CB83F0E 3,0XFD395978A5A0FFD2A2055A986522368E6F3A6BE34E0C416EB69FA7A08C89DFF 2,其中前60字节为IC卡公钥数据;其后的64字节为步骤210中得到的IC 卡数字签名。

步骤207、个人化设备判断IC卡公钥证书中的证书格式的值是否为预设值,是则执行步骤208、否则IC卡公钥证书生成失败;

预设值具体为OX14;

步骤208、个人化设备根据IC卡公钥证书中的证书失效日期,判断证书是否过期,是则执行步骤209,否则IC卡公钥证书生成失败;

步骤209、个人化设备判断IC卡公钥证书中的IC卡公钥签名算法是否为 SM2算法,是则执行步骤210、否则IC卡公钥证书生成失败;

具体的,个人化设备判断IC卡公钥数据中的IC卡公钥签名算法的值是否为0X04,是则判定IC卡公钥签名算法为SM2算法,否则判定IC卡公钥签名算法不是SM2算法。

步骤210、个人化设备使用发卡行公钥对IC卡公钥证书中的IC卡数字签名进行验证;判断验证是否通过,是则执行步骤211,否则IC卡公钥证书生成失败;

步骤210具体为:个人化设备使用发卡行公钥对IC卡公钥证书中的IC卡数字签名通过SM2算法进行验证,判断验证是否通过,若验证通过则执行步骤 211,否则IC卡公钥证书生成失败;

具体的,步骤210中使用发卡行私钥对IC卡公钥证书中的IC卡数字签名通过SM2算法进行验证与步骤108中使用发卡行公钥对静态签名数据中的静态数字签名进行验证的过程类似在此不再赘述;

步骤211、个人化设备根据预设的数据分组标识符和IC卡公钥证书生成数据分组;

具体的,个人化设备计算IC卡公钥证书长度,将数据分组标识符、IC卡公钥证书长度和静态数据顺序拼接得到数据分组;

步骤212、个人化设备根据数据分组创建个人化指令;并将创建的个人化指令写入个人化文件;

具体的,个人化指令的数据格式为CLA+INS+P1+P2+Lc+DGI+Length +Data;

具体的,向智能卡发送写入IC卡公钥证书,并等待接收智能卡返回的响应数据,若响应数据中包括0X9000则表明IC卡公钥证书成功写入智能卡,否则 IC卡公钥证书写入失败。

当个人化文件完成时,个人化方法还包括:个人化设备选择卡片的主安全域,打开安全通道,并将个人化文件中的个人化指令发送给卡片。

个人化设备等待接收智能卡返回的响应数据,若响应数据中包括0X9000则表明静态签名数据成功写入智能卡,否则静态签名数据写入失败。

当卡片的卡面没有预先印刷卡片信息时,则该方法还包括:个人化设备从静态数据中获取应用主账号印刷到卡面。

实施例4

本实施例提供一种脱机认证数据的个人化设备,参见图3,包括:

获取模块11,用于确定当前操作的卡片,并获取所述当前操作的卡片的静态数据;

获取模块11获取到的静态数据中具体包括:应用主账户、应用生效日期、应用失效日期和应用版本号。

待签名数据组织模块12,用于根据预设格式组织包含获取模块11获取到的静态数据的待签名数据;

随机数生成模块13,用于生成随机数;

签名模块14,用于使用发卡行私钥对待签名数据组织模块12组织的待签名数据和随机数生成模块13生成的随机数进行签名得到数字签名;

具体的,签名模块14,用于使用发卡行私钥对随机数生成模块13生成的随机数和待签名数据组织模块12组织的待签名数据通过SM2算法进行签名得到数字签名。

更进一步的,签名模块14具体包括:

拼接子模块,用于将用户可辨别标识比特长度、用户可辨别标识、椭圆曲线参数和发卡行公钥顺序拼接得到第一数据;还用于将待签名数据和SM3子运算模块得到的第一杂凑值顺序拼接得到第二数据;

相应的,SM3运算子模块,用于将拼接子模块得到的第一数据进行SM3密码杂凑算法得到第一杂凑值;还用于将拼接模块得到的第二数据进行SM3密码杂凑算法得到第二杂凑值;

计算椭圆曲线点模块,用于根据随机数生成模块13生成的第一随机数计算椭圆曲线点;

模运算模块,用于计算计算椭圆曲线点模块得到的椭圆曲线点的横坐标和 SM3运算子模块得到的第二杂凑值之和,将计算得到的结果与椭圆曲线上基点的阶进行模运算得到第三数据;还用于计算第三数据与发卡行私钥之积得到第五数据,计算第一随机数与第五数据之差得到第六数据,将第六数据与椭圆曲线上基点的阶进行模运算得到第七数据;

第一判断子模块,用于判断模运算模块得到的第三数据与第一预设值是否相等;

第二判断子模块,用于当第一判断子模块判定第三数据与第一预设值不相等时判断模运算模块得到的第三数据与随机数生成模块13生成的第一随机数之和是否等于椭圆曲线上基点的阶;

模逆运算子模块,用于第二判断模块判定模运算模块得到的第三数据与随机数生成模块13生成的第一随机数之和等于椭圆曲线上基点的阶时,计算1与发卡行私钥之和的模逆得到第四数据;

第三判断模块,用于计算模逆运算子模块得到的第四数据与模运算模块得到的第七数据之积得到第八数据,判断第八数据是否等于第二预设值;

数字签名子模块,用于当第三判断模块判定第八数据不等于第二预设值时将模运算模块得到的第三数据与第八数据顺序拼接得到数字签名;

随机数生成模块13,具体用于生成随机数作为第一随机数;还用于当第一判断子模块判定第三数据与第一预设值相等时生成随机数,更新第一随机数,触发计算椭圆曲线点模块;还用于当第三判断模块判定第八数据与第二预设值相等时生成随机数,更新第一随机数,触发计算椭圆曲线点模块。

签名数据生成模块15,用于根据签名模块14生成的数字签名以及待签名数据中除去静态数据的其余数据生成签名数据;

数据分组组合模块16,用于根据预设数据分组标识符和签名数据生成模块 15生成的签名数据组合为数据分组;

具体的,数据分组组合模块16,用于计算签名数据长度,将预设数据分组标识符、签名数据长度和签名数据生成模块15生成的签名数据顺序拼接生成数据分组。

创建个人化指令模块17,用于根据数据分组组合模块16组合的数据分组创建个人化指令;

具体的,创建个人化指令模块17,用于根据数据分组组合模块16组合的数据分组织APDU指令;数据分组为APDU指令的命令数据域。

写入模块18,用于将创建个人化指令模块17创建的个人化指令写入个人化文件;

发送模块19,用于当个人化文件完成时选择卡片的主安全域,打开安全通道,并将个人化文件中的个人化指令发送给当前操作的卡片。

具体的,待签名数据组织模块12,用于将签名数据格式、数据验证代码和获取模块11获取到的静态数据顺序拼接生成待签名数据;

相应的,签名数据生成模块15,具体用于将签名数据格式、数据验证代码和签名模块14得到的数字签名顺序拼接生成签名数据,签名数据即为静态签名数据。

具体的,待签名数据组织模块12,用于将IC卡公钥数据与获取模块11获取到的静态数据顺序拼接得到待签名数据;

相应的,签名数据生成模块15,具体用于将IC卡公钥数据和签名模块14 得到的数字签名顺序拼接生成签名数据,签名数据即为IC卡公钥证书。

优选的,个人化设备还包括:

第一判断模块,用于判断签名数据组织模块组织的签名数据是否满足预设条件;

具体的,第一判断模块,用于判断签名数据组织模块组织的签名数据的格式是否正确。

验签模块,用于若第一判断模块判定签名数据满足预设条件时使用发卡行公钥对签名数据中的数字签名进行验证,并判断验证是否成功;

具体的,验签模块,用于若第一判断模块判定签名数据满足预设条件时使用发卡行公钥对签名数据中的数字签名通过SM2算法进行验证,并判断验证是否成功。

相应的,数据分组组合模块16,具体用于当验证成功模块判定验证成功时根据预设数据分组标识符和签名数据组合为数据分组。

更进一步的,验签模块,具体包括:

拼接子模块,用于将用户可辨别标识比特长度、用户可辨别标识、椭圆曲线参数和发卡行公钥顺序拼接生成第九数据;还用于将SM3子运算模块的第三杂凑值和待签名数据生成模块15生成的待签名数据顺序拼接生成第十数据;

SM3运算子模块,用于将拼接模块生成的第九数据进行SM3运算生成第三杂凑值;还用于将拼接子模块生成的第十数据进行SM3运算生成第四杂凑值;

模运算模块,用于从签名数据生成模块15生成的签名数据中获取第三数据和第八数据,计算第三数据与第八数据之和得到第十一数据,将第十一数据和椭圆曲线上的基点的阶进行模运算得到第十二数据;还用于计算SM3运算子模块得到的第四杂凑值与计算椭圆曲线模块得到的椭圆曲线点的横坐标之和得到第十三数据,将第十三数据与椭圆曲线上基点的阶进行模运算得到第十四数据;

计算椭圆曲线模块,用于根据第八数据、模运算模块得到的第十二数据、椭圆曲线的基点以及发卡行公钥计算椭圆曲线点;

判断子模块,用于判断模运算模块得到的第十四数据与第三数据是否相等;

数据分组组合模块16,用于当判断子模块判定第十四数据与第三数据相等时,根据预设数据分组标识符和签名数据生成模块15生成的签名数据组合为数据分组。

优选的,个人化设备,还包括:第一判断模块,用于判断获取模块11获取到的静态数据中是否包括静态数据认证标签列表;

第二判断模块,用于当第一判断模块判定静态数据中包括静态数据认证标签列表时判断静态数据认证标签列表中是否只包含应用交互特征的标签;

相应的,待签名数据组织模块12,用于当第一判断模块判定静态数据中不包括静态数据认证标签列表时,根据预设格式组织包含获取模块11获取到的静态数据的待签名数据;还用于当第二判断模块判定静态数据认证标签列表中只包含应用交互特征的标签时,根据预设格式组织包含获取模块11获取到的静态数据的待签名数据。

以上所述的实施例只是本发明较优选的具体实施方式,本领域的技术人员在本发明技术方案范围内进行的通常变化和替换都应包含在本发明的保护范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号