一种在终端和服务器之间建立安全通道的方法及装置与流程

文档序号:15497731发布日期:2018-09-21 22:02阅读:281来源:国知局

本发明涉及信息安全领域,尤其涉及一种在终端和服务器之间建立安全通道的方法及装置。



背景技术:

在现有技术中,不同的ic卡插入终端中,终端只能利用预先存储的根密钥对同一组随机数加密得到传输密钥,使得终端对发送至服务器的数据和接收服务器发来的数据进行加解密时采用相同的传输密钥,造成传输密钥是固定且单一的,而且一旦发生根密钥泄漏的情况,数据传输就变得不安全。



技术实现要素:

本发明的目的是为了解决现有技术中存在的问题,提供了一种在终端和服务器之间建立安全通道的方法及装置。

本发明采用的技术方案是:

本发明提供了一种在终端和服务器之间建立安全通道的方法,包括:

步骤s1、终端接收服务器通过客户端发来的建立安全通道指令,生成产生第二应用密文数据指令,并向ic卡发送产生第二应用密文数据指令;

步骤s2、终端接收ic卡返回的第二应用密文数据,从第二应用密文数据中获取第一应用密文,将第二预置数据组中的四组预置数据分别和建立安全通道指令中的配置数据进行拼接,对拼接后的四组数据使用第一应用密文进行加密,得到上行工作密钥、下行工作密钥、上行mac密钥和下行mac密钥;

步骤s3、终端使用上行mac密钥对第三预置数据进行加密,产生第一校验值;

步骤s3之前还包括:

步骤x:终端生成产生第一应用密文数据指令,并向ic卡发送产生第一应用密文数据指令;

步骤y:终端接收ic卡返回的第一应用密文数据后,根据第一应用密文数据生成第一令牌;

步骤s3中还包括:将第一令牌和第一校验值通过客户端发送至服务器。

本发明提供了一种在终端和服务器之间建立安全通道的装置,包括:

接收模块,用于接收服务器通过客户端发来的建立安全通道指令;

生成模块,用于接收模块接收到建立安全通道指令后,生成产生第二应用密文数据指令;

发送模块,用于向ic卡发送生成模块生成的产生第二应用密文数据指令;

接收模块,还用于接收ic卡返回的第二应用密文数据;

拼接模块,用于从接收模块接收到的第二应用密文数据中获取第一应用密文,将第二预置数据组中的四组预置数据分别和建立安全通道指令中的配置数据进行拼接;

加密模块,用于对拼接模块拼接后的四组数据使用第一应用密文进行加密,得到上行工作密钥、下行工作密钥、上行mac密钥和下行mac密钥;

加密模块,还用于对第三预置数据进行加密,产生第一校验值;

装置还包括:

生成模块,还用于生成产生第一应用密文数据指令;

发送模块,还用于将生成模块生成的产生第一应用密文数据指令发送至ic卡;

接收模块,还用于接收ic卡返回的第一应用密文数据;

生成模块,还用于根据接收模块接收的第一应用密文数据生成第一令牌;

发送模块,还用于将第一令牌和第一校验值通过客户端发送至服务器。

本发明取得的有益效果是:采用本发明的技术方案,终端利用ic卡产生的应用密文和服务器进行协商,双方使用该应用密文各自生成上行密钥和下行密钥,建立安全通道;终端使用上行密钥加密,用下行密钥解密;且不同的ic卡插入终端会产生不同的应用密文,使得后续数据传输过程更安全。

附图说明

为了更清楚的说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例一提供的一种在终端和服务器之间建立安全通道的方法的流程图;

图2为本发明实施例二提供的一种在终端和服务器之间建立安全通道的方法的流程图;

图3-图5为本发明实施例三提供的一种在终端和服务器之间建立安全通道的方法的流程图;

图6为本发明实施例四提供的一种在终端和服务器之间建立安全通道的装置的方框图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例一

本实施例提供了一种在终端和服务器之间建立安全通道的方法,如图1所示,包括:

步骤s1、终端接收服务器通过客户端发来的建立安全通道指令,生成产生第二应用密文数据指令,并向ic卡发送产生第二应用密文数据指令;

步骤s2、终端接收ic卡返回的第二应用密文数据,从第二应用密文数据中获取第一应用密文,将第二预置数据组中的四组预置数据分别和建立安全通道指令中的配置数据进行拼接,对拼接后的四组数据使用第一应用密文进行加密,得到上行工作密钥、下行工作密钥、上行mac密钥和下行mac密钥;

