云存储环境下文本文档的篡改检测方法

文档序号:6552196阅读:198来源:国知局
云存储环境下文本文档的篡改检测方法
【专利摘要】本发明公开了云存储环境下文本文档的一种篡改检测方法,以及该方法的两种实施方案:云服务器端使用该方法和客户端使用该方法。篡改检测方法的执行过程是:首先分别对上传到云服务器端的文档与下载到客户端的文档计算若干个称为指纹的数字序列;然后,比对两次计算的文档指纹,如果二者相等,则表示文档没有被他人篡改过。否则,继续比对段落指纹及句子指纹,定位被篡改的具体句子。云服务器端使用此方法的实施步骤是:当文档上传到服务器端之后和下载到客户端之前,在云服务器端分别计算指纹,再比对两次计算的指纹。本发明能快速准确的为文档提供篡改检测,还能精确定位篡改位置。同时该方法给服务器端、客户端和网络带宽带来的负担较小。
【专利说明】云存储环境下文本文档的篡改检测方法

【技术领域】
[0001]本发明涉及一种文本文档的篡改检测方法,尤其涉及一种检测存储在云服务器端的文本文档是否被他人篡改的方法。

【背景技术】
[0002]随着互联网的飞速发展以及便携式上网设备(如:手机、笔记本、平板电脑等)的普及,人们对互联网在线服务的需求和依赖越来越强烈,而云存储作为一种以互联网为基础向用户提供在线存储的服务,受到了人们的广泛使用。用户无需了解云存储背后繁琐的技术细节,完全按需即用、按需即取。目前,市场上的云存储产品越来越丰富,如微软网盘SkyDrive、华为网盘DBank、奇虎360云盘、酷云CoolCloud等。这些产品的提供商为了消除用户对于存储在云端的数据是否被非法访问、是否被破坏等安全方面的顾虑,采取了大量的密码技术和加固技术来向用户提供可信任的安全云。但是,就用户而言,他们不仅需要防止云存储服务提供商(简称:提供商)外部网络黑客的恶意访问和破坏,更需要防止提供商内部人员的肆意篡改。
[0003]现有的针对文本文档内容保护的方法主要有两种:一种是利用密码技术对明文实施各种变化,使它不为外人所理解;另一种是利用数字水印技术,在文档中潜入隐藏信息,使它不被外人所发现。
[0004]密码技术,要求用户首先在客户端对文档内容进行加密,然后将加密的文档存储在云服务器端,自己保存密钥。当用户需要再次访问或编辑文档时,先将它下载到客户端解密,再进行相应的操作。但是该方法耗费客户端的CPU、内存等资源非常多,占用的网络带宽也非常大。更重要的是,加密技术很难判断出用户文档是否被篡改,更不用说,精确定位到篡改的具体句子。
[0005]数字水印技术,要求用户在客户端先利用该技术在文档中潜入隐藏信息,然后将潜入了隐藏信息的文档上传到服务器端。用户在下载文档时,通过检测隐藏信息判断文档内容是否被篡改了。现有的文本数字水印技术携带隐藏信息的方式主要有:利用文本的字间距、行间距来嵌入水印信息;以标点信息编码、字符的字体编码来携带水印信息;改变部分字符笔划的长度或整个字符的高度来嵌入水印信息等。但是这些方法给用户带来的视觉上的影响较大、载体文件携带水印信息的容量小,不适宜用户对文档进行二次编辑的需求。而且上述方法面临着文本数字水印的嵌入算法运行困难、鲁棒性差、水印信息检测困难等诸多问题。


【发明内容】

