2

假设我想构建一个我不想注册或无法获得 SSL 证书的应用程序(不管是什么原因)。

我想知道是否可以通过使用 RSA 来获得 SSL 的安全优势。

我正在使用 CrypticoJS 库 - https://github.com/wwwtyro/cryptico

例如,让我们说当用户向我的应用程序发布信息时。我会做以下事情:

1)服务器上有RSA私钥,给每个客户端一个RSA公钥。

2) 在客户端:在 POST 之前使用 RSA PublicKey 加密数据,以及 POST 加密数据

3) 在服务器上:使用私钥解密 POST 数据。

4)在服务器上:将解密的数据保存到数据库

目标是防止我的用户的敏感信息和密码被黑客入侵。我知道当人们访问我的应用程序时,我不会看到绿色的“信任”横幅,但我的用户的安全是首要任务。请让我知道这是否可能。谢谢。

4

1 回答 1

2

TLS/SSL 提供的安全优势远不止数据加密(通过 RSA 或其他算法)。要详细了解 TLS/SSL 的工作原理及其提供的保护,请参阅真正专家的回答:https ://security.stackexchange.com/questions/20803/how-does-ssl-tls-work/20847# 20847 .

从技术上讲,您可以使用 JavaScript 加密库在客户端使用 RSA 公钥加密数据,并将其提交给服务器以通过相应的私钥解密。您还需要考虑的许多事情中的一些:

  • 除非您有非常少量的数据要加密,否则使用 RSA 进行数据加密/解密可能会很慢。TLS/SSL 使用 RSA 等非对称算法进行对称密钥加密,其性能远优于基本使用 RSA 进行所有加密/解密。

  • 如果没有 TLS/SSL,您的最终用户将无法确保他们将加密数据提交到受信任的 Web 服务器。例如,如果攻击者坐在请求的中间(例如通过公共 wifi),他们可以操纵从您的网站发送的响应来更改要使用的 RSA 公钥,以及将加密数据提交到的 URL . 在这种情况下,您的最终用户可能不会注意到任何问题。

  • TLS/SSL 的使用附带浏览器级别的保护,您无法单独使用 JavaScript 完全复制这些保护。一个例子是网络服务器信任。如果没有来自受信任的证书颁发机构的 SSL 证书,您的最终用户几乎无法保证他们的敏感数据受到保护。在安全站点上,浏览器将提供一个挂锁和/或绿色地址栏,作为通过安全连接发送数据的视觉指示。如果这不存在,用户需要相信您已经实施了备用安全机制。即使你有(在我看来这几乎是不可能的),用户也不能确信中间人攻击不会改变你的实现。

如果您说您的用户安全是首要任务,我强烈建议您考虑使用 TLS/SSL 来满足您的需求。

于 2014-12-29T19:20:02.377 回答