【问题标题】:How to encrypt a value on the client and pass it through a web server without decrypting it如何加密客户端上的值并通过 Web 服务器传递而不解密它
【发布时间】:2010-09-17 08:31:35
【问题描述】:

大家好,我正在研究一个项目,在该项目中,我们需要保持从客户端到黑盒系统的加密值,而无需在其间的任何时间点对其进行解密。我们在浏览器和 Web 服务器之间使用 SSL,但值会在 Web 服务器上自动解密,这是我们需要避免发生的事情。我们需要能够通过网络服务器(仍然加密)和其他后端系统传递它,直到它到达最终目的地,在那里它会被解密。

所以我的问题是,我们可以使用哪些选项来维护来自浏览器的值的加密状态,而无需一路解密?

谢谢 标记

【问题讨论】:

    标签: javascript encryption


    【解决方案1】:

    您是否考虑过对值进行简单的 RSA 加密并通过系统发送?您将需要确保客户端具有用于加密数据的公钥,但这将足够简单和安全以传递。

    据我所知,大多数库都支持 RSA。可以在here 找到一个关于如何纯粹用 Javascript 来完成的很好的演示。

    【讨论】:

    【解决方案2】:

    你会想看看public key encryption。 SSL 保护您的会话(浏览器 服务器),但不是完整的传输。我建议在从客户端收到数据后对您的数据进行加密,然后将加密的数据一直发送进去。

    这是一个描述数据流的糟糕图表

            client browser    web server       random server       blackbox
    route   ---- SSL -------------><------------- not encrypted ------->
    data                          *-------- PGP/GPG encrypted --------->
    

    基本上,您的数据通过 SSL 加密到网络服务器,在该服务器上进行 PGP/GPG 加密,然后发送到下游。 SSL 在这一点上并不重要(或者至少,它不是主要的加密形式)。

    除非您可以在您的环境中保证 javascript,否则如果用户出于某种原因关闭了 javascript,最好在 Web 服务器上进行加密以确保您的数据安全。

    【讨论】:

      【解决方案3】:

      如果您在数据库中使用二进制类型,则 Web 服务器应按原样发送。然后,您的客户端可以在插入数据之前对其进行加密,然后在获取数据后必须对其进行解密。 Web 服务器和数据库服务器本身都无法查看数据。

      【讨论】:

        【解决方案4】:

        根据定义,黑盒系统无法解密数据,除非它是为此而构建的。我建议与黑盒系统的开发人员讨论这个问题。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-10-29
          • 2011-06-22
          • 1970-01-01
          • 2016-09-07
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多