ファイル暗号化のためのAES対Blowfish


106

バイナリファイルを暗号化したい。私の目標は、パスワードを持たないファイルをだれにも読まれるのを防ぐことです。

同じ鍵長のAESとBlowfishのどちらがより良いソリューションですか?攻撃者はファイルをクラックするための優れたリソース(ソフトウェア、知識、お金)を持っていると想定できます。


4
Blowfishは10年以上前のものです。つまり、AESとTwofishのことだと思います...
ルーク

あなたが正しい、私はそれを尋ねることができたでしょう。幸いにも、ジェリーは私にとって素晴らしいトピックをまとめました。
mimrock 2010年

@Rookセキュリティアルゴリズムの経験則は、古いほど良いです。新しいアルゴリズムは、セキュリティよりもパフォーマンスを重視する人向けです。
2014年

回答:


187

おそらく AES。ふぐはTwofishの直接の前身でした。Twofishは、AESを生み出したコンテストへのBruce Schneierのエントリーでした。AESとなったRijndaelというエントリよりも劣ると判断されました。

興味深いことに、コンテストのある時点で、すべての応募者は暗号のランク付けについて意見を求められました。各チームが独自のエントリーをベストとして選んだことはおそらく驚きではありませんが、他のすべてのチームがラインダールを2番目に選んだのです。

とはいえ、BlowfishとAESの基本的な目標には、絶対的なセキュリティの観点から(間違いなく)Blowfishを支持できるいくつかの基本的な違いがあります。特に、Blowfishは、初期のキーセットアップをかなり低速な操作にすることにより、ブルートフォース(キー枯渇)攻撃を困難にしようとします。通常のユーザーの場合、これはほとんど影響がありません(まだミリ秒未満です)が、1秒あたり数百万のキーを試行してそれを壊そうとしている場合、その違いはかなり大きくなります。

しかし、結局のところ、それは大きな利点とは言えません。通常、AESをお勧めします。私の次の選択肢は、おそらく蛇、MARS、Twofishの順でしょう。Blowfishはそれらの後のどこかに来るでしょう(Blowfishより先に私がおそらくお勧めする他のカップルがいくつかあります)。


11
他のアルゴリズムはRijndaelよりも安全であると考えられていたと思いますが、セキュリティが十分に優れていると判断されている間、非常に優れたパフォーマンスを提供しました。暗号アルゴリズムの設計は、常にセキュリティとパフォーマンスの間のトレードオフです。
CodesInChaos

10
@CodeInChaos:あなたの視点にもよりますが、それは少なくとも本当です-サーペントはおそらく最も保守的な設計でした。特に、彼らは16ラウンドのバージョンで十分だと考えました-そのため、彼らはそれを32ラウンドに倍増しました。現在知られている最高の攻撃は11ラウンドに対してのみ有効です。元の質問で選択肢がAESとBlowfishに明確に限定されておらず、最も安全で適度によく知られている暗号を単に求めていたなら、おそらく蛇を言ったでしょう...
Jerry Coffin

また、CompTIA Security +試験に向けて勉強すると、いくつかの質問と情報源でその「おもしろい」が出てきました。結局、ささいなことはそれほど役に立たないかもしれません!
Everlight

Blowfish最速
user924

22

ブロック暗号のブロックサイズもセキュリティの重要な考慮事項であることがよく認められている事実ではありません(ただし、キーサイズほど重要ではありません)。

Blowfish(および3DESやIDEAなどの同じ時代の他のほとんどのブロック暗号)は64ビットのブロックサイズを持っています。これは、今日一般的な大きなファイルサイズ(ファイルが大きく、ブロックサイズが小さい)には不十分であると考えられています、暗号文でブロックが繰り返される可能性が高くなります。そのようなブロックは暗号解読に非常に役立ちます)。

一方、AESのブロックサイズは128ビットです。この考慮だけで、Blowfishの代わりにAESを使用することが正当化されます。


2
64ビットブロックサイズの利点は、(3-)DESの代わりとして新しいアルゴリズムを古いアプリケーションに簡単にドロップできることです。
dajames 2010

ブロックサイズは興味深い議論です。:私は、数ヶ月前に、任意の対称暗号のブロックサイズは、任意の長さに拡張することができることを理論付けて記事を書いた cubicspot.blogspot.com/2013/02/...
CubicleSoft

16

アルゴリズム自体の観点から言えば、私はAESを使用しますが、単純な理由は、NISTによって受け入れられており、何年もの間ピアレビューと暗号化分析が行われることです。ただし、実際のアプリケーションでは、政府が秘密にしたいファイルを保存しているのでない限り(NSAはおそらくAESとBlowfishの両方よりも優れたアルゴリズムを提供します)、これらのアルゴリズムのいずれかを使用すると、違いはあまりありません。すべてのセキュリティが鍵となり、これらのアルゴリズムはいずれもブルートフォース攻撃に対して耐性があります。Blowfishは、16ラウンド全体を使用しない実装では弱いことだけを示しています。そして、AESは新しいものですが、その事実により、BlowFishに傾くようになります(年齢のみを考慮している場合)。このように考えてください

