web-dev-qa-db-ja.com

安全でないパスワードのためにユーザーを罰する

安全でないパスワードを選択するユーザーの権利を制限することを考えています(パスワードの安全性は長さ、使用する文字の種類(大文字/小文字、数字、記号など)の数、およびそれが使用できるかどうか)レインボーテーブルに配置されています)。

このアイデアのアプリケーションはまだありませんが、フォーラムや何かを書いていると言います。1234をパスワードとして使用するユーザーは、投稿する前にキャプチャを入力する必要があるか、厳密なスパム対策の対象になる場合がありますタイムアウトまたはベイジアンフィルターとして、コンテンツを拒否します。このフォーラムが非常に階層的であり、モデレーターまたは何らかの手段による「プロモーション」を許可している場合、これにより、ユーザーは特権をまったく獲得できなくなるか、特権を持っていると伝えられますが、より安全な変更なしにそれらを行使することはできませんパスワード。

もちろん、これが唯一のセキュリティ対策ではありませんが、それ以外の点では優れたセキュリティ対策に次ぐ可能性があります。

どう思いますか?これは、やりすぎて、より重要なセキュリティ慣行から離れて焦点を盗みますか、それとも、リスクを制限してユーザーに安全なパスワードを使用するように勧める(そして、うまくいけば、適切なセキュリティ慣行を使用していることを人々に納得させる)のに良い方法ですか?

13
Carson Myers