步骤s3、终端使用上行mac密钥对第三预置数据进行加密,产生第一校验值;

步骤s3之前还包括:

步骤x:终端生成产生第一应用密文数据指令,并向ic卡发送产生第一应用密文数据指令;

步骤y:终端接收ic卡返回的第一应用密文数据后,根据第一应用密文数据生成第一令牌;

步骤s3中还包括:将第一令牌和第一校验值通过客户端发送至服务器。

优选地,步骤x中生成产生第一应用密文数据指令,具体为:根据第一预置数据和建立安全通道指令中的不可预知数生成产生第一应用密文数据指令;

步骤s1中终端生成产生第二应用密文数据指令,具体为:根据第一预置数据和建立安全通道指令中的不可预知数生成产生第二应用密文数据指令。

优选地,步骤s1中终端接收服务器通过客户端发来的建立安全通道指令后,还包括:

步骤a1、终端从建立安全通道指令中获取应用文件列表,从应用文件列表中获取应用标识符,根据应用标识符生成选择应用指令,并向ic卡发送选择应用指令;

步骤a2、终端接收ic卡发来的选择应用响应,根据选择应用响应生成获取处理选项指令,并向ic卡发送获取处理选项指令;

步骤a3、终端接收ic卡发来的获取处理选项指令响应,根据获取处理选项指令响应确定要读取的ic卡记录,生成读记录指令,并向ic卡发送读记录指令;

步骤a4、终端接收ic卡发来的读记录响应,从读记录响应中获取主账号序列号。

在本实施例中,步骤y中,根据第一应用密文数据生成第一令牌,具体为:

终端将主账号序列号和第一应用密文数据进行拼接,对拼接后的数据进行计算,生成第一令牌。

优选地,步骤s3之前,还包括:

步骤b1、终端从建立安全通道指令中获取应用文件列表,从应用文件列表中获取应用标识符,根据应用标识符生成选择应用指令,并向ic卡发送选择应用指令;

步骤b2、终端接收ic卡发来的选择应用响应,根据选择应用响应生成获取处理选项指令,并向ic卡发送获取处理选项指令;

步骤b3、终端接收ic卡发来的获取处理选项指令响应。

在本实施例中,方法还包括:

步骤c1、终端接收服务器发来的查询卡片交易记录指令密文和第三校验值;

步骤c2、终端判断第三校验值是否正确,是则终端使用下行工作密钥解密查询卡片交易记录指令密文,得到查询卡片交易记录指令,并向ic卡发送查询卡片交易记录指令;否则报错结束;

步骤c3、终端接收到ic卡返回的查询卡片交易记录响应后,使用上行工作密钥对查询卡片交易记录响应加密,得到查询卡片交易记录响应密文;

步骤c4、终端使用上行mac密钥对第三预置数据进行计算,产生第四校验值,并将查询卡片交易记录响应密文和第四校验值发送至服务器。

相应地,方法还包括:

步骤s4、服务器获取ic卡卡号,根据预置的配置数据和自身产生的不可预知数生成建立安全通道指令,并将生成建立安全通道指令通过客户端发送至终端;

步骤s5、服务器接收到终端通过客户端发来的第一令牌和第一校验值后,根据不可预知数生成获取到的卡号对应的第三应用密文数据,根据第三应用密文数据生成第二令牌,判断第一令牌和第二令牌是否相同,是则执行步骤s6,否则报错结束;

步骤s6、服务器从第三应用密文数据中获取第二应用密文,将第四预置数据组中的四组预置数据分别和建立安全通道指令中的配置数据进行拼接,对拼接后的四组数据分别使用第二应用密文进行加密,得到上行工作密钥、下行工作密钥、上行mac密钥和下行mac密钥;

步骤s7、服务器使用上行mac密钥对第五预置数据进行加密,产生第二校验值,判断第一校验值和第二校验值是否相同,是则安全通道建立;否则报错结束。

优选地,方法还包括:

服务器生成查询卡片交易记录指令,并使用下行工作密钥对查询卡片交易记录指令进行加密,得到查询卡片交易记录指令密文;使用下行mac密钥算出第三校验值。

进一步地,方法还包括:

步骤d1、服务器接收终端通过客户端发送的第四校验值和查询卡片交易记录响应,判断第四校验值是否正确,是则步骤d2;否则报错结束;

