CN105721143A - 一种对智能卡应用进行初始化的方法和装置 - Google Patents
一种对智能卡应用进行初始化的方法和装置 Download PDFInfo
- Publication number
- CN105721143A CN105721143A CN201610067035.6A CN201610067035A CN105721143A CN 105721143 A CN105721143 A CN 105721143A CN 201610067035 A CN201610067035 A CN 201610067035A CN 105721143 A CN105721143 A CN 105721143A
- Authority
- CN
- China
- Prior art keywords
- key
- file
- application
- smart card
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0838—Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these
- H04L9/0841—Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these involving Diffie-Hellman or related key agreement protocols
- H04L9/0844—Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these involving Diffie-Hellman or related key agreement protocols with user authentication or key authentication, e.g. ElGamal, MTI, MQV-Menezes-Qu-Vanstone protocol or Diffie-Hellman protocols using implicitly-certified keys
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/77—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in smart cards
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/065—Encryption by serially and continuously modifying data stream elements, e.g. stream cipher systems, RC4, SEAL or A5/3
- H04L9/0656—Pseudorandom key sequence combined element-for-element with data sequence, e.g. one-time-pad [OTP] or Vernam's cipher
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开一种对智能卡应用进行初始化的方法,包括:智能卡根据第一应用AID选择根应用;智能卡生成第一随机数,对主控密钥进行安全认证;智能卡进行初始化;智能卡根据第二应用AID、密钥属性和密钥个数在根应用下创建应用和所述应用中的密钥;智能卡查找与第三应用AID相同的应用AID的应用,将查找到的应用设置为当前应用;智能卡生成第三随机数,对修改过程中使用的权限密钥进行安全认证;智能卡根据被修改密钥的密钥号和密钥数据,对当前应用中的密钥进行修改;智能卡根据第一文件ID在当前应用中创建文件;智能卡根据第二文件ID、数据偏移、数据长度和初始数据,在文件中写入初始数据。
Description
技术领域
本发明涉及信息安全领域,尤其涉及一种对智能卡应用进行初始化的方法和装置。
背景技术
智能卡内嵌有安全处理芯片,智能卡操作系统通常称为芯片操作系统;芯片操作系统通常都会依据应用范围而特定设计开发的,所以智能卡中的芯片操作系统通常是各不相同的。为使智能卡为特定应用场景服务,需要事先在智能卡中建立卡结构、卡安全配置并写入初始数据,即智能卡需要进行初始化的操作。
发明内容
本发明的目的是为了克服现有技术的不足,提供一种对智能卡应用进行初始化的方法和装置,是一种安全、便捷、可靠的智能卡多应用场景下的初始化方法,所建立的智能卡结构完整、高效。
本发明提供的一种对智能卡应用进行初始化的方法,包括:
步骤S1:当智能卡获取到卡外传入的第一应用AID时,根据第一应用AID选择根应用;
步骤S2:当所述智能卡获取到卡外传入的被认证的密钥的密钥号时,生成第一随机数,根据所述第一随机数对与被认证的密钥的密钥号对应的根应用的主控密钥进行安全认证;所述智能卡判断所述主控密钥是否通过安全认证,是则执行步骤S3,否则向上位机返回错误码,结束;
步骤S3:当所述智能卡获取到卡外传入的初始化字符时,进行初始化;
步骤S4:当所述智能卡获取到卡外传入的第二应用AID、密钥属性和密钥个数时,根据第二应用AID、密钥属性和密钥个数在所述根应用下创建应用和所述应用中的密钥;
步骤S5:当所述智能卡获取到卡外传入的第三应用AID时,判断是否能在卡内查找到具有与所述第三应用AID相同的应用AID的应用,是则将查找到的应用设置为当前应用,执行步骤S6,否则向上位机返回错误码,结束;
步骤S6:当所述智能卡获取到卡外传入的被认证的密钥的密钥号时,生成第三随机数,根据所述第三随机数对创建应用时写入的密钥属性中指定的修改过程中使用的权限密钥进行安全认证;所述智能卡判断所述权限密钥是否通过安全认证,是则执行步骤S7,否则向上位机返回错误码,结束;
步骤S7:当所述智能卡获取到卡外传入的被修改密钥的密钥号和密钥数据时,根据被修改密钥的密钥号和密钥数据,对当前应用中的密钥进行修改;
步骤S8:当所述智能卡获取到卡外传入的第一文件ID时,根据第一文件ID在当前应用中创建文件;
步骤S9:当所述智能卡获取到卡外传入的第二文件ID、数据偏移、数据长度和初始数据时,根据所述第二文件ID在当前应用中查找对应的文件,判断是否能够查找到与所述第二文件ID查找对应的文件,是则根据数据偏移、数据长度和初始数据,在查找到的文件中写入初始数据,否则向上位机返回错误码,结束。
本发明提供一种对智能卡应用进行初始化的装置,包括:第一选择模块、第一认证模块、初始化模块、创建应用模块、第二选择模块、第二认证模块、修改密钥模块、创建文件模块和写数据模块;
所述第一选择模块,用于当获取到卡外传入的第一应用AID时,根据第一应用AID选择根应用;
所述第一认证模块,用于当获取到卡外传入的被认证的密钥的密钥号时,生成第一随机数,根据所述第一随机数对与被认证的密钥的密钥号对应的根应用的主控密钥进行安全认证;判断所述主控密钥是否通过安全认证,如果否,则向上位机返回错误码;
所述初始化模块,用于当所述第一认证模块安全认证成功并且获取到卡外传入的初始化字符时,进行初始化;
所述创建应用模块,用于当获取到卡外传入的第二应用AID、密钥属性和密钥个数时,根据第二应用AID、密钥属性和密钥个数在所述根应用下创建应用和所述应用中的密钥;
所述第二选择模块,用于当获取到卡外传入的第三应用AID时,判断是否能在卡内查找到具有与所述第三应用AID相同的应用AID的应用,是则将查找到的应用设置为当前应用,否则向上位机返回错误码;
所述第二认证模块,用于当获取到卡外传入的被认证的密钥的密钥号时,生成第三随机数,根据所述第三随机数对创建应用时写入的密钥属性中指定的修改过程中使用的权限密钥进行安全认证;判断所述权限密钥是否通过安全认证,如果否,则向上位机返回错误码;
所述修改密钥模块,用于当所述第二认证模块安全认证成功并且获取到卡外传入的被修改密钥的密钥号和密钥数据时,根据被修改密钥的密钥号和密钥数据,对当前应用中的密钥进行修改;
所述创建文件模块,用于当获取到卡外传入的第一文件ID时,根据第一文件ID在当前应用中创建文件;
所述写数据模块,用于当获取到卡外传入的第二文件ID、数据偏移、数据长度和初始数据时,根据所述第二文件ID在当前应用中查找对应的文件,判断是否能够查找到与所述第二文件ID查找对应的文件,是则根据数据偏移、数据长度和初始数据,在查找到的文件中写入初始数据,否则向上位机返回错误码。
本发明与现有技术相比,具有以下优点:
本发明提供的一种基于USB设备的异步调用方法和装置,在上位机中增加通信库,上位机中的主控装置通过通信库向USB设备发送指令,通信库通过回调函数的方式将USB设备的响应返回给上位机的主控装置,主控装置在发送指令之后不必等待接收响应。
附图说明
图1是本发明实施例1提供的一种对智能卡应用进行初始化的方法的流程图;
图2是本发明实施例1提供的步骤102的具体实现的流程图;
图3是本发明实施例1提供的步骤103的具体实现的流程图;
图4是本发明实施例1提供的步骤104的具体实现的流程图;
图5是本发明实施例1提供的步骤107的具体实现的流程图;
图6是本发明实施例1提供的步骤108的具体实现的流程图;
图7是本发明实施例1提供的步骤110的具体实现的流程图;
图8是本发明实施例2提供的一种对智能卡应用进行初始化的装置的模块图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
本发明的实施例1提供了一种对智能卡应用进行初始化的方法,如图1所示,包括:
步骤101:当智能卡获取到卡外传入的第一应用AID时,智能卡根据第一应用AID选择根应用;
具体地,本实施例中,当智能卡接收到第一选择应用指令时,智能卡根据第一选择应用指令中的第一应用AID选择根应用;
优选地,智能卡接收上位机发送的指令,根据接收到的指令中的指令码判断指令类型,若指令码为第四预设值则确定接收到的指令为第一选择应用指令;优选地,第四预设值为5A;
该步骤101包括:
步骤H00:智能卡判断第一选择应用指令是否有效,是则执行步骤H01,否则向上位机返回错误码,结束;
本实施例中,选择应用指令包括被选择的应用AID;
例如,选择应用指令为5A000000;其中,指令码为5A,智能卡获取选择应用指令中指令码之后的3个字节的数据作为被选择的应用AID,即被选择的应用AID为000000;
步骤H01:智能卡清除过程密钥,初始化各个密钥的认证标识;
步骤H02:智能卡根据第一选择应用指令中被选择的应用AID,将当前应用设置为根应用,向上位机返回成功信息;
步骤102:当智能卡获取到卡外传入的被认证的密钥的密钥号时,智能卡生成第一随机数,根据第一随机数对与被认证的密钥的密钥号对应的根应用的主控密钥进行安全认证;智能卡判断主控密钥是否通过安全认证,是则执行步骤103,否则向上位机返回错误码,结束;
具体地,本实施例中,当智能卡接收到第一安全认证指令时,智能卡根据第一安全认证指令中的被认证的密钥的密钥号,将主控密钥作为对被认证的密钥进行安全认证;
优选地,智能卡接收上位机发送的指令,根据接收到的指令中的指令码判断指令类型,若指令码为第一预设值则确定接收到的指令为第一安全认证指令;优选地,第一预设值为0A;
该步骤102包括以下步骤,如图2所示:
步骤A00:智能卡判断第一安全认证指令是否有效,是则执行步骤A01,否则向上位机返回错误码,结束;
本实施例中,第一安全认证指令包括被认证的密钥的密钥号;
例如,第一安全认证指令为0A00;其中,指令码为0A,智能卡获取第一安全认证指令中指令码之后的1个字节的数据作为被认证的密钥的密钥号,即被认证的密钥的密钥号为00,即主控密钥的密钥号为00;
步骤A01:智能卡根据第一安全认证指令中的密钥号获取被认证的密钥;
本实施例中,与第一安全认证指令中的密钥号对应的密钥即为被认证的密钥;
步骤A02:智能卡生成第一随机数,根据被认证的密钥对第一随机数进行加密,得到第一密文,向上位机返回第一密文;
优选地,第一随机数的长度为8个字节;
例如,第一随机数为A6CF4E2A46975FF7,智能卡对第一随机数进行加密得到的第一密文为9F2D1C6F2C874C9E;
步骤A03:智能卡判断是否接收到第二安全认证指令,是则执行步骤A04,否则向上位机返回错误码,结束;
具体地,智能卡接收上位机发送的指令,判断接收到的指令的指令码是否为第八预设值,是则确定接收到第二安全认证指令,否则确定未接收到第二安全认证指令;优选地,第八预设值为AF;
例如,智能卡接收到的指令为AF8CA64DE9C1B123A7C5FEB3DF0B53E6CE;智能卡获取指令的第1个字节的数据作为指令码,即指令的指令码为AF,智能卡确定接收到第二安全认证指令;
当智能卡接收到第二安全认证指令之后,还包括:智能卡判断第二安全认证指令是否有效,是则执行步骤A04,否则向上位机返回错误码,结束;
步骤A04:智能卡根据被认证的密钥对第二安全认证指令中的第二密文进行解密,得到第二随机数和第一组合数据;
具体地,智能卡对第二安全认证指令中的第二密文进行DES或者3DES解密,得到第二随机数和第一组合数据;例如,智能卡获取第二安全认证指令中的指令码之后的数据作为第二密文,即第二密文为8CA64DE9C1B123A7C5FEB3DF0B53E6CE,对第二密文解密的解密结果为0000000000000000CF4E2A46975FF7A6;智能卡获取解密结果的前8个字节的数据作为第二随机数,即第二随机数为0000000000000000,获取第二随机数之后的8个字节的数据作为第一组合数据,即第一组合数据为CF4E2A46975FF7A6;
步骤A05:智能卡判断第一组合数据是否与第一随机数匹配,是则执行步骤A06,否则向上位机返回错误码,结束;
具体地,智能卡将第一组合数据的最后1个字节的数据移动到第一组合数据的第1个字节的数据之前,判断移动后的第一组合数据是否与第一随机数相同,是则确定第一组合数据与第一随机数匹配,否则确定第一组合数据与第一随机数不匹配;
例如,第一组合数据为CF4E2A46975FF7A6,将第一组合数据的最后1个字节的数据移动到第一组合数据的第1个字节的数据之前,移动后的第一组合数据为A6CF4E2A46975FF7,移动后的第一组合数据是与第一随机数相同,则智能卡确定第一组合数据与第一随机数匹配;
步骤A06:智能卡将与被认证的密钥对应的密钥认证标识置位,对第二随机数进行加密得到第三密文,向上位机返回第三密文;
具体地,智能卡中的各个密钥的认证标识的初始状态为复位,被认证的密钥包括主控密钥和智能卡内部各个应用中的密钥,该步骤还包括:智能卡将本次安全认证中未进行认证的密钥对应的密钥认证标识复位;
例如,第二随机数为0000000000000000,智能卡对第二随机数进行加密得到的第三密文为8CA64DE9C1B123A7;
该步骤还包括:智能卡对第一随机数和第二随机数进行拼接组合,得到过程密钥;
具体地,若被认证的密钥的前8个字节的数据与后8个字节的数据不相同,则将第二随机数的前4个字节的数据、第一随机数的前4个字节的数据、第二随机数的后4个字节的数据与第一随机数的后4个字节数据顺序拼接,得到16个字节的过程密钥;若被认证的密钥的前8个字节的数据与后8个字节的数据相同,则将第二随机数的前4个字节的数据、第一随机数的前4个字节的数据顺序拼接,得到8个字节的过程密钥;
例如,被认证的密钥为11111111111111111111111111111111,则被认证的密钥的前8个字节的数据与后8个字节的数据相同,则智能卡获取第二随机数的前4个字节的数据,即00000000,获取第一随机数的前4个字节的数据,即A6CF4E2A,顺序拼接得到的8个字节的过程密钥为00000000A6CF4E2A;
步骤103:当智能卡获取到卡外传入的初始化字符时,智能卡进行初始化;
具体地,本实施例中,当智能卡接收到初始化指令时,智能卡进行初始化;
优选地,智能卡接收上位机发送的指令,根据接收到的指令中的指令码判断指令类型,若指令码为第五预设值则确定接收到的指令为初始化指令;优选地,第五预设值为FC;
该步骤103包括以下步骤,如图3所示:
步骤I00:智能卡判断初始化指令是否有效,是则执行步骤I01,否则向上位机返回错误码,结束;
例如,初始化指令为FC;
步骤I01:智能卡判断当前是否在根应用下,是则执行步骤I02,否则向上位机返回错误码,结束;
步骤I02:智能卡根据与主控密钥对应的认证标识判断主控密钥是否通过安全认证,是则执行步骤I03,否则向上位机返回错误码,结束;
具体地,智能卡判断与主控密钥对应的认证标识是否置位,是则确定主控密钥通过安全认证,否则确定主控密钥未通过安全认证;
步骤I03:智能卡对除主控密钥和主控密钥的密钥属性之外的数据进行清除,向上位机返回成功信息;
步骤104:当智能卡获取到卡外传入的第二应用AID、密钥属性和密钥个数时,智能卡根据第二应用AID、密钥属性和密钥个数在根应用下创建应用和所述应用中的密钥;
具体地,本实施例中,当智能卡接收到创建应用指令时,智能卡根据创建应用指令中的第二应用AID、密钥属性和密钥个数在根应用下创建应用和所述应用中的密钥;
优选地,智能卡接收上位机发送的指令,根据接收到的指令中的指令码判断指令类型,若指令码为第三预设值则确定接收到的指令为创建应用指令;优选地,第三预设值为CA;
除此之外,智能卡还可以根据接收到的多条创建应用指令,在根应用下创建多个应用;
例如,本实施例中,智能卡在根应用下创建的应用包括公共应用和公交应用;
该步骤104包括以下步骤,如图4所示:
步骤E00:智能卡判断创建应用指令是否合法,是则执行步骤E01,否则向上位机返回错误码,结束;
本实施例中,创建应用指令包括第二应用AID、密钥属性和密钥个数;例如,创建应用指令为CA0000010903;其中,指令码为CA;
步骤E00之后还可以包括:智能卡判断创建应用指令中的第二应用AID是否正确,是则执行步骤E01,否则向上位机返回错误码,结束;
具体地,智能卡获取创建应用指令中指令码之后的3个字节的数据作为应用AID;例如,应用AID为000001;
具体地,智能卡判断创建应用指令中的第二应用AID是否为0,是则确定应用AID不正确,否则确定应用AID正确;
步骤E00之后还可以包括:智能卡从创建应用指令中获取密钥个数,判断密钥个数是否在预设范围内,是则执行步骤E01,否则向上位机返回错误码,结束;
具体地,智能卡获取创建应用指令中第二应用AID之后的第2个字节的数据作为密钥个数;例如,第二应用AID为000001,密钥个数为03;优选地,预设范围为1至14;
步骤E01:智能卡判断当前是否在根应用下,是则执行步骤E02,否则向上位机返回错误码,结束;
步骤E01之后还可以包括:
步骤E01-1:智能卡根据主控密钥的密钥属性判断是否需要认证主控密钥,是则执行步骤E01-2,否则执行步骤E02;
步骤E01-2:智能卡根据与主控密钥对应的认证标识判断主控密钥是否通过安全认证,是则执行步骤E02,否则向上位机返回错误码,结束;
具体地,智能卡判断与主控密钥对应的认证标识是否置位,是则确定主控密钥通过安全认证,否则确定主控密钥未通过安全认证;
步骤E02:智能卡判断卡中是否已存在具有与创建应用指令中的应用AID相同AID的应用,是则向上位机返回错误码,结束,否则执行步骤E03;
步骤E03:智能卡根据应用个数判断根应用下已安装的应用个数是否达到第十预设值,是则向上位机返回错误码,结束,否则执行步骤E04;
优选地,第十预设值为28;
步骤E04:智能卡将创建应用指令中的第二应用AID、密钥属性和密钥个数关联到根应用,更新根应用下已安装的应用个数,根据预设值创建应用中的密钥,向上位机返回成功信息;
具体地,智能卡获取创建应用指令中第二应用AID之后的1个字节的数据作为密钥属性;
例如,第二应用AID为000001,密钥属性为09,密钥个数为03;优选地,更新根应用下已安装的应用个数为将应用个数自加1;
步骤105:当智能卡获取到卡外传入的第三应用AID时,智能卡根据第三应用AID选择根应用下的应用作为当前应用;
具体地,本实施例中,当智能卡接收到第二选择应用指令时,智能卡根据选择应用指令中的第三应用AID选择根应用下的应用;
优选地,智能卡接收上位机发送的指令,根据接收到的指令中的指令码判断指令类型,若指令码为第四预设值则确定接收到的指令为第二选择应用指令;优选地,第四预设值为5A;
该步骤105包括:
步骤H03:智能卡判断第二选择应用指令是否有效,是则执行步骤H04,否则向上位机返回错误码,结束;
本实施例中,第二选择应用指令包括被选择的第三应用AID;
例如,第二选择应用指令为5A000001;其中,指令码为5A,智能卡获取第二选择应用指令中指令码之后的3个字节的数据作为被选择的应用的AID,即第三应用AID为000001;
步骤H04:智能卡清除过程密钥,初始化各个密钥的认证标识;
步骤H05:智能卡判断是否能在卡内查找到具有与第三应用AID相同的应用AID的应用,是则将查找到的应用设置为当前应用,向上位机返回成功信息,否则向上位机返回错误码,结束;
步骤106:当智能卡获取到卡外传入的被认证的密钥的密钥号时,生成第三随机数,根据第三随机数对创建应用时写入的密钥属性中指定的修改过程中使用的权限密钥进行安全认证;智能卡判断权限密钥是否通过安全认证,是则执行步骤107,否则向上位机返回错误码,结束;
具体地,本实施例中,当智能卡接收到第三安全认证指令时,智能卡根据第三安全认证指令中的被认证的密钥的密钥号,对被认证的密钥进行安全认证;
该步骤106具体包括:
步骤A01’:智能卡根据第三安全认证指令中的密钥号获取被认证的密钥;
步骤A02’:智能卡生成第三随机数,根据被认证的密钥对第三随机数进行加密,得到第四密文,向上位机返回第四密文;
步骤A03’:智能卡判断是否接收到第四安全认证指令,是则执行步骤A04’,否则向上位机返回错误码,结束;
步骤A04’:智能卡根据被认证的密钥对第四安全认证指令中的第五密文进行解密,得到第四随机数和第二组合数据;
步骤A05’:智能卡判断第二组合数据是否与第三随机数匹配,是则执行步骤A06’,否则向上位机返回错误码,结束;
步骤A06’:智能卡确定安全认证成功,对第四随机数进行加密得到第六密文,向上位机返回第六密文;
该还包括:智能卡对第三随机数和第四随机数进行拼接组合,得到过程密钥;
步骤107:当智能卡获取到卡外传入的被修改密钥的密钥号和密钥数据时,智能卡根据被修改密钥的密钥号和密钥数据,对当前应用中的密钥进行修改;
具体地,本实施例中,当智能卡接收到修改密钥指令时,智能卡根据修改密钥指令中的被修改密钥的密钥号和密钥数据,对当前应用中的密钥进行修改;
优选地,智能卡接收上位机发送的指令,根据接收到的指令中的指令码判断指令类型,若指令码为第二预设值则确定接收到的指令为修改密钥指令;优选地,第二预设值为C4;
除此之外,智能卡还可以根据接收到的多条修改密钥指令,对当前应用下的多个密钥进行修改;
该步骤107包括以下步骤,如图5所示:
步骤D00:智能卡判断修改密钥指令是否合法,是则执行步骤D01,否则向上位机返回错误码,结束;
本实施例中,修改密钥指令包括被修改密钥的密钥号和密钥数据;
例如,修改密钥指令为C401BF63D3F76CD4D8E13DC3817AC2E56EFA5B13A375B611952F;其中,指令码为C4,智能卡获取修改密钥指令中指令码之后的1个字节的数据作为被修改密钥的密钥号,即被修改密钥的密钥号为01,智能卡获取修改密钥指令中被修改密钥的密钥号之后的数据作为密钥数据,即密钥数据为BF63D3F76CD4D8E13DC3817AC2E56EFA5B13A375B611952F;
步骤D01:智能卡从修改密钥指令中获取被修改的密钥的密钥号,初始化修改标识;
具体地,修改标识初始值为复位,修改标识用于记录被修改的密钥是否与修改过程中使用的权限密钥相同;
步骤D02:智能卡根据获取到的密钥号判断被修改的密钥是否为主控密钥,是则执行步骤D05,否则执行步骤D03;
具体地,智能卡判断获取到的密钥号是否为第九预设值,是则确定被修改的密钥为主控密钥,否则确定被修改的密钥不为主控密钥;例如,第九预设值为0x00;
步骤D03:智能卡判断修改过程中使用的权限密钥是否通过安全认证,是则执行步骤D04,否则向上位机返回错误码,结束;
具体地,智能卡判断与修改过程中使用的权限密钥对应的认证标识是否置位,是则确定修改过程中使用的权限密钥通过安全认证,否则确定修改过程中使用的权限密钥未通过安全认证;
步骤D04:智能卡判断被修改的密钥的密钥号与修改过程中使用的权限密钥的密钥号是否相同,是则将修改标识置位,执行步骤D07,否则执行步骤D07;
步骤D05:智能卡根据主控密钥的密钥属性判断是否允许修改主控密钥,是则执行步骤D06,否则向上位机返回错误码,结束;
步骤D06:智能卡根据与主控密钥对应的认证标识判断主控密钥是否通过安全认证,是则将修改标识置位,执行步骤D07,否则向上位机返回错误码,结束;
具体地,智能卡判断与主控密钥对应的认证标识是否置位,是则确定主控密钥通过安全认证,否则确定主控密钥未通过安全认证;
步骤D07:智能卡判断修改标识是否置位,是则执行步骤D08,否则执行步骤D10;
步骤D08:智能卡根据过程密钥对修改密钥指令的密钥数据进行解密,得到新密钥和第一校验码;
步骤D09:智能卡对新密钥进行校验,根据第一校验码判断是否通过校验,是则执行步骤D13,否则向上位机返回错误码,结束;
步骤D10:智能卡根据过程密钥对修改密钥指令的密钥数据进行解密,得到异或数据、第二校验码和第三校验码;
例如,密钥数据为BF63D3F76CD4D8E13DC3817AC2E56EFA5B13A375B611952F,解密结果为111111111111111111111111111111113207320780000000;智能卡获取解密结果的前16个字节的数据作为异或数据,即异或数据为11111111111111111111111111111111;智能卡获取异或数据之后的2个字节的数据作为第二校验码,即第二校验码为3207;智能卡获取第二校验码之后的2个字节的数据作为第三校验码,即第二校验码为3207;
步骤D11:智能卡对异或数据进行校验,根据第二校验码判断是否通过校验,是则执行步骤D12,否则向上位机返回错误码,结束;
步骤D12:智能卡对被修改的密钥和异或数据进行异或运算,得到新密钥,对新密钥进行校验,根据第三校验码判断是否通过校验,是则执行步骤D13,否则向上位机返回错误码,结束;
例如,被修改的密钥为00000000000000000000000000000000,异或数据为11111111111111111111111111111111,则进行异或运算得到的新密钥为11111111111111111111111111111111;
步骤D13:智能卡根据新密钥更新被修改的密钥,将与被修改的密钥对应的认证标识复位,向上位机返回成功信息;
步骤108:当智能卡获取到卡外传入的第一文件ID时,智能卡根据第一文件ID,在当前应用中创建文件;
具体地,本实施例中,当智能卡接收到创建文件指令时,智能卡根据创建文件指令中的第一文件ID,在当前应用中创建文件;
优选地,智能卡接收上位机发送的指令,根据接收到的指令中的指令码判断指令类型,若指令码为第六预设值则确定接收到的指令为创建文件指令;优选地,第六预设值为C0、C1、CB、CC或CD;
除此之外,智能卡还可以根据接收到的多条创建文件指令,在当前应用下创建多个文件;
例如,本实施例中,智能卡在公共应用下创建的文件包括通用钱包文件、创建充值信息文件、创建钱包交易过程记录文件、创建钱包累计交易次数文件、创建交易记录文件、创建黑名单标识文件、创建本地钱包文件、创建本地多票过程数据文件、创建持卡人信息文件、创建售卡信息文件和创建发卡方数据文件;智能卡在公交应用下创建的文件包括赠送钱包文件;
该步骤108包括以下步骤,如图6所示:
步骤M00:智能卡判断创建文件指令是否有效,是则执行步骤M01,否则向上位机返回错误码,结束;
本实施例中,创建文件指令包括第一文件ID、通信级别和访问权限;例如,创建文件指令为CB0100E2202A0000;其中,指令码为CB;
步骤M01:智能卡判断当前是否在根应用下,是则向上位机返回错误码,结束,否则执行步骤M02;
步骤M01之后还包括:
步骤M01-1:智能卡根据主控密钥的密钥属性判断是否需要认证主控密钥,是则执行步骤M01-2,否则执行步骤M02;
步骤M01-2:智能卡根据与主控密钥对应的认证标识判断主控密钥是否通过安全认证,是则执行步骤M02,否则向上位机返回错误码,结束;
具体地,智能卡判断与主控密钥对应的认证标识是否置位,是则确定主控密钥通过安全认证,否则确定主控密钥未通过安全认证;
步骤M02:智能卡根据创建文件指令中访问权限的值,获取文件的读权限、写权限、读写权限和修改访问权限对应的密钥号,判断是否能在当前应用中找到与密钥号对应的密钥,是则执行步骤M03,否则向上位机返回错误码,结束;
具体地,智能卡获取创建文件指令中指令码之后的1个字节的数据作为文件ID,获取创建文件指令中第一文件ID之后的1个字节的数据作为通信级别,获取创建文件指令中通信级别之后的2个字节的数据作为访问权限;
例如,创建文件指令为CB0100E2202A0000,第一文件ID为01,通信级别为00,访问权限为E220;
步骤M03:智能卡判断创建文件指令类型,若为创建标准文件或备份文件指令,则执行步骤M04;若为创建值文件指令,则执行步骤M05;若为创建线性数据文件或循环数据文件指令,则执行步骤M06;
具体地,智能卡根据指令码判断创建文件指令类型,若指令码为第十一预设值则确定接收到的指令为创建标准文件指令;若指令码为第十二预设值则确定接收到的指令为创建备份文件指令;若指令码为第十三预设值则确定接收到的指令为创建值文件指令;若指令码为第十四预设值则确定接收到的指令为创建线性数据文件指令;若指令码为第十五预设值则确定接收到的指令为创建循环数据文件指令;
优选地,第十一预设值为CD,第十二预设值为CB,第十三预设值为CC,第十四预设值为C1,第十五预设值为C0;
步骤M04:智能卡将文件类型和创建标准文件或备份文件指令中的文件大小对应存储在卡中,根据文件大小得到创建文件需要的空间,执行步骤M07;
该步骤之前还包括:智能卡判断创建标准文件或备份文件指令中的第一文件ID是否合法,是则执行步骤M04,否则向上位机返回错误码,结束;
本实施例中,创建标准文件或备份文件指令包括第一文件ID、通信级别、访问权限和文件大小;
具体地,智能卡获取创建标准文件或备份文件指令中指令码之后的1个字节的数据作为第一文件ID,获取第一文件ID之后的1个字节的数据作为通信级别,获取通信级别之后的2个字节的数据作为访问权限,获取访问权限之后的3个字节的数据作为文件大小;
例如,创建备份文件指令为CB0100E2202A0000,第一文件ID为01,通信级别为00,访问权限为E220,文件大小为2A0000;
步骤M05:智能卡将文件类型对应存储在卡中,将创建文件需要的空间设为第十六预设值,执行步骤M07;
优选地,第十六预设值为0x19;
步骤M05之前还包括:智能卡判断创建值文件指令中的第一文件ID是否合法,是则执行步骤M05,否则向上位机返回错误码,结束;
本实施例中,创建值文件指令包括第一文件ID、通信级别、访问权限、金额上限,金额下限、金额和改限允许标识;
具体地,智能卡获取创建值文件指令中指令码之后的1个字节的数据作为文件ID;
例如,创建值文件指令为CC0301122000000000FFFFFF7F0000000000,第一文件ID为03;
步骤M05之前还包括:智能卡判断创建值文件指令中的金额上限、金额下限和金额是否合法,是则执行步骤M05,否则向上位机返回错误码,结束;
具体地,智能卡获取第一文件ID之后的1个字节的数据作为通信级别,获取通信级别之后的2个字节的数据作为访问权限,获取访问权限之后的4个字节的数据作为金额上限,获取金额上限之后的4个字节的数据作为金额下限,获取金额下限之后的4个字节的数据作为金额,获取金额之后的1个字节的数据作为改限允许标识;
例如,创建值文件指令为CC0301122000000000FFFFFF7F0000000000,第一文件ID为03,通信级别为01,访问权限为1220,金额上限为00000000,金额下限为FFFFFF7F,金额为00000000,改限允许标识为00;
步骤M06:智能卡将文件类型、创建线性数据文件或循环数据文件指令中的记录大小和记录数对应存储在卡中,根据记录大小和记录数得到创建文件需要的空间,执行步骤M07;
步骤M06之前还包括:智能卡判断创建线性数据文件或循环数据文件指令中的第一文件ID是否合法,是则执行步骤M06,否则向上位机返回错误码,结束;
本实施例中,创建线性数据文件或循环数据文件指令包括第一文件ID、通信级别、访问权限、记录大小和记录数;
具体地,智能卡获取创建线性数据文件或循环数据文件指令中指令码之后的1个字节的数据作为第一文件ID,获取第一文件ID之后的1个字节的数据作为通信级别,获取通信级别之后的2个字节的数据作为访问权限,获取访问权限之后的3个字节的数据作为记录大小,获取记录大小之后的3个字节的数据作为记录数;
例如,创建循环数据文件指令为C00200E1101000000A0000,第一文件ID为02,通信级别为00,访问权限为E110,记录大小为100000,记录数0A0000;
步骤M06之前还包括
步骤M06-1:智能卡判断该创建文件指令是否为创建循环数据文件指令,是则执行步骤M06-2,否则执行步骤M06;
具体地,智能卡通过创建文件指令的指令码判断该指令是否为创建循环记录文件的指令;
步骤M06-2:智能卡判断创建循环数据文件指令中的记录数是否小于第十七预设值,是则向上位机返回错误码,结束,否则执行步骤M06;
优选地,第十六预设值为2;
步骤M07:智能卡组织文件头,将文件链表、第一文件ID、通信级别和访问权限对应存储在卡中;
该步骤之后还包括:智能卡判断创建文件需要的空间是否为空,是则向上位机返回错误码,结束,否则执行步骤M08;
步骤M08:智能卡判断创建文件指令是否为创建值文件指令,是则执行步骤M09,否则执行步骤M10;
步骤M09:智能卡在文件头中存储上下限,余额和改限允许标识,执行步骤M10;
步骤M10:智能卡根据创建文件需要的空间在当前应用中创建文件结点,在文件链表中查找当前应用最后一个文件结点,在当前应用最后一个文件结点的指针域中存储创建的文件结点的地址,向上位机返回成功信息;
步骤109:当智能卡获取到卡外传入的第四应用AID时,智能卡根据第四应用AID选择根应用下的应用作为当前应用;
具体地,本实施例中,当智能卡接收到第三选择应用指令时,智能卡根据选择应用指令中的第四应用AID选择根应用下的应用;
该步骤109具体实现方法如步骤H03至步骤H05;
步骤110:当智能卡获取到卡外传入的第二文件ID、数据偏移、数据长度和初始数据时,智能卡根据第二文件ID、数据偏移、数据长度和初始数据,在当前应用的文件中写入数据;
具体地,本实施例中,当智能卡接收到写数据指令时,智能卡根据写数据指令中的第二文件ID、数据偏移、数据长度和初始数据,在应用的文件中写入数据;
优选地,智能卡接收上位机发送的指令,根据接收到的指令中的指令码判断指令类型,若指令码为第七预设值则确定接收到的指令为写数据指令;优选地,第七预设值为3D;
除此之外,智能卡还可以根据接收到的多条写数据指令,在当前应用下的多个文件中写入数据;
该步骤110包括以下步骤,如图7所示:
步骤Q00:智能卡判断写数据指令是否有效,是则执行步骤Q01,否则向上位机返回错误码,结束;
本实施例中,写数据指令中包括文件ID、数据偏移、数据长度和初始数据;
具体地,智能卡获取写数据指令中指令码之后的1个字节的数据作为文件ID,获取文件ID之后的3个字节的数据作为数据偏移,获取数据偏移之后的3个字节的数据作为数据长度,根据数据长度获取数据长度之后的数据作为初始数据;
例如,创建循环数据文件指令为3D030000000500000000000033,其中,指令码为3D,文件ID为03,数据偏移为000000、数据长度为050000,初始数据为0000000033;
步骤Q01:智能卡判断当前是否在根应用下,是则向上位机返回错误码,结束,否则执行步骤Q02;
该步骤之后还包括:智能卡判断写数据指令中的第二文件ID是否合法,是则执行步骤Q02,否则向上位机返回错误码,结束;
具体地,智能卡判断写数据指令中的第二文件ID是否超过最大文件ID号,是则确定第二文件ID不合法,否则确定第二文件ID合法;
步骤Q02:智能卡根据写数据指令中的第二文件ID在当前应用中查找对应的文件,判断是否能够查找到与写数据指令中的第二文件ID对应的文件,是则将查找到的文件作为当前文件,执行步骤Q03,否则向上位机返回错误码,结束;
该步骤之后还包括:智能卡获取当前文件的写权限和读写权限,判断获取到的写权限和读写权限是否为不允许对文件进行写操作,是则向上位机返回错误码,结束,否则执行步骤Q03;
具体地,智能卡判断获取到的写权限或读写权限是否为第十七预设值,是则确定写权限和读写权限为不允许对文件进行写操作,否则确定写权限和读写权限为允许对文件进行写操作;即,若智能卡获取到的写权限或读写权限中的任意一个为第十七预设值,则确定写权限和读写权限为不允许对文件进行写操作;
优选地,第十七预设值为0或3;
该步骤之后还包括:智能卡判断当前文件的文件类型是否为标准文件或备份文件,是则向上位机返回错误码,结束,否则执行步骤Q03;
该步骤之后还包括:智能卡获取写数据指令中的数据偏移、数据长度,判断数据偏移与数据长度之和是否超过文件大小,是则向上位机返回错误码,结束,否则执行步骤Q03;
步骤Q03:智能卡判断写权限和读写权限否为自由,是则将通信级别设置为明文通信,执行步骤Q04,否则获取当前文件的通信级别,执行步骤Q04;
具体地,智能卡判断写权限和读写权限是否均为第十八预设值,是则确定写权限和读写权限为自由,否则确定写权限和读写权限不为自由;优选地,第十八预设值为2;
步骤Q04:智能卡根据数据长度判断是否接收到完整的写数据指令中的数据,是则执行步骤Q06,否则执行步骤Q05;
步骤Q05:智能卡继续接收写数据指令中的数据,返回步骤Q04;
步骤Q06:智能卡判断通信级别的类型,若为明文通信则将写数据指令中的初始数据作为数据内容,执行步骤Q09,若为明文校验则执行步骤Q07,若为密文校验则执行步骤Q08;
具体地,智能卡判断通信级别的值,若通信级别的值为第十九预设值,则通信级别为明文校验;若通信级别的值为第二十预设值,则通信级别为密文校验;若通信级别的值为第二十一预设值,则通信级别为明文通信;
优选地,第十九预设值为1,第二十预设值为3,第二十一预设值为0或2;
步骤Q07:智能卡对写数据指令中的初始数据进行校验,判断校验是否成功,是则将初始数据中除校验码之外的数据作为数据内容,执行步骤Q09,否则向上位机返回错误码,结束;
步骤Q08:智能卡对写数据指令中的初始数据进行校验,判断校验是否成功,是则对初始数据中除校验码之外的数据进行解密,得到数据内容,执行步骤Q09,否则向上位机返回错误码,结束;
步骤Q09:智能卡根据数据偏移,将数据内容写到当前文件的相应位置,返回成功信息。
实施例2
本发明的实施例2提供了一种对智能卡应用进行初始化的装置,如图8所示,包括:第一选择模块201、第一认证模块202、初始化模块203、创建应用模块204、第二选择模块205、第二认证模块206、修改密钥模块207、创建文件模块208和写数据模块209;
第一选择模块201,用于当获取到卡外传入的第一应用AID时,根据第一应用AID选择根应用;
第一认证模块202,用于当获取到卡外传入的被认证的密钥的密钥号时,生成第一随机数,根据第一随机数对与被认证的密钥的密钥号对应的根应用的主控密钥进行安全认证;判断主控密钥是否通过安全认证,如果否,则向上位机返回错误码;
初始化模块203,用于当第一认证模块202安全认证成功并且获取到卡外传入的初始化字符时,进行初始化;
创建应用模块204,用于当获取到卡外传入的第二应用AID、密钥属性和密钥个数时,根据第二应用AID、密钥属性和密钥个数在根应用下创建应用和应用中的密钥;
第二选择模块205,用于当获取到卡外传入的第三应用AID时,判断是否能在卡内查找到具有与第三应用AID相同的应用AID的应用,是则将查找到的应用设置为当前应用,否则向上位机返回错误码;
第二认证模块206,用于当获取到卡外传入的被认证的密钥的密钥号时,生成第三随机数,根据第三随机数对创建应用时写入的密钥属性中指定的修改过程中使用的权限密钥进行安全认证;判断权限密钥是否通过安全认证,如果否,则向上位机返回错误码;
修改密钥模块207,用于当第二认证模块206安全认证成功并且获取到卡外传入的被修改密钥的密钥号和密钥数据时,根据被修改密钥的密钥号和密钥数据,对当前应用中的密钥进行修改;
创建文件模块208,用于当获取到卡外传入的第一文件ID时,根据第一文件ID在当前应用中创建文件;
写数据模块209,用于当获取到卡外传入的第二文件ID、数据偏移、数据长度和初始数据时,根据第二文件ID在当前应用中查找对应的文件,判断是否能够查找到与第二文件ID查找对应的文件,是则根据数据偏移、数据长度和初始数据,在查找到的文件中写入初始数据,否则向上位机返回错误码。
当接收到第一选择应用指令时第一选择模块201进行工作,第一选择模块201包括:第一清除单元和第一设置单元;
第一清除单元,用于清除过程密钥,初始化各个密钥的认证标识;
第一设置单元,用于根据第一选择应用指令中的第一应用AID,将当前应用设置为根应用,向上位机返回成功信息。
当接收到第一安全认证指令时第一认证模块202进行工作,第一认证模块202包括:第一获取单元、第一生成单元、第一判断单元、第二生成单元、第二判断单元和第三生成单元;
第一获取单元,用于根据第一安全认证指令中的密钥号获取被认证的密钥;
第一生成单元,用于生成第一随机数,根据第一获取单元获取到的被认证的密钥对第一随机数进行加密,得到第一密文,向上位机返回第一密文;
第一判断单元,用于判断是否接收到第二安全认证指令,若未接收到第二安全认证指令则向上位机返回错误码,结束;
第二生成单元,用于当第一判断单元判断出接收到第二安全认证指令时,根据第一获取单元获取到的被认证的密钥对第二安全认证指令中的第二密文进行解密,得到第二随机数和第一组合数据;
第二判断单元,用于判断第二生成单元生成的第一组合数据是否与第一随机数匹配,若判断出第一组合数据与第一随机数不匹配,则向上位机返回错误码,结束;
第三生成单元,用于当第二判断单元判断出第一组合数据与第一随机数匹配时,确定安全认证成功,对第二随机数进行加密得到第三密文,向上位机返回第三密文。
第三生成单元还用于对第一随机数和第二随机数进行拼接组合,得到过程密钥。
当接收到初始化指令时初始化模块203进行工作,初始化模块203包括第三判断单元和第二清除单元;
第三判断单元,用于判断当前是否在根应用下,若当前不在根应用下则向上位机返回错误码,结束;
第二清除单元,用于当第三判断单元判断出当前在根应用下时,对除主控密钥和主控密钥的密钥属性之外的数据进行清除,向上位机返回成功信息。
当接收到创建应用指令时,创建应用模块204进行工作,创建应用模块204包括:第四判断单元、第五判断单元、第六判断单元和第一创建单元;
第四判断单元,用于判断当前是否在根应用下,若当前不在根应用下则向上位机返回错误码,结束;
第五判断单元,用于当第四判断单元判断出当前在根应用下时,判断卡中是否已存在具有与创建应用指令中的应用AID相同AID的应用,是则向上位机返回错误码,结束;
第六判断单元,用于当第五判断单元判断出卡中不存在具有与创建应用指令中的应用AID相同AID的应用时,根据应用个数判断根应用下已安装的应用个数是否达到第十预设值,是则向上位机返回错误码,结束;
第一创建单元,用于当第六判断单元判断根应用下已安装的应用个数未达到第十预设值时,将创建应用指令中的应用AID、密钥属性和密钥个数关联到根应用,更新根应用下已安装的应用个数,根据预设值创建应用中的密钥,向上位机返回成功信息。
创建应用模块204还包括:第七判断单元和第八判断单元;
第七判断单元,用于当第四判断单元判断出当前在根应用下时,根据主控密钥的密钥属性判断是否需要认证主控密钥,若判断出不需要认证主控密钥则触发第五判断单元进行工作;
第八判断单元,用于当第七判断单元判断出需要认证主控密钥时,根据与主控密钥对应的认证标识判断主控密钥是否通过安全认证,是则触发第五判断单元进行工作,否则向上位机返回错误码,结束。
当接收到第二选择应用指令时第二选择模块205进行工作,第二选择模块205还用于当判断出能在卡内查找到具有与第三应用AID相同的应用AID的应用时,清除过程密钥,初始化各个密钥的认证标识。
当接收到第三安全认证指令时第二认证模块206进行工作,第二认证模块206包括:第二获取单元、第四生成单元、第九判断单元、第五生成单元、第十判断单元和第六生成单元;
第二获取单元,用于根据第三安全认证指令中的密钥号获取被认证的密钥;
第四生成单元,用于生成第三随机数,根据第二获取单元获取到的被认证的密钥对第三随机数进行加密,得到第四密文,向上位机返回第四密文;
第九判断单元,用于判断是否接收到第四安全认证指令,若未接收到第四安全认证指令则向上位机返回错误码,结束;
第五生成单元,用于当第九判断单元判断出接收到第四安全认证指令时,根据第二获取单元获取到的被认证的密钥对第四安全认证指令中的第五密文进行解密,得到第四随机数和第二组合数据;
第十判断单元,用于判断第五生成单元生成的第二组合数据是否与第三随机数匹配,若判断出第二组合数据与第三随机数不匹配,则向上位机返回错误码,结束;
第六生成单元,用于当第十判断单元判断出第二组合数据与第三随机数匹配时,确定安全认证成功,对第四随机数进行加密得到第六密文,向上位机返回第六密文。
第六生成单元还用于对第三随机数和第四随机数进行拼接组合,得到过程密钥。
当接收到修改密钥指令时修改密钥模块207进行工作,修改密钥模块207包括:第三获取单元、第十二判断单元、第十四判断单元、第十五判断单元、第十六判断单元、第十七判断单元、第一解密单元、第十八判断单元、第二解密单元、第十九判断单元、第二十判断单元和更新单元;
第三获取单元,用于从修改密钥指令中获取被修改的密钥的密钥号,初始化修改标识;
第十二判断单元,用于根据获取到的密钥号判断被修改的密钥是否为主控密钥;
第十四判断单元,用于当第十三判断单元判断出修改过程中使用的权限密钥已通过安全认证时,判断被修改的密钥的密钥号与修改过程中使用的权限密钥的密钥号是否相同,是则将修改标识置位;
第十五判断单元,用于当第十二判断单元判断出被修改的密钥为主控密钥时,根据主控密钥的密钥属性判断是否允许修改主控密钥,若不允许修改主控密钥则向上位机返回错误码,结束;
第十六判断单元,用于当第十五判断单元判断出允许修改主控密钥时,根据与主控密钥对应的认证标识判断主控密钥是否通过安全认证,是则将修改标识置位,若主控密钥未通过安全认证则向上位机返回错误码,结束;
第十七判断单元,当第十四判断单元判断被修改的密钥的密钥号与修改过程中使用的权限密钥的密钥号是否相同之后,或者当第十六判断单元判断出主控密钥已通过安全认证时,判断修改标识是否置位;
第一解密单元,用于当第十七判断单元判断出修改标识已置位时,根据过程密钥对修改密钥指令的密钥数据进行解密,得到新密钥和第一校验码;
第十八判断单元,用于对第一解密单元得到的新密钥进行校验,根据第一校验码判断是否通过校验,若未通过校验则向上位机返回错误码,结束;
第二解密单元,用于当第十七判断单元判断出修改标识未置位时,根据过程密钥对修改密钥指令的密钥数据进行解密,得到异或数据、第二校验码和第三校验码;
第十九判断单元,用于对第二解密单元得到的异或数据进行校验,根据第二校验码判断是否通过校验,若未通过校验则向上位机返回错误码,结束;
第二十判断单元,用于当第十九判断单元判断出通过校验时,对被修改的密钥和异或数据进行异或运算,得到新密钥,对新密钥进行校验,根据第三校验码判断是否通过校验,是则执行步骤D13,若未通过校验则向上位机返回错误码,结束;
更新单元,用于当第十八判断单元判断出通过校验,或者第二十判断单元判断出通过校验时,根据新密钥更新被修改的密钥,将与被修改的密钥对应的认证标识复位,向上位机返回成功信息。
当接收到创建文件指令时创建文件模块208进行工作,创建文件模块208包括:第二十一判断单元、第四获取单元、第二十二判断单元、第二十三判断单元、第一存储单元、第二十四判断单元、第二存储单元和第二创建单元;
第二十一判断单元,用于判断当前是否在根应用下,是则向上位机返回错误码,结束;
第四获取单元,用于当第二十一判断单元判断当前不在根应用下时,根据创建文件指令中访问权限的值,获取文件的读权限、写权限、读写权限和修改访问权限对应的密钥号;
第二十二判断单元,用于判断是否能在当前应用中找到与第四获取单元获取到的密钥号对应的密钥,若找不到则向上位机返回错误码,结束;
第二十三判断单元,用于当第二十二判断单元判断出能在当前应用中找到与密钥号对应的密钥时,判断创建文件指令类型;
第一存储单元,用于当第二十三判断单元判断出创建文件指令类型为创建标准文件或备份文件指令时,将文件类型和创建标准文件或备份文件指令中的文件大小对应存储在卡中,根据文件大小得到创建文件需要的空间;当第二十三判断单元判断出创建文件指令类型为创建值文件指令时,将文件类型对应存储在卡中,将创建文件需要的空间设为第十六预设值;当第二十三判断单元判断出创建文件指令类型为创建线性数据文件或循环数据文件指令时,将文件类型、创建线性数据文件或循环数据文件指令中的记录大小和记录数对应存储在卡中,根据记录大小和记录数得到创建文件需要的空间;组织文件头,将文件链表、文件ID、通信级别和访问权限对应存储在卡中;
第二十四判断单元,用于判断创建文件指令是否为创建值文件指令;
第二存储单元,用于当第二十四判断单元判断出创建文件指令为创建值文件指令时,在文件头中存储上下限,余额和改限允许标识;
第二创建单元,用于当第二十四判断单元判断出创建文件指令不为创建值文件指令时,或者第二存储单元在文件头中存储上下限,余额和改限允许标识之后,根据创建文件需要的空间在当前应用中创建文件结点,在文件链表中查找当前应用最后一个文件结点,在当前应用最后一个文件结点的指针域中存储创建的文件结点的地址,向上位机返回成功信息。
创建文件模块208还包括:第二十五判断单元和第二十六判断单元;
第二十五判断单元,用于当第二十一判断单元判断出当前在根应用下时,根据主控密钥的密钥属性判断是否需要认证主控密钥,若判断出不需要认证主控密钥则触发第四获取单元进行工作;
第二十六判断单元,用于当第二十五判断单元判断出需要认证主控密钥时,根据与主控密钥对应的认证标识判断主控密钥是否通过安全认证,是则触发第四获取单元进行工作,否则向上位机返回错误码,结束。
装置还包括第三选择模块,用于当获取到卡外传入的第四应用AID时,判断是否能在卡内查找到具有与第四应用AID相同的应用AID的应用,是则将查找到的应用设置为当前应用,触发写数据模块209进行工作,否则向上位机返回错误码。
写数据模块209包括:第二十七判断单元、第二十八判断单元、第二十九判断单元、第三十判断单元、第三十一判断单元、第三十二判断单元、第三十三判断单元和写入单元;
第二十七判断单元,用于判断当前是否在根应用下,是则向上位机返回错误码,结束;
第二十八判断单元,用于当第二十七判断单元判断当前不在根应用下时,根据写数据指令中的第二文件ID在当前应用中查找对应的文件,判断是否能够查找到与写数据指令中的第二文件ID对应的文件,是则将查找到的文件作为当前文件,否则向上位机返回错误码,结束;
第二十九判断单元,用于当第二十八判断单元判断出能够查找到与写数据指令中的第二文件ID查找对应的文件时,判断写权限和读写权限否为自由,是则将通信级别设置为明文通信,否则获取当前文件的通信级别;
第三十判断单元,用于当第二十九判断单元判断写权限和读写权限否为自由之后,根据数据长度判断是否接收到完整的写数据指令中的数据,若未接收到完整的写数据指令中的数据则继续接收写数据指令中的数据;
第三十一判断单元,用于当第三十判断单元判断出已接收到完整的写数据指令中的数据时,判断通信级别的类型,若为明文通信则将写数据指令中的初始数据作为数据内容;
第三十二判断单元,用于当第三十一判断单元判断出通信级别的类型为明文校验时,对写数据指令中的初始数据进行校验,判断校验是否成功,是则将初始数据中除校验码之外的数据作为数据内容,否则向上位机返回错误码,结束;
第三十三判断单元,用于当第三十一判断单元判断出通信级别的类型为密文校验时,对写数据指令中的初始数据进行校验,判断校验是否成功,是则对初始数据中除校验码之外的数据进行解密,得到数据内容,执行步骤Q09,否则向上位机返回错误码,结束;
写入单元,用于当第三十一判断单元判断出通信级别的类型为明文通信,或者第三十二判断单元判断出校验成功,或者第三十三判断单元判断出校验成功时,根据数据偏移,将数据内容写到当前文件的相应位置,返回成功信息。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (30)
1.一种对智能卡应用进行初始化的方法,其特征在于,所述方法包括:
步骤S1:当智能卡获取到卡外传入的第一应用AID时,根据所述第一应用AID选择根应用;
步骤S2:当所述智能卡获取到卡外传入的被认证的密钥的密钥号时,生成第一随机数,根据所述第一随机数对与被认证的密钥的密钥号对应的根应用的主控密钥进行安全认证;所述智能卡判断所述主控密钥是否通过安全认证,是则执行步骤S3,否则向上位机返回错误码,结束;
步骤S3:当所述智能卡获取到卡外传入的初始化字符时,进行初始化;
步骤S4:当所述智能卡获取到卡外传入的第二应用AID、密钥属性和密钥个数时,根据所述第二应用AID、所述密钥属性和所述密钥个数在所述根应用下创建应用和所述应用中的密钥;
步骤S5:当所述智能卡获取到卡外传入的第三应用AID时,判断是否能在卡内查找到具有与所述第三应用AID相同的应用AID的应用,是则将查找到的应用设置为当前应用,执行步骤S6,否则向上位机返回错误码,结束;
步骤S6:当所述智能卡获取到卡外传入的被认证的密钥的密钥号时,生成第三随机数,根据所述第三随机数对创建应用时写入的密钥属性中指定的修改过程中使用的权限密钥进行安全认证;所述智能卡判断所述权限密钥是否通过安全认证,是则执行步骤S7,否则向上位机返回错误码,结束;
步骤S7:当所述智能卡获取到卡外传入的被修改密钥的密钥号和密钥数据时,根据被修改密钥的密钥号和密钥数据,对当前应用中的密钥进行修改;
步骤S8:当所述智能卡获取到卡外传入的第一文件ID时,根据第一文件ID在当前应用中创建文件;
步骤S9:当所述智能卡获取到卡外传入的第二文件ID、数据偏移、数据长度和初始数据时,根据所述第二文件ID在当前应用中查找对应的文件,判断是否能够查找到与所述第二文件ID查找对应的文件,是则根据数据偏移、数据长度和初始数据,在查找到的文件中写入初始数据,否则向上位机返回错误码,结束。
2.根据权利要求1所述的方法,其特征在于,当所述智能卡接收到第一选择应用指令时,执行步骤S1;所述步骤S1具体包括:
步骤H01:所述智能卡清除过程密钥,初始化各个密钥的认证标识;
步骤H02:所述智能卡根据第一选择应用指令中的所述第一应用AID,将当前应用设置为根应用,向上位机返回成功信息。
3.根据权利要求1所述的方法,其特征在于,当所述智能卡接收到第一安全认证指令时,执行步骤S2;所述步骤S2具体包括:
步骤A01:所述智能卡根据第一安全认证指令中的密钥号获取被认证的密钥;
步骤A02:所述智能卡生成第一随机数,根据被认证的密钥对所述第一随机数进行加密,得到第一密文,向上位机返回所述第一密文;
步骤A03:所述智能卡判断是否接收到第二安全认证指令,是则执行步骤A04,否则向上位机返回错误码,结束;
步骤A04:所述智能卡根据被认证的密钥对所述第二安全认证指令中的第二密文进行解密,得到第二随机数和第一组合数据;
步骤A05:所述智能卡判断所述第一组合数据是否与所述第一随机数匹配,是则执行步骤A06,否则向上位机返回错误码,结束;
步骤A06:所述智能卡确定安全认证成功,对所述第二随机数进行加密得到第三密文,向上位机返回所述第三密文。
4.根据权利要求3所述的方法,其特征在于,所述步骤A06还包括:所述智能卡对所述第一随机数和所述第二随机数进行拼接组合,得到过程密钥。
5.根据权利要求1所述的方法,其特征在于,当所述智能卡接收到初始化指令时,执行步骤S3;所述步骤S3具体包括:
步骤I01:所述智能卡判断当前是否在根应用下,是则执行步骤I02,否则向上位机返回错误码,结束;
步骤I02:所述智能卡对除所述主控密钥和所述主控密钥的密钥属性之外的数据进行清除,向上位机返回成功信息。
6.根据权利要求1所述的方法,其特征在于,当所述智能卡接收到创建应用指令时,执行步骤S4;所述步骤S4具体包括:
步骤E01:所述智能卡判断当前是否在所述根应用下,是则执行步骤E02,否则向上位机返回错误码,结束;
步骤E02:所述智能卡判断卡中是否已存在具有与创建应用指令中的应用AID相同AID的应用,是则向上位机返回错误码,结束,否则执行步骤E03;
步骤E03:所述智能卡根据应用个数判断根应用下已安装的应用个数是否达到第十预设值,是则向上位机返回错误码,结束,否则执行步骤E04;
步骤E04:所述智能卡将创建应用指令中的第二应用AID、密钥属性和密钥个数关联到根应用,更新根应用下已安装的应用个数,根据预设值创建应用中的密钥,向上位机返回成功信息。
7.根据权利要求6所述的方法,其特征在于,所述步骤E01之后还可以包括:
步骤E01-1:所述智能卡根据主控密钥的密钥属性判断是否需要认证主控密钥,是则执行步骤E01-2,否则执行步骤E02;
步骤E01-2:所述智能卡根据与主控密钥对应的认证标识判断主控密钥是否通过安全认证,是则执行步骤E02,否则向上位机返回错误码,结束。
8.根据权利要求1所述的方法,其特征在于,当所述智能卡接收到第二选择应用指令时,执行步骤S5;当所述智能卡判断出能在卡内查找到具有与所述第三应用AID相同的应用AID的应用时,还包括:
步骤H04:所述智能卡清除过程密钥,初始化各个密钥的认证标识。
9.根据权利要求1所述的方法,其特征在于,当所述智能卡接收到第三安全认证指令时,执行步骤S6;所述步骤S6具体包括:
步骤A01’:所述智能卡根据所述第三安全认证指令中的密钥号获取被认证的密钥;
步骤A02’:所述智能卡生成第三随机数,根据被认证的密钥对所述第三随机数进行加密,得到第四密文,向上位机返回所述第四密文;
步骤A03’:所述智能卡判断是否接收到第四安全认证指令,是则执行步骤A04’,否则向上位机返回错误码,结束;
步骤A04’:所述智能卡根据被认证的密钥对所述第四安全认证指令中的第五密文进行解密,得到第四随机数和第二组合数据;
步骤A05’:智能卡判断所述第二组合数据是否与所述第三随机数匹配,是则执行步骤A06’,否则向上位机返回错误码,结束;
步骤A06’:所述智能卡确定安全认证成功,对所述第四随机数进行加密得到第六密文,向上位机返回所述第六密文。
10.根据权利要求9所述的方法,其特征在于,所述步骤A06’还包括:所述智能卡对所述第三随机数和所述第四随机数进行拼接组合,得到过程密钥。
11.根据权利要求1所述的方法,其特征在于,当所述智能卡接收到修改密钥指令时,执行步骤S7;所述步骤S7具体包括:
步骤D01:所述智能卡从所述修改密钥指令中获取被修改的密钥的密钥号,初始化修改标识;
步骤D02:所述智能卡根据获取到的密钥号判断被修改的密钥是否为主控密钥,是则执行步骤D04,否则执行步骤D03;
步骤D03:所述智能卡判断被修改的密钥的密钥号与修改过程中使用的权限密钥的密钥号是否相同,是则将修改标识置位,执行步骤D06,否则执行步骤D06;
步骤D04:所述智能卡根据主控密钥的密钥属性判断是否允许修改主控密钥,是则执行步骤D05,否则向上位机返回错误码,结束;
步骤D05:所述智能卡根据与主控密钥对应的认证标识判断主控密钥是否通过安全认证,是则将修改标识置位,执行步骤D06,否则向上位机返回错误码,结束;
步骤D06:所述智能卡判断修改标识是否置位,是则执行步骤D07,否则执行步骤D09;
步骤D07:所述智能卡根据过程密钥对修改密钥指令的密钥数据进行解密,得到新密钥和第一校验码;
步骤D08:所述智能卡对所述新密钥进行校验,根据所述第一校验码判断是否通过校验,是则执行步骤D12,否则向上位机返回错误码,结束;
步骤D09:所述智能卡根据过程密钥对修改密钥指令的密钥数据进行解密,得到异或数据、第二校验码和第三校验码;
步骤D10:所述智能卡对所述异或数据进行校验,根据所述第二校验码判断是否通过校验,是则执行步骤D11,否则向上位机返回错误码,结束;
步骤D11:所述智能卡对被修改的密钥和异或数据进行异或运算,得到新密钥,对所述新密钥进行校验,根据所述第三校验码判断是否通过校验,是则执行步骤D12,否则向上位机返回错误码,结束;
步骤D12:所述智能卡根据所述新密钥更新被修改的密钥,将与被修改的密钥对应的认证标识复位,向上位机返回成功信息。
12.根据权利要求1所述的方法,其特征在于,当所述智能卡接收到创建文件指令时,执行步骤S8;所述步骤S8具体包括:
步骤M01:所述智能卡判断当前是否在根应用下,是则向上位机返回错误码,结束,否则执行步骤M02;
步骤M02:所述智能卡根据所述创建文件指令中访问权限的值,获取文件的读权限、写权限、读写权限和修改访问权限对应的密钥号,判断是否能在当前应用中找到与密钥号对应的密钥,是则执行步骤M03,否则向上位机返回错误码,结束;
步骤M03:所述智能卡判断创建文件指令类型,若为创建标准文件或备份文件指令,则执行步骤M04;若为创建值文件指令,则执行步骤M05;若为创建线性数据文件或循环数据文件指令,则执行步骤M06;
步骤M04:所述智能卡将文件类型和创建标准文件或备份文件指令中的文件大小对应存储在卡中,根据文件大小得到创建文件需要的空间,执行步骤M07;
步骤M05:所述智能卡将文件类型对应存储在卡中,将创建文件需要的空间设为第十六预设值,执行步骤M07;
步骤M06:所述智能卡将文件类型、创建线性数据文件或循环数据文件指令中的记录大小和记录数对应存储在卡中,根据记录大小和记录数得到创建文件需要的空间,执行步骤M07;
步骤M07:所述智能卡组织文件头,将文件链表、第一文件ID、通信级别和访问权限对应存储在卡中;
步骤M08:所述智能卡判断创建文件指令是否为创建值文件指令,是则执行步骤M09,否则执行步骤M10;
步骤M09:所述智能卡在文件头中存储上下限,余额和改限允许标识,执行步骤M10;
步骤M10:所述智能卡根据创建文件需要的空间在当前应用中创建文件结点,在文件链表中查找当前应用最后一个文件结点,在当前应用最后一个文件结点的指针域中存储创建的文件结点的地址,向上位机返回成功信息。
13.根据权利要求12所述的方法,其特征在于,所述步骤M01之后还可以包括:
步骤M01-1:所述智能卡根据主控密钥的密钥属性判断是否需要认证主控密钥,是则执行步骤M01-2,否则执行步骤M02;
步骤M01-2:所述智能卡根据与主控密钥对应的认证标识判断主控密钥是否通过安全认证,是则执行步骤M02,否则向上位机返回错误码,结束。
14.根据权利要求1所述的方法,其特征在于,所述步骤S9之前还包括:当所述智能卡获取到卡外传入的第四应用AID时,所述智能卡判断是否能在卡内查找到具有与所述第四应用AID相同的应用AID的应用,是则将查找到的应用设置为当前应用,执行步骤S9,否则向上位机返回错误码,结束。
15.根据权利要求1所述的方法,其特征在于,当所述智能卡接收到写数据指令时,执行步骤S9;所述步骤S9具体包括:
步骤Q01:所述智能卡判断当前是否在根应用下,是则向上位机返回错误码,结束,否则执行步骤Q02;
步骤Q02:所述智能卡根据所述写数据指令中的第二文件ID在当前应用中查找对应的文件,判断是否能够查找到与所述写数据指令中的第二文件ID对应的文件,是则将查找到的文件作为当前文件,执行步骤Q03,否则向上位机返回错误码,结束;
步骤Q03:所述智能卡判断写权限和读写权限否为自由,是则将通信级别设置为明文通信,执行步骤Q04,否则获取当前文件的通信级别,执行步骤Q04;
步骤Q04:所述智能卡根据数据长度判断是否接收到完整的写数据指令中的数据,是则执行步骤Q06,否则执行步骤Q05;
步骤Q05:所述智能卡继续接收写数据指令中的数据,返回步骤Q04;
步骤Q06:所述智能卡判断通信级别的类型,若为明文通信则将写数据指令中的初始数据作为数据内容,执行步骤Q09,若为明文校验则执行步骤Q07,若为密文校验则执行步骤Q08;
步骤Q07:所述智能卡对写数据指令中的初始数据进行校验,判断校验是否成功,是则将初始数据中除校验码之外的数据作为数据内容,执行步骤Q09,否则向上位机返回错误码,结束;
步骤Q08:所述智能卡对写数据指令中的初始数据进行校验,判断校验是否成功,是则对初始数据中除校验码之外的数据进行解密,得到数据内容,执行步骤Q09,否则向上位机返回错误码,结束;
步骤Q09:所述智能卡根据数据偏移,将数据内容写到当前文件的相应位置,返回成功信息。
16.一种对智能卡应用进行初始化的装置,其特征在于,所述装置包括:第一选择模块、第一认证模块、初始化模块、创建应用模块、第二选择模块、第二认证模块、修改密钥模块、创建文件模块和写数据模块;
所述第一选择模块,用于当获取到卡外传入的第一应用AID时,根据第一应用AID选择根应用;
所述第一认证模块,用于当获取到卡外传入的被认证的密钥的密钥号时,生成第一随机数,根据所述第一随机数对与被认证的密钥的密钥号对应的根应用的主控密钥进行安全认证;判断所述主控密钥是否通过安全认证,如果否,则向上位机返回错误码;
所述初始化模块,用于当所述第一认证模块安全认证成功并且获取到卡外传入的初始化字符时,进行初始化;
所述创建应用模块,用于当获取到卡外传入的第二应用AID、密钥属性和密钥个数时,根据所述第二应用AID、所述密钥属性和所述密钥个数在所述根应用下创建应用和所述应用中的密钥;
所述第二选择模块,用于当获取到卡外传入的第三应用AID时,判断是否能在卡内查找到具有与所述第三应用AID相同的应用AID的应用,是则将查找到的应用设置为当前应用,否则向上位机返回错误码;
所述第二认证模块,用于当获取到卡外传入的被认证的密钥的密钥号时,生成第三随机数,根据所述第三随机数对创建应用时写入的密钥属性中指定的修改过程中使用的权限密钥进行安全认证;判断所述权限密钥是否通过安全认证,如果否,则向上位机返回错误码;
所述修改密钥模块,用于当所述第二认证模块安全认证成功并且获取到卡外传入的被修改密钥的密钥号和密钥数据时,根据被修改密钥的密钥号和密钥数据,对当前应用中的密钥进行修改;
所述创建文件模块,用于当获取到卡外传入的第一文件ID时,根据第一文件ID在当前应用中创建文件;
所述写数据模块,用于当获取到卡外传入的第二文件ID、数据偏移、数据长度和初始数据时,根据所述第二文件ID在当前应用中查找对应的文件,判断是否能够查找到与所述第二文件ID查找对应的文件,是则根据数据偏移、数据长度和初始数据,在查找到的文件中写入初始数据,否则向上位机返回错误码。
17.根据权利要求16所述的装置,其特征在于,当接收到第一选择应用指令时所述第一选择模块进行工作,所述第一选择模块包括:第一清除单元和第一设置单元;
所述第一清除单元,用于清除过程密钥,初始化各个密钥的认证标识;
所述第一设置单元,用于根据第一选择应用指令中的所述第一应用AID,将当前应用设置为根应用,向上位机返回成功信息。
18.根据权利要求16所述的装置,其特征在于,当接收到第一安全认证指令时所述第一认证模块进行工作,所述第一认证模块包括:第一获取单元、第一生成单元、第一判断单元、第二生成单元、第二判断单元和第三生成单元;
所述第一获取单元,用于根据第一安全认证指令中的密钥号获取被认证的密钥;
所述第一生成单元,用于生成第一随机数,根据所述第一获取单元获取到的被认证的密钥对所述第一随机数进行加密,得到第一密文,向上位机返回所述第一密文;
所述第一判断单元,用于判断是否接收到第二安全认证指令,若未接收到第二安全认证指令则向上位机返回错误码,结束;
所述第二生成单元,用于当所述第一判断单元判断出接收到第二安全认证指令时,根据所述第一获取单元获取到的被认证的密钥对所述第二安全认证指令中的第二密文进行解密,得到第二随机数和第一组合数据;
所述第二判断单元,用于判断所述第二生成单元生成的所述第一组合数据是否与所述第一随机数匹配,若判断出所述第一组合数据与所述第一随机数不匹配,则向上位机返回错误码,结束;
所述第三生成单元,用于当所述第二判断单元判断出所述第一组合数据与所述第一随机数匹配时,确定安全认证成功,对所述第二随机数进行加密得到第三密文,向上位机返回所述第三密文。
19.根据权利要求18所述的装置,其特征在于,所述第三生成单元还用于对所述第一随机数和所述第二随机数进行拼接组合,得到过程密钥。
20.根据权利要求16所述的装置,其特征在于,当接收到初始化指令时所述初始化模块进行工作,所述初始化模块包括第三判断单元和第二清除单元;
所述第三判断单元,用于判断当前是否在根应用下,若当前不在根应用下则向上位机返回错误码,结束;
所述第二清除单元,用于当所述第三判断单元判断出当前在根应用下时,对除所述主控密钥和主控密钥的密钥属性之外的数据进行清除,向上位机返回成功信息。
21.根据权利要求16所述的装置,其特征在于,当接收到创建应用指令时,所述创建应用模块进行工作,所述创建应用模块包括:第四判断单元、第五判断单元、第六判断单元和第一创建单元;
所述第四判断单元,用于判断当前是否在根应用下,若当前不在根应用下则向上位机返回错误码,结束;
所述第五判断单元,用于当所述第四判断单元判断出当前在根应用下时,判断卡中是否已存在具有与创建应用指令中的应用AID相同AID的应用,是则向上位机返回错误码,结束;
所述第六判断单元,用于当所述第五判断单元判断出卡中不存在具有与创建应用指令中的应用AID相同AID的应用时,根据应用个数判断根应用下已安装的应用个数是否达到第十预设值,是则向上位机返回错误码,结束;
所述第一创建单元,用于当所述第六判断单元判断根应用下已安装的应用个数未达到第十预设值时,将创建应用指令中的应用AID、密钥属性和密钥个数关联到根应用,更新根应用下已安装的应用个数,根据预设值创建应用中的密钥,向上位机返回成功信息。
22.根据权利要求21所述的装置,其特征在于,所述创建应用模块还包括:第七判断单元和第八判断单元;
所述第七判断单元,用于当所述第四判断单元判断出当前在根应用下时,根据主控密钥的密钥属性判断是否需要认证主控密钥,若判断出不需要认证主控密钥则触发所述第五判断单元进行工作;
所述第八判断单元,用于当所述第七判断单元判断出需要认证主控密钥时,根据与主控密钥对应的认证标识判断主控密钥是否通过安全认证,是则触发所述第五判断单元进行工作,否则向上位机返回错误码,结束。
23.根据权利要求16所述的装置,其特征在于,当接收到第二选择应用指令时所述第二选择模块进行工作,所述第二选择模块还用于当判断出能在卡内查找到具有与所述第三应用AID相同的应用AID的应用时,清除过程密钥,初始化各个密钥的认证标识。
24.根据权利要求16所述的装置,其特征在于,所述当接收到第三安全认证指令时,所述第二认证模块进行工作,所述第二认证模块包括:第二获取单元、第四生成单元、第九判断单元、第五生成单元、第十判断单元和第六生成单元;
所述第二获取单元,用于根据所述第三安全认证指令中的密钥号获取被认证的密钥;
所述第四生成单元,用于生成第三随机数,根据所述第二获取单元获取到的被认证的密钥对所述第三随机数进行加密,得到第四密文,向上位机返回所述第四密文;
所述第九判断单元,用于判断是否接收到第四安全认证指令,若未接收到第四安全认证指令则向上位机返回错误码,结束;
所述第五生成单元,用于当所述第九判断单元判断出接收到第四安全认证指令时,根据所述第二获取单元获取到的被认证的密钥对所述第四安全认证指令中的第五密文进行解密,得到第四随机数和第二组合数据;
所述第十判断单元,用于判断所述第五生成单元生成的所述第二组合数据是否与所述第三随机数匹配,若判断出所述第二组合数据与所述第三随机数不匹配,则向上位机返回错误码,结束;
所述第六生成单元,用于当所述第十判断单元判断出所述第二组合数据与所述第三随机数匹配时,确定安全认证成功,对所述第四随机数进行加密得到第六密文,向上位机返回所述第六密文。
25.根据权利要求24所述的装置,其特征在于,所述第六生成单元还用于对所述第三随机数和所述第四随机数进行拼接组合,得到过程密钥。
26.根据权利要求16所述的装置,其特征在于,当接收到修改密钥指令时所述修改密钥模块进行工作,所述修改密钥模块包括:第三获取单元、第十二判断单元、第十四判断单元、第十五判断单元、第十六判断单元、第十七判断单元、第一解密单元、第十八判断单元、第二解密单元、第十九判断单元、第二十判断单元和更新单元;
所述第三获取单元,用于从所述修改密钥指令中获取被修改的密钥的密钥号,初始化修改标识;
所述第十二判断单元,用于根据获取到的密钥号判断被修改的密钥是否为主控密钥;
所述第十四判断单元,用于当所述第十三判断单元判断出修改过程中使用的权限密钥已通过安全认证时,判断被修改的密钥的密钥号与修改过程中使用的权限密钥的密钥号是否相同,是则将修改标识置位;
所述第十五判断单元,用于当所述第十二判断单元判断出被修改的密钥为主控密钥时,根据主控密钥的密钥属性判断是否允许修改主控密钥,若不允许修改主控密钥则向上位机返回错误码,结束;
所述第十六判断单元,用于当所述第十五判断单元判断出允许修改主控密钥时,根据与主控密钥对应的认证标识判断主控密钥是否通过安全认证,是则将修改标识置位,若主控密钥未通过安全认证则向上位机返回错误码,结束;
所述第十七判断单元,当所述第十四判断单元判断被修改的密钥的密钥号与修改过程中使用的权限密钥的密钥号是否相同之后,或者当所述第十六判断单元判断出主控密钥已通过安全认证时,判断修改标识是否置位;
所述第一解密单元,用于当所述第十七判断单元判断出修改标识已置位时,根据过程密钥对修改密钥指令的密钥数据进行解密,得到新密钥和第一校验码;
所述第十八判断单元,用于对所述第一解密单元得到的新密钥进行校验,根据第一校验码判断是否通过校验,若未通过校验则向上位机返回错误码,结束;
所述第二解密单元,用于当所述第十七判断单元判断出修改标识未置位时,根据过程密钥对修改密钥指令的密钥数据进行解密,得到异或数据、第二校验码和第三校验码;
所述第十九判断单元,用于对所述第二解密单元得到的异或数据进行校验,根据第二校验码判断是否通过校验,若未通过校验则向上位机返回错误码,结束;
所述第二十判断单元,用于当所述第十九判断单元判断出通过校验时,对被修改的密钥和异或数据进行异或运算,得到新密钥,对所述新密钥进行校验,根据所述第三校验码判断是否通过校验,是则执行步骤D13,若未通过校验则向上位机返回错误码,结束;
所述更新单元,用于当所述第十八判断单元判断出通过校验,或者所述第二十判断单元判断出通过校验时,根据所述新密钥更新被修改的密钥,将与被修改的密钥对应的认证标识复位,向上位机返回成功信息。
27.根据权利要求16所述的装置,其特征在于,当接收到创建文件指令时所述创建文件模块进行工作,所述创建文件模块包括:第二十一判断单元、第四获取单元、第二十二判断单元、第二十三判断单元、第一存储单元、第二十四判断单元、第二存储单元和第二创建单元;
所述第二十一判断单元,用于判断当前是否在根应用下,是则向上位机返回错误码,结束;
所述第四获取单元,用于当所述第二十一判断单元判断当前不在根应用下时,根据所述创建文件指令中访问权限的值,获取文件的读权限、写权限、读写权限和修改访问权限对应的密钥号;
所述第二十二判断单元,用于判断是否能在当前应用中找到与所述第四获取单元获取到的密钥号对应的密钥,若找不到则向上位机返回错误码,结束;
所述第二十三判断单元,用于当所述第二十二判断单元判断出能在当前应用中找到与密钥号对应的密钥时,判断创建文件指令类型;
所述第一存储单元,用于当所述第二十三判断单元判断出创建文件指令类型为创建标准文件或备份文件指令时,将文件类型和创建标准文件或备份文件指令中的文件大小对应存储在卡中,根据文件大小得到创建文件需要的空间;当所述第二十三判断单元判断出创建文件指令类型为创建值文件指令时,将文件类型对应存储在卡中,将创建文件需要的空间设为第十六预设值;当所述第二十三判断单元判断出创建文件指令类型为创建线性数据文件或循环数据文件指令时,将文件类型、创建线性数据文件或循环数据文件指令中的记录大小和记录数对应存储在卡中,根据记录大小和记录数得到创建文件需要的空间;组织文件头,将文件链表、文件ID、通信级别和访问权限对应存储在卡中;
所述第二十四判断单元,用于判断创建文件指令是否为创建值文件指令;
所述第二存储单元,用于当所述第二十四判断单元判断出创建文件指令为创建值文件指令时,在文件头中存储上下限,余额和改限允许标识;
所述第二创建单元,用于当所述第二十四判断单元判断出创建文件指令不为创建值文件指令时,或者所述第二存储单元在文件头中存储上下限,余额和改限允许标识之后,根据创建文件需要的空间在当前应用中创建文件结点,在文件链表中查找当前应用最后一个文件结点,在当前应用最后一个文件结点的指针域中存储创建的文件结点的地址,向上位机返回成功信息。
28.根据权利要求27所述的装置,其特征在于,所述创建文件模块还包括:第二十五判断单元和第二十六判断单元;
所述第二十五判断单元,用于当所述第二十一判断单元判断出当前在根应用下时,根据主控密钥的密钥属性判断是否需要认证主控密钥,若判断出不需要认证主控密钥则触发所述第四获取单元进行工作;
所述第二十六判断单元,用于当所述第二十五判断单元判断出需要认证主控密钥时,根据与主控密钥对应的认证标识判断主控密钥是否通过安全认证,是则触发所述第四获取单元进行工作,否则向上位机返回错误码,结束。
29.根据权利要求16所述的装置,其特征在于,所述装置还包括第三选择模块,用于当获取到卡外传入的第四应用AID时,判断是否能在卡内查找到具有与所述第四应用AID相同的应用AID的应用,是则将查找到的应用设置为当前应用,触发所述写数据模块进行工作,否则向上位机返回错误码。
30.根据权利要求16所述的装置,其特征在于,所述写数据模块包括:第二十七判断单元、第二十八判断单元、第二十九判断单元、第三十判断单元、第三十一判断单元、第三十二判断单元、第三十三判断单元和写入单元;
所述第二十七判断单元,用于判断当前是否在根应用下,是则向上位机返回错误码,结束;
所述第二十八判断单元,用于当所述第二十七判断单元判断当前不在根应用下时,根据所述写数据指令中的第二文件ID在当前应用中查找对应的文件,判断是否能够查找到与写数据指令中的第二文件ID对应的文件,是则将查找到的文件作为当前文件,否则向上位机返回错误码,结束;
所述第二十九判断单元,用于当所述第二十八判断单元判断出能够查找到与所述写数据指令中的第二文件ID查找对应的文件时,判断写权限和读写权限否为自由,是则将通信级别设置为明文通信,否则获取当前文件的通信级别;
所述第三十判断单元,用于当所述第二十九判断单元判断写权限和读写权限否为自由之后,根据数据长度判断是否接收到完整的写数据指令中的数据,若未接收到完整的写数据指令中的数据则继续接收写数据指令中的数据;
所述第三十一判断单元,用于当所述第三十判断单元判断出已接收到完整的写数据指令中的数据时,判断通信级别的类型,若为明文通信则将写数据指令中的初始数据作为数据内容;
所述第三十二判断单元,用于当所述第三十一判断单元判断出通信级别的类型为明文校验时,对写数据指令中的初始数据进行校验,判断校验是否成功,是则将初始数据中除校验码之外的数据作为数据内容,否则向上位机返回错误码,结束;
所述第三十三判断单元,用于当所述第三十一判断单元判断出通信级别的类型为密文校验时,对写数据指令中的初始数据进行校验,判断校验是否成功,是则对初始数据中除校验码之外的数据进行解密,得到数据内容,否则向上位机返回错误码,结束;
所述写入单元,用于当所述第三十一判断单元判断出通信级别的类型为明文通信,或者所述第三十二判断单元判断出校验成功,或者所述第三十三判断单元判断出校验成功时,根据数据偏移,将数据内容写到当前文件的相应位置,返回成功信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610067035.6A CN105721143B (zh) | 2016-01-30 | 2016-01-30 | 一种对智能卡应用进行初始化的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610067035.6A CN105721143B (zh) | 2016-01-30 | 2016-01-30 | 一种对智能卡应用进行初始化的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105721143A true CN105721143A (zh) | 2016-06-29 |
CN105721143B CN105721143B (zh) | 2019-05-10 |
Family
ID=56155415
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610067035.6A Active CN105721143B (zh) | 2016-01-30 | 2016-01-30 | 一种对智能卡应用进行初始化的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105721143B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113127426A (zh) * | 2021-04-28 | 2021-07-16 | 武汉天喻信息产业股份有限公司 | 一种智能卡的文件管理方法及系统 |
CN113239343A (zh) * | 2021-07-13 | 2021-08-10 | 深圳市深圳通有限公司 | 内部认证的加密方法、智能卡、内部认证方法以及读卡器 |
CN113504894A (zh) * | 2021-09-09 | 2021-10-15 | 华控清交信息科技(北京)有限公司 | 一种随机数产生器、生成伪随机数的方法和一种芯片 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001095274A8 (fr) * | 2000-06-08 | 2002-02-14 | Bull Cp8 | Procede de securisation de la phase de pre-initialisation d'un systeme embarque a puce electronique, notamment d'une carte a puce, et systeme embarque mettant en oeuvre le procede |
CN101170765A (zh) * | 2007-11-23 | 2008-04-30 | 东信和平智能卡股份有限公司 | 电信智能卡生产及鉴权方法 |
CN101459512A (zh) * | 2007-12-11 | 2009-06-17 | 结行信息技术(上海)有限公司 | 通过不受信任通讯渠道对智能卡安装/初始化应用的方法 |
CN101894235A (zh) * | 2010-07-27 | 2010-11-24 | 公安部第三研究所 | 一种智能卡安全会话系统 |
CN102013975A (zh) * | 2010-06-29 | 2011-04-13 | 北京飞天诚信科技有限公司 | 一种密钥管理方法及系统 |
CN102014015A (zh) * | 2010-06-29 | 2011-04-13 | 北京飞天诚信科技有限公司 | 智能密钥设备的自检方法 |
CN102831468A (zh) * | 2012-08-06 | 2012-12-19 | 中国移动通信集团江苏有限公司 | 一种移动终端的智能卡芯片及其初始化和使用方法 |
-
2016
- 2016-01-30 CN CN201610067035.6A patent/CN105721143B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001095274A8 (fr) * | 2000-06-08 | 2002-02-14 | Bull Cp8 | Procede de securisation de la phase de pre-initialisation d'un systeme embarque a puce electronique, notamment d'une carte a puce, et systeme embarque mettant en oeuvre le procede |
CN101170765A (zh) * | 2007-11-23 | 2008-04-30 | 东信和平智能卡股份有限公司 | 电信智能卡生产及鉴权方法 |
CN101459512A (zh) * | 2007-12-11 | 2009-06-17 | 结行信息技术(上海)有限公司 | 通过不受信任通讯渠道对智能卡安装/初始化应用的方法 |
CN102013975A (zh) * | 2010-06-29 | 2011-04-13 | 北京飞天诚信科技有限公司 | 一种密钥管理方法及系统 |
CN102014015A (zh) * | 2010-06-29 | 2011-04-13 | 北京飞天诚信科技有限公司 | 智能密钥设备的自检方法 |
CN101894235A (zh) * | 2010-07-27 | 2010-11-24 | 公安部第三研究所 | 一种智能卡安全会话系统 |
CN102831468A (zh) * | 2012-08-06 | 2012-12-19 | 中国移动通信集团江苏有限公司 | 一种移动终端的智能卡芯片及其初始化和使用方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113127426A (zh) * | 2021-04-28 | 2021-07-16 | 武汉天喻信息产业股份有限公司 | 一种智能卡的文件管理方法及系统 |
CN113239343A (zh) * | 2021-07-13 | 2021-08-10 | 深圳市深圳通有限公司 | 内部认证的加密方法、智能卡、内部认证方法以及读卡器 |
CN113239343B (zh) * | 2021-07-13 | 2021-12-17 | 深圳市深圳通有限公司 | 内部认证的加密方法、智能卡、内部认证方法以及读卡器 |
CN113504894A (zh) * | 2021-09-09 | 2021-10-15 | 华控清交信息科技(北京)有限公司 | 一种随机数产生器、生成伪随机数的方法和一种芯片 |
CN113504894B (zh) * | 2021-09-09 | 2021-12-17 | 华控清交信息科技(北京)有限公司 | 一种随机数产生器、生成伪随机数的方法和一种芯片 |
Also Published As
Publication number | Publication date |
---|---|
CN105721143B (zh) | 2019-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0440158B1 (en) | Mutual authentication system | |
CN103106372B (zh) | 用于Android系统的轻量级隐私数据加密方法及系统 | |
CN101908120B (zh) | 在单个智能卡上实现多合一卡功能的方法 | |
US20060126422A1 (en) | Memory device and electronic device using the same | |
CN101042738B (zh) | 一种实现智能卡多应用的方法及数据处理装置 | |
CN101042737B (zh) | 一种智能卡及向智能卡中创建应用、插入对象的方法 | |
CN102915263A (zh) | 一种数据备份方法、系统和设备 | |
CN109325355A (zh) | 基于虚拟磁盘的移动终端数据安全存储方法 | |
CN101218609B (zh) | 带有安全的数据处理的便携式数据载体 | |
EP2835997B1 (en) | Cell phone data encryption method and decryption method | |
CN105721143A (zh) | 一种对智能卡应用进行初始化的方法和装置 | |
CN105630965A (zh) | 一种移动终端闪存介质上用户空间安全删除文件系统及方法 | |
CN109977039A (zh) | 硬盘加密密钥存储方法、装置、设备及可读存储介质 | |
CN103605939B (zh) | 金融ic卡的个人化数据写入方法、装置及系统 | |
KR100346411B1 (ko) | 커널모드에서 파일을 자동으로 암호화, 복호화하는 방법,이를 이용한 파일 포인터 이동방법, 및 이들을프로그램화하여 수록한 컴퓨터로 읽을 수 있는 기록매체 | |
CN104732391A (zh) | 使用虚拟卡的支付终端、支付后台和支付方法 | |
CN108763401A (zh) | 一种文件的读写方法及设备 | |
CN111143879A (zh) | 一种Android平台SD卡文件保护方法、终端设备及存储介质 | |
CN103905192B (zh) | 一种加密鉴权方法、装置以及系统 | |
CN111386513B (zh) | 数据处理的方法、装置和系统芯片 | |
CN104978502A (zh) | 一种智能终端本地文件的加密系统及方法 | |
CN105871840A (zh) | 一种证书管理方法及系统 | |
CN107085900B (zh) | 数据处理方法、装置、系统及pos终端 | |
CN100486157C (zh) | 一种分布式数据加密方法 | |
CN114153396A (zh) | 一种数据处理方法、装置、数据存储设备及终端设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |