キーストアが安全で、約 100 万個のキーを処理する必要があると仮定すると、非対称キーをリアルタイムで生成する方がよいでしょうか、それとも一連のキーを生成して保存し、必要なときに使用する方がよいでしょうか?
編集 1: リアルタイムとは、ユーザーが初めて登録したときにキー ペアを生成することを意味し、それ以降、そのキー ペアはユーザーとのすべての通信に使用されます。
キーストアが安全で、約 100 万個のキーを処理する必要があると仮定すると、非対称キーをリアルタイムで生成する方がよいでしょうか、それとも一連のキーを生成して保存し、必要なときに使用する方がよいでしょうか?
編集 1: リアルタイムとは、ユーザーが初めて登録したときにキー ペアを生成することを意味し、それ以降、そのキー ペアはユーザーとのすべての通信に使用されます。
非対称鍵には公開部分と秘密部分があります。公開部分は、秘密部分で行われる操作を補完する操作を実行するために使用されます (たとえば、秘密鍵で署名し、公開鍵で署名を検証するか、公開鍵でデータを暗号化し、それを復号化します)。秘密鍵で)。非対称鍵のポイントは、秘密部分と公開部分を別個のエンティティーが認識できることです。つまり、公開部分は公開されている (誰もが知っている) 一方で、非公開部分は非公開のままであるということです。
したがって、「リアルタイムで」非対称鍵を生成することは、ほとんどの状況ではほとんど意味がありません。秘密鍵に何らかの価値を与えるのは、公開鍵がすでに他の当事者に知られているということです。
非対称鍵の「リアルタイム」生成が役立ついくつかの状況を想像することができます。たとえば、「一時的な Diffie-Hellman」暗号スイートの 1 つを使用する SSL 接続: 「非対称」と呼ばれる DH キーが接続ごとに生成され、公開部分がサーバーによって署名されます (別の非対称キーを使用)。オンザフライで生成されません: 公開鍵はサーバー証明書内のものです)、接続しているクライアントに送信されます。このような状況では、DH キー ペアを事前に生成して保存することは一種の最適化と見なすことができますが、DH キー ペアの生成は非常に高速であり、秘密キーの保存は複雑でデリケートな問題であるため、最適化には適していません。
編集:問題がユーザー登録時のキー生成と事前のキー生成と保存に関するものである場合:サーバー側のキー生成が実際に必要なものであると仮定すると、事前のキー生成と保存は最適化としてのみ価値があります。 -fly 生成は、ピークを処理するにはコストがかかりすぎることが判明しました (時折、多くのユーザーが同時に登録しようとします)。秘密鍵の安全なストレージはやや難しいため、「解決策」を実装する前に、実際に問題が存在することを試してみることをお勧めします。RSA キーの生成は非常に高速であり (基本的な PC では、1 秒あたり数十個の RSA キーを簡単に生成できます)、離散ログ (DSA、Diffie-Hellman、El-Gamal) または楕円曲線ベースの暗号システムを使用すると、さらにかなり高速 (例:万1 秒あたりの新しい EC キー ペア、PC を使用)。