web-dev-qa-db-ja.com

署名は楕円曲線暗号でどのように機能しますか?

したがって、暗号を楕円曲線暗号でどのように機能させるかを読んで、そこそこ理解しています。また、楕円曲線デジタル署名アルゴリズム(ECDSA)などで署名がどのように機能するかについても理解していると思います。私のWebサーバー上の証明書と秘密キーはどちらも2048ビットのRSAキーです。 RSA署名のみが可能ですか?それが私の鍵ですから? ECDSAのようなことができる場合、RSSA鍵からECDSAでの署名に使用されるECC鍵への信頼の連鎖はどのように行われますか?

5
user225295

楕円曲線(EC)暗号化は、従来のRSAスタイルの暗号化とは大きく異なります。

ボトムラインアップフロント([〜#〜] bluf [〜#〜]):サーバーは、提供された情報を前提としてRSAキー交換のみを処理できます。

入門書として、これらはどちらも非対称暗号プロトコルです。それらは、双方が実際のデータ/メッセージを暗号化するために使用するSYMMETRICキーを安全に送信するために使用されます。この背後にある理由は、非対称暗号プロトコルは、対称暗号プロトコル(一般的な場合)と比較して非常に計算集約的であるためです。したがって、大きなデータセットまたはストリーミングメッセージを暗号化すると、リソースを大量に消費します。代わりに、対称鍵が使用されます。

それではあなたの質問に戻りましょう。デジタル署名が作成され、署名されました。公開鍵は2048ビットのRSA鍵です。つまり、秘密鍵はRSA鍵でもあるということです。そのデジタル署名や所有する鍵でECプロト​​コルを使用することはできません。したがって、最初の質問に対する答えは次のとおりです:はい、Webサーバーでは2048ビットのRSAキー交換しか実行できません

ECキーを作成/生成するには、上流のプロバイダーから1つ(または複数)を発行するか、opensslなどのサードパーティツールを使用して自分で生成する必要があります。

補足として、読者はなぜRSAではなくECを使用するのか疑問に思うかもしれません。まあそれはパフォーマンスのためです。理論的には(少なくともセキュリティコミュニティでこれまでに証明されていることに対して)、ECキーは占有するスペースがはるかに少なく、特定のシステムでより速く実行されます(ハードウェアの実装は、そのステートメントと矛盾するように異なる場合がありますが、同じソフトウェアの実装ではシステムECは、同等強度のRSAよりも高速である必要があります)。

たとえば、ECのopensslページ( http://wiki.openssl.org/index.php/Elliptic_Curve_Cryptography )によると、RSAで256ビットの対称キーを暗号化するには、15360ビットのRSAが必要です。キーですが、512ビットのECキーのみです。

つまり、多数のクライアントでHTTPSサーバーを実行している場合は、ECキーが必要になります。対称キーをより迅速に保護し、全体の処理を大幅に削減できるためです(回線経由で送信されるデータの量を含む)鍵交換で)。

次の質問に移ります。 ECキーを使用する場合は、別のときに発行/生成されるため、別の証明書に含まれている可能性があります。信頼は、現在の信頼がどのようなソースからのものであるか-それが内部ルート認証局であるか、verisignやgodaddyなどの外部認証局であるかに関係なく。

理論的には、証明書に適切なアクセス許可が付与されている場合、それを使用して下流の証明書に署名できます(つまり、証明書は、組織内の他のユーザーからの要求に署名できる中間認証局です)。その場合(証明書がWebサーバーで使用されている可能性は低い)、ECキーとEC証明書署名リクエストを作成し、2048ビットのRSA署名で認証された証明書を発行して、 、たとえば、384ビットのECキー。

これが一部に役立つことを願っています。私はこれについてもう少し投稿したopensslリンクを読んだでしょう。

1
Nick