CN103235911B - 一种签名方法 - Google Patents
一种签名方法 Download PDFInfo
- Publication number
- CN103235911B CN103235911B CN201310151280.1A CN201310151280A CN103235911B CN 103235911 B CN103235911 B CN 103235911B CN 201310151280 A CN201310151280 A CN 201310151280A CN 103235911 B CN103235911 B CN 103235911B
- Authority
- CN
- China
- Prior art keywords
- return
- key
- host computer
- message
- instruction
- 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
Links
Abstract
本发明公开一种签名方法,包括:设备接收到上位机下发的计算签名指令则对计算签名指令解析得到待签名报文,根据有效哈希算法对待签名报文进行计算并保存计算结果,从待签名报文中提取关键信息并存储到显示缓存区;将关键信息通过显示屏输出;当接收到确认按键信息且关键信息全部输出时,使用用户私钥根据有效签名算法对保存的计算结果进行签名,将签名结果返回给上位机。本发明技术方案需要关键信息全部输出确认后才能进行签名,提高了签名的安全性。
Description
技术领域
本发明涉及信息安全领域,尤其涉及一种签名方法。
背景技术
网上支付应用一般使用互联网及通用计算平台,如个人电脑、手机等。由于连接互联网以及通用计算平台自身的开放性,通用计算平台上存在较多安全威胁,如病毒、木马等恶意程序。恶意程序可以窃取从键盘输入的静态口令,并用来进行恶意支付;或者篡改关键的交易数据,如将客户转账的入账账户和入账户名进行替换,以谋取不当利益。
现有技术中使用USB Key(智能密钥设备)来加强网上支付的安全性。目前USB Key插入电脑上电后可以进行多笔交易。在多次交易过程中,黑客可以在用户交易报文显示后再次发起交易流程或者修改用户报文,如果用户没注意关键信息内容被修改,就可能按下确认键,从而造成骗签成功。
发明内容
本发明的目的是为了克服现有技术的不足,提供一种签名方法。
本发明提供了一种签名方法,包括:
步骤s1:设备上电,进行初始化;
步骤s2:所述设备等待接收指令和按键信息;
步骤s3:当所述设备接收到上位机下发的指令时,判断所述接收到的指令是否为计算签名指令,是则执行步骤s4;否则根据指令进行相应操作,并将操作结果返回给上位机,返回步骤s2;
步骤s4:判断报文解析条件是否合法,是则执行步骤s5,否则给上位机返回错误响应,返回步骤s2;
步骤s5:对所述计算签名指令进行解析得到待签名报文,根据有效哈希算法对所述待签名报文进行计算并保存计算结果,从所述待签名报文中提取关键信息并存储到显示缓存区;
步骤s6:将所述显示缓存区中存储的关键信息通过显示屏输出,并等待接收按键信息;
步骤s7:当接收到按键信息时,检测所述按键信息的类型,如为取消信息则输出取消提示信息,给上位机返回取消响应,返回步骤s2;如为上翻页信息则通过显示屏输出上一页的关键信息,返回步骤s2;如为下翻页信息则执行步骤s8;如为确认信息则执行步骤s9;
步骤s8:判断关键信息是否全部输出,是则返回步骤s2,否则通过显示屏继续输出下一页的关键信息,返回步骤s2;
步骤s9:判断关键信息是否全部输出,是则使用所述有效用户私钥根据有效签名算法对所述保存的计算结果进行签名,将签名结果返回给上位机,给上位机返回成功响应,返回步骤s2,否则通过显示屏继续输出下一页的关键信息,返回步骤s2。
其中,该签名方法中的所述步骤s8和步骤s9替换为:
步骤s80:通过显示屏继续输出下一页的关键信息,并判断所述关键信息是否全部输出,是则将报文显示完成标志设为有效,返回步骤s2,否则返回步骤s2;
步骤s90:判断报文显示完成标志是否有效,是则使用所述有效用户私钥根据有效签名算法对所述保存的计算结果进行签名,将签名结果返回给上位机,给上位机返回成功响应,返回步骤s2,否则返回步骤s8。
其中,在所述步骤s3和步骤s4之间包括步骤s3’;
步骤s3’:根据当前算法标识设置有效哈希算法和有效签名算法,根据密钥信息定位有效用户私钥。
其中,所述算法标识和密钥信息是预先设置的或上位机通过指令下发的。
其中,所述计算签名指令包括设置算法指令、报文解析指令、报文签名指令;
所述步骤s3替换为:当所述设备接收到上位机下发的指令时,检测指令的类型,如为设置算法指令,则执行步骤s3’,如为报文解析指令则执行步骤s4,如为报文签名指令则执行步骤s6;
其中在步骤s3’之后,给所述上位机返回成功响应,返回步骤s2;
在步骤s4中对所述报文解析指令进行解析得到待签名报文;
其中在步骤s5之后,给所述上位机返回成功响应,返回步骤s2。
其中,所述计算签名指令包括设置算法指令、报文解析签名指令;
所述步骤s3替换为:当所述设备接收到上位机下发的指令时,检测指令的类型,如为设置算法指令,则执行步骤s3’,如为报文解析签名指令则执行步骤s4;
其中在步骤s3’之后,给所述上位机返回成功响应,返回步骤s2;
在步骤s4中对所述报文解析签名指令进行解析得到待签名报文。
其中,所述计算签名指令包括报文解析指令、报文签名指令;
所述步骤s3替换为:当所述设备接收到上位机下发的指令时,检测指令的类型,如为报文解析指令则执行步骤s4,如为报文签名指令则执行步骤s6;
在步骤s4中对所述报文解析指令进行解析得到待签名报文;
其中在步骤s5之后,给所述上位机返回成功响应,返回步骤s2。
其中,该签名方法中的所述步骤s5和步骤s6替换为:
步骤s5”’:对所述报文解析指令进行解析得到待签名报文,根据预设算法对所述待签名报文进行计算并保存计算结果,从所述待签名报文中提取关键信息,并通过显示屏输出所述关键信息,并给上位机返回成功响应,返回步骤s2;
步骤s6”’:等待接收用户的确认信息。
其中,所述步骤s4与步骤s5之间包括:输出操作次数等待用户确认,并判断是否接收到用户的确认信息,是则执行步骤s5,否则给上位机返回错误响应,返回步骤s2;
所述步骤s9判断为是时还包括:对所述操作次数自加1。
其中,所述步骤s5替换为s5’,所述步骤s7-步骤s9替换为步骤s7’-步骤s8’;
步骤s5’:输出操作次数等待用户确认,并判断是否接收到用户的确认信息,是则对所述计算签名指令进行解析得到待签名报文,根据有效哈希算法对所述待签名报文进行计算并保存计算结果,从所述待签名报文中提取关键信息并存储到显示缓存区,给上位机返回成功响应,返回步骤s2;否则给上位机返回错误响应,返回步骤s2;
步骤s7’:当接收到按键信息时,判断按键信息类型是否为确认键,是则执行步骤s8’,否则根据按键类型进行相应操作,返回步骤s2;
步骤s8’:使用所述有效用户私钥根据有效签名算法对所述保存的计算结果进行签名,对所述操作次数自加1,将签名结果返回给上位机,给所述上位机返回成功响应,返回步骤s2。
其中,所述步骤s5’和步骤s8’替换为步骤s5”和步骤s8”;
步骤s5”:判断允许签名标志是否有效,是则对所述计算签名指令进行解析得到待签名报文,根据有效哈希算法对所述待签名报文进行计算并保存计算结果,从所述待签名报文中提取关键信息并存储到显示缓存区,给上位机返回成功响应,返回步骤s2;否则给上位机返回错误响应,返回步骤s2;
步骤s8”:判断报文显示完成标志是否有效,是则使用所述有效用户私钥根据有效签名算法对所述保存的计算结果进行签名,并将签名结果返回给上位机,给所述上位机返回成功响应,将所述允许签名标志复位,返回步骤s2,否则给上位机返回错误响应信息,返回步骤s2。
其中,所述步骤s1中进行初始化包括:将所述允许签名标志设为有效。
其中,该签名方法还包括:所述设备上电时计时器开始计时,当所述计时器的计时到达预设值时,进入时钟中断;
所述时钟中断的过程为:关闭时钟中断,并将所述允许签名标志设为有效,打开时钟中断。
其中,所述步骤s3’包括:
步骤s3’-1:根据当前算法标识判断是否支持哈希算法,是则设置有效哈希算法,继续,否则给上位机返回错误响应,返回步骤s2;
步骤s3’-2:根据当前算法标识判断是否支持签名算法,是则设置有效签名算法,继续,否则给上位机返回错误响应,返回步骤s2;
步骤s3’-3:根据所述密钥信息中的密钥ID和用途信息定位有效用户私钥。
其中,所述步骤s3’-1具体为:判断接收到的指令中的第三字节上的数据是否为第一预设字符,是则支持,否则不支持;
所述步骤s3’-2具体为:判断接收到的指令中的第四字节上的数据是否为第二预设字符,是则支持,否则不支持。
其中,所述s4包括:
步骤s4-1:判断参数是否正确,是则执行步骤s4-2,否则给上位机返回错误响应,返回步骤s2;
步骤s4-2:判断是否有有效哈希算法,是则执行步骤s4-3,否则给上位机返回错误响应,返回步骤s2;
步骤s4-3:判断执行权限是否满足,是则执行步骤s5,否则给上位机返回错误响应,返回步骤s2。
其中,所述步骤s4-1具体包括:
步骤s4-11:判断所述报文解析指令的第二预设位置上的数据是否为预设数据串,是则执行步骤s4-12,否则给上位机返回错误响应,返回步骤s2;
步骤s4-12:判断所述报文解析指令的第三预设位置上的数据的长度是否大于预设长度值,是则给上位机返回错误响应,返回步骤s2,否则执行步骤s4-2;
所述步骤s4-3具体为:判断PIN码校验操作是否成功执行,是则执行权限满足,否则执行权限不满足。
其中,所述输出操作次数等待用户确认,并判断是否接收到用户的确认信息,包括:
步骤p1:判断与确认键和取消键关联的CPU引脚电平是否为预设状态,是则执行步骤p2,否则给上位机返回错误响应,返回步骤s2;
步骤p2:输出所述操作次数的提示信息,等待用户确认;
步骤p3:判断与确认键关联的CPU引脚电平是否发生了变化,是则继续,否则给上位机返回取消响应,返回步骤s2。
其中,所述步骤s6-步骤s8具体为:
步骤h1:从所述显示缓存区中读取字符并记录开始读取时的位置;
步骤h2:将所述读取的字符进行编码转换并根据转换后的编码从字库中读出对应的字模数据,将所述字模数据通过所述显示屏进行输出;
步骤h3:判断所述显示屏上是否有显示空间,是则执行步骤h4,否则执行步骤h5;
步骤h4:判断是否读取完所述显示缓存区中的字符,是则将所述报文显示完成标志设为有效,执行步骤h5,否则继续从所述显示缓存区中读取字符,返回步骤h2;
步骤h5:判断在预设时间内是否接收到按键信息,是则执行步骤h6,否则给上位机返回错误响应,返回步骤s2;
步骤h6:检测所述按键信息的类型,如为确认信息则执行步骤s10,如为取消信息则输出取消提示信息,给上位机返回取消响应,返回步骤s2,如为下翻页信息则执行步骤h7,如为上翻页信息则执行步骤h8;
步骤h7:判断是否读取完所述显示缓存区中的字符,是则返回步骤s2,否则继续从所述显示缓存区中读取字符并记录开始读取时的位置,返回步骤h2;
步骤h8:根据记录的所述读取位置从所述显示缓存区中读取字符,返回步骤h2。
其中,在所述显示屏上输出所述字模数据时记录显示位置,所述步骤h3具体为:判断所述显示位置是否超过所述显示屏的最大行值和最大列值,是则所述显示屏上无显示空间,否则所述显示屏上有显示空间。
其中,读取个数初始值为0,每次读取一个字符后所述读取个数自加1,所述步骤h4具体为:判断所述读取个数是否等于所述显示缓存区中的字符的数量,是则读取完,否则未读取完。
其中,读取次数初始值为所述显示缓存区中的字符的数量,每次读取一个字符后所述读取次数自减1,所述步骤h4具体为:判断读取次数是否为0,是则读取完所有字符,否则未读取完。
其中,在所述步骤h1之前包括:判断与确认键、取消键、上翻键、下翻键关联的CPU引脚的电平是否为预设值,是则执行步骤h1,否则给上位机返回错误响应,返回步骤s2;
所述步骤h5具体包括:判断与按键关联的引脚的电平是否发生了变化,是则接收到按键信息,否则未接收到按键信息;
所述步骤h6具体包括:检测电平发生变化的引脚类型,如为确认键关联的CPU引脚则为确认信息;如为取消键关联的CPU引脚则为取消信息;如为下翻键关联的CPU引脚则为下翻页信息;如为上翻键关联的CPU引脚则为上翻页信息。
其中,所述s7’包括:
步骤s7’-1:当接收到按键信息时,判断与确认键、取消键、上翻键、下翻键关联的CPU引脚的电平是否为预设值,是则执行步骤s7’-2,否则给上位机返回错误响应,返回步骤s2;
步骤s7’-2:判断与确认键关联的引脚的电平是否发生了变化,则执行步骤s8’,否则给上位机返回错误响应,返回步骤s2。
本发明与现有技术相比,具有以下优点:
本发明技术方案每次上电只允许单笔交易,如要进行多笔交易必须重新插拔USB Key,增强网上交易的安全性;或在交易前输出当前用户进行的操作次数或当所有关键信息输出完成时,当接收到用户的按键确认信息后才可以进行签名,有效防止用户交易报文被替换后不容易被察觉的风险;防止黑客骗签,增强签名的安全性。
附图说明
图1为本发明实施例一提供的一种签名方法流程图;
图2为本发明实施例一提供方法中的步骤s6-步骤s80的具体实现流程图;
图3为本发明实施例二提供的一种签名方法流程图;
图4为本发明实施例三提供的一种签名方法流程图;
图5为本发明实施例四提供的一种签名方法流程图;
图6-图7为本发明实施例五提供的一种签名方法流程图;
图8-图9为本发明实施例六提供的一种签名方法流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
本发明实施例一提供一种签名方法,在该方法实现之前USB Key设备已与上位机进行了连接,本实施例方法如图1所示,包括:
步骤s1:设备上电,进行初始化;
步骤s2:设备等待接收指令和按键信息;
步骤s3:当设备接收到上位机下发的指令时,判断接收到的指令是否为计算签名指令,是则执行步骤s4;否则根据指令进行相应操作,并将操作结果返回给上位机,返回步骤s2;
步骤s4:判断报文解析条件是否合法,是则执行步骤s5,否则给上位机返回错误响应,返回步骤s2;
在本实施例中,步骤s4包括:
步骤s4-1:判断参数是否正确,是则执行步骤s4-2,否则给上位机返回错误响应,返回步骤s2;
在本实施例中,判断参数是否正确的具体过程为:
步骤s4-11:判断报文解析指令的第二预设位置上的数据是否为预设数据串,是则执行步骤s4-12,否则给上位机返回错误响应,返回步骤s2;
步骤s4-12:判断报文解析指令的第三预设位置上的数据的长度是否大于预设长度值,是则给上位机返回错误响应,返回步骤s2,否则执行步骤s4-2;
步骤s4-2:判断是否有有效哈希算法,是则执行步骤s4-3,否则给上位机返回错误响应,返回步骤s2;
步骤s4-3:判断执行权限是否满足,是则执行步骤s5,否则给上位机返回错误响应,返回步骤s2;
本实施例中的步骤s4-3具体为:判断PIN码校验操作是否成功执行,是则执行权限满足,否则执行权限不满足;
步骤s5:对计算签名指令进行解析得到待签名报文,根据有效哈希算法对待签名报文进行计算并保存计算结果,从待签名报文中提取关键信息并存储到显示缓存区;
步骤s6:将显示缓存区中存储的关键信息通过显示屏输出,并等待接收按键信息;
步骤s7:当接收到按键信息时,检测按键信息的类型,如为取消信息则输出取消提示信息,给上位机返回取消响应,返回步骤s2;如为上翻页信息则通过显示屏输出上一页的关键信息,返回步骤s2;如为下翻页信息则执行步骤s8;如为确认信息则执行步骤s9;
步骤s8:判断关键信息是否全部输出,是则返回步骤s2,否则通过显示屏继续输出下一页的关键信息,返回步骤s2;
步骤s9:判断关键信息是否全部输出,是则使用有效用户私钥根据有效签名算法对保存的计算结果进行签名,将签名结果返回给上位机,给上位机返回成功响应,返回步骤s2,否则通过显示屏继续输出下一页的关键信息,返回步骤s2。
本实施例在步骤s9中判断为否时的操作还可以为:给主机返回错误响应,返回步骤s2。
本实施例中的步骤s8和步骤s9可替换为:
步骤s80:通过显示屏继续输出下一页的关键信息,并判断关键信息是否全部输出,是则将报文显示完成标志设为有效,返回步骤s2,否则返回步骤s2;
步骤s90:判断报文显示完成标志是否有效,是则使用有效用户私钥根据有效签名算法对保存的计算结果进行签名,将签名结果返回给上位机,给上位机返回成功响应,返回步骤s2,否则返回步骤s8。
在步骤s90中判断为否时还可以返回步骤s2,或者在给主机返回错误响应后,在返回步骤s2。
本实施例的方法需要将关键信息全部输出并经过用户确认后,才能进行签名,有效防止用户交易报文被替换后不容易被察觉的风险;防止黑客骗签,增强签名的安全性。
在所述步骤s3和步骤s4之间包括步骤s3’;
步骤s3’:设置有效哈希算法和签名算法,从密钥文件中获取用户私钥并存储到内存中,给上位机返回成功响应,返回步骤s2;
本实施例中的算法标识和密钥信息是预设的,也可以是上位机通过指令下发的;
步骤s3’包括:
步骤s3’-1:根据当前算法标识判断是否支持哈希算法,是则设置有效哈希算法,执行步骤s3’-2,否则给上位机返回错误响应,返回步骤s2;
如本实施例中的算法标识和密钥信息是上位机通过指令下发的,则步骤s3’-1具体为:判断接收到的指令中的第三字节上的数据是否为第一预设字符,是则支持,否则不支持;
步骤s3’-2:根据当前算法标识判断是否支持签名算法,是则设置有效签名算法,执行步骤s3’-3,否则给上位机返回错误响应,返回步骤s2;
如本实施例中的算法标识和密钥信息是上位机通过指令下发的,则步骤s3’-2具体为:判断接收到的指令中的第四字节上的数据是否为第二预设字符,是则支持,否则不支持;
步骤s3’-3:根据所述密钥信息中的密钥ID和用途信息定位有效用户私钥;
优选的,步骤s3’-3为:打开密钥文件,根据设置算法指令中的密钥ID和用途信息从密钥文件中获取对应的用户私钥并存储到内存中;
其中,上述步骤s3’-1、步骤s3’-2、步骤s3’-3的顺序可调换。
本实施例中的计算签名过程可以通过一条指令或两条指令或三条指令来实现;
①当签名过程通过三条指令实现且算法标识和密钥信息是上位机通过指令下发的时,即计算签名指令包括设置算法指令、报文解析指令、报文签名指令;
则步骤s3替换为:当设备接收到上位机下发的指令时,检测指令的类型,如为设置算法指令,则执行步骤s3’,如为报文解析指令则执行步骤s4,如为报文签名指令则执行步骤s6;
其中在步骤s3’之后,给上位机返回成功响应,返回步骤s2;
在步骤s4中对报文解析指令进行解析得到待签名报文;
其中在步骤s5之后,给上位机返回成功响应,返回步骤s2。
②当签名过程通过两条指令实现且算法标识和密钥信息是上位机通过指令下发的时,即计算签名指令包括设置算法指令、报文解析签名指令;
步骤s3替换为:当设备接收到上位机下发的指令时,检测指令的类型,如为设置算法指令,则执行步骤s3’,如为报文解析签名指令则执行步骤s4;
其中在步骤s3’之后,给上位机返回成功响应,返回步骤s2;
在步骤s4中对所述报文解析签名指令进行解析得到待签名报文。
③当签名过程通过两条指令实现且算法标识和密钥信息是预先设置的时,即计算签名指令包括报文解析指令、报文签名指令;
步骤s3替换为:当设备接收到上位机下发的指令时,检测指令的类型,如为报文解析指令则执行步骤s4,如为报文签名指令则执行步骤s6;
在步骤s4中对所述报文解析指令进行解析得到待签名报文;
其中在步骤s5之后,给上位机返回成功响应,返回步骤s2。
当本实施例中的签名过程是通过①或③的方法实现,即从待签名报文中提取关键信息后就通过显示屏输出,则步骤s5和步骤s6还可替换为:
步骤s5”’:对报文解析指令进行解析得到待签名报文,根据预设算法对待签名报文进行计算并保存计算结果,从待签名报文中提取关键信息,并通过显示屏输出关键信息,并给上位机返回成功响应,返回步骤s2;
步骤s6”’:等待接收用户的确认信息。
本实施例中在步骤s4与步骤s5之间包括:
步骤A:输出操作次数等待用户确认,并判断是否接收到用户的确认信息,是则执行步骤s5,否则给上位机返回错误响应,返回步骤s2;
步骤s9判断为是时还包括:对操作次数自加1;
优选的,本实施例中的操作次数的初始值为0。
在操作次数输出且经用户的确认后才可以进行签名,进一步的增强签名的安全性。
上述输出操作次数还有另一种实现方案,即步骤s5替换为s5’,步骤s7-步骤s9替换为步骤s7’-步骤s8’;
步骤s5’:输出操作次数等待用户确认,并判断是否接收到用户的确认信息,是则对计算签名指令进行解析得到待签名报文,根据有效哈希算法对待签名报文进行计算并保存计算结果,从待签名报文中提取关键信息并存储到显示缓存区,给上位机返回成功响应,返回步骤s2;否则给上位机返回错误响应,返回步骤s2;
步骤s7’:当接收到按键信息时,判断按键信息类型是否为确认键,是则执行步骤s8’,否则根据按键类型进行相应操作,返回步骤s2;
具体的,步骤s7’的实现过程为:
步骤s7’-1:当接收到按键信息时,判断与确认键、取消键、上翻键、下翻键关联的CPU引脚的电平是否为预设值,是则执行步骤s7’-2,否则给上位机返回错误响应,返回步骤s2;
步骤s7’-2:判断与确认键关联的引脚的电平是否发生了变化,则执行步骤s8’,否则给上位机返回错误响应,返回步骤s2;
步骤s8’:使用有效用户私钥根据有效签名算法对保存的计算结果进行签名,对操作次数自加1,将签名结果返回给上位机,给上位机返回成功响应,返回步骤s2。
上述步骤A和步骤s5’中的所述输出操作次数等待用户确认,并判断是否接收到用户的确认信息,包括:
步骤p1:判断与确认键和取消键关联的CPU引脚电平是否为预设状态,是则执行步骤p2,否则给上位机返回错误响应,返回步骤s2;
步骤p2:输出所述操作次数的提示信息,等待用户确认;
步骤p3:判断与确认键关联的CPU引脚电平是否发生了变化,是则继续,否则给上位机返回取消响应,返回步骤s2。
本实施例中的签名过程还可设置每次上电只允许单笔交易,如要进行多笔交易必须重新插拔USB Key,增强网上交易的安全性;具体实现过程为将上述步骤s5’和步骤s8’替换为步骤s5”和步骤s8”;
步骤s5”:判断允许签名标志是否有效,是则对计算签名指令进行解析得到待签名报文,根据有效哈希算法对待签名报文进行计算并保存计算结果,从待签名报文中提取关键信息并存储到显示缓存区,给上位机返回成功响应,返回步骤s2;否则给上位机返回错误响应,返回步骤s2;
步骤s8”:判断报文显示完成标志是否有效,是则使用有效用户私钥根据有效签名算法对保存的计算结果进行签名,并将签名结果返回给上位机,给上位机返回成功响应,将允许签名标志复位,返回步骤s2,否则给上位机返回错误响应信息,返回步骤s2。
该方案中的允许签名标志可以在初始化时设为有效或者在时钟中断过程中将其设为有效;如在时钟中断过程中将允许签名标志设为有效,则设备上电时计时器开始计时,当计时器的计时到达预设值时,进入时钟中断;时钟中断的过程为:关闭时钟中断,并将允许签名标志设为有效,打开时钟中断。
本实施例中的步骤s6-步骤s80的具体实现过程如图2,包括:
步骤h1:从显示缓存区中读取字符并记录开始读取时的位置;
本实施例中在步骤h1之前可包括:判断与确认键、取消键、上翻键、下翻键关联的引脚的电平是否为预设值,是则执行步骤h1,否则给上位机返回错误响应,返回步骤s2;
步骤h2:将读取的字符进行编码转换并根据转换后的编码从字库中读出对应的字模数据,将字模数据通过显示屏进行输出;
步骤h3:判断显示屏上是否有显示空间,是则执行步骤h4,否则执行步骤h5;
本实施例中,在显示屏上输出字模数据时记录显示位置,步骤h3具体为:判断显示位置是否超过显示屏的最大行值和最大列值,是则显示屏上无显示空间,否则显示屏上有显示空间;
步骤h4:判断是否读取完显示缓存区中的字符,是则将报文显示完成标志设为有效,执行步骤h5,否则继续从显示缓存区中读取字符,返回步骤h2;
本实施例中,步骤h4有两种实现方式;
第一种实现方式为:读取个数初始值为0,每次读取一个字符后读取个数自加1,步骤h4具体为:判断读取个数是否等于显示缓存区中的字符的数量,是则读取完,否则未读取完;
第二中实现方式为:读取次数初始值为显示缓存区中的字符的数量,每次读取一个字符后读取次数自减1,步骤h4具体为:判断读取次数是否为0,是则读取完所有字符,否则未读取完;
步骤h5:判断在预设时间内是否接收到按键信息,是则执行步骤h6,否则给上位机返回错误响应,返回步骤s2;
在本实施例中,步骤h5具体包括:判断与按键关联的引脚的电平是否发生了变化,是则接收到按键信息,否则未接收到按键信息;
步骤h6:检测按键信息的类型,如为确认信息则执行步骤s10,如为取消信息则输出取消提示信息,并给上位机返回取消响应,返回步骤s2,如为下翻页信息则执行步骤h7,如为上翻页信息则执行步骤h8;
在本实施例中,步骤h6具体包括:检测电平发生变化的引脚类型,如为确认键关联的CPU引脚则为确认信息;如为取消键关联的CPU引脚则为取消信息;如为下翻键关联的CPU引脚则为下翻页信息;如为上翻键关联的CPU引脚则为上翻页信息。
步骤h7:判断是否读取完显示缓存区中的字符,是则返回步骤s2,否则继续从显示缓存区中读取字符并记录开始读取时的位置,返回步骤h2;
步骤h8:根据记录的读取位置从显示缓存区中读取字符,返回步骤h2。
实施例二
本发明实施例二提供一种签名方法,在该方法实现之前USB Key设备已与上位机建立了连接,本实施例中的签名过程通过两条指令实现且算法标识和密钥信息是上位机通过指令下发的时,即计算签名指令包括设置算法指令、报文解析签名指令;如图3所示,该签名方法包括:
步骤101:设备上电,进行初始化;
步骤102:设备等待接收指令和按键信息;
步骤103:当设备接收到上位机下发的指令时,检测指令的类型,如为设置算法指令,则执行步骤104,如为报文解析签名指令则执行步骤105,如为其他指令则进行相应操作,并将操作结果返回给上位机,返回步骤102;
步骤104:根据算法标识设置有效哈希算法和有效签名算法,根据密钥信息定位有效用户私钥,给上位机返回成功响应,返回步骤102。
步骤105:判断报文解析条件是否合法,是则执行步骤106,否则给上位机返回错误响应,返回步骤s2;
步骤106:对报文解析签名指令进行解析得到待签名报文,根据有效哈希算法对待签名报文进行计算并保存计算结果;
步骤107:从接收到的待签名报文中提取关键信息;
步骤108:将关键信息输出等待用户确认;
步骤109:当接收到按键信息时,检测按键信息的类型,如为确认信息则执行步骤110,如为取消信息,则输出取消提示信息,给上位机返回取消响应;如为上翻页信息,则输出上一页的关键信息,返回步骤102;如为下翻页信息,则通过显示屏继续输出下一页的关键信息,并判断关键信息是否全部输出,是则将报文显示完成标志设为有效,返回步骤102,否则返回步骤102;
具体的,本实施例中通过显示屏输出关键信息数据;
步骤110:判断报文显示完成标志是否有效,是则使用有效用户私钥根据有效签名算法对保存的计算结果进行签名,并将签名结果返回给上位机,给上位机返回成功响应,返回步骤102,否则给上位机返回错误响应,返回步骤102。
在本实施例中的步骤106之前还包括:输出操作次数等待用户确认,并判断是否接收到用户的确认信息,是则执行步骤106,否则给上位机返回错误响应。在步骤110签名之后将操作次数自加1,优选的,本实施例中操作次数的初始值为0。
实施例三
本发明实施例三提供一种签名方法,在该方法实现之前USB Key设备已与上位机建立了连接,本实施例的签名过程通过两条指令实现且算法标识和密钥信息是预先设置的时,即计算签名指令包括报文解析指令、报文签名指令;如图4所示,本实施例方法包括:
步骤201:设备上电,进行初始化;
步骤202:设备等待接收指令和按键信息;
步骤203:当设备接收到上位机下发的指令时,检测指令的类型,如为报文解析指令则执行步骤204,如为报文签名指令则执行步骤207;如为其他指令则根据指令进行相应操作,并将操作结果返回给上位机,返回步骤202;
步骤204:判断报文解析条件是否合法,是则执行步骤205,否则给上位机返回错误响应,返回步骤202;
步骤205:输出操作次数等待用户确认,并判断是否接收到用户的确认信息,是则执行步骤206,否则给上位机返回错误响应,返回步骤202;
步骤206:对报文解析指令进行解析得到待签名报文,根据有效哈希算法对接收到的待签名报文进行计算并保存计算结果,从待签名报文中提取关键信息,给上位机返回成功响应,返回步骤s2;;
步骤207:将关键信息输出等待用户确认,并判断是否接收到用户的确认信息,是则执行步骤208,否则进行相应操作,返回步骤202;
在本实施例中,如接收到取消信息,则输出取消提示信息,给上位机返回取消响应;如接收到翻页信息,则输出上/下一页关进信息;例如接收到上翻页信息则输出上一页关键信息,如接收到下翻页信息则输出下一页的关键信息;
步骤208:使用有效用户私钥根据有效签名算法对保存的计算结果进行签名,对操作次数自加1,将签名结果返回给上位机,并给上位机返回成功响应,返回步骤202;
优选的,本实施例中的操作次数的初始值为0。
实施例四
本发明实施例四提供一种签名方法,在该方法实现之前USB Key设备已与上位机建立了连接,本实施例中的签名过程通过三条指令实现且算法标识和密钥信息是上位机通过指令下发的时,即计算签名指令包括设置算法指令、报文解析指令、报文签名指令;本实施例方法如图5所示,包括:
步骤301:设备上电,进行初始化;
步骤302:设备等待接收指令和按键信息;
步骤303:当设备接收到上位机下发的指令时,检测指令的类型,如为设置算法指令则执行步骤304;如为报文解析指令则执行步骤305;如为报文签名指令则执行步骤308,如为其他指令则根据指令进行相应操作,并将操作结果返回给上位机,返回步骤302;
步骤304:根据设置算法指令中的算法标识设置有效哈希算法和有效签名算法,根据设置算法指令中的密钥信息定位有效用户私钥,给上位机返回成功响应,返回步骤302;
本实施例中,设置有效哈希算法和有效签名算法具体为:将有效哈希算法标识和有效签名算法标志置位;
步骤304具体包括:
步骤304-1:根据算法标识判断是否支持哈希算法,是则设置有效哈希算法,执行步骤304-2,否则给上位机返回错误响应,返回步骤302;
本实施例中,步骤304-1具体为:判断接收到的指令中的第三字节上的数据是否为第一预设字符,是则支持,否则不支持;
步骤304-2:根据算法标识判断是否支持签名算法,是则设置有效签名算法,执行步骤304-3,否则给上位机返回错误响应,返回步骤302;
本实施例中,步骤304-2具体为:判断接收到的指令中的第四字节上的数据是否为第二预设字符,是则支持,否则不支持;
步骤304-3:根据设置算法指令中的密钥ID和用途信息定位对应的密钥文件中的有效用户私钥,给上位机返回成功响应,返回步骤302;
步骤305:判断报文解析条件是否合法,是则执行步骤306,否则给上位机返回错误响应,返回步骤302;
本实施例中,步骤305包括:
步骤305-1:判断参数是否正确,是则执行步骤305-2,否则给上位机返回错误响应,返回步骤302;
本实施例的步骤305-1具体为:
判断报文解析指令的第二预设位置上的数据是否为预设数据串,是则继续,否则给上位机返回错误响应,返回步骤302;
判断报文解析指令的第三预设位置上的数据是否大于预设长度值,是则给上位机返回错误响应,返回步骤302,否则继续;
步骤305-2:判断有效哈希算法标识是否有效,是则执行步骤305-3,否则给上位机返回错误响应,返回步骤302;
步骤305-3:判断执行权限是否满足,是则执行步骤306,否则给上位机返回错误响应,返回步骤302;
具体的,本实施例中的步骤305-3具体为:判断PIN码校验操作是否成功执行,是则执行权限满足,否则执行权限不满足;
步骤306:输出操作次数等待用户确认,并判断是否接收到用户的确认信息,是则执行步骤307,否则给上位机返回错误响应,返回步骤302;
本实施例的步骤306具体包括:
步骤306-1:判断与确认键和取消键关联的CPU引脚电平是否为预设状态,是则执行步骤306-2,否则给上位机返回错误响应,返回步骤302;
步骤306-2:输出操作次数的提示信息,等待用户确认;
步骤306-3:判断与确认键关联的CPU引脚电平是否发生了变化,是则执行步骤307,否则给上位机返回取消响应,返回步骤302;
步骤307:对报文解析指令进行解析得到待签名报文,根据有效哈希算法对待签名报文进行计算并保存计算结果,从待签名报文中提取关键信息并存储到显示缓存区,给上位机返回成功响应,返回步骤302;
步骤308:将显示缓存区中存储的关键信息通过显示屏输出;
步骤309:当接收到按键信息时,判断按键信息类型是否为确认键,是则执行步骤310,否则根据按键类型进行相应操作,返回步骤302;
本实施例中,步骤309具体为:
步骤309-1:判断与确认键、取消键、上翻键、下翻键关联的CPU引脚的电平是否为预设值,是则执行步骤309-2,否则给上位机返回错误响应,返回步骤302;
步骤309-2:判断与确认键关联的引脚的电平是否发生了变化,则执行步骤310,否则给上位机返回错误响应,返回步骤302;
步骤310:使用有效用户私钥根据有效签名算法对保存的计算结果进行签名,对操作次数自加1,将签名结果返回给上位机,给所述上位机返回成功响应,返回步骤302;
在本实施例中操作次数的初始值为0。
本实施例中的设置算法指令、报文解析指令、报文签名指令也可通过下发两条指令或者下发一条指令实现,实现过程与实施例一中的方法相同,在此不再赘述。
为增强签名过程的安全性,本实施例中步骤310中签名之前需输出全部的关键信息并经用户确认后再进行签名,具体实现过程为:将步骤309和步骤310替换为:
步骤309’:当接收到按键信息时,检测按键信息的类型,如为取消键则输出取消提示信息,给上位机返回取消响应,返回步骤302;如为上翻页键则通过显示屏输出上一页的关键信息,返回步骤302;如为下翻页键则执行步骤310’;如为确认键则执行步骤311’;
步骤310’:通过显示屏输出下一页的关键信息,并判断关键信息是否全部输出,是则将报文显示完成标志设为有效,返回步骤302,否则,给上位机返回错误响应信息,返回步骤302;
步骤311’:判断报文显示完成标志是否有效,是则使用有效用户私钥根据有效哈希算法对保存的计算结果进行签名,将签名结果返回给上位机,给上位机返回成功响应,返回步骤302,否则给上位机返回错误响应信息,返回步骤302。
本实施方法还可通过设置允许签名标志来实现每次只能进行一笔交易,如要进行多笔交易必须重新插拔USB Key,增强网上交易的安全性;具体实现过程为:将步骤306和步骤310替换为步骤306”和步骤310”;
步骤306”:判断允许签名标志是否有效,是则执行步骤307,否则给上位机返回错误响应信息,返回步骤302;
步骤310”:判断报文显示完成标志是否有效,是则使用有效用户私钥根据有效哈希算法对保存的计算结果进行签名,并将签名结果返回给上位机,给所述上位机返回成功响应,将允许签名标志复位,返回步骤302,否则给上位机返回错误响应信息,返回步骤302;
本实施例的步骤301设备上电进行初始化时就将允许签名标志设为有效;或步骤301中设备上电时计时器开始计时,当计时器的计时到达预设值时,进入时钟中断;时钟中断的过程为:关闭时钟中断,并将允许签名标志设为有效,打开时钟中断。
实施例五
本发明实施例五提供一种签名方法,在该方法实现之前USB Key设备已与上位机进行了连接,指令下发的时,即计算签名指令包括设置算法指令、报文解析指令、报文签名指令;本实施例方法如图6和图7所示,包括:
步骤401:设备上电进行初始化;
本实施例中,操作次数在每次上电时都初始化为设定值;
步骤402:设备等待接收上位机下发的指令和按键信息;
步骤403:当设备接收到上位机下发的指令时,检测指令的类型,如为设置算法指令则执行步骤404;如为报文解析指令则执行步骤408;如为报文签名指令则执行步骤417,如为其他指令则根据指令进行相应操作,并将操作结果返回给上位机;
本实施例步骤403包括:当设备接收到上位机下发的指令时,检测指令的第一预设位置上的数据,如为0x001A,则表示接收的指令是报文解析指令;如为0x001B,则表示接收的指令是报文签名指令;如为0x001C,则表示接收的指令是设置算法指令;如为其他数据,则表示接收的指令是其他指令;具体的,第一预设位置为第一、二两个字节;
步骤404:根据设置算法指令中的算法标识判断是否支持哈希算法,是则执行步骤405,否则给上位机返回错误响应,返回步骤402;
具体的,在本实施例中步骤404包括:判断接收到的指令中的第三字节是否为第一预设字符,是则支持,否则不支持;第一预设字符为:SHA1或SHA256或SM3或MD5;
步骤405:将有效哈希算法标识置位;
步骤406:根据设置算法指令中的算法标识判断是否支持签名算法,是则执行步骤407,否则给上位机返回错误响应,返回步骤402;
具体的,在本实施例中步骤406包括:判断接收到的指令中的第四字节是否为第二预设字符,是则支持,否则不支持;第二预设字符为:RSA或SM2;
步骤407:将有效签名算法标识置位,根据设置算法指令中的密钥信息定位有效用户私钥,给上位机返回成功响应,返回步骤402;
本实施例中,签名算法标识和哈希算法标识置位则表示对应的签名算法和哈希算法有效;
步骤408:判断参数是否正确,是则执行步骤409,否则给上位机返回错误响应,返回步骤402;
本实施例中步骤408具体包括:
步骤408-1:判断报文解析指令的第二预设位置上的数据是否为预设数据串,是则执行步骤408-2,否则给上位机返回错误响应,返回步骤402;
步骤408-2:判断报文解析指令的第三预设位置上的数据的长度是否超过预设长度,是则给上位机返回错误响应,返回步骤402,否则执行步骤409;
具体的,第二预设位置为第三、四两个字节,预设数据串为3060;第三预设位置为第五字节,预设长度为1024;
步骤409:判断是否有有效哈希算法,是则执行步骤410,否则给上位机返回错误响应,返回步骤402;
步骤410:判断执行权限是否满足,是则执行步骤411,否则给上位机返回错误响应,返回步骤402;
本实施例中步骤410具体为:判断PIN码校验操作是否成功执行,是则执行步骤411,否则给上位机返回错误响应,返回步骤402;
步骤411:判断与确认键和取消键关联的CPU引脚电平是否为预设状态,是则执行步骤412,否则给上位机返回错误响应,返回步骤402;
步骤412:输出操作次数的提示信息,等待用户确认;
具体的,本实施例中,设备输出“第N笔交易,是否继续”的提示信息;
步骤413:判断与确认键关联的CPU引脚电平是否发生了变化,是则执行步骤416,否则执行步骤414;
步骤414:判断与取消键关联的CPU引脚电平是否发生了变化,是则输出取消提示信息,给上位机返回取消响应,返回步骤402,否则执行步骤415;
本实施例中的取消提示信息具体为“第N笔交易取消”;
步骤415:判断与确认键和取消键关联的CPU引脚电平未变化的时间是否超过允许值,是则输出取消提示信息,给上位机返回取消响应,返回步骤402,否则返回步骤413;
步骤416:根据有效哈希算法对接收到的报文进行计算并保存计算结果,并从接收到的报文中提取关键信息并将其保存到显示缓存区,给上位机返回成功响应,返回步骤402;
在本实施例中,例如:接收到的报文为:
<?xml version="1.0"encoding="utf-8"?>
<SignData>
<Fields>
<AccountNo>6221286897001330</PayerAccountNo>
<AccountName>张三</PayerAccountName>
<AccountNoName=:“收款账号”:>6221286897001736<PayerAccountNo>
<AccountName name=“收款户名:”>李四<PayerAccountName>
<TrsAmount name=“交易金额:”>100.00</TrsAmount>
<TrsAmount upper=“金额大写:”>壹佰元整</TrsAmount>
<TrsAmount number=“流水号:”>1234567890</TrsAmount>
<TrsAmount use=“备注:”>网上购物</TrsAmount>
</Fields>
</SignData>
从上述接收到的报文中提取出的关键信息为:
收款账号:6221286897001736
收款户名:李四
交易金额:100.00;
金额大写:壹佰元整
备注:网上购物
步骤417:判断与确认键、取消键、上翻键、下翻键关联的CPU引脚的电平是否为预设值,是则执行步骤418,否则给上位机返回错误响应,返回步骤402;
步骤418:从显示缓存区中读取一个字符;
在本实施例中,显示缓存区保存的是报文中提取出的关键信息的gbk编码(英文全称:Chinese Internal Code Specification,中文全称:汉字内码扩展规范)或万国码;
步骤419:对读取的字符进行编码转换,根据转换后的编码读出字模数据,将字模数据通过显示屏进行输出;
步骤420:判断是否读取完显示缓存区中的所有字符,是则将报文显示完成标志设为有效,执行步骤422,否则执行步骤421;
本实施例中,设置读取次数初始值为0,每次读取一个字符后读取个数自加1,步骤420具体为:判断读取个数是否等于显示缓存区中的字符数量,是则读取完所有字符,否则未读取完;
本实施例中的步骤420还有另一种实现方式,设置读取次数初始值为显示缓存区中的字符的数量,每次读取一个字符后读取次数自减1,步骤420具体为:判断读取次数是否为0,是则读取完所有字符,否则未读取完;
步骤421:判断显示屏上是否有显示空间,是则执行步骤429,否则执行步骤422;
本实施例中,每次在显示屏上输出字模数据时记录显示位置,步骤421具体为:判断显示位置是否超过屏幕的最大行值和最大列值,是则显示屏上无显示空间,否则显示屏上有显示空间;
步骤422:判断是否与确认键、取消键、上翻键、下翻键关联的引脚发生电平变化,是则执行步骤424,否则执行步骤423;
步骤423:判断与确认键、取消键、上翻键、下翻键关联的CPU引脚电平未变化的时间是否超过允许值,是则输出超时提示信息,清除签名相关环境变量,给上位机返回超时响应,返回步骤402,否则返回步骤422;
步骤424:判断与确认键关联的CPU引脚电平是否发生了变化,是则执行步骤425,否则执行步骤427;
步骤425:判断报文显示完成标志是否有效,是则执行步骤426,否则执行步骤431;
具体的,在本实施例中,判断报文显示完成标志是否置位,是则有效,否则无效;
步骤426:使用有效用户私钥根据有效签名算法对保存的哈希计算结果进行签名,将操作次数加1,将签名结果返回给上位机,给上位机返回签名完成响应,返回步骤402;
本实施例中的操作次数初始值为0;
步骤427:判断与取消键关联的CPU引脚电平是否发生了变化,是则执行步骤428,否则执行步骤429;
步骤428:输出取消提示信息,清除签名相关环境变量,给上位机返回取消响应,返回步骤402;
本实施例相关变量包括:哈希、签名算法、哈希算法标志、关键信息、报文显示完成标志;
步骤429:判断与下翻键关联的CPU引脚电平是否发生了变化,是则执行步骤430,否则执行步骤436;
步骤430:判断是否读取完显示缓存区中的所有字符,是则执行步骤422,否则返回步骤431;
步骤431:更新已显示字符数量,并将其保存;
具体的,在本实施例中,在保存第NUM页已显示字符数量的变量序列中的第NUM个位置保存已显示字符数;
步骤432:判断显示屏上是否有显示空间,是则执行步骤433,否则执行步骤422;
本实施例中该步骤的实现过程与步骤421相同,在此不再赘述;
步骤433:从显示缓存区中读取下一个字符,对读取的字符进行编码转换,根据转换后的编码读出字模数据,将字模数据通过显示屏进行输出;
具体的,本实施例中,根据存储的已显示字符数量从显示缓存区读取的下一个字符;
步骤434:判断是否读取完显示缓存区中的所有字符,是则执行步骤435,否则返回步骤432;
步骤435:将报文显示完成标志设为有效,返回执行步骤422;
步骤436:判断与上翻键关联的CPU引脚电平是否发生了变化,是则执行步骤437,否则执行步骤422;
步骤437:判断是否读取完显示缓存区中的所有字符,是则返回步骤422,否则返回步骤438;
步骤438:判断显示屏上是否有显示空间,是则执行步骤439,否则执行步骤422;
步骤439:根据已显示字符数量从显示缓存区中读取对应的字符,对读取的字符进行编码转换,根据转换后的编码读出字模数据,将字模数据通过显示屏进行输出;
步骤440:判断显示屏上是否有显示空间,是则执行步骤441,否则执行步骤422;
步骤441:从显示缓存区中读取下一个字符编码,对读取的字符进行编码转换,根据转换后的编码读出字模数据,将字模数据通过显示屏进行输出,返回步骤440。
本实施例中的方法还可以是上位机将报文解析过程和签名过程通过一条指令下发给设备,则将步骤403替换为步骤403’,步骤416替换为步骤416’;
步骤403’:当设备接收到上位机下发的指令时,检测指令的类型,如为设置算法指令则执行步骤404;如为报文解析签名指令则执行步骤408;如为其他指令则根据指令进行相应操作;
步骤416’:对接收到的报文进行哈希计算并保存计算结果,从接收到的报文中提取关键信息并将其保存到显示缓存区,执行步骤417。
实施例六
本发明实施例六提供一种签名方法,在该方法实现之前USB Key设备已与上位机建立了连接,本实施例中的签名过程通过三条指令实现且算法标识和密钥信息是上位机通过指令下发的时,即计算签名指令包括设置算法指令、报文解析指令、报文签名指令;本实施例方法如图8和图9所示,包括:
步骤601:设备上电进行初始化,并将允许签名标志设为有效;
步骤602:设备等待接收上位机下发的指令和按键信息;
步骤603:当设备接收到上位机下发的指令时,检测指令的类型,如为设置算法指令则执行步骤604;如为报文解析指令则执行步骤608;如为报文签名指令则执行步骤613,如为其他指令则根据指令进行相应操作,并将操作结果返回给上位机;
本实施例步骤603包括:当设备接收到上位机下发的指令时,检测指令的第一预设位置上的数据,如为0x001A,则表示接收的指令是报文解析指令;如为0x001B,则表示接收的指令是报文签名指令;如为0x001C,则表示接收的指令是设置算法指令;如为其他数据,则表示接收的指令是其他指令;具体的,第一预设位置为第一、二两个字节;
步骤604:根据设置算法指令中的算法标识判断是否支持哈希算法,是则执行步骤605,否则给上位机返回错误响应,返回步骤602;
具体的,在本实施例中步骤604包括:判断接收到的指令中的第三字节上的数据是否为第一预设字符,是则支持,否则不支持;第一预设字符为:SHA1或SHA256或SM3或MD5;
步骤605:将哈希算法标识置位;
步骤606:根据设置算法指令中的算法标识判断是否支持签名算法,是则执行步骤607,否则给上位机返回错误响应,返回步骤602;
具体的,在本实施例中步骤606包括:判断接收到的指令中的第四字节上的数据是否为第二预设字符,是则支持,否则不支持;第二预设字符为:RSA或SM2;
步骤607:将签名算法标识置位,根据设置算法指令中的密钥信息定位有效用户私钥,给上位机返回成功响应,返回步骤602;
步骤608:判断参数是否正确,是则执行步骤609,否则给上位机返回错误响应,返回步骤602;
本实施例中步骤608具体包括:
步骤608-1:判断第二预设位置上的数据是否为预设数据,是则执行步骤608-2,否则给上位机返回错误响应,返回步骤602;
步骤608-2:判断第三预设位置上的数据的长度是否超过预设长度,是则给上位机返回错误响应,返回步骤602,否则执行步骤609;
具体的,第二预设位置为第三、四两个字节,预设数据为0x30、0x60;第三预设位置为第五字节,预设长度为1024;
步骤609:判断是否有有效哈希算法,是则执行步骤610,否则给上位机返回错误响应,返回步骤602;
步骤610:判断执行权限是否满足,是则执行步骤611,否则给上位机返回错误响应,返回步骤202;
本实施例中步骤610具体为:判断PIN码校验操作是否成功执行,是则执行步骤611,否则给上位机返回错误响应,返回步骤602;
步骤611:判断允许签名标志是否有效,是则执行步骤612,否则给上位机返回错误响应,返回步骤602;
步骤612:根据有效哈希算法对报文解析指令中的报文进行计算并保存计算结果,并从报文中提取关键信息并将其保存到显示缓存区,计算关键信息的长度并进行存储,给上位机返回成功响应,返回步骤602;
步骤613:判断与确认键、取消键、上翻键、下翻键关联的CPU引脚的电平是否为预设值,是则执行步骤614,否则给上位机返回错误响应,返回步骤602;
步骤614:将允许签名标志设为无效,从显示缓存区中读取一个字符;
步骤615:对读取的字符进行编码转换,根据转换后的编码读出字模数据,将字模数据通过显示屏进行输出;
步骤616:判断是否读取完显示缓存区中的所有字符,是则将报文显示完成标志设为有效,执行步骤618,否则执行步骤617;
本实施例中该步骤的实现过程可参考实施例四中的步骤420,在此不再赘述;
步骤617:判断显示屏上是否有显示空间,是则执行步骤625,否则执行步骤618;
本实施例判断显示屏上是否有显示空间与实施例中的步骤421的方法相同;
步骤618:判断是否与确认键、取消键、上翻键、下翻键关联的引脚发生电平变化,是则执行步骤620,否则执行步骤619;
步骤619:判断与确认键、取消键、上翻键、下翻键关联的CPU引脚电平未变化的时间是否超过允许值,是则输出超时提示信息,清除签名相关环境变量,给上位机返回超时响应,返回步骤602,否则返回步骤618;
步骤620:判断与确认键关联的CPU引脚电平是否发生了变化,是则执行步骤621,否则执行步骤623;
步骤621:判断报文显示完成标志是否有效,是则执行步骤622,否则执行步骤627;
具体的,在本实施例中,判断报文显示完成标志是否置位,是则有效,否则无效;
步骤622:使用有效用户私钥根据有效签名算法对保存的哈希计算结果进行签名,将允许签名标志复位,将签名结果返回给上位机,给上位机返回签名完成响应,返回步骤602;
步骤623:判断与取消键关联的CPU引脚电平是否发生了变化,是则执行步骤624,否则执行步骤625;
步骤624:输出取消提示信息,清除签名相关环境变量,给上位机返回取消响应,返回步骤602;
本实施例相关变量包括:签名算法标识、哈希算法标识、关键信息、报文显示完标志;
步骤625:判断与下翻键关联的CPU引脚电平是否发生了变化,是则执行步骤626,否则执行步骤632;
步骤626:判断是否读取完显示缓存区中的所有字符,是则执行步骤618,否则返回步骤627;
步骤627:更新已显示字符数量,并将其保存;
具体的,在本实施例中,在保存第NUM页已显示字符数量的变量序列中的第NUM个位置,保存已显示字符数;
步骤628:判断显示屏上是否有显示空间,是则执行步骤629,否则执行步骤618;
步骤629:从显示缓存区中读取下一个字符,对读取的字符进行编码转换,根据转换后的编码读出字模数据,将字模数据通过显示屏进行输出;
具体的,本实施例中,根据存储的已显示字符数量从显示缓存区中读取下一个字符;
步骤630:判断是否读取完显示缓存区中的所有字符,是则执行步骤631,否则返回步骤628;
步骤631:将报文显示完成标志设为有效,返回执行步骤618;
步骤632:判断与上翻键关联的CPU引脚电平是否发生了变化,是则执行步骤633,否则执行步骤618;
步骤633:判断是否读取完显示缓存区中的所有字符,是则返回步骤618,否则返回步骤634;
步骤634:判断显示屏上是否有显示空间,是则执行步骤635,否则执行步骤618;
步骤635:根据已显示字符数量从显示缓存区中读取对应的字符,对读取的字符进行编码转换,根据转换后的编码读出字模数据,将字模数据通过显示屏进行输出;
步骤636:判断显示屏上是否有显示空间,是则执行步骤637,否则执行步骤618;
步骤637:从显示缓存区中读取下一个字符,对读取的字符进行编码转换,根据转换后的编码读出字模数据,将字模数据通过显示屏进行输出,返回步骤636。
本实施例中的签名方法还有另一种实现方式,设备进行连续签名时需要间隔一定时间,在完成一次签名后,开启计时器;当计时器到达预设值(如1分钟)时进入时钟中断,时钟中断处理过程如下:
步骤a1:关闭时钟中断;
步骤a2:将允许签名标志设为有效。
本实施例中的步骤601替换为步骤601’;
步骤601’:设备上电进行初始化。
本实施例中的设置哈希算法和签名算法操作、报文解析操作、报文签名操作可通过一条指令来实现,具体实现过程为:
步骤603替换为:当设备接收到上位机下发的指令时,判断接收到的指令是否为设置解析签名指令,是则执行步骤604;否则根据指令进行相应操作,并将操作结果返回给上位机;
步骤607执行完不给上位机返回成功响应,顺序执行步骤608;步骤612执行完后不给上位机返回成功响应,直接执行步骤613。
以上,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (22)
1.一种签名方法,其特征在于,包括:
步骤s1:设备上电,进行初始化;
步骤s2:所述设备等待接收指令和按键信息;
步骤s3:当所述设备接收到上位机下发的指令时,判断所述接收到的指令是否为计算签名指令,是则执行步骤s4-11;否则根据指令进行相应操作,并将操作结果返回给上位机,返回步骤s2;
步骤s4-11:判断报文解析指令的第二预设位置上的数据是否为预设数据串,是则执行步骤s4-12,否则给上位机返回错误响应,返回步骤s2;
步骤s4-12:判断所述报文解析指令的第三预设位置上的数据的长度是否大于预设长度值,是则给上位机返回错误响应,返回步骤s2,否则执行步骤s4-2;
步骤s4-2:判断是否有有效哈希算法,是则执行步骤s4-3,否则给上位机返回错误响应,返回步骤s2;
步骤s4-3:判断PIN码校验操作是否成功执行,是则执行步骤s5,否则给上位机返回错误响应,返回步骤s2;
步骤s5:对所述计算签名指令进行解析得到待签名报文,根据有效哈希算法对所述待签名报文进行计算并保存计算结果,从所述待签名报文中提取关键信息并存储到显示缓存区;
步骤s6:将所述显示缓存区中存储的关键信息通过显示屏输出,并等待接收按键信息;
步骤s7:当接收到按键信息时,检测所述按键信息的类型,如为取消信息则输出取消提示信息,给上位机返回取消响应,返回步骤s2;如为上翻页信息则通过显示屏输出上一页的关键信息,返回步骤s2;如为下翻页信息则执行步骤s8;如为确认信息则执行步骤s9;
步骤s8:判断关键信息是否全部输出,是则返回步骤s2,否则通过显示屏继续输出下一页的关键信息,返回步骤s2;
步骤s9:判断关键信息是否全部输出,是则使用所述有效用户私钥根据有效签名算法对所述保存的计算结果进行签名,将签名结果返回给上位机,给上位机返回成功响应,返回步骤s2,否则通过显示屏继续输出下一页关键信息,返回步骤s2。
2.如权利要求1所述的方法,其特征在于,所述步骤s8和步骤s9替换为:
步骤s80:通过显示屏继续输出下一页的关键信息,并判断所述关键信息是否全部输出,是则将报文显示完成标志设为有效,返回步骤s2,否则返回步骤s2;
步骤s90:判断报文显示完成标志是否有效,是则使用所述有效用户私钥根据有效签名算法对所述保存的计算结果进行签名,将签名结果返回给上位机,给上位机返回成功响应,返回步骤s2,否则返回步骤s80。
3.如权利要求1所述的方法,其特征在于,在所述步骤s3和步骤s4之间包括步骤s3’;
步骤s3’:根据当前算法标识设置有效哈希算法和有效签名算法,根据密钥信息定位有效用户私钥。
4.如权利要求3所述的方法,其特征在于,所述算法标识和密钥信息是预先设置的或上位机通过指令下发的。
5.如权利要求3所述的方法,其特征在于,所述计算签名指令包括设置算法指令、报文解析指令、报文签名指令;
所述步骤s3替换为:当所述设备接收到上位机下发的指令时,检测指令的类型,如为设置算法指令,则执行步骤s3’,如为报文解析指令则执行步骤s4,如为报文签名指令则执行步骤s6;
其中在步骤s3’之后,给所述上位机返回成功响应,返回步骤s2;
在步骤s4中对所述报文解析指令进行解析得到待签名报文;
其中在步骤s5之后,给所述上位机返回成功响应,返回步骤s2。
6.如权利要求3所述的方法,其特征在于,所述计算签名指令包括设置算法指令、报文解析签名指令;
所述步骤s3替换为:当所述设备接收到上位机下发的指令时,检测指令的类型,如为设置算法指令,则执行步骤s3’,如为报文解析签名指令则执行步骤s4;
其中在步骤s3’之后,给所述上位机返回成功响应,返回步骤s2;
在步骤s4中对所述报文解析签名指令进行解析得到待签名报文。
7.如权利要求1所述的方法,其特征在于,所述计算签名指令包括报文解析指令、报文签名指令;
所述步骤s3替换为:当所述设备接收到上位机下发的指令时,检测指令的类型,如为报文解析指令则执行步骤s4,如为报文签名指令则执行步骤s6;
在步骤s4中对所述报文解析指令进行解析得到待签名报文;
其中在步骤s5之后,给所述上位机返回成功响应,返回步骤s2。
8.如权利要求5或7所述的方法,其特征在于,
所述步骤s5和步骤s6替换为:
步骤s5”’:对所述报文解析指令进行解析得到待签名报文,根据预设算法对所述待签名报文进行计算并保存计算结果,从所述待签名报文中提取关键信息,并通过显示屏输出所述关键信息,并给上位机返回成功响应,返回步骤s2;
步骤s6”’:等待接收用户的确认信息。
9.如权利要求1所述的方法,其特征在于,所述步骤s4与步骤s5之间包括:输出操作次数等待用户确认,并判断是否接收到用户的确认信息,是则执行步骤s5,否则给上位机返回错误响应,返回步骤s2;
所述步骤s9判断为是时还包括:对所述操作次数自加1。
10.如权利要求9所述的方法,其特征在于,所述步骤s5替换为s5’,所述步骤s7-步骤s9替换为步骤s7’-步骤s8’;
步骤s5’:输出操作次数等待用户确认,并判断是否接收到用户的确认信息,是则对所述计算签名指令进行解析得到待签名报文,根据有效哈希算法对所述待签名报文进行计算并保存计算结果,从所述待签名报文中提取关键信息并存储到显示缓存区,给上位机返回成功响应,返回步骤s2;否则给上位机返回错误响应,返回步骤s2;
步骤s7’:当接收到按键信息时,判断按键信息类型,如为确认键则执行步骤s8’,如为取消信息则输出取消提示信息,给上位机返回取消响应,返回步骤s2;如为上翻页信息则通过显示屏输出上一页的关键信息,返回步骤s2;如为下翻页信息则执行步骤71’;
步骤71’:判断关键信息是否全部输出,是则返回步骤s2,否则通过显示屏继续输出下一页的关键信息,返回步骤s2;
步骤s8’:使用所述有效用户私钥根据有效签名算法对所述保存的计算结果进行签名,对所述操作次数自加1,将签名结果返回给上位机,给所述上位机返回成功响应,返回步骤s2。
11.如权利要求10所述的方法,其特征在于,所述步骤s5’和步骤s8’替换为步骤s5”和步骤s8”;
步骤s5”:判断允许签名标志是否有效,是则对所述计算签名指令进行解析得到待签名报文,根据有效哈希算法对所述待签名报文进行计算并保存计算结果,从所述待签名报文中提取关键信息并存储到显示缓存区,给上位机返回成功响应,返回步骤s2;否则给上位机返回错误响应,返回步骤s2;
步骤s8”:判断报文显示完成标志是否有效,是则使用所述有效用户私钥根据有效签名算法对所述保存的计算结果进行签名,并将签名结果返回给上位机,给所述上位机返回成功响应,将所述允许签名标志复位,返回步骤s2,否则给上位机返回错误响应信息,返回步骤s2。
12.如权利要求11所述的方法,其特征在于,所述步骤s1中进行初始化包括:将所述允许签名标志设为有效。
13.如权利要求11所述的方法,其特征在于,还包括:所述设备上电时计时器开始计时,当所述计时器的计时到达预设值时,进入时钟中断;
所述时钟中断的过程为:关闭时钟中断,并将所述允许签名标志设为有效,打开时钟中断。
14.如权利要求3所述的方法,其特征在于,所述步骤s3’包括:
步骤s3’-1:根据当前算法标识判断是否支持哈希算法,是则设置有效哈希算法,继续,否则给上位机返回错误响应,返回步骤s2;
步骤s3’-2:根据当前算法标识判断是否支持签名算法,是则设置有效签名算法,继续,否则给上位机返回错误响应,返回步骤s2;
步骤s3’-3:根据所述密钥信息中的密钥ID和用途信息定位有效用户私钥。
15.如权利要求14所述的方法,其特征在于,所述步骤s3’-1具体为:判断接收到的指令中的第三字节上的数据是否为第一预设字符,是则支持,否则不支持;
所述步骤s3’-2具体为:判断接收到的指令中的第四字节上的数据是否为第二预设字符,是则支持,否则不支持。
16.如权利要求9或10所述的方法,其特征在于,所述输出操作次数等待用户确认,并判断是否接收到用户的确认信息,包括:
步骤p1:判断与确认键和取消键关联的CPU引脚电平是否为预设状态,是则执行步骤p2,否则给上位机返回错误响应,返回步骤s2;
步骤p2:输出所述操作次数的提示信息,等待用户确认;
步骤p3:判断与确认键关联的CPU引脚电平是否发生了变化,是则继续,否则给上位机返回取消响应,返回步骤s2。
17.如权利要求2所述的方法,其特征在于,所述步骤s6-步骤s80具体为:
步骤h1:从所述显示缓存区中读取字符并记录开始读取时的位置;
步骤h2:将所述读取的字符进行编码转换并根据转换后的编码从字库中读出对应的字模数据,将所述字模数据通过所述显示屏进行输出;
步骤h3:判断所述显示屏上是否有显示空间,是则执行步骤h4,否则执行步骤h5;
步骤h4:判断是否读取完所述显示缓存区中的字符,是则将所述报文显示完成标志设为有效,执行步骤h5,否则继续从所述显示缓存区中读取字符,返回步骤h2;
步骤h5:判断在预设时间内是否接收到按键信息,是则执行步骤h6,否则给上位机返回错误响应,返回步骤s2;
步骤h6:检测所述按键信息的类型,如为确认信息则执行步骤s10,如为取消信息则输出取消提示信息,给上位机返回取消响应,返回步骤s2,如为下翻页信息则执行步骤h7,如为上翻页信息则执行步骤h8;
步骤h7:判断是否读取完所述显示缓存区中的字符,是则返回步骤s2,否则继续从所述显示缓存区中读取字符并记录开始读取时的位置,返回步骤h2;
步骤h8:根据记录的所述读取位置从所述显示缓存区中读取字符,返回步骤h2。
18.如权利要求17所述的方法,其特征在于,在所述显示屏上输出所述字模数据时记录显示位置,所述步骤h3具体为:判断所述显示位置是否超过所述显示屏的最大行值和最大列值,是则所述显示屏上无显示空间,否则所述显示屏上有显示空间。
19.如权利要求17所述的方法,其特征在于,读取个数初始值为0,每次读取一个字符后所述读取个数自加1,所述步骤h4具体为:判断所述读取个数是否等于所述显示缓存区中的字符的数量,是则读取完,否则未读取完。
20.如权利要求17所述的方法,其特征在于,读取次数初始值为所述显示缓存区中的字符的数量,每次读取一个字符后所述读取次数自减1,所述步骤h4具体为:判断读取次数是否为0,是则读取完所有字符,否则未读取完。
21.如权利要求17所述的方法,其特征在于,在所述步骤h1之前包括:判断与确认键、取消键、上翻键、下翻键关联的CPU引脚的电平是否为预设值,是则执行步骤h1,否则给上位机返回错误响应,返回步骤s2;
所述步骤h5具体包括:判断与按键关联的引脚的电平是否发生了变化,是则接收到按键信息,否则未接收到按键信息;
所述步骤h6具体包括:检测电平发生变化的引脚类型,如为确认键关联的CPU引脚则为确认信息;如为取消键关联的CPU引脚则为取消信息;如为下翻键关联的CPU引脚则为下翻页信息;如为上翻键关联的CPU引脚则为上翻页信息。
22.如权利要求10所述的方法,其特征在于,所述s7’包括:
步骤s7’-1:当接收到按键信息时,判断与确认键、取消键、上翻键、下翻键关联的CPU引脚的电平是否为预设值,是则执行步骤s7’-2,否则给上位机返回错误响应,返回步骤s2;
步骤s7’-2:判断与确认键关联的引脚的电平是否发生了变化,则执行步骤s8’,否则给上位机返回错误响应,返回步骤s2。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310151280.1A CN103235911B (zh) | 2013-04-27 | 2013-04-27 | 一种签名方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310151280.1A CN103235911B (zh) | 2013-04-27 | 2013-04-27 | 一种签名方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103235911A CN103235911A (zh) | 2013-08-07 |
CN103235911B true CN103235911B (zh) | 2015-09-23 |
Family
ID=48883951
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310151280.1A Active CN103235911B (zh) | 2013-04-27 | 2013-04-27 | 一种签名方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103235911B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103488946A (zh) * | 2013-09-27 | 2014-01-01 | 深圳市文鼎创数据科技有限公司 | 确保待签名信息被完整查阅的方法及装置 |
CN103530181A (zh) * | 2013-10-21 | 2014-01-22 | 深圳市文鼎创数据科技有限公司 | 电子签名工具界面切换方法、装置以及电子签名工具 |
CN103729588B (zh) * | 2013-12-25 | 2016-04-06 | 飞天诚信科技股份有限公司 | 一种签名设备的签名方法 |
CN104536712B (zh) * | 2014-12-22 | 2017-11-28 | 飞天诚信科技股份有限公司 | 一种音频设备适应不同移动设备音频口位置的方法 |
CN104950814A (zh) * | 2015-06-29 | 2015-09-30 | 贵州桂荣科技有限公司 | 一种外加式电子手环组装设备自动控制系统 |
CN105116841A (zh) * | 2015-06-29 | 2015-12-02 | 贵州桂荣科技有限公司 | 一种外加式电子手环组装设备控制系统 |
CN105376067A (zh) * | 2015-12-18 | 2016-03-02 | 恒宝股份有限公司 | 一种数字签名方法及系统 |
CN107609872A (zh) * | 2017-09-07 | 2018-01-19 | 北京海泰方圆科技股份有限公司 | 交易报文处理及发送方法和装置 |
CN109905245B (zh) * | 2019-02-28 | 2021-08-31 | 北京华大智宝电子系统有限公司 | 签名方法及装置 |
CN112307518A (zh) * | 2020-10-16 | 2021-02-02 | 神州融安科技(北京)有限公司 | 签名信息处理、显示方法、装置、电子设备及存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101599836B (zh) * | 2009-07-14 | 2011-12-28 | 北京坚石诚信科技有限公司 | 一种签名方法、签名设备和系统 |
CN103065079B (zh) * | 2012-12-21 | 2015-06-17 | 飞天诚信科技股份有限公司 | 一种防骗签的方法 |
CN103067175B (zh) * | 2012-12-27 | 2015-04-15 | 飞天诚信科技股份有限公司 | 一种对显示信息进行筛选的方法 |
-
2013
- 2013-04-27 CN CN201310151280.1A patent/CN103235911B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN103235911A (zh) | 2013-08-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103235911B (zh) | 一种签名方法 | |
CN104462965B (zh) | 应用程序完整性验证方法及网络设备 | |
CN107463838B (zh) | 基于sgx的安全监控方法、装置、系统及存储介质 | |
CN101950336B (zh) | 一种清除恶意程序的方法和装置 | |
CN103002445A (zh) | 一种安全的提供应用服务的移动电子设备 | |
CN106716952A (zh) | 用于对安全异常进行分布式检测的技术 | |
Lu et al. | AutoD: Intelligent blockchain application unpacking based on JNI layer deception call | |
CN106056017B (zh) | 智能卡cos加密下载系统 | |
WO2016192453A1 (zh) | 一种安全控制方法、装置和终端 | |
CN104573591B (zh) | 一种安全读卡器及其工作方法 | |
CN103246839A (zh) | 一种智能密钥设备的工作方法 | |
WO2016107332A1 (zh) | 一种基于卡片的动态口令生成方法及设备 | |
CN103299284A (zh) | 数据安全读取方法及装置 | |
CN109241707A (zh) | 应用程序的混淆方法、装置和服务器 | |
CN111182060A (zh) | 报文的检测方法及装置 | |
CN101763477B (zh) | 一种智能密钥装置的签名方法 | |
CN101420299B (zh) | 提高智能密钥设备稳定性的方法和智能密钥设备 | |
CN106507352A (zh) | 短信验证码的网站识别方法及识别终端 | |
CN103152724B (zh) | 一种硬件锁sim卡的方法及系统 | |
CN104239792A (zh) | 一种基于云的二维码安全防护方法及装置 | |
CN111125707A (zh) | 一种基于可信密码模块的bmc安全启动方法、系统及设备 | |
CN109697366A (zh) | 一种基于钩子的Android文件透明加解密方法 | |
CN105978878B (zh) | 网页验证方法及装置 | |
CN103152356A (zh) | 检测文件样本安全性的方法、服务器和系统 | |
CN102012978A (zh) | Iso文件安全升级的方法及系统 |
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 |