我正在创建一个企业应用程序,服务器端运行一整套不同的应用程序,在客户端,只有一个网页,没有applet或其他任何东西。不幸的是,用户创建的数据是保密的,所以我需要对其进行加密。
据我所知,JavaScript密码学不是一个好主意。如何在第三方服务器上生成密钥并将其发送给客户端?感觉就像把问题转移到别的地方,而不是去解决它。
你能给我一些建议吗?我不太明白如何加密这些数据。
发布于 2015-06-12 20:53:48
SSL/TLS是浏览器和服务器之间的加密层。只要您在服务器上正确配置了SSL/TLS,任何额外的javascript类型加密都是多余的。
如果您试图创建一个安全的应用程序,而您的团队不了解SSL/TLS的功能,那么您可能需要考虑引入一位安全顾问来帮助您了解这些体系结构细节,并确保您避免了任何陷阱。
发布于 2015-06-12 09:08:33
JavaScript密码学不是个好主意
JavaScript密码本身并不坏,它只是对最常见的威胁无效。
如果您认为中间人(MITM)是一种威胁,那么SSL/TLS是一个更有效的控制,否则攻击者可以用JavaScript代替不使用加密的版本。
如果您认为客户端的恶意软件是一种威胁,那么它可能会以它喜欢的任何方式修改JavaScript,而您的加密将是无用的。
如果您认为服务器端是一种威胁(例如。客户机希望服务器存储一些内容,但看不到内容),那么它可能是有效的,但是客户端需要一些其他方法来确保JavaScript没有被篡改(这不是一个容易解决的问题),并且客户机需要自己管理密钥。
在您所描述的用例中,听起来客户端加密实际上并不会增加任何额外的安全性。无论哪种方式,您都必须处理密钥通信问题,这可能取决于SSL/TLS的完整性。客户端要么必须将密钥发送到服务器,要么以相反的方式发送,即使您使用公钥加密来解决此问题,也仍然存在确保发送给客户端的公钥是真实的问题。您很可能最终会重新实现一个典型的公钥基础结构。
撇开所有这些不说,在JavaScript中执行加密没有根本的问题,只是:
发布于 2015-06-12 08:21:09
您是否考虑在服务器端使用SSL/TLS。因此,这些数据将通过安全通道。在服务器端,稍后您可以加密ti并以这样的形式存储在数据库中。
https://security.stackexchange.com/questions/91483
复制相似问题