首页> 中国专利> 基于修改标识符的OOX文本文档隐私信息检测方法

基于修改标识符的OOX文本文档隐私信息检测方法

摘要

本发明涉及一种基于修改标识符的OOX文本文档隐私信息检测方法。该方法的步骤包括:1)将待检测的OOX文本文档进行解压,形成层次化文件结构;2)提取解压得到的document.xml和settings.xml文件中的修改标识符,并将提取的该两个文件的修改标识符分别保存到两个容器中;3)对比两个容器中修改标识符的异同,进而统计出OOX文本文档所携带的总的隐私信息的数量。本发明可以自动化地对文本文档进行检测,防止利用基于修改标识符的OOX文本文档隐写方法来进行信息隐藏和隐蔽通信,从而避免重要信息的泄露,检测过程中无需人工干预,可以大大节省人力、时间成本。

著录项

  • 公开/公告号CN105046159A

    专利类型发明专利

  • 公开/公告日2015-11-11

    原文格式PDF

  • 申请/专利权人 中国科学院信息工程研究所;

    申请/专利号CN201510340530.5

  • 发明设计人 吴槟;何晓磊;赵险峰;刘磊;

    申请日2015-06-18

  • 分类号G06F21/60;G06F17/30;

  • 代理机构北京君尚知识产权代理事务所(普通合伙);

  • 代理人余长江

  • 地址 100093 北京市海淀区闵庄路甲89号

  • 入库时间 2023-12-18 12:02:04

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-04-03

    授权

    授权

  • 2015-12-09

    实质审查的生效 IPC(主分类):G06F21/60 申请日:20150618

    实质审查的生效

  • 2015-11-11

    公开

    公开

说明书

技术领域

本发明属于信息隐藏技术领域,针对基于修改标识符的OOX文本文档信息隐藏方法提 出了一种针对性的新的检测方法。

背景技术

在网络飞速发展的今天,信息隐藏技术已经广泛应用于多个领域,用于隐藏个人或企业 的隐私信息。在信息隐藏技术中,有多种有效的基于文本的隐写方法可以取得较好的隐蔽效 果,例如利用字体格式、字体颜色、同义词替换及不可见字符等方法来进行信息隐藏。其中, 有一种隐藏方式主要基于OOX(OfficeOpenXML)文本文档中的“修改标识符”进行隐私 信息的携带。OOX文档格式是由微软公司为Office2007产品开发的技术规范,现已成为国 际文档格式标准,兼容前国际标准ODF(OpenDocumentFormat)和中国文档标准UOF(Unified OfficedocumentFormat),于2006年12月成为ECMA标准。在OOX文本文档格式中包括了 一组特殊的元素属性,这些属性几乎分布在整个OOX文本文档中,这就是“修改标识符”: 每一次OOX文本文档被打开编辑时,都会产生一个独一无二的标识符ID号,用户所作的任 何一次修改都会用一个标识符ID号进行标识,修改不仅包括内容,而且还包括文档的格式; 这个ID号在文档保存之后以“修改标识”属性值的形式储存在OOX文本文档中,而且这个 ID号是完全随机产生的,与用户及修改时间没有任何关系。

这些“修改标识”保存在document.xml文件中,数量较多,而且经过实验发现,替换这 些“修改标识”属性值并不会影响OOX文本文档的正常显示和使用,所以可以将待隐蔽的 隐私信息(或加密后的隐私信息)转换为16进制字符串,然后依次替换这些“修改标识”的属 性值即可达到隐藏信息的目的。

发明内容

为了防止利用基于修改标识符的OOX文本文档隐写方法来进行信息隐藏和隐蔽通信, 导致一些重要的信息通过这种方式泄露出去,本发明提出了一种针对基于修改标识符的OOX 文本文档隐私信息检测方法。

为了达到检测目的,本发明采用了如下所述的技术方案:

一种基于修改标识符的OOX文本文档隐私信息检测方法,其步骤包括:

1)将待检测的OOX文本文档进行解压,形成层次化文件结构,该层次化文件结构中包 含document.xml和settings.xml文件;

2)提取解压得到的document.xml和settings.xml文件中的修改标识符,并将提取的该两 个文件的修改标识符分别保存到两个容器中;

3)对比两个容器中修改标识符的异同,进而统计出其中通过隐写工具嵌入的隐私信息的 数量。

步骤1)主要利用zlib中的Unzip进行解压,此外也可以采用其它解压工具或解压缩开 发包代替Unzip。经过研究发现,在OOX文本文档解压之后的文件结构中,只有document.xml 和settings.xml文件中包含有修改标识符,因此本发明主要利用document.xml和settings.xml 文件实现隐私信息的检测。

