【问题标题】:Client side data encryption/decryption for rails applicationRails 应用程序的客户端数据加密/解密
【发布时间】:2012-07-15 06:02:56
【问题描述】:

用户通过 Rails 应用互相发送消息并为其他用户发布私人信息。

目标是保护消息安全,因此系统管理员和数据库泄漏都无法破坏数据。使用接收方密钥的 Javascript 客户端加密,加密数据存储在数据库中并在接收方解密。密钥不存储在系统中。

有意义吗?有解决办法吗? 非常感谢!

更新:我的意思是非对称加密。每个用户有两个密钥:一个用于加密的公共密钥,一个用于解密的私有密钥。以及应用程序本身的密码。用户使用他的密码登录,创建一条消息,该消息使用收件人公钥(存储在系统中)加密客户端并保存在数据库中。收件人使用他的密码登录,然后输入他的私钥来解码消息。解密也是客户端,私钥不发给服务器。

【问题讨论】:

  • 我看到的唯一问题:如果密钥没有存储在系统中,客户端如何保留它们?本地存储?然后我无法从两台计算机(甚至浏览器)登录系统。只是一个简单的密码?存在被暴力破解的危险。 ...
  • @JoachimSauer 我提到了非对称密码学。公钥可以存储在系统中,因为它不能用于解密。问题已更新
  • 仍然,client 将如何获取(或保留)私钥?它仍然需要它来解密数据。
  • @Elder Joachim 的论点仍然成立。您必须存储私钥。
  • 关于更新:所以您希望用户“输入”私钥?就像“输入”一样?这些东西并不容易记住,更不用说正确输入了。

标签: javascript ruby-on-rails security encryption


【解决方案1】:

当然。使用这个http://crypto.stanford.edu/sjcl/。 特别看demohttp://bitwiseshiftleft.github.com/sjcl/demo/

要记住一件事,您不存储密钥的唯一方法是让用户从密码(不应该是他们用于您网站的密码)中获取它们。这很好,上面的库就是这样做的。但是,如果他们忘记了密码,就没有帮助,

【讨论】:

  • 谢谢,但这不是我要找的。 AES 是一种对称算法,我正在寻找一种非对称算法,例如 RSA。
  • 啊,错过了。有一个分支支持非对称加密 github.com/bitwiseshiftleft/sjcl/commits/ecc 。一般来说,有一堆 javascript 加密库,但几乎没有一个是由对他们所做的事情一无所知的人编写的。
【解决方案2】:

在客户端,您可以使用openpgp.js。使用 lib 来创建密钥、签名、加密/解密等非常容易。

【讨论】:

    【解决方案3】:

    可能是其中一种解决方案。jsbn 库是在纯 JavaScript 中快速、可移植地实现大数数学,支持桌面和移动浏览器上的公钥加密和其他应用程序。

    http://www-cs-students.stanford.edu/~tjw/jsbn/

    RSA密码学演示http://www-cs-students.stanford.edu/~tjw/jsbn/rsa2.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-30
      • 1970-01-01
      • 1970-01-01
      • 2021-03-13
      • 1970-01-01
      • 2020-03-23
      • 1970-01-01
      相关资源
      最近更新 更多