17

C# には、RijndaelManaged、DESCryptoServiceProvider、RC2CryptoServiceProvider、TripleDESCryptoServiceProvider の 4 つの異なる対称暗号アルゴリズムがあるようです。

私はそれらの間でより多くの情報を探しています。主に、それぞれの違いは何ですか。MSDN はあまり役に立たないか、単に疲れているだけです。;) 何かを行う方法が複数ある場合と同様に、それぞれに長所と短所があると確信しています。

啓発に感謝します。
トニー

4

7 に答える 7

27

このランキング(2015年)では、最強のアルゴリズムが一番上に表示されます。

AESを使用します。

詳細:

  • DESは、70年代からの古い「データ暗号化標準」です。そのキーサイズは適切なセキュリティには短すぎます(56有効ビット数。これは、10年以上前に実証されているように、ブルートフォース攻撃を受ける可能性があります)。また、DESは64ビットブロックを使用するため、同じキーで数ギガバイトのデータを暗号化する場合に問題が発生する可能性があります(現在、ギガバイトはそれほど大きくありません)。
  • 3DESは、DESの3つのインスタンスを(個別のキーを使用して)カスケードすることにより、DES実装を再利用するためのトリックです。3DESは、少なくとも「2 112」のセキュリティまで安全であると考えられています(これは非常に多く、「今日のテクノロジーでは壊れない」という領域ではかなり遠いです)。ただし、特にソフトウェアでは低速です(DESは効率的なハードウェア実装用に設計されていますが、ソフトウェアを吸い込みます。3DESは3倍も吸い込みます)。

  • AESは、米国の連邦組織の標準的な対称暗号化アルゴリズムとして(そして、他のほとんどすべての人にとっても標準として)DESの後継です。AESは、128、192、または256ビットのキーを受け入れ(128ビットはすでに非常に壊れにくい)、128ビットブロックを使用し(したがって問題はありません)、ソフトウェアとハ​​ードウェアの両方で効率的です。これは、数年間に数百人の暗号研究者が参加する公開コンテストを通じて選ばれました。基本的に、それ以上のものはあり得ません。

したがって、疑わしい場合は、AESを使用してください。

ブロック暗号は、「ブロック」(AESを使用した128ビットのデータチャンク)を暗号化するボックスであることに注意してください。128ビットより長くなる可能性のある「メッセージ」を暗号化する場合、メッセージをブロックに分割する必要があります。分割を行う実際の方法は、動作モードまたは「チェーン」と呼ばれます。ナイーブモード(単純分割)はECBと呼ばれ、問題があります。ブロック暗号を適切に使用することは容易ではなく、AESまたは3DESなどから選択するよりも重要です。

http://en.wikipedia.org/wiki/EFF_DES_cracker

http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation

于 2009-03-16T04:35:22.390 に答える
16

簡単な答え: Rijndael を使用します

さまざまなオプションとは:

RC2は、1980 年代後半に輸出用に構築された弱く壊れた暗号です。当時、アメリカの企業は「強力な」暗号の輸出を制限されていたためです。鍵の長さは 40 ビットであるため、今日のハードウェアではブルート フォーシングが簡単になります (結局のところ、20 年後のことです)。

その名前は Rivest Cipher No. 2 の略で、作成者の Ron Rivest (世界的に有名な暗号化技術者、RSA の「R」) にちなんで付けられました。

DESはデータ暗号化標準であり、強力な暗号化と呼ばれていました。しかし、鍵の長さが 56 ビットであるため、総当たり復号化の範囲内に収まっています。

3DESは、DES を 3 回実行しています。DES を 2 回実行するだけでは、実際にはあまり強化されませんが、3 回目では強化されます。これは実質的に 116 ビットの暗号化 (196 ビットのキーを使用) です。

3DES は、今日の標準では非常に優れた強力な暗号化です。

そのため、RC2、DES、および 3DES が暗号スイートに含まれており、これらの暗号を使用するビジネス システムとの互換性を提供します。

しかし、Rijndael は選択された現代の暗号です。これは、 Advanced Encryption Standard (AES)と呼ばれる DES の正式な代替品です。

さまざまなキーサイズがありますが、 128 ビットを使用することが重要です。互換性の理由から、他のキーの長さ (最長の 256 ビットを含む) のみを使用してください。

于 2010-02-01T07:56:07.307 に答える
3

実際、述べたように、DES はあまり強力ではありません。トリプル DES は強力ですが (これに対する適切な攻撃はまだありません)、やや遅いです。

Rijndael は AES (Advanced Encryption Standard - NSA によって承認された、非常に強力) と同じですが、鍵のサイズについてより多くの選択肢があります。

残念ながら、私は RC2 についてもほとんど知りません。Rijndael よりも大幅に高速でない限り、Rijndael を使用しない理由はほとんどないと思います (それでも、Rijndael がどれほど安全であるかを確認したいと思います)。

以下は憶測です... RC2 は RC6 の数世代前の祖先であり、AES として命名される暗号の選択のファイナリストの 1 つでした。Rijndael が RC6 よりも選ばれたため、Rijndael は RC2 よりも数度優れていると考えられます。

于 2009-03-16T03:43:29.350 に答える
1

RijndaelManagedまたは TripleDES は DES よりも強力であるため、これらを使用します。

DES の主な弱点は、ブルート フォース攻撃の可能性がある短いキー長です。DES を使用して暗号化を 3 回実行することは、最終結果を強化するための可能な手段であり、したがって TripleDES です。RC2 についてはよく知らないので、その方法についてコメントすることはできません。

于 2009-03-16T03:21:21.570 に答える
1

本当に正当な理由がない限り、RijndaelManaged を使用してください。Rijndael は、DES の一般的な代替品である AES になったものです。そのため、古い DES ベースのシステムとの互換性が必要でない限り、DES や TripleDES よりも間違いなく好まれます。RC2 には特に問題はありませんが、AES よりも古く、使用する本当の理由はありません。

于 2009-03-16T03:46:25.300 に答える
1

ラインダール最高。

DES はあまり良くなく、十分な馬力があれば簡単にクラックできます。トリプル DES は、DES よりも少し優れています (DES を 3 回繰り返すだけです)。

興味がある場合は、弾む城の暗号ライブラリで C# 暗号の利点を調べてください: http://www.bouncycastle.org/

于 2009-03-16T03:54:31.913 に答える
0

これらのアルゴリズムは、速度と強度のトレードオフ曲線上のさまざまなポイントを表します。

(最も弱い/最も速い)RC2 <DES <3DES <AES / Rijndael(最も強い/最も遅い)

私はAPIに精通していませんが、「Managed」クラスと「CryptoServiceProvider」クラスの間に追加の違いはありますか?

于 2009-03-16T04:31:44.193 に答える