检测PDF篡改或伪造的技术

大家读完觉得有帮助金蝶关注和点赞!!!

摘要

篡改或伪造数字文档已变得十分普遍,最常见的是在没有恶意意图的情况下修改图像,例如为了增强图像的整体外观。然而,在某些情况下,篡改数字文档可能会产生负面后果,例如金融诈骗和声誉损害。篡改可以通过更改数字文档的文本或编辑图像的像素来实现。已经开发了许多技术来检测文档是否被修改过。许多技术已经这些技术大多依赖于生成哈希值或对文档进行水印处理。然而,这些技术存在局限性,它们无法检测到对便携式文档格式(PDF)签名或其他非视觉方面的修改,例如元数据。本文提出了一种新技术,可以通过利用PDF文档的文件页面对象来检测PDF文档中的篡改。
 该技术采用了一种原型,可以检测对PDF文档的更改,例如对所述文件的文本、图像或元数据的更改

关键词: PDF, 篡改, 伪造, 元数据, 哈希, 更改, 文件页面对象

1 引言

数字媒体是现代社会中一种常见的交流和娱乐形式。鉴于通过图像、视频和基于文本的文档对这些数字媒体形式的广泛使用,这为篡改官方或非官方内容开辟了一条新途径[1]。伪造是指某人创建原始文件的副本,通常意图实施欺诈。篡改是指某人在未经许可的情况下干预或更改原始文件。在本文的上下文中,这两个术语将互换使用。

普通人通常会遇到的篡改集中在图像的修改上,目的是通过深度伪造等技术,使发布的照片或视频看起来更好[2],其中深度伪造是使用深度学习技术制作的虚假事件图像。虽然许多篡改不属于犯罪性质,但对更正式的数字文件的篡改可能会产生不利后果。

用于通信的最常见的数字文档形式之一是可移植文档格式(PDF)。PDF是由Adobe开发的一种文件格式,它保留了文档的布局和格式,而与用于查看或打印它的软件、硬件或操作系统无关。PDF文件可以包含文本、图像、表单、注释和其他数据,它们被广泛用于分发需要在不同平台上一致显示和打印的文档。鉴于PDF难以更改,它被用于许多正式的通信形式,如备忘录、合同、规范等。然而,随着技术的进步以及对Adobe Acrobat或许多免费在线编辑器等工具的访问变得更加容易,使得更改这种格式的文档成为可能,因此,在对PDF格式了解有限的情况下,更改PDF文件变得更加简单。这就导致了检测和分析对PDF格式文档所做的任何更改的必要性。

目前用于检测和部分分析任何篡改的大多数技术都采用某种形式的水印技术。尽管我们将在本文中重点介绍两种水印形式,但将此类水印嵌入到PDF文档或大多数其他形式的数字内容中的方法有很多。

除了水印之外,另一种用于检查当前PDF是否与原始PDF匹配的技术是哈希。尽管这些技术能够成功检测PDF文档及其内容的更改,但它们主要依赖于所述PDF的可见方面,例如读者会看到的图像和文本。这是因为它们主要依赖于使用读者可见的内容。所讨论的技术无法检测到此PDF文档的元数据或背景数据的更改。如果进行更改,使用PDF格式的脚本功能将恶意软件嵌入到PDF中,则上述技术将无法检测到文档的此类更改[7]。它们也无法检测到PDF签名的更改,如果PDF文档以这种方式受到攻击,可能会产生严重的后果[8]。PDF签名将在2.3节中详细阐述。

值得注意的是,虽然现有的使用水印和哈希的方法存在局限性,但即使无法确定确切的更改点,也可以识别出更改。这是因为更改文档中任何内容的过程都会为该文档创建一个不同的哈希值,因此很难精确地确定更改的原因和位置。

1.1 问题陈述与研究问题

本文所解决的问题是PDF文档的篡改或伪造。由于PDF格式在多个行业中被用作正式的沟通方式,因此它已成为希望影响合同或协助传播虚假信息的犯罪分子的良好目标。如果未经检测,此类文档被篡改或伪造的不利影响可能会极大地影响许多人的生活。本文提出了一种新技术,该技术可以使用PDF文档的底层内容(例如文件页面对象)来检测PDF文档的篡改或伪造。文件页面对象专门涉及PDF文档中各个页面的内容和结构。