步骤d2、服务器使用上行工作密钥解密查询卡片交易记录响应密文,得到查询卡片交易记录响应,判断查询卡片交易记录响应是否正确,是则向客户端发送查询结果;否则向客户端发送查询失败。

实施例二

本实施例提供了一种在终端和服务器之间建立安全通道的方法中终端的工作方法,如图2所示,包括:

步骤201、终端接收客户端转发服务器发送的建立安全通道指令后,从建立安全通道指令中获取应用文件列表,从应用文件列表中获取应用标识符,根据应用标识符生成选择应用指令,并向ic卡发送选择应用指令;

具体地,服务器生成建立安全通道指令具体包括:生成不可预知数、设置算法类型,将不可预知数、算法类型、预置的配置数据和应用文件列表拼接组成建立安全通道指令。

例如,建立安全通道指令为:841210001c9f370434a23b14df72090112a5b13501020304e707a0000000048002,其中34a23b14为不可预知数,01为使用的算法类型,12a5b13501020304为配置数据,a0000000048002为应用文件列表。

例如,终端向ic卡发送选择应用指令具体为:00a4040007a0000000048002。

步骤202、终端接收ic卡发来的选择应用响应,根据选择应用响应生成获取处理选项指令,并向ic卡发送获取处理选项指令;

具体地,终端获取选择应用响应中的处理选项数据对象列表,从处理选项数据对象列表获取终端数据,根据终端数据生成获取处理选项指令,并向ic卡发送获取处理选项指令;

步骤203、终端接收ic卡发来的处理选项指令响应,根据处理选项指令响应确定要读取的ic卡记录,生成读记录指令,并向ic卡发送读记录指令;

步骤204、终端接收ic卡发来的读记录指令响应后,从读记录响应中获取主账号序列号;

步骤205、终端根据第一预置数据和从建立安全通道指令中获取的不可预知数生成产生第一应用密文数据指令,并向ic卡发送产生第一应用密文数据指令;

在本实施例中,产生第一应用密文数据指令的数据包括:从建立安全通道指令中获取的不可预知数和终端预置数据(终端国家代码和交易货币代码)。

例如,产生第一应用密文数据指令具体为:

80ae4000250000000000000000000000000156004000000001561704130034a23b14,其中,18-19字节为终端国家代码、25-26字节为交易货币代码、34a23b14为不可预知数。

步骤206、终端将ic卡发来的第一应用密文数据和主账号序列号进行拼接,对拼接后的数据进行计算,生成第一令牌;

具体地,在本实施例中,终端接收到第一应用密文数据后,对第一应用密文数据和读记录指令响应中主账号序列号进行拼接,对拼接后的数据进行压缩,对压缩后的数据进行加扰操作产生第一令牌。

具体地,第一应用密文数据包括:密文信息数据、交易计数器、应用密文和发卡行应用数据;

例如,将主账号序列号和第一应用密文数据顺序拼接后,得到拼接后的数据为:100100078792fdf0839377e80010a000012400000000;

产生的第一令牌为:f1z4d74a。

步骤207、终端从应用文件列表中获取应用标识符,根据应用的应用标识符生成选择应用指令,并向ic卡发送选择应用指令;

步骤208、终端接收ic卡发来的选择应用响应,根据选择应用响应生成获取处理选项指令,并向ic卡发送获取处理选项指令;

步骤209、终端接收ic卡发来的获取处理选项响应,生成产生第二应用密文数据指令向ic卡发送产生第二应用密文数据指令;

步骤210、终端接收ic卡发来的第二应用密文数据,从第二应用密文数据中获取应用密文,将第二预置数据组中的四组预置数据分别和建立安全通道指令中的配置数据进行拼接,对拼接后的数据使用应用密文进行第一预设算法加密,得到上行工作密钥、下行工作密钥、上行mac密钥和下行mac密钥;

具体地,在本实施例中,还包括:终端预存第二预置数据组;其中,第二预置数据组为:

data1:af2197b81a1b1c1d;data2:780b131a2a2b2c2d;data3:5c6334b83a3b3c3d;data4:1d6eceb44a4b4c4d。

在本实施例中,步骤201之前还包括:终端接收服务器发来的获取终端信息指令,终端通过客户端向服务器返回终端信息;

具体地,终端信息包括:算法类型、终端序列号、版本信息等。

相应地,步骤201之前还包括:终端从建立安全通道指令中获取算法类型;

