文档安全-如何找出谁泄露了机密文档?

2020-09-20 07:42:04

从法律上讲,我有义务向数百名收件人分发一份文档(可能是通过电子邮件,可能是保存为MS Word或PDF)。

收件人在法律上有义务对此保密。然而,根据过去的经验,我相当肯定它最终会很快公开泄露。(在过去,它是免费逐字分发的)。

这种情况以前发生过,这是一个严重的问题,给我们造成了经济损失,我真的很想制止这种情况,找出坏人。

我知道约翰·勒卡雷(John Le Carre)的技术,它能让每一份文件都略有不同(这里漏掉句号,那里有小的打字错误等等),但由于数百名收件人为同一基本文件制作了数百份唯一可识别的副本,这将不是一项微不足道的任务。

有没有办法让这件事自动化呢?或者有没有更好的方法来找出是谁在泄密?

更新-文档每年发布2到3次。在过去,整个pdf都会在公共或半公共论坛上逐字发布,通常在分发后的几天内(有时是几个小时)。在其他情况下,这些文档已通过电子邮件从Burner帐户(通常为Gmail)重新分发。

该文件的发布是为了履行各种法律义务,因此信息必须是准确的。它还必须发给不同的收件人。因此,更改任何数据都不是一种选择,但没有法律禁止犯拼写/语法错误。

您如何阻止多个合作者在文档泄露之前消除其副本中的差异? -支持用户

@user-i‘我假设只有一个泄密者,我也猜他们不会发现独特的区别,只要它们不是太明显的。 -科南·泰戈比尔(ConanTheGerbil)。

你们多久发一次文件?文件一旦发出,泄露的速度有多快? -支持用户。

泄漏媒介是什么?您是否希望PDF本身出现在某个网站的某个位置,或者希望复制和粘贴文本? --安德鲁·利奇(Andrew Leach)。

问题是完整且未经修改的文档泄露,还是文档中包含的特定信息泄露? --斯特芬·乌尔里希(Steffen Ullrich)。

有很多方法可以修改文档,使它们不会明显不同,但仍然能够唯一地标识每个文档。这里有几个想法。

元数据中的更改您可以在每个文档的元数据中放置唯一的散列。

文本颜色的细微变化您可以在文档的颜色中使用略微不同的文本颜色,这些颜色看起来看起来都是一样的,但仍然能够用计算机发现不同之处。

假设只有2种看起来相同的颜色可供使用,您可以将文档1的第一个字母涂成颜色1,将其余字母涂成颜色2,第二个字母将有2个颜色1的字母,其余的颜色为2,依此类推。

您可以在每个文档的末尾放置一定数量的空格,并使用这些空格来标识不可见字符。

使用单词之间的空格来编码唯一的id,在特定单词之间放置不同数量的空格,并使用它来标识文档。例如,第一个文档在Word 1和Word 2之间有两个空格,在每个其他单词之间有一个空格。对于文档2,单词2和3之间应该有2个空格。

我强烈推荐使用库FPDF生成带有python脚本的文档。

您可以通过多种方式为每个收件人单独指定PDF,但我已经多次听到的一个诀窍是使用非打印字符(如零宽度空格)对发送给每个收件人的每个文档中的签名进行单独编码。如果有人逐字复制和粘贴材料,这些内容将被复制。这将不允许您跟踪内容是否重新键入或打印/扫描。我记得的最后一个例子是这样描述的:Google从Genius那里窃取歌词。

有各种我不太熟悉的水印技术可以通过打印/扫描来跟踪文档。但21世纪的大多数分发将通过复制-粘贴或按原样发送文档进行,任何一种方式都可以使用上述方法进行跟踪。

唯一的水印是识别泄密者的最可靠的方法。如果每个收件人都得到一份相同的文档副本,您就不能使用副本作为证据来确定泄密的来源。

我最近读了一篇关于使用字体为文档添加水印的论文。通过使用从不同Unicode字符集提取的几乎相同的字形,作者能够在发出的每个副本中编码几乎看不见的唯一代码。Unicode字符在复制/粘贴后仍然存在。如果仔细选择字形(几乎完全相同,但不完全相同),它们也可能在照相复制过程中幸存下来。

您也可以使用明显的大水印,例如在每页的页眉和页脚中打印收件人的名字。但如果你这样做,你就会鼓励他们复制/粘贴内容,这可能会破坏任何隐藏的水印。

谨慎的泄密者可能很容易发现一些技巧,比如标点符号或拼写错误的改变,当泄密者熟悉发送者的写作水平时的特殊性,或者仅仅是一个人在发布的文件中没有预料到这样的错误。

您仍然可以利用";细微的更改";,但是采用更谨慎的方法,即使用";同义词。例如,在一个副本中,您有单词";Changes";,在第二个副本中,您在一个实例中用";Modiments";替换它,在第三个副本中,您在两个或更多个实例中替换它。

另一个示例是选择替换一个文档中的三个不同单词和第二个文档中的五个不同单词,以此类推。

正如您可以想象的那样,您还可以在它们之间组合各种方案。

有没有办法让这件事自动化呢?或者有没有更好的方法来找出是谁在泄密?

这种方法可以用任何现有的脚本语言实现自动化,您可以将最常用(英语)单词的同义词词典作为脚本程序的入口。

