0

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

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

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

是否已经有一个实现来做到这一点?

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

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

4

1 回答 1

2

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

不幸的是,你的推理从一开始就有缺陷。无论通信渠道多么“坚固”,如果您想秘密交换数据,您总是希望确保与目标方进行通信。为此,需要以一种或另一种形式进行身份验证。

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

于 2012-10-08T08:53:17.393 回答