私は現在、GNU/Linux(xtsを使用したLUKS AES-256バリアントの1つ)と15文字のパスワード(英数字のみの小文字と_)を使用したWindows 7(Truecrypt)で(自宅で)AES暗号化を使用しています。
これで十分な場合、または長いパスワードに変更する方が良いでしょう。それはどれくらいの長さですか?最近、GPUクラッキングを使用して結果を表示すると、少し心配になりました。重要なのは、パスワードをあまり長く選択したくないので、パスワードを忘れてロックアウトされることです。
簡単な計算:
私は攻撃者が2年間で費やす$ 1,000,000を持っていると思います。彼は標準のグラフィックスカードを使用しており、10 ct/kWhを支払います。
KDFは2 * n SHA256呼び出し(nは反復カウント)で構成され、グラフィックカードでプレーンSHA256と同様の効率で実装できると思います。 1
現在のグラフィックスカードは、約6MHash/s/$と約4MHash/Jを提供します。 2
これは、プレーンなSHA256で保護された66ビットのパスワードに対応します。 TrueCryptはPBKDF2を1000回の反復で使用します。これにより、2000倍のボーナスが得られるため、11ビットを減算でき、55ビットに到達します。
100万ドルを費やすことをいとわない攻撃者は、最大55ビットのエントロピーまでTrueCryptパスワードを解読できます。秘密の価値を見積もり、適切に調整します。
巧妙な攻撃者はカスタムハードウェアを使用する可能性があり、これにより攻撃がさらに安くなるでしょう。しかし、カスタムハードウェアがハッシュごとにどれだけのエネルギーを必要とするかについて、手元にある数値はありません。
37の異なる文字から選択された完全にランダムな長さ15のパスワードは、78ビットのエントロピーを持っているため、グラフィックスカードベースの攻撃に対して安全に範囲外です。これは、パスワードが完全にランダムな場合にのみ適用されることに注意してください。単語やキーボードパターンなどの悪用可能な構造がある場合、エントロピーはかなり低くなる可能性があります。
1 PBKDF2は反復ごとに1HMacを使用し、これは2つのハッシュ呼び出しを持ちます
2 これは ビットコインマイニングハードウェア比較 に基づいています。1つのビットコインハッシュを使用して、2つのSHA256呼び出しで構成されています。
LUKS仕様 をざっと見てみたところ、このリンクは最新の形式ではないため、確認することをお勧めします。そこから部分的に引用すると、セクション2.3の前提条件の下で:
LUKSは、キーボード入力などのエントロピーの弱いソースからのパスワードを処理する必要があります。エントロピーの弱いパスワードのセキュリティプロパティを強化する目的で、PKCS#5のパスワードベースの鍵導出関数(PBKDF2)が定義されています
つまり、LUKSはPBKDF2を使用して、キーボードから暗号化キーを取得します。このプロセスはソルトを適用して汎用のRainbowテーブルを生成することを困難にし、またキーを導出する際の計算が遅いため、各チェックを比較的高価にします。
したがって、15文字のパスワードで十分です。 PBKDF2は、このようなパスワードを保護するように設計されています。とはいえ、できる限り、さまざまな文字クラス(大文字、句読点、数字も使用する)を常にアドバイスします。パスワードのエントロピーと長さを増加させるものはすべて適切です。