web-dev-qa-db-ja.com

LUKS、最も強力で合理的なパスフレーズを作成するにはどうすればよいですか?

LUKSで512ビットのキーで暗号化されたボリュームがあるとします。つまり、キーが取り得る2 ^ 512値が存在する可能性があります。

ここで、実際の512ビットボリューム暗号化キーと同じくらいブルートフォースに耐性のあるパスフレーズが必要です。以下の私の仮定が間違っている場合は修正してください。すべての数値は数学的な例にのみ使用されています。

私のパスフレーズがbase64エンコードのランダム入力によって生成されたとしましょう。したがって、私のパスフレーズのキースペースは64文字です。したがって、私のパスフレーズを少なくともボリューム暗号化キーと同じくらい強力にするためには、パスフレーズの長さ内に少なくとも2 ^ 512の可能な組み合わせが必要です。これは次のように表すことができます:

(size_of_keyspace) ^ number_of_characters >= 2 ^ (size_of_key)

したがって、ボリュームキーサイズが512でパスフレーズキースペースが64のこの例の場合、少なくともボリュームキーが86と同じくらい安全であるためには、パスフレーズの最小文字数を指定する必要があります。

このロジックは正しいですか、または私が知っておくべきいくつかの欠点がありますか?この質問に沿って提供できる他の推奨事項はありますか?

これについての私の推論は、実際のペイロードキー自体よりも強力なパスフレーズを使用することには固有の利点がないということです-私のドライブを強引に強引に誰かが最終的に私のパスフレーズではなく私の暗号化キーをクラックしようとしています。パスフレーズが暗号化キーよりも強力な場合、攻撃者はパスフレーズよりも速く暗号化キーをブルートフォースすることができます。これは正しいですか、または暗号化キーよりも強力なパスフレーズを使用することにはいくつかの利点がありますか?おそらく、メソッドを十分に多様化していない攻撃者のリソースの浪費としてですか?

7

セキュリティのコンテキストでは、すべてがトレードオフです。その詳細はすぐに...

暗号化されたボリュームに侵入するための攻撃オプションは何ですか?基本的には次のとおりです。

  1. 対称暗号化プリミティブで使用されるキーのキースペースのブルートフォース検索。

  2. ボリューム固有のソルトおよびキー派生パラメーターを利用して、考えられるすべてのパスワードを試行することにより、パスフレーズをブルートフォースにします。

  3. 邪悪なメイド、ゴム製ホース、キーロガー、またはキーマットを保護するためのその他の「非暗号化」手段。

3番について心配する必要があります。これは明らかな攻撃ベクトルであるためです。

ブロック暗号化プリミティブに使用される鍵を総当たりすることに成功する人はいません。

基本的なセキュリティの観点からは、実装に問題がなければ、128ビットのキーでも完全に安全であると私は確信しています。その場合のブルートフォース検索は、340,282,366,920,938,463,463,374,607,431,768,211,456の可能性を持つキースペースの平均半分を使い果たす必要があります。

256ビットのキー付きプリミティブの場合、115,792,089,237,316,195,423,570,985,008,687,907,853,269,984,665,640,564,039,457,584,007,913,129,639,936の可能性について話していることになります。

したがって、256ビットの鍵セキュリティを使用しても、既知の宇宙の原子の数に近づく数にすでに達しています。

これで終わりです。

あなたが心配しているのは、考えられるすべてのパスフレーズを試す人です。

LUKSは、ソルト+ PBKDF2を使用してパスフレーズをキースペースのサイズに拡張することを思い出してください。つまり、「a」のパスワードでも、キースペース全体のあらゆる場所にマッピングできます。したがって、攻撃者はここで役立つレインボーテーブルを用意することはありません。

彼らがパスフレーズをブルートフォースにする場合、ボリュームで使用されるパラメーター(ソルトとイテレーション)を使用してキー導出関数をそれぞれ実行し、可能なすべての入力を試行します。それには時間がかかります。そして、メモリが機能する場合、LUKSは実際には、「試行」ごとに特定の時間がかかるように反復を設定します。

これが意味することは、攻撃者が十分な数の可能なフレーズを試してフレーズを見つけられないようにするのに十分なエントロピーを持つパスフレーズの長さが必要なことです。攻撃者はもちろん、GPUまたは専用のASICハードウェアを使用してこのプロセスを高速化することができます(そのため、Scryptなどをより困難にするためにScryptなどを実験しているのはそのためです)。小文字、大文字、数字、およびキーボード記号(シフトされた数字の記号やキーボード上の他の記号を含む)を含む30文字まで.

これで、最初のコメントに戻ります。トレードオフを覚えておくことが重要です。 512ビットのキースペースの難しさと同等のパスフレーズを考え出すことができますが、これは動作に影響を与えます。ログインするときに正しいパスフレーズを取得するのは面倒なので、コーヒーを手に入れようとするときに、マウントを解除したりログオフしたりしない場合があります。長いパスフレーズを電話または一部に保存する場合があります。紙の。パスワードマネージャーに保存すると、パスフレーズの長さのセキュリティではなく、パスワードマネージャーのセキュリティによって制限されます。

一方、攻撃者が93の可能な文字を使用して20〜30文字のパスフレーズを試さなければならない場合、攻撃者は95〜150ビットのエントロピーに直面し、ブルートフォースの妥当な範囲外に置かれます。

そして、そのすべてが、ボリュームに入る可能性の3番目の可能性につながります。キーを暗号化プリミティブにブルートフォースで強制したり、考えられるすべてのパスフレーズを試したりするのと比較して、3番目のシナリオ「COMPROMISE」は本当に心配する必要があるものです。攻撃者は、実行中のシステムで昇格した権限を与えるエクスプロイトを危険にさらしたWebブラウザーにポイントさせることで、メモリをスキャンしてパスワードを取得できます。システム上でルートキットを入手した攻撃者も同じことができます。侵害されたUSBまたはFirewireデバイスを接続すると、セキュリティが危険にさらされる可能性があります。そして、これらはすべて、攻撃者にとって、キースペースやパスフレーズスペースをブルートフォースするよりもはるかに簡単です。

6
boggart

実際には、攻撃者は鍵の前にパスフレーズを攻撃しようとします。場合によっては、実際のキーを攻撃することがはるかに困難になります。パスフレーズとキーの両方について、ポリシーをロックアウトすることが重要であることに注意してください。

実際には、ロックアウトポリシーが適切なシステムでは、高品質の10〜12文字のパスフレーズに対する攻撃者は非現実的です。 高品質の86文字のパスフレーズは、実際に打ち勝つことは非常に困難です。私が攻撃者だったら、別の方法を見つけるだけです。 20文字のパスフレーズで十分です。

だからあなたの質問に答えるために、あなたのパスワードの長さが悪意のあるユーザーを直接キーをクラックすることに引き付けるかもしれないかどうか心配するべきではないと私は言うでしょう。代わりに、適切なロックアウトとレート制限ポリシーがあり、ブルートフォース攻撃がそもそも本質的に不可能であることを保証します。

ここの木々にとって森を見逃すのは簡単です。使用している古いソフトウェアの一部に認証バイパスがないことを確認するための調査を行わなかった場合、パスワードについて考えすぎて、すべての問題に行くことはしないでください。セキュリティの全体像を確認してください。ソフトウェアプラットフォームを調査し、重大なセキュリティホールがないことを確認します。攻撃者がパスワードが「パスワード」ではないことを攻撃者が認識した場合、次のターゲットになります。

0
baordog