一种电子文件防篡改方法

文档序号:7812897阅读:1589来源:国知局
一种电子文件防篡改方法
【专利摘要】本发明公开了一种电子文件防篡改方法,其特征是按如下步骤进行:1.主节点将待处理散列值封装成散列值封包并向从节点公布;2.主节点计算散列值封包的散列值;3.主节点将新的散列值作为新的待处理散列值并与散列值封包的散列值一起封装成新的散列值封包并进行公布;4.从节点将所接收到的所有散列值封包连接成散列封包链,以散列封包链实现电子文件的防篡改校验。本发明能有效地监督和防范来自系统管理方的攻击,降低电子文件被篡改的概率,通过很小的空间和时间代价,实现较大数据量的防篡改能力,同时保障电子文件的私密性。
【专利说明】一种电子文件防篡改方法

【技术领域】
[0001]本申请涉及防篡改技术,特别是涉及一种电子文件的防篡改方法。

【背景技术】
[0002]随着网络的不断发展,越来越多的用户通过网络发布电子文件或上传文件,其中包含一些重要电子文件如撰写的商业合同、技术文档,以及发表的对外声明、评论意见等。由于网络电子文件和电子文件本身的数字特性,容易被篡改而不被发觉。用户在接受服务时,通常只能被动选择信任服务提供商的能力和行为。当前的服务提供商,如网盘、云盘、微博、微信等,在其系统中拥有最大化的权利,其行为无法被有效地监督。系统管理方可以任意删改系统中的数据而不易被用户察觉,同时目前有从事修改或删除网络电子文件的网络危机公关和专业黑客组织,通过提供收费服务篡改删除网络电子文件。尽管用户可以通过如百度快照、谷歌Cache等相关服务,有限地查看某些特定电子文件的原始状态,但这些服务的功能相对不足,对电子文件本身也有较多要求(如必需公开且被搜索引擎收录、时效性强、电子文件格式的限制等),同时也没有手段保障服务提供商及其管理人员自身的公正性。同时,在需要进行电子文件追溯或法律取证时,由于电子文件来源单一,以及常见网络系统本身的设计局限性,也同样难以核实或支持用户自己出示或提供的原始文件、截图快照等内容的原始状态和真实性。
[0003]针对上述情况,分布式存储技术可以将同一份电子文件存储于多个逻辑或物理上分离的系统或设备中,但其主要缺点是对系统存储容量要求较高,维护费用高昂。同时仍不能有效地保障文件不被系统管理人员修改。
[0004]散列技术能够将任意长度的输入,通过散列算法变换为固定长度的输出,用少量数据验证大量数据的完整性。本领域中,常见的散列技术如MD5、SHA-256等,均能较为有效地保障单向操作,即对于给定的散列值,没有实用的方法可以计算出一个原始输入,从而很难伪造。即便是对原始文件的微小改动,也能造成散列结果的巨大变化,因此可以用相对较短的散列值来验证任意长度的数据是否被更改过。目前,Internet上有部分文件存储服务提供商,常见的如软件下载网站和P2P服务商,在提供可下载内容时,同时提供文件的散列电子文件。但是,其作用主要局限于让用户检查下载的文件与其服务器中提供的文件是否一致。值得注意的是,当前也缺乏有效而方便的机制来保护散列电子文件本身不被修改删除,即系统内外部人员可能同时替换电子文件内容和其对应的散列,从而很难保障电子文件的防篡改性。


【发明内容】

