我正在尝试通过 libsodium 为应用程序设置客户端/服务器通信。到目前为止,我计划使用硬编码的公钥分发应用程序。服务器将保留其秘密密钥,而不会共享它。这应该让用户加密消息并将它们发送到服务器,密钥在那里解密消息。
如果服务器上的密钥被泄露(我不确定如何泄露,但以防万一)如何将新的公钥分发给所有客户端?有没有一种方法可以在不需要分发新公钥的情况下生成新的密钥?就像是:
make_new_secret( secret_buffer, previous_public );
我希望有一个非常简单的解决方案,不需要复杂的算法来安全地分发新的公钥。如果必须在制作新公钥的同时制作新的私钥,那么可以使用哪些算法将公钥从服务器安全地分发到客户端?
附加信息(随意跳过):
我们可以在这里阅读Glenn Fiedler(使用 libsodium 的 libyojimbo 的作者)谈到“只需滚动一个新的私钥”的想法。
如果有办法重用旧公钥并使用 libsodium 创建新私钥,我很乐意阅读它。我已经浏览了文档,但还没有看到任何功能。所以我担心我可能不得不深入研究更复杂的算法来安全地分发新的公钥。
我已经检查了Diffie Hellman,但似乎需要双方从一个共同的“颜色”开始。所以我想我的问题是关于达成新的商定起始颜色。