鉴别与文本文档链接的多个文件的方法

文档序号:6356627阅读:151来源:国知局
专利名称:鉴别与文本文档链接的多个文件的方法
技术领域
本发明涉及嵌入文本文档和以不可见方式链接到文本文档的文件的完整性信息的方法,还特别涉及到鉴别文本文档和链接文件的改进方法。
背景技术
随着诸如因特网这样的开放网络环境使用的增多,对在联网计算机中间传送共享信息的更安全系统的需求也相应增加。今天,涉及开放式非安全网络,特别是因特网上电子信息交换的最重大风险是数字数据可能比以往更容易地被更改。
今天在因特网上的大部分事务都是由用户直接通过文本文档访问WEB服务器或邮件服务器上的文件。在这种开放式非安全网络上,在用户通过WEB流览器选择并启动WEB页面上的超级链接时,或在用户点击附属于接收邮件的文件的图标时,最重要的是在如愿使用其之前鉴别接收数据文件。这样的数据文件可以包含计算机程序、文本、图画、图片、声音、视频图像,或其它适合计算机系统上使用的信息,但并不局限于此。
作为这种安全问题的例子,如果电子邮件包含可执行文件或软件程序的附件,用户可能希望确保在将其计算机系统暴露给可能含有“特洛伊木马”或其它可能将病毒感染用户计算机的程序文件之前,通过受信方发送该附件。因此,当因特网上的用户从服务器或其它用户那里接收数据时,接收用户就有必要验证接收到的数据没有被破坏,或没有以某种方式被更改。而且,接收用户可能需要验证接收的数据实际是由正确发送用户,而不是由冒名者发送的。
在防止数字伪造和冒名时,为了改进通过计算机网络传输的数据的安全性,应用了文档鉴别和签名人鉴别安全措施。
现在,数字签名是主要的加密工具,其被用来提供文档和签名者鉴别,以及完整性验证。数字签名是用户借以鉴别接收数据文件来源的基本机制。数字签名通过基于加密密钥的算法达到这一结果,这些算法的安全性取决于密钥(或多个密钥),而不是算法细节。事实上这些算法可以自由公开并分析。
本领域众所周知的有两大种基于密钥的鉴别算法对称和公开密钥。在对称算法中,加密密钥和解密密钥是相同的,而且发送方和接收方两部分都必须对其保密。而在公开密钥算法中,数字签名源于“公开密钥”的使用。公开密钥算法也称为非对称算法,其被设计为使用两个不同的密钥,以便用于签名的一个密钥与用于验证的第二个密钥不同。由于验证密钥可公开,所以这种算法被称为“公开密钥”算法。相反,签名密钥需要由其所有者,即签名者自己保密。根据加密数字签名的特性,无法从一个文件中提取出某人的数字签名,并将其附到另一个文档上,也不可能用任何无法检测的方法改变签名的消息。签名文档上最细微的改变都会导致数字签名检验过程失败。而且,在任何合理的时间内,签名密钥无法由验证密钥解算出来。
因此,使用数字签名包括两个过程,一个过程由签名者实施,用于生成数字签名,而另一过程由数字签名的接收者实施,用于验证签名。签名者使用其私有签名密钥生成文档的数字签名,并将文档和数字签名都传送给接收者。验证就是参考接收的签名文档和公开验证密钥检查数字签名的过程。
在实际实施中,公开密钥算法对数字化签署长文件而言经常是过于低效。为了节约时间,安全(单向)散列函数通常被用来实现数字签名协议(即RSA、DSA)。基本上,签名者不用签署整个文件,而是计算出文档的散列值,并对计算的散列进行签名。许多签名算法将单向散列函数作为内部构建模块使用。
散列函数将变长输入串(即文档)映射到并转换成通常较小、被称为散列值的定长输出串。散列值可用作输入串的压缩代表性映像。计算单向散列函数通常不需要密钥。象这样,当收到文档时,散列函数可用于验证自从散列函数产生后文档中没有数据被改变。因此,散列函数的局限性通常在于,用户无法推断象谁发送了文件这样的、关于相关数据文件的任何情况。为了保留数字签名的不可否认性和不可伪造性,当与散列函数合用时,散列函数需要具有抗冲突性。也就是说,要找到其散列映射成相同值的两条消息在计算上是不可行的。
为了鉴别包含多个附件或针对其它文件的链接的文档,必须鉴别文档和所有与之有链接的文件。为了处理这些经常出现的情况,通过对文档和所有附属文件的集合使用数字签名算法,通常生成单一数字签名。当收到这样的签名文档和附属文件时,验证算法还必须用于接收文档和附属文件的相同集合。
现在,签名和验证,和/或生成散列函数的过程都为发送和接收计算资源带来额外开销。特别是,当用户收到包含大文件的许多附件的文档时,对所收文档和所有附属文件的集合进行验证是接收计算机资源的沉重负担,并在这样的计算机网络环境中产生难以接受的延迟。
在现有技术中,存在有效确保和验证多个数据文件,例如通过计算机网络传输的数据文件的真实性的方法。这些验证数据文件组的真实性的方法涉及随数据文件组一同提供单独的签名文件,该文件包括所有数据文件的单独检查值(例如散列值),以及该组的数字签名。然后使用计算机系统对文件组的数字签名进行验证,并使用计算机系统将签名文件中的检查值与根据数据文件计算的相应值进行比较。在美国专利5,958,051中说明的方法代表了生成数据文件组的单独签名文件的此类方法。
显然,所有这些假定附加针对单独文件的检查信息的方法存在分离被检查信息与检查信息(也就是签名文件)的缺陷。因此,在企图欺骗情况下,或有时只是因为负责转发电子文档和数据文件的设备中间段或通信协议未计划处理这一额外信息片段时,后者可以很容易地被有意隔离和移除。然后,当鉴别带有文件附件或针对其它文件的链接的文档时,文档和所有附件的检查信息应当被透明地编码到文档自身的主体中(也就是,按照任何情况下均不影响文档的文本格式和可读性的方式),以便其在其传送到目的地时所经过的各种操作中保持完整,但仍能使末端接收者验证接收的文档及附属或链接文件的真实性和完整性。