步骤2)分别将提取到的修改标识符保存到两个容器中,如Vector向量,此外也可以采 用其它模版、结构体或类的容器形式代替Vector向量。优选地,将修改标识符插入到容器中 时需要进行去重和排序操作,排序的作用主要是为了后续统计文档所携带的隐私信息量时节 省时间。

步骤3)中,如果文档中不含有隐私信息,即document.xml中的修改标识没有被修改, 那么settings.xml文件中的修改标识一定包含了document.xml文件中所有修改标识符;如果文 档中含有隐私信息,则基于修改标识符的隐写工具一定修改了document.xml文件中的某一部 分修改标识,这样就导致settings.xml中的修改标识无法全部包含document.xml文件中的修改 标识。本发明通过对比document.xml的修改标识和settings.xml的修改标识,进而统计出隐私 信息隐藏的数量。

与现有技术相比,本发明的有益效果如下:

利用基于修改标识符的OOX文本文档隐写方法可以用来将一些重要信息或隐私信息隐 蔽到OOX文本文档之中,并通过网络发送的方式泄露出去,而不会引起察觉。采用人工检 查的方法对网络发送的OOX文本文档进行手工比对检查是非常费时、费力的工作。通过采 用本发明所描述的检测方法,可以自动化地对文本文档进行检测,检测过程中无需人工干预, 可以大大节省人力、时间成本。本发明的技术方案不仅可以用于对计算机、终端设备中存储 的OOX文本文档进行检查,也可以用于对局域网设备中传输的文档进行检测,还可以广泛 应用于政府、企业等组织的网络出入口设备之中,用于对OOX文本文档是否携带隐私信息 进行检查,此外,也可以应用于电信运营商的相关检测设备与内容分发设备之中,用于对用 户上传的OOX文本文档是否可能携带有隐私信息进行检查。

附图说明

图1是基于修改标识符的隐写检测流程图。

图2是OOX文本文档解压之后的文档结构图。

图3是基于修改标识符的隐写流程图。

图4是document.xml文件修改标识示例图。

图5是settings.xml文件修改标识示例图。

具体实施方式

为使本发明的上述目的、特征和优点能够更加明显易懂,下面通过具体实施例和附图, 对本发明做进一步说明。

本发明的技术内容主要分为三部分,第一部分是对OOX文本文档档解压;第二部分是 提取解压之后的document.xml和settings.xml文件中的修改标识符,并做相应的排序和去重操 作;第三部分是利用整理后的修改标识符进行隐私信息的统计。图1是本发明的基于修改标 识符的隐写检测的总体流程图,具体包括如下步骤:

一、文件解压

本发明解决的第一个问题是将OOX文本文档进行解压,使其形成典型的层次化文件结 构。基于修改标识符的隐写检测是针对OOX文本文档进行分析检测,由于OOX文本文档是 压缩文件,因此首先需要对其进行解压。具体解压操作如下:

1)利用unzOpen64()函数打开OOX文本文档,在函数内部生成一个unz64_s的结构 体,这个结构体是使用所有函数的关键。

2)使用unzGoToFirstFile(unzFile,…)函数可以得到OOX文本文档中第一个文件的数 据。

3)调用unzOpenCurrentFile(unzFile,…)函数,读取文件中的数据,利用 unz64local_GetCurrentFileInfoInternal(unzFile,&s->cur_file_info,&s->cur_file_info_inte rnal,name,100,NULL,0,NULL,0)函数可以得到文件的名字。

4)通过strcmp()函数对比得到的文件名是否是“document.xml”和“settings.xml”中 的一种。如果判断是其中的一种,通过fwrite()函数写入到相应的路径下。

5)调用unzGoToNextFile(unzFile,…)函数可以得到OOX文本文档中下一个的数据文件。 循环执行该函数,直到将document.xml和settings.xml文件全部解压出来为止。

6)通过unzClose(unzFile,…)函数关闭OOX文本文档。

图2是OOX文本文档解压之后的文档结构图。此文件结构中的每个文件都表示不同的 内容。其中[Content_Types].xml描述出现在文件中的每个内容类型;rels文件夹存储所有指定 部件的关系部件,.rels文件描述了文档结构中的起始关系,称之为关系部件;docProps文件 夹包含了所有属性部件,App.xml文件包含了文档特定的属性,如文档字数,、行数,Core.xml 文件包含了所有基于开放打包约定文档格式的通用文件属性,如文档的作者,单位等信息; 在Word文件夹中,theme文件夹包含了文档中使用的所有样式;rels文件夹存储了指定部件 的关系部件;document.xml是主XML文档,其中包含了Word文档中所有文字的内容和属 性以及非文字内容的属性;fontTable.xml、settings.xml、styles.xml、webSettings.xml文件则分 别描述了文档中的字体表、文档设置、样式定义、Web设置的信息。

