web-dev-qa-db-ja.com

アルゴリズム-C#のRijndaelManagedクラスはAES暗号化と同等ですか?

この質問をして、C#のRijndaelManagedクラスがAES暗号化と同等かどうかを確認します。私が読んでいることから、RijndaelManagedはAES暗号化を実装するために選択されたアルゴリズムでした。誰かがこれを確認できますか?

RijndaelManagedアルゴリズムはWebプロジェクトに安全に使用できますか?ありがとう:)

22
Matthew

AESアルゴリズムは、1997年から2000年の間にNISTが開催したコンテストで選択されました。勝者はRijndaelと呼ばれるアルゴリズムでした。

NISTは、AESアルゴリズムのブロックサイズを128ビットにすることを指定しました。 Rijndaelは128、160、192、224、および256ビットのブロックサイズをサポートしているため、最終的なAES仕様は、その点で元のRijndael仕様とは異なります。つまり、「AES」と「Rijndael」は同じアルゴリズムですが、「AES」は128ビットのブロックサイズに制限されています。

ただし、ブロックサイズはキーサイズとは関係ありません。問題のアルゴリズムは、128、192、および256ビットのキーをサポートします。 AESには特定の理論的 弱点 があるため、長いキーは必ずしも「強い」とは限りません。いずれにせよ、128ビットキーは予見可能な将来に十分な長さです。

EkoostikMartinが言ったように、AESはこれまで壊れることがありません。しかし、暗号化は困難であり、専門家でさえ毎回正しく理解できるとは限りません。何をしているのかを正確に知らずに生の暗号化プリミティブを使用すると、何か悪い結果になる可能性があります。別の言い方をすれば、暗号が「セキュリティチェーン」の中で最も弱いリンクになることはめったにありません。

31
ntoskrnl

AESを使用する場合は、AesManagedクラスを使用するだけです- http://msdn.Microsoft.com/en-us/library/system.security.cryptography.aesmanaged%28v=vs。 100%29.aspx

参照したRijndaelManagedクラスは、主にブロックサイズに関するオプションを提供するため、AES仕様に正確には適合しません。 AesManagedは、指定された128ビットのブロックサイズを使用します。

Webプロジェクトにとって「安全」である限り、その非常に強力な暗号化方式(私が知る限り、決して破られることはありません)ですが、他のものと同様に、正しく使用する必要があります。

6
EkoostikMartin

いくつかの違いがあります。特に、ブロックサイズとキーサイズを変更する機能です。 (私が知る限り、AESは128の固定ブロックサイズを使用します)
RijndaelでCFBを使用している場合、ブロックサイズはフィードバックサイズに調整されます。つまり、128のブロックサイズを保証することはできません。

同等性を確保するには、128のブロックサイズを使用する必要があり、CFBを回避するか、フィードバックサイズも128であることを確認します。

注意すべきもう1つのこと:CFBで静的IVを使用している場合、暗号は決定論的です。接頭辞付きのIVを簡単に識別してデータの復号化に使用できるため、これは避けてください。

(古いスレッドを作成して申し訳ありませんが、この情報はここにありませんでした)

0
TheHitchenator