一种终端设备认证方法及装置的制作方法

文档序号:7857158阅读:238来源:国知局
专利名称:一种终端设备认证方法及装置的制作方法
技术领域
本发明涉及信息安全领域,尤其涉及一种终端设备认证方法及装置。
背景技术
随着信息技术的发展,信息安全日益受到人们的重视,如上位机与终端设备通过对通信数据进行加密并共享密钥来保障信息安全、服务器通过验证网络客户端传送的密码认证来保障信息安全,现有技术中,通信双方通信过程中的通信数据一般会涉及重要数据,如密钥、密码及PIN码等,一旦通信数据被非法截取会给用户的利益带来安全隐患。

发明内容
为解决上述问题,本发明提供了一种终端设备认证的方法与装置,根据本发明的一方面,提供了一种终端设备认证的方法,包括步骤SI :终端设备接收上位机发送的预设类型的指令;步骤S2 :检查认证条件是否满足,是则执行S3,否则认证失败;步骤S3 :根据第一预设长度对所述指令进行解析,得到第一验证码及待验证数据;步骤S4 :所述终端设备调用PIN码,将PIN码或对PIN码进行散列运算得到的散列值作为密钥,对所述待验证数据进行处理得到安全数据,根据所述第一预设长度对所述安全数据进行处理得到第二验证码;步骤S5 :验证所述第一验证码与所述第二验证码是否一致,是则认证通过,继续,否则认证失败;步骤S6 :所述终端设备执行所述指令。近一步地,所述步骤SI之前包括当所述终端设备接收到上位机发送的生成随机数据串的指令时,生成随机数据串缓存在缓存区,并将所述随机数据串返回给所述上位机。所述步骤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中认证失败后,还包括所述终端设备向所述上位机报错,返回事先约定的错误码。 在所述步骤SI之后还包括根据指令中预定比特位的值,判断所述指令中是否包含所述第一验证码,是则执行S2,否则执行S6。当判断所述指令中不包含所述第一验证码时,所述步骤S6之前还包括判断状态值是否为有效状态,是则继续,否则报错。 特别地,所述终端设备接收到PIN码验证指令,当验证PIN码合法时,将所述状态值设为有效状态,同时将PIN码重试次数计数器初始化,否则,将所述PIN码重试次数计数器计数一次,并判断所述PIN码重试次数计数器的值是否达到第一预设值,是则将所述PIN码锁定,否则报错,并返回SI。进一步地,当所述状态值大于第二预设值时,所述状态值为有效状态,否则为无效状态;所述步骤S5之后还包括当所述第一验证码与所述第二验证码一致时,将所述状态值设置为有效状态,并将所述PIN码重试次数计数器初始化;当所述第一验证码与所述第二验证码不一致时,将所述状态值设置为无效状态。根据本发明的另一方面,提供了一种终端设备认证的装置,包括接收模块,用于接收上位机发送的预设类型的指令;检查模块用于当所述接收模块接收到预设类型的指令时,检查认证条件是否满足;第一报错模块,用于当所述检查模块检查认证条件不满足时和验证模块验证所述第一验证码与所述第二验证码不一致时报错;解析模块,用于当所述检查模块检查认证条件满足时,根据第一预设长度对所述接收模块接收到的指令进行解析,得到第一验证码及待验证数据;生成模块用于调用PIN码,将PIN码或对PIN码进行散列运算得到的散列值作为密钥,对所述待验证数据进行处理生成安全数据,根据所述第一预设长度对所述安全数据进行处理得到第二验证码;验证模块用于验证所述第一验证码与所述第二验证码是否一致;执行模块用于在所述验证模块验证所述第一验证码与所述第二验证码一致时执行所述指令。
进一步地,还包括所述接收模块还用于接收上位机发生的生成随机数据串的指令,生成所述随机数据串缓存在缓存区,并将所述随机数据串返回给所述上位机。所述检查模块包括第一验证单元、第二验证单元、第三验证单元及第四验证单元;
所述第一验证单元,用于验证所述指令长度是否不小于第二预设长度,是则继续,否则不满足;所述第二验证单元,用于验证所述终端设备的缓存区中是否缓存有随机数据串,是则继续,否则不满足;所述第三验证单元,用于根据所述指令的第三、第四字节数据查找到第一存储空间,判断所述第一存储空间中是否存有所述终端设备的PIN码,是则继续,否则不满足;所述第四验证单元,用于验证所述PIN码是否被锁定,是则不满足,否则满足所述认证条件。所述生成模块包括获取单元、判断单元、截取单元、组合单元;所述获取单元,用于获取所述指令的前四个字节数据得到指令首部,获取所述指令中除前四个字节外的部分得到第一数据;所述判断单元,用于判断所述第一数据的第一个字节的值是否为0,是则获取所述第一数据的第二及第三字节数据得到第一长度的值;否则获取所述第一数据的第一字节数据得到第一长度的值;所述截取单元,用于根据所述第一长度的值,取所述第一数据中所述第一长度对应的字节之后相应字节数上的数据得到第二数据;根据所述第一预设长度的值,从所述第二数据中截取相应字节数上的数据得到所述第一验证码;所述组合单元,用于将所述命令首部、所述第二数据截取后的数据及其长度组合生成所述待验证数据。通过本发明提供的方案可以实现在通信双方的通信数据不涉及重要数据的前提下,实现对通信方的认证,且能防止信息被篡改,保证信息安全。