上述描述的主要研究问题可以通过提出以下研究问题(RQs)进行扩展。这些问题用于评估所提出的解决方案是否成功检测到PDF文档的篡改或伪造。

RQ.1 目前有哪些技术被使用或研究用于检测或篡改PDF文档?

本问题旨在探讨目前用于检测PDF文档中篡改或伪造的技术有哪些。此外,我们还想了解当前PDF文档中篡改或伪造检测的现状。

RQ.2 使用文件页面对象生成哈希值是否能检测 PDF 文档文本的篡改或伪造?

本问题旨在探讨使用PDF文档的文件页面对象生成哈希值是否能够检测文档的篡改或伪造。它分为两个部分应用:第一部分使用重写方法,第二部分使用增量方法。无论如何更改PDF文档,该技术都应能成功应用。

RQ.3 是否可以开发原型来检测 PDF 文档中图像的修改?

此问题旨在探讨本文提出的原型(即本文的主要贡献)是否能够检测 PDF 文档中图像的更改。如果图像通过 Photoshop 等方法被修改或完全替换,该原型应能够检测到 PDF 文档中此类图像发生的更改。

本文的剩余部分结构如下:第2节重点介绍当前用于检测伪造或篡改的技术的文献综述,第3节详细阐述了所提出的原型设计和实现,第4节讨论了进行的实验、结果和评估,然后第5节总结了本文。

2 文献综述

本节概述了当前关于检测 PDF 文档中篡改或伪造行为的研究现状。

2.1 水印技术

水印是一种用于保护原创作品免遭复制的技术。当应用于PDF文档时,它们不像图像上的水印那样可见;它们通常被嵌入并隐藏起来。Khadam等人[5]的研究使用了PDF文档中的文件页面对象在PDF文档上添加水印。该技术被设计为非侵入性的,即将水印嵌入到PDF文档中,以供后续比较使用。该水印被设计为易损坏的,这意味着如果试图更改文档,它将失效。虽然作者提出的这种水印技术成功地检测到PDF文档格式的更改,而不会增加文件的大小,但它没有讨论检测JavaScript是否已嵌入到文档中的想法。

Usop [4] 的研究提出了一种水印技术,该技术首先将 PDF 文件转换为位图 (BMP) 格式的图像,从而启动水印创建过程。在将图像像素划分为块后,这些块以 Z 字形方式用于创建每个块的水印。这种水印方法可以有效地检测对文档视觉外观的更改。但是,它无法检测到不影响文档对读者视觉外观的更改,例如嵌入 JavaScript 代码或篡改 PDF 文件签名。另一个问题是生成这些水印可能需要很长时间,但高检测精度证明了持续时间的合理性。

Dikanev等人[9]生成了一种半脆弱水印,以保护和检测对PDF文档所做的任何更改。作者使用快速响应(QR)码来生成水印。最初,页面被转换为栅格图像,即一个简单的像素图,该像素图在用于生成QR码之前会被压缩。然后,该QR码被归一化到指定范围,之后使用反函数将其嵌入到PDF页面的图像中。当需要验证PDF文档的QR码时,将执行上述过程的逆过程。这项技术使得检测PDF文档的视觉外观变化变得容易,并且可以简单地定位这些变化发生的位置。然而,如果有人决定更改元数据或将JavaScript代码嵌入到PDF文档中,则该技术将无法检测到此类操作。

Jiang等人[13]的研究提出了一种将加密水印嵌入PDF文件中各种对象(如文本、图像和表单)的技术,确保其能够抵御多种类型的攻击,如文本编辑、格式修改和页面提取。作者使用篡改检测算法来验证内容的完整性并识别任何被篡改的区域。他们的技术在各种PDF文件上进行了测试,与现有方法[15]相比,在不可感知性、容量、鲁棒性和兼容性方面表现出高性能。

2.2 哈希

