CN109660341B - 一种在应用通信中保护数据安全的实现方法及*** - Google Patents

一种在应用通信中保护数据安全的实现方法及*** Download PDF

Info

Publication number
CN109660341B
CN109660341B CN201811536820.7A CN201811536820A CN109660341B CN 109660341 B CN109660341 B CN 109660341B CN 201811536820 A CN201811536820 A CN 201811536820A CN 109660341 B CN109660341 B CN 109660341B
Authority
CN
China
Prior art keywords
random number
card
module
terminal
ciphertext
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
CN201811536820.7A
Other languages
English (en)
Other versions
CN109660341A (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 CN201811536820.7A priority Critical patent/CN109660341B/zh
Publication of CN109660341A publication Critical patent/CN109660341A/zh
Application granted granted Critical
Publication of CN109660341B publication Critical patent/CN109660341B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • 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/083Network architectures or network communication protocols for network security for authentication of entities using passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • H04L9/0897Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage involving additional devices, e.g. trusted platform module [TPM], smartcard or USB
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2212/00Encapsulation of packets

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Lock And Its Accessories (AREA)

Abstract

本发明提供一种在应用通信中保护数据安全的实现方法及***,该方法包括:终端给蓝牙卡片的蓝牙芯片发送安全通道初始化指令;蓝牙芯片对安全通道初始化指令进行解析得到APDU指令并发送给蓝牙卡片的安全芯片;安全芯片生成新的APDU指令并发送给蓝牙芯片进行封装后发送给终端;终端对封装结果进行解析并将解析结果发送给后台服务器进行验证;验证通过时终端将安全通道认证指令发送给蓝牙芯片;蓝牙芯片对安全通道认证指令进行解析得到APDU指令并发送给安全芯片进行验证;蓝牙芯片对安全芯片的验证结果进行封装后发送给终端;如终端判断封装结果合法,则终端与蓝牙卡片使用安全通道过程密钥对两者之间的交互数据加密后进行通讯。

Description

一种在应用通信中保护数据安全的实现方法及***
技术领域
本发明涉及信息安全领域,尤其涉及一种在应用通信中保护数据安全的实现方法及***。
背景技术
现有技术中,IC卡与终端之间的通讯数据均以明文进行传输,容易被非法用户截取,存在很大安全隐患。目前蓝牙卡与可穿戴支付设备等产品应用范围越来越广,与标准IC卡的通信距离相比,蓝牙卡片通信距离较远(如10米),敏感信息容易泄露、数据容易被篡改,遭受重放攻击,所以需要建立一种加密机制来保证蓝牙卡或可穿戴设备与终端之间的通信中数据的安全。
发明内容
本发明的目的是为了克服现有技术的不足,提供一种在应用通信中保护数据安全的实现方法及***。
本发明提供了一种在应用通信中保护数据安全的实现方法,包括:
步骤S1:终端通过给蓝牙卡片发送选择应用指令选择对应的应用;
步骤S2:所述终端从后台服务器获取终端随机数;并将更新后的发送序列计数器和包含所述终端随机数的APDU指令封装成安全通道初始化指令,将所述安全通道初始化指令发送给所述蓝牙卡片内的蓝牙芯片;所述发送序列计数器的初始值为一随机数;
步骤S3:所述蓝牙芯片判断所述安全通道初始化指令中的发送序列计数器是否出现异常,是则给所述终端返回包括错误状态码的第一封装结果,否则从所述安全通道初始化指令的第一预设位置获取包含所述终端随机数的APDU指令,并将所述APDU指令发送给所述蓝牙卡片内的安全芯片,执行步骤S4;
步骤S4:所述安全芯片从接收到的APDU指令中获取终端随机数,生成卡片随机数,根据所述卡片随机数、所述终端随机数生成安全通道过程密钥和卡片密文;将包含所述卡片随机数和所述卡片密文的APDU指令发送给所述蓝牙芯片;
步骤S5:所述蓝牙芯片将安全通道初始化指令中的发送序列计数器、预设的通讯状态码、所述包含所述卡片随机数和所述卡片密文的APDU指令进行封装得到第一封装结果,并将所述第一封装结果发送给所述终端;
步骤S6:所述终端对所述第一封装结果进行解析,并将解析得到的卡片随机数和卡片密文发送给所述后台服务器进行验证;
步骤S7:当所述终端接收到所述后台服务器发送的报文信息时,保存所述报文信息中的安全通道过程密钥,更新发送序列计数器,将预设命令码、更新后的发送序列计数器、包括所述报文信息中的主机密文和MAC的APDU指令封装成安全通道认证指令,并将所述安全通道认证指令发送给所述蓝牙芯片;
步骤S8:所述蓝牙芯片判断所述安全通道认证指令中的发送序列计数器是否异常,是则给终端返回包括错误状态码的第二封装结果,执行步骤S11,否则从所述安全通道认证指令的第一预设位置获取包含所述主机密文和MAC的APDU指令,并将包含所述主机密文和MAC的所述APDU指令发送给所述安全芯片;
步骤S9:所述安全芯片从接收到的包含所述主机密文和MAC的所述APDU指令中获取所述主机密文和MAC,并对所述主机密文和MAC进行验证,如验证成功则给所述蓝牙芯片返回成功信息,执行步骤S10,如验证失败则给所述蓝牙芯片返回错误信息,执行步骤S10;
步骤S10:所述蓝牙芯片将安全通道认证指令中的发送序列计数器、预设通讯状态码、接收到的安全芯片返回的信息进行封装得到第二封装结果,并将所述第二封装结果发送给所述终端;
步骤S11:所述终端判断接收到第二封装结果是否合法,是则安全通道建立成功,执行步骤S12,否则结束;
步骤S12:所述终端与所述蓝牙卡片使用所述安全通道过程密钥对两者之间的交互数据加密后进行通讯。
本发明又提供了一种在应用通信中保护数据安全的实现***,包括终端和蓝牙卡片;所述蓝牙卡片包括蓝牙芯片和安全芯片;
所述终端包括:
发送选择模块,用于给蓝牙卡片发送选择应用指令选择对应的应用;
第一获取模块,用于从后台服务器获取终端随机数;
第一封装模块,用于将更新后的发送序列计数器和包含所述终端随机数的APDU指令封装成安全通道初始化指令,所述发送序列计数器的初始值为一随机数;
第一发送模块,用于将所述第一封装模块的安全通道初始化指令发送给所述蓝牙卡片内的蓝牙芯片;
第一接收模块,用于接收所述蓝牙芯片发送的第一封装结果;
第一解析模块,用于对所述第一接收模块接收到的第一封装结果进行解析;
第五发送模块,用于将所述第一解析模块解析得到的卡片随机数和卡片密文发送给所述后台服务器进行验证;
第五接收模块,用于接收所述后台服务器发送的报文信息;
第一保存模块,用于保存所述第五接收模块接收到的报文信息中的安全通道过程密钥;
第三封装模块,用于更新发送序列计数器,将预设命令码、更新后的发送序列计数器、包括所述报文信息中的主机密文和MAC的APDU指令封装成安全通道认证指令;
所述第一发送模块还用于将所述第三封装模块的安全通道认证指令发送给所述蓝牙芯片;
所述第一接收模块还用于接收所述蓝牙芯片发送的第二封装结果;
第三判断模块,用于判断所述第一接收模块接收到第二封装结果是否合法,是则安全通道建立成功,否则结束;
第一通讯模块,用于在安全通道建立成功之后使用所述安全通道过程密钥对与所述蓝牙卡片的交互数据加密后进行通讯;
所述蓝牙芯片包括:
第二接收模块,用于接收所述终端发送的安全通道初始化指令、所述安全通道认证指令;
第一判断模块,用于判断所述第二接收模块接收到的安全通道初始化指令中的发送序列计数器是否出现异常,是则给所述终端返回包括错误状态码的第一封装结果,否则触发第二获取模块;
所述第二获取模块,用于从所述安全通道初始化指令的第一预设位置获取包含所述终端随机数的APDU指令;
第二发送模块,用于将所述第二获取模块获取的包含所述终端随机数的APDU指令发送给所述蓝牙卡片内的安全芯片;
第四接收模块,用于接收所述安全芯片返回的信息和APDU指令;
第二封装模块,用于将安全通道初始化指令中的发送序列计数器、预设的通讯状态码、所述第四接收模块接收到的包含卡片随机数和卡片密文的APDU指令进行封装得到第一封装结果;
第四发送模块,用于将所述第二封装模块的第一封装结果发送给所述终端;
第二判断模块,用于判断所述第二接收模块接收到的安全通道认证指令中的发送序列计数器是否异常,是则给终端返回包括错误状态码的第二封装结果,否则触发第三获取模块;
所述第三获取模块,用于从所述安全通道认证指令的第一预设位置获取包含所述主机密文和MAC的APDU指令;
所述第二发送模块还用于将所述第三获取模块获取的包含所述主机密文和MAC的APDU指令发送给所述安全芯片;
第四封装模块,用于将安全通道认证指令中的发送序列计数器、预设通讯状态码、所述第四接收模块接收到的安全芯片返回的信息进行封装得到第二封装结果;
所述第四发送模块还用于将所述第四封装模块的第二封装结果发送给所述终端;
所述安全芯片包括:
第三接收模块,用于接收所述蓝牙芯片发送的包含终端随机数的APDU指令;还用于接收所述蓝牙芯片发送的包含主机密文和MAC的APDU指令;
第四获取模块,用于从所述第三接收模块接收到的包含终端随机数的APDU指令中获取终端随机数;
第一生成模块,用于生成卡片随机数;
第二生成模块,用于根据所述第一生成模块生成的卡片随机数、所述第四获取模块获取到的终端随机数生成安全通道过程密钥和卡片密文;
第三发送模块,用于将包含所述第一生成模块生成的卡片随机数和所述第二生成模块生成的卡片密文的APDU指令发送给所述蓝牙芯片;
第五获取模块,用于从所述第三接收模块接收到的包含主机密文和MAC的APDU指令中获取主机密文和MAC;
第一验证模块,用于对所述第五获取模块获取的主机密文和MAC进行验证;
所述第三发送模块还用于当所述第一验证模块验证成功时给所述蓝牙芯片返回成功信息,当所述第一验证模块验证失败时给所述蓝牙芯片返回错误信息;
所述蓝牙卡片还包括第二通讯模块,用于在安全通道建立成功之后使用所述安全通道过程密钥对与所述终端的交互数据加密后进行通讯。
本发明与现有技术相比,具有以下优点:
本发明技术方案中的蓝牙卡片内部主要架构是由蓝牙芯片与安全芯片构成的,蓝牙卡片与终端之间的传输数据通过安全芯片进行加密,增加数据的安全性;可以通过数据完整性、数据机密性等多个角度维护卡片中的数据的安全,防止了敏感信息泄露以及遭受重放攻击,加强终端内的应用软件和蓝牙卡片内的安全芯片之间通讯的安全性。
附图说明
图1为本发明实施例一提供的一种在应用通信中保护数据安全的实现方法流程图;
图2为本发明实施例二提供的一种在应用通信中保护数据安全的实现方法流程图;
图3为本发明实施例三提供的一种在应用通信中保护数据安全的实现***方框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
本发明实施例一提供一种在应用通信中保护数据安全的实现方法,如图1所示,包括:
步骤S1:终端通过给蓝牙卡片发送选择应用指令选择对应的应用;
在本实施例中,步骤S1包括:
步骤S1-0:终端给蓝牙卡片内的蓝牙芯片发送选择应用指令;
步骤S1-1:蓝牙芯片判断选择应用指令中的发送序列计数器是否异常,是则给终端返回包括错误状态码的第三封装结果,执行步骤S1-4,否则对选择应用指令进行解析,将第三解析结果发送给蓝牙卡片内的安全芯片;
具体的,步骤S1-1中的对选择应用指令进行解析具体为:蓝牙芯片判断选择应用指令中的序列计数器是否出现异常,是则给终端返回包括错误状态码的第三封装结果,否则蓝牙芯片从选择应用指令中的第二预设位置获取数据长度,根据数据长度从选择应用指令的第一预设位置获取相应长度的数据得到第三解析结果。
可选的,步骤S1-1中的将第三解析结果发送给蓝牙卡片内的安全芯片之前还包括:蓝牙芯片判断选择应用指令中的命令码是否为第一预设数据,是则将第三解析结果发送给蓝牙卡片内的安全芯片,否则判断命令码是否是预定指令码;如为预定指令码则根据命令码进行相应操作,如不为预定指令码则给终端返回包含错误信息的第三封装结果。
步骤S1-2:安全芯片根据第三解析结果判断是否存在对应的应用,是则给蓝牙芯片返回成功信息,执行步骤S1-3,否则给蓝牙芯片返回错误信息,执行步骤S1-3;
步骤S1-3:蓝牙芯片对预设通讯状态码、选择应用指令中的发送序列计数器和接收到的安全芯片返回的信息进行封装得到第三封装结果,并将第三封装结果发送给终端;
步骤S1-4:终端判断接收到蓝牙芯片返回的第三封装结果是否合法,是则执行步骤S2,否则结束;
在本实施例中,步骤S1-4包括:终端判断第三封装结果中的通讯状态码是否为第二预设数据且第三封装结果中的序列计数器是否与选择应用指令中的序列计数器相同,是则第三封装结果合法,执行步骤S2,否则第三封装结果不合法,结束。
步骤S2:终端从后台服务器获取终端随机数;并将更新后的发送序列计数器和包含终端随机数的APDU指令封装成安全通道初始化指令,将安全通道初始化指令发送给蓝牙卡片内的蓝牙芯片;
具体的,本实施例中的发送序列计数器的初始值为一随机数;
在本实施例中,步骤S2中的终端从后台服务器获取终端随机数,包括:终端给后台服务器发送申请终端随机数的消息;并接收后台服务器发送的终端随机数。
步骤S3:蓝牙芯片判断安全通道初始化指令中的发送序列计数器是否出现异常,是则给终端返回包括错误状态码的第一封装结果,否则从安全通道初始化指令的第一预设位置获取包含终端随机数的APDU指令,并将该APDU指令发送给蓝牙卡片内的安全芯片,执行步骤S4;
在本实施例中,步骤S3中的将该APDU指令发送给蓝牙卡片内的安全芯片之前还包括:蓝牙芯片判断安全通道初始化指令中的命令码是否为第一预设数据,是则将该APDU指令发送给蓝牙卡片内的安全芯片,否则判断安全通道初始化指令中的命令码是否是预定指令码;如为预定指令码则根据命令码进行相应操作,如不为预定指令码则给终端返回包含错误信息的第一封装结果。
步骤S4:安全芯片从接收到的APDU指令中获取终端随机数,生成卡片随机数,根据卡片随机数、终端随机数生成安全通道过程密钥和卡片密文;将包含卡片随机数和卡片密文的APDU指令发送给蓝牙芯片;
在本实施例中,步骤S4具体为:安全芯片从接收到的APDU指令中获取终端随机数,生成卡片随机数,根据卡片随机数、终端随机数、安全通道密钥、安全通道MAC密钥生成安全通道过程密钥和安全通道MAC过程密钥,根据安全通道过程密钥、卡片随机数与终端随机数生成卡片密文;将卡片随机数、卡片密文和卡片序列号发送给蓝牙芯片;
其中,根据卡片随机数、终端随机数、安全通道密钥、安全通道MAC密钥生成安全通道过程密钥和安全通道MAC过程密钥,根据安全通道过程密钥、卡片随机数与终端随机数生成卡片密文,包括:
步骤S41:安全芯片根据卡片随机数与终端随机数生成密钥分散因子;
可选的,步骤S41具体为:安全芯片将卡片随机数右半部分、终端随机数左半部分、卡片随机数左半部分、终端随机数右半部分顺序拼接组成密钥分散因子。
步骤S42:安全芯片根据安全通道密钥与密钥分散因子生成安全通道过程密钥,根据安全通道MAC密钥与密钥分散因子生成安全通道MAC过程密钥;
可选的,步骤S42具体为:安全芯片以安全通道过程密钥为密钥,对密钥分散因子进行预设算法计算得到安全通道过程密钥;安全芯片以安全通道MAC密钥为密钥,对密钥分散因子进行预设算法计算得到安全通道MAC过程密钥。
步骤S43:安全芯片利用安全通道过程密钥、卡片随机数与终端随机数生成卡片密文;
可选的,步骤S43具体为:安全芯片以安全通道过程密钥为密钥,以第一预设值为初始向量,根据预设算法对终端随机数与卡片随机数的拼接值进行计算得到卡片密文。
步骤S5:蓝牙芯片将安全通道初始化指令中的发送序列计数器、预设的通讯状态码、包含卡片随机数和卡片密文的APDU指令进行封装得到第一封装结果,并将第一封装结果发送给终端;
在本实施例中,步骤S5中的蓝牙芯片对安全通道初始化指令中的发送序列计数器、预设的通讯状态码、包含卡片随机数和卡片密文的APDU指令进行封装得到第一封装结果,包括:蓝牙芯片计算接收到的安全芯片发送的包含卡片随机数和卡片密文的APDU指令的长度,根据预设工作模式、发送序列计数器的值、通讯状态码、计算得到的APDU指令的长度和包含卡片随机数和卡片密文的APDU指令计算校验和,将预设工作模式、发送序列计数器的值、通讯状态码、计算得到的APDU指令的长度、包含卡片随机数和卡片密文的APDU指令和校验和进行封装得到第一封装结果。
步骤S6:终端对第一封装结果进行解析,并将解析得到的卡片随机数和卡片密文发送给后台服务器进行验证;
在本实施例中,步骤S6中的终端对第一封装结果进行解析,包括:终端从第一封装结果中的第二预设位置获取数据长度,根据数据长度从第一封装结果中的第第一预设位置获取相应长度的数据得到APDU指令,从APDU指令中获取卡片随机数和卡片密文。
步骤S7:当终端接收到后台服务器发送的报文信息时,保存报文信息中的安全通道过程密钥,更新发送序列计数器,将预设命令码、更新后的发送序列计数器、包括报文信息中的主机密文和MAC的APDU指令封装成安全通道认证指令,并将安全通道认证指令发送给蓝牙芯片;
可选的,在本实施例中,步骤S7之前还包括:
步骤A1:后台服务器根据卡片随机数、终端随机数和根密钥生成安全通道过程密钥和安全通道MAC过程密钥;
步骤A2:后台服务器验证卡片密文,如验证成功则执行步骤A3,否则给终端返回卡片密文验证失败信息,执行步骤A5;
具体的,步骤A2包括:
步骤A21:后台服务器根据安全通道过程密钥、卡片随机数、终端随机数生成第一验证密文;
可选的,步骤A21包括:后台服务器以安全通道过程密钥为密钥,以第一预设值为初始向量,对终端随机数与卡片随机数的拼接值进行预设算法计算得到第一验证密文;
步骤A22:后台服务器比较收到的卡片密文与生成的第一验证密文是否相等,是则执行步骤A3,否则给终端返回卡片密文验证失败信息,执行步骤A5;
步骤A3:后台服务器通过卡片随机数、终端随机数、安全通道过程密钥生成主机密文,通过安全通道MAC过程密钥和主机密文计算生成MAC;
可选的,步骤A3包括:后台服务器以安全通道过程密钥为密钥,以第一预设值为初始向量,对卡片随机数与终端随机数的拼接值进行预设算法计算得到主机密文;以安全通道过程密钥为密钥,以第一预设值为初始向量,根据预设算法对主机密文进行计算得到MAC;
步骤A4:后台服务器将包括安全通道过程密钥、安全通道MAC过程密钥、主机密文和MAC的报文信息发送给终端,执行步骤A5;
步骤A5:终端判断接收到的后台服务器发送的信息是否为卡片密文验证失败信息,是则结束,否则执行步骤S7。
步骤S8:蓝牙芯片判断安全通道认证指令中的发送序列计数器是否异常,是则给终端返回包括错误状态码的第二封装结果,执行步骤S11,否则从安全通道认证指令的第一预设位置获取包含主机密文和MAC的APDU指令,并将包含主机密文和MAC的APDU指令发送给安全芯片;
在本实施例中,步骤S8中的将APDU指令中的主机密文和MAC发送给安全芯片,之前还包括:蓝牙芯片判断安全通道认证指令中的命令码是否为第一预设数据,是则将包含主机密文和MAC的APDU指令发送给安全芯片,否则判断命令码是否是预定指令码;如为预定指令码则根据命令码进行相应操作,如不为预定指令码则给终端返回包含错误信息的第二封装结果。
步骤S9:安全芯片从接收到的包含主机密文和MAC的APDU指令中获取主机密文和MAC,并对主机密文和MAC进行验证,如验证成功则给蓝牙芯片返回成功信息,执行步骤S10,如验证失败则给蓝牙芯片返回错误信息,执行步骤S10;
在本实施例中,步骤S9包括:
步骤S90:安全芯片从接收到的包含主机密文和MAC的APDU指令中获取主机密文和MAC;
步骤S91:安全芯片通过卡片随机数、终端随机数、安全通道过程密钥生成主机验证密文;
可选的,步骤S91包括:安全芯片以安全通道过程密钥为密钥,以第一预设值为初始向量,对卡片随机数与终端随机数的拼接值进行预设算法计算得到主机验证密文。
步骤S92:安全芯片通过安全通道MAC过程密钥与主机密文生成MAC验证数据;
可选的,步骤S92包括:安全芯片以安全通道过程密钥为密钥,以第一预设值为初始向量,对主机密文进行预设算法计算得到MAC验证数据。
步骤S93:安全芯片判断生成的主机验证密文与接收到的安全通道认证指令中的主机密文是否相等,且生成的MAC验证数据与安全通道认证指令中的MAC是否相等,若两者判断均为是则验证成功,给蓝牙芯片返回成功信息,执行步骤S10,否则验证失败,给蓝牙芯片返回错误信息,执行步骤S10。
步骤S10:蓝牙芯片将安全通道认证指令中的发送序列计数器、预设通讯状态码、接收到的安全芯片返回的信息进行封装得到第二封装结果,并将第二封装结果发送给终端;
在本实施例中,步骤S10中的蓝牙芯片将安全通道认证指令中的发送序列计数器、预设通讯状态码、接收到的安全芯片返回的信息进行封装得到第二封装结果,包括:蓝牙芯片计算接收到的安全芯片返回的信息的长度,根据预设工作模式、发送序列计数器的值、通讯状态码、信息的长度和信息计算校验和,根据预设工作模式、发送序列计数器的值、通讯状态码、信息的长度、信息和校验和生成第二封装结果。
步骤S11:终端判断接收到第二封装结果是否合法,是则执行步骤S12,否则结束;
在本实施例中,如判断第二封装结果合法则表示终端与蓝牙卡片之间的安全通道建立成功;步骤S11包括:终端判断接收到的第二封装结果中的通讯状态是否为第一设定值且第二封装结果中的序列计数器的值是否与安全通道认证指令中的序列计数器的值相同,是则判断第二封装结果中的数据域内容是否为第三预设数据,是则安全通道建立成功,执行步骤S12,否则结束。
步骤S12:终端与蓝牙卡片使用安全通道过程密钥对两者之间的交互数据加密后进行通讯。
根据预设算法对终端随机数与卡片随机数的拼接值进行计算得到卡片密文生成MAC验证数据若两者判断均为是在本实施例中,在安全通道建立成功之后,后续终端发送给蓝牙卡片的相关指令的数据域均需要通过安全通道过程密钥进行加密,同理蓝牙卡返回给终端的数据域也需要用安全通道过程密钥进行加密,以保证信息的安全。
实施例二
本发明实施例二提供一种在应用通信中保护数据安全的实现方法,如图2所示,包括:
步骤200:终端给蓝牙卡片中的蓝牙芯片发送选择应用指令;
在本实施例中,终端通过调用BluetoothGatt类的writeCharacteristic接口将选择应用指令发送给蓝牙芯片;具体的,选择应用指令中包括工作模式、发送序列计数器、命令码、命令长度、命令数据域、字节校验和;
例如,本实施例中的选择应用指令为01 00 0B 01 01 04 00 0C 00A4 04 0007A0 00 00 03 33 01 01 0E;其中,01是工作模式,表示蓝牙卡片是接触式智能卡操作模式;0B 01是发送序列计数器的值,发送序列计数器的初始值为一随机数,终端每次给蓝牙卡片发送指令之前进行更新(例如自加1),发送序列计数器的上限值为4095;01 04为命令码,为终端通知蓝牙芯片给安全芯片转发APDU指令;00 0C为APDU指令的长度;00A4 04 0007A0 00 00 03 33 01 01为APDU指令,0E为校验和;
步骤201:蓝牙卡片内的蓝牙芯片接收到选择应用指令后根据根据蓝牙协议对选择应用指令进行解析,将第三解析结果发送给蓝牙卡片内的安全芯片;
具体的,在本实施例中,根据蓝牙协议对选择应用指令进行解析具体为:蓝牙芯片判断选择应用指令中的序列计数器是否出现异常,是则给终端返回包括错误状态码的第三封装结果,执行步骤204,否则蓝牙芯片从选择应用指令中的第7、8字节获取数据长度,根据数据长度从选择应用指令的第9字节开始获取相应长度的数据得到第三解析结果;其中蓝牙芯片判断选择应用指令中的序列计数器是否出现异常具体为:蓝牙芯片判断选择应用指令中的序列计数器的值和前一个请求报文中的序列计数器的值的差值是否不为1或判断选择应用指令中的序列计数器的值是否大于4095,是则视为选择应用指令中的序列计数器异常;
优选的,将第三解析结果发送给蓝牙芯片的安全芯片之前还包括:蓝牙芯片判断选择应用指令中的命令码是否为第一预设数据,是则将第三解析结果发送给蓝牙芯片的安全芯片,否则判断命令码是否是预定指令码;如为预定指令码则根据命令码进行相应操作,如不为预定指令码则给终端返回包含错误信息的第三封装结果,执行步骤204;
具体的,第一预设数据为0104;如预定指令码为0102则对安全芯片进行上电操作,如指令码为0101则对安全芯片进行下电操作;
步骤202:安全芯片根据第三解析结果判断是否存在对应的应用,是则给蓝牙芯片返回成功信息,执行步骤203,否则给蓝牙芯片返回错误信息,执行步骤203;
步骤203:蓝牙芯片对预设通讯状态码、选择应用指令中的发送序列计数器和接收到的安全芯片返回的信息进行封装得到第三封装结果,并将第三封装结果发送给终端;
具体的,在本实施例中,蓝牙芯片根据蓝牙协议对接收到信息进行封装得到第三封装结果,包括:蓝牙芯片计算接收到的信息的长度,根据预设工作模式、发送序列计数器的值、通讯状态码、信息的长度和信息计算校验和,根据预设工作模式、发送序列计数器的值、通讯状态码、信息的长度、信息和校验和生成第三封装结果;
例如,工作模式为01,发送序列计数器为0B 01,通讯状态码为00 00,信息的长度为00 4E,信息为6F 4A 84 07 A0 00 00 03 33 01 01 A5 3F 50 0B 50 42 4F 43 20 4372 65 64 69 74 9F 38 06 9F 33 03 9F 4E 14 5F 2D 08 7A 68 65 6E 66 72 64 65 9F11 01 01 9F 12 0F 43 41 52 44 20 49 4D 41 47 45 20 30 30 30 31 BF 0C 05 9F 4D02 0B 0A 90 00,根据预设工作模式、发送序列计数器的值、通讯状态码、信息的长度和信息计算得到的校验和为0B,生成的第三封装结果为01 00 0B 01 00 00 00 4E 6F 4A 8407 A0 00 00 03 33 01 01 A5 3F 50 0B 50 42 4F 43 20 43 72 65 64 69 74 9F 38 069F 33 03 9F 4E 14 5F 2D 08 7A 68 65 6E 66 72 64 65 9F 11 01 01 9F 12 0F 43 4152 44 20 49 4D 41 47 45 20 30 30 30 31 BF 0C 05 9F 4D 02 0B 0A 90 00 0B;
优选的,蓝牙芯片通过调用蓝牙协议层发送数据的接口(例如CyBle_GattsNotification)将第三封装结果返回数据发送给终端;手机通过回调BluetoothGattCallback中的onCharacteristicRead接口接收蓝牙芯片返回的数据;
步骤204:终端判断接收到蓝牙芯片返回的第三封装结果是否合法,是则执行步骤205,否则结束;
具体的,步骤204为:终端判断第三封装结果中的通讯状态码是否为第二预设数据且第三封装结果中的序列计数器是否与选择应用指令中的序列计数器相同,是则第三封装结果合法,否则第三封装结果不合法;例如第二预设数据为00 00;
步骤205:终端给后台服务器发送申请终端随机数的消息;
步骤206:后台服务器生成终端随机数并将其发送给终端;
步骤207:终端更新发送序列计数器,并将发送序列计数器和包含终端随机数的APDU指令封装成安全通道初始化指令,并将安全通道初始化指令发送给蓝牙芯片;
具体的,在本实施例中,终端通过调用BluetoothGatt类的writeCharacteristic接口将通道初始化指令发送给蓝牙芯片;
例如,本实施例中的更新后的发送序列号为0B 02,终端随机数为A0 8B 93 59 8AE2 C9 39,包含终端随机数的APDU指令为80 50 00 00 08 A0 8B 93 59 8A E2 C9 39,生成的安全通道初始化指令为01 00 0B 02 01 04 00 0D 80 50 00 00 08 A0 8B 93 59 8AE2 C9 39 0D;其中,01是工作模式,表示蓝牙卡片是接触式智能卡操作模式;00 02是发送序列计数器;01 04为命令码,为终端通知蓝牙芯片给安全芯片转发APDU指令;APDU指令的长度为00 0D,APDU指令为80 50 00 00 08 A0 8B 93 59 8A E2C9 39,0D为校验和;
步骤208:蓝牙芯片判断安全通道初始化指令中的序列计数器是否出现异常,是则给终端返回包括错误状态码的第一封装结果,否则蓝牙芯片从安全通道初始化指令的第一预设位置获取包含终端随机数的APDU指令,并将APDU指令发送给安全芯片;
具体的,在本实施例中,蓝牙芯片从安全通道初始化指令的第一预设位置获取包含终端随机数的APDU指令具体为:蓝牙芯片从安全通道初始化指令中的第7、8字节获取APDU指令长度,根据APDU指令长度从安全通道初始化指令的第9字节开始获取相应长度的数据得到包含终端随机数的APDU指令;其中蓝牙芯片判断安全通道初始化指令中的序列计数器是否出现异常具体为:蓝牙芯片判断安全通道初始化指令中的序列计数器的值与前一个请求报文中的序列计数器的值的差值是否不为1或判断安全通道初始化指令中的序列计数器的值是否大于预设阈值,是则视为安全通道初始化指令中的序列计数器异常;
优选的,将APDU指令发送给蓝牙芯片的安全芯片之前还包括:蓝牙芯片判断安全通道初始化指令中的命令码是否为第一预设数据,是则将APDU指令发送给蓝牙芯片的安全芯片,否则判断安全通道初始化指令中的命令码是否是预定指令码;如为预定指令码则根据命令码进行相应操作,如不为预定指令码则给终端返回包含错误信息的第一封装结果;
例如,本实施例中的错误信息为00 06;可选的,在本实施例中,不同的错误信息标识不同的错误,例如00 01表示非法指令,00 02表示通讯超时,00 03表示通讯失败,00 04表示BTC忙,00 05表示非法状态,00 06表示会话流水号异常;
步骤209:安全芯片从接收到的APDU指令中获取终端随机数,生成卡片随机数,根据卡片随机数、终端随机数、安全通道密钥、安全通道MAC密钥生成安全通道过程密钥和卡片密文;
具体的,步骤209包括:安全芯片从接收到的APDU指令中获取终端随机数;生成卡片随机数,根据卡片随机数、终端随机数、安全通道密钥、安全通道MAC密钥生成安全通道过程密钥和安全通道MAC过程密钥,根据安全通道过程密钥、卡片随机数与终端随机数生成卡片密文;在本实施例中,安全芯片在个人化阶段设置安全通道密钥和安全通道MAC密钥;
可选地,根据卡片随机数、终端随机数、安全通道密钥、安全通道MAC密钥生成安全通道过程密钥和安全通道MAC过程密钥,根据安全通道过程密钥、卡片随机数与终端随机数生成卡片密文,具体包括:
步骤209-1:根据卡片随机数与终端随机数生成密钥分散因子;
具体的,在本实施例中,步骤209-1为:卡片随机数右半部分、终端随机数左半部分、卡片随机数左半部分、终端随机数右半部分顺序拼接组成密钥分散因子;
例如卡片随机数和终端随机数均为8字节的数据,步骤209-1具体为:卡片随机数右4字节、终端随机数左4字节、卡片随机数左4字节、终端随机数右4字节顺序拼接组成密钥分散因子;
步骤209-2:根据安全通道密钥与密钥分散因子生成安全通道过程密钥,根据安全通道MAC密钥与密钥分散因子生成安全通道MAC过程密钥;
可选的,步骤209-2具体为:以安全通道过程密钥为密钥,对密钥分散因子进行3DES-ECB计算得到安全通道过程密钥(即安全通道过程密钥=3DES-ECB(安全通道密钥,密钥分散因子));以安全通道MAC密钥为密钥,对密钥分散因子进行3DES-ECB计算得到安全通道MAC过程密钥(即安全通道MAC过程密钥=3DES-ECB(安全通道MAC密钥,密钥分散因子));
步骤209-3:利用安全通道过程密钥、卡片随机数与终端随机数生成卡片密文;
可选的,步骤209-3具体为:以安全通道过程密钥为密钥,以“00000000”为初始向量,根据预设算法对终端随机数与卡片随机数的拼接值进行计算得到卡片密文(即卡片密文=预设算法(安全通道过程密钥,终端随机数与卡片随机数的拼接值,0000000000000000));
步骤210:安全芯片根据卡片随机数和卡片密文生成APDU指令并将其发送给蓝牙芯片;
步骤211:蓝牙芯片将安全通道初始化指令中的发送序列计数器、预设的通讯状态码、包含卡片随机数和卡片密文的APDU指令封装成第一封装结果,并将第一封装结果发送给终端;
优选的,蓝牙芯片通过调用蓝牙协议层发送数据的接口(例如CyBle_GattsNotification)将第一封装结果发送给终端;终端通过回调BluetoothGattCallback中的onCharacteristicRead接口接收蓝牙芯片的返回数据;
具体的,在本实施例中,蓝牙芯片对安全通道初始化指令中的发送序列计数器、预设的通讯状态码、包含卡片随机数和卡片密文的APDU指令封装成第一封装结果,包括:蓝牙芯片计算接收到的安全芯片发送的包含卡片随机数和卡片密文的APDU指令的长度,根据预设工作模式、发送序列计数器的值、通讯状态码、计算得到的APDU指令的长度和包含卡片随机数和卡片密文的APDU指令计算校验和,将预设工作模式、发送序列计数器的值、通讯状态码、计算得到的APDU指令的长度、包含卡片随机数和卡片密文的APDU指令和校验和封装成第一封装结果;
例如,工作模块为01,发送序列计数器为0B 02,通讯状态码为00 00,APDU指令的长度为00 22,包含卡片随机数和卡片密文的APDU指令为00 00 00 00 00 00 00 62 28 0001 00 00 11 17 01 81 1C 92 05 BD DE D4 41 E0 67 CA 75 70E2 B5 1B 90 00,计算得到的校验码为08,则第一封装结果为01 00 0B 02 00 00 00 22 00 00 00 00 00 00 0062 28 00 01 00 00 11 17 01 81 1C 92 05 BD DE D4 41 E0 67 CA 75 70 E2 B5 1B 9000 08;
步骤212:终端对第一封装结果进行解析得到卡片随机数和卡片密文,并将卡片随机数和卡片密文发送给后台服务器;
具体的,在本实施例中,步骤212包括:终端从第一封装结果中的第7、8字节获取APDU指令的长度,根据APDU指令的长度从第一封装结果中的第9字节开始获取相应长度的数据得到APDU指令,从该APDU指令中获取卡片随机数和卡片密文;
步骤213:后台服务器根据卡片随机数、终端随机数和根密钥生成安全通道过程密钥和安全通道MAC过程密钥;
步骤214:后台服务器验证卡片密文,如验证成功则执行步骤215,如验证失败则给终端返回卡片密文验证失败信息,终端执行步骤217;
在本实施例中,步骤214包括:
步骤214-1:后台服务器根据安全通道过程密钥、卡片随机数、终端随机数生成第一验证密文;
具体的,步骤214-1包括:以安全通道过程密钥为密钥,以“00000000”为初始向量,对终端随机数与卡片随机数的拼接值进行预设算法计算得到第一验证密文(即第一验证密文=预设算法(安全通道过程密钥,终端随机数与卡片随机数的拼接值,0000000000000000));
步骤214-2:后台服务器比较收到的卡片密文与生成的第一验证密文是否相等,是则执行步骤215,否则给终端返回卡片密文验证失败信息,终端执行步骤217;
步骤215:后台服务器通过卡片随机数、终端随机数、安全通道过程密钥生成主机密文,通过安全通道MAC过程密钥和主机密文计算生成MAC;
具体的,在本实施例中,通过卡片随机数、终端随机数、安全通道过程密钥生成主机密文:包括:以安全通道过程密钥为密钥,以“00000000”为初始向量,根据预设算法对卡片随机数与终端随机数的拼接值进行计算得到主机密文(即主机密文=预设算法(安全通道过程密钥,卡片随机数与终端随机数的拼接值,0000000000000000));
通过安全通道MAC过程密钥与主机密文计算MAC,包括:以安全通道过程密钥为密钥,以“00000000”为初始向量,对主机密文进行预设算法计算得到MAC(即MAC=预设算法(安全通道过程密钥,主机密文,0000000000000000));
步骤216:后台服务器将包括安全通道过程密钥、安全通道MAC过程密钥、主机密文和MAC的报文信息发送给终端,执行步骤217;
步骤217:终端判断接收到的后台服务器发送的信息是否包括卡片密文验证失败的信息,是则结束,否则执行步骤218;
步骤218:终端保存报文信息的安全通道过程密钥,更新发送序列计数器,将发送序列计数器、预设命令码、包含报文信息中的主机密文和MAC的APDU指令封装成安全通道认证指令;
优选的,主机密文和MAC作为安全通道认证指令的数据域;步骤218还可包括:终端保存卡片验证密文中的和安全通道MAC过程密钥;
例如,本实施例中的工作模块为01,更新后的发送序列计数器为0B 03,命令码为01 04,APDU指令的长度为00 15,包含主机密文和MAC的APDU指令为84820000109D5999818AB3263ECC774F6788BD0E98,根据上述工作模块、发送序列计数器、命令码为、APDU指令的长度和包含主机密文和MAC的APDU指令计算得到的校验码为08,生成的安全通道认证指令为01 00 0B 03 01 04 00 15 84 82 00 00 10 9D 59 99 81 8A B3 26 3E CC 77 4F 67 88BD 0E 98 08;
步骤219:终端将安全通道认证指令发送给蓝牙芯片;
具体的,终端通过调用BluetoothGatt类的writeCharacteristic接口将安全通道认证指令发送给蓝牙芯片;
步骤220:蓝牙芯片判断安全通道认证指令中的序列计数器是否出现异常,是则给终端返回包括错误状态码的第二封装结果,否则蓝牙芯片对安全通道认证指令进行解析得到包含主机密文和MAC的APDU指令的APDU指令,并将该APDU指令发送给安全芯片;
具体的,在本实施例中,蓝牙芯片对安全通道认证指令进行解析具体为:蓝牙芯片从安全通道认证指令中的第7、8字节获取数据长度,根据数据长度从安全通道认证指令的第9字节开始获取相应长度的数据得到包含主机密文和MAC的APDU指令;其中蓝牙芯片判断安全通道认证指令中的序列计数器是否出现异常具体为:蓝牙芯片判断安全通道认证指令中的序列计数器的值与前一个请求报文中的序列计数器的值的差值是否不为1或判断安全通道认证指令中的序列计数器的值是否大于预设阈值,是则视为安全通道认证指令中的序列计数器异常;
优选的,将该APDU指令发送给安全芯片之前还包括:蓝牙芯片判断安全通道认证指令中的命令码是否为第一预设数据,是则将该APDU指令发送给蓝牙芯片的安全芯片,否则判断该命令码是否是预定指令码;如为预定指令码则根据命令码进行相应操作,如不为预定指令码则给终端返回包含错误信息的第二封装结果;
步骤221:安全芯片从接收到的包含主机密文和MAC的APDU指令中获取主机密文和MAC,对主机密文和MAC进行验证,如验证成功则给蓝牙芯片返回成功信息,执行步骤222,如验证失败则给蓝牙芯片返回错误信息,执行步骤222;
可选的,本实施例中的成功信息为9000;
具体的,步骤221包括:
步骤221-0:安全芯片从接收到的包含主机密文和MAC的APDU指令中获取主机密文和MAC;
步骤221-1:安全芯片通过卡片随机数、终端随机数、安全通道过程密钥生成主机验证密文:
在本实施例中,步骤221-1包括:以安全通道过程密钥为密钥,以“00000000”为初始向量,对卡片随机数与终端随机数的拼接值进行预设算法计算得到主机验证密文(即主机验证密文=预设算法(安全通道过程密钥,卡片随机数与终端随机数的拼接值,0000000000000000));
步骤221-2:安全芯片通过安全通道MAC过程密钥与主机密文生成MAC验证数据
具体的,在本实施例中,步骤221-2包括:以安全通道过程密钥为密钥,以“00000000”为初始向量,对主机密文进行预设算法计算得到MAC验证数据(即MAC验证数据=预设算法(安全通道过程密钥,主机密文,0000000000000000));
步骤221-3:安全芯片判断生成的主机验证密文与第二解析结果中的主机密文是否相等,且生成的MAC验证数据与第二解析结果中的MAC是否相等,若两者判断均为是则验证成功,否则验证失败;
步骤222:蓝牙芯片根据蓝牙协议对接收到的安全芯片返回的信息进行封装得到第二封装结果,并将第二封装结果发送给终端;
具体的,在本实施例中,蓝牙芯片根据蓝牙协议对接收到信息进行封装得到第二封装结果,包括:蓝牙芯片计算接收到的信息的长度,根据预设工作模式、发送序列计数器的值、通讯状态码、信息的长度和信息计算校验和,根据预设工作模式、发送序列计数器的值、通讯状态码、信息的长度、信息和校验和生成第二封装结果;
例如,预设工作模块为01,发送序列计数器为0B 03,通讯状态码为00 00,接收到的信息为00 02 90 00,计算得到的校验和位0C,则第二封装结果为01 00 0B 03 00 00 0002 90 00 0C;
优选的,在本实施例中,蓝牙芯片通过调用蓝牙协议层发送数据的接口(例如CyBle_GattsNotification)将第二封装结果发送给终端;终端通过回调BluetoothGattCallback中的onCharacteristicRead接口接收蓝牙芯片的返回数据;
步骤223:终端判断接收到第二封装结果中是否合法,是则安全通道建立成功,执行步骤224,否则结束;
具体的,步骤223为:终端判断第二封装结果中的通讯状态码是否为00 00且第二封装结果中的序列计数器的值是否与安全通道认证指令中的序列计数器的值相同,是则判断第二封装结果中的数据域内容是否为第三预设数据,如为如为第一预设数据则第二封装结果合法,否则第二封装结果不合法;例如第三预设数据为90 00;
步骤224:终端与蓝牙卡片使用安全通道过程密钥对两者之间的交互数据加密后进行通讯;
在本实施例中,步骤224包括:
步骤224-1:终端使用安全通道过程密钥对发送给蓝牙卡片的指令进行加密,并将加密结果发送给蓝牙卡片;
步骤224-2:蓝牙卡片的安全芯片用安全通道过程密钥对接收到的数据进行解密,并进行相应操作,使用安全通道对操作结果进行加密并将加密结果发送给终端;
步骤224-3:终端使用安全通道过程密钥对接收到的加密数据进行解密得到解密结果。
本发明实施例的方法中根据终端随机数与卡片随机数分散密钥机制,使每次会话密钥密钥的不一致,即密文具有随机性,无法从指定的密文信息推算出明文信息,保证了数据的安全性;通过DES算法的加密保证数据机密性,防止敏感信息泄露而被非法窃取者窃取;通过MAC运算机制保证数据的完整性,防止数据防止被篡改,保证数据完整性;加密运算过程采用CBC模式,在一定程度上抵抗了攻击者的重放攻击。
本实施例中的蓝牙卡片也可以为其他可通过蓝牙通讯的蓝牙设备,例如蓝牙可穿戴设备等。
实施例三
本发明实施例三提供一种在应用通信中保护数据安全的实现***,包括终端3和蓝牙卡片4;蓝牙卡片4包括蓝牙芯片40和安全芯片41;
终端3包括:
发送选择模块301,用于提供给蓝牙卡片4发送选择应用指令选择对应的应用;
第一获取模块302,用于从后台服务器获取终端随机数;
第一封装模块303,用于将更新后的发送序列计数器和包含终端随机数的APDU指令封装成安全通道初始化指令,发送序列计数器的初始值为一随机数;
第一发送模块304,用于将第一封装模块303的安全通道初始化指令发送给蓝牙卡片内的蓝牙芯片;
第一接收模块305,用于接收蓝牙芯片发送的第一封装结果;
第一解析模块306,用于对第一接收模块305接收到的第一封装结果进行解析;
第五发送模块307,用于将第一解析模块306解析得到的卡片随机数和卡片密文发送给后台服务器进行验证;
第五接收模块308,用于接收后台服务器发送的报文信息;
第一保存模块309,用于保存第五接收模块308接收到的报文信息中的安全通道过程密钥;
第三封装模块310,用于更新发送序列计数器,将预设命令码、更新后的发送序列计数器、包括报文信息中的主机密文和MAC的APDU指令封装成安全通道认证指令;
第一发送模块304还用于将第三封装模块310的安全通道认证指令发送给蓝牙芯片;
第一接收模块305还用于接收蓝牙芯片发送的第二封装结果;
第三判断模块311,用于判断第一接收模块305接收到第二封装结果是否合法,是则安全通道建立成功,否则结束;
第一通讯模块312,用于在安全通道建立成功之后使用安全通道过程密钥对与蓝牙卡片的交互数据加密后进行通讯;
蓝牙芯片40包括:
第二接收模块401,用于接收终端发送的安全通道初始化指令、安全通道认证指令;
第一判断模块402,用于判断第二接收模块401接收到的安全通道初始化指令中的发送序列计数器是否出现异常,是则给终端返回包括错误状态码的第一封装结果,否则触发第二获取模块403;
第二获取模块403,用于从安全通道初始化指令的第一预设位置获取包含终端随机数的APDU指令;
第二发送模块404,用于将第二获取模块403获取的包含终端随机数的APDU指令发送给蓝牙卡片内的安全芯片;
第四接收模块405,用于接收安全芯片返回的信息和APDU指令;
第二封装模块406,用于将安全通道初始化指令中的发送序列计数器、预设的通讯状态码、第四接收模块405接收到的包含卡片随机数和卡片密文的APDU指令进行封装得到第一封装结果;
第四发送模块407,用于将第二封装模块406的第一封装结果发送给终端;
第二判断模块408,用于判断第二接收模块401接收到的安全通道认证指令中的发送序列计数器是否异常,是则给终端返回包括错误状态码的第二封装结果,否则触发第三获取模块409;
第三获取模块409,用于从第二接收模块401接收到的安全通道认证指令的第一预设位置获取包含主机密文和MAC的APDU指令;
第二发送模块404还用于将第三获取模块409获取的包含主机密文和MAC的APDU指令发送给安全芯片;
第四封装模块400,用于将第二接收模块401接收到的安全通道认证指令中的发送序列计数器、预设通讯状态码、第四接收模块405接收到的安全芯片返回的信息进行封装得到第二封装结果;
第四发送模块407还用于将第四封装模块400的第二封装结果发送给终端;
安全芯片41包括:
第三接收模块411,用于接收蓝牙芯片发送的包含终端随机数的APDU指令;还用于接收蓝牙芯片发送的包含主机密文和MAC的APDU指令;
第四获取模块412,用于从第三接收模块411接收到的包含终端随机数的APDU指令中获取终端随机数;
第一生成模块413,用于生成卡片随机数;
第二生成模块414,用于根据第一生成模块413生成的卡片随机数、第四获取模块412获取到的终端随机数生成安全通道过程密钥和卡片密文;
第三发送模块415,用于将包含第一生成模块413生成的卡片随机数和第二生成模块414生成的卡片密文的APDU指令发送给蓝牙芯片;
第五获取模块416,用于从第三接收模块411接收到的包含主机密文和MAC的APDU指令中获取主机密文和MAC;
第一验证模块417,用于对第五获取模块416获取的主机密文和MAC进行验证;
第三发送模块415还用于当第一验证模块417验证成功时给蓝牙芯片返回成功信息,当第一验证模块417验证失败时给蓝牙芯片返回错误信息;
蓝牙卡片4还包括第二通讯模块42,用于在安全通道建立成功之后使用安全通道过程密钥对与终端3的交互数据加密后进行通讯。
可选的,本实施例中的发送选择模块301包括:
第一发送子模块,用于给蓝牙卡片内的蓝牙芯片40发送选择应用指令;
第一判断子模块,用于判断接收到蓝牙芯片40返回的第三封装结果是否合法,是则触发第一获取模块,否则结束;
第二接收模块401还用于接收到终端发送的选择应用指令;
相应的,蓝牙芯片40还包括:第五判断模块、第五封装模块和第三解析模块;
第五判断模块,用于判断第二接收模块401接收到的选择应用指令中的发送序列计数器是否异常,是则给终端返回包括错误状态码的第三封装结果,否则触发第三解析模块;
第三解析模块,用于对选择应用指令进行解析得到第三解析结果;
第二发送模块404还用于将第三解析模块的第三解析结果发送给蓝牙卡片内的安全芯片41;
第三接收模块411还用于接收蓝牙芯片40发送的第三解析结果;
安全芯片41还包括第三判断模块311;
第三判断模块311,用于根据是第三接收模块411接收到的第三解析结果判断是否存在对应的应用;
第三发送模块415还用于当第三判断模块311判断为是时给蓝牙芯片40返回成功信息,当第三判断模块311判断为否时给蓝牙芯片40返回错误信息;
第五封装模块,用于对预设通讯状态码、选择应用指令中的发送序列计数器和第四接收模块405接收到的安全芯片41返回的信息进行封装得到第三封装结果;
第四发送模块407还用于将第五封装模块的第三封装结果发送给终端。
可选的,本实施例中的第三解析模块具体用于判断选择应用指令中的序列计数器是否出现异常,是则给终端返回包括错误状态码的第三封装结果,否则蓝牙芯片40从选择应用指令中的第二预设位置获取数据长度,根据数据长度从选择应用指令的第一预设位置获取相应长度的数据得到第三解析结果。
可选的,本实施例中的蓝牙芯片40还包括:
第六判断模块,用于判断第三解析模块的选择应用指令中的命令码是否为第一预设数据,是则触发第二发送模块404将第三解析结果发送给蓝牙卡片内的安全芯片41,否则判断命令码是否是预定指令码;如为预定指令码则根据命令码进行相应操作,如不为预定指令码则给终端返回包含错误信息的第三封装结果。
可选的,本实施例中的第一判断子模块具体用于判断第三封装结果中的通讯状态码是否为第二预设数据且第三封装结果中的序列计数器是否与选择应用指令中的序列计数器相同,是则第三封装结果合法,触发第一获取模块,否则第三封装结果不合法,结束。
可选的,本实施例中的第一获取模块具体用于给后台服务器发送申请终端随机数的消息;并接收后台服务器发送的终端随机数。
可选的,本实施例中的蓝牙芯片40还包括:
第七判断模块,用于判断安全通道初始化指令中的命令码是否为第一预设数据,是则触发第二发送模块404将APDU指令发送给蓝牙卡片内的安全芯片41,否则判断安全通道初始化指令中的命令码是否是预定指令码;如为预定指令码则根据命令码进行相应操作,如不为预定指令码则给终端返回包含错误信息的第一封装结果。
可选的,本实施例中的第二生成模块414具体用于根据卡片随机数、终端随机数、安全通道密钥、安全通道MAC密钥生成安全通道过程密钥和安全通道MAC过程密钥,根据安全通道过程密钥、卡片随机数与终端随机数生成卡片密文。
可选的,本实施例中的第二生成模块414包括:
第一生成子模块,用于根据卡片随机数与终端随机数生成密钥分散因子;
第二生成子模块,用于根据安全通道密钥与密钥分散因子生成安全通道过程密钥,根据安全通道MAC密钥与密钥分散因子生成安全通道MAC过程密钥;
第三生成子模块,用于利用安全通道过程密钥、卡片随机数与终端随机数生成卡片密文。
可选的,本实施例中的第一生成子模块具体用于将卡片随机数右半部分、终端随机数左半部分、卡片随机数左半部分、终端随机数右半部分顺序拼接组成密钥分散因子。
可选的,本实施例中的第二生成子模块具体用于以安全通道过程密钥为密钥,对密钥分散因子进行预设算法计算得到安全通道过程密钥;安全芯片41以安全通道MAC密钥为密钥,对密钥分散因子进行预设算法计算得到安全通道MAC过程密钥。
可选的,本实施例中的第三生成子模块具体用于以安全通道过程密钥为密钥,以第一预设值为初始向量,根据预设算法对终端随机数与卡片随机数的拼接值进行计算得到卡片密文。
可选的,本实施例中的第二封装模块406具体用于计算第四接收模块405接收到的安全芯片41发送的包含卡片随机数和卡片密文的APDU指令的长度,根据预设工作模式、发送序列计数器的值、通讯状态码、计算得到的APDU指令的长度和包含卡片随机数和卡片密文的APDU指令计算校验和,将预设工作模式、发送序列计数器的值、通讯状态码、计算得到的APDU指令的长度、包含卡片随机数和卡片密文的APDU指令和校验和进行封装得到第一封装结果。
可选的,本实施例中的第一解析模块306具体用于从第一封装结果中的第二预设位置获取数据长度,根据数据长度从第一封装结果中的第第一预设位置获取相应长度的数据得到APDU指令,从APDU指令中获取卡片随机数和卡片密文。
可选的,本实施例***还包括后台服务器,后台服务器包括:
第六接收模块,用于接收终端发送的卡片随机数和卡片密文;
第三生成模块,用于根据第六接收模块接收到的卡片随机数、生成的终端随机数和根密钥生成安全通道过程密钥和安全通道MAC过程密钥;
第二验证模块,用于验证卡片密文;
第四生成模块,用于当第二验证模块验证成功时通过卡片随机数、终端随机数、安全通道过程密钥生成主机密文,通过安全通道MAC过程密钥和主机密文计算生成MAC;
第六发送模块,用于将包括安全通道过程密钥、安全通道MAC过程密钥、主机密文和MAC的报文信息发送给终端;还用于当第二验证模块验证失败时给终端返回卡片密文验证失败信息;
相应的,终端1还包括第八判断模块;
第五接收模块308还用于接收后台服务器发送的卡片密文验证失败信息;
第八判断模块,用于判断第五接收模块308接收到的后台服务器发送的信息是否为卡片密文验证失败信息,是则结束,否则触发第一保存模块309。
可选的,本实施例中的第二验证模块包括:
第四生成子模块,用于根据安全通道过程密钥、卡片随机数、终端随机数生成第一验证密文;
比较子模块,用于比较第六接收模块接收到的卡片密文与生成的第一验证密文是否相等,是则验证成功,否则验证失败。
可选的,本实施例中的第四生成子模块具体用于以安全通道过程密钥为密钥,以第一预设值为初始向量,对终端随机数与卡片随机数的拼接值进行预设算法计算得到第一验证密文。
可选的,本实施例中的第四生成模块具体用于以安全通道过程密钥为密钥,以第一预设值为初始向量,对卡片随机数与终端随机数的拼接值进行预设算法计算得到主机密文;以安全通道过程密钥为密钥,以第一预设值为初始向量,根据预设算法对主机密文进行计算得到MAC。
可选的,本实施例中的蓝牙芯片40还包括:
第九判断模块,用于判断安全通道认证指令中的命令码是否为第一预设数据,是则触发第二发送模块404将包含主机密文和MAC的APDU指令发送给安全芯片41,否则判断命令码是否是预定指令码;如为预定指令码则根据命令码进行相应操作,如不为预定指令码则给终端返回包含错误信息的第二封装结果。
可选的,本实施例中的第一验证模块417包括:
第一获取子模块,用于从第三接收模块411接收到的包含主机密文和MAC的APDU指令中获取主机密文和MAC;
第五生成子模块,用于通过卡片随机数、终端随机数、安全通道过程密钥生成主机验证密文;
第六生成子模块,用于通过安全通道MAC过程密钥与主机密文生成MAC验证数据;
第二判断子模块,用于判断第五生成子模块生成的主机验证密文与接收到的安全通道认证指令中的主机密文是否相等,且第六生成子模块生成的MAC验证数据与安全通道认证指令中的MAC是否相等,若两者判断均为是则验证成功,否则验证失败。
可选的,本实施例中的第五生成子模块具体用于以安全通道过程密钥为密钥,以第一预设值为初始向量,对卡片随机数与终端随机数的拼接值进行预设算法计算得到主机验证密文。
可选的,本实施例中的第六生成子模块具体用于以安全通道过程密钥为密钥,以第一预设值为初始向量,对主机密文进行预设算法计算得到MAC验证数据。
可选的,本实施例中的第四封装模块400具体用于计算接收到的安全芯片41返回的信息的长度,根据预设工作模式、发送序列计数器的值、通讯状态码、信息的长度和信息计算校验和,根据预设工作模式、发送序列计数器的值、通讯状态码、信息的长度、信息和校验和生成第二封装结果。
可选的,本实施例中的第三判断模块311具体用于判断第一接收模块305接收到的第二封装结果中的通讯状态是否为第一设定值且第二封装结果中的序列计数器的值是否与安全通道认证指令中的序列计数器的值相同,是则判断第二封装结果中的数据域内容是否为第三预设数据,是则安全通道建立成功,否则结束。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

Claims (46)

1.一种在应用通信中保护数据安全的实现方法,其特征在于,包括:
步骤S1:终端通过给蓝牙卡片发送选择应用指令选择对应的应用;
步骤S2:所述终端从后台服务器获取终端随机数;并将更新后的发送序列计数器和包含所述终端随机数的APDU指令封装成安全通道初始化指令,将所述安全通道初始化指令发送给所述蓝牙卡片内的蓝牙芯片;所述发送序列计数器的初始值为一随机数;
步骤S3:所述蓝牙芯片判断所述安全通道初始化指令中的发送序列计数器是否出现异常,是则给所述终端返回包括错误状态码的第一封装结果,否则从所述安全通道初始化指令的第一预设位置获取包含所述终端随机数的APDU指令,并将所述APDU指令发送给所述蓝牙卡片内的安全芯片,执行步骤S4;
步骤S4:所述安全芯片从接收到的APDU指令中获取终端随机数,生成卡片随机数,根据所述卡片随机数、所述终端随机数生成安全通道过程密钥和卡片密文;将包含所述卡片随机数和所述卡片密文的APDU指令发送给所述蓝牙芯片;
步骤S5:所述蓝牙芯片将安全通道初始化指令中的发送序列计数器、预设的通讯状态码、所述包含所述卡片随机数和所述卡片密文的APDU指令进行封装得到第一封装结果,并将所述第一封装结果发送给所述终端;
步骤S6:所述终端对所述第一封装结果进行解析,并将解析得到的卡片随机数和卡片密文发送给所述后台服务器进行验证;
步骤S7:当所述终端接收到所述后台服务器发送的报文信息时,保存所述报文信息中的安全通道过程密钥,更新发送序列计数器,将预设命令码、更新后的发送序列计数器、包括所述报文信息中的主机密文和MAC的APDU指令封装成安全通道认证指令,并将所述安全通道认证指令发送给所述蓝牙芯片;
步骤S8:所述蓝牙芯片判断所述安全通道认证指令中的发送序列计数器是否异常,是则给终端返回包括错误状态码的第二封装结果,执行步骤S11,否则从所述安全通道认证指令的第一预设位置获取包含所述主机密文和MAC的APDU指令,并将包含所述主机密文和MAC的所述APDU指令发送给所述安全芯片;
步骤S9:所述安全芯片从接收到的包含所述主机密文和MAC的所述APDU指令中获取所述主机密文和MAC,并对所述主机密文和MAC进行验证,如验证成功则给所述蓝牙芯片返回成功信息,执行步骤S10,如验证失败则给所述蓝牙芯片返回错误信息,执行步骤S10;
步骤S10:所述蓝牙芯片将安全通道认证指令中的发送序列计数器、预设通讯状态码、接收到的安全芯片返回的信息进行封装得到第二封装结果,并将所述第二封装结果发送给所述终端;
步骤S11:所述终端判断接收到第二封装结果是否合法,是则安全通道建立成功,执行步骤S12,否则结束;
步骤S12:所述终端与所述蓝牙卡片使用所述安全通道过程密钥对两者之间的交互数据加密后进行通讯;
所述步骤S7之前还包括:
步骤A1:所述后台服务器根据所述卡片随机数、所述终端随机数和根密钥生成安全通道过程密钥和安全通道MAC过程密钥;
步骤A2:所述后台服务器验证所述卡片密文,如验证成功则执行步骤A3,否则给所述终端返回卡片密文验证失败信息,执行步骤A5;
步骤A3:所述后台服务器通过所述卡片随机数、所述终端随机数、所述安全通道过程密钥生成主机密文,通过所述安全通道MAC过程密钥和所述主机密文计算生成MAC;
步骤A4:所述后台服务器将包括所述安全通道过程密钥、所述安全通道MAC过程密钥、所述主机密文和所述MAC的报文信息发送给所述终端,执行步骤A5;
步骤A5:所述终端判断接收到的所述后台服务器发送的信息是否为卡片密文验证失败信息,是则结束,否则执行步骤S7。
2.如权利要求1所述的方法,其特征在于,所述步骤S1包括:
步骤S1-0:所述终端给所述蓝牙卡片内的蓝牙芯片发送选择应用指令;
步骤S1-1:所述蓝牙芯片判断所述选择应用指令中的发送序列计数器是否异常,是则给终端返回包括错误状态码的第三封装结果,执行步骤S1-4,否则对所述选择应用指令进行解析得到第三解析结果,将所述第三解析结果发送给所述蓝牙卡片内的安全芯片;
步骤S1-2:所述安全芯片根据所述第三解析结果判断是否存在对应的应用,是则给所述蓝牙芯片返回成功信息,执行步骤S1-3,否则给所述蓝牙芯片返回错误信息,执行步骤S1-3;
步骤S1-3:所述蓝牙芯片对预设通讯状态码、所述选择应用指令中的发送序列计数器和接收到的所述安全芯片返回的信息进行封装得到第三封装结果,并将所述第三封装结果发送给所述终端;
步骤S1-4:所述终端判断接收到蓝牙芯片返回的第三封装结果是否合法,是则执行步骤S2,否则结束。
3.如权利要求2所述的方法,其特征在于,所述步骤S1-1中的对所述选择应用指令进行解析具体为:所述蓝牙芯片判断选择应用指令中的序列计数器是否出现异常,是则给终端返回包括错误状态码的第三封装结果,否则所述蓝牙芯片从所述选择应用指令中的第二预设位置获取数据长度,根据所述数据长度从选择应用指令的第一预设位置获取相应长度的数据得到第三解析结果。
4.如权利要求2所述的方法,其特征在于,所述步骤S1-1中的将第三解析结果发送给蓝牙卡片内的安全芯片之前还包括:所述蓝牙芯片判断选择应用指令中的命令码是否为第一预设数据,是则将第三解析结果发送给所述蓝牙卡片内的安全芯片,否则判断所述命令码是否是预定指令码;如为预定指令码则根据命令码进行相应操作,如不为预定指令码则给所述终端返回包含错误信息的第三封装结果。
5.如权利要求2所述的方法,其特征在于,所述步骤S1-4包括:所述终端判断第三封装结果中的通讯状态码是否为第二预设数据且第三封装结果中的序列计数器是否与所述选择应用指令中的序列计数器相同,是则第三封装结果合法,执行步骤S2,否则第三封装结果不合法,结束。
6.如权利要求1所述的方法,其特征在于,所述步骤S2中的所述终端从后台服务器获取终端随机数,包括:所述终端给所述后台服务器发送申请终端随机数的消息;并接收所述后台服务器发送的终端随机数。
7.如权利要求1所述的方法,其特征在于,所述步骤S3中的将所述APDU指令发送给所述蓝牙卡片内的安全芯片之前还包括:所述蓝牙芯片判断所述安全通道初始化指令中的命令码是否为第一预设数据,是则将所述APDU指令发送给所述蓝牙卡片内的安全芯片,否则判断所述安全通道初始化指令中的命令码是否是预定指令码;如为预定指令码则根据命令码进行相应操作,如不为预定指令码则给所述终端返回包含错误信息的第一封装结果。
8.如权利要求1所述的方法,其特征在于,所述步骤S4具体为:所述安全芯片从接收到的APDU指令中获取终端随机数,生成卡片随机数,根据卡片随机数、终端随机数、安全通道密钥、安全通道MAC密钥生成安全通道过程密钥和安全通道MAC过程密钥,根据安全通道过程密钥、卡片随机数与终端随机数生成卡片密文;将包括所述卡片随机数和所述卡片密文的APDU指令发送给所述蓝牙芯片。
9.如权利要求8所述的方法,其特征在于,所述根据卡片随机数、终端随机数、安全通道密钥、安全通道MAC密钥生成安全通道过程密钥和安全通道MAC过程密钥,根据安全通道过程密钥、卡片随机数与终端随机数生成卡片密文,包括:
步骤S41:所述安全芯片根据卡片随机数与所述终端随机数生成密钥分散因子;
步骤S42:所述安全芯片根据安全通道密钥与所述密钥分散因子生成安全通道过程密钥,根据安全通道MAC密钥与所述密钥分散因子生成安全通道MAC过程密钥;
步骤S43:所述安全芯片利用所述安全通道过程密钥、所述卡片随机数与所述终端随机数生成卡片密文。
10.如权利要求9所述的方法,其特征在于,所述步骤S41具体为:所述安全芯片将卡片随机数右半部分、终端随机数左半部分、卡片随机数左半部分、终端随机数右半部分顺序拼接组成密钥分散因子。
11.如权利要求9所述的方法,其特征在于,所述步骤S42具体为:所述安全芯片以安全通道过程密钥为密钥,对密钥分散因子进行预设算法计算得到安全通道过程密钥;所述安全芯片以安全通道MAC密钥为密钥,对密钥分散因子进行预设算法计算得到安全通道MAC过程密钥。
12.如权利要求9所述的方法,其特征在于,所述步骤S43具体为:所述安全芯片以安全通道过程密钥为密钥,以第一预设值为初始向量,根据预设算法对终端随机数与卡片随机数的拼接值进行计算得到卡片密文。
13.如权利要求1所述的方法,其特征在于,所述步骤S5中的所述蓝牙芯片将安全通道初始化指令中的发送序列计数器、预设的通讯状态码、所述包含所述卡片随机数和所述卡片密文的APDU指令进行封装得到第一封装结果,包括:蓝牙芯片计算接收到的安全芯片发送的包含所述卡片随机数和所述卡片密文的APDU指令的长度,根据预设工作模式、发送序列计数器的值、通讯状态码、计算得到的APDU指令的长度和包含所述卡片随机数和所述卡片密文的APDU指令计算校验和,将预设工作模式、发送序列计数器的值、通讯状态码、计算得到的APDU指令的长度、包含所述卡片随机数和所述卡片密文的APDU指令和校验和进行封装得到第一封装结果。
14.如权利要求1所述的方法,其特征在于,所述步骤S6中的所述终端对所述第一封装结果进行解析,包括:所述终端从所述第一封装结果中的第二预设位置获取数据长度,根据所述数据长度从所述第一封装结果中的第第一预设位置获取相应长度的数据得到APDU指令,从所述APDU指令中获取卡片随机数和卡片密文。
15.如权利要求1所述的方法,其特征在于,所述步骤A2包括:
步骤A21:所述后台服务器根据安全通道过程密钥、卡片随机数、终端随机数生成第一验证密文;
步骤A22:所述后台服务器比较接收到的卡片密文与生成的第一验证密文是否相等,是则执行步骤A3,否则给终端返回卡片密文验证失败信息,执行步骤A5。
16.如权利要求15所述的方法,其特征在于,所述步骤A21包括:所述后台服务器以安全通道过程密钥为密钥,以第一预设值为初始向量,对终端随机数与卡片随机数的拼接值进行预设算法计算得到第一验证密文。
17.如权利要求1所述的方法,其特征在于,所述步骤A3包括:所述后台服务器以安全通道过程密钥为密钥,以第一预设值为初始向量,对卡片随机数与终端随机数的拼接值进行预设算法计算得到主机密文;以安全通道过程密钥为密钥,以第一预设值为初始向量,根据预设算法对所述主机密文进行计算得到MAC。
18.如权利要求1所述的方法,其特征在于,所述步骤S8中的将所述包含所述主机密文和MAC的所述APDU指令发送给所述安全芯片,之前还包括:所述蓝牙芯片判断安全通道认证指令中的命令码是否为第一预设数据,是则将所述APDU指令发送给所述安全芯片,否则判断所述命令码是否是预定指令码;如为预定指令码则根据命令码进行相应操作,如不为预定指令码则给终端返回包含错误信息的第二封装结果。
19.如权利要求1所述的方法,其特征在于,所述步骤S9包括:
步骤S90:所述安全芯片从接收到的包含所述主机密文和MAC的APDU指令中获取所述主机密文和MAC;
步骤S91:所述安全芯片通过卡片随机数、终端随机数、安全通道过程密钥生成主机验证密文;
步骤S92:所述安全芯片通过安全通道MAC过程密钥与主机密文生成MAC验证数据;
步骤S93:所述安全芯片判断生成的主机验证密文与接收到的安全通道认证指令中的主机密文是否相等,且生成的MAC验证数据与安全通道认证指令中的MAC是否相等,若两者判断均为是则验证成功,给所述蓝牙芯片返回成功信息,执行步骤S10,否则验证失败,给所述蓝牙芯片返回错误信息,执行步骤S10。
20.如权利要求19所述的方法,其特征在于,所述步骤S91包括:所述安全芯片以安全通道过程密钥为密钥,以第一预设值为初始向量,对卡片随机数与终端随机数的拼接值进行预设算法计算得到主机验证密文。
21.如权利要求19所述的方法,其特征在于,所述步骤S92包括:所述安全芯片以安全通道过程密钥为密钥,以第一预设值为初始向量,对主机密文进行预设算法计算得到MAC验证数据。
22.如权利要求1所述的方法,其特征在于,所述步骤S10中的所述蓝牙芯片将安全通道认证指令中的发送序列计数器、预设通讯状态码、接收到的安全芯片返回的信息进行封装得到第二封装结果,包括:所述蓝牙芯片计算接收到的安全芯片返回的信息的长度,根据预设工作模式、发送序列计数器的值、通讯状态码、所述信息的长度和所述信息计算校验和,根据所述预设工作模式、所述发送序列计数器的值、通讯状态码、所述信息的长度、所述信息和所述校验和生成第二封装结果。
23.如权利要求1所述的方法,其特征在于,所述步骤S11包括:所述终端判断接收到的第二封装结果中的通讯状态是否为第一设定值且所述第二封装结果中的序列计数器的值是否与所述安全通道认证指令中的序列计数器的值相同,是则判断所述第二封装结果中的数据域内容是否为第三预设数据,是则安全通道建立成功,执行步骤S12,否则结束。
24.一种在应用通信中保护数据安全的实现***,其特征在于,包括终端和蓝牙卡片;所述蓝牙卡片包括蓝牙芯片和安全芯片;
所述终端包括:
发送选择模块,用于给蓝牙卡片发送选择应用指令选择对应的应用;
第一获取模块,用于从后台服务器获取终端随机数;
第一封装模块,用于将更新后的发送序列计数器和包含所述终端随机数的APDU指令封装成安全通道初始化指令,所述发送序列计数器的初始值为一随机数;
第一发送模块,用于将所述第一封装模块的安全通道初始化指令发送给所述蓝牙卡片内的蓝牙芯片;
第一接收模块,用于接收所述蓝牙芯片发送的第一封装结果;
第一解析模块,用于对所述第一接收模块接收到的第一封装结果进行解析;
第五发送模块,用于将所述第一解析模块解析得到的卡片随机数和卡片密文发送给所述后台服务器进行验证;
第五接收模块,用于接收所述后台服务器发送的报文信息;
第一保存模块,用于保存所述第五接收模块接收到的报文信息中的安全通道过程密钥;
第三封装模块,用于更新发送序列计数器,将预设命令码、更新后的发送序列计数器、包括所述报文信息中的主机密文和MAC的APDU指令封装成安全通道认证指令;
所述第一发送模块还用于将所述第三封装模块的安全通道认证指令发送给所述蓝牙芯片;
所述第一接收模块还用于接收所述蓝牙芯片发送的第二封装结果;
第三判断模块,用于判断所述第一接收模块接收到第二封装结果是否合法,是则安全通道建立成功,否则结束;
第一通讯模块,用于在安全通道建立成功之后使用所述安全通道过程密钥对与所述蓝牙卡片的交互数据加密后进行通讯;
所述蓝牙芯片包括:
第二接收模块,用于接收所述终端发送的安全通道初始化指令、所述安全通道认证指令;
第一判断模块,用于判断所述第二接收模块接收到的安全通道初始化指令中的发送序列计数器是否出现异常,是则给所述终端返回包括错误状态码的第一封装结果,否则触发第二获取模块;
所述第二获取模块,用于从所述安全通道初始化指令的第一预设位置获取包含所述终端随机数的APDU指令;
第二发送模块,用于将所述第二获取模块获取的包含所述终端随机数的APDU指令发送给所述蓝牙卡片内的安全芯片;
第四接收模块,用于接收所述安全芯片返回的信息和APDU指令;
第二封装模块,用于将安全通道初始化指令中的发送序列计数器、预设的通讯状态码、所述第四接收模块接收到的包含卡片随机数和卡片密文的APDU指令进行封装得到第一封装结果;
第四发送模块,用于将所述第二封装模块的第一封装结果发送给所述终端;
第二判断模块,用于判断所述第二接收模块接收到的安全通道认证指令中的发送序列计数器是否异常,是则给终端返回包括错误状态码的第二封装结果,否则触发第三获取模块;
所述第三获取模块,用于从所述安全通道认证指令的第一预设位置获取包含所述主机密文和MAC的APDU指令;
所述第二发送模块还用于将所述第三获取模块获取的包含所述主机密文和MAC的APDU指令发送给所述安全芯片;
第四封装模块,用于将安全通道认证指令中的发送序列计数器、预设通讯状态码、所述第四接收模块接收到的安全芯片返回的信息进行封装得到第二封装结果;
所述第四发送模块还用于将所述第四封装模块的第二封装结果发送给所述终端;
所述安全芯片包括:
第三接收模块,用于接收所述蓝牙芯片发送的包含终端随机数的APDU指令;还用于接收所述蓝牙芯片发送的包含主机密文和MAC的APDU指令;
第四获取模块,用于从所述第三接收模块接收到的包含终端随机数的APDU指令中获取终端随机数;
第一生成模块,用于生成卡片随机数;
第二生成模块,用于根据所述第一生成模块生成的卡片随机数、所述第四获取模块获取到的终端随机数生成安全通道过程密钥和卡片密文;
第三发送模块,用于将包含所述第一生成模块生成的卡片随机数和所述第二生成模块生成的卡片密文的APDU指令发送给所述蓝牙芯片;
第五获取模块,用于从所述第三接收模块接收到的包含主机密文和MAC的APDU指令中获取主机密文和MAC;
第一验证模块,用于对所述第五获取模块获取的主机密文和MAC进行验证;
所述第三发送模块还用于当所述第一验证模块验证成功时给所述蓝牙芯片返回成功信息,当所述第一验证模块验证失败时给所述蓝牙芯片返回错误信息;
所述蓝牙卡片还包括第二通讯模块,用于在安全通道建立成功之后使用所述安全通道过程密钥对与所述终端的交互数据加密后进行通讯;
所述***还包括后台服务器,所述后台服务器包括:
第六接收模块,用于接收所述终端发送的卡片随机数和卡片密文;
第三生成模块,用于根据所述第六接收模块接收到的卡片随机数、生成的终端随机数和根密钥生成安全通道过程密钥和安全通道MAC过程密钥;
第二验证模块,用于验证所述第六接收模块接收到的卡片密文;
第四生成模块,用于当所述第二验证模块验证成功时通过所述卡片随机数、终端随机数、所述安全通道过程密钥生成主机密文,通过所述安全通道MAC过程密钥和所述主机密文计算生成MAC;
第六发送模块,用于将包括所述安全通道过程密钥、所述安全通道MAC过程密钥、所述主机密文和所述MAC的报文信息发送给所述终端;还用于当所述第二验证模块验证失败时给所述终端返回卡片密文验证失败信息;
所述终端还包括第八判断模块;
所述第五接收模块还用于接收所述后台服务器发送的卡片密文验证失败信息;
所述第八判断模块,用于判断所述第五接收模块接收到的所述后台服务器发送的信息是否为卡片密文验证失败信息,是则结束,否则触发所述第一保存模块。
25.如权利要求24所述的***,其特征在于,所述发送选择模块包括:
第一发送子模块,用于通过给所述蓝牙卡片内的蓝牙芯片发送选择应用指令;
第一判断子模块,用于判断接收到蓝牙芯片返回的第三封装结果是否合法,是则触发所述第一获取模块,否则结束;
所述第二接收模块还用于接收到所述终端发送的选择应用指令;
所述蓝牙芯片还包括:第五判断模块、第五封装模块和第三解析模块;
所述第五判断模块,用于判断所述第二接收模块接收到的选择应用指令中的发送序列计数器是否异常,是则给终端返回包括错误状态码的第三封装结果,否则触发所述第三解析模块;
所述第三解析模块,用于对所述选择应用指令进行解析得到第三解析结果;
所述第二发送模块还用于将所述第三解析模块的第三解析结果发送给所述蓝牙卡片内的安全芯片;
所述第三接收模块还用于接收所述蓝牙芯片发送的第三解析结果;
所述安全芯片还包括第三判断模块;
所述第三判断模块,用于根据是第三接收模块接收到的第三解析结果判断是否存在对应的应用;
所述第三发送模块还用于当所述第三判断模块判断为是时给所述蓝牙芯片返回成功信息,当所述第三判断模块判断为否时给所述蓝牙芯片返回错误信息;
所述第五封装模块,用于对预设通讯状态码、所述选择应用指令中的发送序列计数器和所述第四接收模块接收到的所述安全芯片返回的信息进行封装得到第三封装结果;
所述第四发送模块还用于将所述第五封装模块的第三封装结果发送给所述终端。
26.如权利要求25所述的***,其特征在于,所述第三解析模块具体用于判断选择应用指令中的序列计数器是否出现异常,是则给终端返回包括错误状态码的第三封装结果,否则所述蓝牙芯片从所述选择应用指令中的第二预设位置获取数据长度,根据所述数据长度从选择应用指令的第一预设位置获取相应长度的数据得到第三解析结果。
27.如权利要求25所述的***,其特征在于,所述蓝牙芯片还包括:
第六判断模块,用于判断所述第三解析模块的选择应用指令中的命令码是否为第一预设数据,是则触发所述第二发送模块将第三解析结果发送给所述蓝牙卡片内的安全芯片,否则判断所述命令码是否是预定指令码;如为预定指令码则根据命令码进行相应操作,如不为预定指令码则给终端返回包含错误信息的第三封装结果。
28.如权利要求25所述的***,其特征在于,所述第一判断子模块具体用于判断第三封装结果中的通讯状态码是否为第二预设数据且第三封装结果中的序列计数器是否与所述选择应用指令中的序列计数器相同,是则第三封装结果合法,触发所述第一获取模块,否则第三封装结果不合法,结束。
29.如权利要求24所述的***,其特征在于,所述第一获取模块具体用于给所述后台服务器发送申请终端随机数的消息;并接收所述后台服务器发送的终端随机数。
30.如权利要求24所述的***,其特征在于,所述蓝牙芯片还包括:
第七判断模块,用于判断所述安全通道初始化指令中的命令码是否为第一预设数据,是则触发所述第二发送模块将所述APDU指令发送给所述蓝牙卡片内的安全芯片,否则判断所述安全通道初始化指令中的命令码是否是预定指令码;如为预定指令码则根据命令码进行相应操作,如不为预定指令码则给所述终端返回包含错误信息的第一封装结果。
31.如权利要求24所述的***,其特征在于,所述第二生成模块具体用于根据卡片随机数、终端随机数、安全通道密钥、安全通道MAC密钥生成安全通道过程密钥和安全通道MAC过程密钥,根据安全通道过程密钥、卡片随机数与终端随机数生成卡片密文。
32.如权利要求31所述的***,其特征在于,所述第二生成模块包括:
第一生成子模块,用于根据卡片随机数与所述终端随机数生成密钥分散因子;
第二生成子模块,用于根据安全通道密钥与所述密钥分散因子生成安全通道过程密钥,根据安全通道MAC密钥与所述密钥分散因子生成安全通道MAC过程密钥;
第三生成子模块,用于利用所述安全通道过程密钥、所述卡片随机数与所述终端随机数生成卡片密文。
33.如权利要求32所述的***,其特征在于,所述第一生成子模块具体用于将卡片随机数右半部分、终端随机数左半部分、卡片随机数左半部分、终端随机数右半部分顺序拼接组成密钥分散因子。
34.如权利要求32所述的***,其特征在于,所述第二生成子模块具体用于以安全通道过程密钥为密钥,对密钥分散因子进行预设算法计算得到安全通道过程密钥;所述安全芯片以安全通道MAC密钥为密钥,对密钥分散因子进行预设算法计算得到安全通道MAC过程密钥。
35.如权利要求32所述的***,其特征在于,所述第三生成子模块具体用于以安全通道过程密钥为密钥,以第一预设值为初始向量,根据预设算法对终端随机数与卡片随机数的拼接值进行计算得到卡片密文。
36.如权利要求24所述的***,其特征在于,所述第二封装模块具体用于计算所述第四接收模块接收到的安全芯片发送的包含所述卡片随机数和所述卡片密文的APDU指令的长度,根据预设工作模式、发送序列计数器的值、通讯状态码、计算得到的APDU指令的长度和包含所述卡片随机数和所述卡片密文的APDU指令计算校验和,将预设工作模式、发送序列计数器的值、通讯状态码、计算得到的APDU指令的长度、包含所述卡片随机数和所述卡片密文的APDU指令和校验和进行封装得到第一封装结果。
37.如权利要求24所述的***,其特征在于,所述第一解析模块具体用于从所述第一封装结果中的第二预设位置获取数据长度,根据所述数据长度从所述第一封装结果中的第第一预设位置获取相应长度的数据得到APDU指令,从所述APDU指令中获取卡片随机数和卡片密文。
38.如权利要求24所述的***,其特征在于,所述第二验证模块包括:
第四生成子模块,用于根据安全通道过程密钥、卡片随机数、终端随机数生成第一验证密文;
比较子模块,用于比较所述第六接收模块接收到的卡片密文与生成的第一验证密文是否相等,是则验证成功,否则验证失败。
39.如权利要求38所述的***,其特征在于,所述第四生成子模块具体用于以安全通道过程密钥为密钥,以第一预设值为初始向量,对终端随机数与卡片随机数的拼接值进行预设算法计算得到第一验证密文。
40.如权利要求24所述的***,其特征在于,所述第四生成模块具体用于以安全通道过程密钥为密钥,以第一预设值为初始向量,对卡片随机数与终端随机数的拼接值进行预设算法计算得到主机密文;以安全通道过程密钥为密钥,以第一预设值为初始向量,根据预设算法对所述主机密文进行计算得到MAC。
41.如权利要求24所述的***,其特征在于,所述蓝牙芯片还包括:
第九判断模块,用于判断所述安全通道认证指令中的命令码是否为第一预设数据,是则触发所述第二发送模块将包含所述主机密文和MAC的APDU指令发送给所述安全芯片,否则判断所述命令码是否是预定指令码;如为预定指令码则根据命令码进行相应操作,如不为预定指令码则给终端返回包含错误信息的第二封装结果。
42.如权利要求24所述的***,其特征在于,所述第一验证模块包括:
第一获取子模块,用于从第三接收模块接收到的包含所述主机密文和MAC的APDU指令中获取所述主机密文和MAC;
第五生成子模块,用于通过卡片随机数、终端随机数、安全通道过程密钥生成主机验证密文;
第六生成子模块,用于通过安全通道MAC过程密钥与主机密文生成MAC验证数据;
第二判断子模块,用于判断所述第五生成子模块生成的主机验证密文与接收到的安全通道认证指令中的主机密文是否相等,且所述第六生成子模块生成的MAC验证数据与安全通道认证指令中的MAC是否相等,若两者判断均为是则验证成功,否则验证失败。
43.如权利要求42所述的***,其特征在于,所述第五生成子模块具体用于以安全通道过程密钥为密钥,以第一预设值为初始向量,对卡片随机数与终端随机数的拼接值进行预设算法计算得到主机验证密文。
44.如权利要求42所述的***,其特征在于,所述第六生成子模块具体用于以安全通道过程密钥为密钥,以第一预设值为初始向量,对主机密文进行预设算法计算得到MAC验证数据。
45.如权利要求24所述的***,其特征在于,所述第四封装模块具体用于计算接收到的安全芯片返回的信息的长度,根据预设工作模式、发送序列计数器的值、通讯状态码、所述信息的长度和所述信息计算校验和,根据所述预设工作模式、所述发送序列计数器的值、通讯状态码、所述信息的长度、所述信息和所述校验和生成第二封装结果。
46.如权利要求24所述的***,其特征在于,所述第三判断模块具体用于判断所述第一接收模块接收到的第二封装结果中的通讯状态是否为第一设定值且所述第二封装结果中的序列计数器的值是否与所述安全通道认证指令中的序列计数器的值相同,是则判断所述第二封装结果中的数据域内容是否为第三预设数据,是则安全通道建立成功,否则结束。
CN201811536820.7A 2018-12-14 2018-12-14 一种在应用通信中保护数据安全的实现方法及*** Active CN109660341B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811536820.7A CN109660341B (zh) 2018-12-14 2018-12-14 一种在应用通信中保护数据安全的实现方法及***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811536820.7A CN109660341B (zh) 2018-12-14 2018-12-14 一种在应用通信中保护数据安全的实现方法及***

Publications (2)

Publication Number Publication Date
CN109660341A CN109660341A (zh) 2019-04-19
CN109660341B true CN109660341B (zh) 2021-03-16

Family

ID=66114270

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811536820.7A Active CN109660341B (zh) 2018-12-14 2018-12-14 一种在应用通信中保护数据安全的实现方法及***

Country Status (1)

Country Link
CN (1) CN109660341B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101009555A (zh) * 2006-12-29 2007-08-01 北京飞天诚信科技有限公司 一种智能密钥装置及其与主机进行信息交互的方法
CN101540675A (zh) * 2008-12-31 2009-09-23 北京飞天诚信科技有限公司 一种智能密钥设备与应用软件的通讯方法和***
CN101917216A (zh) * 2010-08-25 2010-12-15 罗正棣 一种采用蓝牙智能卡实现安全移动应用的***和方法
CN103164738A (zh) * 2013-02-06 2013-06-19 厦门盛华电子科技有限公司 一种基于移动支付多通道数字认证的手机用户识别卡
CN108923934A (zh) * 2018-08-01 2018-11-30 飞天诚信科技股份有限公司 一种管理卡片生命周期的实现方法及装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080301433A1 (en) * 2007-05-30 2008-12-04 Atmel Corporation Secure Communications
FR3032846B1 (fr) * 2015-02-12 2018-01-26 Idemia France Procede de communication securisee entre un systeme d'exploitation d'un terminal et un dispositif distinct du terminal

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101009555A (zh) * 2006-12-29 2007-08-01 北京飞天诚信科技有限公司 一种智能密钥装置及其与主机进行信息交互的方法
CN101540675A (zh) * 2008-12-31 2009-09-23 北京飞天诚信科技有限公司 一种智能密钥设备与应用软件的通讯方法和***
CN101917216A (zh) * 2010-08-25 2010-12-15 罗正棣 一种采用蓝牙智能卡实现安全移动应用的***和方法
CN103164738A (zh) * 2013-02-06 2013-06-19 厦门盛华电子科技有限公司 一种基于移动支付多通道数字认证的手机用户识别卡
CN108923934A (zh) * 2018-08-01 2018-11-30 飞天诚信科技股份有限公司 一种管理卡片生命周期的实现方法及装置

Also Published As

Publication number Publication date
CN109660341A (zh) 2019-04-19

Similar Documents

Publication Publication Date Title
KR102519990B1 (ko) 인증 장치 및 방법
CN107294937B (zh) 基于网络通信的数据传输方法、客户端及服务器
CN101682628A (zh) 安全通信
CN105450269A (zh) 一种实现蓝牙设备间安全交互配对认证的方法及装置
CN108600222B (zh) 客户端应用与可信应用的通信方法、***以及终端
CN108768963B (zh) 可信应用与安全元件的通信方法和***
CN113179240B (zh) 密钥保护方法、装置、设备及存储介质
CN109688098B (zh) 数据的安全通信方法、装置、设备及计算机可读存储介质
CN111740942B (zh) 一种登录/注册方法、装置、***、电子设备及存储介质
KR20220117211A (ko) 비접촉식 카드 개인 식별 시스템
KR20190028787A (ko) 그래픽 코드 정보를 제공 및 획득하기 위한 방법 및 디바이스, 그리고 단말
CN109145628B (zh) 一种基于可信执行环境的数据采集方法及***
CN108323230B (zh) 一种传输密钥的方法、接收终端和分发终端
CN110166489B (zh) 一种物联网中数据传输方法、***、设备及计算机介质
CN102624711B (zh) 一种敏感信息传输方法及***
CN102624710B (zh) 一种敏感信息传输方法及***
CN113572743A (zh) 数据加密、解密方法、装置、计算机设备和存储介质
CN111444496A (zh) 应用控制方法、装置、设备以及存储介质
CN109922022A (zh) 物联网通信方法、平台、终端和***
US9756044B2 (en) Establishment of communication connection between mobile device and secure element
CN112069535B (zh) 一种基于访问分区物理隔离的双***安全智能终端架构
CN113591109A (zh) 可信执行环境与云端通信的方法及***
WO2021047281A1 (zh) 一种硬件钱包绑定授权的方法及装置
CN109660341B (zh) 一种在应用通信中保护数据安全的实现方法及***
CN108235807B (zh) 软件加密终端、支付终端、软件包加密及解密方法及***

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant