web-dev-qa-db-ja.com

パスワードルール:XKCDのTr0ub4dor&3のような "leetspeak"辞書のパスワードを許可しないか

TLDR:一部のユーザーには、すでに 2要素認証 が必要です。私はハッシュ、ソルト、そして長いパスフレーズを奨励するためのことをしています。一般に、パスワードの複雑さのルールのメリットには興味がありません。この一部は法律で義務付けられており、一部はお客様が義務付けています。私の質問はかなり狭いです。Tr0ub4dor&3などのLeetspeakパスワードを辞書の単語として検出する必要があります。そのため、主に単一の辞書の単語で構成されたパスワードは失敗します(リートされている場合でも)。リーディングされているかどうかに関係なく、複数のWordパスフレーズは常に受け入れられます。これは、従来の短いパスワードを使用することを選択した人に関する質問にすぎません。

私は、機密情報(主に犯罪歴、 SSN など)を公開する次期政府のWebサイトの主要開発者です。従業員の身元調査等のため、一般の方にご利用いただきます。

バックエンドでは、PBKDF2でハッシュ化されたパスワードを、非常に高い反復でユーザーごとにソルト化して保存しているため、強力なパスワードに対するブルートフォースハッシュ攻撃は現実的ではなく(現在)、ユーザーは10分間ロックされます5回の悪い試みの後、あなたは実際にそのように総当たりすることはできません。

私が実装したパスワードルールの重大度について、顧客/パートナーから何らかの反論を受けています。

明らかに、16〜20文字以上のパスフレーズを使用してほしいのですが、これは動きの遅い官僚機構です。したがって、これらの適切なパスワードを許可/推奨することに加えて、私はいくつかの短い「ハード」パスワードを許可する必要があります。私は私たちの露出を制限しようとしています。

特に、私は XKCDの有名なTr0ub4dor& のような古典的なリートスピークのパスワードを許可しないため、「辞書なしの単語」という要件は人々を苛立たせています。 (好奇心が強い人のために、提案されたパスワードをリーツピーク順列変換器(charのドロップを含む)に通してから、各順列を辞書と比較します)

私は重症ですか?私は「Avidsの使いやすさのルール」を強く支持しています-使いやすさを犠牲にしたセキュリティは、セキュリティを犠牲にしています。しかし、この場合、それは習慣や教育の問題だと思います。ダイスウェア/読み取り可能なパスフレーズのパスワードを制限なしで許可します。「通常の」パスワードのみがより強い要件を取得します。 XKCD#936:短い複雑なパスワード、または長い辞書のパスフレーズ?

より良いUIヘルプでこれを解決する必要がありますか?私は銃に固執するべきですか?最近の注目を浴びる複数のハック、特にパスワードを公開したハックは、私を正しいと思っていますが、理由もなく愚かなことをしたくありません。私はブルートフォース攻撃からかなり保護されているので(私はそう思います/望んでいます)、この不必要な複雑さはありますか?それとも、深層防御だけですか?

パスフレーズや真にランダムなパスワードを理解できない人にとっては、「2つの単語とnum/symbols」のパスワードはどちらも簡単で、少なくとも手順を読んでもらうことができれば、ハッキングするのが難しくなります。

アイデア:

  • より良いパスワードのヒント/目立つように表示(主観的すぎる?)
  • 強度メーターの向上(zxcvbnに基づくもの?-送信後ではなく、クライアント側で辞書の単語が失敗します)
  • すべての「短い」パスワードを禁止し、人々にパスフレーズのみを使用するように強制します。これにより、ルールがより単純になりますか?
  • 彼らにパスフレーズを生成し、パスワードフィールドにコピーさせる「パスワードを作成する」ボタン
  • あきらめて、leetspeekのパスワードを許可しますか?

ここに私のパスワードの説明/ルールに私が現在持っているものがあります:

  • 16文字以上のパスフレーズ(最大無制限)

    または

  • 8文字以上

  • 次の3つを含む
    • 大文字
    • 小文字
    • 番号0123456789
    • 記号!@#$%^&*()_- + =、。/ <>?;: '"
  • 辞書ワードに基づいていない
  • あなたのユーザー名ではありません

