2

認証メカニズム (Web) を強化するために、試行ごとにユーザーの指紋を記録し、パターン認識を適用して悪意のある試行を識別したいと考えています。たとえば、ユーザーが常にヨーロッパのコンピューターからログインし、中国からの試みがあった場合、ユーザーは中国からのログインを許可することを確認するまで (電子メールなどで) ブロックされます。

私は大学のコースでパターン認識について非常にわずかな知識しか持っていません。しかし、このサービスの開発を開始するのに十分な思い出がありません。私が知っているのは、これらのさまざまな機能を確認する必要があるということです。

  1. ブラウザ エージェント文字列。結果は次のとおりです。
    • オペレーティング·システム
    • ブラウザ ベンダー
  2. IP アドレス。結果は次のとおりです。
    • 位置
  3. ログインのタイムスタンプ
  4. (失敗した) 試行回数 (セッション内、または合計)

パターンを検索すると、平均的なパターンに従わないため、異常な試みがマークされます。おそらくしきい値を適用するので、ユーザーが夜間にログインしたり、新しい PC を持っていたりしても、それは機能します。

いくつかの要件もあります。まず、アテンプトのチェックをリアルタイムで行う必要があります。資格情報に問題がなくても、後でアクセスが悪意のあるものである可能性があることがわかった場合、2 分後にアクセスをブロックすることはできません。さらに、すべてのアプリは PHP で作成されていますが、PHP はおそらく遅すぎます。その場合、私は Python を使用することを好みますが、その後、Python へのバインディングも必要になります。

問題は、どこから始めればよいかということです。これを達成するための最良のアプローチは何ですか?すべてのデータを Redis のようなキー ストレージまたは Mongo のようなドキュメント ベースに記録できます。特定の機能を備えた新しい試行を、既知の他の試行の大部分に対して検証できるようにするサービスをどのように設計すればよいでしょうか? そして、試行がタイムリーな方法 (たとえば 250 ミリ秒) 内で平均に一致するかどうかを返します。

4

1 に答える 1

2

あなたがやりたいことは、異常検出と呼ばれます。ウィキペディアは、始めるのに適した場所です。最初の刺し傷として、クラスタリングを試してみることをお勧めします:

  • データセットが必要になります。幸いなことに、クラスタリングは監視されていないため、大量のログイン試行を通常または悪意のあるものとしてマークアップする必要はありません.
  • 特定のユーザーについて、過去 N 回のログインの履歴 (兄貴の警告!) とそれらのログインの機能を保持します。あなたがリストした機能は良い出発点ですが、もっと考えることもできます。
  • クラスタリング アルゴリズムを適用して、平均的なログインがどのようなものかを推定します。新しい試行ごとに、平均からの距離を計算し、悪意があるかどうかを判断できます。

反対に、学ぶことなく長い道のりを歩むことができます。私の直感は、ログインの場所であり、失敗した試行回数によって、ほとんどの場所にたどり着くことができます。単純な if-else で十分かもしれません。

于 2013-02-11T10:17:07.773 に答える