具有数字签名的Java REST服务

时间:2016-06-23 16:06:04

标签: java rest security encryption rsa

我有一个小型REST服务,一小撮客户端连接到这个服务。现在我需要确保请求仅来自我的客户端以及仅来自我的服务器的响应。我不需要加密数据,因为如果有人可以读取数据并不重要,重要的是没有人可以输入错误的数据。

现在我的想法是使用公钥和私钥(RSA)进行数字签名。真正重要的是算法的速度。

这是正确的想法吗?我如何在JAX-RS中实现它?

1 个答案:

答案 0 :(得分:1)

TLS相当快,而且相当安全(与大多数家庭酿造的东西相比)。好吧,它也提供了机密性,但那应该没问题。使用TLS - 可能使用自签名证书 - 可能最有意义。您可以在此处使用相当快的算法,例如ECDHE-ECDSA-AES128-GCM-SHA256

如果您想使用CMS容器格式​​寻求应用程序级安全性(签署请求/响应),使用SHA-512的ECDSA可能最有意义。请注意,如果您采用此路线,则可能必须防止重播攻击。然而,搞砸这种情况的可能性要高得多。

对于私钥操作,ECDSA比RSA快得多,所以当需要高效率时,它应该优先于RSA(除非RSA仍然足够快,这种情况很可能就是这样)。