Java 不使用证书的加密RMI通信

Java 不使用证书的加密RMI通信,java,ssl,rsa,rmi,elgamal,Java,Ssl,Rsa,Rmi,Elgamal,我需要在同一台主机上创建两个java进程来安全地通信。我不需要对进程进行身份验证,所以我不想使用证书 我想在服务器和客户端生成一个随机密钥,使用Elgamal在进程之间交换密钥;跨进程建立公共对称密钥;然后安全地通信 据我所知,这可以通过实现RMIServerSocketFactory和RMIClientSocketFactory接口来实现,以建立上述对称密钥 是否已经有了这样的实现 或者有没有办法配置SslRMIServerSocketFactory和SslRMIClientSocketFac

我需要在同一台主机上创建两个java进程来安全地通信。我不需要对进程进行身份验证,所以我不想使用证书

我想在服务器和客户端生成一个随机密钥,使用Elgamal在进程之间交换密钥;跨进程建立公共对称密钥;然后安全地通信

据我所知,这可以通过实现RMIServerSocketFactory和RMIClientSocketFactory接口来实现,以建立上述对称密钥

是否已经有了这样的实现

或者有没有办法配置SslRMIServerSocketFactory和SslRMIClientSocketFactory以开始使用ElGamal作为密钥交换协议

ElGamal是RSA的首选,因为ElGamal将为每次握手生成随机对称密钥,而RSA将每次生成静态密钥

我需要在同一台主机上创建两个java进程来通信 安全地。我不需要对进程进行身份验证,因此我不希望 使用证书

不幸的是,你的推理从一开始就有缺陷。无论通信渠道如何“硬化”,如果您想秘密交换数据,您总是希望确保与目标方进行通信。这样做需要某种形式的身份验证


理论上,您可以取消证书,使用PSK密码套件(这将有效地包括身份验证步骤)。Oracle/OpenJDK JRE默认不支持这一点。此外,如果您假定您的证书的私钥会被泄露(如您的建议),那么预共享密钥也可能会发生同样的问题。

欢迎使用加密堆栈交换。在这里,我们倾向于更多地关注密码学的理论方面,而不是它的某些实现的使用。因此,我将您的问题转移到我们的姐妹站点Stack Overflow,在这里,它似乎更具主题性。您所说的“安全通信”是什么意思?你想防范什么?你怎么知道你在和正确的流程交谈?我还非常确定,首先加密并不是解决潜在问题的正确答案。