[0006]本发明的目的是提供一种检测文本文档是否被篡改的方法。
[0007]为了达到上述目的,本发明的一个技术方案是提供了一种计算文本文档的各粒度指纹的方法,各粒度指纹包括句子指纹、段落指纹及文档指纹,其特征在于,步骤为:
[0008]步骤1、若当前文本文档为中文文本文档,则利用分词系统将中文文本文档中的各个中文词分割开,进入步骤2,若当前文本文档为外文文本文档,则直接进入步骤2 ;
[0009]步骤2、对中文文本文档中的每个中文词或外文文本文档中的每个外文词编码;
[0010]步骤3、利用每个中文词或每个外文词及其对应的编码计算得到中文文本文档或外文文本文档中每个句子的句子指纹,当且仅当两个句子中每个中文词或每个外文词及其位置相同时,两个句子的句子指纹相同;
[0011]步骤4、利用句子指纹计算得到中文文本文档或外文文本文档中每段中文或每段外文的段落指纹,当且仅当两段中文或两段外文中每个中文词或每个外文词及其位置相同时,两段中文或两段外文的段落指纹相同;
[0012]步骤5、利用段落指纹计算得到中文文本文档或外文文本文档的文档指纹,当且仅当两个中文文本文档或两个外文文本文档中每个中文词或每个外文词及其位置相同时,两个中文文本文档或两个外文文本文档的文档指纹相同。
[0013]优选地,在所述步骤3中,利用Karp-Rabin哈希函数计算所述句子指纹;和/或在所述步骤4中,利用Karp-Rabin哈希函数计算所述段落指纹;和/或在所述步骤5中,利用Karp-Rabin哈希函数计算所述文档指纹。
[0014]优选地,利用Karp-Rabin哈希函数计算所述句子指纹的公式为:
[0015]Sentencefingerprint (W1W2...Wn) = (w12n_1+w22n_2+...+Wn^12^wn)modp,式中,Wi 为每个中文词或每个外文词,Wi是中文词或外文词Wi的编码,P为一个足够大的随机素数;
[0016]利用Karp-Rabin哈希函数计算所述段落指纹的公式为:
[0017]Paragraphfingerprint (S1S2...Sm) = (3^^^822°1-2+...+s^^^sjmod p,式中,S1,S2,..., Sffl是当前段落中的m个句子,Si是句子S1的句子指纹;
[0018]利用Karp-Rabin哈希函数计算所述文档指纹的公式为:
[0019]Documentfingerprint (P1P2...Pq) = (p12q_1+p22r2+...+PtrPkpq)modp,式中,P1, P1,...,Pq是当前中文文本文档或外文文本文档中的q个段落,Pi是段落Pi的段落指纹。
[0020]本发明的另一个技术方案是提供了一种采用上述的计算文本文档的各粒度指纹的方法的服务器端使用篡改检测方法,其特征在于,步骤为:
[0021]第一步、用户将中文文本文档或外文文本文档从客户端上传到服务器端之后,使用上述的计算文本文档的各粒度指纹的方法计算生成当前中文文本文档或外文文本文档的句子指纹、段落指纹及文档指纹;
[0022]第二步、计算完句子指纹、段落指纹及文档指纹之后,服务器将所有句子指纹、段落指纹及文档指纹发回给客户端,用户保存接收到的句子指纹、段落指纹及文档指纹;
[0023]第三步、当用户访问在第一步中上传至服务器端的中文文本文档或外文文本文档时,先在服务器端利用上述的计算文本文档的各粒度指纹的方法重新计算该中文文本文档或外文文本文档的句子指纹、段落指纹及文档指纹,然后与用户保存的句子指纹、段落指纹及文档指纹比对,比对时,先比对文档指纹,若相同,则表示当前中文文本文档或外文文本文档没有被篡改,用户可以放心访问,否则,逐段比对段落指纹,找出不相同的段落指纹所对应的段落,这些段落为被篡改段落,再在每个被篡改段落中逐句比对句子指纹,找出不相同的句子指纹所对应的句子,从而定位至当前中文文本文档或外文文本文档中的哪些段落的哪些句子被篡改,通过客户端向用户提供篡改证据。
[0024]优选地,在所述第三步后还包括:
[0025]第四步、对于第三步中用户可以放心的中文文本文档或外文文本文档,若用户将其下载到客户端后进行了二次编辑,则将该二次编辑后的中文文本文档或外文文本文档再存储到服务器端后,使用上述的计算文本文档的各粒度指纹的方法重新计算生成当前中文文本文档或外文文本文档的句子指纹、段落指纹及文档指纹,并将其保存到客户端,用于下次检测。
[0026]本发明的另一个技术方案是提供了一种采用上述的计算文本文档的各粒度指纹的方法的客户端使用篡改检测方法,其特征在于,步骤为:
[0027]第一步、用户在客户端新建、编辑生成中文文本文档或外文文本文档后,在当前中文文本文档或外文文本文档上传到服务器端之前,使用如权利要求1所述的计算文本文档的各粒度指纹的方法计算当前中文文本文档或外文文本文档的文档指纹、段落指纹及句子指纹,并将它们保留在客户端;
[0028]第二步、文档指纹、段落指纹及句子指纹存储后,用户将当前中文文本文档或外文文本文档上传到服务器端;
[0029]第三步、当用户再次访问上传到服务器端的中文文本文档或外文文本文档时,先将它下载到客户端,利用上述的计算文本文档的各粒度指纹的方法计算该中文文本文档或外文文本文档的文档指纹、段落指纹及句子指纹,然后与客户端保存的文档指纹、段落指纹及句子指纹比对,比对时,先比对文档指纹,若相同,则表示当前中文文本文档或外文文本文档没有被篡改,用户可以放心访问,否则,逐段比对段落指纹,找出不相同的段落指纹所对应的段落,这些段落为被篡改段落,再在每个被篡改段落中逐句比对句子指纹,找出不相同的句子指纹所对应的句子,从而定位至当前中文文本文档或外文文本文档中的哪些段落的哪些句子被篡改。
[0030]优选地,在所述第三步后还包括:
[0031 ] 第四步、对于第三步中用户可以放心的中文文本文档或外文文本文档,若用户将其下载到客户端后进行了二次编辑,则使用上述的计算文本文档的各粒度指纹的方法重新计算生成当前中文文本文档或外文文本文档的句子指纹、段落指纹及文档指纹,并将其保存到客户端,用于下次检测后,再将当前中文文本文档或外文文本文档上传至服务器端。
[0032]本发明的工作原理是:分别对上传到服务器端的文本文档与下载到客户端的文本文档,计算它们的各粒度指纹,包括:文档指纹、段落指纹和句子指纹。利用指纹的唯一性,判断出存储在服务器端的文本文档是否被他人篡改过。详细的说,在篡改检测的过程中,为了节省时间和提高效率,本发明先比对文档指纹,如果文档指纹相等,则表示整篇文档没有被他人篡改过。否则,继续比对段落指纹。找出对应指纹不同的段落,再逐句比对段落中的句子指纹,定位到被篡改的具体句子,提供篡改证据。
[0033]鉴于文本文档具有信息涵盖量大、容易被篡改,并且篡改后不易被察觉的特点,以及它在云存储服务器端(简称:服务器端)反复存储和读取,在用户所处的客户端(简称:客户端)反复编辑的需求,本发明提出一种检测文本文档是否被篡改的方法。该方法确保了用户知晓,他存储在云服务器端的文本文档是否被他人篡改了。如果被篡改了,该方法能够对篡改的位置精确定位,找出篡改证据。因此,本发明实现了在云存储环境下对文本文档内容的安全检测,维护了用户的权益。从约束篡改行为方面分析,该方法也起到了一定的预防作用。
[0034]本发明的有益效果体现在以下几个方面:
[0035]1.通过篡改检测方法的两种实施方案:云服务器使用篡改检测方法和客户端使用篡改检测方法,保障了云存储环境下用户数据的安全,维护了用户的权益。
[0036]2.通过篡改检测方法,一旦发现用户文档被他人篡改了,该方法可以精确定位到被篡改的具体句子,为用户提供有利的篡改证据。
[0037]3.在篡改检测方法中,计算文档的各粒度指纹所耗费的时间,以及计算生成的指纹数目,都与文档中的句子个数有关。由于在一篇文档中句子个数是有限的,且数目不大,因此指纹的计算时间便非常快。所以,本发明提供的篡改检测方法为服务器端或客户端带来的计算资源的耗费完全可以忽略。
[0038]4.在服务器端使用篡改检测方法的方案中,由于一篇文档的指纹个数是有限的,且数目不大,所以在服务器端与客户端之间传输指纹的过程中,不会为网络带宽带来负担。
[0039]5.在篡改检测方法中,因为计算出一篇文档的指纹数目不大,从而客户端存储指纹所耗费的存储空间也非常小,所以存储指纹为客户端带来的存储负担完全可以忽略不计。

【专利附图】

【附图说明】
[0040]图1a是服务器端使用篡改检测方法中用户存储文档过程的体系结构图;
[0041]图1b是服务器端使用篡改检测方法中用户读取文档过程的体系结构图;
[0042]图2a是客户端使用篡改检测方法中用户存储文档过程的体系结构图;
[0043]图2b是客户端使用篡改检测方法中用户读取文档过程的体系结构图;
[0044]图3a是计算指纹预处理执行过程的示例图;
[0045]图3b是计算句子指纹和段落指纹执行过程的示例图1 ;
[0046]图3c是计算句子指纹和段落指纹执行过程的示例图2 ;
[0047]图3d是计算文档指纹执行过程的示例图;
[0048]图4是一篇文档的指纹表示示例图;
[0049]图5是比对指纹模块执行过程的示例图;
[0050]图6是比对“指纹①”与“指纹②”的具体过程的示例图。

【具体实施方式】
[0051]本发明给出了篡改检测方法的二种实施方案。实施方案一是服务器端使用篡改检测方法,实施方案二是客户端使用篡改检测方法。具体说明如下。
[0052]实施方案一:图1是服务器端使用篡改检测方法的体系结构图,它包括两个子图,图1a和图lb。其中,图1a是当用户向服务器端存储文档时使用篡改检测方法的体系结构图,图1b是当用户从服务器端读取文档时使用篡改检测方法的体系结构图。
[0053]结合图1说明,本方案包括三个实体:用户1-1,客户端1-2,服务器1-3。用户1_1可以在客户端1-2实现以下操作:新建文档1-4,编辑文档1-5,将文档和指纹暂时保存在临时文件系统1-6中,通过浏览器1-7访问服务器1-3。具体的说,浏览器1-7是用户1-1在客户端1-2访问服务器1-3的媒介。服务器1-3除了为用户提供辅助存储空间即云盘1-8以外,还提供篡改检测方法1-9。其中,篡改检测方法1-9具体包括两个模块:计算指纹模块1-10和比对指纹模块1-11。
[0054]本方案的【具体实施方式】如下:
[0055]结合图1a说明。首先,用户1-1在客户端1-2新建1-4和编辑1-5 —篇文档,完成之后将文档暂时保存在临时文件系统1-6中。然后,用户1-1再利用浏览器1-7从1-6中取出文档上传给服务器1-3,存储在云盘1-8中。最后,计算指纹模块1-10计算该文档的指纹,记为“指纹①”,并将它返回客户端1-2处,存储在临时文件系统1-6中。
[0056]结合图1b说明。当用户1-1需要读取文档时,先通过浏览器1-7访问云盘1-8中的文档,计算指纹模块1-10再次计算该文档的指纹,记为“指纹②”,并把它提交给比对指纹模块1-11。然后,用户1-1通过浏览器1-7将临时文件系统1-6中的“指纹①”发送给比对指纹模块1-11。最后,1-11通过比较“指纹①”与“指纹②”,检测文档是否被篡改,并将检测结果result返回客户端1-2,通过浏览器1_7呈现给用户1_1。这时,如果用户1_1希望下载文档,也可以通过浏览器1-7访问云盘1-8,把它下载到临时文件系统1-6中,再对它进行二次编辑。
[0057]实施方案二:图2是客户端使用篡改检测方法的体系结构图,它包括2个子图,图2a和图2b。其中,图2a是当用户存储文档时使用篡改检测方法的体系结构图,图2b是当用户读取文档时使用篡改检测方法的体系结构图。
[0058]结合图2说明,本方案同样包括三个实体:用户2-1,客户端2-2,服务器2_3。用户2-1可以在客户端2-2实现以下操作:新建文档2-4,编辑文档2-5,在临时文件系统2_6中存储文档和指纹文件,通过浏览器2-7访问服务器2-3,使用篡改检测方法2-9计算指纹模块2-10和比对指纹模块2-11。服务器2-3为用户提供辅助存储空间即云盘2-8。
[0059]本方案的【具体实施方式】如下:
[0060]结合图2a说明。首先,用户2-1在客户端2-2新建2-4和编辑2-5 —篇文档,之后将它暂时保存在临时文件系统2-6中。然后,计算指纹模块2-10计算该文档的指纹,记为“指纹①”,并同样将“指纹①”保存在临时文件系统2-6中。最后,用户2-1通过浏览器2-7取出该文档上传给服务器2-3,存储在云盘2-8中。
[0061]结合图2b说明,当用户2-1需要访问云盘2-8中的文档时,首先通过浏览器2_7将文档下载到临时文件系统2-6中。然后,计算指纹模块2-10计算该文档的指纹(1),记为“指纹②”。并把它发送给比对指纹模块2-11。用户2-1再通过浏览器2-7去临时文件系统2-6中取出“指纹①”提交给比对指纹模块2-11。最后,2-11通过比较“指纹①”与“指纹②”,检测文档是否被篡改,并将检测结果result通过浏览器2-7呈现给用户2_1。这时,用户2-1可以对该文档进行二次编辑(2)。
[0062]分析上述两种方案可知,不管是服务器端使用篡改检测方法,还是客户端使用篡改检测方法,计算指纹模块和比对指纹模块是本发明的关键。下面给出它们的具体实施方案。
[0063]1.计算指纹模块。该模块的目标是计算文档的各粒度指纹,具体包括以下五个步骤。
[0064](I)分词。本发明采用的分词系统是中科院开发的汉语词法分析系统ICTCLAS3.0,该系统分词正确率高达97.58 %,分词精度98.45 %,单机分词速度最快为996KB/S, API小于200KB,各种词典数据压缩后小于3MB。特别说明的是,分词只限于处理文档中的中文文本,而对于英文文本,跳过此步骤,直接执行第(2)步。这是因为英文的词与词之间有明显的分割标志。
[0065](2)词语编码。本发明采用的是Unicode编码,该编码为各种语言(包括:英语、汉语、日语、法语、西班牙语等)中的每个字符设定了统一并且唯一的二进制编码,它解决传统字符编码方案的局限性,满足跨语言、跨平台进行文本转换和处理的需求,在国际上得到广泛的应用。
[0066](3)计算句子指纹。本发明利用Karp-Rabin哈希函数计算句子指纹,计算公式表示如下:
[0067]Sentencefingerprint (W1W2-..Wn) = (w12n_1+w22n_2+...+Wn^2^wn) modp (1.1)
[0068]其中,Wi为经过分词处理后在句子中切分出来的词,Wi是词Wi的编码,P为一个足够大的随机素数。
[0069](4)计算段落指纹。把第(3)步中计算的句子指纹作为输入,再次利用Karp-Rabin哈希函数计算段落指纹,计算公式表示如下:
[0070]Paragraphfingerprint (S1S2...Sm) = (3^^+822°1-2+...+s^^^sjmodp (1.2)
[0071]其中,S1, S2,…,Sm是段落中的m个句子,&是由公式(1.1)计算得到的句子指纹。
[0072](5)计算文档指纹。把第(4)步中计算的段落指纹作为输入,再次利用Karp-Rabin哈希函数计算文档指纹,计算公式表示如下:
[0073]Documentfingerprint (P1P2...Pq) = (p12q_1+p22r2+...+P^^^P^modp (1.3)
[0074]其中,P1, P2, , Pq是文档中的q个段落,Pi是由公式(1.2)计算得到的段落指纹。
[0075]下面通过具体案例(如图3所示)进一步阐述计算指纹模块的具体实现。其中步骤(I)?(2)属于计算指纹的准备工作,即预处理工作,如图3a所示。步骤(3)?(5)属于计算指纹工作,如图3b、3c和3d所示。
[0076]结合图3a说明。3-1是用户创建并编辑的一篇文档,长度为二段,共五句。计算指纹模块的目标就是计算该文档的各粒度指纹。首先,利用ICTCLAS3.0系统对该文档的文本内容进行分词,3-2是分词之后的结果。然后,利用Unicode编码函数将每一个词语转换为它的Unicode码,3-3是对词语编码之后的结果。下面开始计算指纹。
[0077]结合图3b说明。计算指纹是按照句子、段落、文档的顺序依次计算。以第I段3-4为例,首先计算第I段中两个句子的指纹,根据句子指纹的计算公式(1.1),给出第I句和第2句的句子指纹计算表达式3-5,得出句子指纹的计算结果3-6。然后,再根据段落指纹的计算公式(1.2),给出第I段的段落指纹的计算表达式3-7。最后,得出第I段的段落指纹 3-8。
[0078]同理,文档3-1的第2段的各粒度指纹计算结果如图3c所示。3_9是对第2段词语编码之后的结果,3-10是句子指纹计算结果,3-11是段落指纹计算结果。
[0079]计算文档3-1的文档指纹的过程如图3d所示。3-12是文档3_1的段落指纹,根据公式(1.3),给出文档指纹的计算表达式3-13,得出文档指纹3-14。
[0080]2.比对各粒度指纹
[0081](I)指纹表示
[0082]文档指纹是一个整数D ;段落指纹是一个m维行向量(列向量亦可),表示为:
[0083]P= (P1 p2 …pm)τ (1.4)
[0084]其中,Pi表示第i段的指纹。句子指纹向量表示为:
) ^lI %...-vIn
[0085]_ '?2 1= %(1-5)

*.* I■ ■...*..β* λ m
、Sm)Sm2 ***
[0086]Si表示第i段的句子指纹向量,Sij为Si的分量,即第i段第j句的句子指纹。
[0087]图4表示了文档3-1的各粒度指纹。其中文档指纹是4-1,段落指纹是4-2,句子指纹是4_3。
[0088](2)比对指纹
[0089]定义:设Θ是定义在实数集合上的二元运算,对于实数集合M中任意元素m和实数集合N中任意元素η,当m = n时,πιΘη = I,当m古η时,ηιΘη = 0,称Θ是实数集合上的比对运算。
[0090]下面给出比对指纹的具体算法如下:
[0091]算法:比对指纹算法。
[0092]输入:待检测的文档a,已经计算过的文档a的篇指纹D,段落指纹
[0093]P= (P1 p2...Pm),句子指纹 S ;
[0094]输出:详细的检测结果。
[0095]具体步骤为:
[0096]步骤1:对待检测文本分词,抽取篇指纹Q、段落指纹R = (r, r2…rm)T和句子指纹N ;
[0097]步骤2:如果AOQ为I则转到步骤6,否则进入步骤4 ;/*文本数据没有被篡改是所有者的原始数据*/
? rI I' ?γ!Θ(α Pi …A?)]
[0098]步骤4: Λ?P=卜?(p〗ρ2...pm)= rjB^Pl Pl…定位被篡改数据的
I I* *?I
UJPl …Pm))
段落直 r!、r」...和 P1、P」...Pn ;
[0099]/*其中,F1 (P1 p2…pj的运算结果是每个元素由m位二进制数字组成的矩阵序列,O代表在此位置不匹配,I代表在此位置匹配,最终检测结果为η个m位的二进制数。若A Θρ」=1,但i古j,记录1、j的值(文本的段落顺序被调整),将R和P中对应比较结果值为I的段落去掉,这样就大大减少了系统的计算时间,下面将进行句子指纹矩阵的运算*/
V
[0100]步骤5:检测对应A、rj...rk的句子指纹j (吟*7...定位被篡改句子的位置 nim, nJs...nkp ;
[0101]步骤6:返回检测结果的具体信息。
[0102]下面通过具体案例进一步阐述比对指纹模块的具体实现。结合图5说明。5-1是文档3-1存储在服务器端被篡改之后的文档,5-2是文档5-1的指纹,S卩“指纹②”。假设图4是文档3-1的“指纹①”。比对“指纹①”与“指纹②”的具体过程如图6所示。首先比对文档指纹6-1,由于两次计算的文档指纹不同,因此确定文档被篡改了。为了定位篡改位置,继续比对段落指纹6-2,根据比对结果,得知第2段被篡改了。下面进一步比对第2段的句子指纹6-3,确定出第3句被篡改了。所以得出结论:文档的第2段第3句被篡改。
【权利要求】
1.一种计算文本文档的各粒度指纹的方法,各粒度指纹包括句子指纹、段落指纹及文档指纹,其特征在于,步骤为: 步骤1、若当前文本文档为中文文本文档,则利用分词系统将中文文本文档中的各个中文词分割开,进入步骤2,若当前文本文档为外文文本文档,则直接进入步骤2 ; 步骤2、对中文文本文档中的每个中文词或外文文本文档中的每个外文词编码; 步骤3、利用每个中文词或每个外文词及其对应的编码计算得到中文文本文档或外文文本文档中每个句子的句子指纹,当且仅当两个句子中每个中文词或每个外文词及其位置相同时,两个句子的句子指纹相同; 步骤4、利用句子指纹计算得到中文文本文档或外文文本文档中每段中文或每段外文的段落指纹,当且仅当两段中文或两段外文中每个中文词或每个外文词及其位置相同时,两段中文或两段外文的段落指纹相同; 步骤5、利用段落指纹计算得到中文文本文档或外文文本文档的文档指纹,当且仅当两个中文文本文档或两个外文文本文档中每个中文词或每个外文词及其位置相同时,两个中文文本文档或两个外文文本文档的文档指纹相同。
2.如权利要求1所述的一种计算文本文档的各粒度指纹的方法,其特征在于,在所述步骤3中,利用Karp-Rabin哈希函数计算所述句子指纹;和/或在所述步骤4中,利用Karp-Rabin哈希函数计算所述段落指纹;和/或在所述步骤5中,利用Karp-Rabin哈希函数计算所述文档指纹。
3.如权利要求2所述的一种计算文本文档的各粒度指纹的方法,其特征在于,利用Karp-Rabin哈希函数计算所述句子指纹的公式为:
Sentencefingerprint (W1W2...Wn) = (w12n_1+w22n_2+...modp,式中,Wi 为每个中文词或每个外文词,Wi是中文词或外文词Wi的编码,P为一个足够大的随机素数; 利用Karp-Rabin哈希函数计算所述段落指纹的公式为:
Paragraphfingerprinr (S1S2...Sm) = (s^h+s;^111-2+...+sm—f+sjmodp,式中,S1, S2,..., Sm是当前段落中的m个句子,Si是句子Si的句子指纹; 利用Karp-Rabin哈希函数计算所述文档指纹的公式为:
Documentfingerprint (P1P2...Pq) = (PftrWpJtr2+...+PtrPkpq) modp,式中,P1, P2,...七是当前中文文本文档或外文文本文档中的q个段落,Pi是段落Pi的段落指纹。
4.一种采用如权利要求1所述的计算文本文档的各粒度指纹的方法的服务器端使用篡改检测方法,其特征在于,步骤为: 第一步、用户将中文文本文档或外文文本文档从客户端上传到服务器端之后,使用如权利要求1所述的计算文本文档的各粒度指纹的方法计算生成当前中文文本文档或外文文本文档的句子指纹、段落指纹及文档指纹; 第二步、计算完句子指纹、段落指纹及文档指纹之后,服务器将所有句子指纹、段落指纹及文档指纹发回给客户端,用户保存接收到的句子指纹、段落指纹及文档指纹; 第三步、当用户访问在第一步中上传至服务器端的中文文本文档或外文文本文档时,先在服务器端利用如权利要求1所述的计算文本文档的各粒度指纹的方法重新计算该中文文本文档或外文文本文档的句子指纹、段落指纹及文档指纹,然后与用户保存的句子指纹、段落指纹及文档指纹比对,比对时,先比对文档指纹,若相同,则表示当前中文文本文档或外文文本文档没有被篡改,用户可以放心访问,否则,逐段比对段落指纹,找出不相同的段落指纹所对应的段落,这些段落为被篡改段落,再在每个被篡改段落中逐句比对句子指纹,找出不相同的句子指纹所对应的句子,从而定位至当前中文文本文档或外文文本文档中的哪些段落的哪些句子被篡改,通过客户端向用户提供篡改证据。
5.如权利要求4所述的一种服务器端使用篡改检测方法,其特征在于,在所述第三步后还包括: 第四步、对于第三步中用户可以放心的中文文本文档或外文文本文档,若用户将其下载到客户端后进行了二次编辑,则将该二次编辑后的中文文本文档或外文文本文档再存储到服务器端后,使用如权利要求1所述的计算文本文档的各粒度指纹的方法重新计算生成当前中文文本文档或外文文本文档的句子指纹、段落指纹及文档指纹,并将其保存到客户端,用于下次检测。
6.一种采用如权利要求1所述的计算文本文档的各粒度指纹的方法的客户端使用篡改检测方法,其特征在于,步骤为: 第一步、用户在客户端新建、编辑生成中文文本文档或外文文本文档后,在当前中文文本文档或外文文本文档上传到服务器端之前,使用如权利要求1所述的计算文本文档的各粒度指纹的方法计算当前中文文本文档或外文文本文档的文档指纹、段落指纹及句子指纹,并将它们保留在客户端; 第二步、文档指纹、段落指纹及句子指纹存储后,用户将当前中文文本文档或外文文本文档上传到服务器端; 第三步、当用户再次访问上传到服务器端的中文文本文档或外文文本文档时,先将它下载到客户端,利用如权利要求1所述的计算文本文档的各粒度指纹的方法计算该中文文本文档或外文文本文档的文档指纹、段落指纹及句子指纹,然后与客户端保存的文档指纹、段落指纹及句子指纹比对,比对时,先比对文档指纹,若相同,则表示当前中文文本文档或外文文本文档没有被篡改,用户可以放心访问,否则,逐段比对段落指纹,找出不相同的段落指纹所对应的段落,这些段落为被篡改段落,再在每个被篡改段落中逐句比对句子指纹,找出不相同的句子指纹所对应的句子,从而定位至当前中文文本文档或外文文本文档中的哪些段落的哪些句子被篡改。
7.如权利要求6所述的一种客户端使用篡改检测方法,其特征在于,在所述第三步后还包括: 第四步、对于第三步中用户可以放心的中文文本文档或外文文本文档,若用户将其下载到客户端后进行了二次编辑,则使用如权利要求1所述的计算文本文档的各粒度指纹的方法重新计算生成当前中文文本文档或外文文本文档的句子指纹、段落指纹及文档指纹,并将其保存到客户端,用于下次检测后,再将当前中文文本文档或外文文本文档上传至服务器端。
【文档编号】G06F21/10GK104239753SQ201410315438
【公开日】2014年12月24日 申请日期:2014年7月3日 优先权日:2014年7月3日
【发明者】刘国华, 王柠, 卢婷 申请人:东华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1