受け入れられないパスワードの例

  • トルバドール(単一の辞書の単語)
  • Troubador&3(単一の辞書ワードと数字および記号)
  • Tr0ub4dor&3(単一の辞書ワードに基づく)
  • 12345678(3/4文字タイプを含まない)
  • abcdefgh(3/4文字タイプを含まない)
  • ABCDEFGH(3/4文字タイプを含まない)
  • ABCdefgh(3/4文字タイプを含まない)
  • ABC @#$%! (3/4文字タイプは含まない)
  • ab12CD(短すぎる)

受け入れられるパスワードの例(これらのパスワードは使用しないでください):

  • 正しい馬のバッテリーの定番(Dicewareパスワード)
  • フロートするものが義務付けられている必要があります(読み取り可能なパスフレーズ-makemeapassword.orgへのリンク)
  • GoodPassword4! (複数の単語、大文字、小文字、数字、記号)
  • Yyqlzka6IAGMyoZPAGpP(大文字、小文字、数字を使用したランダムな文字列)
115
Jason Coyne

エントロピー 値のインデックス(をノード数で除算します-状態アクターはlotsノード数):

 BIT〜Rand CRACK CRACK 
 DICTIONARY COUNT ENTROPY CHARS MD5 PBKDF2 
̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅ ̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅̅ .____。]英数字(文字、数字)62 5.95 0.9 0s 0s 
ランダム印刷可能文字(USキーボードの任意のキー)94 6.55 1.0 0s 0s 
 Diceware辞書Word 7776 12.92 2.0 0s 0s 
標準アメリカ英語(en_US)dict Word 100k 16.61 2.5 0s 0s 
 Large American English dictionary Word 650k 19.31 2.9 0s 1s 
任意のウィキペディアの任意の単語(任意の言語)58.4M 25.80 3.9 0s 58s 
 
標準のen_US辞書とランダム化されたc ASE 6.3M 22.60 3.4 0s 6s 
 l33tバリエーションを持つ標準en_US辞書6.3M 22.60 3.4 0s 6s 
 Std en_USタイプミス+(Randケースまたはリート)38M 25.18 3.8 0s 38s 
標準ケースw /ランドケース+タイプミス+リート2.4B 31.18 4.8 0s 41mランドケースxorリート)22B 34.39 5.2 0s 6h 
 
ランドオーダー:5下位、1スペシャル、1 num、1上位1e11 36.52 5.6 2s 1d 
ランダムオーダー:6下位および上位/数値/特殊4e11 38.67 5.9 10s 5d 
の2つ:下位6、1スペック/上位、年1900-2100 4e12 41.70 6.4 1m 49d 
順位:下位7、および2上位/数値/特殊1e13 43.37 6.6 4m 131d 
ランダム順序:上位8​​と上位/数値/特殊3e14の2つ3e14 48.07 7.3 2h 4y * 
 
 4ワードダイスウェアパスフレーズ4e15 5 1.70 7.9 2d 8y * 
 8文字(ランダム印刷可能)パスコード6e15 52.44 8.0 2d 9y * 
 5 Wordダイスウェアパスフレーズ3e19 64.62 9.9 6y * 27y * 
 10文字(ランダム印刷可能)パスコード5e19 65.55 10.0 6y * 29y * 
 4つの標準en_USワード1e20 66.44 10.1 7y * 31y * 
 3つのstd en_USワードと1つの大きなen_USワード6e20 69.10 10.5 11y * 35y * 
 3 std en_USワードと3つのランダムな印刷可能文字8e20 69.46 10.6 12y * 35y * 
 6ワードダイスウェアパスフレーズ2e23 77.55 11.8 26y * 47y * 

「すべてのウィキペディア」には、すべての言語のウィクショナリー、ウィキブックスなどが含まれ、2009年には 58.4M個のユニークな単語 が含まれています。 ダイスウェアxkcdコミック のベースでした。ランダムな大文字と小文字が混在する場合(つまり、2⁶の追加の反復がある)、6文字のワードサイズを想定し、リートのバリエーションは大文字と小文字の混在と同じくらい豊富であると想定します。意図的なタイプミス/スペルミスに値6を使用しています。