进一步地,终端向ic卡发送产生应用密文指令后收到的应用密文数据中的应用密文为预设字节,终端根据算法类型确定算法对应的密钥长度,根据密钥长度确定向ic卡发送几次产生应用密文数据的指令,再将获取到的应用密文数据中的应用密文进行拼接;

具体地,以3des算法为例。由于3des算法对应的密钥长度是16字节,而终端向ic卡发送产生应用密文指令后收到的应用密文数据中的应用密文为8字节,须向ic卡发送两次产生应用密文数据的指令,将两次获取到的应用密文数据中的应用密文进行拼接。

具体地,ic卡将两次拼接后的应用密文为:8792fdf0839377e88792fdf0839377a0。

具体地,在本实施例,配置数据为:

data1:af2197b81a1b1c1d;data2:780b131a2a2b2c2d;data3:5c6334b83a3b3c3d;data4:1d6eceb44a4b4c4d。

在本实施例中,与配置数据拼接后的数据分别为:af2197b81a1b1c1d12a5b13501020304;780b131a2a2b2c2d12a5b13501020304;5c6334b83a3b3c3d12a5b13501020304;1d6eceb44a4b4c4d12a5b13501020304;

相应地,使用应用密文数据进行3des算法加密后,得到:

上行工作密钥为:f975a67961236e51921302ef5408d2148f4c96b11715943e;

下行工作密钥为:a6100a0db2db636b921302ef5408d2148f4c96b11715943e;

上行mac密钥为:b7664763ba061e7b921302ef5408d2148f4c96b11715943e;

下行mac密钥为:c78ee44fbd3460a7921302ef5408d2148f4c96b11715943e。

步骤211、终端使用上行mac密钥对终端中的第三预置数据进行运算,产生第一校验值,并将第一令牌和第一校验值发送至客户端;

在本实施例中,第三预置数据为:初始值;初始值为ctru和ctre,其中ctru的初始值为:00000001;ctre的初始值为:00000000。

在本实施例中,终端使用上行mac密钥对终端中的第三预置数据进行运算,具体为:终端将ctru和ctre进行拼接,终端使用上行mac密钥对拼接后的数据进行运算。

具体地,产生的第一校验值具体为:99a7d9efd6553eef。

步骤212、终端接收客户端转发服务器发来的查询卡片交易记录指令密文和第三校验值,判断第三校验值是否正确,是则使用下行工作密钥解密查询卡片交易记录指令密文,得到查询卡片交易记录指令,执行步骤213;否则报错结束;

在本实施例中,判断第三校验值是否正确,具体为:终端使用下行mac密钥对第三预置数据进行运算,判断得到的运算结果和第三校验值是否一致,是则使用下行工作密钥解密查询卡片交易记录指令密文,得到查询卡片交易记录指令,执行步骤213;否则报错结束;

步骤213、终端接收到ic卡返回的查询卡片交易记录响应后,使用上行工作密钥加密,得到查询卡片交易记录响应密文,使用上行mac密钥对第三预置数据进行计算,产生第四校验值,向客户端发送查询卡片交易记录响应密文和第四校验值。

实施例三

本实施例三提供了一种在终端和服务器之间建立安全通道的方法,如图3-图5所示,包括:

步骤101、客户端向服务器发送查询卡片交易记录的请求;

具体地,查询卡片交易记录的请求中包含卡号。

在本实施例中,步骤101之前,还包括:客户端和终端建立连接;

步骤102、服务器生成建立安全通道指令,向客户端发送建立安全通道指令,客户端发送建立安全通道指令至终端;

在本实施例中,服务器接收到查询卡片交易记录的请求后,生成不可预知数、设置算法类型,将不可预知数、算法类型、预置的配置数据和应用文件列表拼接,组成建立安全通道指令,并通过客户端向终端发送建立安全通道指令;

具体地,建立安全通道指令为:841210001c9f370434a23b14df72090112a5b13501020304e707a0000000048002,其中34a23b14为不可预知数,01为使用的算法类型,12a5b13501020304为配置数据,a0000000048002为应用文件列表。

需要说明的是,本实施例中的应用文件列表中只存有一个应用。

在本实施例中,步骤102之前还包括:

步骤101-1、服务器通过客户端向终端发送获取终端支持的算法类型的命令;

步骤101-2、终端通过客户端向服务器返回终端支持的算法类型;

具体地,服务器设置的算法类型为:3des算法;

