web-dev-qa-db-ja.com

DESのキーサイズ(64ビット)は何を意味するか

私は暗号化クラスを取って、DES=のキーサイズが64ビットであることを学びました。したがって、キーがアルファベット文字の配列であり、1文字が8ビットを取る場合、64/8 = 8です。したがって、キーの長さは最大8文字です。例:aaaaaaaaまたはacacacac

しかし、opensslを使用してDES=を使用してデータを暗号化した場合、8文字より長いキーを受け入れます。

root@io:~# openssl enc -des -in data -out data.enc
enter des-cbc encryption password: aseaxsasceaceasxaeaxsaceac
Verifying - enter des-cbc encryption password:aseaxsasceaceasxaeaxsaceac
root@io:~# openssl enc -d -des -in data.enc -out data.plain
enter des-cbc decryption password:aseaxsasceaceasxaeaxsaceac

そして、それは私がここに投稿した後、さらに長いキーを受け入れます。

1)したがって、私の質問は、DESのキーサイズ(64ビット)は何が不足しているかを意味します。そして
2)キーが本当に64ビット長である場合、プレーンテキストと暗号化テキストがわかっている場合、64ビットキーを解読するのにどのくらいの時間がかかりますか

2
Danny Rock

まず、これを解決するために:DESのキーサイズは、意味のある意味で64ビットではありません。暗号化または復号化で実際に使用されるのは56ビットだけです( Wikipedia )。他の8ビットはパリティ(エラーチェック)のためのものですが、実際には通常無視されます。


opensslユーティリティのenc操作(または、 enc コマンド自体)は、キーではなくパスフレーズを期待します( -Kオプションを使用しない限り)。パスフレーズは、 キー導出関数 を使用して(適切な長さの)キーに変換されます。これは内部で発生します。ユーザーが実際にプロセスを制御することはありません。


56ビットのキーの長さがブルートフォース検索に十分に短いため、DESを壊すことは実際にはかなり簡単です(1つのキーが機能するまですべてのキーを試行します。)現代のパーソナルコンピュータは、通常の場合のシナリオで数か月(おそらく最速で数週間)かかります。ただし、 専用に設計されたハードウェア 、またはコンピュータの分散ネットワークは、DESキー入力 を1日で壊す可能性があります 。これらのマシンは現在いくつかムーアの法則はこの種のブルートフォース操作に非常に適用されます。8年前に数万ドルと1日の作業にかかった日数は、今日では構築に1000ドル未満、つまりキーあたり数時間しかかかりません。 。

4
CBHacking