[0005]本发明为克服现有技术存在的不足之处,提出一种电子文件防篡改方法,能有效地监督和防范来自系统管理方的攻击,降低电子文件被篡改的概率,通过很小的空间和时间代价,实现较大数据量的防篡改能力,同时保障电子文件的私密性。
[0006]为了达到上述目的,本发明所采用的技术方案为:
[0007]本发明一种电子文件防篡改方法的特点是,在分布式网络环境中,存在一个主节点和η个从节点,所述η个从节点用于计算电子文件所对应的散列值,并向所述主节点发送所述电子文件所对应的散列值;所述主节点接收所述电子文件所对应的散列值并按如下步骤进行防篡改处理:
[0008]步骤1、定义变量m,初始化m = I ;
[0009]步骤2、所述主节点将所获取的电子文件所对应的散列值作为待处理散列值,并根据所设定的阈值条件,将所述待处理散列值封装成第m个散列值封包并向所述η个从节点进行公布;
[0010]步骤3、所述η个从节点接收所述第m个散列值封包并进行存储;
[0011]步骤4、所述主节点将所述第m个散列值封包作为所述主节点的电子文件并计算获得所述主节点的电子文件所对应的散列值;
[0012]步骤5、所述主节点将所获取的从节点发送的新的电子文件所对应的散列值作为新的待处理散列值;并根据所设定的阈值条件,将所述新的待处理散列值以及所述主节点的电子文件所对应的散列值封装成第m+1个散列值封包并向所述η个从节点进行公布;
[0013]步骤6、所述η个从节点接收所述第m+1个散列值封包并与第m个散列值封包形成散列封包链后进行存储;以所述散列封包链实现电子文件的防篡改校验;
[0014]步骤7、将m+1赋值给m并返回步骤4执行。
[0015]本发明电子文件防篡改方法的特点也在于:
[0016]所述阈值条件为时间间隔阈值、或为所述待处理散列值的数量阈值、或为所述散列值封包的占用空间阈值。
[0017]所述防篡改校验是按如下步骤进行:
[0018]步骤1、将所述主节点的第m个散列值封包与η-1个从节点所接收到的第m个散列值封包组成η个散列值封包;
[0019]步骤2、第η个从节点对自身所接收的第m个散列值封包与所述η个散列值封包进行比较,若第η个从节点自身所接收的第m个散列值封包与f个以上的散列值封包内容相同,则表示第η个从节点为合法节点,否则为非法节点;
[0020]步骤3、对待校验的电子文件所对应的散列值利用所述合法节点中所存储的散列封包链进行对比校验;若所述散列封包链中包含所述待校验的电子文件所对应的散列值,则表明所述待校验的电子文件未被篡改。
[0021]与现有技术相比,本申请具有以下有益效果:
[0022]1、本发明通过前后相连的散列封包链结构,确保散列封包链中任何散列值封包被修改,都能通过计算发现,从而使得用户能有效地监督系统管理方的行为,并有效提升电子文件的防篡改能力。
[0023]2、本发明散列值封包被分发到多个从节点公布,使得用户能有效地监督散列值封包,解决了现有电子文件防篡改方法难以抵御来自管理方攻击的问题,大大降低系统管理员或黑客对已有散列封包链结构攻击的成功率。
[0024]3、本发明从节点仅上传电子文件的散列值,原始电子文件不会被上传到网络上,因此能在保护电子文件完整性的同时,保障其私密性并节约存储资源。同时,使用上传散列值来保护文件的完整性,通过很小的空间和时间代价,实现较大数据量的防篡改。

【专利附图】

【附图说明】
[0025]图1为本发明的流程图;
[0026]图2为本发明散列封包链的一种优选结构框图。

