web-dev-qa-db-ja.com

安全なパスフレーズはどのように見えるべきですか?

パスワードはランダムに生成されるだけでなく、look randomも生成される必要があることは誰もが知っています。その理由は、攻撃者がパターンや既存の単語を使用してパスワードをブルートフォースで高速にブロードフォースできるため、wwwtroy31のようにランダムに生成されたパスワードは、偶然に2ug9wf4vのようにランダムに生成されたパスワードよりも安全性が低いためです。問題は、同じ推論をパスフレーズに適用すべきかどうかです。どうやって?安全なパスフレーズはどのように見えるべきですか?完全にランダムに生成したとしても、どのようなパスフレーズを破棄する必要がありますか?

1
reed

この懸念は、PIN支払いカードの場合)のような短いパスワードに対して完全に有効です。ランダムな4桁のPINを生成すると、0.01%の確率で「1234」が生成され、0.05%の確率になります。形式で「フラッシュ」を生成する方法n&(n + 1)&(n + 2)&(n = + 3)*、「リバースフラッシュ」を生成する可能性は0.07%(n&(n-1)&(n-2)&(- n-3)*)、PINであるすべての桁が同じであるという0.1%の確率です。これらの確率は低いかもしれませんが、それらは無視できず、すべてを合計すると(理想的には、他の望ましくないパターンをいくつか追加します)、1つの可能性が増加します。

PINの生成にいくつかのルールを追加することは少し難しいです。ただし、PINスペースを削減したい場合は、攻撃者のセットも小さくなります。試行する可能性のあるPINの数。

パスワードが長いほど、脅威が少なくなります。 6文字のパスワード(^ [a-zZ-Z0-9] {6} $、均一に分散)の場合、「123456」のようなパスワードを生成することはほとんどありません(ただし、それでもある程度妥当です)。 128ビットのエントロピーを使用してパスワードを生成する場合、クラッカーが推測する自明パスワードを生成する可能性はほぼゼロです。

同じことがパスフレーズにも当てはまりますが、エントロピーの推定は、ランダムなパスワードよりもパスフレーズの方が困難です。


*「&」演算子は文字列連結です。

3
v6ak

次の場合はパスフレーズを破棄します。

  • 以前の違反で表示されます。 haveibeenpwned k-anonymity APIを使用して、以前に漏洩した何百万ものパスワードをチェックできます。
  • それは非常に短いため、力ずくで実行することができます。 「i do a is me」は小文字だけの12文字だけなので、長押しされています。
  • それは明白なパターンや繰り返しがあります。 「password 123 password 123 password」はおそらく悪いパスフレーズです。
  • それは歌の歌詞や聖書の一節や有名な引用です。これをインターネットで検索しないでください。ローカルデータベースまたはメモリから作業してください。
  • 非常に不明瞭な単語やスペルが難しい単語などが原因で、多くの場合、入力ミスが発生します。

それは私が考えることができたすべてです。短い答え:はい、論理はまだ理論的に適用されます。しかし、実際には考えられないでしょう。

1
Ben

はい、質問は "passphrase"であることはわかっていますが、簡単にする必要があります。

長年にわたって公布されたpassword "Best Practice"の多くは、疑わしい価値があるだけでなく、明らかに悪いものです。標準のチェックボックスセキュリティには、次のようなものが必要です。

15文字、大文字、小文字、数字、特殊文字、繰り返しなし、パターンなし、リスのノイズ、ムースの呼び出し

皮肉なことに、長さと複雑さが増すにつれて、人間の性質と記憶は複雑なパスワードを書き留め、より狭い記憶パターンを作成し、醜いものを最終的に覚えたら再利用することになります。特に再利用は悪いです。文字や数字に対応する不可能な電話番号の付いた付箋はかなり一般的です。

これはすべて、高速の辞書バリアント攻撃に対する防御を目的としています。 mostの場合、これは間違った脅威ベクトルです。リモート攻撃、オンライン攻撃は、ほんの一握りの失敗の後に単純にブロックされるべきです。 15文字のわだち掘れ音は不要で、password123456

多くの企業や政府のセキュリティエンティティは、ドメインサーバーのパスワードハッシュに対してクラッカーを実行し、何週間もの高速攻撃の後でパスワードを破った場合、パスワードが悪いと宣言します。マジ?攻撃者がネットワーク内で高速攻撃を実行している場合、パスワードの複雑さは問題の最も少ないものです。

次にパスフレーズに進みます。

ここでも、意図した目的を検討します。リモートログインの場合は、5回ほど失敗した後の同じブロックが適用され、複雑さはほとんど問題になりません。

本当の懸念は直接攻撃です。通常、パスフレーズはドライブ/ファイルの暗号化に使用されます。ファイルまたはドライブが攻撃を受けやすい場合は、複雑さと攻撃速度が関係します。

古典的な分析では、50,000語の辞書が90%のカバレッジになる英語の単語が想定されます。 3〜10ワードの確率が高い未知の長さ。ほとんどの場合、文法規則に従う適切な文は、確率を非常に難しいがありそうもないものに劇的に減らします。

ただし、統計だけではすべてを説明することはできません。暗号化の実装も機能します。ハッシュラウンドカウントが十分に大きい場合(Veracryptは約100万と思います)、ブルートフォースの試行ごとに長い時間がかかります。高速クラックにはもはや実用的ではありません。 Veracryptを使用すると、別の秘密ラウンドカウントを定義することもできるため、今では何千もの可能性があります。

したがって、英語のパスフレーズの90%は許容期間内に反復できると数学的に主張できますが、間違った検証のそれぞれにかなりの時間がかかる場合に正しいものであることを確認すると、これは実行可能な攻撃として除外されます。

一般的な言い回しを避け、辞書を使わないようにしてください。

0
user10216038