解压技术主要利用zlib中的Unzip解压。Unzip可以对整个文件结构做解压,同时也可以 对某个或某几个文件进行单独解压。经过研究发现,在OOX文本文档解压之后的文件结构 中,只有的document.xml和settings.xml文件中包含有修改标识符,因此本发明利用Unzip 单独解压出文档中的document.xml和settings.xml文件。并且本发明在解压处理完一个文件时, 并没有将文件写入到对应的目录下,而是直接在内存中对其进行下一步的操作。这样不仅节 省空间,而且大大缩短了检测的时间,进而提高了检测系统的时效性。

二、提取修改标识符

本发明解决的第二个问题是在解压得到document.xml和settings.xml文件之后,分别提取 两个文件中的修改标识符到两个不同的容器(Vector)中。基于修改标识符的OOX文本文档 信息隐藏方法的流程如图3所示,是将document.xml文件中的部分修改标识替换为待隐藏的 隐私信息。而当用户修改文档并保存时,不仅在document.xml文件中会生成相应的修改标识, 而且还同样在settings.xml文件中生成同样的修改标识,本发明的检测原理就是要统计两个 xml文件中修改标识符的不同。

图4是document.xml文件修改标识示例图,图5是settings.xml文件修改标识示例图。在 document.xml中,如图4中元素w:p的属性rsidR,w:rsidRr,w:rsidRDefault,w:rsidP以及 w:r的属性w:rsidRr就是“修改标识”。由于document.xml文件中的部分修改标识符是重复的, 如图2所示,因此将修改标识符插入到容器中时需要进行去重和排序操作。排序的作用主要 是为了后续统计隐私信息量节省时间。

提取document.xml文件中修改标识的步骤如下:

1)利用libxml库中的xmlReadMemory()函数对内存中的document.xml文件进行读取, 返回xmlDocPtr指针。

2)利用xmlDocGetRootElement()函数来得到文件的根节点。

3)得到根节点之后,利用递归遍历document.xml中的所有节点及其子节点,通过compare ()函数寻找节点中的包含字符串“rsid”的属性,提取对应的属性值(修改标识), 并且将其放入到一个容器(Vector)中。

4)由于在document.xml文件中部分修改标识符是重复的,因此在插入到vector中时, 需要利用VectorSortedPosIndexOf()函数查找该修改标识符,并且得到要插入的位 置。如果已经在Vector中,则丢弃该修改标识符,继续插入下一个修改标识符。如 果不在Vector中,根据 VectorSortedPosIndexOf(std::vector<Plg_LongWordIndex>xs1,Plg_LongWordIndex pli,int*ipos)函数中ipos的值判断要插入的位置,这样保证了插入到vector中修改标 识符是有序且不重复的,其中,xs为全部修改标识的向量容器,pli为待插入的修改 标识,ipos为待插入的向量位置。

提取settings.xml文件中的修改标识符信息,其主要步骤如下:

1)利用libxml库中的xmlReadMemory()函数对内存中的setting.xml文件进行读取, 返回xmlDocPtr指针。

2)利用xmlDocGetRootElement()函数来得到文件的根节点。

3)利用xmlStrcmp()函数在settings.xml文件中寻找节点<w:rsids>,该节点涵盖了 document.xml文件中所有的修改标识符。

4)定位到节点<w:rsids>之后,遍历其所有的子节点,并提取相应“val”的值到容器 (Vector)中。

5)如图3所示,由于settings.xml文件中的修改标识符不重复且有序的,因此不需要对 容器中的修改标识进行去重和排序操作。

经过上述的提取操作,将document.xml和settings.xml文件中的修改标识符分别保存到 vector1和vector2中。以便后续进行隐藏信息的统计。

三、隐私信息统计

本发明解决的第三个问题是对比两个容器中修改标识符的异同并统计OOX文本文档所 携带的隐私信息的字节数。具体统计的过程如下:

1)如图1所示,提取vector1保存的第一个修改标识符。

2)将步骤1)提取到的修改标识符通过int FindXs1FromXs(std::vector<Plg_LongWordIndex>xs,Plg_LongWordIndexpli)函数在 vector2中进行二分查找,其中,xs为全部修改标识的向量容器,pli为待查找的修改 标识。

3)如果vector2中包含该修改标识,表明该修改标识符没有被修改过;如果没有找到, 文档所携带的隐私信息统计量加1。

4)按照上述1)~3)的步骤循环提取vector1中的每一个修改标识符,直到遍历完vector1 中所有的元素为止,最后得到文档所携带的总的隐私信息量。

本发明不限于上述实施方式,比如可以采用其它解压工具或解压缩开发包代替本方案中 采用的Unzip,可以采用其它xml解析工具、开发包或共享库代替本方案中采用的libxml,可 以采用其它模版、结构体或类的容器形式代替本方案中采用的Vector向量等。

以上实施例仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可 以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本发明的保 护范围应以权利要求书所述为准。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号