在 Web 应用程序中处理机密数据

Handling Confidential Data in web application

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

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

我无法使用 PBKDF2 or DB side encryption methods Like TDE & EKM 等算法加密数据,因为我仍然需要将加密密钥保存在某个地方。如果我保留在服务器端或数据库中,开发人员可以访问和解密数据。如果我把它放在客户端,用户就不能从单独的机器上访问信息。

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

I need to keep the encryption key somewhere

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

您正前往 Zero Knowledge Web Applications, such as implemented by SpiderOak (see also crypton) 的方向。这些应用程序通常通过使用 PBKDF2 之类的东西从用户密码派生密钥,并在客户端执行 encryption/decryption 来工作。然而,要使其成为真正的零知识并满足可用性要求,还需要克服许多复杂性。人们可以就此写一篇文章,但我建议您先阅读链接的参考资料。如果您有任何问题,请告诉我。

简而言之,您希望系统成为 "more zero-knowledge",在不牺牲可用性的情况下实现起来就越困难(一个例子是克服 Javascript Cryptography Considered Harmful 中提出的要点)。但是,您可以做出各种权衡,以便在不影响可用性的情况下足够难以作弊。