security - POSTing 时是否可以在 Web 应用程序中使用 RSA 加密而不是 SSL?

标签 security ssl rsa cryptico

假设我想要构建一个应用程序,但我不想在其中注册或无法获取 SSL 证书(无论出于何种原因)。

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

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

例如,假设用户将信息发布到我的应用程序时。我会执行以下操作:

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

2)客户端:POST前用RSA PublicKey加密数据,POST加密数据

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

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

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

最佳答案

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

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

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

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

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

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

关于security - POSTing 时是否可以在 Web 应用程序中使用 RSA 加密而不是 SSL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27679675/

相关文章:

docker - ssl 证书或 nginx 代理服务器不工作

java - 读取加密的PKCS8 SpongyCaSTLe Java

powershell - 使用powershell从xml读取键值

macos - 动态代码有效性检查可以防止哪些类型的动态代码修改?

jQuery ajax 和 SSL?

node.js - 从 Node.js 中的 SSL 证书获取公钥

linux - 由于 TLS 错误,无法进行 svn checkout

asp.net - 保护 Web 服务的侵入性最小的方法?

c# - 如何在 .NET 中使用 RSA key 签署 XML 文件?

.net - 从长远来看,受 RSA 保护的数据的安全性