图I为本发明实施例I提供的一种终端设备认证方法;图2为本发明实施例I中的第二验证码生成的方法;图3为本发明实施例2提供的一种终端设备认证的方法;图4为本发明实施例3提供的一种终端设备认证的装置。
具体实施例方式为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施例作进一步地详细描述。实施例I参见图1,本发明实施例I提供了一种终端设备认证方法,当终端设备接收到上位机下发的预设类型的带有验证码的指令时,执行以下步骤I至步骤5
具体地,在本实施例中,以修改PIN指令作为例子。当指令的前两个字节与事先约定的特征值相符,则为修改PIN指令。所述终端设备可以为智能卡、USBkey、网络客户端等终端。优选地,在本实施例中,所述终端设备接收到预设类型的指令前还包括接收到上位机发送的生成随机数据串的指令,生成随机数据串缓存在缓存区中,并将随机数据串返回给所述上位机。步骤I :终端设备检查验证条件是否满足。如果是,继续;否则,将事先约定的错误码返回给上位机。所述检查验证条件是否满足具体包括步骤101 :检查接收到的所述指令的长度是否不小于第二预设长度,是则继续,否则不满足验证条件; 优选地,在本实施例中,数据长度以字节为单位,所述第二预设长度为11。步骤102 :验证所述终端设备的缓存区中是否缓存有随机数据串;是则继续,否则不满足条件;优选地,在本实施例中,所述随机数据串的长度预定,与加密算法相关。具体地,例如加密算法分组长度为8个字节,则所述随机数据串相应地为8字节。除此之外,也可为其他的长度,如加密算法分组长度的整数倍等。步骤103 :判断内置PIN码是否被锁定,如果是,则不满足条件;优选地,在本实施例中,步骤103还包括根据指令的预定字段检索到第一存储空间,并判断所述第一存储空间中是否存在PIN码,若不存在,则不满足条件。具体地,在本实施例中,根据所述指令的第三和第四字节进行检索所述第一存储空间。步骤101-步骤103顺序不分先后。步骤2 :根据第一预设长度对所述指令进行解析,得到第一验证码及待验证数据;在本实施例中,具体包括步骤201 :获取所述指令的前四个字节数据得到指令首部,获取所述指令中除前四个字节外的部分得到第一数据;步骤202 :根据第一数据的高位端字节得到第一长度的值;优选地,在本实施例中,根据第一数据的高位端字节得到第一长度可以为判断所述第一数据的第一个字节的值是否为0,是则获取所述第一数据的第二及第三字节数据得到第一长度的值;否则获取所述第一数据的第一字节数据得到第一长度的值。具体地,当第一数据的第一个字节(即所述指令的第5字节)的值为0x00,则将所述第一数据的第二字节作为第一长度的高字节,第三字节作为第一长度的低字节(即所述指令的第六和第七字节),例如所述指令的第六和第七字节分别为0x01和0x02,则所述第一长度的值为0x0102 ;当所述第一数据的第一字节不为0x00时,获取所述第一数据的第一字节的数据作为第一长度的值。除上述得到第一长度的方式外,还可以按照事先约定的方式,获取所述第一数据的第一字节数据或前三个字节数据得到第一长度的值,相应地,当事先约定获取所述第一数据的第一字节数据得到第一长度的值时,若得到第一长度的值为O则向上位机报错;当事先约定获取所述第一数据的前三个字节数据得到第一长度的值时,若得到的第一长度的首字节的值不为O则向上位机报错。进一步地,在本实施例中,得到第一长度的值后还包括检查所述第一长度的值是否大于所述第一预设长度的值。如果不是,则将事先约定的错误码回送给上位机。步骤203 :根据所述第一长度的值,取所述第一数据中所述第一长度对应的字节之后相应字节数上的数据得到第二数据。优选地,在本实施例中若所述第一数据中所述第一长度对应的字节之后的数据的长度小于所述第一长度的值,则将事先约定的错误码回送给上位机; 进一步地,如果从所述第一数据中提取第一长度的数据之后还有剩余数据,则可根据剩余数据判断指令是否符合预定格式。如果不符合,则将事先约定的错误码回送给上位机。具体地,在本实施例中,如果从所述第一数据中提取第一长度的数据之后还有剩余数据,则将事先约定的错误码回送给上位机步骤204 :根据所述第一预设长度,从所述第二数据中提取第一验证码,并根据所述指令首部和所述第二数据生成待验证数据;具体包括步骤204-1 :根据所述第一预设长度的值,从所述第二数据的低位段截取相应字节数上的数据得到所述第一验证码;步骤204-2 :计算所述第二数据中截取后的数据的长度得到第二长度,将第二长 度的值进行编码,将所述指令首部、第二长度的值编码后的数据及所述第二数据截取后的数据组合,得到待验证数据。优选地,所述编码方法具体为判断第二长度的值是否大于255 (可用一个字节表示),是则用三个字节表示所述第二长度的值,否则则用一个字节记录第二长度的值;例如,第二长度为0x0102,则编码后为00 01 02 ;除此之外,也可以用其他编码方式,比如统一用3字节表示长度值等等。例如,所述指令为8420112C00000009010203040506070809,则所述指令首部为8420112C ;则第一数据相应为00000009010203040506070809所述第一长度的值为9 ;所述第二数据相应为010203040506070809 ;所述第一预设长度的值为4为例,则第一验证码为06070809 ;所述第二长度为5;组合得到的所述待验证数据为8420112C050102030405 ;步骤3 :根据所述第一存储空间的PIN码、所述第一预设长度及所述待验证数据生成第二验证码;在本实施例中所述步骤103也可以在本步骤进行。
优选地,在本实施例中,所述生成第二验证码的过程具体为步骤301 :根据预设规则对所述待验证数据进行补位;优选地,在本实施例中,补位方法为在所述待验证数据后追加一个字节,其值为0x80,然后追加0x00直到补位后的数据长度是得到安全数据所用的加密算法分组长度的整数倍为止。例如,所用加密算法算法分组长度为16。相应地,补位后的待验证数据为8420112C 000005010203040580000000 ;
步骤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 :解析所述指令,从中提取第一验证码和待验证数据;所述指令解析的具体方法实施例I已有描述,在此不再赘述。进一步地,在本实施例中,步骤403还包括检查PIN码是否被锁定。如果是,将事先约定的错误码回送给上位机。步骤404 :根据所述待验证数据和内置PIN验证所述第一验证码是否合法,是则认证通过,继续执行步骤405 ;否则报错,将事先约定的错误码回送给上位机;验证第一验证码的具体方法实施例I已有描述,在此不再赘述。优选地,在本实施例中,步骤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,用于将所述命令首部、所述第二数据截取后的数据及其长度组合生成所述待验证数据;
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种终端设备认证的方法,其特征在于,包括 步骤SI :终端设备接收上位机发送的预设类型的指令; 步骤S2 :检查认证条件是否满足,是则执行S3,否则认证失败; 步骤S3 :根据第一预设长度对所述指令进行解析,得到第一验证码及待验证数据;步骤S4 :所述终端设备调用PIN码,将PIN码或对PIN码进行散列运算得到的散列值作为密钥,对所述待验证数据进行处理得到安全数据,根据所述第一预设长度对所述安全数据进行处理得到第二验证码; 步骤S5 :验证所述第一验证码与所述第二验证码是否一致,是则认证通过,继续,否则认证失败; 步骤S6 :所述终端设备执行所述指令。
2.如权利要求I所述的方法,其特征在于,所述步骤SI之前包括 当所述终端设备接收到上位机发送的生成随机数据串的指令时,生成随机数据串缓存在缓存区,并将所述随机数据串返回给所述上位机。
3.如权利要求2所述的方法,其特征在于,所述步骤S2中检查认证条件是否满足具体包括 验证所述指令长度是否不小于第二预设长度,是则继续,否则不满足; 验证所述终端设备的缓存区中是否缓存有所述随机数据串,是则继续,否则不满足;根据所述指令的第三、第四字节数据查找到第一存储空间,判断所述第一存储空间中是否存有所述终端设备的PIN码,是则继续,否则不满足; 验证所述PIN码是否被锁定,是则不满足,否则满足所述认证条件。
4.如权利要求3所述的方法,其特征在于,所述步骤S3具体包括 获取所述指令的前四个字节数据得到指令首部,获取所述指令中除前四个字节外的部分得到第一数据; 判断所述第一数据的第一个字节的值是否为O,是则获取所述第一数据的第二及第三字节数据得到第一长度的值;否则获取所述第一数据的第一字节数据得到第一长度的值;根据所述第一长度的值,取所述第一数据中所述第一长度对应的字节之后相应字节数上的数据得到第二数据; 根据所述第一预设长度的值,从所述第二数据中截取相应字节数上的数据得到所述第一验证码; 将所述命令首部、所述第二数据截取后的数据及其长度组合生成所述待验证数据。
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.如权利要求I所述的方法,其特征在于,在所述步骤S2、步骤S5中认证失败后,还包括 所述终端设备向所述上位机报错,返回事先约定的错误码。
12.如权利要求I所述的方法,其特征在于,在所述步骤SI之后还包括 根据指令中预定比特位的值,判断所述指令中是否包含所述第一验证码,是则执行S2,否则执行S6。
13.如权利要求12所述的方法,其特征在于,当判断所述指令中不包含所述第一验证码时,所述步骤S6之前还包括 判断状态值是否为有效状态,是则继续,否则报错。
14.如权利要求13所述的方法,其特征在于,所述终端设备接收到PIN码验证指令,当验证PIN码合法时,将所述状态值设为有效状态,同时将PIN码重试次数计数器初始化,否贝1J,将所述PIN码重试次数计数器计数一次,并判断所述PIN码重试次数计数器的值是否达到第一预设值,是则将所述PIN码锁定,否则报错,并返回SI。
15.如权利要求14所述的方法,其特征在于,当所述状态值大于第二预设值时,所述状态值为有效状态,否则为无效状态。
16.如权利要求13所述的方法,其特征在于,所述步骤S5之后还包括 当所述第一验证码与所述第二验证码一致时,将所述状态值设置为有效状态,并将所述PIN码重试次数计数器初始化; 当所述第一验证码与所述第二验证码不一致时,将所述状态值设置为无效状态。
17.—种终端设备认证的装置,其特征在于,包括 接收模块,用于接收上位机发送的预设类型的指令; 检查模块用于当所述接收模块接收到预设类型的指令时,检查认证条件是否满足;第一报错模块,用于当所述检查模块检查认证条件不满足时和验证模块验证所述第一验证码与所述第二验证码不一致时报错; 解析模块,用于当所述检查模块检查认证条件满足时,根据第一预设长度对所述接收模块接收到的指令进行解析,得到第一验证码及待验证数据; 生成模块用于调用PIN码,将PIN码或对PIN码进行散列运算得到的散列值作为密钥,对所述待验证数据进行处理生成安全数据,根据所述第一预设长度对所述安全数据进行处理得到第二验证码; 验证模块用于验证所述第一验证码与所述第二验证码是否一致; 执行模块用于在所述验证模块验证所述第一验证码与所述第二验证码一致时执行所述指令。
18.如权利要求17所述的装置,其特征在于,还包括 所述接收模块还用于接收上位机发生的生成随机数据串的指令,生成所述随机数据串缓存在缓存区,并将所述随机数据串返回给所述上位机。
19.如权利要求18所述的装置,其特征在于,所述检查模块包括第一验证单元、第二验证单元、第三验证单元及第四验证单元; 所述第一验证单元,用于验证所述指令长度是否不小于第二预设长度,是则继续,否则不满足; 所述第二验证单元,用于验证所述终端设备的缓存区中是否缓存有随机数据串,是则继续,否则不满足; 所述第三验证单元,用于根据所述指令的第三、第四字节数据查找到第一存储空间,判断所述第一存储空间中是否存有所述终端设备的PIN码,是则继续,否则不满足; 所述第四验证单元,用于验证所述PIN码是否被锁定,是则不满足,否则满足所述认证条件。
20.如权利要求17所述的装置,其特征在于,所述生成模块包括获取单元、判断单元、截取单元、组合单元; 所述获取单元,用于获取所述指令的前四个字节数据得到指令首部,获取所述指令中除前四个字节外的部分得到第一数据; 所述判断单元,用于判断所述第一数据的第一个字节的值是否为0,是则获取所述第一数据的第二及第三字节数据得到第一长度的值;否则获取所述第一数据的第一字节数据得到第一长度的值; 所述截取单元,用于根据所述第一长度的值,取所述第一数据中所述第一长度对应的字节之后相应字节数上的数据得到第二数据;根据所述第一预设长度的值,从所述第二数据中截取相应字节数上的数据得到所述第一验证码 ; 所述组合单元,用于将所述命令首部、所述第二数据截取后的数据及其长度组合生成所述待验证数据。
全文摘要
本发明公开了一种终端设备认证方法,涉及身份认证领域,该方法包括终端设备接收上位机发送的预设类型的指令,检查认证条件是否满足,是则继续,否则认证失败;所述终端设备对所述指令进行解析,得到第一验证码及待校验数据;根据PIN码得到密钥,用所述密钥对所述待验证数据进行处理得到安全数据,从所述安全数据中提取出第二验证码;验证所述第一验证码与所述第二验证码是否一致,是则认证通过,否则认证失败。通过本发明提供的方法,可以实现认证双方在通信数据不涉及风险数据的前提下,完成双方认证,提高了认证过程的安全性。
文档编号H04L9/32GK102761557SQ20121027066
公开日2012年10月31日 申请日期2012年7月31日 优先权日2012年7月31日
发明者于华章, 陆舟 申请人:飞天诚信科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1