web-dev-qa-db-ja.com

パスワードのエントロピーはチェックごとに異なります

詳細なセキュリティに関しては十分な知識がありませんが、私の理解では、異なるアルゴリズム間でパスワードエントロピーはある程度似ているはずです。

私はいくつかのパスワードエントロピーチェックを行い、アルゴリズムによって非常に多様な結果が得られました。

これは予想されたものであり、パスワードエントロピーの信頼できる/標準的なチェックはありますか?

14
Neekoy

パスワードエントロピーは、長さの累乗になり得る可能性の数によって計算されます。大文字と小文字の両方の8文字のパスワード=(26 * 2)8、(26文字のアルファベット*大文字と小文字の2)。

0〜9の数字も含めると、その力は26 * 2 + 10になり、特殊文字も含めると、この数字は非常に多くの可能性を持つ可能性があります。

したがって、例として、パスワードQweRTy123456(私が知っている恐ろしいパスワード)を使用します。このパスワードは12文字の長さなので、12のべき乗です。大文字、小文字、数字の両方を使用するため、6212。これにより、3.2262668e + 21の可能性の総数が得られます。

ここで、同じパスワードを使用しますが、すべて小文字です。 qwerty123456、私たちが持っている値は36です12、可能性のある4.7383813e + 18を提供しますが、それでも膨大な数ですが、大文字を使用するよりもはるかに小さいです。

パスワードの強度は、長さと複雑さという2つの主要な要素に依存しています。例として、違いを示すために、PIN 4 vs 8文字の数値を示します。したがって、4桁のピン番号の場合、104 可能な組み合わせは10,000あり、8桁のピンを使用する場合、 108 100,000,000の可能性があります。したがって、パスワードの長さを2倍にすることで、候補が10,000倍に増えました。

パスワードの2番目の要素は、複雑さに依存します。大文字、小文字、特殊文字などです。上記の例で、より多くの文字セットを使用することで、これがどのように急速に増加するかを示しました。

12文字のパスワードは、誰かの出生地やペットの名前などになる可能性があるため、最後の注記として、パスワードはその潜在能力ほど強力ではありません。パスワードの内容も非常に重要です。 4つのランダムな単語モデルは非常に人気があり安全です 必須のxkcd

ConorManconeの回答 は、パスワードとエントロピーの内容の優れた説明と例を示しているため、このトピックの詳細については、こちらもお読みください。

つまり、要約すると、文字セットからパスワードの長さの累乗までの可能性の数を取り、2で除算して、ブルートフォーシング技術に基づいてパスワードの強度を取得する信頼できる方法になります。

うまくいけば、これであなたの質問に答えることができます。コメントを残すことができれば、あなたの質問を反映するようにこれを更新します。

12
Connor J

他のコナーの答えに追加しようとしています:

覚えておくべき重要なことは、もちろんエントロピーは本質的にパスワードの「ランダムさの量」であることです。したがって、異なるエントロピーチェッカーが同意しない理由の一部は、エントロピーがパスワードの生成方法の尺度であり、パスワードに含まれるものではないためです。極端な例は、通常、私が何を意味するかを示す最良の方法です。私のパスワードがfrphevgl.fgnpxrkpunatr.pbzPbabeZnapbarだったとします。

エントロピーチェッカーは、単語が含まれておらず長いため、エントロピーの量が多いと評価されます。数値は含まれていませんが、単純な計算(コナーが彼の回答で概説したことや、ほとんどのエントロピー計算機が行うことなど)を実行すると、216ビットのエントロピーのエントロピーを推測する可能性があります-far 最近では一般的なパスワードよりも多くの必要があります(大文字と小文字を組み合わせた38文字では52 ^ 38≈2 ^ 216になります)。

しかし、それを見て、誰かが私のパスワードが本当にランダムではないのではないかと疑い、それがsite name + my nameのrot13変換にすぎないことに気付くかもしれません。したがって、実際には私のパスワードにエントロピーはまったくありません。パスワードの生成方法を知っている人はだれでも、ログインするすべてのサイトで私のパスワードが何であるかを知っています。

これは極端な例ですが、私はそれが全体の要点を得ることを望みます。エントロピーは、パスワードがどのように見えるかではなく、生成方法によって決まります。いくつかのルールを使用して各サイトのパスワードを生成する場合、パスワードにエントロピーがまったくない場合があります。つまり、ルールを知っている人はだれでもあなたのパスワードを知っています。ランダム性を多く使用している場合は、エントロピーパスワードが高く、パスワードの作成方法を誰かが知っていても安全です。

