(57)【特許請求の範囲】
【請求項１】
ドメイン名サーバー（DNS）攻撃の検出のためにコンピュータ実装される方法であって：
クライアント・コンピュータによって、サーバーからデジタル証明書を受信する段階であって、前記デジタル証明書は、前記サーバーの完全修飾ドメイン名および前記サーバーの関連する第１のIPアドレスを含む、段階と；
前記クライアント・コンピュータによって、該クライアント・コンピュータ上のTCP/IPプロトコル・スタックから少なくとも、前記サーバーに接続するのに使用される第２のIPアドレスを抽出する段階と；
前記クライアント・コンピュータによって、前記デジタル証明書からの前記第１のIPアドレスが、前記クライアント・コンピュータ上の前記TCP/IPプロトコル・スタックから抽出された前記第２のIPアドレスに合致するかどうかを判定する段階と；
前記第１のIPアドレスと前記第２のIPアドレスが合致しない場合に、前記クライアント・コンピュータによって、前記DNSにおける問題を検出する段階と；
前記第１のIPアドレスと前記第２のIPアドレスが合致する場合に、前記クライアント・コンピュータによって、前記第２のIPアドレスを使用して前記サーバーに接続する段階とを含み、
前記DNSにおける問題の検出に際して、前記第１のIPアドレスを使って前記サーバーにクライアント通信をルーティングする段階をさらに含む、
コンピュータ実装される方法。
【請求項２】
前記クライアント・コンピュータによって、ウェブサイトとのセッションを通じてサーバーから取得される第２のドメイン名への問い合わせを実行する段階であって、前記デジタル証明書はさらに前記サーバーによって参照される従属物として使用される複数のドメイン名を含む、段階と；
前記第２のドメイン名のハッシュ値が前記サーバーによって参照される従属物として使用される前記複数のドメイン名のハッシュ値のいずれかに合致するかどうかを判定する段階と；
前記第２のドメイン名のハッシュ値が前記サーバーによって参照される従属物として使用される前記複数のドメイン名のハッシュ値のいずれにも合致しない場合に欺瞞内容の注入を検出する段階と
をさらに含む、請求項１記載のコンピュータ実装される方法。
【請求項３】
前記サーバーによって前記デジタル証明書を生成する段階と；
前記サーバーによって前記デジタル証明書を前記クライアント・コンピュータに送信する段階と
をさらに含む、請求項１記載のコンピュータ実装される方法。
【請求項４】
前記サーバーがウェブ・サーバーであり、前記サーバーの前記第１のIPアドレスがウェブマスターによって前記デジタル証明書中に挿入される、
請求項１記載のコンピュータ実装される方法。
【請求項５】
ドメイン名サーバー（DNS）攻撃の検出のために、コンピュータ実装される方法であって：
クライアント・コンピュータによって、サーバーからデジタル証明書を受信する段階であって、前記デジタル証明書は、前記サーバーによって参照される従属物として使用される第１のドメイン名のリストと、前記サーバーの完全修飾ドメイン名に関連する第１のIPアドレスと、スクリプト・コードのハッシュ値または一意的なリソース・コンテンツのリストのフィンガープリントのうちの少なくとも一つを含む、段階と；
前記クライアント・コンピュータによってウェブ・ページをブラウズし、前記サーバーによって参照される一意的なドメイン名、ウェブ・ページによって使用されるコードまたは前記ウェブ・ページによって参照される一意的なリソース・コンテンツを含む、問い合わせデータを取得する段階と；
前記クライアント・コンピュータによって、前記ウェブ・ページをブラウズするウェブサイトとのセッションを通じて注入されたドメイン名の検出を行う段階であって、前記クライアント・コンピュータにより自動的に問い合わせされた複数のドメイン名のハッシュ値を、前記デジタル証明書に含まれる、従属物として使用される前記第１のドメイン名からの複数のドメイン名のハッシュ値と照合し、第２のIPアドレスを前記デジタル証明書に含まれる前記第１のIPアドレスのうちの少なくとも１つと照合し、前記ウェブ・ページによって使用される前記コードのハッシュ値を前記デジタル証明書に含まれる前記スクリプト・コードのハッシュ値と照合し、前記ウェブ・ページによって参照される一意的なリソース・コンテンツのフィンガープリントを前記デジタル証明書に含まれる前記フィンガープリントと照合し、いずれかの照合で相違が存在するとき、注入されたドメイン名が検出される、段階と、
を含み、前記第２のIPアドレスは、前記クライアント・コンピュータのブラウザにより自動的に問い合わせされたドメイン名と関連付けられ、前記クライアント・コンピュータ上のTCP/IPプロトコル・スタックから抽出される、
コンピュータ実装される方法。
【請求項６】
前記デジタル証明書が前記クライアント・コンピュータ上のソフトウェアまたはクライアント・ウェブ・ブラウザに明かされる、請求項５記載のコンピュータ実装される方法。
【請求項７】
前記注入されたドメイン名への問い合わせの実行を、前記注入されたドメイン名への問い合わせが前記クライアントのネットワーク層に到達することを防ぐことまたは前記注入されたドメイン名への問い合わせにローカル・コンテンツを使って答えることによって防ぐ段階をさらに含む、請求項５記載のコンピュータ実装される方法。
【請求項８】
前記クライアント・コンピュータによる欺瞞内容の受領を、前記問い合わせが前記クライアント・コンピュータのネットワーク層に到達することを防ぐことまたは前記問い合わせにローカル・コンテンツを使って答えることの少なくとも一方によって防ぐ段階をさらに含む、
請求項２記載のコンピュータ実装される方法。
【発明の詳細な説明】
【技術分野】
【０００１】
〈関連出願への相互参照〉
本願は、2007年8月6日に出願された「System  and  Methods  for  Online  Authentication  and  Data  Transfer  Protection」と題する米国仮特許出願第60/954,259号および2007年9月19日に出願された「System  and  Methods  for  Protection  of  Online  Data  Transfer  and  Anti-phishing  Authentication」と題する米国仮特許出願第60/973,590号の優先権を主張するものである。これらの出願の開示は参照によって本稿に組み込まれる。
【背景技術】
【０００２】
オンラインでのID窃盗（identity  theft〔身元情報窃盗〕）、金融情報窃盗、フィッシング、ウイルス、スパイウェアおよびその他のデータ通信関係の悪意ある活動は、企業、個人、学術機関および政府に毎年何十億ドルものコストをかけさせている。さらに、そのような活動は著しい生産性の損失、迷惑の原因でもあり、オンライン通信の使用を阻害することもありうる。そのような活動は商用サーバーのユーザーを悩ませるのみならず、政府コンピュータ・システム、バンキング・コンピュータ・システムおよびオンライン・バンキング・プラットフォーム、学術的なコンピュータ・システムおよびオンライン小売プラットフォームを含む他のネットワークおよびシステムのユーザーにとっても主要な懸念となっている。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
ネットワーク・データ通信のコンテキストにおけるユーザー識別、認証ならびに攻撃およびフィッシング計画の防止のためにはさまざまな方法およびシステムが提案されている。これらの既知の技法は典型的には、洗練された悪意あるおよび／または犯罪的活動に対しては不十分であることが立証されている少数の簡単な機構に基づいている。さらに、これらの既知の技法は、技法および方法を急速に調節する能力を実証している悪意あるエンティティの技術および技量の進歩に適応することができない。
【０００４】
さらに、多くの形のデータ通信、フィッシングおよびセキュリティ関係の脅威を検出するための、および検出された脅威を無効にしおよび／またはその効果を矯正することによってそのような検出に反応するための堅牢かつ適応的なシステムおよび方法が必要とされている。
【課題を解決するための手段】
【０００５】
本願のある側面は、コンピュータ装置を使うデータ通信の方法であって、データ通信コンポーネントの、第一の通信プロトコルの定義を含む第一のバージョンをアップグレードするかどうかを決定し、前記データ通信コンポーネントの前記第一のバージョンをアップグレードすると決定された場合にはセキュア・サーバーに接続し、認証検査を実行し、前記認証検査が成功した場合には前記セキュア・サーバーから、第二の通信プロトコルの定義を含む前記データ通信コンポーネントの第二のバージョンを少なくとも含むパッケージを受信し、パッケージに埋め込まれているデジタル署名が有効かどうかを判定し、前記デジタル署名が有効である場合には前記データ通信コンポーネントの前記第二のバージョンをインストールし、前記データ通信コンポーネントの前記第二のバージョンを実行し、前記データ通信コンポーネントの前記第二のバージョンおよび前記第二の通信プロトコルを利用してデータ通信を実行する、ことを含む方法を提供する。本方法において、データ通信コンポーネントの第一のバージョンをアップグレードするかどうかを決定することは、前記データ通信コンポーネントの前記第一のバージョンの以前の実行の時刻から現在時刻までに経過した時間を判別し、経過時間を所定のトリガー時間値と比較し、経過時間が前記トリガー時間値に等しいかそれより大きい場合には前記セキュア・サーバーに接続することを含みうる。前記経過時間の比較は、ネットワーク時間プロトコルを使った現在時刻の判別を含んでいてもよい。本方法は、前記認証検査が成功でないまたは前記デジタル署名が有効でない場合にアラートを生成し、そのアラートを前記コンピュータ装置のユーザー、前記セキュア・サーバーのユーザーまたは調査サーバーのうちの少なくとも一に送信することを含んでいてもよい。前記セキュア・サーバーのアドレスは直接IPアドレスのプール内に位置されていてもよいし、直接IPアドレスの前記プールは前記セキュア通信コンポーネントの前記第一のバージョン内に記憶される。前記認証検査は、零知識プロトコル、SSL証明書または非対称暗号法技法のうちの少なくとも一つの使用を含んでいてもよい。前記パッケージはさらに、前記データ通信コンポーネントの前記第二のバージョンの少なくとも一つの従属物を含む。前記データ通信コンポーネントの前記第二のバージョンは、前記データ通信コンポーネントの前記第一のバージョンのソース・コードの修正を含んでいてもよく、前記修正はソース・コード・レベル多形（polymorph）エンジンによって生成される。前記ソース・コード・レベル多形エンジンは、非機能命令を使ったノイズの挿入、変数の埋め込み、数学的関数の埋め込み、値の埋め込み、ジャンプの挿入、時間シフト遅延の挿入、前記ソース・コードのランダムな並べ替え、APIへの参照およびコール・ラッピング（call  wrappings）の挿入、トレーサー検出コードの挿入、サブスレッド生成器の挿入、偽コードの挿入または自動保護（auto-protection）システムの挿入のうちの少なくとも一つを実行する。
【０００６】
本願のあるさらなる側面は、コンピュータ装置を使ってデータ通信コンポーネントの第二のバージョンを生成する方法であって、乱数のプールを生成し、暗号鍵のプールを生成し、前記乱数のプールを使ってデータ通信コンポーネントの第一のバージョンのソース・コードを修正し、等価関数のライブラリをリンクし、修正されたソース・コードをコンパイルし、コンパイルされたソース・コードをシールドし、シールドされたコンパイルされたソース・コードに署名し、従属物を埋め込むことを含む方法、を提供しうる。前記データ通信コンポーネントの前記第二のバージョンは、前記データ通信コンポーネントの前記第一のバージョンのソース・コードの修正を含んでいてもよく、前記修正はソース・コード・レベル多形（polymorph）エンジンによって生成されてもよい。前記ソース・コード・レベル多形エンジンは、非機能命令を使ったノイズの挿入、変数の埋め込み、数学的関数の埋め込み、値の埋め込み、ジャンプの挿入、時間シフト遅延の挿入、前記ソース・コードのランダムな並べ替え、APIへの参照およびコール・ラッピング（call  wrappings）の挿入、トレーサー検出コードの挿入、サブスレッド生成器の挿入、偽コードの挿入または自動保護（auto-protection）システムの挿入のうちの少なくとも一つを実行してもよい。シールドは、バイナリー・レベル・コード保護器によって実行されてもよく、前記バイナリー・レベル・コード保護器はバイナリー・レベル多形エンジンを含んでいてもよい。前記バイナリー・レベル多形エンジンは、コード保護機能の注入、アンチトレーサーの注入、アンチデバッガ・トラップの注入、バイナリー・コードの圧縮、バイナリー・コードの暗号化、ヘッダの書き換え、リソースの書き換えまたはローダの書き換えのうちの少なくとも一つを実行してもよい。コンパイルされたソース・コードの署名は、編集者（editor）の秘密鍵（private  key）をもって署名することを含んでいてもよい。従属物（dependencies）は、アンチマルウェア・データベース、訂正（a  correction）または他のプロセスの更新された要素のうちの少なくとも一つを含んでいてもよい。
【０００７】
本願のあるさらなる側面は、コンピュータ装置を使ったデータ通信のための方法であって、電子通信に埋め込まれた、少なくとも一つの目標位置識別子を含むリンクがユーザーによって選択されたときにデータ通信をインターセプトし、前記電子通信を表示するために使われるアプリケーションの型を判別し、前記アプリケーション型が電子通信リーダー・アプリケーションまたはウェブメール領域におけるウェブ・ブラウザ・ソフトウェア・アプリケーションの一方である場合には、前記電子通信の件名を抽出し、前記電子通信の内容を抽出し、前記電子通信を解析し、抽出された件名および内容を解析し、選択されたリンクを解析し、前記電子通信の人間的要因を解析し、前記電子通信の解析、前記抽出された件名および内容の解析、前記選択されたリンクの解析および前記人間的要因の解析に基づいてリスク因子を決定し、決定されたリスク因子の値に基づいて、前記リンクによって同定される目標位置または有効な位置の一方にユーザーをダイレクトすることを含む方法を提供しうる。前記電子通信の件名または内容の少なくとも一方の抽出は文書オブジェクト・モデルを解析することを含みうる。前記通信の解析は、選択されたリンクが電子メール文書に埋め込まれているかどうかを判別すること、前記電子通信内の少なくとも一つの画像の位置およびサイズの検出、前記電子通信の可視および不可視要素の検出、前記電子通信のテキスト、エリアまたはゾーンのうちの一つの前景および背景の色の間の距離の計算または埋め込まれたピクチャー認識アルゴリズムを使った前記電子通信に含まれる画像の解析のうちの少なくとも一つを含みうる。件名および内容の解析は、前記電子通信に含まれる単語の解析、フィッシング通信において一般的に使われる単語の量の判別、前記電子通信に含まれるテキスト参照リンクの解析または前記電子通信のフォーマットの解析のうちの少なくとも一つを含んでいてもよい。選択されたリンクの解析は、エンコードされたリンクの検出、ドメインのリダイレクトの検出、トップ・レベル・ドメインの検出、なりすましされたリンクの検出、サブリダイレクトされた（sub-redirected）リンクの検出、不適正にフォーマットされたリンクの分類（sorting）、ユーザー名なりすましの検出、直接IPリンクの検出、保護された目標の検出、誤って綴られたリンクの検出、テキスト・リンクにおける音韻的意味の検出、仲間のリンクの検出、既知のドメインの検出、無料ホスト・サービスの検出、危険な地理的領域の検出またはローカル・ホスト・ファイルによる隠されたリダイレクトの検出のうちの少なくとも一つを含みうる。本方法は、前記リンクにおいて同定された目標位置を解析することを含んでいてもよい。ユーザーの有効な位置へのダイレクトは、保護フィールド辞書からデフォルトの有効な位置のリンクを取得することを含んでいてもよい。
【０００８】
本願のあるさらなる側面は、コンピュータ装置を使って証明書を生成する方法であって、サーバーにおいて証明の要求を受信し、外部検証を実行し、少なくとも一つの要求されたオプションを利用して証明書を生成し、秘密鍵を使って証明書に署名することを含み、ここで、前記サーバーは、前記サーバーの完全修飾ドメイン名および前記サーバーのTCP/IPアドレスによって同定される、方法を提供しうる。
【０００９】
本願のあるさらなる側面は、コンピュータ装置を利用して証明書を使用する方法であって、少なくとも一つのウェブサイトをホストしているサーバーに問い合わせし、前記サーバーの保護を判別するために内部関数への呼び出しを立ち上げ、前記証明書をダウンロードし、公開鍵を使って前記証明書が本物であることを検証し、前記証明書が本物であると検証された場合に少なくとも一つの証明書フィールドを抽出し、前記サーバーから受信されたデータのデジタル署名またはハッシュ・コードのうちの少なくとも一つを計算し、前記少なくとも一つの証明書フィールドを前記受信されたデータの前記デジタル署名または前記ハッシュ・コードのうちの少なくとも一つと比較し、前記比較の結果に基づいて前記ウェブサイトが有効であるかどうかを判定することを含む方法を提供しうる。
【００１０】
本発明の諸実施形態が例として付属の図面において例解される。図面において、同様の参照符号は同様の要素を示す。
【図面の簡単な説明】
【００１１】
【図１】ある例示的な実施形態に基づくセキュア通信コンポーネントの諸インターフェースおよび諸構成要素を示す図である。
【図２】ある例示的な実施形態に基づくセキュア通信コンポーネント・ブートローダのプロセスを示す流れ図である。
【図３】ある例示的な実施形態に基づくセキュア通信コンポーネントの諸バージョンの生成の時系列を示す図である。
【図４】ある例示的な実施形態に基づくセキュア通信コンポーネント・バージョンの生成方法を示す流れ図である。
【図５】ある例示的な実施形態に基づくセキュア通信コンポーネントのログイン・インターフェースを示す図である。
【図６】ある例示的な実施形態に基づくアンチフィッシング・コンポーネントの一般的な作業フローを示す流れ図である。
【図７】ある例示的な実施形態に基づくアンチフィッシング・コンポーネントのプロセスを示す流れ図である。
【図８】ある例示的な実施形態に基づくアンチフィッシング・コンポーネントのコンポーネント・アーキテクチャの代替的な図解である。
【図９】ある例示的な実施形態に基づくアンチマルウェア・コンポーネントのプロセスを示す図である。
【図１０】ある例示的な実施形態に基づくアンチマルウェア・コンポーネントの諸要素を示す図である。
【図１１】DNS攻撃方式の諸要素を示す図である。
【図１２】ある例示的な実施形態に基づくウェブサイト認可（authorization）コンポーネントのサーバー側プロセスを示す図である。
【図１３】ある例示的な実施形態に基づくウェブサイト認可コンポーネントのユーザー側プロセスを示す図である。
【図１４】ある例示的な実施形態に基づくウェブサイト認可コンポーネントのブラウザ統合の諸要素を示す図である。
【図１５】ある例示的な実施形態に基づくウェブサイト認可コンポーネントによるウェブサイトの保護の判別のためのプロセスを示す図である。
【図１６】ある例示的な実施形態に基づくウェブサイト認可コンポーネントによるサーバーの保護を検査するためのプロセスを示す図である。
【図１７】ある例示的な実施形態に基づくウェブサイト認可コンポーネントによる証明書を検査するためのプロセスを示す図である。
【発明を実施するための形態】
【００１２】
オンラインでのID窃盗（identity  theft〔身元情報窃盗〕）、詐欺、ウイルス、スパイウェアおよび他のコンピュータ関連犯罪は、企業および個人に、資金および資源の損失において毎年何十億ドルものコストをかけさせている。本願の方法およびシステムは、コンピュータ装置への脅威、ハッキング、フィッシング試行、不正アクセスおよびユーザー識別用、金融上およびその他の機微な情報を取得しようとする試みを検出および防止することに関係しうるものである。フィッシングの試みは、0日攻撃（0-Days  attacks）を動的にブロックすることを許容しファーミング（pharming）をなくすプロアクティブな方法を使って検出されうる。検出および防止されうる他の攻撃は、再ルーティング（re-routing）、なりすましなどのようなローカルな脅威ならびにワーム、ウイルス、トロイの木馬、キー・ロガー、スクリーン・スクレイパー、ルートキットおよびその他のクライアント側脅威のようなマルウェア関連の脅威を含む。さらに、ドメイン名システム（DNS:  domain  name  system）攻撃、注入（injections）、書き換え（defacing）および簒奪（usurpation）を含むサーバー攻撃もサーバー認証および一般的保護方式の使用を通じて検出および防止されうる。
【００１３】
本願での用法では、「フィッシング（phishing）」とは、電子通信において信頼できるエンティティになりすますことによってユーザー名、パスワード、識別情報、クレジットカード情報、金融口座情報などといったユーザーの機微な（sensitive）情報を取得しようとするプロセスのことを指しうる。銀行または小売業者といった既知のエンティティからであると称する通信が、疑いを抱かないユーザーにそのような情報を提供するよう唆すために使用されうる。すると、その情報は悪意あるエンティティによって、窃盗、詐欺などといった不正な目的のために使用されうる。フィッシング活動は普通、電子メール、インスタント・メッセージおよび／または同様のソフトウェア・アプリケーションを介して実行されることがありえ、ユーザーが、その信頼できるエンティティのウェブサイトまたは他の位置を模倣するようデザインされたウェブサイトおよび／または他の位置においてそのような機微な情報を入力するようし向けることがありうる。それにより、入力された情報は悪意あるエンティティに送られ、不正な活動に使われることになりうる。
【００１４】
本願を通じて、「サーバー（server）」の用語は、データ通信ネットワークを介して他のコンピュータ装置と通信することができ、典型的には要求があったときに、ユーザーに情報を送るよう動作可能である任意のコンピュータ装置を指すために使われる。「サーバー」は、単一のコンピュータ装置およびネットワーク接続されたまたは他の仕方で互いと通信でき、協働してユーザーに情報を提供する個々のコンピュータ装置の集合の両方を包含することが意図されている。さらに、「サーバー」は、当該コンピュータ装置のハードウェアおよび当該コンピュータ装置によって実行されるまたは記憶されている任意のソフトウェアの両方を包含することが意図されており、そのようなソフトウェアはたとえば、ウェブ・サーバー・アプリケーション、データベース・アプリケーション、小売アプリケーション、金融アプリケーションおよび当該サーバー上で走るまたは当該サーバーによって得られる他の任意の好適なソフトウェア・アプリケーションを含む。したがって、本願での用法では、「サーバー」の用語は、コンピュータ装置と、該コンピュータ装置上で走っており、かつ、該コンピュータ装置上で走っているウェブ・サーバー・アプリケーションによって提供されるデータを含むウェブサイトとの両方に適用されることが意図される。そのようなウェブサイトは、オンライン店舗、バンキングもしくはその他の金融ポータル、学術情報ポータル、ソーシャル・ネットワーキング・フォーラム、情報配信ポータルなどといったいかなる好適な形を取ってもよい。さらに、サーバーはパーソナル・コンピュータ装置、ポータブル・コンピュータ装置、メインフレーム・コンピュータ装置、ハンドヘルド・コンピュータ装置、携帯情報端末（PDA）装置、スマートフォン装置およびソフトウェア・アプリケーションを実行しデータ通信線を介して他のコンピュータ装置と通信することのできる他の任意の好適なコンピュータ装置を含みうる。
【００１５】
本願のシステムおよび方法は、たとえばコンピュータ装置に記憶され、コンピュータ装置によって実行されるソフトウェア・プログラムおよび／またはルーチンを含むことがありうる。そのソフトウェア・プログラムおよび／またはルーチンは、コンピュータ通信ハードウェアおよびソフトウェアと一緒になって他のコンピュータ・システムとの通信を実行するためのソフトウェア・プログラムおよび／またはルーチンを含んでいてもよい。コンピュータ・システム間の通信は公共通信ネットワーク、たとえばインターネットを介して、あるいは公共通信ネットワークとは別個でこれから独立した私的通信ネットワークを介して実行されてもよい。通信は、TCP/IP、FTP、SSH、WIFIなどを含む通信方法およびプロトコルを利用することによって実行されてもよい。本稿で使われる用語「コンピュータ・システム」および「ネットワーク」は、固定および／またはポータブル・コンピュータ・ハードウェア、ソフトウェア、周辺機器および記憶装置の多様な組み合わせを含みうる。
【００１６】
コンピュータ・システムはそれぞれ、ネットワーク接続されたまたは協働して機能するよう他の仕方でリンクされた複数の個々のコンポーネントを含んでいてもよいし、あるいはスタンドアローンのコンポーネントを含んでいてもよい。コンピュータ・システムはそれぞれさらに、少なくとも一つの処理システム、少なくとも一つの内部記憶装置、少なくとも一つの外部記憶装置、少なくとも一つの印刷装置、読み取り装置および入出力装置を含んでいてもよい。記憶装置は、ハード・ドライブ装置、ストーレジ・サーバー、記憶領域ネットワーク、RAID構成、光メディア・ドライブ、ホログラフ・メディア・ドライブ、テープ・メディア・ドライブ、フラッシュメモリ・デバイスなどといった、データを電子的に記憶する装置を含んでいてもよい。
【００１７】
コンピュータ・システムはまた、一つまたは複数のランダム・アクセス・メモリ・モジュールと、キーボード、マウスおよびモニタといった一つまたは複数の周辺機器を含む、コンピュータ・システムとの間で情報の入力および出力を可能にするための入出力装置とを含むコンピュータ・システム・コンポーネントをも含んでいてもよい。ソフトウェア・ルーチンおよび／またはプログラムは、内部記憶装置または外部記憶装置に埋め込まれ、および／または記憶されてもよいし、それぞれの処理システムによって実行されてもよい。処理システムは、UNIX（登録商標）、リナックス（登録商標）、BSD、OS/2、VMSおよびマイクロソフト・アプリケーションといったオペレーティング・システムならびにデータベース・アプリケーション、ウェブ・サーバー・アプリケーション、ファイル・サーバー・アプリケーション、メール・サーバー・アプリケーションなどを含むソフトウェア・アプリケーションを実行しうる。
【００１８】
さらに、コンピュータ・システムはそれぞれネットワーク通信機能があってもよい。ネットワークは有線または無線の通信線と、ルータ、スイッチ、ハブ、ネットワーク・インターフェースなどといったデータを送信、受信およびルーティングするのに使われる関連するハードウェア装置とを含んでいてもよい。
【００１９】
コンピュータ・システムのハードウェアおよびソフトウェアのコンポーネントは、デスクトップ、ラップトップ、サーバー、携帯情報端末、タブレット、スマートフォン、テレビジョン、ラジオおよびオーディオおよびビデオ記録装置を含む固定したおよびポータブルな装置を含んでいてもよく、これらに含まれていてもよい。
【００２０】
本願のシステムおよび方法のさまざまな機能は、一つまたは複数のコンポーネントを介して実装されてもよい。それらの一つまたは複数のコンポーネントは、互いと一緒に、あるいは独立して利用されうる。これについてはのちに詳細に述べる。当業者は理解するであろうように、さまざまなコンポーネントは集合的に組み立てられ、据え付けられおよび／または位置されてもよいし、あるいは複数の独立した位置および／または装置の間で分散されていてもよい。
【００２１】
本願のシステムおよび方法のさまざまなコンポーネントは、これに限られないが、セキュア通信層コンポーネント、アンチフィッシング・コンポーネント、一つまたは複数の証明書を利用するサーバー認証コンポーネントおよびアンチマルウェア・コンポーネントを含みうる。それらのコンポーネントのそれぞれは、独立して、あるいは一つまたは複数の他のコンポーネントと一緒に動作しうる。それらのコンポーネントのそれぞれは、コンピュータ装置に記憶され、インストールされ、および／またはコンピュータ装置によって実行されてもよい。これについてはのちに詳細に述べる。
【００２２】
セキュア通信コンポーネントは、エンドユーザー・コンピュータ装置および／またはアプリケーションとサーバーのようなコンピュータ装置との間のセキュア通信チャネルを定義してもよい。サーバーは、たとえばウェブサイトおよび関連するソフトウェア・アプリケーションをホストおよび／または実行してもよく、ウェブサイトは商業、金融、学術、政府および他の同様なサービスを提供してもよい。前記コンポーネントは、コンピュータ装置のための認証システムならびにユーザー識別および認証を埋め込んでもよい。認証システムは、個人証明書、ハードウェア認証、内部仮想パスワード・システム、ハードウェア・トークンへのオープンAPI、スマートカードおよび他の強力な認証システムなどに基づいていてもよい。
【００２３】
セキュア通信コンポーネントは、ユーザー・コンピュータ装置とセキュア・サーバーとの間の通信プロトコルを、暗号化されたネットワーク・プロトコル、鍵合意プロトコル、ランダム鍵および／またはシードならびに生成と生成の間でランダムに選ばれうるプロトコル・シンタックスおよび文法エンコーダのうちの一つまたは複数を使って、設定してもよい。さらに、セキュア通信コンポーネントは、複数の保護機構を利用してもよく、リバース・エンジニアリングおよび解析を阻止するためにさまざまなバージョンまたは世代に再構成および／または修正されてもよい。
【００２４】
セキュア通信コンポーネントは、ブートストラップ・ローダ・コンポーネントを含んでいてもよい。ブートストラップ・ローダ・コンポーネントは、一つまたは複数のセキュリティで保護されたサーバーとユーザーとの間でセキュア通信コンポーネントを同期させるよう動作しうる。これはたとえば、セキュア通信モジュールおよびその従属物を、要求されたときおよび／またはさまざまな時間間隔で、自動的に更新することによる。
【００２５】
本願のシステムおよび方法において、さまざまなサーバー・コンピュータ装置が実装されうる。セキュア・サーバーは、諸コンポーネントおよび更新し同期されることが必要とされている情報を公共に露わにしうるコンピュータ装置を含んでいてもよく、セキュア・サーバーは、DNS解決をバイパスするためにIPアドレスのプールによって指定されてもよい。調査（survey）サーバーは、リアルタイムでの攻撃ならびにフィッシング、DNS攻撃、マルウェアなどといった新しい一般的攻撃を追跡し、解析し、モニタリングするためのコンポーネントの一つまたは複数から攻撃アラートおよび情報を受信しうるサーバーの専用プールに関連付けられたコンピュータ装置を含んでいてもよい。さらに、調査サーバーはDNS分解をバイパスするためにIPアドレスのプールによって指定されてもよい。賢明サーバー（sensible  server）は、保護システムを含むコンピュータ装置を含み、ユーザーにセキュリティおよび保護を提供してもよい。
【００２６】
アンチフィッシング・コンポーネントは、たとえば、電子メール・メッセージのような通信中に埋め込まれたまたは含まれるリンクまたは他のオブジェクトの作動に際して利用されうる。するとアンチフィッシング・コンポーネントはその通信の内容およびコンテキストを解析し、その通信、リンクまたは埋め込まれているオブジェクトによって指定されている目標を解析し、その通信、リンクまたは埋め込まれているオブジェクトが有効かどうかを判定し、その通信、リンクまたは埋め込まれているオブジェクトが有効でないと判定した際にはユーザーを有効な位置に再ルーティングしうる。
【００２７】
サーバー認証コンポーネントは、たとえばクライアント側から、ウェブ・サーバーのようなコンピュータ装置になりすまそうとする、あるいは提供されるコンテンツを改変しようとする試みを検出しうる。さらに、サーバー認証コンポーネントは、偽造、ファーミング、注入または書き換え攻撃ならびにDNS攻撃を、一般的な形の証明書をサーバー側で公共に利用可能にし、強力な暗号化の使用によりあらゆる有意キャラクタの検証を許容することによって、検出しうる。サーバー認証システムは、サーバーの有効なIPアドレスとドメイン名をリンクする強力な暗号化モデル証明書に依拠してもよい。証明書はさらに、サーバーの内容、その参照などの静的または動的な検査を許容するよう動作可能な他の機能を埋め込んでもよい。証明書は、ファイル、クッキー、MIME定義、データのストリーム、構造化されたストレージ定義の形および／または他の任意の好適な形で利用可能にされてもよい。サーバー認証コンポーネントは、たとえば賢明サーバーへの接続が要求されるたびに、一つまたは複数の他のコンポーネントによって使用されてもよい。そのような接続の完了時に、サーバーの認証、コンテンツおよび／または境界（perimeter）の完全な検証が、呼び出し元に制御を返す前に実行される。DNSアーキテクチャの修正は要求されなくてもよく、保護は受動的で、クライアント側にあってもよい。サーバー認証コンポーネントは、たとえばActiveXサーバーとしての実行可能なコード、COMオブジェクト、一般的な関数またはコマンド・ライン・インターフェースを提供する標準的なアプリケーションの形であってもよく、さまざまなインターフェース、アプリケーションおよびコンピュータ言語にそのサービスをエクスポートすることを許容しうる。
【００２８】
アンチマルウェア・コンポーネントは、既知の脅威のセレクションのデータベースを含むアンチウイルス・スキャナを含んでいてもよい。アンチマルウェア・コンポーネントは、レジストリ、スタートアップ項目、パス、フォルダ、開かれたポート、ミューテックス、ファイルおよび振る舞いといった項目をスキャンすることによって脅威を検出しうる。アンチマルウェア・コンポーネントは、既知の一般的な脅威を検出および識別し、攻撃を検出してナレッジベース（knowledge  base）に基づいて自動防御（auto-defense）システムを生成するよう動作しうる。
【００２９】
リダイレクト検出コンポーネントは、賢明サーバーとの接続が試みられるたびにローカル・ホスト・ファイルおよびローカルDNS設定のような項目を解析してもよく、それにより接続をリダイレクトしようとする試みを検出しうる。
【００３０】
〈セキュア通信コンポーネント（Secure  Communication  Component）〉
セキュア通信コンポーネントは通信プロトコル・エンジンを含んでいてもよく、プロトコル、暗号化層、鍵、設定、言語、シンタックス、文法などを含むセキュリティ要素の一つまたは複数の集合を埋め込んでもよい。セキュア通信コンポーネントの新しいバージョンまたは「世代」が作成されてもよく、セキュア通信コンポーネントは、さまざまな時間間隔で、あるいは手動での作動に際して相続くバージョンの間で、異なる予測不可能なセキュリティ要素の集合を埋め込むよう修正および／または変更されてもよい。本願を通じて、セキュア通信コンポーネントは「ESBコンポーネント」とも称されうる。
【００３１】
セキュア通信コンポーネントはセキュア通信コンポーネント・ローダを含んでいてもよい。図１を参照すると、セキュア通信コンポーネント・ローダは一つまたは複数の仕方で実装されてもよい。ある例示的な実施形態では、たとえば、サーバー駆動の接続においては、セキュア通信コンポーネント・ローダは、ActiveXサーバー・オブジェクトのようなサーバー・オブジェクトを含みうる。セキュア通信コンポーネント・ローダはたとえば、いかなる標準的なHTMLウェブ・ページから、たとえばオブジェクトへの参照を含めることによって呼び出されてもよい。ある例示的な実施形態では、オブジェクトはたとえば「タグ<OBJECT>」を含んでいてもよい。あるいはまた、セキュア通信コンポーネント・ローダは、いかなる「COM」準拠コンピュータ言語から、オペレーティング・システムのスケジューラ・アプリケーションによってスケジューリングされるコマンド・ラインからの標準的なアプリケーションとして、ユーザーおよび／または該ユーザーのコンピュータ装置の管理者によって手動で、コンピュータ言語によって、MIME関連付けとしてなどで呼び出されてもよい。あるいはまた、ユーザー駆動の接続においては、セキュア通信コンポーネント・ローダは、ブラウザ・ヘルパー・オブジェクトおよび／または一般的なCOMサーバーを標準アプリケーションとして含んでいてもよい。当業者には理解されるであろうように、他の実装の仕方が利用されてもよく、セキュア通信コンポーネント・ローダはいかなる好適な形または機構で実装されてもよい。
【００３２】
セキュア通信コンポーネントは、該コンポーネントをユーザーのコンピュータ装置上に位置させるためのダウンロードおよびインストール手順を通じて実装される。インストールはたとえば、ダウンロード可能なオブジェクトの、HTMLウェブ・ページ内に位置するリンクを介したダウンロードを含んでいてもよい。ある例示的な実施形態では、たとえば、htmlページからのダウンロードは、標準的なHTMLタグ、たとえば「<object  src=*.cab>」の形のタグまたはソフトウェア・コンポーネントをウェブ・ページおよび／または位置を介してユーザーに提示するための他の任意の好適な機構を介して実行されうる。セキュア通信コンポーネントはあるいはまた、物理的な媒体上での送達を介して、あるいはユーザーのコンピュータ装置上で走る別のソフトウェア・アプリケーションの自動化されたダウンロードおよび保存機能を通じて、ユーザーに提供されてもよい。そのようなソフトウェア・アプリケーションは、アンチウイルス・アプリケーション、ダウンローダ、標準的な独立アプリケーション、ドライバまたはウェブ・ブラウザ・アプリケーションのようなアプリケーションの拡張あるいはプラグインといったものである。あるいはまた、セキュア通信コンポーネントは、一つまたは複数のウェブ・ブラウザ・ソフトウェア・アプリケーションとともに動作可能なブラウザ拡張アプリケーションとしてダウンロード、インストールおよび実装されてもよい。
【００３３】
ユーザーのコンピュータ装置上に位置されるアクティブなコンポーネントは、ユーザーのコンピュータ装置（「クライアント側」）とユーザー・コンピュータ装置が通信しうるサーバー（「サーバー側」）の両方に位置される脅威を検出しうる。
【００３４】
セキュア通信コンポーネントは、欺瞞ウェブサイト、たとえばファーミングおよび／またはフィッシング・ウェブサイトに接続しようとするユーザーの試みをリアルタイムで検出しうる。それは、欺瞞リンクを検出して自動的に正当なリンクに修正する発見法的検出器を使うことによっており、それにより有害である可能性のあるウェブサイトまたは位置への望まれない訪問を防止する。
【００３５】
セキュア通信コンポーネントは複数のモジュールを埋め込んでもよく、そのような各モジュールは、独立してまたは互いに協調して機能しうる。さらに、セキュア通信コンポーネントは一つまたは複数の他のコンポーネントを呼び出してもよいし、一つまたは複数の他のコンポーネントによって呼び出されてもよい。これについてはのちに詳述する。
【００３６】
セキュア通信コンポーネントは、ユーザー・コンピュータ装置および／またはユーザーのコンピュータ装置上で走るアプリケーションとサーバーとの間のセキュア通信チャネルを定義しうる。セキュア通信コンポーネントは、コンピュータ装置のための認証システムおよびユーザー識別および認証を含んでいてもよい。埋め込まれた認証システムは、個人証明書、ハードウェア認証、内部的な仮想パスワード・システム、ハードウェア・トークンへのオープンなAPI、スマートカードおよび／または他の強力な認証機構に基づいていてもよい。
【００３７】
セキュア通信コンポーネントはまた、ユーザー・コンピュータ装置とセキュア・サーバーとの間で通信プロトコルを暗号化されたネットワーク・プロトコルを使ってセットしてもよい。ネットワーク・プロトコルは、種々の組み合わせのプールから選ばれてもよい。セキュア通信コンポーネントはさらに、鍵合意プロトコルをセットしてもよく、鍵合意プロトコルは異なるプールから選ばれてもよい。セキュア通信コンポーネントはランダムな鍵およびシードをセットしてもよい。さらに、プロトコル・シンタックスおよび文法エンコーダが、セキュア通信コンポーネントの種々のバージョンのためにランダムに選ばれてもよい。強力な認証を使うSSL/TLSのような通信層は標準的なオプションから選ばれてもよい。あるいはまた、層は一つまたは複数の非標準的なオプションから選ばれてもよい。
【００３８】
サーバー側では、セキュア通信コンポーネントの以前のおよび／または古くなったバージョンを利用するユーザー・コンピュータ装置からの新しい接続試行が拒否されてもよいし、前記ユーザー・コンピュータ装置をセキュア通信コンポーネントの新しいバージョンに更新する更新プロセスを開始してもよい。たとえばセキュリティ管理者によって設定される最大時間まで、最新バージョンより古い諸バージョンをもって現在の接続が継続されることを許容するために、最後の諸バージョンのウィンドウが維持されてもよい。ある例示的な実施形態では、少なくとも二つの最近のバージョンが維持されてもよい。
【００３９】
〈セキュア通信コンポーネント・ブートストラップ・ローダ〉
セキュア通信コンポーネント・ブートストラップ・ローダまたはブートローダは、必要とされるときに、セキュア通信コンポーネントの現在のおよび／または新しいバージョンをダウンロードおよびインストールするために利用されうる。図２を参照すると、ステップ２０２で開始したのち、ステップ２０２でセキュア通信コンポーネント・ローダが開始され、ステップ２０４でセキュア通信コンポーネントの最後の実行以降の経過時間が検査されてもよい。経過時間検査は、ローカルなコンピュータ装置クロック、世界的な精度およびローカルなコンピュータ装置からの独立性を与えるネットワーク時間プロトコル（NTP:  network  time  protocol）および／またはセキュア・サーバーによって定義される信号プロトコルを利用してもよい。経過時間値は、セキュア通信コンポーネントのコードにおいて定義されていてもよいトリガー時間値（「ΔT」）と比較されてもよい。トリガー時間値は好適なときに、たとえばセキュア・サーバーからリモートで更新されてもよい。
【００４０】
経過時間値がトリガー値を超えるとき、および／またはセキュア・サーバーへのバージョン検査要求に依拠して、ステップ２０６において、直接IPアドレスのプールによって定義されるセキュア・サーバーに対して接続がなされる。
【００４１】
ひとたびセキュア・サーバーに接続されると、ステップ２０８で、サーバーおよびデータのいかなるなりすまし（spoofing）またはフッキング（hooking）も避けるために、認証検査が実行される。認証プロセスは零知識プロトコル、SSL証明書、非対称暗号法または任意の好適なプロトコルに依拠しうる。
【００４２】
認証および／または接続が有効確認されない場合、ステップ２１８で、ユーザーに、ユーザーのコンピュータ装置またはネットワークの管理者に、調査サーバーに、または他のエンティティに、アラートが送信されてもよい。その後、プロセスはステップ２３０で停止されてもよい。
【００４３】
ステップ２０８で認証および／または接続が有効であると判定された場合は、プロセスはステップ２１０に続いてもよい。ここで、セキュア通信コンポーネントの現在および／または新しいバージョンおよび任意の要求される直接的な従属物を定義するパッケージがセキュア・サーバーからダウンロードされてもよい。
【００４４】
このステップで使用される通信プロトコルは、サーバーからエンドユーザー・コンピュータ、ブートローダおよび／または設定を実装または更新するための一つまたは複数のコンポーネントに送信される専用のコマンド、命令または変数および値を定義していてもよく、設定はΔT遅延、追加的または代用セキュア・サーバーおよび／または調査サーバーの識別情報および／またはアドレス、接続パラメータ、アンチマルウェア・データベースなどといったものである。
【００４５】
ひとたび新しいパッケージがダウンロードされると、ステップ２１２でパッケージに埋め込まれていることがありうるデジタル署名を検証することによって、ダウンロードされたパッケージの真正性（authenticity）および完全性（integrity）が検査されうる。署名が検査されることができないおよび／または無効であると判定されるとき、処理はステップ２１８に進み、アラートがユーザーに、ユーザーのコンピュータ装置またはネットワークの管理者に、調査サーバーに、または他のエンティティに送信されてもよく、プロセスはステップ２３０で停止されてもよい。
【００４６】
ダウンロードされたパッケージがステップ２１２で真性であると判定されるとき、セキュア通信コンポーネントの新しいバージョンがステップ２１４でインストールされてもよく、その後、ステップ２１６で実行されてもよい。インストールは、セキュア通信コンポーネントの一部または全部のファイルをローカルに更新することを含んでいてもよく、更新されたファイルはダウンロードされたパッケージ内に位置されていてもよい。
【００４７】
さらに、更新は、新しい更新されたセキュア通信コンポーネントが何らかの外部コンピュータ装置との何らかの通信を実行する前に試験されうる試験プロセスの実行を含んでいてもよい。試験プロセスにより、ダウンロードされインストールされたセキュア通信コンポーネントが有効でないおよび／または機能しないと示された場合には、コンポーネント更新プロセスがステップ２０２から再び実行されてもよい。さらに、異なるセキュア・サーバーが利用されてもよく、および／またはセキュリティ・アラートが生成されてユーザーに、ユーザーのコンピュータ装置、セキュア・サーバーの管理者にまたは他のエンティティに送信されてもよい。
【００４８】
図３を参照すると、上記のセキュア通信コンポーネント更新プロセスに従って、セキュア通信コンポーネントの実行の間の経過時間は、セキュア通信コンポーネントの特定のバージョンの利用の時間が、セキュア通信コンポーネントをリバース・エンジニアリングする、ディスアセンブルする、分解する（deconstruct）、または他の仕方で攻撃するのに必要とされる時間より短くなりうるよう、定義されうる。
【００４９】
〈セキュア通信コンポーネントの新バージョンの生成〉
図４を参照するに、セキュア通信コンポーネントの各バージョンは、完全にまたは部分的に異なるソース・コードを使って再構築されてもよい。ある例示的な実施形態では、たとえば、当該コンポーネントのある特定のバージョンのソース・コードは、当該コンポーネントの以前のバージョンのソース・コードの修正および／または再構成（reconfiguration）を含んでいてもよく、あるいは共通のソース・コード・ベースおよびその共通のソース・コード・ベースに加えられる追加的なソース・コード内容を利用してもよい。あるいはまた、新たに生成されたバージョンのソース・コードは以前のバージョンのソース・コードとは完全に異なっていてもよい。さらに、加えられる内容は、振る舞いとしての機能を選択する外部のランダム・シードに基づいていてもよい。
【００５０】
したがって、セキュア通信コンポーネントの各バージョンは、当該コンポーネントの特定のバージョンに対して実行されるディスアセンブル、分解、リバース・エンジニアリングまたは他の活動が現在のバージョンを攻撃するために機能しないよう、当該セキュア通信コンポーネントの他のバージョンとは十分に異なっていることがありうる。これらの多形機能および振る舞いは、暗号化モデル（ciphering  model）を埋め込んでもよく、暗号化モデルはライブラリ・プールから、また調査サーバー・ベクトルなどのような外部定義から選択されてもよい。
【００５１】
セキュア通信コンポーネントの新しいバージョンの生成は、ステップ４０２において、あらかじめ決められた遅延期間の経過の際、あらかじめ決められた時刻および／または日付の生起などといったあらかじめ決められた時間に開始されうる。あるいはまた、バージョン生成プロセスは、任意の好適な時に手動で立ち上げられてもよい。生成時刻は可変でよく、たとえばセキュア・サーバー上で定義されていてもよい。
【００５２】
ステップ４０４で乱数のプールが生成されてもよく、乱数のプールは、乱数または擬似乱数発生器アプリケーション、アルゴリズムまたは装置などいかなる好適な機構を使って生成されてもよい。ある例示的な実施形態では、暗号学的な擬似乱数発生器が乱数のプールを生成するために使用されてもよい。乱数のプールはたとえば、のちに述べるように、サブプロセスおよび暗号化鍵のシードとして使用されうる。擬似乱数発生器は、「メルセンヌ・ツイスター（Mersenne-Twister）」、「ブラム・ブラム・シャブ（Blum  Blum  Shub）」、「フォルトゥーナ（Fortuna）」、「ヤロー（Yarrow）」または他のいかなる好適な暗号学的に強力な擬似乱数発生器に依拠してもよく、その周期を延長するためにストリーム暗号と組み合わされてもよい。
【００５３】
さらに、ステップ４３０で暗号化鍵のプールが生成されてもよい。暗号化鍵のプールは、のちに述べるように、通信プロトコル、内部リソース隠蔽、関数ライブラリからの関数の選択などのために使用されうる。暗号化鍵のプールはストリーム暗号、ハッシュ関数およびいかなる好適な同様の機構を使って生成されてもよい。
【００５４】
ステップ４０６において、ソース・コードが修正されてもよい。ある例示的な実施形態では、ソース・コードはソース・レベルの多形エンジンによって修正されてもよい。ソース・コード・レベルの変異は生成された乱数プールを利用してもよく、暗号化されたリソース、シードおよびデータのソース・コードへの挿入を実施してもよい。
【００５５】
ステップ４０８で、等価な諸関数のライブラリがリンクされてもよい。ある例示的な実施形態では、たとえば、多形プロセッサは、ソース・コードに対して、ノイズおよび／またはランダムなコードおよび関数を注入する、プロセスを並べ替える、偽コードおよび演算を注入する、リソースおよびデータを暗号化する、APIエミュレータ・ラッパー（wrapper）を実装する、時間シフト遅延を組み込む、自動保護関数を組み込むなどのために、等価な諸関数のライブラリをリンクする。
【００５６】
ソース・コード・レベルの多形エンジンは、等価な諸関数を使って、修正を実行しうる。修正としては：ソース・コードへの非機能的命令（non-functional  instructions）を使ったノイズの挿入；変数、数学的関数および値の埋め込みおよび使用；動的であってもよい動的ストリング・ライブラリ（dynamic  strings  libraries）の変形および／または利用またはバッファ・オーバーフロー攻撃をくじくための検査されたバッファ・コピーの使用；論理的な経路を壊すためのジャンプ、たとえばランダムな行および／またはコードのセグメントおよび／またはメモリ内アドレスへのジャンプの挿入；受動的なおよびグリッチ生成攻撃を阻止するため時間シフト遅延を挿入する；ソース・コードをランダムに並べ替える；バージョン間でブレークポイント攻撃を隠してグローバルな解析および調査を許さないためのAPIおよびコール・ラッピング（call  wrappings）への挿入および／または参照；トレーサー検出コードおよびトラップの挿入；サブスレッド生成器（sub-thread  generators）、トレーサーおよびデバッガ回避器（debuggers  avoiders）の挿入；偽のコード、演算およびコールの挿入；ならびに自動保護システムおよび検証、トレーサー／モニタ／デバッガ検出および対策、仮想マシン検出関数などの挿入が含まれる。上記の修正は、当該ソース・コードの前のバージョンと機能的に等価でありうるが有意な変形およびランダムな要素を含む、当該ソース・コードの互換なバージョンを作り出しうる。
【００５７】
修正されたソース・コードは次いで、ステップ４１０でコンパイルされて、セキュア通信コンポーネントのバイナリーの実行可能なバージョンを生成する。さらに、生成されるオブジェクト・コード中に追加的なノイズおよび変形を挿入するために、コンパイラ・パラメータのランダム化された値がコンパイルの間に利用されてもよい。コンパイルされたコンポーネントのコピーは、サービス・ハンドラとしてのサーバー側での使用のために維持されてもよい。それにより、サーバーのコンポーネントはクライアント側からのデータ送信を解読および暗号化できうる。サーバー側では、ブートストラップ・ローダによって自動更新プロセスが自動的に開始されてもよい。
【００５８】
コンパイルされたソース・コードは、ステップ４１２で第二のバイナリー・レベルのコード保護器によってシールドされてもよい。バイナリー実行形式は、多形エンコーダおよび／または保護されたコンプレッサとしてのバイナリー保護システムによってシールドされてもよい。セキュア通信コンポーネントの各バージョンは異なる保護システムによってシールドされてもよく、保護システムはランダムに選ばれてもよく、保護アプリケーションの異なるビルドを使ってもよい。選択は、当該コンポーネントの二つの相続いて生成されたバージョンが同様の特徴を含まないよう、暗号ベースの乱数発生器を使ってランダムに駆動されてもよい。
【００５９】
ある例示的な実施形態では、第二のバイナリー・レベルのコード保護器は、コード保護関数、アンチトレーサーおよびアンチデバッガ・トラップを注入し；バイナリー・コードを圧縮および／または暗号化し；コード・ヘッダ、リソースおよびローダを書き換える多形エンジンを含みうる。あるいはまた、それぞれの生成に際して修正されたパラメータおよびシードを使う商業的な保護システムを利用してもよい。たとえば、「ExeProtector」、「Armadillo」、「SvKp」、「Obsidium」、「AsProtect」、「TheMida」、「BeaCryptor」、「NtKrnl」といったソフトウェア・アプリケーションまたは他の任意の好適なプリケーションである。
【００６０】
実行可能でありかつシールドされたコードは次いで、ステップ４１４で認証のために署名されてもよい。署名は、ステップ４１６で、エディタ（an  editor）の秘密鍵を利用してもよい。さらに、新たに生成されたコンポーネントが、たとえばシールドおよび保護プロセスによって生じた退行（regression）または問題を検出するためにその新しいコンポーネントを品質管理（quality  control）ロボットのもとで仮想マシン上で実行することによって、検証されてもよい。
【００６１】
他のプロセスの更新された要素、修正されたアンチマルウェア・データベース、訂正およびコードの他の部分の進化といった従属物（dependencies）が埋め込まれてもよく、実行可能形式がステップ４１８で最終化されてもよい。さらに、ある例示的な実施形態では、実行可能形式は、完全性検査システム統合（integration）および／または署名を使って署名および／または保護されてもよい。
【００６２】
新たに生成されたセキュア通信コンポーネントは次いで利用可能にされてもよい。ある例示的な実施形態では、たとえば、新たに生成されたコンポーネントは、自動更新サーバーの公開領域にコピーされてもよい。それによりリモートのブートストラップ・ローダがそれを現在のセキュア通信コンポーネントとしてダウンロードして使えるようになる。すべての見えるセキュア・サーバーが当該コンポーネントの正しいバージョンを埋め込むことを保証するよう、同期プロセスが利用されてもよい。あるいは正しいバージョンが埋め込まれていないときには利用可能なセキュア・サーバーのリストから隠されてもよい。たとえば負荷均衡化および利用可能性、チャージ（charge）、状態、コンテンツ管理（content  control）などの検証プロセスが使われる。
【００６３】
通信規則および／またはプロトコルは、さまざまな時点においてリセットおよび／または修正されうる。新しいセキュア通信コンポーネント・バージョンが生成されるたびに、クライアント側に位置するブートストラップ・ローダがそのコンポーネントの新しいバージョンをダウンロードし、それを完全にセキュアなチャネル上で通信するのに使う前にそれを有効確認（validate）しうる。それにより、そのセキュア通信コンポーネントのいかなる以前のバージョンも廃れてもよく、ローカルに削除されてもよい。したがって、そのセキュア通信コンポーネントを解析、トレース、デバッグ、リバース・エンジニアリングおよび／またはディスアセンブルしようとする試みは、当該コンポーネントのより新しいバージョンに遭遇することによってくじかれうる。セキュア通信コンポーネントの各バージョンの生成のたびにそのような活動をやり直すことが必要となるからである。バージョン生成の頻度は、バージョンの生成がそのような各バージョンを攻撃するのに必要とされる時間よりも迅速に行われるよう設定されうる。ある例示的な実施形態では、バージョンからバージョンまでに経過する時間は、当該コンポーネントの攻撃に成功するのに必要とされるであろう時間の約半分の値に設定されうる。
【００６４】
〈セキュア通信コンポーネントの利用〉
ある例示的な実施形態では、ユーザーがコンピュータ装置を使ってオンライン銀行サイト、商業サイトおよびまたは同様な位置のようなサイトに接続するとき、ユーザーは、身元信用情報（identity  credentials）、たとえばユーザー名および／またはパスワード情報を与えることによってログインするよう指示されてもよい。
【００６５】
ユーザーは、前記位置と通信するために、セキュア通信コンポーネントの最新バージョンを利用することを要求されてもよい。ある例示的な実施形態では、たとえば、ログイン情報を送るために使用されるネットワーク・プロトコルは、セキュア通信コンポーネントの現行バージョンによってのみ定義される。したがって、定義されたネットワーク・プロトコルは、サーバー側の対応するコンポーネントがユーザーとのデータ通信のために受け入れる唯一のプロトコルでありうる。
【００６６】
サーバー側では、バッファ・オーバーフロー回避器のような静的およびブラインドなブロック・ハンドラ（static  and  blind  block  handler）を使って、受信されたデータが現行プロトコルのシンタックスおよび／または文法定義に従って再配置されてもよい。いかなるエラーも、たとえば正しくないプロトコルの使用は、その接続試行が拒否されること、および／またはその接続がサーバーによって破棄されることにつながりうる。
【００６７】
ユーザーは、賢明サーバーへの各初期接続に際して、たとえば賢明サーバーのログイン・ページにアクセスするときに、当該コンポーネントを自動的にダウンロードしてもよい。ログイン・ページがロードされ、新しいコンポーネントがサーバーからダウンロードされうる間、他の好適なセキュリティ方式が適用されてもよい。その特定のユーザー・セッションについてのソルト（salt）値としての乱数の生成などである。
【００６８】
標準的なセッションは、新しいコンポーネント・バージョンが設定される前に開かれうるので、正当な開かれたセッションがある時間期間にわたって維持されてもよく、その間に新しいバージョンが生成され展開される。
【００６９】
いかなる保護されたサーバー上で使われる暗号化プロトコルも、開かれた接続上でそのコンポーネントのリモートの以前の諸バージョンによって使用中の先行バージョンのほか、プロトコルの現行バージョンを理解し、および／またはこれと通信することができうる。したがって、いかなる特定の時点でも、サーバーは、そのプロトコルの直前のバージョンを使って、またセキュア通信コンポーネントの現行バージョンに対応する現行プロトコルを使って、リモート・コンピュータ装置に応答しおよび／またはこれと通信できうる。したがって、複数の通信プロトコルが保護されたサーバー上で並行して存在することを許容するよう、少なくとも二つの技法が使用されうる。
【００７０】
第一の技法では、プロトコルの少なくとも二つの異なるバージョンが同じコンポーネントに埋め込まれうる。プロトコルの第一のバージョンは以前のプロトコル・バージョンに関係してもよく、該以前のバージョンの諸コンポーネントと通信するために使用されうる。プロトコルの第二のバージョンは現行のプロトコル・バージョンに関係してもよく、該現行のバージョンの諸コンポーネントと通信するために使用されうる。したがって、サーバー側についてのコンポーネント・ソース・コードの「ステートフルな（state-full）」生成は、暗号化層、暗号化鍵、プロトコル・ハンドラ、トークナイザ（tokenizers）などを含む少なくとも二組のセキュリティ・モデルを埋め込みうる。
【００７１】
第二の技法では、相続く通信コンポーネントの少なくとも二つのバージョンが保護されたサーバー上で動作してもよく、各バージョンはリモート・クライアントの対応するバージョンがあるかどうか傾聴する。プロトコルはグローバルにカプセル化されてもよく、これはバージョン・タグを、いかなる暗号化ストリームよりも上で平文で露わにしうる。ある選択プールから生成間で動的に切り替えられる異なるネットワーク・ポート、ある選択プールから生成間で動的に切り替えられる動的TCP/IPアドレスおよび／または仮想サーバー・ネーミング・デクリネーション（virtual  server  naming  declination）。
【００７２】
セキュア通信コンポーネントは、賢明サーバーへの安全な接続の従事を許容するAPIおよび関数を埋め込んでもよい。さらに、ユーザー・コンピュータ装置は、DNSおよびリダイレクト・ハックに対して検査されてもよい。たとえば、後述するようなアンチマルウェア・コンポーネントのスキャンおよび解析が使われる。
【００７３】
APIの上では、セキュア通信コンポーネントは、ハードウェア・フットプリントに基づくローカル・コンピュータ識別情報を使用して当該コンピュータ装置に関係する「ComputerUID」およびユーザーに関係する「UserUID」を生成してもよい。識別情報は賢明サーバーにエクスポートされてもよい。ComputerUID情報は、コンピュータ装置を同定するために有用な大きな整数値を含んでいてもよく、人間識別データまたはユーザーを同定する機能をもちうるいかなる個人情報をも欠いていてもよい。ある例示的な実施形態では、たとえば、ComputerUIDは、プロセッサ・シリアル番号とリンクされるユーザー・コンピュータ装置のマザーボードのシリアル番号を他の同様の不揮発性情報と組み合わせたもののハッシュ・コードを含んでいてもよい。UserUIDは、たとえばセッションを開始するために使用されるセッション名にリンクされる、オペレーティング・システム上のユーザーに関連付けられたGUIDのハッシュ・コードを含んでいてもよい。
【００７４】
〈セキュア通信コンポーネントの動作〉
図５を参照するに、セキュア通信コンポーネントはユーザーに対してログイン・インターフェースを表示してもよい。ログイン・インターフェースはたとえば、グラフィカル・ダイアログ・ボックス５０２、ユーザー名のためのテキスト入力フィールド５０４、パスワードのためのテキスト入力フィールド５０６、「OK」ボタン５０８および「取り消し」ボタン５１０を含んでいてもよい。セキュア通信コンポーネントが実行および／またはインスタンス生成されるとき、ログイン・インターフェースがウェブ・ブラウザ・ソフトウェア・アプリケーションのhtmlページ内に、たとえば実質的に通常のログインおよびパスワード用フィールドおよびボタンの形で、表示されてもよい。
【００７５】
内部的には、セキュア通信コンポーネントのあるバージョンが、バックグラウンドでアンチマルウェア・コンポーネント・スキャンを立ち上げる、ユーザー・コンピュータ装置上に脅威があるかどうか検査する、および／またはキーロガー・アプリケーションを検出するためにキーボード・ドライバのスタックを検査することなどによって始まりうる。何らかの脅威を検出すると、セキュア通信コンポーネントはその脅威の検出および／または識別に関する情報を、ComputerUIDおよび／またはUserUIDのような他の情報と一緒にサーバーに送ってもよく、プロセスを停止してもよい。さらに、セキュア通信コンポーネントが「VirtualPC」、「VMS」、「VMWare」、「VirtualBox」などのようないかなる種類の仮想化されたマシンのもとで走っていても、メモリ内のデバッガおよびディスアセンブリ・ツールは同様の仕方で検出されうる。ユーザーはログイン名、パスワードおよび／または他のログイン同定情報を入力しうる。
【００７６】
セキュア通信コンポーネントは、たとえば後述するようなアンチマルウェア・コンポーネント・エンジンを使うことによって、トロイの木馬およびキー・ロガーの検出および／または妨害（interception）を実装しうる。
【００７７】
パスワード入力は、仮想キーボード、ユーザー選択画像、「SiteKeys」のようなアプリケーションなどの使用を通じて保護されうる。さらに、低レベルの検出が、ログイン・インターフェースのロード中に低システム・プロセスにわたるDLL注入（low  system  process-wide  DLL  injection）を使って低レベル・メッセージおよび／またはキーボード傍受を同定するためのサブプロセスを開始することによって実行されてもよい。
【００７８】
ログイン・インターフェースが画面上に示されているとき、ユーザー・オペレーティング・システム上にこっそりドライバをインストールすることによって、非常に低レベルの傍受が実行されうる。このドライバは、サービスとして管理されてもよく、可能な最低レベル、たとえばRing0ですべてのキーボード入力を傍受しうる。ドライバは、プロセス間通信（IPC:  inter  process  communication）または任意の直接通信方法を使ってセキュア通信コンポーネントに直接結果を送る前に、キーボード入力を暗号化してもよく、それにより他のドライバ、アプリケーションおよびキー・ロガーをバイパスしうる。
【００７９】
機微な情報または他の情報がセキュア通信コンポーネントの外部で平文データとして伝送されたり利用可能にされたりしないことを保証するため、一つまたは複数の代替的なユーザー識別機構が用いられてもよい。ある例示的な実施形態では、たとえば、ユーザーのユーザー名および／またはパスワード情報または他のログイン識別情報は、一つまたは複数のバーナム／モーボーン・グリッド（Vernam/Mauborgne  grids）に基づくワンタイム・パッド・パスワードを含みうる。ランダムなシードが数字、シンボル、記号などのグリッドおよび少なくとも一つのデルタ値を生成するために利用されうる。たとえばセキュア・サーバー上の暗号学的な乱数発生器からの、ランダム値の大きなストリームを使って、ユーザーに関連付けられた各シードは、乱数ストリームの開始位置を定義し、それにより、そのユーザーのグリッドの最初の記号を、たとえば初期化ベクトル（IV:  initialization  vector）として定義しうる。前記少なくとも一つのデルタ値は、次のグリッド値を得るためにスキップするためのいくつかの位置を定義しうる。これら二つの値に基づいて、ランダム・データの完全なストリームの再生成なしに、新しいグリッドが生成されうる。多くのユーザーが同時にランダム値の同じストリームを共有しうる。ストリームの大きさは、ユーザーの数およびストリームのグローバルなリセットの前に生成すべき組み合わせの数、少なくともランダム・ストリームの寿命にわたって生成すべきグリッドの数を使って計算されうる。グリッドはエンドユーザーに送られてもよく、ログインが要求されるたびに、一連のランダム値がグリッド座標の一意的なリストを生成しうる。ユーザーは次いで、ユーザーのグリッド上で見える対応する記号、数および／またはシンボルをパスワードとして入力しうる。これがサーバー側で、そのグリッドを構築するために使われたシードを使って検査される。グリッドはいかなる好適な形で記憶または配布されてもよい。たとえば、印刷して紙の形で送達することによって、電子メールを介してなどである。グリッドは、新しいユーザーの関連するシードおよびデルタ値をサーバー側で生成して新しいグリッドをユーザーに送ることによって取り消されてもよい。
【００８０】
ある代替的な例示的実施形態では、バイオメトリックおよび／またはバイオメトリック的に導出されたパスワードが実装されてもよい。パスワードは、キーボードまたは入力装置上でタイプされるキャラクタおよび／またはシンボルによってのみならず、複数の英数字キャラクタおよび／またはシンボルのそれぞれのたとえばキーボードでのタイプによる入力の間の相対的な遅延、経過時間およびリズムを取り込み、読むことによっても生成および認識されうる。異なるユーザーはキーボードの使い方も異なり、タイプ・スピードおよびリズムが異なることもありうる。そのような相違が認識され、記憶され、特定のユーザーを識別するために解析されうる。
【００８１】
ある代替的な例示的な実施形態では、画面上でキーボードをシミュレートするために仮想キーボード入力が使用されうる。仮想キーボードでは、キーがスクランブルされていてもよく、ユーザーは、ユーザー名および／またはパスワードのような識別情報をタイプするために、マウスのような入力装置を使って各キーを選択およびクリックしうる。さらに、仮想キーボードは、メモリ内の既知のスクリーン・スクレイパーのアンチマルウェア・コンポーネントによって実行される一つまたは複数のスキャンの結果を利用してもよい。さらに、開始座標、大きさ、色スキームをランダム化することによって、およびキーがクリックされるたびに入力装置を保護された領域外に動かすことによって、低レベルでDirectDraw  APIを使うことによる画面取り込みが無効にされうる。さらに、画面取り込み器および／または記録器によって収集される情報を混乱させるおよび／または損なうための「ノイズ」を生じるために、偽のクリックおよびタイプが生成されてもよい。
【００８２】
ユーザー識別情報の入力のためのさらなる代替的機構は、コードブック・モデル、ハッシュ・チェーン、ケルクホフ・コードなどの使用を含む。さらに、既知のパスワードの再使用が制限されてもよい。
【００８３】
さらに、たとえば登録されたソフトウェア・プログラマーに対してエディタによって提供される鍵によってロックされるプログラミング・インターフェースを使うことによって、セキュア通信コンポーネントに認証を提供する、インターフェースとなるハードウェアまたはソフトウェア・アプリケーションを許容するために、認証APIが利用されてもよい。認証APIは、セキュア・サーバーに既存のソフトウェア／ハードウェアによって生成される値の組をエクスポートして、ユーザー定義の照合を許容しうる。認証APIは、「オープン認証イニシアチブ（Open  Authentication  Initiative）」などのような他の作業グループの仕様に基づいてのちに配向されてもよい。
【００８４】
〈アンチフィッシング・コンポーネント〉
アンチフィッシング・コンポーネントは、電子メールのような電子通信内に埋め込まれたハイパーリンクおよび／または他の要素をユーザーがクリックするときに作動されうる。本願では、アンチフィッシング・コンポーネントは「TRAPSコンポーネント」と称されることがありうる。
【００８５】
ある例示的な実施形態では、アンチフィッシング・コンポーネントは、電子メール・メッセージのような欺瞞または無効な通信と対話するユーザーの負の効果を緩和および／または防止するために利用されうる。そのような無効な通信は、正当な装置またはウェブサイトを装う欺瞞コンピュータ装置またはウェブサイトにユーザーを導きうるHTTPハイパーリンクまたは他の埋め込まれたオブジェクトのようなリンクを含みうる。そのような欺瞞サイトはユーザーに、ユーザー名、パスワード、金融情報、クレジットカード詳細、アドレス、社会保障番号などといった機微な秘密情報を入力させる誘導または勧誘を含むことがあり、入力された情報は悪意のあるエンティティによって不正な目的のために使用されうる。
【００８６】
アンチフィッシング・コンポーネントは、電子通信のコンテキスト、埋め込まれたリンクおよび／または他のオブジェクトならびにその埋め込まれたリンクおよび／またはオブジェクトによって指示される一つまたは複数の目標位置を解析しうる。アンチフィッシング・コンポーネントはさらに、そのリンクおよび／または要素により目標として指示されているウェブサイトまたは他の位置の内容を解析し、その通信、リンクおよび／またはオブジェクトが欺瞞かどうかを判定しうる。ある例示的な実施形態では、その判定は、ブラックリストまたはIP/URLデータベースへのさらなる接続または参照なしに実行されてもよい。
【００８７】
リンクおよび／または要素が欺瞞ではないと判定されると、ユーザーは、そのリンクおよび／または要素によって目標として指示されたウェブサイトおよび／または位置に導かれる。リンクおよび／または要素が欺瞞であると判定されると、ユーザーは、正当な認証されたウェブサイトまたは位置に再ルーティングされうる。さらに、目標として指示されたウェブサイトおよび／または位置のさらなる解析が指示されてもよい。ある例示的な実施形態では、リンクおよび／または埋め込まれた要素が欺瞞かどうかの判定は、現在既知のなりすまし技術のさまざまな形を実装する一組の知識規則に基づいて、および／またはユーザーの保護された境界（perimeter）によって定義される負試験データベース（negative  test  database）の参照に基づいてでありうる。これについては後述する。
【００８８】
保護フィールド辞書（PFD:  protection  field  dictionary）が利用されてもよく、PFDは、のちに詳細に述べるように、保護されるべき一つまたは複数のエンティティについての定義および知識を含む文書を含みうる。さらに、保護フィールド境界（PFP:  protection  field  perimeter）が各ユーザーについて生成されてもよく、PFPは、のちに詳細に述べるように、各特定のユーザーについて有意なPFDのリストを記述しうる。
【００８９】
〈アンチフィッシング・コンポーネントのインストール〉
アンチフィッシング・コンポーネントは、コンピュータ装置オペレーティング・システムのデフォルトのHTTPおよびHTTPSプロトコル・ハンドラとして指定されてもよく、それにより、そのようなプロトコルの作動に際してあらゆるイベントをフックするよう動作可能でありうる。アンチフィッシング・コンポーネントはまた、ウェブ・ブラウザ・ソフトウェア・アプリケーションからのURLクリックを傍受するためにブラウザ・ヘルパー・オブジェクトを利用してもよい。したがって、アンチフィッシング・コンポーネントは、ユーザー対話、ユーザー活動の妨害および／または有意なシステム資源の使用を必要とすることなく、オペレーティング・システム・レベルでHTTL  URLクリックの作動を受動的に監督および解析しうる。
【００９０】
〈アンチフィッシング・コンポーネントの作動〉
あるセッション中、アンチフィッシング・コンポーネントは、スタンバイおよび／または休眠状態に留まって、イベントが作動されるのを待ちうる。そのようなイベントは、たとえば、電子メール・メッセージ内に位置するHTTP  URLリンクおよび／または他の埋め込まれたオブジェクトをユーザーがクリックするまたは他の形で選択することを含みうる。
【００９１】
ある例示的な実施形態では、たとえば、電子メール通信の本文内の一つまたは複数のハイパーリンクをユーザーがクリックするとき、アンチフィッシング・コンポーネントは電子メールのコンテキスト、電子メール・メッセージ内に埋め込まれているすべてのURLの行き先および一つまたは複数の埋め込まれたURLによって目標とされるウェブサイトの内容を検査しうる。アンチフィッシング・コンポーネントはその際、のちに述べるように、これらの目標ウェブサイトの信頼性を保証するために諸アルゴリズムに従いうる。
【００９２】
アンチフィッシング・コンポーネントは、一つまたは複数のウェブサイトのまわりで包括的なコンテキスト・プロファイル認識を実行し、そのような各ウェブサイトについて適切な個別の安全管理された境界を構築しうる。それにより、のちに述べるように、この境界を簒奪するまたは侵そうとするいかなる試みの検出をも容易にする。
【００９３】
〈通信の解析〉
図６は、ある例示的な実施形態に基づくアンチフィッシング・コンポーネントの一般的な作業フローを示している。図７を参照するに、電子通信に埋め込まれているリンクまたは他のオブジェクトをクリックするおよび／または他の仕方で選択すると、ステップ７０２で、アンチフィッシング・コンポーネントがそのイベントを傍受する。そのような傍受は当該コンピュータ装置が、たとえばウェブ・ブラウザまたは電子メール・リーダー・ソフトウェア・アプリケーションを通じて、そのリンクまたはオブジェクトによって指定された目標位置と通信することを、後述するさらなる解析までは防止しうる。
【００９４】
ある例示的な実施形態では、リンクまたは他のオブジェクトのクリックおよび／または他の選択は、ユーザーがマウスのようなポインティング・デバイスを作動させてコンピュータ装置のディスプレイ上でカーソルを動かすことによって実行されてもよい。あるいはまた、ユーザーはキーボードのキー、ポインティング・デバイス、音声認識システムまたは電子通信内のオブジェクトを選択するための他の任意の好適な機構の使用を通じて、リンクまたは他のオブジェクトを選択してもよい。その後、アンチフィッシング・コンポーネントは、たとえば上述したセキュア通信コンポーネントによって利用される識別データを使って、コンピュータ装置およびユーザーを識別しうる。
【００９５】
アンチフィッシング・コンポーネントは次いで、ステップ７０４で、電子通信をユーザーに対して表示しているアプリケーションが電子メール・リーダーのような電子通信リーダー・ソフトウェア・アプリケーションであるかどうかを判定しうる。電子通信を表示しているアプリケーションが電子通信リーダー・アプリケーションでない場合、アンチフィッシング・コンポーネントは、ステップ７０６で、電子通信を表示しているアプリケーションがウェブ・ブラウザ・ソフトウェア・アプリケーション、たとえばウェブ・ベースの電子通信をユーザーに対して表示することができうるアプリケーションであるかどうかを判定しうる。そのアプリケーションがウェブ・ブラウザ・ソフトウェア・アプリケーションでない場合には、ユーザーは、ステップ７４０で、リンクで指定された目標をたどることを許容されてもよく、ユーザーはそのリンクおよび／または埋め込まれたオブジェクトの目標を、たとえばウェブ・ブラウザ・ソフトウェア・アプリケーションで見るようリダイレクトされてもよい。
【００９６】
アプリケーションがウェブ・ブラウザ・ソフトウェア・アプリケーションであると判定されると、ステップ７０８で、ドメインがウェブ・メール・ドメインであるかどうかの判定がなされる。
【００９７】
ステップ７０４および／または７０８の判定結果が肯定的であるときは、プロセスはステップ７１０に進む。ここで、そのリンクおよび／または埋め込まれたオブジェクトを含む電子通信の件名が抽出されてもよく、その後ステップ７１２で、電子通信の内容が抽出されうる。電子通信の件名および内容の抽出は、たとえばウェブ・ブラウザ・ソフトウェア・アプリケーションによって露わにされる文書オブジェクト・モデル（DOM:  document  object  model）を使う、解析するおよび／または読むことでテキストおよびHTMLデータを含むこの通信文書のツリーを得ることによって、実行されうる。
【００９８】
電子通信の件名および内容の抽出後、ステップ７１４で電子通信が解析されうる。ステップ７１４の解析はたとえば次のものを含みうる：
・選択されたリンクおよび／またはオブジェクトが電子メールまたは他の型の電子通信に埋め込まれているかどうかを判定する；
・通信に含まれている任意の画像の位置および大きさの検出；
・いくつかの部分が意図的にユーザーに対して隠されているおよび／またはフィルタをだますことができるかどうかを検出するために、電子通信の可視および不可視の部分の検出、文書の各ブロックのテキスト、エリアおよびゾーンの前景色と背景色の間の距離の計算；および／または
・保護された境界をもつエンティティからのロゴならびにサンプリングし直された、サイズ変更された、変形されたおよび修正されたロゴまたは画像を検出、認識および識別することができる埋め込み画像認識アルゴリズムを使っての、電子通信内に含まれる画像の解析。
【００９９】
アンチフィッシング・コンポーネントは次いで、ステップ７１６で、電子通信のコンテキストを解析しうる。コンテキストの解析は、たとえば次のものを含みうる：
・電子通信に含まれる単語の解析；たとえばセキュリティ問題、口座、閉鎖、照会する金融エンティティに関する単語のようなユーザーをだますために一般に使われる単語ならびに保護されたウェブサイトまたはエンティティのようなPFDによって定義される単語およびフィッシング試行ではほとんど使われない単語の一つまたは複数の辞書を使うことによる；
・通信の合計サイズおよび内容に関し、フィッシングおよび／またはだます通信において普通に使われる単語の量および／または割合の判別；
・電子通信に含まれるリンクの解析およびそのリンクに言及するまたはこれをユーザーに対して説明するために使われるテキストの解析；リンクの目標と、ユーザーに与えられるリンクの説明との比較を含む；および／または
・保護された境界規則中に定義されている保護されたエンティティの電子通信において普通に利用されるような標準的な規則を使った電子通信の内容と比較しての、電子通信のフォーマット、レイアウトおよび／または呈示、ならびに、表の数、大きさ、フォーム比（form  ratios）および電子通信の範疇分けを許容する他の呈示設定の解析。
【０１００】
上記の解析項目は単に例示的であり、識別および解析される項目および基準は、変化する技術に対応するためにいかなる時点で更新および／または修正されてもよい。
【０１０１】
〈選択されたリンクの解析〉
ステップ７１６での電子通信のコンテキストの解析後、ステップ７１８で、ユーザーによって選択されたリンクおよび／またはオブジェクトが解析されうる。ステップ７１８の解析は、たとえば次のものを含みうる：
・URL、ユニコードなどといったエンコードされたリンクの検出。URLエンコードおよび書き換えの形が検出およびデコードされうる；
・TLDおよびドメインのリダイレクトの検出。既知のリダイレクト・ドメイン、ダイナミックDNS解決器およびフリー・ホスト・サービスのリストが参照されうる；
・危険なTLDの検出。保護されたエンティティのサーバーを一つもホストしていない地理的位置および国を判別するために、保護されたエンティティのIT境界が参照されうる。これらの位置をポイントするURLはフィッシングの試みでありうることを示す；
・悪意のあるエンティティによって利用される技法を記述する一般的な規則を使うことによってなりすまされているリンクを検出する；
・サブリダイレクトされたリンクを検出する；
・通常のおよび／または不適切にフォーマットされたリンクのソート（sorting）。どのエンティティがURL書き換えを利用しており、どの書き換え技法が使用されうるかを決定するために、保護されたエンティティのIT境界が参照されてもよく、リンク・フォーマットと書き換え技法との間の比較が実行されうる；
・HTTPプロトコルの「ユーザー名：パスワード＠」シンタックスに基づく攻撃を識別するために、ユーザー名なりすましの検出；
・埋め込まれたリンクおよび／またはオブジェクトが直接的IPをポイントしているかどうかを判定するために、直接的IPリンクの検出；
・URLのツリーを解析し、そのツリーをPFDにおいて指定されている保護されたエンティティの有効なドメイン名およびルート名と比較することによる、保護された目標の検出；
・他のリンク遮断リソースによりフィッシング・リンクとして認識されていないURLを識別することによる、コンテンツ配布ネットワーク（CDN:  content  distribution  network）攻撃の検出；
・さまざまな距離マッチング・アルゴリズムを利用することによるミスタイプされたおよび／またはミススペルされたリンクを検出し、「Levenshtein」、「Damerau-Levenshtein」および他の好適なアルゴリズムに依拠してミスタイプされたおよび／またはミススペルされた名前およびURLを識別する；
・「ワレズ（warez）」型のスペルおよびリンク形成を解読するためにファジー・パターン・マッチ・アルゴリズムを使って、リンクおよび／またはオブジェクトの「ワレズ」型のミスタイプの検出；
・修正されたメタフォーン（metaphone）、二重メタフォーン（double-metaphone）および／またはシャノン・ツリー・アルゴリズムを使った、テキスト・リンクにおける音韻的な意味の検出；
・任意の仲間リンク（companion  links）にマッチするよう所与のURL内で既知のルート名および上記の諸アルゴリズムからの派生形を探索することによる仲間のリンクの検出；
・なりすまされたドメインの欺瞞形を検出するための、リンクによって記述される階層構造を解析し、PFDのルート名をマッチすることによる既知および未知のドメインの検出；
・PFDにおいて指定されている無料ホスティング・サービスの一つまたは複数のリストを参照することによる、無料ホスティング・サービスの検出；
・アンチフィッシング作業グループおよび他のリソースからの現行のデータを使うことによる、危険な国の検出；
・URLフォーマットを解析することによる一般的なフィッシング・キットの検出；および／または
・ローカル・ホスト・ファイルによる隠されたリダイレクトの検査。
【０１０２】
ステップ７２０で、人的要因の主題およびトピックの解析も実行されてもよい。解析は、電子通信の送信の動機の判別およびその動機および／または主題の、リンクおよび／または埋め込まれたオブジェクトの内容または目標との比較を含みうる。解析はまた、その電子通信を誰が送信したかの判別をも含んでいてもよく、送信者がリンクおよび／またはオブジェクトの内容ならびに電子通信の判別された動機および／または主題と比較されてもよい。
【０１０３】
〈リスク因子の計算〉
上記の解析の一つまたは複数が完了すると、アンチフィッシング・コンポーネントは、ステップ７２２で、発見法的アルゴリズムを使ってリスク因子を計算および／または更新し、ユーザーに対する対応するリスク因子を決定しうる。ある例示的な実施形態では、ユーザーに対するリスクの決定は、リスク・マネージャ・モジュールによって実行されてもよい。計算は、リンクおよび／または埋め込まれたオブジェクトに対応する危険のレベルの判別を含んでいてもよく、危険のレベルは百分率として表されてもよい。危険は、悪意のある位置へのリダイレクト、ユーザーから機微な情報を取得しようとする試みなどを含みうる。
【０１０４】
ある例示的な実施形態では、リスク因子は、百分率として表されたリスク因子に基づいて、比較的高い、比較的低い、平均的または無視できると判別されうる。たとえば、50%より高いリスク因子は、ユーザーに対する高レベルの危険を示す高いリスク因子であると決定されうる。一方、1%未満のリスク因子は、無視できるリスク因子と考えられてもよい。これらの値は単に例示的であり、状況の変化および／またはセキュリティ技術の進歩に依存して、いかなる時点でも調整されうる。
【０１０５】
ステップ７２４でユーザーに対する危険のレベルの判別に基づいてリンクが無視できるリスク因子をもつと判別されるとき、ステップ７４０で、ユーザーは、リンクおよび／または埋め込まれたオブジェクトによって指定される目標位置に差し向けられてもよく、ステップ７４０で、リンクおよび／または埋め込まれたオブジェクトがたとえば、ユーザーによるナビゲーションのためにウェブ・ブラウザ・ソフトウェア・アプリケーションに送られてもよい。
【０１０６】
ステップ７２６でユーザーに対する危険のレベルの判別に基づいてリンクが平均的なリスク因子をもつと判別されるとき、ステップ７４０で、ユーザーは、リンクによって指定される目標位置に差し向けられてもよく、ステップ７４０で、リンクおよび／または埋め込まれたオブジェクトがたとえば、ユーザーによるナビゲーションのためにウェブ・ブラウザ・ソフトウェア・アプリケーションに送られてもよい。ある例示的な実施形態では、ステップ７２８で、リンクおよび／または埋め込まれたオブジェクトをさらに解析するための第二のパス工程（pass  process）としてポスト・ブラウズ解析器モジュール（post  browsing  analyzer  module）が立ち上げられてもよい。
【０１０７】
ポスト・ブラウズ解析器は、ウェブ・ブラウザ・ソフトウェア・アプリケーションが目標ウェブサイトをロードする際に開始されてもよい。その後、ポスト・ブラウズ解析器は、ウェブ・ブラウザ・アプリケーションが目標ウェブサイトをロードするのを待って、それからロードされたウェブサイトの内容を解析して、有効なウェブサイトであるかフィッシング目的用に利用されている可能性のある偽サイトであるかを判定してもよい。ポスト・ブラウズ解析器の使用は、フレームに入れられた隠されたリダイレクト、もとのウェブサイトからなりすまされたおよび／または奪取されたリソースおよび静的および／またはウェブサイトの動的なリダイレクトまたはホスティングの検出を許容する。有効な保護されたウェブサイトのテキスト、フォーム、ロゴおよび画像が、入力フィールド、パスワード・フィールド、ログイン情報または注文への参照などの使用を通じて情報を盗むために普通に使われる一般的なリソースとして識別され、検出されうる。サイトが偽サイトだと判定されるときは、リスク因子は高められてもよい。
【０１０８】
ポスト・ブラウズ解析器の解析は、ページまたは位置全体がロードされる前に実施されてもよく、「タイムアウト」攻撃について検査するために内部タイマーが使用されてもよい。すでにロードしている（already  loading）データの性質について検査するために、ロードされた（loaded）バッファは規則的な時に照合されうる。ポスト・ブラウザ解析器の解析の結果がリスク因子をより高いレベルに上げる必要を示すとき、ウェブ・ブラウザ・ソフトウェア・アプリケーションは、怪しいサイトおよび／または位置でユーザーが何らかのさらなるナビゲーションを実行することを許容される前にPFDによって提供されるような有効な保護されたリンクにすぐリダイレクトされてもよい。チャンクによって規則的にある異なるエントロピーが来た間にフィールドおよびデータが検出された場合、タイムアウト攻撃が検出されうる。この機能は、巧妙に作られた未検出のフィッシングの試みの場合に、当該コンポーネントが第一のステップにおいて「失敗」し、発見法的エンジンの精度因子によって生成される偏差（biases）を許容し、その後、自らを修正することを許容しうる。
【０１０９】
ユーザーに対する危険のレベルの判別に基づいて、選択されたリンクおよび／または埋め込まれたオブジェクトが高いリスク因子をもつと判別されるとき、ステップ７３０で、そのリンクおよび／または埋め込まれたオブジェクトはフィッシングの試みとして分類されてもよく、ユーザーは、ステップ７４０で、たとえばウェブ・ブラウザ・ソフトウェア・アプリケーションの使用を通じて、有効な既知の保護されたリンクにリダイレクトされてもよい。有効な既知の保護されたリンクは、たとえば、選択された高リスク因子のリンクを、ユーザーのPFPにおいて同定されている既知の有効な目標と比較することによって判別されてもよい。
【０１１０】
有効なサイトは、たとえば、PFDにおける情報および電子メール本文の解析に基づいて判別されてもよい。エンティティまたは企業名、スローガン、広告情報および／または産業またはビジネス分野のような単語が照合されうる。さらに、電子通信において言及される有効なエンティティを識別するために、ロゴ、商標、レターヘッドおよび他のグラフィック印（graphical  indicia）のような要素が認識され、照合されてもよい。さらに、作動されたリンクまたはその人間に見える説明の間の類似性が、エンティティの交わり（companioning）、ブランド名、ドメイン名部分、ミスタイプ、ワレズ形、書き換えなどといったエンティティのドメイン名の使用と比較されてもよい。
【０１１１】
これらの認識および照合の結果は、その通信によってなりすまされているまたは標的とされている少なくとも一つのエンティティの素性（identity）を示すために利用されうる。識別後、そのエンティティのPFD内で定義されているデフォルト・リンクはメモリ内の作動された（activated）リンクを書き換えるために使用されうる。各PFDは、フィッシング試行の場合に使用されるべき正当ウェブサイトへのデフォルト・リンクを含んでいてもよく、このリンクはフィッシング試行に対処するためにそのエンティティによって設計された正当なウェブサイトの専用ページまたは他の任意の好適な位置をポイントしてもよい。
【０１１２】
したがって、ある例示的な実施形態では、アンチフィッシング・コンポーネントは、リンクをクリックすることによって休眠状態から作動されてもよく、非常に低レベルにおいてこのイベントおよび指示されたURLを含むこのイベントの全パラメータを捕捉してもよい。この指示されたURLは、ユーザーを正当な認証された位置に導くためにデフォルトのウェブ・ブラウザ・ソフトウェア・アプリケーションに渡し返す前に書き換えられてもよい。
【０１１３】
さらに、リンクおよび／またはオブジェクトを高リスク因子をもつと識別すると、セキュリティ更新器モジュールが、将来の参照用にそのリンクを調査サーバーにアップロードしてもよい。高リスクのリンクおよび／またはオブジェクトならびにリダイレクトの状況を識別するメッセージがユーザーおよび／またはユーザーのコンピュータ装置の管理者に送信されてもよい。
【０１１４】
さらに、有効なウェブサイトまたは位置に関連付けられたエンティティはフィッシング試行を通知されてもよいし、および／または上記のリンク解析およびリダイレクトの詳細を提供されてもよい。ユーザーが有効な位置に差し向けられるとき、標的とするエンティティがユーザーがリダイレクトされたことを通知されることを許容するトラッカー（tracker）が、たとえばURLパラメータ、以前の要求、専用リンクなどを使うことによって、埋め込まれてもよい。さらに、アンチフィッシング・コンポーネントによってユーザーをリダイレクトするために使われたリンクがPFDに加えられてもよい。
【０１１５】
〈保護フィールド辞書（Protection  Field  Dictionary）および保護フィールド境界（Protection  Field  Perimeter）〉
保護フィールド辞書（「PFD」）は、保護されるべき一つまたは複数のエンティティについての定義および知識を含む文書を含みうる。PFDは特定のエンティティに固有であってもよいし、あるいはエンティティのグループまたは集合の特徴を含む一般的なPFDであってもよい。前記一つまたは複数のエンティティは、たとえば、金融機関、商業エンティティ、政府エンティティ、学術エンティティなどを含みうる。保護されるエンティティは典型的には、たとえばウェブサイトまたは公衆データ通信網上でアクセス可能な他の位置を介して、比較的大量の電子通信を送受信する大規模エンティティでありうるが、いかなるサイズおよび構成のエンティティも保護されるエンティティでありうる。
【０１１６】
PFD内の情報は：特定の既知の以前の攻撃；一般的な攻撃特徴；企業電子メールおよびウェブサイトで使用される一般的なキーワード、形および／またはモデル；自動更新とその設定との間の陳腐化遅延（obsolescence  delays  between  auto-updates  and  their  settings）；たとえば画像認識アルゴリズムにおいて使うための企業ロゴのファジー・ベクトル；保護されるエンティティの正当なドメイン名、保護されるエンティティの事業の国および／またはサーバー位置などのリスト；および／または保護されるエンティティについての公共IT領域を記述するキー詳細（key  details）を含みうる。
【０１１７】
この情報は、セキュリティ・サーバー上で維持されてもよく、たとえばインターネットのようなネットワークを介して一または複数のコンポーネントと共有可能でありうるファイルに含まれていてもよい。PFDは圧縮され、暗号化され、エンコードされ、デジタル署名されてもよい。PFDを削除、移動、パッチ、偽造、工作または退行させようとする試みは検出され、無効にされ、是正されてもよく、コンピュータ装置セキュリティ戦略の変化する技術的条件および進歩に応じた当該情報の便利で動的で迅速な更新および修正を許容するよう、セキュリティ・サーバーに報告されてもよい。
【０１１８】
保護フィールド境界（「PFP」）は各ユーザーについて生成されてもよく、PFPは各個別ユーザーについての有意なPFDのリストを記述してもよい。あるいはまた、一般的なPFPが、ユーザーのグループおよび／またはクラスについて生成されてもよい。PFPは自動的に維持されてもよく、ユーザーにとって関心のあるエンティティのPFDのリストがそれにより集められてもよい。それにより、当該ユーザーが通信および／または対話する企業、銀行、小売業者などといったすべてのエンティティの保護が許容される。
【０１１９】
各エンティティは、たとえばエンティティのサイズならびにエンティティの活動量、エンティティのビジネス・モデル、エンティティの産業、エンティティの位置などに依存して、関連するPFDの維持および更新の特定のパターンを利用してもよい。PFDの修正および／または更新は、たとえば日ごと、月ごと、年ごとなどいかなる好適な頻度でなされてもよい。あるいはまた、PFDは調整を必要としなくてもよい。特定のユーザーのPFP内のすべてのPFDは、対応するPFDが更新されたときにセキュア・サーバーから自動更新されてもよい。
【０１２０】
MIME型（たとえば「アプリケーション／traps-PFD」）が、たとえばアンチフィッシング・コンポーネントのインストール時に、ユーザーのコンピュータ装置上で定義されてもよい。したがって、PFDは保護されたエンティティのウェブ・ページまたは他の位置から自動的にダウンロードおよび／または更新されうる。たとえばある例示的な実施形態では、保護された商店ウェブサイトの支払い受け取り確認ページをブラウズするユーザーは、商店のPFDをダウンロードしてもよく、ダウンロードされた商店PFDはユーザーのPFPに自動的に追加されてもよい。あるいはまた、ユーザーは、たとえば商店のウェブ・ページ上に呈示されたリンクを選択することによって商店のPFDをダウンロードしてもよい。
【０１２１】
したがって、ある例示的な実施形態では、複数のエンティティのそれぞれにPFDが関連付けられていてもよい。PFPテンプレートはユーザーについての境界を定義してもよく、PFDの一つまたは複数を含んでいてもよく、それによりユーザーの関心のある正当なエンティティを識別する。したがって、アンチフィッシング・コンポーネントは、選択されたリンクにおいて指定された標的位置がPFPと、よってユーザーの関心と整合するかどうかを判定してもよく、その判定の結果をそのリンクについてのリスク因子を上げるおよび／または下げるために使ってもよい。
【０１２２】
〈アンチマルウェア・コンポーネント〉
アンチマルウェア・コンポーネントは、既知の脅威を含む一つまたは複数のデータベースを含む一つまたは複数のアンチウイルス・スキャナを含みうる。メモリおよびオブジェクト・スキャンに関するプロセスを使って、前記一つまたは複数のアンチウイルス・スキャナは、隠された脅威を、その痕跡によって、たとえばレジストリ、スタートアップ項目、パス、フォルダ、開かれたポート、ミューテックスおよび振る舞いをスキャンすることによって、検出できてもよい。本願を通じて、アンチマルウェア・コンポーネントは「AME」コンポーネントと称されうる。
【０１２３】
図９を参照するに、アンチマルウェア・コンポーネントは、ステップ９０２でユーザーのコンピュータ装置上で開始されうる。ステップ９０４で一つまたは複数のマルウェア／脅威データベースがロードされうる。各マルウェア／脅威データベースは、既知のマルウェアおよび脅威に関係する識別情報を含む圧縮されデジタル署名されたファイルを含みうる。ステップ９０６で、マルウェア／脅威データベースは工作（tampering）、退行（regression）または修正（modification）がないかどうか、検証され、認証され、検査されうる。
【０１２４】
マルウェア／脅威データベースが認証されないおよび／または有効であると判定されないときは、ステップ９３０で、一つまたは複数のアラートが生成されてユーザーに、ユーザーのコンピュータ装置の管理者に、あるいは別のエンティティに送信されてもよく、その後、プロセスはステップ９２２で終了してもよい。アラートは、グラフィック・オブジェクト、テキスト・メッセージ、ログ・ファイルへのエントリー、電子通信などの一つまたは複数を含みうる。ユーザーは、どのようにして認証されたおよび／または有効なマルウェア／脅威データベースを得るかに関して、促され、案内指示を与えられてもよい。
【０１２５】
マルウェア／脅威データベースが認証され、有効であると判定されたとき、ステップ９０８で、メモリ内の全プロセスのリストが生成され、それらのプロセスのそれぞれの従属物（dependencies）が対応するファイルのリストとして抽出されうる。リストは、各プロセスのパスによって、および／またはファイル名によってソートされてもよい。各オブジェクトは、既知の脅威があるかどうかスキャンするためにマルウェア／脅威データベースを使用しうるオブジェクト・スキャナに提供されてもよい。オブジェクト・スキャナは、ナレッジベースによって駆動され、メモリ、レジストリ、ミューテックス、スタートアップ・オブジェクト、BHOおよび拡張（extensions）、ハンドル、フック、ファイル、TCP/IPパケットなどをスキャンするよう動作しる検出器エンジンを含みうる。
【０１２６】
そのスキャンに基づいて感染スコアが決定および／または更新されてもよく、感染スコアは一つまたは複数の結果の要約を生成するために使用されうる。オブジェクト・スキャナは、ファイルのmd5識別、実行可能なセクションの識別、一つまたは複数の二分パターン・マッチ木を使ったファジー検索の実行、ミューテックス検出、レジストリ・スキャン、パスおよびファイル検出、開かれたTCP/IPポートの検出などのようなアンチウイルス技術を使って脅威を識別しうる。
【０１２７】
ステップ９０８でのプロセスのリスト化後、ステップ９１０で、オペレーティング・システムを開始する間にロードされる全ファイルまたはその直接的な従属物（dependencies）のリストを含むスタートアップ・オブジェクトならびにウェブ・ブラウザ・ソフトウェア・アプリケーションの拡張を含むブラウザ・ヘルパー・オブジェクトおよびオペレーティング・システム・デスクトップ・コンポーネントのリストが生成されてもよい。ステップ９１２で、開かれた、傾聴している、および接続されたネットワーク・ポート、ドライバおよびTCP/IPスタック・ドライバならびに隠されたおよび隠されていないプロセスによって開かれているファイルがリストされてもよい。ステップ９１４で、既知の脅威によって生成されたパスおよびフォルダ、キー・ロガー記録ファイル、ウイルス・マーカーなどおよびマルウェアによって生成されるとわかっているミューテックスのような既知の痕跡が検索され、リストされてもよい。ステップ９１６で、ローカル・ホスト・リダイレクトおよびIPスタック危殆化が検索され、リストされてもよい。
【０１２８】
上記のようなリストされたすべてのオブジェクトは、ステップ９１８でスキャンおよび／または解析されてもよい。ローカル・ホスト・ファイルは、任意の疑わしいリダイレクトを検出するために解析されうる。IPスタックは、任意の危殆化を検出するために解析されうる。
【０１２９】
ステップ９２０で脅威が検出されるかどうかの判定がなされうる。脅威が検出されるとき、ステップ９３０で、一つまたは複数のアラートが生成されてユーザーに、ユーザーのコンピュータ装置の管理者に、サーバーに、または他のエンティティに送信されてもよく、プロセスはステップ９２２で終了してもよい。ある例示的な実施形態では、脅威が検出されるとき、アンチマルウェア・コンポーネントはユーザーを助言ページまたはメッセージにルーティングし直してもよい。それによりユーザーに検出された脅威を通知し、解決策またはさらなる研究のためのリソースへの案内を提供する。さらに、調査サーバーが通知され、識別された脅威を提供されてもよい。
【０１３０】
〈ウェブサイト認証コンポーネント〉
インターネットのような通常の公共データ通信網では、ネットワーク上のコンピュータ装置の素性は名前または数値的なTCP/IPアドレスによって決定されうる。数値的なTCP/IPアドレスは人間に読めるテキストで表された名前にマッピングされうる。低レベルのドライバは典型的にはTCP/IPアドレスに頼る一方、高レベルのアプリケーションは典型的には認証目的のためにドメイン名を使う。アドレス・リストは、ドメイン名リストより人間にとって生成、理解および維持するのが難しいからである。したがって、コンピュータ装置および／またはエンティティの素性のなりすましは、低レベルのTCP/IPアドレスとその高レベルのドメイン名との間のマッピングを変更することによって達成されうる。そのようななりすまし後は、認証器は、有効なエンティティとなりすまされたおよび／または無効なエンティティとの間の区別をすることを、実施および維持するのが難しいかもしれないかなりCPU集約的で高価な暗号学的レイヤーおよび証明書に訴えることなくしてはできないことがありうる。本願を通じて、ウェブサイト認証コンポーネントは「WebKeysコンポーネント」と称されることがあり、WebKeysによって利用される証明書は「WebKeys証明書」と称されることがある。
【０１３１】
図１０およびDNSへのさまざまな攻撃ベクトルを示す下記の表１を参照するに、DNS攻撃ベクトルは多様な仕方で分類されうる。
【０１３２】
【表１】
0005941872.tif 000002
DNS攻撃は、ローカル・ユーザーのコンピュータ装置から任意のDNSサーバーおよび使用される各ゲートウェイまで、リンクのいかなる段階でも実施されうる。したがって、グローバルなセキュリティは、ユーザー側で検証を埋め込むことを要求しうる。
【０１３３】
ウェブサイト認証コンポーネントは、受動的な仕方で、かつDNSサーバーおよび／またはDNSプロトコルへの変更なしに、たとえばDNS攻撃、書き換え攻撃、ファーミング試行、注入攻撃、感染攻撃および／またはリモート・ウェブサイトのハイジャックを、検出、緩和および防止しうる。図１２および図１３を参照すると、DNSシステムを安全にするプロセスは、証明書の作成および作成された証明書の使用を含みうる。
【０１３４】
図１２を参照すると、証明書の作成は、ステップ１２０２で、識別された公共サーバーにおける証明の識別された要求を実行することによって始まりうる。識別された公共サーバーはその完全修飾ドメイン名（fully  qualified  domain  name）（「FQDN」）およびその公共TCP/IPアドレスによって認識されうる。証明機関では、ステップ１２０４で、値が正しく、検証可能であり、一貫しているかどうかについて登録機関および問い合わせ発信者に対して検証するよう、外部検証が実施されうる。問い合わせが権限のあるウェブマスターからきたかどうかは、パスワード情報または他の任意の好適な認証スキームを使って検査されうる。
【０１３５】
新しい証明書は、ステップ１２０６で、たとえば、有効期日またはサイトの内容保護オプションをなど含むウェブマスターまたはサーバーおよび／またはウェブサイトを維持および／または管理することのできる他の人物によって要求されるオプションに基づいて、生成されうる。次いで、ステップ１２０８で証明機関の秘密鍵を使って署名されうる。ある例示的な実施形態では、諸ルート証明機関の階層構造全体は実装されない。生成された証明書は、ステップ１２１０で、たとえばウェブマスターに送られうる。この送信は保護されたチャネルは必要としなくてもよい。証明書はもとの公共サーバー以外によっては使用できないからである。
【０１３６】
図１３を参照すると、ステップ１３０２で、生成された証明書を使うためのプロセスが、公共サーバーに接続し、公共サーバーに問い合わせするユーザーによって、このサーバーがこの種の証明書によって保護されているかどうかを検証するために、始まりうる。ステップ１３０４では、ウェブサイトが検査される必要があるかどうかを検証するために、ウェブサイト認証コンポーネントの内部関数への呼び出しが立ち上げられうる。
【０１３７】
保護されるサイトの数によっては、サーバーのリストはB木データベースとしてローカルに実装されてもよいし、あるいはセキュア通信コンポーネント自動更新モデルによって自動的に更新されてもよい。より大きなリストについては、サーバー側でよりよい負荷均衡および管理を許容するために、三つの異なるキャッシング方法が利用されうる。長大なリストの場合は、ファミリーおよびヒット・ランキング問い合わせ最適化プロセスに基づく動的木バケツ・キャッシュ（dynamic  tree  bucket  cache）を実装する設計が利用されてもよい。
【０１３８】
大きめのリストについては、第一のレベルは、URLの形（たとえば直接的IPアドレスかローカル／制限されたIPアドレスまたは既知のドメイン）に、次いでどの国が保護されているか否かをフィルタリングするトップ・レベル・ドメイン（top  level  domain）（「TLD」）に依拠してもよい。たとえば「FastCache」と称される第二のレベルは、所定の時間期間について受信される既知の答えを扱いうる。第三のレベルは、ユーザーの関心に基づいて自然に答えを最適化および配列するために受信された問い合わせの型および／または特性および数によってソートされた、ドメイン名およびそのそれぞれの保護状態を記述する諸構造のバケツを含みうる。セキュア・サーバーへの各問い合わせは、このドメイン名または型についてのヒット数をインクリメントしてもよく、それらを範疇分けしてもよい。要求されたドメイン名および同じ型、範疇または主題／関心の一つまたは複数の他のドメイン名がユーザーからの問い合わせの数によってソートされてもよい。したがって、ユーザーがインターネットをブラウズするとき、セキュア・サーバーに問い合わせする前に、以前に受信されたキャッシュ内に多くの一連の答えが見出されることがありうる。
【０１３９】
ウェブサイトが保護されていないとき、プロセスはステップ１３３０で停止しうる。ウェブサイトが保護されているときは、ユーザーが主サイトをロードする際に、ステップ１３０６で、バックグラウンド問い合わせが証明書をダウンロードしてもよい。
【０１４０】
証明書は、たとえばウェブサイト上で多様な仕方で利用可能にされうる：
・静的な名前を使い、たとえば「web.key」のような名前を使い、ファイル「favicon.ico」のようなスキームに依拠して仮想サーバーのルートの直下にまたはサーバーの各パスに位置される独立ファイルとして；
・クッキー内に埋め込まれてサービスされるページとともに直接送られる；
・HTMLページ中にオブジェクトとして埋め込まれる；
・新しい専用のHTMLタグとして埋め込まれる。ある例示的な実施形態では、特定のタグが実装されうる。たとえば、「<Authenticate  type=rsa  expires=07/2l/2008  signature=2f3a7c...8d9f3a>」という形のタグである。これはその値を検査する前に文書から抽出されうる；
・登録されたMIME型として埋め込まれ、この種のデータのハンドラとしてウェブサイト認証コンポーネントにリンクされる；
・HTTPヘッダとして埋め込まれ、低レベルの植え込みを可能にする；および／または
・ネットワーク・プロトコルによって使用可能な他の任意の形の構造データとして埋め込まれる。
【０１４１】
ひとたびウェブサイト認証コンポーネントが証明書を取得すると、ステップ１３０８で、ウェブサイト認証コンポーネントは証明機関の公開鍵を使って証明機関を検証しうる。検証は、証明書の正当性を検証するためにいかなる公開鍵もなしに、鍵付きハッシュ・メッセージ認証コード（keyed-hash  message  authentication  Code）（「HMAC」または「KHMAC」）スキームに依拠してもよい。
【０１４２】
ステップ１３０８の検証が肯定的であれば、一つまたは複数の証明書フィールドが抽出され、受信データと認証された証明書の対応する署名との間の相違を検出するために、クライアント側で受信されたデータに対して照合されてもよい。ある例示的な実施形態では、クライアント側で受信されたデータのデジタル署名またはハッシュ・コードの少なくとも一つが計算され、計算されたデジタル署名またはハッシュ・コードが証明書に埋め込まれている対応する値と比較されてもよい。計算された値と埋め込まれている値との間のいかなる相違も検出されうる。
【０１４３】
検証された値は、TCP/IPスタックから抽出されうる、サーバーに接続するために使われるIPアドレスと、やはりTCP/IPスタックから抽出されうる接続されるサーバーのFQDNとを含みうる。受信されたデータが証明書の対応する値と合致することを検証するために、クライアント側で受信された他のいかなる好適な値が解析されてもよい。
【０１４４】
すべての値が本物であり、必須フィールドが対応する値に合致し、任意の随意付加フィールドが検証されると、ステップ１３１０で、サイトは検証され認証されたと判定されうる。
【０１４５】
証明書が本物であると判定されないとき、および／または何らかの抽出されたフィールドが証明書内で定義されている対応する値に合致しないとき、問題または攻撃アラートが持ち上がり、ステップ１３１２で、ウェブサイトは無効である、修正されているおよび／またはハッキングされていると判定されうる。どの因子および／または諸因子が問題であるかを定義するために、追加的な解析が実行されてもよく、追加的解析の結果が調査サーバーに送信されてもよい。さらに、アラートが生成され、および／またはユーザー、ユーザーのコンピュータ装置の管理者または他の好適なエンティティに送信されうる。さらに、解析がIPアドレスのミスマッチを示すときは、証明書の定義されたIPアドレスにリダイレクトされてもよい。こうして直接的なDNS攻撃が無効化される。
【０１４６】
ウェブサイト認証コンポーネントのブラウザ統合の諸要素が、たとえば図１４に示される。図１５は、ウェブサイト認証コンポーネントによるウェブサイトの保護の判別のための例示的なプロセスを示している。
【０１４７】
証明書の例示的な構造は、証明書のフィールド・クラスを示す下記の表２を参照して説明される。
【０１４８】
【表２】
0005941872.tif 000003
ある例示的な実施形態では、証明書は少なくとも三つの値を定義しうる。保護されたウェブサイトの公共IPアドレス。これはユーザーのコンピュータ装置上のTCP/IPスタックによって使用される値と照合されうる。保護されたウェブサイトのFQDN。これはアプリケーション、ウェブ・ブラウザ・ソフトウェア・アプリケーションおよび／またはサーバーに接続するために使われるTCP/IPスタックによって使用される値と照合されうる。そして証明書のデジタル署名。これは、コード中に埋め込まれたまたはセキュア・サーバーから更新されるが証明書内に格納されてはいない公開鍵を使ってもよい。HMACまたは他の好適な暗号スキームのような標準的なメッセージ認証コード（message  authentication  code）（「MAC」）スキームが使用されてもよい。
【０１４９】
さらに、証明書は任意的な値を定義しうる。それは次のものを含むがそれに限られるものではない。
【０１５０】
・有効期限：有効期限は、鍵の失効、取り消しおよび総当たり攻撃への対処を許容しうる。有効期限は、任意の証明書に対する有効性の限界を定義しうる。
【０１５１】
・静的内容：静的内容は、たとえば保護されたウェブ・ページが静的なウェブ・ページであるときに使われうる。たとえば、証明書はウェブ・ページのコンテンツのハッシュ・コードを格納しうる。したがって、クライアント側プロセスは、ダウンロードされたウェブ・ページがもとのウェブ・ページのウェブマスターによって署名されたもとの有効なウェブ・ページに一致するかどうかを検査しうる。検査が相違を示すとき、書き換え攻撃ならびに注入、偽造、ファーミングまたは他のコンテンツ・ベースの攻撃が示される。プロセス、IPフレームおよびメモリ注入ベースの攻撃は、検査がクライアント側で実行される際に検出されうる。ハッシュ値は、サーバーの文書内容、たとえばHTMLコンテンツを取得し、取得されたコンテンツを結果的に正規化し、md5、sha1、sha512、ripemdのような標準的なハッシュ関数または他の任意の好適な関数を使って正規化されたコンテンツのハッシュ値を計算することによって計算されうる。
【０１５２】
・動的ドメイン：動的ドメイン情報は、たとえば、コンテンツが動的に生成されるときに使用されうる。ある例示的な実施形態では、保護されるべき主文書について、および／またはウェブサイト全体について、使用されたリソースによって参照されるすべてのドメインがリストされうる。従属物パターン（dependency  pattern）を定義する全HTMLタグがリストされうる。リストされるドメイン名が抽出されうる。リストがソートされうる。重複項目が消去されうる。こうして文書によってまたはサイト全体によって参照されるすべての一意的なサブドメインのリストが得られる。従属物パターンを定義する例示的なHTMLタグが下記の表３に示される。サブドメインのリストをロックして検出されずに何らかの新しい外部参照を挿入できなくするのを許容するためにこのリストについてのハッシュ値が生成されてもよい。
【０１５３】
・コード内容：コード内容は、たとえば、ウェブ・ページ内に埋め込まれたスクリプトまたは他のコードに関係しうる。すべてのスクリプト利用モジュールがHTMLSタグから抽出されうる。正規化プロセスを使って、良性の変異はフィルタ除去されうる。コンテンツがハッシュされうる。そしてスクリプト検証ハッシュ・コードが生成されうる。こうして、クライアント側コードが、サーバー上に記憶されているアクティブ・コードが修正、注入または他の仕方で操作されたかどうかを検査しうる。
【０１５４】
・リソース内容：リソース内容は、たとえば、文書および／またはウェブサイト全体によって使用される外部リソースに関係しうる。たとえば、マルウェア・ベクトルまたは欺瞞要素を埋め込むために、画像、オブジェクト、ジャバ、フラッシュ・アニメーション、サウンドおよび他のマルチメディア・ファイルが使用されうる。これらの従属物のそれぞれは、ファミリーまたは型によってリストおよび／またはリンクされうる。それにより、それらのもとの形および／または内容のフィンガープリントの生成が許容される。こうして、エンドユーザー側からのそれらの正当な因子が検証されうる。定義のリストが、それぞれおよび／または選択物を、性質またはリソース名のファミリーによって、証明書のボディ内のフィンガープリントとリンクしうる。リストは、証明書の値に対してダウンロードされたリソースのフィンガープリントを計算することによってクライアント側で使用されうる。相違は、調べられたリソースの注入、なりすまし、工作またはハッキングを示しうる。
【０１５５】
下記の表３は、参照および従属物を検出および保護するために使用されうるさまざまなHTMLタグを示している。
【０１５６】
【表３】
0005941872.tif 000004
さらに、RFC4871のスキーム（「DKIM」）と同様のスキームを使って、任意のウェブサイトの公開鍵がそのDNSサーバー上で「TXT」フィールド内で公開されてもよく、広く入手可能かつ取り消し可能であってもよい。証明書全体は、専用のHTMLタグ、クッキーまたはページ中に実装してもよい。
【０１５７】
図１６は、ウェブサイト認証コンポーネントによってサーバーの保護を検査するための例示的なプロセスを示している。
【０１５８】
図１７は、ウェブサイト認証コンポーネントによって証明書を検査するための例示的なプロセスを示している。図１７を参照すると、ステップ１７０２で証明書をロードする要求が実行されうる。ステップ１７０４で、証明書が取得および／またはダウンロードされうるかどうかが判定されうる。証明書が取得され得ないときは、ステップ１７２０で、アラートが生成されてユーザーに、ユーザーのネットワークの管理者にまたは他のエンティティに送信されてもよい。ステップ１７２２でキャッシュが更新されてもよく、ステップ１７２４でプロセスは結果を返して終了してもよい。証明書が取得可能であれば、ステップ１７０６で、取得された証明書から諸フィールドが抽出されてもよく、ステップ１７０８で証明書のデジタル署名が検査されてもよく、ステップ１７１０で有効または無効であると判定されてもよい。署名が無効であれば、プロセスはステップ１７２０に進みうる。署名が有効であると判定されたときは、ステップ１７１２で、証明書のFQDNが要求されたFQDNに合致するかどうかが判定されうる。FQDNが合致しないとき、プロセスはステップ１７２０に進みうる。FQDNが合致するときは、ステップ１７１４で、接続のIPアドレスが証明書のIPアドレスに合致するかどうかが判定されうる。IPアドレスが合致しないとき、プロセスはステップ１７２０に進みうる。IPアドレスが合致するときは、ステップ１７１６で有効期限に達しているかどうかが判定されうる。有効期限に達していたときは、プロセスはステップ１７２０に進みうる。有効期限に達していないときは、ステップ１７１８で、ローカル・コンピュータ装置クロックを現在の日付および／または時刻に対して未来になる日付および／または時刻に設定することによって現在の日付および／または時刻を偽装する試みが判定される。レジストリ・ファイル、システム・スタートアップ・ファイル、ログ・ファイル、キャッシュ・ファイルなどのような一つまたは複数のシステムおよび／またはロックされたローカル・ファイルの日付および／または時刻が未来に位置されていれば、システム・クロックの修正が示されうる。システム日付が未来の日付であるとき、プロセスはステップ１７２０に進みうる。システム日付が現在日付より大きくないときは、ステップ１７２２でキャッシュが更新されてもよく、ステップ１７２４でプロセスは結果を返して終了しうる。
【０１５９】
〈一般的証明インターフェース・コンポーネント〉
一般的証明インターフェース（generic  certification  interface）（「GCI」）・モデルは、電子メール証明インターフェースを実装するために利用されうる。GCIコンポーネントは、既存の電子メール証明規格、たとえば「DKIM」または「DomainKeys」によって記述される規格を利用しうる。GCI  APIは、電子メールを読むソフトウェア・アプリケーションのためのまたは任意の拡張のための、電子メールおよび／または他の電子通信のDKIM状態の検出を提供しうる。
【０１６０】
さらに、そのような証明モデルの実装は、他の機能を提供してもよい。たとえば、GCIモデルは、DKIMの機構におけるようにユーザーによって使用されるネットワークがDNSサーバーを介して公開鍵を提供しないときは、公開鍵の「開かれた」貯蔵所として専用のサーバー構造を提供してもよい。GCIコンポーネントは、標準的な電子メール・クライアント・ソフトウェア通信をインターセプトするために、標準的なPOP／SMTP／IMAPプロクシとして実装されてもよい。
【０１６１】
ネットワークがそれ自身のDKIM鍵の集合を生成することを許容する方法は、濫用を制限し、鍵取り消しの追跡を提供するために、GCIコンポーネントのHardwareUIDおよびUserUIDを利用しうる。したがって、諸エンティティは、証明プロセスから裨益することができ、鍵がそれらのそれぞれのDNSサーバーにリンクされうる前に、ピアツーピアのアーキテクチャを利用することができる。
【０１６２】
GCIコンポーネントの初期立ち上げにおいて、公開‐秘密鍵のペアの存在が検査されうる。鍵ペアが定義されていないと判定されたときに鍵ペアが生成されてもよい。ひとたび生成および／または定義されると、秘密鍵はローカル・コンピュータ装置上で安全に保持されうる。一方、公開鍵は公開鍵サーバーに送られてもよい。公開鍵は、ComputerUIDおよびUserUIDに、またはネットワークに関連付けられた情報にリンクされてもよい。
【０１６３】
公開鍵の存在および値を検証するためのさらなる問い合わせを許容するために、公開鍵サーバーは公開鍵を登録してもよい。
【０１６４】
GCIコンポーネントを使ってローカル・コンピュータから送られた電子メールおよび／または他の電子通信は、ComputerUIDおよび／またはUserUIDをDKIMセレクタとして使って署名されうる。電子メールの「DomainKey-Signature:」フィールドはバージョンおよび代替鍵サーバー・インフラストラクチャーを記述しうる。バージョンおよび代替鍵サーバーの記述は、たとえば、公開鍵を扱うためのDNS公開鍵モデルとGCI秘密サーバー・モデルとの間のミスマッチを回避するために使用されうる。
【０１６５】
電子メールまたは他の電子通信を受信すると、GCIコンポーネントはその電子メールの「DomainKey-Signature:」フィールドを解析しうる。「DomainKey-Signature:」フィールドが存在しないときは、電子メールは証明され（certified）うる。「DomainKey-Signature:」フィールドが存在し、標準的なDKIMバージョンを定義しているときは、公開鍵を問い合わせるためにDNSサーバーを使う標準的なモデルが使用されうる。「DomainKey-Signature:」フィールドがGCIバージョンを定義するときは、公開鍵貯蔵所についての代替鍵サーバー・インフラストラクチャーが使用されうる。
【０１６６】
ある例示的な実施形態では、GCIコンポーネントはローカル・コンピュータ装置上のプロクシとして実装されうる。GCIコンポーネントがプロクシとしてローカル・コンピュータ装置上に実装されるときは、GCIコンポーネントは、あらゆる出ていく電子メールおよび／または他の電子通信を証明する（certifying）一方、黙ってはいってくる電子メールおよび／または他の電子通信を検査しうる。
【０１６７】
ひとたびインストールされると、GCIコンポーネントは、一般的なDKIM機能を透明にかつ自動的に提供でき、DNSサーバーが公開鍵管理を実装するために標準的なインターフェースを実装する場合には標準的なDKIMに発展しうる。代替的に、GCIコンポーネントは、代替鍵サーバー・インフラストラクチャーとして定義されたままでもよい。
【０１６８】
GCIコンポーネントは、フリーメール・サービス、オープン・ゲートウェイおよびアンチウイルスならびに電子メールの内容を修正するまたは電子メールにデータを追加する他のシステムを使って送られる際に修正される電子メール内容に署名することを許容する一般的正規化モデルのための備えをしていてもよい。たとえば、電子メール・ゲートウェイ、広告挿入および／または電子メールに追加されるアンチウイルス通知が電子メールに追加データを加え、電子メールの行幅を修正するなどしうる。
【０１６９】
GCIコンポーネントは、たとえば署名の破棄またはアンチウイルス・ソフトウェア、フリーメール・サーバーおよび／またはゲートウェイのようなアプリケーションによって実行される内容修正に起因する空洞化（voiding）を防止するために、電子メールの内容ボディの署名を計算するための代替的な計算アルゴリズムを利用しうる。
【０１７０】
電子メールのテキスト・データが抽出されてもよく、HTMLコードがフィルタ処理されてもよく、スペーシング、特殊キャラクタおよびキャリッジ・リターン、ライン・フィード、タブ、特殊キャラクタなどのような制御キャラクタがスペース・キャラクタで置換されてもよい。スペース・キャラクタの冗長な生起は単一のスペース・キャラクタで置換されてもよい。バッファの長さが、たとえばバイト単位で計算されてもよく、他のキャラクタが所定の機構を使って、たとえばURLエンコードを記述する「RFC3986」シンタックスを使って正規化されてもよい。
【０１７１】
正規化は、ゲートウェイがライン長をフォーマットし直すことに起因するいかなるフォーマット修正をも無効にしうる。一方、扱われるバッファの長さを記憶することは、いかなる追加（addition）の前にも、常にテキスト・バッファの同じ部分を検査することを許容する。結果として得られるデータは、ハフマン木関数または他の任意の好適な関数を使って圧縮されて、ハッシング・パス（pass）についてのより高いエントロピー・バッファを生成してもよい。圧縮は、正規化の代わりに使われてもよい。それにより、いかなるキャラクタ再エンコードも無効にされる。バッファのハッシュ・コードは、標準的なハッシュ関数、たとえば「Sha1」をデータのコンテンツ・ハッシュ・コードとして使って計算されうる。バッファ長の値は、たとえば署名記述（signature  description）の任意的なフィールドに記憶されてもよい。
【０１７２】
GCIコンポーネントは、同じ公開鍵貯蔵所アーキテクチャを使って、ファイル、オフィス文書、ソースおよび構成設定ファイルなどへの署名および証明の追加を許容しうる。
【０１７３】
一般的APIがいくつかの機能を提供しうる。ある例示的な実施形態では、たとえば、関数は文書に署名することおよび文書を検証することを含みうる。
【０１７４】
文書署名関数では、データのバッファが取得されうる。バッファは、たとえば、コピーによってアクティブなウィンドウの内容を抽出すること、ファイル・コンテンツを含むデータのバッファをポイントすることなどによって取得されうる。秘密鍵は、データのセットを含む特定のバッファに署名するために使用されうる。このデータのセットは、たとえば署名するコンピュータの「ComputerUID」、署名するユーザーの「UserUID」、日時、たとえば正規化されたおよび／または圧縮されたデータ・バッファの内容のハッシュ・コード、相続くバージョン間などバージョン間での同一の文書を認識するために生成される特殊な値（「DocUID」）を含む文書の一意的識別子を記述する構造を定義しうる。文書署名関数は、次いで、この構造を、キャラクタ・ストリングに再エンコードする前に圧縮を実行するために、数値ベースの数値の系列としてシリアル化しうる。ストリングは次いで文書の末尾に挿入されてもよく、一組の特殊マーカーによって区切られていてもよく、それらの先行する一致物のいかなる生起をも置き換える。ある例示的な実施形態では、特殊キャラクタは、「{」および／または「}」のようなキャラクタを含みうる。
【０１７５】
文書検証関数は、上記と同様の手順に従ってデータのバッファを取得してもよく、特殊マーカーの生起を検索してもよい。特殊キャラクタの一つまたは複数が見出されると、マーカー間に囲まれるストリングが抽出され、デコードされ、シリアル化解除されてデータの構造が得られる。この構造は解析されて、その文書を作成したエンティティおよび／または個人、どのコンピュータ装置でか、作成日、作成時刻およびもしあるならばその文書に対して実行された修正の識別および／または追跡を許容しうる。
【０１７６】
署名を文書の本体に埋め込むことは、ゲートウェイ、他のソフトウェアによる何らかのさらなるデータおよび署名／広告の追加を避けるために、署名プロセスの時点での文書の「末尾」および検証プロセスのために検査すべき文書の限界を暗黙的に定義することを許容しうる。このスキームは、「DKIM」署名スキームのための主要な署名フォーマット・システムとして使用されうる。これにより、検査すべき文書の長さを記憶する必要を回避する。
【０１７７】
公共サーバーは、文書署名関数によって生成されたいかなる新たに生成された署名をも登録しうる。これにより、偽造の試みを無効にすることにより二重証明（double-certification）を許容する。文書を検査する際、抽出された文書署名は、たとえば第一のコンピュータ装置によって使われるのとは独立な時間ベースを使うことによって、このサーバーに問い合わせし、署名が登録されていたかどうかを検証することを許容しうる。
【０１７８】
さらに、複数のバージョンを通じて文書の発展を追跡することは、複数の一連の署名の間で当該文書についてのDocUID一意的識別子を維持することによって実行されうる。
【０１７９】
APIはActiveXサーバーとして構成設定および／または設計されていてもよく、主要なオフィスおよびその他のソフトウェア・アプリケーション、たとえば「マイクロソフト・オフィス」、「マイクロソフト・ウィンドウズ（登録商標）」および「インターネット・エクスプローラ」のようなソフトウェア・アプリケーションに埋め込まれてもよい。
【０１８０】
GCIコンポーネントは、ユーザーがこの保護を実装することを許容することによって、DomainKeysシステムを拡張してもよい。デフォルトの標準は、DNSサーバーを主要な公開鍵貯蔵所として定義する。さらに、一組の秘密鍵および公開鍵を安全に生成および管理することは、通常のユーザーにとっては実行するのが難しいタスクである。
【０１８１】
通常のオペレーティング・システム、たとえばマイクロソフト・ウィンドウズ（登録商標）のようなオペレーティング・システムは、マシンの鍵のセットおよびユーザーの鍵のセットを実装する。これは、保護されていて、「CAPICOM」オブジェクトまたは「.Net」暗号レイヤーのような専用インターフェースを通じて利用可能であってもよい。GCIコンポーネントは、ユーザーのための任意の既存の鍵のセットを使うために、あるいは新しい鍵を定義するために、これらの暗号インターフェースに依拠しうる。一方、オペレーティング・システムのこれらの保護されたインターフェースおよびコンポーネントへの記憶および管理タスクを許容する。GCIコンポーネントは、孤立されたユーザーまたは小さなネットワークと既存のDKIMインフラストラクチャーとの間で独立なインターフェースとして動作しうる。
【０１８２】
したがって、ファイル、オフィス文書、電子メールおよび任意の種類のデジタル・データが署名されうる。例示的な実施形態に基づくデータ署名は、たとえば、デジタル署名を署名されたデータの末尾を決定する署名されたテキストの要素として埋め込むことを含みうる。署名されたデータは、修正されたフォーマットおよびデータの追加のために壊れた署名を回避するために、正規化されてもよい。DKIM、Domain-Keyおよびユーザー側インフラストラクチャーなしで一般的文書認証システムを定義するための公開鍵貯蔵所をもつ任意の好適な他のスキームを含む標準的な署名スキームがリンクされうる。デジタル署名は、署名するコンピュータ装置とリンクされてもよく、ユーザー匿名識別子および／またはデジタル署名は、文書の複数バージョンの追跡を許容する文書一意的識別子とリンクされてもよい。デジタル署名は、文書の改訂の追跡を許容するために、文書の署名日時とリンクされてもよい。公共の文書署名貯蔵所が、ローカルな日付および／または時刻の考慮なしに任意の署名のダブルチェックならびに文書についてのグローバルな匿名追跡システムを許容しうる。
【０１８３】
上記の実施形態は本願の例示的な例であり、本願がこれらの個別的な実施形態に限定されると解釈すべきではない。付属の請求項において定義される本願の精神または範囲から外れることなく、当業者によって、さまざまな変更および修正が実施されうる。たとえば、本開示および付属の請求項の範囲内で、種々の例示的な実施形態の要素および／または特徴が互いに組み合わされてもよいし、および／または互いの代用とされてもよい。さらに、本開示、図面および付属の請求項を読んだ後で当業者に明白となる改良および修正は、本願の精神および範囲内であると見なされる。
【０１８４】
いくつかの態様を記載しておく。
〔態様１〕
コンピュータ装置を使うデータ通信の方法であって：
データ通信コンポーネントの、第一の通信プロトコルの定義を含む第一のバージョンをアップグレードするかどうかを決定する段階と；
前記データ通信コンポーネントの前記第一のバージョンをアップグレードすると決定された場合にはセキュア・サーバーに接続する段階と；
認証検査を実行する段階と；
前記認証検査が成功した場合には前記セキュア・サーバーから、第二の通信プロトコルの定義を含む前記データ通信コンポーネントの第二のバージョンを少なくとも含むパッケージを受信する段階と；
パッケージに埋め込まれているデジタル署名が有効かどうかを判定する段階と；
前記デジタル署名が有効である場合には前記データ通信コンポーネントの前記第二のバージョンをインストールする段階と；
前記データ通信コンポーネントの前記第二のバージョンを実行する段階と；
前記データ通信コンポーネントの前記第二のバージョンおよび前記第二の通信プロトコルを利用してデータ通信を実行する段階とを含む、
方法。
〔態様２〕
データ通信コンポーネントの第一のバージョンをアップグレードするかどうかを決定する段階は：
前記データ通信コンポーネントの前記第一のバージョンの以前の実行の時刻から現在時刻までに経過した時間を判別する段階と；
経過時間を所定のトリガー時間値と比較する段階と；
経過時間が前記トリガー時間値に等しいかそれより大きい場合には前記セキュア・サーバーに接続する段階とを含む、
態様１記載の方法。
〔態様３〕
前記経過時間を比較する段階は、ネットワーク時間プロトコルを使った現在時刻の判別を含む、態様２記載の方法。
〔態様４〕
前記認証検査が成功でないまたは前記デジタル署名が有効でない場合にアラートを生成する段階と；
前記アラートを前記コンピュータ装置のユーザー、前記セキュア・サーバーのユーザーまたは調査サーバーのうちの少なくとも一に送信する段階を含む、
態様２記載の方法。
〔態様５〕
前記セキュア・サーバーのアドレスは直接IPアドレスのプール内に位置されており、
直接IPアドレスの前記プールは前記セキュア通信コンポーネントの前記第一のバージョン内に記憶される、
態様１記載の方法。
〔態様６〕
前記認証検査は、零知識プロトコル、SSL証明書または非対称暗号法技法のうちの少なくとも一つの使用を含む、態様１記載の方法。
〔態様７〕
前記パッケージはさらに、前記データ通信コンポーネントの前記第二のバージョンの少なくとも一つの従属物を含む、態様１記載の方法。
〔態様８〕
前記データ通信コンポーネントの前記第二のバージョンは、前記データ通信コンポーネントの前記第一のバージョンのソース・コードの修正を含み；
前記修正はソース・コード・レベル多形エンジンによって生成される、
態様１記載の方法。
〔態様９〕
前記ソース・コード・レベル多形エンジンは、非機能命令を使ったノイズの挿入、変数の埋め込み、数学的関数の埋め込み、値の埋め込み、ジャンプの挿入、時間シフト遅延の挿入、前記ソース・コードのランダムな並べ替え、APIへの参照およびコール・ラッピングの挿入、トレーサー検出コードの挿入、サブスレッド生成器の挿入、偽コードの挿入または自動保護システムの挿入のうちの少なくとも一つを実行する、態様８記載の方法。
〔態様１０〕
コンピュータ装置を使ってデータ通信コンポーネントの第二のバージョンを生成する方法であって、
乱数のプールを生成する段階と；
暗号鍵のプールを生成する段階と；
前記乱数のプールを使ってデータ通信コンポーネントの第一のバージョンのソース・コードを修正する段階と；
等価な諸関数のライブラリをリンクする段階と；
修正されたソース・コードをコンパイルする段階と；
コンパイルされたソース・コードをシールドする段階と；
シールドされたコンパイルされたソース・コードに署名する段階と；
従属物を埋め込む段階とを含む、
方法。
〔態様１１〕
前記データ通信コンポーネントの前記第二のバージョンは、前記データ通信コンポーネントの前記第一のバージョンのソース・コードの修正を含み；
前記修正はソース・コード・レベル多形エンジンによって生成される、
態様１０記載の方法。
〔態様１２〕
前記ソース・コード・レベル多形エンジンは、非機能命令を使ったノイズの挿入、変数の埋め込み、数学的関数の埋め込み、値の埋め込み、ジャンプの挿入、時間シフト遅延の挿入、前記ソース・コードのランダムな並べ替え、APIへの参照およびコール・ラッピングの挿入、トレーサー検出コードの挿入、サブスレッド生成器の挿入、偽コードの挿入または自動保護システムの挿入のうちの少なくとも一つを実行する、
態様１１記載の方法。
〔態様１３〕
前記シールドする段階が、バイナリー・レベル・コード保護器によって実行され；
前記バイナリー・レベル・コード保護器がバイナリー・レベル多形エンジンを含む、
態様１０記載の方法。
〔態様１４〕
前記バイナリー・レベル多形エンジンは、コード保護機能の注入、アンチトレーサーの注入、アンチデバッガ・トラップの注入、バイナリー・コードの圧縮、バイナリー・コードの暗号化、ヘッダの書き換え、リソースの書き換えまたはローダの書き換えのうちの少なくとも一つを実行する、態様１３記載の方法。
〔態様１５〕
コンパイルされたソース・コードに署名する段階は、エディタの秘密鍵をもって署名することを含む、態様１０記載の方法。
〔態様１６〕
前記従属物が、アンチマルウェア・データベース、訂正または他のプロセスの更新された要素のうちの少なくとも一つを含む、態様１０記載の方法。
〔態様１７〕
コンピュータ装置を使ったデータ通信方法であって：
電子通信に埋め込まれた、少なくとも一つの目標位置識別子を含むリンクがユーザーによって選択されたときにデータ通信をインターセプトする段階と；
前記電子通信を表示するために使われるアプリケーションの型を判別する段階と；
前記アプリケーション型が電子通信リーダー・アプリケーションまたはウェブメール領域におけるウェブ・ブラウザ・ソフトウェア・アプリケーションの一方である場合には：
前記電子通信の件名を抽出し；
前記電子通信のコンテンツを抽出し；
前記電子通信を解析し；
抽出された件名およびコンテンツを解析し；
選択されたリンクを解析し；
前記電子通信の人間的要因を解析し；
前記電子通信の解析、前記抽出された件名およびコンテンツの解析、前記選択されたリンクの解析および前記人間的要因の解析に基づいてリスク因子を決定し；
決定されたリスク因子の値に基づいて、前記リンクによって同定される目標位置または有効な位置の一方にユーザーを差し向けることを含む、
方法。
〔態様１８〕
前記電子通信の件名またはコンテンツの少なくとも一方の抽出は文書オブジェクト・モデルを解析することを含む、態様１７記載の方法。
〔態様１９〕
前記通信の解析は、選択されたリンクが電子メール文書に埋め込まれているかどうかの判別、前記電子通信内の少なくとも一つの画像の位置およびサイズの検出、前記電子通信の可視および不可視要素の検出、前記電子通信のテキスト、エリアまたはゾーンのうちの一つの前景および背景の色の間の距離の計算または埋め込みピクチャー認識アルゴリズムを使った前記電子通信に含まれる画像の解析のうちの少なくとも一つを含む、態様１７記載の方法。
〔態様２０〕
件名およびコンテンツの解析が、前記電子通信に含まれる単語の解析、フィッシング通信において一般的に使われる単語の量の判別、前記電子通信に含まれるテキスト参照リンクの解析または前記電子通信のフォーマットの解析のうちの少なくとも一つを含む、態様１７記載の方法。
〔態様２１〕
選択されたリンクの解析は、エンコードされたリンクの検出、ドメインのリダイレクトの検出、トップ・レベル・ドメインの検出、なりすましされたリンクの検出、サブリダイレクトされたリンクの検出、不適正にフォーマットされたリンクのソート、ユーザー名なりすましの検出、直接IPリンクの検出、保護された目標の検出、誤って綴られたリンクの検出、テキスト・リンクにおける音韻的意味の検出、仲間のリンクの検出、既知のドメインの検出、無料ホスティング・サービスの検出、危険な地理的領域の検出またはローカル・ホスト・ファイルによる隠されたリダイレクトの検出のうちの少なくとも一つを含む、態様１７記載の方法。
〔態様２２〕
前記リンクにおいて同定された目標位置を解析することをさらに含む、態様１７記載の方法。
〔態様２３〕
ユーザーを有効な位置に差し向けることは、保護フィールド辞書からデフォルトの有効な位置のリンクを取得することを含む、態様１７記載の方法。
〔態様２４〕
コンピュータ装置を使って証明書を生成する方法であって：
サーバーにおいて証明の要求を受信する段階と；
外部検証を実行する段階と；
少なくとも一つの要求されたオプションを利用して証明書を生成する段階と；
秘密鍵を使って前記証明書に署名する段階とを含み、ここで、前記サーバーは、前記サーバーの完全修飾ドメイン名および前記サーバーのTCP/IPアドレスによって同定される、方法。
〔態様２５〕
コンピュータ装置を利用して証明書を使用する方法であって：
少なくとも一つのウェブサイトをホストしているサーバーに問い合わせする段階と；
前記サーバーの保護を判別するために内部関数への呼び出しを立ち上げる段階と；
前記証明書をダウンロードする段階と；
公開鍵を使って前記証明書が本物であることを検証する段階と；
前記証明書が本物であると検証された場合に少なくとも一つの証明書フィールドを抽出する段階と；
前記サーバーから受信されたデータのデジタル署名またはハッシュ・コードのうちの少なくとも一つを計算する段階と；
前記少なくとも一つの証明書フィールドを前記受信されたデータの前記デジタル署名または前記ハッシュ・コードのうちの少なくとも一つと比較する段階と；
前記比較の結果に基づいて前記ウェブサイトが有効であるかどうかを判定する段階とを含む、
方法。
【図１】
0005941872.tif 000005
【図２】
0005941872.tif 000006
【図３】
0005941872.tif 000007
【図４】
0005941872.tif 000008
【図５】
0005941872.tif 000009
【図６】
0005941872.tif 000010
【図７】
0005941872.tif 000011
【図８】
0005941872.tif 000012
【図９】
0005941872.tif 000013
【図１０】
0005941872.tif 000014
【図１１】
0005941872.tif 000015
【図１２】
0005941872.tif 000016
【図１３】
0005941872.tif 000017
【図１４】
0005941872.tif 000018
【図１５】
0005941872.tif 000019
【図１６】
0005941872.tif 000020
【図１７】
0005941872.tif 000021