著录项信息
专利名称 | 一种数字签名的方法及装置 |
申请号 | CN201710296782.1 | 申请日期 | 2017-04-28 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2017-08-18 | 公开/公告号 | CN107070665A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | H04L9/32 | IPC分类号 | H;0;4;L;9;/;3;2查看分类表>
|
申请人 | 北京海泰方圆科技股份有限公司 | 申请人地址 | 北京市海淀区东北旺西路8号中关村软件园9号楼国际软件大厦E座一层、二层
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 北京海泰方圆科技股份有限公司 | 当前权利人 | 北京海泰方圆科技股份有限公司 |
发明人 | 安晓江;王烨;蒋红宇 |
代理机构 | 北京同达信恒知识产权代理有限公司 | 代理人 | 黄志华 |
摘要
本申请实施例中公开了一种数字签名的方法及装置,该方法为监测到执行了指定操作时,获取指定操作对应的操作对象;获取针对操作对象预先建立的相邻对象,并分别对操作对象和相邻对象进行数字签名,获取相应的数字签名值;基于获得的操作对象的数字签名值和相邻对象的数字签名值,获取相邻对象的关联数字签名值。这样,基于操作对象的数字签名值与相邻对象的数字签名值的组合,获得相邻对象的关联数字签名值,从而可以在操作对象被删除或插入原先被删除的正确的操作对象时,通过相应的相邻对象的关联数字签名值进行验证,进而识别出非法操作,提高数据的信息安全,保证数据的完整性以及真实性。
一种数字签名的方法及装置\n技术领域\n[0001] 本申请涉及信息安全技术领域,尤其涉及一种数字签名的方法及装置。\n背景技术\n[0002] 随着互联网技术的发展,互联网的安全措施也在不断地改进,通常对互联网中的数据(如,数据库数据)进行数字签名,从而可以根据获得的数字签名值对数据的真伪进行验证,以保证互联网中的数据的信息安全。\n[0003] 现有技术下,对互联网中的数据进行数字签名时,主要采用以下方式:\n[0004] 采用哈希算法对一条数据进行计算,获得第一哈希值,并采用数字签名函数对第一哈希值进行数字签名,获得相应的数字签名值。其中,所谓哈希算法是通过散列函数,将任意长度的输入数据进行哈希,获得固定长度的输出数据,作为哈希值。\n[0005] 这样,当上述数据被非法修改时,将基于修改后的数据获得的第二哈希值与基于上述数字签名转换获得的第一哈希值进行匹配,获得表征匹配失败的匹配结果,从而无法通过验证。\n[0006] 但是,这种方式仅基于一条数据的哈希值,获得相应的数字签名,因此,当一条数据被删除或插入一条被删除的正确的数据时,由于不会出现匹配失败的结果,因此无法识别出非法操作,不能确保数据的信息安全。\n发明内容\n[0007] 本申请实施例提供一种数字签名方法及装置,用于当一条数据被删除或插入一条被删除的正确的数据时,识别发现非法操作,提高数据的信息安全,保证数据的完整性以及真实性。\n[0008] 本申请实施例提供的具体技术方案如下:\n[0009] 第一方面,一种数字签名方法,包括:\n[0010] 监测到执行了指定操作时,获取指定操作对应的操作对象;\n[0011] 获取针对操作对象预先建立的相邻对象,并分别对操作对象和相邻对象进行数字签名,获取相应的数字签名值;\n[0012] 基于获得的操作对象的数字签名值和相邻对象的数字签名值,获取相邻对象的关联数字签名值,其中,关联数字签名值用于基于操作对象以及相邻对象之间的关联关系对操作对象进行验证。\n[0013] 较佳的,获取针对操作对象预先建立的相邻对象,具体包括:\n[0014] 基于预设的数据排列顺序,获取操作对象的第一相邻对象以及操作对象的第二相邻对象;\n[0015] 其中,第一相邻对象与操作对象左相邻并间隔M个对象,第二相邻对象与操作对象右相邻并间隔M个对象,第一相邻对象和第二相邻对象均为操作对象的相邻对象,M为自然数。\n[0016] 较佳的,基于获得的操作对象的数字签名值和相邻对象的数字签名值,获取相邻对象的关联数字签名值,具体包括:\n[0017] 基于数据排列顺序,获取第三相邻对象,其中,第三相邻对象与第一相邻对象左相邻并间隔M个对象;\n[0018] 基于数据排列顺序,获取第四相邻对象,其中,第四相邻对象与第二相邻对象右相邻间隔M个对象;\n[0019] 分别对操作对象、第一相邻对象、第二相邻对象、第三相邻对象和第四相邻对象进行哈希以及数字签名,获得相应的数字签名值;\n[0020] 基于获取的各个数字签名值,获取第一相邻对象的关联数字签名值,并基于获取的各个数字签名值,获取第二相邻对象的关联数字签名值。\n[0021] 较佳的,基于获取的各个数字签名值,获取第一相邻对象的关联数字签名值,包括:\n[0022] 确定指定操作表征插入或修改数据时,计算操作对象的数字签名值、第一相邻对象的数字签名值和第三相邻对象的数字签名值的加和,作为第一加和,并对第一加和进行哈希以及数字签名,获得第一相邻对象的关联数字签名值;或者,\n[0023] 确定指定操作表征删除数据时,基于数据排列顺序,获取操作对象的下一个对象,作为第五相邻对象,并计算第一相邻对象的数字签名值、第三相邻对象的数字签名值和第五相邻对象的数字签名值的加和,作为第二加和,以及对第二加和进行哈希以及数字签名,获得第一相邻对象的关联数字签名值。\n[0024] 较佳的,基于获取的各个数字签名值,获取第二相邻对象的关联数字签名值,包括:\n[0025] 确定指定操作表征插入或修改数据时,计算操作对象的数字签名值、第二相邻对象的数字签名值和第四相邻对象的数字签名值的加和,作为第三加和,并对第三加和进行哈希以及数字签名,获得第二相邻对象的关联数字签名值;或者,\n[0026] 确定指定操作表征删除数据时,基于数据排列顺序,获取操作对象的上一个对象,作为第六相邻对象,并计算第二相邻对象的数字签名值、第四相邻对象的数字签名值和第六相邻对象的数字签名值的加和,作为第四加和,并对第四加和进行哈希以及数字签名,获得第二相邻对象的关联数字签名值。\n[0027] 较佳的,进一步包括:\n[0028] 确定指定操作表征插入或修改数据时,计算操作对象的数字签名值、第一相邻对象的数字签名值以及第二相邻对象的数字签名值的加和,作为第五加和,并对第五加和进行哈希以及数字签名,获得操作对象的关联数字签名值。\n[0029] 第二方面,一种数字签名装置,包括:\n[0030] 获取单元,用于监测到执行了指定操作时,获取指定操作对应的操作对象;\n[0031] 签名单元,用于获取针对操作对象预先建立的相邻对象,并分别对操作对象和相邻对象进行数字签名,获取相应的数字签名值;\n[0032] 关联单元,用于基于获得的操作对象的数字签名值和相邻对象的数字签名值,获取相邻对象的关联数字签名值,其中,关联数字签名值用于基于操作对象以及相邻对象之间的关联关系对操作对象进行验证。\n[0033] 较佳的,在获取针对操作对象预先建立的相邻对象时,签名单元具体用于:\n[0034] 基于预设的数据排列顺序,获取操作对象的第一相邻对象以及操作对象的第二相邻对象;\n[0035] 其中,第一相邻对象与操作对象左相邻并间隔M个对象,第二相邻对象与操作对象右相邻并间隔M个对象,第一相邻对象和第二相邻对象均为操作对象的相邻对象,M为自然数。\n[0036] 较佳的,在基于获得的操作对象的数字签名值和相邻对象的数字签名值,获取相邻对象的关联数字签名值时,关联单元具体用于:\n[0037] 基于数据排列顺序,获取第三相邻对象,其中,第三相邻对象与第一相邻对象左相邻并间隔M个对象;\n[0038] 基于数据排列顺序,获取第四相邻对象,其中,第四相邻对象与第二相邻对象右相邻间隔M个对象;\n[0039] 分别对操作对象、第一相邻对象、第二相邻对象、第三相邻对象和第四相邻对象进行哈希以及数字签名,获得相应的数字签名值;\n[0040] 基于获取的各个数字签名值,获取第一相邻对象的关联数字签名值,并基于获取的各个数字签名值,获取第二相邻对象的关联数字签名值。\n[0041] 较佳的,在基于获取的各个数字签名值,获取第一相邻对象的关联数字签名值时,关联单元还用于:\n[0042] 确定指定操作表征插入或修改数据时,计算操作对象的数字签名值、第一相邻对象的数字签名值和第三相邻对象的数字签名值的加和,作为第一加和,并对第一加和进行哈希以及数字签名,获得第一相邻对象的关联数字签名值;或者,\n[0043] 确定指定操作表征删除数据时,基于数据排列顺序,获取操作对象的下一个对象,作为第五相邻对象,并计算第一相邻对象的数字签名值、第三相邻对象的数字签名值和第五相邻对象的数字签名值的加和,作为第二加和,以及对第二加和进行哈希以及数字签名,获得第一相邻对象的关联数字签名值。\n[0044] 较佳的,在基于获取的各个数字签名值,获取第二相邻对象的关联数字签名值时,关联单元还用于:\n[0045] 确定指定操作表征插入或修改数据时,计算操作对象的数字签名值、第二相邻对象的数字签名值和第四相邻对象的数字签名值的加和,作为第三加和,并对第三加和进行哈希以及数字签名,获得第二相邻对象的关联数字签名值;或者,\n[0046] 确定指定操作表征删除数据时,基于数据排列顺序,获取操作对象的上一个对象,作为第六相邻对象,并计算第二相邻对象的数字签名值、第四相邻对象的数字签名值和第六相邻对象的数字签名值的加和,作为第四加和,并对第四加和进行哈希以及数字签名,获得第二相邻对象的关联数字签名值。\n[0047] 较佳的,关联单元还用于:\n[0048] 确定指定操作表征插入或修改数据时,计算操作对象的数字签名值、第一相邻对象的数字签名值以及第二相邻对象的数字签名值的加和,作为第五加和,并对第五加和进行哈希以及数字签名,获得操作对象的关联数字签名值。\n[0049] 本申请实施例中,监测到执行了指定操作时,获取指定操作对应的操作对象;获取针对操作对象预先建立的相邻对象,并分别对操作对象和相邻对象进行数字签名,获取相应的数字签名值;基于获得的操作对象的数字签名值和相邻对象的数字签名值,获取相邻对象的关联数字签名值。这样,基于操作对象的数字签名值与相邻对象的数字签名值的组合,获得相邻对象的关联数字签名值,从而可以在操作对象被删除或插入原先被删除的正确的操作对象时,通过相应的相邻对象的关联数字签名值进行验证,进而识别出非法操作,提高数据的信息安全,保证数据的完整性以及真实性。\n[0050] 第三方面,一种存储介质,存储有用于数字签名的程序,程序被处理器运行时,执行以下步骤:\n[0051] 监测到执行了指定操作时,获取指定操作对应的操作对象;\n[0052] 获取针对操作对象预先建立的相邻对象,并分别对操作对象和相邻对象进行数字签名,获取相应的数字签名值;\n[0053] 基于获得的操作对象的数字签名值和相邻对象的数字签名值,获取相邻对象的关联数字签名值,其中,关联数字签名值用于基于操作对象以及相邻对象之间的关联关系对操作对象进行验证。\n[0054] 第四方面,一种通信装置,包括:一个或多个处理器;以及\n[0055] 一个或多个计算机可读介质,可读介质上存储有用于数字签名的程序,其中,程序被一个或多个处理器执行时,使得装置执行上述第一方面中任一项的方法。\n[0056] 第五方面,一个或多个计算机可读介质,可读介质上存储有用于数字签名的程序,其中,程序被一个或多个处理器执行时,使得通信设备执行上述第一方面中任一项的方法。\n附图说明\n[0057] 图1为本申请实施例中数字签名方法的流程图;\n[0058] 图2为本申请实施例中数字签名装置的结构示意图。\n具体实施方式\n[0059] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,并不是全部的实施例。基于本申请实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。\n[0060] 为了在一条数据被删除或插入一条被删除的正确的数据时,对非法操作进行识别,提高数据的信息安全,保证数据的完整性以及真实性,本申请实施例中,设计了一种数字签名方法,该方法为分别获取操作对象以及相邻对象的数字签名值,并基于获取的各个数字签名值的组合,获得相邻对象的关联数字签名值。\n[0061] 下面结合附图对本申请优选的实施方式进行详细说明。\n[0062] 参阅图1所示,本申请实施例中,对数字签名具体流程如下:\n[0063] 步骤100:终端监测到用户执行了指定操作时,获取指定操作对应的操作对象。\n[0064] 具体的,终端对用户的操作行为进行监测,确定用户执行了指定操作时,获取指定操作对应的操作对象。\n[0065] 可选的,指定操作可以为修改数据、插入数据或删除数据。\n[0066] 其中,操作对象是指用户通过指定操作进行修改、插入或删除的数据,可选的,操作对象可以是数据表中的一条记录。\n[0067] 例如,终端基于用户表征修改数据的指定操作,获取用户在数据库的“历史”数据表中修改的第5条数据(操作对象)。\n[0068] 又例如,终端基于用户表征删除数据的指定操作,获取用户在数据库的“学习”数据表中删除的第10条数据(操作对象)。\n[0069] 这样,终端就可以基于用户的指定操作,获取相应的操作对象的具体内容。\n[0070] 步骤110:终端获取针对操作对象预先建立的相邻对象。\n[0071] 具体的,终端基于预设的数据排列顺序,获取操作对象的第一相邻对象,其中,第一相邻对象与操作对象左相邻并间隔M个对象,M为自然数,可选的,M可以为1。\n[0072] 例如,假设操作对象为数据表中第8条数据,M为1,则终端确定第一相邻对象为与操作对象左相邻的第7条数据。\n[0073] 终端基于数据排列顺序,获取操作对象的第二相邻对象,其中,第二相邻对象与操作对象右相邻并间隔M个对象。\n[0074] 例如,假设操作对象为数据表中第8条数据,M为1,则终端确定第二相邻对象为与操作对象右相邻的第9条数据。\n[0075] 第一相邻对象以及第二相邻对象均为操作对象的相邻对象。这样,终端就可以根据与操作对象间隔的对象的指定个数以及指定方向,获取操作对象的各个相邻对象。\n[0076] 进一步地,除了按照数据排列顺序获取操作对象的相邻对象,终端还可以基于操作对象与其它对象之间的关联关系等方式,获取相应的相邻对象,并且相邻对象的数量可以为多个。\n[0077] 步骤120:终端分别对操作对象和相邻对象进行数字签名,获取相应的数字签名值。\n[0078] 具体的,终端分别对操作对象、第一相邻对象和第二相邻对象进行哈希,获得相应的哈希值。\n[0079] 例如,终端采用哈希算法对数据表中的第23条数据(操作对象)进行哈希,获取固定长度的输出数据即哈希值。\n[0080] 然后,终端采用数字签名算法(如,密码生成算法、标记算法或验证算法),分别对获取的每一个哈希值进行数字签名,获取操作对象的数字签名值、第一相邻对象的数字签名值以及第二相邻对象的数字签名值。\n[0081] 例如,终端采用密码生成算法,对数据表的第12条数据(第二相邻对象)的哈希值进行数字签名,获得第二相邻对象的数字签名值。\n[0082] 其中,确定指定操作表征删除数据时,由于操作对象从数据表中被删除,因此终端不必获取操作对象的数字签名值。\n[0083] 这样,终端就可以采用哈希算法以及数字签名算法分别获取操作对象、第一相邻对象以及第二相邻对象的数字签名值。\n[0084] 步骤130:终端基于获得的操作对象的数字签名值和相邻对象的数字签名值,获取第一相邻对象的关联数字签名值。\n[0085] 具体的,首先,终端基于数据排列顺序,获取第三相邻对象。\n[0086] 其中,第三相邻对象不是操作对象的相邻对象,并且与第一相邻对象左相邻并间隔M个对象。\n[0087] 然后,终端对第三相邻对象进行哈希以及数字签名,获得相应的数字签名值。\n[0088] 进一步地,终端可以采用但不限于以下两种方式获取第一相邻对象的关联数字签名值:\n[0089] 第一种方式为:确定指定操作表征插入或修改数据时,计算操作对象的数字签名值、第一相邻对象的数字签名值和第三相邻对象的数字签名值的加和,作为第一加和,并对第一加和进行哈希以及数字签名,获得第一相邻对象的关联数字签名值。\n[0090] 可选的,计算第一相邻对象的关联数字签名值时,可以采用以下公式:\n[0091] SSDi-m=S(H(SHDi-2m+SHDi-m+SHDi))\n[0092] 其中,SSD为关联数字签名值,S为数字签名算法,H为哈希算法,SHD为数字签名值,i为操作对象的排列序号,m为相邻对象与操作对象间隔的对象的个数。\n[0093] 例如,假设i为10,m为1,则操作对象的数字签名值为SHD10、第一相邻对象的数字签名值SHD9以及第三相邻对象的数字签名值SHD8。则终端确定第一相邻对象的关联数字签名值为SSD9=S(H(SHD8+SHD9+SHD10))。\n[0094] 第二种方式为:确定指定操作表征删除数据时,基于数据排列顺序,获取操作对象的下一个对象,作为第五相邻对象,并计算第一相邻对象的数字签名值、第三相邻对象的数字签名值和第五相邻对象的数字签名值的加和,作为第二加和,以及对第二加和进行哈希以及数字签名,获得第一相邻对象的关联数字签名值。\n[0095] 可选的,计算第一相邻对象的关联数字签名值时,可以采用以下公式:\n[0096] SSDi-m=S(H(SHDi-2m+SHDi-m+SHDi+1))\n[0097] 其中,SSD为关联数字签名值,S为数字签名算法,H为哈希算法,SHD为数字签名值,i为操作对象的排列序号,m为相邻对象与操作对象间隔的对象的个数。\n[0098] 例如,假设i为9,m为2,则第一相邻对象的数字签名值SHD7、第三相邻对象的数字签名值SHD5,以及第五相邻对象的数字签名值SHD10。则终端确定第一相邻对象的关联数字签名值为SSD7=S(H(SHD5+SHD7+SHD10))。\n[0099] 这样,终端就可以基于与第一相邻对象相邻的各个对象的数字签名值的组合,获取第一相邻对象的关联数字签名值。其中,关联数字签名值用于基于操作对象以及相邻对象之间的关联关系对操作对象进行验证。\n[0100] 步骤140:终端基于获得的操作对象的数字签名值和相邻对象的数字签名值,获取第二相邻对象的关联数字签名值。\n[0101] 具体的,终端基于数据排列顺序,获取第四相邻对象。\n[0102] 其中,第四相邻对象不是操作对象的相邻对象,并且与第二相邻对象右相邻间隔M个对象。\n[0103] 然后,终端对第四相邻对象进行哈希以及数字签名,获得相应的数字签名值。\n[0104] 进一步地,终端可以采用但不限于以下两种方式获取第二相邻对象的关联数字签名值:\n[0105] 方式a):确定指定操作表征插入或修改数据时,计算操作对象的数字签名值、第二相邻对象的数字签名值和第四相邻对象的数字签名值的加和,作为第三加和,并对第三加和进行哈希以及数字签名,获得第二相邻对象的关联数字签名值。\n[0106] 可选的,计算第二相邻对象的关联数字签名值时,可以采用以下公式:\n[0107] SSDi+m=S(H(SHDi+2m+SHDi+m+SHDi))\n[0108] 其中,SSD为关联数字签名值,S为数字签名算法,H为哈希算法,SHD为数字签名值,i为操作对象的排列序号,m为相邻对象与操作对象间隔的对象的个数。\n[0109] 例如,假设i为5,m为1,则操作对象的数字签名值为SHD5、第二相邻对象的数字签名值SHD6以及第四相邻对象的数字签名值SHD7。则终端确定第二相邻对象的关联数字签名值为SSD5=S(H(SHD7+SHD6+SHD5))。\n[0110] 方式b):确定指定操作表征删除数据时,基于数据排列顺序,获取操作对象的上一个对象,作为第六相邻对象,并计算第二相邻对象的数字签名值、第四相邻对象的数字签名值和第六相邻对象的数字签名值的加和,作为第四加和,并对第四加和进行哈希以及数字签名,获得第二相邻对象的关联数字签名值。\n[0111] 可选的,计算第二相邻对象的关联数字签名值时,可以采用以下公式:\n[0112] SSDi+m=S(H(SHDi+2m+SHDi+m+SHDi-1))\n[0113] 其中,SSD为关联数字签名值,S为数字签名算法,H为哈希算法,SHD为数字签名值,i为操作对象的排列序号,m为相邻对象与操作对象间隔的对象的个数。\n[0114] 例如,假设i为9,m为3,则操作对象的数字签名值为SHD9、第二相邻对象的数字签名值SHD12、第四相邻对象的数字签名值SHD15以及第六相邻对象的数字签名值SHD8,则终端确定第二相邻对象的关联数字签名值为SSD12=S(H(SHD15+SHD12+SHD8))。\n[0115] 这样,终端就可以基于与第二相邻对象相邻的各个对象的数字签名值的组合,获取第二相邻对象的关联数字签名值。\n[0116] 步骤150:终端基于获得的操作对象的数字签名值和相邻对象的数字签名值,获取操作对象的关联数字签名值。\n[0117] 具体的,确定指定操作表征插入或修改数据时,终端计算操作对象的数字签名值、第一相邻对象的数字签名值以及第二相邻对象的数字签名值的加和,作为第五加和,并对第五加和进行哈希以及数字签名,获得操作对象的关联数字签名值。\n[0118] 可选的,计算操作对象的关联数字签名值时,可以采用以下公式:\n[0119] SSDi=S(H(SHDi+m+SHDi+SHDi-m))\n[0120] 其中,SSD为关联数字签名值,S为数字签名算法,H为哈希算法,SHD为数字签名值,i为操作对象的排列序号,m为相邻对象与操作对象间隔的对象的个数。\n[0121] 例如,假设i为20,m为1,则操作对象的数字签名值为SHD20、第一相邻对象的数字签名值SHD19以及第二相邻对象的数字签名值SHD21。则终端确定操作对象的关联数字签名值为SSD20=S(H(SHD21+SHD20+SHD19))。\n[0122] 这样,终端就可以分别获取操作对象、第一相邻对象和第二相邻对象的关联数字签名值,并对第一相邻对象以及第二相邻对象的关联数字签名值进行更新,从而在用户非法删除操作对象或非法插入一个原先被被删除的正确的操作对象时,操作对象的第一相邻对象以及第二相邻对象的关联数字签名值由于没有基于非法操作的操作对象的数字签名值进行相应的更新,因此无法通过验证,进而及时识别出非法操作以及非法操作的对象,保证数据的信息安全。\n[0123] 例如,假设i为10,m为1,则第10条数据(操作对象)的数字签名值为SHD10、第9条数据(第一相邻对象)的数字签名值SHD9、第8条数据(第三相邻对象)的数字签名值SHD8、第11条数据(第二相邻对象)的数字签名值SHD11、第12条数据(第四相邻对象)的数字签名值SHD12。\n[0124] 则终端确定第9条数据的关联数字签名值为SSD9=S(H(SHD8+SHD9+SHD10)),并确定第11条数据的关联数字签名值为SSD11=S(H(SHD12+SHD11+SHD10))。\n[0125] 若用户非法删除了上述操作对象,则终端基于删除上述操作对象后的数据表,确定第9条数据的验证的关联数字签名值为XSSD9=S(H(SHD8+SHD9+SHD11)),并确定第11条数据验证的关联数字签名值为XSSD11=S(H(SHD12+SHD11+SHD9))。\n[0126] 进一步地,终端确定SSD9与XSSD9不同,SSD11与XSSD11不同,则判定匹配失败,用户进行了非法操作。\n[0127] 本申请实施例中,一种存储介质,存储有用于数字签名的程序,程序被处理器运行时,执行以下步骤:\n[0128] 监测到执行了指定操作时,获取指定操作对应的操作对象;\n[0129] 获取针对操作对象预先建立的相邻对象,并分别对操作对象和相邻对象进行数字签名,获取相应的数字签名值;\n[0130] 基于获得的操作对象的数字签名值和相邻对象的数字签名值,获取相邻对象的关联数字签名值,其中,关联数字签名值用于基于操作对象以及相邻对象之间的关联关系对操作对象进行验证。\n[0131] 本申请实施例中,一种通信装置,包括:一个或多个处理器;以及[0132] 一个或多个计算机可读介质,可读介质上存储有用于数字签名的程序,其中,程序被一个或多个处理器执行时,使得装置可以执行上述实施例中的各个步骤。\n[0133] 本申请实施例中,一个或多个计算机可读介质,可读介质上存储有用于数字签名的程序,其中,程序被一个或多个处理器执行时,使得通信设备可以执行上述实施例中的各个步骤。\n[0134] 基于上述实施例,参阅图2所示,数字签名装置的结构示意图,本申请实施例中实施例中,数字签名装置具体包括:\n[0135] 获取单元20,用于监测到执行了指定操作时,获取指定操作对应的操作对象;\n[0136] 签名单元21,用于获取针对操作对象预先建立的相邻对象,并分别对操作对象和相邻对象进行数字签名,获取相应的数字签名值;\n[0137] 关联单元22,用于基于获得的操作对象的数字签名值和相邻对象的数字签名值,获取相邻对象的关联数字签名值,其中,关联数字签名值用于基于操作对象以及相邻对象之间的关联关系对操作对象进行验证。\n[0138] 较佳的,在获取针对操作对象预先建立的相邻对象时,签名单元21具体用于:\n[0139] 基于预设的数据排列顺序,获取操作对象的第一相邻对象以及操作对象的第二相邻对象;\n[0140] 其中,第一相邻对象与操作对象左相邻并间隔M个对象,第二相邻对象与操作对象右相邻并间隔M个对象,第一相邻对象和第二相邻对象均为操作对象的相邻对象,M为自然数。\n[0141] 较佳的,在基于获得的操作对象的数字签名值和相邻对象的数字签名值,获取相邻对象的关联数字签名值时,关联单元22具体用于:\n[0142] 基于数据排列顺序,获取第三相邻对象,其中,第三相邻对象与第一相邻对象左相邻并间隔M个对象;\n[0143] 基于数据排列顺序,获取第四相邻对象,其中,第四相邻对象与第二相邻对象右相邻间隔M个对象;\n[0144] 分别对操作对象、第一相邻对象、第二相邻对象、第三相邻对象和第四相邻对象进行哈希以及数字签名,获得相应的数字签名值;\n[0145] 基于获取的各个数字签名值,获取第一相邻对象的关联数字签名值,并基于获取的各个数字签名值,获取第二相邻对象的关联数字签名值。\n[0146] 较佳的,在基于获取的各个数字签名值,获取第一相邻对象的关联数字签名值时,关联单元22还用于:\n[0147] 确定指定操作表征插入或修改数据时,计算操作对象的数字签名值、第一相邻对象的数字签名值和第三相邻对象的数字签名值的加和,作为第一加和,并对第一加和进行哈希以及数字签名,获得第一相邻对象的关联数字签名值;或者,\n[0148] 确定指定操作表征删除数据时,基于数据排列顺序,获取操作对象的下一个对象,作为第五相邻对象,并计算第一相邻对象的数字签名值、第三相邻对象的数字签名值和第五相邻对象的数字签名值的加和,作为第二加和,以及对第二加和进行哈希以及数字签名,获得第一相邻对象的关联数字签名值。\n[0149] 较佳的,在基于获取的各个数字签名值,获取第二相邻对象的关联数字签名值时,关联单元22还用于:\n[0150] 确定指定操作表征插入或修改数据时,计算操作对象的数字签名值、第二相邻对象的数字签名值和第四相邻对象的数字签名值的加和,作为第三加和,并对第三加和进行哈希以及数字签名,获得第二相邻对象的关联数字签名值;或者,\n[0151] 确定指定操作表征删除数据时,基于数据排列顺序,获取操作对象的上一个对象,作为第六相邻对象,并计算第二相邻对象的数字签名值、第四相邻对象的数字签名值和第六相邻对象的数字签名值的加和,作为第四加和,并对第四加和进行哈希以及数字签名,获得第二相邻对象的关联数字签名值。\n[0152] 较佳的,关联单元22还用于:\n[0153] 确定指定操作表征插入或修改数据时,计算操作对象的数字签名值、第一相邻对象的数字签名值以及第二相邻对象的数字签名值的加和,作为第五加和,并对第五加和进行哈希以及数字签名,获得操作对象的关联数字签名值。\n[0154] 本申请实施例中,监测到执行了指定操作时,获取指定操作对应的操作对象;获取针对操作对象预先建立的相邻对象,并分别对操作对象和相邻对象进行数字签名,获取相应的数字签名值;基于获得的操作对象的数字签名值和相邻对象的数字签名值,获取相邻对象的关联数字签名值。这样,基于操作对象的数字签名值与相邻对象的数字签名值的组合,获得相邻对象的关联数字签名值,从而可以在操作对象被删除或插入原先被删除的正确的操作对象时,通过相应的相邻对象的关联数字签名值进行验证,进而识别出非法操作,提高数据的信息安全,保证数据的完整性以及真实性。\n[0155] 本领域内的技术人员应明白,本申请实施例中的实施例可提供为方法、系统、或计算机程序产品。因此,本申请实施例中可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例中可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。\n[0156] 本申请实施例中是参照根据本申请实施例中实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。\n[0157] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。\n[0158] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。\n[0159] 尽管已描述了本申请实施例中的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例中范围的所有变更和修改。\n[0160] 显然,本领域的技术人员可以对本申请实施例中实施例进行各种改动和变型而不脱离本申请实施例中实施例的精神和范围。这样,倘若本申请实施例中实施例的这些修改和变型属于本申请实施例中权利要求及其等同技术的范围之内,则本申请实施例中也意图包含这些改动和变型在内。
法律信息
- 2018-06-12
- 2017-09-12
实质审查的生效
IPC(主分类): H04L 9/32
专利申请号: 201710296782.1
申请日: 2017.04.28
- 2017-08-18
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
1998-12-30
|
1998-05-19
| | |
2
| |
2012-05-09
|
2010-10-13
| | |
3
| |
2011-09-21
|
2011-05-30
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |