2

假设您有一堆文件。假设您可以将元数据存储到这些文件中。比如说,这些元属性之一被称为“加密” 假设每个人都可以查看这些文件,但由于它们是加密的,只有知道如何解密它们的人才能真正读取内容。比如说,对于每个给定的“加密”值,一群人分享如何解密标有该值的文件的知识。假设您希望能够以与操作系统无关的方式以编程方式执行此操作(如果可能)

您将用于“加密”的值是什么?您将如何存储密钥?您将如何组织对密钥的访问?

我目前倾向于以下实施:

  • “加密”字段的值包含密钥的名称,可能还表示使用的算法
  • 每个用户都可以访问一堆密钥。这可以由用户在类似 LDAP/ActiveDirectory 的结构中的角色定义,或者它们可以只是用户配置文件/主目录中安全目录中的文件。
  • 在查看文件时,查看器(我正在尝试构建文档管理系统)检查用户密钥并在找到匹配密钥时解密文件。

你会使用什么加密?对称(AES)?或不对称(什么是好的)?

使用非对称密钥还有一个额外的好处,那就是在读取文件和写入文件之间有所不同:写入文件需要访问私钥,访问公钥(仅半公开,因为只有某些角色可以访问它)将允许读取文件。我在这里完全错了吗?

在中小型企业中解决这些问题的常用系统是什么?

编辑:似乎没有通用的解决方案。因此,我将更清楚地说明我要解决的问题:

想象一个以分布式方式运行的文档管理系统:每个文档都被复制到(公司控制的、私有的)P2P 网络中的各个节点。确保文档冗余的算法用于确保所有文档(包括修订)的备份。该系统在后台作为服务/守护程序工作,并来回铲除文档。

这意味着,用户最终会得到可能不打算在他们的本地工作站(公司控制的 PC 或笔记本电脑或其他东西)上看到的文档 - 设置是这样的,SME IT 人员设置这一切并控制谁是其中的一部分P2P 网络)。

这排除了基于目录访问的方案,因为用户可能能够访问数据。我在这里弄错了吗?本地文件夹是否可以加密,使其只能由域用户访问?那有多安全?

我知道用户共享文件的解密版本——这在技术上很难压制。这不是我要解决的问题。

4

7 回答 7

2

加密不是困难的部分,在这里。了解业务需求,尤其是您要防范的威胁,是困难的部分。密钥管理不是一件小事。

我强烈推荐《应用密码学》这本书,以帮助您更好地理解协议级别的问题。

于 2008-10-08T19:19:50.950 回答
1

这是一个难题。如果这真的很严重,你不应该在互联网上使用业余密码学家的建议。

于 2008-10-08T18:51:46.153 回答
1

也就是说,这是我的想法:

我会使用 AES 使用随机对称密钥加密每个文件。这种加密会在一夜之间运行,因此密钥会在一夜之间发生变化。

我会用有权访问该文件的每个人的公钥加密每个文件的密钥。

如果有人无法访问文件,他们第二天将无法读取新副本(他们仍然可以在本地拥有旧版本的副本)。

我会使用 gpg(几乎可以在所有操作系统上愉快地运行)。

您误解了非对称加密。公钥给大家,私钥你自己保管。如果 Alice 用 Bob 的公钥加密了一些东西,那么只有 Bob 可以解密它。如果 Bob 用他的私钥加密了一些东西 - 每个人都可以解密它,并且每个人都知道它来自 Bob,因为只有他有他的私钥。

编辑:但是,如果您忽略了我所说的一切并采取了不同的路线,并为每个文件提供了它自己的 pub/priv 密钥对......那么您将依赖公钥仅对您想要读取文件的人可用,并且您想要读/写的人可用的私钥。但这有点棘手,并且严重依赖于无法分发密钥的人。更改密钥的通宵工作可以缓解这个问题,但是您会遇到向用户分发新密钥的问题。

于 2008-10-08T18:55:41.153 回答
1

如果我理解正确,您可以使用 GNU Privacy Guard。它是跨平台和开源的。基本上,每个用户都有一份 GPG 副本和一个带有“私钥”和“公钥”的本地“钥匙串”。当你想加密某些东西时,你使用这个人的公钥,结果只能用他们关联的私钥解密。一个用户可以拥有多个密钥对,因此您可以让所有管理员访问“管理员角色”私钥,并且每个持有的私钥都可以解密使用“管理员角色”公钥加密的文档。

很酷的部分是您可以使用多个公钥加密文件,然后可以使用任何一个相应的私钥对其进行解密。

于 2008-10-08T19:04:01.167 回答
0

这个问题的难点在于为什么许多企业默认使用特定于操作系统的解决方案,例如 Active Directory。

对于与操作系统无关的情况,您必须重新创建特定操作系统和/或网络供应商已经构建的大量用户管理内容。

但这是可以完成的。对于加密本身 - 使用 AviewAnew 的答案。

于 2008-10-08T18:56:09.140 回答
0

我必须同意马克的观点:

了解业务需求,尤其是您要防范的威胁,是最困难的部分

例如; 您是否担心未经授权的用户可能会访问敏感文件?您几乎可以在任何操作系统上使用文件级访问控制来限制用户或组访问文件/目录。

您是否担心授权用户可能会在本地复制文件,然后丢失他们的笔记本电脑?有许多操作系统级别的加密工具可以提供不同程度的保护。我个人推荐将 TrueCrypt 用于拇指驱动器和其他便携式媒体,Windows Vista 现在包括提供不同级别保护的 BitLocker。

丢失笔记本电脑主题的另一个变体是丢失备份主题,许多备份供应商现在都为您的磁带备份提供加密方案,正是出于这个原因。

最后,如果您担心授权用户可能会与未授权用户共享文件,那么您可能正在尝试解决错误的问题。可以解密这些文件的授权用户可以轻松共享同一文档的新未加密版本。

于 2008-10-08T19:40:08.583 回答
0

What you need is public-key encryption using either OpenPGP or X.509 certificates. In both cases you can encrypt the single block of data for multiple "recipients" using their OpenPGP keys or X.509 certificates respectively. In X.509 the standards for encrypting the data this way are PKCS#7 and CMS (defined in some RFC, I forgot the number). You would need to employ some key revocation checking in order to prevent access for those people, who were given access before but don't have it now.

于 2008-12-20T09:06:39.093 回答