エントロピー計算機は、パスワードがどのように生成されたかを想定しているため、パスワードが互いに一致しなくなったり、非常に間違ったりする可能性があります。また、 [〜#〜] xkcd [〜#〜] は、このようなことになると常に適用されます。

44
Conor Mancone

パスワードエントロピーは、パスワードの生成に使用されるアルゴリズムを把握(または推測)し、選択したパスワードの生成に使用されるさまざまな分岐点の数を収集することによって計算されます。

例をいくつか挙げましょう:

パスワード:password

これは26 ^ 8(または2 ^ 38)ではありません。アルゴリズムが「8つのランダムな小文字を選択する」ためではなかったためです。アルゴリズムは次のとおりです。単一の、覚えやすいWordを選択してください。そのような言葉はいくつありますか? 「そのような単語は200個ある」と判断した場合は、約8ビットのエントロピー(38ではありません)を調べています。

パスワード:password6

前のエントリと同様に、これは36 ^ 9(または2 ^ 47)ではありません。アルゴリズムが単一の非常に覚えやすいWordを選択し、最後に1桁の数字で装飾するためです。ここのエントロピーは約11ビットです(47ではありません)。

パスワード:carpet#terraform2

これで、何が起こっているのかを推測できます。 2つの比較的珍しい単語で、それらの間に句読点文字があり、末尾に数字がある。これらの単語が10000語の辞書(2 ^ 13)から選択されたと推定すると、33ビットのエントロフィ(最初の単語の13 +句読点の4 + 2番目の単語の13 + 3)のようなものを見ています。最後の桁)

さて、今、あなたの直接的な質問に答えるために:なぜ様々なエントロピーチェッカーが異なる値を与えるのですか?

さて、最後のパスワードを使用してみましょう:carpet#terraform2。

エントロピー評価者の一人は、「ねえ、どうやってこれを作ったのかわかりません。小文字、句読点、数字の間のランダムな文字でなければなりません。52^ 17、つまり97ビットのエントロピー(2 ^ 97。 )」

別の少し賢いエントロピー評価者は、「ねえ、私は最初の単語を認識しますが、2番目の文字列はランダムです。したがって、アルゴリズムは1つの珍しい単語、句読点、9つのランダムな文字、そして数字です。したがって、10000 x 16 x 26 ^ 9 x 10、または63ビットのエントロピー

3番目と4番目のエントロピーエバリュエーターは、それを生成するために使用されるアルゴリズムを正しく理解する場合があります。しかし、3番目の評価者は、両方の単語は5000語の辞書からのものであると考えていますが、4番目の評価者は、3万語の辞書に割り込んでそれらを見つける必要があると考えています。つまり、1つは32ビットのエントロピーを考え出し、もう1つは37ビットがあると考えています。

うまくいけば、それは意味を成し始めています。エントロピーエバリュエーターごとに異なる数値が出てくるのは、パスワードがどのように生成されたかについて異なる評価が出されるためです。

11
Kevin

一連の数字または文字が偶然であるかどうかを判断する方法はありません。ランダムな7桁の数値を生成するように要求されたマシンは、1000万回の要求ごとに約8675309を生成します。トミー・チュートンのファンは毎回その数を提供するかもしれません。セキュリティアプリケーションがたまたま7桁の番号を必要とする場合(おそらくそれはテンキーを介してアクセスできる必要がある)、そのアプリケーションがたまたまTommy Tutoneファンによって書かれた場合を除き、8675309は適切なエントロピーを持っていると判断する可能性があります。その数は、1111111または1234567と同じくらい悪いと見なされる可能性があります。