在本实施例中,客户端指移动终端或者pc。

步骤103、终端从建立安全通道指令中获取应用文件列表,从应用文件列表中获取应用标识符,根据应用标识符生成选择应用指令,并向ic卡发送选择应用指令;

在本实施例中,向ic卡发送的选择应用指令具体为:00a4040007a0000000048002。

步骤104、ic卡接收选择应用指令后,执行选应用操作,并向终端返回选择应用响应;

具体地,ic卡向终端返回选择响应具体为:6f278407a0000000048002a51c870101500a4d6173746572436172645f2d06656e646566729f1101019000。

步骤105、终端接收ic卡发来的选择应用响应,根据选择应用响应生成获取处理选项指令,并向ic卡发送获取处理选项指令;

终端获取选择响应中的处理选项数据对象列表,根据处理选项数据对象列表获取终端数据,根据终端数据生成获取处理选项指令,并向ic卡发送获取处理选项指令。

本实施例中,终端根据处理选项数据对象列表获取的终端数据包括:授权金额;

步骤106、ic卡接收获取处理选项指令,生成获取处理选项指令响应并返回处理选项指令响应至终端;

在本实施例中,获取处理选项指令响应中包含应用文件定位器和应用交互特征。

具体地,终端根据终端动态数据生成获取处理选项指令为:80a8000002830000,其中8300表示没有处理选项数据对象列表的数据。

步骤107、终端根据获取处理选项指令响应确定要读取的ic卡记录,对应生成读记录指令并向ic卡发送读记录指令;

具体地,终端顺序读取应用文件定位器中的一个应用文件定位器项作为当前应用文件定位器项,根据当前应用文件定位器项的内容确定当前应用文件定位器项指定要读取的ic卡记录所在应用文件的短文件标识符,以及要读取的ic卡记录的记录号,生成包含当前确定的短文件标识符和记录号的读记录指令。

在本实施例中,获取处理选项指令响应中的应用文件定位器包括:短文件标识符、记录号、存放用于脱机数据认证的数据的记录个数。

步骤108、ic卡接收读记录指令,读取相应ic卡记录,根据读取到的ic卡记录生成读记录指令响应,并向终端返回读记录指令响应;

在本实施例中,读记录指令响应中包含主账号序列号。例如,主账号序列号为:01。

步骤109、终端获取用户输入的pin码,生成包含该pin码的验证请求,并向ic卡发送验证请求;

具体地,验证请求为:002000800400123456。

步骤110、ic卡接收验证请求,判断验证请求中包含的pin码是否与自身存储的pin码相同,是则向终端返回验证成功的响应,执行步骤111;否则向终端返回失败错误码;

具体地,验证成功的响应为:9000;验证失败的响应为:63cx,其中返回剩余次数63cx,x代表剩余次数。

在本实施例中,ic卡向终端返回验证失败错误码,终端报错结束,终端将失败错误码发送给客户端。

步骤111、终端生成产生第一应用密文数据指令,并向ic卡发送生成第一应用密文数据指令;

在本实施例中,产生第一应用密文数据指令包括:终端第一预置数据(终端国家代码和交易货币代码)和从建立安全通道指令中获取的不可预知数,具体地,产生第一应用密文指令具体为:

80ae4000250000000000000000000000000156004000000001561704130034a23b14,其中,18-19字节为终端国家代码、25-26字节为交易货币代码、34a23b14为不可预知数。

步骤112、ic卡产生第一应用密文数据,并向终端返回第一应用密文数据;

在本实施例中,ic卡向终端返回第一应用密文数据包括:atc(applicationtransactioncounter交易计数器);cid(cryptograminformationdata密文信息数据);ac(applicationcryptogram应用密文);iad(issuerapplicationdata发卡行应用数据)。

具体地,第一应用密文数据为:77219f2701809f26088792fdf0839377e89f360200079f100a0010a000012400000000;其中01为cid;0007为atc;8792fdf0839377e8为ac;0010a000012400000000为iad。

步骤113、终端接收到第一应用密文数据后,组建数据并对组建后的数据进行计算产生第一令牌;

在本实施例中,步骤113具体包括:终端接收到第一应用密文数据后,对第一应用密文数据和读记录指令响应中主账号序列号进行拼接,对拼接后的数据进行压缩,对压缩后的数据进行加扰操作产生第一令牌。

