8.4.2 模型分析
Java 6并没有提供ElGamal算法实现,而相关ElGamal算法的实现资料也相当有限。作者以Bouncy Castle对于ElGamal算法实现为例,描述基于ElGamal算法的消息传递模型,如图8-8所示。
ElGamal算法在构建密钥时的操作流程几乎与RSA算法完全一致。不同的是,这次密钥对的构建者换了主人。我们仍以甲乙两方收发消息为例,甲方作为消息的发送方,乙方作为消息的接收方。我们假设甲乙双方在消息传递之前已将ElGamal算法作为消息传递的加密算法。为完成加密消息传递,甲乙双方需要以下操作:
1)由消息发送的一方构建密钥对,这里由乙方完成。
2)由消息发送的一方公布公钥至消息接收方,这里由乙方将公钥公布给甲方。
图 8-8 构建ElGamal密钥对
完成这两步操作后,甲方就可以向乙方发送加密消息,如图8-9所示。
图 8-9 甲方向乙方发送ElGamal加密数据
这里要注意,Bouncy Castle提供的ElGamal算法实现遵循“公钥加密,私钥解密”的加密/解密方式,由于公钥可通过非安全渠道发布给对方,其公钥数据加密的安全强度意义不大。