发明内容
据此,本发明的主要目的是实现鉴别文本文档和链接到该文档的文件的方法,使得文档和所有链接文件的完整性可分别检查,同时防止完整性信息被分离或丢失,以致破坏文档和链接文件的完整性。
本发明因此涉及通过至少改变文本文档中多个词间间隔的不可见字符的选定属性,鉴别具有针对多个文件的链接的文本文档的方法,这一方法包括的步骤有a)为了获得每个文件的、由散列数字子集组成的散列值,计算每个文件的单向散列函数,b)通过在空字符(space character)的每个子集中,用对应于每个文件的每个散列数字子集的相应编码散列数字,替换每个空字符的选定属性的值,对文本文档中空字符的多个子集的每个子集进行编码,c)通过使用公开密钥算法计算编码文本文档的电子签名,该电子签名由签名数字子集组成,并d)通过用相应编码签名数字替换每个空字符的选定属性的值,对编码文本文档中的另一个空字符子集进行编码。
按照本发明的优选实施例,编码步骤包含以下步骤通过在文档的所有词间间隔上将选定属性的值设置为相同默认值,将文本文档转为规范形式,针对每个文件,将对应于文件的散列值的散列数字编码为对应于选定属性的不同值的有序数值子集,在对应于空字符子集的文本文档的所有词间间隔中选择多个词间间隔,其中这些空字符用于将散列值嵌入文本文档,以及在空字符子集的每个空字符上用相应编码散列数字替换该空字符的默认属性值。


