CN102916805B - 一种安全下载应用的方法 - Google Patents

一种安全下载应用的方法 Download PDF

Info

Publication number
CN102916805B
CN102916805B CN201210429244.2A CN201210429244A CN102916805B CN 102916805 B CN102916805 B CN 102916805B CN 201210429244 A CN201210429244 A CN 201210429244A CN 102916805 B CN102916805 B CN 102916805B
Authority
CN
China
Prior art keywords
instruction
result
card
session key
calculation
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.)
Active
Application number
CN201210429244.2A
Other languages
English (en)
Other versions
CN102916805A (zh
Inventor
陆舟
于华章
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Feitian Technologies Co Ltd
Original Assignee
Feitian Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Feitian Technologies Co Ltd filed Critical Feitian Technologies Co Ltd
Priority to CN201210429244.2A priority Critical patent/CN102916805B/zh
Publication of CN102916805A publication Critical patent/CN102916805A/zh
Priority to US14/390,045 priority patent/US9182967B2/en
Priority to PCT/CN2013/085603 priority patent/WO2014067406A1/zh
Application granted granted Critical
Publication of CN102916805B publication Critical patent/CN102916805B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0869Network architectures or network communication protocols for network security for authentication of entities for achieving mutual authentication
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/30Security of mobile devices; Security of mobile applications
    • H04W12/35Protecting application or service provisioning, e.g. securing SIM application provisioning
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic 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/0618Block ciphers, i.e. encrypting groups of characters of a plain text message using fixed encryption transformation
    • H04L9/0637Modes of operation, e.g. cipher block chaining [CBC], electronic codebook [ECB] or Galois/counter mode [GCM]

Abstract

本发明公开一种安全下载应用的方法,涉及智能卡领域。该方法包括:卡片和卡连接器双方认证成功后,采取全密文通讯手段,并通过激活卡片操作控制应用安装次数,实现安全下载应用。本发明实现了卡片和卡连接器的全密文通讯,发卡次数可控;通过这种方法就可以保证在发卡的时候应用的独立性和安全性,同时限制发卡的次数,避免中介和客户随意下载应用,安全性较高。

Description

一种安全下载应用的方法
技术领域
本发明涉及智能卡领域,特别涉及一种安全下载应用的方法。
背景技术
在下载应用过程中,发明人发现现有技术存在以下问题:针对厂商将应用安装到卡片的情况,对于卡片的应用管理的问题全部由卡商负责;针对卡商将自己卡片的应用包发给客户或外包给外协厂生产的情况,卡商自己生产制定的私密数据将会完全暴露给外界,造成安全问题;针对卡片的应用安装次数不可控,对于卡商而言变成了一次提供,反复使用,安全存在隐患。
发明内容
为解决现有技术存在的缺陷,本发明提供了一种安全下载应用的方法。
一种安全下载应用的方法,包括:
步骤S1:卡连接器执行请求安装应用指令,判断是否成功读取到第一指令;是,执行步骤S2;否,输出错误信息,退出安装;
步骤S2:所述卡连接器向卡片发送第一指令;
步骤S3:所述卡片接收第一指令并从中读取第一指令的第一计算结果,然后与对第一指令进行计算得到的第一指令的第二计算结果比较;相同,向所述卡连接器发送第一成功响应状态码,然后,执行步骤S4;不相同,向所述卡连接器发送第一失败响应状态码,然后,退出安装;
步骤S4:所述卡连接器判断是否成功读取到下一条第一指令;是,返回步骤S2;否,执行步骤S5;
步骤S5:所述卡连接器判断是否成功读取到第二指令;是,执行步骤S6;否,输出错误信息,退出安装;
步骤S6:所述卡连接器向所述卡片发送第二指令;
步骤S7:所述卡片接收第二指令并从中读取第二指令的第一计算结果,然后与对第二指令进行计算得到的第二指令的第二计算结果比较;相同,向所述卡连接器发送第二成功响应状态码,然后,执行步骤S8;不相同,向所述卡连接器发送第二失败响应状态码,然后,退出安装;
步骤S8:所述卡连接器判断是否成功读取到下一条第二指令;是,返回步骤S6;否,执行步骤S9;
步骤S9:所述卡连接器判断是否成功读取到第三指令;是,执行步骤S10;否,输出错误信息,退出安装;
步骤S10:所述卡连接器向所述卡片发送第三指令;
步骤S11:所述卡片接收第三指令并从中读取第三指令的第一计算结果,然后与对第三指令进行计算得到的第三指令的第二计算结果比较;相同,向所述卡连接器发送第三成功响应状态码,然后,执行步骤S12;不相同,向所述卡连接器发送第三失败响应状态码,然后,退出安装;
步骤S12:所述卡连接器判断是否成功读取到下一条第三指令;是,返回步骤S10;否,执行步骤S13;
步骤S13:所述卡连接器判断是否成功执行激活指令;是,执行步骤S14;否,退出安装;
步骤S14:所述卡连接器判断是否成功读取到第四指令;是,执行步骤S15;否,退出安装;
步骤S15:所述卡连接器向所述卡片发送第四指令;
步骤S16:所述卡片接收第四指令并执行相应操作,然后向所述卡连接器发送第四响应状态码;
步骤S17:所述卡连接器判断第四响应状态码是否等于预设值;是,向所述卡片发送应用;否,退出安装。
所述步骤S1之前包括:
步骤A1:所述卡连接器生成主机询问码并保存,向所述卡片发送包含所述主机询问码的内部初始化命令;
步骤A2:所述卡片接收所述内部初始化命令并从中读取主机询问码,生成并保存卡询问码、第一会话密钥以及第二会话密钥,根据主机询问码、序列计数值、卡询问码生成第一数据块,用第一会话密钥对第一数据块进行加密,得到第一加密结果,向所述卡连接器发送包含第一加密结果、卡询问码、序列计数值的内部初始化响应;
步骤A3:所述卡连接器接收内部初始化响应,从中读取第一加密结果、卡询问码、序列计数值,然后执行包含内部初始化响应的验证命令,生成并保存第三会话密钥和第四会话密钥,根据主机询问码、序列计数值、卡询问码生成第二数据块,用第三会话密钥对第二数据块进行加密得到第二加密结果,将第二加密结果与第一加密结果进行比较;相同,执行步骤A4;否,输出错误信息,退出安装;
步骤A4:所述卡连接器根据主机询问码、序列计数值、卡询问码生成第三数据块,用第三会话密钥对第三数据块进行加密,得到第三加密结果,并将其作为认证数据的一部分,用第四会话密钥和卡连接器信息值对认证数据进行计算,得到卡连接器计算结果,向所述卡片发送包含认证数据和卡连接器计算结果的外部认证命令;
步骤A5:所述卡片接收外部认证命令并从中读取认证数据和卡连接器计算结果,从认证数据中读取第三加密结果,根据主机询问码、序列计数值、卡询问码生成第四数据块,用第一会话密钥对第四数据块进行加密得到第四加密结果,将第四加密结果与第三加密结果比较;相同,执行步骤A6;不相同,发送错误信息,退出安装;
步骤A6:所述卡片用第二会话密钥和卡片信息值对认证数据进行计算,将得到的卡片计算结果与卡连接器计算结果比较;相同,向所述卡连接器发送外部认证成功响应,然后,执行步骤A7;不相同,发送错误信息,退出安装;
步骤A7:所述卡连接器判断请求安装的应用是否存在;是,执行步骤S1;否,退出安装。
所述步骤A2中所述的生成第一会话密钥具体包括:所述卡片用序列计数值、第一常量、预设常量生成第一派生数据,再用内置的第一密钥对所述第一派生数据采用指定方式进行加密,生成第一会话密钥;
所述卡片生成第二会话密钥,具体包括:所述卡片用所述序列计数值、第二常量、预设常量生成第二派生数据,再用内置的第二密钥对所述第二派生数据采用指定方式进行加密,生成第二会话密钥;
所述根据主机询问码、序列计数值、卡询问码生成第一数据块,具体包括:按照所述主机询问码、所述序列计数值、所述卡询问码、第一变量的顺序进行拼接得到所述第一数据块;
所述用第一会话密钥对第一数据块进行加密,具体包括:用所述第一会话密钥对所述第一数据块采用指定方式进行加密。
所述步骤A3中所述验证命令具体包括:卡连接器构造的包含内部初始化响应并且以指定字节作为数据头的命令;生成第三会话密钥具体包括:所述卡连接器用序列计数值、第一常量、预设常量生成第三派生数据,再用内置的第一密钥对所述第三派生数据采用指定方式进行加密,生成第三会话密钥;
所述卡连接器生成第四会话密钥,具体包括:所述卡连接器用序列计数值、第二常量、预设常量生成第四派生数据,再用内置的第二密钥对所述第四派生数据采用所述指定方式进行加密,生成第四会话密钥;
所述根据主机询问码、序列计数值、卡询问码生成第二数据块,具体包括:按照所述主机询问码、所述序列计数值、所述卡询问码、第一变量的顺序进行拼接得到所述第二数据块;
所述用第三会话密钥对第二数据块进行加密,具体包括:用所述第三会话密钥对所述第二数据块采用指定方式进行加密。
所述步骤A4中所述卡连接器根据主机询问码、序列计数值、卡询问码生成第三数据块,具体包括:按照所述序列计数值、所述卡询问码、所述主机询问码、第一变量的顺序进行拼接得到所述第三数据块;
所述用第三会话密钥对所述第三数据块进行加密,具体包括:用所述第三会话密钥对所述第三数据块采用指定方式进行加密。
所述步骤A5中所述卡片根据主机询问码、序列计数值、卡询问码生成第四数据块,具体包括:按照所述序列计数值、所述卡询问码、所述主机询问码、第一变量的顺序进行拼接得到所述第四数据块;
所述用第一会话密钥对所述第四数据块进行加密,具体包括:用所述第一会话密钥对所述第四数据块采用指定方式进行加密。
所述步骤A7中所述卡连接器判断请求安装的应用是否存在,具体包括:所述卡连接器根据请求安装应用指令的指定字符判断请求安装的应用是否存在。
所述步骤S1中所述第一指令,具体为:第一动作指令指向的第一指令。
所述读取第一指令具体包括:根据第四会话密钥和卡连接器信息值对第一指令进行计算得到第一指令的第一计算结果,然后将其附加在第一指令右端,成为新的第一指令,用第三会话密钥对第一指令的数据域采用指定方式进行加密,加密后的结果替换原来的部分,得到最终的第一指令。
所述步骤S3中所述卡片读取第一指令的第一计算结果,然后与对第一指令进行计算得到的第一指令的第二计算结果比较,具体包括:读取所述第一指令的后8字节得到第一指令的第一计算结果,然后用第一会话密钥对第一指令的数据域采用指定方式进行解密,用解密得到的结果替换原来的数据域,然后用第二会话密钥和卡片信息值对第一指令的指定部分进行计算,得到第一指令的第二计算结果,比较第一指令的第一计算结果和第一指令的第二计算结果。
所述步骤S5之前还包括:判断第二动作指令指向的第一文件是否存在,是,执行步骤S5;否,输出错误信息,退出安装。
所述步骤S5中所述第二指令,具体为:第一文件和第三动作指令指向的第二指令。
所述读取第二指令具体包括:使用第四会话密钥和卡连接器信息值对第二指令进行计算,得到第二指令的第一计算结果,然后将其附加在第二指令右端,成为新的第二指令,用第三会话密钥对第二指令的数据域采用指定方式进行加密,加密后的结果替换原来的部分,得到最终的第二指令。
所述步骤S7中所述卡片读取第二指令的第一计算结果,然后与对第二指令进行计算得到的第二指令的第二计算结果比较,具体包括:读取所述第二指令的后8字节得到第二指令的第一计算结果,然后用第一会话密钥对第二指令的数据域采用指定方式进行解密,解密后的结果替换原来的部分,然后用第二会话密钥和卡片信息值对第二指令的指定部分进行计算,得到第二指令的第二计算结果,比较第二指令的第一计算结果和第二指令的第二计算结果。
所述步骤S9之前还包括:所述卡连接器判断第四动作指令指向的第二文件是否存在;是,执行步骤S9;否,输出错误信息,退出安装。
所述步骤S9中所述第三指令,具体为:第二文件和第五动作指令指向的第三指令。
所述读取第三指令具体包括:使用第四会话密钥和卡连接器信息值对第三指令进行计算,得到第三指令的第一计算结果,然后将其附加在第三指令右端,成为新的第三指令,用第三会话密钥对第三指令的数据域采用指定方式进行加密,加密后的结果替换原来的部分,得到最终的第三指令。
所述步骤S11中所述卡片读取第三指令的第一计算结果,然后与对第三指令进行计算得到的第三指令的第二计算结果比较,具体包括:读取所述第三指令的后8字节得到第三指令的第一计算结果,然后用第一会话密钥对第三指令的数据域采用指定方式进行解密,解密后的结果替换原来的部分,然后用第二会话密钥和卡片信息值对第三指令的指定部分进行计算,得到第三指令的第二计算结果,比较第三指令的第一计算结果和第三指令的第二计算结果。
所述步骤S13之前还包括:所述卡连接器判断第二动作指令指向的下一条第一文件是否存在;是,返回步骤S5;否,执行步骤S13。
所述步骤S13中所述的卡连接器判断是否成功执行激活指令,具体包括:判断可激活次数是否大于0;如果大于0,则执行激活操作,然后可激活次数减1,否则,退出安装。
一种安全下载应用的方法,包括:
步骤B1:卡片接收指令并判断指令类型;
如果是内部初始化命令,则执行步骤B2;
如果是外部认证命令,则执行步骤B3;
如果是第一指令,则执行步骤B5;
如果是第二指令,则执行步骤B6;
如果是第三指令,则执行步骤B7;
如果是其他命令,则根据所述其他命令执行相应操作,然后返回步骤B1;
步骤B2:所述卡片从内部初始化命令中读取主机询问码,生成并保存卡询问码、第一会话密钥以及第二会话密钥,生成第一数据块,对第一数据块加密,得到第一加密结果,向卡连接器发送内部初始化响应,然后返回步骤B1;
步骤B3:所述卡片从外部认证命令中读取认证数据和卡连接器计算结果,再从认证数据中读取第三加密结果,生成第四数据块,对第四数据块加密得到第四加密结果,将第四加密结果与所述第三加密结果比较;相同,执行步骤B4;不相同,向所述卡连接器发送错误信息,然后返回步骤B1;
步骤B4:所述卡片对认证数据进行计算得到卡片计算结果,将卡片计算结果与所述卡连接器计算结果比较,相同,向所述卡连接器发送外部认证成功响应状态码,然后返回步骤B1;不相同,向所述卡连接器发送外部认证失败响应状态码,然后返回步骤B1;
步骤B5:所述卡片从第一指令中读取第一指令的第一计算结果,对第一指令进行解密,得到的解密结果替换原来的部分,然后对第一指令进行计算得到第一指令的第二计算结果,将第一指令的第二计算结果与第一指令的第一计算结果进行比较;相同,向所述卡连接器发送第一成功响应状态码,然后返回步骤B1;不相同,向所述卡连接器发送第一失败响应状态码,然后返回步骤B1;
步骤B6:所述卡片从第二指令中读取第二指令的第一计算结果,对第二指令进行解密,得到的解密结果替换原来的部分,然后对第二指令进行计算得到第二指令的第二计算结果,将第二指令的第二计算结果与第二指令的第一计算结果进行比较;相同,向所述卡连接器发送第二成功响应状态码,然后返回步骤B1;不相同,向所述卡连接器发送第二失败响应状态码,然后返回步骤B1;
步骤B7:所述卡片从第三指令中读取第三指令的第一计算结果,对第三指令进行解密,得到的解密结果替换原来的部分,然后对第三指令进行计算得到第三指令的第二计算结果,将第三指令的第二计算结果与第三指令的第一计算结果进行比较;相同,向所述卡连接器发送第三成功响应状态码,然后返回步骤B1;不相同,向所述卡连接器发送第三失败响应状态码,然后返回步骤B1。
所述步骤B2中所述的生成第一会话密钥,具体为:所述卡片用序列计数值、第一常量、预设常量生成第一派生数据,再用内置的第一密钥对所述第一派生数据采用指定方式进行加密,生成第一会话密钥;
所述卡片生成第二会话密钥,具体包括:所述卡片用所述序列计数值、第二常量、第二派生数据,再用内置的第二密钥对所述第二派生数据采用所述指定方式进行加密,生成第二会话密钥;
所述生成第一数据块,具体包括:按照所述主机询问码、所述序列计数值、所述卡询问码、第一变量的顺序进行拼接得到所述第一数据块;
所述对第一数据块进行加密,具体包括:用所述第一会话密钥对所述第一数据块采用指定方式进行加密;
所述向卡连接器发送的内部初始化响应,具体为:包含第一加密结果、卡询问码、序列计数值的内部初始化响应。
所述步骤B3中所述生成第四数据块,具体为:按照所述序列计数值、所述卡询问码、所述主机询问码、第一变量的顺序进行拼接得到所述第四数据块;
所述对所述第四数据块进行加密,具体包括:用所述第一会话密钥对所述第四数据块采用指定方式进行加密。
所述步骤B4中所述的对认证数据进行计算,具体为:所述卡片用第二会话密钥和卡片信息值对认证数据进行计算。
所述步骤B5或B6或B7中所述的进行解密,具体为:所述卡片用第一会话密钥对指令的数据域采用指定方式解密;
所述的对指令进行计算,具体为:用第二会话密钥和卡片信息值对指令的指定部分进行计算。
一种安全下载应用的方法,包括:
步骤C1:所述卡片等待接收内部初始化命令,判断是否接收到内部初始化命令;是,执行步骤C2;否,返回步骤C1;
步骤C2:所述卡片从内部初始化命令中读取主机询问码,生成并保存卡询问码、第一会话密钥以及第二会话密钥,生成第一数据块,对第一数据块加密,得到第一加密结果,向卡连接器发送内部初始化响应,执行步骤C3;
步骤C3:所述卡片等待接收外部认证命令,判断是否接收到外部认证命令;是,执行步骤C4;否,返回步骤C3;
步骤C4:所述卡片从外部认证命令中读取认证数据和卡连接器计算结果,再从认证数据中读取第三加密结果,生成第四数据块,对第四数据块加密得到第四加密结果,将第四加密结果与所述第三加密结果比较;相同执行步骤C5;不相同,向卡连接器发送错误信息;
步骤C5:所述卡片对认证数据进行计算得到卡片计算结果,将卡片计算结果与所述卡连接器计算结果比较,相同,向所述卡连接器发送外部认证成功响应状态码,然后执行步骤C6;不相同,向所述卡连接器发送外部认证失败响应状态码;
步骤C6:所述卡片等待接收第一指令,判断是否接收到第一指令;是,执行步骤C7;否,返回步骤C6;
步骤C7:所述卡片从第一指令中读取第一指令的第一计算结果,对第一指令进行解密,得到的解密结果替换原来的部分,然后对第一指令进行计算得到第一指令的第二计算结果,将第一指令的第二计算结果与第一指令的第一计算结果进行比较;相同,向所述卡连接器发送第一成功响应状态码,然后执行步骤C8;不相同,向所述卡连接器发送第一失败响应状态码;
步骤C8:所述卡片等待接收第二指令,判断是否接收到第二指令;是,执行步骤C9;否,返回步骤C8;
步骤C9:所述卡片从第二指令中读取第二指令的第一计算结果,对第二指令进行解密,得到的解密结果替换原来的部分,然后对第二指令进行计算得到第二指令的第二计算结果,将第二指令的第二计算结果与第二指令的第一计算结果进行比较;相同,向所述卡连接器发送第二成功响应状态码,然后执行步骤C10;不相同,向所述卡连接器发送第二失败响应状态码;
步骤C10:所述卡片等待接收第三指令,判断是否接收到第三指令;是,执行步骤C11;否,返回步骤C10;
步骤C11:所述卡片从第三指令中读取第三指令的第一计算结果,对第三指令进行解密,得到的解密结果替换原来的部分,然后对第三指令进行计算得到第三指令的第二计算结果,将第三指令的第二计算结果与第三指令的第一计算结果进行比较;相同,向所述卡连接器发送第三成功响应状态码,然后执行步骤C12;不相同,向所述卡连接器发送第三失败响应状态码;
步骤C12:所述卡片等待接收第四指令,判断是否接收到第四指令;是,执行所述第四指令,等待接收应用;否,返回步骤C12。
所述步骤C2中所述的生成第一会话密钥,具体为:所述卡片用序列计数值、第一常量、预设常量生成第一派生数据,再用内置的第一密钥对所述第一派生数据采用指定方式进行加密,生成第一会话密钥;
所述卡片生成第二会话密钥,具体包括:所述卡片用所述序列计数值、第二常量、预设常量生成第二派生数据,再用内置的第二密钥对所述第二派生数据采用所述指定方式进行加密,生成第二会话密钥;
所述生成第一数据块,具体包括:按照所述主机询问码、所述序列计数值、所述卡询问码、第一变量的顺序进行拼接得到所述第一数据块;
所述对第一数据块进行加密,具体包括:用所述第一会话密钥对所述第一数据块采用指定方式进行加密;
所述向卡连接器发送内部初始化响应,具体为:包含第一加密结果、卡询问码、序列计数值的内部初始化响应。
所述步骤C4中所述生成第四数据块,具体为:按照所述序列计数值、所述卡询问码、所述主机询问码、第一变量的顺序进行拼接得到所述第四数据块;
所述对所述第四数据块进行加密,具体包括:用所述第一会话密钥对所述第四数据块采用指定方式进行加密。
所述步骤C5中所述的对认证数据进行计算,具体为:所述卡片用第二会话密钥和卡片信息值对认证数据进行计算。
所述步骤C7或C9或C11中所述的进行解密,具体为:所述卡片用第一会话密钥对指令的数据域采用指定方式解密;
所述的对指令进行计算,具体为:用第二会话密钥和卡片信息值对指令的指定部分进行计算。
本发明实施例提供的技术方案有益效果为:采取全密文通讯手段,并通过激活卡片操作控制应用安装次数,实现安全下载应用。本发明实现了卡片和卡连接器的全密文通讯,发卡次数可控;通过这种方法就可以保证在发卡的时候应用的独立性和安全性,同时限制发卡的次数,避免中介和客户随意下载应用,安全性较高。
附图说明
图1-1 、图1-2 以及图1-3是本发明实施例1提供的一种安全下载应用的方法流程图;
图2是本发明实施例2提供的一种安全下载应用的方法流程图;
图3是本发明实施例3提供的一种安全下载应用的方法流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式做进一步地详细描述。
本发明所提到的卡连接器为主机和母卡的组合。
实施例1
参见图1-1,本实施例1提供了一种安全下载应用的方法。
步骤101:卡连接器生成主机询问码并保存;
本实施例中,主机询问码为8字节的随机数。例如,主机询问码为:1122334455667788;
步骤102:卡连接器向卡片发送包含主机询问码的内部初始化命令;
本实施例中,具体向卡片发送前两字节为8050、包含主机询问码的内部初始化命令。
例如,内部初始化命令为:
80500000081122334455667788;
步骤103:卡片接收内部初始化命令并从中读取主机询问码;
步骤104:卡片生成卡询问码并保存;
本实施例中,卡询问码为6字节的随机数。
例如,卡询问码为:010203040506;
步骤105:卡片生成第一会话密钥、第二会话密钥并保存,根据主机询问码、序列计数值、卡询问码生成第一数据块;
本实施例中,卡片用2字节序列计数值、2个双方约定的2字节常量以及2个内置密钥分别生成2个会话密钥。其中,2个内置密钥分别为:16字节的第一密钥、16字节的第二密钥。
例如,序列计数值为:0001。
第一常量为: 0182;
第二常量为:0101;
第一密钥为:404142434445464748494a4b4c4d4e4f;
第二密钥为:404142434445464748494a4b4c4d4e4f;
具体操作为:卡片用2个字节的序列计数值、双方约定的2个字节的第一常量、12个字节的‘00’生成第一派生数据,再用第一密钥对第一派生数据采用3DES-CBC方式进行加密,也可以用第一密钥对第一派生数据采用其他方式进行加密,生成第一会话密钥。
例如,
第一派生数据为:01820001000000000000000000000000;
第一会话密钥为:25C9794A1205FF244F5FA0378D2F8D59;
卡片用2个字节的序列计数值、双方约定的2个字节的第二常量、12个字节的‘00’生成第二派生数据,再用第二密钥对第二派生数据采用指定方式进行加密,指定方式优选为3DES-CBC,生成第二会话密钥;
例如,
第二派生数据为:01010001000000000000000000000000;
第二会话密钥为:9BED98891580C3B245FE9EC58BFA8D2A;
本实施例中,第一数据块生成格式为:主机询问码+序列计数值+卡询问码+8000000000000000。
例如,第一数据块为:
112233445566778800010102030405068000000000000000;
步骤106:卡片用第一会话密钥对第一数据块进行加密,得到第一加密结果;
本实施例中,用第一会话密钥对第一数据块采用指定方式进行加密,指定方式优选为3DES-CBC方式,得到8个字节第一加密结果。
例如,第一加密结果为:6DF0F3DE2BAE36AA;
步骤107:卡片向卡连接器发送包含第一加密结果、卡询问码、序列计数值的内部初始化响应;
例如,内部初始化响应为:
00000000000000000000FF0200010102030405066DF0F3DE2BAE36AA9000;
步骤108:卡连接器接收内部初始化响应,从中读取第一加密结果、卡询问码、序列计数值,然后执行包含内部初始化响应的验证命令;
本实施例中,验证命令为卡连接器构造的包含内部初始化响应并且前3个字节为808050的命令。例如:
8080500024E14D46103FFC193A00000000000000000000FF0200010102030405066DF0F3DE2BAE36AA9000;
步骤109:卡连接器生成第三会话密钥、第四会话密钥并保存,根据主机询问码、序列计数值、卡询问码生成第二数据块;
本实施例中,卡连接器用2个字节的序列计数值、2个双方约定的2个字节的常量以及2个内置密钥生成2个会话密钥。其中,2个内置密钥分别为:16个字节的第一密钥、16个字节的第二密钥。
具体操作为:卡连接器用2个字节的序列计数值、双方约定的2个字节的第一常量、12个字节的‘00’生成第三派生数据,再用第一密钥对第三派生数据采用3DES-CBC方式进行加密,也可以用第一密钥对第三派生数据采用其他方式进行加密,生成第三会话密钥;
例如,第三派生数据为:
01820001000000000000000000000000;第三会话密钥为:25C9794A1205FF244F5FA0378D2F8D59;
卡连接器用2个字节的序列计数值、双方约定的2个字节的第二常量、12个字节的‘00’生成第四派生数据,再用第二密钥对第四派生数据采用指定方式进行加密,指定方式优选为3DES-CBC方式,生成第四会话密钥;
例如,第四派生数据为:
01010001000000000000000000000000;第四会话密钥为:9BED98891580C3B245FE9EC58BFA8D2A;
本实施例中,第二数据块生成格式为:主机询问码+序列计数值+卡询问码+8000000000000000。
例如,第二数据块为:
112233445566778800010102030405068000000000000000;
步骤110:卡连接器用第三会话密钥对第二数据块进行加密,得到第二加密结果;
本实施例中,用第三会话密钥对第二数据块采用指定方式进行加密,指定方式优选为3DES-CBC方式,得到8个字节的第二加密结果。
步骤111:卡连接器比较第一加密结果和第二加密结果;
相同,执行步骤113;不相同,执行步骤112。
步骤112:输出错误信息,退出安装;
步骤113:卡连接器根据主机询问码、序列计数值、卡询问码生成第三数据块,用第三会话密钥对第三数据块进行加密,得到第三加密结果,并将其作为认证数据的一部分;
本实施例中,第三数据块生成格式为:序列计数值+卡询问码+主机询问码+8000000000000000。
例如,第三数据块为:
000101020304050611223344556677888000000000000000;
用第三会话密钥对第三数据块采用指定方式加密,指定方式优选为3DES-CBC方式,得到8个字节的第三加密结果,例如:8E14AC21FAE976BF。
步骤114:卡连接器用第四会话密钥和卡连接器信息值对认证数据进行计算,得到卡连接器计算结果;
本实施例中,卡连接器用第四会话密钥和卡连接器信息值对认证数据进行计算,得到8个字节卡连接器计算结果,例如:0FF4783B36D6CF61。其中,卡连接器信息值初始值为8个字节的‘00’。
步骤115:卡连接器向卡片发送包含认证数据和卡连接器计算结果的外部认证命令;
例如,外部认证命令为:
84820300108E14AC21FAE976BF0FF4783B36D6CF61;
步骤116:卡片接收外部认证命令并从中读取认证数据和卡连接器计算结果;
本实施例中,读取外部认证命令后8个字节为卡连接器计算结果。
步骤117:卡片从认证数据中读取第三加密结果,根据主机询问码、序列计数值、卡询问码生成第四数据块,用第一会话密钥对第四数据块进行加密,得到第四加密结果;
本实施例中,第四数据块生成格式为:序列计数值+卡询问码+主机询问码+8000000000000000。
例如,第四数据块为:
000101020304050611223344556677888000000000000000;
用第一会话密钥采用指定方式对第四数据块进行加密,指定方式优选为3DES-CBC,得到8个字节的第四加密结果。
步骤118:卡片比较第三加密结果和第四加密结果;
相同,执行步骤120;不相同,执行步骤119。
步骤119:卡片向卡连接器发送错误信息,然后返回步骤112;
步骤120:卡片用第二会话密钥和卡片信息值对认证数据进行计算,得到卡片计算结果;
本实施例中,具体的用第二会话密钥对认证数据进行计算,得到8个字节的卡片计算结果。
步骤121:卡片比较卡连接器计算结果和卡片计算结果;
相同,执行步骤122;不相同,返回步骤119。
步骤122:卡片向卡连接器发送外部认证成功响应,然后参见图1-2,执行步骤123;
步骤123:卡连接器判断请求安装的应用是否存在;
是,执行步骤124;否,退出安装;
本实施例中,根据请求安装应用指令的第8个字符判断请求安装的应用是否存在,例如,请求安装应用指令为808000BX,如果第X值在预设范围内,则请求安装的应用存在,X初始值为1。
步骤124:卡连接器执行请求安装应用指令;
本实施例中,具体的将应该设置的数据进行设置,将应该清空的数据进行清空。
步骤125:卡连接器判断是否成功读取第一动作指令指向的包含第四会话密钥和卡连接器信息值计算得到的第一指令的第一计算结果并用第三会话密钥加密的第一指令;
是,执行步骤126;否,返回步骤112。
本实施例中,第一动作指令为808010XX,卡连接器读取01类型文件的第XX条指令。其中XX在预设范围内,优选为1~3,XX的初始值为1。读取第一指令具体包括:
首先,用第四会话密钥和卡连接器信息值对第一指令进行计算,得到第一指令的第一计算结果,具体的计算操作不再赘述。
然后,将第一指令的第一计算结果附加在第一指令右端,用第三会话密钥对第一指令的数据域采用指定方式进行加密,指定方式优选为3DES-CBC,加密后的结果替换原来的部分,得到最终的第一指令,例如,
84E4000018B72E016B0F470C92D411F4A2D480FA43BC372CF359FF2C3D;其中第一指令的第一计算结果为:BC372CF359FF2C3D;
步骤126:卡连接器向卡片发送第一指令;
步骤127:卡片接收第一指令并从中读取第一指令的第一计算结果,然后用第一会话密钥对第一指令的数据域进行解密,解密后的结果替换原来的部分,然后,用第二会话密钥和卡片信息值对第一指令的指定部分进行计算,得到第一指令的第二计算结果,比较第一指令的第一计算结果和第一指令的第二计算结果;
相同,执行步骤129;不相同,执行步骤128。
本实施例中,第一指令的后8字节为第一指令的第一计算结果;用第一会话密钥对第一指令的数据域采用指定方式进行解密,指定方式优选为3DES-CBC方式解密;第一指令的指定部分为除最后8字节外的其余部分。
步骤128:卡片向卡连接器发送第一失败响应状态码,然后返回步骤112;
步骤129:卡片向卡连接器发送第一成功响应状态码;
步骤130:卡连接器接收第一成功响应状态码,判断是否成功读取第一动作指令指向的下一条第一指令;
是,返回步骤126;否,执行步骤131。
本实施例中,具体判断方法与步骤125相同。
步骤131:卡连接器判断第二动作指令指向的第一文件是否存在;
是,执行步骤132;否,返回步骤112。
本实施例中,根据第二动作指令的第8字节判断第一文件是否存在;例如,第二动作指令为:8080002Y。如果Y在预设范围内,则判断第一文件存在,否则第一文件不存在,Y优选范围为1~2,Y的初始值为1。
步骤132:卡连接器判断是否成功读取第一文件和第三动作指令指向的包含第四会话密钥和卡连接器信息值计算得到的第二指令的第一计算结果并用第三会话密钥加密的第二指令;
是,执行步骤133;否,返回步骤112。
本实施例中,第三动作指令为808020YY。YY在预设范围内,优选为1~2,YY的初始值为1。读取第二指令具体包括:
首先,用第四会话密钥和卡连接器信息值对第二指令进行计算,得到第二指令的第一计算结果,具体的计算操作不再赘述。
然后,将第二指令的第一计算结果附加在第二指令右端,用第三会话密钥对第二指令的数据域采用指定方式进行加密,指定方式优选为3DES-CBC方式,加密后的结果替换原来的部分,得到最终的第二指令,例如,
80E60200207FE8E33C89B00BF36C4A9918434F782844E780899AC6C94000B8F28A960597C1;其中第二指令的第一计算结果为:00B8F28A960597C1;
步骤133:卡连接器向卡片发送第二指令;
步骤134:卡片接收第二指令并从中读取第二指令的第一计算结果,然后用第一会话密钥对第二指令的数据域进行解密,解密后的结果替换原来的部分,然后,用第二会话密钥和卡片信息值对第二指令的指定部分进行计算,得到第二指令的第二计算结果,比较第二指令的第一计算结果和第二指令的第二计算结果;
相同,执行步骤136;不相同,执行步骤135。
本实施例中,第二指令的后8字节为第二指令的第一计算结果;用第一会话密钥对第二指令的数据域采用指定方式进行解密,指定方式优选为3DES-CBC方式解密;第二指令的指定部分为除最后8字节外的其余部分。
步骤135:卡片向卡连接器发送第二失败响应状态码,然后返回步骤112;
步骤136:卡片向卡连接器发送第二成功响应状态码;
步骤137:卡连接器接收第二成功响应状态码,判断是否成功读取第一文件和第三动作指令指向的下一条第二指令;
是,返回步骤133;否,执行步骤138;
步骤138:卡连接器判断第四动作指令指向的第二文件是否存在;
是,参见图1-3,执行步骤139;否,返回步骤112。
本实施例中,具体的卡连接器执行8080003Z,Z在预设范围内,优选为1~2,Z的初始值为1。
步骤139:卡连接器判断是否成功读取第二文件和第五动作指令指向的包含用第四会话密钥和卡连接器信息值计算得到的第三指令的第一计算结果、并用第三会话密钥加密的第三指令;
是,执行步骤140;否,返回步骤112。
本实施例中,第五动作指令为808030ZZ。ZZ在预设范围内,优选为1~200,ZZ初始值为1。
首先,用第四会话密钥和卡连接器信息值对第三指令进行计算,得到第三指令的第一计算结果,具体的计算操作不再赘述。
然后,将第三指令的第一计算结果附加在第三指令右端,用第三会话密钥对第三指令的数据域采用指定方式进行加密,指定方式优选为3DES-CBC方式,加密后的结果替换原来的部分,得到最终的第三指令,例如,
80E80000C8C4820FAF010022DECAFFED02020200010AD15600013203010302010D6A617661636172642F46696C650200210022002100000015011A00C00B71000A01BA002D04D11F4200000000000002000004001502000107A0000000620001020107A00000006201010600C00000008000010001010000010019008000040003010700000026002B00300035003C0043004800000E00FF000801000000880000260100010905000000A300AA00B200D500F800003201FF000B0200000121013500800001D81A3A70053F941A;其中第三指令的第一计算结果为:D81A3A70053F941A;
步骤140:卡连接器向卡片发送第三指令;
步骤141:卡片接收第三指令并从中读取第三指令的第一计算结果,然后用第一会话密钥对第三指令的数据域进行解密,解密后的结果替换原来的部分,然后,用第二会话密钥和卡片信息值对第三指令的指定部分进行计算,得到第三指令的第二计算结果,比较第三指令的第一计算结果和第三指令的第二计算结果;
相同,执行步骤143;不相同,执行步骤142。
本实施例中,第三指令的后8字节为第三指令的第一计算结果;用第一会话密钥对第三指令的数据域采用指定方式进行解密,指定方式优选为3DES-CBC方式解密;第三指令的指定部分为除最后8字节外的其余部分。
步骤142:卡片向卡连接器发送第三失败响应状态码,然后返回步骤112;
步骤143:卡片向卡连接器发送第三成功响应状态码;
步骤144:卡连接器接收第三成功响应状态码,判断是否成功读取第二文件和第五动作指令指向的下一条第三指令;
是,返回步骤140;否,执行步骤145。
步骤145:卡连接器判断第二动作指令指向的下一条第一文件是否存在;
是,返回步骤132;否,执行步骤146。
步骤146:卡连接器判断是否成功执行激活指令;
是,执行步骤147;否,退出安装;
本实施例中,激活指令为0088。如果可激活次数大于0,执行激活操作,卡连接器可激活次数减1,;
步骤147:卡连接器判断是否成功读取第六动作指令指向的第四指令;
是,执行步骤148;否,退出安装。
本实施例中,第六指令为808040MM;
步骤148:卡连接器向卡片发送第四指令;
本实施例中,第四指令是前3字节为0X84E60C的指令,如:
84E60C003807D2C6A5A82486A810A958901D59B20914BFAD0C5C729292927E0F3D207874AD67412DBFF2ECDC7A1F628516F9D6C54CB32AB42CE60364EE。
步骤149:卡片接收第四指令并执行相应操作;
本实施例中,具体操作不再赘述。
步骤150:卡片向卡连接器发送第四响应状态码;
本实施例中,如果卡片成功执行第四指令,则向卡连接器发送值为9000的第四响应状态码。
步骤151:判断第四响应状态码是否等于预设值;
是,向卡片发送应用;否,退出安装。
本实施例中,如果卡连接器接收到的第四响应状态码等于9000,那么第四响应状态码等于预设值。
实施例2
参见图2,本实施例2提供了一种安全下载应用的方法。
步骤201:卡片接收指令并判断指令类型;
本实施例中,如果前2字节为0X8050,则为内部初始化指令,执行步骤202;
如果前2字节为0X8482,则为外部认证指令,执行步骤206;
如果前2字节为0X84E4,则为第一指令,执行步骤214;
如果前2字节为0X80E6,则为第二指令,执行步骤218;
如果前2字节为0X80E8,则为第三指令,执行步骤222;
如果为其他指令,则执行相应操作,然后返回步骤201。
本实施例中,其他指令包括前3字节为0X84E60C的第四指令。
步骤202:从内部初始化命令中读取主机询问码,生成卡询问码并保存;
本实施例中,从内部初始化命令读取主机询问码,例如,内部初始化命令为:80500000081122334455667788;主机询问码为:1122334455667788;
卡片生成6字节的卡询问码:010203040506。
步骤203:生成第一会话密钥、第二会话密钥并保存,根据主机询问码、序列计数值、卡询问码生成第一数据块;
按照2字节第一常数+2字节序列计数值+12个字节‘00’的格式生成第一派生数据,用第一密钥对第一派生数据采用3DES-CBC方式计算,得到第一会话密钥;例如,第一密钥为:
01820001000000000000000000000000;第一会话密钥为:25C9794A1205FF244F5FA0378D2F8D59;
按照2字节第二常数+2字节序列计数值+12字节‘00’格式生成第二派生数据,用第二内置密钥对第二派生数据采用3DES-CBC方式计算,得到第二会话密钥;例如,第二内置密钥为:
01010001000000000000000000000000;第二会话密钥为:9BED98891580C3B245FE9EC58BFA8D2A;
卡片按照2字节序列计数值+6字节卡询问码+8字节主机询问码+8000000000000000的格式,生成第一数据块,例如,第一数据块为:
000101020304050611223344556677888000000000000000;
步骤204:用第一会话密钥对第一数据块进行加密,得到第一加密结果;
本实施例中,用第一会话密钥对第一数据块采用3DES-CBC方式加密,得到8字节的第一加密结果,例如:6DF0F3DE2BAE36AA;
步骤205:向卡连接器发送包含第一加密结果、卡询问码、序列计数值的内部初始化响应,然后返回步骤201;
本实施例中,内部初始化响应为:
00000000000000000000FF0200010102030405066DF0F3DE2BAE36AA9000;
步骤206:从外部认证命令中读取认证数据和卡连接器计算结果;
本实施例中,外部认证命令后8字节为卡连接器计算结果,例如:0FF4783B36D6CF61;外部认证命令为:
84820300108E14AC21FAE976BF0FF4783B36D6CF61;卡连接器计算结果为:0FF4783B36D6CF61。
步骤207:从认证数据中读取第三加密结果,根据主机询问码、序列计数值、卡询问码生成第四数据块,用第一会话密钥对第四数据块进行加密,得到第四加密结果;
本实施例中,第四数据块生成格式为:序列计数值+卡询问码+主机询问码+8000000000000000。
例如,第四数据块为:
000101020304050611223344556677888000000000000000;
用第一会话密钥采用指定方式对第四数据块进行加密,指定方式优选为3DES-CBC,得到8字节的第四加密结果,例如:8E14AC21FAE976BF。
步骤208:判断第三加密结果和第四加密结果是否相同;
是,执行步骤210;否,执行步骤209。
步骤209:向卡连接器发送错误信息,然后返回步骤201;
步骤210:用第二会话密钥和卡片信息值对认证数据进行计算,得到卡片计算结果;
本实施例中,卡片用第二会话密钥和卡片信息值对认证数据进行计算,得到8字节卡片计算结果,例如:0FF4783B36D6CF61。其中,卡片信息值初始值为8字节的‘00’。
步骤211:判断卡连接器计算结果和卡片计算结果是否相同;
是,执行步骤212;否,执行步骤213。
步骤212:向卡连接器发送外部认证成功响应状态码,然后返回步骤201;
步骤213:向卡连接器发送外部认证失败响应状态码,然后返回步骤201;
步骤214:从第一指令中读取第一指令的第一计算结果,然后用第一会话密钥对第一指令的数据域进行解密,解密后的结果替换原来的部分,然后用第二会话密钥和卡片信息值对第一指令的指定部分进行计算,得到第一指令的第二计算结果;
本实施例中,第一指令的后8字节为第一指令的第一计算结果;用第一会话密钥对第一指令的数据域采用指定方式进行解密,指定方式优选为3DES-CBC方式;第一指令的指定部分为除最后8字节外的其余部分。卡片用第二会话密钥和卡片信息值对第一指令的指定部分进行计算,得到8字节第一指令的第二计算结果,例如,第一指令为:84E4000018B72E016B0F470C92D411F4A2D480FA43BC372CF359FF2C3D;其中第一指令的第一计算结果为:BC372CF359FF2C3D;
步骤215:判断第一指令的第一计算结果和第一指令的第二计算结果是否相同;
是,执行步骤217;否,执行步骤216。
步骤216:向卡连接器发送第一失败响应状态码,然后返回步骤201;
步骤217:向卡连接器发送第一成功响应状态码,然后返回步骤201;
步骤218:从第二指令中读取第二指令的第一计算结果,然后用第一会话密钥对第二指令的数据域进行解密,解密后的结果替换原来的部分,然后用第二会话密钥和卡片信息值对第二指令的指定部分进行计算,得到第二指令的第二计算结果。
本实施例中,第二指令的后8字节为第二指令的第一计算结果;用第一会话密钥对第二指令的数据域采用指定方式进行解密,指定方式优选为3DES-CBC方式;第二指令的指定部分为除最后8字节外的其余部分。卡片用第二会话密钥和卡片信息值对第二指令的指定部分进行计算,得到8字节第二指令的第二计算结果,例如,第二指令为:80E60200207FE8E33C89B00BF36C4A9918434F782844E780899AC6C94000B8F28A960597C1;其中第二指令的第一计算结果为:00B8F28A960597C1;
步骤219:判断第二指令的第一计算结果和第二指令的第二计算结果是否相同;
是,执行步骤221;否,执行步骤220。
步骤220:向卡连接器发送第二失败响应状态码,然后返回步骤201;
步骤221:向卡连接器发送第二成功响应状态码,然后返回步骤201;
步骤222:从第三指令中读取第三指令的第一计算结果,然后用第一会话密钥对第三指令数据域进行解密,解密后的结果替换原来的部分,然后用第二会话密钥和卡片信息值对第三指令的指定部分进行计算,得到第三指令的第二计算结果;
本实施例中,第三指令的后8字节为第三指令的第一计算结果;用第一会话密钥对第三指令的数据域采用指定方式进行解密,指定方式优选为3DES-CBC方式;第三指令的指定部分为除最后8字节外的其余部分。卡片用第二会话密钥和卡片信息值对第三指令的指定部分进行计算,得到8字节第三指令的第二计算结果,例如,第三指令为:
80E80000C8C4820FAF010022DECAFFED02020200010AD15600013203010302010D6A617661636172642F46696C650200210022002100000015011A00C00B71000A01BA002D04D11F4200000000000002000004001502000107A0000000620001020107A00000006201010600C00000008000010001010000010019008000040003010700000026002B00300035003C0043004800000E00FF000801000000880000260100010905000000A300AA00B200D500F800003201FF000B0200000121013500800001D81A3A70053F941A;其中第三指令的第一计算结果为:D81A3A70053F941A;
步骤223:判断第三指令的第一计算结果和第三指令的第二计算结果是否相同;
是,执行步骤225;否,执行步骤224。
步骤224:向卡连接器发送第三失败响应状态码,然后返回步骤201;
步骤225:向卡连接器发送第三成功响应状态码,然后返回步骤201;
实施例3
参见图3,本实施例3提供了一种安全下载应用的方法。
步骤301:等待接收内部初始化命令;
步骤302:判断是否接收到内部初始化命令;
是,执行步骤303;否,返回步骤301。
本实施例中,根据命令的前2字节判断接收到的是否为内部初始化命令,如果前2字节为0X8050,则为内部初始化命令,否则不为内部初始化命令。例如:80500000081122334455667788;
步骤303:从内部初始化命令中读取主机询问码,生成卡询问码并保存;
本实施例中,内部初始化命令后8字节为主机询问码,例如:1122334455667788;卡片生成6字节随机数作为卡询问码,例如:010203040506。
步骤304:生成第一会话密钥、第二会话密钥并保存,根据主机询问码、序列计数值、卡询问码生成第一数据块;
按照2字节第一常数+2字节序列计数值+12字节‘00’的格式生成第一派生数据,用第一密钥对第一派生数据采用3DES-CBC方式计算,得到第一会话密钥;例如,第一钥为:
01820001000000000000000000000000;第一会话密钥为:25C9794A1205FF244F5FA0378D2F8D59;
按照2字节第二常数+2字节序列计数值+12字节‘00’的格式生成第二派生数据,用第二内置密钥对第二派生数据采用3DES-CBC方式计算,得到第二会话密钥;例如,第二内置密钥为:
01010001000000000000000000000000;第二会话密钥为:9BED98891580C3B245FE9EC58BFA8D2A;
卡片按照2字节序列计数值+6字节卡询问码+8字节主机询问码+8000000000000000的格式,生成第一数据块,例如,第一数据块为:
000101020304050611223344556677888000000000000000;
步骤305:用第一会话密钥对第一数据块进行加密,得到第一加密结果;
本实施例中,用第一会话密钥对第一数据块采用3DES-CBC方式加密,得到8字节的第一加密结果,例如:6DF0F3DE2BAE36AA;
步骤306:向卡连接器发送包含第一加密结果、卡询问码、序列计数值的内部初始化响应;
本实施例中,内部初始化响应为:
00000000000000000000FF0200010102030405066DF0F3DE2BAE36AA9000;
步骤307:等待接收外部认证命令;
步骤308:判断是否收到外部认证命令;
是,执行步骤309;否,返回步骤307。
本实施例中,根据命令的前2字节判断是否为外部认证命令,如果前2字节为0X8482,则为外部认证命令,否则不为外部认证命令,例如:
84820300108E14AC21FAE976BF0FF4783B36D6CF61;
步骤309:从外部认证命令中读取认证数据和卡连接器计算结果;
本实施例中,外部认证命令后8字节为卡连接器计算结果,例如:0FF4783B36D6CF61;
步骤310:从认证数据中读取第三加密结果,根据主机询问码、序列计数值、卡询问码生成第四数据块,用第一会话密钥对第四数据块进行加密,得到第四加密结果;
本实施例中,第四数据块生成格式为:序列计数值+卡询问码+主机询问码+8000000000000000。
例如,第四数据块为:
000101020304050611223344556677888000000000000000;
用第一会话密钥采用指定方式对第四数据块进行加密,指定方式优选为3DES-CBC,得到8字节的第四加密结果,例如:8E14AC21FAE976BF。
步骤311:判断第三加密结果和第四加密结果是否相同;
是,执行步骤313;否,执行步骤312。
步骤312:向卡连接器发送错误信息;
步骤313:用第二会话密钥和卡片信息值对认证数据进行计算,得到卡片计算结果;
本实施例中,卡片用第二会话密钥和卡片信息值对认证数据进行计算,得到8字节卡片计算结果,例如:0FF4783B36D6CF61。其中,卡片信息值初始值为8字节的‘00’。
步骤314:判断卡连接器计算结果和卡片计算结果是否相同;
是,执行步骤316;否,执行步骤315。
步骤315:向卡连接器发送外部认证失败响应状态码;
步骤316:向卡连接器发送外部认证成功响应状态码;
步骤317:等待接收第一指令;
步骤318:判断是否收到第一指令;
是,执行步骤319;否,返回步骤317。
本实施例中,根据指令的前2字节判断是否为第一指令,如果前2字节为0X84E4,则为第一指令,否则不为第一指令,例如:
84E4000018B72E016B0F470C92D411F4A2D480FA43BC372CF359FF2C3D;
步骤319:从第一指令中读取第一指令的第一计算结果;
本实施例中,读取第一指令的后8字节为第一指令的第一计算结果,例如:BC372CF359FF2C3D;
步骤320:用第一会话密钥对第一指令的数据域进行解密,解密后的结果替换原来的部分,然后用第二会话密钥和卡片信息值对第一指令的指定部分进行计算,得到第一指令的第二计算结果;
本实施例中,用第一会话密钥对第一指令的数据域采用指定方式进行解密,指定方式优选为3DES-CBC方式;第一指令的指定部分为除最后8字节外的其余部分。卡片用第二会话密钥和卡片信息值对第一指令的指定部分进行计算,得到8字节第一指令的第二计算结果。
步骤321:判断第一指令的第一计算结果和第一指令的第二计算结果是否相同;
是,执行步骤323;否,执行步骤322。
步骤322:向卡连接器发送第一失败响应状态码;
步骤323:向卡连接器发送第一成功响应状态码;
步骤324:等待接收第二指令;
步骤325:判断是否收到第二指令;
是,执行步骤326;否,返回步骤324。
本实施例中,根据指令的前2字节判断是否为第二指令,如果前2字节为0X80E6,则为第二指令,否则不为第二指令,例如:
80E60200207FE8E33C89B00BF36C4A9918434F782844E780899AC6C94000B8F28A960597C1;
步骤326:从第二指令中读取第二指令的第一计算结果;
本实施例中,第二指令的后8字节为第二指令的第一计算结果,例如:00B8F28A960597C1;
步骤327:用第一会话密钥对第二指令的数据域进行解密,解密后的结果替换原来的部分,然后用第二会话密钥和卡片信息值对第二指令的指定部分进行计算,得到第二指令的第二计算结果。
本实施例中,用第一会话密钥对第二指令的数据域采用指定方式进行解密,指定方式优选为3DES-CBC方式。第二指令的指定部分为除最后8字节外的其余部分。卡片用第二会话密钥和卡片信息值对第二指令的指定部分进行计算,得到8字节第二指令的第二计算结果。
步骤328:判断第二指令的第一计算结果和第二指令的第二计算结果是否相同;
是,执行步骤330;否,执行步骤329。
步骤329:向卡连接器发送第二失败响应状态码;
步骤330:向卡连接器发送第二成功响应状态码;
步骤331:等待接收第三指令;
步骤332:判断是否收到第三指令;
是,执行步骤333;否,返回步骤331。
本实施例中,根据指令前2字节判断是否为第三指令,如果前2字节为0X80E8,则为第三指令,否则不为第三指令,例如:
80E80000C8C4820FAF010022DECAFFED02020200010AD15600013203010302010D6A617661636172642F46696C650200210022002100000015011A00C00B71000A01BA002D04D11F4200000000000002000004001502000107A0000000620001020107A00000006201010600C00000008000010001010000010019008000040003010700000026002B00300035003C0043004800000E00FF000801000000880000260100010905000000A300AA00B200D500F800003201FF000B0200000121013500800001D81A3A70053F941A;
步骤333:从第三指令中读取第三指令的第一计算结果;
本实施例中,第三指令的后8字节为第三指令的第一计算结果,例如:D81A3A70053F941A;
步骤334:用第一会话密钥对第三指令数据域进行解密,解密后的结果替换原来的部分,然后用第二会话密钥和卡片信息值对第三指令的指定部分进行计算,得到第三指令的第二计算结果;
本实施例中,用第一会话密钥对第三指令的数据域采用指定方式进行解密,指定方式优选为3DES-CBC方式;第三指令的指定部分为除最后8字节外的其余部分。卡片用第二会话密钥和卡片信息值对第三指令的指定部分进行计算,得到8字节第三指令的第二计算结果。
步骤335:判断第三指令的第一计算结果和第三指令的第二计算结果是否相同;
是,执行步骤337;否,执行步骤336。
步骤336:向卡连接器发送第三失败响应状态码;
步骤337:向卡连接器发送第三成功响应状态码;
步骤338:等待接收第四指令
步骤339:判断是否收到第四指令;
是,执行步骤340;否,返回步骤338。
本实施例中,根据命令的前3字节判断是否为第四指令,如果前三字节为0X84E60C,则为第四指令,例如:
84E60C003807D2C6A5A82486A810A958901D59B20914BFAD0C5C729292927E0F3D207874AD67412DBFF2ECDC7A1F628516F9D6C54CB32AB42CE60364EE。
步骤340:执行相应操作并向卡连接器发送第四响应状态码;
本实施例中,如果卡片成功执行第四指令,则向卡连接器发送值为9000的第四响应状态码。
步骤341:等待接收应用;
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (30)

1.一种安全下载应用的方法,其特征是,包括:
步骤S1:卡连接器执行请求安装应用指令,判断是否成功读取到第一指令;是,执行步骤S2;否,输出错误信息,退出安装;
步骤S2:所述卡连接器向卡片发送第一指令;
步骤S3:所述卡片接收第一指令并从中读取第一指令的第一计算结果,然后与对第一指令进行计算得到的第一指令的第二计算结果比较;相同,向所述卡连接器发送第一成功响应状态码,然后,执行步骤S4;不相同,向所述卡连接器发送第一失败响应状态码,然后,退出安装;
步骤S4:所述卡连接器判断是否成功读取到下一条第一指令;是,返回步骤S2;否,执行步骤S5;
步骤S5:所述卡连接器判断是否成功读取到第二指令;是,执行步骤S6;否,输出错误信息,退出安装;
步骤S6:所述卡连接器向所述卡片发送第二指令;
步骤S7:所述卡片接收第二指令并从中读取第二指令的第一计算结果,然后与对第二指令进行计算得到的第二指令的第二计算结果比较;相同,向所述卡连接器发送第二成功响应状态码,然后,执行步骤S8;不相同,向所述卡连接器发送第二失败响应状态码,然后,退出安装;
步骤S8:所述卡连接器判断是否成功读取到下一条第二指令;是,返回步骤S6;否,执行步骤S9;
步骤S9:所述卡连接器判断是否成功读取到第三指令;是,执行步骤S10;否,输出错误信息,退出安装;
步骤S10:所述卡连接器向所述卡片发送第三指令;
步骤S11:所述卡片接收第三指令并从中读取第三指令的第一计算结果,然后与对第三指令进行计算得到的第三指令的第二计算结果比较;相同,向所述卡连接器发送第三成功响应状态码,然后,执行步骤S12;不相同,向所述卡连接器发送第三失败响应状态码,然后,退出安装;
步骤S12:所述卡连接器判断是否成功读取到下一条第三指令;是,返回步骤S10;否,执行步骤S13;
步骤S13:所述卡连接器判断是否成功执行激活指令;是,执行步骤S14;否,退出安装;
步骤S14:所述卡连接器判断是否成功读取到第四指令;是,执行步骤S15;否,退出安装;
步骤S15:所述卡连接器向所述卡片发送第四指令;
步骤S16:所述卡片接收第四指令并执行相应操作,然后向所述卡连接器发送第四响应状态码;
步骤S17:所述卡连接器判断第四响应状态码是否等于预设值;是,向所述卡片发送应用;否,退出安装。
2.根据权利要求1所述的方法,其特征是,所述步骤S1之前包括:
步骤A1:所述卡连接器生成主机询问码并保存,向所述卡片发送包含所述主机询问码的内部初始化命令;
步骤A2:所述卡片接收所述内部初始化命令并从中读取主机询问码,生成并保存卡询问码、第一会话密钥以及第二会话密钥,根据主机询问码、序列计数值、卡询问码生成第一数据块,用第一会话密钥对第一数据块进行加密,得到第一加密结果,向所述卡连接器发送包含第一加密结果、卡询问码、序列计数值的内部初始化响应;
步骤A3:所述卡连接器接收内部初始化响应,从中读取第一加密结果、卡询问码、序列计数值,然后执行包含内部初始化响应的验证命令,生成并保存第三会话密钥和第四会话密钥,根据主机询问码、序列计数值、卡询问码生成第二数据块,用第三会话密钥对第二数据块进行加密得到第二加密结果,将第二加密结果与第一加密结果进行比较;相同,执行步骤A4;否,输出错误信息,退出安装;
步骤A4:所述卡连接器根据主机询问码、序列计数值、卡询问码生成第三数据块,用第三会话密钥对第三数据块进行加密,得到第三加密结果,并将其作为认证数据的一部分,用第四会话密钥和卡连接器信息值对认证数据进行计算,得到卡连接器计算结果,向所述卡片发送包含认证数据和卡连接器计算结果的外部认证命令;
步骤A5:所述卡片接收外部认证命令并从中读取认证数据和卡连接器计算结果,从认证数据中读取第三加密结果,根据主机询问码、序列计数值、卡询问码生成第四数据块,用第一会话密钥对第四数据块进行加密得到第四加密结果,将第四加密结果与第三加密结果比较;相同,执行步骤A6;不相同,发送错误信息,退出安装;
步骤A6:所述卡片用第二会话密钥和卡片信息值对认证数据进行计算,将得到的卡片计算结果与卡连接器计算结果比较;相同,向所述卡连接器发送外部认证成功响应,然后,执行步骤A7;不相同,发送错误信息,退出安装;
步骤A7:所述卡连接器判断请求安装的应用是否存在;是,执行步骤S1;否,退出安装。
3.根据权利要求2所述的方法,其特征是,所述步骤A2中所述的生成第一会话密钥具体包括:所述卡片用序列计数值、第一常量、预设常量生成第一派生数据,再用内置的第一密钥对所述第一派生数据采用指定方式进行加密,生成第一会话密钥;
所述卡片生成第二会话密钥,具体包括:所述卡片用所述序列计数值、第二常量、预设常量生成第二派生数据,再用内置的第二密钥对所述第二派生数据采用指定方式进行加密,生成第二会话密钥;
所述根据主机询问码、序列计数值、卡询问码生成第一数据块,具体包括:按照所述主机询问码、所述序列计数值、所述卡询问码、第一变量的顺序进行拼接得到所述第一数据块;
所述用第一会话密钥对第一数据块进行加密,具体包括:用所述第一会话密钥对所述第一数据块采用指定方式进行加密。
4.根据权利要求2所述的方法,其特征是,所述步骤A3中所述验证命令具体包括:卡连接器构造的包含内部初始化响应并且以指定字节作为数据头的命令;生成第三会话密钥具体包括:所述卡连接器用序列计数值、第一常量、预设常量生成第三派生数据,再用内置的第一密钥对所述第三派生数据采用指定方式进行加密,生成第三会话密钥;
所述卡连接器生成第四会话密钥,具体包括:所述卡连接器用序列计数值、第二常量、预设常量生成第四派生数据,再用内置的第二密钥对所述第四派生数据采用所述指定方式进行加密,生成第四会话密钥;
所述根据主机询问码、序列计数值、卡询问码生成第二数据块,具体包括:按照所述主机询问码、所述序列计数值、所述卡询问码、第一变量的顺序进行拼接得到所述第二数据块;
所述用第三会话密钥对第二数据块进行加密,具体包括:用所述第三会话密钥对所述第二数据块采用指定方式进行加密。
5.根据权利要求2所述的方法,其特征是,所述步骤A4中所述卡连接器根据主机询问码、序列计数值、卡询问码生成第三数据块,具体包括:按照所述序列计数值、所述卡询问码、所述主机询问码、第一变量的顺序进行拼接得到所述第三数据块;
所述用第三会话密钥对所述第三数据块进行加密,具体包括:用所述第三会话密钥对所述第三数据块采用指定方式进行加密。
6.根据权利要求2所述的方法,其特征是,所述步骤A5中所述卡片根据主机询问码、序列计数值、卡询问码生成第四数据块,具体包括:按照所述序列计数值、所述卡询问码、所述主机询问码、第一变量的顺序进行拼接得到所述第四数据块;
所述用第一会话密钥对所述第四数据块进行加密,具体包括:用所述第一会话密钥对所述第四数据块采用指定方式进行加密。
7.根据权利要求2所述的方法,其特征是,所述步骤A7中所述卡连接器判断请求安装的应用是否存在,具体包括:所述卡连接器根据请求安装应用指令的指定字符判断请求安装的应用是否存在。
8.根据权利要求2所述的方法,其特征是,所述步骤S1中所述第一指令,具体为:第一动作指令指向的第一指令。
9.根据权利要求8所述的方法,其特征是,所述读取第一指令具体包括:根据第四会话密钥和卡连接器信息值对第一指令进行计算得到第一指令的第一计算结果,然后将其附加在第一指令右端,成为新的第一指令,用第三会话密钥对第一指令的数据域采用指定方式进行加密,加密后的结果替换原来的部分,得到最终的第一指令。
10.根据权利要求2所述的方法,其特征是,所述步骤S3中所述卡片读取第一指令的第一计算结果,然后与对第一指令进行计算得到的第一指令的第二计算结果比较,具体包括:读取所述第一指令的后8字节得到第一指令的第一计算结果,然后用第一会话密钥对第一指令的数据域采用指定方式进行解密,用解密得到的结果替换原来的数据域,然后用第二会话密钥和卡片信息值对第一指令的指定部分进行计算,得到第一指令的第二计算结果,比较第一指令的第一计算结果和第一指令的第二计算结果。
11.根据权利要求1所述的方法,其特征是,所述步骤S5之前还包括:判断第二动作指令指向的第一文件是否存在,是,执行步骤S5;否,输出错误信息,退出安装。
12.根据权利要求2所述的方法,其特征是,所述步骤S5中所述第二指令,具体为:第一文件和第三动作指令指向的第二指令。
13.根据权利要求12所述的方法,其特征是,所述读取第二指令具体包括:使用第四会话密钥和卡连接器信息值对第二指令进行计算,得到第二指令的第一计算结果,然后将其附加在第二指令右端,成为新的第二指令,用第三会话密钥对第二指令的数据域采用指定方式进行加密,加密后的结果替换原来的部分,得到最终的第二指令。
14.根据权利要求2所述的方法,其特征是,所述步骤S7中所述卡片读取第二指令的第一计算结果,然后与对第二指令进行计算得到的第二指令的第二计算结果比较,具体包括:读取所述第二指令的后8字节得到第二指令的第一计算结果,然后用第一会话密钥对第二指令的数据域采用指定方式进行解密,解密后的结果替换原来的部分,然后用第二会话密钥和卡片信息值对第二指令的指定部分进行计算,得到第二指令的第二计算结果,比较第二指令的第一计算结果和第二指令的第二计算结果。
15.根据权利要求1所述的方法,其特征是,所述步骤S9之前还包括:所述卡连接器判断第四动作指令指向的第二文件是否存在;是,执行步骤S9;否,输出错误信息,退出安装。
16.根据权利要求2所述的方法,其特征是,所述步骤S9中所述第三指令,具体为:第二文件和第五动作指令指向的第三指令。
17.根据权利要求16所述的方法,其特征是,所述读取第三指令具体包括:使用第四会话密钥和卡连接器信息值对第三指令进行计算,得到第三指令的第一计算结果,然后将其附加在第三指令右端,成为新的第三指令,用第三会话密钥对第三指令的数据域采用指定方式进行加密,加密后的结果替换原来的部分,得到最终的第三指令。
18.根据权利要求2所述的方法,其特征是,所述步骤S11中所述卡片读取第三指令的第一计算结果,然后与对第三指令进行计算得到的第三指令的第二计算结果比较,具体包括:读取所述第三指令的后8字节得到第三指令的第一计算结果,然后用第一会话密钥对第三指令的数据域采用指定方式进行解密,解密后的结果替换原来的部分,然后用第二会话密钥和卡片信息值对第三指令的指定部分进行计算,得到第三指令的第二计算结果,比较第三指令的第一计算结果和第三指令的第二计算结果。
19.根据权利要求1所述的方法,其特征是,所述步骤S13之前还包括:所述卡连接器判断第二动作指令指向的下一条第一文件是否存在;是,返回步骤S5;否,执行步骤S13。
20.根据权利要求1所述的方法,其特征是,所述步骤S13中所述的卡连接器判断是否成功执行激活指令,具体包括:判断可激活次数是否大于0;如果大于0,则执行激活操作,然后可激活次数减1,否则,退出安装。
21.一种安全下载应用的方法,其特征是,包括:
步骤B1:卡片接收指令并判断指令类型;
如果是内部初始化命令,则执行步骤B2;
如果是外部认证命令,则执行步骤B3;
如果是第一指令,则执行步骤B5;
如果是第二指令,则执行步骤B6;
如果是第三指令,则执行步骤B7;
如果是其他命令,则根据所述其他命令执行相应操作,然后返回步骤B1;
步骤B2:所述卡片从内部初始化命令中读取主机询问码,生成并保存卡询问码、第一会话密钥以及第二会话密钥,生成第一数据块,对第一数据块加密,得到第一加密结果,向卡连接器发送内部初始化响应,然后返回步骤B1;
步骤B3:所述卡片从外部认证命令中读取认证数据和卡连接器计算结果,再从认证数据中读取第三加密结果,生成第四数据块,对第四数据块加密得到第四加密结果,将第四加密结果与所述第三加密结果比较;相同,执行步骤B4;不相同,向所述卡连接器发送错误信息,然后返回步骤B1;
步骤B4:所述卡片对认证数据进行计算得到卡片计算结果,将卡片计算结果与所述卡连接器计算结果比较,相同,向所述卡连接器发送外部认证成功响应状态码,然后返回步骤B1;不相同,向所述卡连接器发送外部认证失败响应状态码,然后返回步骤B1;
步骤B5:所述卡片从第一指令中读取第一指令的第一计算结果,对第一指令进行解密,得到的解密结果替换原来的部分,然后对第一指令进行计算得到第一指令的第二计算结果,将第一指令的第二计算结果与第一指令的第一计算结果进行比较;相同,向所述卡连接器发送第一成功响应状态码,然后返回步骤B1;不相同,向所述卡连接器发送第一失败响应状态码,然后返回步骤B1;
步骤B6:所述卡片从第二指令中读取第二指令的第一计算结果,对第二指令进行解密,得到的解密结果替换原来的部分,然后对第二指令进行计算得到第二指令的第二计算结果,将第二指令的第二计算结果与第二指令的第一计算结果进行比较;相同,向所述卡连接器发送第二成功响应状态码,然后返回步骤B1;不相同,向所述卡连接器发送第二失败响应状态码,然后返回步骤B1;
步骤B7:所述卡片从第三指令中读取第三指令的第一计算结果,对第三指令进行解密,得到的解密结果替换原来的部分,然后对第三指令进行计算得到第三指令的第二计算结果,将第三指令的第二计算结果与第三指令的第一计算结果进行比较;相同,向所述卡连接器发送第三成功响应状态码,然后返回步骤B1;不相同,向所述卡连接器发送第三失败响应状态码,然后返回步骤B1。
22.根据权利要求21所述的方法,其特征是,所述步骤B2中所述的生成第一会话密钥,具体为:所述卡片用序列计数值、第一常量、预设常量生成第一派生数据,再用内置的第一密钥对所述第一派生数据采用指定方式进行加密,生成第一会话密钥;
所述卡片生成第二会话密钥,具体包括:所述卡片用所述序列计数值、第二常量、第二派生数据,再用内置的第二密钥对所述第二派生数据采用所述指定方式进行加密,生成第二会话密钥;
所述生成第一数据块,具体包括:按照所述主机询问码、所述序列计数值、所述卡询问码、第一变量的顺序进行拼接得到所述第一数据块;
所述对第一数据块进行加密,具体包括:用所述第一会话密钥对所述第一数据块采用指定方式进行加密;
所述向卡连接器发送的内部初始化响应,具体为:包含第一加密结果、卡询问码、序列计数值的内部初始化响应。
23.根据权利要求21所述的方法,其特征是,所述步骤B3中所述生成第四数据块,具体为:按照序列计数值、所述卡询问码、所述主机询问码、第一变量的顺序进行拼接得到所述第四数据块;
所述对所述第四数据块进行加密,具体包括:用所述第一会话密钥对所述第四数据块采用指定方式进行加密。
24.根据权利要求21所述的方法,其特征是,所述步骤B4中所述的对认证数据进行计算,具体为:所述卡片用第二会话密钥和卡片信息值对认证数据进行计算。
25.根据权利要求21所述的方法,其特征是,所述步骤B5或B6或B7中所述的进行解密,具体为:所述卡片用第一会话密钥对指令的数据域采用指定方式解密;
所述的对指令进行计算,具体为:用第二会话密钥和卡片信息值对指令的指定部分进行计算。
26.一种安全下载应用的方法,其特征是,包括:
步骤C1:卡片等待接收内部初始化命令,判断是否接收到内部初始化命令;是,执行步骤C2;否,返回步骤C1;
步骤C2:所述卡片从内部初始化命令中读取主机询问码,生成并保存卡询问码、第一会话密钥以及第二会话密钥,生成第一数据块,对第一数据块加密,得到第一加密结果,向卡连接器发送内部初始化响应,执行步骤C3;
步骤C3:所述卡片等待接收外部认证命令,判断是否接收到外部认证命令;是,执行步骤C4;否,返回步骤C3;
步骤C4:所述卡片从外部认证命令中读取认证数据和卡连接器计算结果,再从认证数据中读取第三加密结果,生成第四数据块,对第四数据块加密得到第四加密结果,将第四加密结果与所述第三加密结果比较;相同执行步骤C5;不相同,向卡连接器发送错误信息;
步骤C5:所述卡片对认证数据进行计算得到卡片计算结果,将卡片计算结果与所述卡连接器计算结果比较,相同,向所述卡连接器发送外部认证成功响应状态码,然后执行步骤C6;不相同,向所述卡连接器发送外部认证失败响应状态码;
步骤C6:所述卡片等待接收第一指令,判断是否接收到第一指令;是,执行步骤C7;否,返回步骤C6;
步骤C7:所述卡片从第一指令中读取第一指令的第一计算结果,对第一指令进行解密,得到的解密结果替换原来的部分,然后对第一指令进行计算得到第一指令的第二计算结果,将第一指令的第二计算结果与第一指令的第一计算结果进行比较;相同,向所述卡连接器发送第一成功响应状态码,然后执行步骤C8;不相同,向所述卡连接器发送第一失败响应状态码;
步骤C8:所述卡片等待接收第二指令,判断是否接收到第二指令;是,执行步骤C9;否,返回步骤C8;
步骤C9:所述卡片从第二指令中读取第二指令的第一计算结果,对第二指令进行解密,得到的解密结果替换原来的部分,然后对第二指令进行计算得到第二指令的第二计算结果,将第二指令的第二计算结果与第二指令的第一计算结果进行比较;相同,向所述卡连接器发送第二成功响应状态码,然后执行步骤C10;不相同,向所述卡连接器发送第二失败响应状态码;
步骤C10:所述卡片等待接收第三指令,判断是否接收到第三指令;是,执行步骤C11;否,返回步骤C10;
步骤C11:所述卡片从第三指令中读取第三指令的第一计算结果,对第三指令进行解密,得到的解密结果替换原来的部分,然后对第三指令进行计算得到第三指令的第二计算结果,将第三指令的第二计算结果与第三指令的第一计算结果进行比较;相同,向所述卡连接器发送第三成功响应状态码,然后执行步骤C12;不相同,向所述卡连接器发送第三失败响应状态码;
步骤C12:所述卡片等待接收第四指令,判断是否接收到第四指令;是,执行所述第四指令,等待接收应用;否,返回步骤C12。
27.根据权利要求26所述的方法,其特征是,所述步骤C2中所述的生成第一会话密钥,具体为:所述卡片用序列计数值、第一常量、预设常量生成第一派生数据,再用内置的第一密钥对所述第一派生数据采用指定方式进行加密,生成第一会话密钥;
所述卡片生成第二会话密钥,具体包括:所述卡片用所述序列计数值、第二常量、预设常量生成第二派生数据,再用内置的第二密钥对所述第二派生数据采用所述指定方式进行加密,生成第二会话密钥;
所述生成第一数据块,具体包括:按照所述主机询问码、所述序列计数值、所述卡询问码、第一变量的顺序进行拼接得到所述第一数据块;
所述对第一数据块进行加密,具体包括:用所述第一会话密钥对所述第一数据块采用指定方式进行加密;
所述向卡连接器发送内部初始化响应,具体为:包含第一加密结果、卡询问码、序列计数值的内部初始化响应。
28.根据权利要求26所述的方法,其特征是,所述步骤C4中所述生成第四数据块,具体为:按照序列计数值、所述卡询问码、所述主机询问码、第一变量的顺序进行拼接得到所述第四数据块;
所述对所述第四数据块进行加密,具体包括:用所述第一会话密钥对所述第四数据块采用指定方式进行加密。
29.根据权利要求26所述的方法,其特征是,所述步骤C5中所述的对认证数据进行计算,具体为:所述卡片用第二会话密钥和卡片信息值对认证数据进行计算。
30.根据权利要求26所述的方法,其特征是,所述步骤C7或C9或C11中所述的进行解密,具体为:所述卡片用第一会话密钥对指令的数据域采用指定方式解密;
所述的对指令进行计算,具体为:用第二会话密钥和卡片信息值对指令的指定部分进行计算。
CN201210429244.2A 2012-10-31 2012-10-31 一种安全下载应用的方法 Active CN102916805B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN201210429244.2A CN102916805B (zh) 2012-10-31 2012-10-31 一种安全下载应用的方法
US14/390,045 US9182967B2 (en) 2012-10-31 2013-10-21 Method for safely downloading application
PCT/CN2013/085603 WO2014067406A1 (zh) 2012-10-31 2013-10-21 一种安全下载应用的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210429244.2A CN102916805B (zh) 2012-10-31 2012-10-31 一种安全下载应用的方法

Publications (2)

Publication Number Publication Date
CN102916805A CN102916805A (zh) 2013-02-06
CN102916805B true CN102916805B (zh) 2015-04-15

Family

ID=47615047

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210429244.2A Active CN102916805B (zh) 2012-10-31 2012-10-31 一种安全下载应用的方法

Country Status (3)

Country Link
US (1) US9182967B2 (zh)
CN (1) CN102916805B (zh)
WO (1) WO2014067406A1 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102916805B (zh) * 2012-10-31 2015-04-15 飞天诚信科技股份有限公司 一种安全下载应用的方法
CN104063249A (zh) * 2014-06-30 2014-09-24 南通国芯微电子有限公司 一种程序脱机下载装置及其下载方法
CN104679569A (zh) * 2015-03-20 2015-06-03 南通国芯微电子有限公司 一种编程方法
EP3086585B1 (en) * 2015-04-23 2019-12-11 Nxp B.V. Method and system for securing data communicated in a network
WO2019133682A1 (en) * 2017-12-29 2019-07-04 Nanthealth, Inc. User interface log validation via blockchain system and methods
CN112702733B (zh) * 2020-12-30 2022-10-04 飞天诚信科技股份有限公司 一种读卡终端及其工作方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6339824B1 (en) * 1997-06-30 2002-01-15 International Business Machines Corporation Method and apparatus for providing public key security control for a cryptographic processor
CN102377570A (zh) * 2011-11-07 2012-03-14 飞天诚信科技股份有限公司 一种生成动态口令的方法和装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030204730A1 (en) * 2002-04-29 2003-10-30 Barmettler James W. Secure transmission and installation of an application
US7434259B2 (en) * 2002-10-21 2008-10-07 Microsoft Corporation Method for prompting a user to install and execute an unauthenticated computer application
JP2011170465A (ja) * 2010-02-16 2011-09-01 Ricoh Co Ltd ソフトウェア配信システム、ソフトウェア配信方法およびプログラム
WO2012107929A2 (en) 2011-02-09 2012-08-16 Conduit Ltd Application synchronization among multiple computing devices
CN102916805B (zh) * 2012-10-31 2015-04-15 飞天诚信科技股份有限公司 一种安全下载应用的方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6339824B1 (en) * 1997-06-30 2002-01-15 International Business Machines Corporation Method and apparatus for providing public key security control for a cryptographic processor
CN102377570A (zh) * 2011-11-07 2012-03-14 飞天诚信科技股份有限公司 一种生成动态口令的方法和装置

Also Published As

Publication number Publication date
US9182967B2 (en) 2015-11-10
CN102916805A (zh) 2013-02-06
WO2014067406A1 (zh) 2014-05-08
US20150227353A1 (en) 2015-08-13

Similar Documents

Publication Publication Date Title
CN102916805B (zh) 一种安全下载应用的方法
US20230306419A1 (en) Payment system
CN108027926B (zh) 基于服务的支付的认证系统和方法
CN109120649B (zh) 密钥协商方法、云服务器、设备、存储介质以及系统
KR101517286B1 (ko) 보안 요소를 위한 운영체제 업데이트
CN107743067B (zh) 数字证书的颁发方法、系统、终端以及存储介质
EP4081921B1 (en) Contactless card personal identification system
CN105827655A (zh) 一种智能密钥设备及其工作方法
US20220038287A1 (en) Protection device and dongle and method for using the same
CN104471581A (zh) 利用媒体安全控制器保护媒体项目
US20110276807A1 (en) Remote update method for firmware
WO2015085754A1 (zh) 一种安全通讯的方法
CN105787727B (zh) 一种hce脱机支付系统及实现方法
CN107395751A (zh) 一种智能家电远程控制系统和方法
CN105847000A (zh) 令牌产生方法以及基于该令牌产生方法的通信系统
CN106650506A (zh) 电子电路的受控启动
CN103905400A (zh) 一种业务认证方法、装置及系统
CN104794394A (zh) 一种虚拟机启动校验的方法及装置
CN105721443A (zh) 一种链路会话密钥协商方法及装置
CN110572396A (zh) 一种功能使用授权的控制方法和系统
CN104885425B (zh) 使得客户端能够提供服务器实体的技术
CN103326863B (zh) 一种电子签名工具的签名方法
CN104835038A (zh) 一种联网支付装置及方法
CN107968764B (zh) 一种认证方法及装置
CN104702566A (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
C14 Grant of patent or utility model
GR01 Patent grant