一种在应用通信中保护数据安全的实现方法及系统与流程

文档序号:17480763发布日期:2019-04-20 06:26阅读:240来源:国知局
一种在应用通信中保护数据安全的实现方法及系统与流程

本发明涉及信息安全领域,尤其涉及一种在应用通信中保护数据安全的实现方法及系统。



背景技术:

现有技术中,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接口将选择应用指令发送给蓝牙芯片;具体的,选择应用指令中包括工作模式、发送序列计数器、命令码、命令长度、命令数据域、字节校验和;

例如,本实施例中的选择应用指令为01000b010104000c00a4040007a00000033301010e;其中,01是工作模式,表示蓝牙卡片是接触式智能卡操作模式;0b01是发送序列计数器的值,发送序列计数器的初始值为一随机数,终端每次给蓝牙卡片发送指令之前进行更新(例如自加1),发送序列计数器的上限值为4095;0104为命令码,为终端通知蓝牙芯片给安全芯片转发apdu指令;000c为apdu指令的长度;00a4040007a0000003330101为apdu指令,0e为校验和;

步骤201:蓝牙卡片内的蓝牙芯片接收到选择应用指令后根据根据蓝牙协议对选择应用指令进行解析,将第三解析结果发送给蓝牙卡片内的安全芯片;

具体的,在本实施例中,根据蓝牙协议对选择应用指令进行解析具体为:蓝牙芯片判断选择应用指令中的序列计数器是否出现异常,是则给终端返回包括错误状态码的第三封装结果,执行步骤204,否则蓝牙芯片从选择应用指令中的第7、8字节获取数据长度,根据数据长度从选择应用指令的第9字节开始获取相应长度的数据得到第三解析结果;其中蓝牙芯片判断选择应用指令中的序列计数器是否出现异常具体为:蓝牙芯片判断选择应用指令中的序列计数器的值和前一个请求报文中的序列计数器的值的差值是否不为1或判断选择应用指令中的序列计数器的值是否大于4095,是则视为选择应用指令中的序列计数器异常;

优选的,将第三解析结果发送给蓝牙芯片的安全芯片之前还包括:蓝牙芯片判断选择应用指令中的命令码是否为第一预设数据,是则将第三解析结果发送给蓝牙芯片的安全芯片,否则判断命令码是否是预定指令码;如为预定指令码则根据命令码进行相应操作,如不为预定指令码则给终端返回包含错误信息的第三封装结果,执行步骤204;

具体的,第一预设数据为0104;如预定指令码为0102则对安全芯片进行上电操作,如指令码为0101则对安全芯片进行下电操作;

步骤202:安全芯片根据第三解析结果判断是否存在对应的应用,是则给蓝牙芯片返回成功信息,执行步骤203,否则给蓝牙芯片返回错误信息,执行步骤203;

步骤203:蓝牙芯片对预设通讯状态码、选择应用指令中的发送序列计数器和接收到的安全芯片返回的信息进行封装得到第三封装结果,并将第三封装结果发送给终端;

具体的,在本实施例中,蓝牙芯片根据蓝牙协议对接收到信息进行封装得到第三封装结果,包括:蓝牙芯片计算接收到的信息的长度,根据预设工作模式、发送序列计数器的值、通讯状态码、信息的长度和信息计算校验和,根据预设工作模式、发送序列计数器的值、通讯状态码、信息的长度、信息和校验和生成第三封装结果;

例如,工作模式为01,发送序列计数器为0b01,通讯状态码为0000,信息的长度为004e,信息为6f4a8407a0000003330101a53f500b50424f43204372656469749f38069f33039f4e145f2d087a68656e667264659f1101019f120f4341524420494d4147452030303031bf0c059f4d020b0a9000,根据预设工作模式、发送序列计数器的值、通讯状态码、信息的长度和信息计算得到的校验和为0b,生成的第三封装结果为01000b010000004e6f4a8407a0000003330101a53f500b50424f43204372656469749f38069f33039f4e145f2d087a68656e667264659f1101019f120f4341524420494d4147452030303031bf0c059f4d020b0a90000b;

优选的,蓝牙芯片通过调用蓝牙协议层发送数据的接口(例如cyble_gattsnotification)将第三封装结果返回数据发送给终端;手机通过回调bluetoothgattcallback中的oncharacteristicread接口接收蓝牙芯片返回的数据;

步骤204:终端判断接收到蓝牙芯片返回的第三封装结果是否合法,是则执行步骤205,否则结束;

具体的,步骤204为:终端判断第三封装结果中的通讯状态码是否为第二预设数据且第三封装结果中的序列计数器是否与选择应用指令中的序列计数器相同,是则第三封装结果合法,否则第三封装结果不合法;例如第二预设数据为0000;

步骤205:终端给后台服务器发送申请终端随机数的消息;

