一种文件签名方法和相关设备与流程

文档序号:33463827发布日期:2023-03-15 05:51阅读:31来源:国知局
一种文件签名方法和相关设备与流程

1.本发明涉及文件加密技术领域,特别涉及一种文件签名方法和相关设备。


背景技术:

2.在信息工程领域,逆向工程是将某些有价值的签名程序和签名破解后,加入一些其他的内容,然后再将程序按照原有的签名,重新生成一个新的程序,该新程序中,除了新加的内容外,其他的内容和签名都和之前一模一样,使用者从而误认为这个程序是原有程序并使用。这就对程序的开发公司造成了损失,也对用户的使用造成不便。如果能解决签名不被破解,那么就算程序中被加入某些内容,也无法重新签原来的名,在使用时通过签名能够确定该签名程序是否被篡改。所以防破解签名算法技术广泛用于各种签名程序上,为了防止程序开发者遭受损失,签名防破解是很有必要。
3.目前签名程序大多数都是使用系统自带的生成签名工具,然后再打包程序时进行签名,基本上没有多签名做处理,导致很多程序很容易被不法分子修改内容后二次签名,造成开发者的损失和用户的困扰。


技术实现要素:

4.本发明要解决的技术问题在于加密后的文件可能通过逆向工程的方式可被篡改内容,针对现有技术的不足,提供一种文件签名方法和相关设备。
5.为了解决上述技术问题,本发明所采用的技术方案如下:
6.一种文件签名方法,所述方法包括:
7.当检测到签名指令时,基于预设的动态算法,生成动态密钥;
8.根据所述动态密钥和所述签名指令中的固态密钥,生成签名信息;
9.获取预设的设备信息,并当所述设备信息与预设的可信任信息相同时,将所述动态密钥作为匹配密钥发送至预先连接的验证装置;
10.根据所述签名信息,对预设的签名对象进行签名,得到签名文件。
11.所述文件签名方法,其中,所述基于预设的动态算法,生成动态密钥包括:
12.基于预设的数列,选取若干个初始数组;
13.根据所述初始数组中的数字,生成动态密钥。
14.所述文件签名方法,其中,所述基于预设的数列,选取若干个初始数组包括:
15.根据预设的第一数组数量和第二数组数量,从所述数列中随机选区与第一数组数量相同的初始数组,其中,每一个所述初始数组中的数字的数量与所述第二数组数量相同。
16.所述文件签名方法,其中,所述针对每一个所述初始数组,根据该初始数组中的数字,生成动态密钥包括:
17.针对每一所述初始数组,将该初始数组中的数字进行排序,得到排序数组;
18.将所述排序数组中的数字进行间隔求和,得到处理数组;
19.将所述处理数组进行组合,得到动态密钥。
20.所述文件签名方法,其中,所述根据所述动态密钥和所述签名指令中的固态密钥,生成签名信包括:
21.基于预设的加密算法,对所述动态密钥进行加密,得到加密密钥;
22.根据所述加密密钥和所述固态密钥,生成签名信息。
23.所述文件签名方法,其中,所述基于预设的加密算法,对所述动态密钥进行加密,得到加密密钥包括:
24.以预设的指定数为除数,对所述动态密钥为被除数,计算所述动态密钥对应的商和余数;
25.将所述商和余数进行编码,得到加密密钥。
26.一种文件签名装置,其特征在于,所述文件签名装置包括:
27.第一生成模块,用于检测到签名指令时,基于预设的动态算法,生成动态密钥;
28.第二生成模块,用于根据所述动态密钥和所述签名指令中的固态密钥,生成签名信息;
29.发送模块,用于获取预设的设备信息,并当所述设备信息与预设的可信任信息相同时,将所述动态密钥作为匹配密钥发送至预设的验证系统;
30.加密模块,用于根据所述签名信息,对预设的签名对象进行签名,得到签名文件。
31.一种文件签名系统,所述文件签名系统包括如上所述的签名装置和验证装置,所述签名装置和所述验证装置通讯连接;所述验证装置包括:
32.获取模块,用于获取所述动态密钥和所述签名文件;
33.第一解密模块,用于基于与所述固态密钥对应的解密密钥,对所述签名文件进行解密,得到动态密钥和第一文件;
34.第二解密模块,用于当所述匹配密钥与所述动态密钥匹配时,对所述第一文件进行解密,得到所述签名对象。
35.一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如上任一所述的文件签名方法中的步骤。
36.一种终端设备,其包括:处理器、存储器及通信总线;所述存储器上存储有可被所述处理器执行的计算机可读程序;
37.所述通信总线实现处理器和存储器之间的连接通信;
38.所述处理器执行所述计算机可读程序时实现如上任一所述的文件签名方法中的步骤。
39.有益效果:本发明提供一种文件签名方法和相关设备,在需要对文件进行签名时,根据动态算法,生成动态密钥。动态密钥与签名指令中的固态密钥一同生成签名信息,用于对加密对象进行加密,从而得到签名文件。在生成动态密钥后,还会将所在设备的设备信息和之前存储的可信任设备的设备信息,即可信任信息,进行比较,若相同,则说明所在设备是文件创作者允许的设备,因此将动态密钥作为匹配密钥发送至验证装置;若不相同,则说明所在设备并非创作者允许的设备,该动态密钥不会发送至验证装置。在后续解密过程中,由于验证装置所得到只有在允许的设备上加密时发送的匹配密钥,而第三方在不允许的设备上加密过程中产生的动态密钥不会发送至验证装置,因此若第三方对签名文件进行了修
改,验证装置无法验证动态密钥,从而保护用户所使用的文件只会是并非第三方篡改的文件,保证了文件的真实性。
附图说明
40.图1为本发明提供的文件签名方法的流程图。
41.图2为本发明提供的文件签名装置的示意图。
42.图3为本发明提供的终端设备的结构原理图。
具体实施方式
43.本发明提供一种文件签名方法,为使本发明的目的、技术方案及效果更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
44.本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
45.本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
46.如图1所示,本实施提供了一种文件签名方法,为方便说明,以常见的用于加密的签名程序作为执行主体进行描述,此处的签名程序可替换为服务器、平板、电脑等具有数据处理功能的设备。该签名程序用于对待加密的文件进行签名加密。文件签名方法包括以下步骤:
47.s10、当检测到签名指令时,基于预设的动态算法,生成动态密钥。
48.具体地,签名程序先加载需要签名的文件,需要签名的文件为签名对象,文件类型包括文本文件、应用文件等。
49.用户确定签名对象后,通过外接设备向签名程序发送签名指令,以启动签名程序。当签名程序检测到签名指令时,基于预设的动态算法,生成动态密钥。每一次发送签名指令,都会生成一次动态密钥,因此每一次签名所产生的动态密钥不一致。
50.动态密钥的生成方式可通过生成时刻、随机数法等方式,为了提高动态密钥的安全性和随机性,本实施例提供一种动态密钥的生成方式,具体包括:
51.a10、基于预设的数列,选取若干个初始数组。
52.具体地,预先设置一个数列,该数列中存储多个不同的数字。本实施例以常见的[1~10]作为该数列中存储的数字。
[0053]
然后从数列中选择数字组成若干个数组。
[0054]
在第一种选择初始数组的方式中,预先设定规定数组数量的第一数组数量,根据第一数组数量,生成若干个初始数组。例如第一数组数量为5,则从1~10中选取若干个数字,组成一个初始数组,重复过程五次,得到五个初始数组。
[0055]
在第二种选择初始数组的方式中,预先设定规定一个数组中的数字的数量的第二数组数量,根据第二数组数量,生成若干个初始数组。例如第二数组数量为4,则从1~10中选取4个数字,组成一个初始数组,重复过程随机数次,得到若干个初始数组。
[0056]
在第三种选择初始数组的方式中,预先设定第一数组数量和第二数组数量,从所述数列中随机选区与第一数组数量相同的初始数组,其中,每一个所述初始数组中的数字的数量与所述第二数组数量相同。例如第一数组数列为5,第二数组数量为4,则从1~10中选取4个数字,组成一个初始数组,重复过程5次,得到五个初始数组。例如本实施例中选取得到的初始数组包括[1,3,5,7]、[7,4,5,9]、[4,7,9,0]、[0,3,9,4]和[8,3,1,2]。
[0057]
a20、根据所述初始数组中的数字,生成动态密钥。
[0058]
具体地,根据初始数组中的数字,可通过多种方式生成动态密钥。本实施例列举以下几种生成方式。
[0059]
在第一种生成方式中,根据预设的计算公式,计算每一个初始数组对应的计算结果,然后取计算结果的绝对数作为动态密钥。
[0060]
在第二种生成方式中,将初始数组中的数字进行排序,得到排序数组,例如本实施例中排序后的排序数据分别为:[1,3,5,7]、[4,5,7,9]、[0,4,7,9]、[0,3,4,9]和[1,2,3,8]。然后将排序数组中的数字进行间隔求差,得到处理数组,处理数组为[2、2、1、2、4、2、3、5、1、5]。可直接将处理数组作为动态密钥,也可将处理数组按照数值大小、选取的时间顺序,对应的初始数组的大小等进行排序组合作为动态密钥。
[0061]
在第三种生成方式中,将初始数组中的数字进行排序,得到排序数组,然后将排序数组中的数字进行间隔求和,得到处理数组。以上述排序数组为例,处理数组为[6,10,11,14,7,13,4,12,4,10],可直接将处理数组作为动态密钥,也可将处理数组按照数值大小、选取的时间顺序,对应的初始数组的大小等进行排序组合作为动态密钥。
[0062]
s20、根据所述动态密钥和所述签名指令中的固态密钥,生成签名信息。
[0063]
具体地,除了每一次签名指令都会产生的动态密钥,还有目前其他方式产生的密钥,称之为固态密钥,固态密钥可根据创作者的姓名、时间等信息通过加密的方式生成。例如固态密钥可通过rsa加密算法、md5加密算法等,本实施例不做限制。
[0064]
得到动态密钥和固态密钥后,可根据两个密钥作为签名信息,用于后续的签名。
[0065]
为了保证动态密钥的安全性,难以被破解模仿,本实施例中,在生成签名信息时,基于预设的加密算法,对所述动态密钥进行加密,得到加密密钥。然后在根据加密密钥和固态密钥生成签名信息。
[0066]
加密密钥的生成方式可基于常见的md5等加密算法进行,由于本实施例提供的动态密钥生成的算法是基于数列进行,因此本实施例提供一种对数字型的动态密钥有效的加密算法。首先以预设的指定数为除数,对所述动态密钥为被除数,计算所述动态密钥对应的商和余数。然后将所述商和余数进行编码,得到加密密钥。
[0067]
以上述[6,10,11,14,7,13,4,12,4,10]为例,指定数设置为2,其他数字也可设为
指定数。然后将动态密钥中的每一个数除指定数,得到商和余数。
[0068]
6/2=3
……0[0069]
10/2=5
……0[0070]
11/2=5
……1[0071]
14/2=7
……0[0072]
7/2=3
……1[0073]
13/2=6
……1[0074]
4/2=2
……0[0075]
12/2=6
……0[0076]
4/2=2
……0[0077]
10/2=5
……0[0078]
得到商和余数后,为方便编码,可商和余数转换为二进制,得到待编码数据,例如3对应的二进制为0011。最后所有商和余数组成的待编码数据为[0011,0000,0101,0000,0101,0001,0111,0000,0011,0001,0110,0001,0010,0000,0110,0000,0010,0000,0010,0000]。
[0079]
然后采用预设的编码算法,对待编码数据进行编码,得到加密密钥。例如采用base64编码算法,得到的加密密钥为“mdaxms4umdawmcagmdewms4umdawmaowmtaxli4wmdaxicawmtexli4wmdawcjawmteuljawmdegidaxmtauljawmdekmdaxmc4umdawmcagmdexmc4umdawmaowmdewli4wmdawicawmtaxli4wmdaw”。
[0080]
s30、获取预设的设备信息,并当所述设备信息与预设的可信任信息相同时,将所述动态密钥作为匹配密钥发送至预设的验证装置。
[0081]
具体地,设备信息是指签名程序所运行的设备的信息,包括设备参数、ip地址等能够将不同设备进行区分的参数。在本实施例中,签名程序所运行的设备包括设备a和设备b。设备a是创作者允许进行加密的设备,而设备b是创作者不孕系进行加密的设备。预先在签名程序中将允许进行加密的设备信息作为可信任信息写入签名程序中。
[0082]
生成动态密钥后,签名程序获取当前所运行设备的设备信息,然后将该设备信息与预先存储的可信任信息进行比对。
[0083]
若比对成功,说明当前设备为创作者允许对加密对象进行处理的设备,因此将生成的动态密钥发送至预先连接的验证装置中,以供后续验证装置解密,对签名后的文件进行验证。
[0084]
若比对失败,说明当前设备为未经过创作者允许对加密对象进行处理的设备,因此不会将生成的动态密钥发送至预先连接的验证装置中,验证装置中只有前一次在创作者允许的设备上生成的动态密钥。
[0085]
在本实施例中,为区分创建者所允许的设备进行的签名操作和未经创作者同意的第三方所使用的设备进行签名操作,对于设备a,产生的动态密钥称为密钥a,设备b产生的密钥设备称为密钥b。在设备a上发送签名指令,则密钥a发送到验证装置上,而在设备b上发送签名指令,密钥b不会发送到验证装置上。
[0086]
s40、根据所述签名信息,对预设的签名对象进行签名,得到签名文件。
[0087]
具体地,签名信息包含了签名者的信息的固态密钥和每一次签名都会产生的动态
密钥,得到签名信息后,根据签名信息对签名对象进行签名,得到签名文件。
[0088]
在后续验证过程中,验证装置会获取签名文件以及之前来自于签名程序的匹配密钥。基于固态密钥对应的解密密钥,可对签名文件进行解密,得到签名文件中的动态密钥和第一文件。解密密钥的获取方式可根据常规的加密解密方式,基于固态密钥得到,在此不再赘述。
[0089]
得到第一文件后,将自己得到的匹配密钥和解析得到的动态密钥进行匹配,若匹配成功,则说明该签名是在创作者允许的设备上进行,因此可对第一文件进行解密,从而得到签名对象;若匹配失败,则说明签名不是在创作者允许的设备上进行,可显示预设的报警信息或者关闭第一文件,以避免用户使用被篡改的文件。
[0090]
例如本实施例中,当签名发生在设备a上,验证装置收到密钥a,密钥a和签名文件中的动态密钥相同,因此能够正常解密第一文件。而签名发生在设备b上时,验证装置并未收到密钥b,其保存的密钥为最近一次在创作者允许的设备上签名时发送的密钥,该密钥必然与密钥b不相同,一次两者无法正确匹配,显示预设的报警信息或关闭第一文件。
[0091]
本实施例中,通过签名的设备是否为创作者允许的设备,确定是否向验证装置发送动态密钥,若是,则发送;若不是,则不发送,因此在验证环节,对于来源不同设备的签名文件,验证装置可验证成功或验证失败,从而避免来源于未经过创作者许可的设备所签名的文件被用户所使用,保证了文件来源的安全性。
[0092]
如图2所示,基于上述文件签名方法,本发明还提供一种文件签名装置100,所述文件签名装置100包括:
[0093]
第一生成模块110,用于检测到签名指令时,基于预设的动态算法,生成动态密钥;
[0094]
第二生成模块120,用于根据所述动态密钥和所述签名指令中的固态密钥,生成签名信息;
[0095]
发送模块130,用于获取预设的设备信息,并当所述设备信息与预设的可信任信息相同时,将所述动态密钥作为匹配密钥发送至预设的验证系统;
[0096]
加密模块140,用于根据所述签名信息,对预设的签名对象进行签名,得到签名文件。
[0097]
其中,所述第二生成模块120包括:
[0098]
选区单元,用于基于预设的数列,选取若干个初始数组;
[0099]
第一生成单元,用于根据所述初始数组中的数字,生成动态密钥。
[0100]
其中,所述选区单元具体用于:
[0101]
根据预设的第一数组数量和第二数组数量,从所述数列中随机选区与第一数组数量相同的初始数组,其中,每一个所述初始数组中的数字的数量与所述第二数组数量相同。
[0102]
其中,所述第一生成单元具体用于:
[0103]
针对每一所述初始数组,将该初始数组中的数字进行排序,得到排序数组;
[0104]
将所述排序数组中的数字进行间隔求和,得到处理数组;
[0105]
将所述处理数组进行组合,得到动态密钥。
[0106]
其中,所述第二生成模块120包括:
[0107]
加密单元,用于基于预设的加密算法,对所述动态密钥进行加密,得到加密密钥;
[0108]
第二生成单元,用于根据所述加密密钥和所述固态密钥,生成签名信息。
[0109]
其中,所述加密单元具体用于:
[0110]
以预设的指定数为除数,对所述动态密钥为被除数,计算所述动态密钥对应的商和余数;
[0111]
将所述商和余数进行编码,得到加密密钥。
[0112]
基于上述文件签名方法,本发明还提供了一种文件签名系统,所述文件签名系统包括如上所述的签名装置和验证装置,所述签名装置和所述验证装置通讯连接;所述验证装置包括:
[0113]
获取模块,用于获取所述动态密钥和所述签名文件;
[0114]
第一解密模块,用于基于与所述固态密钥对应的解密密钥,对所述签名文件进行解密,得到动态密钥和第一文件;
[0115]
第二解密模块,用于当所述匹配密钥与所述动态密钥匹配时,对所述第一文件进行解密,得到所述签名对象。
[0116]
基于上述文件签名方法,本发明还提供了一种终端设备,如图3所示,其包括至少一个处理器(processor)20;显示屏21;以及存储器(memory)22,还可以包括通信接口(communications interface)23和总线24。其中,处理器20、显示屏21、存储器22和通信接口23可以通过总线24完成相互间的通信。显示屏21设置为显示初始设置模式中预设的用户引导界面。通信接口23可以传输信息。处理器20可以调用存储器22中的逻辑命令,以执行上述实施例中的方法。
[0117]
此外,上述的存储器22中的逻辑命令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取计算机可读存储介质中。
[0118]
存储器22作为一种计算机可读存储介质,可设置为存储软件程序、计算机可执行程序,如本公开实施例中的方法对应的程序命令或模块。处理器20通过运行存储在存储器22中的软件程序、命令或模块,从而执行功能应用以及数据处理,即实现上述实施例中的方法。
[0119]
存储器22可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的签名程序;存储数据区可存储根据终端设备的使用所创建的数据等。此外,存储器22可以包括高速随机存取存储器,还可以包括非易失性存储器。例如,u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等多种可以存储程序代码的介质,也可以是暂态计算机可读存储介质。
[0120]
此外,上述计算机可读存储介质以及终端设备中的多条命令处理器加载并执行的具体过程在上述方法中已经详细说明,在这里就不再一一陈述。
[0121]
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1