ユーザーエクスペリエンスに関する質問 「password」や「12345」などの一般的なパスワードを禁止する必要がありますか? これらの一般的なパスワードはweakではないので、非常に危険であるとすぐに思いましたcommonであるためです。
残念なことに、引数のセキュリティ面はに集中しているように見えますが、禁止すると、ユーザーは部分的に有効な引数である他の弱いパスワードを使用します。しかし、確かに実際に使用している25 Worst Passwords のようなリストで最も一般的なパスワードの1つは、実際にかかる時間よりも一般的であるため、非常に危険にさらされていますbrute force
それらを推測するためにハックしますよね?
総当たり的な攻撃の前に、攻撃が一般的なパスワードに集中すると想定することは現実的ですか? rate-limited password entries
とcaptchas
の世界では、1から3推測しか得られないようです。パスワード; 5文字すべての組み合わせを推測することは現実的ではありませんが、「password」、「123456」、「qwerty」を推測することは有効な可能性のようです。
一部のUXスペシャリストは、パスワードを拒否することはお勧めできないと述べています。引数の1つは指定したものです。「禁止すると、ユーザーは他の弱いパスワードを使用します」、または1234-> 12340のようなランダムな文字を追加します。これは愚かで無意味で、ユーザーに強制的にアクセスさせます。追加した文字を思い出せないため、「パスワードを忘れました」プロセスを使用します。
2つのオプションがあります。私はどちらも好きです(それぞれに理由を説明します):
ユーザーに必要なパスワードを入力させます。これはあなたの質問に反しますが、私が言ったように、25の既知の最悪のパスワードの1つ以外のパスワードをユーザーに入力させると、1は悪いユーザーエクスペリエンス、2はおそらく失われたパスワードとその全体になります。パスワードを失った」ワークフロー。今、あなたができることは、このパスワードが弱いことをユーザーに示す、またはさらに詳細を追加することです最悪の既知のパスワードの1つ(それらへのリンクを含む)、それらを使用してはならない、などと言います。これを詳しく説明すると、ユーザーが自分のパスワードをより複雑なものに変更するように傾斜させますこれで、彼らはリスクを知っています。 1234を使用する場合は、単純な理由がある可能性があるため、許可してください。このサイトが提供するものを確認するためだけに、ログイン/パスを要求するサイトにダムパスワードを頻繁に入力します。
「少なくとも1つの数字と1つの特殊文字、少なくとも8文字でなければならない」などのルールを追加します。これは、最悪のパスワードに反することになります。一方、ユーザーが非常に複雑なパスワードを使用していて、ルールの1つに一致しない場合、UXが悪くなります。
最後に、優れたユーザーエクスペリエンスか、セキュリティの向上かを選択する必要があります。現在は、構築しているプロジェクトの種類に本当に依存しています。子犬の写真をアップロードする基本的なWebサイトであれば、複雑なセキュリティシステムを設定する必要はないでしょう。しかし、あなたが次のペイパルであるなら、そうすべきです。
ブルートフォースに関する質問については、パスワードストレージの設定方法によって異なります。塩コショウを追加すると、データベースに対してブルートフォースを実行できます。ログインページにキャプチャを追加したり、試行とエラーの間の時間を増やしたりすると、ブルートフォースは不可能になります。
攻撃者が最悪のパスワードを最初に使用する可能性がありますが、それが非常に効率的であるかどうかはわかりません。彼が最初の3つを選択した場合でも(captchaと1-3の推測に関するルールに関して)、これによりアカウントへのハッキングの可能性が大幅に減少します。
ここで見逃しているのは、複雑さが問題となるほとんどのパスワード攻撃(ソーシャルエンジニアリングを含まない攻撃)が発生することですoffline。これは、攻撃者がすでにパスワードデータベースの独自のコピーを持っており、ターゲットシステムがそれらをロックアウトすることを心配することなく、自分のシステムで自由に分析を実行できることを意味します。 CAPTCHAとアカウントロックアウトポリシーは、これらの攻撃に対して効果がありません。
辞書攻撃は、総当たり攻撃よりもはるか高速です。そのため、はい、ブルートフォースに頼る前に、攻撃者が「一般的な」パスワードを標的とすると想定するのが現実的です。おそらく最も有名なオフラインパスワードクラッキングツールの1つであるJohn The Ripperは、これをデフォルトのアクションとして使用しています。したがって、パスワードが「password」または「12345678」の場合、1分未満で解読される可能性が非常に高くなります。同じ長さのランダムに生成された(または、少なくともそれほど一般的ではない)パスワードは、かなり時間がかかる場合があります。
これはアプリケーションのニーズによって異なり、1つのサイズですべてに対応できるわけではありません。最悪の場合の侵害シナリオがエンドユーザーにのみ影響を及ぼし、エンドユーザーに軽微な不都合がある場合(そしてあなたにとって不便ではない場合)、単純な教育上の警告(このパスワードは非常に弱い)であり、弱いパスワードを作成することを許可するだけでおそらく十分です。
銀行のようにアプリケーションのセキュリティを確保する必要がある場合、または顧客のクレジットカード情報を保存するオンライン販売者の場合1 (およびクレジットカードのチャージバックは盗難+追加の銀行手数料に相当します)、またはアカウントに管理者権限がある、または...アカウントに弱いパスワードが設定されないようにし、一般的なパスワードを許可しないように最善を尽くす必要があります。私は、いくつかのオンラインソース(標準の英語辞書も含む)から取得した100万以上の最も人気のあるパスワードを並べ替えたデータベースを作成し、他のいくつかの最小基準を満たしていることを確認することに加えて、それに対してパスワードを確認します。たとえば、16文字以上である必要がありますOR 8文字以上で、上+下+数字を使用する必要があります。
非常に弱いパスワード(上位1000)は、ボットネットによってオンラインでランダムに攻撃される可能性があります(非常に多くの誤った試行の後にキャプチャ/遅延を使用した場合でも)。ハッシュデータベースが何らかの形で侵害された場合、オフラインでの辞書攻撃は非常に迅速です。
1注:より良い解決策は、クレジットカードの詳細を保存しないか、少なくとも新しいIPアドレスを使用しようとするたびに詳細を再入力するよう要求することです。
攻撃者がブルートフォース攻撃を開始する前に、一般的なパスワードを最初に使用することは確かです。 CAPTCHA(およびその他の探偵/予防)デバイスが配置されている場合でも、一般的なパスワードのリストは、辞書の単語よりもはるかに小さくなります。
私は別の立場をとり、ほとんどのユースケースで一般的なパスワードを許可しないことが理にかなっていることを提案します。パスワードの強度は、攻撃者が不正アクセスを取得する難しさに関係しています。コミュニティが現在受け入れている資質 強い パスワードは、ブルートフォース、クラッキング、またはその他の方法(つまり、パスフレーズとニーモニックデバイスによって、通行人が覚えるのが難しくなる)によって、攻撃者がアクセスを取得する難しさに基づいています。 [〜#〜] xkcd [〜#〜] は、これをかなり正確に このコミック で表します。さまざまなケース、記号などを使用すると、パスワードのランダム性が高まるため、攻撃が正常に実行されるまでの時間が長くなり、試行が検出される可能性も高くなります。
攻撃方法を詳しく見ると、上位25個のパスワードは、他の多くのパスワードとともに、一般的に辞書に入力されています。攻撃者は通常、一般的なパスワードに熱心であり、多くの場合、最初に短いリストを実行しようとします。これは、よく知られたパスワード(Cisco/cisco、admin/adminなど)を備えたデバイスを出荷するベンダーが多く、よく知られたデフォルトの資格情報を強制的に変更しないという一般的な慣習に似ています。ペイオフの観点からは、通常、最初に一般的なパスワードを試す価値があります。攻撃者がこのアプローチを取らない唯一の理由は、攻撃が標的にされた場合です。その場合、攻撃者は赤旗を投げたくないので、さらに注意を払う必要があります。
一歩後退して、「攻撃者」という用語を大まかに使用します。攻撃者とは、ボット(または自動化されたスクリプト)、スクリプトキディ(スキルのない、またはスキルが低い)、またはスキルのある個人を意味します。多くのセキュリティ議論は、自動/非熟練および熟練した攻撃者からの保護の間の地面を混乱させています。自動/未熟練の攻撃者を検出および防止するために使用される技術は通常常識に従いますが、熟練した攻撃者は従来の検出/防止戦略を認識し、それに応じてその試みを調整します。スキルレベルを限定しない限り、私は自動/非スキル攻撃者を指していると想定します。
一般的なパスワードを実行する試みに続いて、適切な防止または検出システム(つまり、アクセスログ/監査ログ、ブルートフォース検出)が配置されている場合、ブルートフォースなどの追加のオンライン攻撃方法を成功させるのはより困難です。または、オフラインの攻撃方法では、保護されたパスワードファイルへのアクセスが必要です-攻撃者が資格情報(ハッシュ、暗号化、またはその他の方法で保護されている)にアクセスできる場合。ペンテスター(ホワイトハット)は、多くの場合、既知のアカウントを使用してシステムへの初期アクセスを取得し、ネットワークへのより深いアクセスを取得するワークフローに従います。いずれにせよ、攻撃者が資格情報ストアにオフラインでアクセスできる場合、パスワードだけではない大きな問題があります。
セキュリティの実践には、アクセシビリティとのトレードオフが含まれます。アクセスしにくいシステムは一般的に 安全な よりアクセスしやすいものよりも。 UX/UI担当者は、ストーリーを提案して、生活をより簡単にします(よりアクセスしやすいシステム)。セキュリティ担当者は、アクセスしにくいシステムを売り込む必要があります。どちらも最終的には、BU /スポンサーが許容できるスタンスで解決する必要があります。前のポイントを、ほとんどの人が非難する傾向(またはおそらく過失を受け入れる意欲の欠如)と、最もきしむホイールが最初に油を塗るという原則と組み合わせます。ユーザーがパスワードの選択で自由範囲を許可されていて、攻撃者が不正アクセスを取得して大混乱を引き起こした場合、「犠牲者」の最初の応答は「これはどのように行われたのですか?」指はあちこちを指さし始め、多くの場合、「なぜこのパスワードを選択させたのですか?」という質問で、セキュリティ担当者にたどり着きます。これが一般的であると主張しているわけではありませんが、セキュリティの責任者は最終的にユーザー(およびブランド/雇用者)の保護を目的としたポリシーを追求する責任があります。ここでの私のポイントは、ユーザーがパスワードについて自分で選択できるようにするのは良い習慣ではないということです。
また、アクセスの価値は、提供される情報の価値とユーザーのアイデンティティに依存します。
総当たり的な攻撃の前に、攻撃が一般的なパスワードに集中すると想定することは現実的ですか?
私の経験ではそうでした。一般的なパスワードを試すことは、別の種類の「力ずく」ですが。
本当の根底にある問題はこれです:攻撃者は単一のアカウントに対して徹底的な攻撃を試みるか、またはすべてのアカウントに対して非常に表面的な攻撃を試みますか?.
その答えは、攻撃者が何を望んでいるかによって異なります。特定の(有名人など)アカウントへのアクセスを希望する場合は、そのアカウントだけで際限なくドキドキします。それは彼にとって唯一価値のあるものです。しかし、攻撃者がanyアカウント、またはできるだけ多くのへのアクセスのみを望んでいる場合、すべての最も一般的なパスワードのみを試すのがはるかに合理的です。アカウント。
「実際に」発見され、現在使用されている攻撃コードを調べた私の経験では、パスワードの順序は次のとおりです。
通常、ステップ3は省略され、通常、ステップ2に進む前に、一連のユーザー名に対してステップ1が試行されます。
もちろん、それは問題ではありません。本当の質問は:それについてあなたは何ができますか?
あまりない。ユーザーに、より複雑なパスワードを使用するように強制することができます。これにより、パスワードが書き留められたり、サービスから遠ざけられたり、気が狂ったりします(私には、一部のパスワードバリデーターが単純に受け入れない特殊文字を含む非常に複雑なパスワードがあります)。
問題の原因は、パスワードが単純明快でわかりにくいことです。これらは複雑な問題(「あなたは誰ですか?」)の単純な解決策であり、アインシュタインは80年前にすでに知っているように、あまりにも単純な解決策があります。ユーザーが望んでいるのは、自分のPCが「どういうわけか」でユーザーを識別し、ユーザーのIDを管理することです。したがって、可能であれば、パスワードを使用しないでください。
OpenID 、 BrowserID などのシングルサインオンソリューション、または同様のサービスを推奨します。これにより、ユーザーは、すべてのサイトでひどいパスワードを使用する代わりに、1つの優れたパスワードを思い出すことができます。
攻撃者は最初の5000個の一般的なパスワードを実行し、ブルートフォースパスワードを強制します。できることは、パスワードを9文字以上にし、大文字、小文字、特殊文字を含めることです。
システムを開発している場合は、アカウントを作成するときにデータをフィルタリングできます。そのためには、クライアント側の言語ではなく、サーバー側の言語を使用してください。
Microsoftシステム管理者であれば、グループポリシーを作成してそれを前述の制限に適用することができます。また、パスワードの長さ、アカウントロックアウトポリシーなど、他のオプションも使用できます。
正規表現をご覧ください。