クラック時間は、 ムーアの法則 (アスタリスクが表示された場合は_*_)を考慮して18か月ごとにアップグレードする、最上位の単一ノードクラッキングシステムの推定です。スペースの半分が検査された場合、スペースは亀裂と見なされます。 GPUベースのクラッキング は、単一のコンピューターノード23B/s でMD5をテストできます。 PBKDF2 はより堅牢で、2013年に4 GPUシステムで 0k/s と推定されます(27か月前→227/18なので、300k×2.828 = 849k/s→1M/sに丸められます)。

(自分への注意:読んで組み込み/反駁 Jeffrey GoldbergのQuoraでのパスワード解読の数学

質問は 私の他の回答へのコメント で明確にされました(それはまだ役立つかもしれないので残しておきます)。 leetspeak を許可するかどうかを尋ねるだけです。 2要素認証は、セキュリティの高い領域で既に使用されています。

「トルバドール」という言葉は私の標準の辞書にはありませんが、私の大きな辞書にはあります。 Wordの最初の文字を大文字にするのはではなくランダムに大文字と小文字を混ぜる(これは一般的な パスワードトポロジ です)ため、カウントが2倍になるだけです。したがって、ランダムに出力可能な同等の文字はlog₂(650k × 2⁶ × 2) / 6.55であり、これは4文字のみです。

したがって、_Tr0ub4dor&3_は、複雑なsixランダムな印刷可能文字と同等です。脆弱なパスワードですが、複雑さの要件に最小限に合わせるためにほとんどの人が作成するパスワードとほぼ同じくらい強力です。

6つのランダムな文字が弱すぎる場合は、「leetspeak」辞書のパスワードを禁止する必要があります。

完全に徹底するために、私が持っているように単語を数えることができるように大きな辞書が必要な場合もあります。そうでない場合、presidentclinton(33.22ビット、5文字、実際には関連性が低いためより低い)などのパスワードがシステムで受け入れられます。

62
Adam Katz

ここでの間違いは、追加のパスワードルールがセキュリティを強化すると信じることです。彼らはしない。ユーザーの煩わしさを増します。また、ユーザーに暗記しにくいパスワードを選択させる。いくつかの奇妙な心理的理由により、ほとんどの人は、文字以外の記号を含むパスワードは、文字のみのパスワードよりもいくつかの存在論的な方法で「より安全」であると信じています。ただし、これは完全に実証されていません。

セキュリティに害のないone "パスワードルール"があります:最小パスワード長。これは、次の2つの要素が組み合わされているためです。

  • 最も愚かなブルートフォース攻撃では、1のシーケンスから始まり、2のように、すべてのシンボルシーケンスが列挙されます。その意味で、4つの記号のみを含むパスワードは、非常に脆弱であると言えます。

  • ユーザーは理解しますすべての小さなパスワードを列挙するという概念。彼らは、少なくとも6文字または7文字を入力する必要があることを受け入れる準備ができています。

他のすべてのルールは、せいぜい中立ですが、それらのほとんどは実際にセキュリティを低下させます。

  1. サーバーが受け入れるパスワードを生成するための互いに「メソッド」を設計し、共有します。これらのメソッドは通常、句読点の文字が多く、エントロピーはほとんどありません。

  2. 覚えにくいパスワードを書き留めます。

  3. 暗記が難しいのと同じ理由で、他のシステムでパスワードを再利用します。

「パスワード強度メーター」も次の理由により有害です。

  • それらは信頼できず、信頼できません。パスワード強度メーターは、特定のパスワードがメーターコードによって具体化された正確なブルートフォース戦略にどれだけ耐えられるかを測定するだけですが、攻撃者はまったく同じ戦略に従うように制限されていません。

  • パスワード強度メーターは、結果(パスワード自体)しか表示しないため、パスワード選択で優勢だったエントロピーを測定できません。

  • 彼らはパスワードの選択を、ユーザーの機知に富んだ戦略を奨励するゲームに変えます。そして、ウィットはまさにパスワードに望まないものです。安全なパスワードはrandomnessを目指しています。

canに役立つのは、パスワード生成システムを提供することです。そのシステムを作成するように注意してくださいオプション:ユーザーが無理に使用するのではなく、無理に使用せず、反逆しないように(そしてパスワードを書き留めます) 、共有、再利用)。


