6

新しいアカウントにサインアップするとき、Webアプリは「セキュリティの質問」への回答、つまり犬の名前などを尋ねることがよくあります。

私はデータベースを調べて、ユーザーが正当な答えを提供するのではなく、キーボードをマッシュしただけのインスタンスを探したいと思います。これは、不正/不正なアカウントの高い指標です。

"母親の旧姓?" lakdsjflkaj

これをどのように行うべきかについての提案はありますか?

注:私はこれらの「セキュリティの質問の回答」に正規表現を使用しているだけではありません

「回答」は次のようになります。

  1. いくつかの基本的なSQL正規表現を使用してデータベースから選択

  2. Python正規表現を使用して必要な回数だけ分析

  3. 必要に応じて比較/剪定/スコアリング

これは技術的な質問であり、哲学的な質問ではありません ;-)

ありがとう!

4

11 に答える 11

40

私はこれをしません-私の意見では、これらの質問はセキュリティを弱めるので、ユーザーとして私は常に答えとして別のセミパスワードを提供しようとします-あなたのためにそれはマッシュされたいです。まあ、それはマッシュポテトですが、それはまさに私がやりたいことです。

ところで。あなたが答えを尋ねることができるという事実について私はよくわかりません。それらはあなたのパスワード保護を克服するので、それらはパスワードのように扱われるべきです=ハッシュとして保存されます!

編集:この記事
を読んだとき、私はすぐにこの質問を思い出しました;-)

于 2009-07-21T14:55:51.967 に答える
13

セキュリティの質問の全体的なアプローチにはかなり欠陥があります。

私は、人々が使用するパスワードよりも脆弱なセキュリティ回答を入力していることに常に気付いてきました。
セキュリティの質問は、セキュリティ チェーンのもう 1 つのリンク、つまり弱いリンクにすぎません。

IMO、より良い方法は、ユーザーが登録済みの電子メール id に送信された新しいパスワードを要求できるようにすることです。これには 2 つの利点があります。

  1. ブルートフォースの試みは、最初に電子メールサービスを見つけて破壊する必要があります(そして、そこで彼らを助けることは決してありません-登録電子メールIDを厳重に保護してください)
    • あなたのサービスのユーザーは、誰かがブルートフォースを試みると、常にその兆候を受け取ります (パスワードを再生成しようとしたというメールを受け取ります)

秘密の質問が必要な場合は、再生成された (ユーザーのパスワードを決して送信せず、一時的な、できれば 1 回強制される) パスワードのディスパッチを、登録した電子メール ID にトリガーさせます。まったく。

もう 1 つのトリックは、秘密の質問 ITSELF を登録済みの電子メール IDにすることです。
彼らがそれを正しければ、再生成された一時パスワードをその電子メールIDに送信します。

于 2009-07-21T15:16:30.823 に答える
6

正規表現でこれを行う方法はありません。実際、これを行うための合理的な方法はまったく考えられません。疑わしいものと疑わしくないものの間に線を引くのはどこですか。私はかつて、セキュリティの質問に難解な答えで答えることがよくあります。結局のところ、私の母の旧姓は見つけるのが最も難しいことではありません。

于 2009-07-21T14:56:27.940 に答える
6

You're probably better off analyzing n-gram distribution, similar to language detection.

This code is an example of language detection using trigrams. My guess is the keyboard smashing trigrams are pretty unique and don't appear in normal language.

于 2009-07-21T14:59:57.187 に答える
4

英語の文字ペア確率のリストを見つけることができれば、リストにない可能な限り少ないペアとペアを使用して、その単語が「実際の」英語の単語ではないおおよその確率を構築できます。残念ながら、名前やその他の「単語以外」がある場合は、それらを英語の単語にすることはできません。

于 2009-07-21T14:57:53.790 に答える
4

たぶん、豊富な子音をチェックできます。たとえば、あなたの例lakdsjflkajでは、2 つの母音 ( a ) と 9 つの子音があります。通常、キーをランダムに押したときに母音をヒットする確率は、子音をヒットする確率よりもはるかに低くなります。

于 2009-07-21T15:22:22.560 に答える
2

あなたの質問が本当の人間の名前に関連するものである場合、これは不可能です。ローマ字で入力されたアジアの名前を考えてみましょう。彼らはあなたが思いついたどんなフィルターでも非常にうまくトリップするかもしれませんが、それでも完全に合法です。

于 2009-07-21T15:02:24.733 に答える
2

You could check for a capital letter at the start.... that will get you some false positives for sure.

A quick google gave me this, you could compare each against a name in that list.

Obviously only works for the security question you stated.

Have you also seen this:

Anatomy of the twitter attack

I'm going to think hard next time i implement a security question.

于 2009-07-21T14:59:17.640 に答える
0

正規表現の代わりに、既知の適切な値のリストと比較してみませんか?たとえば、母の旧姓を国勢調査データと比較したり、ペットの名前をオンラインで見つけられるペットの名前リストのいずれかと比較したりします。これのはるかに単純なバージョンについては、入力されたものをGoogleで検索するだけです。正当な名前は多くの結果をもたらすはずですが、キーボードマッシングは結果があったとしてもごくわずかであるはずです。

他の方法と同様に、誤検知を処理する必要があります。

于 2009-07-21T15:52:45.400 に答える
0

音声的に意味をなさないパターンを探すことができます。そのような:

「q」の後に「u」が続かない。

asdf

qwer

zxcv

asdlasd

基本的に、自分のキーボードでマッシュしてみて、何が得られるかを確認し、それをフィルターに接続します。また、さまざまな文法規則をプラグインします。ただし、これはあなたが扱っている名前なので、誤検知の原因となる奇妙な名前の「あの男」を常に取得します。

于 2009-07-21T14:57:02.513 に答える