【问题标题】:How to encrypt http response using RSA encryption如何使用 RSA 加密来加密 http 响应
【发布时间】:2020-02-03 13:08:02
【问题描述】:

我正在开发一个使用 RSA 加密来加密请求-响应的 Web 服务。我已经与客户端共享了公钥,并且可以使用我的私钥解密传入的请求。现在我的问题是如何加密要返回给客户端的响应。我有两种选择:

(1) 使用我的私钥加密响应,客户端将使用已共享的公钥对其进行解密。

(2) 要求客户端提供其公钥并使用该公钥加密响应。

请建议使用哪种策略来加密响应?

【问题讨论】:

  • 有一个简单的按钮可以为您完成所有这些以及更多工作。它被称为 TLS/SSL。您需要做的就是通过 https 运行您的服务。
  • 这是某种作业吗?因为正如@JamesReinstateMonicaPolk 所说,SSL/TLS 用于相同目的。为什么要重新发明轮子!
  • 但是 SSL/TLS 是不是在使用对称加密的方面有所不同?

标签: java http encryption rsa


【解决方案1】:

您不能使用私钥加密,因为公钥应该是公开的。使用私钥加密本质上是不安全的,编程 API 通常不允许使用它。

所以(2)实际上是唯一的选择:让客户公钥并让他们用私钥解密。然而,这还不是全部:

  1. 需要信任公钥,您可能需要设置完整的 PKI 以信任这些密钥;
  2. 较大的消息无法使用 RSA 轻松加密,因此您可能需要混合加密(加密随机 AES 密钥并使用该密钥加密消息);
  3. padding oracle 攻击非常真实,并且适用于 RSA,因此仅执行 RSA 非常危险。

这就是为什么通常建议(仅)依赖 TLS 的原因。 TLS 并不总是安全的,但它几乎总是比自制方案更安全。

【讨论】:

  • 感谢您抽出宝贵时间回答问题。这有助于我更好地理解问题并得出结论。希望这对许多人也有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-08
  • 2017-08-28
  • 1970-01-01
  • 2013-03-17
相关资源
最近更新 更多