【发布时间】:2020-04-22 02:26:34
【问题描述】:
我需要在 Peer 2 Peer File 共享应用程序中使用非对称密钥加密 (RSA) 保护 Java RMI 调用。
我提到了this,但它使用密码(对称密钥)对消息进行异或。我希望客户端使用服务器的公钥加密 RMI 套接字流,并且服务器应该使用它的私钥来解密套接字输入流。 假设:P2P文件共享应用中的每个节点都有彼此的公钥
由于可以有多个客户端-服务器(P2P 节点),客户端应该使用相关服务器的公钥来加密套接字流数据。
我找不到任何其他使用非对称密钥来保护 RMI 调用的参考。请帮忙。
更新:
我是一名学生,这是一个大学项目,我必须使用 RSA 加密来保护通过 RMI 进行的通信。所以,我别无选择。
在之前的项目中,我创建了一个 Napster & Gnutella 风格的 P2P 文件共享系统。现在的任务是使用 RSA 使用它们的公私钥加密节点之间的通信。
我非常感谢这方面的任何帮助/指导。请不要关闭此问题。
更新 2
不使用内置库(java.math.BigInteger 和 java.security.SecureRandom 除外)实现 RSA 加密
【问题讨论】:
-
您必须实现自己的
RMIClientSocketFactory和RMIServerSocketFactory,否则对每个参数和结果使用SealedObject。 -
如何更新客户端套接字工厂以每次都使用所需的服务器公钥加密流?我无法想象。你能推荐一下吗?
-
您必须以某种方式将服务器的公钥离线分发给客户端,最好是在其证书中。但我不知道你为什么不像其他人那样只使用 TLS。
-
如何将 RMI vai SSL/TLS 与基于证书的客户端身份验证一起使用?
-
无意冒犯,但根据您的问题,您不够专业,无法自己动手。虽然它可以通过很多痛苦和不安全来完成,但绝不应该像您提议的那样使用非对称加密来加密大量数据。我会说使用混合加密,但正如其他人所指出的,这是一个已解决的问题:在 SSL/TLS 上使用 RMI。它符合您的要求,也是一个简单的按钮。
标签: java rsa rmi socketfactory