だから私の推薦は:

  • 7文字未満のパスワードを拒否します(オンライン攻撃に対する軽減システムがあるため、つまり、5回の誤試行後に10分間オートロックが発生するため、比較的短いパスワードを許容できます)。しかし、他のルールはありません。 7文字以上のシーケンスであれば問題ありません。
  • 1つ以上のオプションのパスワード生成メカニズムを提供します。ダイスウェア、「正しい馬」のものなど。
  • パスワードマネージャの使用を奨励します。
  • 可能であれば、ユーザー認証用のパスワード以外のものを見つけてください。

私のアサーションは、物を少し歪んだ方向に押しているということです。正確ではありません。特に、特定の文字を要求するパスワード規則は悪いことです(一般的なことですが、それでも悪いことです)。

202
Tom Leek

追加のパスワードルールは、常に次のルールで調整する必要があります。

「有効なパスワードを取得して最新の状態に保つのが難しいほど、人々が日記に書き留める可能性が高くなります。」

したがって、あなたの質問は社会的なものです。優れたパスワード管理に関する教育をどの程度提供できますか。あなたはあなた自身のビジネスのためにこれをバランスさせる必要があります。保護すべき重要な情報があるようです...そのような機密情報を扱う方法をオペレーターに訓練している人はいますか?それとも彼らは盲目的にあなたとハッシュアルゴリズムに頼って彼らのためにそれをしているのでしょうか?.

違いがあるからといって、不正なパスワードが与えられた場合は、学習体験を提案することを検討します。それはアプローチのバランスかもしれないと思います。さらに重要なことに、それはあなたにさらに良い解決策を見つけるように刺激するかもしれません:

  • パスワードの長さは最小限にしてください。これは必要最低限​​の要件であり、強制する必要があります
  • パスワードが弱い場合は、パスワードが弱いことを知らせ、offerを使用してパスワードを使用できるようにします(自分の資格情報を適切に保護するために信頼していることを示すテキストが表示されます)
  • 弱いパスワードを受け入れるときは、弱いと思うことを説明するテキストを含めます(「l33tを使用してパスワードをより安全に見せるために使用したようです。推測してください。そうではありません。このパスワードは、実際に考えているよりも約45000倍弱いです。 ")
21
Cort Ammon

パスワードを盗み、総当たりすることを恐れていない場合、パスワードが発見される可能性が最も高いのはフィッシング攻撃です。パスワードの複雑さの要件は、フィッシング攻撃からユーザーを保護するものではありません。

非常に複雑なパスワードを使用する場合、ユーザーは機能するパスワードを見つけ、それを使い続けます。有効期限が切れると、ユーザーは最も小さな変更を加えて続行します。これは、フィッシング詐欺師が新しいパスワードをかなり迅速に推測できることを意味します。

ユーザーの操作からユーザーを保護するパスワードの複雑さスキームはないため、2要素認証の使用を検討してください。 (ユーザーも人間であり、1日中パスワードを使わずに仕事をやりたいと思っていることを忘れないでください)

ところで、ここにいくつかの関連する質問があります:

パスワードの複雑さのルールは逆効果ですか?

パスワードの複雑さに関する推奨ポリシー

9
ztk

8は低すぎると思います。9でさえ、このようなものに対して(文字通り)1桁安全です。このコンテンツが何であるかを考慮して、2要素認証を検討することをお勧めします。

また、大文字(ほとんどの場合は最初の文字)や数字(ほとんどの場合は最後の文字)などの必須事項に人々がどのようにアプローチするかを検討します。これらは実際には エントロピーを弱める です。私は言葉を使うことを提案しますが、それらは無関係であり、間違いなくいかなる種類の引用でもないことを明確にすることができます。

あなたが持つことができる最も安全で覚えやすいパスフレーズは、パスコードである単語のコレクションです。攻撃者は、そのコードをどこに配置するかを知っている必要があります。そうしないと、非常に長いパスワードがコードをどこにでも持つことができると想定します。

キーロガーを回避するために銀行が使用するトリックの1つは、クリックする画像を用意することです。 ING Direct(CapitalOneが購入してメソッドを変更する前)などの一部のシステムでは、ピンシステムを使用していました。パスワードは4桁のピンで、マウスまたは画像に関連付けられたランダムなキーを押すことによってのみ入力できました。永続的なCookieがない場合は、セキュリティの質問にも回答する必要があります。これは、2要素認証とほぼ同様に機能します。

どちらもセッションハイジャックの対象となります。これに対処するには、Cookieのフィンガープリントを超えてブラウザのフィンガープリントを使用してみます。 Panopticlick のような問題に陥ることなく、ある程度まともな近似は、単にIPアドレス、ユーザーエージェント文字列、SSL Cookie、および10分のセッションタイムアウトを使用することです。

時間の経過とともにパスワードのローテーションが必要になると、フィッシングやキーロガーとの戦いに役立ちますが、パスワードの複雑さに悪影響を及ぼします。これらは、攻撃者がアクセスを実行する前に長い遅延がある場合にのみ、その点で役立ちます。これは、未知のコンピュータに対する追加のセキュリティの質問が役立つ場所です。

クライアントSSL証明書を検討することもできますが、それ自体はパスワードで保護されていない可能性があります(強制することはできません)。つまり、コンピューターの紛失は大きな問題です。

複数のレイヤーをお勧めします。安全なパスフレーズは1つのレイヤーで、2番目のレイヤー(ブラウザーのフィンガープリントが一致しない場合にのみ必要)は外部(2要素)、ランダムに配置された既知の画像シーケンスをクリックするか、クライアントのSSL証明書(必要性を軽減します)です。フィンガープリント用)。

