(57)【要約】【課題】周辺デバイス間のトランザクションを保護するための方法およびシステムを提供する。【解決手段】本発明の安全装置は、インターフェースと、プロセッサーとを備え、インターフェースは、ホスト及び第２デバイスが結合されているバスに接続し、少なくとも第２デバイスはスレーブモードでバス上で動作し、ホストは、少なくとも安全装置を代表して、バス上でトランザクションを開始するバスマスタとしてバス上で動作し、記プロセッサーは、安全装置のために、バスを介して第２デバイスにアクセスするトランザクションを開始するようにホストに要求し、少なくともホストが、バスを介して第２デバイスにアクセスして要求されたトランザクションを実行する期間内に、バス上の１つ以上の信号を監視し、監視された信号に基づいて、要求されたトランザクションの実行中にセキュリティ違反が発生したかどうかを識別する。【選択図】図１
2020177661.tif 000002
【特許請求の範囲】
【請求項１】
インターフェースと、プロセッサーと、を備え、
前記インターフェースは、
ホスト及び第２デバイスが結合されているバスに接続し、少なくとも前記第２デバイスはスレーブモードでバス上で動作し、前記ホストは、少なくとも前記安全装置を代表して、前記バス上でトランザクションを開始するバスマスタとしてバス上で動作し、
前記プロセッサーは、
前記安全装置のために、前記バスを介して前記第２デバイスにアクセスするトランザクションを開始するように前記ホストに要求し、
少なくとも前記ホストが、前記バスを介して前記第２デバイスにアクセスして前記要求されたトランザクションを実行する期間内に、前記バス上の１つ以上の信号を監視し、
前記監視された信号に基づいて、前記要求されたトランザクションの実行中にセキュリティ違反が発生したかどうかを識別する
ことを特徴とする安全装置。
【請求項２】
前記プロセッサは、スレーブモードで前記バス上で動作するように構成される請求項１に記載の安全装置。
【請求項３】
前記安全装置は、前記バスとは異なる別のバスを介して前記ホストにさらに結合され、前記プロセッサは、前記別のバスを介して前記ホストに前記トランザクションを開始するように要求するように構成される請求項１に記載の安全装置。
【請求項４】
前記要求されたトランザクションは、（１）前記第２デバイスからのデータの読み取り、（２）前記第２デバイスへのデータの書き込み、及び（３）前記第２デバイスの第１アドレスと第２アドレス間のデータの転送、のうちのいずれかを含む請求項１に記載の安全装置。
【請求項５】
前記要求されたトランザクションは、予期されたトランザクション情報を指定し、前記プロセッサは、前記バス上で、前記要求されたトランザクションに対応する実際のトランザクション情報を監視するように構成され、前記予期されたトランザクション情報の少なくとも一部が前記実際のトランザクション情報と異なることを検出することにより、前記セキュリティ違反を識別する請求項１に記載の安全装置。
【請求項６】
前記プロセッサは、オペコード素子、アドレス素子およびデータ素子を含むリストから選択された少なくとも１つの素子が、前記予期されたトランザクション情報と前記実際のトランザクション情報との間で異なることを検出するように構成される請求項５に記載の安全装置。
【請求項７】
前記プロセッサは、前記要求されたトランザクションの期間中または期間外に、所定のセキュリティポリシーが前記バス上で違反されたことを検出することにより、前記セキュリティ違反を識別するように構成される請求項１に記載の安全装置。
【請求項８】
前記要求されたトランザクションは、前記第２デバイスからデータを読み取ることを含み、前記プロセッサは、前記バスを介して前記ホストによって前記第のデバイスから読み取られたデータを前記バス上で監視するように構成される請求項１に記載の安全装置。
【請求項９】
前記プロセッサは、前記ホストによる第１書き込み操作の実行中に前記バス上の１つまたは複数の信号の論理値を上書きすることにより、前記ホストに、前記第２デバイスへの前記第１書き込み操作を開始し、前記第１書き込み操作とは異なる第２書き込み操作を前記第２デバイスに適用するように要求するように構成される請求項１に記載の安全装置。
【請求項１０】
前記プロセッサは、前記ホストによる第１読み取り操作の実行中に前記バス上の１つまたは複数の信号の論理値を上書きすることにより、前記ホストに、前記第２デバイスへの前記第１読み取り操作を開始し、前記第１読み取り操作とは異なる第２読み取り操作を前記第２デバイスに適用するように要求するように構成される請求項１に記載の安全装置。
【請求項１１】
前記プロセッサは、前記バスを介して前記第２デバイスにアクセスするトランザクションを開始し、前記ホストと前記第２デバイスを接続する前記バスの信号を切断し、前記ホストに代わって前記バスを介して前記第２デバイスにアクセスするように、前記ホストに要求するように構成される請求項１に記載の安全装置。
【請求項１２】
前記プロセッサは、前記セキュリティ違反の識別に応答して、前記第２デバイスにアクセスする際に前記バス上に現れるデータの公開または変更を防止するように保護アクションを実行するように構成される請求項１に記載の安全装置。
【請求項１３】
前記安全装置と前記第２デバイスの両方がコモンパッケージに実装され、前記コモンパッケージ内の前記バスを介して相互接続される請求項１に記載の安全装置。
【請求項１４】
ホスト及び第２デバイスが結合されているバスに接続する安全装置において、少なくとも前記第２デバイスはスレーブモードでバス上で動作し、前記ホストは、少なくとも前記安全装置を代表して、前記バス上でトランザクションを開始するバスマスタとしてバス上で動作することと、
前記安全装置は、前記安全装置のために、前記バスを介して前記第２デバイスにアクセスするトランザクションを開始するように前記ホストに要求することと、
少なくとも前記ホストが、前記バスを介して前記第２デバイスにアクセスして前記要求されたトランザクションを実行する期間内に、前記バス上の１つ以上の信号を監視することと、
前記監視された信号に基づいて、前記要求されたトランザクションの実行中にセキュリティ違反が発生したかどうかを識別することと、
を含むことを特徴とする安全方法。
【請求項１５】
前記安全装置は、スレーブモードで前記バス上で動作するように構成される請求項１４に記載の安全方法。
【請求項１６】
前記安全装置は、前記バスとは異なる別のバスを介して前記ホストにさらに結合され、前記安全装置は、前記別のバスを介して前記ホストに前記トランザクションを開始するように要求するように構成される請求項１４に記載の安全方法。
【請求項１７】
前記要求されたトランザクションは、（１）前記第２デバイスからのデータの読み取り、（２）前記第２デバイスへのデータの書き込み、及び（３）前記第２デバイスの第１アドレスと第２アドレス間のデータの転送、のうちのいずれかを含む請求項１４に記載の安全方法。
【請求項１８】
前記要求されたトランザクションは、予期されたトランザクション情報を指定し、
前記信号を監視することは、前記バス上で、前記要求されたトランザクションに対応する実際のトランザクション情報を監視することを含み、
前記セキュリティ違反を識別することは、前記予期されたトランザクション情報の少なくとも一部が前記実際のトランザクション情報と異なることを検出することを含む
請求項１４に記載の安全方法。
【請求項１９】
前記セキュリティ違反を識別することは、オペコード素子、アドレス素子およびデータ素子を含むリストから選択された少なくとも１つの素子が、前記予期されたトランザクション情報と前記実際のトランザクション情報との間で異なることを検出する請求項１４に記載の安全方法。
【請求項２０】
前記セキュリティ違反を識別することは、前記要求されたトランザクションの期間中または期間外に、所定のセキュリティポリシーが前記バス上で違反されたことを検出することを含む請求項１４に記載の安全方法。
【請求項２１】
前記要求されたトランザクションは、前記第２デバイスからデータを読み取ることと、前記バスを介して前記ホストによって前記第のデバイスから読み取られたデータを前記バス上で監視することと、を含む請求項１４に記載の安全方法。
【請求項２２】
前記ホストによる第１書き込み操作の実行中に前記バス上の１つまたは複数の信号の論理値を上書きすることにより、前記ホストに、前記第２デバイスへの前記第１書き込み操作の開始を要求し、前記第１書き込み操作とは異なる第２書き込み操作を前記第２デバイスに適用するように要求することを含む請求項１４に記載の安全方法。
【請求項２３】
前記ホストによる第１読み取り操作の実行中に前記バス上の１つまたは複数の信号の論理値を上書きすることにより、前記ホストに、前記第２デバイスへの前記第１読み取り操作の開始を要求し、前記第１読み取り操作とは異なる第２読み取り操作を前記第２デバイスに適用するように要求することを含む請求項１４に記載の安全方法。
【請求項２４】
前記バスを介して前記第２デバイスにアクセスするトランザクションを開始し、前記ホストと前記第２デバイスを接続する前記バスの信号を切断し、前記ホストに代わって前記バスを介して前記第２デバイスにアクセスするように、前記ホストに要求することを含む請求項１４に記載の安全方法。
【請求項２５】
前記セキュリティ違反の識別に応答して、前記第２デバイスにアクセスする際に前記バス上に現れるデータの公開または変更を防止するように保護アクションを実行する請求項１４に記載の安全方法。
【請求項２６】
前記安全装置と前記第２デバイスの両方がコモンパッケージに実装され、前記コモンパッケージ内の前記バスを介して相互接続される請求項１４に記載の安全方法。
【請求項２７】
ホストと、安全装置と、を備え、
前記ホストは、
バスに結合され、バスマスターとして動作するように構成され、スレーブデバイスと前記ホストによってトリガーされるバスアクセス操作を仲介することにより、前記バスに結合された前記スレーブデバイスにアクセスし、
前記安全装置は、
前記バスに接続され、前記バスにスレーブとして接続されている前記第２デバイスにアクセスするトランザクションを開始するように前記ホストに要求し、
少なくとも前記ホストが前記要求されたトランザクションを実行する際に前記バスを介して前記第２デバイスにアクセスする期間内に、前記バス上の１つ以上の信号を監視し、
前記監視された信号に基づいて、前記要求されたトランザクションの実行中にセキュリティ違反が発生したかどうかを識別することを特徴とする安全システム。
【請求項２８】
前記安全装置は、スレーブモードで前記バス上で動作するように構成される請求項２７に記載の安全システム。
【請求項２９】
前記安全装置は、前記バスとは異なる別のバスを介して前記ホストにさらに結合され、前記安全装置は、前記別のバスを介して前記ホストに前記トランザクションを開始するように要求するように構成される請求項２７に記載の安全システム。
【請求項３０】
前記要求されたトランザクションは、予期されたトランザクション情報を指定し、前記安全装置は、前記バス上で、前記要求されたトランザクションに対応する実際のトランザクション情報を監視するように構成され、前記予期されたトランザクション情報の少なくとも一部が前記実際のトランザクション情報と異なることを検出することにより、前記セキュリティ違反を識別する請求項２７に記載の安全システム。
【請求項３１】
前記要求されたトランザクションは、前記第２デバイスからデータを読み取ることを含み、前記安全装置は、前記バスを介して前記ホストによって前記第のデバイスから読み取られたデータを前記バス上で監視するように構成される請求項２７に記載の安全システム。
【請求項３２】
前記安全装置は、前記ホストによる第１書き込み操作の実行中に前記バス上の１つまたは複数の信号の論理値を上書きすることにより、前記ホストに、前記第２デバイスへの前記第１書き込み操作を開始し、前記第１書き込み操作とは異なる第２書き込み操作を前記第２デバイスに適用するように要求するように構成される請求項２７に記載の安全システム。
【請求項３３】
前記安全装置は、前記ホストによる第１読み取り操作の実行中に前記バス上の１つまたは複数の信号の論理値を上書きすることにより、前記ホストに、前記第２デバイスへの前記第１読み取り操作を開始し、前記第１読み取り操作とは異なる第２読み取り操作を前記第２デバイスに適用するように要求するように構成される請求項２７に記載の安全システム。
【請求項３４】
前記安全装置は、前記バスを介して前記第２デバイスにアクセスするトランザクションを開始し、前記ホストと前記第２デバイスを接続する前記バスの信号を切断し、前記ホストに代わって前記バスを介して前記第２デバイスにアクセスするように、前記ホストに要求するように構成される請求項２７に記載の安全システム。
【請求項３５】
前記安全装置は、前記セキュリティ違反の識別に応答して、前記第２デバイスにアクセスする際に前記バス上に現れるデータの公開または変更を防止するように保護アクションを実行するように構成される請求項２７に記載の安全システム。
【請求項３６】
スレーブデバイスが接続されたバス上でバスマスターとして動作するホストを含む安全システムンにおいて、前記スレーブデバイスと前記ホストによってトリガーされたバスアクセス操作間で前記ホストによって仲介することと、
前記バスに結合された安全装置によって、前記バスに結合された第２装置にスレーブとしてアクセスするトランザクションを開始するように前記ホストに要求することと、
前記安全装置によって、少なくとも前記ホストが前記バスを介して前記第２デバイスにアクセスし、前記要求されたトランザクションを実行している期間内に、前記バス上の１つまたは複数の信号を監視することと、
前記監視された信号に基づいて、前記安全装置によって、前記要求されたトランザクションの実行中にセキュリティ違反が発生したかどうかを識別することと、
を含む安全方法。
【請求項３７】
前記安全装置は、スレーブモードで前記バス上で動作するように構成される請求項３６に記載の安全方法。
【請求項３８】
前記安全装置は、前記バスとは異なる別のバスを介して前記ホストにさらに結合され、前記安全装置は、前記別のバスを介して前記ホストに前記トランザクションを開始するように要求するように構成される請求項３６に記載の安全方法。
【請求項３９】
前記要求されたトランザクションは、予期されたトランザクション情報を指定し、
前記信号を監視することは、前記バス上で、前記要求されたトランザクションに対応する実際のトランザクション情報を監視することを含み、
前記セキュリティ違反を識別することは、前記予期されたトランザクション情報の少なくとも一部が前記実際のトランザクション情報と異なることを検出することを含む請求項３６に記載の安全方法。
【請求項４０】
前記要求されたトランザクションは、前記第２デバイスからデータを読み取ることと、前記バスを介して前記ホストによって前記第のデバイスから読み取られたデータを前記バス上で監視することと、を含む請求項３６に記載の安全方法。
【請求項４１】
前記ホストによる第１書き込み操作の実行中に前記バス上の１つまたは複数の信号の論理値を上書きすることにより、前記ホストに、前記第２デバイスへの前記第１書き込み操作の開始を要求し、前記第１書き込み操作とは異なる第２書き込み操作を前記第２デバイスに適用するように要求することを含む請求項３６に記載の安全方法。
【請求項４２】
前記ホストによる第１読み取り操作の実行中に前記バス上の１つまたは複数の信号の論理値を上書きすることにより、前記ホストに、前記第２デバイスへの前記第１読み取り操作の開始を要求し、前記第１読み取り操作とは異なる第２読み取り操作を前記第２デバイスに適用するように要求することを含む請求項３６に記載の安全方法。
【請求項４３】
前記バスを介して前記第２デバイスにアクセスするトランザクションを開始し、前記ホストと前記第２デバイスを接続する前記バスの信号を切断し、前記ホストに代わって前記バスを介して前記第２デバイスにアクセスするように、前記ホストに要求することを含む請求項３６に記載の安全方法。
【請求項４４】
前記セキュリティ違反の識別に応答して、前記第２デバイスにアクセスする際に前記バス上に現れるデータの公開または変更を防止するように保護アクションを実行する請求項３６に記載の安全方法。
【請求項４５】
ホストにセキュリティサービスを提供する安全装置と、
ホストで実行されるデバイスドライバーと、を備え、
前記安全装置、前記ホスト、および前記安全装置の外部にある不揮発性メモリデバイスは、共通バスに結合され、
前記デバイスドライバーは、前記安全装置と前記不揮発性メモリデバイスを仲介するように構成され、
前記安全装置は、前記ホスト上で実行されているアプリケーションプログラムからセキュリティコマンドを受信し、前記バスを介して前記不揮発性メモリデバイスにアクセスすることによって、前記デバイスドライバーを介して前記アプリケーションプログラムに透過的にセキュリティコマンドを実行することを特徴とする安全設備。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子システムセキュリティーに関わり、特に、特に、周辺デバイス間のトランザクションを保護するための方法およびシステムに関する。
【背景技術】
【０００２】
従来、電子システムは、ホストデバイスと周辺デバイス間の通信にさまざまなタイプのバスインターフェイスを使用する。バスインターフェイスの例として、Ｉｎｔｅｒ−Ｉｎｔｅｇｒａｔｅｄ−Ｃｉｒｃｕｉｔ  （Ｉ２Ｃ）バスやＳｅｒｉａｌ  Ｐｅｒｉｐｈｅｒａｌ  Ｉｎｔｅｒｆａｃｅ（ＳＰＩ）バスが挙げられる。Ｉ２Ｃバスは、たとえば、「Ｉ２Ｃバスの仕様およびユーザーマニュアル」ＵＭ１０２０４、ＮＸＰ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒｓ、リビジョン６、２０１４年４月４日で記載されており、参照として本明細書に引用される。
【０００３】
この出願は、２０１５年５月１７日に提出された米国特許出願１４／７１４，２９８の一部継続（ＣＩＰ）であり、２０１４年７月２４日に提出された米国仮特許出願６２／０２８，３４５の利益を主張しています。これらの関連出願の開示は、参照により本明細書に組み込まれる。この出願は、「Ｓｅｃｕｒｅ  Ｓｙｓｔｅｍ  Ｂｏｏｔ  Ｍｏｎｉｔｏｒ」という名称の米国特許出願、代理人整理番号１０４１−２００４に関連し、偶数日に提出されました。これらの関連出願の開示は、参照により本明細書に組み込まれる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国仮特許出願１４／７１４２９８
【特許文献２】米国特許出願６２／０２８３４５
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の目的は、周辺デバイス間のトランザクションを保護するための方法およびシステムを提供することにある。
【課題を解決するための手段】
【０００６】
本発明の一実施形態に係る安全装置は、インターフェースと、プロセッサーと、を備え、前記インターフェースは、ホスト及び第２デバイスが結合されているバスに接続し、少なくとも前記第２デバイスはスレーブモードでバス上で動作し、前記ホストは、少なくとも前記安全装置を代表して、前記バス上でトランザクションを開始するバスマスタとしてバス上で動作し、前記プロセッサーは、前記安全装置のために、前記バスを介して前記第２デバイスにアクセスするトランザクションを開始するように前記ホストに要求し、少なくとも前記ホストが、前記バスを介して前記第２デバイスにアクセスして前記要求されたトランザクションを実行する期間内に、前記バス上の１つ以上の信号を監視し、前記監視された信号に基づいて、前記要求されたトランザクションの実行中にセキュリティ違反が発生したかどうかを識別することを特徴とする。
【０００７】
一実施形態では、前記プロセッサは、スレーブモードで前記バス上で動作するように構成されている。一実施形態では、前記安全装置は、前記バスとは異なる別のバスを介して前記ホストにさらに結合され、前記プロセッサは、前記別のバスを介して前記ホストに前記トランザクションを開始するように要求するように構成される。
【０００８】
一実施形態では、前記要求されたトランザクションは、（１）前記第２デバイスからのデータの読み取り、（２）前記第２デバイスへのデータの書き込み、及び（３）前記第２デバイスの第１アドレスと第２アドレス間のデータの転送、のうちのいずれかを含む。一実施形態では、前記要求されたトランザクションは予期されたトランザクション情報を指定し、前記プロセッサは、前記バス上で、前記要求されたトランザクションに対応する実際のトランザクション情報を監視するように構成され、前記予期されたトランザクション情報の少なくとも一部が前記実際のトランザクション情報と異なることを検出することにより、前記セキュリティ違反を識別する。一実施形態では、前記プロセッサは、オペコード素子、アドレス素子およびデータ素子を含むリストから選択された少なくとも１つの素子が、前記予期されたトランザクション情報と前記実際のトランザクション情報との間で異なることを検出するように構成される。
【０００９】
一実施形態では、前記プロセッサは、前記要求されたトランザクションの期間中または期間外に、所定のセキュリティポリシーが前記バス上で違反されたことを検出することにより、前記セキュリティ違反を識別するように構成されている。一実施形態では、前記要求されたトランザクションは、前記第２デバイスからデータを読み取ることを含み、前記プロセッサは、前記バスを介して前記ホストによって前記第のデバイスから読み取られたデータを前記バス上で監視（スヌープ）するように構成されている。一実施形態にでは、前記プロセッサは、前記ホストによる第１書き込み操作の実行中に前記バス上の１つまたは複数の信号の論理値を上書きすることにより、前記ホストに、前記第２デバイスへの前記第１書き込み操作を開始し、前記第１書き込み操作とは異なる第２書き込み操作を前記第２デバイスに適用するように要求するように構成されている。
【００１０】
いくつかの実施形態では、前記プロセッサは、前記ホストによる第１読み取り操作の実行中に前記バス上の１つまたは複数の信号の論理値を上書きすることにより、前記ホストに、前記第２デバイスへの前記第１読み取り操作を開始し、前記第１読み取り操作とは異なる第２読み取り操作を前記第２デバイスに適用するように要求するように構成されている。他の実施形態では、前記プロセッサは、前記バスを介して前記第２デバイスにアクセスするトランザクションを開始し、前記ホストと前記第２デバイスを接続する前記バスの信号を切断し、前記ホストに代わって前記バスを介して前記第２デバイスにアクセスするように、前記ホストに要求するように構成されている。他の実施形態では、前記プロセッサは、前記セキュリティ違反の識別に応答して、前記第２デバイスにアクセスする際に前記バス上に現れるデータの公開または変更を防止するように保護アクションを実行するように構成されている。
【００１１】
本発明の１つの実施形態に係る安全装置において、前記安全装置と前記第２デバイスの両方がコモンパッケージに実装され、前記コモンパッケージ内の前記バスを介して相互接続されている。
【００１２】
本発明の一実施形態に係る安全方法は、ホスト及び第２デバイスが結合されているバスに接続する安全装置において、少なくとも前記第２デバイスはスレーブモードでバス上で動作し、前記ホストは、少なくとも前記安全装置を代表して、前記バス上でトランザクションを開始するバスマスタとしてバス上で動作することと、前記安全装置は、前記安全装置のために、前記バスを介して前記第２デバイスにアクセスするトランザクションを開始するように前記ホストに要求することと、少なくとも前記ホストが、前記バスを介して前記第２デバイスにアクセスして前記要求されたトランザクションを実行する期間内に、前記バス上の１つ以上の信号を監視し、前記監視された信号に基づいて、前記要求されたトランザクションの実行中にセキュリティ違反が発生したかどうかを識別することと、を含むことを特徴とする。
【００１３】
本発明の一実施形態に係る安全システムは、ホストと、安全装置と、を備え、前記ホストは、バスに結合され、バスマスターとして動作するように構成され、スレーブデバイスと前記ホストによってトリガーされるバスアクセス操作を仲介することにより、前記バスに結合された前記スレーブデバイスにアクセスし、前記安全装置は、前記バスに接続され、前記バスにスレーブとして接続されている前記第２デバイスにアクセスするトランザクションを開始するように前記ホストに要求し、少なくとも前記ホストが前記要求されたトランザクションを実行する際に前記バスを介して前記第２デバイスにアクセスする期間内に、前記バス上の１つ以上の信号を監視し、前記監視された信号に基づいて、前記要求されたトランザクションの実行中にセキュリティ違反が発生したかどうかを識別することを特徴とする。
【００１４】
一実施形態では、前記安全装置は、スレーブモードで前記バス上で動作するように構成されている。別の実施形態では、前記安全装置は、前記バスとは異なる別のバスを介して前記ホストにさらに結合され、前記安全装置は、前記別のバスを介して前記ホストに前記トランザクションを開始するように要求するように構成される。
【００１５】
一部の実施形態では、前記要求されたトランザクションは、予期されたトランザクション情報を指定し、前記安全装置は、前記バス上で、前記要求されたトランザクションに対応する実際のトランザクション情報を監視し、前記予期されたトランザクション情報の少なくとも一部が前記実際のトランザクション情報と異なることを検出することにより、セキュリティ違反を識別するように構成されている。他の実施形態では、前記要求されたトランザクションは、前記第２デバイスからのデータの読み取りを含み、前記安全装置は、前記バスを介して前記ホストによって前記第２デバイスから読み取られたデータを前記バス上で監視するように構成される。さらに他の実施形態では、前記安全装置は、前記ホストによる第１書き込み操作の実行中に前記バス上の１つまたは複数の信号の論理値を上書きすることにより、前記ホストに、前記第２デバイスへの前記第１書き込み操作を開始し、前記第１書き込み操作とは異なる第２書き込み操作を前記第２デバイスに適用するように構成される。
【００１６】
一実施形態では、前記安全装置は、前記ホストに前記第２デバイスへの前記第１読み取り動作を開始するように要求し、前記ホストによる前記第１読み取り操作の実行中に前記バス上の１つまたは複数の信号の論理値をオーバーライドすることにより、前記第２デバイスに前記第１読み取り動作とは異なる第２読み取り操作を適用する。別の実施形態では、前記安全装置は、前記バスを介して前記第２デバイスにアクセスするトランザクションを開始するように前記ホストに要求し、前記ホストと前記第２デバイスを接続する前記バスの信号を切断し、前記ホストに代わって前記バスを介して前記第２デバイスにアクセスする。さらに別の実施形態では、前記安全装置は、前記セキュリティ違反の識別に応答して、前記第２デバイスにアクセスする際に前記バス上に現れるデータの公開または変更を防止する保護アクションを実行するように構成される。
【００１７】
さらに、本明細書に記載されている実施形態に従って、安全方法は、スレーブデバイスが接続されたバス上でバスマスターとして動作するホストを含む安全システムにおいて、スレーブデバイスとホストによってトリガーされたバスアクセス操作間のホストによる仲介する。ホストは、バスに接続された安全装置によって、スレーブとしてバスに接続された第２デバイスにアクセスするトランザクションを開始するように要求される。少なくともホストが要求されたトランザクションを実行する際にバスを介して第２デバイスにアクセスする期間内に、１つまたは複数の信号が安全装置によってバス上で監視される。監視された信号に基づいて、安全装置によって、要求されたトランザクションの実行中にセキュリティ違反が発生したかどうかが判断される。
【００１８】
本明細書で説明される実施形態によれば、安全装置を含む安全設備と、ホスト上で実行される専用デバイスドライバとがさらに提供される。安全装置は、ホストにセキュリティサービスを提供する。安全装置、ホスト、および安全装置の外部にある不揮発性メモリ（ＮＶＭ）デバイスは、共通バスに結合されている。専用デバイスドライバーは、安全装置とＮＶＭデバイスの間を仲介するように構成されている。安全装置は、ホスト上で実行されているアプリケーションプログラムからセキュリティコマンドを受信し、専用のデバイスドライバーを介してアプリケーションプログラムに対して透過的に、バスを介してＮＶＭデバイスにアクセスすることによってセキュリティコマンドを実行するように構成されている。
【図面の簡単な説明】
【００１９】
【図１】図１は、本明細書で説明される実施形態による、安全システムを概略的に示すブロック図である。
【図２】図２は、本明細書で説明される実施形態による、バス監視に基づいてマスター仲介トランザクションを保護する安全方法を概略的に示すフローチャートである。
【図３】図３は、本明細書で説明される実施形態による、安全な読み取りおよび書き込み操作方法を概略的に示すフローチャートである。
【図４】図４は、本明細書で説明される実施形態による、安全な読み取りおよび書き込み操作方法を概略的に示すフローチャートである。
【図５】図５は、本明細書で説明される実施形態による、バスからのマスターデバイスの切断をサポートする安全システムを概略的に示すブロック図である。
【図６】図６は、本明細書で説明される実施形態による、ホストをバスから切断することによって、スレーブデバイスへの安全なアクセスのための安全方法を概略的に示すブロック図である。
【発明を実施するための形態】
【００２０】
以下、本発明について、図に示す実施形態に基づいて説明する。
【００２１】
マスタースレーブ構成では、バスマスターとして動作するホストデバイスは通常、バスを介して複数のスレーブデバイスに接続される。バスマスターとしてのホストは、バス上でトランザクションを開始できるが、スレーブデバイスはホストに応答することによってのみバスにアクセスできる。ただし、一部の実際的なシナリオでは、１つのスレーブデバイスが別のスレーブデバイスとのトランザクションを開始および実行できることが望ましい。
【００２２】
本明細書で説明される実施形態は、バス監視を使用して、スレーブデバイス間のマスター仲介トランザクションを実行および保護するためのシステムおよび方法を提供する。バスを監視するデバイスは、追加の異なるバスを介してホストに接続され、その追加のバスを介してホストにトランザクションを要求することができる。
【００２３】
いくつかの実施形態では、ホストは、バスへのアクセスを必要とする可能性がある１つまたは複数のアプリケーション、およびスレーブデバイスに代わって、バス上のトランザクションを仲介するデバイスドライバを実行する。
ホストは、デバイスドライバーとバスにアクセスしようとする他のアプリケーションとの間で仲介を行う。
【００２４】
一部の実施形態では、第１デバイス（例えば、スレーブＴＰＭまたは他のセキュリティプロセッサ）は、第２デバイス（例えば、スレーブフラッシュメモリ）でトランザクションを実行する必要がある。この目的のために、第１デバイスは、ホストのデバイスドライバーに、たとえば割り込みまたはポーリング通知フラグ技術を使用して、バス上のトランザクションを開始して第２デバイスにアクセスするように要求する。第１デバイスは、バス上のホストに代わって実行されたトランザクションを監視し、たとえば、ホストが危険にさらされないように、トランザクションが正しく実行されるか監視する。
【００２５】
いくつかの実施形態では、第１デバイスは、上述のように要求されたトランザクションを検証するためだけでなく、例えばホストにアクセスする攻撃者によってバス上で（事前定義済みの）セキュリティポリシーが違反されていないかを検証するためにもバスを監視し得る。
【００２６】
第１デバイスは、少なくともホストが要求されたトランザクションを実行する際にバスを介して第２デバイスにアクセスする期間内に、バス上の１つまたは複数の信号を監視することができる。第１デバイスは、監視された信号に基づいて、要求されたトランザクションの実行中にセキュリティ違反が発生したかどうかを識別する。セキュリティ違反を検出すると、第１デバイスは、保護アクション、たとえば、第２デバイスへのアクセスなど、バス上に現れるデータの公開を防ぐアクションを実行する。一実施形態では、保護アクションの選択は、事前定義されたポリシーに基づくことができる。
【００２７】
第１デバイスは、ホストに、（１）第２デバイスからデータを読み取る、（２）第２デバイスにデータを書き込む、又は（３）第２デバイスの異なるアドレス間でデータを転送する。第２デバイスから読み取られた、または第２デバイスに書き込まれたデータは、暗号化および／または署名され得る。
【００２８】
第１デバイスは、要求されたトランザクションで予期されたトランザクション情報の少なくとも一部が、バス上で監視されている実際のトランザクション情報と異なることを検出することにより、セキュリティ違反を識別することができる。そのような不一致は、トランザクションのオペコード素子またはコマンドタイプの素子、アドレス素子および／またはデータ素子などの少なくとも１つのトランザクション素子で発生する可能性がある。いくつかの実施形態では、第１デバイスは、要求されたトランザクションの期間中または期間外に、バス上で事前定義されたセキュリティポリシーに違反した（たとえば、保護されたアドレスがアクセスされた）ことの検出に応答して、セキュリティ違反を識別し得る。
【００２９】
一実施形態では、要求されたトランザクションは、第２デバイスからデータを読み取ることを含み、第１デバイスはバスを監視して、バスを介してホストによって第２デバイスから読み取られたデータを監視する。別の実施形態では、第１デバイスは、ホストに、第２デバイスへのダミー書き込み（またはダミー読み取り）操作を開始するように要求する。次に、第１デバイスは、ホストによるダミー書き込み（またはダミー読み取り）操作の実行中にバス上の１つ以上の信号の論理値を上書きすることにより、別の書き込み（または読み取り）操作を第２デバイスに適用する。さらに他の実施形態では、ホストによる要求されたトランザクションの実行中に、第１デバイスは、ホストと第２デバイスの間を接続するバスの信号を切断し、ホストの代わりにバスを介して第２デバイスにアクセスする。
【００３０】
構成例では、安全システムは、スレーブ安全装置とスレーブＮＶＭデバイスを備えている。ホストにセキュリティサービスを提供するには、安全装置は、外部にあるＮＶＭデバイスにアクセスする必要がある。ホストは、安全装置とＮＶＭデバイスの間を仲介する専用のデバイスドライバーを実行する。安全装置は、ホスト上で実行されているアプリケーションプログラムからセキュリティコマンドを受信し、専用のデバイスドライバーを介してアプリケーションプログラムに対して透過的に、バスを介してＮＶＭデバイスにアクセスすることにより、セキュリティコマンドを実行する。
【００３１】
開示されている技術では、ホストはバスマスターとして動作し、バス上のトランザクションを仲介するデバイスドライバーを実行することにより、１つ以上のスレーブデバイスとバスを共有する。監視デバイスは、バスを監視してセキュリティ違反を検出する。監視デバイスは、バス上の信号を監視および制御するためにバスに結合され、スレーブデバイスとして、バス上でトランザクションを開始するようにホストに要求することができる。あるいは、監視デバイスは、バス上でトランザクションを開始するようにホストに要求するために、異なるバスを介してホストにさらに結合される。バスを監視することにより、監視デバイスは、バス上のトランザクションを監視し、バス上のトランザクションをホストから隠された所望のトランザクションで上書きまたは置換することもできる。
【００３２】
システムの説明
図１は、本明細書で説明される実施形態による、安全システム２０を概略的に示すブロック図である。この例では、安全システム２０は、バス３６を使用して周辺スレーブデバイス２８、３２に接続するマスターホストデバイス２４を備える。スレーブデバイス２８、３２は、それぞれスレーブ１およびスレーブ２と示される。この例では、バス３６は、シリアル周辺インターフェース（ＳＰＩ）バスを含む。他の実施形態では、バス３６は、他の任意の適切なバス、例えば、低ピン数バス（ＬＰＣ）、または内部集積回路（Ｉ２Ｃ）バスを含むことができる。Ｉ２Ｃバスは、たとえば、電気的消去可能読み取り専用メモリ（ＥＥＰＲＯＭ）デバイスへの接続に使用できる。ソリッドステートストレージデバイスへの他のバスインターフェースは、例えば、セキュアデジタル（ＳＤ）インターフェース、マルチメディアカード（ＭＭＣ）インターフェース、またはパラレルフラッシュインターフェースを含み得る。ホストデバイスは、簡潔にするために単に「ホスト」とも呼ばれる。
【００３３】
一部の実施形態では、スレーブ１は、バス３６を介したホストのスレーブデバイスであり、さらにバス３６のバス信号を監視および制御する。代替実施形態では、スレーブ１は、バス信号を監視および制御するためにバス３６に結合されるが、例えばＩ２Ｃバスなどの別のバス（図示せず）を介して、スレーブデバイスとしてホストに結合される。
【００３４】
安全システム２０のマスタースレーブ構成では、ホスト２４のみがバス３６を介して読み取りまたは書き込みトランザクションを開始できる。一方、各スレーブデバイスは、ホスト２４からの要求に応答してのみバス３６にアクセスすることができる。このマスタースレーブ構成では、スレーブ１とスレーブ２はバス３６を介して直接通信することはできないが、それらの通信はホストによって仲介される必要がある。そのような仲介は、スレーブ１がバス３６を介してスレーブである場合、およびスレーブ１が別のバスを介してホストに接続されている場合に必要である。
【００３５】
スレーブ１およびスレーブ２は、任意の適切なタイプのデバイスで構成できる。１つの構成では、スレーブ１は、トラステッドプラットフォームモジュール（ＴＰＭ）と呼ばれることもある安全装置を含むことができ、スレーブ２は、不揮発性メモリ（ＮＶＭ）を含むことができる。スレーブデバイス２８、３２の他の適切な構成も使用することができる。一般に、スレーブ１には、組み込みコントローラー（ＥＣ）などの適切なコントローラーが含まれる。例示的な実施形態では、スレーブ２は、例えば、読み取り専用メモリ（ＲＯＭ）、ワンタイムプログラマブル（ＯＴＰ）メモリ、ＥＥＰＲＯＭ、またはフラッシュメモリなどの任意の適切なタイプのＮＶＭを含むことができる。あるいは、スレーブ２は、ランダムアクセスメモリ（ＲＡＭ）デバイスなどの揮発性メモリを含むことができる。
【００３６】
なお、スレーブデバイスの１つがメモリデバイスを含むシステム構成は必須ではない。一部の実施形態では、スレーブ１およびスレーブ２は、バスを監視しながら、ホストを介して互いに情報を交換する必要があり得るコントローラを備える。
【００３７】
この例では、スレーブ１は、バス３６に接続するためのバスインターフェース４０、開示された技術を実行するように構成されたプロセッサ４４、およびプロセッサ４４によって実施される１つ以上のセキュリティポリシーを格納するように構成されたメモリ４８を備える。プロセッサ４４は、スレーブインターフェースロジック５２およびインターフェースモニターロジック（ＩＭＬ）５６を含む。スレーブインターフェースロジック５２は、スレーブ１とホスト２４との間の通信を処理する。ＩＭＬ５６は、ホスト２４がスレーブ１の代わりにスレーブ２にアクセスすると、バス信号を監視、制御、および選択的にオーバーライドする。一部の実施形態では、ＩＭＬ５６は、スレーブ１によってホストから要求されたトランザクションの正しい実行を検証するためにバスを監視する。一実施形態では、ＩＭＬ５６は、特定の要求されたトランザクションに関連せず、メモリ４８に格納され得る１つまたは複数の所定のセキュリティポリシーの起こり得る違反を検出するためにバスをさらに監視する。
【００３８】
安全システム２０では、スレーブ１は、バス３６上のトランザクションを監視し、ホスト２４またはバスマスター機能を備えた別のデバイスが許可なくスレーブ２にアクセスしようとする不正なトランザクションを防止することにより、たとえばＩＭＬ  ５６を使用してスレーブ２へのアクセスを保護する。いくつかの実施形態では、スレーブ１のＩＭＬ５６はバス３６を監視して、実際にホストによって実行されているスレーブ１によって要求されたトランザクションを傍受し、トランザクションが正しく実行されていることを確認する。バス上での違反の検出に応答して、例えば、ホストによる要求されたトランザクションの実行中に、ＩＭＬ５６は適切な保護アクションを適用することができる。
【００３９】
いくつかの実施形態では、保護アクションは、トランザクション中にバス３６にさらされる可能性のある望ましくない漏洩、または秘密情報の露出を防ぐために使用される。いくつかの実施形態では、保護アクションは、バス上のデータ破損を防止するか、またはスレーブ２に格納されたセットアップまたは構成情報を変更する許可されていない試みなど、スレーブ２に格納されたデータのデータ破損を防止する。
【００４０】
ホスト２４は、１つまたは複数のアプリケーション６４を実行するＣＰＵ６０、および専用デバイスドライバ６８を含む。いくつかの実施形態では、スレーブ１は、信頼できるコンピューティングおよび他のセキュリティポリシーを実装するために必要な機能を備えた専用デバイスドライバとともに、ホスト２４を提供する安全装置を備える。ＣＰＵ６０は、ＣＰＵが実行し、アプリケーション６４および専用デバイスドライバ６８などのバス３６へのアクセスを必要とする可能性がある様々なプログラムまたはプロセス間で仲介する。アプリケーション６４は、例えば、格納された情報へのシステムリソースの制御されたアクセスなどの安全なストレージサービスを提供するセキュリティアプリケーションを含み得る。
【００４１】
専用デバイスドライバ６８は、スレーブ１とスレーブ２との間の通信を仲介する。例えば、デバイスドライバ６８は、アプリケーション６４に対して透過的に、スレーブ２への間接アクセスをスレーブ１に提供する。内部タスクまたは計算を実行するとき、スレーブ１は、たとえば、スレーブ２からのデータの読み取りまたはスレーブ２へのデータの書き込みのために、スレーブ２へのアクセスを必要とする場合がある。スレーブ１は、ホスト２４で実行されているアプリケーション６４に関係なく、スレーブ２へのアクセスを必要とする場合がある。または、スレーブ１は、アプリケーション６４から発信されたコマンドを実行するためにスレーブ２にアクセスする必要がある。
【００４２】
スレーブ１は、デバイスドライバ６８から、様々な方法でスレーブ２にアクセスすることを要求することができる。一実施形態では、スレーブ１は、内部で、例えば、事前定義されたレジスタ内で要求を準備し、デバイスドライバにバス３６を介して要求を読み取るよう通知するための割り込み信号を生成する。別の実施形態では、デバイスドライバ（６８）は、スレーブ１内のレジスタをポーリングして、保留中の要求があるかどうかを識別する。さらに別の実施形態では、デバイスドライバ６８は、例えば、アプリケーション６４がコマンド（例えば、セキュリティコマンド）をスレーブデバイスに送信することに応答して、条件付きでスレーブ１のレジスタ値をチェックする。
【００４３】
デバイスドライバ６８がスレーブ１からスレーブ２にアクセスする要求を受け取ると、ＣＰＵはデバイスドライバ６８と他のアプリケーション（６４）との間で仲介し、スレーブ１に代わってバス３６を介してスレーブ２にアクセスする。たとえば、スレーブ２がＮＶＭまたはその他のメモリを含む場合、スレーブ１はデバイスドライバー６８にバス３６へのアクセスを要求し、（１）所定のＮＶＭアドレスからデータを読み取る、（２）所定のＮＶＭアドレスにデータを書き込む、（３）あるＮＶＭアドレスから別のＮＶＭアドレスにデータをコピーする。
【００４４】
バス監視を使用した安全方法
安全システム２０は、たとえばホスト２４を改ざんするなど、不正な攻撃者によって危険にさらされる可能性がある。攻撃者は、たとえば、スレーブ１によってホストから要求されたトランザクションを検出し、ホストに、要求されたトランザクションとは異なるトランザクションをスレーブ２に適用させることができる。バス３６を監視することにより、スレーブ１はバス上の違反イベントを検出し、それに応じて保護アクションを実行できる。
【００４５】
以下の実施形態を説明する際に、スレーブ２を用いてホスト２４によって実行されるトランザクションは、論理値のシーケンスとしてバス上に現れると想定される。所定のトランザクションに対応するシーケンスは、通常、アドレス部分とデータ部分、すなわち［アドレス、データ］を含む。論理値のシーケンスには、トランザクションのタイプを識別するオペコードも含まれる場合があり、その場合、シーケンスはバス上で［オペコード、アドレス、データ］として表示される。この例では、スレーブ１がオペコード部分をインターセプトするときに、アドレス部分、データ部分、またはその両方を変更（たとえば、論理値を上書き）できる。トランザクションのオペコード、アドレス、およびデータ部分は、ここではまとめて「トランザクション情報」とも呼ばれる。
【００４６】
図２は、本明細書で説明される実施形態による、バス監視に基づいてマスター仲介トランザクションを保護する方法を概略的に示すフローチャートである。この方法は、例えば、図１のスレーブデバイス２８のプロセッサ４４によって実行され得る。方法の説明において、非限定的な例として、スレーブデバイス２８（スレーブ１）は、安全装置を含み、スレーブデバイス３２（スレーブ２）は、バス３６がＳＰＩバスを含む場合、フラッシュメモリ、例えば、ＳＰＩフラッシュメモリを含む。
【００４７】
この方法は、（スレーブ１の）プロセッサ４４が、リセット保持ステップ１００でフラッシュメモリからブートすることから始まる。一実施形態では、プロセッサ４４は、典型的にはシステムブートプロセスの一部として、フラッシュメモリにアクセスしながらホスト２４をリセットに維持するための適切なインターフェースおよび回路（図示せず）を備える。一実施形態では、ブートプログラムをロードするために、プロセッサ４４は、フラッシュメモリからデータブロックをロードし、データブロックの真正性を検証し、認証されたデータブロックをメモリ４８にローカルに格納する。リセット時にホストを維持する上記の起動メカニズムは必須ではない。代替の実施形態では、他の適切なブート方法も使用することができる。
【００４８】
トランザクションを要求するステップ１０４で、プロセッサ４４は、ホスト２４のデバイスドライバ６８に、バス３６を介してフラッシュメモリにアクセスすることを含むトランザクションを開始するように要求する。要求されたトランザクションは、例えば、（１）所与のフラッシュアドレスからデータを読み取る、（２）所与のフラッシュアドレスにデータを書き込む、または（３）１つのフラッシュアドレスから別の異なるフラッシュアドレスにデータをコピーすることを含み得る。
【００４９】
監視ステップ１０８で、プロセッサ４４は、ＩＭＬ５６を使用してバス３６を監視し、トランザクションが意図したとおりに実行されることを確認するために、バス上の要求されたトランザクションを傍受する。たとえば、書き込みトランザクションの場合、トランザクションで指定されたデータが実際にトランザクションで指定されたアドレスに書き込まれていることを確認する。ＩＭＬは、チップセレクト（ＣＳ）信号、クロック信号、データやアドレス情報を運ぶバス信号などの１つ以上のバス信号を監視する。バス３６がＳＰＩバスを含む場合、ＩＭＬ５６は、マスターアウトスレーブイン（ＭＯＳＩ）信号、ＳＰＩバスのマスターインスレーブアウト（ＭＩＳＯ）信号、またはその両方を介してデータおよびアドレス情報を監視することができる。
【００５０】
ステップ１０８で、プロセッサ４４は、例えば、要求されたトランザクション内の情報またはプロセッサに知られている他の情報に基づいて、バス上の要求されたトランザクションを傍受することができる。トランザクションを要求する時間とデバイスドライバによって要求されたトランザクションが実際に実行される時間の間、ホストは、トランザクションプロセッサ４４が通常無視する、アプリケーション６４から発生したバス上の他のトランザクションを開始する場合があることに留意する必要がある。例示的な実施形態では、読み取り、書き込み、またはコピーのトランザクションの場合、プロセッサ４４は、要求されたトランザクションで指定されたアドレス情報を傍受する。書き込みトランザクションの場合、プロセッサは書き込まれるデータ（またはこのデータの一部）をインターセプトする。
【００５１】
さらにステップ１０８で、バス上の要求されたトランザクション（またはトランザクションの一部）の傍受に応答して、プロセッサは（ＩＭＬを使用して）バスを監視し、要求されたトランザクションが意図したとおりに実行されることを確認する。例えば、プロセッサは、要求されたトランザクションで指定されたアドレスまたはアドレス範囲で、ホストがバス３６を介してフラッシュメモリにアクセスすることを確認する。書き込みおよびコピートランザクションでは、プロセッサは、書き込みまたはコピーされるデータが、要求された書き込みまたはコピートランザクションで指定されたデータと一致することを確認する。プロセッサはさらに、要求されたトランザクション（またはおそらく他のトランザクションも）を実行する際に、メモリ４８で指定されたセキュリティポリシーに違反していないことを確認することができる。さらに、プロセッサ４４は、特定のトランザクション要求とは無関係に指定されたセキュリティポリシーに違反していないことを確認することができる。
【００５２】
違反チェックステップ１１２で、プロセッサは、違反がバス３６上で検出されたかどうかをチェックする。上記のように、違反は、（１）メモリ４８に保存されている事前定義されたポリシーへの違反、たとえば保護されたアドレスまたはアドレス範囲へのアクセス、または（２）少なくとも一部が  バス上で傍受されたトランザクション情報の数は、ステップ１０４の要求されたトランザクションにおける対応するトランザクション情報とは異なることが挙げられる。
【００５３】
ステップ１１２で違反が検出されなかった場合、プロセッサ４４はトランザクション完了ステップ１１６に進み、トランザクションを完了し、ステップ１０４にループバックして、ホストからの後続のトランザクションを要求する。プロセッサは、ホストが要求されたトランザクションの実行を完了するまで、バスを監視することによってトランザクションを完了することができる。代替的または追加的に、プロセッサは、ホストのデバイスドライバを介してトランザクションを完了する。たとえば、プロセッサは、デバイスドライバーがフラッシュメモリから読み取ったデータ、完了通知、またはその両方をデバイスドライバーから受信する。
【００５４】
ステップ１１２で違反を検出したことに応答して、プロセッサ４４は、保護ステップ１２０に進み、そこでプロセッサは、秘密情報の漏洩または露出を防止するための適切な保護アクションを適用する。保護アクションの例を以下に説明する。ステップ１２０に続いて、プロセッサは、ステップ１０４にループバックして、バス３６を介して、フラッシュメモリとの後続のトランザクションを開始するようにホストに要求することができる。
【００５５】
ステップ１２０で、プロセッサ４４は、様々な保護アクションを適用することができる。いくつかの実施形態では、保護アクションは、安全システム２０の１つ以上の要素をリセットすること、例えば、ホスト２４をリセットすることを含む。あるいは、またはさらに、プロセッサは、例えば、バス上の１つまたは複数の信号の論理値を変更することによって、またはホストをバスから切断することによって、バス３６を中断する。
【００５６】
バス信号を修正する方法は、例えば、米国特許出願公開第２０１８／０２３９７２７号に記載されており、その開示は参照により本明細書に組み込まれる。例えば、いくつかの実施形態では、スレーブ１のバスインターフェース４０は、ホスト２４に並行して、バス３６のバス信号の１つまたは複数を駆動する。スレーブ１は、ホストによって並行して駆動される論理値をオーバーライドする論理値を適用することにより、バスを中断させる可能性がある。バス信号の論理値のオーバーライドは、たとえば、ホストの対応するラインドライバーよりも強力なラインドライバーを使用するか、ホストが駆動する信号を減衰させるためにホストが駆動するバス信号に直列に抵抗を追加することで実現できる  。別の実施形態では、ホスト信号は、必要に応じてバス信号の論理値をマスクするスレーブ１を介してスレーブ２にルーティングされる。ホストをバスから切断する方法については、以下でさらに説明する。
【００５７】
バス監視を使用してメモリデバイスとのトランザクションを保護する方法の例
以下の例示的な実施形態は、スレーブ２がメモリデバイス、例えば、フラッシュメモリを含むシステム構成に言及する。
【００５８】
図３および図４は、本明細書で説明される実施形態による、安全な読み取りおよび書き込み操作の方法を概略的に示すフローチャートである。図３および図４の方法は、例えば、スレーブ１のプロセッサ４４によって実行される。また、図３および図４は、上記の図２の方法と組み合わせることができる。
【００５９】
図３の方法は、読み出しトランザクション要求ステップ１５０で始まり、プロセッサ４４がホストのデバイスドライバ６８に要求して、フラッシュメモリ（スレーブ２）の所定のアドレスからデータを読み取る読み出しトランザクションを開始する。監視ステップ１５４で、プロセッサは、バス３６を監視して（ＩＭＬ５６を使用して）、上述のように、デバイスドライバによって実行されている要求された読み取りトランザクションを識別する。
【００６０】
いくつかの実施形態では、読み取りトランザクションは、読み取りの開始アドレスを表す一連の論理値としてバス信号上に現れ、その後に、１つまたは複数のアドレスの読み取りでフラッシュメモリから取得した１つまたは複数のデータユニット（バイト単位など）を表す論理値が続く。例示的な実施形態では、プロセッサは、要求された読み取りトランザクションで指定された開始アドレスを検出することによって、バス上の要求された読み取りトランザクションを識別する。
【００６１】
バス上の読み出しトランザクションの識別に応答して、プロセッサは、監視ステップ１５８でバスを監視し続け、ホストによって並列に読み取られているデータを表すバス上の論理値をキャプチャする。プロセッサは、要求された読み取りトランザクションで指定されているように、１つ以上のデータ単位（バイトなど）をキャプチャする。
【００６２】
いくつかの実施形態では、フラッシュメモリから取り出されたデータは、暗号署名を使用して署名され、その場合、プロセッサは、署名を使用して読み取られたデータの完全性を検証することができる。いくつかの実施形態では、フラッシュメモリから取り出されたデータは暗号化され、その場合、プロセッサは読み取られたデータを解読することができる。一部の実施形態では、バス上にキャプチャされたデータに加えて、プロセッサは、デバイスドライバを介して、読み取られたデータのバージョンを受信する。これらの実施形態では、プロセッサは、バス上の直接のデータキャプチャとデバイスドライバを介して間接的に読み取られたデータとを比較することにより、ホストが改ざんされていないことを検証することができる。ステップ１５８に続いて、図３の方法は終了する。
【００６３】
図３の方法では、スレーブ１は、ホストによってフラッシュメモリに適用される読み取りトランザクション中にバス信号を監視する。図３の方法は、ホストによってフラッシュメモリに適用された書き込みトランザクション中にバス信号をスヌーピングするために、同様の方法で使用できる。一部の実施形態では、バスをスヌープすることにより、スレーブ１は、要求されたトランザクションが意図したとおりに実行されることを確認する。
【００６４】
図４の方法では、プロセッサ４４は、ホストに書き込まれたアドレス、データ、またはその両方を公開することなく、フラッシュメモリ内の所望のアドレスに所望のデータを書き込む所望の書き込み動作を実行する。
【００６５】
図４の方法は、ダミー書き込みトランザクション要求ステップ２００で始まり、プロセッサ４４は、バス３６を介してフラッシュメモリ（スレーブ２）へのダミー書き込みトランザクションを開始するようデバイスドライバ６８に要求する。ダミー書き込みトランザクションは、フラッシュメモリ内のアドレスを指定します。これは、定義済みのダミーアドレスまたは書き込み用の実際のアドレスの場合がある。ダミー書き込みトランザクションは、おそらくオペコードと、指定されたアドレスに書き込まれるダミーデータを指定する。ダミーの書き込みトランザクションは、バス上で［オペコード、ダミーアドレス、ダミーデータ］として表示される。この例では、ダミーアドレスはオペコードに従い、ダミーデータは時間の経過とともにダミーデータに従う。
【００６６】
監視ステップ２０４で、プロセッサは（ＩＭＬ５６を使用して）バス３６を監視して、デバイスドライバによって実行されている要求されたダミー書き込みトランザクションを識別する。プロセッサは、例えば、要求されたトランザクションで指定されたオペコードおよび／またはダミーアドレスをバス上で検出することによって、バス上のダミー書き込みトランザクションを識別することができる。
【００６７】
オーバーライドするステップ２０８で、プロセッサは、ダミー書き込みトランザクション中にバス上の論理値をオーバーライドし、論理値は所望の書き込み動作を表す。このために、プロセッサ４４は、ダミー書き込みトランザクションのデータ、アドレス、およびオペコード部分の１つまたは複数を、所望の書き込み動作の対応する値で上書きする。その結果、フラッシュメモリの目的のアドレスに目的のデータが書き込まれる。ホストは通常、このバスオーバーライド操作を認識せず、目的の書き込みトランザクションのデータ、アドレス、およびオペコード値は公開されないままである。
【００６８】
いくつかの実施形態では、上記のようにバス信号をオーバーライドするとき、プロセッサ４４は、バスインターフェースによって駆動されるバス信号をさらに監視する。バス信号を監視することにより、プロセッサ４４は、予想通り、意図されたデータが意図されたアドレスに書き込まれたことを確認することができる。
【００６９】
図４の方法では、スレーブ１は、ダミーの書き込みトランザクションを、フラッシュメモリ内の異なるデータとアドレスの望ましい書き込みトランザクションで上書きする。図４の方法は、例えば、フラッシュメモリ内の所望のアドレスからの読取りなど、所望の読取りトランザクションでダミー読取りトランザクションをオーバーライドするために、同様の方法で使用することができる。
【００７０】
ホストをバスから切断してスレーブデバイスに安全にアクセスする方法
図５は、本明細書で説明される実施形態による、バスからのマスターデバイスの切断をサポートする安全システム２５０を概略的に示すブロック図である。安全システム２５０は、図１の安全システム２０を実装する際に使用することができる。
【００７１】
安全システム２５０では、ホスト２４は、ＳＰＩバス２５４を介してスレーブデバイス２８（スレーブ１）および３２（スレーブ２）に接続されたバスマスターを含む。ＳＰＩバスは、クロック（ＣＬＫ）ラインと、マスターアウトスレーブイン（ＭＯＳＩ）およびマスターインスレーブアウト（ＭＩＳＯ）と呼ばれる２つのデータラインで構成される。ＣＬＫ、ＭＯＳＩ、およびＭＩＳＯラインは、すべてのデバイス（この例では、ホスト２４、およびスレーブデバイス２８および３２）に共通である。さらに、各スレーブデバイスは、専用のチップセレクト（ＣＳ）ラインを使用して選択可能である。この例では、ホスト２４は、ＣＳ＃１で示されるＣＳラインを使用してスレーブ１を選択し、ＣＳ＃２で示されるＣＳラインを使用してスレーブ２を選択する。
【００７２】
マスターであるホスト２４は、すべてのＣＳラインに接続されている。一方、各スレーブデバイスは、それ自体のＣＳラインにのみ接続される。通常、ホスト２４は、それぞれのＣＳラインを使用して所望のスレーブデバイスを選択することによりトランザクションを開始し、その後、ＣＬＫ、ＭＯＳＩおよびＭＩＳＯラインを使用してデバイスと通信する。ＭＯＳＩラインはホストからスレーブデバイスへの送信に使用され、ＭＩＳＯラインはスレーブデバイスからホストへの送信に使用される。
【００７３】
スレーブ１は、従来のＳＰＩスレーブとは異なり、スレーブとして定義されているが、スレーブ２のＣＳ＃２ラインなどの他のデバイスのＣＳラインを駆動できる。図５に示すように、スレーブ１のバスインターフェース４０は、ホスト２４と並行してＣＳ＃２ラインを駆動するように構成される。システムが、それぞれのＣＳラインを有する複数のスレーブデバイス（例えば、スレーブ２など）を含む場合、スレーブ１は、ホストデバイス２４と並行して任意のＣＳラインを駆動するように構成され得る。
【００７４】
図５では、ＭＯＳＩラインとＭＩＳＯラインがスレーブ１に直接接続されている。一方、ＭＯＳＩおよびＭＩＳＯラインは、スレーブ１を介してスレーブ２に間接的に接続される。この構成では、スレーブ１は、ホストのＭＯＳＩおよびＭＩＳＯラインをスレーブ２に接続するか、スレーブ２から切断するかを制御する。スレーブ１は、ＭＩＳＯセレクタ２６０およびＭＯＳＩセレクタ２６２を含む。ＭＩＳＯセレクターとＭＯＳＩセレクターのそれぞれは、２つの入力ポートと１つの出力ポートで構成される。いつでも、プロセッサ４４は、ＳＥＬ制御入力を使用してセレクタを制御し、その出力ポートとその入力ポートの１つとの間を内部的に接続する。ＭＩＳＯおよびＭＯＳＩセレクタは、例えば、マルチプレクサ要素を使用するなど、任意の適切な回路要素を使用して実装することができる。
【００７５】
ホスト２４がスレーブ２からデータを読み取るとき、スレーブ１はＭＩＳＯセレクタを制御してＭＩＳＯラインをホストとスレーブ２の間に接続します。この場合、スレーブ１はバス上のデータをホストと並列に読み取ることができる。または、スレーブ１はホストＭＩＳＯラインをスレーブ２から切断し、読み取られたデータがホストに公開されないようにする。スレーブ１のプロセッサ４４は、スレーブ２から取得したデータの代わりに、他のデータをホストＭＩＳＯラインにホストに向かって注入する可能性がある。
【００７６】
ホスト２４がスレーブ２にデータを書き込むと、スレーブ１はＭＯＳＩセレクターを制御してホストＭＯＳＩラインをスレーブ２に接続し、ホストがスレーブデバイスにデータを書き込むことができるようにする。あるいは、スレーブ１は、ＭＯＳＩセレクタを使用して、ホストＭＯＳＩラインをスレーブ２から切断し、プロセッサ４４は、他のアドレスおよび／またはデータをスレーブ２に注入して、異なる書き込みトランザクションを実行することができる。
【００７７】
いくつかの実施形態では、ＭＩＳＯセレクタがホストＭＩＳＯラインをスレーブ２に接続すると、スレーブ１は、ホスト読み取りトランザクションをインターセプトし、読み取りトランザクションのデータ／アドレスをオーバーライドすることができる。同様に、ＭＯＳＩセレクターがホストＭＯＳＩラインをスレーブ２に接続すると、スレーブ１がホストの書き込みトランザクションをインターセプトし、書き込みトランザクションのデータ／アドレスを上書きする場合がある。
【００７８】
本明細書で説明される実施形態による、ホストをバスから切断することによって、スレーブデバイスへの安全なアクセスのための方法を概略的に示すフローチャートである。この方法は、図５の保護されたシステム２５０内のスレーブデバイス２８（スレーブ１）のプロセッサ４４によって実行され得る。この例では、スレーブ１は安全装置を含み、スレーブ２はフラッシュメモリを含み、バス２５４はＳＰＩバスを含む。図６の方法は、上記の図２の方法と組み合わせることができる。
【００７９】
この方法は、トランザクション要求ステップ３００で始まり、プロセッサ４４がホスト２４のデバイスドライバ６８に要求して、フラッシュメモリへのダミー書き込みトランザクションまたはダミー読み取りトランザクションを開始する。ダミーの読み取りまたは書き込みトランザクションは、オペコード（オプション）、フラッシュメモリ内の実アドレスまたはダミーアドレス、および書き込みトランザクションの場合は実データまたはダミーデータを指定する。
【００８０】
監視ステップ３０４で、プロセッサ４４は、バス３６を監視して（例えば、ＩＭＬ５６を使用して）、デバイスドライバによって実行されている要求されたダミー書き込みまたはダミー読み取りトランザクションを識別する。プロセッサは、例えば、要求されたトランザクションで指定されたフラッシュメモリアドレスおよび／またはオペコードを検出することにより、バス上のダミー書き込みまたはダミー読み取りトランザクションを識別することができる。
【００８１】
切断ステップ３０８で、要求されたトランザクションの識別に応じて（たとえば、トランザクションのオペコードに基づいて）、プロセッサはホストをＳＰＩバスから切断する。書き込みトランザクションの場合、プロセッサはＭＯＳＩセレクタ２６２を使用してホストをスレーブ２から切断しますが、読み取りトランザクションの場合、プロセッサはＭＩＳＯセレクタ２６０を使用してホストを切断する。あるいは、プロセッサは、両方のセレクタを同時に使用して、ＭＩＳＯラインとＭＯＳＩラインの両方を切断することもできる。いくつかの実施形態では、プロセッサは、バス上の要求されたトランザクションを識別することとは無関係に、ホストをバスから切断する。
【００８２】
ステップ３０４で検出されたトランザクションが書き込みまたは読み取りトランザクションであることに基づいて、プロセッサは、それぞれ書き込みステップ３１２または読み取りステップ３１６に進む。
【００８３】
ステップ３１２で、プロセッサは、ＳＰＩバスを介して、ＭＯＳＩラインを介してホストによって配信されたデータおよびアドレスに関係なく、意図されたデータを意図されたアドレスに書き込む。この手法では、プロセッサはダミーの書き込みトランザクションを、ホストから隠されたままの望ましい書き込みトランザクションで上書きする。一部の実施形態では、フラッシュメモリへの書き込みに加えて（例えば、並行して）、プロセッサは、起こり得る違反を検出するためにホストによって駆動されるＭＯＳＩラインを監視することができる。一部の実施形態では、フラッシュメモリへの書き込みに加えて（例えば、並行して）、プロセッサは、起こり得る違反を検出するために、プロセッサによって駆動されるＭＯＳＩラインを監視し得る。
【００８４】
ステップ３１６で、プロセッサは、ＳＰＩバスを介して、フラッシュメモリの意図されたアドレスからデータを読み取る。ホストのＭＩＳＯラインがフラッシュメモリから切断されているため、プロセッサが読み取った実際のデータは、ホストから隠されたままになる。いくつかの実施形態では、フラッシュメモリからの読み取りに加えて（例えば、並行して）、プロセッサは、ダミーデータなどの他のデータをホストに送信する。
【００８５】
ステップ３１２および３１６のそれぞれに続いて、方法は終了する。
【００８６】
図１に示される安全システム２０およびホストデバイス２４、スレーブデバイス２８およびスレーブデバイス３２の構成、ならびに図５の安全システム２５０は構成例であり、純粋に概念を明確にするために示されている。あるいは、他の適切な安全システム、ホストデバイス、およびスレーブデバイスの構成も使用できる。本発明の原理を理解するのに必要ではない要素、例えば、様々なインターフェース、制御回路、アドレス指定回路、タイミングおよびシーケンシング回路、デバッグ回路は、明確にするために図から省略されている。
【００８７】
図１および図５に示される例示的なシステム構成では、ＣＰＵ６０、スレーブデバイス２８およびスレーブデバイス３２は、別個の集積回路（ＩＣ）として実装される。しかしながら、代替の実施形態では、ＣＰＵ、スレーブデバイス２８、およびスレーブデバイス３２のうちの少なくとも２つは、単一のマルチチップパッケージ（ＭＣＰ）またはシステムオンチップ（ＳｏＣ）内の別個の半導体ダイに統合されたり、内部バスで相互接続できる。例示的な実施形態では、スレーブデバイス２８（例えば、コントローラ）およびスレーブデバイス３２（例えば、フラッシュメモリ）は、マルチチップモジュール（ＭＣＭ）に実装される。スレーブデバイス２８とスレーブデバイス３２が同じパッケージ内（たとえば、ＭＣＭまたはＭＣＰデバイス内）に実装されている実施形態では、両方のデバイスが共通のパッケージ内の同じＳＰＩインターフェースライン（たとえば、ＭＩＳＯ、ＭＯＳＩおよびＣＬＫ）を共有する。そのような実施形態は、期待される機能に違反しようとして２つのスレーブデバイス間の信号を攻撃または操作するため、攻撃者が複合デバイスを開くことを必要とするので、改善されたセキュリティを提供できる。
【００８８】
スレーブデバイス２８の異なる素子は、特定用途向け集積回路（ＡＳＩＣ）またはフィールドプログラマブルゲートアレイ（ＦＰＧＡ）などの任意の適切なハードウェアを使用して実装され得る。いくつかの実施形態では、スレーブデバイス２８のいくつかの素子は、ソフトウェアを使用して、またはハードウェア要素とソフトウェア要素の組み合わせを使用して実装することができる。例えば、本実施形態では、スレーブインターフェースロジック５２およびＩＭＬ５６は、専用ハードウェアモジュールとして実現することができる。メモリ４８は、例えば、ＲＡＭなどの任意の適切なタイプのメモリおよび記憶技術を含むことができる。
【００８９】
通常、ホスト２４のＣＰＵ６０およびスレーブデバイス２８のプロセッサ４４のそれぞれは、本明細書で説明する機能を実行するようにソフトウェアでプログラムされた汎用プロセッサを含む。ソフトウェアは、例えば、ネットワークを介して電子形式で関連するプロセッサにダウンロードすることができ、あるいは、代替的または追加的に、磁気、光学、または電子メモリなどの非一時的な有形媒体に提供および／または格納することができる。
【００９０】
暗号化コプロセッサを含む安全システム
ホスト２４がバス３６を介してバスマスターとして、ホスト２４の暗号化コプロセッサとして機能するスレーブデバイス２８（スレーブ１）、またはホストと暗号化コプロセッサの両方の外部にある不揮発性メモリ（ＮＶＭ）デバイスを含むスレーブデバイス３２（スレーブ２）に接続する、図１のシステム２０などの安全システムの構成例について考える。暗号化コプロセッサは、本明細書では安全装置とも呼ばれる。
【００９１】
ホストは、安全装置の助けを借りてセキュリティサービスを提供するセキュリティアプリケーション６４を実行する。セキュリティアプリケーションは、セキュリティコマンドを安全装置に送信し、安全装置からそれぞれのコマンド応答を受信する。セキュリティアプリケーションを提供する場合、ＮＶＭデバイスにアクセスするために安全装置が必要になることがある。
【００９２】
ホストは、セキュリティアプリケーションに対して透過的に、安全装置と外部ＮＶＭデバイスの間を仲介する専用デバイスドライバ６８を実行する。デバイスドライバーにより、安全装置はデバイスドライバーを介して間接的に外部ＮＶＭにアクセスできる。ホストからセキュリティコマンドを受信すると、安全装置はセキュリティコマンドを実行します。セキュリティコマンドは、バスを介してＮＶＭデバイスへのアクセスを必要とする場合があり、専用のデバイスドライバーを介してアプリケーションプログラムに透過的に実行される。
【００９３】
一部の実施形態では、例えば、セキュリティアプリケーションによって要求されたセキュリティコマンドを実行する際に、安全装置は、バスを介して外部ＮＶＭにアクセスするトランザクションを開始するようにホストに要求する。安全装置は、要求されたトランザクションを実行する際にホストがバスを介してＮＶＭデバイスにアクセスする期間内に、バス上の１つ以上の信号を監視し、監視された信号に基づいて、要求されたトランザクションの実行中にセキュリティ違反が発生したかどうかを識別する。
【００９４】
以上のように、暗号化コプロセッサで構成された安全システムは、バス監視技術を使用して、安全システム２０および２５０について上記で説明した任意の実施形態を適用できる。
【００９５】
上記の実施形態は例として与えられたものであり、他の適切な実施形態を使用することもできる。例えば、上述の実施形態は主にＳＰＩバスに言及しているが、これらの実施形態はＩ２Ｃバスにも同様に適用可能である。さらに代替的に、開示された実施形態はシリアルバスに限定されず、パラレルバスにも同様に適用可能である。いくつかの実施形態では、スレーブ１は、スレーブ２などの他のスレーブデバイスとは異なるバスを介して（おそらくスレーブである必要はないが）ホストに接続される。そのような実施形態では、スレーブ１は、ホストがスレーブ２などの他のスレーブデバイスに接続されるバスにも接続され、例えば、上述の方法およびシステムを使用してバスの監視および保護を可能にする。
【００９６】
上記のいくつかの実施形態では、スレーブ１は、バス上のオペコード、アドレス、またはデータ素子を識別することによってトランザクションを検出する。代替として、そのような素子の一部のみを検出することで十分かもしれない。たとえば、スレーブ１は、アドレス範囲を指定する最上位部分など、アドレス要素の一部のみを検出することにより、トランザクションを検出できる。
【００９７】
本明細書で説明する実施形態は、ＳＰＩバスがシングルモードで動作する実施形態に主に言及しているが、開示された実施形態は、ダブルまたはクワッドモードで動作するＳＰＩバスに同様に適用可能である。
【００９８】
本明細書で説明する実施形態は、主にデバイス間を接続するためのＳＰＩおよびＩ２Ｃバスを扱うが、本明細書で説明する安全方法および安全システムは、たとえば拡張シリアル周辺インターフェースバス（ｅＳＰＩ）などの他の適切なタイプの周辺バスでも使用できる。
【００９９】
上記の実施形態では、スレーブ２は主にフラッシュまたはＮＶＭデバイスと呼ばれるが、本明細書で説明する方法およびシステムは、スレーブ２が揮発性メモリまたはシステム内の他のデバイスなどの他の任意の適切な周辺デバイスであり得る他の用途でも使用することができる。例えば、スレーブ２は、任意の適切なコントローラまたは監視デバイスを含み得る。
【０１００】
上記の実施形態は例として引用されており、特許請求の範囲は、上記で特に示され、説明されたものに限定されないことが理解されよう。むしろ、範囲は、上述の様々な特徴の組み合わせおよび部分的組み合わせの両方、ならびに前述の説明を読んだときに当業者が思いつくであろう、先行技術では開示されていないその変形および修正を含む。参照により本特許出願に組み込まれる文書は、本明細書で明示的または黙示的になされた定義と矛盾する方法で用語がこれらの組み込まれた文書で定義される場合を除き、本出願の不可欠な部分と見なされるべきである。  本明細書の定義を考慮する必要がある。
【符号の説明】
【０１０１】
２０…安全システム
２４…ホストデバイス
２５０…安全システム
２８…スレーブデバイス
３２…スレーブデバイス
３６…バス
４０…バスインターフェース
４４…プロセッサー
４８…メモリー
５２…スレーブインターフェースロジック
５６…インターフェースモニターロジック（ＩＭＬ）
６０…ＣＰＵ
６４…アプリケーション
６８…デバイスドライバ
【図１】
2020177661.tif 000003
【図２】
2020177661.tif 000004
【図３】
2020177661.tif 000005
【図４】
2020177661.tif 000006
【図５】
2020177661.tif 000007
【図６】
2020177661.tif 000008
【外国語明細書】
2020177661000001.pdf
2020177661000002.pdf
2020177661000003.pdf
2020177661000004.pdf