具体地,将主账号序列号、密文信息数据、交易计数器、应用密文和发卡行应用数据顺序拼接后,得到拼接后的数据为:100100078792fdf0839377e80010a000012400000000;

产生的第一令牌为:f1z4d74a。

步骤114、终端从应用文件列表中获取应用标识符,根据应用标识符生成选择应用指令,并向ic卡发送选择应用指令;

步骤115、ic卡接收选择应用指令后,执行选应用操作,并向终端返回选择响应;

步骤116、终端接收ic卡发来的选择响应,根据选择响应生成获取处理选项指令,并向ic卡发送获取处理选项指令;

步骤117、ic卡接收获取处理选项指令,生成获取处理选项指令响应并返回获取处理选项指令响应至终端;

步骤118、终端生成产生第二应用密文数据指令,并向ic卡发送产生第二应用密文数据指令;

步骤119、ic卡产生第二应用密文数据,并向终端返回第二应用密文数据;

需要说明的是,此时,应用密文数据中包括的交易计数器发生改变。即:ic卡接收获取处理选项指令,生成获取处理选项指令响应后,交易计数器就会加1;

步骤120、终端从第二应用密文数据获取第一应用密文,将第二预置数据组中的四组预置数据分别和建立安全通道指令中的配置数据进行拼接,对拼接后的数据使用第一应用密文进行第一预设算法加密,得到上行工作密钥、下行工作密钥、上行mac密钥和下行mac密钥;

在本实施例中,步骤101之前还包括:

步骤101-1、服务器通过客户端向终端发送获取终端信息指令;

步骤101-2、终端通过客户端向服务器返回终端信息;

具体地,终端信息包括:算法类型、终端序列号、版本信息等。

相应地,步骤103之前还包括:终端从建立安全通道指令中获取算法类型;

进一步地,终端向ic卡发送产生应用密文指令后收到的应用密文数据中的应用密文为预设字节,终端根据算法类型确定算法对应的密钥长度,根据密钥长度确定向ic卡发送几次产生应用密文数据的指令,再将获取到的应用密文数据中的应用密文进行拼接;

具体地,以3des算法为例。由于3des算法对应的密钥长度是16字节,而终端向ic卡发送产生应用密文指令后收到的应用密文数据中的应用密文为8字节,须向ic卡发送两次产生应用密文数据的指令,将两次产生的应用密文数据中的应用密文进行拼接。

具体地,ic卡将两次拼接后的应用密文为:8792fdf0839377e88792fdf0839377a0。

具体地,在本实施例,配置数据为:

data1:af2197b81a1b1c1d;data2:780b131a2a2b2c2d;data3:5c6334b83a3b3c3d;data4:1d6eceb44a4b4c4d。

与配置数据拼接后的数据分别为:af2197b81a1b1c1d12a5b13501020304;780b131a2a2b2c2d12a5b13501020304;5c6334b83a3b3c3d12a5b13501020304;1d6eceb44a4b4c4d12a5b13501020304;

相应地,使用应用密文数据进行3des算法加密后,得到:上行工作密钥为:f975a67961236e51921302ef5408d2148f4c96b11715943e;

下行工作密钥为:a6100a0db2db636b921302ef5408d2148f4c96b11715943e;

上行mac密钥为:b7664763ba061e7b921302ef5408d2148f4c96b11715943e;

下行mac密钥为:c78ee44fbd3460a7921302ef5408d2148f4c96b11715943e。

步骤121、终端使用上行mac密钥对终端中的第三预置数据进行运算,产生第一校验值,并将第一令牌和第一校验值发送至客户端,客户端将第一令牌和第一校验值发送至服务器;

在本实施例中,第三预置数据为ctru和ctre,其中ctru的初始值为:00000001;ctre的初始值为:00000000。将ctru和ctre进行拼接,终端使用上行mac密钥对拼接后的数据进行运算,产生第一校验值。

具体地,产生的第一校验值具体为:99a7d9efd6553eef。

步骤122、服务器接收到终端发来的第一令牌和第一校验值后,根据查询卡片交易记录的请求中包含的ic卡卡号产生对应的应用密文数据,组建数据并对组建后的数据进行计算产生第二令牌,判断接收到的第一令牌和自身产生的第二令牌是否相同,是则执行步骤123,否则否则报错结束;

具体地,第二令牌为:f1z4d74a与收到的第一令牌相同,执行步骤123。

