代码之家  ›  专栏  ›  技术社区  ›  Sid Kshatriya

文件中的加密、可压缩、跨平台、文件系统

  •  2
  • Sid Kshatriya  · 技术社区  · 16 年前

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

    我们如何加密lucene的数据库,以便只有客户端应用程序可以访问lucene的索引,而窥探的用户不能获取索引的全文转储?

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

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

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

    6 回复  |  直到 16 年前
        1
  •  3
  •   Piskvor left the building Rohit Kumar    16 年前

    这里的问题是,您试图同时向用户提供数据并拒绝来自em的数据。这基本上是另一个名称下的DRM问题—攻击者(用户)完全控制应用程序的环境(硬件和操作系统)。在这种情况下不可能有安全感,只有模糊和安全感的错觉。

    当你能做到的时候 更努力 对于用户获取未加密的数据,您永远无法阻止它,因为这将意味着破坏您的应用程序。也许最贴切的办法是提供一个密封的硬件盒,但我不知道那会使它无法使用。

    请注意,从法律角度(例如DMCA的反规避条款)来看,对安全性抱有半途而废的幻想可能就足够了,但这超出了SO的范围。

        2
  •  5
  •   Matthew Flaschen    16 年前

    我们如何加密lucene的数据库 只有客户端应用程序才能 访问lucene的索引和一个窥探 用户无法获取 索引?

    你没有。用户将拥有密钥和加密数据,因此他们可以访问所有内容。您可以将密钥埋藏在一个模糊的文件中,但这只会增加一点延迟。当然,它不会把窥探的用户拒之门外。你需要重新考虑。

        3
  •  2
  •   Aaron Digulla    16 年前

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

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

    也可以编写自己的文本索引系统。

    FSDirectory SimpleFSDirectory 举个例子。

        4
  •  1
  •   Pascal Dimassimo    16 年前

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

        5
  •  1
  •   Adam Shiemke    16 年前

        6
  •  1
  •   Sathyajith Bhat ron tornambe    15 年前

    单向散列函数

    不是存储明文,而是存储哈希。当您想要搜索一个术语时,您可以将该术语推送到函数中,然后搜索散列。如果数据库中有匹配项,则返回竖起大拇指。

    为了节省空间,你愿意接受误报吗?布卢姆过滤器。