[〜#〜] yagni [〜#〜][〜#〜] kiss [〜#〜][〜#〜] dry [〜 #〜]10秒ルール"[u] sers are do n't care YOU" " という事実は、おそらく1つのソリューションに絞り込みます:しないでください。

  • 信頼性と安全性を確保するためにlotのテストを必要とするより多くの開発作業です。
  • それはあなたがそれをどのように見てもサイトのセキュリティをおそらく低下させます。ひどいパスワードで特権の昇格につながるいくつかのバグの可能性は大きすぎます。
  • 開発者、テスター、メンテナー、DBA、sysadmin、ユーザーの複雑さが増します。
  • 複雑さが増すほど、何らかの形で自分自身を繰り返すことを避けることが難しくなります。
  • ユーザーには、あなたの情報を読んでフォローアップするための注意力がありません。これらは、理想的なレベルに達するまでではなく、入力を受け入れるまで登録フォームを微調整するために使用されます。
  • ユーザーは気にしません。
35
l0b0

登録変更時に安全なパスワードを強制するか、OpenIdを使用します(Jeff Atwoodの2c: http://www.codinghorror.com/blog/2010/11/your-internet-drivers-license.html )。次に、より興味深い機能に集中します。

1つには、ユーザーは安全なパスワードの作成やOpenIdの使用を強制されることに慣れているため、ユーザーにとっては簡単です。

13
StuperUser

そもそも悪いと思うパスワードを許可するのはなぜですか?問題を発生源で停止することで、どのクラスのパスワードがどの役割にマップされているのかを把握するための設計時間を大幅に節約できます。管理者は定義により完全な権限を持っているので、管理者を制限するパスワードを入力しないようにする機能がすでに必要です。

私の答えは本当に [〜#〜] kiss [〜#〜] です。

12
unholysampler

ユーザーとしては、おそらくあなたのサイトを使用しないように私を納得させるでしょう。真剣に、私の銀行は6桁のコードがオンラインバンキングに完全に安全であると言っていますが、あまり知られていないブログにコメントを書きたいときは、少なくとも8つのアッパーを含む一意のパスワードを覚えているはずです-小文字、数字、特殊文字、ギリシャ語またはキリル文字。これは、Unicodeシーケンスを暗記している場合にのみ入力できます。そして定期的に交換してください。

誤解しないでください。セキュリティは重要です。しかし、誰かが自分のパスワードを解読してサイトにアクセスしようとするという本当に強い理由がない限り、ユーザーを困らせるべきではありません。サイトがFBIネットワークへのVPNアクセスを提供している場合は、いらいらしてください。しかし、電子メールアドレスを持っている人なら誰でもサインアップできるユーザーフォーラムの場合、本当に何が重要なのでしょうか。

7
nikie

重ね書きするつもりはありませんが、私がこれをまだ言及していない「悪いアイデア」の下に提出する別の理由を考えました-カスタマーサポート。

これが顧客サポートの担当者になる製品である場合、彼らはこれをあまり気に入らないでしょう。サポートの基本的な前提の1つは、ユーザーエクスペリエンスを理解して予測できることです。通常のユーザーをサポートしている場合、ページ1には、ページ2、3、4へのリンクがあり、X、Y、Zを実行できます。 、など.

今、あなたは彼らが追跡しなければならない別の変数を彼らに与えています。ユーザーが4ページへのリンクを表示しない場合、それは彼らが愚かなことをしたためでしょうか?それとも、パスワードが下手で、システムが4ページへのアクセスを拒否することによってユーザーを罰しているためでしょうか。ちょっと待って…がらくた、ページ4へのアクセスを拒否することは悪いパスワードの罰の1つですか、それとも私はページ5を考えていますか?ちょっと見てみましょう...大文字と小文字が混在しないパスワードの場合、偶数ページへのアクセスは許可されますが、読み取り専用に制限されます...わかりました、あなたのパスワード、それはすべて大文字またはすべて小文字で構成されていますか?場合。文字を入力するだけで小文字になります。シフトを使用すると、大文字になります。パスワードに大文字と小文字を混在させましたか?システムへのログインに使用したパスワード。先ほど使用したもの。 OK、編集に行き、環境設定、セキュリティの順に選択します。 「保存されたパスワード」を選択してください...いいえ、サー、私はここからあなたのパスワードを見ることができません...

うん。これを行わないでください。

4
BlairHippo

パスワードを制限するか、弱いパスワードのリスクをユーザーに通知します。ユーザーが自分のデータを気にしない場合は、他のデータへのアクセスを制限する必要があると思います。たぶん、不注意なパスワードの慣行に従っている人が排除されれば、ユーザーはより自信を感じるでしょう。キーボードの下に付箋が貼られたり、ラップトップにテープで貼り付けられたりする場合に、より強力なパスワードを要求することの意味は何ですか(それを構成することはできません。私はそれが起こるのを見ました)。

2
JeffO

レインボーテーブルに配置できるかどうか

レインボーテーブルではなく、辞書のことだと思います。辞書攻撃は、辞書のすべての単語がパスワードと一致するかどうかをテストするだけで機能します。この攻撃は5回の試行で修正でき、x分間ブロックする...

Rainbowテーブルは、パスワードをハッシュし、攻撃者がそのハッシュを知っている場合にのみ使用されます。それがちょうど「12345」またはそれに似たものであれば、彼はレインボーテーブルでハッシュを見つけることができるかもしれません。

往復を完了するためだけに:Rainbowテーブルを役に立たなくするには、パスワードをソルトする必要があります。また、すべてに1つではなく、すべてのパスワードにunqiue saltを使用します。その場合、攻撃者はアクセスしたいアカウントごとに固有のソルトを含むレインボーテーブルを作成する必要があります。あなたの側で巧妙に行われた場合、連結の複数のハッシュアルゴリズムを使用してハッシュを強化し、1つの世代が0.5秒かかるようにすることができます。これを行った場合、ウェブサイトのアカウントにアクセスするのに数日、おそらくこのアカウントとの一致を見つけるためにハッシュを生成する1か月の価値があるはずです。長くかかります。

ハッシュの時間については、ログインメカニズムの待機時間として約500ミリ秒を考えてください。私はそれは許容できると思います...(注意:SSLの場合、約1秒でハンドシェイクがかかります)

2
WarrenFaith