CN102377570B - 一种生成动态口令的方法和装置 - Google Patents

一种生成动态口令的方法和装置 Download PDF

Info

Publication number
CN102377570B
CN102377570B CN201110349122.8A CN201110349122A CN102377570B CN 102377570 B CN102377570 B CN 102377570B CN 201110349122 A CN201110349122 A CN 201110349122A CN 102377570 B CN102377570 B CN 102377570B
Authority
CN
China
Prior art keywords
data
card
command response
order
reading terminal
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.)
Expired - Fee Related
Application number
CN201110349122.8A
Other languages
English (en)
Other versions
CN102377570A (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 CN201110349122.8A priority Critical patent/CN102377570B/zh
Publication of CN102377570A publication Critical patent/CN102377570A/zh
Application granted granted Critical
Publication of CN102377570B publication Critical patent/CN102377570B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Storage Device Security (AREA)

Abstract

本发明公开了一种生成动态口令的方法及装置,涉及身份认证领域,该方法包括:读卡终端与智能卡建立连接,装置上电;读卡终端向所述智能卡发送第一命令,接收到智能卡返回的第一命令响;读卡终端将第二命令发送给所述智能卡并接收智能卡返回的第二命令响应,对第二命令响应进行解析,得到应用文件列表;根据应用文件列表生成读记录命令并将读记录命令发送给智能卡;接收智能卡返回的读记录命令响应,并从读记录命令响应中解析得到第二数据请求列表;根据第二数据请求列表生成第二数据;生成第三命令并发送给智能卡,接收智能卡返回的第三命令响应;对第三命令响应进行压缩转换生成动态口令并输出。通过本发明提供了动态口令的安全性。

Description

一种生成动态口令的方法和装置
技术领域
本发明涉及身份认证领域,特别涉及一种动态口令生成的方法及装置。
背景技术
随着网络的发展,人们越来越多的活动依赖于网络进行,如网上银行、电话银行等,网络信息安全与人们的利益密切相关,身份认证技术也随之发展,比静态口令更为安全的身份认证方法——动态口令认证方法也越来越受到人们的青睐。
目前,动态口令一般由服务器生成并以短信或者邮件的形式下发给用户或者由用户持有的动态口令令牌生成。倘若短信或邮件被非法截获或者动态口令令牌被非法用户利用,又或者用户进行交易操作时数据被篡改、用户登录了钓鱼网站,输入的动态口令被截获,都会对用户的利益造成损害,严重影响到用户的权益。
发明内容
鉴于现有技术的不足,本发明提供了一种动态口令生成的方法及装置,利用用户所持有的智能卡、读卡终端及用户输入的信息生成动态口令。以提高动态口令的安全性。
为实现上述目的,根据本发明的一个方面,提供了一种生成动态口令的装置,包括读卡终端和智能卡。
所述读卡终端包括:
卡槽模块,用于连接所述读卡终端与所述智能卡;
第一通信模块,用于向所述智能卡发送第一命令、第二命令、读记录命令及第三命令并接收所述智能卡返回的第一命令响应、第二命令响应、读记录命令响应及第三命令响应,用于实现所述读卡终端包括的各模块之间的通信数据的传送;
验证模块,用于验证接收到所述第一命令响应、第二命令响应、读记录命令响应及第三命令响应的状态字是否为第一预设值,验证所述第一命令响应中是否存在第一数据请求列表,验证所述读记录命令响应中是否存在第二数据请求列表,还用于验证当前命令指针指向的读记录命令是否为最后一条读记录命令;.
第一存储模块,用于存储所述第一预设值、第一标签、第二标签、第一预设数据、第二预设数据、用于生成第一数据、第二数据的数据、压缩模型数据;
解析模块,用于在验证所述第一命令响应中包含所述第一数据请求列表时,对所述第一命令响应进行解析得到所述第一数据请求列表;用于在验证所述第二命令响应的状态字为所述第一预设值时,对所述第二命令响应进行解析得到应用文件列表;在验证所述读记录命令响应中包含所述第二数据请求列表时对所述读记录命令响应进行解析得到所述第二数据请求列表;
第一生成模块,用于生成所述第一命令、所述第二命令、所述生成读记录命令及所述第三命令,还用于根据所述第一数据请求列表生成第一数据,根据所述第二数据请求列表生成第二数据;
压缩模块,用于根据所述压缩模型数据对所述读卡终端接收到的所述第三命令响应的响应数据进行压缩;
转换模块,用于对压缩后得到的数据进行转换得到转换数据;
提示/输出模块,用于输出动态口令或卡片错误的提示信息;
电源模块,用于为所述读卡终端供电;
所述智能卡包括,
第二通信模块,用于接收所述读卡终端发送给所述智能卡的命令以及向所述读卡终端返回相应命令的命令响应,用于实现所述智能卡包括的各模块之间的通信数据的传送;
第二生成模块,用于根据所述智能卡接收到的命令生成第一命令响应、第二命令响应、第三命令响应及读记录命令响应,还用于生成第二卡片数据及生成消息认证码;
第二存储模块,用于存储应用文件列表、第一数据请求列表、第二数据请求列表、消息认证码生成算法、第一卡片数据、第三卡片数据和智能卡密钥;
加密模块,用于对所述第一卡片数据进行加密生成第一过程密钥,对所述第二卡片数据进行加密生成加密结果,用于用第二过程密钥对所述消息认证码进行加密生成应用认证密文;
组合模块,用于对所述第一过程密钥与所述加密结果进行拼接组合生成第二过程密钥,用于对所述第一数据、所述第二数据及所述第一卡片数据、所述第三卡片数据进行组合生成组合数据。
其中,所述读卡终端还包括,
输入模块,用于获取用户输入的数据;
所述提示/输出模块,还用于提示用户输入数据。
进一步地,所述读卡终端还包括,
计时模块,用于在所述装置上电时间达到预设时间时将所述装置断电。
指针模块,用于将当前命令指针的初始位置指向第一条读记录命令,并在所述验证模块验证所述当前命令指针指向的记录命令不为最后一条时,将所述当前命令指针指向下一条读记录命令;
根据本发明的另一个方面,提供了一种生成动态口令的方法,包括以下步骤,
步骤S1:读卡终端与智能卡建立连接,装置上电;
步骤S2:所述读卡终端向所述智能卡发送第一命令并接收所述智能卡返回的第一命令响应;
步骤S3:验证所述第一命令响应中的状态字是否为第一预设值,是则执行下一步,否则输出卡片错误的提示信息;
步骤S4:验证所述第一命令响应中是否存在第一数据请求列表,是则执行步骤S5,否则执行步骤S6;
步骤S5:根据所述第一数据请求列表生成第一数据,根据所述第一数据组成第二命令,执行步骤S7;
步骤S6:根据第一预设数据和第二预设数据组成第二命令;
步骤S7:所述读卡终端发送所述第二命令给所述智能卡并接收所述智能卡返回的第二命令响应;
步骤S8:验证所述第二命令响应的状态字是否为所述第一预设值,是则执行下一步,否则输出卡片错误的提示信息;
步骤S9:解析所述第二命令响应得到应用文件列表,根据所述应用文件列表创建读记录命令;
步骤S10:所述读卡终端发送当前命令指针指向的读记录命令给所述智能卡并接收所述智能卡返回的读记录命令响应;
步骤S11:验证所述读记录命令响应的状态字是否为所述第一预设值,是则执行下一步,否则输出卡片错误的提示信息;
步骤S12:验证所述读记录命令响应中是否存在第二数据请求列表,是则执行步骤S14;否则执行步骤S13;
步骤S13:验证当前命令指针指向的读记录命令是否为最后一条读记录命令,是则输出卡片错误的提示信息,结束操作,否则将当前命令指针指向下一条读记录命令,返回执行步骤S10;
步骤S14:解析所述读记录命令响应得到第二数据请求列表,根据所述第二数据请求列表生成第二数据,根据所述第二数据组成所述第三命令;
步骤S15:所述读卡终端发送所述第三命令给所述智能卡并接收所述智能卡返回的第三命令响应;
步骤S16:所述读卡终端调用压缩模型数据对所述第三命令响应进行解析得到响应数据,将所述响应数据进行压缩并转换得到转换数据;
步骤S17:将所述转换数据作为动态口令输出。
其中,步骤S1所述装置上电之后包括,
读卡终端提示用户输入PIN码;
获取用户输入的PIN码,并验证用户输入的PIN码是否合法,是则执行步骤S2,否则提示出错信息,结束操作。
进一步地,当上述读卡终端提示用户输入的PIN码为所述读卡终端的PIN码,则由所述读卡终端验证用户输入的PIN码是否合法,当提示用户输入的PIN码为所述智能卡的脱机PIN码,则由所述读卡终端将用户输入的PIN码发送给所述智能卡,由所述智能卡验证用户输入的PIN码是否合法。
其中,所述第一数据和/或所述第二数据包含的数据为预置在所述读卡终端的固定的数据,或者为用户输入到所述读卡终端的数据。
进一步地,所述第一数据和/或所述第二数据可以包含有用户输入的所述智能卡的联机PIN码。
其中,所述第一命令响应和所述读记录命令响应为TLV格式,包括标签域、长度域和内容域。
其中,步骤S4所述验证所述第一命令响应中是否存在第一数据请求列表具体为验证所述第一命令响应的标签域中是否存在第一标签。
其中,所述步骤S5具体为,根据所述第一标签之后长度域的值,在长度域之后的内容域上截取等于所述长度域的值的字节数上的数据以得到所述第一数据请求列表,根据所述第一数据请求列表生成第一数据,将存储的第一预设数据作为所述第一数据的标签,将所述第一预设数据、所述第一数据的位长及所述第一数据以TLV格式填充到命令数据域组成所述第二命令。
其中,步骤S6所述第二命令的命令数据域由所述第一预设数据与所述第二预设数据拼接得到的数据填充得到。
其中,步骤S9所述应用文件列表包括需要读出的记录的存放信息,所述存放信息包括短文件标识符、记录号、记录个数。
其中,步骤S12具体为验证所述读记录命令响应的标签域中是否存在第二标签。
其中,步骤S14具体为在所述读记录命令响应的标签域查找到第二标签,根据所述第二标签之后长度域的值,在长度域之后的内容域上截取等于所述长度域的值的字节数上的数据以得到所述第二数据请求列表,根据所述第二数据请求列表生成第二数据,将所述第二数据的标签、所述第二数据的位长及所述第二数据以TLV格式填充到命令数据域组成所述第三命令。
其中,所述压缩模型数据与所述第三命令响应的响应数据等位长。
其中,步骤S16所述压缩具体为将所述压缩模型数据各个比特位与所述第四命令响应的各个比特位一一对应,将所述压缩模型数据中比特位上的数为1的比特位在所述响应数据中对应比特位上的数顺序拼接,得到压缩后的数据。
进一步地,步骤S16所述将压缩后的数据进行转换具体为将压缩后的数据由最高位到低位排序,最高位为第1比特位,将第1至第15比特位上数据与第16至第30比特位上的数据进行异或运算,并将第1至第15比特位上的数据替换为异或运算结果,除去所述压缩后的数据的最低比特位,将其余比特位的两两相邻比特位上的数互换,得到所述转换数据。
其中,所述步骤S17具体为,将所述转换数据作为动态口令输出时以十进制或三十二进制表示,当以三十二进制表示时用预设字母替换三十二进制数中大于9的整数。
其中,所述智能卡生成所述第三命令响应的过程具体为,
步骤a:所述智能卡根据第一卡片数据生成第二卡片数据,用智能卡密钥对所述第一卡片数据进行加密得到第一过程密钥,用所述智能卡密钥对所述第二卡片数据进行加密得到加密结果,并将所述加密结果与所述第一过程密钥组合生成第二过程密钥;
步骤b:所述智能卡将所述第一数据及所述第二数据与所述第一卡片数据、第三卡片数据进行组合生成组合数据;
步骤c:所述智能卡调用消息认证码生成算法对所述第一过程密钥与所述组合数据进行计算,生成消息认证码;所述智能卡用所述第二过程密钥对所述消息认证码进行加密生成应用认证密文;
步骤d:所述智能卡将所述应用认证密文与所述第一卡片数据、所述第三卡片数据进行组合,根据组合得到的数据生成所述第三命令响应,将所述第一卡片数据的值自增第二预设值。
其中,所述第一卡片数据为存储在所述智能卡中的交易序号,所述第二卡片数据为对所述交易序号按位取反或移位变换得到的数据,所述第三卡片数据为存储在所述智能卡中的代表所述智能卡是否为有效状态的数据。
本发明的有益效果在于:用户持有的智能卡参与生成动态口令,保证了动态口令生成设备持有者的身份合法性;用户输入的信息参与生成动态口令,避免了数据在操作过程中被篡改的可能性;动态口令在用户处生成,不存在动态口令由服务器传送给用户过程中被截获的可能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例1提供的一种生成动态口令的方法流程图;
图2为本发明实施例2提供的一种生成动态口令的装置方框示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施例作进一步地详细描述。
实施例1
参见图1,本发明实施例1提供了一种生成动态口令的方法,具体步骤如下:
步骤101:读卡终端与智能卡建立连接,装置上电;
优选地,在本实施例中,所述读卡器与所述智能卡建立连接后,电路导通,装置自动上电,并在上电时间达到预设时间时,所述装置自动断电。
优选地,在本实施例中,装置上电后还可以包括以下步骤:
步骤101-1:所述读卡终端提示用户输入PIN码;
优选地,在本实施例中,所述PIN码可以为所述读卡终端的PIN码,也可以为所述智能卡的脱机PIN码。
步骤101-2:获取用户输入的PIN码,并验证用户输入的PIN码是否合法,是则执行步骤102,否则提示出错信息,结束操作。
相应地,若步骤101-1中所述读卡终端提示用户输入的PIN码为所述读卡终端的PIN码时,步骤101-2由所述读卡终端执行;若步骤101-1中所述读卡终端提示用户输入的PIN码为所述智能卡的脱机PIN码时,由所述读卡终端将用户输入的PIN码发送给所述智能卡,由所述智能卡验证用户输入的PIN码是否合法。
步骤102:所述读卡终端向所述智能卡发送第一命令;
优选地,在本实施例中,所述第一命令为应用选择命令。
步骤103:接收到智能卡返回的第一命令响应;
优选地,在本实施例中,所述第一命令响应的低位端两个字节为状态字,当所述智能卡支持所述第一命令选择的应用时,所述第一命令响应的状态字为第一预设值9000。
步骤104:验证所述第一命令响应中的状态字是否为所述第一预设值,是则执行步骤105,否则输出卡片错误的提示信息;
步骤105:验证所述第一命令响应中是否包含第一标签,是则执行步骤106,否则执行步骤107;
优选地,在本实施例中,所述第一命令响应除低位端两个字节外,为TLV格式,所述第一标签即所述第一数据请求列表的标签(TAG)。所述第一数据请求列表为TL格式,包含所要请求的数据的标签(TAG)及位长。
TLV即Tag-Length-Value,包括三个域,分别为:标签域(Tag域),长度域(Length域),内容域(Value域)。这里的长度域的值即内容域字节数。
一个字节的最高比特位到最低比特位分别记为b8-b1,标签域最高字节的编码格式如下:
b6代表的是数据元结构,也就是说它是属于简单数据元结构,还是属于结构(复合)数据元结构。当b6为1的时候,就需要后续的字节进行扩展。也就是说复合的TLV中,value域里也包含一个或多个TLV,当b5-b1代表串行号,当5个位都为1时,需要将标签域域扩展到下一个字节中,也就是标签域占2个字节;而当5个位都不全为1时,标签域就只占1个字节。
当b8为1时,标签域还需要有后续字节,直到b8为0为止,当b8为0时,标签域结束。
长度域(Length域)的最高字节编码格式:当b8为0时,b7-b1上的值为内容域(value域)的字节数;当b8为1时,b7-b1作为后续字节的长度,例如长度域最高字节为10000011,代表后续3个字节上的值为内容域(value域)的字节数。
步骤106:对所述第一命令响应进行解析,得到所述第一数据请求列表,根据所述第一数据请求列表生成第一数据,并将第一预设数据作为所述第一数据的标签,将所述第一预设数据、所述第一数据的位长及所述第一数据以TLV格式作为第二命令的命令数据,执行步骤108;
优选地,在本实施例中,对所述第一命令响应进行解析得到第一数据请求列表,具体为:根据所述第一标签之后长度域的值,取长度域之后相应字节数上的数据,得到所述第一数据请求列表,例如:当所述第一命令响应为:6F 4A84 08 A0 00 00 03 33 01 01 01 A5 3E 50 0B 50 42 4F 43 20 43 72 65 64 69 74 8701 01 9F 38 06 9F 33 03 9F 4E 14 5F 2D 08 7A 68 65 6E 66 72 64 65 9F 11 01 019F 12 0B 43 55 50 49 43 43 72 65 64 69 74 BF 0C 05 9F 4D 02 0B 0A 90 00所述第一标签为“9F 38”时,相应地,所述第一标签之后的长度域为“06”,值为6,则长度域之后6个字节上的数据“9F 33 03 9F 4E 14”,即所述第一数据请求列表。
优选地,在本实施例中,所述第一数据请求列表以TL格式列举所请求的终端数据,不同终端数据对应不同的标签,所述第一数据请求列表为十六进制数“9F 33 03 9F 4E 14”时,请求的终端数据为:标签“9F 33”所对应的3个字节的终端数据、标签“9F 4E”所对应的20个字节的终端数据。相应地,所述第一数据为:所述标签“9F 33”对应的终端数据与所述标签“9F 4E”对应的终端数据按照所述第一数据请求列表中标签的顺序进行拼接得到的数据。
优选地,在本实施例中,第二命令为获取处理选项命令,包含命令数据域,将所述第一预设数据、所述第一数据的位长及所述第一数据以TLV格式作为第二命令的命令数据即将所述第一预设数据、所述第一数据的位长及所述第一数据以TLV格式填充第二命令的数据域。
步骤107:第一预设数据与第二预设数据拼接,作为第二命令的命令数据;
优选地,在本实施例中,第二命令为获取处理选项命令,包含命令数据域,将所述第一预设数据与第二预设数据拼接作为第二命令的命令数据即将所述第一预设数据与第二预设数据拼接得到的数据填充第二命令的命令数据域,具体地,在本实施例中,是第一预设数据为十六进制数80,所述第二预设数据为十六进制数00。
步骤108:将第二命令发送给所述智能卡;
步骤109:接收所述智能卡返回的第二命令响应;
优选地,在本实施例中,所述第二命令响应的低位端两个字节为状态字,所述智能卡若能成功执行所述第二命令,则将所述第二命令响应的状态字置为所述第一预设值。
步骤110:验证所述第二命令响应的状态字是否为所述第一预设值,是则执行步骤111,否则输出卡片错误的提示信息;
步骤111:对所述第二命令响应进行解析,得到应用文件列表;
优选地,在本实施例中,所述第二命令响应包含数据域,其中,高位端第二个字节的值表示后续数据域的字节数,低位端两个字节为状态字,数据域包含的数据即所述第二命令响应的响应数据。应用文件列表为上述响应数据除高位端两个字节外的数据,例如所述第三命令响应为80 16 5C 00 08 01 02 00 1001 03 00 18 01 01 00 20 01 02 00 28 01 02 01 90 00,则应用文件列表即为08 0102 00 10 01 03 00 18 01 01 00 20 01 02 00 28 01 02 01。
优选地,在本实施例中,所述应用文件列表包括:需要读出的记录的存放信息,所述存放信息包括短文件标识符、记录号、记录个数等。在本实施例中,所述短文件标识符与智能卡中存储的用于存放记录的库表一一对应,所述记录号用于标记所述记录在所述库表中所处位置的编号,记录号与库表的每条记录相互一一对应。
步骤112:根据所述应用文件列表,创建多条读记录命令,并将所有读记录命令顺序排列,置当前命令指针的初始位置指向第一条读记录命令;
优选地,在本实施例中,所述应用文件列表每相邻的四个字节为一项数据,每项数据的从最高字节到最低字节前3个字节分别表示:短文件标识符、第一个要读出的记录的记录号、最后一个要读出的记录的记录号。例如当所述应用文件列表共20个字节,为08 01 02 00 10 01 03 00 18 01 01 00 20 01 02 00 28 0102 01,则08 01 02 00为一项数据,08为短文标识符,01为第一条要读出的记录的记录号、02为最后一条要读出的记录的记录号,则该项数据表示:从短文件标识符为08的库表中读取记录号从01-02的两条记录。
根据所述应用文件列表创建多条读记录指令具体为:根据所述应用列表列举的需要读出的所有记录的记录号、短文标识符,创建读记录命令,仍以所述应用列表为08 01 02 00 10 01 03 00 18 01 01 00 20 01 02 00 28 01 02 01为例,需要读出的记录的条数为10条,则需创建10条读记录命令,每条读记录命令的具体格式均为:在要读出的记录的记录号前面拼接00、后面依次拼接短文件标识符与04作或运算得到的结果、00,例如要读取的记录的短文件标识符为08,记录号为01,则创建的读记录命令格式为:00 01 0C 00。
步骤113:发送一条读记录命令给所述智能卡;
优选地,在本实施例中发送所述读记录命令即当前命令指针指向的读记录命令。
步骤114:接收所述智能卡发送的读记录命令响应;
步骤115:验证所述读记录命令响应的状态字是否为所述第一预设值,是则执行步骤116,否则输出卡片错误的提示信息;
优选地,在本实施例中,所述读记录命令响应的最后两个字节为状态字,若所述智能卡中存在所述读记录命令要读取的记录,则所述读记录命令响应的状态字为所述第一预设值。
步骤116:验证所述读记录命令响应中是否包含第二标签,是则执行步骤117;否则执行步骤118;
步骤117:对所述读记录命令响应进行解析,得到第二数据请求列表;执行步骤120;
优选地,在本实施例中,所述读记录命令响应为TLV格式,所述第二数据请求列表的标签为第二标签,对所述读记录响应进行解析得到所述第二数据请求列表的方式同对所述第一命令响应进行解析得到所述第一数据请求列表,在此不再赘述。
步骤118:验证当前读记录命令是否为最后一条读记录命令,是则输出卡片错误的提示信息,结束操作,否则执行步骤119;
步骤119:当前命令指针指向下一条读记录命令,返回步骤113;
步骤120:根据所述第二数据请求列表生成第二数据,并将所述第二数据作为第三命令的命令数据,并将所述第三命令发送给所述智能卡;
优选地,在本实施例中,所述第二数据请求列表为TL格式,列举所请求的数据,根据所述第二数据请求列表生成第二数据的过程同步骤106中根据所述第一数据请求列表生成第一数据的过程,在此不再赘述。所述第三命令为应用密文生成命令,包含命令数据域,并将所述第二数据作为第三命令的命令数据即用所述第二数据填充所述第三命令的命令数据域。
优选地,在本实施例中,所述第一数据或第二数据包含的数据可以为预置在所述读卡终端的固定的数据,还可以为用户输入到所述读卡终端的数据,如交易金额和/或交易日期和/或挑战码和/或所述智能卡的联机PIN码等。当所述第一数据或第二数据包含用户输入的数据时,则相应地,步骤106或120前还包括:
步骤1201:提示用户输入数据;
优选地,在本实施例中,提示用户输入的方式可以为显示方式,也可以为发声方式。
步骤1202:获取用户输入的数据;
步骤121:接收所述智能卡发送的第三命令响应,解析得到第三命令响应的响应数据,调用压缩模型数据对所述第三命令响应的响应数据进行压缩;
优选地,在本实施例中,所述第三命令响应为应用认证密文,包含数据域,其中,高位端第二个字节的值表示后续数据域的字节数,低位端两个字节为状态字,数据域包含的数据即所述第三命令响应的响应数据。
优选地,在本实施例中,所述压缩模型数据与所述第三命令响应的响应数据等位长,调用所述压缩模型数据对上述响应数据进行压缩具体为:将所述压缩模型数据各个比特位与上述响应数据的各个比特位一一对应,将所述压缩模型数据中比特位上的数为1的比特位在上述响应数据中对应比特位上的数顺序拼接得到压缩后的数据。
具体地,在本实施例中,所述压缩模型数据为十六进制数:00 7f ff ff ff 0000 00 00 00 00 00 00 a8 78,有39个比特位上为1,相应地,将所述第三命令响应中39个对应比特位上的数顺序拼接,得到压缩后的数据。
步骤122:将压缩后得到的数据进行转换,得到转换数据。
优选地,在本实施例中,所述读卡终端对所述压缩后得到的数据进行转换具体为:由最高比特位到最低比特位的顺序,最高比特位为第1比特位,将第1-15比特位上数据与第16-30比特位上的数据进行异或运算,并将第1-15比特位上的数据替换为异或运算结果,将替换后得到的数据除最低比特位外,每相邻两比特位上的数互换,得到所述转换数据。
步骤123:将所述转换数据作为动态口令输出;
优选地,在本实施例中,所述转换数据作为动态口令输出时以十进制或三十二进制表示,其中,以三十二进制表示时优选地用除B、O、I、Q四个形状易与数字混淆的字母外的A-Z中的22个字母表示22个整数10-31。
优选地,在本实施例中,生成的动态口令的输出方式可以为显示方式,也可以为发声方式。
优选地,在本实施例中,所述智能卡生成所述第三命令响应的过程具体为:
步骤a:所述智能卡根据所述第一卡片数据生成第二卡片数据,用智能卡密钥对第一卡片数据进行加密得到第一过程密钥,用智能卡密钥对第二卡片数据进行加密得到加密结果,并将加密结果与所述第一过程密钥组合生成第二过程密钥;
优选地,在本实施例中,所述第一卡片数据为存储在所述智能卡中的交易序号,所述第二卡片数据为所述交易序号经按位取反或移位变换得到的数据。所述第二过程密钥由第一过程密钥与所述加密结果进行拼接得到。
步骤b:所述智能卡将所述第一数据及所述第二数据与所述第一卡片数据、第三卡片数据进行组合生成组合数据;
优选地,在本实施例中,所述第三卡片数据为存储在所述智能卡中的代表所述智能卡是否为有效状态的数据。
步骤c:所述智能卡调用消息认证码生成算法对所述第一过程密钥与所述组合数据进行计算,生成消息认证码;
步骤d:所述智能卡用所述第二过程密钥对所述消息认证码进行加密生成应用认证密文;
步骤e:所述智能卡将所述应用认证密文与所述第一卡片数据、所述第三卡片数据进行组合,将组合得到的数据作为响应数据生成所述第三命令响应,所述第一卡片数据的值自增一个第二预设值。
优选地,在本实施例中,所述第一卡片数据自增的第二预设值为1。
实施例2
参见图2,本发明实施例2提供一种生成动态口令的装置,包括读卡终端21、智能卡22,具体如下:
所述读卡终端21包括
卡槽模块2101,用于读卡终端21与智能卡22建立连接;
第一通信模块2102,用于将第一命令发送给所述智能卡22;接收所述智能卡22发送给所述读卡终端21的第一命令响应;将第二命令发送给所述智能卡22;接收所述智能卡22发送的第二命令响应;用于将第三命令发送给所述智能卡22;发送第三命令,接收所述智能卡返回的第三命令响应;用于将读记录命令发送给所述智能卡,并接收所述智能卡返回的读记录命令响应;还用于实现所述读卡终端21包括的各模块之间的通信数据的传送;
验证模块2103,用于验证所述第一命令响应的状态字是否为第一预设值;在验证所述第一命令响应的状态字为所述第一预设值时,验证所述第一命令响应中是否包含第一数据请求列表;验证所述第二命令响应的状态字是否为所述第一预设值;验证第三命令响应的状态字是否为所述第一预设值;验证当前读记录命令响应的状态字是否为所述第一预设值,并在当前读记录命令响应的状态字为所述第一预设值时验证当前读记录命令响应中是否包含第三标签;还用于验证当前记录命令是否为最后一条读记录命令;
第一存储模块2104用于存储所述第一预设值、存储第一标签、第一预设数据、第二预设数据,存储用于生成第一数据、第二数据的数据、压缩模型数据;
解析模块2105,在验证所述第一命令响应中包含所述第一数据请求列表时,对所述第一命令响应进行解析,得到所述第一数据请求列表;在验证读记录命令响应中存在第二标签时,对读记录命令响应进行解析,得到所述第二数据请求列表;
第一生成模块2106,用于根据所述第一数据请求列表,生成第一数据;根据所述第一预设数据和所述第一数据或所述第二预设数据生成所述第二命令;根据所述第二数据请求列表,生成第二数据;生成第一命令、根据所述第一数据生成第二命令、根据所述第二数据生成第三命令,还用于根据应用文件列表生成读记录命令;
输入模块2107,用于所述读卡终端获取需要用户输入的数据;
压缩模块2108,用于根据压缩模型数据对所述第三命令响应进行压缩;
转换模块2109,用于对压缩后得到的数据进行转换,得到转换数据;
提示/输出模块2110,用于提示用户输入需要用户输入的数据,还用于输出生成的动态口令;
电源模块2111,用于给所述读卡终端21包含的各个模块供电;
计时模块2112,用于从装置上电开始计时,达到预设时间时将装置断电;
指针模块2113,用于将当前命令指针的初始位置指向第一条读记录命令,并在验证当前读记录命令不为最后一条读记录命令时,将当前命令指针指向下一条读记录命令;
所述智能卡22包括:
第二通信模块221,用于接收所述读卡终端21发送给所述智能卡的所述第一命令;将所述第一命令响应发送给所述读卡终端21;将所述第二命令响应发送给所述读卡终端21;接收所述读卡终端21发送的读记录命令,并将读记录命令响应发送给所述读卡终端21;接收所述读卡终端21发送的第三命令及将所述第三命令响应发送给所述读卡终端,还用于实现所述智能卡22包括的各模块之间的通信数据的传送。
第二生成模块222,用于所述智能卡22生成第一命令响应,生成第二命令响应、第三命令响应及读记录命令响应;对第一卡片数据进行变换生成第二卡片数据;调用消息认证码算法对第一过程密钥与组合数据进行计算,生成消息认证码;
第二存储模块223,用于存储:应用文件列表、所述第一数据请求列表、所述第二数据请求列表、消息认证码生成算法。第一卡片数据、第三卡片数据、智能卡密钥;
加密模块224,用于对第一卡片数据进行加密生成第一过程密钥,对第二卡片数据加密生成加密结果;用于用所述第二过程密钥对所述消息认证码进行加密,生成应用认证密文;
组合模块225,用于将所述第一过程密钥与所述加密结果进行拼接组合,生成第二过程密钥;用于将所述第一数据、所述第二数据及所述第一卡片数据、所述第三卡片数据进行组合生成组合数据;还用于将所述应用认证密文与所述第一卡片数据、所述第三卡片数据进行组合,生成所述第三命令响应。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (21)

1.一种生成动态口令的装置,包括读卡终端和智能卡,其特征是:
所述读卡终端包括,
卡槽模块,用于连接所述读卡终端与所述智能卡;
第一通信模块,用于向所述智能卡发送第一命令、第二命令、读记录命令及第三命令并接收所述智能卡返回的第一命令响应、第二命令响应、读记录命令响应及第三命令响应,用于实现所述读卡终端包括的各模块之间的通信数据的传送;
验证模块,用于验证接收到的所述第一命令响应、第二命令响应、读记录命令响应及第三命令响应的状态字是否为第一预设值,验证所述第一命令响应中是否存在第一数据请求列表,验证所述读记录命令响应中是否存在第二数据请求列表,还用于验证当前命令指针指向的读记录命令是否为最后一条读记录命令;
第一存储模块,用于存储所述第一预设值、第一标签、第二标签、第一预设数据、第二预设数据、用于生成第一数据、第二数据的数据、压缩模型数据;
解析模块,用于在验证所述第一命令响应中包含所述第一数据请求列表时,对所述第一命令响应进行解析得到所述第一数据请求列表;用于在验证所述第二命令响应的状态字为所述第一预设值时,对所述第二命令响应进行解析得到应用文件列表;在验证所述读记录命令响应中包含所述第二数据请求列表时对所述读记录命令响应进行解析得到所述第二数据请求列表;
第一生成模块,用于生成所述第一命令、所述第二命令、所述读记录命令及所述第三命令,还用于根据所述第一数据请求列表生成第一数据,根据所述第二数据请求列表生成第二数据;
压缩模块,用于根据所述压缩模型数据对所述读卡终端接收到的所述第三命令响应的响应数据进行压缩;
转换模块,用于对压缩后得到的数据进行转换得到转换数据;
提示/输出模块,用于输出动态口令或卡片错误的提示信息;
电源模块,用于为所述读卡终端供电;
所述智能卡包括,
第二通信模块,用于接收所述读卡终端发送给所述智能卡的命令以及向所述读卡终端返回相应命令的命令响应,用于实现所述智能卡包括的各模块之间的通信数据的传送;
第二生成模块,用于根据所述智能卡接收到的命令生成第一命令响应、第二命令响应、第三命令响应及读记录命令响应,还用于生成第二卡片数据及生成消息认证码;
第二存储模块,用于存储应用文件列表、第一数据请求列表、第二数据请求列表、消息认证码生成算法、第一卡片数据、第三卡片数据和智能卡密钥;
加密模块,用于对所述第一卡片数据进行加密生成第一过程密钥,对所述第二卡片数据进行加密生成加密结果,用于用第二过程密钥对所述消息认证码进行加密生成应用认证密文;
组合模块,用于对所述第一过程密钥与所述加密结果进行拼接组合生成第二过程密钥,用于对所述第一数据、所述第二数据及所述第一卡片数据、所述第三卡片数据进行组合生成组合数据。
2.根据权利要求1所述的一种生成动态口令的装置,其特征是:所述读卡终端还包括,
输入模块,用于获取用户输入的数据;
所述提示/输出模块,还用于提示用户输入数据。
3.根据权利要求1所述的一种生成动态口令的装置,其特征是:所述读卡终端还包括,
计时模块,用于在所述装置上电时间达到预设时间时将所述装置断电。
指针模块,用于将当前命令指针的初始位置指向第一条读记录命令,并在所述验证模块验证所述当前命令指针指向的读记录命令不为最后一条时,将所述当前命令指针指向下一条读记录命令;
4.一种生成动态口令的方法,其特征是:所述方法包括以下步骤,
步骤S1:读卡终端与智能卡建立连接,所述读卡终端与所述智能卡上电;
步骤S2:所述读卡终端向所述智能卡发送第一命令并接收所述智能卡返回的第一命令响应;
步骤S3:所述读卡终端验证所述第一命令响应中的状态字是否为第一预设值,是则执行S4,否则输出卡片错误的提示信息;
步骤S4:所述读卡终端验证所述第一命令响应中是否存在第一数据请求列表,是则执行步骤S5,否则执行步骤S6;
步骤S5:所述读卡终端根据所述第一数据请求列表生成第一数据,根据所述第一数据组成第二命令,执行步骤S7;
步骤S6:所述读卡终端根据第一预设数据和第二预设数据组成第二命令,执行步骤S7;
步骤S7:所述读卡终端发送所述第二命令给所述智能卡并接收所述智能卡返回的第二命令响应;
步骤S8:所述读卡终端验证所述第二命令响应的状态字是否为所述第一预设值,是则执行S9,否则输出卡片错误的提示信息;
步骤S9:所述读卡终端解析所述第二命令响应得到应用文件列表,根据所述应用文件列表创建读记录命令;
步骤S10:所述读卡终端发送当前命令指针指向的读记录命令给所述智能卡并接收所述智能卡返回的读记录命令响应;
步骤S11:所述读卡终端验证所述读记录命令响应的状态字是否为所述第一预设值,是则执行S12,否则输出卡片错误的提示信息;
步骤S12:所述读卡终端验证所述读记录命令响应中是否存在第二数据请求列表,是则执行步骤S14;否则执行步骤S13;
步骤S13:所述读卡终端验证当前命令指针指向的读记录命令是否为最后一条读记录命令,是则输出卡片错误的提示信息,结束操作,否则将当前命令指针指向下一条读记录命令,返回执行步骤S10;
步骤S14:所述读卡终端解析所述读记录命令响应得到第二数据请求列表,根据所述第二数据请求列表生成第二数据,根据所述第二数据组成所述第三命令;
步骤S15:所述读卡终端发送所述第三命令给所述智能卡并接收所述智能卡返回的第三命令响应;
步骤S16:所述读卡终端调用压缩模型数据对所述第三命令响应进行解析得到响应数据,将所述响应数据进行压缩并转换得到转换数据;
步骤S17:所述读卡终端将所述转换数据作为动态口令输出。
5.根据权利要求4所述的一种生成动态口令的方法,其特征是:步骤S1所述读卡终端与所述智能卡上电之后包括,
提示用户输入PIN码;
获取用户输入的PIN码,并验证用户输入的PIN码是否合法,是则执行步骤S2,否则提示出错信息,结束操作。
6.根据权利要求5所述的一种生成动态口令的方法,其特征是:当提示用户输入的PIN码为所述读卡终端的PIN码时,则由所述读卡终端验证用户输入的PIN码是否合法,当提示用户输入的PIN码为所述智能卡的脱机PIN码时,则由所述读卡终端将用户输入的PIN码发送给所述智能卡,由所述智能卡验证用户输入的PIN码是否合法。
7.根据权利要求4所述的一种生成动态口令的方法,其特征是:所述第一数据和/或所述第二数据包含的数据为预置在所述读卡终端的固定的数据,或者为用户输入到所述读卡终端的数据。
8.根据权利要求7所述的一种生成动态口令的方法,其特征是:所述第一数据和/或所述第二数据包含有用户输入的所述智能卡的联机PIN码。
9.根据权利要求4所述的一种生成动态口令的方法,其特征是:所述第一命令响应和所述读记录命令响应为TLV格式,包括标签域、长度域和内容域。
10.根据权利要求9所述的一种生成动态口令的方法,其特征是:步骤S4所述验证所述第一命令响应中是否存在第一数据请求列表具体为验证所述第一命令响应的标签域中是否存在第一标签。
11.根据权利要求10所述的一种生成动态口令的方法,其特征是:所述步骤S5具体为,根据所述第一标签之后长度域的值,在长度域之后的内容域上截取等于所述长度域的值的字节数上的数据以得到所述第一数据请求列表,根据所述第一数据请求列表生成第一数据,将存储的第一预设数据作为所述第一数据的标签,将所述第一预设数据、所述第一数据的位长及所述第一数据以TLV格式填充到命令数据域组成所述第二命令。
12.根据权利要求4所述的一种生成动态口令的方法,其特征是:步骤S6所述第二命令数据域由所述第一预设数据与所述第二预设数据拼接得到的数据填充得到。
13.根据权利要求4所述的一种生成动态口令的方法,其特征是:步骤S9所述应用文件列表包括需要读出的记录的存放信息,所述存放信息包括短文件标识符、记录号、记录个数。
14.根据权利要求4所述的一种生成动态口令的方法,其特征是:所述步骤S12具体为验证所述读记录命令响应的标签域中是否存在第二标签。
15.根据权利要求4所述的一种生成动态口令的方法,其特征是:所述步骤S14具体为在所述读记录命令响应的标签域查找到第二标签,根据所述第二标签之后长度域的值,在长度域之后的内容域上截取等于所述长度域的值的字节数上的数据以得到所述第二数据请求列表,根据所述第二数据请求列表生成第二数据,将所述第二数据的标签、所述第二数据的位长及所述第二数据以TLV格式填充到命令数据域组成所述第三命令。
16.根据权利要求4所述的一种生成动态口令的方法,其特征是:所述压缩模型数据与所述第三命令响应的响应数据等位长。
17.根据权利要求16所述的一种生成动态口令的方法,其特征是:步骤S16所述压缩具体为将所述压缩模型数据各个比特位与所述响应数据的各个比特位一一对应,将所述压缩模型数据中比特位上的数为1的比特位在所述响应数据中对应比特位上的数顺序拼接,得到压缩后的数据。
18.根据权利要求17所述的一种生成动态口令的方法,其特征是:步骤S16所述将压缩后的数据进行转换具体为将压缩后的数据由最高位到最低位的顺序,最高位为第1比特位,将第1至第15比特位上数据与第16至第30比特位上的数据进行异或运算,并将第1至第15比特位上的数据替换为异或运算结果,除去所述压缩后的数据的最低比特位,将其余比特位的两两相邻比特位上的数互换,得到所述转换数据。
19.根据权利要求4所述的一种生成动态口令的方法,其特征是:所述步骤S17具体为,将所述转换数据作为动态口令输出时以十进制或三十二进制表示,当以三十二进制输出时用预设字母替换三十二进制数中大于9的整数。
20.根据权利要求4所述的一种生成动态口令的方法,其特征是:所述智能卡生成所述第三命令响应的过程具体为,
步骤a:所述智能卡根据第一卡片数据生成第二卡片数据,用智能卡密钥对所述第一卡片数据进行加密得到第一过程密钥,用所述智能卡密钥对所述第二卡片数据进行加密得到加密结果,并将所述加密结果与所述第一过程密钥组合生成第二过程密钥;
步骤b:所述智能卡将所述第一数据及所述第二数据与所述第一卡片数据、第三卡片数据进行组合生成组合数据;
步骤c:所述智能卡调用消息认证码生成算法对所述第一过程密钥与所述组合数据进行计算,生成消息认证码;所述智能卡用所述第二过程密钥对所述消息认证码进行加密生成应用认证密文;
步骤d:所述智能卡将所述应用认证密文与所述第一卡片数据、所述第三卡片数据进行组合,根据组合得到的数据生成所述第三命令响应,将所述第一卡片数据的值自增所述第二预设值。
21.根据权利要求20所述的一种生成动态口令的方法,其特征是:所述第一卡片数据为存储在所述智能卡中的交易序号,所述第二卡片数据为对所述交易序号按位取反或移位变换得到的数据,所述第三卡片数据为存储在所述智能卡中的代表所述智能卡是否为有效状态的数据。
CN201110349122.8A 2011-11-07 2011-11-07 一种生成动态口令的方法和装置 Expired - Fee Related CN102377570B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110349122.8A CN102377570B (zh) 2011-11-07 2011-11-07 一种生成动态口令的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110349122.8A CN102377570B (zh) 2011-11-07 2011-11-07 一种生成动态口令的方法和装置

Publications (2)

Publication Number Publication Date
CN102377570A CN102377570A (zh) 2012-03-14
CN102377570B true CN102377570B (zh) 2014-03-12

Family

ID=45795595

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110349122.8A Expired - Fee Related CN102377570B (zh) 2011-11-07 2011-11-07 一种生成动态口令的方法和装置

Country Status (1)

Country Link
CN (1) CN102377570B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102916790B (zh) * 2012-08-30 2015-12-02 招商银行股份有限公司 智能卡个人化的差错处理方法、控制器及系统
CN102916805B (zh) * 2012-10-31 2015-04-15 飞天诚信科技股份有限公司 一种安全下载应用的方法
CN103095460B (zh) * 2013-01-22 2015-07-22 飞天诚信科技股份有限公司 一种智能卡安全通讯的方法
CN104113411B (zh) * 2013-04-22 2017-09-29 中国银联股份有限公司 一种ic卡脱机pin验证方法以及ic卡脱机验证系统
CN103532719B (zh) * 2013-10-22 2017-01-18 天地融科技股份有限公司 动态口令生成方法和系统、交易请求的处理方法和系统
CN103873256B (zh) * 2014-03-18 2017-02-22 飞天诚信科技股份有限公司 一种nfc令牌的工作方法
CN104407845B (zh) * 2014-10-29 2017-12-19 飞天诚信科技股份有限公司 一种终端和智能卡协商选择应用的方法和装置
CN104539430B (zh) * 2014-12-30 2018-11-30 飞天诚信科技股份有限公司 一种基于卡片的动态口令生成方法及设备
CN106339638A (zh) * 2016-08-22 2017-01-18 北京北信源软件股份有限公司 一种文件存储和访问过程中的加解密方法
CN108198332B (zh) * 2018-01-16 2019-10-08 飞天诚信科技股份有限公司 一种降低金融交易风险的方法和装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1547142A (zh) * 2003-12-12 2004-11-17 ���пƼ���ѧ 一种动态身份认证方法和系统
CN101282347A (zh) * 2008-05-15 2008-10-08 普天信息技术研究院有限公司 一种智能存储卡的控制方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1547142A (zh) * 2003-12-12 2004-11-17 ���пƼ���ѧ 一种动态身份认证方法和系统
CN101282347A (zh) * 2008-05-15 2008-10-08 普天信息技术研究院有限公司 一种智能存储卡的控制方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
.2009, *
中国优秀硕士学位论文全文数据库(电子期刊)&gt *
吴凡.智能卡身份认证技术研究与实现.&lt *
吴凡.智能卡身份认证技术研究与实现.<中国优秀硕士学位论文全文数据库(电子期刊)>.2009,

Also Published As

Publication number Publication date
CN102377570A (zh) 2012-03-14

Similar Documents

Publication Publication Date Title
CN102377570B (zh) 一种生成动态口令的方法和装置
CN105512881B (zh) 一种基于二维码完成支付的方法及终端
CN101632086B (zh) 认证设备和方法
CN100375491C (zh) 在一个通信网中传递指令的方法和系统
CN107180351A (zh) 一种脱机动态二维码生成方法、支付方法及设备
CN110163598A (zh) 移动离线支付方法及移动离线支付系统
US10397200B2 (en) Card-based dynamic password generation method and device
CN102377783B (zh) 一种动态口令生成及认证的方法和系统
CN104820944A (zh) 一种银行自助终端认证方法、系统及装置
CN107169840A (zh) 图书租借、归还方法及其系统、服务端
CN101094383A (zh) Iptv认证鉴权方法、服务器及系统
CN106993285A (zh) 一种sim卡及sim卡中多张sim虚拟卡切换的方法
CN106022773A (zh) 一种ic卡与银行卡的绑定方法
WO2018210097A1 (zh) 交易模式的分类执行方法及装置
CN107730253B (zh) 一种脱机交易时效管理方法及装置
CN101009558A (zh) 网络接入的实名制系统及方法
CN101765069B (zh) 增值业务订购方法、装置及系统
CN110599272B (zh) 一种开具电子发票的方法和相关产品
CN101059858B (zh) 一种方便查询电子交易历史记录的方法及装置
CN107318103A (zh) 基于物联网sim卡的防切机方法及其系统
CN103023642B (zh) 一种移动终端及其数字证书功能实现方法
CN109409793A (zh) 一种设备全生命周期的管理方法及相关装置
CN110060046A (zh) 一种交易处理方法、装置、系统、设备及存储介质
CN100568955C (zh) 一种视频点播方法及系统
CN105763538A (zh) 一种银行业务网络数据交换方法及其系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20140312