(57)【特許請求の範囲】
【請求項１】
フィッシング検出システムであって、
プロセッサと、
メモリと、
認証情報のエントリを識別し、前記認証情報と関連する情報を被保護認証情報ストア内に格納することであって、前記情報は、少なくとも信用できるサイトのドメイン名を含み、
ユーザによるデータ入力を前記被保護認証情報ストア内に格納された前記情報と比較して、前記認証情報および前記認証情報に関連する前記ドメイン名の入力を決定し、
ある特定のパスワードを有するユーザＩＤの最大閾値量を格納し、前記特定のパスワードを有するユーザＩＤの数を前記最大閾値量に制限する
ように構成され、前記メモリに格納される認証情報コンポーネントと、
被保護認証情報の入力の試みが、前記被保護認証情報と関連する前記ドメイン名と異なるサイトにおいて行われたことの報告をサーバに提供する
ように構成され、前記メモリに格納される保護コンポーネントと、
を備えたことを特徴とするシステム。
【請求項２】
前記認証情報コンポーネントは、前記認証情報の計算されたハッシュと被保護認証情報のハッシュとを比較して前記認証情報が被保護認証情報であるかどうかを判断することを特徴とする請求項１に記載のシステム。
【請求項３】
前記認証情報コンポーネントは、前記データ入力のキーストロークのバッファにアクセスして前記ユーザによって前記認証情報が入力されたことを確認することを特徴とする請求項１に記載のシステム。
【請求項４】
前記認証情報コンポーネントは、前記認証情報が前記キーストロークと一致するか否か判断するためにブルームフィルタを採用することを特徴とする請求項３に記載のシステム。
【請求項５】
前記認証情報コンポーネントは、前記被保護認証情報ストアに情報を格納する前にブルームフィルタを採用することを特徴とする請求項４に記載のシステム。
【請求項６】
前記被保護認証情報ストア内に格納される前記情報は、少なくとも一つのユーザＩＤを含むことを特徴とする請求項１に記載のシステム。
【請求項７】
前記認証情報はユーザＩＤであり、前記認証情報コンポーネントは前記被保護認証情報のハッシュを前記被保護認証情報ストア内に格納し、入力された認証情報のハッシュを前記被保護認証情報に格納したハッシュと比較することで、認証情報再使用イベントが発生しているか判断することを特徴とする請求項６に記載のシステム。
【請求項８】
前記保護コンポーネントは、前記ユーザによる前記データ入力の完了前のある所定の時間期間内における各々の自動リダイレクトについて前記報告を提供するように構成され、前記自動リダイレクトは、フィッシング者により前記認証情報に関連する前記ドメイン名とは異なるサイトにユーザを自動的にリダイレクトするのに用いられるオペレーションであることを特徴とする請求項１に記載のシステム。
【請求項９】
前記報告は、前記報告と関連するページと関連する情報のハッシュを含むことを特徴とする請求項１に記載のシステム。
【請求項１０】
前記保護コンポーネントはさらに、前記認証情報と関連する前記ドメイン名とは異なる前記サイトに対する前記認証情報の入力を禁止することを特徴とする請求項１に記載のシステム。
【請求項１１】
前記認証情報コンポーネントは、前記ユーザによる前記データ入力のキーストロークをバッファリングすることなく、前記キーストロークのフォワードハッシュを実施することを特徴とする請求項１に記載のシステム。
【請求項１２】
前記認証情報コンポーネントは、前記データ入力のハッシュに対して、潜在的に挿入されたおよび／または削除された文字を含むようにブランチを実施することを特徴とする請求項１に記載のシステム。
【請求項１３】
前記報告は、ユーザＩＤ、パスワード、前記ドメイン名、閲覧されたウェブページのソースコード、セキュリティサーバからのタイムスタンプ情報、および信頼できるサイトにおける前回のログインの時刻のうちの一つに、少なくとも部分的に基づくハッシュを含むことを特徴とする請求項１に記載のシステム。
【請求項１４】
コンピュータにおいて、フィッシング攻撃を検出する方法であって、
認証情報のエントリを識別するステップと、
前記認証情報と関連する情報を前記コンピュータの被保護認証情報ストア内に格納するステップであって、前記情報は、少なくとも信用できるサイトのドメイン名を含むステップと、
前記被保護認証情報ストア内に格納される、特定のパスワードを有するユーザＩＤの量が、前記特定のパスワードに対して予め定められたユーザＩＤの閾値量を超えているかどうか判断するステップと、
被保護認証情報の入力の試みが、前記被保護認証情報と関連する前記ドメイン名と異なるサイトにおいて行われたことの報告をサーバに提供するステップと
を備えることを特徴とする方法。
【請求項１５】
前記認証情報のエントリを識別するステップは、
認証情報ツリーを初期化することと、
前記認証情報のキーストロークを受信することと、
前記キーストロークが二重エントリもしくはバックスペースキーであるかどうかを判断することと、
前記キーストロークが二重エントリもしくはバックスペースキーであると判断したことに応答して、前記認証情報ツリーにブランチを追加することと、
前記認証情報ツリーに対するブランチの長さを決定することと、
前記認証情報ツリーに対する前記ブランチの長さを決定したことに応答して、最大認証情報の長さを超えるブランチを除去することと、
前記認証情報ツリーに対するハッシュを計算することと
を含み、
前記認証情報ツリーに対して計算されたハッシュと、前記被保護認証情報のハッシュとを比較するステップと、
前記比較に応答して、前記認証情報が前記被保護認証情報であるかどうかを判断するステップと、
キーストロークのバッファにアクセスして、前記認証情報が入力されたことを確認するステップと、
前記バッファの前記キーストロークが前記被保護認証情報に一致するかどうかを判断するステップと、
前記被保護認証情報に関連する情報を前記被保護認証情報ストアに格納するステップは、前記バッファの前記キーストロークが前記被保護認証情報に一致したと判断したこと、または前記認証情報が前記被保護認証情報であると判断したことに応答して、前記被保護認証情報に関連する情報を前記被保護認証情報ストアに格納するステップと
をさらに含むことを特徴とする請求項１４に記載の方法。
【請求項１６】
前記認証情報を受信するステップと、
前記キーストロークが前記被保護認証情報と一致しない場合、前記被保護認証情報に関連する情報の前記被保護認証情報ストア内への格納を行わないステップと、
をさらに備えることを特徴とする請求項１５に記載の方法。
【請求項１７】
フィッシング検出のためのプログラムであって、コンピュータに、
認証情報のエントリを識別するステップと、
前記認証情報と関連する情報であって、少なくとも信用できるサイトのドメイン名を含む情報を前記コンピュータの被保護認証情報ストアに格納するステップと、
前記被保護認証情報ストア内に格納される、特定のパスワードを有するユーザＩＤの量が、前記特定のパスワードに対して予め定められたユーザＩＤの閾値量を超えているかどうか判断するステップと、
被保護認証情報の入力の試みが、前記被保護認証情報と関連する前記ドメイン名とは異なるサイトにおいて行われたことの報告をサーバに提供するステップと
を含む処理を実行させることを特徴とするプログラム。
【請求項１８】
前記処理は、前記認証情報のハッシュと被保護認証情報のハッシュとを比較して前記認証情報が前記被保護認証情報であるか判断するステップをさらに備えることを特徴とする請求項１７に記載のプログラム。
【請求項１９】
前記処理は、
キーストロークを前記認証情報と比較するステップと、
前記認証情報と関連するキーストロークのフォワードハッシュを実施するステップと、
潜在的に挿入または削除された文字を含むように前記認証情報のハッシュに対してブランチを実施するステップと
のうちの少なくとも１つをさらに備えることを特徴とする請求項１７に記載のプログラム。
【請求項２０】
前記報告を提供するステップは、ユーザによる前記認証情報の入力の完了前のある所定の時間期間内における各々の自動リダイレクトを検出して前記報告を提供することを含み、前記自動リダイレクトは、フィッシング者により前記認証情報に関連する前記ドメイン名とは異なるサイトにユーザを自動的にリダイレクトするのに用いられるオペレーションであることを特徴とする請求項１７に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クライアントサイド攻撃対抗フィッシング検出に関する。
【背景技術】
【０００２】
インターネットがビジネス媒体として普及するにつれて、ユーザはオンラインにてより広範で多様な取引に従事するようになって来ている。これら取引の幾つか、例えば、金融機関もしくはオンライン小売業者との取引は、細心の注意を払うべき個人的情報、例えば、銀行の口座番号もしくはクレジットカード情報が必要となったり、金銭もしくは他の貴重なリソースへのアクセスを伴ったりすることがある。このような情報およびリソースへのアクセスを制御するためには、多様な方法を採用することができる。例えば、多くのオンライン団体は、ユーザにその団体に登録し、任意のビジネス上の取引をオンラインにて開始する前に、一意のユーザ名およびパスワードを取得することを要求する。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
このシステムの一つの結果として、ユーザ名およびパスワードは、それらユーザ名およびパスワードがユーザの制御下に留まっているときに限り、ユーザの個人的情報を保護するための助けとなるだけである。第三者が他人のユーザ名およびパスワードを取得し、これらユーザ名およびパスワードを用いて、その所有者が遂行できる任意の取引を遂行することも可能となる。この結果として、一般にフィッシングとして知られている不正行為が生み出されることとなったのである。
【０００４】
フィッシングは、一般的には、第三者が、ユーザを騙して、その第三者がユーザによって知られており、信頼されているエンティティであるとなりすますことを通じて、そのユーザのユーザ名およびパスワードをその第三者に開示させることを企てる試みとして説明される。一般に、フィッシング攻撃は、ユーザに、ある既知の信頼できるエンティティから発信されたように見えるように巧妙に作られた電子メールメッセージを送りつけることで開始される。このような電子メールメッセージは通常、そのエンティティは、そのユーザにそのユーザのユーザ名およびパスワードを入力させることでそのユーザの情報を検証しなければならないことをその受信者に通知する。ユーザは、この情報を、その既知で、信頼されているエンティティに属するように見えるが、実際には第三者によって管理されているウェブサイトに入力することとなる。ユーザがいったんこの情報を、しばしばフィッシングサイトと呼ばれるその第三者のウェブサイトで入力すると、その第三者は、その入力されたユーザ名およびパスワードをその第三者がなりすましているエンティティの現実のウェブサイトの所で用いることで、そのユーザから離れた所で、その既知で信頼できる相手との取引を遂行すること、更には口座の支配を奪い取ることが可能となる。
【０００５】
フィッシングは、幾つかの要因のために、コンピュータのセキュリティの観点からは難解な課題となっている。第１に、フィッシング攻撃においては、被害者は自発的にユーザのセキュリティ上の認証情報、例えば、ユーザ名およびパスワードを攻撃者に提供することで、知らず知らずのうちにあるいはうっかりと攻撃者を助けてしまう。第２に、攻撃者はすぐにセキュリティ対策に適応してしまうことと、固定されたセットの規則にて全ての将来の攻撃者の巧妙さを予想することは不可能ではないとしても困難であるということの両者の理由から、フィッシングサイトを固定されたアルゴリズムを使用して識別することは、困難である。第３に、ユーザはセキュリティ上の危険に関する警告を無視する傾向がある。たとえ最良の警告であっても、ユーザがその警告に注意を払おうとしなければ、それは無用なものとなってしまう。
【課題を解決するための手段】
【０００６】
この要約は以下に詳細な説明において更に詳しく説明される概念の抜粋を簡略化された形式にて紹介するために提供される。この要約は請求の範囲に記載されている主題のキーとなる特徴あるいは本質的な特徴を識別することを意図するものでも、あるいは請求の範囲に記載されている主題の範囲の決定における助けとして用いられることを意図するものでもない。
【０００７】
フィッシング検出用のクライアントコンポーネントおよび方法が提供される。このコンポーネントは、システムの一部として、フィッシング攻撃を検出するため、およびオプションとしてこれを阻止するために採用される。フィッシング検出クライアントコンポーネントは、パスワード再使用イベント報告を、例えば、フィッシング検出サーバコンポーネントに提供する。
【０００８】
クライアントコンポーネントは、更に、認証情報コンポーネントを含み、これはユーザによる認証情報の使用を追跡し、特定のセキュリティ上の認証情報が使用されている、もしくは提供されているかどうかを判断する。フィッシングは一般には悪意的な性格を有することにより、クライアントコンポーネントは、フィッシャによる攻撃に弱い。例えば、フィッシャは、偽りのログインを生成することで、クライアントコンポーネットを情報にて溢れさせ、結果として、誤検出（ｆａｌｓｅ  ｐｏｓｉｔｉｖｅ）および／または検出漏れ（ｆａｌｓｅ  ｎｅｇａｔｉｖｅ）を誘発することを試みる。
【０００９】
一例においては、クライアントコンポーネントは、主張されたパスワードがユーザによって実際に入力された（例えば、タイプされた）ものであるかを確認する。こうすることで、フィッシャが被保護認証情報ストア内に複数の偽のエントリを含め、実際の被保護内容を「溢れさせる（ｆｌｕｓｈ）」ことからなる攻撃を回避することができる。これを回避するためには、認証情報コンポーネントは、被保護認証情報ストアに何かを含める前に、そのパスワードが実際にタイプされたものであることを確認する。認証情報コンポーネントは、パスワードの長さを知っているために、バッファを探索することで、そのパスワードが実際にタイプされたものであるかを確かめることができる。例えば、チェックをＰＯＳＴイベントが発生したときになされる。
【００１０】
オプションとして、更に、ブルームフィルタもしくは他のハッシング技術を、バッファ長を短縮化するために採用することもできる。ブルームフィルタは、大きな集合内の構成要素を、複数のフィッシング関数を単一のビットのアレイにすることを用いて迅速にテストするための確率的アルゴリズムである。ブルームフィルタは、スペースが問題であり、小さな誤りは耐えられるようなときに効果的である。加えて、ブルームフィルタにて生成されるハッシュは不可逆的であり、このためにセキュリティ上の懸念は緩和される。オプションとして、探索時間を短縮し、セキュリティ上の懸念を緩和させるために、被保護認証情報ストア内に格納される被保護パスワードをブルームフィルタにてハッシュすることもできる。
【００１１】
加えて、フィッシャは、複数の（例えば、多量の）ランダムなユーザＩＤと、単一のパスワードを備えるポストを生成することがある。このポストが被保護認証情報ストアを溢れさせるために用いられることもある。もう一例においては、クライアントコンポーネントは、パスワード当りのユーザＩＤの数を制限することで、フィッシャによる被保護認証情報ストアを溢れさせようとする試みの影響を軽減する。
【００１２】
更にもう一つの例においては、フィッシャは、検出されるのを避ける目的で、ユーザを、パスワードのタイピングを完結させる前にもう一つのページにリダイレクトし、あるいはユーザ毎に新たな異なるページへとリダイレクトすることがある。各ユーザは、（おそらくはそのユーザに一意な）異なるページへと向けられることとなるために、フィッシング検出サーバコンポーネントは、通常は、このようなフィッシングの企てを検出することはできない。しかしながら、保護コンポーネントは、オプションとして、ある与えられた時間期間内（例えば、Ｎ秒）における各自動リダイレクトに対して、フィッシング検出サーバコンポーネントに報告を提供することもできる。フィッシング検出サーバコンポーネントは、この挙動を複数のクライアントコンポーネント間に渡って追跡し、そのフィッシング攻撃の本質を判断する。こうして、自動的リダイレクトを報告することにより、この攻撃に対する可能性が低減される。
【００１３】
更に、クライアントコンポーネントからフィッシング検出サーバコンポーネントに送られるパスワード再使用イベント報告には、その報告と関連するページおよび／あるいはコード（例えば、ＨＴＭＬ）のコピーが含まれる。しかしながら、例えば、ページおよび／またはＨＴＭＬコードのコピーをフィッシング検出サーバコンポーネントに送ることと関連するプライバシーの懸念のために、もう一例においては、クライアントコンポーネントは、そのページおよび／またはコードのハッシングされたバージョンを送ることもできる。フィッシング検出サーバコンポーネントはその後、自身のバージョンを（例えば、そのＵＲＬを用いて）直接的に得て、これら二つのハッシュを比較する。オプションとして、このハッシュは、そのページが変更されたリージョン（ｒｅｇｉｏｎ（ｓ））を識別できるように、リージョンベースとすることもできる。
【００１４】
一例においては、いったんあるＵＲＬおよび／またはドメインが信頼できないサイトであると識別されると、ユーザは、そのサイトにおいては、いかなる被保護認証情報も提供することを許されない。被保護認証情報（例えば、パスワード）の入力を禁止することは、ユーザにとってはいらいらの原因となる。このために、もう一例においては、信頼されてないサイトにおいて全ての被保護認証情報の入力を禁止する代わりに、フィッシング検出サーバコンポーネントは、その信頼できないサイトにおいて疑わしい標的である被保護認証情報を識別し、ユーザは、その信頼できないサイトにおいてはその被保護認証情報のみ入力することを禁止される。
【００１５】
上述のように、一例においては、バッファがアクセスされ、あるパスワードの幾つかの可能なストリング長のハッシュが計算される。もう１例においては、認証情報コンポーネントは、潜在的なパスワードおよび／またはユーザＩＤのハッシュをフォワードするやり方にて計算し、こうすることでキーストロークをバファリングする必要性が回避される。
【００１６】
次に、パスワードに関する情報を格納することと関連する懸念を緩和するために、フィッシングの検出をユーザＩＤに集中させることもできる。この例においては、ユーザＩＤのハッシュが計算され、これが被保護信用証明ストア内に格納される。
【００１７】
ユーザがタイプするにつれて、タイプされた情報のハッシュが計算され、被保護認証情報ストア内のエントリと比較される。ヒットが見つかると、クライアントコンポーネントは、このイベントをフィッシング検出サーバコンポーネント（例えば、中央サーバ）に報告する。フィッシング検出サーバコンポーネントは、この情報を集約し、利用可能な他の情報と結合することで、疑わしいサイトの信頼性に関する一つの判断に到達する。
【００１８】
ユーザＩＤはフィッシング攻撃に弱い。例えば、フィッシングサイトは、そのフィッシングの努力を隠す目的で、ユーザを困惑させ、そのユーザに対して、バックスペースキーを使用することおよび／または情報を再入力するように誘発する。フィッシングサイトにおいて、ユーザは、ユーザＩＤを入力するように促されることもある。フィッシングサイトは、ユーザに（例えば、エントリフィールド内に）フィードバックを提供するとき、ユーザによっては入力されなかった文字を追加し、ユーザがバックスペースキーを使用するように仕向けることもある。追加的に、フィッシングサイトは、ユーザにフィードバックを提供するとき、文字を意図的に省略し、ユーザがそれらの文字を再入力するように仕向けることもある。両方のシナリオにおいて、バッファを調べても実際のパスワードの一致は見つからないが、それにもかかわらず、フィッシャは、パスワードを受信するか、あるいはパスワードを決定するために十分な情報を受信する。
【００１９】
従って、一例においては、認証情報コンポーネントは、最後のＮ文字のハッシュを計算する代わりに、ユーザＩＤ（および／またはパスワード）のハッシングを、可能な挿入されたおよび／または削除された文字を含めるように分岐（branch）させる。例えば、バックスペースが押されたとき、そのバックスペースは偽りであることを想定する追加の探索ブランチが生成される。追加的におよび／または代替的に、認証情報コンポーネントは、反復文字がタイプされたときも同様にしてブランチを生成することもできる。オプションとして、認証情報コンポーネントは、（例えば、被保護認証情報ストア内に挿入する前の）元のパスワード上と、キーボードの監視の最中の両方の、反復される文字を結合（および除去）するバリエーションを採用することもできる。
【００２０】
上述の目的および関連する目的を達成するために、ここでは幾つかの例示的形態が以下の説明および添付の図面との関連で説明される。これら形態は、請求の範囲に記載される主題が採用されるやり方を暗示するものではあるが、しかし、さまざまなやり方のほんの僅かを示すのに過ぎず、請求の範囲に記載される主題は、これらの全ての形態およびこれらの同等物を含むことを意図される。請求の範囲に記載される主題の他の長所および新規の特徴は、以下の詳細な説明を図面との関連で考慮することで明らかとなろう。
【発明を実施するための最良の形態】
【００２１】
請求の範囲に記載されている主題が図面を参照しながらここで説明されるが、図面を通じて類似する参照番号は類似する要素を参照するために用いられている。以下の説明においては、解説の目的のために、さまざまな具体的な詳細が、請求の範囲に記載されている主題の完全な理解を与えるために陳述されている。しかしながら、請求の範囲に記載されている主題は、これら具体的な詳細なしに実施できることは明らかである。他の事例においては、周知の構造およびデバイスは請求の範囲に記載されている主題の説明を助けるためにブロック図の形式にて示されている。
【００２２】
この明細書において用いられている「コンポーネント（ｃｏｍｐｏｎｅｎｔ）」、「ハンドラ（ｈａｎｄｌｅｒ）」、「モデル（ｍｏｄｅｌ）」、「システム（ｓｙｓｔｅｍ）」、その他は、コンピュータと関連するエンティティを指すことを意図されており、これはハードウェア、ハードウェアとソフトウェアとの組み合わせ、ソフトウェア、もしくは実行中のソフトウェアのいずれでもあり得る。例えば、コンポーネントは、これに限られるものではないが、プロセッサ上で実行しているプロセス、プロセッサ、オブジェクト、実行ファイル、実行のスレッド、プログラム、および／またはコンピュータであり得る。例示として、あるサーバ上で実行しているアプリケーションも、そのサーバも、両方ともコンポーネントであり得る。あるプロセスおよび／または実行のスレッド内には一つもしくは複数のコンポーネントが存在でき、コンポーネントは一つのコンピュータ上にローカルに配置すること、および／または二つまたはそれ以上のコンピュータ間に分散化させることもできる。更に、これらコンポーネントは、さまざまなデータ構造がその上に格納されているさまざまなコンピュータにて読み出し可能な媒体から実行することもできる。これらコンポーネントは、ローカルプロセスおよび／または遠隔プロセスを介して、例えば、一つまたは複数のデータパケットを有する信号に従って通信することができる（例えば、ローカルシステム、分散システム内の別のコンポーネントとインタラクトするコンポーネントからのデータ、および／またはネットワーク、例えば、インターネットを横断して、信号を介して他のシステムとインタラクトするコンポーネントから得られるデータに従って通信することができる）。コンピュータコンポーネントは、例えば、コンピュータにて読み出し可能な媒体上に格納されるが、この媒体には、これらに限られるものではないが、請求の範囲に記載される主題に従うと、ＡＳＩＣ（ａｐｐｌｉｃａｔｉｏｎ  ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）、ＣＤ（ｃｏｍｐａｃｔ  ｄｉｓｃ）、ＤＶＤ（ｄｉｇｉｔａｌ  ｖｉｄｅｏ  ｄｉｓｋ）、ＲＯＭ（ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ）、フロッピ（登録商標）ディスク、ハードディスク、ＥＥＰＲＲＯＭ（ｅｌｅｃｔｒｉｃａｌｌｙ  ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ）およびメモリスティックが含まれる。
【００２３】
［フィッシング攻撃の検出／防止］
図１にはフィッシング検出システム１００が示されている。システム１００が採用され、フィッシング攻撃が検出され、選択的にその攻撃を防ぐことができる。従って、システム１００は、セキュリティ上の認証情報、例えば、ユーザ名とパスワードの組み合わせを、無許可の第三者が、無許可に取得することを防止するために使用される。加えて、もしくは代替として、このフィッシング防止システム１００は、ユーザに対して、彼がフィッシング攻撃の標的となっていることを警告し、これによってコンピューティング上のセキュリティの強化を図るために用いることもできる。
【００２４】
システム１００は、フィッシング検出クライアントコンポーネント１１０とフィッシング検出サーバコンポーネント１２０とを含む。例えば、クライアントコンポーネント１１０は、アド・オンコンポーネント、例えば、ウェブブラウザ用のプラグインとして実現される。クライアントコンポーネント１１０は、更に、電子メールリーダもしくはクライアント、とりわけ、メッセージ内にＨＴＭＬ（ｈｙｐｅｒｔｅｘｔ  ｍａｒｋｕｐ  ｌａｎｇｕａｇｅ）を用いることをサポートする電子メールリーダもしくはクライアントと共に動作するように実現することもできる。
【００２５】
少なくとも一部は、フィッシング攻撃の本質に起因して、クライアントコンポーネント１１０は、あるユーザがフィッシング攻撃の標的であるか否かを判断する際の大きな価値を有する。例えば、一つの実装においては、クライアントコンポーネント１１０は、ウェブブラウザの一部であり得る。ウェブブラウザを用いると、フィッシング攻撃が非常に簡単になるが、これは、ウェブブラウザは、アタッカが、信頼できるウェブサイトの、フォーマット、レイアウト、およびコンテンツを、グラフィカルコンテンツも含めて、再生できるプラットホームを提供するためである。しかしながら、他方で、ウェブブラウザの他の機能を、企てられた攻撃を挫折させるために用いることもできる。例えば、ウェブブラウザは、表示された情報のソースに関する追加の情報、例えば、ＵＲＬ（ｕｎｉｆｏｒｍ  ｒｅｓｏｕｒｃｅ  ｌｏｃａｔｏｒ）、ＩＰ（Ｉｎｔｅｒｎｅｔ  ｐｒｏｔｏｃｏｌ）アドレス、およびユーザ入力を取得および提供するための比較的標準的なフォーマットを提供することもできる。上述の追加の情報は、コンテンツのソースを検証し、とりわけ、セキュリティ上の認証情報を含む、個人情報を保護するために用いることができる。
【００２６】
クライアントコンポーネント１１０は、保護コンポーネント１３０、被保護認証情報ストア（protected credential store）１４０、および認証情報コンポーネント１５０を含む。認証情報コンポーネント１５０は、認証情報を識別し、これを被保護認証情報ストア１４０内に格納する。
【００２７】
被保護認証情報ストア１４０は、任意のふさわしい、もしくは適当なデータストア、例えば、テキストファイル、データベース、連結リスト、もしくはデータ構造であるかもしれない。一例においては、被保護認証情報ストア１４０は、事前に選択されたエントリの最大数、例えば、２５６を含む、テキストファイルである。この事前に選択された最大値は任意であり、単に格納空間を管理するために選択される。他の値や、値を全く含まないことを選択することもできる。
【００２８】
この例においては、被保護認証情報ストア１４０内のエントリは次のフォーマットにて格納される：
Ｐ0  ＝｛ｄｏｍ，Ｈ1，Ｈ2｝
ここで、ｄｏｍは、セキュリティ上の認証情報に対するＨＴＭＬフォームもしくは他のリクエストが発信されるコンピューティングシステムのドメイン名であり、Ｈ1はパスワードのハッシュであり、Ｈ2はユーザ名のハッシュである。このリスト内のエントリを制御するために、適当なエントリ置換アルゴリズムが採用される。一つのこのようなアルゴリズムは、ＬＲＵ（ｌｅａｓｔ  ｒｅｃｅｎｔｌｙ  ｕｓｅｄ）アルゴリズムである。新たなエントリは、最近の使用が最も少ないと思われるエントリを置換する。
【００２９】
認証情報コンポーネント１５０は、更に、被保護認証情報（例えば、パスワード）が異なるサイトにて用いることを試みられるＰＲＥ（ｐａｓｓｗｏｒｄ  ｒｅｕｓｅ  ｅｖｅｎｔ、パスワード再使用イベント）を識別することができる。このＰＲＥはフィッシング検出サーバコンポーネント１２０に報告され、このコンポーネント１２０は一つもしくは複数のクライアントコンポーネント１１０からの情報を集め、フィッシング攻撃が進行中であるか否かを判断する。もしフィッシング攻撃が進行中であると判断されたときは、フィッシング検出サーバコンポーネント１２０は情報をクライアントコンポーネント１１０に送り返し、例えば、フィッシング攻撃が発生していることを警告しおよび／またはユーザによる認証情報の入力を阻止する。
【００３０】
次に図２に移り、認証情報コンポーネント１５０は、ユーザによる認証情報の使用を追跡し、特定のセキュリティ上の認証情報が使用されているか、もしくはコンピューティングシステムに提供されているか否かを判断することができる。セキュリティ上の認証情報を識別および取得するためには多様な方法を用いることができる。このような方法の詳細は大きく実装に依存する。
【００３１】
ＨＴＭＬページと関連して動作する実装、例えば、ウェブブラウザベースの実装においては、比較的な標準的なＨＴＭＬファームを使用すると、悪意のないページ上での認証情報の識別は比較的楽になる。悪意のないページとしては、パスワードもしくは類似のデータを集めている事実を目立たなくする、もしくは隠すような試みのないページが含まれる。ＨＴＭＬフォームは、ウェブブラウザからウェブサーバにパスされるユーザ名およびパスワードに対するデータ入力フィールドの使用を、ＨＴＴＰ  ＰＯＳＴコマンドを呼び出すことを通じてサポートする。このＨＴＭＬフォームのユーザ名およびパスワードフィールド内にユーザにて入力された情報は、その情報がネットワークリンクを通じてコンピューティングシステムに送信される前に、ブラウザプラグインのようなコンポーネントにより捕捉もしくは取得することができる。
【００３２】
追加の実装もしくは代替の実装においては、注意は、単に、明確に定義され、適切に命名されたフィールド内のデータエントリのみに向けられるのでなく、キーストロークにも向けられる。タイプされた各々のキーに対して、タイプされたキーに対応する文字が、ユーザインタフェース１６０のＦＩＦＯ（先入れ先出し）バッファ１７０などのデータバッファ内に置かれる。ＦＩＦＯバッファ１７０のサイズ、およびこれに対応してチェックされるべき任意のセキュリティ上の認証情報のサイズは、ある文字数、例えば、遭遇されることが期待される最長パスワードの長さ、例えば、１６に任意に制限することができる。短か過ぎるエントリを他のデータでパディングすることで、最小の値を、実装することもできる。同様に、より長いパスワードは、ここに説明される識別の目的のために、切りすてることもできる。
【００３３】
各キーストロークにアクセスすると、認証情報コンポーネント１５０は、ＦＩＦＯバッファ１７０内のデータに関して、暗号化もしくは他のセキュリティに関する動作、例えば、ハッシュ関数の計算などを遂行することができる。認証情報コンポーネント１５０は、このハッシュ関数の値を、被保護認証情報ストア１４０内のエントリと比較し、ユーザがキーボードを用いてセキュリティ上の認証情報を入力したか否かを判断することができる。ここで言及されるキーボードは、単に、一つの好ましいデータ入力ツールに過ぎない。当業者においては、この開示を読むことで、他のデータ入力方法を用いることもできることを認識できよう。
【００３４】
あるエントリを置換するとき、全てのエントリは次のようにシフトされる：
すなわち、上述のように新たなエントリＰ0を加える前に、
ｋ＝０，…２５４に対して
Ｐk+1  ＝  Ｐk 
が計算される。被保護認証情報ストア１４０内のエントリは、当初はユーザにより、信頼できるサイトに対する既知の認証情報をバッチにて入力することで投入されるか、また、時間を掛けてユーザがある信頼できるサイトに辿りつく度に累積される。
【００３５】
動作においては、クライアントコンポーネント１１０は以下のように機能する。ユーザはコンピューティングシステムにユーザインタフェース１６０を通じてアクセスする。ユーザが、ユーザインタフェース１６０に接続されているキーボードで文字をタイプすると、各文字はＦＩＦＯバッファ１７０内に格納される。認証情報コンポーネント１５０は、ＦＩＦＯバッファ１７０内に格納されている文字のストリングにアクセスし、そのストリングに関して一つもしくはそれ以上のハッシュ関数を計算する。認証情報コンポーネント１５０は、被保護認証情報ストア１４０内に格納されている被保護認証情報にアクセスする。計算されたハッシュ関数の値が被保護認証情報のリスト内のエントリと比較される。
【００３６】
［認証情報の検証］
一般的にはフィッシングの悪意という性格から、クライアントコンポーネント１１０は、フィッシャによる攻撃を受け易い。例えば、フィッシャは、偽りのログインを生成し、これにより、クライアントコンポーネント１１０を情報にて溢れさせようと試み、この結果として、誤検出（false positive）および／または検出漏れ（false negative）を誘発する。以下では、フィッシャがクライアントコンポーネント１１０上に及ぼす効果を緩和させるための幾つかのメカニズムについて議論される。
【００３７】
［パスワードが実際にタイプされたことの確認］
クライアントコンポーネント１１０は主張されているパスワードがユーザによって実際に入力された（例えば、タイプされた）ことを確認することができる。こうすることで、フィッシャが被保護認証情報ストア１４０内に複数の偽のエントリを含め、実際の被保護コンテンツを「溢れ（ｆｌｕｓｈ）」させようと試みるような攻撃を回避することができる。これを回避するためには、被保護認証情報ストア１４０内になにかを含める前に、認証情報コンポーネント１５０はそのパスワードが実際にタイプされたことを確認する。認証情報コンポーネント１５０は、上述のように進行するが、しかしながら、認証情報コンポーネントは、パスワードの長さを知っているために、ＦＩＦＯバッファ１７０を探索することで、そのパスワードが実際にタイプされたことを確認することができる。例えば、このチェックをＰＯＳＴイベントが発生したとき行うこともできる。
【００３８】
オプションとして、更に、ブルーム（Ｂｌｏｏｍ）フィルタもしくは他のハッシング技術を採用し、バッファ１７０の長さを短縮化することもできる。ブルームフィルタは確率的アルゴリズムであり、大きな集合内の構成要素を、ビットの単一の配列として表現される複数のハッシング関数を用いて迅速にテストする。スペースが課題であり、小さな誤りの確率は耐えられるときに、ブルームフィルタは効果的に機能する。加えて、ブルームフィルタにて生成されるハッシュは不可逆的であり、このためセキュリティ上の懸念を緩和する。オプションとして、探索時間を短縮させるため、およびセキュリティの懸念を軽減させるために、被保護認証情報ストア１４０内に格納されている被保護パスワードをブルームフィルタにてハッシングすることもできる。
【００３９】
［パスワード当りのユーザＩＤの量の制限］
ユーザＩＤは明確には識別されてないために、フィッシャは複数の（例えば、多量の）ランダムなユーザＩＤと単一のパスワードを有するポストを生成する。このポストが被保護認証情報ストア１４０を溢れさせるために用いられる。
【００４０】
オプションとして、クライアントコンポーネント１１０は、パスワード当りのユーザＩＤの量を制限し、こうすることで被保護認証情報ストア１４０を溢れさせようとするフィッシャの試みの効果を軽減させることもできる。一例においては、ユーザＩＤの数は各パスワード当り５個に制限される。
【００４１】
［自動的なリダイレクトの試みの報告］
検出されることを回避するために、フィッシャは、ユーザを、パスワードのタイピングが完結する前に別のページへとリダイレクトすることも、またはユーザ毎に新たな異なるページへとリダイレクトすることもある。各ユーザは、（おそらくはそのユーザに対して一意な）異なるページへと送られることとなるために、フィッシング検出サーバコンポーネント１２０は、通常ならこのフィッシングの試みを検出することはできない。
【００４２】
しかしながら、一例においては、保護コンポーネント１３０は、ある与えられた時間期間（例えばＮ秒）内における個々の自動的リダイレクトについて、フィッシング検出サーバコンポーネント１２０に報告を行う。フィッシング検出サーバコンポーネント１２０は、この挙動を複数のクライアントコンポーネント１１０を横断して追跡し、そのフィッシング攻撃の本質を判断することができる。こうして、自動的リダイレクトを報告することで、この攻撃の可能性が低減される。
【００４３】
［ページのハッシュを含める］
一例においては、クライアントコンポーネント１１０からフィッシング検出サーバコンポーネント１２０に送られるパスワード再使用イベント報告には、その報告と関連してそのページおよび／またはコード（例えば、ＨＴＭＬ）のコピーが含められる。しかしながら、例えば、ページおよび／またはＨＴＭＬコードのコピーをフィッシング検出サーバコンポーネント１２０に送ることと関連するプライバシー上の懸念を理由として、別の例においては、クライアントコンポーネント１１０は、そのページおよび／またはコードのハッシングされたバージョンを送信する。フィッシング検出サーバコンポーネント１２０は、すると、自身のバージョンを直接に（例えば、ＵＲＬを用いて）取得し、これら二つのハッシュを比較する。オプションとして、ハッシュは、リージョンベースにし、そのページが変更されたリージョンが識別できるようにすることもできる。
【００４４】
［パスワード入力に対する禁止の制限］
この例においては、あるＵＲＬおよび／またはドメインがいったん信頼できないサイトとして識別されると、ユーザは、そのサイトではいかなる被保護認証情報であっても提供することは許されなくなる。もう一つの例においては、信頼できないサイトにおいて、全ての被保護認証情報の入力を禁止する代わりに、フィッシング検出サーバコンポーネント１２０は、その信頼できないサイトにおいて標的とされている疑いのある被保護認証情報を識別し、そして、ユーザは、その信頼できないサイトにおいては、その被保護認証情報を入力することのみを禁止される。
【００４５】
［キーストロークのフォワードハッシング］
上述のように、一例においては、ＦＩＦＯバッファ１７０がアクセスされ、あるパスワードの幾つかの可能なストリング長のハッシュが計算される。もう一例においては、認証情報コンポーネント１５０は、潜在的なパスワードおよび／またはユーザＩＤのハッシュをフォワードする方法で計算し、これによって、キーストロークをバッファリングする必要性が回避される。
【００４６】
サブストリングのシーケンスのハッシュを、キーストロークをバッファリングすることなく計算する場合、基本的な概念は、上述のやり方と類似するやり方にてハッシュを計算することからなるが、しかし、ここでは順番が逆になる。例えば、被保護認証情報ストア１４０を投入するとき、保護されるべきエントリのハッシュが以下のやり方にて計算される：
／／一般的なパラメータ：
Ｎｍｉｎ＝保護されるべきストリングの最小長（例えば、６）
Ｎｍａｘ＝保護されるべきストリングの最大長（例えば、１６）
Ｍ＝ある与えられた時間期間（例えば、１０ｍｓ）内で計算することができるセキュアハッシュアルゴリズム（ｓｅｃｕｒｅ  ｈａｓｈ  ａｌｇｏｒｉｔｈｍ、ＳＨＡ）−１の演算の数
Ｄ（Ｎ）＝ハッシュの計算において使用されるべきＮ文字ストリング
ハッシュを計算するためには、Ｄ（Ｎ）の最初の文字が得られ、任意のコンピュータに特定のソルトが追加され、ＳＨＡ−１を用いてハッシュが計算される。その後、一度に一つずつ、最初のＮｍｉｎ文字の各々が加えられ、各々の文字が追加された後にＳＨＡ−１が計算される。Ｎｍｉｎ文字の追加が完了した時点では、ＳＨＡ−１がＭ回計算される。
【００４７】
次の文字がこの結果に加えられ、ＳＨＡ−１がＭ／２回計算される。これが、全てのＮ個の文字が組み込まれるまで、反復される。その後、（もし存在するときには）任意のエントリに特定なソルト（salt）が加えられ、ＳＨＡ−１が最後にもう一度だけ計算され、これが被保護認証情報ストア１４０内に格納される。
【００４８】
次に、探索の段階の際に、認証情報コンポーネント１５０は、このハッシュを、ランダムな情報と０からｎＭａｘ−１個のキーストロークにてＮｍａｘ個のハッシュが得られるように初期化する。認証情報コンポーネント１５０は（例えば、キーストロークがタイプされる毎に）以下を遂行する：
At each key pressed:
For h = NS:-l :l
Hash(h) = Append the just-typed key to Hash(h), and compute SHA-I once;
If (h > Nmin )
Hash(h) = Compute SHA-I of Hash(h) (Mλ(-2h) -I) times
Compute hash with each entry specific salt, and check against table; Report if hit ^
End
If (h < Nmax)
Hash(h+l) = Hash(h);
End
End
End
【００４９】
上述のメカニズムは、Ｎｍａｘ個の部分ハッシュ以外のいかなる情報も格納しないことに注意する。更に、Ｎｍａｘ個の文字がタイプされた後に、そのハッシュは破棄される。つまり、キーストロークのバッファは全く存在しない。認証情報コンポーネント１５０は、これらハッシュを、被保護認証情報ストア１４０内に格納されているハッシングされた被保護認証情報と比較する。
【００５０】
［ユーザＩＤの使用］
一つの例においては、フィッシングの検出は、ユーザＩＤに集中され、パスワードに関する情報を格納することに関する懸念を軽減させる。この例においては、ユーザＩＤのハッシュが計算され、被保護認証情報ストア１４０内に格納される。
【００５１】
ユーザがタイプするにつれて、タイプされた情報のハッシュが計算され、被保護認証情報ストア１４０内のエントリと比較される。ヒットが見つかると、クライアントコンポーネント１１０は、そのイベントをフィッシング検出サーバコンポーネント１２０（例えば、集中サーバ）に報告する。フィッシング検出サーバコンポーネント１２０は、この情報を集積し、利用可能な他の情報と結合することで、疑いのあるサイトの信頼性に関する判断に到達する。
【００５２】
ユーザＩＤはフィッシング攻撃を受け易い。例えば、あるフィッシングサイトは、フィッシング行為を覆い隠すために、ユーザに、バックスペースキーおよび／または再入力情報を使用するように誘導する。フィッシングサイトにおいて、ユーザは、ユーザＩＤを入力するように催促されることもある。ユーザに（例えば、エントリ欄内に）フィードバックを送ることで、フィッシングサイトは、ユーザがバックスペースキーを使用するように仕向け、ユーザによって入力されなかった文字を追加することもできる。加えて、フィードバックをユーザに送ることで、フィッシングサイトは、意図的に文字を省き、ユーザが文字を再入力するように仕向けることもできる。両方のシナリオにおいて、ＦＩＦＯバッファ１７０を調べても、フィッシングサイトが実際に受信した情報の一致はできない。
【００５３】
従って、一例においては、最後のＮ個の文字のハッシュを計算する代わりに、認証情報コンポーネント１５０は、ユーザＩＤ（および／またはパスワード）のハッシングを、可能性のある反復されたおよび／または削除された文字が含まれるように分岐させる（branch）ことができる。例えば、バックスペースが押されると、そのバックスペースは偽であることを想定する追加の探索ブランチが生成される。追加的に、および／または代替的に、反復文字がタイプされたときにも、認証情報コンポーネントは、同様にしてブランチを生成することもできる。オプションとして、認証情報コンポーネント１５０は、（例えば、被保護認証情報ストア１４０内に挿入される前の）元のパスワード上と、キーボード監視中の両方の、反復された文字を結合（および除去する）というバリエーションを採用することもできる。
【００５４】
［パスワードに加えてのユーザＩＤのチェック］
一般的には、パスワードはユーザには送り返されないために、すなわちキーストロークはユーザには表示されないために、通常は、フィッシャにとっては、パスワードに関してこのような錯乱させる攻撃を誘導することはより困難である。しかしながら、一例においては、認証情報コンポーネント１５０は、疑いのあるユーザＩＤのハッシングを遂行し、被保護認証情報ストア１４０を探索する際にこれを採用する。この例においては、ユーザＩＤに基づくフィッシングに関する疑いの報告もフィッシング検出サーバコンポーネント１２０に提供される。このように両方を組み合わせて使用することの長所は、もし不適切なユーザＩＤの再使用が検出されたときには、（例えば、パスワードがタイプされる前に）初期警告を与えることができることである。
【００５５】
［フィッシング検出サーバコンポーネント上への被保護認証情報の格納］
図３にはフィッシング検出システム３００が示されている。このシステム３００を採用すると、フィッシング検出のローミングが可能となる。システム３００はフィッシング検出サーバコンポーネント３１０を含み、これは、保護コンポーネント３２０と、システム３００の一つもしくは複数のユーザに対して被保護認証情報を格納する被保護認証情報ストア３３０とを含む。
【００５６】
保護コンポーネント３２０は、クライアントコンポーネント３５０から情報を認証情報コンポーネント３４０から受信する。この受信された情報と被保護認証情報ストア３３０内に格納されている情報とに基づいて、認証情報コンポーネント３４０は、上述のようにしてフィッシング攻撃が進行中であるか（および／または既に起こってしまったか）どうかを判断する。
【００５７】
被保護認証情報をサーバコンポーネント３１０に格納することで、被保護認証情報をローカルに格納することと関連するプライバシーおよび／またはセキュリティ上の懸念を軽減することができる。更に、システム３００のユーザは、他のコンピュータ（例えば、インターネットカフェ、友達のコンピュータなど）に「ローミング（ｒｏａｍ）」することができ、この場合でも、そのユーザの認証情報に対するフィッシングの検出の利益を得ることができる。例えば、ユーザは（例えば、安全に）保護コンポーネント３２０にログインし、その後、そのユーザにて入力される情報に関してフィッシング検出を遂行することもできる。
【００５８】
システム１００、クライアントコンポーネント１１０、フィッシング検出サーバコンポーネント１２０、保護コンポーネント１３０、被保護認証情報ストア１４０、認証情報コンポーネント１５０、ＦＩＦＯバッファ１７０、ユーザインタフェース１６０、システム３００、フィッシング検出サーバコンポーネント３１０、保護コンポーネント３２０、被保護認証情報ストア３３０、認証情報コンポーネント３４０および／またはクライアントコンポーネント３５０は、その用語がここで定義されているところのコンピュータコンポーネントであり得ることを理解されるべきである。
【００５９】
次に、図４から６に移り、これらには請求の範囲に記載される主題に従って実施される方法について簡単に示されている。説明を簡素化する目的で、これら方法は一連のブロックとして、示され、説明されるが、請求の範囲に記載される主題は、これらブロックの順番により制限されるものではなく、幾つかのブロックは、請求の範囲に記載される主題によると、ここに示され、説明されるそれとは、異なる順番にて行うことも、および／または他のブロックと同時的に行うこともできることを理解されるべきである。その上、示されたブロックの全てが、その方法を実施する必要はない。
【００６０】
請求の範囲に記載される主題は、一つまたは複数のコンポーネントにて実行される、コンピュータにて実行可能なインストラクション、例えばプログラムモジュールの一般的な文脈で説明することができる。一般には、プログラムモジュールには、特定のタスクを遂行する、または特定の抽象データタイプを実現するルーチン、プログラム、オブジェクト、データ構造等が含まれる。一般的には、プログラムモジュールの機能は、多様な実施形態において要求されるように組み合わせることも、または分散させることもできる。
【００６１】
図４には、フィッシング攻撃を検出する方法４００が示されている。４１０において、潜在的な認証情報が受信される。４２０において、実際に（例えば、ユーザにより）入力されたキーストロークのバッファが調べられる。４３０において、潜在的な認証情報が入力されたキーストロークと一致するか否かについての判定がなされる。
【００６２】
もし、４３０における判定がＮＯであるときは、４４０において、その潜在的な認証情報は被保護認証情報ストアに格納されることはなく、それ以上の処理は発生しない。もし、４３０における判定がＹＥＳであるときは、４５０において、その潜在的な認証情報は被保護認証情報ストアに格納され、それ以上の処理は発生しない。
【００６３】
図５に移り、フィッシング攻撃を検出する方法５００が示されている。５１０において、信頼できないサイトが識別される。５２０において、フィッシングの標的が判断される。５３０において、その信頼できないサイトにおいてその標的と関連する被保護認証情報の入力が禁止される。
【００６４】
次に、図６にはフィッシング攻撃を検出する方法６００が示されている。６１０において、ツリーが初期化される。６２０において、潜在的な被保護認証情報に対するキーストロークが受信される。
【００６５】
６３０において、そのキーストロークが二重の入力もしくはバックスペースキーであるか否かの判断がなされる。もし６３０における判断がＮＯであるときは、処理は６４０で継続する。もし６３０における判断がＹＥＳであるときは、６５０において、ツリーにブランチが追加され、処理は６４０で継続する。
【００６６】
６４０において、キーストロークがツリーに加えられ、最大パスワード長を超える全てのブランチがツリーから除去される。６６０において、このツリーに関してハッシュが計算される。６７０において、このツリー内の任意のハッシュが被保護認証情報のハッシュと一致するか否か判断される。６８０において、このシステムが完結したか（例えば、ツリーのハッシュが被保護認証情報のハッシュと一致するか、および／またはその入力の最後のキーストロークに達したか）否かの判断がなされる。もし６８０における判断がＮＯであるときは、処理は６２０から開始される。もし６８０における判断がＹＥＳであるときは、更なる処理は発生しない。
【００６７】
請求の範囲に記載の主題のさまざまな形態に対する追加のコンテキストを提供するために、図７および以下の説明は適当な動作環境７１０の簡単な一般的説明を与えることを意図される。請求の範囲に記載の主題は、一つまたは複数のコンピュータもしくは他のデバイスにて実行される、コンピュータにて実行可能なインストラクション、例えば、プログラムモジュールの一般的コンテキストで説明されるが、当業者においては理解できるように、請求の範囲に記載の主題は、他のプログラムモジュールとの組み合わせによっても、および／またはハードウェアとソフトウェアとの組み合わせとしても実現することができる。一般には、しかしながら、プログラムモジュールには、特定のタスクを遂行する、または特定のデータタイプを実現するルーチン、プログラム、オブジェクト、コンポーネント、データ構造その他が含まれる。動作環境７１０は、適当な動作環境の単に一例に過ぎず、請求の範囲に記載の主題の用途または機能の範囲に関する如何なる制限をも示唆することを意図するものでもない。請求の範囲に記載の主題と共に用いるのに適当な他の周知のコンピュータシステム、環境、および／または構成には、これらに限られるものではないが、パーソナルコンピュータ、携帯もしくはラップトップデバイス、マルチプロセッサシステム、マルチプロセッサに基づくシステム、プログラマブル消費者向けエレクトロニクス、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、上述のシステムまたはデバイスを含む分散コンピューティング環境、その他が含まれる。
【００６８】
図７に示されるように、例示的環境７１０は、コンピュータ７１２を含む。コンピュータ７１２には、処理ユニット７１４、システムメモリ７１６、およびシステムバス７１８が含まれる。システムバス７１８は、これに限られるものではないが、システムメモリ７１６を含むシステムコンポーネントを、処理ユニット７１４に結合する。処理ユニット７１４は、さまざまな市販のプロセッサのいずれであっても良い。処理ユニット７１４として、ジュアルマイクロプロセッサおよび他のマルチプロセッサアーキテクチャを採用することもできる。
【００６９】
システムバス７１８は、幾つかのタイプのバス構造の任意の一つであり得るが、これらには、メモリバスもしくはメモリコントローラ、周辺バスもしくは外部バス、および／または任意のさまざまな市販のバスアークテクチャを使用するローカルバスが含まれ、これらバスアーキテクチャには、これに制限されるものではないが、８−ビットバス、ＩＳＡ（Ｉｎｄｕｓｔｒｉａｌ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ：産業標準アーキテクチャ）、ＭＳＡ（Ｍｉｃｒｏ−Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ：マイクロチャネルアーキテクチャ）、ＥＩＳＡ（Ｅｘｔｅｎｄｅｄ  ＩＳＡ：拡張ＩＳＡ）、ＩＤＥ（Ｉｎｔｅｌｌｉｇｅｎｔ  Ｄｒｉｖｅ  Ｅｌｅｃｔｒｏｎｉｃｓ：インテリジェントドライブエレクトロニクス）、ＶＬＢ（ＶＥＳＡ  Ｌｏｃａｌ  Ｂｕｓ：ＶＥＳＡローカルバス）、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ：周辺コンポーネントインタコネクト）、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ：ユニバーサルシリアルバス）、ＡＧＰ（Ａｄｖａｎｃｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ：アドバンストグラフィックスポート）、ＰＣＭＣＩＡ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ  Ｍｅｍｏｒｙ  Ｃａｒｄ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ａｓｓｏｃｉａｔｉｏｎ：パーソナルコンピュータメモリカード国際連合）バス、およびＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍｓ  Ｉｎｔｅｒｆａｃｅ：スモールコンピュータシステムインタフェース）が含まれる。
【００７０】
システムメモリ７１６は揮発性メモリ７２０と不揮発性メモリ７２２とを含む。不揮発性メモリ７２２内には、例えば、始動の際に、コンピュータ７１２内の要素間で情報を転送するための基本ルーチンを含む、ＢＩＳＯ（基本入／出力システム）が格納される。例示として、これに限られるものではないが、不揮発性メモリ７２２としては、ＲＯＭ（読み出し専用メモリ）、ＰＲＯＭ（プログラマブルＲＯＭ）、ＥＰＲＯＭ（電気的にプログラマブルなＲＯＭ）、ＥＥＰＲＯＭ（電気的に消去可能なＲＯＭ）、もしくはフラッシュメモリが含まれる。揮発性メモリ７２０としては、ＲＡＭ（ランダムアクセスメモリ）が含まれるが、これは外部キャッシュメモリとして機能する。例示として、これに限られるものではないが、ＲＡＭは多くの形態にて入手可能であり、例えば、ＳＲＡＭ（同期ＲＡＭ）、ＤＲＡＭ（ダイナミックＲＡＭ）、ＳＤＲＡＭ（同期ＤＲＡＭ）、ＤＤＲ  ＳＤＲＡＭ（ダブルデータレートＳＤＲＡＭ）、ＥＳＤＲＡＭ（エンハンスドＤＲＡＭ）、ＳＬＤＲＡＭ（ＳｙｎｃｈｌｉｎｋＤＲＡＭ：同期リンクＤＲＡＭ）、およびＤＲＲＡＭ（ｄｉｒｅｃｔ  Ｒａｍｂｕｓ  ＲＡＭ）が含まれる。
【００７１】
コンピュータ７１２は、更に、取り外し可能／取り外し不能、揮発性／不揮発性コンピュータ記憶媒体を含む。図７は、例えば、ディスク記憶７２４を含む。ディスク記憶７２４には、これに限られるものではないが、磁気ディスクドライブ、フロッピディスクドライブ、テープドライブ、Ｊａｚドライブ、Ｚｉｐドライブ、ＬＳ−１００ドライブ、フラッシュメモリカード、もしくはメモリスティックが含まれる。加えて、ディスク記憶７２４は、別個にもしくは他の記憶媒体と組み合わせて記憶媒体を含むこともでき、これには、これに限られるものではないが、光学ディスクドライブ、例えば、ＣＤ−ＲＯＭ（コンパクトディスクＲＯＭデバイス）、ＣＤ−Ｒドライブ（ＣＤレコーダブルドライブ）、ＣＤ−ＲＷドライブ（ＣＤ再書き込み可能なドライブ）もしくはＤＶＤ−ＲＯＭ（デジタルバーサタイルディスクＲＯＭドライブ）が含まれる。ディスク記憶デバイス７２４のシステムバス７１８への接続を容易にするために、一般的には、取り外し可能もしくは取り外し不能なインタフェース、例えばインタフェース７２６が用いられる。
【００７２】
図７は、ユーザと、適当な動作環境７１０において説明された基本コンピュータリソースとの間の媒介として働くソフトウェアを説明するものと理解されるべきである。このようなソフトウェアは、オペレーティングシステム７２８を含む。オペレーティングシステム７２８は、これはディスク記憶７２４上に格納されるが、コンピュータシステム７１２のリソースを制御および割り当てる働きをする。システムアプリケーション７３０は、オペレーティングシステム７２８による、プログラムモジュール７３２、およびシステムメモリ７１６内にもしくはディスク記憶７２４上に格納されているプログラムデータ７３４を通じてのリソースの管理の利益をうまく利用する。この請求の範囲に記載の主題は、さまざまなオペレーティングシステムもしくはオペレーティングシステムの組み合わせにて実現できることを理解されるべきである。
【００７３】
ユーザは入力デバイス７３６を通じてコマンドもしくは情報をコンピュータ７１２内に入力する。入力デバイス７３６には、これに限られるものではないが、ポインティングデバイス、例えば、マウス、トラックボール、スタイラス、タッチパッド、キーボード、マイクロホン、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナ、ＴＶチューナカード、デジタルカメラ、デジタルビデオカメラ、ウェブカメラ、その他が含まれる。これらおよび他の入力デバイスは、インタフェースポート７３８を介して、システムバス７１８を通じて、処理ユニット７１４に接続する。インタフェースポート７３８には、例えば、シリアルポート、パラレルポート、ゲームポート、およびＵＳＢ（ユニバーサルシリアルバス）が含まれる。出力デバイス７４０は、入力デバイス７３６と同一の幾つかのタイプのポートを用いる。こうして、例えば、ＵＳＢポートが、入力をコンピュータ７１２に提供するためと、コンピュータ７１２からの情報を出力デバイス７４０に出力するために用いられる。出力アダプタ７４２が提供されているが、これは、これら出力デバイス７４０の間には、特別なアダプタを必要とする、モニタ、スピーカ、およびプリンタなどのような幾つかの出力デバイス７４０が存在することを示す。出力アダプタ７４２は、例示として、これに制限されるものではないが、出力デバイス７４０とシステムバス７１８との間の接続の手段を提供するビデオおよび音響カードを含む。他のデバイスおよび／またはデバイスの系統は、例えば、遠隔コンピュータ７４４のように、入力能力と出力能力の両方を提供することに注意すべきである。
【００７４】
コンピュータ７１２は、一つもしくはそれ以上の遠隔コンピュータ、例えば、遠隔コンピュータ７４４への論理接続を用いて、ネットワーク化された環境内において動作することもできる。遠隔コンピュータ７４４は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ワークステーション、マイクロプロセッサベースの家電、ピアデバイス、もしくは他の一般的なネットワークノードその他であるため、一般的には、コンピュータ７１２との関連で説明された多くもしくは全ての要素を含む。簡単化の目的で、遠隔コンピュータ７４４の所にはメモリストレージ７４６のみが示されている。遠隔コンピュータ７４４は、論理的に、ネットワークインタフェース７４８を通じて、そして、次に、物理的に、通信接続７５０を介して、コンピュータ７１２に接続される。ネットワークインタフェース７４８には、通信ネットワーク、例えば、ＬＡＮ（ローカルエリアネットワーク）およびＷＡＮ（ワイドエリアネットワーク）が包含される。ＬＡＮ技術としては、ＦＤＤＩ（Ｆｉｂｅｒ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｄａｔａ  Ｉｎｔｅｒｆａｃｅ）、ＣＤＤＩ（Ｃｏｐｐｅｒ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｄａｔａ  Ｉｎｔｅｒｆａｃｅ）、Ｅｔｈｅｒｎｅｔ（登録商標）／ＩＥＥＥ  ８０２．３、Ｔｏｋｅｎ  Ｒｉｎｇ／ＩＥＥＥ  ８０２．５その他が含まれる。ＷＡＮ技術には、これに限られるものではないが、ポイント・トゥ・ポイントリンク、ＩＳＤＮ（Ｉｎｔｅｇｒａｔｅｄ  Ｓｅｒｖｉｃｅｓ  Ｄｉｇｉｔａｌ  Ｎｅｔｗｏｒｋｓ）およびこのバリエーションのような回路交換網、パケット交換網、およびＤＳＬ（Ｄｉｇｉｔａｌ  Ｓｕｂｓｃｒｉｂｅｒ  Ｌｉｎｅｓ）が含まれる。
【００７５】
通信接続７５０は、ネットワークインタフェース７４８をバス７１８に接続するために採用されているハードウェア／ソフトウェアを指す。通信接続７５０は、図解を簡潔にするために、コンピュータ７１２の内側に示されているが、これはコンピュータ７１２に対して外側に配置しても良い。ネットワークインタフェース７４８への接続のために必要なハードウェア／ソフトウェアには、単に例示的な目的で、外側におよび内側に配置する技術の両方、例えば、正規の電話等級のモデム、ケーブルモデムおよびＤＳＬモデム、ＩＳＤＮアダプタ、およびＥｔｈｅｒｎｅｔ（登録商標）カードが含まれる。
【００７６】
図８は請求の範囲に記載の主題がインタラクトする例示的なコンピューティング環境８００の概略ブロック図である。システム８００は、一つもしくは複数のクライアント８１０を含む。クライアント８１０は、ハードウェアおよび／またはソフトウェア（例えば、スレッド、プロセス、コンピューティングデバイス）であり得る。システム８００は、更に、一つもしくは複数のサーバ８３０を含む。サーバ８２０は、ハードウェアおよび／またはソフトウェア（例えば、スレッド、プロセス、コンピューティングデバイス）であり得る。サーバ８３０は、例えば、変換を、この主題の発明を採用することで、遂行するためのスレッドを収容する。
【００７７】
クライアント８１０とサーバ８３０との間の一つの可能な通信は、二つもしくはそれ以上のコンピュータプロセス間で伝送されるように適合化されたデータパケットの形式であり得る。システム８００は、通信フレームワーク８５０を含み、これはクライアント８１０とサーバ８３０との間の通信を容易にするために採用される。クライアント８１０は、一つもしくは複数のクライアントデータストア８６０に動作可能に接続されるが、これはクライアント８１０に対してローカルに情報を格納するために採用される。同様にして、サーバ８３０は、一つもしくは複数のサーバデータストア８４０に動作可能に接続されるが、これはサーバ８３０に対してローカルに情報を格納するために採用される。
【００７８】
上で説明された事柄には、請求の範囲に記載されている主題の例が含まれる。勿論、請求の範囲に記載される主題を説明する目的のために、コンポーネントもしくは方法の個々の考え得る全ての組み合わせを説明することは不可能であるが、しかし、当業者においては、請求の範囲に記載されている主題の更なる多くの組み合わせおよび置換を認識できよう。従って、請求の範囲に記載される主題は、これら全ての代替、修正、およびバリエーションを包含することを意図され、これらも添付の特許請求項の精神および範囲内に入るものである。更に、「含む（ｉｎｃｌｕｄｅｓ）」なる用語は、詳細な説明もしくは特許請求の範囲のいずれかにおいて用いられているときに関する限り、このような用語は、「備える（ｃｏｍｐｒｉｓｉｎｇ）」なる用語と同様に包含的に解釈されることを意図される。そして、「備える（ｃｏｍｐｒｉｓｉｎｇ）」なる用語は、請求項内で用いられているときは、移行句（ｔｒａｎｓｉｔｉｏｎａｌ  ｗｏｒｄ）として採用されているものと解釈される。
【図面の簡単な説明】
【００７９】
【図１】フィッシング検出システムのブロック図である。
【図２】フィッシング検出クライアントコンポーネントのブロック図である。
【図３】フィッシング検出システムのブロック図である。
【図４】フィッシング攻撃を検出する方法の流れ図である。
【図５】フィッシング攻撃を検出する方法の流れ図である。
【図６】フィッシング攻撃を検出する方法の流れ図である。
【図７】例示的動作環境を示す図である。
【図８】例示的ネットワーキング環境を示す図である。
【図１】
0005382850.tif 000002
【図２】
0005382850.tif 000003
【図３】
0005382850.tif 000004
【図４】
0005382850.tif 000005
【図５】
0005382850.tif 000006
【図６】
0005382850.tif 000007
【図７】
0005382850.tif 000008
【図８】
0005382850.tif 000009