6
Adam Katz

通常の単語のように、単にリーツピーク単語を処理しないのですか?あなたの例では、GoodPassword4!を受け入れます、それは複数の単語(および記号と数字)を持っているからです。したがって、ここで適用するように見える暗黙のルールは次のとおりです。

「辞書の単語を使用する必要がある場合は、1つだけではなく、いくつかの記号と数字も使用してください。」.

それは、ユーザーの視点からは実際に理解しやすく、受け入れやすいルールだと思います。しかし、G00dP4ssword4!またはB4DTr0ub4dor1!を取得するのはかなり面倒ですそのルールの下で拒否されました。

したがって、いいえ、 "リーツピーク"辞書の単語自体を禁止するのではなく、通常の辞書の単語のように扱ってください。

5
Vincent

中間点はどうですか?

あなたが与えているルールは基本的に中立的ではなく、長いか難しいかのどちらかです。

代わりに、段階的なシステムについてはどうですか。さまざまなハード機能に対して、キャラクターごとに特定の複雑さと特定の乗数を割り当てます。その数が十分に高い場合は、パスワードを受け入れます。したがって、基本的に16文字で何でも受け入れる場合は、1つのハード機能で15文字を受け入れます。

2
Loren Pechtel

おばあちゃん(または徒歩圏内のおばあちゃん)にパスワードの定義を依頼します。彼女は厳密なパスワード規則(あなたが彼女のために印刷したもの)に従う必要がありますが、彼女はあなたと話すことを許可されていません。そして、「時間がかかりすぎない」はずです。

また、(ウェブサービスを使用するために)次の日/週にそのパスワードが必要になることを彼女に伝えます。そのため、彼女は(おそらくそれを書き留めることによって)忘れないようにする必要があります。

(おばあちゃんが一枚の紙に手を伸ばしているのを見たとき、それを書き留めないで冷蔵庫に貼り付けるように言うことができます。ただし、実際のユーザーにそれを伝えることはできません。ただし、 「冷蔵庫にパスワードを書かない」「いいえ、モニターにも書かない」など、登録フォームのルールのリスト。)

さて、どうですか?答えが「あまり良くない」(5分後にあきらめ、「あまり良くない」と見なされるため、もう食べたか尋ねた場合)は、パスワードルールが強すぎることを強く示している可能性があります。 。

私は一般的に、賛成票のほとんどを獲得した回答といくつかのコメントに同意します。