在参考相关附图的情况下,通过阅读以下更具体的发明说明,可更好地理解本发明的上述和其它目的,特点和优点,其中图1A的流程图示出了本发明用于鉴别带有针对多个文件的链接的文本文档的方法的步骤。
图1B的流程图示出了图1A中图解说明的方法的可选例子。
图2A的流程图示出了图1A图解说明的方法中对空字符子集编码的步骤中使用的不同步骤。
图2B的流程图示出了图1B图解说明的方法中对空字符子集编码的步骤中使用的不同步骤。
图3的流程图示出了图1A和1B图解说明的方法中使用电子签名对另一个空字符子集编码的步骤中使用的不同步骤。
图4的流程图示出了鉴别按照图1A和1B图解说明的方法处理过的文本文档的方法。
具体实施例方式
假设带有针对N个文件的链接的电子邮件文本文档在通过因特网发送前要进行鉴别。参考图1,依靠单向散列函数(也就是MD5),鉴别程序计算所有文件的散列函数。对此,计算文件n(n=1到N)的散列函数(步骤10),测试检查是否n=N(步骤12),而且如果n不够N,则n加1(步骤14)。
在计算出所有文件的散列函数时,使用根据散列函数计算得到的散列值,对分别与N个文件关联的N个空字符子集进行编码(步骤16)。这样的编码从文档的第一个词间间隔开始,而且为分隔两个连续文件的编码散列数字而保留空白空格(blank space)。
必须注意到,编码文档看上去与原文档相同。事实上,在显示和打印时,两者间没有任何可见的显著差别。然而,输入文档和编码文档是不同的。使用WORDPRO操作块选择“文本属性”,并将光标移动到输入文档的空白处,可看到对应于文件散列值的空字符属性的编码序列。
然后,依靠公开密钥算法,通过使用私有密钥,鉴别程序计算已编码文档的电子签名(步骤18)。通过从最后编码散列值的位置开始,并为分隔最后的编码散列数字组保留一个空白空格,使用电子签名数字对另一个空字符子集编码(步骤20)。
必须注意到,鉴别过的文档与原文档还是相同的。换句话说,在显示和打印时,两者没有可见的显著不同。但如果在已选择WORDPRO的“文本属性”时将光标移到空白上,就可以看到对应于文件散列值和电子签名的编码属性序列。
注意,可使用以上方法的可选方法。不是在用散列值对字符子集编码之前计算所有文件的散列函数,而是只在使用由散列函数得出的散列值对空字符子集编码(步骤24)之前,计算文件的散列函数(步骤22)。然后检查是否n=N(步骤26),如果不是等于,则n加1(步骤28)。最后,计算文档电子签名(步骤18)的步骤和使用电子签名对另一个空字符子集编码(步骤20)的步骤和前面实施例的步骤相同。
对空字符子集编码的方法(图1A中的步骤16和20,或图1B中的步骤24和20)是基于,在不影响原文本格式和可见表现的情况下改变文本的词间或空字符的不可见参数。这样的参数与字符属性对应,这些属性包含空字符的字型、文本颜色、斜体、粗体或保护属性,或这些属性的任意组合。
假设选择了空字符的颜色属性,该颜色属性和散列值数字之间的映射表如下

注意,颜色属性可与诸如斜体这样的其它属性组合。文本颜色和斜体形成的属性对(couple)的选择允许具有象调色板中色彩和斜体/非斜体的组合数量一样多的不同选择。
图2A图解说明了编码方法。首先,通过在所有文本空格上设置至少一个选定属性为相同默认值,将其中要嵌入数据的文本文档转换为规范形式(步骤30)。因此,就选择颜色属性而言,针对所有空字符将该属性设置为(默认)黑色。在这种情况下,所有空字符将背景色默认为白色属性。注意,在任何空字符上设置默认值意味着该空格上没有编码信息。
通过使用以上表中编码属性值组对每个文件n的散列值(n从1到N)进行编码,以获得属性值的有序序列(步骤32)。
当在文档中用于编码的词间间隔中选定词间间隔后(步骤34),该间隔未曾用过,对于选定空字符子集中的每个空字符,编码属性值的有序集合中的相应编码属性值代替了属性的默认值(步骤36)。注意,最佳方法是从文档开头选择连续间隔。
然后测试检查处理的文件是否是最后一个,即是否n=N(步骤38)。如果不是,n加1(步骤40),而且所有以上步骤除将文本文档转换成规范形式的步骤以外都重复进行。当最后文件的散列值被嵌入文档时,该过程结束。
在选定属性是文本颜色的以上例子中,编码10进制表示的数据不存在问题,因为有10种以上的颜色可以表示10进制数0,1,...,9。
假设选择不同属性,其中只有不足10种可能选择,这样的属性对于10进制的嵌入数据无用。即使在这种情况下,仍可以使用这样的属性,假定以小于各种可能属性值的数量的数值N为进制表示数据。因此,如果选定属性有5种不同可能选择,数据可由数字0-4的5进制方式表示。当然,这样的数据表示方法需要在文本文档中为编码信息而保留比使用例如10进制方式时更多的空间。
使用只允许具有若干不同数值的属性的另一种可能性是将其与另一个属性组合起来。例如,上述具有5个值的属性可与另一个诸如斜体/非斜体这样的、有两种可能选择的属性组合起来,以代表用10进制编码的数据的10个数(0到9)。
例如,以下对应关系或映射表将例如颜色属性和斜体/非斜体属性的一对属性与16进制数字联系在一起