哈希是一种依赖于单向哈希函数的完整性验证技术。这些函数接受一个输入,并生成一个看似随机字符的字符串值,这些字符是根据输入计算得出的。

Senkyire和Kester [6] 使用哈希算法作为其检测文档篡改或伪造方法的主要组成部分。作者使用SHA384算法来计算特定输入的哈希值。SHA-384算法利用1024位大小的块来生成其哈希值,如果数据大小不正确,则会进行填充。生成哈希的过程如下:数据被分成n个块,第一个块被哈希并输入到过程的下一阶段。第二个块使用前一个块的哈希值和内容进行哈希处理,然后将其输入到后面的块中进行哈希。此过程重复直到第n个块。最后一个块生成的哈希值用于比较目的 [6]。通过将PDF文档的页面转换为图像并遵循上述过程,可以将此方法应用于PDF文档。

我们在第3节中提出的原型将使用哈希来评估PDF是否伪造。可以检查生成的哈希值,以确定是否对PDF进行了任何更改。

2.3 PDF签名

PDF签名(或数字签名)是用于验证PDF文档来源的方法[8]。它们验证PDF的真实性和完整性。要为PDF文档生成数字签名,必须使用增量保存,以便可以将PDF签名作为对象附加到文档,就像对原始文档的添加或更改一样。单个文档可以有多个签名对象,允许多个利益相关者对其进行签名,并验证这些签名的有效性。

Mladenov等人[8]的论文的主要概念是围绕利用PDF文档而不使其PDF签名失效展开的。因此,可以对文档进行更改,而当事人无法否认。实现这一点的方法各不相同,但大致可以归为以下几类:通用签名伪造、增量保存攻击或签名包装攻击[8]。这些类别的主要目的是使PDF签名被认为是有效的。用于防止此类攻击的方法仅侧重于PDF签名,因此很难扩展到应用于PDF文档的其余部分。使用签名可以验证文档的来源,但使用文件页面对象生成哈希的技术,可以检测篡改并半定位篡改发生的位置,将有助于验证文档的完整性。

Mainka等人提出了针对PDF签名的阴影攻击概念[10]。作者研究了符合PDF标准的PDF攻击。虽然大多数针对PDF签名的攻击依赖于创建格式错误的增量更新,但阴影攻击使用格式良好的增量更新。讨论了三种形式的阴影攻击:隐藏(Hide)、替换(Replace)和隐藏与替换(Hide-and-Replace)[10]。隐藏攻击试图将相关内容隐藏在可见图层后面,例如图像后面的文本。第二种攻击,替换,使用增量更新来覆盖先前声明的对象。最后,隐藏与替换攻击依赖于发送包含另一个文档的隐藏描述的文档。一旦他们收到签名文档,他们会附加一个引用另一个文档的Xref表。

2.4 隐藏恶意内容

隐藏恶意内容的前提是使用双文件[7]。双文件是将两种不同的文件格式组合成一个单一实体的文件。Popescu [7] 使用双文件,它结合了 PDF 和标签图像文件格式 (TIFF) 文件。TIFF 文件通常用于编辑和处理高分辨率图像。当受害者收到文档时,他们会看到 PDF 版本并对其进行签名,因为他们相信当此双文件转换为 TIFF 格式时,PDF 签名不会失效。一旦攻击者将文件转换为这种格式,他们就可以更改文档的内容,并且该文档仍然具有有效的 PDF 签名。这种攻击之所以成为可能,是因为 TIFF 标头可以放置在 PDF 文件的标头中而不会引起问题。

Popescu [7] 描述了所谓的达利攻击。这种攻击利用了多态文件的概念,该文件结合了 PDF 和 TIFF 格式。攻击者将恶意内容隐藏在文件的 TIFF 部分。当最初查看文件时,仅可见良性的 PDF 内容。然而,一旦应用了数字签名,就可以操纵该文件以显示隐藏的恶意内容,而不会使数字签名失效。

将内容嵌入到水印技术和其他哈希技术未检查的位置的概念表明,仅对文件页面对象使用哈希不足以检测所有更改。因此,这促使需要新的技术,这些技术可以用于PDF文档的其他独特对象,例如签名、标题,以及可能的交叉引用表本身。

