大きな計算能力(たとえば、Amazonクラウドで取得できるもの)を使用すると、パスワード用の巨大なRainbowテーブルを生成できます。あなたが支払う必要がある到達可能ないくつかの大きなレインボーテーブルもあるようです。
シークレットサービスが使用できる最大のテーブルはどれですか。また、パスワードに使用できる最大の文字は何ですか。
自分で新しいパスワードを選択するとき、パスワードをどのくらいの期間考慮する必要があるのか疑問に思っていますか?(これはここでは問題ではありません!)
undergroundRainbow-tables(evil forceが使用)がホストしているパスワードの最大長はどれくらいですか?
パスワードの長さとレインボーテーブルのサイズは、赤いニシンです。 サイズは関係ありません。重要なのは entropy です。
レインボーテーブル は、主に2つの理由から、ここでは実際には関係ありません。
テーブルの構築は高価です。テーブルには、考えられるパスワードがいくつか含まれています。それを [〜#〜] n [〜#〜] と呼びましょう。 [〜#〜] n [〜#〜] 個別のパスワードがあり、これらは表で分類されます。他はありません。これらの [〜#〜] n [〜#〜] パスワードはすべて、テーブルの構築中にハッシュされている必要があります。実際、多くは何度かハッシュされています。 [〜#〜] n [〜#〜] パスワードをクラックできるテーブルを作成すると、約1.7 * [〜#〜] n [〜 #〜] ハッシュ呼び出し。それは総当たりよりも高価です。実際、ブルートフォースは平均して0.5 * [〜#〜] n [〜#〜] ハッシュを必要とするため、テーブルの構築には3倍以上のコストがかかります。
したがって、レインボーテーブルは、クラックされる4つの異なるパスワードハッシュに少なくとも4回適用できる場合にのみ、努力する価値があります。そうでなければ、それは時間の大きな浪費です。
レインボーテーブルは複数回適用できません。 saltsのためです。ゴリラよりも多くの脳細胞を持つ開発者によって展開されたパスワードハッシュは、繰り返しのない変動パラメーターであるソルトを使用します。 saltの効果は、ユーザーごとに異なるハッシュ関数を使用することと同じです。 Rainbowテーブルは、特定のハッシュ関数に対して一度に1つずつ作成する必要があるため、Rainbowテーブルは、全体で1つのパスワードハッシュのみをクラックすることができます。前のポイントと組み合わせると、レインボーテーブルはまったく役に立ちません。
もちろん、もちろん、人間レベルのコンピテンシーでパスワードがハッシュ化されないシステムが数多く導入されています。類人猿主導の開発により、単純な無塩ハッシュが使用される多くのサーバーが生まれました。さらに、パスワードがクリアテキストまたは簡単に元に戻せる自家製のエンコードとして保存されているサーバーでさえも。しかし、そのように巧妙に設計されたシステムでパスワードを管理する場合、余分なパスワードエントロピーはあなたを救わないと言えるでしょう。典型的な機密の秘密データである、パスワードを保護するための文書化された技術を正気に適用することに完全に失敗するソフトウェアシステムは、他のどのコンポーネントでもうまく機能しそうにありません。ソフトウェア設計における不器用さや過失はゴキブリのようなものです。あるものを見たとき、近くに何百もの他の人がいることを確認できます。
ここで、妥当なパスワードハッシュが採用されており、ソルト(テーブルベースの並列攻撃を無効にするため)と構成可能な速度(ハッシュをより高価にするため)を組み合わせていると仮定します。例えば。 bcrypt 。 この回答 は、パスワードをハッシュする方法の長い解説です。
たとえば、bcryptを使用して、そのサーバーでパスワードハッシュの検証に0.01秒に相当するCPU時間を要するように構成されたサーバーを考えてみます。これでもサーバーは毎秒100ユーザーログオンを処理できるため、非常に高い数値であるため、サーバーは実際にはパスワードハッシュに多くの計算能力を費やしません。
ここで、サーバーに保存されているパスワードハッシュを手にした攻撃者(たとえば、古いバックアップを盗んだり、SQLインジェクション攻撃を使用してデータベースの一部を回復したり)を想像してください。 bcryptはソルト処理されているため、攻撃者は各パスワードに対してブルートフォース攻撃の全費用を支払う必要があります。可能な並列コストの共有はなく、特に事前計算されたテーブル(レインボーかどうか)は適用されません。
私たちの攻撃者は強力です:彼は 100 のサーバーに、攻撃されたサーバーと同様のコンピューティング能力を貸します。これは、1秒あたり10000回のパスワード試行に相当します。また、攻撃者は忍耐強く、献身的です。彼は単一のパスワードに1か月のコンピューティングを費やすことを受け入れます(そのため、パスワードはいくつかの非常に貴重な資産を保護する必要があります)。 1か月あたりの毎秒10000パスワードで、これは試行される約260億のパスワードです。
したがって、攻撃者を倒すには、十分なエントロピーを持つパスワードを選択して、これらの条件下で攻撃者の成功確率を1/2未満に下げるだけで十分です。 260億は 2に近いので34.6、これはパスワードエントロピーが少なくとも35.6ビットであることを意味します。
エントロピーは、パスワードを生成するために使用される方法の特性であり、長さと大まかにのみ相関します。パスワードの長さは強度を意味しません。長さは、エントロピーのために部屋を作るために必要です。たとえば、ランダムな文字(大文字と小文字)のシーケンスとしてパスワードを生成する場合、7文字でほぼ40ビットのエントロピーが蓄積されます。これは、上記の計算では問題ありません。しかし、この絶対には、文字がランダムに、均一に、そして互いに独立して選択されることを絶対に必要とします。多くのユーザーは、コンピューターを使用する努力をしませんPRNG=新しいパスワードを作成し、それが生成されたときにそれを学ぶことを受け入れます(私はそうしますが、私に説明すると彼らは私を奇妙な方法で見ている同僚に働きかけます)。
この有名な質問 が示唆するように、人間の記憶はエントロピーと矛盾する可能性があり、より多くの構造を持つより長いパスワードはより良いトレードオフである可能性があります。 「正しい馬」方式では、25文字程度のエントロピーが44ビット「のみ」で終了することを考慮してください(ちなみに、25文字のパスワードは8文字のパスワードよりもエントロピーが少ないことに注意してください)。ただし、平均的なユーザーが40ビットのエントロピーパスワードを覚えることができる場合、追加のタイピングは価値があります。
ハリウッド映画のすべての宣伝にもかかわらず、シークレットサービスが驚異的に高度な技術を使用することはめったにありません(さらに言えば、彼らはまた、乾いたマティーニ、脚の長いブロンド、バイクの追跡がかなり不足しています)。合理的に管理されたシークレットサービスでは、1k $で 2人の悪党を雇い、ひざまずいて を破るのに十分すぎるため、パスワードの破壊に10k $を費やすことはありません。最終的に、これはすべて相対的なコストの問題です。
それでは実用的にしましょう。パスワードを生成するには、Linuxシステムで次のコマンドを使用します。
dd if=/dev/urandom bs=6 count=1 2> /dev/null | base64
小文字、大文字、数字、「/」、「+」の8文字で構成されるパスワードを出力します。そのような各パスワードが百聞の48ビットのエントロピーを提供することは簡単に示されます。 重要なルールは次のとおりです:
256ビット(32バイト)のハッシュを想定し、考えられるすべてのパスワードを80種類の文字(小文字26、大文字26、数字10、その他18文字)でカバーする場合、これらは必須のレインボーテーブルサイズです。これは、数式(80 ^ length ) * (32 + length)
を使用して計算しました。
ただし、以下の表は80種類の文字のすべての可能な組み合わせのためのものであることに注意してください。使用する文字を少なくするか、特定のパターン( すべてのl337speak辞書の単語の順列 など)に従うパスワードのハッシュを作成するだけの場合、スペースが大幅に少なくなります。
Length Size Unit
1 2.5 KiloByte
2 212 KiloByte
3 17 MegaByte
4 1.3 GigaByte
5 112 GigaByte
6 9 TeraByte
7 744 TeraByte
8 59 PetaByte
9 4.7 ExaByte
10 391 ExaByte
11 31 ZettaByte
12 2.5 YottaByte
あなたが検討している攻撃者のもっともらしい技術的能力の範囲内でどれだけの大きさであるかを自分で決めてください。しかし、あなたが私の意見を求めているとき、私はそう思います:
私は http://passwordcreator.org/ Webサイトの作成者です。安全なパスワードを自分で生成する簡単な方法が必要だったため、このサイトを作成しました。サイトの調査をしている間、私は安全なパスワードについて多くを学びました。
1秒間に1,000億回の推測が可能なパスワードクラッカーが配布されています。 NSAこれは政府が後援している(予算が大きい))は、桁違いに多くのことを行うことができます。
このタイプの攻撃から1年以上安全にするために、パスワードはいくつかの5億の可能性からランダムに選択する必要があります。ほとんどのキーボードで使用可能な95文字からランダムに作成されたパスワードの場合、適切なセキュリティ権限のために、少なくとも10文字のパスワードが必要です。今。
パスワードが他の方法で生成された場合(私のサイトではいくつかのアルゴリズムが使用可能です)、推測に対する同じ抵抗を実現するには、パスワードをさらに長くする必要がある場合があります。
10文字では、ランダムなパスワードをほとんど書き留める必要があります。それがあなたにも当てはまる場合は、長さを14文字以上に増やして、より長い間安全を保つことをお勧めします。
事前に計算されたパスワードの最大長については、ありません。事前計算されたパスワードハッシュは、キースペースの順次スキャンからではなく、辞書から事前計算されます。 非常に短いパスワードの順次生成が一般的である場合がありますが、通常は数文字以上ではありません。 8文字のパスワード用のすべての256ビットハッシュを格納するための領域要件は、エクサバイトのオーダーです。技術的能力を超えているわけではありませんが、確かにあらゆる種類の費用便益の検討を超えています。
さらに、パスワードを保存しているサーバーがそれぞれにソルトを使用している場合、事前計算のアイデア全体がウィンドウから出てきます。できました。レインボーテーブルなし。彼らはもはや働きません。 ここで説明するように、ソルトハッシュはRainbowテーブルに耐性があります 。
パスワードの長さは完全に無関係です。重要なのは、重要なのはのみ重要なのは正しいパスワードを推測する前に攻撃者が試行するパスワードの数です、および各推測にはどのくらい時間がかかりますか?
攻撃者が最初にパスワードを推測する場合、複雑さの量によって節約されることはなく、サーバー側のストレージの複雑さの量によって節約されることもありません。攻撃者がログインするのは、あなたと同じくらい簡単です。ゲームオーバー。
パスワードがリストに含まれているが、上から500の場合、攻撃者があなたのパスワードに到達するのに必要な時間は、各試行にかかる時間の500倍です。パスワードごとに1秒かかる場合は、約8分です。攻撃者は5分後にあきらめますか?もしそうなら、あなたは安全です。そうでない場合は、そうではありません。
元のポイントによると、パスワードが上位500のリストにある場合、事前計算されたハッシュが使用可能になります。もちろん、パスワードがソルトで保存されていない場合にのみ問題になります。
パスワードがランダムで、48ビットのキースペース(約8文字の英数字)からのものである場合、平均して攻撃者は攻撃を試みる必要があります247 パスワードを取得する前に。それはどのくらいかかりますか?パスワードが(LUKSが使用するように)PBKDF2が1タイムあたり⅕秒に調整されて保存されている場合、パスワードを推測するのに100万年弱かかります。
一方、同じパスワードを使用して、1秒あたり500万回の推測を試行できるハードウェアを使用している場合は、1年弱になります。 50億、それは1日未満です。
私のアドバイスは、あなたが覚えていないランダムで推測不可能なパスワードを使用することですが、KeepPass、LastPass、1Passwordなどのブラウザー統合パスワードマネージャーに保存します。その場合、6文字から24文字までの追加料金は発生しないため、長い文字(14文字または18文字など)を選択することもできます。それで十分でしょう。
ここで重要なのは、ブラウザーに統合されたパスワードマネージャーです。ランダムなパスワードを推測する攻撃者は、あなたが気にする攻撃ベクトルではありません。それは起こらないでしょう。代わりに、フィッシングを気にします。それが起こる可能性ははるかに高くなります そしてブラウザに統合されたパスワードマネージャはあなたを救います 。
Robert Grahamの優れたブログ http://blog.erratasec.com/2011/06/password-cracking-mining-and-gpus.html から
これはランダムなパスワードにのみ当てはまり、攻撃者は徹底的な検索を行います。実際の人のパスワードを攻撃するときは、最初に他の方法を試します。
トム・リークの受け入れられた答えは素晴らしいです。エントロピーはここでは重要ですが、状況においてのみ重要です。パスワードの長さを無視しないでください。
大文字と小文字、数字、および「+ /」を組み合わせて8文字の文字列を作成し、「48ビットのエントロピー」というパスワードを作成した例は、誤解を招くものです。理由は次のとおりです。
この質問が尋ねられるおよそ2年前に、2012年に 25-GPU Clusters が存在し、大文字、小文字、数字、記号を含むすべての8文字のパスワードを実行できました。 6時間。
それは2015年であり、エントロピーは重要ですが、8文字の文字列は決して安全ではありません。徹底的なパスワード検索ではなので、長さは重要な要素、エントロピーではありません!
たとえば、3年前のパスワードFail!007は、そのランダム性をすべて備えており、5.5時間でブルートフォースすることができますが、パスフレーズこれは失敗ですできませんでした。なぜ Search Space Size か、またはパスワードの長さまでのアルファベットサイズまでのすべての可能なパスワードの合計を調べる必要がある理由を理解するために。
Fail!0078文字(上、下、数値、および記号)で、検索スペースは6,704,780,954,517,120または 6.70 x 1015。しかし、パスフレーズこれは失敗です、6文字長く(すべて小文字)、6,300,168,733,803,741,204,487,980または6.30 x 1024可能性。それは大きな違いです。
1秒あたり100兆回の推測を試すことができれば、Fail!007は67秒で終了します。ただし、これは失敗ですスペースを徹底的に検索するには20世紀かかります。
少し若々しいフレーズ8が2小さいでも3.7年必要であり、予測不可能よりもずっと長く続きますFail!007。
長さはエントロピーよりも優先されます。
まとめると、passWordではなく、passphraseと考え、資格情報を8文字より長くします。あなたがそれらについて尋ねたとしても、トムが指摘したように、レインボーテーブルは攻撃では使用されません。代わりに、専用のハッカーは、3年前にはごくわずかしか通過できなかった専用のハードウェアを使用すると思います9585時間半のパスワードの組み合わせ。
レインボーテーブルは脅威ではなく、専用のクラッキングハードウェアが脅威です。そのハードウェアが明日何ができるか想像してみてください。