基本的に、エントロピーチェッカーが実行できるのは、パスコードがエントロピーが低いと見なされるパターンに一致するかどうかを確認し、一致する最低のエントロピーパターンを確認することです[すべてのパスコードは、特定のパターンに一致します。 23文字は、「他のいずれにも一致しない場合、「20〜25文字のその他のパスコード」のようなパターンに一致します。さまざまな人々が考えられるすべての低エントロピーパスコードパターンのリストを作成するように求められた場合、彼らはほとんど確実にさまざまなことを考えます。ただし、本当に重要なのは、特定のパスコードが攻撃者が試行するパターンに一致するかどうかです。攻撃者が特に試みる可能性が高いパスコードのセットがいくつかありますが(たとえば、1111111および1234567)、パスコードの選択がそれを超えると、攻撃者によって大幅に異なる可能性があります。

7
supercat

おおまかに言って、パスワードのセキュリティは、攻撃者がパスワードを推測するのがいかに難しいかに依存します。これは、推測のためのさまざまなアルゴリズムを使用して、これらのWebサイトが測定しようとするものです。

非常に愚かなチェッカーは、パスワード「00000000000000000000」が長く、Webサイトの推測アルゴリズムが「すべての文字のすべての組み合わせを試してみる」ため、高いエントロピーを持っていると考えるかもしれません。実際、このパスワードを正しく推測するには長い時間がかかります。より賢いチェッカーは最初に数字のパスワードを試すので、このパスワードにセキュリティ上のペナルティが導入されます(より速く検出されます)。より賢い推測では、最初にパターン(文字の繰り返しや辞書の単語など)を試し、このパスワードがごみであると正しく結論付けます。

これは役に立たないように聞こえるかもしれませんが、推測がうまくいかなくても、「パスワードは最大でこれだけの推測で解読される可能性があります」という有用な上限が得られることに注意してください。これが、これらのチェッカーが提供する値です。いくつかの推測を試みて最小の数をとることにより、より控えめな見積もりになります。

6
BoppreH

他の答えはエントロピーの情報理論の定義を使用しません。数学的定義は、確率分布のみに基づく関数として定義されます。確率密度関数pに対して、可能な各結果xp(x) * -log(p(x))の合計として定義されます。

エントロピーの単位は対数です。通常、対数の底として2つが使用されるため、確率システムにはnビットのエントロピーがあると言います。 (他の底を使用することもできます。底eの場合は、代わりにエントロピー「nats」を測定しますnat ural対数の場合は、基数2と「ビット」より一般的です。)

この用語は情報理論に由来しています。エントロピーはもちろん情報に関連しています。 (「ビット」と言うもう1つの理由。)ただし、エントロピーを「予測不可能性」の尺度として説明することもできます。

公正なコインを(理想的な世界で)1回反転させると、1ビットのエントロピーが生成されます。コインを2回弾くと2ビットになります。等々。均一(離散)分布は、合計されるすべての項が同一であるため、エントロピーを計算する最も簡単な分布です。離散一様変数Xのエントロピーの方程式を単純化できます。n結果はそれぞれ_1/n_確率で

H(X) = n * 1/n * -log(1/n) = log(n)

記録するコインフリップの数を知っているだけで、1つまたは複数のコインフリップであるエントロピーをシステムからどのように得ることができるかを理解できるはずです。

非一様(離散)分布のエントロピーも計算が簡単です。より多くの手順が必要です。コインフリップの例を使用して、エントロピーを予測不可能性に再度関連付けます。代わりにバイアスコインを使用するとどうなりますか?さて、エントロピーは

H = p(heads) * -log(p(heads)) + p(tails) * -log(p(tails))

プロットすると this が得られます

Coin flip entropy plot

見る?コインフリップ(分布)の公平性(均一性)が低いほど、エントロピーが少なくなります。エントロピーは、最も予測できないタイプのコインフリップ、つまり公正なコインフリップに対して最大化されます。バイアスされたコインフリップは、表と裏の両方がまだ可能である限り、エントロピーを含みます。エントロピー(予測不可能性)は、コインがよりバイアスされると減少します。 100%確実なものは、エントロピーがゼロです。

エントロピーを持っているのはコインを弾くというアイデアではなく、コインを弾く結果ではないことを理解することが重要です。分布xから1つのサンプルXからxの確率p(x)を推測することはできません。あなたが知っているのはそれが非ゼロであることです。そして、xだけでは、他にどのくらいの結果が考えられるか、またはそれらの個々の確率が何であるかがわかりません。したがって、1つのサンプルを見ただけではエントロピーを計算することはできません。

文字列_"HTHTHT"_が表示された場合、それが6つの公正なコインフリップ(6ビットのエントロピー)のシーケンス、バイアスされたコインフリップシーケンス(<6ビット)、ランダムに生成された文字列からのものかどうかはわかりません。すべての6文字の大文字(6 * log_2(26)または約28ビット)の均一な分布、または単に_'H'_と_'T'_(0ビット)を交互に繰り返すシーケンスからの場合.

同じ理由で、1つのパスワードだけのエントロピーを計算することはできません。入力したパスワードのエントロピーを通知するツールは、正しくないか、エントロピーの意味を誤って伝えています。 (そしてパスワードを収集しているかもしれません。)エントロピーを持つことができるのは、確率分布を持つシステムだけです。そのシステムの真のエントロピーを正確な確率の知識で計算することはできず、それを回避する方法はありません。

ただし、エントロピーを推定することはできますが、それでも分布に関するある程度の知識(または仮定)が必要です。 k文字の長いパスワードが、いくつかのアルファベット[〜#〜] a [〜#〜]を使用したいくつかの均一な配布の1つから生成されたと想定すると、エントロピーをlog_2 (1/|A|)と推定できます。 _|A|_はアルファベットのサイズです。多くのパスワード強度推定ツールは、この(単純な)方法を使用しています。小文字のみを使用していることがわかった場合は、_|A| = 26_と見なされます。大文字と小文字が混在している場合は、_|A| = 52_と見なされます。このため、想定されるパスワード強度計算機は、_"Password1"_が_"password"_より数千倍安全であることを通知する場合があります。これは、必ずしも正当化されないパスワードの統計的分布についての仮定を行います。

一部のパスワード強度チェッカーはこの動作を示しませんが、正確な推定値であるとは限りません。より多くのパターンを探すようにプログラムされています。観測された、または想像された人間のパスワードの動作に基づいて、より多くの情報に基づいてパスワードの強度を推測できますが、推定値ではないエントロピー値を計算することはできません。

そして、すでに述べたように、パスワード自体にエントロピーが関連付けられていると言うのは誤りです。ユーザーがパスワードに__エントロピーがあると言ったとき、彼らが話していることがわかっている場合、彼らは実際に「このパスワードは__エントロピーを持つプロセスを使用して生成された」の省略形を使用しています。

一部の人々は、パスワードを人間が生成するのではなくコンピュータが生成することを推奨しています。これは、人間が高いエントロピーパスワードを思いつくのが苦手だからです。人間の偏見は不均一なパスワード配布を生み出します。ユーザーが選択する長いパスワードでさえ、予想よりも予測可能です。コンピューターで生成されたパスワードの場合、プログラマーがパスワードスペースを作成したため、パスワードスペースの正確なエントロピーを知ることができます。安全なRNGを使用していると仮定すると、推定なしでマシン生成パスワードエントロピーを知ることができます。 Diceware は、人々が同じ特性を持っていると主張する別のパスワード生成方法です。コンピュータを必要とせず、かなりの6面サイコロを持っていると想定します。

nビットのエントロピーを使用してパスワードが生成される場合、パスワードクラッカーが2 ^(n-1)になるために必要な推測の数を推定できます。ただし、これは控えめな見積もりです。パスワードの強度とエントロピーは同義ではありません。エントロピーに基づく推定では、クラッカーが個人のパスワード生成プロセスを知っていると想定しています。エントロピーベースのパスワード強度は Kerckhoffsの原則 に従います。 security-through-obscurity is not securityマインドセットを使用して、ある意味でパスワードの強度を測定します(エントロピーは予測不可能性を測定するため)。パスワードを生成する際に意識的にエントロピーを念頭に置いている場合は、エントロピーの高いパスワード生成方法を選択して、パスワードの安全性の下限を取得できます。

パスワードが覚えやすい/使用可能である限り、真のエントロピー計算をパスワードの強度の控えめな見積もりとして使用しても問題はありません。 (パスワード生成強度推定アルゴリズムが人間が生成したパスワードで行うように)パスワード強度を過大評価するよりも、過小評価する(およびコンピューター生成またはサイコロ生成パスワードを使用する)方が良い

あなたの質問に対する答えはいいえ。パスワードエントロピーを確認する信頼できる方法などはありません。実際には数学的に不可能です。

1
Future Security

理解する必要がある2つの重要な事項があり、それぞれについて詳しく説明します

  1. パスワードだけからパスワードのエントロピーを判断しようとするものはすべて、ストローを掴んでいます。これは、強度がパスワード自体ではなくパスワードを生成するシステムの機能であるためです。

  2. エントロピーは、パスワードがパスワードを均一に生成するプロセスの結果でない限り、パスワード強度の一貫した概念ではありません(== --- ==)。可能性のあるパスワードの分布が均一でない場合、エントロピーはお粗末な指標です。

重要なのは作成スキームです

パスワードの強度(エントロピーで測定されるかどうかに関係なく)は、パスワードの作成に使用されたスキームの関数です。 2011年に私が書いたものから自分自身を引用するには

システムの単一の出力ではなく、システムを見る必要があるという点を強調しすぎることはできません。これをとんでもない例で説明しましょう。パスワードF9GndpVkfB44VdvwfUgTxGH7A8tおよびrE67AjbDCUotaju9H49sMFgYszAは、それぞれ非常に強力なパスワードのように見えます。それらの長さと大文字と小文字および数字の使用に基づいて、パスワード強度テストシステムは、これらが非常に強力なパスワードであると言います。しかし、これらが生成されたシステムが次のとおりだったとします:コインを投げます。頭が上がった場合はF9GndpVkfB44VdvwfUgTxGH7A8tを使用し、頭が上がった場合はrE67AjbDCUotaju9H49sMFgYszAを使用します。

そのシステムは2つの結果のみを生成します。また、パスワードは強力に見えますが、そのシステムで生成されるパスワードは非常に脆弱です。

パスワード強度メーターは、それらを本当に強力であると報告します。 1Passwordの強度メーターがどのように機能するかを説明するために自分自身を引用する(開示:私は1Passwordで働いている)私は 私の2013年の回答 を紹介しました:

特定のパスワードの強度を決定する通常の方法は、ニワトリを犠牲にして内臓を読むことです。しかし、1Passwordの方がより良い。それを犠牲にする前に、鶏の星占いを計算します。私たちのスタッフの一部は菜食主義者であることを考えると、私たちは常に別のアプローチを探しています。

問題の悲しい事実は、正確なパスワード強度メーターは不可能であるということです(提供されたパスワードを解読するために何年または何十年も費やすことはありません)。その理由は、パスワードの強度は、それが生成されたシステムに大きく依存するためです。これは、単一のパスワードを検査することで自信を持って判断できるものではありません。

したがって、さまざまな強度メーターがさまざまな結果を生成することは、まったく驚くことではありません。そして、それらのすべては、大きな粒の塩で服用されるべきです。他の人が指摘したように、強度メーターは、パスワード自体の単一のインスタンスからパスワードを作成するために使用したシステムの種類を推測する必要があります。そして、その推測は懸命に働きます。

たとえば、テストするパスワードに大文字と小文字が混在しているとします。現在、ほとんどの人間が作成したパスワードは、チャンクの先頭に時々大文字が使用されます。つまり、人間はPassword1234を作成するよりもpaSsword1234のようなパスワードを作成する可能性がはるかに高くなります。あなたの筋力システムはそのような違いを説明していますか?または、大文字と小文字が混在していることに気づき、大文字と小文字がパスワード全体で等しくなる可能性が高いと(誤って)仮定して計算を行いますか?

現在、強度メーターは過去数年間で改善されましたが、パスワード自体からパスワードを作成するために使用したシステムを把握しようとしているため、強度メーターの最高のものでさえ根本的に根本的に制限されています。

エントロピーは間違った概念です

エントロピーは、スキームが作成できるすべての可能なパスワードが等しく可能性がある場合にのみ意味があります。 2013年のPasswordsConの講演で、私はいくつかの極端な例を挙げてこれを説明しました。 (表示 the PDFスライドのスライド オーバーレイを取得するための単一ページモード)。

10回のうち9回は固定パスワードを選択するが、残りの1回は2回から1回選択するパスワード作成スキームを想像してください。512 可能性。その方式のシャノンエントロピーは約52ビットです(これはパスワードに対して非常に立派です)が、明らかにそれはひどいパスワード作成方式です。代わりに、不均一な分布がある場合は、最も可能性の高い結果の可能性(最小エントロピー)をスキームの強度の尺度として使用する必要があると主張しました。

これはポイントを作成するための不自然な例ですが、問題の事実は、人間が選択したパスワードの配布は頭の悪い配布であることです。多くの人が最も一般的なものから選んだ場合、いくつの異なるパスワードが生成される可能性があるかは問題ではありません。

したがって、「エントロピー」という単語を使用する場合は、ログである「最小エントロピー」を使用することを強くお勧めします2 pxメートル)、ここでxメートルが最も可能性の高いパスワードであり、pが発生する確率です。確率分布が均一である場合、最小エントロピーとシャノンエントロピーは同じになることがわかります。しかし、分布が均一でない場合、それらは大きく異なる可能性があります。

1