web-dev-qa-db-ja.com

RSAの代わりにECDSAキーを使用する必要がありますか?

私はssh.comで、公開鍵と秘密鍵のペアを作成するために使用する必要がある新しいECDSA ssh鍵があることを読みました。それは、楕円曲線に基づいた米国政府の標準です(多分何かふさわしい)。また、使用するビット数が少ないことにも気づいたため、どのようにして安全性を高めることができるのかわかりません。これについて何か聞いたことがありますか?それがより少ないビットを使用する場合、地球上でそれはどのようにより安全になりますか?

20
leeand00

ECC鍵はRSA鍵よりもはるかに短くても、攻撃者がこれらの鍵を解読するために必要とするブルートフォースの量に関して、同じ量のセキュリティを提供できます。たとえば、224ビットのECCキーは、2048ビットのRSAキーとほぼ同じ量のブルートフォースをクラックする必要があります。詳細は https://wiki.openssl.org/index.php/Elliptic_Curve_Cryptography を参照してください。

17
mti2935

「セキュリティのビット」については、 この比較 のようなものを参照してください。

ECC over Prime Fieldがビットサイズの半分に相当するセキュリティを提供するのはなぜか、RSAとFFDHEはビットあたりのセキュリティがはるかに低いのですが、これは、最もよく知られている攻撃に対するRSAの強さが このように計算される であるためです最もよく知られた攻撃に対するECCの強さは このように計算されます です。

NIST P-256/384/521曲線は安全であり、それらに対するECDHとECDSAアルゴリズムは安全ですが、これらは前世代の曲線とアルゴリズムです。それ以来の進歩は3つの分野にありました:

  1. NSAが暗号をより速く破る方法を持っている曲線ではないことを確認するために、曲線がより「袖なし」になるように任意の方法で曲線を選択する これらの理由 の場合、IMOを心配する必要はありませんが、NIST曲線からアップグレードする理由と考える人もいます。
  2. 実装の容易さ、または同等に、ランダムな実装が安全であることが判明する可能性。
  3. パフォーマンス。

現在最先端であり、誰もが推奨するECCシステムは、X25519 ECDH(Curve25519 ECDH)およびEd25519デジタル署名/長期鍵です。基本的に誰もが、NIST P-256 ECDHおよびECDSAよりも優れていることに同意します。欠点は、HSMやYubikeysなどのハードウェアトークンではサポートされないことです。

ソフトウェアSSH ホストキー を使用できる場合は、Ed25519 ホストキー を使用する必要があります。

ソフトウェアSSHユーザーキーを使用できる場合は、Ed25519 ユーザーキー を使用する必要があります。

Curve25519 key exchange を使用できる場合は、それを使用する必要があります。

25519のフォールバックはNISP P-256です。 P-256のフォールバックはRSAとFFDHEであり、少なくとも2048ビット(最大4096ビット)で、SHA2とSHA1の両方があります。 SHA1を使用したRSAおよびSHA1を使用したFFDHEは許可されなくなりました。

これらのシステムはすべて、誰かが十分に大きな量子コンピューターを構築した場合に機能しなくなることに注意してください。この問題を解決するために、人々は、敵が量子コンピューターを持っている場合でも安全である「ポスト量子」置換に取り組んでいます。 NISTはPQ Cryptoコンテストの終了、推奨事項と標準の発行、ハードウェア暗号デバイスベンダーによるPQデバイスの販売の開始を待っており、全員がPQアルゴにアップグレードします。

このアップグレードは(NIST時間枠で)差し迫っているため、全員にP-256からCurve25519に、またはRSAからECCにアップグレードするように勧めないことにしました。 NSA基本的に、PQアップグレードの予算を節約すると言われています。

ただし、ハードウェアデバイスに保存されていないSSHキーを使用している人はアップグレードしており、一時的なキーにはハードウェアの安全なストレージが必要ないため、誰もがECDHをアップグレードしています。

Ossified TLSエコシステム(SSHではない)でもX25519 ECDHにアップグレードしましたが、利用可能なHSMがないためEd25519にアップグレードできず、基本的にPQ暗号規格とHSMを待つことにしました。標準/ RFCが利用可能です。誰も使用していません。

24
Z.T.

他の回答を補完するために、NISTから抜粋した素敵な表を共​​有しましょうSP 800-57: enter image description here

基本的に、ここで確認できるのは、RSA 3072 bitECDSA 256-383 bit同じレベルのセキュリティ強度(128ビット)を実現します。

5

長所と短所があります。

「最もよく知られている攻撃を使用して、これを破るのにどれくらい時間がかかるか」を尋ねることにより、アルゴリズムのセキュリティ強度を評価します。 RSAおよび従来の素数ベースのDSAに対する既知の攻撃があり、これはECDSAの最もよく知られているアプローチよりもかなり優れています。したがって、RSSAまたは素数ベースのDSAを使用した場合、ECDSAを使用した場合よりも同等のセキュリティレベルを得るには、はるかに長いキー長が必要です。

ただし、これは実際に使用されているキーの長さで考慮されているため、4096ビットのRSAキーがすぐに壊れると信じる理由はありません。2048ビットでもしばらくはおそらく問題ありません。

残念ながら、基本的なecdsa標準にはいくつかの注意点があります。

  • 広く使われているnist曲線がバックドアされて、米国政府が暗号を解読する近道を持っている可能性があるという、暗号コミュニティのよりパラニオの間でいくつかの疑いがあります。
  • DSAおよびECDSAの基本的な実装は、乱数ジェネレーターの障害に非常に敏感です。不正な乱数ジェネレータを使用して署名を作成すると、鍵が危険にさらされる可能性があります(鍵が適切な乱数ジェネレータで生成された場合でも)。

ed25519は、「何もない」曲線を使用し、署名アルゴリズムの決定論的バリアントを使用してこれらの問題を修正しますが、「のみ」を選択した曲線は約128ビットのセキュリティを提供します(ほとんどの比較により、RSA2048よりも強力ですが、 RSA4096)。これは2014年からopensshでサポートされているため、128ビットのセキュリティレベルに満足していて、レガシーシステムにログインする必要がない場合は、おそらく悪い選択ではありません。

ed448はed25519と同じアルゴリズムを使用し、曲線は224ビットのセキュリティを提供するため、RSA4096よりも安全です。残念ながらsshにはed448の標準がありますが、主要な実装であるopensshはそれをサポートしていないようです。

3
Peter Green