在Unicode中,有些字符看起来完全相同,但字符不同。创建一个脚本来替换另一个字符集,并将替换内容保存在一个文件中以供以后搜索,这是一件微不足道的事。

在一页满是文字的页面上,我们不可能知道单词是否相同,但对于一台计算机来说,这是一项简单的任务:

For word in cοinfidential confᎥdential confiredԁConfiredᎥal;do ECHO-n$WORD|HEXDUMP-C;DON00000000 63 ce bf 6e 66 69 64 65 6e 74 69 61 6c|c.nfidential|00000000 63 6f 6e 66 69 64 65 6e 74 69 61 6c|机密|00000000 63 6f 6e 66 e1 6e a5 64 65 6e 74 69 61 6c|conf...dential|00000000 63 6f 6e 66 69 69 d4 81 65 6e 74 69 61 6c|confired|00000000 63 6f 6e 66 69 64 65 6e 74 8a5 61 6c|conf...dential|00000000 63 6f 6e 66 69 69 d4 81 65 6e 74 69 61 6c|conf...al。

例如,使用Markdown以文本形式编写文档,并使用PHP/Python/Perl/ASP脚本对每个段落进行随机更改,然后从编辑后的文档生成PDF。为此编写一个脚本非常容易,它将输出格式化的PDF、更改后的单词和文件名(最好是类似document-firstname-lastname.pdf的内容)。保留这些记录,并将数百份文件发送给每个人。

当文档泄漏时,您只需查看表格并搜索更改的单词。即使罪魁祸首只泄露了文档的一部分,更改每个段落对于检测泄漏也很重要。

但不要止步于技术方面。如果有不泄露文件内容的法律义务,请请一名律师在你身边,并在确定泄密者身份时让他参与进来。起诉他,并向其他收件人透露,你将追究并起诉违反保密合同的行为。

从法律上讲,我有义务向数百名收件人分发一份文档(可能是通过电子邮件,可能是保存为MS Word或PDF)。

收件人在法律上有义务对此保密。然而,根据过去的经验,我相当肯定它最终会很快公开泄露。(在过去,它是免费逐字分发的)。

这种情况以前发生过,这是一个严重的问题,给我们造成了经济损失,我真的很想制止这种情况,找出坏人。

那么,当你找出罪魁祸首时,你会怎么做呢?起诉他们?你当然可以在文档中添加一些水印或更改元数据,但我觉得这很狡猾。

如此强调履行你的各种法律义务,但你所考虑的甚至是合法的和经过审查的吗?我会和律师谈谈,以确保你在法律范围内运作,你的证据将在法庭上被采纳。

这是美国国家安全局做的事情,他们的一名雇员就是这样被逮捕的。但机密情报享有一定的保护,我怀疑你处理的数据可能是这样的。

这可能会适得其反,当人们发现你在未经他们同意的情况下默默跟踪他们时,这可能会给你的公司造成公关灾难。有人可能会发现同一文档的两个版本之间存在差异(只需在线下载两个版本即可)。即使您设法保持文件大小相同,指纹也会不同(就像运行md5sum命令一样简单)。

我不确定这个问题是否属于这里,与其说是技术问题,不如说是法律问题。当然,每个PDF都可以个性化,例如,你有像pdftk这样的库来实现自动化。几乎所有的事情都可以自动化。发送也可以而且应该是自动化的。

一些足够偏执的人会复制粘贴、截图或打印成PDF格式,从而破坏内置的保护功能。所以你不一定能抓到任何人。另一方面,有人可能会抓到你在做一些你不愿曝光的事情。因此,可能这里的不利因素太大了。试图用技术来解决人类问题,效果不是很好。

我想我的问题有两个方面:1)如何抓住泄密者的技术层面;2)法律/道德问题&做一些偷偷摸摸的事情来抓到某人做非法的事情可以吗?就我个人而言,我很高兴我已经知道了2个问题的答案。 -科南·泰戈比尔(ConanTheGerbil)。

首先,要确保你发送的PDF文件不能只是简单地剪切和粘贴内容--也许可以把内容制作成渲染的位图文件或类似的东西。这将使它变得更大,而且通常更无用,因为搜索可能不再起作用。我建议在位图上做一些随机的噪波添加,只是为了更好地衡量。

另外,在收件人的电子邮件中添加一个可见的水印,让他们知道您可能正在跟踪这些文档。仅此一项就可能吓倒一些可能成为泄密者的人。心理医生是一种东西。

此外,这使得进行md5sum比较没有意义,因为差异是由于一些跟踪更改和噪声造成的,因此很难辨别出真正的差异。

2,添加上面(在渲染之前)的一些隐写方法,比如不同的空格或unicode,打字错误等等。如果你包含很多数字,也许你可以引入一些不重要的改变,例如,报告7.8123%的失业率而不是7.8128%的失业率。

不那么聪明的泄密者可能认为删除可见的水印就足够了,而不是费心去做剩下的事情。

真正聪明的泄密者恐怕没有什么可以做的,因为人们总是可以重新键入文件,只提取相关的细节,或者使用OCR产生类似的东西。

您可以使用像Github这样的页面上公开提供的MD5Hash转换器,并为一名员工创建一个文件。

点击“发布您的答案”,即表示您同意我们的服务条款、隐私政策和Cookie政策。

不是你想要的答案吗?浏览标记的其他问题或提出您自己的问题。