【具体实施方式】
[0027]如图1所示,一种电子文件防篡改方法是在分布式网络环境中,存在一个主节点和η个从节点。本实施例中,主节点为运行应用服务程序的网络服务器,从节点为运行于PC机的客户端软件,主、从节点通过Internet相互连接,使用基于标准TCP/IP的SOAP协议完成通信。η个从节点用于计算电子文件所对应的散列值,并向主节点发送电子文件所对应的散列值。电子文件为用户系统可识别和读取二进制内容的任意格式的电子文件,如PDF、DOC、ZIP、EXE、JPG、AVI等格式,对文件的大小没有特殊限制。计算电子文件对应的散列,采用常用散列算法实现,如SHA256、MD5等,为保证散列的抗冲突和抗逆向性能,也可以选用更强的散列算法。本实施例中,采用MD5算法进行计算,每个散列的长度均固定为32个字符。用户使用PC机的客户端软件选择指定的电子文件,通过软件内预设的MD5算法计算得到其二进制内容对应的散列值。计算散列值并发送的方式可为以下两种之一:第一种,直接由同一套PC机客户端软件完成完整的散列值计算和发送功能;第二种,由一套单独的PC机客户端软件计算出散列值,再人工地将计算出的散列值拷贝或抄录,输入到另一套联网的PC机客户端中,从该联网的客户端发送到主节点,这样能彻底隔绝原始的电子文件与因特网的连接,从源头上保护文件的私密性。主节点接收电子文件所对应的散列值并按如下步骤进行防篡改处理:
[0028]步骤1、定义变量m,初始化m = I ;
[0029]步骤2、主节点将所获取的电子文件所对应的散列值作为待处理散列值,并根据所设定的阈值条件,将待处理散列值封装成第m个散列值封包并向η个从节点进行公布;阈值条件可以为时间间隔阈值、或为待处理散列值的数量阈值、或为散列值封包的占用空间阈值。本实施例中,阈值规则为每I个小时产生一个散列值封包,即使用时间间隔阈值,该阈值较为简单易操作,但可能在忙时出现网络拥塞,适用于系统负荷不太大的情况。而采用待处理散列值的数量阈值和散列值封包的占用空间阈值便于将散列值封包文件进行归档和管理。
[0030]在本实施例中,主节点响应由从节点发起的通信请求,接收由从节点上传的散列值,并对散列值的长度进行合理性校验。使用时间间隔阈值将I个小时内主节点接收到的所有待处理散列值组装为散列值封包,散列值封包的内容格式为XML格式。XML主体部分中的每个节点对应一个散列值。
[0031]步骤3、η个从节点接收第m个散列值封包并进行存储。在本实施例中,从节点接收来自主节点发送的散列封包,并以”.hsp”后缀名的文件形式存储于PC机客户端本地硬盘的存储目录中,该存储目录在安装时由用户指定。存储完毕后,在PC机客户端的SQLite数据库中,记录下散列封包的m值和散列封包的接收时间。另外,还可以通过调用第三方平台的API,如百度网盘、360云盘、腾讯微云等平台的数据共享软件或接口,将散列值封包文件进行全网公布,实现用户监督的同时不占用用户本地的存储空间。
[0032]步骤4、主节点将第m个散列值封包作为主节点的电子文件并计算获得主节点的电子文件所对应的散列值。本实施例中,使用MD5算法计算第m个散列值封包的散列值。
[0033]步骤5、主节点将所获取的从节点发送的新的电子文件所对应的散列值作为新的待处理散列值;并根据所设定的阈值条件,将新的待处理散列值以及主节点的电子文件所对应的散列值封装成第m+1个散列值封包并向η个从节点进行公布。在本实施例中,类似步骤2,主节点响应由从节点发起的通信请求,接收由从节点上传的散列值,并对散列值的长度进行合理性校验。阈值规则为每I个小时产生一个散列值封包,将I个小时内主节点接收到的所有待处理散列值组装为散列值封包,散列值封包的内容格式为XML格式。XML主体部分中的每个节点对应一个散列值。
[0034]步骤6、如图2所示,η个从节点接收第m+1个散列值封包并与第m个散列值封包形成散列封包链后进行存储;本实施例中,第m = I个散列值封包的文件内容如下:
[0035]〈head〉
[0036]<seq>l</seq>
[0037]<pre-checksum></pre-checksum〉
[0038]<pack-datetime>2014-01-0108:00:00:000〈/pack-datetime>〈/head>
[0039]〈main〉
[0040]<info>
[0041]<user>MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALRe57bM57DnsoSJJZm7XwvlmRU4FNmmGqnf7oBnlT3qtp70HJ8/9CuiLPF9qm0ul7WZcaQFuq32bAFkRQMZs/kCAwEAAQ = = 〈/user〉
[0042]<datetime>2014-01-0107:01:35:025</datetime〉
[0043]<hash>lfIbb9e6cdff9c68eccadel4c6d7d650</hash>
[0044]</info〉
[0045]〈/main〉
[0046]第m+1个散列值封包的内容如下:
[0047]〈head〉
[0048]<seq>2</seq>
[0049]<pre-checksum>dd9ecc2a5b0c81642fbd856078bleldf</pre-checksum>
[0050]<pack-datetime>2014-01-0109:00:00:000〈/pack_datetime>
[0051]〈/head〉
[0052]〈main〉
[0053]<info>
[0054]<user>MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJDhrAVnzyrxrxj2DxZPqfflItlrYffKZ
e
[0055]87wlhPvrQ+3GEdnVZNPIuPqbyBffnsvpvff7Xmjem23BdCFIJvqmt4kzcCAwEAAQ = = </user>
[0056]<datetime>2014-01-0108:19:35:322〈/datetime〉
[0057]<hash>0bl018cca89bb24ad754d0b86ac4a356</hash>
[0058]</info〉
[0059]<info>
[0060]<user>MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAIUELqzixli+gP5NlwfSmjhEUf3220Pt
[0061]9wJARYrkQnCVnHby4/HmziJIFUoJkchVCfifu7S07MHsc0dPVHD4Vm0CAwEAAQ = = </user>
[0062]<datetime>2014-01-0108:23:52:761</datetime〉
[0063]<hash>925f206a5ddde02daad4fedf50d7845b</hash>
[0064]</info〉
[0065]〈/main〉
[0066]散列值封包结构中,“head”字段中记录了散列封包的概要电子文件,包含散列值封包的序号m值(“seq”字段)、前一散列值封包的MD5散列值(“pre-checksum”字段)、散列值封包产生的时间(、801^-(1&丨6^1^”字段)。对m= I的散列值封包的内容使用MD5算法进行计算,可以得出其散列值为“dd9ecc2a5b0c81642fbd856078bleldf”,该值正是出现在m = 2的散列值封包“head”字段下的“pre-checksum”字段值。用户可以通过此字段从任意第m个散列值封包追溯查询到系统中产生的首个散列值封包。“main”字段记录了散列值封包形成的间隔时间阈值内,系统中所有用户上传的电子文件散列。例如m= I的散列值封包是2014年I月I日8点产生的,此前I个小时的时间内,系统所有从节点共上传了一个电子文件的散列值,即散列值封包内容中“info”节点出现的数量。类似地,m= 2的散列值封包为2014年I月I日9点产生的,记录了此前I个小时内,系统所有用户共发布了 2条上传电子文件。在“info”节点中记录了散列封包中各散列与上传相关的电子文件,如“user”字段标识了该条上传电子文件用户的RSA公钥值,“ datetime”字段记录了电子文件上传日期时间,“hash”字段记录了电子文件内容的MD5散列值。
[0067]以散列封包链实现电子文件的防篡改校验;具体为:
[0068]步骤a、将主节点的第m个散列值封包与n_l个从节点所接收到的第m个散列值封包组成η个散列值封包。在具体实施中,当用户需要在某个从节点上,对电子文件进行防篡改校验,从节点首先要检查确保该节点本身未被破坏。从节点与主节点通信,获取网络中其他从节点的网络位置。从节点与其他从节点直接通过点对点通信,以比对序号最大的散列值封包文件对应的散列值。
[0069]步骤b、第η个从节点对自身所接收的第m个散列值封包与η个散列值封包进行比



η
较,若第η个从节点自身所接收的第m个散列值封包与y个以上的散列值封包内容相同,则表示第η个从节点为合法节点,否则为非法节点。在具体实施中,比较散列值封包的内容相同,可以采用对散列值封包进行散列计算的方法,对比散列结算的结果以判断节点是否合法。对于非法节点,给予用户相应提示,拒绝判断用户提交校验的电子文件是否被篡改。
[0070]步骤C、对待校验的电子文件所对应的散列值利用合法节点中所存储的散列封包链进行对比校验;若散列封包链中包含待校验的电子文件所对应的散列值,则表明待校验的电子文件未被篡改。
[0071]步骤7、将m+1赋值给m并返回步骤4执行。当无需再接受新的电子文件的防篡改请求时,循环停止,不再返回步骤4。
【权利要求】
1.一种电子文件防篡改方法,其特征是,在分布式网络环境中,存在一个主节点和η个从节点,所述η个从节点用于计算电子文件所对应的散列值,并向所述主节点发送所述电子文件所对应的散列值;所述主节点接收所述电子文件所对应的散列值并按如下步骤进行防篡改处理: 步骤1、定义变量m,初始化m = I ; 步骤2、所述主节点将所获取的电子文件所对应的散列值作为待处理散列值,并根据所设定的阈值条件,将所述待处理散列值封装成第m个散列值封包并向所述η个从节点进行公布; 步骤3、所述η个从节点接收所述第m个散列值封包并进行存储; 步骤4、所述主节点将所述第m个散列值封包作为所述主节点的电子文件并计算获得所述主节点的电子文件所对应的散列值; 步骤5、所述主节点将所获取的从节点发送的新的电子文件所对应的散列值作为新的待处理散列值;并根据所设定的阈值条件,将所述新的待处理散列值以及所述主节点的电子文件所对应的散列值封装成第m+1个散列值封包并向所述η个从节点进行公布; 步骤6、所述η个从节点接收所述第m+1个散列值封包并与第m个散列值封包形成散列封包链后进行存储;以所述散列封包链实现电子文件的防篡改校验; 步骤7、将m+1赋值给m并返回步骤4执行。
2.根据权利要求1所述的电子文件防篡改方法,其特征是:所述阈值条件为时间间隔阈值、或为所述待处理散列值的数量阈值、或为所述散列值封包的占用空间阈值。
3.根据权利要求1所述的电子文件防篡改方法,其特征是:所述防篡改校验是按如下步骤进行: 步骤1、将所述主节点的第m个散列值封包与η-1个从节点所接收到的第m个散列值封包组成η个散列值封包; 步骤2、第η个从节点对自身所接收的第m个散列值封包与所述η个散列值封包进行比



η较,若第η个从节点自身所接收的第m个散列值封包与y个以上的散列值封包内容相同,则表示第η个从节点为合法节点,否则为非法节点; 步骤3、对待校验的电子文件所对应的散列值利用所述合法节点中所存储的散列封包链进行对比校验;若所述散列封包链中包含所述待校验的电子文件所对应的散列值,则表明所述待校验的电子文件未被篡改。
【文档编号】H04L29/08GK104184818SQ201410436231
【公开日】2014年12月3日 申请日期:2014年8月29日 优先权日:2014年8月29日
【发明者】李晓风, 赵赫, 李芳 , 谭海波, 孙怡宁, 刘冰 申请人:中国科学院合肥物质科学研究院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1