私は最近、パスワードに関するベストプラクティスを調査し、圧倒的多数のソースがパスワードマネージャーの使用を推奨しました。これは素晴らしいアドバイスですが、すべての状況で使用できるわけではありません。 OSログイン、ディスク復号化、またはパスワードマネージャーのロック解除などの特定の状況では、パスワードマネージャーに「パスワードを入力してもらう」ことができません。
そのため、ダイスウェアとパスフレーズのように見える2番目に優れた代替手段を検討しました。私が困惑したのは、関連する質問の この答え でした。これは、Dicewareが優れていることをほのめかしていました。答えからの抜粋:
パスフレーズは素晴らしいです( Diceware の方がいいです)パスワードマネージャーのロックには[...]
強調鉱山
Dicewareが優れているというこの主張がなぜ私を混乱させるのですか?私は zxcvbn を使用して、以下の2つのパスワード例の強度を比較しましたが、パスフレーズはDicewareパスワードよりも安全であるように見えました。さらに、パスフレーズは無意味ではありますが、覚えやすいビジュアルイメージを生成します。私が想像できる唯一の欠点は、パスフレーズの入力に時間がかかることです。これは、パスワードマネージャーを再度使用する前に、一度入力するだけでよいことを考えると、わずかな欠点です。
Diceware は、一連のサイコロを振るプロセスであり、事前に定義されたリストからランダムな単語を示します。必要なセキュリティに応じて、より多くの単語が選択されます。
Dicewareプロセスの結果の例としては、パスワードがあります。
cleft cam synod lacy yr wok
パスフレーズは本質的に文であり、ユーザーにとって意味のあるものであり、うまくいけば他の誰もいないでしょう。文法的には意味があるかもしれませんが、意味的に意味があるとは考えにくいです。
パスフレーズの例は次のとおりです。
Blue Light shines from the small Bunny onto the Lake.
パスフレーズを使用するほとんどの人は、パスフレーズを間違って使用します。
ダイスウェアの方が優れているという発言は、人々がパスフレーズを使用するとき、彼らは通常、よく知られているか、そうでなければ論理的に構造化された文を取り、それを使用するという事実に由来するでしょう。 「メアリーは少し子羊を持っていた」は、コンピューターが短時間で実行できる数十億の有名なフレーズの1つであるため、恐ろしいパスフレーズです。 試してみたのでこれはかなりうまくいくことを知っています 。
ダイスウェアは単なるランダムな言葉です。ランダム性の優れたソースを使用すると仮定すると、他のランダムに生成された単語のセットと同じくらい優れています。Dicewareの場合は、かなり良いソースであるダイスを使用する必要があります。通常、デジタルパスワードジェネレーターも適切ですが、自作の実装では、安全でないランダムジェネレーターを誤って使用する可能性があります。
ランダムパスフレーズは基本的な数学なので、どんなパスフレーズでも良いことはわかっています。パスフレーズには2つのプロパティがあります。
パスフレーズの「ランダムさ」は簡単に計算できます。dictionary_size ^ words_in_phrase
、^
は指数です。 8000語の辞書を含む3語のパスフレーズは、8000^3=
512億の可能なフレーズです。そのため、攻撃者は、フレーズを推測するときに、正しく理解する前に、平均で2,560億のフレーズを試す必要があります。同様の強度のパスワードと比較するには、azとAZで構成される7文字を使用したランダムなパスワードの「辞書サイズ」は52(26 + 26)で、「単語数」は7で、52^7=
は約1028億可能なパスワード。ランダムに生成された場合でも、7文字はかなり安全でないことがよく知られています。
ランダム性については、約128ビットのエントロピーまではより良いです。それだけでは、アルゴリズムの暗号化の弱点を緩和するのに役立ちますが、実際には、128ビットのエントロピーを記憶する必要はありません。 80ビットのエントロピーを取得したいとしましょう。これは、ほとんどすべての場合に適した妥協案です。
「可能な値の数」を「エントロピーのビット」に変換するには、次の式を使用する必要があります:log(n)/log(2)
、ここでn
は可能な値の数です。したがって、26の可能な値(1文字)がある場合、それはlog(26)/log(2)=
〜4.7ビットのエントロピーになります。文字を格納するには5ビットが必要なので、これは理にかなっています。数値26はバイナリで11010
です。
8000ワードの辞書では、目的の80ビットを超えるには約7ワードが必要です。log(8000^7)/log(2)=
〜90.8ビットのエントロピー。 6つの単語は次のようになります。log(8000^6)/log(2)=
〜77.8ビットのエントロピー。
大きな辞書は、7776語の比較的小さなDiceware辞書と比較して、非常に役立ちます。オックスフォード英語辞典には 600k語 があります。これだけ多くの単語があるので、ランダムに選択された4つの単語のフレーズで十分です。log(600 000^4)/log(2)=
〜76.8ビットのエントロピー。
しかし、60万語には、非常にあいまいで長い語が含まれます。あなたが合理的に覚えることができる単語を含む辞書は、10万ほどあるかもしれません。 10万語の辞書からランダムに選択する場合、Dicewareで必要な7つの単語の代わりに、フレーズに5つの単語が必要です。log(100 000^5)/log(2)=
〜83.0ビットのエントロピー。
フレーズに単語を1つ追加すると、辞書に1万語以上追加できるため、長さが複雑さを上回りますが、適切な解決策は2つをバランスさせます。ダイスウェアは私には少し小さいように見えますが、おそらく異なるサイズでテストし、これが良いバランスであることがわかりました。私は言語学者ではありません。
比較のために、パスワード(a-z、A-Z、および0-9で構成)が同じ強度に達するには14文字必要です:log(62^14)/log(2)=
〜83.4ビットのエントロピー。
パスワードは覚えやすく、推測しにくいものである必要があります。 AviDがかつて述べたように 、ユーザビリティを犠牲にしてセキュリティを確保すると、セキュリティが犠牲になります。パスフレーズは、最初はランダムに見えるかもしれませんが、ユーザーにとって何らかの意味があるため、覚えやすいです。使いやすさを見ると、パスフレーズの方が優れています。サイコロや単語のリストが必要ないので、パスフレーズを自分で考えて覚えやすくなります。
ただし、サイコロとランダムな単語のリストを使用すると、ほぼ完全にランダムなパスワードになります。ユーザーへのリンクはなく、ほとんどの場合(真にランダムでない限り)パスフレーズはユーザーに関連するもので構成されていました。
オンラインのパスワードチェッカーは、コンピューターがパスワードを推測するのがどれほど難しいかを確認することしかできません。この場合、文章(またはこの場合はパスフレーズ)は別の人間が簡単に推測できる可能性があります。あなたの例では、ダイスウェアが生成するパスワードの長さはパスフレーズよりも短いですが(ただし、現在のセキュリティ標準と比較すると非常に長いです)、自分で言ったように、必要に応じてより長いパスワードを作成できます。
私はダイスウェアが常に優れているとは言いませんが、それは間違いなくよりランダムであり、特定の場合に優れているパスフレーズと同じ長さを持つことができます。
Dicewareの方がパスワードよりも「優れている」と言及するその陳述には、理論的な正当性が添付されていないため、評価が困難になります。しかし、私はそのような正当化の1つを思い付くことができます:ダイスウェアはサイコロを使ってランダムにパスフレーズを生成するための手順を備えており、これは生成された出力が少なくともを持っていることを保証します最小量のエントロピー(推測が困難)。ログ以来2(6)は約2.6であり、ダイスウェアはサイコロ1回転あたり少なくとも2.6ビットのエントロピーを提供します。
一方、「ブルーライトが小さなバニーから湖に輝く」のような長い自然言語のパスフレーズがパスワードクラッカーにとってどれほど難しいかを推定する明確な方法はありません。人々は通常、それが長いと自動的に強くなるのでそれを想定しますが、それは真実ではありません。 このArs Technica非常に長いパスフレーズの解読に関する記事 は、その点で非常に有益です。
[ケビンヤング]はセキュリティ研究員のジョシュダスティンと力を合わせ、クラッキングデュオはすぐにオンラインで見つかったより長い単語の文字列を試すことに専念しました。彼らは小さく始めました。彼らはUSA Todayから1つの記事を取り、選択フレーズを分離して、パスワードクラッカーに入力しました。数週間以内に、彼らはウィキペディアの全内容と Project Gutenberg の最初の15,000作品を含むように情報源を拡大しました。ほぼ即座に、Stratforからのハッシュと、数か月間クラックされずに残っていたその他のリークが減少しました。そのようなパスワードの1つは「crotalus atrox」でした。それは西部のダイヤのガラガラヘビの学名であり、 このWikipediaの記事 の厚意によりWordリストに掲載されました。成功は、ヤングとダスティンにとってはひらめきのようなものでした。
ダスティン氏は、「人間にとってはコンピュータにとって意味のある力ずくではなく、人間が使うものに基づいてこれらの長いパスワードを作成するため、人間を使ってみましょう」と考えた。 「私は基本的にウィキペディアで記事を書いた人を使って言葉をまとめました」
ほとんどすぐに、かつて頑固なパスワードの洪水が明らかになりました。 「あなたの顔がまた見えるか?」 (36文字)、「最初は言葉だった」(29文字)、「創世記から啓示まで」(26)、「何も覚えていない」(24)、「thereisnofatebutwhatwemake」(26)、「givemelibertyorgivemedeath」(26 )、および「eastofthesunwestofthemoon」(25)。
手順が強力なパスフレーズを与える理由についての健全な理論なしに、長いパスフレーズを無邪気に選ぶだけの場合、それらはあなたが考えもしなかったいくつかの攻撃に対して脆弱かもしれません。一方、ダイスウェアを破壊することは、少なくとも25以上のダイスの目を推測するのと同じくらい難しいため、ダイスウェアはブルートフォース以外には何の影響も受けません。
以下の2つのパスワード例の強度を比較するためにzxcvbnを使用しましたが、パスフレーズはDicewareパスワードよりも安全であるように見えました。
ここで、私は詳細に述べたポイントを繰り返します 別の質問に対するこの回答 :
たとえば、 zxcvbn —これは全体的に優れたツールですが、実際に使用するために設計されたわけではありません—このパスフレーズの数世紀を推定しています。
password: Am i ever gonna see your face again?
guesses_log10: 31.35342
score: 4 / 4
function runtime (ms): 5
guess times:
100 / hour: centuries (throttled online attack)
10 / second: centuries (unthrottled online attack)
10k / second: centuries (offline attack, slow hash, many cores)
10B / second: centuries (offline attack, fast hash, many cores)
しかし、これは上記のArs Technica記事の引用から取ったものなので、知っています実生活でひび割れている。 zxcvbnの見積もりが間違っているという独立した証明があります。
zxcvbnの分析により、cleft cam synod lacy yr wok
にguesses_log10
値26.22025が与えられます。これは、技術的にはAm i ever gonna see your face again?
の推定値よりも弱いです。しかし、25のサイコロを投げることで生成した5ワードのダイスウェアパスフレーズの場合、少なくともログがあることを独立して証明します。2(6)×25 = 64.5ビットのエントロピー(対応するguesses_log10
値は19.4に近くなるため、zxcvbnは間違いなくその強さを過大評価しています)。
あなたのパスフレーズBlue Light shines from the small Bunny onto the Lake.
については、それがあなたの直感以外に強い理由についての独立した議論はありません。それは、あなたがそれをStack Exchangeに投稿したという事実によって損なわれます(したがって、次のように使用できます) Arsの記事で説明されているような攻撃の入力)。多分それは強いかもしれませんが、Dicewareのようなシステムが具現化する哲学は、あなたはパスワードの強さを直感に基づくべきではなく、最小限のエントロピー保証を与える実際のランダムな手順に基づいてはならないということです。
Diceware(tm)は、いくつかの目標を満たすことを目的としています。
セキュリティユーザビリティ規定
セキュリティは、ランダムなワード選択によって実現されます。他の人が指摘しているように、リストまたは単語からランダムに選択されたパスフレーズのエントロピーは簡単に計算できます:(パスフレーズの単語数)* log2(リストの単語数)。サイコロを使用すると、コンピューターの乱数ジェネレーターの品質に関する懸念がなくなります。
単語を短くすることで、使いやすさが向上します。ダイスウェアワードの最大長は5文字です。これにより、特にモバイルデバイスで、Dicewareパスフレーズを正確に入力しやすくなります。また、パスワードで保護されたシステムの多くは、許可されるパスフレーズの長さを制限しています。 NISTのパスワードガイドラインの新しいバージョンであるSpecial Publication 800-63Bでは、最大64文字を許可することを推奨していますが、多くのシステムではこれより少ない文字数を許可しています。完全な英語辞書など、はるかに大きなリストから生成された長いパスフレーズは、NISTの制限を超えることさえあります。
規範性。 StackExcangeを読んでいる場合、実際には安全なパスフレーズを作成するのに十分に技術的に優れている場合があります。多分。ただし、安全なパスワードを作成するために他の多くのユーザーに依存している場合、一般的なガイダンスを使用してすべてのユーザーが安全なパスワードを発明する可能性はわずかです。ダイスウェアは完全に規範的です。誰もが指示に従って強力なパスフレーズを作成できます。