CN103268437B - 一种提高签名数据安全性的方法 - Google Patents
一种提高签名数据安全性的方法 Download PDFInfo
- Publication number
- CN103268437B CN103268437B CN201310170475.0A CN201310170475A CN103268437B CN 103268437 B CN103268437 B CN 103268437B CN 201310170475 A CN201310170475 A CN 201310170475A CN 103268437 B CN103268437 B CN 103268437B
- Authority
- CN
- China
- Prior art keywords
- signature
- result
- mark
- steps
- resetted
- 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
Landscapes
- Storage Device Security (AREA)
Abstract
本发明公开一种提高签名数据安全性的方法,涉及信息安全领域,是为解决待签名数据来源的不可靠性,达到防止骗签的目的而发明。本方法包括,设备从第一哈希命令中获取交易报文,解析交易报文,从交易报文中获取交易信息封装标识,如确定交易信息封装标识合法,则获取交易信息封装,对交易信息封装进行哈希得到第二哈希结果,对交易报文进行哈希得到第一哈希结果,按照第二格式填充第一哈希结果和第二哈希结果,将得到的填充结果作为第二填充结果,等待接收按键消息,若收到按键消息,则用指定私钥对所述第二填充结果进行签名,得到第二签名结果,保存第二签名结果。<!--1-->
Description
技术领域
本发明涉及信息安全领域,尤其涉及一种提高签名数据安全性的方法。
背景技术
USBKey是一种USB接口的硬件设备,主要用于网络认证方面,它内置单片机或智能卡芯片,有一定的存储空间,可以存储用户的私钥以及数字证书,利用USBKey内置的密钥算法实现对用户身份的认证。
在现有技术中,USBKey处理的是由上位机对命令进行解析后得到的解析结果,当交易型数据和非交易型数据采用相同的算法进行签名时,后台无法保障消息来源的准确性,从而无法实现防止骗签的目的。
发明内容
为解决现有技术存在的缺陷,本发明提供了一种提高签名数据安全性的方法。
一种提高签名数据安全性的方法,包括:
步骤S1:设备等待接收命令;
步骤S2:当接收到命令时,判断接收到的命令的类型;如是第一哈希命令则执行步骤S3;如是签名命令则执行步骤S5;如是其他命令,则执行相应操作,返回步骤S1;
步骤S3:从所述第一哈希命令中获取交易报文,解析所述交易报文,从所述交易报文中获取交易信息封装标识,判断所述交易信息封装标识是否合法,若合法,则获取交易信息封装,执行步骤S4;若不合法则报错,返回步骤S1;
步骤S4:对所述交易信息封装进行哈希得到第二哈希结果,保存所述第二哈希结果,对所述交易报文进行哈希得到第一哈希结果,保存所述第一哈希结果,将签名类型标识置为交易型签名,返回步骤S1;
步骤S5:判断签名类型标识是否为交易型签名,是则执行步骤S6;否则,按照第一格式填充保存在第一缓存区中的普通签名数据,得到第一填充结果,用指定私钥对所述第一填充结果进行签名,得到第一签名结果,将签名类型标识复位,返回步骤S1;
步骤S6:按照第二格式填充第一哈希结果和第二哈希结果,将得到的填充结果作为第二填充结果,等待接收按键消息,判断是否接收到按键消息,是则用指定私钥对所述第二填充结果进行签名,得到第二签名结果,保存所述第二签名结果;否则,将签名类型标识复位,返回步骤S1。
所述步骤S1之前还包括,设备上电进行初始化,将签名状态标识复位、将签名类型标识复位,将允许按键标识复位,将超时标识复位。
所述其他命令还包括,安全环境控制命令,第二哈希命令,获取签名结果命令;所述步骤S2中如是其他命令,则执行相应操作,返回步骤S1,包括:
如果是安全环境控制命令,则检测预存的密钥和预存的算法是否有效,是则对所述算法进行初始化,清空第一缓存区、第二缓存区、第三缓存区、第四缓存区,将签名状态标识置为第一标识,返回步骤S1;否则,报错,返回步骤S1;
如果是第二哈希命令,则判断签名状态标识是否为第一标识,如果是,则从所述第二哈希命令中获取普通签名数据,将所述普通签名数据保存至所述第一缓存区,将所述签名状态标识置为第二标识,将所述签名类型标识置为普通签名,返回步骤S1;否则,报错,将所述签名状态标识复位,返回步骤S1;
如果是获取签名结果命令,则将所述签名状态标识复位,将所述签名类型标识复位,将所述第二签名结果返回给上位机,返回步骤S1。
所述从所述第二哈希命令中获取普通签名数据,将所述普通签名数据保存至所述第一缓存区,将所述签名状态标识置为第二标识,具体为,
从所述第二哈希命令中获取普通签名数据和数据长度,判断所述数据长度是否与所述预存算法匹配,若匹配则将所述普通签名数据保存至所述第一缓存区,将所述签名状态标识置为第二标识;若不匹配,则报错,将所述签名状态标识复位,返回步骤S1。
所述从所述第二哈希命令中获取普通签名数据和数据长度,具体为,
获取所述第二哈希命令中第一预设字节上的数据为数据长度,根据所述数据长度从所述第一预设字节的下一个字节开始获取普通签名数据。
所述步骤S3之前还包括,判断所述签名状态标识是否为第一标识,如果是,则执行步骤S3;否则,报错,将签名状态标识复位,返回步骤S1。
所述从所述第一哈希命令中获取交易报文,具体为,
获取所述第一哈希命令中第一预设字节上的数据为所述第一哈希命令的数据长度,根据所述数据长度从所述第一预设字节的下一个字节开始获取交易报文。
所述步骤S3包括,
步骤A1:从所述第一哈希命令中获取交易报文,从所述交易报文中提取编码类型标识;
步骤A2:判断所述编码类型标识是否合法;
如果合法,则执行步骤A3;否则,报错,将所述签名状态标识复位,返回步骤S1;
步骤A3:从所述交易报文中的所述编码类型标识之后提取编码长度;
步骤A4:判断所述编码长度是否合法;
如果是,则执行步骤A5;否则,报错,将所述签名状态标识复位,返回步骤S1;
步骤A5:根据所述编码长度从所述交易报文中提取编码信息和文件类型标识;
步骤A6:判断所述文件类型标识是否合法,如果合法,则执行步骤A7;否则,报错,将所述签名状态标识复位,返回步骤S1;
步骤A7:从所述交易报文中提取所述文件类型标识后的文件长度;
步骤A8:判断所述文件长度是否合法;
如果合法,则执行步骤A9;否则,报错,将所述签名状态标识复位,返回步骤S1;
步骤A9:根据所述文件长度从所述交易报文中的所述文件长度之后提取文件内容,从所述交易报文中提取所述文件内容之后的交易信息封装标识;
步骤A10:判断所述交易信息封装标识是否合法,
若合法,则执行步骤A11;若不合法则,报错,将所述签名状态标识复位,返回步骤S1;
步骤A11:将所述交易报文中的所述交易信息封装标识及其之后的数据作为交易信息封装。
所述步骤S4中所述保存所述第二哈希结果之后还包括,
步骤A12:从所述交易报文中提取所述交易信息封装标识之后的交易信息长度;
步骤A13:判断所述交易信息长度是否合法,是则执行步骤A14;否则报错,将签名状态标识复位,返回步骤S1;
步骤A14:从所述交易报文中的所述交易信息长度之后提取第一信息块标识;
步骤A15:判断所述第一信息块标识是否合法,是则执行步骤A16;否则报错,将所述签名状态标识复位,返回步骤S1;
步骤A16:从所述交易报文中的所述第一信息块标识之后提取第一信息块编号和第一信息块长度;
步骤A17:判断所述第一信息块长度是否合法,是则执行步骤A18;否则报错,将所述签名状态标识复位,返回步骤S1;
步骤A18:根据所述第一信息块长度从所述交易报文中的所述第一信息块长度之后提取第一信息内容,并将所述第一信息内容保存至显示缓存区中,从所述交易报文中的第一信息内容之后提取下一个信息块标识作为第二信息块标识;
步骤A19:判断所述第二信息块标识是否合法,是则执行步骤A20;否则报错,将所述签名状态标识复位,返回步骤S1;
步骤A20:从所述交易报文中的所述第二信息块标识之后提取第二信息块编号;
步骤A21:判断所述第一信息块编号与所述第二信息块编号是否相同,是则执行步骤A22;否则报错,将所述签名状态标识复位,返回步骤S1;
步骤A22:从所述交易报文中的所述第二信息块编号之后提取第二信息块长度;
步骤A23:判断所述第二信息块长度是否合法,是则执行步骤A24;否则报错,将所述签名状态标识复位,返回步骤S1;
步骤A24:根据所述第二信息块长度从所述交易报文中的所述第二信息块长度之后提取第二信息内容,并将所述第二信息内容保存至显示缓存区;
步骤A25:判断所述交易报文中所述第二信息内容之后是否存在待解析的信息块,是则执行步骤A26;否则报错,返回步骤S1;
步骤A26:从所述交易报文中的所述第二信息内容之后提取信息块标识,并将其作为第一信息块标识,返回步骤A15。
所述步骤S4中所述保存第一哈希结果之后还包括,获取所述显示缓存区中的数据作为关键数据,显示所述关键数据。
所述保存第一哈希结果,具体为,将所述第一哈希结果保存至第二缓存区;
所述保存第一哈希结果之后还包括,将所述签名状态标识置为第二标识。
所述步骤S5之前还包括,判断所述签名状态标识是否为第二标识,是则执行步骤S5;否则报错,将所述签名状态标识复位,返回步骤S1。
所述步骤S5判断为否之后还包括,将所述签名状态标识复位。
所述按照第一格式填充第一缓存区中的普通签名数据,得到第一填充结果具体为,用SHA-1算法对所述普通签名数据进行计算,得到普通签名数据的计算结果,将预设字符串、普通签名数据的计算结果顺序拼接得到第一填充结果。
所述按照第二格式填充第一哈希结果和第二哈希结果,将得到的填充结果作为第二填充结果具体为,
用改造后的SHA-1算法分别对所述第一哈希结果和所述第二哈希结果进行计算,得到第一哈希结果的计算结果和第二哈希结果的计算结果;将预设字符串、改造后的SHA-1算法的ID、第一哈希结果的计算结果、改造后的SHA-1算法的ID、第二哈希结果的计算结果顺序拼接得到第二填充结果。
所述将得到的填充结果作为第二填充结果与等待接收按键消息之间包括,将允许按键标识置位;
所述判断是否接收到按键消息,具体为,判断预设时间内是否收到按键消息。
所述将允许按键标识置位之后还包括,打开定时器中断,定时器开始计时;
所述判断预设时间内是否收到按键消息的判断结果为否时,进入定时中断处理,所述定时中断处理包括,关闭定时器中断,将超时标识置位,关闭定时器,退出定时中断处理;
所述判断预设时间内是否收到按键消息的判断结果为是时还包括,
检测超时标识是否改变,若改变,则将所述签名状态标识复位,将所述签名类型标识复位,报错,返回步骤S1;否则,判断允许按键标识是否置位,若置位则继续执行;若未置位,则将所述签名类型标识复位,返回步骤S1;
所述保存所述第二签名结果具体为,将第二签名结果保存至第四缓存区,将签名状态标识置为第三标识;
所述保存所述第二签名结果之后还包括,将所述允许按键标识复位。
所述如果是获取签名结果命令,则将签名状态标识复位,将签名类型标识复位,将所述第二签名结果返回给上位机,返回步骤S1具体为,
如果是获取签名结果命令,则判断所述签名状态标识是否为第三标识,如果是,则将所述签名状态标识复位,将所述签名类型标识复位,从所述第四缓存区中获取第二签名结果,将所述第二签名结果返回给上位机,返回步骤S1;否则,将所述签名状态标识复位,将所述签名类型标识复位,返回步骤S1。
所述对算法进行初始化,清空第一缓存区、第二缓存区、第三缓存区、第四缓存区之后还包括,将允许按键标识复位。
本发明技术方案有益效果为:采用USBKey对命令进行解析,在USBKey中对交易型数据和非交易型数据采用相同的哈希算法进行计算,并分别对交易型数据的哈希运算结果和非交易型数据的哈希结果采用不同的方式进行填充,然后再进行签名,从而提高了签名数据的安全性,有效防止骗签。
附图说明
图1是本发明实施例1提供的一种提高签名数据安全性的方法流程图;
图2是本发明实施例1提供的一种提高签名数据安全性方法中的当接收到按键消息后的执行相应按键操作的流程图;
图3是本发明实施例1中步骤113的细化流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式做进一步地详细描述。
实施例1
参见图1,实施例1提供了一种提高签名数据安全性的方法,具体包括:
步骤101:USBKey上电进行初始化;
本实施例中,USBKey进行初始化操作具体为将签名状态标识复位、将签名类型标识复位,将允许按键标识复位。
本步骤还包括,将超时标识复位。
步骤102:等待接收命令;
步骤103:当接收到命令时,判断接收到的命令的类型;
如果是安全环境控制命令,则执行步骤104;
如果是第二哈希命令,则执行步骤107;
如果是第一哈希命令,则执行步骤111;
如果是签名命令,则执行步骤115;
如果是获取签名结果命令,则执行步骤120。
本实施例中,根据命令的命令头不同来判断收到的命令的类型;
如收到命令的命令头为002241B6则为安全环境控制命令;
如收到命令的命令头为002A9081则为第二哈希命令;
如收到命令的命令头为002A9080则为第一哈希命令;
如收到命令的命令头为002A9E00则为签名命令;
如收到命令的命令头为00380000则为获取签名结果命令。
步骤104:USBKey判断预存的密钥是否有效;
如果是,则执行步骤105;否则,报错,返回步骤102。
本实施例中,优选的,密钥为RSA密钥。
步骤105:USBKey判断预存算法是否合法;
如果是,则执行步骤106;否则,报错,返回步骤102。
本实施例中,如果预存算法是哈希算法则表示合法,否则不合法。
步骤106:初始化算法,清空第一缓存区、第二缓存区、第三缓存区、第四缓存区,将签名状态标识设置为MSE(ManageSecurityEnviroment,管理安全环境)成功,返回步骤102;
步骤107:判断签名状态标识是否为MSE成功;
如果是,则执行步骤108;否则,报错,将签名状态标识复位,返回步骤102。
步骤108:从第二哈希命令中获取普通签名数据和数据长度;
本实施例中,获取第二哈希命令的第五个字节的数据为第二哈希命令的数据长度,根据该数据长度从第二哈希命令的第六个字节开始获取普通签名数据。
步骤109:判断数据长度与预存算法是否匹配;
如果是,则执行步骤110;否则,报错,将签名状态标识复位,返回步骤102。
步骤110:将普通签名数据保存至第一缓存区,将签名状态标识设置为哈希成功,将签名类型标识设置为普通签名,返回步骤102;
步骤111:判断签名状态标识是否为MSE成功;
如果是,则执行步骤112;否则,报错,将签名状态标识复位,返回步骤102。
步骤112:从第一哈希命令中获取交易报文;
本实施例中,获取第一哈希命令的第五个字节为该命令的数据长度,根据该数据长度信息从第一哈希命令的第六个字节开始获取交易报文。
例如,获取到的交易报文为:
30323030303030303030303030303030303431303031
303130303030303030303030303030303534
303030303030313830303030303030376162632E747874616263
30303030303032303030303030303038746573742E74787474657374
303030303030303030303030303030323231
534e303130303136e8bdace585a5e8b4a6e688b7e58fb73a
5356303130303135323232323232323232323232323231
534e303230303139e8bdace585a5e8b4a6e688b7e5a793e5908d3a
5356303230303036e69d8ee59b9b
534e303330303231e8bdace8b4a6e98791e9a29d28e5b08fe58699293a
535630333030303831303030302e3030
444e303130303136e8bdace587bae8b4a6e688b7e58fb73a
4456303130303135323232323232323232323232323232
444e303230303139e8bdace587bae8b4a6e688b7e5a793e5908d3a
4456303230303036e5bca0e4b889;
步骤113:解析交易报文,判断交易报文格式是否正确,如果正确,则执行步骤114;否则,报错,将签名状态标识复位,然后返回步骤102;
交易报文包括编码头部、文件封装、交易信息封装;编码头部包括两个字节长度的编码类型标识、十六个字节长度的编码长度、编码信息;文件封装包括两个字节长度的文件类型标识、十六个字节长度的文件长度、文件内容;交易信息封装包括两个字节长度的交易信息封装标识、十六个字节长度的交易信息长度、交易信息;其中交易信息可包括1个或多个信息块,每个信息块由两个字节长度的信息块标识、两个字节长度的信息块编号、四个字节的信息块长度、以及信息内容组成。
具体的解析交易报文过程,如图3所示包括步骤A1至步骤A26,
步骤A1:提取交易报文的前两个字节数据为编码类型标识;
步骤A2:判断该编码类型标识是否合法;
如果合法,则执行步骤A3;否则,报错,将签名状态标识复位,返回步骤102。
其中,当编码类型标识为3032时合法。
步骤A3:从交易报文中的编码类型标识之后提取十六个字节长度的数据为编码长度;
步骤A4:判断该编码长度是否合法;
如果是,则执行步骤A5;否则,报错,将签名状态标识复位,返回步骤102。
步骤A5:根据编码长度从交易报文中的编码长度之后提取编码信息,从交易报文中的编码信息之后提取两个字节长度数据作为文件类型标识;
步骤A6:判断该文件类型标识是否合法,如果合法,则执行步骤A7;否则,报错,将签名状态标识复位,返回步骤102。
其中,当文件类型标识为3031时合法。
步骤A7:从交易报文中的文件类型标识之后提取十六个字节长度的数据为文件长度;
步骤A8:判断文件长度是否合法;
如果合法,则执行步骤A9;否则,报错,将签名状态标识复位,返回步骤102;
步骤A9:根据文件长度从交易报文中的文件长度之后提取文件内容,然后从交易报文中的文件内容之后提取两个字节长度的数据为交易信息封装标识;
步骤A10:判断交易信息封装标识是否合法,
如果合法,则执行步骤A11;否则,报错,将签名状态标识复位,返回步骤102;
其中,当交易信息封装标识为3030时合法;
步骤A11:对交易信息封装进行哈希,得到第二哈希结果,将第二哈希结果保存至第三缓存区;
其中,将包括交易信息封装标识在内的其余数据作为交易信息封装。
步骤A12:从交易报文中的交易信息封装标识之后提取十六个字节长度的数据作为交易信息长度;
步骤A13:判断交易信息长度是否合法,如果合法,则执行步骤A14;否则,报错,将签名状态标识复位,返回步骤102;
步骤A14:从交易报文中的交易信息长度之后提取两个字节长度的数据作为信息块标识;
步骤A15:判断该信息块标识是否合法,如果合法,则执行步骤A16;否则,报错,将签名状态标识复位,返回步骤102;
其中,当信息块标识为534e时合法;
步骤A16:从交易报文中的信息块标识之后提取两个字节长度的数据作为第一信息块编号,从交易报文中的第一信息块编号之后提取四个字节长度的数据作为第一信息块长度;
步骤A17:判断第一信息块长度是否合法,如果合法,则执行步骤A18;否则,报错,将签名状态标识复位,返回步骤102;
步骤A18:根据第一信息块长度从交易报文中的信息块长度之后提取第一信息内容,并保存至显示缓存区中,从交易报文中的第一信息内容之后提取两个字节长度的数据作为第二信息块标识;
步骤A19:判断第二信息块标识是否合法,如果合法,则执行步骤A20;否则,报错,将签名状态标识复位,返回步骤102;
步骤A20:从交易报文中的第二信息块标识之后提取两个字节长度的数据为第二信息块编号;
步骤A21:判断第一信息块编号与第二信息块编号是否相同,如果相同,则执行步骤A22;否则,报错,将签名状态标识复位,返回步骤102;
步骤A22:从交易报文中的第二信息块编号之后提取四个字节长度的数据作为第二信息块长度;
步骤A23:判断第二信息块长度是否合法,如果合法,则执行步骤A24;否则,将签名状态标识复位,返回步骤102;
步骤A24:根据第二信息块长度从交易报文中的第二信息块长度之后提取第二信息内容,并将该第二信息内容保存至显示缓存区;
步骤A25:判断交易报文中的该第二信息内容之后是否存在待解析的信息块,如果存在,则执行步骤A26;否则,解析交易报文结束,执行步骤114。
步骤A26:从交易报文中的第二信息内容之后提取两个字节长度的数据为第一信息块标识,返回步骤A15;
以步骤112中的交易报文为例,
其中,编码头部为:30323030303030303030303030303030303431303031;
编码类型标识为:3032;
编码长度为:30303030303030303030303030303034;
编码信息为:31303031;
文件封装为:303130303030303030303030303030303534
303030303030313830303030303030376162632E747874616263
30303030303032303030303030303038746573742E74787474657374;
文件类型标识为:3031;
文件长度为:30303030303030303030303030303534;
文件内容为:303030303030313830303030303030376162632E747874616263
30303030303032303030303030303038746573742E74787474657374;
交易信息封装为:
303030303030303030303030303030323231
534e303130303136e8bdace585a5e8b4a6e688b7e58fb73a
5356303130303135323232323232323232323232323231
534e303230303139e8bdace585a5e8b4a6e688b7e5a793e5908d3a
5356303230303036e69d8ee59b9b
534e303330303231e8bdace8b4a6e98791e9a29d28e5b08fe58699293a
535630333030303831303030302e3030
444e303130303136e8bdace587bae8b4a6e688b7e58fb73a
4456303130303135323232323232323232323232323232
444e303230303139e8bdace587bae8b4a6e688b7e5a793e5908d3a
4456303230303036e5bca0e4b889;
其中,交易信息封装标识为:3030;
交易信息长度为:30303030303030303030303030323231;
以交易信息封装中的第一个信息块为例,信息块标识为:534e;
第一信息块编号为:3031;
信息块长度为:30303136;
提取到的信息内容为:e8bdace585a5e8b4a6e688b7e58fb73a
5356303130303135323232323232323232323232323231;
步骤114:对交易报文进行哈希,得到第一哈希结果,将第一哈希结果保存至第二缓存区,获取显示缓存区中的数据作为关键数据,显示关键数据,将签名状态标识设置为哈希成功,将签名类型标识设置为交易型签名,然后返回步骤102;
步骤115:判断签名状态标识是否为哈希成功,如果是,则执行步骤116;否则,报错,将签名状态标识复位,然后返回步骤102;
步骤116:判断签名类型标识是否为交易型签名,如果是,则执行步骤118;否则,执行步骤117;
步骤117:读取第一缓存区中的普通签名数据,按照第一格式填充读取出的普通签名数据,得到第一填充结果,用指定的私钥对第一填充结果进行签名,得到签名结果,将签名状态标识复位,将签名类型标识复位,返回步骤102;
本实施例中,按照第一格式填充读取出的普通签名数据,得到第一填充结果,优选的,
步骤b1:用SHA-1算法对读取出的普通签名数据进行计算,得到该普通签名数据的计算结果;
步骤b2:按照0001FF……FF00、该普通签名数据的计算结果的顺序进行拼接,得到第一填充结果。
步骤118:读取第一哈希结果和第二哈希结果,按照第二格式填充第一哈希结果和第二哈希结果,得到第二填充结果,将允许按键标识置位,等待接收按键消息;
本实施例中,按照第二格式填充第一哈希结果和第二哈希结果,得到第二填充结果,优选的,
步骤a1:用改造后的SHA-1算法分别对第一哈希结果和第二哈希结果进行计算,得到第一哈希结果的计算结果和第二哈希结果的计算结果;
步骤a2:按照0001FF……FF00、改造后的SHA-1算法的ID、第一哈希结果的计算结果、改造后的SHA-1算法的ID、第二哈希结果的计算结果的顺序进行拼接,得到第二填充结果;
本步骤中,将允许按键标识置位后还可以包括,打开定时器中断使能,定时器开始计时。
步骤119:判断预设时间内是否接收到按键消息;
如果接收到按键消息则执行相应的按键操作,返回步骤102;否则,将签名状态标识复位,将签名类型标识复位,报错,返回步骤102;
本实施例中,具体的,在步骤118中打开定时器中断使能,定时器开始计时后,若定时器计时超过预设时间未接收到按键消息则进入定时器中断,定时器中断包括关闭定时器中断,将超时标识置位,关闭定时器,退出定时中断处理。
如果接收到按键消息,则进入按键中断,执行相应的按键操作,参见图2具体操作为:
步骤C1:检测超时标识是否发生改变;
如果发生改变,则执行步骤C2;否则,执行步骤C3;
步骤C2:将签名状态标识复位,将签名类型标识复位,报错,返回步骤102;
步骤C3:判断允许按键标识是否置位,若置位,则执行步骤C4;否则,返回步骤102;
步骤C4:用指定的私钥对第二填充结果进行签名,得到签名结果,将签名结果保存至第四缓存区,将允许按键标识复位;
或者,在步骤106中将允许按键标识复位。
步骤C5:将签名状态标识设置为签名成功,返回步骤102。
步骤120:判断签名状态标识是否为签名成功;
如果是,则执行步骤121;否则,报错,将签名状态标识复位,将签名类型标识复位,返回步骤102。
步骤121:将签名状态标识复位,将签名类型标识复位,从第四缓存区中获取签名结果,返回签名结果,返回步骤102。
需要说明的是,本发明实施方式中,报错具体为向上位机返回错误码。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (17)
1.一种提高签名数据安全性的方法,其特征在于,包括:
步骤S1:设备等待接收命令;
步骤S2:当接收到命令时,判断接收到的命令的类型;如是第一哈希命令则执行步骤S3;如是签名命令则执行步骤S5;如是其他命令,则执行相应操作,返回步骤S1;
步骤S3:从所述第一哈希命令中获取交易报文,解析所述交易报文,从所述交易报文中获取交易信息封装标识,判断所述交易信息封装标识是否合法,若合法,则获取交易信息封装,执行步骤S4;若不合法则报错,返回步骤S1;
步骤S4:对所述交易信息封装进行哈希得到第二哈希结果,保存所述第二哈希结果,对所述交易报文进行哈希得到第一哈希结果,保存所述第一哈希结果,将签名类型标识置为交易型签名,返回步骤S1;
步骤S5:判断签名类型标识是否为交易型签名,是则执行步骤S6;否则,按照第一格式填充保存在第一缓存区中的普通签名数据,得到第一填充结果,用指定私钥对所述第一填充结果进行签名,得到第一签名结果,将签名类型标识复位,返回步骤S1;
步骤S6:按照第二格式填充第一哈希结果和第二哈希结果,将得到的填充结果作为第二填充结果,等待接收按键消息,判断是否接收到按键消息,是则用指定私钥对所述第二填充结果进行签名,得到第二签名结果,保存所述第二签名结果;否则,将签名类型标识复位,返回步骤S1;
所述其他命令还包括,安全环境控制命令,第二哈希命令,获取签名结果命令;所述步骤S2中如是其他命令,则执行相应操作,返回步骤S1,包括:
如果是安全环境控制命令,则检测预存的密钥和预存的算法是否有效,是则对所述算法进行初始化,清空第一缓存区、第二缓存区、第三缓存区、第四缓存区,将签名状态标识置为第一标识,返回步骤S1;否则,报错,返回步骤S1;
如果是第二哈希命令,则判断签名状态标识是否为第一标识,如果是,则从所述第二哈希命令中获取普通签名数据,将所述普通签名数据保存至所述第一缓存区,将所述签名状态标识置为第二标识,将所述签名类型标识置为普通签名,返回步骤S1;否则,报错,将所述签名状态标识复位,返回步骤S1;
如果是获取签名结果命令,则将所述签名状态标识复位,将所述签名类型标识复位,将所述第二签名结果返回给上位机,返回步骤S1;
所述步骤S1之前还包括,设备上电进行初始化,将签名状态标识复位、将签名类型标识复位,将允许按键标识复位,将超时标识复位。
2.如权利要求1所述的方法,其特征在于,
所述从所述第二哈希命令中获取普通签名数据,将所述普通签名数据保存至所述第一缓存区,将所述签名状态标识置为第二标识,具体为,
从所述第二哈希命令中获取普通签名数据和数据长度,判断所述数据长度是否与所述预存算法匹配,若匹配则将所述普通签名数据保存至所述第一缓存区,将所述签名状态标识置为第二标识;若不匹配,则报错,将所述签名状态标识复位,返回步骤S1。
3.如权利要求2所述的方法,其特征在于,所述从所述第二哈希命令中获取普通签名数据和数据长度,具体为,
获取所述第二哈希命令中第一预设字节上的数据为数据长度,根据所述数据长度从所述第一预设字节的下一个字节开始获取普通签名数据。
4.如权利要求1所述的方法,其特征在于,
所述步骤S3之前还包括,判断所述签名状态标识是否为第一标识,如果是,则执行步骤S3;否则,报错,将签名状态标识复位,返回步骤S1。
5.如权利要求1所述的方法,其特征在于,
所述从所述第一哈希命令中获取交易报文,具体为,
获取所述第一哈希命令中第一预设字节上的数据为所述第一哈希命令的数据长度,根据所述数据长度从所述第一预设字节的下一个字节开始获取交易报文。
6.如权利要求1所述的方法,其特征在于,所述步骤S3包括,
步骤A1:从所述第一哈希命令中获取交易报文,从所述交易报文中提取编码类型标识;
步骤A2:判断所述编码类型标识是否合法;
如果合法,则执行步骤A3;否则,报错,将所述签名状态标识复位,返回步骤S1;
步骤A3:从所述交易报文中的所述编码类型标识之后提取编码长度;
步骤A4:判断所述编码长度是否合法;
如果是,则执行步骤A5;否则,报错,将所述签名状态标识复位,返回步骤S1;
步骤A5:根据所述编码长度从所述交易报文中提取编码信息和文件类型标识;
步骤A6:判断所述文件类型标识是否合法,如果合法,则执行步骤A7;否则,报错,将所述签名状态标识复位,返回步骤S1;
步骤A7:从所述交易报文中提取所述文件类型标识后的文件长度;
步骤A8:判断所述文件长度是否合法;
如果合法,则执行步骤A9;否则,报错,将所述签名状态标识复位,返回步骤S1;
步骤A9:根据所述文件长度从所述交易报文中的所述文件长度之后提取文件内容,从所述交易报文中提取所述文件内容之后的交易信息封装标识;
步骤A10:判断所述交易信息封装标识是否合法,
若合法,则执行步骤A11;若不合法则,报错,将所述签名状态标识复位,返回步骤S1;
步骤A11:将所述交易报文中的所述交易信息封装标识及其之后的数据作为交易信息封装。
7.如权利要求6所述的方法,其特征在于,
所述步骤S4中所述保存所述第二哈希结果之后还包括,
步骤A12:从所述交易报文中提取所述交易信息封装标识之后的交易信息长度;
步骤A13:判断所述交易信息长度是否合法,是则执行步骤A14;否则报错,将签名状态标识复位,返回步骤S1;
步骤A14:从所述交易报文中的所述交易信息长度之后提取第一信息块标识;
步骤A15:判断所述第一信息块标识是否合法,是则执行步骤A16;否则报错,将所述签名状态标识复位,返回步骤S1;
步骤A16:从所述交易报文中的所述第一信息块标识之后提取第一信息块编号和第一信息块长度;
步骤A17:判断所述第一信息块长度是否合法,是则执行步骤A18;否则报错,将所述签名状态标识复位,返回步骤S1;
步骤A18:根据所述第一信息块长度从所述交易报文中的所述第一信息块长度之后提取第一信息内容,并将所述第一信息内容保存至显示缓存区中,从所述交易报文中的第一信息内容之后提取下一个信息块标识作为第二信息块标识;
步骤A19:判断所述第二信息块标识是否合法,是则执行步骤A20;否则报错,将所述签名状态标识复位,返回步骤S1;
步骤A20:从所述交易报文中的所述第二信息块标识之后提取第二信息块编号;
步骤A21:判断所述第一信息块编号与所述第二信息块编号是否相同,是则执行步骤A22;否则报错,将所述签名状态标识复位,返回步骤S1;
步骤A22:从所述交易报文中的所述第二信息块编号之后提取第二信息块长度;
步骤A23:判断所述第二信息块长度是否合法,是则执行步骤A24;否则报错,将所述签名状态标识复位,返回步骤S1;
步骤A24:根据所述第二信息块长度从所述交易报文中的所述第二信息块长度之后提取第二信息内容,并将所述第二信息内容保存至显示缓存区;
步骤A25:判断所述交易报文中所述第二信息内容之后是否存在待解析的信息块,是则执行步骤A26;否则报错,返回步骤S1;
步骤A26:从所述交易报文中的所述第二信息内容之后提取信息块标识,并将其作为第一信息块标识,返回步骤A15。
8.如权利要求7所述的方法,其特征在于,
所述步骤S4中所述保存第一哈希结果之后还包括,获取所述显示缓存区中的数据作为关键数据,显示所述关键数据。
9.如权利要求1所述的方法,其特征在于,
所述保存第一哈希结果,具体为,将所述第一哈希结果保存至第二缓存区;
所述保存第一哈希结果之后还包括,将所述签名状态标识置为第二标识。
10.如权利要求1或9所述的方法,其特征在于,
所述步骤S5之前还包括,判断所述签名状态标识是否为第二标识,是则执行步骤S5;否则报错,将所述签名状态标识复位,返回步骤S1。
11.如权利要求9所述的方法,其特征在于,
所述步骤S5判断为否之后还包括,将所述签名状态标识复位。
12.如权利要求1所述的方法,其特征在于,
所述按照第一格式填充第一缓存区中的普通签名数据,得到第一填充结果具体为,用SHA-1算法对所述普通签名数据进行计算,得到普通签名数据的计算结果,将预设字符串、普通签名数据的计算结果顺序拼接得到第一填充结果。
13.如权利要求1所述的方法,其特征在于,所述按照第二格式填充第一哈希结果和第二哈希结果,将得到的填充结果作为第二填充结果具体为,
用改造后的SHA-1算法分别对所述第一哈希结果和所述第二哈希结果进行计算,得到第一哈希结果的计算结果和第二哈希结果的计算结果;将预设字符串、改造后的SHA-1算法的ID、第一哈希结果的计算结果、改造后的SHA-1算法的ID、第二哈希结果的计算结果顺序拼接得到第二填充结果。
14.如权利要求1所述的方法,其特征在于,所述将得到的填充结果作为第二填充结果与等待接收按键消息之间包括,将允许按键标识置位;
所述判断是否接收到按键消息,具体为,判断预设时间内是否收到按键消息。
15.如权利要求14所述的方法,其特征在于,
所述将允许按键标识置位之后还包括,打开定时器中断,定时器开始计时;
所述判断预设时间内是否收到按键消息的判断结果为否时,进入定时中断处理,所述定时中断处理包括,关闭定时器中断,将超时标识置位,关闭定时器,退出定时中断处理;
所述判断预设时间内是否收到按键消息的判断结果为是时还包括,
检测超时是否改变,若改变,则将所述签名状态标识复位,将所述签名类型标识复位,报错,返回步骤S1;否则,判断允许按键标识是否置位,若置位则继续执行;若未置位,则将所述签名类型标识复位,返回步骤S1;
所述保存所述第二签名结果具体为,将第二签名结果保存至第四缓存区,将签名状态标识置为第三标识;
所述保存所述第二签名结果之后还包括,将所述允许按键标识复位。
16.如权利要求15所述的方法,其特征在于,
所述如果是获取签名结果命令,则将签名状态标识复位,将签名类型标识复位,将所述第二签名结果返回给上位机,返回步骤S1具体为,
如果是获取签名结果命令,则判断所述签名状态标识是否为第三标识,如果是,则将所述签名状态标识复位,将所述签名类型标识复位,从所述第四缓存区中获取第二签名结果,将所述第二签名结果返回给上位机,返回步骤S1;否则,将所述签名状态标识复位,将所述签名类型标识复位,返回步骤S1。
17.如权利要求14所述的方法,其特征在于,所述对算法进行初始化,清空第一缓存区、第二缓存区、第三缓存区、第四缓存区之后还包括,将允许按键标识复位。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310170475.0A CN103268437B (zh) | 2013-05-10 | 2013-05-10 | 一种提高签名数据安全性的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310170475.0A CN103268437B (zh) | 2013-05-10 | 2013-05-10 | 一种提高签名数据安全性的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103268437A CN103268437A (zh) | 2013-08-28 |
CN103268437B true CN103268437B (zh) | 2016-02-24 |
Family
ID=49012065
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310170475.0A Active CN103268437B (zh) | 2013-05-10 | 2013-05-10 | 一种提高签名数据安全性的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103268437B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103490894B (zh) * | 2013-09-09 | 2016-08-10 | 飞天诚信科技股份有限公司 | 一种确定智能密钥设备生命周期的实现方法及装置 |
CN104301119B (zh) * | 2014-11-05 | 2018-10-19 | 中国建设银行股份有限公司 | 数据签名方法、签名验证方法、数据签名设备及验证服务器 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101101686A (zh) * | 2006-07-03 | 2008-01-09 | 上海交通大学 | 电子银行认证方法,及采用该方法的系统和智能卡 |
CN102025738A (zh) * | 2010-12-03 | 2011-04-20 | 北京飞天诚信科技有限公司 | 一种交易报文的处理方法、设备和系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101562525B (zh) * | 2009-04-30 | 2012-06-27 | 飞天诚信科技股份有限公司 | 签名方法、设备及系统 |
-
2013
- 2013-05-10 CN CN201310170475.0A patent/CN103268437B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101101686A (zh) * | 2006-07-03 | 2008-01-09 | 上海交通大学 | 电子银行认证方法,及采用该方法的系统和智能卡 |
CN102025738A (zh) * | 2010-12-03 | 2011-04-20 | 北京飞天诚信科技有限公司 | 一种交易报文的处理方法、设备和系统 |
Non-Patent Citations (1)
Title |
---|
交易授权技术创新阻断网银大盗黑手;qinghui1111;《百度文库》;20110322;第1页至第4页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103268437A (zh) | 2013-08-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101632086B (zh) | 认证设备和方法 | |
CN103647648B (zh) | 一种安全通讯的方法 | |
TW513681B (en) | Method of security of the pre-initialization phase of an electronic chip (especially a chip card) loading system, and the loading system using this method | |
CA3090716A1 (en) | Two-dimensional code generation and identification | |
EP3822891A1 (en) | Transaction messaging | |
CN105391717A (zh) | 一种apk签名认证方法及其系统 | |
CN102339370A (zh) | 电子文档的保全方法、保全系统和验证系统 | |
CN109257332B (zh) | 数字货币硬件钱包应用更新的安全通道的创建方法及装置 | |
CN103235911B (zh) | 一种签名方法 | |
CN101984449B (zh) | 一种智能卡cos操作系统 | |
CN105320900A (zh) | Pdf数字签名方法和系统以及pdf数字签名验证方法和系统 | |
JP6020089B2 (ja) | 不正検知システム | |
CN110210270B (zh) | 二维码信息安全加固方法及系统和二维码图像解析方法及系统 | |
CN102014015B (zh) | 智能密钥设备的自检方法 | |
CN103413101A (zh) | 电子数据防篡改系统和方法 | |
CN103268437B (zh) | 一种提高签名数据安全性的方法 | |
CN107992759A (zh) | 实现电子印章的装置、方法及计算机可读存储介质 | |
CN103034801A (zh) | 基于模式的安全微控制器 | |
EP2816497A1 (en) | Matrix obtaining method, character display device and system and electronic signature tool | |
CN103413104B (zh) | 一种交易敏感信息的处理方法及处理装置 | |
CN101673250B (zh) | 一种手机存储器中代码/数据的保护方法及装置 | |
CN105303093A (zh) | 智能密码钥匙密码验证方法 | |
CN102739406B (zh) | 一种安全传输设备信息的方法 | |
CN116208420B (zh) | 一种监测信息安全传输方法、系统、设备及存储介质 | |
CN102012978B (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 |