一种智能卡生成脱机认证凭据的方法
【专利摘要】本发明公开了一种智能卡生成脱机认证凭据的方法,属于智能卡领域。所述方法包括:卡片接收终端发送的命令,判断命令类型,如果是取处理选项命令,则对该命令进行处理,得到第二凭据并返回给终端;如果是内部认证命令,则对该命令进行处理,得到第三凭据并返回给终端;如果是应用密文命令,则先判断该命令的类型,如果是第一条应用密文命令,则对该命令进行处理,得到相应凭据并返回给终端;如果是第二条应用密文命令,则对该命令进行处理,得到相应凭据并返回给终端。采用本发明的技术方法,能够实现动态数据参与智能卡的认证,在保证静态数据未被篡改的基础上,又能够防止卡片被复制,提高了使用智能卡的安全性。
【专利说明】一种智能卡生成脱机认证凭据的方法
【技术领域】
[0001]本发明涉及智能卡领域,尤其涉及一种智能卡生成脱机认证凭据的方法。
【背景技术】
[0002]随着智能卡的广泛应用,智能卡被篡改、被复制的案件时常发生,智能卡信息的安全性日益得到人们的重视。
[0003]在现有技术中,为保证智能卡信息安全,一般脱机操作过程中,通常采用通过卡片公钥证书、静态数据及其hash值来判断卡片静态信息是否被篡改,该方案可以防止静态数据被恶意篡改,却不能防止信息被盗取、卡片被复制。
【发明内容】
[0004]本发明的目的是为了解决现有技术中存在的不足,提供了一种智能卡生成脱机认证凭据的方法。
[0005]本发明采用的技术方法是:一种智能卡生成脱机认证凭据的方法,包括:
[0006]步骤101:卡片上电初始化;
[0007]步骤102:所述卡片等待接收终端发送的命令,判断接收到的命令的类型;
[0008]如果是取处理选项命令,则解析所述取处理选项命令,得到第一数据,更新第一卡片数据,初始化第二卡片数据和第三卡片数据,根据所述卡片支持的脱机认证类型生成第二凭据,将所述第二凭据返回给终端,返回步骤102 ;
[0009]如果是内部认证命令,则判断是否支持动态数据认证,是则解析所述内部认证命令,得到第二数据,根据所述第二数据和所述第一卡片数据,得到第一组合数据,使用卡片私钥对所述第一组合数据进行签名,得到动态签名数据,根据所述动态签名数据生成第三凭据,将所述第三凭据返回给终端,返回步骤102,否则向所述终端返回错误响应,返回步骤102 ;
[0010]如果是应用密文命令,则判断所述应用密文命令的类型,如果是第一条应用密文命令,则执行步骤103,如果是第二条应用密文命令,则执行步骤108 ;
[0011]步骤103:所述卡片判断是否能够获取到所述第一数据,如果是,则执行步骤104,否则向所述终端返回错误响应,返回步骤102 ;
[0012]步骤104:所述卡片获取所述第一条应用密文命令中终端请求的应用密文的类型,通过执行卡片行为分析,更新所述第二卡片数据和所述第三卡片数据,并判断是否满足所述终端请求的应用密文的类型,如果是,则根据所述卡片行为分析的结果,生成第一应用密文,执行步骤105,否则根据所述卡片行为分析的结果,生成第二应用密文,执行步骤105 ;
[0013]步骤105:所述卡片解析所述第一条应用密文命令,判断是否需要执行复合动态数据认证,是则执行步骤106,否则根据所述第一卡片数据、所述第二卡片数据、所述第三卡片数据和所述第二应用密文,生成第四凭据,并将所述第四凭据返回给所述终端,返回步骤102 ;
[0014]步骤106:所述卡片获取所述第一条应用密文命令中的第三数据,根据所述第一数据、所述第一卡片数据、所述第二卡片数据、所述第三卡片数据、所述第一应用密文、所述第三数据,得到第四组合数据,使用卡片私钥对所述第四组合数据进行签名,得到第一签名数据,根据所述第一卡片数据、所述第二卡片数据、所述第三卡片数据和所述第一签名数据生成第五凭据,将所述第五凭据返回给终端,返回步骤102 ;
[0015]步骤107:所述卡片判断是否能够获取到所述第一数据和所述第三数据,如果是,则执行步骤108,否则向所述终端返回错误响应,返回步骤102 ;
[0016]步骤108:所述卡片获取所述第二条应用密文命令中终端请求的应用密文的类型,通过执行卡片行为分析,更新所述第二卡片数据和所述第三卡片数据,并判断是否满足所述终端请求的应用密文的类型,如果是,则根据所述卡片行为分析结果,生成第三应用密文,执行步骤109,否则根据所述卡片行为分析结果,生成第四应用密文,执行步骤109 ;
[0017]步骤109:所述卡片解析所述第二条应用密文命令,判断是否需要执行复合动态数据认证,是则执行步骤110,否则根据所述第一卡片数据、第二卡片数据、所述第三卡片数据和所述第四应用密文,生成第六凭据,并将所述第六凭据返回给所述终端,返回步骤102 ;
[0018]步骤110:所述卡片获取所述第二条应用密文命令中的第四数据,根据所述第一数据、所述第一卡片数据、所述第二卡片数据、所述第三卡片数据、所述第三应用密文、所述第三数据和所述第四数据,得到第七组合数据,应用卡片私钥对所述第七组合数据进行签名,得到第二签名数据,根据所述第一卡片数据、所述第二卡片数据、所述第三卡片数据和所述第二签名数据生 成第七凭据,将所述第七凭据返回给所述终端,返回步骤102。
[0019]所述步骤102还包括:当接收到的命令为选择应用命令时,执行以下步骤:
[0020]步骤102-1:所述卡片解析所述选择应用命令,根据所述选择应用命令的数据域,判断所述选择应用命令中的选择方式,如果是第一选择方式,则执行步骤102-2,如果是第二选择方式,则执行步骤102-3 ;
[0021]步骤102-2:所述卡片获取所述选择应用命令中的第一应用信息,根据所述第一应用信息检索所述卡片,判断是否能够检索到与所述第一应用信息对应的应用文件,如果是,则将所述与所述第一应用信息对应的应用文件作为当前应用文件,执行步骤102-4,否则向所述终端返回所述第一应用信息不支持的响应,返回步骤102 ;
[0022]步骤102-3:所述卡片获取所述选择应用命令中的第二应用信息,根据所述第二应用信息检索所述卡片,判断是否能够检索到与所述第二应用信息对应的应用文件,如果是,则将所述与所述第二应用信息对应的应用文件作为当前应用文件,执行步骤102-4,否则向所述终端返回所述第二应用信息不支持的响应,返回步骤102 ;
[0023]步骤102-4:所述卡片从所述当前应用文件中获取第一列表,根据所述第一列表生成第一凭据,将所述第一凭据返回给所述终端,返回执行步骤102。
[0024]所述步骤102-2具体为:
[0025]步骤102-21:所述卡片获取卡片状态,判断所述卡片是否锁定,如果是,则向所述终端返回卡片锁定的响应,返回步骤102,否则执行步骤102-22 ;
[0026]步骤102-22:所述卡片获取所述选择应用命令中的第一应用信息,根据所述第一应用信息检索所述卡片,判断是否能够检索到与所述第一应用信息对应的应用文件,如果是,则执行步骤102-23,否则向所述终端返回所述第一应用信息不支持的响应,返回步骤102 ;
[0027]步骤102-23:所述卡片判断所述第一应用信息是否锁定,如果是,则向所述终端返回所述第一应用信息锁定的响应,返回步骤102,否则将所述与所述第一应用信息对应的应用文件作为当前应用文件,执行步骤102-4。
[0028]所述步骤102-3具体为:
[0029]步骤102-31:所述卡片获取卡片状态,判断所述卡片是否锁定,如果是,则向所述终端返回卡片锁定的响应,返回步骤102,否则执行步骤102-32 ;
[0030]步骤102-32:所述卡片获取所述选择应用命令中的第二应用信息,根据所述第二应用信息检索所述卡片,判断是否能够检索到与所述第二应用信息对应的应用文件,如果是,则执行步骤102-23,否则向所述终端返回所述第二应用信息不支持的响应,返回步骤102 ;
[0031]步骤102-33:所述卡片判断所述第二应用信息是否锁定,如果是,则向所述终端返回所述第二应用信息锁定的响应,返回步骤102,否则将所述与所述第二应用信息对应的应用文件作为当前应用文件,执行步骤102-4。
[0032]所述步骤102中,如果是取处理选项命令,具体包括:
[0033]步骤al:所述卡片判断是否能够从所述取处理选项命令中解析得到第一数据,如果是,则将所述第一数据保存,执行步骤a2,否则向所述终端返回错误信息,返回步骤102 ;
[0034]步骤a2:所述卡片更新所述第一卡片数据,检查所述第一卡片数据是否达到预设阈值,如果是,则执行步骤a3,否则执行步骤a4 ;
[0035]步骤a3:所述卡片锁定,生成卡片锁定的响应,返回给所述终端,返回步骤102 ;
[0036]步骤a4:所述卡片初始化所述第二卡片数据和所述第三卡片数据;
[0037]步骤a5:所述卡片获取所述卡片内部要读取的文件信息,根据所述文件信息得到第一信息,根据所述第一信息和卡片支持的脱机认证类型,生成第二凭据,将所述第二凭据返回给所述终端,返回步骤102。
[0038]所述步骤102还包括:当接收到的命令是读记录命令时,执行以下操作:
[0039]步骤Π:所述卡片对所述读记录命令进行解析,得到所述第一信息;
[0040]步骤f2:所述卡片根据所述第一信息读取所述卡片中的应用数据,将所述应用数据返回给所述终端,返回步骤102。
[0041]所述步骤102中,如果是内部认证命令,判断为是时,还包括:所述卡片将动态数据认证执行位置位。
[0042]所述步骤102中,所述判断所述应用密文命令的类型,具体为:所述卡片解析所述应用密文命令,根据所述应用密文命令中的标识位,判断所述应用密文命令的类型,如果所述应用密文命令中的标识位为第一预设值,则所述应用密文命令为第一条应用密文命令,如果所述应用密文命令中的标识位为第二预设值,则所述应用密文命令为第二条应用密文命令。
[0043]所述步骤103与所述步骤104之间,还包括:所述卡片根据所述第一条应用密文命令的第一标识位,判断静态数据认证是否成功,则执行步骤104,否则向所述终端返回拒绝操作响应,返回步骤102 ;
[0044]其中,所述判断静态数据认证是否成功,具体为:判断所述第一标识位是否为第三预设值,如果是,则静态数据认证成功,否则静态数据认证失败,返回拒绝操作响应。
[0045]所述步骤105中,所述判断是否需要执行复合动态数据认证,具体为:所述卡片判断所述第一条应用密文命令的第二标识位是否为第四预设值,如果是,则需要执行复合动态数据认证,否则不需要执行复合动态数据认证。
[0046]所述步骤104中,所述获取所述第一条应用密文命令中终端请求的应用密文的类型,具体为:所述卡片根据所述第一条应用密文命令的第三标识位,获知所述终端请求的应用密文的类型,如果所述第三标识位为第五预设值,则终端请求的应用密文的类型为脱机拒绝执行,如果所述第三标识位为第六预设值,则表示终端请求的应用密文的类型为联机执行,如果所述第三标识位为第七预设值,则表示终端请求的应用密文的类型为脱机批准执行。
[0047]所述生成第一应用密文,具体为:
[0048]步骤bl:所述卡片获取所述第一应用密文命令中的终端数据,将所述终端数据、所述第二卡片数据和所述第三卡片数据进行组合,得到生成应用密文的数据;
[0049]步骤b2:所述卡片将所述生成应用密文的数据进行预设分组,判断分组后的最后一个数据块的长度是否为第一预设长度,如果是,则执行步骤b3,否则执行步骤b4 ;
[0050]步骤b3:所述卡片在最后一个数据块后添加预设数据块,将添加后的数据作为新的生成应用密文的数据,执行步骤b5 ;
[0051]步骤b4:所述卡片在最后一个数据块后填充一个字节的第一预设数据,判断填充后的数据块长度是否为第一预设长度,如果是,则将填充后的数据作为新的生成应用密文的数据,执行步骤b5,否则在所述第一预设数据后再填充第二预设数据,直到填充后最后一块数据块的长度为预设长度,得到新的生成应用密文的数据,执行步骤b5 ;
[0052]步骤b5:所述卡片获取与当前应用文件对应的应用过程密钥,根据应用过程密钥,采用对称密钥算法对所述新的生成应用密文的数据进行计算,生成第一应用密文。
[0053]所述步骤106中,所述根据所述第一数据、所述第一卡片数据、所述第二卡片数据、所述第三卡片数据、所述第一应用密文、所述第三数据,得到第四组合数据,具体为:
[0054]步骤106-1:所述卡片根据所述第一数据、所述第三数据、所述第一卡片数据、所述第二卡片数据和所述第三卡片数据,得到第二组合数据;
[0055]步骤106-2:所述卡片根据所述第一条应用密文命令的哈希算法标识,获取哈希算法,对所述第二组合数据进行哈希计算,得到第一哈希值;
[0056]步骤106-3:所述卡片根据所述第一应用密文、所述第一哈希值、所述第一卡片数据和所述第三数据,得到第三组合数据;
[0057]步骤106-4:所述卡片数据对所述第三组合数据进行哈希计算,得到第二哈希值;
[0058]步骤106-5:所述卡片根据所述第一卡片数据、第一应用密文、第一哈希值和第二应用密文,得到第四组合数据。
[0059]所述步骤106-1,具体为:所述卡片将所述第一数据、所述第三数据、所述第二卡片数据、所述第一卡片数据和所述第三卡片数据进行顺序拼接,得到第二组合数据。
[0060]所述步骤106-3,具体为:所述卡片从所述第三数据中获取第二预设长度的字节数,将第三预设数据、哈希算法标识、所述第一卡片数据、所述第一应用密文、所述第一哈希值、预设填充字节和获取到的字节数进行顺序拼接,得到第三组合数据。
[0061]所述步骤106-5,具体为:所述卡片将第四预设数据、哈希算法标识、所述第一卡片数据、所述第一应用密文、所述第一哈希值、预设填充字节、所述第二哈希值和第五预设数据进行顺序拼接,得到第四组合数据。
[0062]所述步骤107与所述步骤108之间,还包括:所述卡片根据所述第二条应用密文命令的第四标识位,判断静态数据认证是否成功,如果所述第四标识位为0,则静态数据认证成功,继续,如果所述第四标识位为1,则静态数据认证失败,向所述终端返回拒绝操作响应,返回步骤102。
[0063]所述步骤109中,判断为是时,还包括:所述卡片将复合动态数据认证执行位置位。
[0064]所述步骤109中,所述判断是否需要执行复合动态数据认证,具体为:所述卡片根据所述第二条应用密文命令的第五标识位,判断是否需要执行复合动态数据认证,如果所述第五标识位为1,则需要执行复合动态数据认证,如果所述第五标识位为0,则不需要执行复合动态数据认证。
[0065]所述步骤108中,所述获取所述第二条应用密文命令中终端请求的应用密文的类型,具体为:所述卡片根据所述第二条应用密文命令的第六标识位,获知所述终端请求的应用密文的类型,如果所述第五标识位为00,则终端请求的应用密文的类型为脱机拒绝执行,如果所述第五标识位为01,则表示终端请求的应用密文的类型为联机执行,如果所述第五标识位为10,则表示终端请求的应用密文的类型为脱机批准执行。
[0066]所述判断是否满足所述终端请求的应用密文的类型,具体为:
[0067]步骤Cl:所述卡片执行卡片行为分析,检测是否存在上次未完成的联机授权操作,如果是,则向所述终端返回错误响应,返回步骤102,否则执行步骤c2 ;
[0068]步骤c2:所述卡片判断上次操作中发卡行认证是否失败,如果是,则向所述终端返回错误响应,返回步骤102,否则执行步骤c3 ;
[0069]步骤c3:所述卡片判断上次操作中脱机数据认证是否失败,如果是,则向所述终端返回错误响应,返回步骤102,否则执行步骤c4 ;
[0070]步骤c4:所述卡片执行频度检查,判断操作次数是否达到限值数,如果是,则向所述终端返回错误响应,返回步骤102,否则满足所述终端请求的应用密文的类型。
[0071]所述生成第三应用密文,具体为:
[0072]步骤dl:所述卡片获取所述第二应用密文命令中的终端数据,将所述终端数据、所述第二卡片数据和所述第三卡片数据进行组合,得到生成密文的数据;
[0073]步骤d2:所述卡片将所述生成密文的数据进行预设分组,判断分组后的最后一个数据块的长度是否为第一预设长度,如果是,则执行步骤d3,否则执行步骤d4 ;
[0074]步骤d3:所述卡片在最后一个数据块后添加预设数据块,将添加后的数据作为新的生成密文的数据,执行步骤d5 ;
[0075]步骤d4:所述卡片在最后一个数据块后填充一个字节的第一预设数据,判断补充后的数据块长度是否为第一预设长度,如果是,则将填充后的数据作为新的生成密文的数据,执行步骤d5,否则在所述第一预设数据后再填充第二预设数据,直到填充后最后一块数据块的长度为预设长度,得到新的生成密文的数据,执行步骤d5 ;
[0076]步骤d5:所述卡片获取与当前应用文件对应的应用过程密钥,根据应用过程密钥,采用对称密钥算法对所述新的生成应用密文的数据进行计算,生成第三应用密文。
[0077]所述步骤110中,所述根据所述第一数据、所述第一卡片数据、所述第二卡片数据、所述第三卡片数据、所述第二应用密文、所述第三数据和所述第四数据,得到第七组合数据,具体为:
[0078]步骤110-1:所述卡片根据所述第一数据、所述第三数据、所述第一卡片数据、所述第二卡片数据、所述第三卡片数据和所述第四数据,得到第五组合数据;
[0079]步骤110-2:所述卡片根据所述第二条应用密文命令的哈希算法标识,获取哈希算法,对所述第五组合数据进行哈希计算,得到第三哈希值;
[0080]步骤110-3:所述卡片根据所述第二应用密文、所述第三哈希值、所述第一卡片数据和所述第四数据,得到第六组合数据;
[0081]步骤110-4:所述卡片对所述第六组合数据进行哈希计算,得到第四哈希值;
[0082]步骤110-5:所述卡片根据所述第三哈希值、所述第四哈希值、所述第一卡片数据、所述第二应用密文,得到第七组合数据。
[0083]所述步骤110-1,具体为:所述卡片将所述第一数据、所述第三数据、所述第四数据、所述第二卡片数据、所述第一卡片数据和所述第三卡片数据进行顺序拼接,得到第五组合数据。
[0084]所述步骤110-3,具体为:所述卡片从所述第四数据中获取第二预设长度的字节数,将第三预设数据、哈希算法标识、所述第一卡片数据、所述第二应用密文、所述第三哈希值、预设填充字节和获取到的字节数进行顺序拼接,得到第六组合数据。
[0085]所述步骤110-5,具体为:所述卡片将第四预设数据、哈希算法标识、所述第一卡片数据、所述第二应用密文、第三哈希值、预设填充字节和第五预设数据进行顺序拼接,得到第七组合数据。
[0086]所述通过执行卡片行为分析,更新所述第二卡片数据和所述第三卡片数据,具体为:
[0087]步骤el:所述卡片根据检测上次联机授权操作的结果,设置所述第二卡片数据的第一指示位;
[0088]步骤e2:所述卡片根据检测上次操作的发卡行认证的结果,设置所述第二卡片数据的第二指示位和所述第三卡片数据的第一指示位;
[0089]步骤e3:所述卡片根据检测上次操作静态数据认证的结果,设置所述第二卡片数据的第三指示位;
[0090]步骤e4:所述卡片根据检测上次操作动态数据认证的结果,设置所述第二卡片数据的第四指示位;
[0091]步骤e5:所述卡片根据检测上次联机授权操作发卡行脚本处理结果,设置所述第二卡片数据的第五指示位。
[0092]所述步骤102中,所述得到第一数据,还包括:将所述第一数据保存;
[0093]所述步骤102中,所述得到第二数据,还包括:将所述第二数据保存;
[0094]所述步骤102中,所述将所述第三凭据返回给终端后,还包括:将所述第二数据删除;
[0095]所述步骤106中,所述获取所述第一条应用密文命令中的第三数据,还包括:将所述第三数据保存;
[0096]所述步骤110中,所述获取所述第二条应用密文命令中的第四数据,还包括:将所述第四数据保存;
[0097]所述步骤110中,所述将所述第七凭据返回给终端后,还包括:将所述第一数据、所述第三数据和所述第四数据删除。
[0098]本发明取得的有益效果是:采用本发明的技术方法,能够实现动态数据参与智能卡的认证,在保证静态数据未被篡改的基础上,又能够防止卡片被复制,提高了使用智能卡的安全性。
【专利附图】
【附图说明】
[0099]为了更清楚的说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0100]图1是本发明实施例1提供的一种智能卡生成脱机认证凭据的方法流程图;
[0101]图2是本发明实施例1中步骤119的具体细化图;
[0102]图3是本发明实施例1中步骤120的具体细化图。
【具体实施方式】
[0103]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0104]实施例1
[0105]本发明实施例1提供了一种智能卡生成脱机认证凭据的方法,如图1所示,包括:
[0106]步骤101:卡片上电初始化;
[0107]步骤102:卡片等待接收终端发送的命令,当接收到命令时,判断接收到的命令的类型,如果是选择应用命令,则执行步骤103,如果是取处理选项命令,则执行步骤107,如果是读记录命令,则执行步骤112,如果是内部认证命令,则执行步骤114,如果是应用密文命令,则执行步骤118 ;
[0108]本实施例中,优选的,当卡片解析到命令的第二字节为0xA4时,则接收到的是选择应用命令,执行步骤103 ;当卡片解析到命令的第二字节为OxAS时,则接收到的是取处理选项命令,执行步骤107 ;当卡片解析到命令的第二字节为0xB2时,则接收到的是读记录命令,执行步骤112 ;当卡片解析到命令的第二字节为0x88时,则接收到的是内部认证命令,执行步骤114 ;当卡片解析到命令的第二字节为OxAE时,则接收到的是应用密文命令,执行步骤118 ;
[0109]步骤103:卡片解析所述选择应用命令,根据所述选择应用命令的数据域,判断所述选择应用命令中的选择方式,如果是第一选择方式,则执行步骤104,如果是第二选择方式,则执行步骤105 ;
[0110]其中,第一选择方式为目录选择方式,第二选择方式为AID列表选择方式;
[0111]本实施例中,卡片根据所述选择应用命令的数据域获知所述选择应用命令的选择方式;
[0112]步骤104:卡片获取选择应用命令中的第一应用信息,根据第一应用信息检索卡片,判断是否能够检索到与第一应用信息对应的应用文件,如果是,则将与第一应用信息对应的应用文件作为当前应用文件,执行步骤102-4,否则向终端返回第一应用信息不支持的响应,返回步骤102 ;
[0113]例如,接收到的选择应用命令为:00A404000E315041592E5359532E4444463031,获取数据域000E315041592E5359532E4444463031,即为第一应用信息,检索到应用文件为:6F15840E315041592E5359532E4444463031A503880101 ;
[0114]本实施例中,所述步骤104具体为:
[0115]步骤104-1:所述卡片获取卡片状态,判断所述卡片是否锁定,如果是,则向所述终端返回卡片锁定的响应,返回步骤102,否则执行步骤104-2 ;
[0116]步骤104-2:所述卡片获取所述选择应用命令中的第一应用信息,根据所述第一应用信息检索所述卡片,判断是否能够检索到与所述第一应用信息对应的应用文件,如果是,则执行步骤104-3,否则向所述终端返回所述第一应用信息不支持的响应,返回步骤102 ;
[0117]步骤104-3:所述卡片判断所述第一应用信息是否锁定,如果是,则向所述终端返回所述第一应用信息锁定的响应,返回步骤102,否则将所述与所述第一应用信息对应的应用文件作为当前应用文件,执行步骤106。
[0118]步骤105:卡片获取选择应用命令中的第二应用信息,根据第二应用信息检索卡片,判断是否能够检索到与第二应用信息对应的应用文件,如果是,则将与第二应用信息对应的应用文件作为当前应用文件,执行步骤106,否则向终端返回所述第二应用信息不支持的响应,返回步骤102 ;
[0119]例如,接收到的选择应用命令为00A4040007A0000003330101,获取数据域0007A0000003330101,即为第二应用信息,检索到的应用文件为:6F5B8407A0000003330101A550500B50424F43204372656469748701019F380F9F1A029F7A019F02065F2A029F4E145F2D087A68656E667264659F1101019F120F4341524420494D4147452030303330BF0C0A9F4D020B0ADF4D020C0A ;
[0120]本实施例中,所述步骤105具体为:
[0121]步骤105-1:所述卡片获取卡片状态,判断所述卡片是否锁定,如果是,则向所述终端返回卡片锁定的响应,返回步骤102,否则执行步骤105-2 ;
[0122]步骤105-2:所述卡片获取所述选择应用命令中的第二应用信息,根据所述第二应用信息检索所述卡片,判断是否能够检索到与所述第二应用信息对应的应用文件,如果是,则执行步骤105-3,否则向所述终端返回所述第二应用信息不支持的响应,返回步骤102 ;
[0123]步骤105-3:所述卡片判断所述第二应用信息是否锁定,如果是,则向所述终端返回所述第二应用信息锁定的响应,返回步骤102,否则将所述与所述第二应用信息对应的应用文件作为当前应用文件,执行步骤106。
[0124]本实施例中,优选的,终端先向卡片发送包含步骤104中的应用信息的选择应用命令,如果卡片不支持该应用信息,则终端再向卡片发送包含步骤105中的应用信息的选择应用命令;卡片接收到终端发送的选择应用命令,根据数据域判断接收到的终端请求的选择方式是否支持;
[0125]步骤106:卡片从所述当前应用文件中获取第一列表,根据所述第一列表生成第一凭据,将所述第一凭据返回给所述终端,返回执行步骤102 ;
[0126]例如,如果本实施例中,当前应用文件为6F15840E315041592E5359532E4444463031A503880101,则获取与之对应的第一列表为:9F380F9F1A029F7A019R)2065F2A029F4E14 ;卡片根据所述第一列表生成第一凭据为:6F5B8407A0000003330101A550500B50424F43204372656469748701019F380F9F1A029F7A019F02065F2A029F4E145F2D087A68656E667264659F1101019F120F4341524420494D4147452030303330BF0C0A9F4D020B0ADF4D020C0A ;
[0127]步骤107:卡片解析所述取处理选项命令,判断是否能够从所述取处理选项命令中解析得到第一数据,如果是,则将第一数据保存在第一预设存储区中,执行步骤108,否则向终端返回错误响应,返回步骤102 ;
[0128]本实施例中,所述取处理选项命令为:80A8000021831R)15601000000000200015642616E6B204361726420546573742043656E7465 ;
[0129]本实施例中,卡片从所述取处理选项命令中解析得到的第一数据为:015601000000000200015642616E6B204361726420546573742043656E7465 ;其中,所述第一数据是终端按照第一响应中的第一列表的格式组织得到的数据;
[0130]步骤108:卡片更新第一卡片数据,检查所述第一卡片数据是否达到预设阈值,如果是,则执行步骤109,否则执行步骤110 ;
[0131]本实施例中,优选的,所述预设阈值为65535,所述更新所述第一卡片数据,具体为:将所述第一卡片数据加I ;
[0132]步骤109:卡片锁定,并生成卡片锁定的响应,返回给终端,返回执行步骤102 ;
[0133]步骤110:卡片初始化第二卡片数据和第三卡片数据;
[0134]步骤111:卡片获取卡片内部要读取的文件信息,根据所述文件信息得到第一信息,根据第一信息和卡片支持的脱机认证类型生成第二凭据,并将所述第二凭据返回给终端,返回执行步骤102;
[0135]本实施例中,所述根据所述文件信息得到第一信息,具体为:根据文件的短文件标识符、文件记录号、文件记录个数,以及脱机数据认证需要的静态签名数据的存放位置,建
立第一信息;
[0136]本实施例中,优选的,当卡片支持的脱机认证类型为7D00时,表示所述卡片支持静态数据认证和动态数据认证,不支持复合动态数据认证,当卡片支持的脱机认证类型为5C00时,表示所述卡片支持静态数据认证,不支持动态数据认证和复合动态数据认证;
[0137]本实施例中,卡片得到的第一信息为080102001001040118010400,卡片支持的脱机认证类型为7D00,根据第一信息和卡片支持的脱机认证类型生成的第二凭据为:800E7D00080102001001040118010400 ;[0138]步骤112:卡片对所述读记录命令进行解析,得到第一信息;
[0139]步骤113:卡片根据所述第一信息读取卡片中的应用数据,将所述卡片中的应用数据返回给终端,返回执行步骤102 ;
[0140]本实施例中,卡片根据第一信息读取到的应用数据包括CA公钥索引,签名的静态应用数据、发卡行公钥证书和用于卡片行为分析的数据;
[0141]本实施例中,所述读记录命令为00B20IxxOO,其中01标识文件记录号,xx表示要读取的记录的最后一个记录号,根据第一信息获取所述读记录命令的最后一个记录号;
[0142]本实施例中,所述卡片根据第一信息读取卡片中的应用数据,具体为:
[0143]步骤al:卡片对第一信息进行预设分组,得到第一信息中的文件记录数;
[0144]优选的,对第一信息进行预设分组具体为按照4个字节为一组进行分组;本实施例中,对第一信息进行预设分组后得到的三组为08010200、10010401、18010400 ;
[0145]步骤a2:卡片依次获取每条记录中的第一个字节,取第一个字节的高五位与预设数据拼接得到所述读记录命令的最后一个记录号;
[0146]优选的,预设数据为100 ;
[0147]本实施例中,第一组为08010200,获取第一个字节08,取高五位00001,与100拼接得到00001100,即OxOC,即终端根据第一信息组织发送的第一条读记录指令为00B2010C00 ;
[0148]第二组10010401,获取第一个字节10,取高五位00010,与100拼接得到00010100,即0x14,即终端根据第一信息组织发送的第二条读记录指令为00B2011400 ;
[0149]第三组18010400,获取第一个字节18,取高五位00011,与100拼接得到00011100,即OxlC,即终端根据第一信息组织发送的第三条读记录指令为00B2011C00 ;
[0150]步骤a3:卡片依次获取每条记录中的第二字节和第三字节,根据第二字节和第三字节获取需要读取的记录数,并从卡片中读出记录,将读取到的所有记录组合得到应用数据;
[0151]本实施例中,第一组08010200,第二字节和第三字节为0102,表示从记录号为0x08的位置读取第一条记录到第二条记录;
[0152]卡片读取的第一条记录为:702E57136228000100001117D3012201012345123999919F1F1630313032303330343035303630373038303930413042 ;卡片读取的第二条记录为:70125F200F46554C4C2046554E4354494F4E414C ;
[0153]第二组10010401,第二字节和第三字节为0104,表示记录号为0x10的位置读取第一条记录到第四条记录;
[0154]卡片读取的第一条记录为:70165A0862280001000011175F24033012315F2503950701 ;第二条记录为:7081849F468180875F85F08A89F4B500FA8C1A55407D88322710E3B885390D945422A73A0AB876F4C4FBC9C49C3083F38C9EFE6C7B21F6541050BF11642A28329C65D8831C80CC0D753D412112800FF2FA12ECC83B318A26EE44E313BD5D1C45C806787387DB91D259D75D350F9CD18B34C635A94EF343A2E88F8A4162D83BC900EA2CF5592820 ;第三条记录为:70619F47030100019F482A518B0EA3ABA9343F1778545FFB49EE840BBCEA457DBAABBFD755BA0F943A08A59CFFB6066B40847675999F0702FFC08E0A000000000000000001009F0D057C70B808009F0E057C70B808009F0F0500000000005F28020156 ;第四条记录为:708183938180817B58E992D032B7F0C0B5E0AA146F53FDD20DE1B3BFD9BFD28D0D7B5D4B69A62E1442847EC0FCED37C41A653AC8AEFF680704607E7D6EDBB683FDF8AE3CBA63FD2FB93845D9DA06F5B6CC09E807A0B69D5CF6FAFFDEC65A3E00C560947E4822FD74D0A4994493C9D5E92F83634C1EE77BC805F838A9A79E114787B65F6B74B9 ;
[0155]第三组18010400,第二字节和第三字节为0104,表示从记录号为0x18的位置读取第一条记录到第四条记录;
[0156]卡片读取的第一条记录为:708183908180229103A5E3120F2D2862091176AA2BD4E24D69E7EEF7B9195C91EA0088AECFF47EDFA0BEEF7C391DF3B05F7I7DCC06FFC8EEFF90BA14212B8A52AD48B33277B2E230D40B3E76DC59778926F1D8739E106CD741DE06A7423DFBA25E02F12E543D13D1B471806526024981B7D26B4BF6E5558604CCC289F59E8A802F45FB3D9E67 ;第二条记录为:70339F49039F37049F32010392248B643D1EAF2EA784AC205303C90E745EA2EFA5CBF02CC47D47833BB7B27ECC6962385A4B8F0180 ;卡片读取的第三条记录为:70445F300202018C189F02069F03069F1A0295055F2A029A039F21039C019F37048D1A8A029F02069F03069F1A0295055F2A029A039F21039C019F37049F080200305F340101 ;第四条记录为:70099F7406454343313131 ;
[0157]本实施例中,终端在接收到应用数据后,根据应用数据建立静态数据列表,用于做静态数据认证或动态数据认证所使用的卡片公钥验证;终端使用公钥技术执行脱机数据认证,终端根据接收到的卡片支持的脱机认证类型和终端自身支持的脱机认证类型决定要执行的脱机认证类型;
[0158]如果卡片与终端均支持静态数据认证,终端使用公钥技术验证卡片中的关键数据自发卡后没有被改动,具体操作为:终端根据CA公钥索引检索对应的CA公钥,使用CA公钥验证卡片中的发卡行证书,验证成功则取出发卡行证书中的发卡行公钥,终端使用发卡行公钥验证签名的静态应用数据,如果验证通过,则表示卡片和终端执行静态数据认证成功;
[0159]步骤114:卡片判断卡片是否支持动态数据认证,如果是,则执行步骤115,否则向终端返回错误响应,返回步骤102 ;
[0160]具体的,卡片根据卡片支持的脱机认证类型,判断卡片是否支持动态数据认证;
[0161]步骤115:卡片解析所述内部认证命令,得到第二数据,将第二数据保存在第二预设存储区中;
[0162]优选的,卡片获取所述内部认证命令的后四个字节,得到第二数据,本实施例中,所述内部认证命令为:008800000411223344,得到的第二数据为11223344 ;
[0163]步骤116:卡片将动态数据认证执行位置位,根据所述第二数据和所述第一卡片数据,得到第一组合数据;
[0164]本实施例中,所述根据所述第二数据和所述第一卡片数据,得到第一组合数据,具体为:以0x05开头,后接哈希算法标识0x01、第一卡片数据长度0x03、第一卡片数据0x020002、预设填充字节和所述第二数据0x11223344组合得到第一组合数据050103020002BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB11223344 ;
[0165]步骤117:卡片使用卡片私钥对所述第一组合数据进行签名,得到动态签名数据,根据所述动态签名数据生成第三凭据,将所述第三凭据返回给终端,将所述第二数据删除,返回执行步骤102 ;
[0166]本实施例中,终端在接收到第三凭据后,得到动态签名数据,终端使用卡片公钥验证所述动态签名数据,如果验证成功,则表示卡片和终端执行动态数据认证成功。
[0167]步骤118:卡片解析所述应用密文命令,根据该命令的标识位,判断接收到的是应用密文命令的类型,如果是第一条应用密文命令,则执行步骤119,如果是第二条应用密文命令,则执行步骤120 ;
[0168]本实施例中,卡片判断应用密文命令的类型,具体是判断该命令的标识位即第三字节,如果第三字节为第一预设值,则为第一条应用密文命令,如果第三字节为第二预设值,则为第二条应用密文命令;优选的,第一预设值为0x90,第二预设值为0x50 ;
[0169]步骤119:卡片执行第一条应用密文命令,生成相应凭据,将该相应凭据返回给终端,返回执行步骤102;
[0170]参见图2,所述步骤119,具体为:
[0171]步骤119-1:卡片判断是否能够从第一预设存储区中获取所述第一数据,如果是,则执行步骤119-2,否则向终端返回错误响应,返回步骤102 ;
[0172]步骤119-2:卡片解析所述第一条应用密文命令,根据该命令中的第一标识位,判断静态数据认证是否成功,如果是,则执行步骤119-3,否则向终端返回拒绝操作响应,返回步骤102 ;
[0173]本实施例中,所述第一条应用密文命令为80AE9000200000000002000000000000000156000000000001560002291450340032E5DC2F ;
[0174]卡片根据该命令中的第一标识位,判断静态数据认证是否成功,具体为:判断该命令的第二十个字节的第七位是否为第三预设值,如果是,则表示静态数据认证成功,否则表示静态数据认证失败;优选的,所述第三预设值为O ;
[0175]本实施例中,该命令的第二十个字节为00,第七位为0,标识脱机数据认证成功;
[0176]步骤119-3:卡片根据该命令的第三标识位,获取所述第一条应用密文命令中终端请求的应用密文的类型,通过执行卡片行为分析,更新第二卡片数据和第三卡片数据,并判断是否满足所述终端请求的应用密文的类型,如果是,则执行步骤119-4,否则执行步骤119-5 ;
[0177]本实施例中,卡片根据该命令的第三标识位,获取所述第一条应用密文命令中终端请求的应用密文的类型,具体为:判断该命令的第三字节的前两个位,如果为第五预设值,则表示终端请求的应用密文的类型为脱机拒绝执行,如果是第六预设值,则表示终端请求的应用密文的类型为联机执行,如果是第七预设值,则表示终端请求的应用密文的类型为脱机批准执行;优选的,第五预设值为00,第六预设值为01,第七预设值为10 ;
[0178]本实施例中,该命令的第三个字节为10,表示终端请求的应用密文的类型为脱机批准执行;
[0179]本实施例中,所述判断是否满足所述终端请求的应用密文的类型,具体为:
[0180]步骤bl:所述卡片执行卡片行为分析,检测是否存在上次未完成的联机授权操作,如果是,则向所述终端返回错误响应,返回步骤102,否则执行步骤b2 ;
[0181]步骤b2:所述卡片判断上次操作中发卡行认证是否失败,如果是,则向所述终端返回错误响应,返回步骤102,否则执行步骤b3 ;
[0182]步骤b3:所述卡片判断上次操作中脱机数据认证是否失败,如果是,则向所述终端返回错误响应,返回步骤102,否则执行步骤b4 ;
[0183]步骤b4:所述卡片执行频度检查,判断操作次数是否达到限值数,如果是,则向所述终端返回错误响应,返回步骤102,否则满足所述终端请求的应用密文的类型;
[0184]本实施例中,通过执行卡片行为分析,更新第二卡片数据和第三卡片数据,具体为:
[0185]步骤dl:所述卡片根据检测上次联机授权操作的结果,设置所述第二卡片数据的第一指示位;
[0186]本实施例中,如果上次联机授权操作的结果为完成,则将第二卡片数据的第一指示位置为1,如果上次联机授权操作的结果为未完成,则将第二卡片数据的第一指示位置为O ;
[0187]步骤d2:所述卡片根据检测上次操作的发卡行认证的结果,设置所述第二卡片数据的第二指示位和所述第三卡片数据的第一指示位;
[0188]本实施例中,如果上次操作的发卡行认证的结果为成功,则将第二卡片数据的第二指示位置为0,将第三卡片数据的第一指示位置为111 ;如果上次操作的发卡行认证的结果为失败,则将第二卡片数据的第二指示位置为1,将第三卡片数据的第一指示位置为011 ;
[0189]步骤d3:所述卡片根据检测上次操作静态数据认证的结果,设置所述第二卡片数据的第三指示位;
[0190]实施例中,如果上次操作静态数据认证的结果为成功,则将第二卡片数据的第三指示位置为0,如果上次操作静态数据认证的结果为失败,则将第二卡片数据的第三指示位置为I ;
[0191]步骤d4:所述卡片根据检测上次操作动态数据认证的结果,设置所述第二卡片数据的第四指示位;
[0192]实施例中,如果上次操作动态数据认证的结果为成功,则将第二卡片数据的第四指示位置为0,如果上次操作动态数据认证的结果为失败,则将第二卡片数据的第四指示位置为I ;
[0193]步骤d5:所述卡片根据检测上次联机授权操作发卡行脚本处理结果,设置所述第二卡片数据的第五指示位;
[0194]实施例中,如果上次联机授权操作发卡行脚本处理结果为成功,则将第二卡片数据的第五指示位置为0,如果上次联机授权操作发卡行脚本处理结果为失败,则将第二卡片数据的第五指示位置为I;
[0195]步骤119-4:卡片根据卡片行为分析的结果,生成第一应用密文,执行步骤119-6 ;
[0196]具体的,所述生成第一应用密文,具体为:
[0197]步骤Cl:所述卡片获取所述第一应用密文命令中的终端数据,将所述终端数据、所述第二卡片数据和所述第三卡片数据进行组合,得到生成应用密文的数据;[0198]具体的,卡片从第一条应用密文命令中获取到的终端数据为第一条应用明文命令的前5个字节;卡片将终端数据与所述第二卡片数据和所述第三卡片数据顺序拼接,得到生成应用密文的数据;
[0199]步骤C2:所述卡片将所述生成应用密文的数据进行预设分组,判断分组后的最后一个数据块的长度是否为第一预设长度,如果是,则执行步骤c3,否则执行步骤c4 ;
[0200]优选的,预设分组为8字节一组;
[0201]步骤c3:所述卡片在最后一个数据块后添加预设数据块,将添加后的数据作为新的生成应用密文的数据,执行步骤c5 ;
[0202]步骤c4:卡片在最后一个数据块后填充一个字节的第一预设数据,判断填充后的数据块长度是否为第一预设长度,如果是,则将填充后的数据作为新的生成应用密文的数据,执行步骤c5,否则在所述第一预设数据后再填充第二预设数据,直到填充后最后一块数据块的长度为预设长度,得到新的生成应用密文的数据,执行步骤c5 ;
[0203]步骤c5:卡片获取与当前应用文件对应的应用过程密钥,根据应用过程密钥,采用对称密钥算法对所述新的生成应用密文的数据进行计算,生成第一应用密文;
[0204]本实施例中,卡片应用过程密钥,对所述新的生成应用密文的数据进行计算,生成的第一应用密文为:C5E89A185F6B0D1F ;
[0205]步骤119-5:卡片根据卡片行为分析的结果,生成第二应用密文,执行步骤119-6 ;
[0206]步骤119-6:卡片根据该命令的第二标识位,判断是否需要执行复合动态数据认证,如果是,则执行步骤119-8,否则执行步骤119-7 ;
[0207]具体为:判断该命令的第三字节的第四位是否为第四预设值,如果是,则表示需要执行复合动态数据认证,否则表示不需要执行复合动态数据认证;优选的,第四预设值为I ;
[0208]本实施例中,卡片解析该命令的第三个字节为90,即10010000,其中,第四位为1,
表示需要执行复合动态数据认证。
[0209]步骤119-7:卡片根据所述第一卡片数据、所述第二卡片数据、所述第三卡片数据和所述第二应用密文,生成第四凭据,并将所述第四凭据返回给所述终端,返回步骤102 ;
[0210]步骤119-8:卡片将复合动态数据认证执行位置位,获取所述第一条应用密文命令中的第三数据,将第三数据保存在第三预设存储区中;
[0211]其中,卡片从所述第一条应用密文命令的第六字节开始,解析得到该命令的数据域即为第三数据 0000000002000000000000000156000000000001560002291450340032E5DC2F;
[0212]步骤119-9:卡片根据所述第一数据、所述第三数据、所述第一卡片数据、所述第二卡片数据和所述第三卡片数据,得到第二组合数据;
[0213]优选的,本实施例中,根据所述第一数据、所述第三数据、所述第一卡片数据、所述第二卡片数据和所述第三卡片数据,得到第二组合数据,具体为:将所述第一数据、所述第三数据、所述第二卡片数据、所述第一卡片数据和所述第三卡片数据进行顺序拼接,得到第
二组合数据;
[0214]本实施例中,卡片将所述第一数据、所述第三数据、所述第一卡片数据、所述第二卡片数据和所述第三卡片数据进行顺序拼接,得到的第二组合数据为:015601000000000200015642616E6B204361726420546573742043656E74650000000002000000000000000156000000000001560002291450340032E5DC2F9F2701809F360200029F101307010103A40002010A0100000010009FFE6421 ;
[0215]步骤119-10:卡片根据所述第一条应用密文命令的哈希算法标识,获取哈希算法,对所述第二组合数据进行哈希计算,得到第一哈希值;
[0216]本实施例中,卡片对所述第二组合数据进行哈希计算得到的第一哈希值为:947D4AD25925AD11F70B709354B4A3F1EF5888DF ;
[0217]步骤119-11:卡片获取第四预设存储区中的第一应用密文,根据所述第一应用密文、所述第一哈希值、所述第一卡片数据和所述第三数据,得到第三组合数据;
[0218]具体的,根据所述第一应用密文、所述第一哈希值、所述第一卡片数据和所述第三数据,得到第三组合数据,具体为:卡片获取第三数据的第二预设长度的字节数,即最后四个字节0x32E5DC2F,将第三预设数据0x05、哈希算法标识0x01、所述第一卡片数据、所述第一应用密文、所述第一哈希值、预设填充字节和获取到的字节数0x32E5DC2F进行顺序拼接,得到第三组合数据:05012002000280C5E89A185F6B0D1F947D4AD25925AD11F70B709354B4A3F1EF5888DFBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB32E5DC2F ;
[0219]步骤119-12:卡片对所述第三组合数据进行哈希计算,得到第二哈希值;
[0220]本实施例中,卡片对所述第三组合数据进行哈希计算,得到的第二哈希值为C092ADC4A768605DA13AF82A5EB681472A44C7DB ;
[0221]步骤119-13:卡片根据所述第一卡片数据、第一应用密文、第一哈希值和第二应用密文,得到第四组合数据;
[0222]本实施例中,根据所述第一卡片数据、第一应用密文、第一哈希值和第二应用密文,得到第四组合数据,具体为:卡片将第四预设数据0x6a05、哈希算法标识0x01、所述第一卡片数据、所述第一应用密文、所述第一哈希值、预设填充字节、所述第二哈希值和第五预设数据OxBC进行顺序拼接,得到第四组合数据为:6A05012002000280C5E89A185F6B0D1F947D4AD25925AD11F70B709354B4A3F1EF5888DFBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBC092ADC4A768605DA13AF82A5EB681472A44C7DBBC ;
[0223]步骤119-14:卡片使用卡片私钥对所述第四组合数据进行签名,得到第一签名数据;
[0224]本实施例中,卡片使用卡片私钥对所述第四组合数据进行签名,得到的第一签名数据为:554B8OTCEC2A61E9C54A3D67E0012E879DF4402D632F89F5648IABCEB1A4B51C01116043734457240EF1C64AD5E1A32DA36B892E6F3242997DEEDB87350189F9A810DE98FBF2B4275E64DB2FB03183A71348AA1785CBA2720E7726134E9874B2D759E365FAD6BCCEFB9591037C47B68F4FBA8927F697A191C1F112F3138A0B2D ;
[0225]步骤119-15:卡片根据所述第一卡片数据、所述第二卡片数据、所述第三卡片数据和所述第一签名数据生成第五凭据,将所述第五凭据返回给终端,返回步骤102 ;
[0226]本实施例中,卡片根据所述第一卡片数据、所述第二卡片数据、所述第三卡片数据和所述第一签名数据,生成的第五凭据为:7781A39F2701809F360200029F4B8180554B8roCEC2A61E9C54A3D67E0012E879DF4402D632F89F56481ABCEB1A4B51C01116043734457240EF1C64AD5E1A32DA36B892E6F3242997DEEDB87350189F9A810DE98FBF2B4275E64DB2FB03183A71348AA1785CBA2720E7726134E9874B2D759E365FAD6BCCEFB9591037C47B68F4FBA8927F697A191C1F112F3138A0B2D9F101307010103A40002010A0100000010009FFE6421。
[0227]步骤120:卡片执行第二条应用密文命令,生成相应凭据,将该相应凭据返回给终端,返回执行步骤102;
[0228]参见图3,所述步骤120,具体为:
[0229]步骤120-1:卡片判断是否能够从第一预设存储区中获取第一数据,是否能够从第三预设存储区中获取第三数据,如果是,则执行步骤120-2,否则向终端返回错误信息,返回步骤102 ;
[0230]步骤120-2:卡片解析所述第二条应用密文命令,根据该命令的第四标识位,判断静态数据认证是否成功,如果是,则执行步骤120-3,否则向终端返回拒绝操作响应,返回步骤 102 ;
[0231]本实施例中,所述第二条应用密文命令为80AE50002230300000000002000000000000000156000000000001560002291450340032E5DC2F ;
[0232]卡片根据该命令的第四标识位,判断静态数据认证是否成功,具体为:判断该命令的第二十字节的第七位是否为0,如果是,则表示脱机数据认证成功,否则表示脱机数据认证失败;
[0233]本实施例中,该命令的第二十字节为00,第七位为0,标识脱机数据认证成功;
[0234]步骤120-3:卡片根据该命令的第六标识位,获取所述第二条应用密文命令中终端请求的应用密文的类型,通过执行卡片行为分析,更新所述第二卡片数据和所述第三卡片数据,并判断是否满足所述终端请求的应用密文的类型,如果是,则执行步骤120-4,否则执行步骤120-5 ;
[0235]其中,卡片根据该命令的第六标识位,获知终端请求的应用密文的类型,具体为:判断该命令的第三字节的前两个位,如果为00,则表示终端请求的应用密文的类型为脱机拒绝执行,如果是01,则表示终端请求的应用密文的类型为联机执行,如果是10,则表示终端请求的应用密文的类型为脱机批准执行;
[0236]本实施例中,该命令的第三个字节的前两位为01,标识终端请求的应用密文的类型为脱机批准执行;
[0237]本实施例中,所述通过执行卡片行为分析,更新所述第二卡片数据和所述第三卡片数据,具体为:
[0238]步骤gl:所述卡片根据检测上次联机授权操作的结果,设置所述第二卡片数据的第一指示位;
[0239]本实施例中,如果上次联机授权操作的结果为完成,则将第二卡片数据的第一指示位置为1,如果上次联机授权操作的结果为未完成,则将第二卡片数据的第一指示位置为O ;
[0240]步骤g2:所述卡片根据检测上次操作的发卡行认证的结果,设置所述第二卡片数据的第二指示位和所述第三卡片数据的第一指示位;[0241]本实施例中,如果上次操作的发卡行认证的结果为成功,则将第二卡片数据的第二指示位置为0,将第三卡片数据的第一指示位置为111 ;如果上次操作的发卡行认证的结果为失败,则将第二卡片数据的第二指示位置为1,将第三卡片数据的第一指示位置为011 ;
[0242]步骤g3:所述卡片根据检测上次操作静态数据认证的结果,设置所述第二卡片数据的第三指示位;
[0243]实施例中,如果上次操作静态数据认证的结果为成功,则将第二卡片数据的第三指示位置为0,如果上次操作静态数据认证的结果为失败,则将第二卡片数据的第三指示位置为I ;
[0244]步骤g4:所述卡片根据检测上次操作动态数据认证的结果,设置所述第二卡片数据的第四指示位;
[0245]实施例中,如果上次操作动态数据认证的结果为成功,则将第二卡片数据的第四指示位置为0,如果上次操作动态数据认证的结果为失败,则将第二卡片数据的第四指示位置为I ;
[0246]步骤g5:所述卡片根据检测上次联机授权操作发卡行脚本处理结果,设置所述第二卡片数据的第五指示位;
[0247]实施例中,如果上次联机授权操作发卡行脚本处理结果为成功,则将第二卡片数据的第五指示位置为0,如果上次联机授权操作发卡行脚本处理结果为失败,则将第二卡片数据的第五指示位置为I ;
[0248]步骤120-4:卡片根据所述卡片行为分析结果,生成第三应用密文,执行步骤120-6 ;
[0249]所述生成第三应用密文,具体为:
[0250]步骤dl:所述卡片获取所述第二应用密文命令中的终端数据,将所述终端数据、所述第二卡片数据和所述第三卡片数据进行组合,得到生成密文的数据;
[0251]步骤d2:所述卡片将所述生成密文的数据进行预设分组,判断分组后的最后一个数据块的长度是否为第一预设长度,如果是,则执行步骤d3,否则执行步骤d4 ;
[0252]步骤d3:所述卡片在最后一个数据块后添加预设数据块,将添加后的数据作为新的生成密文的数据,执行步骤d5 ;
[0253]步骤d4:所述卡片在最后一个数据块后填充一个字节的第一预设数据,判断补充后的数据块长度是否为第一预设长度,如果是,则将填充后的数据作为新的生成密文的数据,执行步骤d5,否则在所述第一预设数据后再填充第二预设数据,直到填充后最后一块数据块的长度为预设长度,得到新的生成密文的数据,执行步骤d5 ;
[0254]步骤d5:卡片获取与当前应用文件对应的应用过程密钥,根据应用过程密钥,采用对称密钥算法对所述新的生成应用密文的数据进行计算,生成第三应用密文;
[0255]步骤120-5:卡片根据所述卡片行为分析结果,生成第四应用密文,执行步骤120-6 ;
[0256]步骤120-6:卡片解析所述第二条应用密文命令,判断是否需要执行复合动态数据认证,是则执行步骤120-8,否则执行步骤120-7 ;
[0257]本实施例中,卡片根据该命令的第五标识位,判断是否需要执行复合动态数据认证,具体为:判断该命令的第三字节的第四位是否为1,如果是,则表示需要执行复合动态数据认证,否则表示不需要执行复合动态数据认证;
[0258]本实施例中,卡片解析该命令的第三个字节为50,即01010000,其中第四位为1,标识需要执行复合动态数据认证;
[0259]步骤120-7:卡片根据所述第一卡片数据、第二卡片数据、所述第三卡片数据和所述第四应用密文,生成第六凭据,并将所述第六凭据返回给所述终端,返回步骤102 ;
[0260]步骤120-8:卡片将复合动态数据认证执行位置位,获取并保存所述第二应用密文命令中的第四数据;
[0261]本实施例中,其中,卡片从所述第二条应用密文命令的第六字节开始,解析得到该命令的数据域即为第四数据 30300000000002000000000000000156000000000001560002291450340032E5DC2F ;
[0262]步骤120-9:卡片根据所述第一数据、所述第三数据、所述第一卡片数据、所述第二卡片数据、所述第三卡片数据和所述第四数据,得到第五组合数据;
[0263]本实施例中,卡片根据所述第一数据、所述第三数据、所述第一卡片数据、所述第二卡片数据、所述第三卡片数据和所述第四数据,得到第五组合数据,具体为:将所述第一数据、所述第三数据、所述第四数据、所述第二卡片数据、所述第一卡片数据和所述第三卡片数据进行顺序拼接,得到第五组合数据为:015601000000000200015642616E6B204361726420546573742043656E74650000000002000000000000000156000000000001560002291450340032E5DC2F30300000000002000000000000000156000000000001560002291450340032E5DC2F9F2701409F360200029F101307010103640402010A0100000010009FFE6421 ;
[0264]步骤120-10:卡片根据所述第二条应用密文命令的哈希算法标识,获取哈希算法,对所述第五组合数据进行哈希计算,得到第三哈希值;
[0265]本实施例中,卡片对所述第五组合数据进行哈希计算,得到的第三哈希值为30ADB2EC3859891F04668CC6C28629AFD7205CCE ;
[0266]步骤120-11:卡片获取第五预设存储区中的第二应用密文,根据所述第二应用密文、所述第三哈希值、所述第一卡片数据和所述第四数据,得到第六组合数据;
[0267]本实施例中,根据所述第二应用密文、所述第三哈希值、所述第一卡片数据和所述第四数据,得到第六组合数据,具体为:卡片从所述第四数据中获取第二预设长度的字节数,即最后四个字节0x32E5DC2F,将第三预设数据0x05、哈希算法标识0x01、所述第一卡片数据、所述第二应用密文、所述第三哈希值、预设填充字节和获取到的字节数0x32E5DC2F进行顺序拼接,得到第六组合数据 0501200200024001B3C9B06283C08030ADB2EC3859891F04668CC6C28629AFD7205CCEBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB32E5DC2F ;
[0268]步骤120-12:卡片对所述第六组合数据进行哈希计算,得到第四哈希值;
[0269]本实施例中,卡片对所述第六组合数据进行哈希计算,得到的第四哈希值为808A60BD056FC118BAF6723538B154CDDD2DEFB8 ;
[0270]步骤120-13:卡片根据所述第三哈希值、所述第四哈希值、所述第一卡片数据、所述第二应用密文,得到第七组合数据;[0271]本实施例中,根据所述第三哈希值、所述第四哈希值、所述第一卡片数据、所述第二应用密文,得到第七组合数据,具体为:所述卡片将第四预设数据0x6a05、哈希算法标识0x01、所述第一卡片数据、所述第二应用密文、第三哈希值、预设填充字节和第五预设数据OxBC 进行顺序拼接,得到第七组合数据为:6A0501200200024001B3C9B06283C08030ADB2EC3859891F04668CC6C28629AFD7205CCEBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB808A60BD056FC118BAF6723538B154CDDD2DEFB8BC ;
[0272]步骤120-14:卡片使用卡片私钥对所述第七组合数据进行签名,得到第二签名数据;
[0273]本实施例中,卡片使用卡片私钥对所述第七组合数据进行签名,得到的第二签名数据为:64410712FDDF7EE1031780D1E673006611AAB2AFDD140CD3DC6DDDAE19059DF2E5FD2935E51CC4CE8F25F204ACE1AF712E40497FD7C4FA75B4A34DC66A3BEDA20C4E1277BD493E6C36D54D2737716CF6AE970EC9FBAAEE985F903BCDFD990A2DCDEC439E9DE288A824438BAC74565A946C4A6959D492D3D5DC3751894AA6F06A ;
[0274]步骤120-15:卡片根据所述第一卡片数据、所述第二卡片数据、所述第三卡片数据和所述第二签名数据生成第五凭据,将所述第五凭据返回给所述终端,将所述第一数据和所述第三数据删除,返回步骤102 ;
[0275]本实施例中,根据所述第二应用密文、所述第一卡片数据、所述第二卡片数据、所述第三卡片数据和所述第二签名数据,生成的第五凭据为:7781A39F2701409F360200029F4B818064410712FDDF7EE1031780D1E673006611AAB2AFDD140CD3DC6DDDAE19059DF2E5FD2935E51CC4CE8F25F204ACE1AF712E40497FD7C4FA75B4A34DC66A3BEDA20C4E1277BD493E6C36D54D2737716CF6AE970EC9FBAAEE985F903BCDFD990A2DCDEC439E9DE288A824438BAC74565A946C4A6959D492D3D5DC3751894AA6F06A9F101307010103640402010A0100000010009FFE6421。
[0276]以上所述,仅为本发明的【具体实施方式】,但本发明的保护范围并不局限于此,任何熟悉本【技术领域】的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利待求的保护范围为准。
【权利要求】
1.一种智能卡生成脱机认证凭据的方法,其特征在于,包括: 步骤101:卡片上电初始化; 步骤102:所述卡片等待接收终端发送的命令,判断接收到的命令的类型; 如果是取处理选项命令,则解析所述取处理选项命令,得到第一数据,更新第一卡片数据,初始化第二卡片数据和第三卡片数据,根据所述卡片支持的脱机认证类型生成第二凭据,将所述第二凭据返回给终端,返回步骤102 ; 如果是内部认证命令,则判断是否支持动态数据认证,是则解析所述内部认证命令,得到第二数据,根据所述第二数据和所述第一卡片数据,得到第一组合数据,使用卡片私钥对所述第一组合数据进行签名,得到动态签名数据,根据所述动态签名数据生成第三凭据,将所述第三凭据返回给终端,返回步骤102,否则向所述终端返回错误响应,返回步骤102 ; 如果是应用密文命令,则判断所述应用密文命令的类型,如果是第一条应用密文命令,则执行步骤103,如果是第二条应用密文命令,则执行步骤108 ; 步骤103:所述卡片判断是否能够获取到所述第一数据,如果是,则执行步骤104,否则向所述终端返回错误响应,返回步骤102 ; 步骤104:所述卡片获取所述第一条应用密文命令中终端请求的应用密文的类型,通过执行卡片行为分析,更新所述第二卡片数据和所述第三卡片数据,并判断是否满足所述终端请求的应用密文的类型,如果是,则根据所述卡片行为分析的结果,生成第一应用密文,执行步骤105,否则根据所述卡片行为分析的结果,生成第二应用密文,执行步骤105 ;步骤105:所述卡片解析所述第一条应用密文命令,判断是否需要执行复合动态数据认证,是则执行步骤106,否则根据所述第一卡片数据、所述第二卡片数据、所述第三卡片数据和所述第二应用密文,生成第四凭据,并将所述第四凭据返回给所述终端,返回步骤102 ; 步骤106:所述卡片获取所述第一条应用密文命令中的第三数据,根据所述第一数据、所述第一卡片数据、所述第二卡片数据、所述第三卡片数据、所述第一应用密文、所述第三数据,得到第四组合数据,使用卡片私钥对所述第四组合数据进行签名,得到第一签名数据,根据所述第一卡片数据、所述第二卡片数据、所述第三卡片数据和所述第一签名数据生成第五凭据,将所述第五凭据返回给终端,返回步骤102 ; 步骤107:所述卡片判断是否能够获取到所述第一数据和所述第三数据,如果是,则执行步骤108,否则向所述终端返回错误响应,返回步骤102 ; 步骤108:所述卡片获取所述第二条应用密文命令中终端请求的应用密文的类型,通过执行卡片行为分析,更新所述第二卡片数据和所述第三卡片数据,并判断是否满足所述终端请求的应用密文的类型,如果是,则根据所述卡片行为分析结果,生成第三应用密文,执行步骤109,否则根据所述卡片行为分析结果,生成第四应用密文,执行步骤109 ; 步骤109:所述卡片解析所述第二条应用密文命令,判断是否需要执行复合动态数据认证,是则执行步骤110,否则根据所述第一卡片数据、第二卡片数据、所述第三卡片数据和所述第四应用密文,生成第六凭据,并将所述第六凭据返回给所述终端,返回步骤102 ; 步骤110:所述卡片获取所述第二条应用密文命令中的第四数据,根据所述第一数据、所述第一卡片数据、所述第二卡片数据、所述第三卡片数据、所述第三应用密文、所述第三数据和所述第四数据,得到第七组合数据,应用卡片私钥对所述第七组合数据进行签名,得到第二签名数据,根据所述第一卡片数据、所述第二卡片数据、所述第三卡片数据和所述第二签名数据生成第七凭据,将所述第七凭据返回给所述终端,返回步骤102。
2.根据权利要求1所述的方法,其特征在于,所述步骤102还包括:当接收到的命令为选择应用命令时,执行以下步骤: 步骤102-1:所述卡片解析所述选择应用命令,根据所述选择应用命令的数据域,判断所述选择应用命令中的选择方式,如果是第一选择方式,则执行步骤102-2,如果是第二选择方式,则执行步骤102-3 ; 步骤102-2:所述卡片获取所述选择应用命令中的第一应用信息,根据所述第一应用信息检索所述卡片,判断是否能够检索到与所述第一应用信息对应的应用文件,如果是,则将所述与所述第一应用信息对应的应用文件作为当前应用文件,执行步骤102-4,否则向所述终端返回所述第一应用信息不支持的响应,返回步骤102 ; 步骤102-3:所述卡片获取所述选择应用命令中的第二应用信息,根据所述第二应用信息检索所述卡片,判断是否能够检索到与所述第二应用信息对应的应用文件,如果是,则将所述与所述第二应用信息对应的应用文件作为当前应用文件,执行步骤102-4,否则向所述终端返回所述第二应用信息不支持的响应,返回步骤102 ; 步骤102-4:所述卡片从所述当前应用文件中获取第一列表,根据所述第一列表生成第一凭据,将所述第一凭据返回给所述终端,返回执行步骤102。
3.根据权利要求2所述的方法,其特征在于,所述步骤102-2具体为: 步骤102-21:所述卡片获取卡片状态,判断所述卡片是否锁定,如果是,则向所述终端返回卡片锁定的响应,返回步骤102,否则执行步骤102-22 ; 步骤102-22:所述卡片获 取所述选择应用命令中的第一应用信息,根据所述第一应用信息检索所述卡片,判断是否能够检索到与所述第一应用信息对应的应用文件,如果是,则执行步骤102-23,否则向所述终端返回所述第一应用信息不支持的响应,返回步骤102 ;步骤102-23:所述卡片判断所述第一应用信息是否锁定,如果是,则向所述终端返回所述第一应用信息锁定的响应,返回步骤102,否则将所述与所述第一应用信息对应的应用文件作为当前应用文件,执行步骤102-4。
4.根据权利要求2所述的方法,其特征在于,所述步骤102-3具体为: 步骤102-31:所述卡片获取卡片状态,判断所述卡片是否锁定,如果是,则向所述终端返回卡片锁定的响应,返回步骤102,否则执行步骤102-32 ; 步骤102-32:所述卡片获取所述选择应用命令中的第二应用信息,根据所述第二应用信息检索所述卡片,判断是否能够检索到与所述第二应用信息对应的应用文件,如果是,则执行步骤102-23,否则向所述终端返回所述第二应用信息不支持的响应,返回步骤102 ;步骤102-33:所述卡片判断所述第二应用信息是否锁定,如果是,则向所述终端返回所述第二应用信息锁定的响应,返回步骤102,否则将所述与所述第二应用信息对应的应用文件作为当前应用文件,执行步骤102-4。
5.根据权利要求1所述的方法,其特征在于,所述步骤102中,如果是取处理选项命令,具体包括: 步骤al:所述卡片判断是否能够从所述取处理选项命令中解析得到第一数据,如果是,则将所述第一数据保存,执行步骤a2,否则向所述终端返回错误信息,返回步骤102 ;步骤a2:所述卡片更新所述第一卡片数据,检查所述第一卡片数据是否达到预设阈值,如果是,则执行步骤a3,否则执行步骤a4 ; 步骤a3:所述卡片锁定,生成卡片锁定的响应,返回给所述终端,返回步骤102 ; 步骤a4:所述卡片初始化所述第二卡片数据和所述第三卡片数据; 步骤a5:所述卡片获取所述卡片内部要读取的文件信息,根据所述文件信息得到第一信息,根据所述第一信息和卡片支持的脱机认证类型,生成第二凭据,将所述第二凭据返回给所述终端,返回步骤102。
6.根据权利要求5所述的方法,其特征在于,所述步骤102还包括:当接收到的命令是读记录命令时,执行以下操作: 步骤Π:所述卡片对所述读记录命令进行解析,得到所述第一信息; 步骤f2:所述卡片根据所述第一信息读取所述卡片中的应用数据,将所述应用数据返回给所述终端,返回步骤102。
7.根据权利要求1所述的方法,其特征在于,所述步骤102中,如果是内部认证命令,判断为是时,还包括:所述卡片将动态数据认证执行位置位。
8.根据权利要求1所述的方法,其特征在于,所述步骤102中,所述判断所述应用密文命令的类型,具体为:所述卡片解析所述应用密文命令,根据所述应用密文命令中的标识位,判断所述应用密文命令的类型,如果所述应用密文命令中的标识位为第一预设值,则所述应用密文命令为第一条应用密文命令,如果所述应用密文命令中的标识位为第二预设值,则所述应用密文命令为第二条应用密文命令。
9.根据权利要求1所述的方法,其特征在于,所述步骤103与所述步骤104之间,还包括:所述卡片根据所述第一条应用密文命令的第一标识位,判断静态数据认证是否成功,则执行步骤104,否则向所述终端返回拒绝操作响应,返回步骤102 ; 其中,所述判断静态数据认证是否成功,具体为:判断所述第一标识位是否为第三预设值,如果是,则静态数据认证成功,否则静态数据认证失败,返回拒绝操作响应。
10.根据权利要求1所述的方法,其特征在于,所述步骤105中,所述判断是否需要执行复合动态数据认证,具体为:所述卡片判断所述第一条应用密文命令的第二标识位是否为第四预设值,如果是,则需要执行复合动态数据认证,否则不需要执行复合动态数据认证。
11.根据权利要求1所述的方法,其特征在于,所述步骤104中,所述获取所述第一条应用密文命令中终端请求的应用密文的类型,具体为:所述卡片根据所述第一条应用密文命令的第三标识位,获知所述终端请求的应用密文的类型,如果所述第三标识位为第五预设值,则终端请求的应用密文的类型为脱机拒绝执行,如果所述第三标识位为第六预设值,则表示终端请求的应用密文的类型为联机执行,如果所述第三标识位为第七预设值,则表示终端请求的应用密文的类型为脱机批准执行。
12.根据权利要求1所述的方法,其特征在于,所述生成第一应用密文,具体为: 步骤bl:所述卡片获取所述第一应用密文命令中的终端数据,将所述终端数据、所述第二卡片数据和所述第三卡片数据进行组合,得到生成应用密文的数据; 步骤b2:所述卡片将所述生成应用密文的数据进行预设分组,判断分组后的最后一个数据块的长度是否为第一预设长度,如果是,则执行步骤b3,否则执行步骤b4 ; 步骤b3:所述卡片在最后一个数据块后添加预设数据块,将添加后的数据作为新的生成应用密文的数据,执行步骤b5 ; 步骤b4:所述卡片在最后一个数据块后填充一个字节的第一预设数据,判断填充后的数据块长度是否为第一预设长度,如果是,则将填充后的数据作为新的生成应用密文的数据,执行步骤b5,否则在所述第一预设数据后再填充第二预设数据,直到填充后最后一块数据块的长度为预设长度,得到新的生成应用密文的数据,执行步骤b5 ; 步骤b5:所述卡片获取与当前应用文件对应的应用过程密钥,根据应用过程密钥,采用对称密钥算法对所述新的生成应用密文的数据进行计算,生成第一应用密文。
13.根据权利要求1所述的方法,其特征在于,所述步骤106中,所述根据所述第一数据、所述第一卡片数据、所述第二卡片数据、所述第三卡片数据、所述第一应用密文、所述第三数据,得到第四组合数据,具体为: 步骤106-1:所述卡片根据所述第一数据、所述第三数据、所述第一卡片数据、所述第二卡片数据和所述第三卡片数据,得到第二组合数据; 步骤106-2:所述卡片根据所述第一条应用密文命令的哈希算法标识,获取哈希算法,对所述第二组合数据进行哈希计算,得到第一哈希值; 步骤106-3:所述卡片根据所述第一应用密文、所述第一哈希值、所述第一卡片数据和所述第三数据,得到第三组合数据; 步骤106-4:所述卡片数据对所述第三组合数据进行哈希计算,得到第二哈希值; 步骤106-5:所述卡片根据所述第一卡片数据、第一应用密文、第一哈希值和第二应用密文,得到第四组合数据。
14.根据权利要求13所述的方法,其特征在于,所述步骤106-1,具体为:所述卡片将所述第一数据、所述第三数据、所述`第二卡片数据、所述第一卡片数据和所述第三卡片数据进行顺序拼接,得到第二组合数据。
15.根据权利要求13所述的方法,其特征在于,所述步骤106-3,具体为:所述卡片从所述第三数据中获取第二预设长度的字节数,将第三预设数据、哈希算法标识、所述第一卡片数据、所述第一应用密文、所述第一哈希值、预设填充字节和获取到的字节数进行顺序拼接,得到第三组合数据。
16.根据权利要求13所述的方法,其特征在于,所述步骤106-5,具体为:所述卡片将第四预设数据、哈希算法标识、所述第一卡片数据、所述第一应用密文、所述第一哈希值、预设填充字节、所述第二哈希值和第五预设数据进行顺序拼接,得到第四组合数据。
17.根据权利要求1所述的方法,其特征在于,所述步骤107与所述步骤108之间,还包括:所述卡片根据所述第二条应用密文命令的第四标识位,判断静态数据认证是否成功,如果所述第四标识位为0,则静态数据认证成功,继续,如果所述第四标识位为1,则静态数据认证失败,向所述终端返回拒绝操作响应,返回步骤102。
18.根据权利要求1所述的方法,其特征在于,所述步骤109中,判断为是时,还包括:所述卡片将复合动态数据认证执行位置位。
19.根据权利要求1所述的方法,其特征在于,所述步骤109中,所述判断是否需要执行复合动态数据认证,具体为:所述卡片根据所述第二条应用密文命令的第五标识位,判断是否需要执行复合动态数据认证,如果所述第五标识位为1,则需要执行复合动态数据认证,如果所述第五标识位为0,则不需要执行复合动态数据认证。
20.根据权利要求1所述的方法,其特征在于,所述步骤108中,所述获取所述第二条应用密文命令中终端请求的应用密文的类型,具体为:所述卡片根据所述第二条应用密文命令的第六标识位,获知所述终端请求的应用密文的类型,如果所述第五标识位为00,则终端请求的应用密文的类型为脱机拒绝执行,如果所述第五标识位为01,则表示终端请求的应用密文的类型为联机执行,如果所述第五标识位为10,则表示终端请求的应用密文的类型为脱机批准执行。
21.根据权利要求1所述的方法,其特征在于,所述判断是否满足所述终端请求的应用密文的类型,具体为: 步骤Cl:所述卡片执行卡片行为分析,检测是否存在上次未完成的联机授权操作,如果是,则向所述终端返回错误响应,返回步骤102,否则执行步骤c2 ; 步骤c2:所述卡片判断上次操作中发卡行认证是否失败,如果是,则向所述终端返回错误响应,返回步骤102,否则执行步骤c3 ; 步骤c3:所述卡片判断上次操作中脱机数据认证是否失败,如果是,则向所述终端返回错误响应,返回步骤102 ,否则执行步骤c4 ; 步骤c4:所述卡片执行频度检查,判断操作次数是否达到限值数,如果是,则向所述终端返回错误响应,返回步骤102,否则满足所述终端请求的应用密文的类型。
22.根据权利要求1所述的方法,其特征在于,所述生成第三应用密文,具体为: 步骤dl:所述卡片获取所述第二应用密文命令中的终端数据,将所述终端数据、所述第二卡片数据和所述第三卡片数据进行组合,得到生成密文的数据; 步骤d2:所述卡片将所述生成密文的数据进行预设分组,判断分组后的最后一个数据块的长度是否为第一预设长度,如果是,则执行步骤d3,否则执行步骤d4 ; 步骤d3:所述卡片在最后一个数据块后添加预设数据块,将添加后的数据作为新的生成密文的数据,执行步骤d5; 步骤d4:所述卡片在最后一个数据块后填充一个字节的第一预设数据,判断补充后的数据块长度是否为第一预设长度,如果是,则将填充后的数据作为新的生成密文的数据,执行步骤d5,否则在所述第一预设数据后再填充第二预设数据,直到填充后最后一块数据块的长度为预设长度,得到新的生成密文的数据,执行步骤d5 ; 步骤d5:所述卡片获取与当前应用文件对应的应用过程密钥,根据应用过程密钥,采用对称密钥算法对所述新的生成应用密文的数据进行计算,生成第三应用密文。
23.根据权利要求1所述的方法,其特征在于,所述步骤110中,所述根据所述第一数据、所述第一卡片数据、所述第二卡片数据、所述第三卡片数据、所述第二应用密文、所述第三数据和所述第四数据,得到第七组合数据,具体为: 步骤110-1:所述卡片根据所述第一数据、所述第三数据、所述第一卡片数据、所述第二卡片数据、所述第三卡片数据和所述第四数据,得到第五组合数据; 步骤110-2:所述卡片根据所述第二条应用密文命令的哈希算法标识,获取哈希算法,对所述第五组合数据进行哈希计算,得到第三哈希值; 步骤110-3:所述卡片根据所述第二应用密文、所述第三哈希值、所述第一卡片数据和所述第四数据,得到第六组合数据; 步骤110-4:所述卡片对所述第六组合数据进行哈希计算,得到第四哈希值;步骤110-5:所述卡片根据所述第三哈希值、所述第四哈希值、所述第一卡片数据、所述第二应用密文,得到第七组合数据。
24.根据权利要求23所述的方法,其特征在于,所述步骤110-1,具体为:所述卡片将所述第一数据、所述第三数据、所述第四数据、所述第二卡片数据、所述第一卡片数据和所述第三卡片数据进行顺序拼接,得到第五组合数据。
25.根据权利要求23所述的方法,其特征在于,所述步骤110-3,具体为:所述卡片从所述第四数据中获取第二预设长度的字节数,将第三预设数据、哈希算法标识、所述第一卡片数据、所述第二应用密文、所述第三哈希值、预设填充字节和获取到的字节数进行顺序拼接,得到第六组合数据。
26.根据权利要求23所述的方法,其特征在于,所述步骤110-5,具体为:所述卡片将第四预设数据、哈希算法标识、所述第一卡片数据、所述第二应用密文、第三哈希值、预设填充字节和第五预设数据进行顺序拼接,得到第七组合数据。
27.根据权利要求1所述的方法,其特征在于,所述通过执行卡片行为分析,更新所述第二卡片数据和所述第三卡片数据,具体为: 步骤el:所述卡片根据检测上次联机授权操作的结果,设置所述第二卡片数据的第一指示位; 步骤e2:所述卡片根据检测上次操作的发卡行认证的结果,设置所述第二卡片数据的第二指示位和所述第三卡片数据的第一指示位; 步骤e3:所述卡片根据检测上次操作静态数据认证的结果,设置所述第二卡片数据的第三指示位; 步骤e4:所述卡片根据检测上次操作动态数据认证的结果,设置所述第二卡片数据的第四指示位; 步骤e5:所述卡片根据检测上次联机授权操作发卡行脚本处理结果,设置所述第二卡片数据的第五指示位。
28.根据权利要求1所述的方法,其特征在于, 所述步骤102中,所述得到第一数据,还包括:将所述第一数据保存; 所述步骤102中,所述得到第二数据,还包括:将所述第二数据保存; 所述步骤102中,所述将所述第三凭据返回给终端后,还包括:将所述第二数据删除; 所述步骤106中,所述获取所述第一条应用密文命令中的第三数据,还包括:将所述第三数据保存; 所述步骤110中,所述获取所述第二条应用密文命令中的第四数据,还包括:将所述第四数据保存; 所述步骤110中,所述将所述第七凭据返回给终端后,还包括:将所述第一数据、所述第三数据和所述第四数据删除。
【文档编号】H04L9/32GK103763103SQ201310750552
【公开日】2014年4月30日 申请日期:2013年12月31日 优先权日:2013年12月31日
【发明者】陆舟, 于华章 申请人:飞天诚信科技股份有限公司