(57)【要約】【課題】ホスト装置がバスを介して周辺装置に安全アクセスするための装置及び方法を提供する。【解決手段】バスを介して周辺装置に安全アクセスするための装置及び方法は、インタフェース４０とプロセッサ４４を含む安全装置３６を開示する。インタフェース４０は、一もしくは複数個の周辺装置２８にサービスするバス３２に接続するように設定する。バス３２の伝送は、（ｉ）相互対応する一もしくは複数個の周辺装置２８にそれぞれ専用する一もしくは複数個の専用信号と、（ｉｉ）バスによってサービスされる一もしくは複数個の周辺装置の間で共有される一もしくは複数個の共有信号を含む。プロセッサはバスに接続されて、一もしくは複数個の周辺装置以外の付属装置として機能し、且つ特定の周辺装置と関連する専用信号を中断することによって、バス上に於いて、特定の周辺装置へアクセスしようとするバスマスター装置２４のトランザクション（transaction）を中断する。【選択図】図１
2019212293.tif 000002
【特許請求の範囲】
【請求項１】
バスを介して周辺装置に安全アクセスするための安全装置において、
一もしくは複数個の周辺装置にサービスを提供するバスに連接するのに用い、そのうち、該バスの伝送は、（ｉ）一もしくは複数個の該周辺装置にそれぞれ専用する一もしくは複数個の専用信号と、（ｉｉ）該バスによってサービスされる一もしくは複数個の該周辺装置の間で共有される一もしくは複数個の共有信号と、を含むインタフェースと、
該バスに連接し、一もしくは複数個の該周辺装置以外の一付属装置として機能し、特定の周辺装置と相互に関連する該専用信号を中断することによって、該バス上において、該特定の周辺装置へアクセスしようとするバスマスター装置のトランザクションを中断するプロセッサと、
を含むことを特徴とするバスを介して周辺装置に安全アクセスするための安全装置。
【請求項２】
前記プロセッサは、該トランザクションを中断する時に該バス上の該共有信号を維持して中断しないことを特徴とする請求項１記載の安全装置。
【請求項３】
前記インタフェースは、
該バスマスター装置から該専用信号を受信するのに用いる入力部と、
該専用信号を該特定の周辺装置へ出力するのに用いる出力部と、を含み、
そのうち、該プロセッサは該入力部が受信した該専用信号が該出力部から送信されるのを防止することによって、該トランザクションを中断することを特徴とする請求項１記載の安全装置。
【請求項４】
前記プロセッサは、該専用信号が中断された時に該バスマスター装置に応答するが、該特定の周辺装置には応答しないように設定されることを特徴とする請求項１記載の安全装置。
【請求項５】
前記専用信号は、チップセレクト（ＣＳ）信号を含むことを特徴とする請求項１記載の安全装置。
【請求項６】
前記プロセッサは、該バスを監視して、中断する該トランザクションを検出することを特徴とする請求項１記載の安全装置。
【請求項７】
前記プロセッサは、該バス外部の補助インタフェースを介して該バスマスター装置と通信を行い、中断する該トランザクションを検出することを特徴とする請求項１記載の安全装置。
【請求項８】
前記プロセッサは、リセット信号が表れるまで、継続して該専用信号を中断しつづけるように設定されることを特徴とする請求項１記載の安全装置。
【請求項９】
前記プロセッサは、該トランザクションを検出した後の限られた時間内に、該専用信号を中断するように設定されることを特徴とする請求項１記載の安全装置。
【請求項１０】
該トランザクションを中断することによって、該プロセッサが一もしくは複数個の該周辺装置箇所でトランザクションアボートを発生させるように設定されることを特徴とする請求項１記載の安全装置。
【請求項１１】
前記プロセッサは、該トランザクションが中断された後に該バスの正常動作を回復するように設定されることを特徴とする請求項１記載の安全装置。
【請求項１２】
バスを介して周辺装置に安全にアクセスするための安全装置において、
一もしくは複数個の周辺装置にサービスを提供するバスに連接するのに用いるインタフェースと、
一もしくは複数個の該周辺装置に連接することに加えて該バスにも連接し、バスマスター装置には応答するが、一もしくは複数個の周辺装置には回答しない方式で、特定の周辺装置へアクセスしようとする該バスマスター装置のトランザクションを中断するプロセッサと、
を含むことを特徴とするバスを介して周辺装置に安全アクセスするための安全装置。
【請求項１３】
前記バスの伝送は、（ｉ）相互に対応する一もしくは複数個の周辺装置にそれぞれ専用する一もしくは複数個の専用信号と、（ｉｉ）該バスによってサービスされる一もしくは複数個の周辺装置の間で共有される一もしくは複数個の共有信号と、を含み、
そのうち、該プロセッサは、（ｉ）該特定の周辺装置と相互に関連する該専用信号を中断することと、（ｉｉ）該専用信号が中断された時該バスマスター装置に応答することによって、該トランザクションを中断することを特徴とする請求項１２記載の安全装置。
【請求項１４】
前記特定の周辺装置は、記憶装置を含み、そのうち該プロセッサは該トランザクションに於いて、該記憶装置からデータを読み取るための該バスマスター装置からの要求を識別し、該安全装置に格納されている代替データで該要求に応答するように設定されることを特徴とする請求項１２記載の安全装置。
【請求項１５】
前記プロセッサは、該バスマスター装置が該記憶装置内の定義済アドレス領域へアクセスする要求を識別した時、該トランザクションを中断して該代替データで応答するように設定されることを特徴とする請求項１４記載の安全装置。
【請求項１６】
前記プロセッサは、トランザクションにおいて特定の周辺装置からバスマスター装置に戻されるデータに基づき、特定の周辺装置にアクセスしようとするバスマスター装置のトランザクションを識別するように設定されることを特徴とする請求項１２記載の安全装置。
【請求項１７】
前記プロセッサは、該トランザクションにおいて使用されるコマンドコードに基づいて該特定の周辺装置にアクセスしようとするバスマスター装置の該トランザクションを識別するように設定されることを特徴とする請求項１２記載の安全装置。
【請求項１８】
バスを介して周辺装置に安全にアクセスするための方法において、
安全装置を使用してバスを介して通信し、そのうち該安全装置は、該バスに連接し、且つ一もしくは複数個の周辺装置以外の付属装置となり、そのうち該バスでの伝送は、（ｉ）相互に対応する一もしくは複数個の該周辺装置にそれぞれ専用する一もしくは複数個の専用信号と、（ｉｉ）該バスによってサービスされる一もしくは複数個の該周辺装置の間で共有される一もしくは複数個の共有信号と、を含み、
該安全装置で特定の周辺装置と関連する該専用信号を中断し、それによって該バス上で該特定の周辺装置へアクセスしようとするバスマスター装置のトランザクションを中断することを特徴とするバスを介して周辺装置に安全アクセスするための方法。
【請求項１９】
前記該トランザクションを中断するステップは、該バス上の該共有信号を維持して中断しないステップを含むことを特徴とする請求項１８記載の方法。
【請求項２０】
該バスマスター装置から該専用信号を受信するのに用いる入力部を使用すること、および
該専用信号を該特定の周辺装置へ出力するのに用いる出力部を使用することを更に含み、
そのうち該トランザクションを中断するステップは、該入力部で受信した該専用信号が該出力部から発信されるのを防止するステップを含むことを特徴とする請求項１８記載の方法。
【請求項２１】
前記該トランザクションを中断するステップは、該専用信号が中断された時、該バスマスター装置に応答するが該特定の周辺装置に応答しないステップを含むことを特徴とする請求項１８記載の方法。
【請求項２２】
前記専用信号は、チップセレクト（ＣＳ）信号を含むことを特徴とする請求項１８記載の方法。
【請求項２３】
該バスを監視することによって、中断する該トランザクションを検出するステップを更に含むことを特徴とする請求項１８記載の方法。
【請求項２４】
該バス外部の補助インタフェースを使用して該バスマスター装置と通信することによって、中断しようとする該トランザクションを検出するステップを更に含むことを特徴とする請求項１８記載の方法。
【請求項２５】
前記該トランザクションを中断するステップは、リセット信号が出現するまで、該専用信号を中断し続けるステップを含むことを特徴とする請求項１８記載の方法。
【請求項２６】
前記該トランザクションを中断するステップは、該トランザクションを検出した後の有限時間内に該専用信号を中断するステップを含むことを特徴とする請求項１８記載の方法。
【請求項２７】
前記該トランザクションを中断するステップは、一もしくは複数個の該周辺装置箇所でトランザクションアボートを発生させるステップを含むことを特徴とする請求項１８記載の方法。
【請求項２８】
該トランザクションが中断した後に該バスの正常動作を回復させるステップを更に含むことを特徴とする請求項１８記載の方法。
【請求項２９】
バスを介して周辺装置に安全にアクセスするための方法において、
安全装置を使用してバスを介して通信し、そのうち該安全装置は、該バスに連接し、且つ一もしくは複数個の周辺装置以外の付属装置となるステップと、
該安全装置を使用してバスマスター装置に応答するが特定の周辺装置に応答せず、それによって、該バス上に於いて、該特定の周辺装置へアクセスしようとする該バスマスター装置のトランザクションを中断するステップを含むことを特徴とするバスを介して周辺装置に安全にアクセスするための方法。
【請求項３０】
前記バスの伝送は、（ｉ）相互に対応する一もしくは複数個の該周辺装置にそれぞれ専用する一もしくは複数個の専用信号と、（ｉｉ）該バスによってサービスされる一もしくは複数個の該周辺装置の間で共有される一もしくは複数個の共有信号を含み、
そのうち該トランザクションを中断するステップは、（ｉ）該特定の周辺装置と関連する該専用信号を中断するステップと、（ｉｉ）該専用信号が中断された時に該バスマスター装置に応答するステップを含むことを特徴とする請求項２９記載の方法。
【請求項３１】
前記特定の周辺装置は記憶装置を含み、そのうち該トランザクションを中断するステップは、該トランザクションにおいて、該記憶装置からデータを読み取るための該バスマスター装置からの要求を識別し、該安全装置に格納されている代替データで該要求に応答するステップを含むことを特徴とする請求項２９記載の方法。
【請求項３２】
前記該バスマスター装置が該記憶装置内の定義済アドレス領域へアクセスする要求を識別した時、該トランザクションを中断して、該代替データで応答することを特徴とする請求項２９記載の方法。
【請求項３３】
該トランザクションに於いて、該特定の周辺装置から該バスマスター装置に戻されるデータに基づき、該特定の周辺装置にアクセスしようとする該バスマスター装置の該トランザクションを識別するステップを更に含むことを特徴とする請求項２９記載の方法。
【請求項３４】
該トランザクションにおいて、使用されるコマンドコードに基づいて、該特定の周辺装置にアクセスしようとする該バスマスター装置の該トランザクションを識別するステップを更に含むことを特徴とする請求項２９記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願を参照
【０００２】
本出願は２０１６年３月２１日に出願された米国特許出願第１５／０７５，２１９の一部継続出願（ＣＩＰ：Continuation-In-Part）であり、それは２０１５年６月８日に出願された米国仮特許出願６２／１７２，２９８号に基づくもので、その開示内容を本明細書に援用する。
【０００３】
本発明は、電子システムの安全に関し、特に周辺装置に安全アクセスして保護するための方法とシステムに係る。
【背景技術】
【０００４】
電子システムは、ホスト装置と周辺装置との間で通信するために各種バスインタフェースを使用する。例として、バスインタフェースは内部にＩ２Ｃ（Inter-Integrated-Circuit）バス及びシリアル・ペリフェラル・インタフェース（ＳＰＩ）バスを含む。Ｉ２Ｃバスの関連内容は、例として「Ｉ２Ｃバス仕様及びユーザーマニュアル」ＵＭ１０２０４、ＮＸＰセミコンダクターズ、改訂第６版、２０１４年４月４日に記載されており、本明細書に援用する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許第９，３２３，９５３号
【発明の概要】
【０００６】
本発明に於ける実施例として、インタフェースとプロセッサを含む安全装置を提供する。インタフェースは、一もしくは複数個の周辺装置にサービスするバスに連接するために設定される。バスの伝送は（ｉ）相互対応する一もしくは複数個の周辺装置にそれぞれ専用する一もしくは複数個の専用信号と、（ｉｉ）バスによってサービスされる一もしくは複数個の周辺装置の間で共有する一もしくは複数個の共有信号を含む。プロセッサはバスに接続されて一もしくは複数個の周辺装置以外の付属装置として機能し、且つ特定の周辺装置と関連する専用信号を中断することによって、バス上に於いて特定の周辺装置にアクセスしようとするバスマスター装置のトランザクションを中断する。
【０００７】
一実施例に於いて、プロセッサがトランザクションを中断する時、バス上の共有信号を維持して中断しない。一実施例に於いて、インタフェースは、（ｉ）バスマスター装置から専用信号を受信するのに用いる入力部と、（ｉｉ）該専用信号を特定の周辺装置へ出力するのに用いる出力部を含み、更にプロセッサは受信した専用信号が該出力部から発信されるのを防止し、それによってトランザクションが中断される。一実施例に於いて、プロセッサは専用信号が中断された時、バスマスター装置に応答するが特定の周辺装置に応答しないように設定される。例示としての実施例に於いて、専用信号はチップセレクト信号を含む。
【０００８】
開示された実施例において、プロセッサはバスを監視することによって中断するトランザクションを検出する。代替実施例に於いて、プロセッサはバス外部の補助インタフェースを介してバスマスター装置と通信して中断するトランザクションを検出する。
【０００９】
一実施例に於いて、プロセッサはリセット信号が出現するまで専用信号を中断し続けるように設定される。別の実施例に於いて、プロセッサはトランザクションを検出した後の有限時間内に専用信号を中断するように設定される。一実施例に於いて、トランザクションを中断することによって、プロセッサは一もしくは複数個の周辺装置箇所でトランザクションアボートを発生させるように設定される。一実施例に於いて、プロセッサはトランザクション中断後にバスの正常動作を回復させるように設定される。
【００１０】
本発明の実施例に基づき、インタフェースとプロセッサを含む安全装置を提供する。インタフェースは一もしくは複数個の周辺装置にサービスを提供するバスに連接するのに用いる。プロセッサは、一もしくは複数個の周辺装置に加えてバスに連接し、更にバスマスター装置に応答するが一もしくは複数個の周辺装置に応答しない方式で、特定の周辺装置にアクセスしようとするバスマスター装置のトランザクションを中断する。
【００１１】
一実施例に於いて、バスの伝送は、（ｉ）相互対応する一もしくは複数個の周辺装置にそれぞれ専用する一もしくは複数個の専用信号と、（ｉｉ）バスによってサービスされる一もしくは複数個の周辺装置の間で共有される一もしくは複数個の共有信号を含む。そのうちプロセッサは（ｉ）特定の周辺装置と関連する専用信号を中断し、（ｉｉ）専用信号が中断された時に該バスマスター装置に応答することによってトランザクションを中断する。
【００１２】
一実施例に於いて、特定の周辺装置は記憶装置を含む。そのうちプロセッサは、トランザクションにおいて、該記憶装置からデータを読み取るためのバスマスター装置からの要求を識別し、安全装置に格納されている代替データで該要求に応答するように設定される。例示としての実施例に於いて、プロセッサはバスマスター装置が記憶装置内の定義済アドレス領域へのアクセス要求を識別した時、トランザクションを中断して代替データで応答するように設定される。
【００１３】
別の実施例に於いて、プロセッサはトランザクションの中で、特定の周辺装置からバスマスター装置に戻されるデータに基づき、特定の周辺装置にアクセスしようとするバスマスター装置のトランザクションを識別するように設定される。また別の実施例において、プロセッサはトランザクションの中で使用されるコマンドコードに基づいて特定の周辺装置にアクセスしようとするバスマスター装置のトランザクションを識別するように設定する。
【００１４】
本発明の実施例は、更にバスを介して周辺装置に安全にアクセスするための方法を提供し、それは安全装置を使用しバスを介して通信し、そのうち安全装置は、バスへ連接し、且つ一もしくは複数個の周辺装置以外の付属装置となり、そのうちバスの伝送は、（ｉ）相互対応する一もしくは複数個の周辺装置にそれぞれ専用する一もしくは複数個の専用信号と、（ｉｉ）バスによってサービスされる一もしくは複数個の周辺装置の間で共有される一もしくは複数個の共有信号を含み、該安全装置を使用し、特定の周辺装置と関連する専用信号を中断することによってバス上に於いて特定の周辺装置にアクセスしようとするバスマスター装置のトランザクションを中断する。
【００１５】
本発明の実施例に基づき、バスを介して周辺装置に安全アクセスするための方法を提供する。安全装置を使用しバスを介して通信し、安全装置はバスに連接し、且つ一もしくは複数個の周辺装置以外の付属装置となる。そして安全装置を使用し、バスマスター装置に応答するが特定の周辺装置に応答しない方式で、バス上で特定の周辺装置にアクセスしようとするバスマスター装置のトランザクションを中断する。
【００１６】
別の実施例に於いて、インタフェースとプロセッサを含む装置を提供する。インタフェースはバスで通信するように設定し、プロセッサはバスマスター装置が未承認で周辺装置にアクセスしようとする時、バスの少なくとも一本のライン上へ一個もしくは複数個のダミー値を強制的に並行書込みして少なくとも一部のトランザクションを中断する。
【００１７】
一実施例に於いて、プロセッサはバス上のデータラインにダミー値を強制書き込みしてデータラインで周辺装置のそれぞれのデータ値を受信もしくは伝送するのをブロックするように設定する。追加的もしくは代替的に、プロセッサはダミー値をバス上のクロックラインへ強制書き込みして、トランザクションに使用するクロック信号を中断するように設定する。更に追加的もしくは代替的に、プロセッサはダミー値をバス上のチップセレクトラインへ強制書き込みして、バスマスター装置が選択した周辺装置を中断するように設定される。
【００１８】
一実施例に於いて、バスは事前設定の論理値を有するオープンコレクタバスもしくはオープンドレインバスを備え、且つプロセッサはバス上の少なくとも一ラインへ事前設定の論理値と相反するダミー値を強制的に書き込むように設定される。
【００１９】
一実施例に於いて、ダミー値を強制書き込みすることによって、プロセッサはバスマスター装置もしくは周辺装置に書き込まれた少なくとも一ラインの対応値をオーバーレイするように設定される。例示としての実施例において、プロセッサはバスマスター装置もしくは周辺装置よりも大きな駆動強度の少なくとも一ラインを駆動することによって、バスマスター装置もしくは周辺装置上に書き込まれた少なくとも一ラインの対応値をオーバーレイするように設定される。別の実施例に於いて、装置は少なくとも一抵抗器を有し、それは少なくとも一ライン上に設定される。抵抗器はバスマスター装置もしくは周辺装置に書き込まれた値をプロセッサによって書きこまれたダミー値よりも弱くして減衰するように設定される。
【００２０】
一実施例に於いて、プロセッサはバスマスター装置と周辺装置間の通信に使用されるバスの既存の一ラインのみを通してダミー値を強制書き込みするように設定される。一実施例に於いて、プロセッサはバスを監視することによって中断するトランザクションを検出するように設定される。一実施例に於いて、プロセッサはバスマスター装置外部の補助インタフェース上でバスマスター装置と通信することによって、中断するトランザクションを検出するように設定される。
【００２１】
開示された一実施例において、プロセッサは当装置がリセットされるまで無制限にダミー値を強制書き込みするように設定される。別の実施例に於いて、プロセッサはトランザクションが検出された時、有限時間内にダミー値を強制書き込みするように設定される。一実施例に於いて、プロセッサはトランザクションが中断されると、バスの正常動作を適切に再開するように設定される。
【００２２】
本発明の実施例に基づき、更に周辺装置と安全装置を含むシステムを提供する。周辺装置は、バスによって、一個もしくは複数個のバスマスター装置にアクセスする。当安全装置はバスマスター装置が周辺装置に未承認でアクセスしようとすると、一個もしくは複数個のダミー値をバスの少なくとも一本のラインへ強制的に並行書込みを行い、少なくとも一部のトランザクションを中断する。
【００２３】
実施例に基づき、本発明は更に、バスに接続された安全装置を用いて、周辺装置に未承認でアクセスしようとするバスマスター装置のトランザクションを中断するか否かを決定し、一個もしくは複数個のダミー値をバスの少なくとも一本のラインへ強制的に並行書き込みして少なくとも一部のトランザクションを中断することを含む方法を提供する。
【図面の簡単な説明】
【００２４】
【図１】本発明実施例で、複数個の装置がＩ２Ｃバスを介して通信する安全なシステムのブロック図である。
【図２】本発明実施例で、Ｉ２Ｃバスを介して周辺装置へのアクセスを保護する方法のフローチャートである。
【図３】本発明の一代替実施例で、複数個の装置がＳＰＩバスで通信する安全なシステムのブロック図である。
【図４】本発明の一代替実施例で、複数個の装置がＳＰＩバスで通信する安全なシステムのブロック図である。
【図５】本発明の一代替実施例で、複数個の装置がＳＰＩバスで通信する安全なシステムのブロック図である。
【図６】本発明の実施例の安全装置のブロック図である。
【図７】本発明の実施例で、ホスト装置に用いるセキュアブート（secure booting）の方法のフローチャートである。
【発明を実施するための形態】
【００２５】
本発明を全面的に理解するため、下述において、図式を示しながら実施例を挙げて詳細に説明する。
【実施例】
【００２６】
概述
【００２７】
本発明の実施例は、バスインタフェースを介して周辺装置へのアクセスをどのように保護するかの改善の方法と装置を提供する。周辺装置は暗号エンジン、取扱注意データを保存するストレージデバイス、もしくはバスを介してアクセスする任意の装置を含む。
【００２８】
いくつかの開示された実施例に於いて、安全装置はバスのトランザクションを監視し、更にホスト装置もしくはその他バスマスター装置が未承認で周辺装置にアクセスしようとする時、それを識別する。トランザクションは各種適する基準もしくはポリシーによって承認もしくは未承認に分類される。
【００２９】
未承認のトランザクションを識別した時、安全装置は並行してバスの一本もしくは複数本のラインを通して、データもしくは信号をいくつかのダミー値へ強制書き込みして、それを中断する。ダミー値を強制書き込みするのは、例としてクロック信号、データ信号及び／もしくはチップセレクト（Chip-Select）信号に於いて実行できる。
【００３０】
ダミー値を強制書き込みするのは、I２Ｃバスなどのようなオープンドレインもしくはオープンコレクタのバス、もしくはＳＰＩバスのようなプッシュプルバスなどのバス上の信号を中断するのに適している。バス上のトランザクションと並行してダミー値を強制書き込みして周辺装置との通信を中断し、且つ／もしくはそれぞれのクロック信号を中断する。
【００３１】
本明細書では、Ｉ２ＣとＳＰＩバス上の未承認のトランザクションを中断するのに用いる数種の技術範例を説明しているが、更に中断後に正常操作を再開させるのに用いる技術についても説明する。一実施例に於いて、安全装置はトランザクションを中断できるが、予めバス上でこのトランザクションを検出する必要がなく、もしくはバスを全く監視しなくてもよい。例として安全装置は、あるホスト装置が承認されるまで、もしくは承認されない限り、該ホスト装置のチップセレクト（ＣＳ）ライン上のダミー値を強制入力できる。
【００３２】
一実施例に於いて、例えば、ＳＰＩでは、安全装置によって保護されるバスの伝送は、（ｉ）相互に対応する周辺装置に専用される一もしくは複数個の専用信号と、（ｉｉ）バスによってサービスされる周辺装置間に於いて共有される一もしくは複数個の共有信号を含む。共有信号の例としてデータとクロック信号とする。専用信号の例としてＣＳ信号とする。一実施例に於いて、安全装置はバス上の共有信号を維持して中断せず、保護されている周辺装置と関連する専用信号を中断することでトランザクションを中断する。注意すべきは、例えばＩ２Ｃバスではすべての信号が共有信号であるように、すべてのバスに専用信号があるわけではないことである。
【００３３】
その他実施例に於いて、安全装置は保護された周辺装置に応答せず、未承認のホスト装置に応答する方式により、トランザクションを中断する。例示としての実施例に於いて、周辺装置はフラッシュメモリを含む。フラッシュメモリはキー、セットアップデータ及び／もしくはブートコードのような取扱注意データの保存に用いるために割り当てられた一もしくは複数個のアドレス領域を含む。安全装置は、フラッシュメモリのＣＳ信号を選択的に駆動することによって、フラッシュメモリに於けるデータへのアクセスを駆動することができる。反対に、安全装置は安全装置内部に保存されているデータを用いてホスト装置に応答する。ここではこの種のセキュアブートプロセスを説明する。
【００３４】
ここで開示する技術は、トランザクション毎の処理レベル（transaction-by-transaction level）で周辺装置への即時安全選択的アクセスを提供する。本明細書に於いて説明するほとんどの技術では、バスの既存の信号だけでトランザクションの識別と中断を実行する。よって、開示された技術は規定外のピンもしくは相互接続を必要とせず、そのためシステム全体のサイズとコストが低下する。
【００３５】
Ｉ２Ｃバスを介して周辺装置に対してデータに安全にアクセスする。
【００３６】
図１は本発明実施例の安全システム２０のブロック図である。本発明の実施例に於いて、システム２０はホスト装置２４及び周辺装置２８を有し、且つすべてがＩ２Ｃバス３２に連結する。簡潔にするため、ホスト装置２４と周辺装置２８は、ここではホストと周辺と称されることもあり、ホスト装置２４はバスマスター装置と称されることもある。
【００３７】
安全装置３６はＩ２Ｃバス３２上のデータ交換を監視することによって周辺装置２８へのデータアクセスを保護し、ホスト装置２４もしくはバスマスター機能を備えるその他装置が周辺装置２８へ未承認でアクセスするのを回避する。安全装置３６は制御装置もしくはトラステッドプラットフォームモジュール（ＴＰＭ）とも称される。本発明の実施例に於いて、安全装置３６は、I２Ｃバス３２へ連結するのに用いるインタフェース４０と、本発明の技術を実行するために設置するプロセッサ４４と、プロセッサ４４によって実行される一もしくは複数個のセキュリティポリシーを保存するのに用いるメモリ４８を含む。
【００３８】
プロセッサ４４は、任意の定義済、もしくは設定されたポリシーに拠ってトランザクションを未承認として分類できる。通常、未承認のトランザクションは、周辺装置２８のデータをオーバーレイすること、周辺装置２８のデータを読み取ること、周辺装置２８にコマンドを設定もしくは送信すること、もしくはその他適する方法で周辺装置２８にアクセスすることを試みることが多い。安全装置３６によって実施するポリシーは、肯定的なポリシー（例：ホワイトリスト）、否定的なポリシー（例：ブラックリスト）、デバイスアドレスもしくはレジスタオフセット（register offset）に拠って決まるポリシー、もしくはその他任意の形式のポリシーを含む。
【００３９】
例として、安全装置３６は、ホスト装置に対して、周辺装置２８へのアクセスが承認される前に、ホスト装置２４の身分を認証することを要求することができる。未承認のホスト装置によって試されたトランザクションは未承認だとみなすことができる。その認証はホスト装置と安全装置間で、チャレンジレスポンスプロセス（challenge-response process）を行うことで実行できる。追加的もしくは選択的に、ホスト装置に対して、その他ある種適する方法でその身分を証明する、もしくはセキュアブートプロセスが成功裏に完了することを要求することができる。
【００４０】
その他、追加的もしくは代替的に、いくつかのタイプのトランザクション（例として読取りトランザクション）は承認されたとみなし、またその他タイプのトランザクション（例として書込みトランザクション）は未承認とみなすことができる。更に別の一実施例に於いては、選定された周辺装置へのアドレスアクセスに対して承認されたとみなすことができ、その他アドレスへのアクセスは未承認とみなすことができる。別の実施例として、バス上のビットシーケンス（bit sequences）は未承認のトランザクションとして表示される。
【００４１】
通常、プロセッサ４４は、任意の適切な方法でトランザクションが承認されているか否かを判定することができる。メモリ４８はトランザクションが承認されているか否かを判断するために一個もしくは複数個のポリシーを保存する。
【００４２】
Ｉ２Ｃバス３２は、シリアルデータ（ＳＤＡ）信号を有するシリアルデータラインと、シリアルクロック信号（ＳＣＬ）を有するシリアルクロックラインを含む。用語の「ライン」と「信号」は本明細書に於いて、互換的に使用される。ＳＤＡライン及びＳＣＬラインの監視によって、プロセッサ４４はＩ２Ｃバス３２上のすべてのトランザクションを監視し、未承認のトランザクションを識別することができる。
【００４３】
未承認のトランザクションを識別すると、プロセッサ４４は一個もしくは複数個のダミー値をＩ２Ｃバス３２上のＳＤＡライン及び／もしくはＳＣＬラインへ強制的に書き込むことでトランザクションを中断する。このメカニズムはＩ２Ｃバスがオープンドレイン／オープンコレクタ構造を備えることで実現する。通常ＳＤＡラインとＳＣＬラインはどちらもプルアップ抵抗を使用することで論理「１」の状態へ事前設定でプルアップされる。その他装置が同時に書き込む可能性のある値に関係なく、どの装置でもすべてＳＤＡラインもしくはＳＣＬライン上に論理「０」値をいつでも書込める。
【００４４】
一実施例に於いて、未承認のトランザクションを識別した時、安全装置３６のプロセッサ４４は、インタフェース４０を介してＩ２Ｃバス３２のＳＤＡラインもしくはＳＣＬライン上に於いて論理値「０」（事前設定の論理値「１」の反対値）を強制的に入力する。本明細書に於いて、「０」値はダミー値とみなす。ＳＤＡライン上に於いて強制書込みした「０」値は、ホスト装置２４から周辺装置２８へ送られた値、もしくはホスト装置２４によって周辺装置２８から読み出された値、もしくは事前設定の論理値「１」を上書きする。強制的に「０」値をＳＣＬライン上に書き込むとクロック信号が停止し、上述の如何なる状況に於いてもトランザクションは中断される。
【００４５】
一実施例に於いて、プロセッサ４４は装置がリセットされるまで、「０」値の強制書込みを継続する。その他実施例に於いて、プロセッサ４４は中断からの適度な再開を許可し、即ちホスト装置２４と周辺装置２８が中断中のトランザクションを再開して通常動作を再開することを許可する。一部のホスト装置及び／もしくは周辺装置はタイマーの一時停止から再開できない。よって仮に後でホスト装置及び周辺装置を適切に再開させる必要がある時、ＳＣＬライン上ではなく、ＳＤＡライン上に於いてダミー値を強制書込みするのがよい。
【００４６】
一実施例に於いて、トランザクションを中断した後に通常動作に戻るため、プロセッサ４４はバス上に於いてＩ２Ｃの停止、もしくはＩ２Ｃの再始動条件を生成する。本明細書において、Ｉ２Ｃの停止もしくはＩ２Ｃの再始動条件は任意のバス信号値シーケンスを含み、それは装置バスに於いてアイドル状態であり且つトランザクションを開始できることを示す。
【００４７】
プロセッサ４４は、各種技術を利用して、トランザクションが中断された後に適切に再開することを許可することができる。一実施例に於いて、プロセッサ４４は予定時間の長さに於いて、「０」値の強制書込みを継続する。これは未承認のトランザクションを中断するのに十分であるとみなす。如何なる予定時間の長さでも使用できる。例えば、ＳＭバスの一時停止の長さは２５ｍＳと定義する。よって、ＳＭバスに於いてＩ２Ｃを応用する時、予め定義する継続時間は一時停止をしやすくするためにも少なくとも２５ｍＳに設定するのがよい。
【００４８】
別の実施例に於いて、プロセッサ４４はＳＣＬラインが論理高値（即ちトグリングしない（not toggling））であることが検出されるまで、予定時間内、ＳＤＡライン上に於いて「０」値の強制書込みを続ける。この条件は、ホスト装置にトランザクションを中止もしくは破棄するように指示することができる。プロセッサ４４はＳＤＡラインを解放することができ、更にＩ２Ｃ停止条件を発生させる可能性がある。
【００４９】
更に別の一実施例に於いて、安全装置３６を周辺装置２８と同じアドレスを備えるＩ２Ｃスレーブ装置として設置することによって、周辺装置から読み取ったトランザクションを中断するのは有用である。安全装置３６内のプロセッサ４４は「０」データ値で任意の未承認の読取り要求に応答する。周辺装置２８も同様にこれらの読取り要求をプロセッサ４４へ並行して応答するが、そのデータ値は安全装置３６によって伝送された「０」値によってオーバーレイされる。このプロセスは、例えば停止条件を介して、ホスト装置がトランザクションを中止するまで継続する。注意すべきは、Ｉ２Ｃ基準に基づき、Ｉ２Ｃスレーブ装置はデータを送信する時、ＡＣＫ／ＮＥＧＡＣＫビットを駆動しない。
【００５０】
別の実施例に於いて、同時にトランザクションの読取り、書込みを中断するのに有用なものとして、プロセッサ４４によりＳＤＡラインにおいて「０」値を強制書き込みする。続いて、仮にホスト装置２４がこの中断を識別できない時、このトランザクションは周辺装置２８から送信したデータではなく、バス上の「０」データを介して正常中止する。仮にホスト装置２４がこの中断（例として、Ｉ２Ｃマルチマスターのアービトレーション（multi-master arbitration）支持）を検出してトランザクションを破棄すると、プロセッサ４４は通常ＳＣＬラインで生成した追加のクロックサイクルを介して、ホスト装置２４が破棄したトランザクションを引き継ぐ。プロセッサ４４は、続いて伝送された現在のバイトを完成させ、停止条件を発信することによって、このトランザクションを中止する。
【００５１】
上述の中断と再開技術は、実施例の説明のためのものに過ぎない。代替実施例に於いて、安全装置３６のプロセッサ４４は任意のその他技術によってトランザクションを中断する及び／もしくは中断から再開へ進む事ができる。
【００５２】
上述実施例に於いて、バスの既存ラインだけを使用して未承認のトランザクションの検出、中断及び中断後の再開を実現する。代替実施例に於いて、安全装置３６とホスト装置２４もバス３２外部の補助インタフェースで連接し、例として安全装置３６とホスト装置２４が同一集積回路（ＩＣ）に統合され、且つＩＣのＳＤＡとＳＣＬピンを共有する時、この種のメカニズムは実行できる。
【００５３】
これら実施例において、安全装置３６とホスト装置２４は、補助インタフェースを使用してその他ホスト装置が周辺装置２８にアクセスしていないことをバリデーションする。見本となる実施例において、ホスト装置２４が周辺装置２８にアクセスした時、ホスト装置２４は補助インタフェースを介して安全装置３６に通知する。該通知に応答するため、プロセッサ４４はダミー値「０」をバスへ強制書込みせず、トランザクションの実行を許可する。周辺装置２８にアクセスするが、補助インタフェース上でまだ報告されていないトランザクションを検出した時、プロセッサ４４は該トランザクションがいくつかの未承認のホスト装置から発行されたと仮定し、「０」値の強制書込みをすることによってそれを中断する。
【００５４】
図２は、本発明実施例がＩ２Ｃバス３２を介して周辺装置２８にアクセスするのを保護する方法のフローチャートである。該方法は、監視ステップ５０に於いて始動し、安全装置３６上のプロセッサ４４はインタフェース４０を介してＩ２Ｃバス３２上のトランザクションを監視する。
【００５５】
トランザクションの検出ステップ５４において、プロセッサ４４はホスト装置２４が周辺装置２８のトランザクションにアクセスしようとしていることを識別する。検査ステップ５８において、プロセッサ４４はトランザクションが承認を経ているか否かを検査する。例として、プロセッサ４４はこのトランザクションがメモリ４８に格納されているセキュリティポリシーに違反しているか否かをテストすることができる。
【００５６】
仮にトランザクションが承認された場合、許可ステップ６２において、プロセッサ４４はトランザクションが正常に進むことを許可し、仮に該トランザクションが未承認であることを検出した場合、中断ステップ６６において、プロセッサ４４は、該トランザクションを中断するために、ダミー値「０」をＩ２Ｃバス３２のＳＣＬ及び／もしくはＳＤＡラインへ強制的に書込みする。
【００５７】
ＳＰＩバスを介して周辺装置に安全にアクセスする。
【００５８】
図３は、本発明の代替実施例で、安全システム７０のブロック図である。図３に示すとおり、システム７０はホスト装置７４、周辺装置７８及び安全装置８６を含み、すべてＳＰＩバス８２に連結する。
【００５９】
ホスト装置７４が周辺装置７８に未承認でアクセスしようとすると、安全装置８６はこのトランザクションを識別して中断する。本発明の実施例に於いて、安全装置８６はＳＰＩバス８２に連接するインタフェース９０と、本発明を実行するための技術を設定するプロセッサ９４と、プロセッサ９４によって実行するために格納した一個もしくは複数個のセキュリティポリシーを設置したメモリ９８を含む。
【００６０】
承認と未承認のトランザクションを区別するためのセキュリティポリシー、及び安全装置８６のプロセッサ９４が未承認のトランザクションを識別する方法は、基本的に上述システム２０と同じである。後述技術と上述技術の異なる点は、安全装置８６がバス８２上でダミー値の強制書き込みをして未承認のトランザクションを中断する点である。
【００６１】
ＳＰＩバス８２は、クロック（ＣＬＫ）ライン、及びマスタアウトスレーブインライン（ＭＯＳＩ）とマスタインスレーブアウトライン（ＭＩＳＯ）と称される二本のデータ伝送ラインを含む。ＣＬＫ、ＭＩＳＯとＭＯＳＩラインは、すべての装置（本実施例に於いてホスト装置７４、７８と８６とする）に対して共通である。この他、各スレーブ装置は専用のチップセレクトラインで選択する。本実施例に於いて、ホスト装置７４はＣＳ２＃と標記されたＣＳラインを使用して周辺装置７８を選び、更にＣＳ１＃と標記されたＣＳラインで安全装置８６を選択する。
【００６２】
マスター装置としてのホスト装置７４は、すべてのＣＳラインに連接する。一方、周辺装置７８はスレーブ機器であるため、各周辺装置７８は自身のＣＳラインにだけ連接される。通常、ホスト装置７４は対応するＣＳラインを使用して要求する周辺装置７８を選択し、トランザクションを起動する。その後、使用ＣＬＫ、ＭＯＳＩとＭＩＳＯラインを使用して装置と通信する。ＭＯＳＩラインはホスト装置７４から周辺装置７８へ信号を送信するのに用い、ＭＩＳＯラインは周辺装置７８からホスト装置７４へ信号を送るのに使用する。
【００６３】
安全装置８６は、スレーブ装置と定義されるが、すべてのＣＳラインを駆動できるという点で、一般的なＳＩＰスレーブ装置と異なる。図３に示すとおり、安全装置８６のインタフェース９０は、ホスト装置７４と並行してＣＳ２＃ラインを駆動するために設置する。システム７０が、相互に対応するＣＳラインを備えた複数個の周辺装置７８を含む時、安全装置８６は通常、ホスト装置７４に接続された任意のＣＳラインを並行して駆動するために設置する。
【００６４】
一実施例に於いて、システム７０は、ホスト装置７４と安全装置８６が反対の論理値でＣＳラインを駆動すると、安全装置８６によって駆動される論理値がホスト装置７４によって駆動される論理値をオーバーレイするように設計されている。それは、ホスト装置７４と安全装置８６がＣＳライン上で反対の論理値を駆動した時、周辺装置７８は安全装置８６によって駆動された論理値を受信して実行するとも言える。
【００６５】
ＣＳラインのオーバーライドは、バス上のトランザクションを止めることで、ホスト装置と周辺装置７８の間の未承認トランザクションを中断する別の一範例である。上述のオーバーライドの仕組みは、様々な方法で実現できる。下記の説明は周辺装置７８を選択するためのＣＳ２＃ラインに係るものであるが、複数個の周辺装置７８及び複数個の相対するＣＳラインを使用する時、同様の仕組みを使用しなければならない。
【００６６】
一実施例に於いて、安全装置８６のインタフェース９０を介してＣＳ２＃ラインを駆動するラインドライブは、ホスト装置７４がＣＳ２＃ラインを駆動するラインドライブよりも強い。代替実施例に於いて、直列抵抗１００はホスト装置７４の出力箇所でＣＳ２＃ライン内に挿入することができる。安全装置８６に対するＣＳ２＃のラインドライブの出力部に対し、直列抵抗１００はホスト装置７４のＣＳ２＃に対するラインドライブの出力を弱める。その他、安全装置８６はその他任意の適切な方法で、ＣＳ２＃ラインを駆動するホスト装置７４の信号をオーバーライドするように設定する。
【００６７】
安全装置８６のプロセッサ９４は、ＳＰＩバス８２のＣＳ＃ライン、ＣＬＫ、ＭＩＳＯ及び／もしくはＭＯＳＩラインを監視し、任意の適する方法で未承認のトランザクションを識別する。一実施例に於いて、或る周辺装置７８へ未承認でアクセスしようとするホスト装置７４のトランザクションを識別すると、安全装置８６のプロセッサ９４は周辺装置７８のＣＳラインを失効させることによって、トランザクションを中断する。安全装置８６はホスト装置７４のＣＳ２＃ラインへの駆動をオーバーレイするように設定されているので、周辺装置７８は選択を取り消され、トランザクションが中断する。一方、トランザクションが承認されたのが確定されると、プロセッサ９４は自身のＣＳ２＃ドライブを停止し、それによってホスト装置の周辺装置７８へのアクセスが中断されなくなる。
【００６８】
図４は、本発明の別の実施例における安全システム１１０のブロック図である。システム１１０は、図３のシステム７０と同様にＳＰＩバス８２に基づいている。しかし、システム１１０において、安全装置８６はＣＬＫライン、ＭＩＳＯライン及び／もしくはＭＯＳＩライン上にダミー値を強制書き込みすることで未承認のトランザクションを破壊し、ＣＳラインをオーバーレイしない。
【００６９】
本実施例に於いて、システム１１０は、安全装置８６がＣＬＫライン、ＭＩＳＯライン及び／もしくはＭＯＳＩラインを駆動する時にホスト装置７４より優先するように設定される。図に示すとおり、当該目的を達成するため、直列抵抗１００をＣＬＫライン、ＭＩＳＯライン及びＭＯＳＩラインに挿入する。本実施例のＣＳ２＃ラインはオーバーレイされないので、ＣＳ２＃ラインに直列抵抗１００を挿入しない。
【００７０】
代替実施例に於いて、オーバーレイの仕組みは、安全装置８６の中のＣＬＫライン、ＭＩＳＯライン及び／もしくはＭＯＳＩラインのラインドライブを更に強くすることで実現する。
【００７１】
その他実施例に於いて、同時にＣＳラインをオーバーレイする（図３参照）及びＣＬＫライン、ＭＩＳＯライン及び／もしくはＭＯＳＩライン（図４参照）をオーバーレイする混合方案を使用することも可能である。
【００７２】
オーバーライド専用のＰ２Ｐ信号で周辺装置へのアクセスを保護する。
【００７３】
バス（例としてＳＰＩ）の信号は共有信号と専用信号に分けられる。共有信号はバス上の複数個の（例として、すべて）周辺装置と並列に接続する信号である。共有ＳＰＩ信号の例は、データ（ＭＯＳＩとＭＩＳＯ）とクロック（ＣＬＫ）信号である。専用信号は特定の周辺装置専用の信号である。バスの一部の専用信号の例はチップセレクト（Chip-Select）信号である。他に、バスは例としてライトプロテクト信号（Write Protect signal）（周辺装置に記憶装置が含まれる時）のような帯域外の（out-of-band）専用信号で増強できる。専用信号はＰ２Ｐ（ＰＴＰ：point to point）ラインとも呼ばれる。
【００７４】
一実施例に於いて、一もしくは複数個の専用信号は、周辺装置に到達する前に安全装置８６を通過する。反対に、共有信号は通常周辺装置にルーティングされ、安全装置を通過しない。この種の相互接続方式は、以下に説明するとおり、安全装置によって周辺装置を有効に保護する。
【００７５】
図５は、本発明の代替実施例に依る安全システム１３０を示すブロック図である。当システムは図３のシステム７０に類似する。しかしながら、本実施例に於いて、ＣＳ２＃信号は周辺装置７８の入力部を直接駆動しない。反対にホスト装置７４からのＣＳ２＃ラインは安全装置８６に入力され、安全装置８６はＣＳ２＿Ｏ＃と表示される信号を駆動し、それは周辺装置７８の入力部に連接する。
【００７６】
本実施例に於いて、ＣＳ２＃信号が専用ＰＴＰ信号に用いられる例として、それは途中で安全装置を通過し保護された周辺装置にルーティングされる。図からわかるように、共有信号（ＭＯＳＩ、ＭＩＳＯとＣＬＫ）はホスト装置７４と周辺装置７８の間で途切れない。
【００７７】
安全装置８６は、ＣＳ２＃信号を周辺装置に到達させるか、もしくはＣＳ２＃信号を周辺装置に到達させないことを選択することで、ホスト装置７４と周辺装置７８の間のトランザクションを中断するように設定される。図５の例では、ＭＡＳＫ＿ＣＳ２＃として表示された制御信号をアサートするか、もしくはアサート取消するかを通じて、選択を実行する。
【００７８】
図６は、本発明実施例の図５で説明したシステム１３０に基づいた安全装置８６のブロック図である。本実施例に於いて、安全装置８６は、ＳＰＩバス８２に連接するインタフェース９０と、開示された技術を実行するために設置されたプロセッサ９４と、プロセッサ９４によって強制実行する一もしくは複数個のセキュリティポリシーを格納するために設置されたメモリ９８とを含む。プロセッサ９４はスレーブインターフェースロジック（slave interface logic）９１とインターフェースモニターロジック（ＩＭＬ：interface monitor logic）９２を含む。安全装置８６とホスト装置７４の間の通信はスレーブインターフェースロジック９１によって処理される。インターフェースモニターロジック９２は、ホスト装置７４の周辺装置７８へのアクセスを監視し、制御し、並びに選択的にオーバーライドする。
【００７９】
一実施例に於いて、安全装置８６は未承認でＳＰＩバス８２上の周辺装置７８へアクセスしようとするホスト装置７４のトランザクションを識別して中断する。図５と図６からわかるように、図３に示すシステム内で可能な任意の安全機能は図５のシステム内でも任意に実現できる。
【００８０】
上述実施例に於いて、安全装置はバスに連接し、スレーブ設備を追加するように設定される。しかしながら、その他実施例に於いて、安全装置はマスター装置として連接して設置することができる。例として、この種の実装はマルチマスター（multi-master）機能をサポートするバスプロトコルに適用する。
【００８１】
安全装置は未承認のトランザクションから保護するために周辺装置に代わって応答する。
【００８２】
別の実施例に於いて、安全装置８６は、周辺装置７８に代わり、選択されたホスト装置トランザクションに応答する。以下の説明は、主に図５と図６の設定に係り、簡単な例を挙げる。通常、開示された技術は該特定のシステム設定に制限されず、更に例として図３もしくは図４の設定のように任意のその他設定でも応用できる。
【００８３】
図５と図６の設定に示す実施例において、周辺装置７８のアドレス空間内のあるアドレス領域から読取りコマンドを検出した時、インターフェースモニターロジック９２はＣＳ２＿Ｏ＃を「高」として強制設定でき、安全装置のメモリ９８内部からホスト装置読取りコマンド（もしくは読取りコマンドの一部）を提供する。ホスト装置７４は通常、応答が周辺装置からのものでないことがわからない。一実施例に於いて、このようなシーンは例として安全装置がＭＩＳＯ信号をオーバーライドする時のような、図４のシステム１１０に適用する。
【００８４】
この種の仕組みの使用例は一種のシステムである。そのうち、周辺装置７８はＳＰＩフラッシュメモリ装置を含み、更に安全装置８６は一部のフラッシュメモリアドレス空間をオーバーライドするように設定され、またこの種の方法によって、アドレス領域で安全なフラッシュメモリエミュレーション（emulation）を提供する。例として、安全装置８６は、インターフェースモニターロジック９２で初期ホストブートコードを含むフラッシュメモリアドレス領域（スタート時にホスト装置によって引き出された最初の起動コマンド）をオーバーライドするＴＰＭを含む。ＴＰＭはセルフコンテインド型身分認証した初期ブートコードで当フラッシュメモリアドレス領域をオーバーライドする。例として、コードにジャンプする前に、残りのコードに対し認証する。
【００８５】
一実施例に於いて、安全装置８６は、更にＳＰＩフラッシュメモリ装置へのメインインタフェースを含む。他に、安全装置８６は、ＳＰＩフラッシュメモリ装置にアクセスする時にホスト装置７４をリセットしたままにするための適したインタフェースと回路を含むこともでき、それは通常システムスタートプロセスの一部である。安全装置８６は例として組み込みコントローラ（ＥＣ）、Ｓｕｐｅｒ  Ｉ／Ｏ（ＳＩＯ）もしくはベースボード管理コントローラ（ＢＭＣ）装置でもよい。
【００８６】
図７に示すのは、本発明の実施例で、セキュアブートプロセスの例であるフローチャートである。該方法は、起動から始まり、それはシステムパワーをアサートすることである。リセット維持ステップ１０２に於いて、安全装置８６は、ホスト装置７４をリセット状態で維持し、更に選択的にＳＰＩフラッシュメモリ（周辺装置７８）から起動する。（任意の）初期読取りステップ１０４において、安全装置８６はＳＰＩフラッシュメモリからデータブロックを読取り、データブロックの認証を検査し、それをメモリ９８内に格納する。
【００８７】
オーバーライドステップ１０８において、安全装置８６は、ＳＰＩフラッシュメモリ内の少なくとも一つの定義済アドレス領域（本実施例では周辺装置７８とする）へのアクセスをオーバーライドするためにインターフェースモニターロジック９２を設定する。問題のアドレス領域は例として一個もしくは複数個のキー、セットアップデータ及び／もしくはホスト装置７４の初期ブートブロックを含むことができる。
【００８８】
リセット解除ステップ１１２において、安全装置８６はホスト装置のリセットを解除する。したがって、起動ステップ１１６において、ホスト装置７４はその起動プロセスをスタートする。起動プロセスの一部として、領域アクセスサブステップ１２０において、安全装置８６は内部のメモリ９８から定義済アドレス領域へのアクセスをサービスする。
【００８９】
このような方式によって、安全装置からキー、セットアップデータ及び／もしくは初期ブートコード類の取扱注意データを安全に提供する。ホスト装置７４は該データがＳＰＩフラッシュメモリからではなく、安全装置から提供されたことを知ることはできない。
【００９０】
図７の方法は、安全装置が周辺装置の定義済アドレス領域へのアクセスをどのようにオーバーライドするかを示した例である。代替実施例において、その目的のため、任意のその他適する方法を用いることができる。ＳＰＩフラッシュメモリ装置として成りすます代替方案として、安全装置は任意のその他適切な未承認のトランザクションをオーバーライド及び／もしくは中断することによって、フラッシュメモリ装置（もしくはその他周辺装置）を保護する。
【００９１】
その他、未承認のトランザクションのオーバーライドは、特定の定義済アドレス領域の保護に限定されない。例として、保護された外部設備からの戻りデータもしくはＳＰＩのコマンドコードに基づき、オーバーライドを作動させる。例として、安全装置はセキュリティポリシーを実施でき、それはフラッシュメモリ装置に対してプログラム、消去、書込み起動、状態／設定及び／もしくは任意のその他コマンドもしくは機能を使用禁止にする。ＳＰＩフラッシュメモリオーダーとコマンドに依る規範例として、２０１５年８月２４日に、Winbond Electronics Corporationに依る「ＳＰＩフラッシュメモリ−デュアル／クワッドを備えたＳＰＩとＱＰＩの３Ｖシリアルフラッシュメモリ（SPI Flash - 3V Serial Flash Memory with Dual/Quad SPI and QPI）」に於いて指定した。
【００９２】
別の例として、図７の方法において、取扱注意データは常にフラッシュメモリ装置の中に存在し、更に起動プロセスの一部として、安全装置が読み取る。代替実施例に於いて、取扱注意データは、先ず安全装置内に保存しても良い（フラッシュメモリ以外、もしくはフラッシュメモリに保存しない）。このような実施例に於いて、該データをフラッシュメモリ装置から安全装置へ読み取らなくてもよい。
【００９３】
また別の例として、図７の方法はＳＰＩバスを参考として説明される。代替実施例に於いて、安全装置は、任意の専用信号（仮に有れば）及び／もしくはバスの共有信号でその他バスとプロトコル内の周辺装置の定義済アドレス領域へのアクセスをオーバーライドする。例として、Ｉ２Ｃバスはプルアップ双方向バス（pull-up bidirectional bus）であり、それらは複数個のスレーブ装置と複数個のマスター装置をサポートすることを目的としている。よって、組込み式メカニズムを備えるプロトコルによって、設備間のコンテンション（contention）を処理する。例としてＩ２Ｃ設備が「１」（プルアップ）を設定しようとした時にＳＤＡラインに於いて「０」を検出すると、装置はコンテンション中であると仮定し、次のトランザクションまでバスを解除する。一実施例に於いて、Ｉ２Ｃ安全装置（例として、図１の安全装置３６とする）は、他の周辺スレーブ装置（例として、図１の周辺装置２８とする）のアドレス空間の一部とオーバーラップするように（overlap）設定する。安全装置は、例として、その他周辺装置と同じデータに応答するように設定する。仮に安全装置がデータの不一致を検出した場合（例として「１」をプルアップしようとしているが、ＳＤＡライン上では「０」を検出する）、安全装置は応答動作を起こす（例として、停止の条件として、一本もしくは複数本のデータライン上で「０」に駆動し、エンドレスクロックストレッチするか（endless clock stretching）、もしくは任意のその他適切な動作を設定する）。該技術は、従来のＩ２Ｃスレーブユニットを用い（物理層内にハードウエアの変更はない）、設備をデータレベル（data level）まで監視する。
【００９４】
更に一実施例に於いて、安全装置８６は（インターフェースモニターロジック９２を使用する）更にＳＰＩアドレスのデータフェイズ（data phase）を監視する。データの不一致を識別した時、安全装置は、トランザクションの中断、システムのリセット、キーへのアクセスのロック、もしくは任意のその他適切な動作などの応答動作を開始する。
【００９５】
例示的な状況において、安全装置８６はＳＰＩフラッシュメモリ中に格納されている特定コードセグメントの署名もしくはダイジェストを保存する。安全装置は、署名もしくはバックグランド内のコード部分のキャッシュ値を計算する時にホスト装置７４のＳＰＩフラッシュメモリへのアクセスを監視する。仮に間違った署名、キャッシュ値もしくはＳＰＩ取得シーケンスを検出した場合、安全装置８６は適切な応答動作を開始する。
【００９６】
更に一実施例に於いて、安全装置は、バス８２上の一個より多い周辺装置７８を監視でき、例として異なる設備へのアクセス順序が予定どおりであることを認証する。
【００９７】
更に一実施例に於いて、安全装置８６は、一個もしくは複数個の信号（ＣＳ以外）を用いて、周辺装置７８へのアクセスを制限するか、もしくは周辺装置７８への承認トランザクションを検出する時に、あるシステム状態の実行を強制する。この種の信号の非限定的な例は、以下を含む。
【００９８】
・図４のようなシステムで説明する任意の信号。
・フラッシュメモリ内のライトプロテクト信号。
・リセット制御信号。
・電源管理制御信号。
・電源を制御する一個もしくは複数個の装置。
・システムを停止する通信（例としてネットワーク停止インタフェースコントローラ）。
・システムリセット。
【００９９】
図１及び図３から図６に示すシステム２０、７０、１１０及び１３０の配置、並びに安全装置３６、８６及びバス３２、８２のような各種システム部品は、すべて説明を明確にするための概略図であるが一代替実施例に於いて、任意のその他適する配置を使用してもよい。
【０１００】
例として、明確にするため、図面では、一個の周辺装置と一個のホスト装置だけを示す。一実施例に於いて、システムは二個もしくは更に多くの周辺装置及び／もしくは二個もしくは更に多くのホスト装置を含むことができる。ここで示す実施例はＩ２Ｃ及びＳＰＩバスを使用した実施例を参考としている。代替実施例に於いて、開示された技術はその他適切な種類のバスにおいて必要な修正を加えて使用することができる。
【０１０１】
システム２０、７０、１１０及び１３０の異なる部品は、例えば、特定用途向け集積回路（ＡＳＩＣ：Application-Specific Integrated Circuit）もしくはフィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ：Field-Programmable Gate Array）のような任意の適切なハードウエアで実行できる。一実施例に於いて、安全装置３６と８６の一部部品（例としてプロセッサ４４もしくはプロセッサ９４）は、ソフトウェアもしくはハードウエアとソフトウェア部品の組合せで実現する。メモリ４８及び９８は、任意の適切なタイプの記憶装置、例としてランダムアクセスメモリ（ＲＡＭ：Random Access Memory）もしくはフラッシュメモリ（Flash memory）を使用できる。
【０１０２】
一実施例に於いて、プロセッサ４４及び／もしくはプロセッサ９４は、本明細書に記載の機能を実行するためにソフトウェア内にプログラムされた汎用のプログラマブルプロセッサを含む。ソフトウェアは、ネットワークを介して電子形式でプロセッサへダウンロードでき、もしくは磁気、光学、電子メモリ保存のような持続性の有形媒体（non-transitory tangible media）に追加、もしくは置き換えできる。
【０１０３】
上述実施例に於いて、安全装置は先ずバスを監視することで未承認のトランザクションを検出し、続いてトランザクションを中断する。一代替実施例に於いて、安全装置はトランザクションを中断するのに、先にトランザクションを検出する必要がなく、更にはバスを監視する必要もない。例として、安全装置は該ホスト装置が承認されるまでもしくは承認されない限り、或るホスト装置のチップセレクト（ＣＳ）ラインをオーバーレイできる。承認は任意の適する方法で実行し、同じバスを使用する必要がない。
【０１０４】
非限定的な実施例として、本明細書に記載の方法とシステムは、ここではいくつかの例しか挙げないが安全メモリのアプリケーション、モノのインターネット（ＩｏＴ）のアプリケーション、組込み式アプリケーションもしくは自動車アプリケーションなど各種アプリケーションに使用することができる。
【０１０５】
理解すべき点として、上述の実施例は、実施例の方式で引用されており、本発明は上述の具体提示と詳細な内容に制限されない。更には本発明の範囲は、上記の様々な特徴の組み合わせ及び部分的組み合わせ、並びに当領域に習熟した技術者が説明を読んだ後に思いつくことができる未開示の技術も含む。本願で援用した文書は、本願の一部であり、これらの援用された文書内の用語の定義が本明細書と明確に矛盾する又は矛盾を暗に含む場合には、本明細書の定義を参考とする。
【符号の説明】
【０１０６】
２０        システム
２４        ホスト装置
２８        周辺装置
３２        Ｉ２Ｃバス
３６        安全装置
４０        インタフェース
４４        プロセッサ
４８        メモリ
５０        監視ステップ
５４        検出ステップ
５８        検査ステップ
６２        許可ステップ
６６        中断ステップ
７０        システム
７４        ホスト装置
７８        周辺装置
８２        ＳＰＩバス
８６        安全装置
９０        インタフェース
９１        スレーブインターフェースロジック
９２        インターフェースモニターロジック
９４        プロセッサ
９８        メモリ
１１０        システム
１３０        システム
１００        直列抵抗
１０２        リセット維持ステップ
１０４        初期読取りステップ
１０８        オーバーライドステップ
１１２        リセット解除ステップ
１１６        起動ステップ
１２０        領域アクセスサブステップ
ＣＳ１＃      チップセレクトライン
ＣＳ２＃      チップセレクトライン
ＣＬＫ        クロックライン
ＭＡＳＫ＿ＣＳ２＃  制御信号
ＭＯＳＩ      マスタアウトスレーブインライン
ＭＩＳＯ      マスタインスレーブアウトライン
【図１】
2019212293.tif 000003
【図２】
2019212293.tif 000004
【図３】
2019212293.tif 000005
【図４】
2019212293.tif 000006
【図５】
2019212293.tif 000007
【図６】
2019212293.tif 000008
【図７】
2019212293.tif 000009
【外国語明細書】
2019212293.tif 000010
2019212293.tif 000011
2019212293.tif 000012
2019212293.tif 000013
2019212293.tif 000014
2019212293.tif 000015
2019212293.tif 000016
2019212293.tif 000017
2019212293.tif 000018
2019212293.tif 000019
2019212293.tif 000020
2019212293.tif 000021
2019212293.tif 000022
2019212293.tif 000023
2019212293.tif 000024
2019212293.tif 000025
2019212293.tif 000026
2019212293.tif 000027
2019212293.tif 000028
2019212293.tif 000029
2019212293.tif 000030
2019212293.tif 000031
2019212293.tif 000032
2019212293.tif 000033
2019212293.tif 000034
2019212293.tif 000035
2019212293.tif 000036
2019212293.tif 000037
2019212293.tif 000038
2019212293.tif 000039
2019212293.tif 000040
2019212293.tif 000041
2019212293.tif 000042
2019212293.tif 000043
2019212293.tif 000044
2019212293.tif 000045
2019212293.tif 000046
2019212293.tif 000047
2019212293.tif 000048
2019212293.tif 000049