我的模型是我有几个客户希望与其他一些(但不是全部)客户交谈的模型。
所有消息都将通过服务器发送。
只有相互通信的两个客户端应该能够知道该消息。所以服务器和其他客户端应该无法确定发送了什么消息。
两个客户端之间的通信可能一天开始和结束几次。
消息将是可能无限长度的纯文本,但可能要少得多,想想 SMS 风格的消息。
鉴于这些情况,我应该如何加密消息?如果可以提高速度或效率,我不介意编写额外的代码。
我知道 RSA 和 AES 如何工作的粗略基础知识,但我不知道什么是最好的。
当您为 RSA 生成公钥/私钥对时,是否存在需要生成新密钥对的情况?或者一个客户可以拥有一个公钥并将相同的密钥提供给想要与他交谈的任何人并且只有他能够(曾经)阅读消息,但他们存储所有未来消息的公钥?
或者我应该为一对客户端提供一个单独的对称 AES 密钥,并在首次启动联系时简单地共享它并永远使用它。同样,是否有任何情况需要再次生成?
如果客户端崩溃/关闭/重新启动,我将如何存储密钥以便它们持续存在?