CN103312517A - 一种双用途设备共用显示屏和按键的实现方法 - Google Patents
一种双用途设备共用显示屏和按键的实现方法 Download PDFInfo
- Publication number
- CN103312517A CN103312517A CN2013102655624A CN201310265562A CN103312517A CN 103312517 A CN103312517 A CN 103312517A CN 2013102655624 A CN2013102655624 A CN 2013102655624A CN 201310265562 A CN201310265562 A CN 201310265562A CN 103312517 A CN103312517 A CN 103312517A
- Authority
- CN
- China
- Prior art keywords
- execution
- data
- usbkey
- password
- sign
- 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.)
- Granted
Links
Images
Abstract
本发明公开了一种双用途设备共用显示屏和按键的实现方法,属于信息安全领域。所述方法包括动态令牌模块复位后开启全局中断,调用主函数进入主循环流程,初始化系统状态为休眠;当检测到中断后判断中断的类型:若为通信中断则置位通信唤醒标志,复位通信中断标志,若为按键中断则置位按键唤醒标志,复位按键中断标志,若为实时时钟中断则置位实时时钟唤醒标志,复位实时时钟中断标志;当检测到有唤醒标志被置位时判断唤醒标志的类型,若通信唤醒标志被置位则进入通信处理流程,若按键唤醒标志被置位则进入按键处理流程,若实时时钟唤醒标志被置位则进入实时时钟处理流程。本发明的有益效果在于能够实现双用途设备对硬件资源的共享。
Description
技术领域
本发明涉及信息安全领域,尤其涉及一种双用途设备共用显示屏和按键的实现方法。
背景技术
智能密钥设备是一种USB接口的硬件设备,它内置单片机和智能卡芯片,有一定的存储空间,可以存储用户的私钥以及数字证书,利用智能密钥设备内置的公钥算法可以实现对用户身份的认证;动态令牌是生成动态口令的终端,动态口令是一种安全便捷的账号防盗技术,可以有效保护交易和登录的认证安全;为了实现多功能应用,可将智能密钥设备和动态令牌集成在一个产品中,但智能密钥设备和动态令牌作为两个相互独立的设备各自使用不同的按键和显示屏,这会给用户造成使用时的不便。
发明内容
本发明的目的是为了克服已有技术的缺陷,为了解决双用途设备共享硬件资源的问题,提出一种双用途设备共用显示屏和按键的实现方法。
本发明方法是通过下述技术方案实现的:
一种双用途设备共用显示屏和按键的实现方法,其基本实施过程如下:
动态令牌模块复位,开启全局中断,调用主函数进入主循环流程,执行以下步骤:
步骤A:初始化系统状态为休眠,检测到中断后判断中断的类型,若为通信中断则置位通信唤醒标志,复位通信中断标志,执行步骤B;若为按键中断则置位按键唤醒标志,复位按键中断标志,执行步骤B;若为实时时钟中断则置位实时时钟唤醒标志,复位实时时钟中断标志,执行步骤B;
步骤B:检查是否有被置位的唤醒标志,如果有被置位的唤醒标志则判断被置位的唤醒标志的类型,若为所述通信唤醒标志则执行步骤C,若为所述按键唤醒标志则执行步骤D,若为所述实时时钟唤醒标志则执行步骤E,如果在第一预设时间内没有检查到被置位的唤醒标志则返回步骤A;
步骤C:关闭通信中断,接收通信数据,检查所述通信数据的类型,若为USBKey获取动态令牌模块状态命令则检查当前系统状态是否为休眠,是则打开显示屏,修改系统状态为验PIN,向USBKey返回回复数据,打开所述通信中断,复位所述通信唤醒标志,返回步骤B,否则直接向USBKey返回回复数据,打开所述通信中断,复位所述通信唤醒标志,返回步骤B;若不为USBKey获取动态令牌模块状态命令则根据所述通信数据的类型执行相应操作;
步骤D:关闭按键中断,确定当前按键值,若当前键值为第一预设键值且当前系统状态为验PIN则对数据缓冲区中的数据进行验证,若验证通过则修改系统状态为输入挑战码,打开所述按键中断,复位所述按键唤醒标志,清空数据缓冲区,返回步骤B,若验证不通过则打开所述按键中断,复位所述按键唤醒标志,清空数据缓冲区,返回步骤B;若当前按键值为第一预设键值且当前系统状态为输入挑战码则根据时间因子和/或事件因子和/或数据缓冲区中的数据计算挑战应答口令,显示屏显示计算结果,更新所述事件因子,修改系统状态为显示口令,清空所述数据缓冲区,打开所述按键中断,复位所述按键唤醒标志,返回步骤B;否则根据当前系统状态和当前按键值执行相应操作,打开所述按键中断,复位所述按键唤醒标志,返回步骤B;
步骤E:更新时间因子,复位所述实时时钟唤醒标志,返回步骤B。
其中,所述动态令牌模块复位具体包括:判断复位保护标志的值是否等于第一预设值,是则更新复位计数器的计数值,否则初始化微控制单元和随机存储器,将所述复位保护标志的值置为第一预设值,初始化全局变量;
所述接收通信数据具体包括:
步骤1-1:判断第二预设时间内是否接收到数据开始信号,是则执行步骤1-2,否则执行步骤1-4;
步骤1-2:接收数据头,判断数据头是否为预设字节码,若为预设字节码则接收数据长度,判断数据长度是否在预设范围内,若在预设范围内则根据数据长度接收剩余数据,执行步骤1-3,若不在预设范围内则执行步骤1-4,若不为预设字节码则执行步骤1-4;
步骤1-3:根据校验位判断接收到的剩余数据是否正确,是则通信数据接收完毕,否则执行步骤1-4;
步骤1-4:打开所述通信中断,复位所述通信唤醒标志,返回步骤B。
进一步地,所述接收通信数据与检查所述通信数据的类型之间还包括:解密所述通信数据,判断解密是否成功,若解密成功则继续,若解密不成功则向USBKey返回通用的通信错误数据;
所述步骤C中还包括:若所述通信数据为USBKey显示签名数据命令则显示屏显示所述USBKey显示签名数据命令中的签名数据,向USBKey返回回复数据,打开所述通信中断,复位所述通信唤醒标志,返回步骤B;
所述步骤C中还包括:若所述通信数据的为USBKey获取按键命令则将USBKey获取按键标志置位,打开所述通信中断,复位所述通信唤醒标志,返回步骤B;
所述步骤C中还包括:若所述通信数据的为USBKey获取动态口令命令则将USBKey获取动态口令标志置位,打开所述通信中断,复位所述通信唤醒标志,返回步骤B;
所述步骤C中还包括:若所述通信数据的为USBKey验PIN命令则将USBKey验PIN标志置位,打开所述通信中断,复位所述通信唤醒标志,返回步骤B;
所述步骤D具体包括:
步骤2-1:关闭按键中断,确定当前按键值;
步骤2-2:检查当前系统状态,若当前系统状态为验PIN则执行步骤2-3,若当前系统状态为输入挑战码则执行步骤2-9;
步骤2-3:检查当前按键值,若为第三预设键值则执行步骤2-4,若为第四预设键值则执行步骤2-5,若为第一预设键值则执行步骤2-6,否则执行步骤2-14;
步骤2-4:检查数据缓冲区中是否有数据,是则清零数据缓冲区的最高位,显示屏显示验PIN界面以及数据缓冲区中的数据,执行步骤2-14,否则执行步骤2-14;
步骤2-5:存储当前按键值至数据缓冲区,显示牌显示验PIN界面以及数据缓冲区中的数据,执行步骤2-14;
步骤2-6:对数据缓冲区中的数据进行验证,若验证通过则提示验PIN成功,显示屏显示信息界面,修改系统状态为输入挑战码,执行步骤2-7,若验证未通过则提示验PIN失败,执行步骤2-8;
步骤2-7:检查USBKey验PIN标志是否置位,是则向USBKey返回验PIN成功的信息,将所述USBKey验PIN标志复位,清空数据缓冲区,执行步骤2-14,否则清空数据缓冲区,执行步骤2-14;
步骤2-8:检查所述USBKey验PIN标志是否置位,是则向USBKey返回验PIN失败的信息,将所述USBKey验PIN标志复位,清空数据缓冲区,执行步骤2-14,否则清空数据缓冲区,执行步骤2-14;
步骤2-9:检查当前按键值,若为第三预设键值则执行步骤2-10,若为第四预设键值则执行步骤2-11,若为第一预设键值则执行步骤2-12,否则执行步骤2-14;
步骤2-10:检查所述USBKey获取按键标志,若所述USBKey获取按键标志置位则向USBKey返回当前按键值,执行步骤2-14,若所述USBKey获取按键标志未置位则检查数据缓冲区中是否有数据,是则清零数据缓冲区的最高位,显示屏显示信息界面以及数据缓冲区中的数据,执行步骤2-14,否则执行步骤2-14;
步骤2-11:存储当前按键值至数据缓冲区,显示屏显示信息界面以及数据缓冲区中的数据中的数据,执行步骤2-14;
步骤2-12:检查所述USBKey获取按键标志,若所述USBKey获取按键标志置位则向USBKey返回当前按键值,执行步骤2-14,若所述USBKey获取按键标志未置位则根据时间因子和/或事件因子和/或数据缓冲区中的数据计算挑战应答口令,显示屏显示计算结果,更新事件因子,将系统状态修改为显示动态口令,清空数据缓冲区,执行步骤2-13;
步骤2-13:检查所述USBKey获取动态口令标志是否置位,是则向USBKey返回计算得到的挑战应答口令,执行步骤2-14,否则执行步骤2-14;
步骤2-14:打开所述按键中断,复位所述按键唤醒标志,返回步骤B;
其中,所述USBKey验PIN标志的初始态为复位,在接收到USBKey验PIN命令的通信数据时被置位;所述USBKey获取按键标志的初始态为复位,在接收到USBKey获取按键命令的通信数据时被置位;所述USBKey获取动态口令标志的初始态为复位,在接收到USBKey获取动态口令命令的通信数据时被置位;
所述步骤A中还包括:若所述中断的类型为定时器中断则置位定时标志,关闭定时器,复位定时器中断标志,执行步骤B;
所述确定当前键值包括:
步骤3-1:扫描键盘,判断是否有按键被按下,是则执行步骤3-2,否则当前按键值为空;
步骤3-2:判断被按下的按键是否为复用按键,是则执行步骤3-3,否则执行步骤3-8;
步骤3-3:判断本次被按下的按键与上次被按下的按键是否相同,是则执行步骤3-4,否则执行步骤3-5;
步骤3-4:判断所述定时器标志是否置位,是则执行步骤3-5,否则执行步骤3-6;
步骤3-5:更新同一按键被按下次数变量的值为第四预设值,复位所述定时器标志,执行步骤3-7;
步骤3-6:同一按键被按下次数变量的值递增,执行步骤3-7;
步骤3-7:根据同一按键被按下次数变量的值确定当前按键值;
步骤3-8:判断被按下的按键是否为电源键且被按下时间是否超过预设时长,是则当前按键值为第二预设键值,否则当前按键值为空;
或者,所述确定当前键值包括:
步骤3-1':扫描键盘,判断是否有按键被按下,是则执行步骤3-2',否则当前按键值为空;
步骤3-2':判断被按下的按键是否为复用按键,是则执行步骤3-3',否则执行步骤3-8';
步骤3-3':判断本次被按下的按键与上次被按下的按键是否相同,是则记录当前定时器的计数值作为第二定时器计数值,执行步骤3-4',否则记录当前定时器的计数值作为第一定时器计数值,执行步骤3-5';
步骤3-4':计算第二定时器计数值与第一定时器计数值的差值,若所述差值大于第三预设值,是则执行步骤3-5',否则执行步骤3-6';
步骤3-5':更新同一按键被按下次数变量的值为第四预设值,将第二定时器计数值存储为第一定时器计数值,执行步骤3-7';
步骤3-6':同一按键被按下次数变量的值递增,将第二定时器计数值存储为第一定时器计数值,执行步骤3-7';
步骤3-7':根据同一按键被按下次数变量的值确定当前按键值;
步骤3-8':判断被按下的按键是否为电源键且被按下时间是否超过预设时长,是则当前按键值为第二预设键值,否则当前按键值为空;
所述判断被按下的按键是否为电源键且被按下时间是否超过预设时长具体包括:检测到电源键被按下后每隔第三预设时间检测电源键的状态,若电源键依然处于被按下的状态则电源键被按下时间超过预设时长,否则电源键被按下时间不超过预设时长;
或者,所述判断被按下的按键是否为电源键且被按下时间是否超过预设时长具体包括:检测到电源键被按下时记录定时器的计数值,待检测到电源键抬起时再次记录定时器的计数值,计算两次记录的定时器的计数值的差值,若所述差值大于预设时长则电源键被按下时间超过预设时长,否则电源键被按下时间不超过预设时长;
所述当前按键值为第二预设键值时包括:
步骤4-1:检查当前系统状态是否为休眠,是则执行步骤4-3,否则执行步骤4-2;
步骤4-2:关闭显示屏,清空数据缓冲区,修改系统状态为休眠;
步骤4-3:显示屏上电初始化,执行步骤4-4;
步骤4-4:显示验PIN界面,修改系统状态为验PIN;
更近一步地,所述步骤2-2中还包括:若当前系统状态为显示口令,则检查当前键值,若为第一预设键值则显示屏显示提示输入挑战值的信息,将系统状态修改为输入挑战码,执行步骤2-14,若不为第一预设键值则执行步骤2-14;
所述步骤2-5之前还包括:检查数据缓冲区中数据的个数是否小于预设的密码长度,是则执行步骤5-3,否则执行步骤2-14;
所述步骤2-6之前还包括:检查数据缓冲区中数据的个数是否等于预设的密码长度,是则执行步骤5-4,否则执行步骤2-14;
所述步骤2-6中,对数据缓冲区中的数据进行验证具体为:对数据缓冲区中的数据进行哈希运算得到哈希值,判断所述哈希值与预设的密码是否相同,是则验证通过,否则验证未通过;
所述步骤2-6中,当验证通过时还包括清零验PIN失败次数,当验证未通过时还包括验PIN失败次数递增;
所述步骤2-2中还包括:若当前系统状态为修改密码,则执行步骤6-1:
步骤6-1:检查当前按键值,若为第三预设键值则执行步骤6-2,若为第四预设键值则执行步骤6-3,若为第一预设键值则执行步骤6-4,否则执行步骤2-14;
步骤6-2:检查数据缓冲区中是否有数据,是则清零数据缓冲区的最高位,显示屏显示输入新密码界面以及数据缓冲区中的数据,执行步骤2-14,否则执行步骤2-14;
步骤6-3:存储当前按键值至数据缓冲区,显示屏显示输入新密码界面以及数据缓冲区中的数据,执行步骤2-14;
步骤6-4:检查数据缓存区中的数据是否满足预设的密码要求,是则提示修改密码成功,保存新密码,延时第五预设时间后将系统状态修改为输入挑战码,显示屏显示信息界面,清空数据缓冲区,执行步骤2-14,否则清空数据缓冲区,执行步骤2-14;
所述步骤6-2中,显示屏显示输入新密码界面以及数据缓冲区中的数据之前还包括:判断密码设定标志是否置位,是则显示屏显示确认新密码界面以及数据缓冲区中的数据,执行步骤2-14,否则继续执行;
所述步骤6-3中,显示屏显示输入新密码界面以及数据缓冲区中的数据之前还包括:判断密码设定标志是否置位,是则显示屏显示确认新密码界面以及数据缓冲区中的数据,执行步骤2-14,否则继续执行;
所述步骤6-4替换为:检查密码设定标志是否置位,若密码设定标志置位则比较数据缓冲区中的数据和第一密码,若相同则提示修改密码成功,保存第一密码为新密码,延时第五预设时间后将系统状态修改为输入挑战码,显示屏显示信息界面,将密码设定标志复位,清空数据缓冲区,执行步骤2-14,若不相同则提示修改密码失败,将密码设定标志复位,清空数据缓冲区,执行步骤2-14;若密码设定标志未置位则检查数据缓冲区中的数据是否满足预设的密码要求,是则保存数据缓冲区中的数据为第一密码,显示屏显示确认密码界面,将密码设定标志置位,清空数据缓冲区,执行步骤2-14,否则清空数据缓冲区,执行步骤2-14;
当所述数据缓冲区中的数据满足预设的密码要求时,保存数据缓冲区中的数据为第一密码之前还包括:判断数据缓冲区中的数据是否满足预设的弱密码条件,是则提示修改密码失败,清空数据缓冲区,执行步骤2-14,否则继续;
所述更新时间因子具体包括:
步骤7-1:令牌秒计数值递增,判断所述令牌秒计数值是否达到第二预设值,是则执行步骤7-2,否则更新时间因子过程结束;
步骤7-2:重置令牌秒计数值,时间因子递增,更新时间因子过程结束;
所述步骤E中还包括校准时间因子,所述校准时间因子具体包括:
步骤8-1:校准计数器的值递增,在预定时间点上判断所述校准计数器的值是否小于预设校准值,是则校准时间因子过程结束,否则更新所述校准计数器的值为其当前值减去预设校准值,执行步骤8-2;
步骤8-2:检查校准方向,若为第一方向则所述令牌秒计数值递减,校准时间因子过程结束;若为第二方向则所述令牌秒计数值递增,校准时间因子过程结束;
所述步骤E中还包括对动态口令进行时效性检查,所述对动态口令进行时效性检查具体包括:
步骤9-1:检查当前系统状态是否为显示口令,是则显示口令时间递增,执行步骤9-2;
步骤9-2:判断所述显示口令时间是否达到预设时长,是则执行步骤9-3,否则更新时间条,时效性检查过程结束;
步骤9-3:修改系统状态为输入挑战码,时效性检查过程结束;
所述步骤E中还包括自动关机检查,所述自动关机检查具体包括:判断是否到达自动关机时间,是则清零数据缓冲区,关闭显示屏,将系统状态修改为休眠,自动关机检查过程结束,否则自动关机检查过程结束;其中,所述自动关机时间在每次修改系统状态为休眠时被重置为初始值;
所述步骤E中还包括连接检查,所述连接检查具体包括:
步骤10-1:检查USB电源线上的电压,若为高电压则执行步骤10-2,若为低电压则执行步骤10-3;
步骤10-2:检查USB状态,若为第一状态则将USB状态修改为第二状态,打开显示屏,显示屏显示请输入密码的提示信息,将系统状态修改为验PIN,连接检查过程结束,否则连接检查过程结束;
步骤10-3:检查USB状态,若为第一状态则继续执行,否则将USB状态修改为第一状态,清零数据缓冲区,关闭显示屏,将系统状态修改为休眠;
所述步骤E中还包括低电压检查,所述低电压检查具体包括:检查电池电压是否低于预设电压,是则将电池低电压标志置位,低电压检查过程结束,否则低电压检查过程结束;
所述步骤4-3中还包括:检查所述低电压标志是否置位,是则显示屏显示低电提示信息,延时第四预设时间后执行步骤4-4,否则直接执行步骤4-4;
所述步骤E中还包括防拆检查,所述防拆检查具体包括:检查防拆开关是否弹开,是则将防拆标志置位,清除令牌的密钥,防拆检查过程结束,否则防拆检查过程结束;
所述步骤4-3中还包括:检查所述防拆标志是否置位,是则显示屏显示自毁提示信息,动态令牌模块自毁,否则执行步骤4-4;
所述步骤E中还包括通信超时检查,所述通信超时检查具体包括:检查是否有置位的USBKey通信标志,是则判断USBKey通信是否超时,若超时则将置位的USBKey通信标志复位,向USBKey返回超时的提示信息,通信超时检查过程结束,否则通信超时检查过程结束;其中,所述USBKey通信标志包括:USBKey验PIN标志、USBKey获取按键标志和USBKey获取动态口令标志;所述USBKey验PIN标志的初始态为复位,在接收到USBKey验PIN命令的通信数据时被置位;所述USBKey获取按键标志的初始态为复位,在接收到USBKey获取按键命令的通信数据时被置位;所述USBKey获取动态口令标志的初始态为复位,在接收到USBKey获取动态口令命令的通信数据时被置位。
本发明方法的有益效果在于能够实现双用途设备对硬件资源的共享,实现同一键盘控制双用途设备中不同的功能组成部分,以及双用途设备中不同的功能组成部分可以共用同一显示屏,提升了双用途设备在使用时的方便性。
附图说明
为了更清楚的说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种双用途设备共用显示屏和按键的实现方法的主循环流程图;
图2为图1中通信处理流程图;
图3为图1中按键处理流程图;
图4为图1中RTC处理流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供一种双用途设备共用显示屏和按键的实现方法,本发明实施例中所述的双用途设备包含动态令牌模块和USBKey(智能密钥模块)两部分,所述动态令牌模块和所述USBKey在物理上通过接口进行连接。当所述双用途设备中的动态令牌模块受到上电、接收到电磁干扰或供电电源不稳定等触发后进入复位启动流程,所述复位启动流程具体包括:
步骤101:判断复位保护标志的值是否等于第一预设值,是则执行步骤103,否则执行步骤102;
具体地,判断复位保护标志的值是否等于0x5AA5;
进一步地,当所述复位保护标志的值等于第一预设值时还包括更新复位计数器,然后再执行步骤103;
具体地,更新复位计数器的计数值为其当前值加1;
步骤102:初始化MCU(微控制单元)和RAM(随机存储器),将所述复位保护标志的值置为第一预设值,初始化全局变量,执行步骤103;
具体地,在本实施例中,第一预设值为0x5AA5;
步骤103:开启全局中断,调用主函数进入主循环流程;
参见图1,主循环流程具体包括:
步骤201:修改系统状态为休眠,检测到中断后执行步骤202;
步骤202:判断中断的类型,若为通信中断则调用通信中断函数进入通信中断处理流程,执行步骤203;若为按键中断则调用按键中断函数进入按键中断处理流程,执行步骤204;若为RTC(实时时钟)中断则调用RTC中断函数进入RTC中断处理流程,执行步骤205;
优选地,步骤202中还包括:若为定时器中断则调用定时器中断函数进入定时器中断处理流程;
所述定时器中断处理流程可具体包括:置位定时标志,复位定时器中断标志,中断返回,执行步骤206;
步骤203:置位通信唤醒标志,复位通信中断标志,中断返回,执行步骤206;
步骤204:置位按键唤醒标志,复位按键中断标志,中断返回,执行步骤206;
步骤205:置位RTC唤醒标志,复位RTC中断标志,中断返回,执行步骤206;
步骤206:检查是否有被置位的唤醒标志,若有被置位的唤醒标志则执行步骤207,若第一预设时间内没有检查到被置位的唤醒标志则返回步骤201;
步骤207:判断被置位的唤醒标志的类型,若通信唤醒标志被置位则执行步骤208,若按键唤醒标志被置位则执行步骤209,若RTC唤醒标志被置位则执行步骤210;
步骤208:进入通信处理流程,待通信处理流程结束后返回步骤206;
步骤209:进入按键处理流程,待按键处理流程结束后返回步骤206;
步骤210:进入RTC处理流程,待处理流程结束后返回步骤206。
具体地,参见图2,通信处理流程包括:
步骤301:关闭通信中断,等待接收数据开始信号;
步骤302:判断第二预设时间内是否接收到数据开始信号,是则执行步骤303,否则执行步骤317;
具体地,在本实施例中,所述数据开始信号为两个字节数据0x00 0x00,用于标识通信数据的开始;
步骤303:接收数据头,判断数据头是否为预设字节码,是则执行步骤304,否则执行步骤317;
具体地,预设字节码为0x68,当所述数据头为0x68时表示动态令牌模块接收到的通信数据为USBKey发送的命令;
步骤304:接收数据长度,判断数据长度是否在预设范围内,是则执行305,否则执行步骤317;
具体地,数据长度为1个字节数据,预设范围为0x02至0x32;
步骤305:根据数据长度接收剩余数据;
具体地,所述剩余数据中包括:指令代码、数据、本次通信加密变量以及校验位;
步骤306:根据校验位判断接收到的数据是否正确,是则执行步骤307,否则执行步骤317;
步骤307:根据指令代码判断接收到的通信数据的类型,若为工装通信命令则执行步骤308,若为USBKey显示签名数据命令则执行步骤309,若为USBKey获取按键命令则执行步骤310,若为USBKey获取动态令牌模块状态命令则执行步骤311,若为USBKey获取动态口令命令则执行步骤315,若为USBKey验PIN命令则执行步骤316,若为其他类型命令则执行步骤317;
步骤308:根据所述工装通信命令执行相应操作,执行步骤317;
步骤309:显示屏显示命令中的签名数据,向USBKey返回回复数据,执行步骤317;
优选地,步骤309之前还包括:
步骤309-1:解密所述USBKey显示签名数据命令;
具体地,USBKey向令牌发送命令前,生成随机数,用第一通信密钥对所述随机数进行计算得到第一附加数据,用第二通信密钥对所述随机数进行计算得到第二附加数据,将第一附加数据和第二附加数据附在命令中,令牌接收到命令后用第三通信密钥对命令中的第一附加数据进行计算得到第一结果,用第四通信密钥对命令中的第二附加数据进行计算得到第二结果;
步骤309-2:判断是否解密成功,是则保存命令中的随机数到RAM中,执行步骤309,否则向USBKey返回通用的通信错误数据,执行步骤317;
具体地,当第一结果等于第二结果时,解密成功,否则解密不成功;所述向USBKey返回通信错误数据具体包括:用第五通信密钥对保存在RAM中的随机数进行计算,将计算结果作为附加数据附在通信错误数据中一同返回给USBKey;
相应地,所述向USBKey返回回复数据具体包括:用第五通信密钥对保存在RAM中的随机数进行计算,将计算结果作为附加数据附在回复数据中一同返回给USBKey;
步骤310:将USBKey获取按键标志置位,执行步骤317;
优选地,步骤310之前还包括:
步骤310-1:解密所述USBKey获取按键命令;
步骤310-2:判断解密是否成功,是则保存命令中的随机数到RAM中,执行步骤310,否则向USBKey返回通用的通信错误数据,执行步骤317;
步骤311:检查当前系统状态是否为休眠,是则执行步骤312,否则执行步骤313;
优选地,步骤311之前还包括:
步骤311-1:解密所述USBKey获取动态令牌模块状态命令;
步骤311-2:判断解密是否成功,是则保存命令中的随机数到RAM中,执行步骤311,否则向USBKey返回通用的通信错误数据,执行步骤317;
步骤312:打开显示屏,显示屏显示请输入密码的提示信息,将系统状态修改为验PIN,执行步骤314;
步骤313:重置自动关机时间,执行步骤314;
步骤314:向USBKey返回回复数据,执行步骤317;
步骤315:将USBKey获取动态口令标志置位,执行步骤317;
优选地,步骤315之前还包括:
步骤315-1:解密所述USBKey获取动态口令命令;
步骤315-2:判断解密是否成功,是则保存命令中的随机数到RAM中,执行步骤315,否则向USBKey返回通用的通信错误数据,执行步骤317;
步骤316:将USBKey验PIN标志置位,执行步骤317;
优选地,步骤316之前还包括:
步骤316-1:解密所述USBKey验PIN命令;
步骤316-2:判断解密是否成功,是则保存命令中的随机数到RAM中,执行步骤316,否则向USBKey返回通用的通信错误数据,执行步骤317;
步骤317:打开通信中断,复位通信唤醒标志,通信处理流程结束;
具体地,参见图3,按键处理流程包括:
步骤401:关闭按键中断,扫描键盘;
步骤402:判断是否有按键被按下,是则执行步骤403,否则当前按键值为空,执行步骤421;
步骤403:判断被按下的按键是否为复用按键,是则执行步骤404,否则执行步骤409;
步骤404:判断本次被按下的按键与上次被按下的按键是否相同,是则执行步骤405,否则执行步骤406;
步骤405:判断本次按键被按下的时刻与上次按键被按下的时刻的间隔是否超过预设时长,是则执行步骤406,否则执行步骤407;
具体地,所述本次按键被按下的时刻与上次按键被按下的时刻的间隔是否超过预设时长包括:检查定时标志,若定时标志置位则本次按键被按下的时刻与上次按键被按下的时刻的间隔超过预设时长,复位定时标志,若定时标志未置位则本次按键被按下的时刻与上次按键被按下的时刻的间隔未超过预设时长;
或者包括:计算第二定时器计数值与第一定时器计数值的差值,若所述差值大于第三预设值则本次按键被按下的时刻与上次按键被按下的时刻的间隔超过预设时长,若所述差值不大于第三预设值则本次按键被按下的时刻与上次按键被按下的时刻的间隔不超过预设时长;相应地,步骤404中还包括:当本次被按下的按键与上次被按下的按键相同时记录当前定时器的计数值作为第二定时器计数值,当本次被按下的按键与上次被按下的按键不相同时记录当前定时器的计数值作为第一定时器计数值;步骤406中还包括:将第二定时器的计数值存储为第一定时器的计数值;步骤407中还包括:将第二定时器的计数值存储为第一定时器的计数值;
步骤406:更新同一按键被按下次数变量的值为第四预设值,执行步骤409;
具体地,在本实施例中,第四预设值为1;
步骤407:同一按键被按下次数变量的值递增;
具体地,递增步长为1;
步骤408:根据同一按键被按下次数变量的值确定当前按键值,执行步骤409;
步骤409:判断被按下的按键是否为电源键且被按下时间超过预设时长,是则当前按键值为第二预设键值,执行步骤410,否则执行步骤416;
具体地,在本实施例中,第二预设键值为“开/关机”;
判断电源键被按下时间是否超过预设时长包括:检测到电源键被按下后每隔第三预设时间检测电源键的状态,若电源键依然处于被按下的状态则电源键被按下时间超过预设时长,否则电源键被按下时间不超过预设时长;
或者包括:检测到电源键被按下时记录定时器的计数值,待检测到电源键抬起时记录定时器的计数值,计算两次记录的定时器的计数值的差值,若大于预设时长则电源键被按下时间超过预设时长,否则电源键被按下时间不超过预设时长;
步骤410:检查当前系统状态是否为休眠,是则执行步骤412,否则执行步骤411;
步骤411:关闭显示屏,清空数据缓冲区,复位USBKey通信标志位,修改系统状态为休眠,执行步骤421;
其中,所述USBKey通信标志位包括:USBKey获取按键标志、USBKey获取动态口令标志和USBKey验PIN标志
步骤412:显示屏上电初始化,重置自动关机时间;
步骤413:检查防拆标志是否置位,是则显示屏显示自毁提示信息,执行步骤421,否则执行步骤414;
步骤414:检查低电标志是否置位,是则显示屏显示低电提示信息,延时第四预设时间后执行步骤415,否则直接执行步骤415;
步骤415:显示屏显示验PIN界面,修改系统状态为验PIN,执行步骤421;
步骤416:检查当前系统状态,若为显示口令则执行步骤417,若为验PIN则执行步骤418,若为修改密码则执行步骤419,若为输入挑战码则执行步骤420,否则执行相应操作后,执行步骤421;
具体的,所述相应操作包括激活、解锁等;
步骤417:进入生成口令流程,待生成口令流程结束后执行步骤421;
具体地,调用生成口令函数进入生成口令流程,所述生成口令流程包括:检查当前按键值,若为第一预设键值则显示屏显示提示输入挑战值的信息,将系统状态修改为输入挑战码,生成口令流程结束,若不为第一预设键值则退出生成口令流程,执行步骤421;
具体地,在本实施例中,第一预设键值为“OK”;
步骤418:进入验PIN流程,待验PIN流程结束后执行步骤421;
具体地,调用验PIN函数进入验PIN流程,所述验PIN流程包括:
步骤418-1:检查当前按键值,若为第三预设键值则执行步骤418-2,若为第四预设键值则执行步骤418-3,若为第一预设键值则执行步骤418-4,否则退出验PIN流程;
具体地,在本实施例中,第三预设键值为“删除”,第四预设键值为“数字”或“字母”;
步骤418-2:检查数据缓冲区中是否有数据,是则清零数据缓冲区的最高位,显示屏显示验PIN界面以及数据缓冲区中的数据,退出验PIN流程,否则直接退出验PIN流程;
步骤418-3:存储当前按键值至数据缓冲区,显示屏显示验PIN界面以及数据缓冲区中的数据,退出验PIN流程;
进一步地,步骤418-3之前还可以包括:检查数据缓冲区中数据的个数是否小于预设的密码长度,是则执行步骤418-3,否则退出验PIN流程;
步骤418-4:对数据缓冲区中的数据进行验证,若验证通过则提示验PIN成功,显示屏显示信息界面,修改系统状态为输入挑战码,执行步骤418-5,若验证未通过则提示验PIN失败,执行步骤418-6;
具体地,所述对数据缓冲区中的数据进行验证具体为:对数据缓冲区中的数据进行哈希运算得到哈希值,判断所述哈希值与预设的密码是否相同,是则验证通过,否则验证未通过;
进一步地,步骤418-4之前还包括:检查数据缓冲区中数据的个数是否等于预设的密码长度,是则执行步骤418-4,否则退出验PIN流程;
当验证未通过时还包括:验PIN失败次数加1,相应地,当验证通过时还包括将验PIN失败次数清零;
步骤418-5:检查USBKey验PIN标志是否置位,是则向USBKey返回验PIN成功的信息,将USBKey验PIN标志复位,清空数据缓冲区,退出验PIN流程;否则直接清空数据缓冲区,退出验PIN流程;
优选地,在本实施例中,所述向USBKey返回验PIN成功的信息具体包括:用第五通信密钥对从验PIN命令中得到的随机数进行计算,将计算结果附在验PIN成功的信息中一同回复给USBKey;
步骤418-6:检查USBKey验PIN标志是否置位,是则向USBKey返回验PIN失败的信息,将USBKey验PIN标志复位,清空数据缓冲区,退出验PIN流程;否则直接清空数据缓冲区,退出验PIN流程;
优选地,在本实施例中,所述向USBKey返回验PIN失败的信息具体包括:用第五通信密钥对从验PIN命令中得到的随机数进行计算,将计算结果附在验PIN失败的信息中一同回复给USBKey;
进一步地,当检查到USBKey验PIN标识未置位时还包括:检查验PIN失败次数,当验PIN次数等于预设次数时显示屏显示令牌锁定界面;
步骤419:进入修改密码流程,待修改密码流程结束后执行步骤421;
具体地,调用修改密码函数进入修改密码流程,所述修改密码流程包括:
步骤419-1:检查当前按键值,若为第三预设键值则执行步骤419-2,若为第四预设键值则执行步骤419-3,若为第一预设键值则执行步骤419-4,否则退出修改密码流程;
步骤419-2:检查数据缓冲区中是否有数据,是则清零数据缓冲区的最高位,显示屏显示输入新密码界面以及数据缓冲区中的数据,退出修改密码流程,否则直接退出修改密码流程;
进一步地,所述显示屏显示输入新密码界面以及数据缓冲区中的数据之前还包括判断密码设定标志,且当密码设定标志置位时显示屏显示确认新密码界面以及数据缓冲区中的数据,当密码设定标志未置位时显示屏显示输入新密码界面以及数据缓冲区中的数据;
步骤419-3:存储当前按键值至数据缓冲区,显示屏显示输入新密码界面以及数据缓冲区中的数据,退出修改密码流程;
进一步地,所述显示屏显示输入新密码界面以及数据缓冲区中的数据之前还包括判断密码设定标志,且当密码设定标志置位时显示屏显示确认新密码界面以及数据缓冲区中的数据,当密码设定标志未置位时显示屏显示输入新密码界面以及数据缓冲区中的数据;
步骤419-4:检查数据缓存区中的数据是否满足预设的密码要求,是则提示修改密码成功,保存新密码,延时第五预设时间后将系统状态修改为输入挑战码,显示屏显示信息界面,清空数据缓冲区,退出修改密码流程;否则直接清空数据缓冲区,退出修改密码流程;
优选地,在本实施例中,所述保存新密码为:对数据缓冲区中的数据进行哈希运算得到哈希值,将所述哈希值存储为新密码;
进一步地,步骤419-4可替换为:检查密码设定标志,若密码设定标志置位则比较数据缓存区中的数据和第一密码,若相同则提示修改密码成功,保存第一密码为新密码,延时第五预设时间后将系统状态修改为输入挑战码,显示屏显示信息界面,将密码设定标志复位,清空数据缓冲区,退出修改密码流程,若不相同则提示修改密码失败,将密码设定标志复位,清空数据缓冲区,退出修改密码流程;若密码设定标志未置位则检查数据缓冲区中的数据是否满足预设的密码要求,是则保存数据缓冲区中的数据为第一密码,显示屏显示确认密码界面,将密码设定标志置位,清空数据缓冲区,退出修改密码流程;否则直接清空数据缓冲区,退出修改密码流程;
更进一步地,当数据缓冲区中的数据满足预设的密码要求时还包括:判断数据缓冲区中的数据是否满足预设的弱密码条件,是则提示修改密码失败,清空数据缓冲区,退出修改密码流程,否则继续执行;
步骤420:进入挑战应答流程,待挑战应答流程结束后执行步骤421;
具体地,调用挑战应答函数进入挑战应答流程,所述挑战应答流程包括:
步骤420-1:检查当前按键值,若为第三预设键值则执行步骤420-2,若为第四预设键值则执行步骤420-3,若为第一预设键值则执行步骤420-4,否则退出挑战应答流程;
步骤420-2:检查USBKey获取按键标志,若USBKey获取按键标志置位则向USBKey返回当前按键值,退出挑战应答流程;若USBKey获取按键标志未置位则检查数据缓冲区中是否有数据,是则清零数据缓冲区的最高位,显示屏显示信息界面以及数据缓冲区中的数据,退出挑战应答流程,否则直接退出挑战应答流程;
优选地,在本实施例中,所述向USBKey返回当前按键值具体包括:用第五通信密码对从获取按键命令中得到的随机数进行计算,将计算结果附在当前按键值中一起回复给USBKey;
步骤420-3:存储当前按键值至数据缓冲区,显示屏显示信息界面以及数据缓冲区中的数据,退出挑战应答流程;
步骤420-4:检查USBKey获取按键标志,若USBKey获取按键标志置位则向USBKey返回当前按键值,退出挑战应答流程;若USBKey获取按键标志未置位则根据时间因子和/或事件因子和/或数据缓冲区中的数据计算挑战应答口令,显示屏显示计算结果,更新事件因子,将系统状态标志修改为显示口令,清空数据缓冲区,执行步骤420-5;
优选地,在本实施例中,所述向USBKey返回当前按键值具体包括:用第五通信密码对从获取按键命令中得到的随机数进行计算,将计算结果附在当前按键值中一同回复给USBKey;
进一步地,所述根据数据缓冲区中的数据和事件因子计算挑战应答口令之前还包括判断数据缓冲区中是否有数据,且当数据缓冲区中没有数据时直接退出挑战应答流程,当数据缓冲区中有数据时继续执行;
步骤420-5:检查USBKey获取动态口令标志是否置位,是则向USBKey返回计算得到的挑战应答口令,退出挑战应答流程,否则直接退出挑战应答流程;
优选地,在本实施例中,所述向USBKey返回计算得到的挑战应答口令具体包括:用第五通信密钥对从获取动态口令命令中得到的随机数进行计算,将计算结果附在挑战应答口令中一同回复给USBKey;
优选地,步骤420-1中还包括:若为第五预设键值则检查数据缓冲区中是否有数据,是则显示屏显示信息界面以及数据缓冲区中的数据,退出挑战应答流程,否则修改系统状态为修改密码,退出挑战应答流程;其中,在本实施例中,第五预设键值为“修改密码”,且当删除键被按下超过预设时长时当前键值为“修改密码”;
步骤421:打开按键中断,复位按键唤醒标志,按键处理流程结束;
进一步地,为克服一屏显示不完数据缓冲区中的全部数据,上述按键处理流程还包括:若当前按键值为“左移”则显示屏显示数据缓冲区中更高位的数据,若当前按键值为“右移”则显示屏显示数据缓冲区中更低位的数据;
具体地,参见图4,RTC处理流程包括:
步骤501:令牌秒计数值递增,判断令牌秒计数值是否达到第二预设值,是则执行步骤502,否则执行步骤503;
具体地,本步骤中,递增步长为1,第二预设值为60;
步骤502:重置令牌秒计数值,时间因子递增,执行步骤503;
具体地,本步骤中,重置令牌秒计数值为0,递增步长为1;
优选地,在本实施例中,步骤502中还包括重置事件因子;
步骤503:将RTC唤醒标志复位,RTC处理流程结束。
优选地,在本实施例中,所述RTC处理流程中还包括:
步骤504:校准计数器的值递增,判断是否到达预设时间点,是则执行步骤505,否则执行步骤508;
优选地,在本实施例中,所述预设时间点为令牌秒计数值等于15时;
步骤505:根据校准计数器的值和预设校准值判断是否满足校准条件,是则执行步骤506,否则执行步骤508;
具体地,所述预设校准值由工装确定之后存储在动态令牌模块中;
步骤506:更新校准计数器的值;
具体地,更新校准计数器的值为其当前值减去预设校准值;
步骤507:检查校准方向,若为第一方向则令牌秒计数值递减,执行步骤508;若为第二方向则令牌秒计数值递增,执行步骤508;
具体地,本步骤中,递减步长和递增步长均为1;
优选地,在本实施例中,校准计数器的值与预设校准值均为三个字节数据,所述校准条件为校准计数器的值除最高位以外的数据的值不小于预设校准值,检查校准方向具体为判断校准计数器的值的最高位,若为1则校准方向为第一方向,若为0则校准方向为第二方向;
步骤508:将RTC唤醒标志复位,RTC处理流程结束。
优选地,在本实施例中,所述RTC处理流程中还包括:
步骤509:判断系统状态是否为显示口令,是则执行步骤510,否则执行步骤512;
步骤510:显示口令时间递增,检查显示动态口令时间是否达到预设时长,是则执行步骤511,否则更新时间条,执行步骤512;
步骤511:将系统状态修改为输入挑战码,显示屏显示请输入挑战码的提示信息,执行步骤512;
步骤512:将RTC唤醒标志复位,RTC处理流程结束。
优选地,在本实施例中,步骤501之前还包括:
步骤501-1:判断自动关机时间是否等于0,是则执行步骤501-3;否则执行步骤501-2;
步骤501-2:自动关机时间递减,判断自动关机时间是否等于0,是则执行步骤501-3,否则执行步骤501;
具体地,本步骤中,递减步长为1;
步骤501-3:清零数据缓冲区,复位USBKey通信标志,关闭显示屏,将系统状态修改为关机;
步骤501之前还可以包括:
步骤501-4:检查USB电源线上的电压,若为高电压则执行步骤501-5,若为低电压则执行步骤501-7;
步骤501-5:检查USB状态,若为第一状态则执行步骤501-6,若为其他状态则执行步骤504;
优选地,第一状态为脱机状态;
步骤501-6:将USB状态修改为第二状态,打开显示屏,显示屏显示请输入密码的提示信息,将系统状态修改为验PIN,重置自动关机时间,执行步骤504;
优选地,第二状态为联机状态;
步骤501-7:检查USB状态,若为第一状态则执行步骤501,若为其他状态则执行步骤501-8;
步骤501-8:将USB状态修改为第一状态,清零数据缓冲区,复位USBKey通信标志,关闭显示屏,将系统状态修改为关机;
步骤501之前还可以包括:
步骤501-9:检查电池电压是否低于预设电压,是则将电池低电压标志置位,执行步骤501,否则直接执行步骤501;
步骤501之前还可以包括:
步骤501-10:检查防拆开关是否弹开,是则将防拆标志置位,清除令牌的密钥,执行步骤501,否则直接执行步骤501;
步骤501之前还可以包括:
步骤501-11:检查是否有置位的USBKey通信标志,是则执行步骤501-12,否则执行步骤501;
步骤501-12:USBKey通信计时变量的值递增,判断USBKey通信计时变量的值是否达到第五预设值,是则执行步骤501-13,否则执行步骤501;
具体地,本步骤中,第五预设值为60,递增步长为1;
步骤501-13:将置位的USBKey通信标志复位,向USBKey返回超时的提示信息,执行步骤501。
以上所述的实施例只是本发明较优选的具体实施方式,本领域的技术人员在本发明技术方案范围内进行的通常变化和替换都应包含在本发明的保护范围内。
Claims (27)
1.一种双用途设备共用显示屏和按键的实现方法,其特征在于,包括动态令牌模块复位,开启全局中断,调用主函数进入主循环流程,执行以下步骤:
步骤A:初始化系统状态为休眠,检测到中断后判断中断的类型,若为通信中断则置位通信唤醒标志,复位通信中断标志,执行步骤B;若为按键中断则置位按键唤醒标志,复位按键中断标志,执行步骤B;若为实时时钟中断则置位实时时钟唤醒标志,复位实时时钟中断标志,执行步骤B;
步骤B:检查是否有被置位的唤醒标志,如果有被置位的唤醒标志则判断被置位的唤醒标志的类型,若为所述通信唤醒标志则执行步骤C,若为所述按键唤醒标志则执行步骤D,若为所述实时时钟唤醒标志则执行步骤E,如果在第一预设时间内没有检查到被置位的唤醒标志则返回步骤A;
步骤C:关闭通信中断,接收通信数据,检查所述通信数据的类型,若为USBKey获取动态令牌模块状态命令则检查当前系统状态是否为休眠,是则打开显示屏,修改系统状态为验PIN,向USBKey返回回复数据,打开所述通信中断,复位所述通信唤醒标志,返回步骤B,否则直接向USBKey返回回复数据,打开所述通信中断,复位所述通信唤醒标志,返回步骤B;若不为USBKey获取动态令牌模块状态命令则根据所述通信数据的类型执行相应操作;
步骤D:关闭按键中断,确定当前按键值,若当前键值为第一预设键值且当前系统状态为验PIN则对数据缓冲区中的数据进行验证,若验证通过则修改系统状态为输入挑战码,打开所述按键中断,复位所述按键唤醒标志,清空数据缓冲区,返回步骤B,若验证不通过则打开所述按键中断,复位所述按键唤醒标志,清空数据缓冲区,返回步骤B;若当前按键值为第一预设键值且当前系统状态为输入挑战码则根据时间因子和/或事件因子和/或数据缓冲区中的数据计算挑战应答口令,显示屏显示计算结果,更新所述事件因子,修改系统状态为显示口令,清空所述数据缓冲区,打开所述按键中断,复位所述按键唤醒标志,返回步骤B;否则根据当前系统状态和当前按键值执行相应操作,打开所述按键中断,复位所述按键唤醒标志,返回步骤B;
步骤E:更新时间因子,复位所述实时时钟唤醒标志,返回步骤B。
2.如权利要求1所述的方法,其特征在于,所述动态令牌模块复位具体包括:判断复位保护标志的值是否等于第一预设值,是则更新复位计数器的计数值,否则初始化微控制单元和随机存储器,将所述复位保护标志的值置为第一预设值,初始化全局变量。
3.如权利要求1所述的方法,其特征在于,所述接收通信数据具体包括:
步骤1-1:判断第二预设时间内是否接收到数据开始信号,是则执行步骤1-2,否则执行步骤1-4;
步骤1-2:接收数据头,判断数据头是否为预设字节码,若为预设字节码则接收数据长度,判断数据长度是否在预设范围内,若在预设范围内则根据数据长度接收剩余数据,执行步骤1-3,若不在预设范围内则执行步骤1-4,若不为预设字节码则执行步骤1-4;
步骤1-3:根据校验位判断接收到的剩余数据是否正确,是则通信数据接收完毕,否则执行步骤1-4;
步骤1-4:打开所述通信中断,复位所述通信唤醒标志,返回步骤B。
4.如权利要求1所述的方法,其特征在于,所述接收通信数据与检查所述通信数据的类型之间还包括:解密所述通信数据,判断解密是否成功,若解密成功则继续,若解密不成功则向USBKey返回通用的通信错误数据。
5.如权利要求1所述的方法,其特征在于,所述步骤C中还包括:若所述通信数据为USBKey显示签名数据命令则显示屏显示所述USBKey显示签名数据命令中的签名数据,向USBKey返回回复数据,打开所述通信中断,复位所述通信唤醒标志,返回步骤B。
6.如权利要求1所述的方法,其特征在于,所述步骤C中还包括:若所述通信数据的为USBKey获取按键命令则将USBKey获取按键标志置位,打开所述通信中断,复位所述通信唤醒标志,返回步骤B。
7.如权利要求1所述的方法,其特征在于,所述步骤C中还包括:若所述通信数据的为USBKey获取动态口令命令则将USBKey获取动态口令标志置位,打开所述通信中断,复位所述通信唤醒标志,返回步骤B。
8.如权利要求1所述的方法,其特征在于,所述步骤C中还包括:若所述通信数据的为USBKey验PIN命令则将USBKey验PIN标志置位,打开所述通信中断,复位所述通信唤醒标志,返回步骤B。
9.如权利要求1所述的方法,其特征在于,所述步骤D具体包括:
步骤2-1:关闭按键中断,确定当前按键值;
步骤2-2:检查当前系统状态,若当前系统状态为验PIN则执行步骤2-3,若当前系统状态为输入挑战码则执行步骤2-9;
步骤2-3:检查当前按键值,若为第三预设键值则执行步骤2-4,若为第四预设键值则执行步骤2-5,若为第一预设键值则执行步骤2-6,否则执行步骤2-14;
步骤2-4:检查数据缓冲区中是否有数据,是则清零数据缓冲区的最高位,显示屏显示验PIN界面以及数据缓冲区中的数据,执行步骤2-14,否则执行步骤2-14;
步骤2-5:存储当前按键值至数据缓冲区,显示牌显示验PIN界面以及数据缓冲区中的数据,执行步骤2-14;
步骤2-6:对数据缓冲区中的数据进行验证,若验证通过则提示验PIN成功,显示屏显示信息界面,修改系统状态为输入挑战码,执行步骤2-7,若验证未通过则提示验PIN失败,执行步骤2-8;
步骤2-7:检查USBKey验PIN标志是否置位,是则向USBKey返回验PIN成功的信息,将所述USBKey验PIN标志复位,清空数据缓冲区,执行步骤2-14,否则清空数据缓冲区,执行步骤2-14;
步骤2-8:检查所述USBKey验PIN标志是否置位,是则向USBKey返回验PIN失败的信息,将所述USBKey验PIN标志复位,清空数据缓冲区,执行步骤2-14,否则清空数据缓冲区,执行步骤2-14;
步骤2-9:检查当前按键值,若为第三预设键值则执行步骤2-10,若为第四预设键值则执行步骤2-11,若为第一预设键值则执行步骤2-12,否则执行步骤2-14;
步骤2-10:检查所述USBKey获取按键标志,若所述USBKey获取按键标志置位则向USBKey返回当前按键值,执行步骤2-14,若所述USBKey获取按键标志未置位则检查数据缓冲区中是否有数据,是则清零数据缓冲区的最高位,显示屏显示信息界面以及数据缓冲区中的数据,执行步骤2-14,否则执行步骤2-14;
步骤2-11:存储当前按键值至数据缓冲区,显示屏显示信息界面以及数据缓冲区中的数据中的数据,执行步骤2-14;
步骤2-12:检查所述USBKey获取按键标志,若所述USBKey获取按键标志置位则向USBKey返回当前按键值,执行步骤2-14,若所述USBKey获取按键标志未置位则根据时间因子和/或事件因子和/或数据缓冲区中的数据计算挑战应答口令,显示屏显示计算结果,更新事件因子,将系统状态修改为显示动态口令,清空数据缓冲区,执行步骤2-13;
步骤2-13:检查所述USBKey获取动态口令标志是否置位,是则向USBKey返回计算得到的挑战应答口令,执行步骤2-14,否则执行步骤2-14;
步骤2-14:打开所述按键中断,复位所述按键唤醒标志,返回步骤B;
其中,所述USBKey验PIN标志的初始态为复位,在接收到USBKey验PIN命令的通信数据时被置位;所述USBKey获取按键标志的初始态为复位,在接收到USBKey获取按键命令的通信数据时被置位;所述USBKey获取动态口令标志的初始态为复位,在接收到USBKey获取动态口令命令的通信数据时被置位。
10.如权利要求9所述的方法,其特征在于,
所述步骤A中还包括:若所述中断的类型为定时器中断则置位定时标志,关闭定时器,复位定时器中断标志,执行步骤B;
所述确定当前键值包括:
步骤3-1:扫描键盘,判断是否有按键被按下,是则执行步骤3-2,否则当前按键值为空;
步骤3-2:判断被按下的按键是否为复用按键,是则执行步骤3-3,否则执行步骤3-8;
步骤3-3:判断本次被按下的按键与上次被按下的按键是否相同,是则执行步骤3-4,否则执行步骤3-5;
步骤3-4:判断所述定时器标志是否置位,是则执行步骤3-5,否则执行步骤3-6;
步骤3-5:更新同一按键被按下次数变量的值为第四预设值,复位所述定时器标志,执行步骤3-7;
步骤3-6:同一按键被按下次数变量的值递增,执行步骤3-7;
步骤3-7:根据同一按键被按下次数变量的值确定当前按键值;
步骤3-8:判断被按下的按键是否为电源键且被按下时间是否超过预设时长,是则当前按键值为第二预设键值,否则当前按键值为空。
11.如权利要求9所述的方法,其特征在于,所述确定当前键值包括:
步骤3-1':扫描键盘,判断是否有按键被按下,是则执行步骤3-2',否则当前按键值为空;
步骤3-2':判断被按下的按键是否为复用按键,是则执行步骤3-3',否则执行步骤3-8';
步骤3-3':判断本次被按下的按键与上次被按下的按键是否相同,是则记录当前定时器的计数值作为第二定时器计数值,执行步骤3-4',否则记录当前定时器的计数值作为第一定时器计数值,执行步骤3-5';
步骤3-4':计算第二定时器计数值与第一定时器计数值的差值,若所述差值大于第三预设值,是则执行步骤3-5',否则执行步骤3-6';
步骤3-5':更新同一按键被按下次数变量的值为第四预设值,将第二定时器计数值存储为第一定时器计数值,执行步骤3-7';
步骤3-6':同一按键被按下次数变量的值递增,将第二定时器计数值存储为第一定时器计数值,执行步骤3-7';
步骤3-7':根据同一按键被按下次数变量的值确定当前按键值;
步骤3-8':判断被按下的按键是否为电源键且被按下时间是否超过预设时长,是则当前按键值为第二预设键值,否则当前按键值为空。
12.如权利要求10或11所述的方法,其特征在于,所述判断被按下的按键是否为电源键且被按下时间是否超过预设时长具体包括:检测到电源键被按下后每隔第三预设时间检测电源键的状态,若电源键依然处于被按下的状态则电源键被按下时间超过预设时长,否则电源键被按下时间不超过预设时长。
13.如权利要求10或11所述的方法,其特征在于,所述判断被按下的按键是否为电源键且被按下时间是否超过预设时长具体包括:检测到电源键被按下时记录定时器的计数值,待检测到电源键抬起时再次记录定时器的计数值,计算两次记录的定时器的计数值的差值,若所述差值大于预设时长则电源键被按下时间超过预设时长,否则电源键被按下时间不超过预设时长。
14.如权利要求10或11所述的方法,其特征在于,所述当前按键值为第二预设键值时包括:
步骤4-1:检查当前系统状态是否为休眠,是则执行步骤4-3,否则执行步骤4-2;
步骤4-2:关闭显示屏,清空数据缓冲区,修改系统状态为休眠;
步骤4-3:显示屏上电初始化,执行步骤4-4;
步骤4-4:显示验PIN界面,修改系统状态为验PIN。
15.如权利要求9所述的方法,其特征在于,所述步骤2-2中还包括:若当前系统状态为显示口令,则检查当前键值,若为第一预设键值则显示屏显示提示输入挑战值的信息,将系统状态修改为输入挑战码,执行步骤2-14,若不为第一预设键值则执行步骤2-14。
16.如权利要求9所述的方法,其特征在于,
所述步骤2-5之前还包括:检查数据缓冲区中数据的个数是否小于预设的密码长度,是则执行步骤5-3,否则执行步骤2-14;
所述步骤2-6之前还包括:检查数据缓冲区中数据的个数是否等于预设的密码长度,是则执行步骤5-4,否则执行步骤2-14;
所述步骤2-6中,对数据缓冲区中的数据进行验证具体为:对数据缓冲区中的数据进行哈希运算得到哈希值,判断所述哈希值与预设的密码是否相同,是则验证通过,否则验证未通过;
所述步骤2-6中,当验证通过时还包括清零验PIN失败次数,当验证未通过时还包括验PIN失败次数递增。
17.如权利要求9所述的方法,其特征在于,所述步骤2-2中还包括:若当前系统状态为修改密码,则执行步骤6-1:
步骤6-1:检查当前按键值,若为第三预设键值则执行步骤6-2,若为第四预设键值则执行步骤6-3,若为第一预设键值则执行步骤6-4,否则执行步骤2-14;
步骤6-2:检查数据缓冲区中是否有数据,是则清零数据缓冲区的最高位,显示屏显示输入新密码界面以及数据缓冲区中的数据,执行步骤2-14,否则执行步骤2-14;
步骤6-3:存储当前按键值至数据缓冲区,显示屏显示输入新密码界面以及数据缓冲区中的数据,执行步骤2-14;
步骤6-4:检查数据缓存区中的数据是否满足预设的密码要求,是则提示修改密码成功,保存新密码,延时第五预设时间后将系统状态修改为输入挑战码,显示屏显示信息界面,清空数据缓冲区,执行步骤2-14,否则清空数据缓冲区,执行步骤2-14。
18.如权利要求17所述的方法,其特征在于,
所述步骤6-2中,显示屏显示输入新密码界面以及数据缓冲区中的数据之前还包括:判断密码设定标志是否置位,是则显示屏显示确认新密码界面以及数据缓冲区中的数据,执行步骤2-14,否则继续执行;
所述步骤6-3中,显示屏显示输入新密码界面以及数据缓冲区中的数据之前还包括:判断密码设定标志是否置位,是则显示屏显示确认新密码界面以及数据缓冲区中的数据,执行步骤2-14,否则继续执行;
所述步骤6-4替换为:检查密码设定标志是否置位,若密码设定标志置位则比较数据缓冲区中的数据和第一密码,若相同则提示修改密码成功,保存第一密码为新密码,延时第五预设时间后将系统状态修改为输入挑战码,显示屏显示信息界面,将密码设定标志复位,清空数据缓冲区,执行步骤2-14,若不相同则提示修改密码失败,将密码设定标志复位,清空数据缓冲区,执行步骤2-14;若密码设定标志未置位则检查数据缓冲区中的数据是否满足预设的密码要求,是则保存数据缓冲区中的数据为第一密码,显示屏显示确认密码界面,将密码设定标志置位,清空数据缓冲区,执行步骤2-14,否则清空数据缓冲区,执行步骤2-14。
19.如权利要求18所述的方法,其特征在于,当所述数据缓冲区中的数据满足预设的密码要求时,保存数据缓冲区中的数据为第一密码之前还包括:判断数据缓冲区中的数据是否满足预设的弱密码条件,是则提示修改密码失败,清空数据缓冲区,执行步骤2-14,否则继续。
20.如权利要求1所述的方法,其特征在于,所述更新时间因子具体包括:
步骤7-1:令牌秒计数值递增,判断所述令牌秒计数值是否达到第二预设值,是则执行步骤7-2,否则更新时间因子过程结束;
步骤7-2:重置令牌秒计数值,时间因子递增,更新时间因子过程结束。
21.如权利要求20所述的方法,其特征在于,所述步骤E中还包括校准时间因子,所述校准时间因子具体包括:
步骤8-1:校准计数器的值递增,在预定时间点上判断所述校准计数器的值是否小于预设校准值,是则校准时间因子过程结束,否则更新所述校准计数器的值为其当前值减去预设校准值,执行步骤8-2;
步骤8-2:检查校准方向,若为第一方向则所述令牌秒计数值递减,校准时间因子过程结束;若为第二方向则所述令牌秒计数值递增,校准时间因子过程结束。
22.根据权利要求1所述的方法,其特征在于,所述步骤E中还包括对动态口令进行时效性检查,所述对动态口令进行时效性检查具体包括:
步骤9-1:检查当前系统状态是否为显示口令,是则显示口令时间递增,执行步骤9-2;
步骤9-2:判断所述显示口令时间是否达到预设时长,是则执行步骤9-3,否则更新时间条,时效性检查过程结束;
步骤9-3:修改系统状态为输入挑战码,时效性检查过程结束。
23.如权利要求1所述的方法,其特征在于,所述步骤E中还包括自动关机检查,所述自动关机检查具体包括:判断是否到达自动关机时间,是则清零数据缓冲区,关闭显示屏,将系统状态修改为休眠,自动关机检查过程结束,否则自动关机检查过程结束;
其中,所述自动关机时间在每次修改系统状态为休眠时被重置为初始值。
24.如权利要求1所述的方法,其特征在于,所述步骤E中还包括连接检查,所述连接检查具体包括:
步骤10-1:检查USB电源线上的电压,若为高电压则执行步骤10-2,若为低电压则执行步骤10-3;
步骤10-2:检查USB状态,若为第一状态则将USB状态修改为第二状态,打开显示屏,显示屏显示请输入密码的提示信息,将系统状态修改为验PIN,连接检查过程结束,否则连接检查过程结束;
步骤10-3:检查USB状态,若为第一状态则继续执行,否则将USB状态修改为第一状态,清零数据缓冲区,关闭显示屏,将系统状态修改为休眠。
25.如权利要求14所述的方法,其特征在于,所述步骤E中还包括低电压检查,所述低电压检查具体包括:检查电池电压是否低于预设电压,是则将电池低电压标志置位,低电压检查过程结束,否则低电压检查过程结束;
所述步骤4-3中还包括:检查所述低电压标志是否置位,是则显示屏显示低电提示信息,延时第四预设时间后执行步骤4-4,否则直接执行步骤4-4。
26.如权利要求14所述的方法,其特征在于,所述步骤E中还包括防拆检查,所述防拆检查具体包括:检查防拆开关是否弹开,是则将防拆标志置位,清除令牌的密钥,防拆检查过程结束,否则防拆检查过程结束;
所述步骤4-3中还包括:检查所述防拆标志是否置位,是则显示屏显示自毁提示信息,动态令牌模块自毁,否则执行步骤4-4。
27.如权利要求1所述的方法,其特征在于,所述步骤E中还包括通信超时检查,所述通信超时检查具体包括:检查是否有置位的USBKey通信标志,是则判断USBKey通信是否超时,若超时则将置位的USBKey通信标志复位,向USBKey返回超时的提示信息,通信超时检查过程结束,否则通信超时检查过程结束;
其中,所述USBKey通信标志包括:USBKey验PIN标志、USBKey获取按键标志和USBKey获取动态口令标志;所述USBKey验PIN标志的初始态为复位,在接收到USBKey验PIN命令的通信数据时被置位;所述USBKey获取按键标志的初始态为复位,在接收到USBKey获取按键命令的通信数据时被置位;所述USBKey获取动态口令标志的初始态为复位,在接收到USBKey获取动态口令命令的通信数据时被置位。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310265562.4A CN103312517B (zh) | 2013-06-28 | 2013-06-28 | 一种双用途设备共用显示屏和按键的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310265562.4A CN103312517B (zh) | 2013-06-28 | 2013-06-28 | 一种双用途设备共用显示屏和按键的实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103312517A true CN103312517A (zh) | 2013-09-18 |
CN103312517B CN103312517B (zh) | 2016-04-06 |
Family
ID=49137324
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310265562.4A Active CN103312517B (zh) | 2013-06-28 | 2013-06-28 | 一种双用途设备共用显示屏和按键的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103312517B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104038345A (zh) * | 2014-06-20 | 2014-09-10 | 上海动联信息技术股份有限公司 | 一种实现usbkey与动态令牌之间协作的控制系统及控制方法 |
CN104079411A (zh) * | 2014-06-30 | 2014-10-01 | 北京海泰方圆科技有限公司 | 一种复合型密码装置及该装置共用显示屏和按键的方法 |
CN104539430A (zh) * | 2014-12-30 | 2015-04-22 | 飞天诚信科技股份有限公司 | 一种基于卡片的动态口令生成方法及设备 |
CN107085532A (zh) * | 2017-03-21 | 2017-08-22 | 东软集团股份有限公司 | 任务监听方法和装置 |
CN108053213A (zh) * | 2017-12-29 | 2018-05-18 | 飞天诚信科技股份有限公司 | 一种增强无卡支付交易安全性的方法和信用卡 |
CN108319870A (zh) * | 2014-05-28 | 2018-07-24 | 天地融科技股份有限公司 | 一种无按键的电子密钥设备 |
CN110806712A (zh) * | 2019-12-02 | 2020-02-18 | 宁波德晶元科技有限公司 | 一种适用于单片机的低功耗运行方法与系统 |
CN110974017A (zh) * | 2019-12-06 | 2020-04-10 | 珠海格力电器股份有限公司 | 果汁机及其控制方法 |
CN113608921A (zh) * | 2021-06-25 | 2021-11-05 | 天津津航计算技术研究所 | 一种防阻塞双机热备份系统按键一致响应控制方法 |
WO2023124589A1 (zh) * | 2021-12-31 | 2023-07-06 | 飞天诚信科技股份有限公司 | 防止安全处理器的处理被打断的方法和装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102611556A (zh) * | 2012-03-31 | 2012-07-25 | 飞天诚信科技股份有限公司 | 一种动态令牌的工作方法 |
CN102801531A (zh) * | 2012-09-04 | 2012-11-28 | 飞天诚信科技股份有限公司 | 一种基于声音传输的动态令牌的工作方法 |
-
2013
- 2013-06-28 CN CN201310265562.4A patent/CN103312517B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102611556A (zh) * | 2012-03-31 | 2012-07-25 | 飞天诚信科技股份有限公司 | 一种动态令牌的工作方法 |
CN102801531A (zh) * | 2012-09-04 | 2012-11-28 | 飞天诚信科技股份有限公司 | 一种基于声音传输的动态令牌的工作方法 |
Non-Patent Citations (1)
Title |
---|
于华章,: ""网上银行安全无间道"", 《信息安全与通信保密》 * |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108319870B (zh) * | 2014-05-28 | 2021-08-17 | 天地融科技股份有限公司 | 一种无按键的电子密钥设备 |
CN108319870A (zh) * | 2014-05-28 | 2018-07-24 | 天地融科技股份有限公司 | 一种无按键的电子密钥设备 |
CN104038345A (zh) * | 2014-06-20 | 2014-09-10 | 上海动联信息技术股份有限公司 | 一种实现usbkey与动态令牌之间协作的控制系统及控制方法 |
CN104079411A (zh) * | 2014-06-30 | 2014-10-01 | 北京海泰方圆科技有限公司 | 一种复合型密码装置及该装置共用显示屏和按键的方法 |
CN104539430B (zh) * | 2014-12-30 | 2018-11-30 | 飞天诚信科技股份有限公司 | 一种基于卡片的动态口令生成方法及设备 |
CN104539430A (zh) * | 2014-12-30 | 2015-04-22 | 飞天诚信科技股份有限公司 | 一种基于卡片的动态口令生成方法及设备 |
CN107085532A (zh) * | 2017-03-21 | 2017-08-22 | 东软集团股份有限公司 | 任务监听方法和装置 |
CN108053213B (zh) * | 2017-12-29 | 2019-04-12 | 飞天诚信科技股份有限公司 | 一种增强无卡支付交易安全性的方法和信用卡 |
CN108053213A (zh) * | 2017-12-29 | 2018-05-18 | 飞天诚信科技股份有限公司 | 一种增强无卡支付交易安全性的方法和信用卡 |
CN110806712A (zh) * | 2019-12-02 | 2020-02-18 | 宁波德晶元科技有限公司 | 一种适用于单片机的低功耗运行方法与系统 |
CN110974017A (zh) * | 2019-12-06 | 2020-04-10 | 珠海格力电器股份有限公司 | 果汁机及其控制方法 |
CN110974017B (zh) * | 2019-12-06 | 2020-11-17 | 珠海格力电器股份有限公司 | 果汁机及其控制方法 |
CN113608921A (zh) * | 2021-06-25 | 2021-11-05 | 天津津航计算技术研究所 | 一种防阻塞双机热备份系统按键一致响应控制方法 |
CN113608921B (zh) * | 2021-06-25 | 2024-01-16 | 天津津航计算技术研究所 | 一种防阻塞双机热备份系统按键一致响应控制方法 |
WO2023124589A1 (zh) * | 2021-12-31 | 2023-07-06 | 飞天诚信科技股份有限公司 | 防止安全处理器的处理被打断的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103312517B (zh) | 2016-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103312517B (zh) | 一种双用途设备共用显示屏和按键的实现方法 | |
CN203773424U (zh) | 一种基于龙芯处理器的安全可信计算机 | |
CN105554035B (zh) | 一种电子锁系统及其控制方法 | |
CN103246839B (zh) | 一种智能密钥设备的工作方法 | |
US10069821B2 (en) | Operating method for one-time password with updatable seed | |
CN104408825B (zh) | 一种加密刷卡式公用充电桩及充电方法 | |
CN103136861A (zh) | 一种基于atm的用户操作探测方法及装置 | |
CN104933797A (zh) | 一种基于动态令牌的智能卡门禁控制系统及方法 | |
CN104063642A (zh) | 一种基于压力传感器的智能终端安全认证方法及装置 | |
CN104462911A (zh) | 一种在移动终端上实现身份认证的方法 | |
CN205068524U (zh) | 一种智能门禁系统 | |
CN104063643A (zh) | 一种基于时间间隔特征的智能终端安全认证方法及装置 | |
US9781104B2 (en) | Working method of dynamic token | |
CN103391195A (zh) | 一种动态令牌的工作方法 | |
CN203311418U (zh) | 一种具有加密射频的移动终端 | |
US20200043004A1 (en) | Systems and methods for active signature detection | |
CN102852400A (zh) | 一种基于USB key的密码锁系统及其认证控制方法 | |
CN104867004A (zh) | 移动支付系统及其移动支付的方法 | |
CN107273756A (zh) | F2f解码芯片中的安全信息防护装置 | |
CN204390239U (zh) | 一种具备毁钥功能的智能保密系统 | |
CN204215484U (zh) | 一种加密刷卡式公用充电桩 | |
CN104123512A (zh) | 实现智能密钥设备模式间切换的方法和装置 | |
CN201130947Y (zh) | 硬件令牌 | |
CN104679217A (zh) | 一种终端 | |
CN201159920Y (zh) | 一种键盘式ic卡身份认证装置 |
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 |