具有数字签名的 Java REST 服务

标签 java rest security encryption rsa

我有一个小型 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/

相关文章:

security - 我应该在我的数据库中保留所有 UUIDv4 生成的 oAuth2 Bearer Tokens 以防止攻击吗?

linux - ssh的新加密算法

java - 我什么时候应该在多个线程中使用不同的实例或共享实例?

java - 使用增强的 For 循环语法输出较慢的结果

Java Spring : Web Service REST producing double backslash at JSON

rest - 如何在IIS 7上部署DataSnap/REST ISAP dll

security - SSH 有多安全?

java - vaadin - 无法加载应用程序类

java - ViewPager 无法正常显示

json - 如何使用 Groovy 代码删除响应正文中 Gerrit 的 REST API 的魔术前缀?