我有一个小型 REST 服务,有少数客户端连接到该服务。现在我需要确保请求仅来 self 的客户端,响应仅来 self 的服务器。我不需要加密数据,因为是否有人可以读取它并不重要,重要的是没有人可以输入错误的数据。
现在我的想法是使用带有公钥和私钥(RSA)的数字签名。真正重要的是算法的速度。
这是正确的想法吗?如何在 JAX-RS 中实现这一点?
最佳答案
TLS 非常快并且相当安全(无论如何与大多数自制的东西相比)。好吧,它还提供了保密性,但这应该没问题。使用 TLS(可能带有自签名证书)可能最有意义。这里有相当快的算法,例如ECDHE-ECDSA-AES128-GCM-SHA256
。
如果您想使用 CMS 容器格式实现应用程序级安全性(签署请求/响应),那么使用 SHA-512 的 ECDSA 可能最有意义。请注意,如果您选择此路线,您可能必须防止重放攻击。不过搞砸的可能性要高得多。
对于私钥操作,ECDSA 比 RSA 快得多,因此当需要高效率时,它绝对应该优于 RSA(除非 RSA 仍然足够快,很可能就是这种情况)。
关于具有数字签名的 Java REST 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37996679/