IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ 新唐科技股▲ふん▼有限公司の特許一覧

特許7033383安全装置、安全方法、安全システム、及び安全設備
<>
  • 特許-安全装置、安全方法、安全システム、及び安全設備 図1
  • 特許-安全装置、安全方法、安全システム、及び安全設備 図2
  • 特許-安全装置、安全方法、安全システム、及び安全設備 図3
  • 特許-安全装置、安全方法、安全システム、及び安全設備 図4
  • 特許-安全装置、安全方法、安全システム、及び安全設備 図5
  • 特許-安全装置、安全方法、安全システム、及び安全設備 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-03-02
(45)【発行日】2022-03-10
(54)【発明の名称】安全装置、安全方法、安全システム、及び安全設備
(51)【国際特許分類】
   G06F 21/55 20130101AFI20220303BHJP
   G06F 13/38 20060101ALI20220303BHJP
【FI】
G06F21/55
G06F13/38 320Z
【請求項の数】 45
【外国語出願】
(21)【出願番号】P 2020069117
(22)【出願日】2020-04-07
(65)【公開番号】P2020177661
(43)【公開日】2020-10-29
【審査請求日】2020-04-07
(31)【優先権主張番号】16/377,211
(32)【優先日】2019-04-07
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】508197206
【氏名又は名称】新唐科技股▲ふん▼有限公司
(74)【代理人】
【識別番号】100102923
【弁理士】
【氏名又は名称】加藤 雄二
(72)【発明者】
【氏名】ジヴ ハーシュマン
(72)【発明者】
【氏名】ダン モラヴ
(72)【発明者】
【氏名】アブラハム フィッシュマン
【審査官】青木 重徳
(56)【参考文献】
【文献】特開2017-033537(JP,A)
【文献】中国特許出願公開第102819699(CN,A)
【文献】特開2005-317025(JP,A)
【文献】特開2006-338615(JP,A)
【文献】特開平05-314013(JP,A)
【文献】米国特許出願公開第2006/0107032(US,A1)
【文献】特開2019-023896(JP,A)
【文献】特開2014-220623(JP,A)
【文献】特表2016-533608(JP,A)
【文献】特開2018-007130(JP,A)
【文献】特開平10-143436(JP,A)
【文献】特開2005-182525(JP,A)
【文献】米国特許出願公開第2008/0250252(US,A1)
【文献】特開2017-208075(JP,A)
【文献】特開2016-21623(JP,A)
【文献】畑 正人 ほか,CANにおける不正送信阻止方式の実装と評価,電子情報通信学会技術研究報告,日本,一般社団法人電子情報通信学会,2012年12月31日,Vol.112 No.342,第15-22頁
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/55
G06F 13/38
(57)【特許請求の範囲】
【請求項1】
インターフェースと、プロセッサーと、を備え、
前記インターフェースは、
ホスト及び第2デバイスが結合されているバスに接続し、少なくとも前記第2デバイスはスレーブモードでバス上で動作し、前記ホストは、少なくとも安全装置を代表して、前記バス上でトランザクションを開始するバスマスタとしてバス上で動作し、
前記プロセッサーは、
前記安全装置のために、前記バスを介して前記第2デバイスにアクセスするトランザクションを開始するように前記ホストに要求し、
少なくとも前記ホストが、前記バスを介して前記第2デバイスにアクセスして前記要求されたトランザクションを実行する期間内に、前記バス上の1つ以上の信号を監視し、
前記監視された信号に基づいて、前記要求されたトランザクションの実行中にセキュリティ違反が発生したかどうかを識別することを特徴とする安全装置。
【請求項2】
前記プロセッサは、スレーブモードで前記バス上で動作するように構成される請求項1に記載の安全装置。
【請求項3】
前記安全装置は、前記バスとは異なる別のバスを介して前記ホストにさらに結合され、前記プロセッサは、前記別のバスを介して前記ホストに前記トランザクションを開始するように要求するように構成される請求項1に記載の安全装置。
【請求項4】
前記要求されたトランザクションは、(1)前記第2デバイスからのデータの読み取り、(2)前記第2デバイスへのデータの書き込み、及び(3)前記第2デバイスの第1アドレスと第2アドレス間のデータの転送、のうちのいずれかを含む請求項1に記載の安全装置。
【請求項5】
前記要求されたトランザクションは、予期されたトランザクション情報を指定し、前記プロセッサは、前記バス上で、前記要求されたトランザクションに対応する実際のトランザクション情報を監視するように構成され、前記予期されたトランザクション情報の少なくとも一部が前記実際のトランザクション情報と異なることを検出することにより、前記セキュリティ違反を識別する請求項1に記載の安全装置。
【請求項6】
前記プロセッサは、オペコード素子、アドレス素子およびデータ素子を含むリストから選択された少なくとも1つの素子が、前記予期されたトランザクション情報と前記実際のトランザクション情報との間で異なることを検出するように構成される請求項5に記載の安全装置。
【請求項7】
前記プロセッサは、前記要求されたトランザクションの期間中または期間外に、所定のセキュリティポリシーが前記バス上で違反されたことを検出することにより、前記セキュリティ違反を識別するように構成される請求項1に記載の安全装置。
【請求項8】
前記要求されたトランザクションは、前記第2デバイスからデータを読み取ることを含み、前記プロセッサは、前記バスを介して前記ホストによって前記第デバイスから読み取られたデータを前記バス上で監視するように構成される請求項1に記載の安全装置。
【請求項9】
前記プロセッサは、前記ホストによる第1書き込み操作の実行中に前記バス上の1つまたは複数の信号の論理値を上書きすることにより、前記ホストに、前記第2デバイスへの前記第1書き込み操作を開始し、前記第1書き込み操作とは異なる第2書き込み操作を前記第2デバイスに適用するように要求するように構成される請求項1に記載の安全装置。
【請求項10】
前記プロセッサは、前記ホストによる第1読み取り操作の実行中に前記バス上の1つまたは複数の信号の論理値を上書きすることにより、前記ホストに、前記第2デバイスへの前記第1読み取り操作を開始し、前記第1読み取り操作とは異なる第2読み取り操作を前記第2デバイスに適用するように要求するように構成される請求項1に記載の安全装置。
【請求項11】
前記プロセッサは、前記バスを介して前記第2デバイスにアクセスするトランザクションを開始し、前記ホストと前記第2デバイスを接続する前記バスの信号を切断し、前記ホストに代わって前記バスを介して前記第2デバイスにアクセスするように、前記ホストに要求するように構成される請求項1に記載の安全装置。
【請求項12】
前記プロセッサは、前記セキュリティ違反の識別に応答して、前記第2デバイスにアクセスする際に前記バス上に現れるデータの公開または変更を防止するように保護アクションを実行するように構成される請求項1に記載の安全装置。
【請求項13】
前記安全装置と前記第2デバイスの両方がコモンパッケージに実装され、前記コモンパッケージ内の前記バスを介して相互接続される請求項1に記載の安全装置。
【請求項14】
ホスト及び第2デバイスが結合されているバスに接続する安全装置において、少なくとも前記第2デバイスはスレーブモードでバス上で動作し、前記ホストは、少なくとも前記安全装置を代表して、前記バス上でトランザクションを開始するバスマスタとしてバス上で動作することと、
前記安全装置は、前記安全装置のために、前記バスを介して前記第2デバイスにアクセスするトランザクションを開始するように前記ホストに要求することと、
少なくとも前記ホストが、前記バスを介して前記第2デバイスにアクセスして前記要求されたトランザクションを実行する期間内に、前記バス上の1つ以上の信号を監視することと、
前記監視された信号に基づいて、前記要求されたトランザクションの実行中にセキュリティ違反が発生したかどうかを識別することと、
を含むことを特徴とする安全方法。
【請求項15】
前記安全装置は、スレーブモードで前記バス上で動作するように構成される請求項14に記載の安全方法。
【請求項16】
前記安全装置は、前記バスとは異なる別のバスを介して前記ホストにさらに結合され、前記安全装置は、前記別のバスを介して前記ホストに前記トランザクションを開始するように要求するように構成される請求項14に記載の安全方法。
【請求項17】
前記要求されたトランザクションは、(1)前記第2デバイスからのデータの読み取り、(2)前記第2デバイスへのデータの書き込み、及び(3)前記第2デバイスの第1アドレスと第2アドレス間のデータの転送、のうちのいずれかを含む請求項14に記載の安全方法。
【請求項18】
前記要求されたトランザクションは、予期されたトランザクション情報を指定し、
前記信号を監視することは、前記バス上で、前記要求されたトランザクションに対応する実際のトランザクション情報を監視することを含み、
前記セキュリティ違反を識別することは、前記予期されたトランザクション情報の少なくとも一部が前記実際のトランザクション情報と異なることを検出することを含む
請求項14に記載の安全方法。
【請求項19】
前記セキュリティ違反を識別することは、オペコード素子、アドレス素子およびデータ素子を含むリストから選択された少なくとも1つの素子が、予期されたトランザクション情報と実際のトランザクション情報との間で異なることを検出する請求項14に記載の安全方法。
【請求項20】
前記セキュリティ違反を識別することは、前記要求されたトランザクションの期間中または期間外に、所定のセキュリティポリシーが前記バス上で違反されたことを検出することを含む請求項14に記載の安全方法。
【請求項21】
前記要求されたトランザクションは、前記第2デバイスからデータを読み取ることと、前記バスを介して前記ホストによって前記第のデバイスから読み取られたデータを前記バス上で監視することと、を含む請求項14に記載の安全方法。
【請求項22】
前記ホストによる第1書き込み操作の実行中に前記バス上の1つまたは複数の信号の論理値を上書きすることにより、前記ホストに、前記第2デバイスへの前記第1書き込み操作の開始を要求し、前記第1書き込み操作とは異なる第2書き込み操作を前記第2デバイスに適用するように要求することを含む請求項14に記載の安全方法。
【請求項23】
前記ホストによる第1読み取り操作の実行中に前記バス上の1つまたは複数の信号の論理値を上書きすることにより、前記ホストに、前記第2デバイスへの前記第1読み取り操作の開始を要求し、前記第1読み取り操作とは異なる第2読み取り操作を前記第2デバイスに適用するように要求することを含む請求項14に記載の安全方法。
【請求項24】
前記バスを介して前記第2デバイスにアクセスするトランザクションを開始し、前記ホストと前記第2デバイスを接続する前記バスの信号を切断し、前記ホストに代わって前記バスを介して前記第2デバイスにアクセスするように、前記ホストに要求することを含む請求項14に記載の安全方法。
【請求項25】
前記セキュリティ違反の識別に応答して、前記第2デバイスにアクセスする際に前記バス上に現れるデータの公開または変更を防止するように保護アクションを実行する請求項14に記載の安全方法。
【請求項26】
前記安全装置と前記第2デバイスの両方がコモンパッケージに実装され、前記コモンパッケージ内の前記バスを介して相互接続される請求項14に記載の安全方法。
【請求項27】
ホストと、安全装置と、を備え、
前記ホストは、
バスに結合され、バスマスとして動作するように構成され、スレーブデバイスと前記ホストによってトリガーされるバスアクセス操作を仲介することにより、前記バスに結合された前記スレーブデバイスにアクセスし、
前記安全装置は、
前記バスに接続され、前記バスにスレーブとして接続されている第2デバイスにアクセスするトランザクションを開始するように前記ホストに要求し、
少なくとも前記ホストが前記要求されたトランザクションを実行する際に前記バスを介して前記第2デバイスにアクセスする期間内に、前記バス上の1つ以上の信号を監視し、
前記監視された信号に基づいて、前記要求されたトランザクションの実行中にセキュリティ違反が発生したかどうかを識別することを特徴とする安全システム。
【請求項28】
前記安全装置は、スレーブモードで前記バス上で動作するように構成される請求項27に記載の安全システム。
【請求項29】
前記安全装置は、前記バスとは異なる別のバスを介して前記ホストにさらに結合され、前記安全装置は、前記別のバスを介して前記ホストに前記トランザクションを開始するように要求するように構成される請求項27に記載の安全システム。
【請求項30】
前記要求されたトランザクションは、予期されたトランザクション情報を指定し、前記安全装置は、前記バス上で、前記要求されたトランザクションに対応する実際のトランザクション情報を監視するように構成され、前記予期されたトランザクション情報の少なくとも一部が前記実際のトランザクション情報と異なることを検出することにより、前記セキュリティ違反を識別する請求項27に記載の安全システム。
【請求項31】
前記要求されたトランザクションは、前記第2デバイスからデータを読み取ることを含み、前記安全装置は、前記バスを介して前記ホストによって前記第デバイスから読み取られたデータを前記バス上で監視するように構成される請求項27に記載の安全システム。
【請求項32】
前記安全装置は、前記ホストによる第1書き込み操作の実行中に前記バス上の1つまたは複数の信号の論理値を上書きすることにより、前記ホストに、前記第2デバイスへの前記第1書き込み操作を開始し、前記第1書き込み操作とは異なる第2書き込み操作を前記第2デバイスに適用するように要求するように構成される請求項27に記載の安全システム。
【請求項33】
前記安全装置は、前記ホストによる第1読み取り操作の実行中に前記バス上の1つまたは複数の信号の論理値を上書きすることにより、前記ホストに、前記第2デバイスへの前記第1読み取り操作を開始し、前記第1読み取り操作とは異なる第2読み取り操作を前記第2デバイスに適用するように要求するように構成される請求項27に記載の安全システム。
【請求項34】
前記安全装置は、前記バスを介して前記第2デバイスにアクセスするトランザクションを開始し、前記ホストと前記第2デバイスを接続する前記バスの信号を切断し、前記ホストに代わって前記バスを介して前記第2デバイスにアクセスするように、前記ホストに要求するように構成される請求項27に記載の安全システム。
【請求項35】
前記安全装置は、前記セキュリティ違反の識別に応答して、前記第2デバイスにアクセスする際に前記バス上に現れるデータの公開または変更を防止するように保護アクションを実行するように構成される請求項27に記載の安全システム。
【請求項36】
スレーブデバイスが接続されたバス上でバスマスターとして動作するホストを含む安全システムンにおいて、前記スレーブデバイスと前記ホストによってトリガーされたバスアクセス操作間で前記ホストによって仲介することと、
前記バスに結合された安全装置によって、前記バスに結合された第2装置にスレーブとしてアクセスするトランザクションを開始するように前記ホストに要求することと、
前記安全装置によって、少なくとも前記ホストが前記バスを介して第2デバイスにアクセスし、前記要求されたトランザクションを実行している期間内に、前記バス上の1つまたは複数の信号を監視することと、
前記監視された信号に基づいて、前記安全装置によって、前記要求されたトランザクションの実行中にセキュリティ違反が発生したかどうかを識別することと、
を含む安全方法。
【請求項37】
前記安全装置は、スレーブモードで前記バス上で動作するように構成される請求項36に記載の安全方法。
【請求項38】
前記安全装置は、前記バスとは異なる別のバスを介して前記ホストにさらに結合され、前記安全装置は、前記別のバスを介して前記ホストに前記トランザクションを開始するように要求するように構成される請求項36に記載の安全方法。
【請求項39】
前記要求されたトランザクションは、予期されたトランザクション情報を指定し、
前記信号を監視することは、前記バス上で、前記要求されたトランザクションに対応する実際のトランザクション情報を監視することを含み、
前記セキュリティ違反を識別することは、前記予期されたトランザクション情報の少なくとも一部が前記実際のトランザクション情報と異なることを検出することを含む請求項36に記載の安全方法。
【請求項40】
前記要求されたトランザクションは、前記第2デバイスからデータを読み取ることと、前記バスを介して前記ホストによって前記第のデバイスから読み取られたデータを前記バス上で監視することと、を含む請求項36に記載の安全方法。
【請求項41】
前記ホストによる第1書き込み操作の実行中に前記バス上の1つまたは複数の信号の論理値を上書きすることにより、前記ホストに、前記第2デバイスへの前記第1書き込み操作の開始を要求し、前記第1書き込み操作とは異なる第2書き込み操作を前記第2デバイスに適用するように要求することを含む請求項36に記載の安全方法。
【請求項42】
前記ホストによる第1読み取り操作の実行中に前記バス上の1つまたは複数の信号の論理値を上書きすることにより、前記ホストに、前記第2デバイスへの前記第1読み取り操作の開始を要求し、前記第1読み取り操作とは異なる第2読み取り操作を前記第2デバイスに適用するように要求することを含む請求項36に記載の安全方法。
【請求項43】
前記バスを介して前記第2デバイスにアクセスするトランザクションを開始し、前記ホストと前記第2デバイスを接続する前記バスの信号を切断し、前記ホストに代わって前記バスを介して前記第2デバイスにアクセスするように、前記ホストに要求することを含む請求項36に記載の安全方法。
【請求項44】
前記セキュリティ違反の識別に応答して、前記第2デバイスにアクセスする際に前記バス上に現れるデータの公開または変更を防止するように保護アクションを実行する請求項36に記載の安全方法。
【請求項45】
ホストにセキュリティサービスを提供する安全装置と、
ホストで実行されるデバイスドライバーと、を備え、
前記安全装置、前記ホスト、および前記安全装置の外部にある不揮発性メモリデバイスは、共通バスに結合され、
前記デバイスドライバーは、前記安全装置と前記不揮発性メモリデバイスを仲介するように構成され、
前記安全装置は、前記ホスト上で実行されているアプリケーションプログラムからセキュリティコマンドを受信し、前記バスを介して前記不揮発性メモリデバイスにアクセスすることによって、前記デバイスドライバーを介して前記アプリケーションプログラムに透過的にセキュリティコマンドを実行することを特徴とする安全設備。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、電子システムセキュリティーに関わり、特に、特に、周辺デバイス間のトランザクションを保護するための方法およびシステムに関する。
【背景技術】
【0002】
従来、電子システムは、ホストデバイスと周辺デバイス間の通信にさまざまなタイプのバスインターフェイスを使用する。バスインターフェイスの例として、Inter-Integrated-Circuit (I2C)バスやSerial Peripheral Interface(SPI)バスが挙げられる。I2Cバスは、たとえば、「I2Cバスの仕様およびユーザーマニュアル」UM10204、NXP Semiconductors、リビジョン6、2014年4月4日で記載されており、参照として本明細書に引用される。
【0003】
この出願は、2015年5月17日に提出された米国特許出願14/714,298の一部継続(CIP)であり、2014年7月24日に提出された米国仮特許出願62/028,345の利益を主張しています。これらの関連出願の開示は、参照により本明細書に組み込まれる。この出願は、「Secure System Boot Monitor」という名称の米国特許出願、代理人整理番号1041-2004に関連し、偶数日に提出されました。これらの関連出願の開示は、参照により本明細書に組み込まれる。
【先行技術文献】
【特許文献】
【0004】
【文献】米国仮特許出願14/714298
【文献】米国特許出願62/028345
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明の目的は、周辺デバイス間のトランザクションを保護するための方法およびシステムを提供することにある。
【課題を解決するための手段】
【0006】
本発明の一実施形態に係る安全装置は、インターフェースと、プロセッサーと、を備え、前記インターフェースは、ホスト及び第2デバイスが結合されているバスに接続し、少なくとも前記第2デバイスはスレーブモードでバス上で動作し、前記ホストは、少なくとも前記安全装置を代表して、前記バス上でトランザクションを開始するバスマスタとしてバス上で動作し、前記プロセッサーは、前記安全装置のために、前記バスを介して前記第2デバイスにアクセスするトランザクションを開始するように前記ホストに要求し、少なくとも前記ホストが、前記バスを介して前記第2デバイスにアクセスして前記要求されたトランザクションを実行する期間内に、前記バス上の1つ以上の信号を監視し、前記監視された信号に基づいて、前記要求されたトランザクションの実行中にセキュリティ違反が発生したかどうかを識別することを特徴とする。
【0007】
一実施形態では、前記プロセッサは、スレーブモードで前記バス上で動作するように構成されている。一実施形態では、前記安全装置は、前記バスとは異なる別のバスを介して前記ホストにさらに結合され、前記プロセッサは、前記別のバスを介して前記ホストに前記トランザクションを開始するように要求するように構成される。
【0008】
一実施形態では、前記要求されたトランザクションは、(1)前記第2デバイスからのデータの読み取り、(2)前記第2デバイスへのデータの書き込み、及び(3)前記第2デバイスの第1アドレスと第2アドレス間のデータの転送、のうちのいずれかを含む。一実施形態では、前記要求されたトランザクションは予期されたトランザクション情報を指定し、前記プロセッサは、前記バス上で、前記要求されたトランザクションに対応する実際のトランザクション情報を監視するように構成され、前記予期されたトランザクション情報の少なくとも一部が前記実際のトランザクション情報と異なることを検出することにより、前記セキュリティ違反を識別する。一実施形態では、前記プロセッサは、オペコード素子、アドレス素子およびデータ素子を含むリストから選択された少なくとも1つの素子が、前記予期されたトランザクション情報と前記実際のトランザクション情報との間で異なることを検出するように構成される。
【0009】
一実施形態では、前記プロセッサは、前記要求されたトランザクションの期間中または期間外に、所定のセキュリティポリシーが前記バス上で違反されたことを検出することにより、前記セキュリティ違反を識別するように構成されている。一実施形態では、前記要求されたトランザクションは、前記第2デバイスからデータを読み取ることを含み、前記プロセッサは、前記バスを介して前記ホストによって前記第のデバイスから読み取られたデータを前記バス上で監視(スヌープ)するように構成されている。一実施形態にでは、前記プロセッサは、前記ホストによる第1書き込み操作の実行中に前記バス上の1つまたは複数の信号の論理値を上書きすることにより、前記ホストに、前記第2デバイスへの前記第1書き込み操作を開始し、前記第1書き込み操作とは異なる第2書き込み操作を前記第2デバイスに適用するように要求するように構成されている。
【0010】
いくつかの実施形態では、前記プロセッサは、前記ホストによる第1読み取り操作の実行中に前記バス上の1つまたは複数の信号の論理値を上書きすることにより、前記ホストに、前記第2デバイスへの前記第1読み取り操作を開始し、前記第1読み取り操作とは異なる第2読み取り操作を前記第2デバイスに適用するように要求するように構成されている。他の実施形態では、前記プロセッサは、前記バスを介して前記第2デバイスにアクセスするトランザクションを開始し、前記ホストと前記第2デバイスを接続する前記バスの信号を切断し、前記ホストに代わって前記バスを介して前記第2デバイスにアクセスするように、前記ホストに要求するように構成されている。他の実施形態では、前記プロセッサは、前記セキュリティ違反の識別に応答して、前記第2デバイスにアクセスする際に前記バス上に現れるデータの公開または変更を防止するように保護アクションを実行するように構成されている。
【0011】
本発明の1つの実施形態に係る安全装置において、前記安全装置と前記第2デバイスの両方がコモンパッケージに実装され、前記コモンパッケージ内の前記バスを介して相互接続されている。
【0012】
本発明の一実施形態に係る安全方法は、ホスト及び第2デバイスが結合されているバスに接続する安全装置において、少なくとも前記第2デバイスはスレーブモードでバス上で動作し、前記ホストは、少なくとも前記安全装置を代表して、前記バス上でトランザクションを開始するバスマスタとしてバス上で動作することと、前記安全装置は、前記安全装置のために、前記バスを介して前記第2デバイスにアクセスするトランザクションを開始するように前記ホストに要求することと、少なくとも前記ホストが、前記バスを介して前記第2デバイスにアクセスして前記要求されたトランザクションを実行する期間内に、前記バス上の1つ以上の信号を監視し、前記監視された信号に基づいて、前記要求されたトランザクションの実行中にセキュリティ違反が発生したかどうかを識別することと、を含むことを特徴とする。
【0013】
本発明の一実施形態に係る安全システムは、ホストと、安全装置と、を備え、前記ホストは、バスに結合され、バスマスターとして動作するように構成され、スレーブデバイスと前記ホストによってトリガーされるバスアクセス操作を仲介することにより、前記バスに結合された前記スレーブデバイスにアクセスし、前記安全装置は、前記バスに接続され、前記バスにスレーブとして接続されている前記第2デバイスにアクセスするトランザクションを開始するように前記ホストに要求し、少なくとも前記ホストが前記要求されたトランザクションを実行する際に前記バスを介して前記第2デバイスにアクセスする期間内に、前記バス上の1つ以上の信号を監視し、前記監視された信号に基づいて、前記要求されたトランザクションの実行中にセキュリティ違反が発生したかどうかを識別することを特徴とする。
【0014】
一実施形態では、前記安全装置は、スレーブモードで前記バス上で動作するように構成されている。別の実施形態では、前記安全装置は、前記バスとは異なる別のバスを介して前記ホストにさらに結合され、前記安全装置は、前記別のバスを介して前記ホストに前記トランザクションを開始するように要求するように構成される。
【0015】
一部の実施形態では、前記要求されたトランザクションは、予期されたトランザクション情報を指定し、前記安全装置は、前記バス上で、前記要求されたトランザクションに対応する実際のトランザクション情報を監視し、前記予期されたトランザクション情報の少なくとも一部が前記実際のトランザクション情報と異なることを検出することにより、セキュリティ違反を識別するように構成されている。他の実施形態では、前記要求されたトランザクションは、前記第2デバイスからのデータの読み取りを含み、前記安全装置は、前記バスを介して前記ホストによって前記第2デバイスから読み取られたデータを前記バス上で監視するように構成される。さらに他の実施形態では、前記安全装置は、前記ホストによる第1書き込み操作の実行中に前記バス上の1つまたは複数の信号の論理値を上書きすることにより、前記ホストに、前記第2デバイスへの前記第1書き込み操作を開始し、前記第1書き込み操作とは異なる第2書き込み操作を前記第2デバイスに適用するように構成される。
【0016】
一実施形態では、前記安全装置は、前記ホストに前記第2デバイスへの前記第1読み取り動作を開始するように要求し、前記ホストによる前記第1読み取り操作の実行中に前記バス上の1つまたは複数の信号の論理値をオーバーライドすることにより、前記第2デバイスに前記第1読み取り動作とは異なる第2読み取り操作を適用する。別の実施形態では、前記安全装置は、前記バスを介して前記第2デバイスにアクセスするトランザクションを開始するように前記ホストに要求し、前記ホストと前記第2デバイスを接続する前記バスの信号を切断し、前記ホストに代わって前記バスを介して前記第2デバイスにアクセスする。さらに別の実施形態では、前記安全装置は、前記セキュリティ違反の識別に応答して、前記第2デバイスにアクセスする際に前記バス上に現れるデータの公開または変更を防止する保護アクションを実行するように構成される。
【0017】
さらに、本明細書に記載されている実施形態に従って、安全方法は、スレーブデバイスが接続されたバス上でバスマスターとして動作するホストを含む安全システムにおいて、スレーブデバイスとホストによってトリガーされたバスアクセス操作間のホストによる仲介する。ホストは、バスに接続された安全装置によって、スレーブとしてバスに接続された第2デバイスにアクセスするトランザクションを開始するように要求される。少なくともホストが要求されたトランザクションを実行する際にバスを介して第2デバイスにアクセスする期間内に、1つまたは複数の信号が安全装置によってバス上で監視される。監視された信号に基づいて、安全装置によって、要求されたトランザクションの実行中にセキュリティ違反が発生したかどうかが判断される。
【0018】
本明細書で説明される実施形態によれば、安全装置を含む安全設備と、ホスト上で実行される専用デバイスドライバとがさらに提供される。安全装置は、ホストにセキュリティサービスを提供する。安全装置、ホスト、および安全装置の外部にある不揮発性メモリ(NVM)デバイスは、共通バスに結合されている。専用デバイスドライバーは、安全装置とNVMデバイスの間を仲介するように構成されている。安全装置は、ホスト上で実行されているアプリケーションプログラムからセキュリティコマンドを受信し、専用のデバイスドライバーを介してアプリケーションプログラムに対して透過的に、バスを介してNVMデバイスにアクセスすることによってセキュリティコマンドを実行するように構成されている。
【図面の簡単な説明】
【0019】
図1図1は、本明細書で説明される実施形態による、安全システムを概略的に示すブロック図である。
図2図2は、本明細書で説明される実施形態による、バス監視に基づいてマスター仲介トランザクションを保護する安全方法を概略的に示すフローチャートである。
図3図3は、本明細書で説明される実施形態による、安全な読み取りおよび書き込み操作方法を概略的に示すフローチャートである。
図4図4は、本明細書で説明される実施形態による、安全な読み取りおよび書き込み操作方法を概略的に示すフローチャートである。
図5図5は、本明細書で説明される実施形態による、バスからのマスターデバイスの切断をサポートする安全システムを概略的に示すブロック図である。
図6図6は、本明細書で説明される実施形態による、ホストをバスから切断することによって、スレーブデバイスへの安全なアクセスのための安全方法を概略的に示すブロック図である。
【発明を実施するための形態】
【0020】
以下、本発明について、図に示す実施形態に基づいて説明する。
【0021】
マスタースレーブ構成では、バスマスターとして動作するホストデバイスは通常、バスを介して複数のスレーブデバイスに接続される。バスマスターとしてのホストは、バス上でトランザクションを開始できるが、スレーブデバイスはホストに応答することによってのみバスにアクセスできる。ただし、一部の実際的なシナリオでは、1つのスレーブデバイスが別のスレーブデバイスとのトランザクションを開始および実行できることが望ましい。
【0022】
本明細書で説明される実施形態は、バス監視を使用して、スレーブデバイス間のマスター仲介トランザクションを実行および保護するためのシステムおよび方法を提供する。バスを監視するデバイスは、追加の異なるバスを介してホストに接続され、その追加のバスを介してホストにトランザクションを要求することができる。
【0023】
いくつかの実施形態では、ホストは、バスへのアクセスを必要とする可能性がある1つまたは複数のアプリケーション、およびスレーブデバイスに代わって、バス上のトランザクションを仲介するデバイスドライバを実行する。

