如何保护文件系统?

时间:2010-02-13 17:34:21

标签: delphi encryption

我想存储大文件(视频,声音)并通过数据库访问它们。我现在在文件系统(对文件的引用将存储在DB中)和纯DB(在一段时间后可能非常大)之间进行平衡。 我也必须保护内容,所以我想,DB解决方案更适合这个目的。 (可能不是一个好主意)。

另一方面,如果我选择使用文件系统,我会提示加密文件以保护它们。

我该怎么做?

P.S 请参阅问题What database should I choose not to worry about size limit?

P.P.S 在保护下,我的意思是使用crypt算法加密videofile / soundfile。当应用程序需要读取它们时,它必须解密文件... 以这种方式,除非存在适当的解密算法,否则被盗文件是无用的。 我想用密码保护RAR。据我所知,当密码足够长时,很难打破它。 (也许我错了)。 我不熟悉MD5 ....
我不能保护文件免遭盗窃,但我想禁止自由阅读。

8 个答案:

答案 0 :(得分:3)

一种方法是使用提升的安全令牌创建后台进程,以便访问仅供管理员和该进程使用的文件系统部分。在Windows上,您将创建一个“服务”。我相信它们在* nix上称它为“守护进程”。

然后,该服务可以通过管道,套接字或共享内存区域公开API,其中未加工的用户模式数据库工具可以获取和设置文件。

没有办法完全阻止系统管理员直接访问文件,所以如果这是一个要求,那你就不走运了。在Windows上,管理员具有特殊权限,允许他们获取任何安全项目(如文件或目录)的所有权。一旦他们成为所有者,他们就可以对保险项目做任何他们想做的事情。没有办法解决这个问题。

答案 1 :(得分:2)

我已经在具有不同要求和约束的不同项目中实施了这两种方法。我强烈建议保留数据库中的所有内容,将媒体文件存储在大blob中。尽管这需要非常大的表,但对于最知名的数据库的最新版本来说这应该不是问题。

我建议 DB2 。从版本9开始的DB2支持非常大的表。最大值是巨大的。 512000 PB,半个zettabyte

答案 2 :(得分:1)

你需要接受在数据库和文件系统中存储文件之间的选择最终并不重要 - 在这两种情况下,除非有一些加密,否则它们可以从外部轻松读取。这将问题从存储数据的位置转移到如何在应用程序中存储密钥以解密加密数据。

这是一个难题。可能没有什么是你能够在很短的时间内被坚定的攻击者破解的。这取决于您的计划的受众是否真的关注;如果是,那么你就做不了多少。只需一次成功的破解就可以访问您的数据并让所有感兴趣的人都可以访问它。攻击者会选择最弱的部分,这不是难以破解的文件加密,而是你的应用程序。

答案 3 :(得分:0)

使用数据库(firebird或-embedded)并保留大量内容。

如果你担心加密,请在文件系统级别而不是数据库级别执行此操作。

所有现代操作系统都支持加密文件系统

答案 4 :(得分:0)

这两种方法都有优点。

如果你想在文件系统中单独存放文件,我会单独加密每个文件。受密码保护的RAR或ZIP文件与任何方法一样好。

为每个文件使用不同的密码/解密密钥,并将密码与每个文件名一起存储在数据库中。

答案 5 :(得分:0)

以下是在不知道您的申请细节的情况下建议的。

正如您所提到的那样,您无法防止被盗,只有确保多媒体文件安全(无法使用)以外的任何人才能使用AES或BlowFish等密码加密它们的唯一选项和一个安全的密钥。这些算法与您提到的MD5不同。 MD5是 HASH算法

对于Delphi,一个相当不错的加密库是http://www.cityinthesky.co.uk/cryptography.html的DCPcrypt forund。如果有HASH和Cipher算法。

您的问题将是密码密钥管理,即“用于加密的密码是什么?”。不考虑这个问题的最简单的解决方案是使用用户自己的密码,直到你意识到用户可能更改密码。如果用户这样做,您需要解密并重新加密与用户关联的每个多媒体文件。

要回答有关密钥管理的实际问题,我建议您阅读密钥管理。由于我不是密码学方面的专家,我希望更加精通加密世界的人能够在这里提供帮助...链接:http://en.wikipedia.org/wiki/Key_management

答案 6 :(得分:0)

我认为这完全取决于一些事情:

  1. 文件来自哪里
  2. 如何(通过网络或本地)访问文件
  3. 您想要保护文件
  4. 如果初始文件来自“你”(开发人员),那么加密的数据库blob可能是最好的方式,因为大多数dbs都带有某种形式的加密。

    如果文件来自软件的用户,则使用文件系统就足够了 - 如果通过网络使用,可能使用临时目录来存储和检索文件,但实际上将文件存储在非共享位置,网络用户无权访问所有文件。

    只是一些想法。

答案 7 :(得分:0)

本地文件保护,Web项目保护和安全电子邮件,数据库(DB2,Oracle,Firebird,MS SQ:,My SLQ等)中的记录级安全性。从基元等创建加密系统。查找文件保护系统-SE或SPE或PE。