大家好,我正在研究一个项目,我们需要保持从客户端到黑盒系统的加密值,而不需要在中间的任何时间点对其进行解密。我们在浏览器和 Web 服务器之间使用 SSL,但是这些值会在 Web 服务器上自动解密,这是我们需要避免发生的事情。我们需要能够通过网络服务器(仍然加密)和其他后端系统传递它,直到它到达最终目的地,在那里它会被解密。
所以我的问题是我们可以使用哪些选项来维护来自浏览器的值的加密状态,而无需在任何地方解密它?
谢谢马克
大家好,我正在研究一个项目,我们需要保持从客户端到黑盒系统的加密值,而不需要在中间的任何时间点对其进行解密。我们在浏览器和 Web 服务器之间使用 SSL,但是这些值会在 Web 服务器上自动解密,这是我们需要避免发生的事情。我们需要能够通过网络服务器(仍然加密)和其他后端系统传递它,直到它到达最终目的地,在那里它会被解密。
所以我的问题是我们可以使用哪些选项来维护来自浏览器的值的加密状态,而无需在任何地方解密它?
谢谢马克
您是否考虑过对值进行简单的 RSA 加密并通过系统发送?您需要确保客户端具有用于加密数据的公钥,但这将足够简单和安全,可以传递。
据我所知,大多数图书馆都支持 RSA。可以在这里找到一个关于如何纯粹用 Javascript 来做的很好的演示。
你会想看看公钥加密。SSL 保护您的会话(浏览器 <-> 服务器),但不是完整的传输。我建议在从客户端收到数据后对您的数据进行加密,然后将加密的数据一路发送。
这是一个糟糕的图表,概述了数据流
client browser web server random server blackbox
route ---- SSL -------------><------------- not encrypted ------->
data *-------- PGP/GPG encrypted --------->
基本上,您的数据通过 SSL 加密到 Web 服务器,在该服务器上进行 PGP/GPG 加密,然后向下游发送。SSL 在这一点上并不重要(或者至少,它不是主要的加密形式)。
除非您可以在您的环境中保证 javascript,否则如果用户出于某种原因关闭了 javascript,最好在 Web 服务器上进行加密以确保您的数据是安全的。
如果您在数据库中使用二进制类型,则 Web 服务器应按原样发送。然后,您的客户端可以在插入数据之前对其进行加密,然后在获取数据后必须对其进行解密。Web 服务器和数据库服务器本身都无法查看数据。
根据定义,黑匣子系统无法解密数据,除非它是为此而构建的。我建议与黑盒系统的开发人员讨论这个问题。