ホストは、デバイスドライバーとバスにアクセスしようとする他のアプリケーションとの間で仲介を行う。
【0024】
一部の実施形態では、第1デバイス(例えば、スレーブTPMまたは他のセキュリティプロセッサ)は、第2デバイス(例えば、スレーブフラッシュメモリ)でトランザクションを実行する必要がある。この目的のために、第1デバイスは、ホストのデバイスドライバーに、たとえば割り込みまたはポーリング通知フラグ技術を使用して、バス上のトランザクションを開始して第2デバイスにアクセスするように要求する。第1デバイスは、バス上のホストに代わって実行されたトランザクションを監視し、たとえば、ホストが危険にさらされないように、トランザクションが正しく実行されるか監視する。
【0025】
いくつかの実施形態では、第1デバイスは、上述のように要求されたトランザクションを検証するためだけでなく、例えばホストにアクセスする攻撃者によってバス上で(事前定義済みの)セキュリティポリシーが違反されていないかを検証するためにもバスを監視し得る。
【0026】
第1デバイスは、少なくともホストが要求されたトランザクションを実行する際にバスを介して第2デバイスにアクセスする期間内に、バス上の1つまたは複数の信号を監視することができる。第1デバイスは、監視された信号に基づいて、要求されたトランザクションの実行中にセキュリティ違反が発生したかどうかを識別する。セキュリティ違反を検出すると、第1デバイスは、保護アクション、たとえば、第2デバイスへのアクセスなど、バス上に現れるデータの公開を防ぐアクションを実行する。一実施形態では、保護アクションの選択は、事前定義されたポリシーに基づくことができる。
【0027】
第1デバイスは、ホストに、(1)第2デバイスからデータを読み取る、(2)第2デバイスにデータを書き込む、又は(3)第2デバイスの異なるアドレス間でデータを転送する。第2デバイスから読み取られた、または第2デバイスに書き込まれたデータは、暗号化および/または署名され得る。
【0028】
第1デバイスは、要求されたトランザクションで予期されたトランザクション情報の少なくとも一部が、バス上で監視されている実際のトランザクション情報と異なることを検出することにより、セキュリティ違反を識別することができる。そのような不一致は、トランザクションのオペコード素子またはコマンドタイプの素子、アドレス素子および/またはデータ素子などの少なくとも1つのトランザクション素子で発生する可能性がある。いくつかの実施形態では、第1デバイスは、要求されたトランザクションの期間中または期間外に、バス上で事前定義されたセキュリティポリシーに違反した(たとえば、保護されたアドレスがアクセスされた)ことの検出に応答して、セキュリティ違反を識別し得る。
【0029】
一実施形態では、要求されたトランザクションは、第2デバイスからデータを読み取ることを含み、第1デバイスはバスを監視して、バスを介してホストによって第2デバイスから読み取られたデータを監視する。別の実施形態では、第1デバイスは、ホストに、第2デバイスへのダミー書き込み(またはダミー読み取り)操作を開始するように要求する。次に、第1デバイスは、ホストによるダミー書き込み(またはダミー読み取り)操作の実行中にバス上の1つ以上の信号の論理値を上書きすることにより、別の書き込み(または読み取り)操作を第2デバイスに適用する。さらに他の実施形態では、ホストによる要求されたトランザクションの実行中に、第1デバイスは、ホストと第2デバイスの間を接続するバスの信号を切断し、ホストの代わりにバスを介して第2デバイスにアクセスする。
【0030】
構成例では、安全システムは、スレーブ安全装置とスレーブNVMデバイスを備えている。ホストにセキュリティサービスを提供するには、安全装置は、外部にあるNVMデバイスにアクセスする必要がある。ホストは、安全装置とNVMデバイスの間を仲介する専用のデバイスドライバーを実行する。安全装置は、ホスト上で実行されているアプリケーションプログラムからセキュリティコマンドを受信し、専用のデバイスドライバーを介してアプリケーションプログラムに対して透過的に、バスを介してNVMデバイスにアクセスすることにより、セキュリティコマンドを実行する。
【0031】
開示されている技術では、ホストはバスマスターとして動作し、バス上のトランザクションを仲介するデバイスドライバーを実行することにより、1つ以上のスレーブデバイスとバスを共有する。監視デバイスは、バスを監視してセキュリティ違反を検出する。監視デバイスは、バス上の信号を監視および制御するためにバスに結合され、スレーブデバイスとして、バス上でトランザクションを開始するようにホストに要求することができる。あるいは、監視デバイスは、バス上でトランザクションを開始するようにホストに要求するために、異なるバスを介してホストにさらに結合される。バスを監視することにより、監視デバイスは、バス上のトランザクションを監視し、バス上のトランザクションをホストから隠された所望のトランザクションで上書きまたは置換することもできる。
【0032】
システムの説明
図1は、本明細書で説明される実施形態による、安全システム20を概略的に示すブロック図である。この例では、安全システム20は、バス36を使用して周辺スレーブデバイス28、32に接続するマスターホストデバイス24を備える。スレーブデバイス28、32は、それぞれスレーブ1およびスレーブ2と示される。この例では、バス36は、シリアル周辺インターフェース(SPI)バスを含む。他の実施形態では、バス36は、他の任意の適切なバス、例えば、低ピン数バス(LPC)、または内部集積回路(I2C)バスを含むことができる。I2Cバスは、たとえば、電気的消去可能読み取り専用メモリ(EEPROM)デバイスへの接続に使用できる。ソリッドステートストレージデバイスへの他のバスインターフェースは、例えば、セキュアデジタル(SD)インターフェース、マルチメディアカード(MMC)インターフェース、またはパラレルフラッシュインターフェースを含み得る。ホストデバイスは、簡潔にするために単に「ホスト」とも呼ばれる。
【0033】
一部の実施形態では、スレーブ1は、バス36を介したホストのスレーブデバイスであり、さらにバス36のバス信号を監視および制御する。代替実施形態では、スレーブ1は、バス信号を監視および制御するためにバス36に結合されるが、例えばI2Cバスなどの別のバス(図示せず)を介して、スレーブデバイスとしてホストに結合される。
【0034】
安全システム20のマスタースレーブ構成では、ホスト24のみがバス36を介して読み取りまたは書き込みトランザクションを開始できる。一方、各スレーブデバイスは、ホスト24からの要求に応答してのみバス36にアクセスすることができる。このマスタースレーブ構成では、スレーブ1とスレーブ2はバス36を介して直接通信することはできないが、それらの通信はホストによって仲介される必要がある。そのような仲介は、スレーブ1がバス36を介してスレーブである場合、およびスレーブ1が別のバスを介してホストに接続されている場合に必要である。
【0035】
スレーブ1およびスレーブ2は、任意の適切なタイプのデバイスで構成できる。1つの構成では、スレーブ1は、トラステッドプラットフォームモジュール(TPM)と呼ばれることもある安全装置を含むことができ、スレーブ2は、不揮発性メモリ(NVM)を含むことができる。スレーブデバイス28、32の他の適切な構成も使用することができる。一般に、スレーブ1には、組み込みコントローラー(EC)などの適切なコントローラーが含まれる。例示的な実施形態では、スレーブ2は、例えば、読み取り専用メモリ(ROM)、ワンタイムプログラマブル(OTP)メモリ、EEPROM、またはフラッシュメモリなどの任意の適切なタイプのNVMを含むことができる。あるいは、スレーブ2は、ランダムアクセスメモリ(RAM)デバイスなどの揮発性メモリを含むことができる。
【0036】
なお、スレーブデバイスの1つがメモリデバイスを含むシステム構成は必須ではない。一部の実施形態では、スレーブ1およびスレーブ2は、バスを監視しながら、ホストを介して互いに情報を交換する必要があり得るコントローラを備える。
【0037】
この例では、スレーブ1は、バス36に接続するためのバスインターフェース40、開示された技術を実行するように構成されたプロセッサ44、およびプロセッサ44によって実施される1つ以上のセキュリティポリシーを格納するように構成されたメモリ48を備える。プロセッサ44は、スレーブインターフェースロジック52およびインターフェースモニターロジック(IML)56を含む。スレーブインターフェースロジック52は、スレーブ1とホスト24との間の通信を処理する。IML56は、ホスト24がスレーブ1の代わりにスレーブ2にアクセスすると、バス信号を監視、制御、および選択的にオーバーライドする。一部の実施形態では、IML56は、スレーブ1によってホストから要求されたトランザクションの正しい実行を検証するためにバスを監視する。一実施形態では、IML56は、特定の要求されたトランザクションに関連せず、メモリ48に格納され得る1つまたは複数の所定のセキュリティポリシーの起こり得る違反を検出するためにバスをさらに監視する。
【0038】
安全システム20では、スレーブ1は、バス36上のトランザクションを監視し、ホスト24またはバスマスター機能を備えた別のデバイスが許可なくスレーブ2にアクセスしようとする不正なトランザクションを防止することにより、たとえばIML 56を使用してスレーブ2へのアクセスを保護する。いくつかの実施形態では、スレーブ1のIML56はバス36を監視して、実際にホストによって実行されているスレーブ1によって要求されたトランザクションを傍受し、トランザクションが正しく実行されていることを確認する。バス上での違反の検出に応答して、例えば、ホストによる要求されたトランザクションの実行中に、IML56は適切な保護アクションを適用することができる。
【0039】
いくつかの実施形態では、保護アクションは、トランザクション中にバス36にさらされる可能性のある望ましくない漏洩、または秘密情報の露出を防ぐために使用される。いくつかの実施形態では、保護アクションは、バス上のデータ破損を防止するか、またはスレーブ2に格納されたセットアップまたは構成情報を変更する許可されていない試みなど、スレーブ2に格納されたデータのデータ破損を防止する。
【0040】
ホスト24は、1つまたは複数のアプリケーション64を実行するCPU60、および専用デバイスドライバ68を含む。いくつかの実施形態では、スレーブ1は、信頼できるコンピューティングおよび他のセキュリティポリシーを実装するために必要な機能を備えた専用デバイスドライバとともに、ホスト24を提供する安全装置を備える。CPU60は、CPUが実行し、アプリケーション64および専用デバイスドライバ68などのバス36へのアクセスを必要とする可能性がある様々なプログラムまたはプロセス間で仲介する。アプリケーション64は、例えば、格納された情報へのシステムリソースの制御されたアクセスなどの安全なストレージサービスを提供するセキュリティアプリケーションを含み得る。
【0041】
専用デバイスドライバ68は、スレーブ1とスレーブ2との間の通信を仲介する。例えば、デバイスドライバ68は、アプリケーション64に対して透過的に、スレーブ2への間接アクセスをスレーブ1に提供する。内部タスクまたは計算を実行するとき、スレーブ1は、たとえば、スレーブ2からのデータの読み取りまたはスレーブ2へのデータの書き込みのために、スレーブ2へのアクセスを必要とする場合がある。スレーブ1は、ホスト24で実行されているアプリケーション64に関係なく、スレーブ2へのアクセスを必要とする場合がある。または、スレーブ1は、アプリケーション64から発信されたコマンドを実行するためにスレーブ2にアクセスする必要がある。
【0042】
スレーブ1は、デバイスドライバ68から、様々な方法でスレーブ2にアクセスすることを要求することができる。一実施形態では、スレーブ1は、内部で、例えば、事前定義されたレジスタ内で要求を準備し、デバイスドライバにバス36を介して要求を読み取るよう通知するための割り込み信号を生成する。別の実施形態では、デバイスドライバ(68)は、スレーブ1内のレジスタをポーリングして、保留中の要求があるかどうかを識別する。さらに別の実施形態では、デバイスドライバ68は、例えば、アプリケーション64がコマンド(例えば、セキュリティコマンド)をスレーブデバイスに送信することに応答して、条件付きでスレーブ1のレジスタ値をチェックする。
【0043】
デバイスドライバ68がスレーブ1からスレーブ2にアクセスする要求を受け取ると、CPUはデバイスドライバ68と他のアプリケーション(64)との間で仲介し、スレーブ1に代わってバス36を介してスレーブ2にアクセスする。たとえば、スレーブ2がNVMまたはその他のメモリを含む場合、スレーブ1はデバイスドライバー68にバス36へのアクセスを要求し、(1)所定のNVMアドレスからデータを読み取る、(2)所定のNVMアドレスにデータを書き込む、(3)あるNVMアドレスから別のNVMアドレスにデータをコピーする。
【0044】
バス監視を使用した安全方法
安全システム20は、たとえばホスト24を改ざんするなど、不正な攻撃者によって危険にさらされる可能性がある。攻撃者は、たとえば、スレーブ1によってホストから要求されたトランザクションを検出し、ホストに、要求されたトランザクションとは異なるトランザクションをスレーブ2に適用させることができる。バス36を監視することにより、スレーブ1はバス上の違反イベントを検出し、それに応じて保護アクションを実行できる。
【0045】
以下の実施形態を説明する際に、スレーブ2を用いてホスト24によって実行されるトランザクションは、論理値のシーケンスとしてバス上に現れると想定される。所定のトランザクションに対応するシーケンスは、通常、アドレス部分とデータ部分、すなわち[アドレス、データ]を含む。論理値のシーケンスには、トランザクションのタイプを識別するオペコードも含まれる場合があり、その場合、シーケンスはバス上で[オペコード、アドレス、データ]として表示される。この例では、スレーブ1がオペコード部分をインターセプトするときに、アドレス部分、データ部分、またはその両方を変更(たとえば、論理値を上書き)できる。トランザクションのオペコード、アドレス、およびデータ部分は、ここではまとめて「トランザクション情報」とも呼ばれる。
【0046】
図2は、本明細書で説明される実施形態による、バス監視に基づいてマスター仲介トランザクションを保護する方法を概略的に示すフローチャートである。この方法は、例えば、図1のスレーブデバイス28のプロセッサ44によって実行され得る。方法の説明において、非限定的な例として、スレーブデバイス28(スレーブ1)は、安全装置を含み、スレーブデバイス32(スレーブ2)は、バス36がSPIバスを含む場合、フラッシュメモリ、例えば、SPIフラッシュメモリを含む。
【0047】
この方法は、(スレーブ1の)プロセッサ44が、リセット保持ステップ100でフラッシュメモリからブートすることから始まる。一実施形態では、プロセッサ44は、典型的にはシステムブートプロセスの一部として、フラッシュメモリにアクセスしながらホスト24をリセットに維持するための適切なインターフェースおよび回路(図示せず)を備える。一実施形態では、ブートプログラムをロードするために、プロセッサ44は、フラッシュメモリからデータブロックをロードし、データブロックの真正性を検証し、認証されたデータブロックをメモリ48にローカルに格納する。リセット時にホストを維持する上記の起動メカニズムは必須ではない。代替の実施形態では、他の適切なブート方法も使用することができる。
【0048】
トランザクションを要求するステップ104で、プロセッサ44は、ホスト24のデバイスドライバ68に、バス36を介してフラッシュメモリにアクセスすることを含むトランザクションを開始するように要求する。要求されたトランザクションは、例えば、(1)所与のフラッシュアドレスからデータを読み取る、(2)所与のフラッシュアドレスにデータを書き込む、または(3)1つのフラッシュアドレスから別の異なるフラッシュアドレスにデータをコピーすることを含み得る。
【0049】
監視ステップ108で、プロセッサ44は、IML56を使用してバス36を監視し、トランザクションが意図したとおりに実行されることを確認するために、バス上の要求されたトランザクションを傍受する。たとえば、書き込みトランザクションの場合、トランザクションで指定されたデータが実際にトランザクションで指定されたアドレスに書き込まれていることを確認する。IMLは、チップセレクト(CS)信号、クロック信号、データやアドレス情報を運ぶバス信号などの1つ以上のバス信号を監視する。バス36がSPIバスを含む場合、IML56は、マスターアウトスレーブイン(MOSI)信号、SPIバスのマスターインスレーブアウト(MISO)信号、またはその両方を介してデータおよびアドレス情報を監視することができる。
【0050】
ステップ108で、プロセッサ44は、例えば、要求されたトランザクション内の情報またはプロセッサに知られている他の情報に基づいて、バス上の要求されたトランザクションを傍受することができる。トランザクションを要求する時間とデバイスドライバによって要求されたトランザクションが実際に実行される時間の間、ホストは、トランザクションプロセッサ44が通常無視する、アプリケーション64から発生したバス上の他のトランザクションを開始する場合があることに留意する必要がある。例示的な実施形態では、読み取り、書き込み、またはコピーのトランザクションの場合、プロセッサ44は、要求されたトランザクションで指定されたアドレス情報を傍受する。書き込みトランザクションの場合、プロセッサは書き込まれるデータ(またはこのデータの一部)をインターセプトする。
【0051】
さらにステップ108で、バス上の要求されたトランザクション(またはトランザクションの一部)の傍受に応答して、プロセッサは(IMLを使用して)バスを監視し、要求されたトランザクションが意図したとおりに実行されることを確認する。例えば、プロセッサは、要求されたトランザクションで指定されたアドレスまたはアドレス範囲で、ホストがバス36を介してフラッシュメモリにアクセスすることを確認する。書き込みおよびコピートランザクションでは、プロセッサは、書き込みまたはコピーされるデータが、要求された書き込みまたはコピートランザクションで指定されたデータと一致することを確認する。プロセッサはさらに、要求されたトランザクション(またはおそらく他のトランザクションも)を実行する際に、メモリ48で指定されたセキュリティポリシーに違反していないことを確認することができる。さらに、プロセッサ44は、特定のトランザクション要求とは無関係に指定されたセキュリティポリシーに違反していないことを確認することができる。
【0052】
違反チェックステップ112で、プロセッサは、違反がバス36上で検出されたかどうかをチェックする。上記のように、違反は、(1)メモリ48に保存されている事前定義されたポリシーへの違反、たとえば保護されたアドレスまたはアドレス範囲へのアクセス、または(2)少なくとも一部が バス上で傍受されたトランザクション情報の数は、ステップ104の要求されたトランザクションにおける対応するトランザクション情報とは異なることが挙げられる。
【0053】
ステップ112で違反が検出されなかった場合、プロセッサ44はトランザクション完了ステップ116に進み、トランザクションを完了し、ステップ104にループバックして、ホストからの後続のトランザクションを要求する。プロセッサは、ホストが要求されたトランザクションの実行を完了するまで、バスを監視することによってトランザクションを完了することができる。代替的または追加的に、プロセッサは、ホストのデバイスドライバを介してトランザクションを完了する。たとえば、プロセッサは、デバイスドライバーがフラッシュメモリから読み取ったデータ、完了通知、またはその両方をデバイスドライバーから受信する。
【0054】
ステップ112で違反を検出したことに応答して、プロセッサ44は、保護ステップ120に進み、そこでプロセッサは、秘密情報の漏洩または露出を防止するための適切な保護アクションを適用する。保護アクションの例を以下に説明する。ステップ120に続いて、プロセッサは、ステップ104にループバックして、バス36を介して、フラッシュメモリとの後続のトランザクションを開始するようにホストに要求することができる。
【0055】
ステップ120で、プロセッサ44は、様々な保護アクションを適用することができる。いくつかの実施形態では、保護アクションは、安全システム20の1つ以上の要素をリセットすること、例えば、ホスト24をリセットすることを含む。あるいは、またはさらに、プロセッサは、例えば、バス上の1つまたは複数の信号の論理値を変更することによって、またはホストをバスから切断することによって、バス36を中断する。
【0056】
バス信号を修正する方法は、例えば、米国特許出願公開第2018/0239727号に記載されており、その開示は参照により本明細書に組み込まれる。例えば、いくつかの実施形態では、スレーブ1のバスインターフェース40は、ホスト24に並行して、バス36のバス信号の1つまたは複数を駆動する。スレーブ1は、ホストによって並行して駆動される論理値をオーバーライドする論理値を適用することにより、バスを中断させる可能性がある。バス信号の論理値のオーバーライドは、たとえば、ホストの対応するラインドライバーよりも強力なラインドライバーを使用するか、ホストが駆動する信号を減衰させるためにホストが駆動するバス信号に直列に抵抗を追加することで実現できる 。別の実施形態では、ホスト信号は、必要に応じてバス信号の論理値をマスクするスレーブ1を介してスレーブ2にルーティングされる。ホストをバスから切断する方法については、以下でさらに説明する。
【0057】
バス監視を使用してメモリデバイスとのトランザクションを保護する方法の例
以下の例示的な実施形態は、スレーブ2がメモリデバイス、例えば、フラッシュメモリを含むシステム構成に言及する。
【0058】
図3および図4は、本明細書で説明される実施形態による、安全な読み取りおよび書き込み操作の方法を概略的に示すフローチャートである。図3および図4の方法は、例えば、スレーブ1のプロセッサ44によって実行される。また、図3および図4は、上記の図2の方法と組み合わせることができる。
【0059】
図3の方法は、読み出しトランザクション要求ステップ150で始まり、プロセッサ44がホストのデバイスドライバ68に要求して、フラッシュメモリ(スレーブ2)の所定のアドレスからデータを読み取る読み出しトランザクションを開始する。監視ステップ154で、プロセッサは、バス36を監視して(IML56を使用して)、上述のように、デバイスドライバによって実行されている要求された読み取りトランザクションを識別する。
【0060】
いくつかの実施形態では、読み取りトランザクションは、読み取りの開始アドレスを表す一連の論理値としてバス信号上に現れ、その後に、1つまたは複数のアドレスの読み取りでフラッシュメモリから取得した1つまたは複数のデータユニット(バイト単位など)を表す論理値が続く。例示的な実施形態では、プロセッサは、要求された読み取りトランザクションで指定された開始アドレスを検出することによって、バス上の要求された読み取りトランザクションを識別する。
【0061】
バス上の読み出しトランザクションの識別に応答して、プロセッサは、監視ステップ158でバスを監視し続け、ホストによって並列に読み取られているデータを表すバス上の論理値をキャプチャする。プロセッサは、要求された読み取りトランザクションで指定されているように、1つ以上のデータ単位(バイトなど)をキャプチャする。
【0062】
いくつかの実施形態では、フラッシュメモリから取り出されたデータは、暗号署名を使用して署名され、その場合、プロセッサは、署名を使用して読み取られたデータの完全性を検証することができる。いくつかの実施形態では、フラッシュメモリから取り出されたデータは暗号化され、その場合、プロセッサは読み取られたデータを解読することができる。一部の実施形態では、バス上にキャプチャされたデータに加えて、プロセッサは、デバイスドライバを介して、読み取られたデータのバージョンを受信する。これらの実施形態では、プロセッサは、バス上の直接のデータキャプチャとデバイスドライバを介して間接的に読み取られたデータとを比較することにより、ホストが改ざんされていないことを検証することができる。ステップ158に続いて、図3の方法は終了する。
【0063】
図3の方法では、スレーブ1は、ホストによってフラッシュメモリに適用される読み取りトランザクション中にバス信号を監視する。図3の方法は、ホストによってフラッシュメモリに適用された書き込みトランザクション中にバス信号をスヌーピングするために、同様の方法で使用できる。一部の実施形態では、バスをスヌープすることにより、スレーブ1は、要求されたトランザクションが意図したとおりに実行されることを確認する。
【0064】
図4の方法では、プロセッサ44は、ホストに書き込まれたアドレス、データ、またはその両方を公開することなく、フラッシュメモリ内の所望のアドレスに所望のデータを書き込む所望の書き込み動作を実行する。
【0065】
図4の方法は、ダミー書き込みトランザクション要求ステップ200で始まり、プロセッサ44は、バス36を介してフラッシュメモリ(スレーブ2)へのダミー書き込みトランザクションを開始するようデバイスドライバ68に要求する。ダミー書き込みトランザクションは、フラッシュメモリ内のアドレスを指定します。これは、定義済みのダミーアドレスまたは書き込み用の実際のアドレスの場合がある。ダミー書き込みトランザクションは、おそらくオペコードと、指定されたアドレスに書き込まれるダミーデータを指定する。ダミーの書き込みトランザクションは、バス上で[オペコード、ダミーアドレス、ダミーデータ]として表示される。この例では、ダミーアドレスはオペコードに従い、ダミーデータは時間の経過とともにダミーデータに従う。
【0066】
監視ステップ204で、プロセッサは(IML56を使用して)バス36を監視して、デバイスドライバによって実行されている要求されたダミー書き込みトランザクションを識別する。プロセッサは、例えば、要求されたトランザクションで指定されたオペコードおよび/またはダミーアドレスをバス上で検出することによって、バス上のダミー書き込みトランザクションを識別することができる。
【0067】
オーバーライドするステップ208で、プロセッサは、ダミー書き込みトランザクション中にバス上の論理値をオーバーライドし、論理値は所望の書き込み動作を表す。このために、プロセッサ44は、ダミー書き込みトランザクションのデータ、アドレス、およびオペコード部分の1つまたは複数を、所望の書き込み動作の対応する値で上書きする。その結果、フラッシュメモリの目的のアドレスに目的のデータが書き込まれる。ホストは通常、このバスオーバーライド操作を認識せず、目的の書き込みトランザクションのデータ、アドレス、およびオペコード値は公開されないままである。
【0068】
いくつかの実施形態では、上記のようにバス信号をオーバーライドするとき、プロセッサ44は、バスインターフェースによって駆動されるバス信号をさらに監視する。バス信号を監視することにより、プロセッサ44は、予想通り、意図されたデータが意図されたアドレスに書き込まれたことを確認することができる。
【0069】
図4の方法では、スレーブ1は、ダミーの書き込みトランザクションを、フラッシュメモリ内の異なるデータとアドレスの望ましい書き込みトランザクションで上書きする。図4の方法は、例えば、フラッシュメモリ内の所望のアドレスからの読取りなど、所望の読取りトランザクションでダミー読取りトランザクションをオーバーライドするために、同様の方法で使用することができる。
【0070】
ホストをバスから切断してスレーブデバイスに安全にアクセスする方法
図5は、本明細書で説明される実施形態による、バスからのマスターデバイスの切断をサポートする安全システム250を概略的に示すブロック図である。安全システム250は、図1の安全システム20を実装する際に使用することができる。
【0071】
安全システム250では、ホスト24は、SPIバス254を介してスレーブデバイス28(スレーブ1)および32(スレーブ2)に接続されたバスマスターを含む。SPIバスは、クロック(CLK)ラインと、マスターアウトスレーブイン(MOSI)およびマスターインスレーブアウト(MISO)と呼ばれる2つのデータラインで構成される。CLK、MOSI、およびMISOラインは、すべてのデバイス(この例では、ホスト24、およびスレーブデバイス28および32)に共通である。さらに、各スレーブデバイスは、専用のチップセレクト(CS)ラインを使用して選択可能である。この例では、ホスト24は、CS#1で示されるCSラインを使用してスレーブ1を選択し、CS#2で示されるCSラインを使用してスレーブ2を選択する。
【0072】
マスターであるホスト24は、すべてのCSラインに接続されている。一方、各スレーブデバイスは、それ自体のCSラインにのみ接続される。通常、ホスト24は、それぞれのCSラインを使用して所望のスレーブデバイスを選択することによりトランザクションを開始し、その後、CLK、MOSIおよびMISOラインを使用してデバイスと通信する。MOSIラインはホストからスレーブデバイスへの送信に使用され、MISOラインはスレーブデバイスからホストへの送信に使用される。
【0073】
スレーブ1は、従来のSPIスレーブとは異なり、スレーブとして定義されているが、スレーブ2のCS#2ラインなどの他のデバイスのCSラインを駆動できる。図5に示すように、スレーブ1のバスインターフェース40は、ホスト24と並行してCS#2ラインを駆動するように構成される。システムが、それぞれのCSラインを有する複数のスレーブデバイス(例えば、スレーブ2など)を含む場合、スレーブ1は、ホストデバイス24と並行して任意のCSラインを駆動するように構成され得る。
【0074】
図5では、MOSIラインとMISOラインがスレーブ1に直接接続されている。一方、MOSIおよびMISOラインは、スレーブ1を介してスレーブ2に間接的に接続される。この構成では、スレーブ1は、ホストのMOSIおよびMISOラインをスレーブ2に接続するか、スレーブ2から切断するかを制御する。スレーブ1は、MISOセレクタ260およびMOSIセレクタ262を含む。MISOセレクターとMOSIセレクターのそれぞれは、2つの入力ポートと1つの出力ポートで構成される。いつでも、プロセッサ44は、SEL制御入力を使用してセレクタを制御し、その出力ポートとその入力ポートの1つとの間を内部的に接続する。MISOおよびMOSIセレクタは、例えば、マルチプレクサ要素を使用するなど、任意の適切な回路要素を使用して実装することができる。
【0075】
ホスト24がスレーブ2からデータを読み取るとき、スレーブ1はMISOセレクタを制御してMISOラインをホストとスレーブ2の間に接続します。この場合、スレーブ1はバス上のデータをホストと並列に読み取ることができる。または、スレーブ1はホストMISOラインをスレーブ2から切断し、読み取られたデータがホストに公開されないようにする。スレーブ1のプロセッサ44は、スレーブ2から取得したデータの代わりに、他のデータをホストMISOラインにホストに向かって注入する可能性がある。
【0076】
ホスト24がスレーブ2にデータを書き込むと、スレーブ1はMOSIセレクターを制御してホストMOSIラインをスレーブ2に接続し、ホストがスレーブデバイスにデータを書き込むことができるようにする。あるいは、スレーブ1は、MOSIセレクタを使用して、ホストMOSIラインをスレーブ2から切断し、プロセッサ44は、他のアドレスおよび/またはデータをスレーブ2に注入して、異なる書き込みトランザクションを実行することができる。
【0077】
いくつかの実施形態では、MISOセレクタがホストMISOラインをスレーブ2に接続すると、スレーブ1は、ホスト読み取りトランザクションをインターセプトし、読み取りトランザクションのデータ/アドレスをオーバーライドすることができる。同様に、MOSIセレクターがホストMOSIラインをスレーブ2に接続すると、スレーブ1がホストの書き込みトランザクションをインターセプトし、書き込みトランザクションのデータ/アドレスを上書きする場合がある。
【0078】
本明細書で説明される実施形態による、ホストをバスから切断することによって、スレーブデバイスへの安全なアクセスのための方法を概略的に示すフローチャートである。この方法は、図5の保護されたシステム250内のスレーブデバイス28(スレーブ1)のプロセッサ44によって実行され得る。この例では、スレーブ1は安全装置を含み、スレーブ2はフラッシュメモリを含み、バス254はSPIバスを含む。図6の方法は、上記の図2の方法と組み合わせることができる。
【0079】
この方法は、トランザクション要求ステップ300で始まり、プロセッサ44がホスト24のデバイスドライバ68に要求して、フラッシュメモリへのダミー書き込みトランザクションまたはダミー読み取りトランザクションを開始する。ダミーの読み取りまたは書き込みトランザクションは、オペコード(オプション)、フラッシュメモリ内の実アドレスまたはダミーアドレス、および書き込みトランザクションの場合は実データまたはダミーデータを指定する。
【0080】
監視ステップ304で、プロセッサ44は、バス36を監視して(例えば、IML56を使用して)、デバイスドライバによって実行されている要求されたダミー書き込みまたはダミー読み取りトランザクションを識別する。プロセッサは、例えば、要求されたトランザクションで指定されたフラッシュメモリアドレスおよび/またはオペコードを検出することにより、バス上のダミー書き込みまたはダミー読み取りトランザクションを識別することができる。
【0081】
切断ステップ308で、要求されたトランザクションの識別に応じて(たとえば、トランザクションのオペコードに基づいて)、プロセッサはホストをSPIバスから切断する。書き込みトランザクションの場合、プロセッサはMOSIセレクタ262を使用してホストをスレーブ2から切断しますが、読み取りトランザクションの場合、プロセッサはMISOセレクタ260を使用してホストを切断する。あるいは、プロセッサは、両方のセレクタを同時に使用して、MISOラインとMOSIラインの両方を切断することもできる。いくつかの実施形態では、プロセッサは、バス上の要求されたトランザクションを識別することとは無関係に、ホストをバスから切断する。
【0082】
ステップ304で検出されたトランザクションが書き込みまたは読み取りトランザクションであることに基づいて、プロセッサは、それぞれ書き込みステップ312または読み取りステップ316に進む。
【0083】
ステップ312で、プロセッサは、SPIバスを介して、MOSIラインを介してホストによって配信されたデータおよびアドレスに関係なく、意図されたデータを意図されたアドレスに書き込む。この手法では、プロセッサはダミーの書き込みトランザクションを、ホストから隠されたままの望ましい書き込みトランザクションで上書きする。一部の実施形態では、フラッシュメモリへの書き込みに加えて(例えば、並行して)、プロセッサは、起こり得る違反を検出するためにホストによって駆動されるMOSIラインを監視することができる。一部の実施形態では、フラッシュメモリへの書き込みに加えて(例えば、並行して)、プロセッサは、起こり得る違反を検出するために、プロセッサによって駆動されるMOSIラインを監視し得る。
【0084】
ステップ316で、プロセッサは、SPIバスを介して、フラッシュメモリの意図されたアドレスからデータを読み取る。ホストのMISOラインがフラッシュメモリから切断されているため、プロセッサが読み取った実際のデータは、ホストから隠されたままになる。いくつかの実施形態では、フラッシュメモリからの読み取りに加えて(例えば、並行して)、プロセッサは、ダミーデータなどの他のデータをホストに送信する。
【0085】
ステップ312および316のそれぞれに続いて、方法は終了する。
【0086】
図1に示される安全システム20およびホストデバイス24、スレーブデバイス28およびスレーブデバイス32の構成、ならびに図5の安全システム250は構成例であり、純粋に概念を明確にするために示されている。あるいは、他の適切な安全システム、ホストデバイス、およびスレーブデバイスの構成も使用できる。本発明の原理を理解するのに必要ではない要素、例えば、様々なインターフェース、制御回路、アドレス指定回路、タイミングおよびシーケンシング回路、デバッグ回路は、明確にするために図から省略されている。
【0087】
図1および図5に示される例示的なシステム構成では、CPU60、スレーブデバイス28およびスレーブデバイス32は、別個の集積回路(IC)として実装される。しかしながら、代替の実施形態では、CPU、スレーブデバイス28、およびスレーブデバイス32のうちの少なくとも2つは、単一のマルチチップパッケージ(MCP)またはシステムオンチップ(SoC)内の別個の半導体ダイに統合されたり、内部バスで相互接続できる。例示的な実施形態では、スレーブデバイス28(例えば、コントローラ)およびスレーブデバイス32(例えば、フラッシュメモリ)は、マルチチップモジュール(MCM)に実装される。スレーブデバイス28とスレーブデバイス32が同じパッケージ内(たとえば、MCMまたはMCPデバイス内)に実装されている実施形態では、両方のデバイスが共通のパッケージ内の同じSPIインターフェースライン(たとえば、MISO、MOSIおよびCLK)を共有する。そのような実施形態は、期待される機能に違反しようとして2つのスレーブデバイス間の信号を攻撃または操作するため、攻撃者が複合デバイスを開くことを必要とするので、改善されたセキュリティを提供できる。
【0088】
スレーブデバイス28の異なる素子は、特定用途向け集積回路(ASIC)またはフィールドプログラマブルゲートアレイ(FPGA)などの任意の適切なハードウェアを使用して実装され得る。いくつかの実施形態では、スレーブデバイス28のいくつかの素子は、ソフトウェアを使用して、またはハードウェア要素とソフトウェア要素の組み合わせを使用して実装することができる。例えば、本実施形態では、スレーブインターフェースロジック52およびIML56は、専用ハードウェアモジュールとして実現することができる。メモリ48は、例えば、RAMなどの任意の適切なタイプのメモリおよび記憶技術を含むことができる。
【0089】
通常、ホスト24のCPU60およびスレーブデバイス28のプロセッサ44のそれぞれは、本明細書で説明する機能を実行するようにソフトウェアでプログラムされた汎用プロセッサを含む。ソフトウェアは、例えば、ネットワークを介して電子形式で関連するプロセッサにダウンロードすることができ、あるいは、代替的または追加的に、磁気、光学、または電子メモリなどの非一時的な有形媒体に提供および/または格納することができる。
【0090】
暗号化コプロセッサを含む安全システム
ホスト24がバス36を介してバスマスターとして、ホスト24の暗号化コプロセッサとして機能するスレーブデバイス28(スレーブ1)、またはホストと暗号化コプロセッサの両方の外部にある不揮発性メモリ(NVM)デバイスを含むスレーブデバイス32(スレーブ2)に接続する、図1のシステム20などの安全システムの構成例について考える。暗号化コプロセッサは、本明細書では安全装置とも呼ばれる。
【0091】
ホストは、安全装置の助けを借りてセキュリティサービスを提供するセキュリティアプリケーション64を実行する。セキュリティアプリケーションは、セキュリティコマンドを安全装置に送信し、安全装置からそれぞれのコマンド応答を受信する。セキュリティアプリケーションを提供する場合、NVMデバイスにアクセスするために安全装置が必要になることがある。
【0092】
ホストは、セキュリティアプリケーションに対して透過的に、安全装置と外部NVMデバイスの間を仲介する専用デバイスドライバ68を実行する。デバイスドライバーにより、安全装置はデバイスドライバーを介して間接的に外部NVMにアクセスできる。ホストからセキュリティコマンドを受信すると、安全装置はセキュリティコマンドを実行します。セキュリティコマンドは、バスを介してNVMデバイスへのアクセスを必要とする場合があり、専用のデバイスドライバーを介してアプリケーションプログラムに透過的に実行される。
【0093】
一部の実施形態では、例えば、セキュリティアプリケーションによって要求されたセキュリティコマンドを実行する際に、安全装置は、バスを介して外部NVMにアクセスするトランザクションを開始するようにホストに要求する。安全装置は、要求されたトランザクションを実行する際にホストがバスを介してNVMデバイスにアクセスする期間内に、バス上の1つ以上の信号を監視し、監視された信号に基づいて、要求されたトランザクションの実行中にセキュリティ違反が発生したかどうかを識別する。
【0094】
以上のように、暗号化コプロセッサで構成された安全システムは、バス監視技術を使用して、安全システム20および250について上記で説明した任意の実施形態を適用できる。
【0095】
上記の実施形態は例として与えられたものであり、他の適切な実施形態を使用することもできる。例えば、上述の実施形態は主にSPIバスに言及しているが、これらの実施形態はI2Cバスにも同様に適用可能である。さらに代替的に、開示された実施形態はシリアルバスに限定されず、パラレルバスにも同様に適用可能である。いくつかの実施形態では、スレーブ1は、スレーブ2などの他のスレーブデバイスとは異なるバスを介して(おそらくスレーブである必要はないが)ホストに接続される。そのような実施形態では、スレーブ1は、ホストがスレーブ2などの他のスレーブデバイスに接続されるバスにも接続され、例えば、上述の方法およびシステムを使用してバスの監視および保護を可能にする。
【0096】
上記のいくつかの実施形態では、スレーブ1は、バス上のオペコード、アドレス、またはデータ素子を識別することによってトランザクションを検出する。代替として、そのような素子の一部のみを検出することで十分かもしれない。たとえば、スレーブ1は、アドレス範囲を指定する最上位部分など、アドレス要素の一部のみを検出することにより、トランザクションを検出できる。
【0097】
本明細書で説明する実施形態は、SPIバスがシングルモードで動作する実施形態に主に言及しているが、開示された実施形態は、ダブルまたはクワッドモードで動作するSPIバスに同様に適用可能である。
【0098】
本明細書で説明する実施形態は、主にデバイス間を接続するためのSPIおよびI2Cバスを扱うが、本明細書で説明する安全方法および安全システムは、たとえば拡張シリアル周辺インターフェースバス(eSPI)などの他の適切なタイプの周辺バスでも使用できる。
【0099】
上記の実施形態では、スレーブ2は主にフラッシュまたはNVMデバイスと呼ばれるが、本明細書で説明する方法およびシステムは、スレーブ2が揮発性メモリまたはシステム内の他のデバイスなどの他の任意の適切な周辺デバイスであり得る他の用途でも使用することができる。例えば、スレーブ2は、任意の適切なコントローラまたは監視デバイスを含み得る。
【0100】
上記の実施形態は例として引用されており、特許請求の範囲は、上記で特に示され、説明されたものに限定されないことが理解されよう。むしろ、範囲は、上述の様々な特徴の組み合わせおよび部分的組み合わせの両方、ならびに前述の説明を読んだときに当業者が思いつくであろう、先行技術では開示されていないその変形および修正を含む。参照により本特許出願に組み込まれる文書は、本明細書で明示的または黙示的になされた定義と矛盾する方法で用語がこれらの組み込まれた文書で定義される場合を除き、本出願の不可欠な部分と見なされるべきである。 本明細書の定義を考慮する必要がある。
【符号の説明】
【0101】
20…安全システム
24…ホストデバイス
250…安全システム
28…スレーブデバイス
32…スレーブデバイス
36…バス
40…バスインターフェース
44…プロセッサー
48…メモリー
52…スレーブインターフェースロジック
56…インターフェースモニターロジック(IML)
60…CPU
64…アプリケーション
68…デバイスドライバ
図1
図2
図3
図4
図5
図6