步骤123、服务器将第四预置数据组和配置数据进行拼接,产生ic卡对应的第三应用密文数据,并从应用密文数据中获取第二应用密文,对拼接后的数据使用第二应用密文进行第一预设算法加密,得到上行工作密钥、下行工作密钥、上行mac密钥和下行mac密钥;

在本实施例中,与配置数据拼接后的数据分别为:af2197b81a1b1c1d12a5b13501020304;780b131a2a2b2c2d12a5b13501020304;5c6334b83a3b3c3d12a5b13501020304;1d6eceb44a4b4c4d12a5b13501020304;

相应地,对拼接后的数据使用第二应用密文进行3des算法加密后得到:

上行工作密钥为:f975a67961236e51921302ef5408d2148f4c96b11715943e;

下行工作密钥为:a6100a0db2db636b921302ef5408d2148f4c96b11715943e;

上行mac密钥为:b7664763ba061e7b921302ef5408d2148f4c96b11715943e;

下行mac密钥为:c78ee44fbd3460a7921302ef5408d2148f4c96b11715943e。

步骤124、服务器使用上行mac密钥对第五预置数据进行运算,产生第二校验值,判断接收到的第一校验值和自身产生的第二校验值是否相同,是则安全通道建立,执行步骤125,否则报错结束。

在本实施例中,第五预置数据为ctru和ctre,其中ctru的初始值为:00000001;ctre的初始值为:00000000。将ctru和ctre进行拼接,终端使用上行mac密钥对拼接后的数据进行运算,产生第二校验值。

具体地,产生的第二校验值具体为:99a7d9efd6553eef,与接收到的第一校验值99a7d9efd6553eef相同,则安全通道建立。

步骤125、服务器生成查询卡片交易记录指令,并使用下行工作密钥对查询指令进行加密,得到查询卡片交易记录密文;

具体地,服务器生成的查询卡片交易记录为:7f2b0000057e42000000;交易指令密文为:7f2b00000c3c25d99bb7d9dc47。

步骤126、服务器使用下行mac密钥算出第三校验值;

具体地,算出的第三校验值为:883f0b42;

步骤127、服务器向客户端发送查询卡片交易记录指令密文和第三校验值,客户端向终端发送查询卡片交易指令密文和第三校验值;

具体地,服务器发送的查询卡片交易记录指令密文和第三校验值为:f2b00000c3c25d99bb7d9dc47883f0b42;

步骤128、终端判断第三校验值是否正确,是则执行步骤129,否则报错结束;

具体地,终端用下行mac密钥算出第三校验值,判断自身算出的第三校验值与服务器发送的第三校验值是否一致,是则服务器发送的第三校验值正确,执行步骤129,否则报错结束;

步骤129、终端使用下行工作密钥解密查询卡片交易记录指令密文,得到查询卡片交易记录指令;

步骤130、终端判断是否有卡片插入,如果没有,则提示用户并等待用户插卡;如果有,则向ic卡发送查询卡片交易记录指令;

步骤131、ic卡查询卡片交易记录指令,向终端返回查询卡片交易记录响应;

步骤132、终端接收到ic卡返回的查询卡片交易记录响应后,使用上行工作密钥加密,得到查询卡片交易记录响应密文;

具体地,查询卡片交易记录响应密文为:7cfa8fbd08017c2aa86babcd6ddd5f79891307fbb15505e8;

步骤133、终端使用上行mac密钥计算第四校验值;

具体地,第四校验值为:3c2374f5;

步骤134、终端向客户端发送查询卡片交易记录响应和第四校验值,客户端向服务器发送查询卡片交易记录响应和第四校验值;

步骤135、服务器判断第四校验值是否正确,是则执行步骤136,否则报错结束;

具体地,服务器用上行mac密钥算出第四校验值,判断自身算出的第四校验值与终端发送的第四校验值是否一致,是则终端发送的第四校验值正确,执行步骤136,否则报错结束;

步骤136、服务器使用上行工作密钥解密查询卡片交易记录响应密文,得到查询卡片交易记录响应,判断查询卡片交易记录响应是否正确,是则向客户端发送查询结果;否则向客户端发送查询失败。

在本实施例中,终端中的第二预置数据组、第三预置数据分别和服务器中的第四预置数据组、第五预置数据相同。

实施例四

本实施例提供一种在终端和服务器之间建立安全通道的装置,如图6所示,包括:

接收模块401,用于接收服务器通过客户端发来的建立安全通道指令;

