(57)【要約】【課題】  バスを制御するソフトウェアが信頼されない場合でも、基礎となるＵＳＢバスプロトコル、またはデバイスを修正することなしに、安全なコンポーネントがデバイスと安全に通信すること。【解決手段】  セキュリティモジュールは、データ要求に応答して、デバイスから安全なコンポーネントに送られるデータを傍受する。「否定応答」信号が安全なコンポーネントに送られ、データが暗号化される。次のデータ要求がインターセプトされ、それに応答して、暗号化されたデータが送られる。安全なコンポーネントからデバイスへの肯定応答は、デバイスに到達することを許される。許可コマンドがセキュリティモジュールに送られ、許可コマンドは、暗号化された／暗号化されていないセットアップコマンドを含む。暗号化検査が成功した場合、デバイスに送られたセットアップコマンドは、デバイスに到達することを許される。【選択図】  図４
2004362552.tif 000002
【特許請求の範囲】
【請求項１】
デバイスと安全なコンポーネントとの間でデータ転送を仲介する方法であって、
データ要求を受け取るステップと、
第１の前記データ要求を受け取るステップの後に、前記第１のデータ要求を前記デバイスに渡すステップと、
前記第１のデータ要求を前記デバイスに渡すステップの後に、前記デバイスからデータを受け取るステップと、
前記第１のデータ要求を受け取るステップの後に、使用可能なデータがないことを示す信号を前記安全なコンポーネントに送るステップと、
前記デバイスから前記データを受け取るステップの後に、前記データを暗号化するステップと、
前記安全なコンポーネントから前記デバイスへの第２のデータ要求を傍受するステップと、
前記第２のデータ要求の後に、前記暗号化されたデータを前記安全なコンポーネントに送るステップと
を備えたことを特徴とする方法。
【請求項２】
前記暗号化は鍵を使用して実行され、前記安全なコンポーネントは解読用の前記鍵の複製を含む安全な部分を含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記デバイスはＵＳＢデバイスであり、前記安全なコンポーネントはＵＳＢホストに接続して動作可能であり、前記データ要求はＵＳＢ  ＩＮトークンであり、前記データはＵＳＢデータであり、前記安全なコンポーネントに送られる使用可能なデータがないことを示す信号はＮＡＫ信号であることを特徴とする請求項１に記載の方法。
【請求項４】
前記暗号化されたデータを前記安全なコンポーネントに送るステップの後に、前記安全なコンポーネントから肯定応答を受け取るステップと、
前記安全なコンポーネントから前記肯定応答を受け取るステップの後に、前記肯定応答を前記デバイスに送るステップと
をさらに備えたことを特徴とする請求項１に記載の方法。
【請求項５】
前記デバイスはＵＳＢデバイスであり、前記安全なコンポーネントはＵＳＢホストに接続して動作可能であり、前記肯定応答はＡＣＫ信号であることを特徴とする請求項４に記載の方法。
【請求項６】
前記デバイスから受け取られたデータは、前記デバイスがエラー状態にあることを示す信号を含むことができ、前記デバイスがエラー状態にあることを示すデータが前記デバイスから受け取られた後に、前記安全なコンポーネントへ送信される使用可能なデータがないことを示す信号は、前記デバイスがエラー状態にあることを示す信号であることを特徴とする請求項１に記載の方法。
【請求項７】
前記デバイスはＵＳＢデバイスであり、前記安全なコンポーネントはＵＳＢホストに接続して動作可能であり、前記デバイスがエラー状態にあることを示す前記信号はＳＴＡＬＬ信号であることを特徴とする請求項６に記載の方法。
【請求項８】
ＵＳＢデバイスと、ＵＳＢホストに接続して動作可能な安全なコンポーネントとの間でデータ転送を仲介する方法であって、
前記安全なコンポーネントからの第１のＩＮトークンに応答して、前記ＵＳＢデバイスからのデータを傍受するステップと、
前記データを暗号化するステップと、
前記ＵＳＢデバイス向けに前記安全なコンポーネントによって送られた第２のＩＮトークンを傍受するステップと、
前記暗号化されたデータを前記安全なコンポーネントに送るステップと
を備えたことを特徴とする方法。
【請求項９】
前記ＵＳＢデバイスからの前記データを傍受するステップの後に、ＮＡＫ信号を前記安全なコンポーネントに送るステップをさらに備えたことを特徴とする請求項８に記載の方法。
【請求項１０】
前記第１のＩＮトークンをスマッシュするステップをさらに備えたことを特徴とする請求項８に記載の方法。
【請求項１１】
安全なコンポーネントとデバイスとの間でデータ転送を仲介する方法であって、
前記デバイスへの第１のコマンドを含むデータを受け取るステップと、
前記第１のコマンドのセキュリティを検証するステップと、
前記デバイスへの第２のコマンドを傍受するステップと、
前記第１のコマンドと前記第２のコマンドとを比較するステップと、
前記第１のコマンドが前記第２のコマンドに等しい場合、前記第２のコマンドのデータを前記デバイスに送るステップと
を備えたことを特徴とする方法。
【請求項１２】
前記デバイスはＵＳＢデバイスであり、前記安全なコンポーネントはＵＳＢホストに接続して動作可能であり、前記第１のコマンドおよび前記第２のコマンドはセットアップコマンドを含むことを特徴とする請求項１１に記載の方法。
【請求項１３】
前記第２のコマンドデータを前記デバイスに送るステップの後に、前記デバイスから肯定応答を受け取るステップと、
前記デバイスから前記肯定応答を受け取るステップの後に、前記肯定応答を前記安全なコンポーネントに送るステップと
をさらに備えたことを特徴とする請求項１１に記載の方法。
【請求項１４】
前記デバイスはＵＳＢデバイスであり、前記安全なコンポーネントはＵＳＢホストに接続して動作可能であり、前記肯定応答はＡＣＫ信号を含むことを特徴とする請求項１３に記載の方法。
【請求項１５】
前記第１のコマンドを検証するステップは、前記第１のコマンドの暗号化された複製と、前記第１のコマンドの暗号化されていない複製とを比較するステップを含むことを特徴とする請求項１１に記載の方法。
【請求項１６】
前記第１のコマンドを検証するステップは、前記第１のコマンドの署名済み複製上の署名を検証するステップを含むことを特徴とする請求項１１に記載の方法。
【請求項１７】
ＵＳＢホストに接続して動作可能な安全なコンポーネントからＵＳＢデバイスへのＳＥＴＵＰ要求を安全に処理する方法であって、
安全なコンポーネントからＡＬＬＯＷコマンドを受け取るステップと、
前記ＡＬＬＯＷコマンドを受け取るステップの後に、コマンドデータを受け取るステップと、
前記コマンドデータを検証するステップと、
前記ＵＳＢデバイスへのＳＥＴＵＰコマンドデータを含むＳＥＴＵＰコマンドを受け取るステップと、
前記ＳＥＴＵＰコマンドデータと前記コマンドデータとを比較するステップと、
前記ＳＥＴＵＰコマンドデータが前記コマンドデータに等しい場合、前記ＳＥＴＵＰコマンドを前記ＵＳＢデバイスに送信するステップと
を備えたことを特徴とする方法。
【請求項１８】
前記コマンドデータを受け取るステップの後に、ＡＣＫ信号を前記安全なコンポーネントに送るステップをさらに備えたことを特徴とする請求項１７に記載の方法。
【請求項１９】
前記コマンドデータを送信するステップの後に、前記ＵＳＢデバイスからＡＣＫ信号を受け取るステップと、
前記デバイスから前記ＡＣＫ信号を受け取るステップの後に、前記ＡＣＫ信号を前記安全なコンポーネントに送信するステップと
をさらに備えたことを特徴とする請求項１７に記載の方法。
【請求項２０】
デバイスと安全なコンポーネントとの間でデータ転送を仲介するためのセキュリティモジュールであって、
データ要求を受け取る手段と、
第１のデータ要求の前記受け取りの後に、前記第１のデータ要求を前記デバイスに渡す手段と、
前記第１のデータ要求を前記デバイスに渡した後に、前記デバイスからデータを受け取る手段と、
前記第１のデータ要求の前記受け取りの後に、使用可能なデータがないことを示す信号を前記安全なコンポーネントに送る手段と、
前記デバイスから前記データを受け取った後に、前記データを暗号化する手段と、
前記安全なコンポーネントから前記デバイスへの第２のデータ要求を傍受する手段と、
前記第２のデータ要求の後に、前記暗号化されたデータを前記安全なコンポーネントに送る手段と
を備えたことを特徴とするセキュリティモジュール。
【請求項２１】
前記デバイスは、前記セキュリティモジュールを含むことを特徴とする請求項２０に記載のセキュリティモジュール。
【請求項２２】
ハブをさらに備えたことを特徴とする請求項２０に記載のセキュリティモジュール。
【請求項２３】
ドングルは前記セキュリティモジュールを含み、前記ドングルは、前記安全なコンポーネントに接続して動作可能であることを特徴とする請求項２０に記載のセキュリティモジュール。
【請求項２４】
前記暗号化は鍵を使用して実行され、前記セキュリティモジュールは前記鍵を格納する手段を含み、前記安全なコンポーネントは解読用の前記鍵の複製を含む安全な部分を含むことを特徴とする請求項２０に記載のセキュリティモジュール。
【請求項２５】
前記デバイスはＵＳＢデバイスであり、前記安全なコンポーネントはＵＳＢホストに接続して動作可能であり、前記データ要求はＵＳＢ  ＩＮトークンであり、前記データはＵＳＢデータであり、前記安全なコンポーネントへ送られた使用可能なデータがないことを示す信号はＮＡＫ信号であることを特徴とする請求項２０に記載のセキュリティモジュール。
【請求項２６】
前記暗号化されたデータを前記安全なコンポーネントに前記送信の後に、前記安全なコンポーネントから肯定応答を受け取る手段と、
前記安全なコンポーネントから前記肯定応答の受け取りの後に、前記肯定応答を前記デバイスに送る手段と
をさらに備えたことを特徴とする請求項２０に記載のセキュリティモジュール。
【請求項２７】
前記デバイスはＵＳＢデバイスであり、前記安全なコンポーネントはＵＳＢホストに接続して動作可能であり、前記肯定応答はＡＣＫ信号であることを特徴とする請求項２６に記載のセキュリティモジュール。
【請求項２８】
前記デバイスから受け取られた前記データは、前記デバイスがエラー状態にあることを示す信号を含むことができ、前記デバイスがエラー状態にあることを示すデータが前記デバイスから受け取られた後に、前記安全なコンポーネントへ送られた使用可能なデータがないことを示す信号は、前記デバイスがエラー状態にあることを示す信号であることを特徴とする請求項２０に記載のセキュリティモジュール。
【請求項２９】
前記デバイスはＵＳＢデバイスであり、前記安全なコンポーネントはＵＳＢホストに接続して動作可能であり、前記デバイスがエラー状態にあることを示す前記信号はＳＴＡＬＬ信号であることを特徴とする請求項２８に記載のセキュリティモジュール。
【請求項３０】
前記安全なコンポーネントは第１のコンピュータシステム内に配置され、前記デバイスは第２のコンピュータシステム内に配置され、前記第１および第２のコンピュータシステムは接続されて動作可能であり、該接続は、ネットワーク、ローカルバス、ＵＳＢバスのうち少なくとも１つを含むことを特徴とする請求項２０に記載のセキュリティモジュール。
【請求項３１】
前記安全なコンポーネントは、少なくとも１つの安全なプロセスを実行する安全なソフトウェアコンポーネントを含み、前記データ転送は、前記少なくとも１つの安全なプロセスのうち１つと、前記デバイスとの間で行われることを特徴とする請求項２０に記載のセキュリティモジュール。
【請求項３２】
ＵＳＢデバイスと、ＵＳＢホストに接続して動作可能な安全なコンポーネントとの間でデータ転送を仲介するためのセキュリティモジュールであって、
前記安全なコンポーネントからの第１のＩＮトークンに応答して、前記ＵＳＢデバイスからのデータを傍受する手段と、
前記データを暗号化する手段と、
前記ＵＳＢデバイス向けに前記安全なコンポーネントによって送られた第２のＩＮトークンを傍受する手段と、
前記暗号化されたデータを前記安全なコンポーネントに送る手段と
を備えたことを特徴とするセキュリティモジュール。
【請求項３３】
前記ＵＳＢデバイスからの前記データを傍受した後に、ＮＡＫ信号を前記安全なコンポーネントに送る手段をさらに備えたことを特徴とする請求項３２に記載のセキュリティモジュール。
【請求項３４】
前記第１のＩＮトークンをスマッシュする手段をさらに備えたことを特徴とする請求項３２に記載のセキュリティモジュール。
【請求項３５】
安全なコンポーネントとデバイスとの間でデータ転送を仲介するためのセキュリティモジュールであって、
前記デバイス上で実行される第１のコマンドを含むデータを受け取る手段と、
前記第１のコマンドのセキュリティを検証する手段と、
前記デバイスに送られる第２のコマンドを傍受する手段と、
前記第１のコマンドと前記第２のコマンドとを比較する手段と、
前記第１のコマンドが前記第２のコマンドに等しい場合、前記第２のコマンドのデータを前記デバイスに送る手段と
を備えたことを特徴とするセキュリティモジュール。
【請求項３６】
前記デバイスは、前記セキュリティモジュールを含むことを特徴とする請求項３５に記載のセキュリティモジュール。
【請求項３７】
ハブを含むことを特徴とする請求項３５に記載のセキュリティモジュール。
【請求項３８】
ドングルは前記セキュリティモジュールを含み、前記ドングルは前記安全なコンポーネントに接続して動作可能であることを特徴とする請求項３５に記載のセキュリティモジュール。
【請求項３９】
前記デバイスはＵＳＢデバイスであり、前記安全なコンポーネントはＵＳＢホストに接続して動作可能であり、前記第１のコマンドおよび前記第２のコマンドはセットアップコマンドを含むことを特徴とする請求項３８に記載のセキュリティモジュール。
【請求項４０】
前記第２のコマンドデータを前記デバイスに前記送信の後に、前記デバイスから肯定応答を受け取る手段と、
前記デバイスから前記肯定応答の前記受け取りの後に、前記肯定応答を前記安全なコンポーネントに送る手段と
をさらに備えたことを特徴とする請求項３８に記載のセキュリティモジュール。
【請求項４１】
前記デバイスはＵＳＢデバイスであり、前記安全なコンポーネントはＵＳＢホストに接続して動作可能であり、前記肯定応答はＡＣＫ信号を含むことを特徴とする請求項４０に記載のセキュリティモジュール。
【請求項４２】
前記第１のコマンドを検証する手段は、前記第１のコマンドの暗号化された複製と、前記第１のコマンドの暗号化されていない複製とを比較する手段を含むことを特徴とする請求項３５に記載のセキュリティモジュール。
【請求項４３】
ＵＳＢホストに接続して動作可能な安全なコンポーネントからＵＳＢデバイスへのＳＥＴＵＰ要求を安全に処理するためのセキュリティモジュールであって、
安全なコンポーネントからＡＬＬＯＷコマンドを受け取る手段と、
前記ＡＬＬＯＷコマンドの前記受け取りの後に、コマンドデータを受け取る手段と、
前記コマンドデータを検証する手段と、
前記ＵＳＢデバイスへのＳＥＴＵＰコマンドデータを含むＳＥＴＵＰコマンドを受け取る手段と、
前記ＳＥＴＵＰコマンドデータと前記コマンドデータとを比較する手段と、
前記ＳＥＴＵＰコマンドデータが前記コマンドデータに等しい場合、前記ＳＥＴＵＰコマンドを前記ＵＳＢデバイスに送信する手段と
を備えたことを特徴とするセキュリティモジュール。
【請求項４４】
前記コマンドデータの前記受け取りの後に、ＡＣＫ信号を前記安全なコンポーネントに送る手段をさらに備えたことを特徴とする請求項４３に記載のセキュリティモジュール。
【請求項４５】
前記コマンドデータの前記送信の後に、前記ＵＳＢデバイスからＡＣＫ信号を受け取る手段と、
前記デバイスから前記ＡＣＫ信号を前記受け取った後に、前記ＡＣＫ信号を前記安全なコンポーネントに送信する手段と
をさらに備えたことを特徴とする請求項４３に記載のセキュリティモジュール。
【請求項４６】
デバイスと安全なコンポーネントとの間でデータ転送を仲介するためのコンピュータ読取可能な媒体であって、１つまたは複数のプロセッサによって実行されると、
データ要求を受け取るステップと、
第１のデータ要求を受け取るステップの後に、前記第１のデータ要求を前記デバイスに渡すステップと、
前記第１のデータ要求を前記デバイスに渡すステップの後に、前記デバイスからデータを受け取るステップと、
前記第１のデータ要求を受け取るステップの後に、使用可能なデータがないことを示す信号を前記安全なコンポーネントに送るステップと、
前記デバイスから前記データを受け取るステップの後に、前記データを暗号化するステップと、
前記安全なコンポーネントから前記デバイスへの第２のデータ要求を傍受するステップと、
前記第２のデータ要求の後に、前記暗号化されたデータを前記安全なコンポーネントに送るステップと
を実行するコンピュータ読取可能命令を有することを特徴とするコンピュータ読取可能な媒体。
【請求項４７】
前記暗号化は鍵を使用して実行され、前記安全なコンポーネントは解読用の前記鍵の複製を含む安全な部分を含むことを特徴とする請求項４６に記載のコンピュータ読取可能な媒体。
【請求項４８】
前記デバイスはＵＳＢデバイスであり、前記安全なコンポーネントはＵＳＢホストに接続して動作可能であり、前記データ要求はＵＳＢ  ＩＮトークンであり、前記データはＵＳＢデータであり、前記安全なコンポーネントに送信された使用可能なデータがないことを示す信号はＮＡＫ信号であることを特徴とする請求項４６に記載のコンピュータ読取可能な媒体。
【請求項４９】
前記暗号化されたデータを前記安全なコンポーネントに送るステップの後に、前記安全なコンポーネントから肯定応答を受け取るステップと、
前記安全なコンポーネントから前記肯定応答を受け取るステップの後に、前記肯定応答を前記デバイスに送るステップと
をさらに実行することを特徴とする請求項４６に記載のコンピュータ読取可能な媒体。
【請求項５０】
前記デバイスはＵＳＢデバイスであり、前記安全なコンポーネントはＵＳＢホストに接続して動作可能であり、前記肯定応答はＡＣＫ信号であることを特徴とする請求項４９に記載のコンピュータ読取可能な媒体。
【請求項５１】
前記デバイスから受け取られたデータは、前記デバイスがエラー状態にあることを示す信号を含むことができ、前記デバイスがエラー状態にあることを示すデータが前記デバイスから受け取られた後に、前記安全なコンポーネントに送られた使用可能なデータがないことを示す信号は、前記デバイスがエラー状態にあることを示す信号であることを特徴とする請求項４６に記載のコンピュータ読取可能な媒体。
【請求項５２】
前記デバイスはＵＳＢデバイスであり、前記安全なコンポーネントはＵＳＢホストに接続して動作可能であり、前記デバイスがエラー状態にあることを示す前記信号はＳＴＡＬＬ信号であることを特徴とする請求項５１に記載のコンピュータ読取可能な媒体。
【請求項５３】
ＵＳＢデバイスと、ＵＳＢホストに接続して動作可能でありた安全なコンポーネントとの間でデータ転送を仲介するためのコンピュータ読取可能な媒体であって、１つまたは複数のプロセッサによって実行されると、
前記安全なコンポーネントからの第１のＩＮトークンに応答して、前記ＵＳＢデバイスからのデータを傍受するステップと、
前記データを暗号化するステップと、
前記ＵＳＢデバイス向けに前記安全なコンポーネントによって送られた第２のＩＮトークンを傍受するステップと、
前記暗号化されたデータを前記安全なコンポーネントに送るステップと
を実行するコンピュータ読取可能命令を有することを特徴とするコンピュータ読取可能な媒体。
【請求項５４】
前記ＵＳＢデバイスからのデータを傍受するステップの後に、ＮＡＫ信号を前記安全なコンポーネントに送るステップをさらに実行することを特徴とする請求項５０に記載のコンピュータ読取可能な媒体。
【請求項５５】
前記第１のＩＮトークンをスマッシュするステップをさらに実行することを特徴とする請求項５０に記載のコンピュータ読取可能な媒体。
【請求項５６】
安全なコンポーネントとデバイスとの間でデータ転送を仲介するためのコンピュータ読取可能な媒体であって、１つまたは複数のプロセッサによって実行されると、
前記デバイス上で実行される第１のコマンドを含むデータを受け取るステップと、
前記第１のコマンドのセキュリティを検証するステップと、
前記デバイスに送られる第２のコマンドを傍受するステップと、
前記第１のコマンドと前記第２のコマンドとを比較するステップと、
前記第１のコマンドが前記第２のコマンドに等しい場合、前記第２のコマンドのデータを前記デバイスに送るステップと
を実行するコンピュータ読取可能命令を有することを特徴とするコンピュータ読取可能な媒体。
【請求項５７】
前記デバイスはＵＳＢデバイスであり、前記安全なコンポーネントはＵＳＢホストに接続して動作可能であり、前記第１のコマンドおよび前記第２のコマンドはセットアップコマンドを含むことを特徴とする請求項５６に記載のコンピュータ読取可能な媒体。
【請求項５８】
前記第２のコマンドデータを前記デバイスに送るステップの後に、前記デバイスから肯定応答を受け取るステップと、
前記デバイスから前記肯定応答を受け取るステップの後に、前記肯定応答を前記安全なコンポーネントに送るステップと
をさらに実行することを特徴とする請求項５６に記載のコンピュータ読取可能な媒体。
【請求項５９】
前記デバイスはＵＳＢデバイスであり、前記安全なコンポーネントはＵＳＢホストに接続して動作可能であり、前記肯定応答はＡＣＫ信号を含むことを特徴とする請求項５８に記載のコンピュータ読取可能な媒体。
【請求項６０】
前記第１のコマンドを検証するステップは、前記第１のコマンドの暗号化された複製と、前記第１のコマンドの暗号化されていない複製とを比較するステップを含むことを特徴とする請求項５６に記載のコンピュータ読取可能な媒体。
【請求項６１】
ＵＳＢホストに接続して動作可能な安全なコンポーネントからＵＳＢデバイスへのＳＥＴＵＰ要求を安全に処理するためのコンピュータ読取可能な媒体であって、１つまたは複数のプロセッサによって実行されると、
安全なコンポーネントからＡＬＬＯＷコマンドを受け取るステップと、
前記ＡＬＬＯＷコマンドを受け取るステップの後に、コマンドデータを受け取るステップと、
前記コマンドデータを検証するステップと、
前記ＵＳＢデバイスへのＳＥＴＵＰコマンドデータを含むＳＥＴＵＰコマンドを受け取るステップと、
前記ＳＥＴＵＰコマンドデータと前記コマンドデータとを比較するステップと、
前記ＳＥＴＵＰコマンドデータが前記コマンドデータに等しい場合、前記ＳＥＴＵＰコマンドを前記ＵＳＢデバイスに送信するステップと
を実行するコンピュータ読取可能命令を有することを特徴とするコンピュータ読取可能な媒体。
【請求項６２】
前記コマンドデータを受け取るステップの後に、ＡＣＫ信号を前記安全なコンポーネントに送るステップをさらに実行することを特徴とする請求項６１に記載の方法。
【請求項６３】
前記コマンドデータを送信するステップの後に、前記ＵＳＢデバイスからＡＣＫ信号を受け取るステップと、
前記デバイスから前記ＡＣＫ信号を受け取るステップの後に、前記ＡＣＫ信号を前記安全なコンポーネントに送信するステップと
をさらに実行することを特徴とする請求項６１に記載のコンピュータ読取可能な媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デジタルデータを保護するための方法およびシステムに関し、より詳細には、ユニバーサルシリアルバス（ＵＳＢ）アーキテクチャおよびプロトコル、または同様なアーキテクチャおよびプロトコルを使用して転送されるデジタルデータを保護するための方法およびシステムに関する。
【背景技術】
【０００２】
コンピュータシステムでは、ＵＳＢバスなどのバスを用いて、周辺機器その他のデバイスをコンピュータシステムに接続することができる。ＵＳＢバスを使用するコンピュータシステムには、アプリケーションと対話し、また中央のホストと周辺機器とのデータの送受信を仲介するＵＳＢソフトウェア層が含まれるであろう。
【０００３】
ＵＳＢソフトウェア層は、一般的なＵＳＢハードウェアをサポートする。ＵＳＢソフトウェア層は、ＵＳＢ通信をサポートするために複雑かつ柔軟なものである。ＵＳＢソフトウェア層は、複数の独立したハードウェアベンダのドライバをサポートすることが望ましく、さらにプラグイン機能を保持していなければならない。したがって、ＵＳＢソフトウェア層は、ハードウェアの変更やその他の更新など、困難な課題に答えるためにしばしば変更される場合がある。さらに、使用することができる多数の様々なＵＳＢハードウェア要素があり、ＵＳＢソフトウェア層は、この選択の多様性をサポート可能であることが望ましい。
【０００４】
ＵＳＢバス上のデータは、安全でないＵＳＢソフトウェア層を介して渡され、またこのデータは、ＵＳＢバス上のいずれのデバイスにとっても使用可能であるため、セキュリティが心配である。例えば、あるコンピュータモデルでは、安全な構成要素（ソフトウェアまたはハードウェア）を含むが、これらはＵＳＢバスの上でデータを渡すことを要求される場合がある。しかし、簡潔性、柔軟性、アップグレード可能性を考慮すると、ＵＳＢソフトウェア層はその安全なソフトウェア構成要素の一部でないことが望ましい。一方、ＵＳＢソフトウェア層がその安全なソフトウェア構成要素の一部でない場合、その安全なソフトウェア構成要素内に実装されたセキュリティ機能は危うくなる。
【０００５】
ソフトウェアまたはハードウェア攻撃によって、システムが脆弱になる可能性がある。例えば、攻撃者は、ハードウェアデバイスからデバイス入力のスプーフィングを行う恐れがあり、その結果ユーザの入力した情報は、そのデータが送られるべきアプリケーションに送信されないこととなる。また、攻撃者は、例えばパスワードまたはその他のデータ情報を得るためユーザのキーストロークを保存して、デバイス入力のスニッフィングを行う恐れがある。コンピュータ内のソフトウェア攻撃によって、入力の記録、修正、または再生の恐れもある。
【０００６】
コンピュータシステム上で安全なソフトウェアが動作している場合、ＵＳＢデバイスとの通信は、安全でないＵＳＢソフトウェアとそのバスを経由しなければならない。このようなデバイスは、通常ユーザにとって表示および入力する目的で必要となるものである。したがって、安全であるべきソフトウェアを保護するためには、その安全なソフトウェアに対する入力および出力もまた守らなければならない。安全なソフトウェアが、ユーザに至る安全な経路を有していない場合には、その安全なソフトウェアは、行われた動作が実際にはそのユーザの代わりに行われたものであってもそれを認識することができない。まず、攻撃者は、安全なソフトウェアをあざむき、正当なユーザが意図しなかった挙動を起こさせるため、ユーザ入力（そのユーザから届かなかった、したがってユーザの意図するものでなかった入力）を作りあげる恐れがある。次に、信頼されたソフトウェアについての出力が安全な経路を介してユーザに直接渡らない場合には、正当なユーザは、安全なソフトウェアからの本当の出力を実際に見ているとの確信をもてない。しかし、ＵＳＢプロトコルはコンピュータ業界内の標準であり、セキュリティを実現するためにＵＳＢプロトコルまたはアーキテクチャを修正することは、広く使用可能な、また広く実施されたアーキテクチャを使用するという利点を減ずることとなる。
【０００７】
【非特許文献１】USB specification, USB Implementers Forum, www.usb.org
【発明の開示】
【発明が解決しようとする課題】
【０００８】
したがって、ＵＳＢ接続、並びに既存のＵＳＢデバイスおよびシステムとの互換性を保ちつつ、セキュリティを高めることが可能な方法が求められている。
【課題を解決するための手段】
【０００９】
本発明は、ＵＳＢデバイスに提供されるセキュリティモジュール内の暗号化／解読機構を提供する。具体的には、デバイスと、安全なコンポーネント、例えば、デバイスにデータを要求するコマンド、そのデバイスによってシステムに返されたデータ、および、デバイスを安全に扱えるように構成するためのセットアップコマンドとの間で、これらのコマンドおよびデータが、安全でないハードウェアおよび／またはソフトウェアの上を通って安全なコンポーネントに到達する場合でも、通信を実現する。
【００１０】
暗号化／解読は、物理的に別個の装置、例えば１個のハードウェア（ドングル）内で実現することができ、このハードウェアは、ＵＳＢデバイスと、ＵＳＢデバイスが差し込まれるホストまたはハードウェアとの間で、あるいは、無修正のＵＳＢデバイスが差し込まれる別個のデバイスとして、接続ワイア内に配置される。別法として、暗号化／解読機構をデバイス内、例えば、ハードウェア暗号化／解読が内蔵された、または上流ハブの機能に一体化されたキーボードに内蔵することができる。
【００１１】
デバイスは、そのデバイスの様々な機能部分に関連付けられたいくつかのエンドポイントを有する可能性がある。したがって、一実施形態において、セキュリティドングルは、すべてのインターフェース、ならびにそのデバイス上のすべてのエンドポイントについてセキュリティを扱う。
【００１２】
本発明の一実施形態によれば、ＵＳＢデバイスが安全なコンポーネント、例えば、キーストロークまたはマウスストロークなどＨＩＤ（ｈｕｍａｎ  ｉｎｔｅｒｆａｃｅ  ｄｒｉｖｅｒ）パケットに送信するためにペイロードを受け取ったとき、ペイロードは、ドングルの上流のデバイスから平文で送られ、ドングル内で暗号化され、暗号化された状態でホストに送られる。暗号化されたペイロードの置換は、ＵＳＢホストコントローラにとって透過であり、そのデバイスにとって透過である。
【００１３】
さらに、ドングルは、システムからデバイスへの無許可のＳＥＴＵＰパケットをすべて妨げ、それによって、この透過性を確保する。いずれのＳＥＴＵＰコマンドも、そのドングルがデバイスに送信することを許す前に、安全なソフトウェアが、「署名された」ＡＬＬＯＷコマンドをドングルに送る。ドングルは、ＡＬＬＯＷコマンドを受け取った後に限り、特定のＳＥＴＵＰコマンドを指定することを可能にする。したがって、ＳＥＴＵＰコマンドを実施しようとするとき、セットアップコマンドデータと、セットアップコマンドデータの暗号化されたバージョンとを含むデータと共に、予備的なＡＬＬＯＷコマンドが送られる。（例えば、一実施形態において、ドングルと安全なソフトウェアの間で共有されている秘密を使用してハッシュを追加することにより、ＡＬＬＯＷコマンドが安全なソフトウェアによって署名されていることを保証することによって）データが検証されたとき、ドングルは、整合用コマンドデータと共にエンドポイントに宛てられたＳＥＴＵＰコマンドを、そのエンドポイントに送信すること、またそのエンドポイント上で実行することを許す。
【００１４】
安全なソフトウェアが安全なエンドポイントにデータを要求したいと望むとき、安全なソフトウェアは、ＵＳＢシステムソフトウェアを標準的な方法で使用し、その要求を特定のエンドポイントに送る。しかし、ドングルは、この要求トークンがエンドポイントに到達する方法、ならびにデータがホストシステムソフトウェアに返される方法を以下の方法で変更する。すなわち、次いでＵＳＢシステムソフトウェアがトークンをエンドポイントに送るとき、そのトークンはセキュリティモジュールによってインターセプトされる。セキュリティモジュールはそのトークンをデバイスに送るが、ホストにＮＡＫを送る。デバイスが、ポーリングにデータで応答したとき、そのデータは、セキュリティモジュールによって格納され、暗号化される。デバイスとエンドポイントについてセキュリティモジュールによって再ポーリングが検出されたとき、その要求がセキュリティモジュールによって「スマッシュ」される（「スマッシュ」は、ＵＳＢ競技場において、データが送信エラーを示すような形で送られたことを意味する用語である）。セキュリティモジュールは、その第２のポーリングに対する応答として暗号化済みデータを送り、ホストが受け取ったことをＡＣＫ信号で肯定応答したとき、これがセキュリティモジュールによってデバイスに渡される。
【００１５】
この安全な実施形態は、安全にされたデバイスにデータを送りたいと望むとき、まずセキュリティモジュール自体に要求を送る。ＡＬＬＯＷトークンがセキュリティモジュールに送られる。このパケットの一部として、コマンド（ＵＳＢデバイス用のコマンドを含むＳＥＴＵＰコマンドなど）がＡＬＬＯＷトークンのデータとして送信される。セキュリティモジュールは、ＡＬＬＯＷコマンドが安全なソフトウェアから届いたと決定するためにＡＬＬＯＷコマンドを検証し、このデータを保存する。次いで、新しいコマンドトークンがセキュリティモジュールに渡されたとき、そのコマンドトークンが、ＡＬＬＯＷコマンド内のデータとして送られたコマンドトークンと合致する場合に、セットアップコマンドがデバイスに渡される。ＳＥＴＵＰプロトコルの残りの部分は、通常のようにＵＳＢバス上で継続する。ＳＥＴＵＰコマンドが、以前に受け取られたＡＬＬＯＷコマンドと合致しない場合、ドングルは、ＳＥＴＵＰコマンドをスマッシュしてから終了することができる。
【００１６】
本発明の他の態様については、以下で述べる。  
本発明によるセキュリティモジュールについては、添付の図面を参照しながら、さらに述べる。
【発明を実施するための最良の形態】
【００１７】
例示的なコンピューティング環境
図１は、本発明を実施することができる好適なコンピューティングシステム環境１００の一例を示す。コンピューティングシステム環境１００は、好適なコンピューティング環境の一例にすぎず、本発明の使用または機能の範囲についていかなる制限も示唆しないものとする。コンピューティング環境１００は、例示的な動作環境１００に示されている構成要素のいずれか１つまたは組合せに関していかなる依存性も要件も有すると解釈すべきでない。
【００１８】
当業者であれば、コンピュータまたは他のクライアントもしくはサーバデバイスをコンピュータネットワークの一部として、または分散コンピューティング環境内で展開することができることを理解することができる。この点において、本発明は、任意の数のメモリまたは記憶装置、並びに任意の数の記憶装置または記憶領域全体にわたって実行される任意の数のアプリケーションおよびプロセスを有する任意のコンピュータシステムに属し、これらは本発明に関連して用いられる。本発明は、サーバコンピュータおよびクライアントコンピュータがネットワーク環境内で、または分散コンピューティング環境内で展開された、遠隔記憶装置またはローカル記憶装置を有する環境に適用することができる。また、本発明は、遠隔デバイスまたはローカルデバイスと共に情報を生成し、受信し、送信するために、プログラミング言語機能、解釈および実行機能を有するスタンドアローンのコンピューティングデバイスに適用することができる。
【００１９】
本発明は、多数の他の汎用または専用コンピューティングシステム環境または構成と共に動作可能である。本発明と共に使用するのに適している周知のコンピューティングシステム、環境、および／または構成の例には、これに限られないが、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドデバイスまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサをベースとするシステム、セットトップボックス、プログラム可能な家電、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたはデバイスのいずれかを含む分散コンピューティング環境などが含まれる。
【００２０】
本発明について、コンピュータによって実行される、プログラムモジュールなどコンピュータ実行可能命令の全体的なコンテクストから述べる。一般に、プログラムモジュールには、特定のタスクを実行する、または特定の抽象データタイプを実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。本発明はまた、通信ネットワークまたはその他データ転送媒体を介してリンクされた遠隔処理デバイスによってタスクが実行される分散コンピューティング環境内で実施することができる。分散コンピューティング環境では、プログラムモジュールや他のデータは、メモリ記憶装置を含むローカルおよび遠隔の双方のコンピュータ記憶媒体内に配置される可能性がある。分散コンピューティングは、コンピューティングデバイス／システム間の直接交換によりコンピュータ資源／サービスの共用を容易にする。これらの資源およびサービスには、情報、キャッシュ記憶、ファイル用ディスク記憶の交換が含まれる。分散コンピューティングにより、ネットワーク接続の利点が生かされ、クライアントはその総力を利用して企業全体の収益を向上させることができる。この点において、様々な装置が、本発明の技術を使用するアプリケーション、オブジェクト、または資源を有するであろう。
【００２１】
図１を参照すると、本発明を実施するための例示的なシステムは、コンピュータ１１０の形の汎用コンピューティングデバイスを含んでいる。コンピュータ１１０の構成要素には、これに限られないが、処理装置１２０、システムメモリ１３０、およびシステムメモリを含む様々なシステム構成要素を処理装置１２０に結合するシステムバス１２１が含まれる。システムバス１２１は、様々なバスアーキテクチャのいずれかを使用するメモリバスまたはメモリコントローラ、周辺機器バス、およびローカルバスを含むいくつかのタイプのバス構造のいずれかとすることができる。限定としてではなく例として挙げると、そのようなアーキテクチャには、ＩＳＡ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＭＣＡ（Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＥＩＳＡ（Ｅｎｈａｎｃｅｄ  ＩＳＡ）バス、ＶＥＳＡ（Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ）ローカルバス、およびＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バス（メザニンバスとしても知られる）が含まれる。
【００２２】
コンピュータ１１０は、一般に、様々なコンピュータ読取可能な媒体を含む。コンピュータ読取可能な媒体は、コンピュータ１１０によってアクセスすることができる任意の入手可能な媒体とすることができ、揮発性媒体と不揮発性媒体、取外し可能媒体と固定媒体を共に含む。限定としてではなく例として挙げると、コンピュータ読取可能な媒体は、コンピュータ記憶媒体と通信媒体とを含む。コンピュータ記憶媒体には、コンピュータ読取可能命令、データ構造、プログラムモジュール、または他のデータなど、情報を記憶するための任意の方法または技術で実施される揮発性と不揮発性、取外し可能と固定の媒体とが共に含まれる。コンピュータ記憶媒体には、これに限られないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリもしくは他のメモリ技術、ＣＤＲＯＭ、デジタル多用途ディスク（ＤＶＤ）もしくは他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、または、所望の情報を記憶するために使用することができ、コンピュータ１１０によってアクセスすることができる他の任意の媒体が含まれる。通信媒体は、一般に、コンピュータ読取可能命令、データ構造、プログラムモジュール、または他のデータを、搬送波またはその他の伝送機構など変調データ信号に統合し、任意の情報送達媒体を含む。「変調データ信号」という用語は、情報を信号に符号化するようにその特性の１つまたは複数が設定された、または変化した信号を意味する。限定としてではなく例として挙げると、通信媒体は、有線ネットワークまたは直接有線接続など有線媒体と、音響、ＲＦ、赤外線およびその他の無線媒体とを含む。上記のいずれかの組合せもまた、コンピュータ読取可能な媒体の範囲内に含まれるべきである。
【００２３】
システムメモリ１３０は、読出し専用メモリ（ＲＯＭ）１３１およびランダムアクセスメモリ（ＲＡＭ）１３２など揮発性および／または不揮発性メモリの形態でコンピュータ記憶媒体を含む。起動中などにコンピュータ１１０内の要素間で情報を転送するのを助ける基本ルーチンを含む基本入出力システム（ＢＩＯＳ）１３３は、一般にＲＯＭ１３１内に記憶されている。一般にＲＡＭ１３２は、処理装置１２０によって直ちにアクセス可能な、および／または現在処理されているデータおよび／またはプログラムモジュールを含む。限定としてではなく例として挙げると、図１は、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、プログラムデータ１３７を示す。
【００２４】
コンピュータ１１０はまた、他の取外し可能／固定、揮発性／不揮発性コンピュータ記憶媒体を含むことができる。例示にすぎないが、図１は、固定の不揮発性磁気媒体との間で読出しまたは書込みをするハードディスクドライブ１４０、取外し可能な不揮発性磁気ディスク１５２との間で読出しまたは書込みをする磁気ディスクドライブ１５１、ＣＤ  ＲＯＭまたは他の光媒体など取外し可能な不揮発性光ディスク１５６との間で読出しまたは書込みをする光ディスクドライブ１５５を示す。例示的な動作環境内で使用することができる他の取外し可能／固定、揮発性／不揮発性コンピュータ記憶媒体には、これに限られないが、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、固体ＲＡＭ、固体ＲＯＭなどが含まれる。一般にハードディスクドライブ１４１は、インターフェース１４０など固定メモリインターフェースを介してシステムバス１２１に接続され、磁気ディスクドライブ１５１および光ディスクドライブ１５５は、一般に、インターフェース１５０など取外し可能メモリインターフェースによってシステムバス１２１に接続される。
【００２５】
上記で検討し、図１に示されているドライブと関連するコンピュータ記憶媒体は、コンピュータ１１０のためのコンピュータ読取可能命令、データ構造、プログラムモジュール、および他のデータを記憶する。例えば、図１では、ハードディスクドライブ１４１が、オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、プログラムデータ１４７を記憶して示されている。これらの構成要素は、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、プログラムデータ１３７と同じとすることも異なるものとすることもできることに留意されたい。ここでは、オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、プログラムデータ１４７は、これらが最低でも異なる複製であることを示すために異なる番号が与えられている。ユーザは、キーボード１６２、および一般にマウス、トラックボール、またはタッチパッドと呼ばれるポインティングデバイス１６１など、入力デバイスを介してコンピュータ１１０にコマンドおよび情報を入力することができる。他の入力デバイス（図示せず）には、マイクロフォン、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナなどが含まれる。これらの、また他の入力デバイスは、システムバスに結合されているユーザ入力インターフェース１６０を介して処理装置１２０に接続されることがしばしばであるが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス（ＵＳＢ）など、他のインターフェースおよびバス構造によって接続することができる。また、モニタ１９１または他のタイプのディスプレイデバイスを、ビデオインターフェース１９０などのインターフェースを介してシステムバス１２１に接続することができる。コンピュータはまた、モニタに加えて、スピーカ１９７やプリンタ１９６など他の周辺出力デバイスをも含むことができ、これらは、出力周辺機器インターフェース１９５を介して接続することができる。
【００２６】
コンピュータ１１０は、遠隔コンピュータ１８０など、１つまたは複数の遠隔コンピュータに対する論理接続を使用してネットワーク環境内で動作することができる。遠隔コンピュータ１８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイスまたは他の通常のネットワークノードとすることができ、図１には、メモリ記憶デバイス１８１だけが示されているが、一般に、コンピュータ１１０に関して上述した要素の多くまたは全部を含む。図１に示されている論理接続は、ローカルエリアネットワーク（ＬＡＮ）１７１と広域ネットワーク（ＷＡＮ）１７３を含むが、他のネットワークを含むこともできる。そのようなネットワーク環境は、事務所、全社コンピュータネットワーク、イントラネット、インターネットで通常のものである。
【００２７】
コンピュータ１１０は、ＬＡＮネットワーク環境内で使用されるとき、ネットワークインターフェースまたはアダプタ１７０を介してＬＡＮ１７１に接続される。コンピュータ１１０は一般に、ＷＡＮネットワーク環境内で使用されるとき、インターネットなどＷＡＮ１７３を介して通信を確立するためのモデム１７２または他の手段を含む。モデム１７２は、内部にあっても外部にあってもよく、ユーザ入力インターフェース１６０または他の適切な機構を介してシステムバス１２１に接続することができる。ネットワーク環境では、コンピュータ１１０に関して示されたプログラムモジュール、またはその一部分を、遠隔メモリ記憶装置内に記憶することができる。限定としてではなく例として挙げると、図１は、メモリデバイス１８１に常駐する遠隔アプリケーションプログラム１８５を示す。図のネットワーク接続は例示的なものであり、コンピュータ間で通信リンクを確立する他の手段を使用することができることを理解されたい。
【００２８】
［ＵＳＢプロトコル］
ＵＳＢアーキテクチャは、デバイスとホストとを接続し、および通信する方法を提供する。例えば、図２に示されているように、ユニバーサルシリアルバス（ＵＳＢ）は、マウス１６１、キーボード１６２、グラフィックタブレット１６３、スピーカ１９７、マイクロフォン１６４、電話１６５、モニタ１９１をコンピュータ１１０に接続するために使用することができる。ＵＳＢアーキテクチャは、１つまたは複数のＵＳＢデバイスと１つのＵＳＢホストとの間で接続を可能にする。一般に、そのような構成では、コンピュータ１１０はＵＳＢホストである。
【００２９】
使用されている物理相互接続は、スター型トポロジである。循環アタッチメントを防止するため、スター型トポロジには段階的順序付け（ｔｉｅｒｅｄ  ｏｒｄｅｒｉｎｇ）がなされている。その結果、図２に示されているツリーのようなトポロジになる。各スターの中央にハブが存在する。ＵＳＢホストは１つのハブである。機能性を有するＵＳＢデバイスもまた、ハブとすることができる。例えば、図２では、キーボード１６２とモニタ１９１が各々、ハブとしても機能しているデバイスである。個別に機能性を有しないハブもまた、ＵＳＢトポロジ内で存在することができる。
【００３０】
さらに、複数の機能を単一の物理デバイスであると見せるように共に納めることができる。例えば、キーボードとポインティングデバイス（トラックボールなど）を単一のパッケージ内で共に組み合わせることができるであろう。複数の機能が単一のパッケージ内でハブと共に組み合わせられると、それらは複合デバイスと呼ばれる。複合デバイス内のハブと、ハブに関連付けられた各機能は、それ自体のデバイスアドレスが割り当てられる。例えば、キーボード１６２内では、ハブとキーボード機能は、それぞれ別々のデバイスアドレスを有することになる。
【００３１】
ホストは、ホストコントローラ１６７として知られる、ホストコンピュータシステムに対するＵＳＢインターフェースを含む。ホストコントローラ１６７およびＵＳＢシステムソフトウェアは、ＵＳＢネットワークおよびホストパーソナルコンピュータ上で、デバイスとそのデバイスを制御する特定のソフトウェアとの間でインターフェースを提供する。ホストコントローラ１６７は、これらのデバイスとの間であらゆるパケットを送受信するためのＵＳＢ資源に対するアクセスすべてを制御する。システムソフトウェアは、ルートハブおよび任意の追加のハブと共に、バストポロジを追跡し、デバイスを使用するクライアントソフトウェアとデバイスそれ自体からのデバイスのアドレス付け（ａｄｄｒｅｓｓｉｎｇ）およびデータの経路設定をすべて管理する。ホスト部のクライアントソフトウェアは、何らかのＵＳＢデバイスと通信したいと望むとき、ＵＳＢシステムソフトウェアと対話することによってそれは行われる。ＵＳＢシステムソフトウェアは、ホストコントローラ１６７と対話する。ホストコントローラ１６７は、ＵＳＢデバイスやそのデバイス上のエンドポイントとの間で、ＵＳＢバスを介して信号を送受信する。ホストコントローラ１６７とＵＳＢデバイスとの間では、１つまたは複数のハブが介在することができる。ＵＳＢデバイス部では、ＵＳＢインターフェース層が信号を受信する。この層は、フレームデータをデバイスに送信し、デバイスは、そのデバイス上の様々なエンドポイントへの、また様々なエンドポイントからのデータを経路設定する。エンドポイントからなるインターフェースは、その機能を提供する。場合によっては、これらのインターフェースは、例えばスピーカ１９７のスピーカ機能、またはキーボード１６２のキーボード機能、またはキーボードとマウスを含む単一デバイスの２つの機能など「機能群」に合わせてグループ化される。
【００３２】
すべてのＵＳＢデバイスは、ＵＳＢプロトコルを認識し、および標準的なＵＳＢ動作に応答することによって、並びに標準的な機能説明情報によって、標準的なＵＳＢインターフェースを提供する。これらのインターフェースは、一般にＵＳＢデバイスワーキンググループスタンダーズ（ＵＳＢ  Ｄｅｖｉｃｅ  Ｗｏｒｋｉｎｇ  Ｇｒｏｕｐ  Ｓｔａｎｄａｒｄｓ）団体によって規定されるが、ベンダ特有の特注インターフェースを規定することもできる。
【００３３】
図２でオブジェクトを接続する線として示されているバスは、ポーリングバス（ｐｏｌｌｅｄ  ｂｕｓ）である。コンピュータ１１０は、ホストコントローラ１６７を介して、あらゆるデータ転送を開始する。そのような種類の転送の１つは、割込み転送である。割込み転送は、小さいデータで、不定期、低頻度、および有限待ち時間に使用される。割込み転送により、その接続について最大のサービス期間が保証され、次の期間で転送の再試行を行うことができる。例えば、キーストロークのためのキーボードへのポーリングは、この種のＵＳＢ転送を使用して処理される。
【００３４】
ＵＳＢトランザクションは、ホスト部のアプリケーションがホストコントローラ１６７に、デバイスとの伝送を要求すると開始される。ホストコントローラ１６７は、トランザクションのタイプおよび方向、ＵＳＢデバイスアドレスおよびエンドポイント番号を説明するＵＳＢパケットを送る。これは「トークンパケット」である。各ＵＳＢデバイスは、そのデバイスがホストコントローラ１６７に接続および列挙されると割り当てられるＵＳＢアドレスによって参照される。各ＵＳＢデバイスは、トークン内に含まれるアドレス情報を使用し、ホストによって送られたトークンの行先（ｔａｒｇｅｔ）であるかどうか判定する。エンドポイント番号は、通信が対象とするＵＳＢデバイスのエンドポイント、したがってそのエンドポイントが常駐するインターフェース（または、口語では機能）を規定する。
【００３５】
次いで、データパケット段階では、トークンパケット内の命令に従って、エンドポイントからホストに、またはホストからエンドポイントにデータが転送される。トークンがＩＮトークンである場合は、ホストがエンドポイントに情報を要求している。トークンがＯＵＴトークンである場合は、ホストが、情報をエンドポイントに送ることを示している。
【００３６】
トークンがＩＮトークンであるが、アドレス付けされた（ａｄｄｒｅｓｓｅｄ）デバイスから転送すべきデータがない場合は、その結果、データの代わりにＮＡＫパケットがエンドポイントによって送られる。例えば、キーボード１６２がポーリングされているが、キーストロークが発生しなかった場合、ＮＡＫ（否定応答）が送られる。エンドポイントがストールした場合、ＳＴＡＬＬが送られる。送るべきデータがある場合は、そのデータが送られる。それに応答して、データが受け取られた場合、ホストはＡＣＫハンドシェークを送ることになる。
【００３７】
ＯＵＴトークンが送られており、およびデータがホストからエンドポイントに送られた場合、エンドポイントは、データが首尾よく受け取られたときにはＡＣＫパケットを送り、データについて確認することになる。エンドポイントがストールし、データを受け取ることができなかったときは、ＳＴＡＬＬハンドシェークを送ることができる。エンドポイントがそのデータを受け取らないときは、ＮＡＫが送られる。
【００３８】
ＳＥＴＵＰコマンドは、（データ段階で送られる）コマンドをエンドポイント上で実行させるある種のＯＵＴ処理（ｔｒａｎｓａｃｔｉｏｎ）である。
【００３９】
ＵＳＢプロトコルについての完全な説明は、ＵＳＢ仕様書に含まれている（非特許文献１参照）が、これは公然と入手可能である。この文書は、www.usb.orgのＵＳＢインプリメンターズフォーラム（ＵＳＢ  Ｉｍｐｌｅｍｅｎｔｅｒｓ  Ｆｏｒｕｍ）ウェブサイトで入手可能である。
【００４０】
［ＵＳＢデータの動的置換］
本発明の方法およびシステムは、ネットワーク全体にわたって、安全なコンポーネントとＵＳＢデバイスなどのデバイスとの間の通信においてセキュリティ機能を実装する。本発明のセキュリティモジュールは、ＵＳＢデバイス内に配置することができ、主にＵＳＢシステムを参照しながら述べるが、いずれの処理可能なホストとデバイスとの間の接続をも本発明に従って実行することができることを企図している。例えば、ローカルバス、ネットワーク（ローカルエリアネットワーク（ＬＡＮ）または他のネットワークなど）、ＵＳＢバスのうち１つまたは複数を含むいずれの接続も本発明を使用することができる。
【００４１】
図３（Ａ）に示されているシステムでは、コンピュータ１１０内の安全なコンポーネントとマウス３６１との間、およびその安全なコンポーネントとグラフィックタブレット１６３との間で本発明に従い通信が保護されている。マウス３６１は、一体化されたセキュリティモジュール３００を含み、安全なコンポーネントとの通信は、そのセキュリティモジュールによって取り次がれる。図３（Ａ）のシステムでは、グラフィックタブレット１６３との通信を保護するため、グラフィックタブレット１６３から物理的に別個のドングル３１０が、グラフィックタブレット１６３と安全なコンポーネントとの間で通信を仲介する。セキュリティモジュールは、ドングル３１０内に含まれている。セキュリティモジュールは、ＵＳＢシステム内のいずれの点で実行することもできる。セキュリティモジュールまたはドングルの（ホストに向かう）上流のＵＳＢネットワーク上での通信は保護されているが、セキュリティモジュールまたはドングルの（ホストから遠のく）下流の通信は、脆弱となる可能性がある。
【００４２】
このシステムの物理的なレイアウトのため、ホストと保護されているデバイスとの間の通信はすべて、セキュリティモジュールを通る。代替の実施形態において、セキュリティモジュールをドングル、上流のハブ、または保護されているデバイスそれ自体に一体化することができるはずである。一般に、読み取ることができない、または検証できないデータを生成する暗号化スキームは、システムを守るために有用である。一実施形態において、安全なコンポーネントがデバイスと通信し、およびセキュリティモジュールが鍵情報を有する鍵ペア（ｋｅｙ  ｐａｉｒ）システムが企図されている。一実施形態において、暗号化／解読機能を初期化するために、安全なコンポーネントとセキュリティモジュールとがパートナーシップ鍵を共用する。このパートナーシップ鍵を２つのデバイス間で共用するための方法の１つは、安全なコンポーネントが鍵情報を安全に表示し、次いでセキュリティモジュールが下流のキーボードまたは他の入力デバイスから入力を受け入れ、パートナーシップ鍵を設定することである。例えば、安全なコンポーネントは、安全なモニタまたは他の出力デバイス上でパートナーシップ鍵を表示することができる。次いで、セキュリティモジュールがキーボードに接続されているか、またはキーボード内に組み込まれている場合、そのキーボードを使用し、パートナーシップ鍵を入力することができる。他の実施形態において、共用パートナーシップ鍵は、やはりデバイスと安全なコンポーネントの双方の中にハードウェアによって符号化することができ、または工場インストール時に（またはビルドされた後の最初の起動時に）デバイス内に焼き込み、および安全なコンポーネントソフトウェア内にインストールすることができ、またはセキュリティモジュールによって表示し、マウスを用いてユーザによって選択されるボタンを画面上でランダムに配置することによって安全なコンポーネントに入力し、したがって、敵対者が情報を盗聴するのを防止することができる。一実施形態において、データを暗号化および解読するための、または安全なコンポーネントからセキュリティモジュールへのコマンドの妥当性検査を行うための鍵として、パートナーシップ鍵が使用される。
【００４３】
本発明の一実施形態において、ホスト（コンピュータ１１０）は、デバイスに命令を下す安全なコンポーネントとして安全なソフトウェアを含む。本実施形態において、この安全なソフトウェアは、問題のデバイスを直接制御せず、安全でないバス、またおそらくはホストの安全でない領域を介してデバイスと通信しなければならない。例えば、ホストが安全なプロセスが可能な場合、その安全なソフトウェアがホスト上で安全なプロセスとして動作している可能性がある。その安全なソフトウェアから発行されるコマンドは、ホストの安全でない領域に、または安全でないバスにわたってコマンドが送られる前に、暗号化または署名をしなければならない。このようにして、おそらくは脆弱なホストの領域またはバスを介してデータが渡されている間でもセキュリティを保つことができる。
【００４４】
本発明による図３（Ｂ）に示されているシステムでは、安全なコンポーネントとは、安全なサーバ３５０、すなわちマウス３６１およびグラフィックタブレット１６３を介してユーザとの安全な通信を必要とするソフトウェアを実行する信頼されたコンピュータのことである。ホストコントローラ１６７を含む信頼されていないコンピュータ３６０は、攻撃に脆弱である可能性があり、信頼されていないコンピュータ３６０と安全なサーバ３５０との間、信頼されていないコンピュータ３６０とモニタ１９１との間、モニタ１９１とキーボード１６２との間、およびキーボード１６２とドングル３１０との間の接続部も同様に脆弱な可能性がある。しかし、安全なサーバ３５０とマウス３６１との間、および安全なサーバ３５０とグラフィックタブレット１６３との間で送られる情報は、本発明に従って守られているため、これらの接続部および中間に介在するものが脆弱なために安全なサーバ３５０とこれらのデバイスとの間の通信が安全でなくなることはない。
【００４５】
暗号化／解読を実行するために、他の一実施形態において、安全なコンポーネントとセキュリティモジュールとの間で、各セッションについてセッション鍵が生成される。これによりセキュリティが高められ、リプレイ攻撃に対する１つの防御となる。暗号化されたデータを記録し、再生することはできるが、セッション鍵が変化した場合、その暗号化されたデータは、権限のないものとして識別される。セッションは、安全なコンポーネントと、デバイスまたはセキュリティモジュールとの間で確立される。安全なコンポーネントとセキュリティモジュールは、ノンスとして知られるデータを交換する。安全なコンポーネントとセキュリティモジュールは各々、暗号化／解読するために使用されるセッション鍵になるパートナーシップ鍵を用いて、これら２つのノンスのハッシュ関数を計算する。一実施形態において、正しい初期化が、暗号化された情報の交換を介して確認される。
【００４６】
本発明についてＵＳＢプロトコルを参照して述べるが、本発明は、広範な適用可能性を有し、下記で詳述されているように、ＵＳＢに類似の任意のプロトコルと共に実施することができることを理解されたい。例えば、ＩＥＥＥ−１３９４規格を使用してアドレスされるデバイスに使用することができる。
【００４７】
［作動中の暗号化のための信号転送］
本発明によれば、安全なコンポーネントが、ホストおよびバスを介しセキュリティモジュールを越えてエンドポイントに宛てられたＩＮトークンを発行すると、セキュリティモジュールは、そのＩＮトークンが宛先とするＵＳＢアドレスおよびエンドポイントが保護または「占有」されているかどうか判定するために検査を行う。アドレスおよびエンドポイントが占有されていない場合、セキュリティモジュールは、（ＵＳＢハブが上流ポートから下流ポートに、また逆も同様にデータを繰り返す同じ方法で）ホストからエンドポイントへのいずれの情報も、またエンドポイントからホストへのいずれの情報も単純に通す。しかし、エンドポイントが占有されている場合は、図４でわかるように、安全なコンポーネントとエンドポイントとの間にセキュリティモジュールが介在する。
【００４８】
図４に示すように、ステップ４１０において、データ要求は、セキュリティモジュールによって安全なコンポーネントから受け取られる。データ要求が対象とするアドレスおよびエンドポイントが占有されている場合、ステップ４２０において、占有されているエンドポイントにＩＮトークンが送られる。次いで、ステップ４３０において、セキュリティモジュールは、エンドポイントによって返される要求されたデータを傍受する（ｉｎｔｅｒｃｅｐｔ）。セキュリティモジュールは、このデータをバスに渡す代わりに、ステップ４４０において、（標準的なＮＡＫパケットを使用して）使用可能なデータがないことを示す信号をホストに送り、ステップ４５０において、安全なコンポーネントから第２のデータ要求を受け取るのを待つ。同時に、セキュリティモジュールは、ステップ４６０において、要求されたデータを暗号化する。その後ホストシステムは、ＵＳＢシステム上のあらゆる割込みエンドポイントと同じく、ＩＮコマンドの再試行を行う。暗号化が完了し、第２のデータ要求が受け取られたとき、セキュリティモジュールは、ステップ４７０において、第２のデータ要求に対する応答として、安全なコンポーネントに暗号化済みデータを送る。第２のデータ要求は、問題のデバイスのアドレスに元のまま送られることはない。このセキュリティデバイスは、ビットを受け取りつつあるとき、それらのビットを再送信し続けなければならないため、それらのビットが問題のアドレスおよびエンドポイントにすでに再送信されていて初めて、次のＩＮトークンが占有アドレスに送ると決定することができる。したがって、セキュリティデバイスは、ドングルがこの状態を検出すると、パケットの残りの部分を損わせるか、または「スマッシュ」させなければならない。したがって、ＵＳＢエンドポイントは、有効なＩＮトークンを受け取らなかったため、新しいパケットを返さず、その代わりにドングルが、ホスト用に暗号化されたパケットで、デバイスに代わって応答することになる。ステップ４８０において、データについて安全なコンポーネントから肯定応答を受け取ったとき、その肯定応答は、エンドポイントに渡される。
【００４９】
この作動中の暗号化が、安全な領域と安全でない領域を有するホスト上で実行される場合、データを暗号化し、またはデータに署名するために使用される情報は、ホストによって安全な領域内で保たれていなければならず、セキュリティモジュールは、データを暗号化または検証するために使用される情報を含んでいなければならない。共用パートナーシップ鍵が、暗号化情報および検証情報の双方として使用される場合、このパートナーシップ鍵は、ホストによって安全な領域およびセキュリティモジュール内に格納される。
【００５０】
これをＵＳＢシステム上で実施するためには、データ要求はＩＮトークンであり、使用可能なデータがないことを示す信号はＮＡＫ信号でなければならず、肯定応答はＡＣＫ信号である。
【００５１】
ステップ４３０において、セキュリティモジュールが、エンドポイントがエラー状態にあることを示す信号（例えば、ＵＳＢではＳＴＡＬＬ信号）を受け取る場合、その信号はバスに渡される。
【００５２】
［作動中の解読のための信号伝送］
上述の一実施形態においては、（セキュリティモジュールを介して）保護されているデバイスへのセットアップコマンドのすべてが、上述のように許可されずにスマッシュされる。これは、安全なコンポーネントが本物のセットアップコマンドをデバイスに送ろうとするときに問題となる。このような理由で、ある種のセットアップコマンドがセキュリティモジュールを介してデバイスに入ることを許可するための機構を作成しなければならない。
【００５３】
本発明によれば、コマンドを守られているエンドポイントに送るための有効なセットアップ命令は、まず「許可（ＡＬＬＯＷ）」コマンド内で、安全なコンポーネントによってセキュリティモジュールに送られる。このコマンドは、すべての他のコマンドが信頼されたソフトウェアからセキュリティモジュールに送られるのと同じ方法で、妥当性検査に付される。図５に示すように、ステップ５１０において、許可コマンドは、安全なコンポーネントからセキュリティモジュールによって受け取られる。この後、ステップ５２０において、暗号化されたセットアップコマンドを含む安全なコンポーネントから送られた許可コマンドデータのセキュリティモジュールによる受取りが続く。ステップ５３０において、暗号化されたセットアップコマンドを検証することが試みられる。
【００５４】
他の実施形態において、検証は、セットアップコマンドの解読を含み、セットアップコマンドのローカルで解読されたバージョンを生成する。一実施形態において、セキュリティモジュールによって受け取られた許可コマンドデータは、セットアップコマンドの暗号化されていないバージョンを含む。セキュリティモジュールは、検証するために、この暗号化されていないバージョンを、ローカルの暗号化されていないバージョンと比較する。
【００５５】
他の実施形態において、暗号化されたセットアップコマンドは、セットアップコマンドの署名済みバージョンであり、検証時に、セットアップコマンドが共用鍵で署名されていることを保証するため署名が検査される。
【００５６】
検証が成功しなかった場合、そのセットアップコマンドは、エンドポイントに送られない。検証が成功した場合、ステップ５４０において、セキュリティモジュールは、安全なコンポーネントからセットアップコマンドを受け取るのを待つ。セットアップコマンドが、先に検証済みのセットアップコマンド（ステップ５３０）と合致した場合、ステップ５７０において、そのコマンドは、以下のデータ段階と共に、クライアントコンピュータに送られる。セットアップコマンドが合致しない場合は送られることはない。その代わりに、セキュリティモジュールは合致するセットアップコマンドを待つのである。
【００５７】
［結論］
このようにして、依然としてＵＳＢプロトコルを使用しながら、暗号化されたデータおよびコマンドを、安全なコンポーネントからエンドポイントに、またエンドポイントから安全なコンポーネントに通すことができる一方、他の種類のプログラミングまたは構成を再度行われることからデバイスを安全に保つ。
【００５８】
上述のように、本発明の例示的な実施形態について、様々なコンピューティングデバイスおよびネットワークアーキテクチャと共に述べたが、基礎となる概念は、ＵＳＢまたは同様な通信の暗号化／解読を実施することが望ましいどのようなコンピューティングデバイスまたはシステムにも適用することができる。したがって、本発明による技法は、様々な応用例およびデバイスに適用することができる。
【００５９】
本明細書で述べられている様々な技法は、ハードウェアまたはソフトウェア、あるいは適切な場合には、両方の組合せと共に実施することができる。したがって、本発明の方法および装置、またはある種の態様もしくは一部分は、プログラムコードが、コンピュータなど機械内にロードされ、機械によって実行されたとき、その機械が本発明を実施するための装置になる有形媒体内、例えばフロッピー（登録商標）ディスク、ＣＤ−ＲＯＭ、ハードドライブ、または任意の他の機械可読記憶媒体などで実行されるプログラムコード（すなわち命令）の形態を取ることができる。プログラム可能なコンピュータ上でのプログラムコードが実行される場合には、コンピューティングデバイスは通常、プロセッサ、そのプロセッサによって読み取り可能な（揮発性および不揮発性メモリおよび／または記憶要素を含む）記憶媒体、少なくとも１つの入力デバイス、少なくとも１つの出力デバイスを含むことになる。本発明の信号処理サービスが、例えばデータ処理用ＡＰＩなどを用いて使用される１つまたは複数のプログラムは、コンピュータシステムと通信するための上位の手続き型またはオブジェクト指向型プログラミング言語で実施されることが望ましい。しかし、望むなら、プログラム（群）をアセンブリ言語または機械語で実施することができる。どのような場合でも、言語は、コンパイラ言語またはインタープリタ言語とする、また、ハードウェア実装と組み合わせることができる。
【００６０】
また、本発明の方法および装置は、電気配線またはケーブルを介し、または光ファイバを介し、または任意の他の伝送形態を介してなど、何らかの伝送媒体を介して伝送されるプログラムコードであって、ＥＰＲＯＭ、ゲートアレイ、プログラマブルロジックデバイス（ＰＬＤ）、クライアントコンピュータ、ビデオレコーダなど、機械内に受信およびロードされ、それらによって実行されたとき、上記の例示的な実施形態で述べた信号処理機能を有する受信機械が本発明を実施するための装置になるプログラムコードの形態で実施される通信を介して実行することができる。このプログラムコードは、汎用プロセッサ上で実行されたとき、プロセッサと結合し、本発明の機能を呼び出すように動作する独自の装置を提供する。さらに、本発明と共に使用されるいずれの記憶技法も、常にハードウェアとソフトウェアの組合せとすることができる。
【００６１】
本発明について、様々な図の望ましい実施形態と共に述べたが、本発明から逸脱することなしに、本発明の同じ機能を実行するために、他の同様な実施形態を使用することができ、または、述べられている実施形態に修正および追加を加えることができることを理解されたい。例えば、本発明の例示的なネットワーク環境について、ピアツーピアのネットワーク環境などネットワーク化された環境の状況で述べたが、本発明がそれに限定されないことを、また、本願で述べられている方法は、有線であろうと無線であろうと、ゲームコンソール、ハンドヘルドコンピュータ、可搬コンピュータなど、任意のコンピューティングデバイスまたは環境に適用することができ、通信ネットワークを介して接続され、そのネットワーク全体にわたって相互作用する任意の数のそのようなコンピューティングデバイスに適用することができることを、当業者であれば理解することができるであろう。さらに、特に無線ネットワーク化されたデバイスの数が増え続けているため、ハンドヘルドデバイス用オペレーティングシステム、および他の特定用途向けオペレーティングシステムを含めて、様々なコンピュータプラットフォームが企図されていることを強調すべきである。さらに、本発明は、複数の処理用チップまたはデバイス内で、またはそれらにわたって実施することができ、同様に、複数のデバイスにわたって記憶を実装することができる。したがって、本発明は、いずれの単一の実施形態にも限定すべきでなく、むしろ特許請求の範囲にしたがってその範囲を解釈しなければならない。
【図面の簡単な説明】
【００６２】
【図１】本発明を実施することができるコンピュータシステムを表すブロック図である。
【図２】本発明を実施することができる、コンピュータと、ＵＳＢによって接続された他のデバイスとを含むコンピュータシステムを表すブロック図である。
【図３（Ａ）】本発明の一実施形態によるドングルと一体型セキュリティモジュールとを含むコンピュータシステムを表すブロック図である。
【図３（Ｂ）】本発明の他の実施形態によるドングルと一体型セキュリティモジュールとを含むコンピュータシステムを表すブロック図である。
【図４】本発明の一実施形態によるＩＮトランザクションを示す流れ図である。
【図５】本発明の一実施形態によるＳＥＴＵＰトランザクションを示す流れ図である。
【符号の説明】
【００６３】
１００  コンピュータシステム
１１０  コンピュータ
１２０  処理装置
１２１  システムバス
１３０  システムメモリ
１３１  ＲＯＭ
１３２  ＲＡＭ
１３３  ＢＩＯＳ
１３４  オペレーティングシステム
１３５  アプリケーションプログラム
１３６  他のプログラムモジュール
１３７  プログラムデータ
１４０  固定不揮発性メモリインターフェース
１４１  ハードディスクドライブ
１４４  オペレーティングシステム
１４５  アプリケーションプログラム
１４６  他のプログラムモジュール
１４７  プログラムデータ
１５０  取外し可能不揮発性メモリインターフェース
１５１  磁気ディスクドライブ
１５２  取外し可能な不揮発性磁気ディスク
１５５  光ディスクドライブ
１５６  取外し可能不揮発性光ディスク
１６０  ユーザ入力インターフェース
１６１  マウス
１６２  キーボード
１６３  グラフィックタブレット
１６４  マイクロフォン
１６５  電話
１６７  ホストコントローラ
１７０  ネットワークインターフェース
１７１  ローカルエリアネットワーク
１７２  モデム
１７３  広域ネットワーク
１８０  遠隔コンピュータ
１８５  遠隔アプリケーションプログラム
１９０  ビデオインターフェース
１９１  モニタ
１９５  出力周辺機器インターフェース
１９６  プリンタ
１９７  スピーカ
３００  セキュリティモジュール
３１０  ドングル
３５０  安全なサーバ
３６０  信頼されていないコンピュータ
３６１  マウス
【図１】
2004362552.tif 000003
【図２】
2004362552.tif 000004
【図３（Ａ）】
2004362552.tif 000005
【図３（Ｂ）】
2004362552.tif 000006
【図４】
2004362552.tif 000007
【図５】
2004362552.tif 000008
【外国語明細書】
2004362552000001.pdf