基本的なルールの1つ。これは、7、12、15などの最小長です。はい、それは人々が「aaaaaaa」をパスワードとして使用することを許可しますが、少なくともそれは他の人がそれを覚えることができるので他の人がそれを見ることができる平文で書かれません。これらすべてのルールはおそらく害を及ぼすだけです(まあ、ほとんどの場合)。除外する何百万もの辞書単語に関係なく、誰かがあなたが考えていない単語を使用するでしょう(まあ、技術的には「あなた」ではなく、おそらくどこかからそのリストを取得するだけです)。そして、何らかの理由で、正しいパスワード「Mugwump」または「Smellfungus」が彼が最初に試みたものであるため、人間の攻撃者は成功するでしょう。

「大文字、小文字、数字、特殊文字の3つを使用する必要がある」というルールについては、多くの人がABCabc012!@#覚えていないので紙に書き留めます。 (エリアに冷蔵庫がない場合は、 便利な壁でも十分です。この記事を参照してください 。)

そして公平を期すために、これがどれほど重要であるかを理解している人もまた、それらの(人工の)パスワードを覚えることができず、彼らは苛立たしくなります。ほとんどの通常のコンピューターユーザー(「インターネットを印刷する」ユーザー)はとにかく煩わしくなります(パスワードが必要であるという単一の事実でさえ、多くの人にとって「迷惑」です。結局のところ、コンピューターは2015年にユーザーを魔法のように識別できるはずです。 )。

これらの複雑なルールがないと、少なくとも多くの人が実際にパスワードを覚えられる可能性があります。

ただし、一部のサービスで行われているように、魚のようなものが検出された場合のセキュリティを強化することも考えられます。数回の試行が失敗した後、すでに認証を完全にブロックしています。これは良いことです。たとえば、1つまたは2つの試行が失敗した後、キャプチャを要求することができます。また、(ログインがすでにブロックされている場合でも)ログインを試行し続ける特定のクライアントは、1日(低レベルの場合、ファイアウォールによっても)自動ブロックされる可能性があります。

2
basic6

「これだけではありませんが、そのうちの1つですが、あまり多くはない」というルールが多数あるパスワードルールは好きではありません。

私は重症ですか?

そうだと思う、ここに理由があります。 1Password を使用します。それは私のためにランダムなパスワードを生成します。彼らはこのように見えます:

luaD/fcr61nt7A%NxBCR
NeTtVL7uuAqmL5_j&cm1
qwtlOjJsQor)9nM1%zl2

一部のWebサイトはそのようなパスワードを拒否しています。どうして?任意のルール。

これまでは、その逆のシステムについては考えていませんでした。パスワードを作成するように要求するのではなく、システムはそのルールを満たすものを割り当てます。パスワードは必ず紙に書いたり、人が何らかのファイルに貼り付けたりしますが、それは一意であり、辞書にはありません。

Amazon Web Services内のIAMはこれをほとんど行うので、このアイデアにはいくつかの先行技術さえあります。

2
berto

ここでは、ブルートフォースパスワードクラッキングの問題に対するブルートフォースソリューションを示します。攻撃者が使用するのと同じ(いくつかの)クラッキングツールを使用して実際にパスワードをクラックしようとするPCをいくつか用意します。パスワードの解読に成功したら、パスワードが弱すぎることが検出され、ユーザーにパスワードの変更を要求することをユーザーに丁寧に電子メールで送信します。

1
Atsby

繰り返しますが、私は一気に情報セキュリティの専門家ではありませんが、ユーザーにLastPassまたはKeeperを使用して大きな(真に)ランダムなパスワードを生成して保存し、安全な保管庫に保存するようにユーザーを促すことができますか?また、2要素認証も使用します。

私はLastPassが最近ハッキングされたことに気づきましたが、長くて安全なLastPassパスワードを選択したユーザーは、金庫を開いても安全であるはずです。マスターパスワードとして脆弱なパスワードを選択したユーザーは、どうしようもありません。

もちろん、これは最良の計画ではありませんが、少なくともユーザーを正しい軌道に乗せる必要があります。 Webサイト間のセキュリティには多くの不整合があります。私はそれを理解しています(たとえば、私の銀行では最大16文字のパスワードを許可していますが、私のredditパスワードは100文字です)。しかし、16個のランダムな文字は、覚えておくことができないため、パスワードを書き留めるよりも優れています。

0
clustro