【问题标题】:Is It Possible To Use RSA encryption instead of SSL in Web App when POSTing?POST 时是否可以在 Web App 中使用 RSA 加密而不是 SSL?
【发布时间】:2014-12-28 19:06:45
【问题描述】:

假设我想构建一个应用,但我不想在其中注册或无法获得 SSL 证书(无论是什么原因)。

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

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

例如,假设用户何时向我的应用发布信息。我会做以下事情:

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

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

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

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

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

【问题讨论】:

  • 它可以保护正在传输的数据不被嗅探,但中间人攻击可能会修改您的脚本以添加代码,这些代码还将您正在加密的数据发布到另一台服务器。对于security.stackexchange.com,这可能是一个更好的问题。
  • 感谢您的回复。为了防止中间人,我还将使用过期的会话,并为每个登录的用户/IP/国家/地区设置最多 1 个会话。
  • 会话不能防止中间的自动化人
  • 基本上你需要一个 SSL 证书。他们会变得更便宜。 letsencrypt.org
  • StartSSL 提供被广泛接受的免费 SSL 证书。如果您说用户的安全是首要任务时是认真的,那么您应该使用 SSL。

标签: security ssl rsa cryptico


【解决方案1】:

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 来满足您的需求。

【讨论】:

    猜你喜欢
    • 2021-10-07
    • 1970-01-01
    • 2021-10-04
    • 2016-10-21
    • 2011-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-22
    相关资源
    最近更新 更多