2.5 其他技术

Guangyong等人[11]的研究工作提出了一种使用区块链技术保护和追踪PDF文件版权的新方法。作者提出了一种基于区块链的版权保护技术,该技术将区块链与PDF文件中的数据隐藏相结合。该方案包括:(i)一种新的信息隐藏算法,该算法将版权信息嵌入PDF文件中而不改变其外观,(ii)用于访问控制和PDF文件所有权链上证明的智能合约[11]。实验评估表明,所提出的技术在安全性和可追溯性方面是有效的。数据隐藏方法不影响PDF的视觉质量,并且基于区块链的系统确保了可靠的版权管理。

Nguinabe等人[12]的研究工作引入了一种使用图同构检测伪造PDF文档的新方法。他们的技术包括将PDF文档转换为图,其中节点代表单词,边代表语义关系。目标是找到原始PDF文档图和被篡改的PDF文档图之间的同构。他们的技术在检测伪造方面表现出90%的准确率,证明了其对插入、删除和修改攻击的鲁棒性。

3 方法论与原型设计

 

3.1 PDF结构

一个PDF文档包含四个主要部分[3]:页眉、正文、交叉引用表和尾部。

标题:指定文档所符合的PDF格式的版本号。

正文:由对构成文档内容的对象的引用组成。

交叉引用表:包含对文件中对象的引用列表,以允许随机访问和重用这些对象。

尾部:提供对交叉引用表和某些特殊对象的快速访问,因为应从末尾读取PDF。

更新PDF文档有两种方法。第一种方法是让计算机在保存时重写整个文件,并覆盖旧文档。第二种方法是使用增量更新,在这种情况下,新增内容会添加到文件末尾的trailer之后,使用额外的body、交叉引用和trailer部分进行更新。

