防止在Adobe PDF中“另存为”

时间:2010-11-21 16:00:50

标签: web-services security pdf encryption

我们要求防止保存网络驱动器上存在的PDF的其他副本。目前,我们已经“锁定”了PDF格式允许的格式 - 这意味着可以防止复制/粘贴,编辑和打印。但是,客户要求在打开PDF后,没有人能够创建PDF的附加副本。

使用原生PDF,这是不可能的,因为首先,他们总是可以点击浏览器中的链接和“另存为...”到他们的桌面。此外,他们可以点击Acrobat Reader内的“另存为...”,并且没有办法(没有黑客攻击)将其关闭。此外,即使我们攻击了Acrobat Viewer,他们也有可能在另一个第三方查看器中查看和重新保存PDF。

我想到了几个最初的选择:

  1. 使用DRM提供程序锁定对文件的访问权限 - 由于费用,这不是一个选项

  2. 创建一个Web服务,将文件转换为TIFF,然后使用“secret”密钥加密它们,并将它们作为“.abc”文件提供。为“.abc”文件创建一个特殊查看器,该文件仅在客户端网络内部运行并打开此文件并对其进行解密。没有自定义查看器,他们无法查看文件。他们可以制作副本,但如果观众被锁定到他们的个人机器或必须在公司网络内运行(例如在发布之前检查来自Web服务的密钥),他们制作的任何副本都不会打开 - 能。

  3. 创建一个基本上与上面相同的Flash或Silverlight查看器,但实际上从未将文件保存到PC - 只需在浏览器中显示它。

  4. 有没有其他人可能更简单?我们的目标不是拥有100%防弹安全性,只是为了防止员工轻松制作副本,将这些副本通过电子邮件发送给竞争对手,朋友或其他无法访问这些敏感文件的人。

4 个答案:

答案 0 :(得分:3)

您提到的唯一可能有工作机会(并且实施成本太高)的选项是自定义阅读器。

读者应用程序不应该存在任何“秘密”信息(例如密钥),并且只能通过私有Web服务访问密钥和图像数据才能在内部使用。你已经注意到了。

它根本不应该存储文件;但只需将密钥和数据加载到内存中,解密图像,然后提供查看。

“困难”部分实际上是转换数据。剩下的是相当基本的东西,大部分都是。

这里需要注意的是,用户仍然可以轻松打印屏幕并保存图像。

最终,让他们看到文档而不是保存文档的唯一真正安全的方法是完全阻止他们查看他们有任何物理或一般网络访问权限的系统上的文档。

答案 1 :(得分:2)

那么,他们是否仍然无法使用打印屏幕获取信息?最后,用户总是可以手动重写它。安全性实际上只是提高标准,使窃取信息过于繁琐或过于耗时。

我会说方法2非常复杂,会耗费大量时间,但仍然容易打印屏幕。我会做第3,你可以重用许多现有的代码,并获得类似的安全级别。

答案 2 :(得分:1)

鉴于你的约束,没有办法完全安全。如果数据足够有价值,人们就会找到方法。最原始的是手动复制它,上面的一步是拍摄每个页面的照片(手机),上面一步就是打印屏幕,上面的一步是一些打印屏宏,它保存所有页面到文件夹,上面的一步是从内存中读取它。

如果你的目标仅仅是“足够好”的安全性(理解它可以被击败但大多数用户不愿意这样做)仍然是“客户读者”。它可以通过闪光灯或silverlight来完成。它甚至可以通过独立的winform应用程序完成。

有用于显示pdf的库。您可以简单地将pdf文件“包装”在加密层中,为其提供唯一的扩展名(pdx)并让您的“自定义播放器”解密并显示pdf。鉴于您正在实施pdf库,您可以准确控制可用的选项。您还应该研究使打印屏幕更难的技术,因为您只需将攻击矢量移动到下一个打印屏幕。

答案 3 :(得分:-1)

您可以使用脚本或组策略禁用“打印屏幕”键。

一个例子是copied out below from here

Windows Shell脚本

# =============================================================================# 
#* THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF          *# 
#* ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED           *# 
#* TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A          *# 
#* PARTICULAR PURPOSE.                                                        *# 
# =============================================================================# 
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout] 
"Scancode Map"=hex:00,00,00,00,00,00,00,00,04,00,00,00,2a,e0,37,e0,00,00,37,e0,00,00,54,00,00,00,00,00 
# ****************************************************************************** 
# The sample scripts are not supported under any Microsoft 
# standard support program or service. The sample scripts 
# are provided AS IS without warranty of any kind. Microsoft 
# further disclaims all implied warranties including, without 
# limitation, any implied warranties of merchantability or of 
# fitness for a particular purpose. The entire risk arising out 
# of the use or performance of the sample scripts and documentation 
# remains with you. In no event shall Microsoft, its authors, or  
# anyone else involved in the creation, production, or delivery of  
# the scripts be liable for any damages whatsoever (including, without 
# limitation, damages for loss of business profits, business  
# interruption, loss of business information, or other pecuniary loss) 
# arising out of the use of or inability to use the sample scripts or 
# documentation, even if Microsoft has been advised of the possibility 
# of such damages. 
# ******************************************************************************