什么加密方法适用于加密单个单词,还有整个文档?

时间:2011-03-20 23:27:12

标签: c# encryption hash cryptoapi encryption-symmetric

我需要将多个文档保存到云端,并且需要保存文档,文档元数据和单词/短语以供搜索。

我的计划是使用对称密码来加密整个文档,但我不确定散列每个单词的正确方法。我想要一些安全的东西,但我不想不必要地增加每个单词中的字符数。

哪种实现最适合对文档进行对称加密,哪种方法可以对单词或短语进行散列而不会使其比需要大许多倍?

2 个答案:

答案 0 :(得分:1)

首先,我建议使用不同的标签。听起来你真的很有兴趣以加密安全的方式将搜索卸载到服务器(这样服务器就无法访问明文,并且客户端无需传输整个索引)。

的问题:

  • 攻击者能够找出索引中的哪些单词(以及哪些单词不是)可能是您的问题。您应该说明它是否是您要求的一部分。
  • 攻击者能够更频繁地找出索引中的哪些项目可能会成为您的问题。您应该说明它是否是您要求的一部分。
  • 攻击者可以将单词与文档相关联,这对您来说可能是一个问题。您应该说明它是否是您要求的一部分。
  • 攻击者可能能够完全破坏服务器并观察查询/检索。在这种情况下,您应该说明安全需求。
  • 可能是我没有想过的其他人。

我假设你正在设计自己的,但可能有一些比我更聪明的现有技术,研究等:

对于第一个,我建议你应该散列这些单词,在散列之前将明文与秘密(不与索引服务器共享)结合起来,并将散列截断到可能非独特的点。指数。这会花费您的哈希效率,但有助于防止攻击者将哈希用作明文等价物或通过实验确定秘密

对于第二个和第三个,您应该加密任何索引数据(例如计数或文档+位置)并在客户端上解密它。这可能会花费您的延迟。

对于第四个,你要考虑在不相关的请求组中隐藏真实的请求,比如这样的事情,但是你需要大量的数学来确保你仍然不易受到统计分析的影响。

对于第五个,做一些网络研究。我相信会有一些东西,这是一个非常具体(而且不太常见)的需求,所以你会想要一个比我更有想法的人。

答案 1 :(得分:0)

您的要求是互相排斥的。这种元数据会泄漏大量有关文档内容的信息,以至于它不能被称为安全。

此外,加密单个单词是徒劳的。破解加密的难度通常被认为与破解密钥一样困难,但这假定明文中的信息内容大于密钥中的信息内容。对于单个单词,这当然不是真的。