步骤206:后台服务器生成终端随机数并将其发送给终端;

步骤207:终端更新发送序列计数器,并将发送序列计数器和包含终端随机数的apdu指令封装成安全通道初始化指令,并将安全通道初始化指令发送给蓝牙芯片;

具体的,在本实施例中,终端通过调用bluetoothgatt类的writecharacteristic接口将通道初始化指令发送给蓝牙芯片;

例如,本实施例中的更新后的发送序列号为0b02,终端随机数为a08b93598ae2c939,包含终端随机数的apdu指令为8050000008a08b93598ae2c939,生成的安全通道初始化指令为01000b020104000d8050000008a08b93598ae2c9390d;其中,01是工作模式,表示蓝牙卡片是接触式智能卡操作模式;0002是发送序列计数器;0104为命令码,为终端通知蓝牙芯片给安全芯片转发apdu指令;apdu指令的长度为000d,apdu指令为8050000008a08b93598ae2c939,0d为校验和;

步骤208:蓝牙芯片判断安全通道初始化指令中的序列计数器是否出现异常,是则给终端返回包括错误状态码的第一封装结果,否则蓝牙芯片从安全通道初始化指令的第一预设位置获取包含终端随机数的apdu指令,并将apdu指令发送给安全芯片;

具体的,在本实施例中,蓝牙芯片从安全通道初始化指令的第一预设位置获取包含终端随机数的apdu指令具体为:蓝牙芯片从安全通道初始化指令中的第7、8字节获取apdu指令长度,根据apdu指令长度从安全通道初始化指令的第9字节开始获取相应长度的数据得到包含终端随机数的apdu指令;其中蓝牙芯片判断安全通道初始化指令中的序列计数器是否出现异常具体为:蓝牙芯片判断安全通道初始化指令中的序列计数器的值与前一个请求报文中的序列计数器的值的差值是否不为1或判断安全通道初始化指令中的序列计数器的值是否大于预设阈值,是则视为安全通道初始化指令中的序列计数器异常;

优选的,将apdu指令发送给蓝牙芯片的安全芯片之前还包括:蓝牙芯片判断安全通道初始化指令中的命令码是否为第一预设数据,是则将apdu指令发送给蓝牙芯片的安全芯片,否则判断安全通道初始化指令中的命令码是否是预定指令码;如为预定指令码则根据命令码进行相应操作,如不为预定指令码则给终端返回包含错误信息的第一封装结果;

例如,本实施例中的错误信息为0006;可选的,在本实施例中,不同的错误信息标识不同的错误,例如0001表示非法指令,0002表示通讯超时,0003表示通讯失败,0004表示btc忙,0005表示非法状态,0006表示会话流水号异常;

步骤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,发送序列计数器为0b02,通讯状态码为0000,apdu指令的长度为0022,包含卡片随机数和卡片密文的apdu指令为00000000000000622800010000111701811c9205bdded441e067ca7570e2b51b9000,计算得到的校验码为08,则第一封装结果为01000b020000002200000000000000622800010000111701811c9205bdded441e067ca7570e2b51b900008;

步骤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,更新后的发送序列计数器为0b03,命令码为0104,apdu指令的长度为0015,包含主机密文和mac的apdu指令为84820000109d5999818ab3263ecc774f6788bd0e98,根据上述工作模块、发送序列计数器、命令码为、apdu指令的长度和包含主机密文和mac的apdu指令计算得到的校验码为08,生成的安全通道认证指令为01000b030104001584820000109d5999818ab3263ecc774f6788bd0e9808;

步骤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,发送序列计数器为0b03,通讯状态码为0000,接收到的信息为00029000,计算得到的校验和位0c,则第二封装结果为01000b030000000290000c;

优选的,在本实施例中,蓝牙芯片通过调用蓝牙协议层发送数据的接口(例如cyble_gattsnotification)将第二封装结果发送给终端;终端通过回调bluetoothgattcallback中的oncharacteristicread接口接收蓝牙芯片的返回数据;

步骤223:终端判断接收到第二封装结果中是否合法,是则安全通道建立成功,执行步骤224,否则结束;

具体的,步骤223为:终端判断第二封装结果中的通讯状态码是否为0000且第二封装结果中的序列计数器的值是否与安全通道认证指令中的序列计数器的值相同,是则判断第二封装结果中的数据域内容是否为第三预设数据,如为如为第一预设数据则第二封装结果合法,否则第二封装结果不合法;例如第三预设数据为9000;

步骤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接收到的第二封装结果中的通讯状态是否为第一设定值且第二封装结果中的序列计数器的值是否与安全通道认证指令中的序列计数器的值相同,是则判断第二封装结果中的数据域内容是否为第三预设数据,是则安全通道建立成功,否则结束。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1