libsodium を介してアプリケーションのクライアント/サーバー通信をセットアップしようとしています。これまでのところ、ハードコーディングされた公開鍵を使用してアプリケーションを配布する予定です。サーバーは秘密鍵を共有せずに保持します。これにより、ユーザーはメッセージを暗号化してサーバーに送信できます。サーバーでは、秘密鍵がメッセージを復号化します。
サーバー上の秘密鍵が危険にさらされた場合 (方法はわかりませんが、念のため)、新しい公開鍵をすべてのクライアントに配布するにはどうすればよいでしょうか? 新しい公開鍵の配布を必要とせずに新しい秘密鍵を生成する方法はありますか? 何かのようなもの:
make_new_secret( secret_buffer, previous_public );
私は、新しい公開鍵を安全に配布するための複雑なアルゴリズムを必要としない、非常に単純なソリューションを望んでいました。新しい公開鍵を作成しながら新しい秘密鍵を作成する必要がある場合、サーバーからクライアントに公開鍵を安全に配布するためにどのアルゴリズムを使用できますか?
追加情報 (飛ばしても構いません):
ここで、Glenn Fiedler (libsodium を使用する libyojimbo の作成者) が「新しい秘密鍵を転がすだけ」というアイデアについて語っている場所を読むことができます。
古い公開鍵を再利用し、libsodium で新しい秘密鍵を作成する方法があれば、ぜひ読んでみたいと思います。私はドキュメントを調べましたが、そうするための機能をまだ見ていません。そのため、新しい公開鍵を安全に配布するためのより複雑なアルゴリズムを掘り下げなければならないのではないかと心配しています。
私はDiffie Hellmanを調べましたが、両方の当事者が共通の「色」から始める必要があるようです。ですから、私の質問は、新しい合意された開始色に到達することに関するものだと思います.