生成模块402,用于接收模块401接收到建立安全通道指令后,生成产生第二应用密文数据指令;

发送模块403,用于向ic卡发送生成模块402生成的产生第二应用密文数据指令;

接收模块401,还用于接收ic卡返回的第二应用密文数据;

拼接模块404,用于从接收模块401接收到的第二应用密文数据中获取第一应用密文,将第二预置数据组中的四组预置数据分别和建立安全通道指令中的配置数据进行拼接;

加密模块405,用于对拼接模块404拼接后的四组数据使用第一应用密文进行加密,得到上行工作密钥、下行工作密钥、上行mac密钥和下行mac密钥;

加密模块405,还用于对第三预置数据进行加密,产生第一校验值;

装置还包括:

生成模块402,还用于生成产生第一应用密文数据指令;

发送模块403,还用于将生成模块402生成的产生第一应用密文数据指令发送至ic卡;

接收模块401,还用于接收ic卡返回的第一应用密文数据;

生成模块402,还用于根据接收模块401接收的第一应用密文数据生成第一令牌;

发送模块403,还用于将生成模块402生成的第一令牌和加密模块405产生的第一校验值通过客户端发送至服务器。

在本实施例中,生成模块402,具体用于根据第一预置数据和接收模块401接收到建立安全通道指令中的不可预知数生成产生第一应用密文数据指令;

生成模块402,具体用于根据第一预置数据和接收模块401接收到建立安全通道指令中的不可预知数生成产生第二应用密文数据指令。

优选地,装置还包括:获取模块;

获取模块,用于从接收模块401接收到的建立安全通道指令中获取应用文件列表,从应用文件列表中获取应用标识符;

生成模块402,还用于根据获取模块获取到的应用标识符生成选择应用指令;

发送模块403,还用于向ic卡发送生成模块402生成的选择应用指令;

接收模块401,还用于接收ic卡发来的选择应用响应;

生成模块402,还用于根据接收模块401接收到的选择应用响应生成获取处理选项指令;

发送模块403,还用于向ic卡发送生成模块402生成的获取处理选项指令;

接收模块401,还用于接收ic卡发来的获取处理选项指令响应;

生成模块402,还用于根据接收模块401接收到的获取处理选项指令响应确定要读取的ic卡记录,生成读记录指令;

发送模块403,还用于向ic卡发送生成模块402生成的读记录指令;

接收模块401,还用于接收ic卡发来的读记录响应;

获取模块,还用于从接收模块401接收到的读记录响应中获取主账号序列号。

具体地,生成模块402包括:拼接单元和计算单元;

拼接单元,用于将获取模块获取到的主账号序列号和接收模块401接收的第一应用密文数据进行拼接;

计算单元,用于对拼接单元拼接后的数据进行计算,生成第一令牌。

在本实施例中,装置还包括:

获取模块,用于从接收模块401接收到的建立安全通道指令中获取应用文件列表,从应用文件列表中获取应用标识符;

生成模块402,还用于根据获取模块获取到的应用标识符生成选择应用指令;

发送模块403,还用于向ic卡发送生成模块402生成的选择应用指令;

接收模块401,还用于接收ic卡发来的选择应用响应;

生成模块402,还用于根据接收模块401接收到的选择应用响应生成获取处理选项指令;

发送模块403,还用于向ic卡发送生成模块402生成的获取处理选项指令;

接收模块401,还用于接收ic卡发来的获取处理选项指令响应。

在本实施例中,装置还包括:判断模块、解密模块、报错模块和计算模块;

接收模块401,还用于接收服务器发来的查询卡片交易记录指令密文和第三校验值;

判断模块,用于判断接收模块401接收到的第三校验值是否正确;

解密模块,用于当判断模块判断接收模块401接收到的第三校验值正确时,用下行工作密钥解密查询卡片交易记录指令密文,得到查询卡片交易记录指令;

发送模块403,还用于向ic卡发送查询卡片交易记录指令;

报错模块,用于当判断模块判断接收模块401接收到的第三校验值不正确时,报错结束;

接收模块401,还用于接收ic卡返回的查询卡片交易记录响应;

加密模块405,还用于使用上行工作密钥对接收模块401接收到的查询卡片交易记录响应加密,得到查询卡片交易记录响应密文;

计算模块,用于使用上行mac密钥对第三预置数据进行计算,产生第四校验值;

发送模块403,还用于将查询卡片交易记录响应密文和第四校验值发送至服务器。

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

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