(57)【要約】ユニバーサル・シリアル・バス（ＵＳＢ）ホストシステムのＵＳＢプロトコルスタックのためのセキュリティ手段を提供する。セキュリティ手段は、権限の無い、又は疑わしいＵＳＢデバイスがホストシステムと通信することを防止し、ホストシステムと既に通信しているデバイスから発生した疑わしい活動を検出し、ユーザに通知を提供する場合がある。【選択図】図１
2014509421.tif 000002
【特許請求の範囲】
【請求項１】
ホストシステムを前記ホストシステムに接続された第１の装置から保護するための方法であって、
前記ホストシステムのプロセッサにおいて、セキュリティ手段を有する拡張プロトコルスタックを実行するステップと、
前記ホストシステムと通信することを権限の無い装置の第１のリストをコンパイルするステップであって、前記装置の第１のリストは、前記拡張プロトコルスタックの前記セキュリティ手段によって管理される、前記ホストシステムと通信することを権限の無い装置の第１のリストをコンパイルするステップと、
前記拡張プロトコルスタックの前記セキュリティ手段によって管理される疑わしい記述子の第２のリストをコンパイルするステップと、
前記第１の装置及びその識別子を識別するステップと、
前記第１のリストと前記第２のリストを、前記識別された装置及びその記述子と比較し、一致するものがある場合、
前記第１の装置と前記ホストシステムとの間の通信を防止するステップと
からなる方法。
【請求項２】
前記第１の装置は、第１のＵＳＢデバイスを含み、
前記方法は、
前記ホストシステムに接続された前記第１のＵＳＢデバイスの疑わしい活動を検出するステップと、
前記疑わしい活動の検出に応答し、前記第１のＵＳＢデバイスと前記ホストシステムとの間の通信を防止するステップと
をさらに含む、請求項１に記載の方法。
【請求項３】
前記疑わしい活動を検出するステップは、
前記第１のＵＳＢデバイスのランタイム活動を検査するステップと、
前記活動が前記第１のＵＳＢデバイスに一致しないという判断に応答し、前記第１のＵＳＢデバイスと前記ホストシステムとの間の通信を防止するステップと
を含む、請求項２に記載の方法。
【請求項４】
前記ランタイム活動を検査するステップは、
前記第１のＵＳＢデバイスから発生したパケット、及び前記第１のＵＳＢデバイスを宛先とするパケット内のデータを検査するステップと、
前記データが前記第１のＵＳＢデバイスに一致しないという判断に応答し、前記第１のＵＳＢデバイスと前記ホストシステムとの間の通信を防止するステップと
を含む、請求項３に記載の方法。
【請求項５】
前記ホストシステムと通信する権限が与えられたＵＳＢデバイスのホワイトリストをコンパイルするステップと、
前記第１のＵＳＢデバイスが前記ホワイトリスト上にある場合、前記第１のＵＳＢデバイスと前記ホストシステムとの間の通信を許可するステップと
をさらに含む、請求項２に記載の方法。
【請求項６】
権限の無い、又は疑わしいＵＳＢデバイスが前記ホストシステムに接続されていることをユーザに通知することをさらに含む、請求項２に記載の方法。
【請求項７】
システムであって、
ホストコントローラと、
前記ホストコントローラに接続され、デバイス識別データベースのインタフェースとなるセキュリティ・コントロール・モジュールを有する拡張ＵＳＢプロトコルスタックを実行するように構成されたプロセッサと、
前記デバイス識別データベース及び前記セキュリティ・コントロール・モジュールを記憶するように構成されたメモリと
を含み、前記セキュリティ・コントロール・モジュールが、
前記ホストコントローラと通信する権限の無いＵＳＢデバイスの第１のリストを管理し、
前記ホストコントローラと通信する権限の無い記述子の疑わしい組み合わせを有するＵＳＢデバイスの第２のリストを管理し、
前記ホストコントローラと通信しているが、疑わしい活動を示している、前記ホストコントローラに接続されたＵＳＢデバイスの第３のリストを管理し、
前記第１のＵＳＢデバイスと、前記第１のリスト、前記第２のリスト、又は前記第３のリストとの間に一致があった場合、前記ホストコントローラに接続された第１のＵＳＢデバイスと当該システムとの間の通信を遮断する、システム。
【請求項８】
前記メモリに記憶され、前記デバイス識別データベースにおいて管理される前記第１のリスト、前記第２のリスト、及び前記第３のリストを、前記第１のＵＳＢデバイス及び前記第１のＵＳＢデバイスの記述子と比較し、一致に応答して、前記セキュリティ・コントロール・モジュールと協働し、前記第１のＵＳＢデバイスと当該システムとの間の通信を防止するステップをさらに含む、請求項７に記載のシステム。
【請求項９】
前記記述子は、前記第１のＵＳＢデバイスのためのドライバを選択するための情報を提供し、前記記述子は、デバイス記述子、構成記述子、及び文字列記述子を含む、請求項８に記載のシステム。
【請求項１０】
前記デバイス記述子は、デバイスクラス、及びＵＳＢ仕様バージョン番号を含む、請求項９に記載のシステム。
【請求項１１】
前記構成記述子は、代替の設定及びクラスのインタフェース記述子、及び前記構成記述子における総バイト数を含む、請求項９に記載のシステム。
【請求項１２】
前記文字列記述子は、製造業者識別情報（ＩＤ）、及びシリアル番号を含む、請求項９に記載のシステム。
【請求項１３】
第２のＵＳＢデバイスが、前記システムと問題なく通信し、
前記システムは、
前記メモリに記憶され、静的分析及びヒューリスティック分析により、前記第２のＵＳＢデバイスと前記システムとの間の疑わしい活動を検出するように構成される、請求項７に記載のシステム。
【請求項１４】
前記静的分析は、前記第２のＵＳＢデバイスから発生したパケット及び前記第２のＵＳＢデバイスを宛先とするパケットに含まれるデータを検査し、当該データが、前記第２のＵＳＢデバイスにとって適当であるか否かを判断する、ディープ・パケット・インスペクションを含む、請求項１３に記載のシステム。
【請求項１５】
前記ホストコントローラに接続されたＵＳＢマスストレージデバイスをさらに含み、
前記デバイス識別モジュールは、前記ＵＳＢマスストレージデバイス上の所定の記憶場所のハッシュを記憶するようにさらに構成される、請求項１３に記載のシステム。
【請求項１６】
前記静的分析は、前記ハッシュにおける疑わしい変更について、前記ＵＳＢマスストレージデバイスを監視するステップを含む、請求項１５に記載のシステム。
【請求項１７】
前記静的分析は、ＵＳＢヒューマン・インタフェース・デバイス（ＨＩＤ）の疑わしい活動を識別すること、及び前記疑わしい活動を拒絶することにより、前記システムに対する管理上のアクセスを獲得する試みを打ち負かすことを含む、請求項１３に記載のシステム。
【請求項１８】
ＵＳＢ  ＨＩＤは、キーボード及びマウスを含み、前記疑わしい活動は、前記キーボードのＷｉｎｄｏｗｓ（登録商標）キーを押下し、前記システムに対する管理上のアクセスを獲得するプログラムを実行すること、及びプログラムを実行するメニューにアクセスし、又はシステムへの無防備なアクセスを許可するための、前記マウスの左及び／又は右クリックを検出することを含む、請求項１７に記載のシステム。
【請求項１９】
前記ヒューリスティック分析は、キーボードとして識別された第３のＵＳＢデバイスから発生した打鍵の速度を監視し、前記打鍵の速度が、最大タイプ速度を表す所定の限界を超える場合、前記第３のＵＳＢデバイスに疑わしいものとしてフラグを立てることを含む、請求項１３に記載のシステム。
【請求項２０】
命令を含む持続性コンピュータ読取可能媒体であって、前記命令がプロセッサにより実行されたときに、
ユニバーサル・シリアル・バス（ＵＳＢ）プロトコルスタックを提供し、
ホストシステムに接続されたＵＳＢデバイスにより開始された権限の無い活動から前記ホストシステムを保護するように構成されたセキュリティモジュールを含むように、前記ＵＳＢプロトコルスタックを拡張するように構成され、
前記セキュリティモジュールは、前記ＵＳＢデバイスが前記ホストシステムと通信する権限が無いものとして識別されたときに、前記ホストシステムと、前記ホストシステムに接続されたＵＳＢデバイスとの間の通信を可能にする動作をするセキュリティ・コントロール・モジュールを含み、前記セキュリティ・コントロール・モジュールはさらに、前記ＵＳＢデバイスが前記ホストシステムと通信する権限が無いものとして識別されたときに、前記ホストシステムと、前記ＵＳＢデバイスとの間の通信を無効化する動作をし、前記セキュリティ・コントロール・モジュールはさらに、前記ＵＳＢデバイスが前記ホストシステムに関して権限の無い活動を開始するものとして識別されたときに、前記ホストシステムと、前記ＵＳＢデバイスとの間の通信を無効化する動作をする、持続性コンピュータ読取可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して、ユニバーサル・シリアル・バス（ＵＳＢ）ホストシステムに関し、より具体的には、ＵＳＢホストシステムの拡張ＵＳＢプロトコルスタックのためのセキュリティ手段に関する。
【背景技術】
【０００２】
過去１５年にわたって、ＵＳＢは、マスストレージ、スマートフォン、デジタルカメラ、メディアプレイヤー、キーボード等を含む種々のデバイスをパーソナルコンピュータ（ＰＣ）その他のホストシステムに接続するための、有力なとは言わないまでも、好ましい技術として浮上してきた。ユーザは、ＵＳＢの便利さ及び単純さを享受し、同時に製造業者及びソフトウェア開発者は、異なる速度を有する複数の異なるＵＳＢ仕様が存在しているものの、それらをサポートする単一の標準的インタフェースが得られることの利益を享受している。
【０００３】
ＵＳＢプロトコルは、短距離における一般的なユーザデータ転送については、十分に堅牢であることが証明されているが、当該プロトコルは、ＵＳＢデバイスから発生する不正な活動の影響を防止又は制限するセキュリティ機能を何も有していない。例えば、有線通信のためのＵＳＢプロトコルは、ＵＳＢデバイスとホストシステムとの間の通信を許可する前に、そのＵＳＢデバイスの認証を要求しない。そのため、有線ＵＳＢデバイスが自分自身の識別情報をホストシステムに提示し、そのホストが、そのデバイスのために使用可能な適当なドライバを有していれば、通信は確立され、そのＵＳＢデバイスは、不正なものではないと単純に推測される。その結果、権限の無い、又は不正なユーザは、ホストシステムに攻撃を仕掛けたり、ウイルスを送り込んだり、ホストシステムからデータをダウンロードしたりするようにＵＳＢデバイスをプログラムすることによって、ホストシステムへのアクセス権を獲得し、ホストシステムを無効化し、又はその他ホストシステムに妨害を与えることがある。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
簡単に要約すれば、本発明は、疑わしい、若しくは権限の無いＵＳＢデバイスがホストシステムと通信することを防止し、又はＵＳＢデバイスから発生した疑わしい活動が検出されたときに、ＵＳＢデバイスとホストシステムとの間の継続的な通信を防止するセキュリティ手段を提供する。セキュリティ手段におけるユーザの介入は、必要に応じて許可される場合も、許可されない場合もある。例えば、ユーザには、疑わしいＵＳＢデバイスの存在を示す所与の視覚的警告と併せて、そのデバイスとホストシステムとの間の通信を許可又は拒否するための選択肢が与えられる場合がある。あるいは、疑わしいＵＳＢデバイスは、ユーザの介入なしに、ホストシステムとの通信を拒否される場合がある。
【０００５】
本発明の第１の実施形態によれば、セキュリティ手段は、ＵＳＢプロトコルスタックの拡張により、例えば、セキュリティ・コントロール・モジュール（ＳＣＭ）を当該スタックに追加することにより提供される。本発明の第２の実施形態によれば、セキュリティ手段は、ホストコントローラを通じて提供される。第１及び第２の実施形態は組み合わされる場合があり、ＵＳＢプロトコルスタック及びホストコントローラは、協働して所望のセキュリティ手段を提供する場合がある。本発明のさらに別の実施形態によれば、セキュリティ手段の少なくとも一部は、ホストシステムのＢＩＯＳ機能に関連して提供される。特定のアプリケーション又は環境の要件に適合させるために、本発明の種々の実施形態は、ハードウェア、ソフトウェア、又は両者の組み合わせによって実施される場合がある。
【０００６】
本発明の種々の実施形態によれば、種々のセキュリティ技術は、個別に、又は組み合わせとして適用される場合がある。第１に、新たなＵＳＢデバイスが最初にホストシステムに接続されたときに、そのデバイスとホストのオペレーティングシステムとの間における通信を許可する前に、ＳＣＭのインタフェースとなるセキュリティ・コントロール・アプリケーション・インタフェース（ＳＣＡＩ）を使用して、その新たなＵＳＢデバイスを検査する場合がある。そのような通信を許可するか否かを判断する際に、ＳＣＡＩは、そのＵＳＢデバイス、構成、インタフェース、および文字列記述子を含む、そのＵＳＢデバイスからの種々の情報を検査し、疑わしいパターンを探索する場合がある。同様に、ＳＣＡＩは、ＵＳＢデバイスに関連する種々の機能の疑わしい組み合わせを探索する場合がある。ＳＣＡＩは、アプリケーション・プログラミング・インタフェースをさらに含む場合があり、アンチウイルスアプリケーション、ファイアウォールアプリケーション、又は他のアプリケーションは、そのアプリケーション・プログラミング・インタフェースを通じて、そのＵＳＢデバイスを検査又はテストし、又は、そのデバイスがホストのオペレーティングシステムと通信することを許可するか否かを判断する際に使用される情報をさらに提供する場合がある。ＳＣＡＩは、ユーザ構成インタフェースをさらに含む場合があり、ユーザは、当該ユーザ構成インタフェースを通じて、所望のセキュリティレベルを選択若しくは変更したり、事前に許可され若しくは許可されていないＵＳＢデバイスを前もって特定する等の種々の動作を命じる場合がある。
【０００７】
ＳＣＡＩはさらに、承認されたＵＳＢデバイスのホワイトリスト、禁止されたＵＳＢデバイスのブラックリスト、又はそれら両方の組み合わせを管理するために使用されることがあるデバイス識別データベース、又は他のデータ構造のインタフェースともなる場合がある。新たなＵＳＢデバイスが最初にホストシステムに接続されたとき、ＳＣＡＩは、そのデバイスに関する特定の情報（例えば、その製造業者ＩＤ、製品ＩＤ、又は他の情報）を読み出し、かかる情報をホワイトリスト及び／又はブラックリストと比較して、そのＵＳＢデバイスがホストシステムと通信する上で問題がないか否かを判断する場合がある。デバイス識別データベースの内容は、指定ウェブサイトとの間のホスト始動型の自動通信、権限を有するサービスプロバイダによるホストシステムとのリモートアクセス、及びユーザ始動型アクションを含む種々の技術のうちの任意のものにより、現場で更新される場合がある。
【０００８】
さらに、ランタイムデバイス識別モジュール（ＤＩＭ）が設けられる場合があり、ＳＣＭ、デバイス識別データベース、及び、ＵＳＢデバイスから発生する活動について静的分析又はヒューリスティック分析を実施する更に別のモジュールのインタフェースとなる場合がある。ＤＩＭは、静的分析又はヒューリスティック分析（あるいは両方）の結果に基づき、特定のＵＳＢデバイスが期待通りに動いているか、それとも疑わしい態様で動いているかを示す動的指示を出力する場合がある。かかる指示は、アドミッション制御モジュール（ＡＣＭ）に渡され、ＡＣＭは、疑わしい活動が行為の根拠となる水準まで上昇した場合を判断する場合がある。ＡＣＭは、脅威通知モジュールと通信し、脅威通知モジュールは、知覚された脅威について視覚的なメッセージ・ベースの、又は他の通知をユーザに渡し、そのユーザに対し、適当な行動をとることを要求する場合がある。適当な行動には、特定のＵＳＢデバイスを手動で承認し、又は承認しないことが含まれる場合がある。さらに、ＡＣＭは、ユーザの介入なしに、セキュリティポリシーについての観測された違反に基づいて、ＵＳＢデバイスが、ホストシステムと通信すること、又はホストシステムとそれ以上通信することを阻止する場合がある。
【０００９】
本発明の上記の、及び他の利点は、添付の図面とともに下記の説明を読むことにより、より良好に理解することができる場合がある。添付の図面において、類似の参照符号は、同一の、又は機能的に同様の要素を示している。
【図面の簡単な説明】
【００１０】
【図１】ＵＳＢホストシステムを示すブロック図である。
【図２】従来のＵＳＢプロトコルスタックを示すブロック図である。
【図３】本発明の種々の実施形態によるセキュリティ手段を含む拡張ＵＳＢプロトコルスタックを示すブロック図である。
【発明を実施するための形態】
【００１１】
図１は、例えばパーソナルコンピュータ（ＰＣ）を表す場合がある従来のＵＳＢホストシステム１００を示すブロック図である。ＵＳＢホストシステム１００は、例えば、システムバス１４０により相互接続されたプロセッサ１１０、メモリ１２０、基本入出力システム（ＢＩＯＳ）１３０、及びＵＳＢホストコントローラ１５０を含む。ＢＩＯＳ１３０は、システム１００をブートストラップ、すなわち「ブート」するために必要なブートローダー・ソフトウェアを実行する前に、種々のテスト及び初期化機能（例えば、種々のシステムデバイスのパワー・オン・セルフテスト、識別、及び初期化等）を実施するファームウェアインタフェースを提供する。ＵＳＢホストコントローラ１５０は、ホストシステム１００をＵＳＢバス１５５に接続されたＵＳＢデバイス２３６に接続するために必要な機械的、電気的、及び信号的回路を含む。その目的のために、ＵＳＢホストコントローラ１５０は、ＵＳＢデバイス２３６のためのハードウェアインタフェースを提供する。ＵＳＢデバイス２３６には、キーボード、マウス、マスストレージ、デジタルカメラ、並びに多数の他のタイプのデバイスが含まれ得る。
【００１２】
メモリ１２０は、本明細書に記載する種々の実施形態に関連するソフトウェアプログラム及びデータ構造を記憶するために、プロセッサ１１０、ＢＩＯＳ１３０、及び／又はＵＳＢホストコントローラ１５０によりアドレス指定可能な複数の場所を含む場合がある。プロセッサ１１０は、かかるソフトウェアプログラムを実行し、本明細書に記載するデバイス識別データベースのようなデータ構造を操作（すなわち、制御）するように構成されたロジックを含む場合がある。例示的プロセッサ１１０は、シングルコア又はマルチコアの中央演算処理装置（ＣＰＵ）、グラフィックス処理ユニット（ＧＰＵ）、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、及び／又は特定用途向け集積回路（ＡＳＩＣ）を含む場合がある。
【００１３】
オペレーティングシステム１２２は、その種々の部分が通常、メモリ１２０に常駐し、プロセッサ１１０により実行され、とりわけ、ホストシステムにおいて実行されるソフトウェアプロセス及び／又はアプリケーションを支援するための処理を実施することにより、ホストシステム１００を機能的に構成する。オペレーティングシステム１２２は、ファイルシステム、ネットワーク、及び／又は本明細書に記載するようなＤｉｒｅｃｔＩｎｐｕｔスタックとして構成された種々のプロトコルスタックを含む一連のソフトウェアレイヤとして構成される。適当なオペレーティングシステム１２２としては、とりわけ、ワシントン州レドモンドにあるマイクロソフト・コーポレイションから提供されるＷｉｎｄｏｗｓ（登録商標）シリーズのオペレーティングシステム、Ｌｉｎｕｘ（登録商標）オペレーティングシステム、及びカリフォルニア州クパチーノにあるアップル・インコーポレイテッドから提供されるＭＡＣ  ＯＳ（登録商標）シリーズのオペレーティングシステム、及びＵＮＩＸ（登録商標）シリーズのオペレーティングシステムが挙げられる。ソフトウェアプロセス／アプリケーションは、拡張ＵＳＢプロトコルスタックセキュリティ手段３０２の種々のプロセス／アプリケーションを含む場合があり、したがって、本明細書に記載する種々の機能を実施するためにホストシステム１００のプロセッサ１１０により実行される、種々の実行可能命令を含む場合がある。
【００１４】
当業者には、他のタイプのプロセッサ、及び種々の有形の一時的でないコンピュータ読取可能媒体のような他のタイプのメモリを使用して、本明細書に記載するシステムに関連するプログラム命令を記憶、及び実行することも可能であることは、明らかであろう。また、本明細書に記載した実施形態は、メモリに記憶されたソフトウェアプロセス／アプリケーションの形をとっているが、代替実施形態は、ハードウェア、ソフトウェア、ファームウェア、又はこれらの組み合わせとして実施されるこれらのプロセス／アプリケーションを含む。
【００１５】
図２は、従来のＵＳＢプロトコルスタック２３２を有するＵＳＢホストシステム２００を示すブロック図である。ファイルシステムアプリケーション２０２には、オペレーティングシステム及び他のサプライヤにより提供される、ディレクトリ及びファイルブラウザ（例えば、マイクロソフト・コーポレイションから提供される「Ｅｘｐｌｏｒｅｒ」、及びアップル・インコーポレイテッドから提供される「Ｆｉｎｄｅｒ」）が含まれる場合がある。アンチウイルスアプリケーション２０４には、シマンテック、マカフィその他のサプライヤから提供されるソフトウェアが含まれる場合がある。ネットワークアプリケーション２０６には、マイクロソフト・コーポレイションその他のサプライヤから提供されるウェブブラウザが含まれる場合がある。ファイアウォールアプリケーション２０８には、カスペルスキー、オンラインアーマーその他のサプライヤから提供されるソフトウェアが含まれる場合がある。ＤｉｒｅｃｔＩｎｐｕｔアプリケーション２１０には、マイクロソフトその他のサプライヤから提供されるワードプロセッサ及びスプレッドシートアプリケーションが含まれる場合がある。
【００１６】
ファイルシステムスタック２１２の例は、ＮＴＦＳ及びＦＡＴ３２であり、ファイルシステムスタック２１２は、ホストシステム２００のオペレーティングシステム１２２の一部を形成する場合があり、ファイルシステムアプリケーション２０２とマスストレージ機能ドライバ２１８との間の通信を可能にする場合がある。同様に、ネットワークスタック２１４は、オペレーティングシステムの一部を形成する場合があり、ＴＣＰ／ＩＰその他の種々のネットワークプロトコルをサポートし、ひいては、ネットワークアプリケーション２０６とネットワーク機能ドライバ２２０との間の通信を可能にする場合がある。ＤｉｒｅｃｔＩｎｐｕｔスタック２１６もまた、オペレーティングシステムの一部を形成する場合があり、直接ユーザ入力（例えば、キーボード打鍵又はマウスクリック）をサポートし、ＤｉｒｅｃｔＩｎｐｕｔアプリケーション２１０とヒューマン・インタフェース・デバイス（ＨＩＤ）クラス機能ドライバ２２２との間の通信を可能にする場合がある。
【００１７】
ドライバ２１８、２２０及び２２２は、ＵＳＢコンポジットドライバ２２４と通信する。次いで、ＵＳＢコンポジットドライバ２２４はＵＳＢスタック２３２と通信し、ＵＳＢスタック２３２は、コンポジットドライバ２２４とＵＳＢホストコントローラ（ハードウェア）２３４との間における通信を有効化する。ＵＳＢスタック２３２は、ＵＳＢハブドライバ２２６、ＵＳＢＤインタフェースドライバ２２８、及びＵＳＢホストコントローラドライバ２３０を含む。
【００１８】
図３は、本発明の少なくとも１つの実施形態にしたがってＵＳＢセキュリティ手段を具現化する拡張ＵＳＢプロトコルスタック３０２を含むＵＳＢホストシステム３００を示すブロック図である。明瞭かつ簡潔のために、先に説明した図３に示された機能ブロックは、先の参照符号により識別される。
【００１９】
拡張ＵＳＢスタック３０２は、セキュリティ・コントロール・モジュール（ＳＣＭ）３０４を含む。ＳＣＭ３０４は、好ましくは、ＵＳＢＤインタフェースドライバ２２８とＵＳＢホストコントローラドライバ２３０との間に配置され、ひいては、それらのドライバ間における通信を有効化（又は無効化）する。ＳＣＭ３０４は、ランタイムデバイス識別モジュール（ＤＩＭ）３０６、及びセキュリティ・コントロール・アプリケーション・インタフェース（ＳＣＡＩ）モジュール３１８のインタフェースとなる。ＤＩＭ３０６は、静的分析機能３１０、ヒューリスティック分析機能３１２、及びアドミッション制御モジュール（ＡＣＭ）３０８のインタフェースとなる。脅威通知モジュール３１４は、ＡＣＭ３０８、及びユーザ通知インタフェースモジュール３２２のインタフェースとなる。デバイス識別データベース（ＤＩＤ）３１６は、ＤＩＭ３０６及びＳＣＡＩ３１８の両方のインタフェースとなる。ユーザ構成インタフェースモジュール３２０もまた、ＳＣＡＩ３１８のインタフェースとなる。
【００２０】
代替実施形態において、本明細書に記載するドライバ及び機能を含むソフトウェアプロセス、及び／又はモジュールは、ＵＳＢホストシステム３００の中で独立にスケジューリングされたプロセスとして実施される場合があるが、代替実施形態では、これらのモジュールは、単一プロセスの中の種々のコード断片として実施される場合がある。したがって、ホストシステム３００の種々のモジュール間における通信は、例えば、モジュール間におけるメッセージの受け渡し、共有メモリ、又はリモート・プロシージャ・コール（ＲＰＣ）の使用により実施される場合がある。モジュール間における情報の転送のためにオペレーティングシステム１１２により提供される適当なメッセージ受け渡し、共有メモリ、及び／又はＲＰＣメカニズムは、インター・プロセス・コミュニケーション（ＩＰＣ）メカニズムである。
【００２１】
ＳＣＭ、ＳＣＡＩ、ＤＩＭ及びＡＣＭの機能は、ホストシステム、ホストシステムのＢＩＯＳ、及びＵＳＢプロトコルスタックの種々の組み合わせにわたって分散される場合がある。例えば、図２に示したＵＳＢホストシステムでは、新たなＵＳＢデバイスがホストコントローラ２３４に接続されると、ホストシステム２００が、その新たなデバイスを（通常は、ＵＳＢデータラインを監視することにより）検出し、１パケット（又は複数パケット）の情報をその新たなＵＳＢデバイスへ送り、そのデバイスから種々のパケットを受信する。このパケットの初期のやり取りは、ＵＳＢデバイスの通常動作において行われるデータ転送を表すものではない。そうではなく、このパケットの初期のやり取りは、ホストシステムが、新たなＵＳＢデバイスのための正しいドライバを選択できるようにするためのものである。この初期化中のある時点において、ＳＣＭ及びＳＣＡＩは、権限の無いＵＳＢデバイスを検出するための基準を適用し、疑わしい、又は権限の無いＵＳＢデバイスが検出されたときに、ホストシステムがそれ以後の通信を防止することができるようにする場合がある。実際には、所望のセキュリティ手段を実施するために必要な機能及び基準は、図３に示したホストシステム、そのＩ／Ｏシステム、及びＳＣＭ／ＳＣＡＩモジュールに、様々な形で分散される場合がある。
【００２２】
類似の機能分散は、ＤＩＭ及びＡＣＭモジュール機能に関連して以下で説明するような実行時の疑わしい活動のために、ホストシステム、そのＢＩＯＳ、並びに、ＳＣＭ、ＤＩＭ及びＡＣＭモジュールの間においても実施される場合がある。
【００２３】
次に、図３に示したセキュリティ手段（例えば、モジュール及び／又は機能）の動作について説明する。高レベルにおいて、ＳＣＭ３０４は、ＳＣＡＩ３１８又はＤＩＭ３０６のいずれか一方（又は両方）から受信した入力に応答し、所与のＵＳＢデバイス２３６と、ＵＳＢホストシステム３００の残りとの間における通信を有効化、又は無効化する機能を有する。より具体的には、あるＵＳＢデバイス２３６が、ブラックリストに記載されたもの、すなわち疑わしいものであると認められる場合、以下で詳細に説明するように、ＳＣＭ３０４は、ＳＣＡＩ３１８及び／又はＤＩＭ３０６と協働し、ＵＳＢホストコントローラドライバ２３０と、そのＵＳＢデバイスに関連するＵＳＢＤインタフェースドライバ２２８との間における通信を遮断する。逆に言えば、あるＵＳＢデバイス２３６が、ホワイトリストに記載されたもの（問題ないもの）、すなわち疑わしくないものであると認められる場合、ＳＣＭ３０４は、ＵＳＢホストコントローラドライバ２３０と、そのＵＳＢデバイスに関連するＵＳＢＤインタフェースドライバ２２８との間における通信を許可する。
【００２４】
新たなＵＳＢデバイス２３６がＵＳＢホストコントローラハードウェア２３４に最初に接続されたとき、そのデバイスとホストシステム３００の残りとの間における何らかの通信が許可される前に、ＳＣＭ３０４は、新たなＵＳＢデバイスの存在をＳＣＡＩ３１８及びランタイムＤＩＭ３０６に通知する。これに応答し、ＳＣＡＩ３１８は、そのデバイス、構成（インタフェース）及び文字列記述子、並びに場合によってはそのデバイスの機能のような他の情報を含む、新たなＵＳＢデバイスに関連する情報を要求する場合がある。ＳＣＡＩ３１８は、そのような情報の中から、一致しない記述子、機能の異例な組み合わせ等の、疑わしいパターンを探索する。
【００２５】
次に、密接な関係がある種々の記述子の特定の態様について説明する。一般に、各記述子は、その記述子の長さを規定する単一バイトから始まる。デバイス記述子は、デバイスクラス、及びＵＳＢ仕様バージョン番号を含む場合がある。構成記述子は、インタフェース記述子、及び構成記述子中の総バイト数を含む場合がある。インタフェース記述子が構成記述子中に無い場合、インタフェース記述子は、代替の設定及びクラスを含む。文字列記述子は、例えばベンダ又は製造業者識別子（ＩＤ）のような製造業者、例えば製品ＩＤのような製品、及び例えばシリアル番号のような他の情報文字列を含む場合がある。記述子は、少なくとも、ホストシステムがＵＳＢデバイスのための適当なドライバを選択することが可能となるだけの十分な情報を提供する。
【００２６】
追加的に又は代替として、ＳＣＡＩ３１８は、新たなＵＳＢデバイスに関する情報をＤＩＤ３１６に記憶された情報と比較し、もしホストシステム３００がインターネット接続を有しているときは、ＳＣＡＩ３１８は、ウェブリソース（例えばデータベース）に問合せ、その新たなＵＳＢデバイスが安全なものとして識別されたものであるか、又は疑わしさのデフォルト条件を備えた疑わしいものとして識別されたものであるかを、判断する場合がある。ＤＩＤ３１６は、好ましくは、許可されたＵＳＢデバイスのホワイトリスト、禁止されたＵＳＢデバイスのブラックリスト、又は両方の組み合わせを管理するために使用される。ＳＣＡＩ３１８は、ＵＳＢデバイス（例えば、製造業者ＩＤ、製品ＩＤ、及び／又は他の情報）に関する特定の情報を読み出し、その情報をホワイトリスト及び／又はブラックリストと比較して、そのデバイスに対し、ホストシステム３００との通信を許可すべきか否かを判断する。
【００２７】
ＳＣＡＩ３１８と協働するＳＣＭ３０４の上記機能の一部は、ホスト３００、及びホストのＢＩＯＳ１３０によって実施される場合がある。当業者には理解されるように、新たなＵＳＢデバイスの情報を、ＵＳＢデバイスをホストとの通信から除外するリスト情報と比較することは、ホストのオペレーティングシステム１２２の一部とされる場合がある。
【００２８】
新たなＵＳＢデバイスに対し、ホストシステム３００との通信を許可すべきか否かを判断する際に考慮するさらに別の情報をＳＣＡＩ３１８に提供するために、ＳＣＡＩ３１８は、アプリケーション・プログラミング・インタフェース（ＡＰＩ）３２４をさらに含む場合があり、アンチウィルスアプリケーション、ファイアウォールアプリケーション又は他のアプリケーションは、ＡＰＩ３２４を通して、新たなＵＳＢデバイスを検査又はテストし、あるいは、そのデバイスに対し、ホストシステムとの通信（通信の継続）を許可すべきか否かを判断する際に使用されるさらに別の情報を提供する場合がある。したがって、例えば、アンチウィルスアプリケーションが、新たなＵＳＢデバイス上に疑わしいウイルスを検出した場合、ウィルスが無効化されるまで、その情報は、ＳＣＡＩ３１８及びＳＣＭ３０４に通信を遮断させる場合がある。
【００２９】
さらに、ＳＣＡＩ３１８は、ユーザ構成インタフェース３２０を通じてユーザから情報を受信する場合がある。ユーザは、インタフェース３２０を通して、ユーザの環境又は知覚されるリスクレベルに応じて所望のセキュリティレベル（例えば、低、中、又は高）を選択し、若しくは変更し、ＤＩＤ３１６において管理されるホワイトリスト又はブラックリストへの追加のために事前に許可され若しくは許可されていないＵＳＢデバイスを前もって識別し、又はユーザのセキュリティ設定を保存するといった、種々の動作を命じる場合がある。ＵＳＢサムドライブ（図示せず）その他の記憶装置は、ＤＩＤ３１６のコピーを含むユーザのセキュリティ設定を記憶することと、そのような情報を埋め込みシステムに移植するための便利な手段を提供することとの両方に使用される場合がある。そのような情報をパスワードで保護された暗号化されたファイルに記憶することにより、サムドライブの紛失又は盗難によって、セキュリティが低下することはなくなるであろう。サムドライブは、記憶・輸送手段として機能する場合があるだけでなく、システムを動作させるためにそのシステムに物理的に取り付けなければならないドングルとして機能する場合がある。また、ユーザのセキュリティ設定は、安全なウェブサイト又はネットワーククラウドに記憶される場合があり、それによって、モバイルユーザのための容易な読み出しが可能となる場合がある。
【００３０】
上記のように、ＤＩＤ３１６の内容は、指定ウェブサイトとの間のホスト始動型の自動通信、権限を有するサービスプロバイダによるホストシステムへのリモートアクセス、及びユーザ始動型アクションを含む種々の技術のうちの任意のものにより、現場で更新される場合がある。
【００３１】
特定のＵＳＢデバイス２３６が、ホストシステム３００と問題なく通信できるようになった後、さらに別のセキュリティ手段が適用される場合がある。具体的には、特定のＵＳＢデバイス２３６がホストシステム３００と通信を開始した後、ランタイムデバイス識別モジュール（ＤＩＭ）３０６は、そのような通信における疑わしい又は権限のない活動の有無を監視する場合がある。ランタイムＤＩＭ３０６は、静的分析機能３１０又はヒューリスティック分析機能３１２（あるいは両方）、並びにＤＩＤ３１６からの情報に基づいて、疑わしい活動を探索する。静的分析機能の一例は、ＵＳＢデバイスから発生するパケットに含まれるデータ、及び場合によってはコマンドにおける疑わしいパターンの有無を検査する、ディープ・パケット・インスペクションである。同様に、ホストシステム３００から発せられ、ＵＳＢデバイス２３６の１つを宛先とするパケットを検査し、そのパケットに含まれるデータがそのＵＳＢデバイスにとって適当であるか否かを判断する場合がある。
【００３２】
静的分析機能の他の例は、ＵＳＢマスストレージデバイスにも、適用可能である。ランタイムＤＩＭ３０６は、当業者に知られているハッシュ技術を使用して、ＵＳＢマスストレージ上のある所定の記憶場所のハッシュを記憶する場合がある。ＵＳＢマスストレージデバイスの動作中、ランタイムＤＩＭ３０６は、ハッシュにおける疑わしい変更の有無についてそのデバイスを監視し、適当な指示をＡＣＭ３０８に出力する場合がある。
【００３３】
静的分析機能の他の例は、ＵＳＢホストコントローラに接続されたＨＩＤキーボードのようなＵＳＢ  ＨＩＤデバイスに関して識別された疑わしい活動にも、適用可能である。例えば、ランタイムＤＩＭ３０６は、キーボードのＷｉｎｄｏｗｓ（登録商標）キーの押下を検出し、拒絶する場合があり、それによって、管理上のアクセスを獲得するための既知のプログラムを実行することがある種々のＷｉｎｄｏｗｓ（登録商標）−Ｒ（Ｒｕｎ）試行（攻撃）を打破する場合がある。同様に、疑わしいものとして識別されたＨＩＤマウスに関して、ランタイムＤＩＭ３０６は、プログラムを実行するメニューへのアクセスや、ホストシステム３００への保護されていないアクセスの許可を含む、管理上のアクセスを獲得しようと試みる左又は右クリックを検出し、拒絶する場合がある。
【００３４】
ヒューリスティック分析の一例は、それ自体がキーボードとして識別されたＵＳＢデバイスから発生した打鍵の速度を監視することである。もし打鍵の速度が人の最大タイプ速度を表す所定の限界を超える場合、そのＵＳＢデバイスには、ＤＩＭ３０６によって、疑わしいものとしてフラグが立てられ、適当な指示がＡＣＭ３０８に出力される場合がある。その後、ＡＣＭ３０８は、何の行為が原因であったのかを判断しようとする場合がある。この例では、過剰に高速な打鍵は、不正な活動（例えば、サービス拒否型の攻撃）を知らせるものであるかもしれないが、何かがキーボードの上に落ち、又はキーが固まり、ユーザがその問題に気付いていないことを知らせるものであるかもしれない。
【００３５】
観測された脅威の重大さに応じて、ＡＣＭ３０８は、ユーザの介入なしに、疑わしいＵＳＢデバイスからのそれ以後の通信を自動的に遮断するか、それ以後の通信を許可し、モジュール３１４を介して脅威通知を発行するか、それ以後の通信を許可し、その記録をとるか、又は他の動作を行う場合がある。次に、脅威通知モジュール３１４は、検出された脅威の人間が知覚可能な警告を、ユーザ通知インタフェース３２２を介して表示する場合がある。ホストシステム３００が、ＰＣであるか、又は取り付けられたビデオディスプレイ若しくはテレビ受像機を含む他のシステムである場合、人間が知覚可能な警告は、ビデオのような表示された警告の形を有する場合がある。ホストシステム３００が取り付けられたビデオディスプレイを含まない埋め込みシステムである場合、人間が知覚可能な警告は、可聴警告、点滅光、あるいは、ユーザ等にとって通常見ることができるシステムのフロントパネル上の他のディスプレイの形を有する場合がある。ホストシステム３００がインターネット接続又はＰＳＴＮ接続を有する場合、電子メールの形をした警告、テキストメッセージ、又は記録されたお知らせ電話がさらに提供される場合がある。
【００３６】
本発明のさらに別の実施形態によれば、上記のセキュリティ手段の少なくとも一部は、ホストシステムのＢＩＯＳ機能に関係して提供される場合がある。ホストシステムのオペレーティングシステムがアクティブになる前の時期における、ＵＳＢデバイスから発生した不正な活動からの保護のために、ホストシステムのＢＩＯＳ１３０は拡張され、限られた数の特別に規定された信頼性のあるＵＳＢデバイスのみが当初認識され、動作を許可される場合がある。例えば、ホストシステムのＢＩＯＳ１３０は、１つのキーボード及び１つのマウスのみを当初認識するように拡張され、キーボード及びマウスの各々は、最小数の記述子により識別されなければならない場合がある。いったんオペレーティングシステムがアクティブになった後は、ユーザは、ユーザ構成インタフェース３２０を通して情報を入力することにより、異なるキーボード又はマウスを識別することができ、その後、ＢＩＯＳは、それらを認識しなければならない。
【００３７】
先に説明したセキュリティ手段のうちの所望のものは、ホストコントローラの拡張により提供される場合がある。例えば、ホストコントローラのハードウェア又はソフトウエア（あるいは両方）に変更を加え、所望のセキュリティ手段を実施することにより、当該セキュリティ手段を回避する不正な、又は悪意のある攻撃に対する耐性が向上されるとともに、速度に関する性能の向上も達成される場合がある。
【００３８】
上記の説明は、この発明の特定の実施形態に関するものである。しかしながら、記載した実施形態に対し、それらの利点の一部又は全部を維持しつつ、他の変更及び修正を施すことも可能であることは、明らかである。具体的には、本発明の実施形態は、種々のＵＳＢホストシステムに関係して実施される場合があり、特定のオペレーティングシステムに依存するホストシステムに制限されることはない。また、本明細書に記載した手順、プロセス、及び／又はモジュールは、ハードウェアでも、ソフトウェアでも実施される場合があり、また、プログラム命令を有するコンピュータ読取可能媒体、ファームウェア、又はその組み合わせとして実施される場合もある。
【図１】
2014509421.tif 000003
【図２】
2014509421.tif 000004
【図３】
2014509421.tif 000005
【国際調査報告】
2014509421.tif 000006
2014509421.tif 000007