分发文件以使收件人无法读取它

时间:2012-12-19 03:53:25

标签: php security http encryption distribution

我有一个附带数据文件的程序,我不希望最终用户直接阅读。虽然它位于用户的硬盘上,但它始终是加密的(即使我的程序正在使用它)。

但是,我无法在安装程序中包含数据文件,因为这些文件很容易提取。我已经尝试过加密功能,但它们似乎没有正常工作。

所以我试图找到一种分发文件的方法,以便用户在分发时无法读取它。我想到了通过PHP以加密形式通过PHP下载文件的各种方法,但是如果不发送加密密钥就很难这样做。更不用说,我在HTTP问题上没有很多经验。

我想出了一些解决这个问题的想法,但要么它们不起作用,要么它们非常复杂。我宁愿想出一个不太复杂的解决方案。

这不一定太安全,但它应该能够抵御HTTP嗅探器。什么是实现这一目标的最佳方式?

1 个答案:

答案 0 :(得分:3)

从根本上说,纯粹用软件做这件事是不可能的。如果在用户机器上运行的程序可以读取它,那么在用户机器上运行的另一个程序可以读取它;用户可以控制其他程序,并提取文件内容。

你可以使它变硬;人们通常将此功能称为DRM,并且一些DRM方案最终难以打破。如果您使用专门的硬件处理解密并且不允许任何非安全组件访问数据,它们会变得更强大,更难以打破。但最终,总会有一种解决方法;专用用户始终可以将逻辑分析仪连接到相应的总线并从中读取数据。

如果你真的想发疯,你可以建立防篡改硬件;本质上是内置自毁功能的硬件,因此如果用户试图打开计算机,它会破坏数据。这是一种相当用户敌对的行为,但在某些情况下是必要的(携带加密密钥的卡片,你不希望敌人能够获得)。

然而,所有这些都非常困难且昂贵,并且使您的用户的生活更加困难。如果某处有一个小洞,一个人可以破解,那么他们就可以提取数据并将其发布到某个地方;对于大多数人来说,只要有一个人可以绕过,这对游戏来说太难了。

当然,所有这些基于硬件的机制都要求您的用户拥有支持它们的专用硬件;如果你正在做一个纯粹基于软件的解决方案,那么游戏就已经开始了。用户只需将调试器指向程序的内存,并在读取时读取文件的内容。

所以你应该重新评估一下你是否需要这样的功能。这些数据真的那么敏感吗?如果是这样,您是否可以将其置于您的控制之下,并要求软件通过互联网与您的服务器通信,该服务器提供其提供的功能的网关?

如果您提供有关您的用例的更多信息,我们可能能够为您的特定问题提供更好的解决方案。例如,如果您只想保护来自临时用户,您可以对其进行加密,并对用于解密它的密钥和代码进行模糊处理。这不会提供太多保护,但它可以防止有人通过浏览内容来查看内容。如果是用于许可,您可以考虑使用安全加密狗或许可服务器,您的软件会对其进行检查。但没有办法是防弹;最后,如果您尝试在最终用户的计算机上对此数据执行某些操作,他们将能够从您的流程中提取数据。