これが私があなたに提案することです...これらの2つのアルゴリズムを見て、アルゴリズムから選択しようとするのではなく、キー生成スキームを見てみませんか。ファイルを復号化しようとする潜在的な攻撃者は、そこに座って使用できる理論的なキーのセットを考え出して、数か月かかるブルートフォース攻撃を行うことはありません。代わりに、サーバーハードウェアへの攻撃、キーを確認するためのアセンブリのリバースエンジニアリング、キーが含まれている構成ファイルの検索、コンピューターからファイルをコピーするように友人に脅迫するなど、他の方法を利用します。 。これらは、アルゴリズムではなく、最も脆弱な場所になります。


4
AESは最近Wikipediaの「壊れた暗号」リストに追加されましたが、Blowfishに対する最悪の攻撃はわずか4ラウンドに対するものであり、壊れた暗号リストには明らかにありません。人々がまだBlowfishを使用していることに驚いたことに関するBruceのコメントは、実装者を駆り立てるものです。ただし、破損しておらず、可変キーサイズをサポートしており、AESよりも大きいキーサイズをサポートしており、プログラミングの観点からは、他のほとんどの対称ブロック暗号と比べて実装が簡単です。Blowfishは時間のテストに耐えました。これは対称暗号に対する最大の脅威です。
CubicleSoft

私は、AESが壊れているところはほとんどないことに同意します。ただし、今後10年程度で新しい基準が必要になります。また、どのAESファイナリストも素晴らしい暗号でした。蛇は実際に壊れるのが最も難しいと多くの人が考えていますが、AESが最もエレガントでした。(そして、暗号化と復号化の方法を見ると、間違いなくエレガントです。)
nerdybeardo 14

8

AES。

(私はまた、あなたが二匹の魚をはるかに古くて弱いふぐではないことを意味すると仮定しています)

両方(AESとtwofish)は良いアルゴリズムです。しかし、それらが同等であるか、またはtwofishが技術的なメリットでわずかに進んでいたとしても、私はまだAESを選びました。

どうして?宣伝。AESは政府の暗号化の標準であるため、他の何百万ものエンティティもそれを使用しています。才能のある暗号解読者は、AESの欠陥を見つけるために、より多くの「金銭的価値」を手に入れ、それから、あまり知られていない、使用されたtwofishのために行います。

あいまいな場合、暗号化は保護されません。アルゴリズムを探したり、調べたり、調べたり、攻撃したりする体の数が多いほど、常に優れています。あなたは可能な限り最も「吟味された」アルゴリズムを望んでおり、今それがAESです。アルゴリズムが厳格かつ継続的な精査を受けない場合は、アルゴリズムの強度に対する信頼度を低くする必要があります。もちろん、twofishは危険にさらされていません。それがあるため、暗号の強さであるか、十分ではない人は.....近い外観を撮影しているというだけの理由YET


5

アルゴリズムの選択はおそらくそれほど重要ではありません。研究が進んでいるので、AESを使用します。さらに重要なことは、適切な操作モードとキー導出関数を選択することです。

高速のランダムアクセスが必要な場合は、TrueCrypt形式の仕様を参考にしてください。XTSよりもランダムアクセスが必要ない場合、他のモードにはない弱点があるため、XTSは最適なモードではありません。また、何らかの整合性チェック(またはメッセージ認証コード)を追加することもできます。


1
絶対に-PBKDF2などの適切な鍵導出関数を使用することが非常に重要です。
ca

3

この答えはあなたの質問の条件に違反していることはわかっていますが、あなたの意図に対する正しい答えは単にこれだと思います:最も長いキーの長さを可能にするアルゴリズムを使用して、本当に良いキーを選択することを確認してください。最もよく評価されているアルゴリズム(暗号的および年代順)のパフォーマンスの小さな違いは、キーのいくつかの余分なビットによって圧倒されます。


7
同意できません。IBMのLucifer暗号(DESの前身)は128ビットキーとして使用されていましたが、差分暗号解読が(再)発見されると、DES(56ビットキーのみ)の方がはるかに安全であることが判明しました。
Jerry Coffin 2010年

3
キーの長さだけを見るのは非常に貧弱な指標です。
ジェラルドデイビス

2
そのため、「最もよく知られているアルゴリズム」と言いました。Blowfish 128bitがAES 128bitよりも劣ると考えるなら、Blowfish 256bitがAES 128bitを水から吹き飛ばすことに同意する必要があります。同様に、鍵の生成と管理も同様に重要です。キーが「パスワード」の場合、使用するアルゴリズムはまったく問題ではありません。私が言っているのは、OPがおそらく間違ったものを見ているということです。
Mike Jones

2
質問では、キーはパスワードから導出されると述べられています。パスワードをブルートフォースすることでシステムを破ることは、ここで述べたアルゴリズムを攻撃するよりもはるかに簡単です。キーがパスワードから導出される場合、キーの長さはほぼ完全に無関係です。
dajames 2010

私がしたのとまったく同じことを言っているにもかかわらず、あなたは私の答えを書き留めますか?キーの長さを言って、本当に良いキーを選びました。キーのすべてのビットを満たさない場合、「良い」とはどのような定義でキーを良いと見なしますか?
マイクジョーンズ

3

両方のアルゴリズム(AESとtwofish)は非常に安全であると考えられています。これは他の回答で広くカバーされています。

ただし、AESは現在2016年に広く使用されているため、ARMやx86などのいくつかのプラットフォームでハードウェアアクセラレーションが特に使用されています。ハードウェアアクセラレーション前のtwofishよりも大幅に高速ではありませんが、専用CPU命令により、AESははるかに高速になりました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.