我想创建一个消息交换程序。这些消息由AES密钥加密,此密钥使用RSA算法加密。当我从用户1发送消息到用户2时,我需要从用户2请求公钥,我只是获取密钥并使用它,还是需要像Diffie-Hellman之类的安全密钥交换?如果答案是肯定的,我如何能够使用Diffie-Hellman算法发送这个RSA公钥?我读到的是Diffie-Hellman算法生成自己的公钥和私钥,两者都依赖于它,那么如何传递RSA公钥呢?
第二个问题是我是否只使用AES算法加密,这里我必须将公钥从发送方发送到接收方,然后我当然需要一个安全的介质来传输密钥,比如Diffie-Hellman算法。但正如我前面提到的,该算法生成自己的公钥和私钥。但我已经有AES公钥了。有没有办法把AES的公钥传给Diffie-Hellman?请帮帮我,我对那件事真的很困惑
发布于 2020-08-18 18:29:58
如果您想要完美的前向保密(PFS),那么一种选择是由发送方和接收方交换短暂的ECDHE密钥。然后,使用从ECDHE密钥交换得到的共享秘密作为密钥,使用AES对消息进行加密。TLS 1.3就是这样做的。但是,这需要在客户端和服务器之间为密钥交换进行额外的往返。
如果不需要PFE,则发送方只需创建一个随机的AES密钥,使用收件人的公钥加密密钥,然后使用AES密钥对消息进行加密,并将两者都发送给收件人。从本质上讲,这就是PGP的做法。它比上面的更简单,因为它不需要额外的一轮密钥交换,但是它缺少PFS。
https://security.stackexchange.com/questions/237263
复制相似问题