一部のランダムパスワードジェネレーターは、任意の長さnの発音可能な単語の生成をサポートしています。単語が26の小文字を使用して派生していると仮定すると、長さnの可能な単語の数は26 ^ nです。これらの単語のすべてが発音できるわけではありません。私の質問は、任意の長さnでいくつの発音可能な単語が可能かということです。
長さnの発音可能な単語の数は明らかに26 ^ n未満であるため、攻撃者の検索スペースは26 ^ n未満です。正確な答えがない場合、カウントに上限はありますか?パスワードとして発音可能なWordを設定することは安全ですか、それともこれはパスワードジェネレータの優れた機能ですか?最小の長さはどれくらいですか?
パスフレーズの文脈では、私はそれを複数の一般的な英語の単語の連結によって形成される発音可能な単語の特別なケースとして考えます。 n len個の単語が26個の小文字を使用して派生すると仮定します。
N len語の数(26 ^ n)> n len個の発音可能な語の数> n len個のパスフレーズの数> n len個の英語の語の数。
私は正しいですか?
注:私はパスワードとして長いパスフレーズ「horsecorrectbatterstaple」を設定することの引数を読みました、そしてそれを再び開始したくありません:)
正確に答えるのは難しい質問です。ここではTheodore T'so 's pwgen (v2.07)実装のみを参照します(_pwgen -A0
_)
これらの発音可能なパスワードでは、単一の文字ではなく、「 phonemes 」を「記号」として使用します(英語のバイアス)pwgen
で、音素は1文字または2文字にすることができます。 40が定義されており(_pw_phonemes.c
_に)、25は単一の文字(az、 "q"を除く)、15はペア(diphthongs)、平均文字数音素は1.375です(子音/母音の交替により使用中の1.425に近い)。
音素はランダムに結合されていません。これはもちろんトリックです。pwgen
には、(大まかに)次のように、最終結果を発音可能にするルールがあります。
(あなたがそれに基づいて順列の正確な数を公式化できるなら、よくやった!)
[a-z]パスワードの「記号」は1文字です。発音可能なパスワードの場合、1文字または2文字の音素です。
長さがNの[az]パスワードの場合、シンボルごとに4.7ビット(lg2(26)
)があり、その推定エントロピーはシンボルごとに_26^N
_または2^(4.7*N)
です(4.7ビットあたり-キャラクター)。
音素の場合、シンボルごとに5.3ビット(lg2(40)
)があり、長さnのパスワードの推定エントロピーは_40^n
_または2^(5.3*n)
(3.9ビット/文字)。 m記号の音素パスワードは、(上記のルールによる逸脱を無視して)平均1.375m文字になります。
2つのタイプのパスワード(平均して同じ長さn = 1.375mを持つ)の最大エントロピーの推定は、26^(1.375m)
および_40^m
_によって概算できます 前者はより速く成長します *、そしてあなたの主張を証明します(長さnの発音可能な単語の数は明らかに26 ^ n未満です)
最低限、この方法で作成された発音可能なパスワードは、同等のエントロピーを得るために、ストレート[a-z]ランダムパスワードよりも約20%長くする必要があります。推定される利点は、発音可能はおそらく覚えやすいことを意味するので、人間にとっては、長いパスワードは実際には覚えやすくなります。
発音能力による制約により、これはさらに制限されます。
数値の差を見積もるのはよりトリッキーです...うまくいけば、これは「1桁の」近似です。 pwgen
の40音素は次のように分類されます。
_20 CONSONANT
5 CONSONANT DIPTHONG
2 CONSONANT DIPTHONG NOT_FIRST
5 VOWEL
8 VOWEL DIPTHONG
_
(ディフトンは、ソースではスペルミスです)。
上記の規則に基づいて(そして少しの経験的証拠を使用して)、3〜4個の音素(約5文字)パスワードの計算を(大幅に)概算します。パスワードの〜80%は[〜#〜] c [〜#〜]onsonant /[〜#〜] v [〜#〜]owel音素、つまり_C V C [V ...]
_または_V C V [C ...]
_、残りの〜20%には母音ペアがあります。例: _C V V C
_(子音音素のペアは禁止されています。ただし、特に音素「ng」が原因で、出力文字に出現する場合があります)。 (ここでの問題は、音素から文字数を計算すると問題が扱いにくくなることです。これは単なる順列の問題ではなく、正確な答えが疑われる順列の順列を計算する必要があります)。
最も頻繁な配置を計算して妥当な見積もりを取得するには:
_c v c v = 25*13*27*13 = 114075
v c v = 13*27*13 = 4563
c v c = 25*13*27 = 8775
v c v c = 13*27*13*27 = 123201
c v v c = 25*13*5*27 = 43875
v c v v = 13*27*13*5 = 22815
v v c v = 13*5*27*13 = 22815
-------
340119
_
ここでのマジックナンバーは次のとおりです。NOT_FIRSTのない25の子音(二母音を含む)、27の子音(二母音を含む)、13の母音(二母音を含む)、母音をたどることができる5つの非ディフトン母音
経験的データは、真の数が約15%高いことを示していますが、より多くの順列が含まれている場合、それらは5文字の長さを超え始め、膨らんだ答えを与えます。
ランダムな5文字の[a-z]パスワードには約11.9Mの順列があり、これはその3%未満です。
次に、大まかな概算として、エッジケースを無視し、記号のペアを一度に考慮することにより、長さn文字のpwgen
読みやすいパスワードについて、
_P = 767 ^ (n/(2*1.4))
_
ここで、767は_( 27*13 + 13*27 + 13*5 )
_、シンボルペアの順列_c v
_、_v c
_、_v v
_、ペアのシンボルの場合は2を超え、1.4は文字長nを音素。 (推定数1.4を累乗すると、この式は小さな変更に対して多少敏感になります。)
767(有効なシンボルのペア)は約2.8文字を消費し、9.6ビット(log2(767)
)の有効エントロピー、1文字あたり3.4ビットを消費します。 [a-z]の4.7ビットと比較すると、これらのパスワードを同等の強度、つまり3分の1にするには、全体で約1.35の係数が必要です。
比較のために、pwgen
出力でランダムな大文字と小文字の混在を許可すると、1文字あたり最大4ビットに戻るため、長さnのpwgen
パスワード(_-A0
_なし)は同じ長さ(〜4.7)の[az]パスワードよりも小さい。
(実証的な証明のために、pwgen
は長さが> = 5の場合にのみ発音可能な音素を使用することに注意してください。)
パスワードとして使用するには、least50ビットのエントロピー(たとえば、[a-zA-Z0-9] + ASCII句読点、文字あたり6.5ビット。)これは、_pwgen -A0
_パスワードの長さが15〜16文字(文字あたり〜3.4ビット)で実現できます。これは、の倍数です同等の長さのパスワードを持つ長さ。
N len語の数(26 ^ n)> n len個の発音可能な語の数> n len個のパスフレーズの数> n len個の英語の語の数。
すべて当てはまります(「n len英語の単語」とは、単一の単語をパスワードとして使用することを意味すると思います)。パスフレーズは、効果を発揮するにはかなり長くする必要があります。おそらく、1文字あたり2ビットです(例:40kワード、平均長8、非関連ワード-関連ワードは低い)。 RFC2289 で使用されているような短い単語の辞書スタイルスキームを修正し、文字あたり最大3ビットを達成しました。
* Wolfram graph 26^(1.375n) versus 40^n
またはキャッシュされているlog plot 26^(1.375n) versus 40^n for n [0,16]
を試してください here
発音可能な単語は、多かれ少なかれ 音節 のシーケンスです。音節を構成するものは、言語variantを含む言語に依存します(英語、スコットランド、アメリカ、インド...英語のバージョンは厳密に同一ではありません)。したがって、いくつかの近似を行います。
常に子音とそれに続く母音の2文字の音節が必要だとしましょう。また、あいまいな音節は避けたいです。発音された音節から文字への単射マッピングが必要です。したがって、「c」や「q」は使用せず、「k」と「s」のみに依存します。最終的に:
hitではなくhighのように、これは "hi"の発音を伴うわけではありません。getのような「ge」、gelではない;等々。
その後、18×6 = 108の明確な2文字の音節になります。長さnの可能なパスワードの数は108ですn/ 2、つまり約10.39n。 10文字のパスワードが必要な場合:
これを 推定 から約470000(のみ)になっている可能な英語の単語の総数と比較します。passphrasesの場合、単一の単語はaであるため、指定された長さまたは指定された長さまでのパスフレーズの数は、必ず同じ長さの単語の数よりも多くなります。パスフレーズの一種。ただし、推論は正しいです。文字の長さが一定の場合、独立したランダムな文字がエントロピーの最大の余地を提供し、ランダムな音節、ランダムな単語のシーケンス(「パスフレーズ」)、単一の単語が続きます。
しかし、話はそこで終わりません。passwordsの概念全体は、希少なリソースを中心に展開します。つまり:
「文字数」で考えることは、主に2番目のリソースに関係します。文字が多いほど、タイピングの手間が増えることを意味します。文字の種類は重要ではありません。ユーザーがスマートフォンを使用する必要がある場合、文字と数字を組み合わせたパスワードや大文字と小文字を区別するパスワードよりも、一連の小文字を優先します。
「発音可能な」パスワードの使用はトレードオフです。私たちは エコーメモリ により適したパスワードを使用できるように、より多くの文字の使用を受け入れます。長さnの可能な「音節パスワード」の数は10.39であることに注意してください。n、長さnの数字のみのパスワードの数に非常に近い(10n);しかし、多くの人は、ランダムな2桁の整数よりもランダムな音節を覚える方がはるかに簡単だと感じます。
エコー記憶が最良の妥協であるかどうかは、対象によって異なります。一部の人々は音よりも絵を上手に扱います(それは iconic memory と呼ばれます)。数字に最も慣れていて、n/よりもnランダムな数字を好む人もいます。 2つのランダムな音節。 有名なコミック の主なポイントの1つは、ほとんどの人がstoriesを本当に覚えていることであり、意味のある単語のシーケンスは、ストーリーの構成要素です。以下の点を追加する場合があります。
特定のユーザーにとって最適なものは、必ずしも別のユーザーにとって最適なトレードオフではありません。したがって、severalパスワード生成メソッドが必要になるため、各ユーザーは自分の脳と指で最適に機能するメソッドを使用できます。
ユーザー自身は、「複雑に見える」パスワードの方が安全であると考える傾向があるため、このような決定を下すのは苦手です。実際、文字、数字、大文字と小文字の混在、句読点などの「パスワードの複雑さのルール」は、memoryおよびの不足しているリソースを吸い上げます/ typing非常に高速で、それほど多くのエントロピーを提供しません。これらのルールはしばしば悪い取引ですが、多くのセキュリティ専門家はそれらを愛しており、ルールがvisible securityを作るため、受け取ったドグマの必要性についてオウムします(多くを与えます実際の安心感よりも安心感)。
このような分析はすべて、パスワードコンポーネントの独立したランダムで均一な選択に依存しています。文字、音節、パスフレーズの単語...コンピュータ(またはサイコロまたはその他の物理的なデバイス)で生成する必要があります。notは人間の心で生成されます。人間は良いランダム性を行うことができません。パスワードを生成する必要があります。thenストーリーは結果に基づいて構築されたものであり、その逆ではありません。ユーザーacceptのランダム生成が必要です。これは最も難しい点です。
最後に重要なことですが、発音できるパスワードには欠点があります。パスワードはpronouncedのようになります。ユーザーは、パスワードcanが発声されても、実際には話されないであることを十分に認識しておく必要があります。その後、悪意のある耳に落ちる可能性があります。発音可能なパスワードの全体的な考え方は、ユーザーが頭の中でと話すことです。パスワードが発音しやすい場合は、口頭で共有(たとえば、一部の同僚と)するのも簡単です。これは、一般的に、かなり悪いことです。 。
いつものように、ユーザー教育が最も重要です。パスワードの生成方法に関係なく、ユーザーがパスワードの使用方法や、パスワードを使用して何をしてはいけないかについて知らされていないと、セキュリティは確保されません。
読みやすいパスワードのみに制限すると、エントロピーが減少し、強度が低下します。したがって、理論的には、パスワードはより脆弱になります
しかし、パスワードの強度は複雑な獣です。特に、発音可能なパスワードを選択すると、通常よりも長いパスワードを覚えることができる場合は、エントロピーが上昇し、パスワードが強くなります。
私のパスワードは次のとおりです。