加密,可压缩,跨平台,文件系统

时间:2010-06-30 11:57:21

标签: qt encryption lucene drm

我们希望制作一个桌面应用程序,搜索本地打包的文本数据库,其大小将为几GB。我们正在考虑使用lucene。

所以基本上用户会搜索几个单词,而本地lucene数据库会返回结果。但是,我们希望阻止用户对lucene索引进行全文转储,因为文本数据库是有价值的和专有的。 Web应用程序不是此处的解决方案,因为客户希望此桌面应用程序能够在没有Internet的区域中工作。

我们如何加密lucene的数据库,以便只有客户端应用程序可以访问lucene的索引,并且prying用户不能对索引进行全文转储?

我们认为,这样做的一种方法是,lucene索引是否可以存储在文件中的加密文件系统上(类似于truecrypt)。因此桌面应用程序将“挂载”包含lucene索引的文件。

这需要跨平台(Linux,Windows)......我们将使用Qt或Java来编写桌面应用程序。

有更简单/更好的方法吗?

[这是给客户的。是的,是的,概念上这是坏事:-)但这就是他们想要的方式。基本上,关键是只有桌面应用程序应该能够访问lucene索引而不能访问其他人。有人指出这主要是DRM。是的,它类似于DRM]

6 个答案:

答案 0 :(得分:5)

  

我们如何加密lucene的数据库呢?   只有客户端应用程序才能   访问lucene的索引和窥探   用户无法进行全文转储   指数?

你没有。用户将拥有密钥和加密数据,因此他们可以访问所有内容。您可以将密钥埋入混淆的文件中,但这只会稍微延迟。它肯定不会阻止窥探用户。你需要重新思考。

答案 1 :(得分:3)

这里的问题是你要同时向用户提供数据并拒绝它们。这基本上是不同名称下的DRM问题 - 攻击者(用户)完全控制应用程序的环境(硬件和操作系统)。在这种情况下,只有模糊处理和安全幻觉,才有可能实现安全。

虽然您可以让更难让用户获取未加密的数据,但您永远无法阻止它 - 因为这将意味着破坏您的应用。可能最接近的是提供一个密封的硬件盒,但恕我直言,这将使其无法使用。

请注意,从法律角度(例如DMCA的反规避条款),做出半安全的安全幻觉可能就足够了 - 但这超出了SO的范围。

答案 2 :(得分:2)

从技术上讲,你几乎无能为力。 Lucene是用Java编写的,Java代码总是可以反编译或在调试器中运行,以获取您需要存储在某处的密钥(可能在您销售用户的许可证密钥中)。

您唯一的选择是法律(或与用户的合同)。文本数据受版权保护,因此如果用户以任何超出许可协议范围的方式使用它,您可以起诉用户。

或者您可以编写自己的文本索引系统。

或者购买满足您需求的商业产品。

[编辑]如果您想使用加密索引,只需实现自己的FSDirectory。请查看SimpleFSDirectory的来源以获取示例。

答案 3 :(得分:1)

为什么不构建一个只包含用户可以访问的数据并使用桌面应用程序发布该索引的索引?

答案 4 :(得分:1)

True-crypt听起来像是一个可靠的计划。您可以以各种疯狂的过度杀戮方式装载卷并加密它们,并像访问任何其他文件一样访问它们。

不,它不完全安全,但它应该运作良好。

答案 5 :(得分:1)

单向哈希函数

您不存储明文,而是存储哈希值。如果要搜索术语,可以通过该函数推送术语,然后搜索哈希值。如果数据库中存在匹配项,请返回竖起大拇指。

为了节省空间,您是否愿意接受误报?布隆过滤器。