認証にパスワードを使用するシステムには、アクセスするために入力されたパスワードをチェックする何らかの方法が必要です。有効なパスワードが単にシステムファイルまたはデータベースに保存されている場合、システムへの十分なアクセス権を取得した攻撃者はすべてのユーザーパスワードを取得し、攻撃されたシステムおよび場合によってはユーザーが同じまたは同様のパスワード。このリスクを軽減する1つの方法は、パスワード自体ではなく、各パスワードの暗号化ハッシュのみを保存することです。 Secure Hash Algorithm(SHA)シリーズなどの標準的な暗号化ハッシュは、元に戻すのが非常に難しいため、ハッシュ値を取得した攻撃者はパスワードを直接回復できません。ただし、ハッシュ値を知っていると、攻撃者は推測をオフラインですばやくテストできます。パスワードクラッキングプログラムは広く利用可能であり、盗まれた暗号化ハッシュに対して多数のトライアルパスワードをテストします。
コンピューティングテクノロジーの改善により、推測されたパスワードをテストできる速度が向上し続けています。たとえば、2010年に、Georgia Tech Research Instituteは、GPGPUを使用してパスワードをはるかに高速に解読する方法を開発しました。 Elcomsoftは、2007年8月にパスワード回復を迅速化するための一般的なグラフィックカードの使用法を発明し、すぐに米国で対応する特許を申請しました。 2011年までに、当時のハイエンドグラフィックプロセッサを使用して、標準のデスクトップコンピュータで毎秒最大112,000のパスワードをテストできると主張する商用製品が利用可能になりました。このようなデバイスは、1日で6文字のシングルケースパスワードを解読します。同等のGPUを備えた利用可能なコンピューターの数に比例してさらに高速化するために、作業を多くのコンピューターに分散できることに注意してください。計算に比較的長い時間がかかる特別なキーストレッチハッシュが利用可能であり、推測が行われる可能性のある速度が低下します。キーストレッチを使用することがベストプラクティスと見なされていますが、多くの一般的なシステムでは使用されていません。
すばやく推測できるもう1つの状況は、パスワードを使用して暗号化キーを形成する場合です。このような場合、攻撃者は推測されたパスワードが暗号化されたデータを正常にデコードするかどうかをすばやく確認できます。たとえば、ある商用製品は、1秒あたり103,000のWPAPSKパスワードをテストすると主張しています。
パスワードシステムがパスワードのハッシュのみを保存する場合、攻撃者は一般的なパスワードバリアントおよびすべてのハッシュ値を事前に計算できます。特定の長さより短いパスワード。ハッシュが取得されると、パスワードを非常に迅速に回復できます。事前に計算されたパスワードハッシュの非常に長いリストは、レインボーテーブルを使用して効率的に保存できます。この攻撃方法は、暗号化ソルトと呼ばれるランダムな値をハッシュと一緒に保存することで阻止できます。ハッシュを計算するときにソルトがパスワードと組み合わされるため、レインボーテーブルを事前に計算する攻撃者は、パスワードごとに、可能なすべてのソルト値を含むハッシュを保存する必要があります。ソルトの範囲が十分に大きい場合、たとえば32ビットの数値の場合、これは実行不可能になります。残念ながら、一般的に使用されている多くの認証システムはソルトを使用せず、レインボーテーブルはそのようないくつかのシステムでインターネット上で利用できます。
パスワード強度の尺度としてのエントロピー編集
コンピュータ業界は、ビット単位で測定され、情報理論の概念である情報エントロピーの観点からパスワードの強度を指定します。パスワードを確実に見つけるために必要な推測の数の代わりに、その数の2を底とする対数が与えられます。これは、パスワードの「エントロピービット」の数と一般に呼ばれますが、これは正確に同じ量ではありません。情報エントロピーとして。この方法で計算された42ビットのエントロピーを持つパスワードは、たとえば公正なコイントスによってランダムに選択された42ビットの文字列と同じくらい強力になります。言い換えると、42ビットのエントロピーを持つパスワードでは、ブルートフォース検索中にすべての可能性を使い果たすために242(4,398,046,511,104)回の試行が必要になります。したがって、パスワードのエントロピーを1ビット増やすと、必要な推測の数が2倍になり、攻撃者のタスクが2倍難しくなります。平均して、攻撃者は正しいパスワードを見つける前に、可能なパスワードの半分を試す必要があります。
ランダムパスワード編集
ランダムパスワードは、ランダムな選択を使用していくつかの記号のセットから取得された、指定された長さの記号の文字列で構成されます各記号が等しく選択される可能性が高いプロセス。記号は、文字セット(ASCII文字セットなど)の個々の文字、発音可能なパスワードを形成するように設計されたシラブル、または単語リストの単語(パスフレーズを形成する)の場合があります。 。
ランダムパスワードの強度は、基になる番号ジェネレータの実際のエントロピーに依存します。ただし、これらは多くの場合、真にランダムではなく、疑似ランダムです。公開されているパスワードジェネレータの多くは、エントロピーが制限されているプログラミングライブラリにある乱数ジェネレータを使用しています。ただし、最新のオペレーティングシステムのほとんどは、パスワード生成に適した暗号的に強力な乱数ジェネレータを提供しています。通常のサイコロを使用してランダムなパスワードを生成することもできます。より強力な方法を参照してください。ランダムパスワードプログラムには、多くの場合、結果のパスワードがローカルパスワードポリシーに準拠していることを確認する機能があります。たとえば、常に文字、数字、特殊文字を組み合わせて生成します。
N個の可能な記号のセットから長さLの記号の文字列をランダムに選択するプロセスによって生成されたパスワードの場合、可能なパスワードの数は、記号の数をLの累乗、つまりNLに増やすことで見つけることができます。 LまたはNのいずれかを増やすと、生成されたパスワードが強化されます。情報エントロピーによって測定されるランダムパスワードの強度は、パスワードの各記号が個別に生成されると仮定すると、可能なパスワードの数の2を底とする対数またはlog2にすぎません。したがって、ランダムパスワードの情報エントロピーHは、次の式で与えられます。
H =log2NL=Llog2N= L logNlog2{\ displaystyle H = \ log _ {2} N ^ {L} = L \ log _ {2} N = L {\ log N \ over \ log 2}}
ここで、Nは可能なシンボルの数、Lはパスワード内のシンボルの数です。Hはビット単位で測定されます。最後の式では、logは任意の底になります。
シンボルセット | シンボルカウントN | シンボルごとのエントロピーH |
---|---|---|
アラビア数字(0〜9)(PINなど) | 10 | 3.322ビット |
16進数(0–9、A–F)(WEPキーなど) | 16 | 4.000ビット |
大文字と小文字を区別しないラテンアルファベット(a–zまたはA–Z) | 26 | 4.700ビット |
大文字と小文字を区別しない英数字(a–zまたはA–Z、0–9) | 36 | 5.170ビット |
大文字と小文字を区別するラテンアルファベット(a–z、A–Z) | 52 | 5.700ビット |
ケースセンシティブな英数字(a–z、A–Z、0–9) | 62 | 5.954ビット |
すべてのASCII印刷可能文字スペースを除く | 94 | 6.555ビット |
すべてのLatin-1サプリメント文字 | 94 | 6.555ビット |
すべてのASCII印刷可能文字 | 95 | 6.570ビット |
すべての拡張ASCII印刷可能文字 | 218 | 7.768ビット |
バイナリ(0〜255または8ビットまたは1バイト) | 256 | 8.000ビット |
ダイスウェアワードリスト | 7776 | 1ワードあたり12.925ビット |
バイナリバイトは通常、2つの16進数を使用して表されます文字。
N個のシンボルのセットからランダムに抽出されたパスワードを使用して、目的の強度Hを達成するために必要な長さLを見つけるには、次のように計算します。
L =Hlog2N{\ displaystyle L = {H \ over \ log _ {2} N}}
丸め次に大きい整数まで。
次の表では、この式を使用して、一般的なシンボルセットに必要なパスワードエントロピーを実現するために必要な、真にランダムに生成されたパスワードの長さを示しています。
必要なパスワード エントロピーH |
大文字と小文字非機密 | すべてのASCII | すべての拡張 ASCII |
ダイスウェア 単語リスト |
|||||
---|---|---|---|---|---|---|---|---|---|
ラテン語 アルファベット |
アルファ- 数値 |
ラテン語 アルファベット |
アルファ- 数値 |
印刷可能な文字 | |||||
8ビット(1バイト) | 3 | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 1ワード |
32ビット(4バイト) | 10 | 8 | 7 | 7 | 6 | 6 | 5 | 5 | 3ワード |
40ビット(5バイト) | 13 | 10 | 9 | 8 | 8 | 7 | 7 | 6 | 4ワード |
64ビット(8バイト) | 20 | 16 | 14 | 13 | 12 | 11 | 10 | 9 | 5ワード |
80ビット(10バイト) | 25 | 20 | 18 | 16 | 15 | 14 | 13 | 11 | 7ワード |
96ビット(12バイト) | 29 | 24 | 21 | 19 | 17 | 17 | 15 | 13 | 8ワード |
128ビット(16バイト) | 39 | 32 | 28 | 25 | 23 | 22 | 20 | 17 | 10ワード |
160ビット(20バイト) | 49 | 40 | 35 | 31 | 29 | 27 | 25 | 21 | 13ワード |
192ビット(24バイト) | 58 | 48 | 41 | 38 | 34 | 33 | 30 | 25 | 15ワード |
224ビット(28バイト) | 68 | 56 | 48 | 44 | 40 | 38 | 35 | 29 | 18ワード |
256ビット(32バイト) | 78 | 64 | 55 | 50 | 45 | 43 | 39 | 33 | 20ワード |
人間が生成したパスワード編集
人々は達成が苦手なことで有名です満足のいくパスワードを生成するのに十分なエントロピー。 50万人のユーザーを対象としたある調査によると、平均パスワードエントロピーは40.54ビットと推定されました。一部のステージマジシャンは、オーディエンスメンバーによって行われた(たとえば数字の)ランダムな選択を占うことによって、この娯楽の能力をわずかな方法で悪用します。
したがって、300万を超える8文字のパスワードの1つの分析で、文字「e」は150万回以上使用されましたが、文字「f」は25万回しか使用されていません。一様分布では、各文字が約900,000回使用されます。使用される最も一般的な数字は「1」ですが、最も一般的な文字はa、e、o、およびrです。
ユーザーがパスワードの作成に大きな文字セットを十分に活用することはめったにありません。たとえば、2006年にMySpaceフィッシングスキームから得られたハッキングの結果から、34,000のパスワードが明らかになりましたが、そのうちの8.3%のみが大文字と小文字、数字、記号の混合を使用していました。
ASCII文字セット全体の使用に関連する完全な強度(数字、大文字と小文字の混合、および特殊文字)は、考えられる各パスワードが同じように発生する可能性がある場合にのみ実現されます。これは、すべてのパスワードにいくつかの文字クラスのそれぞれの文字、おそらく大文字と小文字、数字、および英数字以外の文字が含まれている必要があることを示唆しているようです。実際、このような要件はパスワード選択のパターンであり、攻撃者の「作業要素」(クロードシャノンの用語で)を減らすことが期待できます。これは、パスワードの「強度」の低下です。より適切な要件は、オンライン辞書の単語、名前のリスト、または州(米国)または国(EUなど)のナンバープレートパターンを含まないパスワードを要求することです。パターン化された選択が必要な場合、人間は、文字の大文字化、1つまたは2つの数字の追加、特殊文字など、予測可能な方法でそれらを使用する可能性があります。この予測可能性は、ランダムなパスワードと比較した場合、パスワードの強度の増加がわずかであることを意味します。
NIST特別刊行物800-63-2編集
2004年6月のNIST特別刊行物800-63(改訂2)は、人間が生成したパスワードのエントロピーを概算するスキームを提案しました。
このスキームを使用すると、大文字とアルファベット以外の文字を含まない、または2つの文字セットのいずれかを含む8文字の人間が選択したパスワードは、18ビットのエントロピーを持つと推定されます。 NISTの出版物は、開発の時点では、実際のパスワードの選択に関する情報はほとんど入手できなかったことを認めています。新たに利用可能な実世界のデータを使用した人間が選択したパスワードエントロピーに関するその後の調査では、NISTスキームが人間が選択したパスワードのエントロピー推定に有効なメトリックを提供しないことが示されました。 2017年6月のSP800-63のリビジョン(リビジョン3)では、このアプローチが廃止されました。
使いやすさと実装に関する考慮事項編集
国のキーボード実装は異なるため、94個のASCII印刷可能文字すべてを使用できるわけではありません。どこにでも。これは、ローカルコンピュータのキーボードを使用してリモートシステムにログインしたい海外旅行者に問題を引き起こす可能性があります。キーボードレイアウトを参照してください。タブレットコンピューターやスマートフォンなどの多くのハンドヘルドデバイスでは、特殊文字を入力するために複雑なシフトシーケンスまたはキーボードアプリの交換が必要です。
認証プログラムでは、パスワードで許可する文字が異なります。大文字と小文字の違いを認識しないものもあれば(たとえば、大文字の「E」は小文字の「e」と同等と見なされる)、他の記号の一部を禁止するものもあります。過去数十年で、システムはパスワードでより多くの文字を許可しましたが、制限はまだ存在します。許可されるパスワードの最大長もシステムによって異なります。
実際問題として、パスワードは、エンドユーザーにとって合理的かつ機能的であると同時に、意図された目的に対して十分に強力である必要があります。覚えにくいパスワードは忘れてしまう可能性があり、紙に書かれる可能性が高く、セキュリティ上のリスクがあると考える人もいます。対照的に、他の人は、ユーザーに支援なしでパスワードを覚えさせることは弱いパスワードにしか対応できず、したがってより大きなセキュリティリスクをもたらすと主張します。ブルースシュナイアーによると、ほとんどの人は財布や財布を保護するのが得意です。これは、書かれたパスワードを保存するのに「最適な場所」です。