PDF文档的结构是由一系列对象组成的集合。这些对象被组织成一个层级结构,并相互连接以形成文档。文件页面对象专门涉及PDF文档中各个页面的内容和结构。文件页面对象非常重要,因为它们封装了渲染和与PDF文档中的特定页面交互所需的所有细节。它们是渲染过程中不可或缺的一部分,并且对于任何涉及文档的操纵、显示或分析的操作至关重要 [3] [[5]。文件页面对象由以下组件组成:

内容流:内容流是一系列指令,用于描述如何显示页面。它通常包括在页面上绘制文本、图像和图形的指令。在我们提出的原型中,我们使用内容流来生成 Merke 树(参见第 3.2 节)。

资源:这些对象定义了页面可用的资源,例如字体、图像和其他可重用资产。

媒体框:定义页面将被打印在其上的物理介质的边界。

裁剪框:定义页面内容应被裁剪到的区域。

 旋转:指定页面的旋转角度。

注释:可选元素,允许与用户交互或定义在文档打开时或发生某些事件时要采取的操作。

3.2 实现细节

我们提出的原型可以通过两种不同的方式与PDF文档一起使用。首先,为了使用我们开发的技术保护PDF文档,必须通过原型运行PDF,以便生成哈希并将其插入到PDF文档中。其次,为了评估PDF文档是否被伪造或篡改,必须通过原型运行PDF,检测过程将确定是否已进行更改。

该原型是使用Python语言实现的。使用hashlib和Merkly库来生成哈希值。这两个主要过程可以彼此独立运行。为了读取PDF文件的页面对象,我们使用了可移植文档格式读写(PDFRW)库。PDFRW库使我们能够读取和写入PDF文件。选择PDFRW是因为它提供了对PDF结构的较低级别访问权限,这对于自定义操作任务可能是有益的。此外,对于某些操作,由于PDFRW的低级别访问,它可以更快,尤其是在处理大型PDF或复杂任务时。图1概述了原型的总体流程。

图 1. 原型流程

原型设计的三个主要子组件将在以下小节中进行更详细的讨论:在3.2.1小节中,我们讨论如何保护PDF文档免受篡改;在3.2.2小节中,我们讨论如何为PDF文档生成哈希值;在3.2.3小节中,我们讨论如何评估PDF文档是否被篡改。

3.2.1 保护PDF

PDF文档必须具有计算出的哈希值,以确保该技术能够检测和分析篡改或伪造。第一阶段,即图1中的“保护PDF”子组件,负责此过程。

首先,它将使用PDFRW库把PDF文档读取到原型中,该库会为PDF文档的各个部分生成一个类似字典的对象。一旦PDF文档被读取,我们将隔离文件页面对象,以供进一步处理。将开始一个迭代过程,计算特定文件页面对象的所有必要哈希值。对于每个页面,文件页面对象的内容流随后被用于生成一个Merkle树。这将在第3.2.3节中详细讨论。

在计算完文件页面对象内容流的 Merkle 树之后,将使用文件页面对象本身计算哈希值。这由图 1 所示的“2. 生成哈希”子组件处理,该组件将在以下章节中讨论。这由“2. 生成哈希”处理。生成哈希”子组件。该对象将在第 3.2.3 节中进一步讨论。与对象中每个标题相关联的值是将存储在 PDF 文档根对象中的值。这是通过在根对象中创建两个新键,并将相关值存储在其各自的键中来完成的。在文件页面对象中创建的键是:hashroot和 hashinfo。

3.2.2. 在计算文件页面对象的哈希值之前,首先需要对其进行序列化,并转换为可以编码成字节的格式。

序列化是将文件页面对象和PDF的根对象转换为易于存储或传输的格式的过程,通常以字节序列的形式。序列化是必需的,以确保这些对象采用一致且标准的格式,以便在生成哈希时能够正确处理。在序列化期间,会排除文件页面对象的某些子对象,以防止由于并非所有PDF文档编辑器都以统一方式创建和更新PDF文档,从而导致受保护的PDF的计算产生错误的结果。

在计算出哈希值后,它们被存储在一个结构如下的对象中:

{‘object': hash value, 'root': hash value, 'leafs': list of hash values}

本对象将在3.2.2节中进行更详细的讨论。与对象中每个标题相关联的值是将存储在PDF文档中的值。这是通过在相关文件页面对象中创建三个新键,并将相关值存储在其各自的键中来实现的。在文件页面对象中创建的键是:hashobject、hashroot和hashleafs。如果PDF文档中有四个页面,则将对所有四个页面重复此过程。

保护PDF的下一步是为根对象生成哈希值,其结构如下所示:

{'root': 哈希值, 'info': 哈希值}

一旦所有哈希值都被插入到相关的文件页面对象和根对象中,我们就使用PDFRW库来保存一个新的PDF文档。新的PDF文档现在是受保护的PDF文档,可以在“3.评估伪造”子组件中使用。“评估伪造”子组件。图2显示了在保护PDF阶段之后,原型的一个输出示例。

图 2. 成功保护 PDF 后的结果

3.2.2 生成哈希值

第二阶段,即“2. 生成哈希值”子组件,用于子组件 1 和 3(参见图 1)。“生成哈希值”子组件用于生成子节 3.2.1 中讨论的对象。此对象用于保护和评估 PDF 文档中的篡改。对象的元素以及它们的生成方式将根据它们在对象中出现的顺序进行讨论。作为参考,该对象如下所示:

“object”:哈希值,“root”:哈希值,“leafs”:哈希值列表。

“对象”哈希值是使用hashlib库实现的SHA256哈希算法计算的。它是使用文件页面对象在序列化并编码为字节流之后计算的。

“根”哈希值和“叶”哈希值是使用Merkly库实现的Merkle根同时计算的。该库使用Keccak哈希算法。Keccak哈希算法,也称为SHA-3(安全哈希算法3),是一种密码哈希函数,旨在提供针对各种类型攻击(包括碰撞、原像和第二原像攻击)的高度安全性[16]。Merkle根是构成Merkle树的所有哈希值的累积哈希。一个例子如图3所示。我们存储在PDF中的“根”哈希值是使用文件页面对象中的内容流创建的Merkle树的Merkle根。

图 3. Merkle 树的结构

内容流被分成256字节的组,然后用作Merkle树中的叶子。对象中的“leafs”哈希值是先前计算的这些组的哈希值。这些值存储在PDF中,用于定位文件页面对象中发生更改的位置。如果文件页面对象的内容发生更改,则可以将更改定位到内容流中最近的256字节组。

一旦所有三组哈希值都被计算出来,它们将被返回到调用第二阶段的子组件,即“2. 生成哈希”子组件。这可能是第一阶段或第三阶段。生成哈希” 子

根哈希值是通过序列化 Root 的子对象,并使用 SHA256 算法计算生成值的哈希值来计算的。Info 哈希值是通过序列化 PDF 文档的元数据,并再次使用 SHA256 算法计算得出的。哈希对象被返回,以便这些值可以存储在根对象中或用于比较。图 4 显示了生成的哈希的输出。

在先前提及的哈希值已存储在 PDF 中之后,将完成根和元数据的哈希值计算。此步骤在文件页面对象的哈希值之后进行,因为这些哈希值在计算根哈希值时会被包含在内。将生成的哈希对象是:

{‘根': 哈希值, '信息': 哈希值}。

图 4. 生成哈希的输出

3.2.3 PDF伪造评估

原型可以实现的第二个主要功能是评估 PDF 文档中的篡改。对于第 3 阶段,“3. 评估伪造”,要成功检测篡改,需要先在疑似篡改发生之前对 PDF 文档运行第 1 阶段。对于第 3 阶段,“3.评估伪造”,要成功地

为了进行评估,原型将使用 PDFRW 库读取 PDF,并提取文件页面和根对象。然后,它将提取存储在与以下键关联的根对象中的哈希值:hashroot 和 hashinfo。接下来,它将从相关键中提取 PDF 文档中每个文件页面对象的所有哈希组。将要提取的键是:hashobjecthashroot 和 hashleafs
将显示一条相关消息,指示是否存在篡改。如果在 PDF 文档中检测到篡改,特别是在根对象或 PDF 文档的元数据中,将显示一条消息指示这一点。如果检测到篡改,将显示进行更改的页码以及更改所在的字节流组。图 5 显示了伪造评估的输出。

在从根对象和文件页面对象中提取哈希值后,将在计算相关对象的哈希值之前,从各自的对象中删除这些键。计算出的哈希值将与先前提取的哈希值进行比较,以确定文件是否已被篡改。

4 实验与结果

本节重点在于评估原型系统的有效性,这对于确定其可行性和有效性至关重要。本节概述了结构,首先解释了为测试目的而对PDF所做的更改,涵盖了对文本、图像和元数据的修改。

4.1 结果

这些测试包括文本添加、修改和删除,图像插入和处理,以及元数据更改等场景[14]。每种类型的修改都单独进行测试,然后在综合测试文件中组合。这项全面的评估旨在评估原型准确检测各种修改的能力。

下表1至表4列出了使用原型进行的所有测试的结果。在下述测试用例中使用的所有PDF文档,首先由原型进行保护,然后再进行修改。此保护的唯一例外是第一个测试,该测试明确测试哈希值的缺失。PDF文档使用Microsoft Word和Adobe Acrobat创建。PDF名称开头带有星号(*)表示该PDF是由Microsoft Word创建的;没有星号的则是由Adobe Acrobat创建的。对PDF中的文本、图像和元数据的所有更改均使用Adobe Acrobat完成。文件页面对象将根据对PDF文档中的文本和图像所做的更改而变化。

表1. 实验结果:未保护

表1显示,该原型可以检测到PDF何时没有将哈希值存储在文件中。它也表明它无法评估此类文件,因为没有存储哈希值。

表2. 实验结果:文本更改

表2显示,该原型可以检测PDF中的文本何时被更改。无论是添加、更新、删除,还是上述所有操作的组合。显示的消息指示文本在哪个或哪些页面上被更改,以及内容流的哪些部分被更改。

表3. 实验结果:图像篡改

表 3 显示了原型成功检测 PDF 中图像是否被篡改(无论是添加、更新、删除还是上述所有操作的组合)时的结果。显示的消息表明文本在哪些页面上被篡改,以及内容流的哪些部分被篡改。

表4. 实验结果:元数据篡改

表4显示,该原型可以检测对PDF文档元数据的篡改。显示的消息表明元数据已被篡改。

4.2 评估

本节对原型及其检测 PDF 文档内篡改的能力进行 критический 评估。首先,我们讨论原型的一般能力。然后,我们讨论原型结果的有效性及其局限性。

4.2.1 原型的一般分析

该原型成功检测了我们测试的三个主要类别中的变更:文本变更、图像变更和元数据变更。这些变更全部使用 Adobe Acrobat 进行。这意味着我们只能确认该原型在变更使用 Adobe Acrobat 进行时才能成功检测到变更。不同的 PDF 编辑器生成的 PDF 文件具有不同的底层对象布局。然而,无论使用何种 PDF 编辑器,该原型都应能够检测到上述变更,因为受保护的 PDF 文档是使用 PDFRW 库生成的。

如第3节和表1至表4所示,输出结果描述了在哪个页面上检测到更改,或者在元数据的情况下,描述了元数据对象发生了更改。进一步扩展关于更改所在页面的指示,也表明了内容流的哪些部分已被更改。

需要注意的是,PDFRW库写入PDF的方式以及PDF文档中对象的顺序与其他PDF编辑器不同。因此,文件页面对象和根对象必须先被序列化,才能用于生成哈希值。在当前的原型迭代中,特定的子元素被选择并序列化,用于创建对象的哈希值。值得注意的是,我们提出的方法在PDF受到保护的情况下有效(参见第3.2节)。如果它没有受到保护,那么将无法检测到在哪里进行了更改。

4.2.2 原型有效性评估

由于对象在用于生成哈希之前必须被序列化,因此任何不影响所选元素的添加或更改都不会被原型检测到。由于所有PDF编辑器保存PDF时都使用不同的底层结构,我们不能直接序列化整个对象,因为这些对象的顺序会影响生成的哈希。将自定义元素添加到PDF的相同问题也适用于PDF元数据,可以在其中添加自定义元数据元素。无法使用对象一致地创建哈希的问题是一项复杂的任务,需要对将其转换为哈希函数的统一输入的最一致方法进行广泛的研究。

在保护PDF文档时,会创建一个新文件,它是原始文件的副本,其中包含嵌入到文件页面对象中的哈希值。这本身就是一种篡改PDF文档的形式。在不进行篡改的情况下,将哈希值插入到原始文件中是不可行的。为了便于文档篡改专家进行后续评估,选择复制原始文件作为途径。这种保护PDF的技术依赖于这样一个事实:只有受保护的PDF才会被恶意个人篡改。

我们主要依赖内容流来检测特定PDF文档内容的变更。这只会检测到物理文本或用户可见图像的变更。如果您更改特定行或整个文档的字体,则原型将无法检测到这一点。这源于前一段中提到的问题,并非所有文件页面对象元素都可用于生成对象的哈希值。虽然内容流是构成文件页面对象的元素的一部分,但当前原型在为该特定文件页面对象创建哈希时使用其父元素。虽然内容流是的一部分

该原型成功检测到对PDF文档的篡改。然而,这仅限于文本、图像以及对元数据和文件页面对象的某些类型的更改。仍然有很多方法可以修改PDF文档,而该原型无法检测到,例如向PDF文档添加JavaScript。

5 总结与结论

本文提出了一种利用文件页面对象检测PDF文档中篡改或伪造的技术。为此目的而开发的样机被强调为一个重要的贡献。所开发的样机成功地利用这些文件页面对象来检测PDF文档中的篡改。文件页面对象被用于生成哈希值,这些哈希值可用于检测和分析PDF文档中是否存在篡改。

未来的研究建议包括推广原型以适应各种PDF结构,调查其他类型的更改,例如JavaScript添加和签名更改,并考虑保护扫描的PDF文档。这些潜在途径旨在提高PDF文件中篡改检测的有效性和范围。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值