特許第6599567号(P6599567)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アルカテル・ルーセントの特許一覧

<>
  • 特許6599567-USB攻撃保護を保証すること 図000002
  • 特許6599567-USB攻撃保護を保証すること 図000003
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6599567
(24)【登録日】2019年10月11日
(45)【発行日】2019年10月30日
(54)【発明の名称】USB攻撃保護を保証すること
(51)【国際特許分類】
   G06F 21/12 20130101AFI20191021BHJP
   G06F 21/70 20130101ALI20191021BHJP
   G06F 21/44 20130101ALI20191021BHJP
【FI】
   G06F21/12 330
   G06F21/70
   G06F21/44
【請求項の数】12
【全頁数】13
(21)【出願番号】特願2018-549394(P2018-549394)
(86)(22)【出願日】2016年11月18日
(65)【公表番号】特表2019-501469(P2019-501469A)
(43)【公表日】2019年1月17日
(86)【国際出願番号】EP2016078193
(87)【国際公開番号】WO2017097563
(87)【国際公開日】20170615
【審査請求日】2018年7月24日
(31)【優先権主張番号】15306976.0
(32)【優先日】2015年12月10日
(33)【優先権主張国】EP
(73)【特許権者】
【識別番号】518204534
【氏名又は名称】アルカテル・ルーセント
(74)【代理人】
【識別番号】110001173
【氏名又は名称】特許業務法人川口國際特許事務所
(72)【発明者】
【氏名】パピヨン,セルジュ
(72)【発明者】
【氏名】エル・アベド,ハイテム
【審査官】 和平 悠希
(56)【参考文献】
【文献】 特開2009−230685(JP,A)
【文献】 特表2014−509421(JP,A)
【文献】 特開2001−273059(JP,A)
【文献】 特開2009−245020(JP,A)
【文献】 米国特許出願公開第2012/0311207(US,A1)
【文献】 中国特許出願公開第101561751(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/12
G06F 21/44
G06F 21/70
(57)【特許請求の範囲】
【請求項1】
通信デバイス(CD)と付属デバイス(AD)との間でユニバーサルシリアルバス(USB)攻撃保護を保証するための方法であって、保護デバイス(PD)は、USBリンクを通じて通信デバイス(CD)と付属デバイス(AD)との間に挿入され、方法は、通信デバイス(CD)内での以下のステップ、
付属デバイス(AD)から受け取られたUSBデバイス記述子内にある文字列記述子のインデックスの最も大きな値(HV)を記憶するステップ(S1)と、
文字列記述子のリクエスト(Req)を、前記最も大きな値(HV)より大きいインデックスの値(Val1)と共に付属デバイス(AD)に送るステップ(S3)と、
保護デバイス(PD)から生成され、送られたレスポンス(Res)を受け取るステップ(S4)であって、レスポンスは、保護デバイスの識別子(IdP)を収める、受け取るステップ(S4)と、
識別子(IdP)がデータベース内にある場合、保護デバイス(PD)の存在を確認するステップ(S5)と
を含む、方法。
【請求項2】
保護デバイスが、リクエスト(Req)をインターセプトし、このリクエストを付属デバイス(AD)に伝達しない、請求項1に記載の方法。
【請求項3】
前記値(Val1)が、前記最も大きな値(HV)を上回る次の整数である、請求項1または2に記載の方法。
【請求項4】
通信デバイスが、前記最も大きな値(HV)より大きく、かつ前記値(Val1)とは異なるインデックスの別の値(Val2)と共に、別の文字列記述子のリクエストの形で、チャレンジを保護デバイスに送り、チャレンジに対するレスポンスが有効な場合、暗号関数またはワンタイムパスワードによって、保護デバイスを認証する、請求項1から3のいずれか一項に記載の方法。
【請求項5】
前記別の値(Val2)が、前記値(Val1)を上回る次の整数である、請求項4に記載の方法。
【請求項6】
通信デバイス(CD)と保護デバイス(PD)が、対称もしくは非対称の暗号キーを共有するか、またはカウンタおよびパスワードもしくは数字のシーケンスから成る秘密を共有する、請求項4または5に記載の方法。
【請求項7】
保護デバイスが、1つまたはいくつかのタイプの付属デバイスに対して専用であり、前記1つまたはいくつかのタイプの付属デバイスだけが通信デバイスと通信することを可能にする、請求項1から6のいずれか一項に記載の方法。
【請求項8】
通信デバイス(CD)と付属デバイス(AD)との間でユニバーサルシリアルバス(USB)攻撃保護を保証するための方法であって、保護デバイス(PD)は、USBリンクを通じて、通信デバイス(CD)と付属デバイス(AD)との間に挿入され、方法は、保護デバイス(PD)内での以下のステップ、
付属デバイス(AD)から受け取られたUSBデバイス記述子内にある文字列記述子のインデックスの最も大きな値(HV)を記憶するステップ(S1)と、
前記最も大きな値(HV)より大きいインデックスの値(Val1)と共に文字列記述子のリクエスト(Req)を受け取るステップ(S3)であって、リクエストは、通信デバイス(AD)から送られる、受け取るステップ(S3)と、
通信デバイス(CD)へのレスポンス(Res)を生成するステップ(S4)および送るステップであって、レスポンスは、保護デバイスの識別子(IdP)を収め、識別子は、識別子(IdP)がデータベース内にある場合、保護デバイス(PD)の存在を確認するために通信デバイスによって使用される、生成するステップ(S4)および送るステップと
を含む、方法。
【請求項9】
通信デバイス(CD)と付属デバイス(AD)との間でユニバーサルシリアルバス(USB)攻撃保護を保証するための通信デバイス(CD)であって、保護デバイス(PD)は、USBリンクを通じて通信デバイス(CD)と付属デバイス(AD)との間に挿入され、通信デバイス(CD)は、
付属デバイス(AD)から受け取られたUSBデバイス記述子内にある文字列記述子のインデックスの最も大きな値(HV)を記憶するための手段(UHS)と、
文字列記述子のリクエスト(Req)を、前記最も大きな値(HV)より大きいインデックスの値(Val1)と共に付属デバイス(AD)に送るための手段(UHS)と、
保護デバイス(PD)から生成され、送られたレスポンス(Res)を受け取るための手段(UHS)であって、レスポンスは、保護デバイスの識別子(IdP)を収める、受け取るための手段(UHS)と、
識別子(IdP)がデータベース内にある場合、保護デバイス(PD)の存在を確認するための手段(UHS)と
を含む、通信デバイス(CD)。
【請求項10】
通信デバイス(CD)と付属デバイス(AD)との間でユニバーサルシリアルバス(USB)攻撃保護を保証するための保護デバイス(CD)であって、保護デバイス(CD)は、USBリンクを通じて通信デバイス(CD)と付属デバイス(AD)との間に挿入され、
付属デバイス(AD)から受け取られたUSBデバイス記述子内にある文字列記述子のインデックスの最も大きな値(HV)を記憶するための手段(SDA)と、
前記最も大きな値(HV)より大きいインデックスの値(Val1)と共に文字列記述子のリクエスト(Req)を受け取るための手段(SDA)であって、リクエストは、通信デバイス(AD)から送られる、受け取るための手段(SDA)と、
通信デバイス(CD)へのレスポンス(Res)を生成し、送るための手段(SDA)であって、レスポンスは、保護デバイスの識別子(IdP)を収め、識別子は、識別子(IdP)がデータベース内にある場合、保護デバイス(PD)の存在を確認するために通信デバイスによって使用される、生成し、送るための手段(SDA)と
を含む、保護デバイス(CD)。
【請求項11】
通信デバイス(CD)と付属デバイス(AD)との間でユニバーサルシリアルバス(USB)攻撃保護を保証するための通信デバイス(CD)内に実装されることができるコンピュータプログラムであって、保護デバイス(PD)は、USBリンクを通じて通信デバイス(CD)と付属デバイス(AD)との間に挿入され、前記プログラムは、プログラムが、前記通信デバイス内にロードされ、実行されると、請求項1に記載の方法を実装する命令を備える、コンピュータプログラム。
【請求項12】
通信デバイス(CD)と付属デバイス(AD)との間でユニバーサルシリアルバス(USB)攻撃保護を保証するための保護デバイス(PD)内に実装されることができるコンピュータプログラムであって、保護デバイス(PD)は、USBリンクを通じて通信デバイス(CD)と付属デバイス(AD)との間に挿入され、前記プログラムは、プログラムが、前記保護デバイス内にロードされ、実行されると、請求項8に記載の方法を実装する命令を備える、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、通信デバイスに関し、より詳細には、USBデバイスなどの付属デバイスを受け入れる、メディアプレーヤなどの通信デバイスに関する。
【背景技術】
【0002】
コンピュータなどの現代の通信デバイスは、ユニバーサルシリアルバス(USB:universal serial bus)レセプタクルを提供することによってコンピュータメモリの増設を可能にする。ちょうど、USBプラグを受け入れることができる通信デバイスが、物理的かつ電子的な規格のレセプタクルを有するのと同じように、USB周辺デバイスは、通常、物理的かつ電子的な規格のプラグを有する。
【0003】
USBデバイスは、ストレージデバイス(フラッシュドライブ)、コンピュータマウス、コンピュータキーボード、プリンタ、またはウェブカメラのような、種々の性質のものである可能性がある。
【0004】
特に、USBストレージデバイスは、小さく、安価で、かつ持ち運びにとても便利であり、現代のコンピューティングデバイスの中の至る所にある。その持ち運びに便利な性質のために、単一のUSBストレージデバイスが、多くの種々のホスト通信デバイスに差し込まれていることが多い。例えば、消費者は、自分の個人的な音楽コレクションをUSBストレージデバイスに格納し、コンピュータ、スマートフォン、または自動車のステレオシステム上でも、その音楽を再生することができる。
【0005】
USBストレージデバイスの高度に持ち運びに便利な特性は、これらをコンピュータウイルスの一般的な標的にする。
【0006】
最近、BadUSBと呼ばれる深刻な攻撃が明らかにされた。これは、1つの例では、悪意のあるUSBデバイスが、被害に遭うホストを攻撃すること、およびもう1つの例では、悪意のあるホストが、被害に遭うUSBデバイスを再プログラムすることを含む。両方の攻撃の組合せは、コンピュータマルウェアの物理的伝搬への道を開き、エアギャップシステム(air−gapped system)(あらゆる外部ネットワークから隔離されるシステム)に達することができるものである。この種の攻撃において、特別仕様で作られた(custom−built)USBデバイスは、USBホストを攻撃するために、キーボードエミュレーションを通じて悪意をもってふるまう可能性がある。標準的なUSBデバイス(例えば、USBストレージスティック)は、悪意のあるホストによって、マイクロコントローラレベルで再プログラムされる可能性があり、したがって、USBデバイスが挿入されるその他のUSBホストを攻撃できる悪意のあるUSBデバイスを作り出す。これは、USBデバイスのコントローラレベル(ファームウェア)で行われ、フォーマットされるかまたはアンチウイルスによってスキャンされる可能性があるファイルシステムレベルでは行われない。
【0007】
通信デバイスに接続されたUSBデバイスの性質を、通信デバイスが制御することを可能にするいくつかの技法が存在する。
【0008】
しかし、このような技法によって、USBデバイスがフィルタ処理されるか否かを、USBホストに対して証明する必要がある。
【発明の概要】
【課題を解決するための手段】
【0009】
本発明の概要は、本発明の主題に関する概念を紹介するために提供される。本発明の概要は、特許請求された主題の本質的な特徴を識別することを意図するものではなく、特許請求された主題の範囲を決定または限定するのに使用することを意図するものでもない。
【0010】
1つの実施形態によれば、通信デバイスと付属デバイスとの間でユニバーサルシリアルバス(USB)攻撃保護を保証するために方法が提供され、保護デバイスは、USBリンクを通じて、通信デバイスと付属デバイスとの間に挿入され、方法は、通信デバイス内での以下のステップを含む:
付属デバイスから受け取られたUSBデバイス記述子内にある文字列記述子のインデックスの最も大きな値を記憶することと、
文字列記述子のリクエストを、前記最も大きな値より大きいインデックスの値と共に付属デバイスに送ることと、
保護デバイス(PD:protection device)から生成され、送られたレスポンスを受け取ることであって、レスポンスは、保護デバイスの識別子を収める、受け取ることと、
識別子がデータベース内にある場合、保護デバイスの存在を確認すること。
【0011】
好都合なことに、本発明は、USBデバイスが、(ホストによって)知られているハードウェアUSBをフィルタ処理するソリューションによってフィルタ処理される、USBの初期化時にホストUSBに証明を提供する、エンタープライズ級のソリューションを提案する。証明するための方式は、USBプロトコルと十分に互換性がある。
【0012】
実施形態において、保護デバイスは、リクエストをインターセプトし、この後者を付属デバイスに伝達しない。
【0013】
実施形態において、前記値は、前記最も大きな値を上回る次の整数である。
【0014】
実施形態において、通信デバイスは、前記最も大きな値より大きく、かつ前記値とは異なるインデックスの別の値と共に、別の文字列記述子のリクエストの形で、チャレンジを保護デバイスに送り、チャレンジに対するレスポンスが有効な場合、暗号関数またはワンタイムパスワードによって、保護デバイスを認証する。
【0015】
実施形態において、前記別の値は、前記値を上回る次の整数である。
【0016】
実施形態において、通信デバイスと保護デバイスは、対称もしくは非対称の暗号キーを共有するか、またはカウンタおよびパスワードもしくは数字のシーケンスから成る秘密を共有する。
【0017】
実施形態において、保護デバイスは、1つまたはいくつかのタイプの付属デバイスに対して専用であり、前記1つまたはいくつかのタイプの付属デバイスだけが通信デバイスと通信することを可能にする。
【0018】
本発明はまた、通信デバイスと付属デバイスとの間でユニバーサルシリアルバス(USB)攻撃保護を保証するための方法に関し、保護デバイスは、USBリンクを通じて通信デバイスと付属デバイスとの間に挿入され、方法は、保護デバイス内での以下のステップを含む:
付属デバイスから受け取られたUSBデバイス記述子内にある文字列記述子のインデックスの最も大きな値を記憶することと、
前記最も大きな値より大きいインデックスの値と共に文字列記述子のリクエストを受け取ることであって、リクエストは、通信デバイスから送られる、受け取ることと、
通信デバイスへのレスポンスを生成することおよび送ることであって、レスポンスは、保護デバイスの識別子を収め、識別子は、識別子がデータベース内にある場合、保護デバイスの存在を確認するために通信デバイスによって使用される、生成することおよび送ること。
【0019】
本発明はまた、通信デバイスと付属デバイスとの間でユニバーサルシリアルバス(USB)攻撃保護を保証するための通信デバイスに関し、保護デバイスは、USBリンクを通じて通信デバイスと付属デバイスとの間に挿入され、通信デバイスは含む:
付属デバイスから受け取られたUSBデバイス記述子内にある文字列記述子のインデックスの最も大きな値を記憶するための手段と、
文字列記述子のリクエストを、前記最も大きな値より大きいインデックスの値と共に付属デバイスに送るための手段と、
保護デバイスから生成され、送られたレスポンスを受け取るための手段であって、レスポンスは、保護デバイスの識別子を収める、受け取るための手段と、
識別子がデータベース内にある場合、保護デバイスの存在を確認するための手段。
【0020】
本発明はまた、通信デバイスと付属デバイスとの間でユニバーサルシリアルバス(USB)攻撃保護を保証するための保護デバイスに関し、保護デバイスは、USBリンクを通じて通信デバイスと付属デバイスとの間に挿入され、含む:
付属デバイスから受け取られたUSBデバイス記述子内にある文字列記述子のインデックスの最も大きな値を記憶するための手段と、
前記最も大きな値より大きいインデックスの値と共に文字列記述子のリクエストを受け取るための手段であって、リクエストは、通信デバイスから送られる、受け取るための手段と、
通信デバイスへのレスポンスを生成し、送るための手段であって、レスポンスは、保護デバイスの識別子を収め、識別子は、識別子がデータベース内にある場合、保護デバイスの存在を確認するために通信デバイスによって使用される、生成し、送るための手段。
【0021】
本発明はまた、デバイス内に実装されることができるコンピュータプログラムに関し、前記プログラムは、プログラムが前記デバイス内で実行されると、本発明の方法によるステップを遂行する命令を含む。
【0022】
本発明およびその利益は、添付の図面を参照する以下の図面の簡単な説明を考察すると、より理解されるであろう。
【図面の簡単な説明】
【0023】
図1】USB攻撃保護を保証するための、本発明の1つの実施形態による通信システムの概略ブロック図である。
図2】本発明の1つの実施形態による、USB攻撃保護を保証するための方法のアルゴリズムの図である。
【発明を実施するための形態】
【0024】
図1を参照すると、本発明による通信システムは、通信デバイスCD、保護デバイスPD、および付属デバイスADを備える。
【0025】
通信デバイスCDは、付属デバイスに格納された内容物にアクセスするために、USBリンクを介して、付属デバイスADと直接接続することができる。通信デバイスは、プラグを介して付属デバイスADを受け入れるホストデバイスと呼ばれることがある。
【0026】
通信デバイスCDは、例えば、パーソナルコンピュータもしくはラップトップ、タブレット、スマートフォン、パーソナルデジタルアシスタント、セットトップボックス、住居用ゲートウェイ、家庭用ゲーム機、または接続テレビ(connected television)であってよい。より一般に、通信デバイスCDは、USBリンクを介して付属デバイスADとの接続を確立して、メッセージなどのデータを付属デバイスと交換できる通信モジュールを備える、任意のタイプの電子機器に関する。
【0027】
通信デバイスCDは、様々なUSB付属デバイスが、物理的に差し込まれることがある1つまたは複数のUSBレセプタクルを有する。
【0028】
通信デバイスCDは、オペレーティングシステム内のUSBデバイスドライバを管理するソフトウェアモジュールである、USBホストスタックUHS(USB host stack)を備える。USBホストスタックUHSは、USBプロトコルを実装し、種々のUSBデバイスに対する適正なドライバをインストールし、ロードする。USBホストスタックUHSは、セキュリティエージェントとしてふるまい、エンタープライズ機関(enterprise authority)によって署名された格納済みの証明書(または事前共有キー)を使用する、保護デバイスPDとの相互認証の責任を負うプロセスエージェントである。
【0029】
付属デバイスADは、物理的かつ電気的な接続性を実現するためにUSBプラグがUSBレセプタクルに差し込まれることがある、通信デバイスのUSBレセプタクルと物理的かつ機械的に互換性のあるUSBプラグを含む、USBデバイスである。
【0030】
1つの例において、付属デバイスADは、ストレージデバイスのようなサムドライブまたはハードドライブである。
【0031】
別の例において、付属デバイスADは、パーソナルコンピュータ、ラップトップ、タブレット、またはスマートフォンである。
【0032】
別の例において、付属デバイスADは、広告板、テレビセット、家庭用品、通信端末、冷蔵庫、カメラなどの、接続オブジェクトである。接続オブジェクトは、接続オブジェクトに直接埋め込まれることがあるデータ処理ユニットの一部である通信インターフェースを備える。
【0033】
付属デバイスADは、USBプロトコルおよび付属デバイスADのより高い機能を実装するマイクロコントローラ上で実行するプロセス、典型的にはファームウェアを収める。
【0034】
保護デバイスPDはまた、通信デバイスCDのUSBレセプタクルと物理的かつ機械的に互換性のあるUSBプラグ、ならびに付属デバイスADのUSBプラグと物理的かつ機械的に互換性のあるUSBレセプタクルを含む。したがって、保護デバイスPDは、通信デバイスCDおよび付属デバイスADと物理的かつ電気的に接続され得る。保護デバイスPDは、通信デバイスCDおよび付属デバイスADが、保護デバイスPDを通じて電気的に接続されることを可能にする。
【0035】
保護デバイスPDは、通信デバイスCDとの相互認証の責任を負うプロセスエージェントである、シールドデバイスエージェントSDA(shield device agent)を備える。シールドデバイスエージェントSDAは、シールドポリシのロード、安全な識別子の作成、および攻撃の試みの通知の責任も負う。シールドデバイスエージェントSDAは、エンタープライズ機関によって署名された証明書(代替として、エンタープライズ事前共有キーが、証明書の代わりに使用されることがある)、および証明書と関連付けられた公開キーと共にロードされる。
【0036】
シールドデバイスエージェントSDAは、付属デバイスADの代理の役割も果たし、通信デバイスと付属デバイスとの間のメッセージをフィルタ処理する責任を負う。シールドデバイスエージェントSDAは、例えば、一致(メッセージの)およびアクション(ドロップ、パッチ、他)を収める、セキュリティルールを収めるデータベースを実装する。
【0037】
シールドデバイスエージェントSDAは、デバイス記述子の内容を分析し、カスタムのデバイス記述子を作成することができる。デバイス記述子は、以下の説明とそれぞれ関連付けられた以下のフィールドを収める:
フィールド:bLength
説明:この記述子の長さをバイトで指定する。
フィールド:bDescriptorType
説明:記述子のタイプを指定する。
フィールド:bcdUSB
説明:この記述子の構造が準拠するUSB規格のバージョンを識別する。この値は、2進化10進数である。
フィールド:bDeviceClass
説明:USB規格グループによって割り当てられるような、デバイスのクラスコードを指定する。
フィールド:bDeviceSubClass
説明:USB規格グループによって割り当てられるような、デバイスのサブクラスコードを指定する。
フィールド:bDeviceProtocol
説明:USB規格グループによって割り当てられるような、デバイスのプロトコルコードを指定する。
フィールド:bMaxPacketSize0
説明:デバイスのエンドポイントゼロに関する最大パケットサイズをバイトで指定する。この値は、8、16、32、または64にセットされなければならない。
フィールド:idVendor
説明:USB規格委員会によって割り当てられるような、デバイスに関するベンダ識別子を指定する。
フィールド:idProduct
説明:製品識別子を指定する。この値は、製造業者によって割り当てられ、デバイス固有である。
フィールド:bcdDevice
説明:デバイスのバージョンを識別する。この値は、2進化10進数である。
フィールド:iManufacturer
説明:このデバイスの製造業者の名前を収める文字列を提供する文字列記述子のデバイス定義のインデックスを指定する。
フィールド:iProduct
説明:デバイスの説明を収める文字列を提供する文字列記述子のデバイス定義のインデックスを指定する。
フィールド:iSerialNumber
説明:デバイスに関する、製造業者が決定したシリアル番号を収める文字列を提供する文字列記述子のデバイス定義のインデックスを指定する。
フィールド:bNumConfigurations
説明:デバイスに関する可能な構成の総数を指定する。
【0038】
シールドデバイスエージェントSDAは、1つまたはいくつかのタイプのUSB付属デバイスをフィルタ処理するのに専用である。例えば、シールドデバイスエージェントSDAは、USBストレージデバイスと共に動作するのに専用であり、いかなるその他のタイプのUSB付属デバイスが通信デバイスCDと通信することも許可しない。そのために、例えば、シールドデバイスエージェントSDAは、USB付属デバイスから取り出されたデバイス記述子でデータベース内のセキュリティルールを調査する。特に(more especially)、シールドデバイスエージェントSDAは、デバイスのタイプと関連付けられると想定されるフィールド「bDeviceClass」の値が、認可されたデバイスのリストに含まれるかどうかをチェックする。
【0039】
図2を参照すると、本発明の1つの実施形態による、USB攻撃保護を保証するための方法は、通信システム内で実行されるステップS1からS7を含む。
【0040】
最初のステップS01において、ユーザは、通信デバイスCDと共に付属デバイスADを使用することを望み、保護デバイスPDを通信デバイスCDに挿入することによって開始する。
【0041】
保護デバイスPDは、通信デバイスCDに登録する。通信デバイスからの制御リクエストの際、シールドデバイスエージェントSDAは、メッセージをUSBホストスタックUHSに送り、メッセージは、保護デバイスPD、その設定、インターフェース、および関連するエンドポイントについての情報を含むデバイス記述子を収める。
【0042】
この登録が、保護デバイスPDと通信デバイスCDとの間に双方向性通信リンクを確立する。
【0043】
付属デバイスADは、保護デバイスPDに差し込まれる。このように、保護デバイスPDは、付属デバイスADと通信デバイスCDの間に挿入される。
【0044】
ステップS1において、付属デバイスADおよび通信デバイスCDは、初期化フェーズにあり、その間、USBホストスタックUHSは、付属デバイスADにデバイス記述子、構成記述子、および両方の記述子に応じて、所与の数の文字列記述子を問い合わせる。
【0045】
この初期化フェーズの間、デバイス記述子を収める少なくとも1つのメッセージは、デバイス記述子を得るという、通信デバイスCDからの最初のリクエストに応答して、付属デバイスADから送られる。例えば、最初のリクエストは、「Get Device Descriptor」型のものである。リクエストおよびレスポンスは、リクエストおよびレスポンスの内容を分析できる保護デバイスPDを通じて送られる。
【0046】
特に、保護デバイスPDおよび通信デバイスCDは、デバイス記述子内の3つの文字列記述子のインデックスの間にある、インデックスの最も大きな値HVを抽出し、記憶する。
【0047】
ステップS2において、初期化フェーズは、次に、通信デバイスCDが付属デバイスADから文字列記述子自体をリクエストするポイントまで一般的な動きで継続する。例えば、リクエストは、「Get String Descriptor」型のものである。文字列記述子の存在に応じて、ただ1つ(デフォルトの1つは、インデックス0において、必須の言語能力である)、または4つ(あらゆるインデックスが、デバイス記述子内で、0とは異なる)まで、求められる可能性がある。
【0048】
ステップS3において、USBホストスタックUHSは、別の文字列記述子のリクエストReqを、前記最も大きな値より大きいインデックスの1次値Val1と共に付属デバイスADに送る。例えば、1次値Val1は、前記最も大きな値を上回る次の整数である:
Val1=HV+1。
【0049】
USBホストスタックUHSが、付属デバイスと直接、すなわち保護デバイスがない状態で通信していた場合、この値のインデックスをもつ文字列記述子が存在しないので、付属デバイスはエラーを戻すだろう。
【0050】
USBホストスタックUHSは、保護デバイスを通じて付属デバイスと通信しているので、前記最も大きな値より大きいインデックスの値Valを伴うリクエストは、付属デバイスに伝達されない方がよいが、保護デバイスの識別を得るという、通信デバイスからの特殊なリクエストであるということを、インデックスの最も大きな値HVを記憶した保護デバイスは知っている。
【0051】
ステップS4において、保護デバイスは、リクエストReqをインターセプトし、この後者を付属デバイスに伝達しない。保護デバイスは、ストリングペイロードのような、保護デバイスの識別子IdPを伴うレスポンスとして、カスタムの文字列記述子を作成する。保護デバイスは、レスポンスResを通信デバイスに送り、レスポンスは、特に保護デバイスの識別子IdPを収める。
【0052】
ステップS5において、通信デバイスCDは、付属デバイスと直接通信しているのではなく、確かに保護デバイスと通信していることを知っている。USBホストスタックUHSは、識別子IdPが(コンピュータに近いまたは遠い)データベース内にある場合、保護デバイスの存在を確認する。
【0053】
後続の代替ステップS6およびS7は、保護デバイスの有効な識別子で(前記値Valを伴う)文字列記述子のリクエストに応じるために特殊なUSBデバイスを精巧に作ることができる攻撃者が、会社の保護デバイスの識別子のいくつかを知る方式を見つける場合に備えて、リプレーアタックに対する追加のセキュリティをもたらす。
【0054】
ステップS6において、USBホストスタックUHSは、暗号ノンス(擬似乱数)をシールドデバイスエージェントSDAに送る。USBホストスタックUHSは、ノンスの暗号化のように、ノンスに対して暗号関数を実施し、結果をUSBホストスタックUHSに送る。
【0055】
USBホストスタックUHSは、(復号のように)受け取られた結果に対して、対応する暗号関数を実施し、結果が等しいかまたは首尾一貫しており、保護デバイスが本当に見た通りのものであることを意味するかどうかをチェックする。
【0056】
USBホストスタックUHSとシールドデバイスエージェントSDAは、対称暗号キーであってよい秘密を共有することができ、または公開キー/秘密キーのペアを用いる非対称暗号キーを使用することができ、秘密キーは、シールドデバイスエージェントSDAに格納され、公開キーは、USBホストスタックUHSによって知られている(および保護デバイスの識別子と関連付けられる。
【0057】
そのために、USBホストスタックUHSは、従来とは異なるサイズでリクエストをシールドデバイスエージェントSDAに送り、リクエストは、前記最も大きな値よりも大きく、かつ前記1次値Val1とは異なるインデックスの2次値Val2を伴う別の文字列記述子に対するものである。
【0058】
例えば、2次値Val2は、前記値を上回る次の整数である:Val2=Val1+1。
【0059】
リクエストのサイズは、ノンスのサイズを考慮するために拡張されるだろう。通信デバイスが保護デバイスに接続され、典型的なUSBデバイスに直接接続されないという事実が既に確立されているので、シーケンスのこの時点で従来と異なるUSBパケットを使用することは、問題ではない。保護デバイスは、この第2の特殊なUSB文字列記述子のリクエストを扱うのに専用であり、通常ではないサイズのパケットを管理することができる。リクエストに対するレスポンスは、ストリングペイロードとして、シールドデバイスエージェントSDAによって送られる。
【0060】
ステップS7において、USBホストスタックUHSは、従来とは異なるサイズでリクエストをシールドデバイスエージェントSDAに送り、リクエストは、前記最も大きな値より大きく、かつ前記1次値Val1とは異なるインデックスの2次値Val2を伴う別の文字列記述子に対するものである。
【0061】
USBホストスタックUHSとシールドデバイスエージェントSDAは、カウンタおよびパスワードまたは数字のシーケンスから成る秘密を共有することができる。シーケンスは、双方に格納されてよく、または共有機能によって生成されてよい(それぞれの保護デバイスがそれ自体の特別の機能を有し、その結果種々の保護デバイスは、種々のシーケンスを生成する)。
【0062】
シールドデバイスエージェントSDAは、ストリングペイロードとしてそのシーケンス内にかなりの数を収めるレスポンスを送り返す。USBホストスタックUHSは、この対応する保護デバイスに対してシーケンス内を探索し、受け取られた数字が保護デバイスを認証するのに有効であるかどうかをチェックするだけである。
【0063】
それぞれのステップS6およびS7において、USBホストスタックUHSは、前記最も大きな値より大きく、かつ前記1次値Val1とは異なるインデックスの2次値Val2と共に、別の文字列記述子のリクエストという形で、従来とは異なるサイズでチャレンジをシールドデバイスエージェントSDAに送り、チャレンジに対するレスポンスが有効な場合、暗号関数またはワンタイムパスワードによって、保護デバイスを認証する。
【0064】
最終的に、一旦、保護デバイスが認証されると、通信デバイスは、一般的な初期化フェーズを再開することができる。保護デバイスの存在および/または認証が正常でない場合、通信デバイスは、エンタープライズポリシマネージャが判定したどの方策でもとることができる。
【0065】
本明細書で説明された本発明は、USB攻撃保護を保証するための方法およびデバイスに関する。本発明の1つの実装形態によれば、本発明のステップは、保護デバイスPDなどのデバイスに組み込まれたコンピュータプログラムの命令によって決定される。プログラムは、前記プログラムがデバイス内にロードされ、実行されると、本発明の方法のステップを遂行するプログラム命令を備える。
【0066】
結果的に、本発明はまた、コンピュータプログラム、特に、本発明を実装するのに適した情報媒体上の、またはその中のコンピュータプログラムに適用される。このプログラムは、任意のプログラミング言語を使用し、ソースコード、オブジェクトコード、またはソースコードとオブジェクトコードの中間コードの形式のような、部分的にコンパイルされた形式、もしくは本発明の方法を実装するのに望ましい任意のその他の形式でよい。
図1
図2