如果使用图1B中图解说明的可选方法,在图2B中表示的编码步骤包含同样的子步骤。的确,在文本文档象先前那样被转换为规范格式后(步骤30),象先前那样,编码步骤包括编码文件n的散列值(步骤32),在文本文档中选择不同于已用间隔的词间间隔(步骤34),并用编码散列数字代替选定间隔的空字符的默认属性值。
无论使用哪种方法,使用图3图解说明的电子签名对另一个空字符子集编码的步骤包括,通过使用上表中属性值组获取属性值有序序列,对电子签名进行编码(步骤42),在文档中选择不同于已用于编码文件的间隔的空字符子集(步骤44),以及用编码签名数字代替该空字符子集的默认属性值(步骤46)。
现在假设通过电子邮件收到带链接文件的编码文档,图4中图解说明的鉴别方法如下。首先,通过对用于编码的词间间隔中的编码属性解码,从接收文档还原以不可见方式编码的信息(步骤50)。注意,编码空字符与属性已设置为相同默认值的未编码空字符不同。因此,针对电子签名还原了值S,而针对N个文件的散列值还原了值H1...HN。
然后从文档中移除还原的值S的编码数字(步骤52)。因此,新文档总是包含以不可见方式编码的值H1...HN,但与接收到的文档外观相同,虽然两文档并不相同。
通过使用编码电子签名已移除的新文档,依靠相同的公开密钥算法计算电子签名S*(步骤54)。然后测试检查是否S和S*值相同(步骤56)。如果不同,拒绝文档(步骤58步)。如果相同,对收到的文档进行鉴别(步骤60)。
然后,依靠发送文档时编码程序使用的相同单向散列函数(例如MD5),验证程序计算链接文件的散列值H1*,H2*,...HN*(步骤62)。然后测试检查是否每个文件n的还原散列值Hn和计算散列值Hn*相同,其中n为1到N(步骤64)。如果不相同,必须拒绝接收的文件(步骤66)。如果相同,这就是说要对文件n进行鉴别(步骤68)。最后,n加1,直至所有文件检查完毕(步骤70)。
以上独立成为协议和数据格式的鉴别方法可应用于许多不同的软件包,诸如生成包含有针对所有类型文件的链接的文本文档的电子邮件系统。还有,可以鉴别诸如包含针对其它WEB网面的超级链接的HTML文档的WEB网面,而且使用该方法可以检查所述超级链接的完整性。
应该注意到,在任何情况下,本发明的使用必须兼容于以电子形式(软复本)交换文本文档的通信系统。对于几乎所有现代办公室和电子邮件产品都是这样。注意到重要的还有,即使系统不支持彩色(而只有黑白文本),其甚至也可能在纯文本空白处通过对一项属性或象字型、斜体、粗体或保护属性这样几项不同的可能属性组合编码,而实现对不可见信息的编码。
权利要求
1.通过更改具有到多个文件的链接的文本文档的多个词间间隔上的不可见字符的至少选定属性,来鉴别所述文本文档的方法;所述方法包括的步骤有a)针对每个文件,为了获得由散列数字子集组成的散列值,计算所述多个文件中每个文件的单向散列函数(步骤10或22),b)通过在每个空字符子集中用对应于每个所述文件的每个散列数字子集的相应编码散列数字,替换每个空字符的所述选定属性的值,对所述文本文档中空字符的多个子集的每个子集编码(步骤16或24),c)通过使用公开密钥算法计算编码文本文档的电子签名(步骤18),所述电子签名由签名数字子集组成,和d)通过用相应编码签名数字替换每个空字符的所述选定属性的值,对所述编码文本文档中另一个空字符子集编码(步骤20)。
2.按照权利要求1的方法,其中所述步骤b)包含的步骤有b1)通过在所述文档的所有词间间隔上设置所述选定属性的值为相同默认值,将所述文本文档转换为规范形式(步骤30),而对每个文件b2)将对应于所述文件的散列值的散列数字编码为对应于所述选定属性的不同值的有序数值子集(步骤32),b3)在所述文本文档的所有词间间隔中选择多个词间间隔(步骤34),所述选择的词间间隔对应于被用来将所述散列值嵌入所述文本文档的空字符子集,b4)在所述空字符子集的每个空字符上用对应的编码散列数字替换该空字符的默认属性值(步骤36)。
3.按照权利要求2的方法,其中所述步骤d)包括的步骤有d1)将签名数字编码为对应于所述选定属性的不同值的有序数值子集(步骤42),d2)选择所述另一个空字符子集(步骤44)作为不同于所述多个词间间隔的任何一个子集的词间间隔子集,和d3)在所述另一个空字符子集的每个空字符上,用相应的编码签名数替换空字符的默认属性值(步骤46)。
4.按照权利要求2或3的方法,其中所述对散列数字或签名数字进行编码(步骤32或42)的步骤在于使用一组属性值,其中通过在所述属性值与所述数字之间建立对应表来编码所述属性值组。
5.按照权利要求4的方法,其中所述要被编码的数字是可以作为N进制下数字0,1,2,...,N-1中每一个的数字序列,所述N进制下的数字分别对应于N个选定属性值。
6.按照权利要求5的方法,其中所述选定属性是字符颜色,所述属性值对应于可为颜色属性选择的N种不同颜色。
7.按照权利要求6的方法,其中要编码的所述数字由10进制(N=10)中的10进制数字表示,每个数字0到9分别与字符颜色属性定义的颜色关联。
8.按照权利要求5、6或7的方法,其中2种属性被组合使用,使得在N进制下所述数字0,1,2,...,N-1中的每个数字分别与第一属性的选定值和第二属性的选定值的组合相对应。
9.按照权利要求8的方法,其中所述第二属性是字符的“斜体”格式,属性值对应于“斜体”或“非斜体”。
10.对通过通信系统接收的、具有到N个文件的链接的文本文档进行鉴别的方法,其中所述文本文档包含不可见鉴别数据,通过使用按照权利要求1到9中任一个的方法改变空字符上的选定不可见属性,将该数据引入所述文档,所述方法包括的步骤有-通过在所述接收文档的所有词间间隔上将所述选定属性的值设置为相同默认值,将所述文本文档转换为规范形式(26),-还原由初始电子签名和对应于所述文件的N个初始散列值组成的以不可见方式编码的数据,所述以不可见方式编码的数据与预先定义的空字符子集对应,其中所述选定属性值与相同默认值不同。-从接收文档中移除所述电子签名的还原值,以获得新的文档,-使用在文档编码时使用的相同公开密钥算法根据所述新文档计算新电子签名,-将所述新电子签名与所述初始电子签名进行比较,-而且如果所述新电子签名与所述初始电子签名相同,为了获得每个文件的新散列值,计算每个所述文件的单向散列函数,而且-针对所述N个文件中的每个文件n,比较新散列值与初始散列值,以鉴别所述文件n,其中n为1到N。
11.按照前面任何一个权利要求的方法,其中所述文档是通过电子邮件在因特网上发送的文档。
12.一种系统,包括适于执行按照权利要求1到11的方法的步骤的装置。
13.包括计算机可用介质的计算机程序产品,所述计算机可用介质具有用于执行按照权利要求1到11中任何一个的方法的计算机可读程序代码装置。
全文摘要
通过至少更改文本文档的多个词内间隔上不可见字符的选定属性,来鉴别具有到多个文件的链接的文本文档的方法,该方法包括步骤针对每个文件,为了获得由散列数字子集组成的散列值,计算所述多个文件中每个文件的单向散列函数(步骤10);通过在每个空字符子集中用对应于每个文件的每个散列数字子集的相应编码散列数字,替换每个空字符的选定属性的值,对文本文档中空字符的多个子集的每个子集编码(步骤16);通过使用公开密钥算法计算编码文本文档的电子签名(步骤18),所述电子签名由签名数字子集组成;和通过用相应编码签名数字替换每个空字符的选定属性的值,对编码文档中另一个空字符子集编码(步骤20)。
文档编号G06F21/62GK1520679SQ02808839
公开日2004年8月11日 申请日期2002年6月4日 优先权日2001年6月12日
发明者费尔南多·I·卡罗尔, 费尔南多 I 卡罗尔 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1