(57)【要約】      （修正有）【課題】セキュアブートストラッピングを実行するための安全装置及び安全方法を提供する。【解決手段】安全システム２０において、安全装置３６は、プロセッサー４４と、ホストデバイス２４と不揮発性メモリデバイスとをサービスするＩ２Ｃバス３２に接続するインターフェイス４０を備える。安全装置３６は、ホストデバイス２４が不揮発性メモリデバイスからブートコードを取得するブートプロセスをＩ２Ｃバス３２上で検出し、ホストデバイス２４のブートコードの少なくとも一部の真正コピーに基づいて、ブートプロセスのセキュリティーを確認する。【選択図】図１
2020173806.tif 000002
【特許請求の範囲】
【請求項１】
ホストデバイスと不揮発性メモリデバイスとをサービスするバスに接続するためのインターフェイスと、
前記ホストデバイスと前記不揮発性メモリデバイスに加えて前記バスに接続され、前記ホストデバイスが前記不揮発性メモリデバイスからブートコードを取得するブートプロセスを前記バス上で検出し、前記ホストデバイスの前記ブートコードの少なくとも一部の真正コピーに基づいて、前記ブートプロセスのセキュリティーを確認するように設定されるプロセッサーと、
を備えることを特徴とする安全装置。
【請求項２】
前記プロセッサーは、前記バスから前記ブートコードの少なくとも一部を抽出し、前記不揮発性メモリデバイスから取得した前記ブートコードの前記少なくとも一部と前記真正コピーとの不一致を検出した場合、レスポンシブアクションを開始するように設定される請求項１に記載の安全装置。
【請求項３】
前記真正コピーは、前記ブートコードの前記少なくとも一部のイメージを含み、
前記プロセッサーは、前記イメージを、前記不揮発性メモリデバイスから取得した前記ブートコードの前記少なくとも一部と比較することにより、前記不一致を検出するように設定される請求項２に記載の安全装置。
【請求項４】
前記真正コピーは、前記ブートコードの前記少なくとも一部の真正ダイジェストを含み、前記プロセッサーは、前記不揮発性メモリデバイスから取得した前記ブートコードの前記少なくとも一部のダイジェストを計算し、前記不揮発性メモリデバイスから取得した前記ブートコードの前記少なくとも一部の前記ダイジェストを前記真正ダイジェストと比較することにより、前記不一致を検出するように設定される請求項２に記載の安全装置。
【請求項５】
前記プロセッサーは、前記ブートプロセスの進行中に前記不一致を検出するように設定される請求項２に記載の安全装置。
【請求項６】
前記プロセッサーは、前記不一致を検出した場合の応答として、前記バスの前記少なくとも１つのラインに１つまたは複数のダミー値を強制的に書き込むことによって、前記ブートプロセスを中断するように設定される請求項５に記載の安全装置。
【請求項７】
前記プロセッサーは、前記プロセッサーは、前記不一致を検出した場合の応答として、前記ホストデバイスと前記不揮発性メモリデバイスの間の前記バスの前記１つまたは複数のラインを中断することによって、前記ブートプロセスを中断するように設定される請求項５に記載の安全装置。
【請求項８】
前記プロセッサーは、前記不一致を検出した場合の応答として、前記不揮発性メモリデバイスの代わりに前記バスを介して前記ホストデバイスに応答し、前記真正コピーを使用して前記ブートプロセスを完了するように設定される請求項５に記載の安全装置。
【請求項９】
前記プロセッサーは、前記ブートプロセスの進行とは別に、前記不一致を検出するように設定される請求項２に記載の安全装置。
【請求項１０】
前記プロセッサーは、前記安全装置の内部メモリ、または前記安全装置の外部メモリに前記真正コピーを保持するように設定される請求項１に記載の安全装置。
【請求項１１】
前記プロセッサーは、前記ブートプロセスの前記セキュリティが確認されるまで、前記ホストデバイスが所定の機密情報にアクセスするのを防ぐように設定される請求項１に記載の安全装置。
【請求項１２】
前記プロセッサーは、
前記不揮発性メモリデバイスの代わりに前記ホストデバイスに応答し、前記ブートプロセスの第一インスタンスと第二インスタンスとの間で前記バス上での前記ホストデバイスのアクティビティを異ならせるブートコードを前記ホストデバイスに提供し、
前記バス上での前記ホストデバイスの前記アクティビティを監視し、前記アクティビティが前記ホストデバイスに提供された前記ブートコードと一致するかどうかを確認することによって、
前記ブートプロセスの前記セキュリティを確認するように設定される請求項１に記載の安全装置。
【請求項１３】
前記プロセッサーは、前記バスのチップセレクトラインがアサートされていない間、前記バスのすべてのデータおよびクロックラインの論理状態が変化しないことを確保することによって、前記ブートプロセスの前記セキュリティを確認するように設定される請求項１に記載の安全装置。
【請求項１４】
前記プロセッサーは、予め定義されたホワイトリストに表示されるバスコマンドのみが前記不揮発性メモリデバイスに適用されるように確保することによって、前記ブートプロセスの前記セキュリティを確認するように設定される請求項１に記載の安全装置。
【請求項１５】
前記プロセッサーは、前記ブートプロセスにおける所定のリセット信号または電源信号から、所定のイベントまでの時間遅延が所定の範囲内であることを確保することによって、前記ブートプロセスの前記セキュリティを確認するように設定される請求項１に記載の安全装置。
【請求項１６】
前記プロセッサーは、前記バスの前記少なくとも１つのラインのアナログパラメータ値が所定の範囲内であることを確保することによって、前記ブートプロセスの前記セキュリティを確認するように設定される請求項１に記載の安全装置。
【請求項１７】
前記ブートコードは、前記バスに１つ以上のホストデバイスパラメーター値を出力するように前記ホストデバイスに指示し、
前記プロセッサーは、前記バスに出力された前記ホストデバイスパラメーター値を監視及び検証することによって、前記ブートプロセスの前記セキュリティを確認するように設定される請求項１に記載の安全装置。
【請求項１８】
ホストデバイスと不揮発性メモリデバイスに加えてバスに接続される安全装置を使用して、前記バスを介して通信を行うことと、
前記安全装置を使用して、前記ホストデバイスが前記不揮発性メモリデバイスからブートコードを取得するブートプロセスをバス上で検出し、前記ホストデバイスの前記ブートコードの少なくとも一部の真正コピーに基づいて前記ブートプロセスのセキュリティを確認することと、
を含むことを特徴とする安全方法。
【請求項１９】
前記ブートプロセスのセキュリティを確認することは、
前記バスから前記ブートコードの少なくとも一部を抽出し、前記不揮発性メモリデバイスから取得した前記ブートコードの前記少なくとも一部と前記真正コピーとの不一致を検出した場合、レスポンシブアクションを開始することを含む請求項１８に記載の安全方法。
【請求項２０】
前記真正コピーは、前記ブートコードの前記少なくとも一部のイメージを含み、
前記不一致を検出することは、
前記イメージを、前記不揮発性メモリデバイスから取得した前記ブートコードの前記少なくとも一部と比較することにより、前記不一致を検出することを含む請求項１９に記載の安全方法。
【請求項２１】
前記真正コピーは、前記ブートコードの前記少なくとも一部の真正ダイジェストを含み、
前記不一致を検出することは、
前記不揮発性メモリデバイスから取得した前記ブートコードの前記少なくとも一部のダイジェストを計算し、前記不揮発性メモリデバイスから取得した前記ブートコードの前記少なくとも一部の前記ダイジェストを前記真正ダイジェストと比較することにより、前記不一致を検出することを含む請求項１９に記載の安全方法。
【請求項２２】
前記不一致を検出することは、前記ブートプロセスの進行中に前記不一致を検出する請求項１９に記載の安全方法。
【請求項２３】
前記ブートプロセスのセキュリティを確認することは、前記不一致を検出した場合の応答として、前記バスの前記少なくとも１つのラインに１つまたは複数のダミー値を強制的に書き込むことによって、前記ブートプロセスを中断することを含む請求項２２に記載の安全方法。
【請求項２４】
前記ブートプロセスのセキュリティを確認することは、前記不一致を検出した場合の応答として、前記ホストデバイスと前記不揮発性メモリデバイスの間の前記バスの前記１つまたは複数のラインを中断することによって、前記ブートプロセスを中断することを含む請求項２２に記載の安全方法。
【請求項２５】
前記ブートプロセスのセキュリティを確認することは、前記不一致を検出した場合の応答として、前記不揮発性メモリデバイスの代わりに前記バスを介して前記ホストデバイスに応答し、前記真正コピーを使用して前記ブートプロセスを完了することを含む請求項２２に記載の安全方法。
【請求項２６】
前記不一致を検出することは、前記ブートプロセスの進行とは別に、前記不一致を検出する請求項１９に記載の安全方法。
【請求項２７】
前記安全装置の内部メモリ、または前記安全装置の外部メモリに前記真正コピーを保持することをさらに含む請求項１８に記載の安全方法。
【請求項２８】
前記ブートプロセスの前記セキュリティが確認されるまで、前記ホストデバイスが所定の機密情報にアクセスするのを防ぐことをさらに含む請求項１８に記載の安全方法。
【請求項２９】
前記ブートプロセスのセキュリティを確認することは、
前記不揮発性メモリデバイスの代わりに前記ホストデバイスに応答し、前記ブートプロセスの第一インスタンスと第二インスタンスとの間で前記バス上での前記ホストデバイスのアクティビティを異ならせるブートコードを前記ホストデバイスに提供し、
前記バス上での前記ホストデバイスの前記アクティビティを監視し、前記アクティビティが前記ホストデバイスに提供された前記ブートコードと一致するかどうかを確認することを含む請求項１８に記載の安全方法。
【請求項３０】
前記ブートプロセスのセキュリティを確認することは、
前記バスのチップセレクトラインがアサートされていない間、前記バスのすべてのデータおよびクロックラインの論理状態が変化しないことを確保することによって、前記ブートプロセスの前記セキュリティを確認することをさらに含む請求項１８に記載の安全方法。
【請求項３１】
前記ブートプロセスのセキュリティを確認することは、
予め定義されたホワイトリストに表示されるバスコマンドのみが前記不揮発性メモリデバイスに適用されるように確保することによって、前記ブートプロセスの前記セキュリティを確認することをさらに含む請求項１８に記載の安全方法。
【請求項３２】
前記ブートプロセスのセキュリティを確認することは、
前記ブートプロセスにおける所定のリセット信号または電源信号から、所定のイベントまでの時間遅延が所定の範囲内であることを確保することによって、前記ブートプロセスの前記セキュリティを確認することをさらに含む請求項１８に記載の安全方法。
【請求項３３】
前記ブートプロセスのセキュリティを確認することは、
前記バスの前記少なくとも１つのラインのアナログパラメータ値が所定の範囲内であることを確保することによって、前記ブートプロセスの前記セキュリティを確認することをさらに含む請求項１８に記載の安全方法。
【請求項３４】
前記ブートコードは、前記バスに１つ以上のホストデバイスパラメーター値を出力するように前記ホストデバイスに指示し、
前記ブートプロセスのセキュリティを確認することは、前記バスに出力された前記ホストデバイスパラメーター値を監視及び検証することをさらに含む請求項１８に記載の安全方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一種の電子システムセキュリティーに関わり、特に、セキュアブートストラッピング（ｓｅｃｕｒｅ  ｂｏｏｔｓｔｒａｐｐｉｎｇ）を実行するための安全装置及び安全方法に関する。
【背景技術】
【０００２】
従来、電子システムは、ホストデバイスと周辺装置との間の通信にさまざまなタイプのバスインターフェイスを使用する。  バスインターフェイスの一例として、シリアルペリフェラルインターフェイス（ＳＰＩとも称する）バスを挙げられる。ＳＰＩをサポートする周辺機器には、たとえばシリアルフラッシュメモリデバイスが含まれる。
【０００３】
この出願は、２０１５年６月８日に提出された米国仮特許出願６２／１７２，２９８の権利を主張する２０１６年３月２１日に出願された米国特許出願１５／０７５，２１９の一部継続出願（ＣＩＰ）である２０１８年４月１８日に出願された米国特許出願１５／９５５，７１５の一部継続出願（ＣＩＰ）であり、上記出願の開示全体を参照により本明細書に組み込まれる。また、この出願は、偶数日に提出された「バスモニタリングを使用したスレーブデバイス間のセキュアなマスター仲介トランザクション」という名の米国特許出願（弁理士整理番号１０４１−２００３）に関連している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国仮特許出願６２／１７２，２９８
【特許文献２】米国特許出願１５／０７５，２１９
【特許文献３】米国特許出願１５／９５５，７１５
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の目的は、セキュアブートストラッピングを実行するための安全装置及び安全方法を提供することにある。
【課題を解決するための手段】
【０００６】
本発明の実施形態に係る安全装置は、ホストデバイスと不揮発性メモリデバイスとをサービスするバスに接続するためのインターフェイスと、前記ホストデバイスと前記不揮発性メモリデバイスに加えて前記バスに接続され、前記ホストデバイスが前記不揮発性メモリデバイスからブートコードを取得するブートプロセスを前記バス上で検出し、前記ホストデバイスの前記ブートコードの少なくとも一部の真正コピーに基づいて、前記ブートプロセスのセキュリティーを確認するように設定されるプロセッサーと、を備えることを特徴とする。
【０００７】
また、本発明の１つの実施形態に係る安全装置において、前記プロセッサーは、前記バスから前記ブートコードの少なくとも一部を抽出し、前記不揮発性メモリデバイスから取得した前記ブートコードの前記少なくとも一部と前記真正コピーとの不一致を検出した場合、レスポンシブアクションを開始するように設定される。
【０００８】
また、本発明の１つの実施形態に係る安全装置において、前記真正コピーは、前記ブートコードの前記少なくとも一部のイメージを含み、前記プロセッサーは、前記イメージを、前記不揮発性メモリデバイスから取得した前記ブートコードの前記少なくとも一部と比較することにより、前記不一致を検出するように設定される。また、本発明の１つの実施形態に係る安全装置において、前記真正コピーは、前記ブートコードの前記少なくとも一部の真正ダイジェストを含み、前記プロセッサーは、前記不揮発性メモリデバイスから取得した前記ブートコードの前記少なくとも一部のダイジェストを計算し、前記不揮発性メモリデバイスから取得した前記ブートコードの前記少なくとも一部の前記ダイジェストを前記真正ダイジェストと比較することにより、前記不一致を検出するように設定される。
【０００９】
また、本発明の１つの実施形態に係る安全装置において、前記プロセッサーは、前記ブートプロセスの進行中に前記不一致を検出するように設定される。また、本発明の１つの実施形態に係る安全装置において、前記プロセッサーは、前記不一致を検出した場合の応答として、前記バスの前記少なくとも１つのラインに１つまたは複数のダミー値を強制的に書き込むことによって、前記ブートプロセスを中断するように設定される。また、本発明の１つの実施形態に係る安全装置において、前記プロセッサーは、前記不一致を検出した場合の応答として、前記ホストデバイスと前記不揮発性メモリデバイスの間の前記バスの前記１つまたは複数のラインを中断することによって、前記ブートプロセスを中断するように設定される。また、本発明の１つの実施形態に係る安全装置において、前記プロセッサーは、前記不一致を検出した場合の応答として、前記不揮発性メモリデバイスの代わりに前記バスを介して前記ホストデバイスに応答し、前記真正コピーを使用して前記ブートプロセスを完了するように設定される。また、本発明の１つの実施形態に係る安全装置において、前記プロセッサーは、前記ブートプロセスの進行とは別に、前記不一致を検出するように設定される。
【００１０】
また、本発明の１つの実施形態に係る安全装置において、前記プロセッサーは、前記安全装置の内部メモリ、または前記安全装置の外部メモリに前記真正コピーを保持するように設定される。また、本発明の１つの実施形態に係る安全装置において、前記プロセッサーは、前記ブートプロセスの前記セキュリティが確認されるまで、前記ホストデバイスが所定の機密情報にアクセスするのを防ぐように設定される。
【００１１】
また、本発明の１つの実施形態に係る安全装置において、前記プロセッサーは、前記不揮発性メモリデバイスの代わりに前記ホストデバイスに応答し、前記ブートプロセスの第一インスタンスと第二インスタンスとの間で前記バス上での前記ホストデバイスのアクティビティを異ならせるブートコードを前記ホストデバイスに提供し、前記バス上での前記ホストデバイスの前記アクティビティを監視し、前記アクティビティが前記ホストデバイスに提供された前記ブートコードと一致するかどうかを確認することによって、前記ブートプロセスの前記セキュリティを確認するように設定される。
【００１２】
また、本発明の１つの実施形態に係る安全装置において、前記プロセッサーは、前記バスのチップセレクト（ＣＳ）ラインがアサートされていない間、前記バスのすべてのデータおよびクロックラインの論理状態が変化しないことを確保することによって、前記ブートプロセスの前記セキュリティを確認するように設定される。また、本発明の１つの実施形態に係る安全装置において、前記プロセッサーは、予め定義されたホワイトリストに表示されるバスコマンドのみが前記不揮発性メモリデバイスに適用されるように確保することによって、前記ブートプロセスの前記セキュリティを確認するように設定される。
【００１３】
また、本発明の１つの実施形態に係る安全装置において、前記プロセッサーは、前記ブートプロセスにおける所定のリセット信号または電源信号から、所定のイベントまでの時間遅延が所定の範囲内であることを確保することによって、前記ブートプロセスの前記セキュリティを確認するように設定される。また、本発明の１つの実施形態に係る安全装置において、前記プロセッサーは、前記バスの前記少なくとも１つのラインのアナログパラメータ値が所定の範囲内であることを確保することによって、前記ブートプロセスの前記セキュリティを確認するように設定される。また、本発明の１つの実施形態に係る安全装置において、前記ブートコードは、前記バスに１つ以上のホストデバイスパラメーター値を出力するように前記ホストデバイスに指示し、前記プロセッサーは、前記バスに出力された前記ホストデバイスパラメーター値を監視及び検証することによって、前記ブートプロセスの前記セキュリティを確認するように設定される。
【００１４】
本発明の実施形態に係る安全方法は、ホストデバイスと不揮発性メモリデバイスに加えてバスに接続される安全装置を使用して、前記バスを介して通信を行うことと、前記安全装置を使用して、前記ホストデバイスが前記不揮発性メモリデバイスからブートコードを取得するブートプロセスをバス上で検出し、前記ホストデバイスの前記ブートコードの少なくとも一部の真正コピーに基づいて前記ブートプロセスのセキュリティを確認することと、を含む。
【００１５】
本発明の別の実施形態は、インターフェースとプロセッサーとを含む安全装置を提供する。このインターフェイスは、１つまたは複数の周辺デバイスに対応するバスに接続するように構成される。このバスには、周辺デバイスのための１つ以上の専用信号と、バスを介して周辺デバイス間で共有される１つ以上の共有信号と、を含まれる。プロセッサーは、周辺デバイスに加えて追加デバイスとしてバスに接続され、所定の周辺デバイスに関連付けられた専用信号を中断することによって、バスマスターデバイスが所定の周辺デバイスにアクセスしようとするトランザクションをバス上で中断するように設定される。
【００１６】
いくつかの実施形態では、プロセッサ−は、トランザクションを中断しながら、バス上の共有信号を中断することなく保持するように設定される。
【００１７】
１つの実施形態では、インターフェースは、バスマスターデバイスから専用信号を受信するための入力と、所定の周辺デバイスに専用信号を送信するための出力と、含み、プロセッサーは、入力に受信された専用信号が出力に送信されないようにすることで、トランザクションを中断するように設定される。また、いくつかの実施形態では、プロセッサーは、専用信号が中断されている間、所定の周デバイス器の代わりにバスマスターデバイスに応答するように設定される。  また、例示的な実施形態では、専用信号はチップセレクト（ＣＳ）信号を含む。
【００１８】
開示される実施形態では、プロセッサーは、バスを監視することにより、中断されるトランザクションを検出するように設定される。別の実施形態では、プロセッサーは、バスの外部にある補助インターフェースを介してバスマスターデバイスと通信することにより、中断されるトランザクションを検出するように設定される。
【００１９】
１つの実施形態では、プロセッサーは、リセットされるまで、専用信号を無期限に中断するように設定される。別の実施形態では、プロセッサーは、トランザクションを検出した後、限られた期間内で専用信号を中断するように設定される。１つの実施形態では、プロセッサ−は、トランザクションを中断することにより、１つ以上の周辺デバイスでトランザクションを中断させるように構成される。いくつかの実施形態では、プロセッサーは、トランザクションの中断後にバスの通常の動作を再開するように設定される。
【００２０】
本発明の１つ実施形態によれば、インターフェースおよびプロセッサーを含む安全装置がさらに提供される。インターフェイスは、１つまたは複数の周辺デバイスに対応するバスに接続するように構成される。プロセッサーは、周辺デバイスに加えてバスに接続され、バスマスタデバイスが所定の周辺デバイスの代わりにバスマスターデバイスに応答することにより、バスマスターデバイスが所定の周辺デバイスにアクセスしようとするトランザクションを中断するように設定される。
【００２１】
本発明の別の実施形態は、インターフェースとプロセッサーとを含む安全装置を提供する。このインターフェイスは、１つまたは複数の周辺デバイスに対応するバスに接続するように構成される。このバスには、周辺デバイスのための１つ以上の専用信号と、バスを介して周辺デバイス間で共有される１つ以上の共有信号と、を含まれる。プロセッサーは、所定の周辺デバイスに関連付けられた専用信号を中断し、専用信号が中断されている間にバスマスターデバイスに応答することにより、トランザクションを中断するように設定される。
【００２２】
いくつかの実施形態では、所定の周辺デバイスはメモリデバイスを含み、プロセッサーは、トランザクションにおいて、バスマスターデバイスからのメモリデバイスからデータの読み取るリクエストを識別し、安全装置の内部的に保存されている代替データでリクエストに応答するように設定される。例示的な実施形態では、プロセッサーは、バスマスターデバイスがメモリデバイス内の所定のアドレスゾーンにアクセスするリクエストに代替データで応答することによって、トランザクションを中断するように設定される。
【００２３】
別の実施形態では、プロセッサーは、トランザクション中に所定の周辺デバイスによってバスマスターデバイスに返されるデータに基づいて、バスマスターデバイスが所定の周辺デバイスにアクセスしようとするトランザクションを識別するように設定される。さらに別の実施形態では、プロセッサーは、トランザクションで使用されるコマンドコードに基づいて、バスマスターデバイスが所与の周辺デバイスへのアクセスを試みるトランザクションを識別するように設定される。
【００２４】
本発明の一実施形態によれば、１つ以上の周辺デバイスに加えて追加デバイスとしてバスに接続された安全装置を使用してバスを介して通信することを含む安全方法も提供される。バスには、周辺デバイスに１つ以上の専用信号と、バスを介して周辺デバイス間で共有される１つ以上の共有信号と、を含まれる。安全装置を使用して、所定の周辺デバイスに関連付けられた専用信号を中断することにより、バスマスターデバイスが所定の周辺デバイスにアクセスしようとするトランザクションをバス上で中断される。
【００２５】
本発明の１つの実施形態によれば、１つまたは複数の周辺デバイスに加えてバスに接続された安全装置を使用してバスを介して通信することを含む安全方法がさらに提供される。安全装置を使用して、特定の周辺デバイスではなくバスマスターデバイスに応答することにより、バスマスターデバイスが所定の周辺デバイスにアクセスしようとするトランザクションをバス上で中断される。
【００２６】
本発明で説明される実施例は、インターフェースおよびプロセッサーを含む装置を提供する。そのインターフェースは、バスを介して通信するように構成され、プロセッサーは、バスマスタデバイスが無許可に周辺デバイスにアクセスを試みる時、バスの少なくとも１つのラインに強制的に１つまたは複数のダミー値を並行的に書き込むことによって、少なくとも一部のトランザクションを中断させるように設定される。
【００２７】
１つの実施例では、プロセッサーは、バスのデータラインにダミー値を強制的に書き込むことによって、データラインを介して周辺デバイスに送信または周辺デバイスから受信されたそれぞれのデータ値の転送を中断させるように設定される。追加的または代替的に、プロセッサーは、バスのクロックラインにダミー値を強制的に書き込むことによって、トランザクションにおいて使用されるクロック信号を中断させるように設定される。さらに追加的または代替的に、プロセッサーは、バスのチップセレクトライン上にダミー値を強制的に書き込むことによって、バスマスタデバイスによる周辺デバイスの選択を中断するように設定される。
【００２８】
一部の実施例では、バスは、デフォルト論理値を有するオープンドレインまたはオープンコレクタを備え、且つプロセッサーは、バスの少なくとも１つのラインにデフォルト論理値と相反するダミー値を強制的に書き込むように設定される。
【００２９】
一部の実施例では、プロセッサーは、ダミー値を強制的に書き込むことによって、バスマスタデバイスまたは前記周辺デバイスの少なくとも１つのラインに書き込まれた対応値を上書き（ｏｖｅｒｒｉｄｅ）するように設定される。１つの例示的な実施例では、プロセッサーは、バスマスタデバイスまたは周辺デバイスの駆動強度より強い駆動強度で、少なくとも１つのラインを駆動することによって、バスマスタデバイスまたは周辺デバイスによって書き込まれた前記対応値を上書きするように設定される。もう１つの実施例では、装置は、少なくとも１つの抵抗器を有し、その抵抗器は、少なくとも１つのラインに挿入され、バスマスタデバイスまたは周辺デバイスによって書き込まれた値を、ダミー値に応じて減衰させるように設定される。
【００３０】
一部の実施例では、プロセッサーは、バスマスタデバイスと周辺デバイスの間の通信に使用されるバスの既存のラインのみにダミー値を強制的に書き込むように設定される。一部の実施例では、プロセッサーは、バスを監視することによって、中断させるべきトランザクションを検出するように設定される。１つの実施例では、プロセッサーは、バスの外部にある補助インターフェースを介してバスマスタデバイスと通信することによって、中断させるべきトランザクションを検出するように設定される。
【００３１】
開示された１つの実施例では、プロセッサーは、装置がリセットされるまで、無制限にダミー値を強制的に書き込むように設定される。もう１つの実施例では、プロセッサーは、トランザクションを検出した後に、一定期間内にダミー値を強制的に書き込むように設定される。また１つの実施例では、プロセッサーは、トランザクションが中断された後に、前記バスの正常動作を再開するように設定される。
【００３２】
本発明で説明される実施例は、さらに周辺デバイスと安全装置を備えるシステムを提供する。その周辺デバイスは、バスを介して１つまたは複数のバスマスタデバイスにアクセス可能であり、安全装置は、バスマスタデバイスが無許可に周辺デバイスにアクセスを試みる時、バスの少なくとも１つのラインに強制的に１つまたは複数のダミー値を並行的に書き込むことによって、少なくとも一部のトランザクションを中断させるように設定される。
【００３３】
実施例によって、本発明はさらに１つの方法を提供する。その方法は、バスに接続された安全装置を使用し、バスマスタデバイスが無許可に周辺デバイスにアクセスを試みる時、トランザクションを中断させることを決定することと、バスの少なくとも１つのラインに強制的に１つまたは複数のダミー値を並行的に書き込むことによって、少なくとも一部のトランザクションを中断させることを含む。
【図面の簡単な説明】
【００３４】
【図１】図１は、本発明の実施例による、複数のデバイスがＩ２Ｃバスを介して通信する安全システムを概略的に示すブロック図である。
【図２】図２は、本発明の一実施形態による、Ｉ２Ｃバスを介した周辺デバイスへのアクセスを保護する安全方法を概略的に示すフローチャートである。
【図３】図３は、本発明の代替実施形態による、複数のデバイスがＳＰＩバスを介して通信する安全システムを概略的に示すブロック図である。
【図４】図４は、本発明の代替実施形態による、複数のデバイスがＳＰＩバスを介して通信する安全システムを概略的に示すブロック図である。
【図５】図５は、本発明の代替実施形態による、複数のデバイスがＳＰＩバスを介して通信する安全システムを概略的に示すブロック図である。
【図６】図６は、本発明の実施形態による、安全装置を概略的に示すブロック図である
【図７】図７は、本発明の実施形態による、ホストデバイスを安全に起動する方法（セキュアブートプロセスの一例）を概略的に示すフローチャートである。
【図８】図８は、本発明の実施形態による、安全装置がＳＰＩバスを介してフラッシュメモリからホストデバイスのブートプロセスを保護する安全システムを概略的に示すブロック図である。
【図９】図９は、本発明の実施形態による、安全装置がＳＰＩバスを介してフラッシュメモリからホストデバイスのブートプロセスを保護する安全システムを概略的に示すブロック図である。
【図１０】図１０は、本発明の実施形態による、安全装置がＳＰＩバスを介してフラッシュメモリからホストデバイスのブートプロセスを保護する安全システムを概略的に示すブロック図である。
【図１１】図１１は、本発明の実施形態による、ホストデバイスを安全に起動する方法を概略的に示すフローチャートである。
【発明を実施するための形態】
【００３５】
以下、本発明について、図に示す実施形態に基づいて説明する。
【００３６】
本発明で説明される実施例は、バスインターフェースを介して周辺デバイスへのアクセスを確保するための改良された安全方法及び安全装置を提供する。周辺デバイスは、例えば、暗号エンジン、機密データを格納するメモリデバイス、またはバスを介してアクセス可能な他の適切なデバイスを含むことができる。
【００３７】
開示された一部の実施例では、安全装置（ｓｅｃｕｒｉｔｙ  ｄｅｖｉｃｅ）は、バス上のトランザクションを監視し、ホストデバイスまたはバスマスタデバイスが無許可に周辺デバイスにアクセスを試みるトランザクションを検出する。トランザクションは、任意の適切な基準または方針（ｐｏｌｉｃｙ）を使用して、許可または無許可なものとして分類することができる。
【００３８】
無許可なトランザクションを検出する時、安全装置は、トランザクションと並行して、意図的にバスの１つ以上のラインまたは信号の値に、あるダミー値を強制的に書き込むことによって、トランザクションを中断させる。ダミー値を強制的に書き込むことは、例えば、クロック信号、データ信号及び／またはチップセレクト（Ｃｈｉｐ−Ｓｅｌｅｃｔ）信号で実行することができる。
【００３９】
バス上にダミー値を強制的に書き込むことによるトランザクションの中断は、Ｉ２Ｃなどのオープンドレインまたはオープンコレクタバス、ＳＰＩなどのプッシュプルバスなどが適している。トランザクションに並行してバス上にダミー値を強制的に書き込むことは、周辺デバイスへの及び／または周辺デバイスからの通信を中断し、及び／またはそれぞれのクロック信号を中断する。
【００４０】
ここでは、Ｉ２ＣおよびＳＰＩバス上の無許可なトランザクションを中断するためのいくつかの技術について説明する。そして中断後の正常動作を正常に再開するための技術についても説明する。一部の実施例では、安全装置は、バス上でトランザクションを検出することなく、またはバスを監視なしにトランザクションを中断することができる。例えば、安全装置は、このホストデバイスが許可されるまで、またはこのホストデバイスが許可されない限り、特定のホストデバイスのチップセレクト（ＣＳ）ライン上にダミー値を強制的に書き込むことができる。
【００４１】
いくつかの実施形態では、例えば、ＳＰＩバスのうち安全装置によって保護されたバスは、周辺デバイス専用の１つ以上の専用信号と、バスを介して周辺デバイス間で共有される１つ以上の共有信号と、を含む。共有信号の例は、データおよびクロック信号である。専用信号の例は、ＣＳ信号である。いくつかの実施形態では、安全装置は、バス上の共有信号を中断せずに保持しながら、保護された周辺デバイスに関連付けられた専用信号を中断することによりトランザクションを中断するように構成される。ただし、すべてのバスに専用信号があるわけではないことに注意する必要がある。たとえば、Ｉ２Ｃでは、バス上のすべての信号は共有信号である。
【００４２】
他の実施形態では、安全装置は、保護された周辺デバイスの代わりに、無許可のホストデバイスに応答することにより、トランザクションを中断するように構成される。例示的な実施形態では、周辺デバイスは、キー、構成データ、および／またはブートコードなどの機密データを格納するために割り当てられた、１つまたは複数のアドレスゾーンを含むフラッシュメモリを備える。フラッシュメモリのＣＳ信号を選択的にオーバーライドすることにより、安全装置は、フラッシュメモリ内のデータへのアクセスをオーバーライドできる。代わりに、安全装置は、内部に保存されたデータでホストデバイスに応答する。  以下、このセキュアブートプロセスについて説明する。
【００４３】
開示された技術は、トランザクション毎の処理レベル（ｔｒａｎｓａｃｔｉｏｎ−ｂｙ−ｔｒａｎｓａｃｔｉｏｎ  ｌｅｖｅｌ）で、リアルタイムで周辺デバイスに対する安全な選択的なアクセスを提供する。本明細書で説明される技術の大部分では、トランザクションの識別および中断の両方が、バスの既存の信号を用いてのみ実行される。したがって、開示された技術は、追加のピンまたは相互接続を必要とせず、それによってシステム全体のサイズ及びコストを低減する。
【００４４】
さらに他の開示される実施形態では、安全装置は、ホストデバイスのブートプロセスを保護するように構成され、ホストデバイスは、不揮発性メモリ（ＮＶＭ）からバスを介してブートコードを取得する。たとえば、ホストデバイスはＳＰＩバスを介してＳＰＩフラッシュデバイスから起動できる。いくつかの実施形態では、安全装置は、ブートプロセス中にバスを監視し、ホストデバイスによって取得されたブートコードの少なくとも一部を既知の真正コピー、例えばブートコードイメージまたはダイジェストと比較する。もし、バスを介して取得したブートコードと安全装置が認識している既知の真正コピーとの不一致を検出された場合、レスポンシブアクションがトリガーされる。この技術により、安全装置は、さまざまなセキュリティ上の脅威、例えば、侵害されたホストデバイスまたはフラッシュデバイス、またはバス信号を経由した攻撃からシステムを保護できる。以下、セキュアブートプロセスのいくつかの実装例と変形例について説明する。
【００４５】
Ｉ２Ｃバスで周辺デバイスへのアクセスを保護する安全方法
【００４６】
図１は、本発明の実施例の安全システム２０を概略的に示すブロック図である。本発明の実施例では、システム２０は、Ｉ２Ｃバス３２に接続されたホストデバイス２４及び周辺デバイス２８を備える。ホストデバイス２４及び周辺デバイス２８は、簡潔にするためにホストデバイス及び周辺（ｐｅｒｉｐｈｅｒａｌ）とも記載される。ホストデバイス２４は、また、バスマスタデバイスと呼ばれることもある。
【００４７】
安全装置３６は、Ｉ２Ｃバス上のトランザクションを監視し、ホストデバイス２４またはバスマスタ機能を有する他のデバイスが無許可に周辺デバイスにアクセスを試みるトランザクションを防止することによって、周辺デバイス２８へのアクセスを保護する。安全装置３６は、制御装置またはＴＰＭ（Ｔｒｕｓｔｅｄ  Ｐｌａｔｆｏｒｍ  Ｍｏｄｕｌｅ）と記載されることもある。本発明の実施例では、安全装置３６は、インターフェース４０と、プロセッサー４４と、メモリー４８とを備え、インターフェース４０は、Ｉ２Ｃバス３２に接続され、プロセッサー４４は、本発明の技術を実行するように設定され、メモリー４８は、１つまたは複数のプロセッサー４４が実行する安全方針（ｓｅｃｕｒｉｔｙ  ｐｏｌｉｃｉｅｓ）を格納するように構成される。
【００４８】
プロセッサー４４は、所定または設定された任意の方針に従って、トランザクションを無許可なものに分類することができる。一般的に、無許可なトランザクションは、周辺デバイス２８にデータを書き込み、周辺デバイス２８からデータを読み取り、周辺デバイス２８に設定または命令を送信し、または他の適切な方法による周辺装置へのアクセスを試みることができる。安全装置３６が実行する方針は、ポジティブ方針（例えば、ホワイトリスト）、ネガティブ方針（例えば、ブラックリスト）、デバイスアドレスまたは抵抗器のオフセット（ｒｅｇｉｓｔｅｒ  ｏｆｆｓｅｔ）に依存する方針、または他のタイプの方針を含むことができる。
【００４９】
例えば、安全装置３６は、ホストデバイスの周辺デバイス２８へのアクセスが許可される前に、ホストデバイス２４のアイデンティティ（ｉｄｅｎｔｉｔｙ）に対する認証を要求することができる。無許可なホストデバイスによって実行されたトランザクションは、無許可のトランザクションに判断される。その認証は、例えば、ホストデバイスと安全装置の間のチャレンジレスポンス方式（ｃｈａｌｌｅｎｇｅ−ｒｅｓｐｏｎｓｅ  ｐｒｏｃｅｓｓ）を使用して実行することができる。追加的または代替的に、ホストデバイスは、他の適切な方法で自分のアイデンティティを証明し、または安全なブートプロセスを完成することが要求されることがある。
【００５０】
さらに追加的または代替的に、幾つかのタイプのトランザクション（例えば、読み取りトランザクション）は許可されたものとして判断され、他のタイプのトランザクション（例えば、書き込みトランザクション）は無許可なものとして判断されることができる。さらにもう１つの実施例では、周辺デバイスの選択されたアドレスへのアクセスは許可されたものとして判断され、他のアドレスへのアクセスは無許可なものとして判断されることができる。別の実施例として、バス上のビットシーケンス（ｂｉｔ  ｓｅｑｕｅｎｃｅｓ）は無許可なトランザクションとして判断されることができる。
【００５１】
一般的に、プロセッサー４４は、許可されたトランザクションと無許可なトランザクションとを任意の適切な方法で判断することができる。メモリー４８は、トランザクションが許可されているかを判断するための１つまたは複数の方針が格納されている。
【００５２】
Ｉ２Ｃバス３２は、シリアルデータ信号を伝達するシリアルデータ（ＳＤＡ）ラインと、シリアルクロック信号を伝達するシリアルクロック（ＳＣＬ）ラインとを備える。用語“ライン”及び“信号”は、本明細書では交換可能に使用される。ＳＤＡライン及びＳＣＬラインを監視することによって、プロセッサー４４はＩ２Ｃバス上のすべてのトランザクションを監視することができ、且つ無許可なトランザクションを検出することができる。
【００５３】
無許可なトランザクションを検出した後、プロセッサー４４は、Ｉ２Ｃバス３２上のＳＤＡライン及び／またはＳＣＬラインに１つまたは複数のダミー値を強制的に書き込むことによってそのトランザクションを中断する。この機構は、Ｉ２Ｃバスのオープンドレイン／オープンコレクタ構造によって実現されることができる。通常的に、ＳＤＡライン及びＳＣＬラインの両方は、プルアップ抵抗器を使用して、デフォルトで論理的な“１”の状態にプルアップされる。どのデバイスも、他のデバイスによって同時に書き込まれた値にかかわらず、いつでも“０”値を書き込むことによって、ＳＤＡラインまたはＳＣＬラインの論理値を強制的に“０”に変わることができる。
【００５４】
よって、一部の実施例では、無許可なトランザクションを検出すると、安全装置３６中のプロセッサー４４は、インターフェース４０を介して、Ｉ２Ｃバス３２のＳＤＡラインまたはＳＣＬライン上に論理値“０”（デフォルト論理値“１”と相反する値）を強制的に書き込む。本明細書では、“０”値はダミー値と見なされる。ＳＤＡラインに強制的に書き込まれた“０”値は、ホストデバイス２４から周辺デバイス２８に書き込まれた値、またはホストデバイス２４によって周辺デバイス２８から読み出された値、若しくはデフォルト論理値“１”などのすべてのデータ値を上書きする。ＳＣＬラインに強制的に書き込まれた“０”値は、クロック信号を停止する。上述のどちらの場合も、トランザクションは中断される。
【００５５】
一部の実施例では、プロセッサー４４は、例えば装置のパワーアップリセット（ｐｏｗｅｒ−ｕｐ  ｒｅｓｅｔ）が実行されるまで、無制限に“０”値を強制的に書き込みを続ける。他の実施例では、プロセッサー４４、中断から正常な回復を可能にする、即ち、ホストデバイス２４及び周辺デバイス２８が中断されたトランザクションから回復して正常動作を再開することを可能にする。一部のホストデバイス及び／または周辺デバイス２８は、クロック停止から回復できない。よって、シンプルなホストデバイスや周辺デバイス２８でも正常な回復が必要な場合は、ＳＣＬラインではなくＳＤＡラインにダミー値を強制的に書き込むの方が良い。
【００５６】
１つの実施例では、トランザクションが中断された後に通常の動作を再開するため、プロセッサー４４は、バス上でＩ２Ｃ停止またはＩ２Ｃ再起動状態（Ｉ２Ｃ  ＳＴＯＰ  ｏｒ  ＲＥＳＴＡＲＴ  ｃｏｎｄｉｔｉｏｎ）を生成する。本明細書では、Ｉ２Ｃ停止またはＩ２Ｃ再起動状態は、バスがトランザクション開始可能であることを対象デバイスに示すバス信号値の任意のシーケンスを含むことができる。
【００５７】
プロセッサー４４、中断されたトランザクションからの正常に回復を可能にするために様々な技術を使用することができる。１つの実施例では、プロセッサー４４は、一定時間内に強制的に“０”値を書き込み続けることは、無許可なトランザクションを中断するには充分であると見なされる。任意の長さの定義済みの時間も使用されることができる。例えば、ＳＭＢｕｓ仕様ではタイムアウトが２５ｍＳと定義される。したがって、ＳＭＢｕｓとＩ２Ｃとの応用（ａｐｐｌｉｃａｔｉｏｎｓ  ｏｆ  ＳＭＢｕｓ−ｏｖｅｒ−Ｉ２Ｃ）では、タイムアウトをトリガ（ｔｒｉｇｇｅｒ）するために、定義済みの時間を少なくとも２５ｍＳに設定するのが理にかなっている。
【００５８】
別の実施例では、プロセッサー４４は、ＳＣＬラインの論理値がＨｉｇｈ（即ち、トグルしていない（ｎｏｔ  ｔｏｇｇｌｉｎｇ））に検出されるまで、一定時間内にＳＤＡライン上に“０”値を強制的に書き込みを続ける。この状態は、ホストデバイスがトランザクションを終了または中止したことを示すことができる。プロセッサー４４は、ＳＤＡラインを解放し、場合によってはＩ２Ｃ停止条件（Ｉ２Ｃ  ＳＴＯＰ  ｃｏｎｄｉｔｉｏｎ）を生成することができる。
【００５９】
周辺デバイス２８から読み取ったトランザクションを中断させるのに有用なもう１つ実施例では、安全装置３６を周辺デバイス２８と同様なアドレスを有するＩ２Ｃスレーブとして構成される。安全装置３６中のプロセッサー４４は、“０”データを使用して、無許可の読み取り要求に応答する。周辺デバイス２８は、プロセッサー４４と並行的にこれらの読み取り要求に応答するが、そのデータ値は、安全装置３６から送信された“０”値によって上書きされる。このプロセスは、例えば停止条件によってホストデバイスがトランザクションを中断するまで続く。注意すべきは、Ｉ２Ｃ仕様に従って、Ｉ２Ｃスレーブはデータ送信する時にＡＣＫ／ＮＥＧＡＣＫビットを駆動しないことである。
【００６０】
読み取りトランザクションと書き込みトランザクションの両方を中断するのに有用な他の実施例では、プロセッサー４４がＳＤＡライン上に強制的に“０”値を書き込むことである。次に、ホストデバイス２４がこれを中断として識別していない場合に、ことトランザクションは、周辺デバイス２８から送信されたデータではなく、バス上の“０”値を介して通常に停止する。ホストデバイス２４がこの中断を検出し、（例えば、Ｉ２Ｃマルチマスタアービトレーション（ｍｕｌｔｉ−ｍａｓｔｅｒ  ａｒｂｉｔｒａｔｉｏｎ）に対応する）且つこのトランザクションを中止する場合、プロセッサー４４は、一般的に、ＳＣＬライン上で追加のクロックサイクルを生成することによって、ホストデバイス２４によって中断されたトランザクションを引き続くことができる。プロセッサー４４は、転送されている現在のバイトを補完し、停止状態（ＳＴＯＰ  ｃｏｎｄｉｔｉｏｎ）を発行することによってトランザクションを中止することができる。
【００６１】
上述した中断及び回復の技術は、単純に例として示されている。代替の実施例では、安全装置３６のプロセッサー４４は、他の任意の適切な技術を介して、トランザクションを中断する及び／または中断から回復することもできる。
【００６２】
上述の実施例では、無許可なトランザクションを検出、中断、及び中断からの回復の全ては、バスの既存のラインを介して実現される。代替の実施例では、安全装置３６及びホストデバイス２４は、バス３２の外部にある補助インターフェースによって接続される。例えば、安全装置３６及びホストデバイス２４が同じＩＣに統合され、ＩＣのＳＤＡピンとＳＣＬピンを共有する場合に実現可能である。
【００６３】
これらの実施例では、安全装置３６及びホストデバイス２４は、補助インターフェースを介して他のホストデバイスが周辺デバイス２８にアクセスしないことを検証する。例示的な実施例では、ホストデバイス２４が周辺デバイス２８にアクセスする時、ホストデバイス２４は補助インターフェースを介して安全装置３６に通知する。その通知に応じて、プロセッサー４４は、バスにダミー値“０”を書き込まない、且つトランザクションを実行させる。周辺デバイス２８にアクセスするが、補助インターフェース上で報告されていないトランザクションを検出する時、プロセッサー４４は、そのトランザクションが無許可なホストデバイスから送信されたものと見なし、強制的に“０”値を書き込むことによってそのトランザクションを中止する。
【００６４】
図２は、本発明の実施例による、Ｉ２Ｃバス３２を介して周辺デバイス２８へのアクセスを保護する方法を概略的に示すフローチャートである。この方法は、監視ステップ５０において、安全装置３６のプロセッサー４４がインターフェース４０を使用して、Ｉ２Ｃバス３２上のトランザクションを監視することから始まる。
【００６５】
トランザクション検出ステップ５４において、プロセッサー４４は、ホストデバイス２４が周辺デバイス２８にアクセスしようとするトランザクションを識別する。チェックステップ５８において、プロセッサー４４は、トランザクションが許可されたか否かをチェックする。例えば、プロセッサー４４は、このトランザクションがメモリー４８に格納された安全方針に違反しているかをチェックすることができる。
【００６６】
このトランザクションが許可されていれば、プロセッサー４４は、許可ステップ６２でトランザクションを正常に進める、一方、トランザクションが無許可であると判断された場合、プロセッサー４４は、ステップ６６でダミー値“０”をＩ２ＣバスのＳＣＬ及び／またはＳＤＡラインに強制的に書き込むことによってこのトランザクションを中断する。
【００６７】
ＳＰＩバス上で周辺デバイスへのアクセスを保護する安全方法
【００６８】
図３は、本発明の代替の実施例による、安全システム（ｓｅｃｕｒｅｄ  ｓｙｓｔｅｍ）７０を概略的に示す的ブロック図である。図３に示されるように、システム７０は、ホストデバイス７４と、周辺デバイス７８と、安全装置８６とを含み、これらは、いずれもＳＰＩバス８２に接続される。
【００６９】
ホストデバイス７４が無許可に周辺デバイス７８にアクセスしようとする時、安全装置８６はそのトランザクションを識別して中断する。本発明の実施例では、安全装置８６は、ＳＰＩバス８２に接続するインターフェース９０と、開示された技術を実行するように構成されたプロセッサー９４と、１つまたは複数のプロセッサー９４によって実行される安全方針を格納するように構成されたメモリー９８とを含む。
【００７０】
許可されたトランザクションと無許可なトランザクションとを区別する安全方針、及び安全装置８６のプロセッサー９４が無許可なトランザクションを識別する方法は、上述したシステム２０と本質的に同様である。以下で説明される技術と上で説明された技術との区別は、安全装置８６が無許可なトランザクションを中断するために、バス８２上にダミー値を強制的に書き込むことである。
【００７１】
ＳＰＩバス８２は、クロック（ＣＬＫ）ラインと、ＭＯＳＩ（Ｍａｓｔｅｒ−Ｏｕｔ  Ｓｌａｖｅ−Ｉｎ）及びＭＩＳＯ（Ｍａｓｔｅｒ−Ｉｎ  Ｓｌａｖｅ−Ｏｕｔ）と呼ばれる２本のデータラインを含む。ＣＬＫ、ＭＩＳＯ及びＭＯＳＩラインは、すべてのデバイス（本実施例中ではデバイス７４、７８及び８６）に共通である。また、各スレーブデバイスは、専用のチップセレクト（ＣＳ）ラインを使用して選択可能である。本実施例では、ホストデバイス７４は、ＣＳ２＃に示されるＣＳラインを使用して周辺デバイス７８を選択し、且つＣＳ１＃に示されるＣＳラインを使用して安全装置８６を選択する。
【００７２】
マスタであるホストデバイス７４は、すべてのＣＳラインに接続される。一方、周辺デバイス７８はスレーブであるため、各周辺デバイス７８は専用のＣＳラインのみに接続される。一般的には、ホストデバイス７４は、それぞれのＣＳラインを使用して、所要の周辺デバイス７８を選択することによってトランザクションを開始し、次にＣＬＫ、ＭＯＳＩ及びＭＩＳＯラインを使用してデバイスと通信する。ＭＯＳＩラインは、ホストデバイス７４から周辺デバイス７８への送信に使用され、ＭＩＳＯラインは、周辺デバイス７８からホストデバイス７４への送信に使用される。
【００７３】
安全装置８６は、通常のＳＰＩスレーブと異なり、スレーブとして定義されたことにもかかわらず、すべてのＣＳラインを駆動することができる。図３に示すように、安全装置８６のインターフェース９０は、ホストデバイス７４と並列的にＣＳ２＃ラインを駆動するように構成される。システム７０がそれぞれのＣＳラインを有する周辺デバイス７８を含む場合、安全装置８６は、ホストデバイス７４と並列的にいずれかのＣＳラインを駆動するように構成される。
【００７４】
一部の実施例では、システム７０は、ホストデバイス７４及び安全装置８６が相反する論理値でＣＳラインを駆動する時、安全装置８６によって駆動された論理値がホストデバイス７４によって駆動された論理値を上書きするように設定される。換言すれば、ホストデバイス７４及び安全装置８６が相反する論理値出ＣＳラインを駆動する時、周辺デバイス７８は安全装置８６によって駆動される論理値を受信し動作する。
【００７５】
ＣＳライン（の信号）を上書きすることは、バス上のトランザクションを中断することによって、ホストデバイス７４と周辺デバイス７８の間の無許可なトランザクションを中断するもう１つの例である。上述の上書き機構は、様々な方法で実行することができる。以下の説明は、周辺デバイス７８を選択する時に使用されるＣＳ２＃ラインに関するが、複数の周辺デバイス７８及びそれぞれのＣＳラインを使用する場合、同じ機構も適用する。
【００７６】
１つの実施例では、安全装置８６によってインターフェース９０内のＣＳ２＃ラインを駆動するラインドライバは、ホストデバイス７４によってＣＳ２＃ラインを駆動するラインドライバより強い。代替的な実施例では、直列抵抗器１００は、ホストデバイス７４の出力でＣＳ２＃ラインに挿入されてもよい。抵抗器１００は、安全装置８６のＣＳ２＃ラインドライバの出力に対して、ホストデバイス７４のＣＳ２＃ラインドライバの出力を減衰させる。さらに代替的には、安全装置８６は、任意の他の適切な方法でＣＳ２＃ラインを駆動するホストデバイス７４（の信号）を上書きするように構成することができる。
【００７７】
安全装置８６のプロセッサー９４は、ＳＰＩバス８２のＣＳ＃ライン、ＣＬＫ、ＭＩＳＯ及び／またはＭＯＳＩラインを監視することによって、任意の適切な方法で無許可なトランザクションを識別することができる。一部の実施例では、ホストデバイス７４が無許可である周辺デバイス７８にアクセスのトランザクションを識別する時、安全装置８６のプロセッサー９４は、周辺デバイス７８のＣＳラインを無効にする（ｄｅ−ａｓｓｅｒｔｉｎｇ）ことによってトランザクションを中断する。安全装置８６は、ホストデバイス７４がＣＳ２＃ラインにの駆動を上書きするように構成されるので、周辺デバイス７８は選択解除され、トランザクションは中断される。一方、トランザクションが許可されることが確定すると、プロセッサー９４は自分のＣＳ２＃ドライバを停止し、それによってホストデバイス７４が中断することなく周辺デバイス７８にアクセス可能になる。
【００７８】
図４は、本発明のもう１つの実施例による、安全システム１１０を概略的に示すブロック図である。システム１１０はまた、図３のシステム７０と同様に、ＳＰＩバス８２に基づいている。しかしながら、システム１１０では、ＣＳライン（の信号）を上書きする代わりに、安全装置８６は、ＣＬＫライン、ＭＩＳＯライン及び／またはＭＯＳＩライン上にダミー値を強制的に書き込むことによって、無許可なトランザクションを中断する。
【００７９】
本実施例では、システム１１０は、安全装置８６がＣＬＫライン、ＭＩＳＯラインＭ及び／またはＭＯＳＩラインを駆動する時、ホストデバイス７４（の信号）を上書きするように構成される。図面に示されるように、この目的を達成するため、直列抵抗器１００をＣＬＫライン、ＭＩＳＯライン及びＭＯＳＩラインに挿入される。本実施例でのＣＳ２＃ライン（の信号）は上書きされてないため、ＣＳ２＃ラインに直列抵抗器を挿入しない。
【００８０】
他の実施例では、安全装置８６内のＣＬＫライン、ＭＩＳＯライン及び／またはＭＯＳＩラインのラインドライバをホストデバイス７４内の対応するラインドライバより強くすることによって、その上書き機構を実行することができる。
【００８１】
他の実施例では、同時にＣＳライン（図３に参照）及びＣＬＫライン、ＭＩＳＯライン及び／またはＭＯＳＩライン（図４に参照）（の信号）を上書きする混合方案（ｈｙｂｒｉｄ  ｓｃｈｅｍｅｓ）も実現可能である。
【００８２】
専用のポイントツーポイント信号を無効にして周辺デバイスへのアクセスを保護する。
【００８３】
バス（例えばＳＰＩバス）信号は、共有信号と専用信号に分けられる。共有信号は、バス上の複数の（例えばすべての）周辺デバイスに並列に接続されている信号である。  共有ＳＰＩ信号の例は、例えばデータ（ＭＯＳＩおよびＭＩＳＯ）およびクロック（ＣＬＫ）信号である。専用信号は、特定の周辺デバイス専用の信号である。バスの一部である専用信号の一例は、チップセレクト（ＣＳ）信号である。さらに、バスは帯域外の専用信号、たとえば、（周辺デバイスにメモリデバイスが含まれる場合）書き込み保護（ＷＰ）信号まで増強されることができる。専用信号は、ポイントツーポイント（ＰＴＰ）ラインとも呼ばれる。
【００８４】
いくつかの実施例では、１つまたは複数の専用信号が周辺デバイスに到達する前に安全８６を通過するが、共有信号は従来のように周辺デバイスにルーティングされ、安全装置８６を通過しない。以下に説明するように、この相互接続スキームにより、安全装置は周辺デバイスを効果的に保護することができる。
【００８５】
図５は、本発明の実施形態による、安全システム１３０を概略的に示すブロック図である。安全システム１３０は、図３の安全システム７０と似ているが、ＣＳ２＃信号は周辺デバイス７８の入力を直接駆動しない。その代わりに、ホストデバイス７４からのＣＳ２＃ラインが安全装置８６に入力され、安全装置８６は、周辺デバイス７８の入力に接続されているＣＳ２＿Ｏ＃信号を駆動する。
【００８６】
この実施形態では、ＣＳ２＃信号は、安全装置を介して保護された周辺デバイスに接続された専用ＰＴＰ信号の一例として機能する。  図に示すように、ホストデバイス７４と周辺デバイス７８の間の共有信号（ＭＯＳＩ、ＭＩＳＯ、およびＣＬＫ）は中断されることはない。
【００８７】
安全装置８６は、ＣＳ２＃信号が周辺デバイスに到達することを選択的に可能にする、またはＣＳ２＃信号が周辺デバイスに到達するのを防止することにより、ホストデバイス７４と周辺デバイス７８間のトランザクションを中断するように構成される。上記選択的な操作は、図５の制御信号ＭＡＳＫ＿ＣＳ２＃をアサート（ａｓｓｅｒｔ）またはディアサート（ｄｅａｓｓｅｒｔ）することによって実行される。
【００８８】
図６は、本発明の一実施形態による図５に示す安全システム１３０の安全装置８６のブロック図である。この例では、安全装置８６は、ＳＰＩバス８２に接続するためのインターフェース９０と、上記の開示された技術を実行するように設定されたプロセッサー９４と、プロセッサー９４によって実施される１つまたは複数のセキュリティポリシーを格納するように設定されたメモリ９８とを備える。プロセッサー９４は、スレーブインターフェース論理回路９１と、インターフェースモニター論理（ＩＭＬ）９２とを含む。  スレーブインターフェース論理回路９１は、安全装置８６とホストデバイス７４との間の通信を処理するように構成される。  ＩＭＬ９２は、ホストデバイス７４の周辺デバイス７８へのアクセスを監視、制御、及び選択的に上書きするように構成される。
【００８９】
１つの実施形態では、安全装置８６は、ホストデバイス７４が無許可にＳＰＩバス８２上の周辺デバイス７８にアクセスしようとするトランザクションを識別し、妨害させる。図５および図５に示すように、図３で説明した安全システムの如何なる安全機能を図５の安全システムにも実現することができる。
【００９０】
上記の実施形態では、安全装置はバスに接続され、追加のスレーブデバイスとして機能するが、他の実施形態では、安全装置はマスターデバイスとして接続されてもよい。その場合、例えばマルチマスター機能をサポートするバスプロトコルに適用されてもよい。
【００９１】
周辺デバイスの代わりに応答する安全装置による無許可なトランザクションに対する保護
【００９２】
別の実施形態では、安全装置８６は、周辺デバイス７８に代わって選択されたホストデバイスのトランザクションに応答する。以下の説明は、主に図１および図２の構成を参照する。  上記の図５と図６は、単なる例である。一般に、開示された技術は、この特定のシステム構成に限定されず、他の構成、例えば上記の図３または図４の構成を使用して適用されてもよい。
【００９３】
図５および図６の構成に関連する例示的な実施形態では、周辺デバイス７８のアドレス空間内の特定のアドレスゾーンから読み取りコマンドが検出されると、ＩＭＬ  ９２はＣＳ２＿Ｏ＃の信号レベルを強制的に「Ｈｉｇｈ」にし、安全装置の内部メモリ９８でホストデバイスの読み取りコマンド（または読み取りコマンドの一部）に応答する。ホストデバイス７４は通常、応答が周辺デバイスからのものではないことを認識していない。いくつかの実施形態では、このシナリオは、図４の安全システム１１０にも適用可能であり、例えば、ＭＩＳＯ信号が安全装置によって上書きされる場合に適用される。
【００９４】
このメカニズムの使用例の１つによる安全システムでは、周辺デバイス７はＳＰＩフラッシュメモリデバイスを備える。そして、安全装置８６は、フラッシュアドレス空間の一部を無効にすることで、そのアドレスゾーンに安全なフラッシュエミュレーションを提供するように構成される。例えば、安全装置８６は、ＩＭＬ９２を使用して、初期ホストデバイスブートコード（ブート時にホストデバイスによってフェッチされる最初のブートコマンド）を含むフラッシュアドレスゾーンを上書きするＴＰＭ（Ｔｒｕｓｔｅｄ Ｐｌａｔｆｏｒｍ Ｍｏｄｕｌｅ）を備えてもよい。ＴＰＭは、自己完結型（ｓｅｌｆ−ｃｏｎｔａｉｎｅｄ）の認証済み初期ブートコードでフラッシュアドレスゾーンを上書きすることができる。たとえば、残りのコードにジャンプする前に認証する。
【００９５】
一部の実施形態では、安全装置８６は、ＳＰＩフラッシュデバイス用のマスターインターフェースをさらに備える。また、安全装置８６は、システムブートプロセスの一部として、ＳＰＩフラッシュデバイスにアクセスしている間、ホストデバイス７４をリセット状態に維持する適切なインターフェースおよび回路を備えてもよい。安全装置８６は、例えば、組み込みコントローラ（ＥＣ）、スーパーＩ  ／  Ｏ（ＳＩＯ）またはベースボード管理コントローラ（ＢＭＣ）デバイスであり得る。
【００９６】
図７は、本発明の実施形態によるセキュアブートプロセスの一例を概略的に示すフローチャートである。この方法は、電源投入、つまりシステム電源のアサートから始まる。リセット維持ステップ１００において、安全装置８６は、ホストデバイス７４をリセット状態に維持し、オプションでＳＰＩフラッシュメモリ（周辺デバイス７８）をアサートする。初期ローディングステップ１０４（オプション）において、安全装置８６は、ＳＰＩフラッシュメモリからデータセグメントをロードし、データセグメントの真正性を検証し、それを内部メモリ９８に保存する。
【００９７】
上書きステップ１０８では、安全装置８６は、ＩＭＬ９２を設定して、ＳＰＩフラッシュ（周辺デバイス７８）内の少なくとも１つの（例えば、ホストデバイス７４の１つ以上のキー、構成データ、および／または初期起動データセグメントを格納する）所定のアドレスゾーンへのアクセスを上書きする。。
【００９８】
リセット解除ステップ１１２では、安全装置８６はホストデバイスをリセットから解除する。ブートステップ１１６では、ホストデバイス７４はブートプロセスを開始する。ブートプロセスの一部として、ゾーンアクセルサブステップ１２０において、予め定義されたアドレスゾーンへのアクセスは、安全装置８６によって内部メモリ９８を介して処理される。
【００９９】
このようにして、キー、構成データ、初期ブートコードなどの機密情報を安全装置から安全に提供できる。ホストデバイス７４は、この情報がＳＰＩフラッシュからではなく安全装置から提供されるという事実を認識することはない。
【０１００】
図７の安全方法は、安全装置が周辺デバイスの予め定義されたアドレスゾーンへのアクセスを上書きする安全方法を示す例である。他の実施形態では、この目的のために他の適切な安全方法を使用することができる。また、ＳＰＩフラッシュデバイスを装われた時に、安全装置は、他の適切な方法で無許可なトランザクションを上書きおよび／または中断することにより、フラッシュデバイス（または他の周辺デバイス）を保護できる。
【０１０１】
さらに、不正なトランザクションの上書きは、特定の事前定義されたアドレスゾーンの保護に限定されない。例えば、保護されたペリフェラルから返されたデータまたはＳＰＩコマンドコードに基づいて、上書きがトリガーされる場合もある。たとえば、安全装置は、セキュリティポリシーを実装して、フラッシュデバイスのプログラミング、消去、書き込みの有効化、ステータス／構成命令、および／またはその他の命令または機能を無効にすることができる。２０１５年８月２４日にＷｉｎｂｏｎｄ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｃｏ．、Ｌｔｄ．より発行されたドキュメント「デュアル／クワッドＳＰＩおよびＱＰＩを備えたＳＰＩ  ３Ｖフラッシュメモリ」には、ＳＰＩフラッシュメモリの命令と制御の仕様例について記載されている。
【０１０２】
別の例として、図７の安全方法では、機密情報はフラッシュデバイスに常駐し、ブートプロセスの一部として安全装置によって読み取られる。他の実施形態では、機密情報は最初から安全装置に（フラッシュメモリに加えて、またはフラッシュメモリの代わりに）保存されてもよい。その場合、この情報をフラッシュデバイスから安全装置に読み取る必要はない。
【０１０３】
さらに別の実施例では、図７に示すように、ＳＰＩバスを使用したる安全方法に関して説明されている。他の実施形態では、安全装置は、バスの専用信号（もしあれば）および／または共有信号を使用して、他のバスおよびプロトコルを介した周辺デバイスの予め定義された所定のアドレスゾーンへのアクセスを上書きする。たとえば、Ｉ２Ｃバスはプルアップ双方向バスであり、複数のスレーブデバイスと複数のマスターデバイスをサポートするように設計されている。そのため、プロトコルにはデバイス間の競合を処理するためのメカニズムが組み込まれている。例えば、Ｉ２Ｃデバイスが「１」（プルアップ）を設定しようとしてＳＤＡラインで「０」を検出すると、デバイスは競合を想定し、次のトランザクションまでバスを解放する。一実施形態では、Ｉ２Ｃ安全装置（例えば、図１のデバイス３６）は、別の周辺スレーブ（例えば、図１のデバイス２８）のアドレス空間の一部と重複するように構成される。例えば、安全装置は、他の周辺デバイスから期待されるデータと同じデータに応答するように構成できる。もし、安全装置がデータの不一致を検出した場合たとえば、ＳＤＡラインで「１」をプルアップしようとしたが「０」を検知した場合）、レスポンシアクション（停止条件の生成、１つ以上のデータライン上で「０」で駆動、無限クロックストレッチを設定、またはその他の適切なアクション）を開始することができる。この技術は、従来のＩ２Ｃスレーブデバイスを使用して（物理層でハードウェアを変更することなく）、データレベルまでデバイスを監視できる。
【０１０４】
さらに別の実施形態では、安全装置８６（ＩＬＭ９２を使用）は、ＳＰＩアドレスのデータフェーズも監視する。データの不一致を検出すると、安全装置は、たとえば、トランザクションの切断、システムのリセット、キーへのアクセスのロック、またはその他の適切なアクションによって、レスポンシアクションを開始する。
【０１０５】
例示的なシナリオでは、安全装置８６は、ＳＰＩフラッシュに格納された特定のコードセクションの署名（ｓｉｇｎａｔｕｒｅ）またはダイジェストを保持する。安全装置は、バックグラウンドでこのコードセクションの署名またはハッシュを計算しながら、ＳＰＩフラッシュへのホストデバイス７４のアクセスを監視する。間違った署名、ハッシュ、またはＳＰＩフェッチシーケンスが検出された場合、安全装置８６は適切なレスポンシアクションを開始できる。
【０１０６】
さらに別の実施形態では、安全装置は、バス８２上の複数の周辺機器７８を監視し、例えば、異なるデバイスへのアクセス順が予想通りかどうかを検証することができる。
【０１０７】
さらに別の実施形態では、安全装置８６は、（ＣＳ以外の）１つ以上の信号を使用して、周辺デバイス７８へのアクセスを制限するか、特定のシステム状態を強制する。非限定的な例として、以下のような信号を含む。
【０１０８】
・図４の安全システムを参照して説明したいずれの信号。
【０１０９】
・フラッシュメモリの書き込み保護（ｗｒｉｔｅ−ｐｒｏｔｅｃｔ）信号。
【０１１０】
・リセット信号の制御。
【０１１１】
・電源管理（ｐｏｗｅｒ  ｍａｎａｇｅｍｅｎｔ）信号の制御。
【０１１２】
・１つ以上のデバイスの電源の制御。
【０１１３】
・システム通信の無効化（たとえば、ネットワークインターフェイスコントローラー（ＮＩＣ）を無効にする。
【０１１４】
・システムのリセット。
【０１１５】
ＳＰＩバスを監視する安全装置による、フラッシュメモリからのホストデバイスの安全起動
【０１１６】
上述の実施形態では、ブートプロセスを保護するために、フラッシュメモリに代わって安全装置がホストデバイスにブートコードを提供する。以下で説明する他の実施形態では、ホストデバイスは、バス、たとえば、ＳＰＩバスを介してフラッシュメモリからそのブートコードを取得する。  安全装置は、バス上のホストデバイスのメモリアクセストランザクションを監視することにより、ブートプロセスを保護する。安全装置は、ホストデバイスのートコードおよび／またはそのダイジェストの少なくとも一部の真正コピーを保持またはアクセスする。安全装置は、（必要に応じてダイジェストを計算した後）ホストデバイスがフラッシュメモリから取得したブートコードと真正コピーを比較し、不一致を検出するとレスポンシアクションを開始する。
【０１１７】
開示された技術により、安全装置は、さまざまなセキュリティ脅威、例えば、侵害されたホストデバイスまたはフラッシュデバイス、またはバス信号への攻撃から保護することができる。以下の説明では、例としてＳＰＩバスとＳＰＩフラッシュメモリについて説明するが、開示された技術は、他の適切なバスおよび他の適切な不揮発性メモリ（ＮＶＭ）に同様の方法で適用可能である。
【０１１８】
様々な実施形態において、真正コピーは、ブートコードの少なくとも一部の真正イメージ、すなわち、１つ以上のブートコード命令のリストを含む。イメージ内の命令の順序は、ブートコードでの表示順、ブートコードが実行されるときの（必ずしも順序ではない）実行順、またはその他の順序である場合がある。他の実施形態では、本物のコピーは、ブートコードの少なくとも一部の本物のダイジェストを含む。ダイジェストは、ブートコードの適切な部分、またはブートコード全体で計算された適切な関数を含むことができる。ダイジェストには、ブートコードの適切な部分で計算された適切な関数、またはブートコード全体が含まれてもよい。例示的な実施形態では、ダイジェスト（署名とも呼ばれる）は、ハッシュ値または署名付きハッシュ値（ｓｉｇｎｅｄ  ｈａｓｈ  ｖａｌｕｅ）を含んでもよい。本発明では、ダイジェストとは、たとえば、ＳＨＡ−２５６のようなセキュアハッシュアルゴリズム、ＨＭＡＣ  ／  ＣＭＡＣのようなスキームを使用したコード署名、または他の適切なアルゴリズムを指す。
【０１１９】
また、「真正」という用語は、イメージまたはダイジェストが破損していなく、信頼性が高いため、信頼することができることを意味する。明確に説明するために、真正イメージまたは真正ダイジェストは、ホストデバイスのブートコードの少なくとも一部の「真正コピー」と呼ばれる。以下の例では、真正コピーは安全装置の不揮発性メモリに内部的に保存されている。また、他の実施形態では、真正コピーは、安全装置の外部の不揮発性メモリに保存されてもよい。後の実施形態では、真正コピーには、安全装置に保存されている適切なセキュアキーによって署名されてもよい。
【０１２０】
以下の構成は、一例として、クロック信号ＣＬＫ、チップセレクト信号ＣＳ＃、および４つのデータラインＤ０〜Ｄ３を持つＳＰＩバスを参照している。他のバスタイプでは、ラインの数とタイプが異なる場合があります。  たとえば、単一のデータ回線ＳＰＩでは、回線数が少なくなる場合がある。本発明は任意のタイプのバズで実現できる。
【０１２１】
図８は、本発明の実施形態による安全システム１４０のブロック図であり、安全システム１４０の安全装置１５６は、ホストデバイス１４４がＳＰＩバス１５２を介してフラッシュメモリ１４８からブートプロセスを読み取ることを保護する。安全装置１５６は、ＳＰＩバス１５２に接続するためのインターフェース１６０と、本明細書で説明される安全方法を実行するためプロセッサー１６４とを備える。プロセッサ１６４―は、ホストデバイス１４４のブートコードの少なくとも一部の真正コピー１６８（例えば、イメージまたはダイジェスト）を保持するか、アクセスする。本実施形態では、フラッシュデバイス１４８を選択するためのチップセレクト（ＣＳ＃）ラインも、安全装置１５６への入力として提供される。
【０１２２】
図９は、本発明の実施形態による安全システム１７０のブロック図であり、安全システム１７０の安全装置１７４は、ホストデバイス１４４がＳＰＩバス１５２を介してフラッシュメモリ１４８からブートプロセスを読み取ることを保護する。安全装置１７４は、ＳＰＩバス１５２に接続するためのインターフェース１７８と、本明細書で説明される安全方法を実行するためプロセッサー１８２とを備える。プロセッサー１８２は、ホストデバイス１４４のブートコードの少なくとも一部の真正コピー１８６（例えば、イメージまたはダイジェスト）を保持するか、アクセスする。この実施形態では、ＳＰＩバス１５２のすべてのライン（本実施例では、４つのデータラインＤ０〜Ｄ３、クロックラインＣＬＫ、およびフラッシュデバイス１４８を選択するためのＣＳ＃ラインを含む）が安全装置１７４への入力として提供される。
【０１２３】
図１０は、本発明の実施形態による安全システム１８９のブロック図であり、安全システム１８９の安全装置１８７は、ホストデバイス１４４がＳＰＩバス１５２を介してフラッシュメモリ１４８からブートプロセスを読み取ることを保護する。安全装置１８７は、本明細書で説明する方法を実行するハードウェアおよび／またはソフトウェアモジュールであるＳＰＩバスモニター１８８を備える。また、安全装置は、ホストデバイス１４４のブートコードの少なくとも一部の真正コピーを保持するメモリ（図示されず）をさらに含む。
【０１２４】
図１０の例では（上記の図８および９の例とは対照的に）、ＳＰＩバスのフラッシュ  ＣＳ＃ラインが安全装置１８７を通過するようになっているため、安全装置１８７は、ホストデバイス１４４とフラッシュ１４８の間で信号を切断および／または変更することができる。この例では、データライン（Ｄ０…Ｄ３）、クロックライン（ＣＬＫ）、およびフラッシュデバイス１４８を選択するためのＣＳ＃ラインは、すべて安全装置１８７を通過するため、ホストデバイスをフラッシュデバイスから切断せずに、ＳＰＩバスモニターに送られる対応する信号分岐を切断することが困難である。データおよびクロックラインは中断されないが、ＣＳ＃ラインはＳＰＩバスモニター１８８によって変更できる。例えば、ＳＰＩバスモニタ１８８は、バスを介して検索されたブートコードが真正コピーと一致しない場合、ＣＳ＃ラインをデアサート（例えば、Ｈｉｇｈに設定）し、ブートプロセスを中断させる。
【０１２５】
図１１は、本発明の一実施形態による、フラッシュデバイス１４８からホストデバイス１４４を安全に起動する安全方法を概略的に示すフローチャートである。本方法の変形は、本明細書に記載されている安全装置（たとえば、図８、９と１０に示される安全装置１５６、１７４と１８７）のいずれかによって実行することができる。簡潔に説明するために、「安全装置によって」実行されるアクションは、実際には、安全装置のプロセッサー、たとえばプロセッサー１６４または１８２、またはＳＰＩバスモニタ１８８によって実行される。
【０１２６】
図１１に示す安全方法は、まず、リセット保持ステップ１９０において、安全装置はホストデバイス１４４をリセット状態に保持する。次に、コピー取得ステップ１９４において、ホストデバイスがリセット状態になると、安全装置は、ホストデバイスのブートコードの少なくとも一部（イメージやダイジェストなど）の真正コピーを取得する。真正コピーが外部メモリから取得され、署名されている場合、安全装置は通常、続行する前にこのコピーの信頼性を検証する。他の実施形態では、例えばシステム生産中またはシステムがエンドユーザーに提供される前の他の段階で、真正コピーを安全装置に事前にプログラムすることができる。その場合、ステップ１９０および１９４は省略されてもよい。
【０１２７】
次に、ブート開始ステップ１９８において、安全装置はリセット状態からホストデバイス１４４を解放し、ホストデバイスはブートを開始する。ブートプロセスにおいて、ホストデバイス１４４はＳＰＩバス１５２を介してフラッシュデバイス１４８からブートコードを取得し、取得されたブートコードを実行する。
【０１２８】
ホストデバイスのブートプロセス中、監視および比較のステップ２０２において、安全装置はバスを介して転送されるデータを監視し、取得するブートコードの少なくとも一部を抽出し、このコードを真正コピーと比較する。
【０１２９】
一実施形態では、安全装置は、ホストデバイスがアクセスしている（ブートコード用のアドレスとして指定される）アドレスを識別することにより、ブートプロセスに関連するトランザクションを識別することができる。
【０１３０】
一実施形態では、真正コピーがブートコードの一部のイメージを含む場合、安全装置は通常、バスを介して検索された生のデータ値（ｒａｗ  ｄａｔａ  ｖａｌｕｅｓ）を真正コピーに対応するデータ値と比較する。また、真正コピーがブートコードの一部のダイジェストを含む場合、安全装置は通常、バスを介して取得したコードのダイジェストを計算し、計算されたダイジェストを真正コピーと比較する。
【０１３１】
一致性チェックステップ２０６において、安全装置は、ホストデバイスによってフラッシュデバイスから取得されている（ＳＰＩバスの監視から抽出される）ブートコードが真正コピーと一致するかどうかをチェックする。一致する場合、安全装置は、成功完了ステップ２１０において、ブートプロセスが正常に完了することを許可する。一方、一致しない場合、すなわち、不一致が検出された場合、安全装置は、対策開始ステップ２１４において、ブートプロセスが危険にさらされたと想定し、適切なレスポンシアクションを開始する。
【０１３２】
図１１は、概念を明確にするために純粋に描かれているフローの例である。他の実施形態では、他の任意の適切なフローを使用することができる。  たとえば、安全装置が必ずしもホストデバイスをリセット状態に保持する必要がない。他の実施形態では、例えば、安全装置は、ホストデバイスのブートプロセスが開始される前または後に、ホストデバイスをストールさせることなく真正コピーを取得してもよい。
【０１３３】
また、場合によっては、ＳＰＩバス上のトランザクションから抽出されたブートコードの少なくとも一部のダイジェストを計算するときに、ダイジェストがシステム状態またはその他のパラメーターの影響を受ける場合がある。そのため、ダイジェストは２つ以上の異なる真正コピーと合法的に一致する場合がある。  したがって、いくつかの実施形態では、安全装置は、ダイジェストの複数の異なる真正コピーを保持するようになっている。そして、安全装置は、バスから抽出されたコードから計算されたダイジェストを複数の真正コピーと比較する。計算されたダイジェストが真正コピーのいずれかと一致する場合、安全装置はブートプロセスの完了を許可する。一方、計算されたダイジェストがどの真正コピーとも一致しない場合、安全装置はレスポンシブアクションをトリガーする。
【０１３４】
様々な実施形態では、安全装置は、一致性チェックステップ２０６で不一致を検出すると、様々なレスポンシアクションを実行または開始することができる。レスポンシアクションのいくつかの非限定的な例を以下に示す。
【０１３５】
・システムのリセットをトリガーする
【０１３６】
・ＳＰＩバス１５２の少なくとも１つのラインで１つ以上のダミー値を強制的に書き込むことにより、ブートプロセスを中断する。本明細書に記載された中断技術のいずれも適用できる。
【０１３７】
・ホストデバイスとＮＶＭデバイス間のＳＰＩバスの１つ以上のライン、たとえばフラッシュＣＳ＃信号を中断することにより、ブートプロセスを中断する。
【０１３８】
・ホストデバイスとＮＶＭデバイス間のＳＰＩバスの１つまたは複数のラインの信号を上書きする。つまり、バス上で元の信号と矛盾する信号を強制的書き込む。
【０１３９】
・フラッシュデバイスの代わりにＳＰＩバスを介してホストデバイスに応答し、真正コピーを使用してブートプロセスを完了する。
【０１４０】
・ホストデバイスが安全装置のリソース（たとえば、安全装置に保存されている特定の秘密情報）にアクセスできないようにする。
【０１４１】
・内部メモリ（ＲＡＭやＯＴＰなど）にアラートまたはエラーログイベントを記録するか、アラートを発行する。
【０１４２】
・その他の適切なレスポンシアクションまたはアクションの組み合わせ。
【０１４３】
いくつかの実施形態において、安全装置は、オンザフライ（ｏｎ−ｔｈｅ−ｆｌｙ）で、すなわち、ブートプロセスがまだ進行中に、（検索されたブートコードと真正コピーとの間の）不一致を検出する。これらの実施形態では、例えば、ブートプロセスを中断させるレスポンシアクションが効果的である。
【０１４４】
他の実施形態では、安全装置は、オフライン（例えばバックグラウンド）で不一致を検出する。ここの「オフライン」とは、安全装置がブートプロセスの進行とは別に不一致を検出することを意味する。そのため、不一致の検出はブートプロセスのクリティカルパスにはなく、ブートプロセスによる起動時の遅延にほとんどまたはまったく影響を与えない。オフラインでの不一致の検出は、ブートプロセスが完了した後、またはブートプロセスの進行と並行または準並行して実行される。これらの実施形態では、安全装置は通常、真正コピーとオフラインで比較するために、取得されたブートコード（の少なくとも一部）をメモリバッファに保存する。また、安全装置は、オフラインで不一致を検出するために、ホストデバイスをリセット状態に保持したり、停止させたりする必要はない。
【０１４５】
いくつかの実施形態では、安全装置は、ブート中に許可されるＳＰＩコマンドの構成可能な「ホワイトリスト」を保持するか、アクセスできる。バスを監視する際、安全装置はホワイトリストに従ってたとえば、リストに表示されるコマンドのみが実際にフラッシュデバイスに到達するように、ＳＰＩコマンドをフィルター処理する。このリストは、コマンドのタイプやアクセスされるアドレスを制限できる。たとえば、指定されたアドレス範囲内からの読み取りコマンドは許可されるが、書き込みコマンド、または指定されたアドレス範囲外の読み取りコマンドは禁止される。
【０１４６】
図１、３〜６．８〜１０に示す安全システム２０、７０、１１０、１３０、１４０、１７０、１８９の構成、及びさまざまな安全装置やバスなどのさまざまなシステムの構成は、単に概念を明確にするために描かれた構成例である。代替実施形態では、任意の他の適切な構成を使用することができる。
【０１４７】
図では、わかりやすくするために、単一の周辺デバイスと単一のホストデバイスのみを示しているが、いくつかの実施形態では、安全システムは、２つ以上の周辺デバイスおよび／または２つ以上のホストデバイスを備えてもよい。本明細書で説明される実施形態は、例としてＩ２ＣおよびＳＰＩバスに言及しているが、帆本発明はこれに限定されない。必要に応じて、他の適切なタイプのバスで本発明を実施することができる。
【０１４８】
上記のように、安全装置はＳＰＩバス上のスレーブとして構成できる。しかし、開示された実施形態では、安全装置は、ホストデバイスからそうするように要求されていなくても、ブートプロセスを保護することができる。さらに、いくつかの実施形態では、安全装置は、ブートプロセス中に１つまたは複数の「ネガティブテスト」を実行する。たとえば、安全装置は、ＣＳ＃ラインがアサートされていない間（たとえば論理Ｈｉｇｈ）に、データラインまたはクロックラインのいずれかの論理状態が変化する（「トグル」）かどうかを確認できる。一部の安全システムでは、ブート時にフラッシュデバイスが選択されていない場合、ＳＰＩラインは論理Ｈｉｇｈと論理Ｌｏｗの間で変化ないはずである。たとえば、他のＳＰＩスレーブがバス上にないため、または他のスレーブが存在する場合でも、ブート時にアドレス指定されることは想定されていないため、ＣＳ＃がアサートされていない（Ｌｏｗ）ときにデータまたはクロックラインがトグルする場合は、攻撃されていることを示している可能性がある。安全装置は、この表示を使用して適切なレスポンシアクションをトリガーできる。
【０１４９】
安全装置が実行できる別の整合性チェックは、タイミング整合性チェックである。一実施形態では、安全装置は、ブートプロセスにおける所定のリセット信号または電力信号から所定のイベントまでの時間遅延が所定の範囲内にあるかどうかを検証できる。たとえば、安全装置は、システムリセットからＳＰＩバス上の最初のアクセスコマンドの出現までの時間遅延を測定できる。もし、この時間遅延が事前定義された範囲内にない場合（たとえば、通常よりも長いまたは短い場合）、安全装置はバスが改ざんされたと見なし、適切なレスポンシアクションをトリガーする。別の実施形態では、安全装置は、ホストデバイスが所定期間内にブートシーケンスを終了すべきであると仮定して、リセットが解放された後のこの期間にホストデバイス検索画像またはダイジェストをチェックし得る。
【０１５０】
また、安全装置は、ＳＰＩバスの少なくとも１つのラインのアナログ電気パラメータ値を測定し、アナログパラメータ値が所定の範囲外にあった場合に適切なレスポンシアクションをトリガーできる。上記目的に使用できるアナログ値は、たとえば、ＳＰＩバスの１つ以上のラインの静電容量、伝播時間、またはＬＲＣ遅延である。いくつかの実施形態において、アナログ電気パラメータは、対応するラインがホストデバイスまたはバス上の他のデバイスによって駆動されない場合、例えばホストデバイスに電力が供給されない、またはリセット状態に保持される場合に測定される。この種の技術は、例えば、その開示が参照により本明細書に組み込まれる米国特許第７，７９７，１１５号に記載されている。また、バス信号のアナログパラメータ値を測定するために、他の適切なセンシング技術を使用できる。一実施形態では、既定のアナログパラメータの所定の範囲（例えば、ＳＰＩバスの既定のラインにおいて正常とみなされる静電容量値の範囲）は、システム製造中に決定され、不揮発性メモリに格納される。起動中に、安全装置は問題のあるパラメーターの現在値を測定し、測定された値が許可された定義済みの範囲内にあるかどうかを確認する。
【０１５１】
セキュリティーをさらに高めるために、ホストデバイス、安全装置、およびＮＶＭデバイス間のＳＰＩ信号の物理的なレイアウトとルーティングに関して、特定のガイドラインに従うことができる。たとえば、システムがプリント基板（ＰＣＢ）に実装されている場合、次のガイドラインによりＳＰＩバスが攻撃されにくくなる。
【０１５２】
・ホストデバイスと安全装置にボールグリッドアレイ（ＢＧＡ）タイプのパッケージを使用する。
【０１５３】
・ＰＣＢの内側の層、つまり外部から直接アクセスできない層でＳＰＩ信号をルーティングする。
【０１５４】
・ＳＰＩ信号のルーティングにビアホール（「ビア」）を使用する場合は、（内部層間を接続し、外部からアクセスできない）「ブラインドビア」を使用する。
【０１５５】
・安全装置をホストデバイスのＳＰＩピンにできるだけ隣接して配置する。
【０１５６】
セキュリティーをさらに強化するために、ブートコードを設定してＳＰＩバスにデータを出力し、安全装置でこのデータを検証できる。たとえば、ブートコードは、ホストデバイスレジスタ、構成、状態変数、定数、ＯＴＰビット、および／または他の適切なホストデバイスパラメータ値の一部を出力できるため、バスをスヌーピング（ｓｎｏｏｐｉｎｇ）ことにより、安全装置によって検証できる。いくつかの実施形態では、ホストデバイスパラメータ値はコードイメージ／ダイジェストの一部として扱われ、他の実施形態では、ホストデバイスパラメータ値は参照データまたはダイジェストの別個の真正コピーを有する。
【０１５７】
一部の実施形態では、安全装置は、ＮＶＭの代わりにホストデバイスに応答し、特に、ＮＶＭの代わりにホストデバイスにブートコードの真正なコピーを提供することにより、ブートプロセスのセキュリティーを確認する。一実施形態では、ＳＰＩバス上のホストデバイスのアクティビティをブートプロセスの異なるインスタンス間で異なるようにするという意味で、安全装置によって提供されるブートコードは可変である。ブートコードは、必ずしもブートプロセスのすべてのインスタンスで異なるホストデバイスアクティビティを引き起こす必要はないが、少なくとも選択されたインスタンスで異なるホストデバイスアクティビティを引き起せばよい。バス上のホストデバイスのアクティビティを監視することにより、安全装置は、現在のブートプロセスのインスタンスでホストデバイスによって実行されているブートコードが、安全装置によってホストデバイスに提供されたブートコードと一致するかどうかを確認できる。
【０１５８】
上記の実施形態では、安全装置は、バス上で検出可能なホストデバイスアクティビティの変化を引き起こす任意の適切なコードを提供してもよい。たとえば、安全装置は、実行フローに影響を与えることなく、少なくとも１つのコード値を変更することでブートコードイメージを操作できる。 コード値は、例えば専用のコード定数値にすることができる。この操作の結果、ホストデバイスによって実行されるブートコードは、コード値に依存する値をバスに出力する。（したがって、安全装置に既知の方法でブートプロセスの１つのインスタンスと異なる場合がある）。安全装置は、バスから上記値を読み取り、その値が現在のインスタンスでホストデバイスに提供されたブートコードと一致するかどうかを確認する。出力値は、例えば、コードの自己チェックされたダイジェスト、値自体、またはそれらの任意の機能を含み得る。あるいは、出力値は、ホストデバイスおよび安全装置にとって既知の共有秘密に依存することができる。
【０１５９】
他の実施形態では、ブートコードは、バス上のホストデバイスアクティビティを出力値に関係しない他の点で異ならせることができる。たとえば、ブートコードにより、ホストデバイスはブートプロセスの異なるインスタンスのイベント間で異なる遅延を示すことができる。このような異なる遅延は、たとえば、安全装置が異なるブートプロセスインスタンスのブートコードに異なる数のＮＯＰ命令を挿入することで実現できる。この例では、安全装置は遅延を測定し、実際の遅延が（現在のブートプロセスインスタンスに挿入された実際のＮＯＰ命令の数から予想される）遅延と一致するかどうかを確認する。あるいは、安全装置は、挿入されたすべてのＮＯＰ命令が読み取られたことを確認するか、または別の代替方法では、バス上のブートコードのダイジェストを測定し、それをその真正コピーのダイジェストと比較する。違いが安全装置によって検出可能であれば、ホストデバイスアクティビティの他の適切な違いを利用することもできる。
【０１６０】
システム２０、７０、１１０，１３０，１４０、１７０及び１８９の異なる要素は、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ−Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）またはＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）などの任意の適切なハードウェアを使用して実行することができる。一部の実施例では、安全装置３６及び８６の幾つかの構成要素、例えば、プロセッサー４４またはプロセッサー９４は、ソフトウェアを使用して、またはハードウェア要素とソフトウェア要素の組み合わせを使用して実行することができる。メモリー４８、９８、および図８〜図１０に示すブートコードの真正コピーを保持するメモリは、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）またはフラッシュメモリー（Ｆｌａｓｈ  ｍｅｍｏｒｙ）などの任意の適切なタイプのメモリーデバイスを使用して実行することができる。
【０１６１】
一部の実施例では、プロセッサー４４、９４、１６４及び／またはプロセッサー１８２は、本明細書で説明する機能を実行するようにソフトウェアでプログラムされた汎用プログラマブルプロセッサーを備える。ソフトウェアは、例えば、ネットワークを介して電子形式でプロセッサーにダウンロードすることができ、あるいは、磁気的、光学的、または電子的メモリーなどの非一時的な有形の媒体に提供及び／または格納することができる。
【０１６２】
上述の実施例では、安全装置はまずバスを監視することによって無許可なトランザクションを検出し、その後トランザクションを中断する。代替的な実施例では、安全装置は、バス上で最初にそのトランザクションを検出することなく、またはバスを全く監視することなく、トランザクションを中断することができる。例えば、安全装置はこのホストデバイスが許可されるまで、またはそのホストデバイスが許可されない限り、特定のホストデバイスのチップセレクト（ＣＳ）ラインを無効にすることができる。この許可は、必ずしも同じバスを使用するではなく、任意の適切な方法で実行することができる。
【０１６３】
非限定的な例として、本明細書に記載の方法及びシステムは、安全メモリーアプリケーション（ｓｅｃｕｒｅ−ｍｅｍｏｒｙ  ａｐｐｌｉｃａｔｉｏｎｓ）、ＩｏＴ（Ｉｎｔｅｒｎｅｔ−ｏｆ−Ｔｈｉｎｇｓ）アプリケーション、組み込みアプリケーション（ｅｍｂｅｄｄｅｄ  ａｐｐｌｉｃａｔｉｏｎ）または自動車アプリケーション（ａｕｔｏｍｏｔｉｖｅ  ａｐｐｌｉｃａｔｉｏｎ）などの様々なアプリケーションで使用することができる。
【０１６４】
よって、理解されるべきことは、上述の実施例は、一例として引用されたものであり、本発明は、特に上で示され説明されたものに限定されないことである。むしろ、本発明の範囲は、上述した様々な特徴の組み合わせ及び部分的な組み合わせ、ならびに前述の説明を読むことによって当業者に想到し得る変形および修正の両方を含む。本特許出願において参照により援用される文書は、本明細書において明示的または暗示的になされた定義と矛盾するとき、これらの組み込まれた文書で定義される用語を除いて、本明細書の定義を考慮する必要がある。
【符号の説明】
【０１６５】
１０、７０、１１０、１３０、１４０、１７０、１８９…安全システム
２４、７４、１４４…ホストデバイス
１４８…フラッシュメモリ
８２、１５２…ＳＰＩバス
４０、９０、１６０、１７８…インターフェース
４４、９４、１６４、１８２…プロセッサー
１６８、１８６…真正コピー
３６、８６、１５６、１７４、１８７…安全装置
１８８…ＳＰＩバスモニター
２８、７８…周辺デバイス
３２…Ｉ２Ｃバス
４８、９８…メモリー
９１…スレーブインターフェースロジック
９２…インターフェースモニターロジック
Ｓ１００、１０４、１０８、１１２、１１６、１２０、１９０、１９４、１９８、２０２、２０６、２１０、２１４、６２、６６、５０、５４、５８…ステップ
【図１】
2020173806.tif 000003
【図２】
2020173806.tif 000004
【図３】
2020173806.tif 000005
【図４】
2020173806.tif 000006
【図５】
2020173806.tif 000007
【図６】
2020173806.tif 000008
【図７】
2020173806.tif 000009
【図８】
2020173806.tif 000010
【図９】
2020173806.tif 000011
【図１０】
2020173806.tif 000012
【図１１】
2020173806.tif 000013