我需要在同一主机上进行两次java过程以安全地进行通信。我不需要对流程进行身份验证,因此我不想使用证书。
我想在服务器和客户端生成一个随机密钥,使用Elgamal在进程之间交换密钥;在整个过程中建立共同的对称密钥;然后安全地沟通。
据我所知,这可以通过实现RMIServerSocketFactory和RMIClientSocketFactory接口来建立对称密钥来完成,如上所述。
是否已经有实现这样做?
或者有没有办法配置SslRMIServerSocketFactory和SslRMIClientSocketFactory开始使用ElGamal作为密钥交换协议
ElGamal是RSA的首选,因为ElGamal会为每次握手生成随机对称密钥,而RSA每次都会生成静态密钥。答案 0 :(得分:2)
我需要在同一主机上进行两次java程序进行通信 牢固。我不需要验证进程,所以我不想要 使用证书。
不幸的是,你的推理从一开始就存在缺陷。然而,如果你想秘密地交换数据,你总是希望确保你与目标方通信。需要以这种或那种形式进行身份验证。
理论上,您可以取消证书并使用PSK密码套件(这将有效地包括身份验证步骤)。默认情况下,Oracle / OpenJDK JRE不支持此功能。此外,如果您假设您的证书的私钥会受到损害(正如您的other question所建议的那样),那么预共享密钥也会出现同样的问题。