1

我想在我的一个 Web 应用程序中处理一些机密数据。这样开发人员或数据库管理员就不能读取数据。

我们可以通过实施一些加密技术轻松地向数据库管理员隐藏数据。但是开发人员仍然可以看到数据,因为他只创建了解密技术。我只希望最终用户可以看到他的数据。

我无法使用某些算法(例如PBKDF2 )或 DB 端加密方法(例如TDE 和 EKM)来加密数据,因为我仍然需要将加密密钥保存在某个地方。如果我保留在服务器端或数据库中,开发人员可以访问和解密数据。如果我将它保存在客户端,则用户无法从单独的机器访问信息。

那么如何处理这种情况呢?提前致谢。

4

2 回答 2

2

您正朝着零知识 Web 应用程序的方向前进,例如由SpiderOak实现的(另请参见crypton)。这些应用程序通常通过使用 PBKDF2 之类的工具从用户密码中获取密钥,并在客户端执行加密/解密来工作。然而,要使其成为真正的零知识,并满足可用性要求,还需要克服许多复杂性。可以就此写一篇文章,但我建议您从阅读链接的参考文献开始。如果您有任何问题,请告诉我。

简而言之,您希望系统“零知识”越多,在不牺牲可用性的情况下就越难实现(一个例子是克服Javascript Cryptography Considered Harmful中提出的观点)。但是,您可以进行各种权衡,以使作弊变得足够困难而不会过多影响可用性。

于 2015-06-03T03:44:09.363 回答
0

我需要将加密密钥保存在某处

不,你没有。用户只需记住它。为方便起见,您可以将其保存在浏览器的本地存储中。

于 2015-05-29T10:52:43.420 回答