CN102761557B - 一种终端设备认证方法及装置 - Google Patents

一种终端设备认证方法及装置 Download PDF

Info

Publication number
CN102761557B
CN102761557B CN201210270666.XA CN201210270666A CN102761557B CN 102761557 B CN102761557 B CN 102761557B CN 201210270666 A CN201210270666 A CN 201210270666A CN 102761557 B CN102761557 B CN 102761557B
Authority
CN
China
Prior art keywords
data
length
value
instruction
identifying code
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
CN201210270666.XA
Other languages
English (en)
Other versions
CN102761557A (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 CN201210270666.XA priority Critical patent/CN102761557B/zh
Publication of CN102761557A publication Critical patent/CN102761557A/zh
Application granted granted Critical
Publication of CN102761557B publication Critical patent/CN102761557B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Storage Device Security (AREA)

Abstract

本发明公开了一种终端设备认证方法,涉及身份认证领域,该方法包括:终端设备接收上位机发送的预设类型的指令,检查认证条件是否满足,是则继续,否则认证失败;所述终端设备对所述指令进行解析,得到第一验证码及待校验数据;根据PIN码得到密钥,用所述密钥对所述待验证数据进行处理得到安全数据,从所述安全数据中提取出第二验证码;验证所述第一验证码与所述第二验证码是否一致,是则认证通过,否则认证失败。通过本发明提供的方法,可以实现认证双方在通信数据不涉及风险数据的前提下,完成双方认证,提高了认证过程的安全性。<!--1-->

Description

一种终端设备认证方法及装置
技术领域
本发明涉及信息安全领域,尤其涉及一种终端设备认证方法及装置。
背景技术
随着信息技术的发展,信息安全日益受到人们的重视,如上位机与终端设备通过对通信数据进行加密并共享密钥来保障信息安全、服务器通过验证网络客户端传送的密码认证来保障信息安全,现有技术中,通信双方通信过程中的通信数据一般会涉及重要数据,如密钥、密码及PIN码等,一旦通信数据被非法截取会给用户的利益带来安全隐患。
发明内容
为解决上述问题,本发明提供了一种终端设备认证的方法与装置,根据本发明的一方面,提供了一种终端设备认证的方法,包括:
步骤S1:终端设备接收上位机发送的预设类型的指令;
步骤S2:检查认证条件是否满足,是则执行S3,否则认证失败;
步骤S3:获取所述指令的前四个字节数据得到指令首部,获取所述指令中除前四个字节外的部分得到第一数据;根据第一数据的高位端字节得到第一长度的值;根据所述第一长度的值,取所述第一数据中所述第一长度对应的字节之后相应字节数上的数据得到第二数据;根据所述第一预设长度,从所述第二数据中提取第一验证码,并根据所述指令首部和所述第二数据生成待验证数据;
步骤S4:所述终端设备调用PIN码,将PIN码或对PIN码进行散列运算得到的散列值作为密钥,对所述待验证数据进行处理得到安全数据,根据所述第一预设长度对所述安全数据进行处理得到第二验证码;
步骤S5:验证所述第一验证码与所述第二验证码是否一致,是则认证通过,继续,否则认证失败;
步骤S6:所述终端设备执行所述指令。
近一步地,所述步骤S1之前包括:
当所述终端设备接收到上位机发送的生成随机数据串的指令时,生成随机数据串缓存在缓存区,并将所述随机数据串返回给所述上位机。
所述步骤S2中检查认证条件是否满足具体包括:
验证所述指令长度是否不小于第二预设长度,是则继续,否则不满足;
验证所述终端设备的缓存区中是否缓存有所述随机数据串,是则继续,否则不满足;
根据所述指令的第三、第四字节数据查找到第一存储空间,判断所述第一存储空间中是否存有所述终端设备的PIN码,是则继续,否则不满足;
验证所述PIN码是否被锁定,是则不满足,否则满足所述认证条件。
所述步骤S3具体包括:
获取所述指令的前四个字节数据得到指令首部,获取所述指令中除前四个字节外的部分得到第一数据;
判断所述第一数据的第一个字节的值是否为0,是则获取所述第一数据的第二及第三字节数据得到第一长度的值;否则获取所述第一数据的第一字节数据得到第一长度的值;
根据所述第一长度的值,取所述第一数据中所述第一长度对应的字节之后相应字节数上的数据得到第二数据;
根据所述第一预设长度的值,从所述第二数据中截取相应字节数上的数据得到所述第一验证码;
将所述命令首部、所述第二数据截取后的数据及其长度组合生成所述待验证数据。
或者,所述步骤S3具体包括:
获取所述指令的前四个字节数据得到指令首部,获取所述指令中除前四个字节外的部分得到第一数据;
获取所述第一数据的第一个字节或前3个字节数据得到第一长度的值;
根据所述第一长度的值,取所述第一数据中所述第一长度对应的字节之后相应字节数上的数据得到第二数据;
根据所述第一预设长度的值,从所述第二数据的中截取相应字节数上的数据得到所述第一验证码;
将所述命令首部、所述第二数据截取后的数据及其长度组合生成所述待验证数据。
进一步地,在所述得到第一长度的值后还包括:
验证所述第一长度的值是否大于所述第一预设长度的值,是则继续,否则报错。
所述步骤S4具体包括:
步骤a:对所述待验证数据进行补位,并将补位后得到的数据按预定位数进行分块,并将偏移指针指向第一块数据块;
步骤b:调用所述缓存区中的随机数据串,并将所述随机数据串加载到第一寄存器;
步骤c:将所述偏移指针指向的当前数据块加载到第二寄存器,将所述第一寄存器中的数据与所述第二寄存器中的数据做异或运算,并用运算结果更新所述第一寄存器中的数据;
步骤d:调用所述第一存储空间中的PIN码,将所述PIN码或对所述PIN码进行散列运算得到的散列值作为加密密钥,对所述第一寄存器中的数据进行加密,并用加密结果更新所述第一寄存器中的数据;
步骤e:判断所述当前数据块是否为最后一块数据块,是则执行步骤f,否则将所述偏移指针指向下一块数据块,返回步骤c;
步骤f:获取所述第一寄存器中的数据得到所述安全数据,根据所述第一预设长度的值从所述安全数据中提取相应字节数数据得到所述第二验证码。
所述第一寄存器及所述第二寄存器的位数等于所述预定位数。
所述步骤S4具体包括:
对所述待验证数据进行补位,并将补位后得到的数据与所述缓存区中的随机数据串组合得到组合数据;
将所述PIN码进行散列运算,将散列运算结果作为密钥对所述组合数据进行加密,得到所述安全数据;根据所述第一预设长度的值从所述安全数据中提取相应字节数的数据,得到所述第二验证码。
所述步骤S4具体包括:
将所述PIN码、所述随机数据串及所述待验证数据进行散列运算,得到所述安全数据;
根据所述第一预设长度对所述安全数据进行分段,对分段得到的各段数据进行异或运算得到所述第二验证码。
进一步地,在所述步骤S2、步骤S5中认证失败后,还包括:
所述终端设备向所述上位机报错,返回事先约定的错误码。
在所述步骤S1之后还包括:
根据指令中预定比特位的值,判断所述指令中是否包含所述第一验证码,是则执行S2,否则执行S6。
当判断所述指令中不包含所述第一验证码时,所述步骤S6之前还包括:
判断状态值是否为有效状态,是则继续,否则报错。
特别地,所述终端设备接收到PIN码验证指令,当验证PIN码合法时,将所述状态值设为有效状态,同时将PIN码重试次数计数器初始化,否则,将所述PIN码重试次数计数器计数一次,并判断所述PIN码重试次数计数器的值是否达到第一预设值,是则将所述PIN码锁定,否则报错,并返回S1。
进一步地,当所述状态值大于第二预设值时,所述状态值为有效状态,否则为无效状态;
所述步骤S5之后还包括:
当所述第一验证码与所述第二验证码一致时,将所述状态值设置为有效状态,并将PIN码重试次数计数器初始化;
当所述第一验证码与所述第二验证码不一致时,将所述状态值设置为无效状态。
根据本发明的另一方面,提供了一种终端设备认证的装置,包括:
接收模块,用于接收上位机发送的预设类型的指令;
检查模块:用于当所述接收模块接收到预设类型的指令时,检查认证条件是否满足;
第一报错模块,用于当所述检查模块检查认证条件不满足时和验证模块验证第一验证码与第二验证码不一致时报错;
解析模块,用于当所述检查模块检查认证条件满足时,获取所述指令的前四个字节数据得到指令首部,获取所述指令中除前四个字节外的部分得到第一数据;根据第一数据的高位端字节得到第一长度的值;根据所述第一长度的值,取所述第一数据中所述第一长度对应的字节之后相应字节数上的数据得到第二数据;根据所述第一预设长度,从所述第二数据中提取第一验证码,并根据所述指令首部和所述第二数据生成待验证数据;
生成模块:用于调用PIN码,将PIN码或对PIN码进行散列运算得到的散列值作为密钥,对所述待验证数据进行处理生成安全数据,根据所述第一预设长度对所述安全数据进行处理得到第二验证码;
验证模块:用于验证所述第一验证码与所述第二验证码是否一致;
执行模块:用于在所述验证模块验证所述第一验证码与所述第二验证码一致时执行所述指令。
进一步地,还包括:
所述接收模块还用于接收上位机发生的生成随机数据串的指令,生成所述随机数据串缓存在缓存区,并将所述随机数据串返回给所述上位机。
所述检查模块包括第一验证单元、第二验证单元、第三验证单元及第四验证单元;
所述第一验证单元,用于验证所述指令长度是否不小于第二预设长度,是则继续,否则不满足;
所述第二验证单元,用于验证所述终端设备的缓存区中是否缓存有随机数据串,是则继续,否则不满足;
所述第三验证单元,用于根据所述指令的第三、第四字节数据查找到第一存储空间,判断所述第一存储空间中是否存有所述终端设备的PIN码,是则继续,否则不满足;
所述第四验证单元,用于验证所述PIN码是否被锁定,是则不满足,否则满足所述认证条件。
所述解析模块包括:获取单元、判断单元、截取单元、组合单元;
所述获取单元,用于获取所述指令的前四个字节数据得到指令首部,获取所述指令中除前四个字节外的部分得到第一数据;
所述判断单元,用于判断所述第一数据的第一个字节的值是否为0,是则获取所述第一数据的第二及第三字节数据得到第一长度的值;否则获取所述第一数据的第一字节数据得到第一长度的值;
所述截取单元,用于根据所述第一长度的值,取所述第一数据中所述第一长度对应的字节之后相应字节数上的数据得到第二数据;根据所述第一预设长度的值,从所述第二数据中截取相应字节数上的数据得到所述第一验证码;
所述组合单元,用于将所述命令首部、所述第二数据截取后的数据及其长度组合生成所述待验证数据。
通过本发明提供的方案可以实现在通信双方的通信数据不涉及重要数据的前提下,实现对通信方的认证,且能防止信息被篡改,保证信息安全。
附图说明
图1为本发明实施例1提供的一种终端设备认证方法;
图2为本发明实施例1中的第二验证码生成的方法;
图3为本发明实施例2提供的一种终端设备认证的方法;
图4为本发明实施例3提供的一种终端设备认证的装置。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施例作进一步地详细描述。
实施例1
参见图1,本发明实施例1提供了一种终端设备认证方法,当终端设备接收到上位机下发的预设类型的带有验证码的指令时,执行以下步骤1至步骤5:
具体地,在本实施例中,以修改PIN指令作为例子。当指令的前两个字节与事先约定的特征值相符,则为修改PIN指令。所述终端设备可以为智能卡、USBkey、网络客户端等终端。
优选地,在本实施例中,所述终端设备接收到预设类型的指令前还包括:接收到上位机发送的生成随机数据串的指令,生成随机数据串缓存在缓存区中,并将随机数据串返回给所述上位机。
步骤1:终端设备检查验证条件是否满足。如果是,继续;否则,将事先约定的错误码返回给上位机。
所述检查验证条件是否满足具体包括:
步骤101:检查接收到的所述指令的长度是否不小于第二预设长度,是则继续,否则不满足验证条件;
优选地,在本实施例中,数据长度以字节为单位,所述第二预设长度为11。
步骤102:验证所述终端设备的缓存区中是否缓存有随机数据串;是则继续,否则不满足条件;
优选地,在本实施例中,所述随机数据串的长度预定,与加密算法相关。具体地,例如加密算法分组长度为8个字节,则所述随机数据串相应地为8字节。除此之外,也可为其他的长度,如加密算法分组长度的整数倍等。
步骤103:判断内置PIN码是否被锁定,如果是,则不满足条件;
优选地,在本实施例中,步骤103还包括:
根据指令的预定字段检索到第一存储空间,并判断所述第一存储空间中是否存在PIN码,若不存在,则不满足条件。
具体地,在本实施例中,根据所述指令的第三和第四字节进行检索所述第一存储空间。
步骤101-步骤103顺序不分先后。
步骤2:根据第一预设长度对所述指令进行解析,得到第一验证码及待验证数据;
在本实施例中,具体包括:
步骤201:获取所述指令的前四个字节数据得到指令首部,获取所述指令中除前四个字节外的部分得到第一数据;
步骤202:根据第一数据的高位端字节得到第一长度的值;
优选地,在本实施例中,根据第一数据的高位端字节得到第一长度可以为:判断所述第一数据的第一个字节的值是否为0,是则获取所述第一数据的第二及第三字节数据得到第一长度的值;否则获取所述第一数据的第一字节数据得到第一长度的值。
具体地,当第一数据的第一个字节(即所述指令的第5字节)的值为0x00,则将所述第一数据的第二字节作为第一长度的高字节,第三字节作为第一长度的低字节(即所述指令的第六和第七字节),例如所述指令的第六和第七字节分别为0x01和0x02,则所述第一长度的值为0x0102;当所述第一数据的第一字节不为0x00时,获取所述第一数据的第一字节的数据作为第一长度的值。
除上述得到第一长度的方式外,还可以按照事先约定的方式,获取所述第一数据的第一字节数据或前三个字节数据得到第一长度的值,相应地,当事先约定获取所述第一数据的第一字节数据得到第一长度的值时,若得到第一长度的值为0则向上位机报错;当事先约定获取所述第一数据的前三个字节数据得到第一长度的值时,若得到的第一长度的首字节的值不为0则向上位机报错。
进一步地,在本实施例中,得到第一长度的值后还包括:
检查所述第一长度的值是否大于所述第一预设长度的值。如果不是,则将事先约定的错误码回送给上位机。
步骤203:根据所述第一长度的值,取所述第一数据中所述第一长度对应的字节之后相应字节数上的数据得到第二数据。
优选地,在本实施例中若所述第一数据中所述第一长度对应的字节之后的数据的长度小于所述第一长度的值,则将事先约定的错误码回送给上位机;
进一步地,如果从所述第一数据中提取第一长度的数据之后还有剩余数据,则可根据剩余数据判断指令是否符合预定格式。如果不符合,则将事先约定的错误码回送给上位机。
具体地,在本实施例中,如果从所述第一数据中提取第一长度的数据之后还有剩余数据,则将事先约定的错误码回送给上位机
步骤204:根据所述第一预设长度,从所述第二数据中提取第一验证码,并根据所述指令首部和所述第二数据生成待验证数据;
具体包括:
步骤204-1:根据所述第一预设长度的值,从所述第二数据的低位段截取相应字节数上的数据得到所述第一验证码;
步骤204-2:计算所述第二数据中截取后的数据的长度得到第二长度,将第二长度的值进行编码,将所述指令首部、第二长度的值编码后的数据及所述第二数据截取后的数据组合,得到待验证数据。
优选地,所述编码方法具体为:
判断第二长度的值是否大于255(可用一个字节表示),是则用三个字节表示所述第二长度的值,否则则用一个字节记录第二长度的值;
例如,第二长度为0x0102,则编码后为000102;
除此之外,也可以用其他编码方式,比如统一用3字节表示长度值等等。
例如,所述指令为8420112C00000009010203040506070809,则所述指令首部为8420112C;
则第一数据相应为:00000009010203040506070809
所述第一长度的值为9;
所述第二数据相应为010203040506070809;
所述第一预设长度的值为4为例,则第一验证码为06070809;
所述第二长度为5;
组合得到的所述待验证数据为8420112C050102030405;
步骤3:根据所述第一存储空间的PIN码、所述第一预设长度及所述待验证数据生成第二验证码;
在本实施例中所述步骤103也可以在本步骤进行。
优选地,在本实施例中,所述生成第二验证码的过程具体为:
步骤301:根据预设规则对所述待验证数据进行补位;
优选地,在本实施例中,补位方法为:在所述待验证数据后追加一个字节,其值为0x80,然后追加0x00直到补位后的数据长度是得到安全数据所用的加密算法分组长度的整数倍为止。
例如,所用加密算法算法分组长度为16。相应地,补位后的待验证数据为8420112C000005010203040580000000;
步骤302:根据所述PIN码、所述缓存区中的随机数据串以及所述补位后的待验证数据,生成第二验证码;
优选地,在本实施例中,生成所述第二验证码具体为:以所述内置PIN为密钥,以所述随机数据串为初始向量,使用DES-CBC算法对所述补位后的待验证数据进行加密得到所述安全数据,根据所述第一预设长度的值从所述安全数据中提取相应字节数数据得到所述第二验证码,在本实施例中,提取所述安全数据低位端相应字节数数据得到第二验证码。
除此之外,还可采用其他方法,例如:
对PIN码进行散列运算,以当前PIN的散列值为密钥,将所述随机数据串与所述补位后的待验证数据拼接组合,使用AES算法以所述随机数据串为密钥,对拼接组合后的数据进行加密得到安全数据,从所述安全数据中提取第一预设长度的数据得到第二验证码;
或者
将所述PIN码、所述随机数据串和所述待验证数据进行组合,对组合后的数据进行散列运算,将散列结果按所述第一预设长度进行分段,并将分段得到的各段数据进行异或运算,得到第二验证码,等等。
参见图2,在本实施例生成第二验证码具体包括:
步骤a:对所述待验证数据进行补位,并将补位后得到的数据按预定位数进行分块,并将偏移指针指向第一块数据块;
优选地,在本实施例中,对所述待验证数据进行补位所用的数据预设,且补位后的长度优选为所述预定位数的整数倍,所述预定位数为得到安全数据的加密算法所对应分组长度。
步骤b:调用所述缓存区中的随机数据串,并将所述随机数据串加载到第一寄存器;
步骤c:将所述偏移指针指向的当前数据块加载到第二寄存器,将所述第一寄存器中的数据与所述第二寄存器中的数据做异或运算,并用运算结果更新所述第一寄存器中的数据;
步骤d:调用所述第一存储空间中的PIN码,根据所述PIN码得到加密密钥,对所述第一寄存器中数据进行加密,并用加密结果更新所述第一寄存器中的数据;
所述第一寄存器及所述第二寄存器的位数等于所述预定位数,所述步骤d中根据所述PIN码得到加密密钥可以为:将所述PIN码作为所述密钥;或者,将所述PIN码进行散列运算,将散列运算结果作为所述密钥。
步骤e:判断所述当前数据块是否为最后一块数据块,是则执行步骤f,否则将所述偏移指针指向下一块数据块,返回步骤c;
步骤f:获取所述第一寄存器中的数据得到所述安全数据,根据所述第一预设长度的值从所述安全数据中提取相应字节数数据得到所述第二验证码。
优选地,在本实施例中,从所述安全数据的高位端提取第一预设长度的数据得到第二验证码。
步骤4:判断第一验证码和第二验证码是否一致,如果是,认证通过,执行所述指令,将执行结果回送给上位机;否则,拒绝执行,将事先约定的错误码回送给上位机。
具体地,若所述指令为修改PIN码指令,则认证通过后,所述终端设备将所述第一存储空间中的PIN码更新为新的PIN码,所述新的PIN码包含在所述第二数据中。
实施例2
参见图3,当终端设备接收到上位机下发预设类型的指令时,执行以下操作:
具体地,在本实施例中,预设类型的指令包括签名指令,以所述指令为签名指令为例。
在本实施例中,所述首部的长度为2个字节。
步骤401:判断所述指令是否带有验证码。如果没有,执行步骤402;否则,执行步骤403;
具体地,在本实施例中,以所述指令首部的预定比特位作为标志位。如果所述标志位被置位,则所述指令带有验证码;否则,所述指令不带验证码。
优选地,在本实施例中,以所述指令第一个字节的低半字节的次高位作为标志位。即,若所述指令第一个字节的低半字节大于0x04,则本实施例带有验证码。也可使用其他比特位。
步骤402:检查所述指令所需的PIN码认证条件是否满足,是则继续执行步骤405,否则,将事先约定的错误码回送给上位机;
优选地,在本实施例中,通过检查内部保存的状态值检查所需的PIN码认证条件是否满足。如果所述状态值大于预设值则所述状态值为有效状态,PIN码认证条件满足;否则,所述状态值为无效状态,PIN码认证条件不满足。
在本实施例中,当PIN码认证成功后,将所述状态值设为高于预设的值。PIN码认证的具体方法不在本发明范围之内,不做具体描述。
步骤403:解析所述指令,从中提取第一验证码和待验证数据;
所述指令解析的具体方法实施例1已有描述,在此不再赘述。
进一步地,在本实施例中,步骤403还包括:
检查PIN码是否被锁定。如果是,将事先约定的错误码回送给上位机。
步骤404:根据所述待验证数据和内置PIN验证所述第一验证码是否合法,是则认证通过,继续执行步骤405;否则报错,将事先约定的错误码回送给上位机;
验证第一验证码的具体方法实施例1已有描述,在此不再赘述。
优选地,在本实施例中,步骤404还包括:如果验证不通过,将内部保存的状态值设为无效状态,即将状态值的值设为小于预设值。
进一步地,将PIN码重试次数计数器计数一次,本实施例中计数器的计数值递减。如果PIN码重试次数计数器的值达到预定值(例如0),则将所述PIN码设为锁定状态。
如果认证通过,则将内部保存的状态值设为有效状态,即将所述状态值的值设为高于预设值。
步骤405:执行所述指令,将结果返回给上位机。
具体地,在本实施例中,根据所述待验证数据计算签名。
实施例3
参见图4,本发明实施例3提供了一种终端设备认证的装置,包括:
接收模块51,用于接收上位机发送的预设类型的指令;
检查模块52,用于当所述接收模块接收到预设类型的指令时,检查认证条件是否满足,还用于接收到上位机发生的生成随机数据串的指令时,生成所述随机数据串缓存在缓存区,并将所述随机数据串返回给所述上位机;
第一报错模块53,用于当所述检查模块52检查认证条件不满足时和验证模块验证56验证所述第一验证码与所述第二验证码不一致时报错;
解析模块54,用于当所述检查模块52检查认证条件满足时,根据第一预设长度对所述接收模块51接收到的指令进行解析,得到第一验证码及待验证数据;
生成模块55,用于调用PIN码,将PIN码或对PIN码进行散列运算得到的散列值作为密钥,对所述待验证数据进行处理生成安全数据,根据所述第一预设长度对所述安全数据进行处理得到第二验证码;
验证模块56,用于验证所述第一验证码与所述第二验证码是否一致;
执行模块57,用于在所述验证模块56验证所述第一验证码与所述第二验证码一致时执行所述指令。
所述检查模块52包括第一验证单元521、第二验证单元522、第三验证单元523及第四验证单元524;
所述第一验证单元521,用于验证所述指令长度是否不小于第二预设长度,是则继续,否则不满足;
所述第二验证单元522,用于验证所述终端设备的缓存区中是否缓存有随机数据串,是则继续,否则不满足;
所述第三验证单元523,用于根据所述指令的第三、第四字节数据查找到第一存储空间,判断所述第一存储空间中是否存有所述终端设备的PIN码,是则继续,否则不满足;
所述第四验证单元524,用于验证所述PIN码是否被锁定,是则不满足,否则满足所述认证条件。
所述生成模块55包括:获取单元551、判断单元552、截取单元553、组合单元554;
所述获取单元551,用于获取所述指令的前四个字节数据得到指令首部,获取所述指令中除前四个字节外的部分得到第一数据;
所述判断单元552,用于判断所述第一数据的第一个字节的值是否为0,是则获取所述第一数据的第二及第三字节数据得到第一长度的值;否则获取所述第一数据的第一字节数据得到第一长度的值;
所述截取单553元,用于根据所述第一长度的值,取所述第一数据中所述第一长度对应的字节之后相应字节数上的数据得到第二数据;根据所述第一预设长度的值,从所述第二数据中截取相应字节数上的数据得到所述第一验证码;
所述组合单元554,用于将所述命令首部、所述第二数据截取后的数据及其长度组合生成所述待验证数据;
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (20)

1.一种终端设备认证的方法,其特征在于,包括:
步骤S1:终端设备接收上位机发送的预设类型的指令;
步骤S2:检查认证条件是否满足,是则执行S3,否则认证失败;
步骤S3:获取所述指令的前四个字节数据得到指令首部,获取所述指令中除前四个字节外的部分得到第一数据;根据第一数据的高位端字节得到第一长度的值;根据所述第一长度的值,取所述第一数据中所述第一长度对应的字节之后相应字节数上的数据得到第二数据;根据第一预设长度的值,从所述第二数据的低位段截取相应字节数上的数据得到第一验证码;计算所述第二数据中截取后的数据的长度得到第二长度,将所述第二长度的值进行编码,将所述指令首部、第二长度的值编码后的数据及所述第二数据截取后的数据组合,得到待验证数据;
步骤S4:所述终端设备调用PIN码,将PIN码或对PIN码进行散列运算得到的散列值作为密钥,对所述待验证数据进行处理得到安全数据,根据所述第一预设长度对所述安全数据进行处理得到第二验证码;
步骤S5:验证所述第一验证码与所述第二验证码是否一致,是则认证通过,继续,否则认证失败;
步骤S6:所述终端设备执行所述指令。
2.如权利要求1所述的方法,其特征在于,所述步骤S1之前包括:
当所述终端设备接收到上位机发送的生成随机数据串的指令时,生成随机数据串缓存在缓存区,并将所述随机数据串返回给所述上位机。
3.如权利要求2所述的方法,其特征在于,所述步骤S2中检查认证条件是否满足具体包括:
验证所述指令长度是否不小于第二预设长度,是则继续,否则不满足;
验证所述终端设备的缓存区中是否缓存有所述随机数据串,是则继续,否则不满足;
根据所述指令的第三、第四字节数据查找到第一存储空间,判断所述第一存储空间中是否存有所述终端设备的PIN码,是则继续,否则不满足;
验证所述PIN码是否被锁定,是则不满足,否则满足所述认证条件。
4.如权利要求3所述的方法,其特征在于,所述步骤S3具体包括:
获取所述指令的前四个字节数据得到指令首部,获取所述指令中除前四个字节外的部分得到第一数据;
判断所述第一数据的第一个字节的值是否为0,是则获取所述第一数据的第二及第三字节数据得到第一长度的值;否则获取所述第一数据的第一字节数据得到第一长度的值;
根据所述第一长度的值,取所述第一数据中所述第一长度对应的字节之后相应字节数上的数据得到第二数据;
根据所述第一预设长度的值,从所述第二数据中截取相应字节数上的数据得到所述第一验证码;
计算所述第二数据中截取后的数据的长度得到第二长度,将所述第二长度的值进行编码,将所述指令首部、第二长度的值编码后的数据及所述第二数据截取后的数据组合,得到待验证数据。
5.如权利要求3所述的方法,其特征在于,所述步骤S3具体包括:
获取所述指令的前四个字节数据得到指令首部,获取所述指令中除前四个字节外的部分得到第一数据;
获取所述第一数据的第一个字节或前3个字节数据得到第一长度的值;
根据所述第一长度的值,取所述第一数据中所述第一长度对应的字节之后相应字节数上的数据得到第二数据;根据所述第一预设长度的值,从所述第二数据的中截取相应字节数上的数据得到所述第一验证码;
计算所述第二数据中截取后的数据的长度得到第二长度,将所述第二长度的值进行编码,将所述指令首部、第二长度的值编码后的数据及所述第二数据截取后的数据组合,得到待验证数据。
6.如权利要求4或5所述的方法,其特征在于,在所述得到第一长度的值后还包括:
验证所述第一长度的值是否大于所述第一预设长度的值,是则继续,否则报错。
7.如权利要求4或5所述的方法,其特征在于,所述步骤S4具体包括:
步骤a:对所述待验证数据进行补位,并将补位后得到的数据按预定位数进行分块,并将偏移指针指向第一块数据块;
步骤b:调用所述缓存区中的随机数据串,并将所述随机数据串加载到第一寄存器;
步骤c:将所述偏移指针指向的当前数据块加载到第二寄存器,将所述第一寄存器中的数据与所述第二寄存器中的数据做异或运算,并用运算结果更新所述第一寄存器中的数据;
步骤d:调用所述第一存储空间中的PIN码,将所述PIN码或对所述PIN码进行散列运算得到的散列值作为加密密钥,对所述第一寄存器中的数据进行加密,并用加密结果更新所述第一寄存器中的数据;
步骤e:判断所述当前数据块是否为最后一块数据块,是则执行步骤f,否则将所述偏移指针指向下一块数据块,返回步骤c;
步骤f:获取所述第一寄存器中的数据得到所述安全数据,根据所述第一预设长度的值从所述安全数据中提取相应字节数数据得到所述第二验证码。
8.如权利要求7所述的方法,其特征在于,所述第一寄存器及所述第二寄存器的位数等于所述预定位数。
9.如权利要求4或5所述的方法,其特征在于,所述步骤S4具体包括:
对所述待验证数据进行补位,并将补位后得到的数据与所述缓存区中的随机数据串组合得到组合数据;
将所述PIN码进行散列运算,将散列运算结果作为密钥对所述组合数据进行加密,得到所述安全数据;根据所述第一预设长度的值从所述安全数据中提取相应字节数的数据,得到所述第二验证码。
10.如权利要求4或5所述的方法,其特征在于,所述步骤S4具体包括:
将所述PIN码、所述随机数据串及所述待验证数据进行散列运算,得到所述安全数据;
根据所述第一预设长度对所述安全数据进行分段,对分段得到的各段数据进行异或运算得到所述第二验证码。
11.如权利要求1所述的方法,其特征在于,在所述步骤S2、步骤S5中认证失败后,还包括:
所述终端设备向所述上位机报错,返回事先约定的错误码。
12.如权利要求1所述的方法,其特征在于,在所述步骤S1之后还包括:
根据指令中预定比特位的值,判断所述指令中是否包含所述第一验证码,是则执行S2,否则执行S6。
13.如权利要求12所述的方法,其特征在于,当判断所述指令中不包含所述第一验证码时,所述步骤S6之前还包括:
判断状态值是否为有效状态,是则继续,否则报错。
14.如权利要求13所述的方法,其特征在于,所述终端设备接收到PIN码验证指令,当验证PIN码合法时,将所述状态值设为有效状态,同时将PIN码重试次数计数器初始化,否则,将所述PIN码重试次数计数器计数一次,并判断所述PIN码重试次数计数器的值是否达到第一预设值,是则将所述PIN码锁定,否则报错,并返回S1。
15.如权利要求14所述的方法,其特征在于,当所述状态值大于第二预设值时,所述状态值为有效状态,否则为无效状态;
16.如权利要求13所述的方法,其特征在于,所述步骤S5之后还包括:
当所述第一验证码与所述第二验证码一致时,将所述状态值设置为有效状态,并将PIN码重试次数计数器初始化;
当所述第一验证码与所述第二验证码不一致时,将所述状态值设置为无效状态。
17.一种终端设备认证的装置,其特征在于,包括:
接收模块,用于接收上位机发送的预设类型的指令;
检查模块:用于当所述接收模块接收到预设类型的指令时,检查认证条件是否满足;
第一报错模块,用于当所述检查模块检查认证条件不满足时和验证模块验证第一验证码与第二验证码不一致时报错;
解析模块,用于当所述检查模块检查认证条件满足时,获取所述指令的前四个字节数据得到指令首部,获取所述指令中除前四个字节外的部分得到第一数据;根据第一数据的高位端字节得到第一长度的值;根据所述第一长度的值,取所述第一数据中所述第一长度对应的字节之后相应字节数上的数据得到第二数据;根据第一预设长度的值,从所述第二数据的低位段截取相应字节数上的数据得到第一验证码;计算所述第二数据中截取后的数据的长度得到第二长度,将所述第二长度的值进行编码,将所述指令首部、第二长度的值编码后的数据及所述第二数据截取后的数据组合,得到待验证数据;
生成模块:用于调用PIN码,将PIN码或对PIN码进行散列运算得到的散列值作为密钥,对所述待验证数据进行处理生成安全数据,根据所述第一预设长度对所述安全数据进行处理得到第二验证码;
验证模块:用于验证所述第一验证码与所述第二验证码是否一致;
执行模块:用于在所述验证模块验证所述第一验证码与所述第二验证码一致时执行所述指令。
18.如权利要求17所述的装置,其特征在于,还包括:
所述接收模块还用于接收上位机发生的生成随机数据串的指令,生成所述随机数据串缓存在缓存区,并将所述随机数据串返回给所述上位机。
19.如权利要求18所述的装置,其特征在于,所述检查模块包括第一验证单元、第二验证单元、第三验证单元及第四验证单元;
所述第一验证单元,用于验证所述指令长度是否不小于第二预设长度,是则继续,否则不满足;
所述第二验证单元,用于验证所述终端设备的缓存区中是否缓存有随机数据串,是则继续,否则不满足;
所述第三验证单元,用于根据所述指令的第三、第四字节数据查找到第一存储空间,判断所述第一存储空间中是否存有所述终端设备的PIN码,是则继续,否则不满足;
所述第四验证单元,用于验证所述PIN码是否被锁定,是则不满足,否则满足所述认证条件。
20.如权利要求17所述的装置,其特征在于,所述解析模块包括:获取单元、判断单元、截取单元、组合单元;
所述获取单元,用于获取所述指令的前四个字节数据得到指令首部,获取所述指令中除前四个字节外的部分得到第一数据;
所述判断单元,用于判断所述第一数据的第一个字节的值是否为0,是则获取所述第一数据的第二及第三字节数据得到第一长度的值;否则获取所述第一数据的第一字节数据得到第一长度的值;
所述截取单元,用于根据所述第一长度的值,取所述第一数据中所述第一长度对应的字节之后相应字节数上的数据得到第二数据;根据所述第一预设长度的值,从所述第二数据中截取相应字节数上的数据得到所述第一验证码;
所述组合单元,用于计算所述第二数据中截取后的数据的长度得到第二长度,将所述第二长度的值进行编码,将所述指令首部、第二长度的值编码后的数据及所述第二数据截取后的数据组合,得到待验证数据。
CN201210270666.XA 2012-07-31 2012-07-31 一种终端设备认证方法及装置 Active CN102761557B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210270666.XA CN102761557B (zh) 2012-07-31 2012-07-31 一种终端设备认证方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210270666.XA CN102761557B (zh) 2012-07-31 2012-07-31 一种终端设备认证方法及装置

Publications (2)

Publication Number Publication Date
CN102761557A CN102761557A (zh) 2012-10-31
CN102761557B true CN102761557B (zh) 2016-02-24

Family

ID=47055878

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210270666.XA Active CN102761557B (zh) 2012-07-31 2012-07-31 一种终端设备认证方法及装置

Country Status (1)

Country Link
CN (1) CN102761557B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103049688B (zh) * 2013-01-25 2015-07-29 北京天诚盛业科技有限公司 身份认证设备及其认证处理方法和处理装置
CN103166754B (zh) * 2013-03-12 2017-05-10 飞天诚信科技股份有限公司 一种处理指令的方法和装置
CN103957225B (zh) * 2014-05-26 2017-03-29 飞天诚信科技股份有限公司 一种处理扩展安全报文的方法及装置
CN104091259B (zh) * 2014-07-04 2017-12-19 飞天诚信科技股份有限公司 一种可解析流程代码的支付终端及其工作方法
CN104506311B (zh) * 2015-01-12 2017-09-22 飞天诚信科技股份有限公司 一种实现签到功能的方法
CN108615155B (zh) * 2018-05-02 2021-07-20 飞天诚信科技股份有限公司 一种鉴别交易信息完整性的方法
CN109495260B (zh) * 2018-12-28 2021-06-08 飞天诚信科技股份有限公司 一种终端设备及其管理密钥的方法
CN110781140B (zh) * 2019-09-06 2023-08-18 平安科技(深圳)有限公司 区块链中数据签名的方法、装置、计算机设备及存储介质
CN111031535A (zh) * 2019-11-15 2020-04-17 华中科技大学 一种用于智能卡系统的安全通信方法及系统
CN112464258B (zh) * 2020-11-02 2024-03-19 中国银联股份有限公司 数据加、解密方法、装置、设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101399661A (zh) * 2007-09-27 2009-04-01 华为技术有限公司 一种组密钥管理中的合法邻居认证方法和装置
CN101521571A (zh) * 2008-02-27 2009-09-02 联想(北京)有限公司 一种移动硬件安全单元、服务方认证方法
CN102024117A (zh) * 2009-09-09 2011-04-20 英业达股份有限公司 对运行窗口操作系统的计算机的验证方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7607012B2 (en) * 2003-10-01 2009-10-20 Nokia Corporation Method for securing a communication

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101399661A (zh) * 2007-09-27 2009-04-01 华为技术有限公司 一种组密钥管理中的合法邻居认证方法和装置
CN101521571A (zh) * 2008-02-27 2009-09-02 联想(北京)有限公司 一种移动硬件安全单元、服务方认证方法
CN102024117A (zh) * 2009-09-09 2011-04-20 英业达股份有限公司 对运行窗口操作系统的计算机的验证方法

Also Published As

Publication number Publication date
CN102761557A (zh) 2012-10-31

Similar Documents

Publication Publication Date Title
CN102761557B (zh) 一种终端设备认证方法及装置
AU2021203184B2 (en) Transaction messaging
CN103107996B (zh) 数字证书在线下载方法及系统、数字证书发放平台
CN102752115B (zh) 挑战码生成方法及装置、动态口令认证方法及系统
US20160080153A1 (en) Device authenticity determination system and device authenticity determination method
CN105391695A (zh) 一种终端注册方法及校验方法
CN106789024B (zh) 一种远程解锁方法、装置和系统
CN109194625A (zh) 一种基于云端服务器的客户端应用保护方法、装置及存储介质
CN103888938A (zh) 一种基于参数的动态生成密钥的pki私钥保护方法
CN102624711B (zh) 一种敏感信息传输方法及系统
US8316437B2 (en) Method for protecting the access to an electronic object connected to a computer
CN107306246A (zh) 基于访问密钥的数据获取方法
CN112332975A (zh) 物联网设备安全通信方法及系统
CN103905194A (zh) 身份溯源认证方法及系统
CN107196972A (zh) 一种认证方法及系统、终端和服务器
CN113872770A (zh) 一种安全性验证方法、系统、电子设备及存储介质
CN113179240A (zh) 密钥保护方法、装置、设备及存储介质
CN106712939A (zh) 密钥离线传输方法和装置
CN109831782B (zh) 一种电子卡信息的安全传输验证方法
CN108667801A (zh) 一种物联网接入身份安全认证方法及系统
CN106302539A (zh) 一种嵌入式web安全认证方法
CN105827404A (zh) 一种身份认证方法、装置及服务器
CN105162592A (zh) 一种认证可穿戴设备的方法及系统
CN107835172A (zh) 票据信息验证方法及系统、服务器和计算机可读存储介质
CN114449504B (zh) 一种nfc标签的验证方法、电子设备及存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: 17th floor, building B, Huizhi building, No.9, Xueqing Road, Haidian District, Beijing 100085

Patentee after: Feitian Technologies Co.,Ltd.

Country or region after: China

Address before: 100085 17th floor, block B, Huizhi building, No.9 Xueqing Road, Haidian District, Beijing

Patentee before: Feitian Technologies Co.,Ltd.

Country or region before: China