以下、本発明について、図に示す実施形態に基づいて説明する。
本発明で説明される実施例は、バスインターフェースを介して周辺デバイスへのアクセスを確保するための改良された安全方法及び安全装置を提供する。周辺デバイスは、例えば、暗号エンジン、機密データを格納するメモリデバイス、またはバスを介してアクセス可能な他の適切なデバイスを含むことができる。本明細書で説明される実施形態のいくつかは、主にシリアルフラッシュメモリデバイスに言及しているが、開示される技術は、特定のタイプの周辺デバイスに限定されない。
開示された一部の実施例では、安全装置は、バス上のトランザクションを監視し、ホストデバイスまたはバスマスタデバイスが無許可に周辺デバイスにアクセスを試みるトランザクションを検出する。トランザクションは、任意の適切な基準または方針(policy)を使用して、許可または無許可なものとして分類することができる。
無許可なトランザクションを検出する時、安全装置は、トランザクションと並行して、意図的にバスの1つ以上のラインまたは信号の値に、あるダミー値を強制的に書き込むことによって、トランザクションを中断させる。ダミー値を強制的に書き込むのことは、例えば、クロック信号、データ信号及び/またはチップセレクト(Chip−Select)信号で実行することができる。
バス上にダミー値を強制的に書き込むことによるトランザクションの中断は、I2Cなどのオープンドレインまたはオープンコレクタバス、SPIなどのプッシュプルバスなどが適している。トランザクションに並行してバス上にダミー値を強制的に書き込むことは、周辺デバイスへの及び/または周辺デバイスからの通信を中断し、及び/またはそれぞれのクロック信号を中断する。
ここでは、I2CおよびSPIバス上の無許可なトランザクションを中断するためのいくつかの技術について説明する。そして中断後の正常動作を正常に再開するための技術についても説明する。一部の実施例では、安全装置は、バス上でトランザクションを検出することなく、またはバスを監視なしにトランザクションを中断することができる。例えば、安全装置は、このホストデバイスが許可されるまで、またはこのホストデバイスが許可されない限り、特定のホストデバイスのチップセレクト(CS)ライン上にダミー値を強制的に書き込むことができる。
いくつかの実施形態では、例えば、SPIバスのうち安全装置によって保護されたバスは、周辺デバイス専用の1つ以上の専用信号と、バスを介して周辺デバイス間で共有される1つ以上の共有信号と、を含む。共有信号の例は、データおよびクロック信号である。専用信号の例は、CS信号である。いくつかの実施形態では、安全装置は、バス上の共有信号を中断せずに保持しながら、保護された周辺デバイスに関連付けられた専用信号を中断することによりトランザクションを中断するように構成される。ただし、すべてのバスに専用信号があるわけではないことに注意する必要がある。たとえば、I2Cでは、バス上のすべての信号は共有信号である。
他の実施形態では、安全装置は、保護された周辺デバイスの代わりに、無許可のホストデバイスに応答することにより、トランザクションを中断するように構成される。例示的な実施形態では、周辺デバイスは、キー、構成データ、および/またはブートコードなどの機密データを格納するために割り当てられた、1つまたは複数のアドレスゾーンを含むフラッシュメモリを備える。フラッシュメモリのCS信号を選択的にオーバーライドすることにより、安全装置は、フラッシュメモリ内のデータへのアクセスをオーバーライドできる。代わりに、安全装置は、内部に保存されたデータでホストデバイスに応答する。 以下、このセキュアブートプロセスについて説明する。
開示された技術は、トランザクション毎の処理レベル(transaction−by−transaction level)で、リアルタイムで周辺デバイスに対する安全な選択的なアクセスを提供する。本明細書で説明される技術の大部分では、トランザクションの識別および中断の両方が、バスの既存の信号を用いてのみ実行される。したがって、開示された技術は、追加のピンまたは相互接続を必要とせず、それによってシステム全体のサイズ及びコストを低減する。
I2Cバスで周辺デバイスへのアクセスを保護する安全方法
図1は、本発明の実施例の安全システム20を概略的に示すブロック図である。本発明の実施例では、システム20は、I2Cバス32に接続されたホストデバイス24及び周辺デバイス28を備える。ホストデバイス24及び周辺デバイス28は、簡潔にするためにホストデバイス及び周辺(peripheral)とも記載される。ホストデバイス24は、また、バスマスタデバイスと呼ばれることもある。
安全装置36は、I2Cバス上のトランザクションを監視し、ホストデバイス24またはバスマスタ機能を有する他のデバイスが無許可に周辺デバイスにアクセスを試みるトランザクションを防止することによって、周辺デバイス28へのアクセスを保護する。安全装置36は、制御装置またはTPM(Trusted Platform Module)と記載されることもある。本発明の実施例では、安全装置36は、インターフェース40と、プロセッサー44と、メモリー48とを備え、インターフェース40は、I2Cバス32に接続され、プロセッサー44は、本発明の技術を実行するように設定され、メモリー48は、1つまたは複数のプロセッサー44が実行する安全方針(security policies)を格納するように構成される。
プロセッサー44は、所定または設定された任意の方針に従って、トランザクションを無許可なものに分類することができる。一般的に、無許可なトランザクションは、周辺デバイス28にデータを書き込み、周辺デバイス28からデータを読み取り、周辺デバイス28に設定または命令を送信し、または他の適切な方法による周辺装置へのアクセスを試みることができる。安全装置36が実行する方針は、ポジティブ方針(例えば、ホワイトリスト)、ネガティブ方針(例えば、ブラックリスト)、デバイスアドレスまたは抵抗器のオフセット(register offset)に依存する方針、または他のタイプの方針を含むことができる。
例えば、安全装置36は、ホストデバイスの周辺デバイス28へのアクセスが許可される前に、ホストデバイス24のアイデンティティ(identity)に対する認証を要求することができる。無許可なホストデバイスによって実行されたトランザクションは、無許可のトランザクションに判断される。その認証は、例えば、ホストデバイスと安全装置の間のチャレンジレスポンス方式(challenge−response process)を使用して実行することができる。追加的または代替的に、ホストデバイスは、他の適切な方法で自分のアイデンティティを証明し、または安全なブートプロセスを完成することが要求されることがある。
さらに追加的または代替的に、幾つかのタイプのトランザクション(例えば、読み取りトランザクション)は許可されたものとして判断され、他のタイプのトランザクション(例えば、書き込みトランザクション)は無許可なものとして判断されることができる。さらにもう1つの実施例では、周辺デバイスの選択されたアドレスへのアクセスは許可されたものとして判断され、他のアドレスへのアクセスは無許可なものとして判断されることができる。別の実施例として、バス上のビットシーケンス(bit sequences)は無許可なトランザクションとして判断されることができる。
一般的に、プロセッサー44は、許可されたトランザクションと無許可なトランザクションとを任意の適切な方法で判断することができる。メモリー48は、トランザクションが許可されているかを判断するための1つまたは複数の方針が格納されている。
I2Cバス32は、シリアルデータ信号を伝達するシリアルデータ(SDA)ラインと、シリアルクロック信号を伝達するシリアルクロック(SCL)ラインとを備える。用語“ライン”及び“信号”は、本明細書では交換可能に使用される。SDAライン及びSCLラインを監視することによって、プロセッサー44はI2Cバス上のすべてのトランザクションを監視することができ、且つ無許可なトランザクションを検出することができる。
無許可なトランザクションを検出した後、プロセッサー44は、I2Cバス32上のSDAライン及び/またはSCLラインに1つまたは複数のダミー値を強制的に書き込むことによってそのトランザクションを中断する。この機構は、I2Cバスのオープンドレイン/オープンコレクタ構造によって実現されることができる。通常的に、SDAライン及びSCLラインの両方は、プルアップ抵抗器を使用して、デフォルトで論理的な“1”の状態にプルアップされる。どのデバイスも、他のデバイスによって同時に書き込まれた値にかかわらず、いつでも“0”値を書き込むことによって、SDAラインまたはSCLラインの論理値を強制的に“0”に変わることができる。
よって、一部の実施例では、無許可なトランザクションを検出すると、安全装置36中のプロセッサー44は、インターフェース40を介して、I2Cバス32のSDAラインまたはSCLライン上に論理値“0”(デフォルト論理値“1”と相反する値)を強制的に書き込む。本明細書では、“0”値はダミー値と見なされる。SDAラインに強制的に書き込まれた“0”値は、ホストデバイス24から周辺デバイス28に書き込まれた値、またはホストデバイス24によって周辺デバイス28から読み出された値、若しくはデフォルト論理値“1”などのすべてのデータ値を上書きする。SCLラインに強制的に書き込まれた“0”値は、クロック信号を停止する。上述のどちらの場合も、トランザクションは中断される。
一部の実施例では、プロセッサー44は、例えば装置のパワーアップリセット(power−up reset)が実行されるまで、無制限に“0”値を強制的に書き込みを続ける。他の実施例では、プロセッサー44、中断から正常な回復を可能にする、即ち、ホストデバイス24及び周辺デバイス28が中断されたトランザクションから回復して正常動作を再開することを可能にする。一部のホストデバイス及び/または周辺デバイス28は、クロック停止から回復できない。よって、シンプルなホストデバイスや周辺デバイス28でも正常な回復が必要な場合は、SCLラインではなくSDAラインにダミー値を強制的に書き込むの方が良い。
1つの実施例では、トランザクションが中断された後に通常の動作を再開するため、プロセッサー44は、バス上でI2C停止またはI2C再起動状態(I2C STOP or RESTART condition)を生成する。本明細書では、I2C停止またはI2C再起動状態は、バスがトランザクション開始可能であることを対象デバイスに示すバス信号値の任意のシーケンスを含むことができる。
プロセッサー44、中断されたトランザクションからの正常に回復を可能にするために様々な技術を使用することができる。1つの実施例では、プロセッサー44は、一定時間内に強制的に“0”値を書き込み続けることは、無許可なトランザクションを中断するには充分であると見なされる。任意の長さの定義済みの時間も使用されることができる。例えば、SMBus仕様ではタイムアウトが25mSと定義される。したがって、SMBusとI2Cとの応用(applications of SMBus−over−I2C)では、タイムアウトをトリガ(trigger)するために、定義済みの時間を少なくとも25mSに設定するのが理にかなっている。
別の実施例では、プロセッサー44は、SCLラインの論理値がHigh(即ち、トグルしていない(not toggling))に検出されるまで、一定時間内にSDAライン上に“0”値を強制的に書き込みを続ける。この状態は、ホストデバイスがトランザクションを終了または中止したことを示すことができる。プロセッサー44は、SDAラインを解放し、場合によってはI2C停止条件(I2C STOP condition)を生成することができる。
周辺デバイス28から読み取ったトランザクションを中断させるのに有用なもう1つ実施例では、安全装置36を周辺デバイス28と同様なアドレスを有するI2Cスレーブとして構成される。安全装置36中のプロセッサー44は、“0”データを使用して、無許可の読み取り要求に応答する。周辺デバイス28は、プロセッサー44と並行的にこれらの読み取り要求に応答するが、そのデータ値は、安全装置36から送信された“0”値によって上書きされる。このプロセスは、例えば停止条件によってホストデバイスがトランザクションを中断するまで続く。注意すべきは、I2C仕様に従って、I2Cスレーブはデータ送信する時にACK/NEGACKビットを駆動しないことである。
読み取りトランザクションと書き込みトランザクションの両方を中断するのに有用な他の実施例では、プロセッサー44がSDAライン上に強制的に“0”値を書き込むことである。次に、ホストデバイス24がこれを中断として識別していない場合に、ことトランザクションは、周辺デバイス28から送信されたデータではなく、バス上の“0”値を介して通常に停止する。ホストデバイス24がこの中断を検出し、(例えば、I2Cマルチマスタアービトレーション(multi−master arbitration)に対応する)且つこのトランザクションを中止する場合、プロセッサー44は、一般的に、SCLライン上で追加のクロックサイクルを生成することによって、ホストデバイス24によって中断されたトランザクションを引き続くことができる。プロセッサー44は、転送されている現在のバイトを補完し、停止状態(STOP condition)を発行することによってトランザクションを中止することができる。
上述した中断及び回復の技術は、単純に例として示されている。代替の実施例では、安全装置36のプロセッサー44は、他の任意の適切な技術を介して、トランザクションを中断する及び/または中断から回復することもできる。
上述の実施例では、無許可なトランザクションを検出、中断、及び中断からの回復の全ては、バスの既存のラインを介して実現される。代替の実施例では、安全装置36及びホストデバイス24は、バス32の外部にある補助インターフェースによって接続される。例えば、安全装置36及びホストデバイス24が同じICに統合され、ICのSDAピンとSCLピンを共有する場合に実現可能である。
これらの実施例では、安全装置36及びホストデバイス24は、補助インターフェースを介して他のホストデバイスが周辺デバイス28にアクセスしないことを検証する。例示的な実施例では、ホストデバイス24が周辺デバイス28にアクセスする時、ホストデバイス24は補助インターフェースを介して安全装置36に通知する。その通知に応じて、プロセッサー44は、バスにダミー値“0”を書き込まない、且つトランザクションを実行させる。周辺デバイス28にアクセスするが、補助インターフェース上で報告されていないトランザクションを検出する時、プロセッサー44は、そのトランザクションが無許可なホストデバイスから送信されたものと見なし、強制的に“0”値を書き込むことによってそのトランザクションを中止する。
図2は、本発明の実施例による、I2Cバス32を介して周辺デバイス28へのアクセスを保護する方法を概略的に示すフローチャートである。この方法は、監視ステップ50において、安全装置36のプロセッサー44がインターフェース40を使用して、I2Cバス32上のトランザクションを監視することから始まる。
トランザクション検出ステップ54において、プロセッサー44は、ホストデバイス24が周辺デバイス28にアクセスしようとするトランザクションを識別する。チェックステップ58において、プロセッサー44は、トランザクションが許可されたか否かをチェックする。例えば、プロセッサー44は、このトランザクションがメモリー48に格納された安全方針に違反しているかをチェックすることができる。
このトランザクションが許可されていれば、プロセッサー44は、許可ステップ62でトランザクションを正常に進める、一方、トランザクションが無許可であると判断された場合、プロセッサー44は、ステップ66でダミー値“0”をI2CバスのSCL及び/またはSDAラインに強制的に書き込むことによってこのトランザクションを中断する。
SPIバス上で周辺デバイスへのアクセスを保護する安全方法
図3は、本発明の代替の実施例による、安全システム(secured system)70を概略的に示す的ブロック図である。図3に示されるように、システム70は、ホストデバイス74と、周辺デバイス78と、安全装置86とを含み、これらは、いずれもSPIバス82に接続される。
ホストデバイス74が無許可に周辺デバイス78にアクセスしようとする時、安全装置86はそのトランザクションを識別して中断する。本発明の実施例では、安全装置86は、SPIバス82に接続するインターフェース90と、開示された技術を実行するように構成されたプロセッサー94と、1つまたは複数のプロセッサー94によって実行される安全方針を格納するように構成されたメモリー98とを含む。
許可されたトランザクションと無許可なトランザクションとを区別する安全方針、及び安全装置86のプロセッサー94が無許可なトランザクションを識別する方法は、上述したシステム20と本質的に同様である。以下で説明される技術と上で説明された技術との区別は、安全装置86が無許可なトランザクションを中断するために、バス82上にダミー値を強制的に書き込むことである。
SPIバス82は、クロック(CLK)ラインと、MOSI(Master−Out Slave−In)及びMISO(Master−In Slave−Out)と呼ばれる2本のデータラインを含む。CLK、MISO及びMOSIラインは、すべてのデバイス(本実施例中ではデバイス74、78及び86)に共通である。また、各スレーブデバイスは、専用のチップセレクト(CS)ラインを使用して選択可能である。本実施例では、ホストデバイス74は、CS2#に示されるCSラインを使用して周辺デバイス78を選択し、且つCS1#に示されるCSラインを使用して安全装置86を選択する。
マスタであるホストデバイス74は、すべてのCSラインに接続される。一方、周辺デバイス78はスレーブであるため、各周辺デバイス78は専用のCSラインのみに接続される。一般的には、ホストデバイス74は、それぞれのCSラインを使用して、所要の周辺デバイス78を選択することによってトランザクションを開始し、次にCLK、MOSI及びMISOラインを使用してデバイスと通信する。MOSIラインは、ホストデバイス74から周辺デバイス78への送信に使用され、MISOラインは、周辺デバイス78からホストデバイス74への送信に使用される。
安全装置86は、通常のSPIスレーブと異なり、スレーブとして定義されたことにもかかわらず、すべてのCSラインを駆動することができる。図3に示すように、安全装置86のインターフェース90は、ホストデバイス74と並列的にCS2#ラインを駆動するように構成される。システム70がそれぞれのCSラインを有する周辺デバイス78を含む場合、安全装置86は、ホストデバイス74と並列的にいずれかのCSラインを駆動するように構成される。
一部の実施例では、システム70は、ホストデバイス74及び安全装置86が相反する論理値でCSラインを駆動する時、安全装置86によって駆動された論理値がホストデバイス74によって駆動された論理値を上書きするように設定される。換言すれば、ホストデバイス74及び安全装置86が相反する論理値出CSラインを駆動する時、周辺デバイス78は安全装置86によって駆動される論理値を受信し動作する。
CSライン(の信号)を上書きすることは、バス上のトランザクションを中断することによって、ホストデバイス74と周辺デバイス78の間の無許可なトランザクションを中断するもう1つの例である。上述の上書き機構は、様々な方法で実行することができる。以下の説明は、周辺デバイス78を選択する時に使用されるCS2#ラインに関するが、複数の周辺デバイス78及びそれぞれのCSラインを使用する場合、同じ機構も適用する。
1つの実施例では、安全装置86によってインターフェース90内のCS2#ラインを駆動するラインドライバは、ホストデバイス74によってCS2#ラインを駆動するラインドライバより強い。代替的な実施例では、直列抵抗器100は、ホストデバイス74の出力でCS2#ラインに挿入されてもよい。抵抗器100は、安全装置86のCS2#ラインドライバの出力に対して、ホストデバイス74のCS2#ラインドライバの出力を減衰させる。さらに代替的には、安全装置86は、任意の他の適切な方法でCS2#ラインを駆動するホストデバイス74(の信号)を上書きするように構成することができる。
安全装置86のプロセッサー94は、SPIバス82のCS#ライン、CLK、MISO及び/またはMOSIラインを監視することによって、任意の適切な方法で無許可なトランザクションを識別することができる。一部の実施例では、ホストデバイス74が無許可である周辺デバイス78にアクセスのトランザクションを識別する時、安全装置86のプロセッサー94は、周辺デバイス78のCSラインを無効にする(de−asserting)ことによってトランザクションを中断する。安全装置86は、ホストデバイス74がCS2#ラインにの駆動を上書きするように構成されるので、周辺デバイス78は選択解除され、トランザクションは中断される。一方、トランザクションが許可されることが確定すると、プロセッサー94は自分のCS2#ドライバを停止し、それによってホストデバイス74が中断することなく周辺デバイス78にアクセス可能になる。
図4は、本発明のもう1つの実施例による、安全システム110を概略的に示すブロック図である。システム110はまた、図3のシステム70と同様に、SPIバス82に基づいている。しかしながら、システム110では、CSライン(の信号)を上書きする代わりに、安全装置86は、CLKライン、MISOライン及び/またはMOSIライン上にダミー値を強制的に書き込むことによって、無許可なトランザクションを中断する。
本実施例では、システム110は、安全装置86がCLKライン、MISOラインM及び/またはMOSIラインを駆動する時、ホストデバイス74(の信号)を上書きするように構成される。図面に示されるように、この目的を達成するため、直列抵抗器100をCLKライン、MISOライン及びMOSIラインに挿入される。本実施例でのCS2#ライン(の信号)は上書きされてないため、CS2#ラインに直列抵抗器を挿入しない。
他の実施例では、安全装置86内のCLKライン、MISOライン及び/またはMOSIラインのラインドライバをホストデバイス74内の対応するラインドライバより強くすることによって、その上書き機構を実行することができる。
他の実施例では、同時にCSライン(図3に参照)及びCLKライン、MISOライン及び/またはMOSIライン(図4に参照)(の信号)を上書きする混合方案(hybrid schemes)も実現可能である。
専用のポイントツーポイント信号を無効にして周辺デバイスへのアクセスを保護する。
バス(例えばSPIバス)信号は、共有信号と専用信号に分けられる。共有信号は、バス上の複数の(例えばすべての)周辺デバイスに並列に接続されている信号である。 共有SPI信号の例は、例えばデータ(MOSIおよびMISO)およびクロック(CLK)信号である。専用信号は、特定の周辺デバイス専用の信号である。バスの一部である専用信号の一例は、チップセレクト(CS)信号である。さらに、バスは帯域外の専用信号、たとえば、(周辺デバイスにメモリデバイスが含まれる場合)書き込み保護(WP)信号まで増強されることができる。専用信号は、ポイントツーポイント(PTP)ラインとも呼ばれる。
いくつかの実施例では、1つまたは複数の専用信号が周辺デバイスに到達する前に安全86を通過するが、共有信号は従来のように周辺デバイスにルーティングされ、安全装置86を通過しない。以下に説明するように、この相互接続スキームにより、安全装置は周辺デバイスを効果的に保護することができる。
図5は、本発明の実施形態による、安全システム130を概略的に示すブロック図である。安全システム130は、図3の安全システム70と似ているが、CS2#信号は周辺デバイス78の入力を直接駆動しない。その代わりに、ホストデバイス74からのCS2#ラインが安全装置86に入力され、安全装置86は、周辺デバイス78の入力に接続されているCS2_O#信号を駆動する。
この実施形態では、CS2#信号は、安全装置を介して保護された周辺デバイスに接続された専用PTP信号の一例として機能する。 図に示すように、ホストデバイス74と周辺デバイス78の間の共有信号(MOSI、MISO、およびCLK)は中断されることはない。
安全装置86は、CS2#信号が周辺デバイスに到達することを選択的に可能にする、またはCS2#信号が周辺デバイスに到達するのを防止することにより、ホストデバイス74と周辺デバイス78間のトランザクションを中断するように構成される。上記選択的な操作は、図5の制御信号MASK_CS2#をアサート(assert)またはディアサート(deassert)することによって実行される。
図6は、本発明の一実施形態による図5に示す安全システム130の安全装置86のブロック図である。この例では、安全装置86は、SPIバス82に接続するためのインターフェース90と、上記の開示された技術を実行するように設定されたプロセッサー94と、プロセッサー94によって実施される1つまたは複数のセキュリティポリシーを格納するように設定されたメモリ98とを備える。プロセッサー94は、スレーブインターフェース論理回路91と、インターフェースモニター論理(IML)92とを含む。 スレーブインターフェース論理回路91は、安全装置86とホストデバイス74との間の通信を処理するように構成される。 IML92は、ホストデバイス74の周辺デバイス78へのアクセスを監視、制御、及び選択的に上書きするように構成される。
1つの実施形態では、安全装置86は、ホストデバイス74が無許可にSPIバス82上の周辺デバイス78にアクセスしようとするトランザクションを識別し、妨害させる。図5および図5に示すように、図3で説明した安全システムの如何なる安全機能を図5の安全システムにも実現することができる。
いくつかの実施形態では、(安全装置86のプロセッサ94内の)IML92は、どのトランザクションが許可され、どのトランザクションが無許可であるかを定義するレジスタのセット、または他の適切なデータ構造を含む。たとえば、周辺デバイス78がSPIフラッシュデバイスである場合、定義は、許可されていると見なされるコマンドおよび関連するアドレス範囲を指定できる。この定義によって、安全装置86は、指定されたコマンドに一致するトランザクション、及び対応するアドレス範囲をアドレス指定するトランザクションのみを許可する。定義に一致しないトランザクションは中断される。一実施形態では、アドレス範囲の指定は必須ではない。一部のコマンド(チップ消去など)は、アドレスを指定しない。
それに加えて、またはその代わりに、IML92は、トランザクションを妨害するために、上位のソフトウェア層にアラートを発行するか、または他の適切なレスポンジブアクションを開始することができる。たとえば、システムまたはシステムの一部をリセットし、フラッシュデバイスの制御を引き継ぎ、別の場所からゴールデンイメージを復元するか、システムを永久に停止して、今後の起動を防ぐ。
いくつかの実施形態では、許可されたトランザクションおよび許可されていないトランザクションの仕様は、「ホワイトリスト」ロジックに従う。すなわち、安全装置86は、IML92で許可されたものとして明示的に指定されたトランザクションのみを許可する。指定されていないトランザクションは拒否され、中断される。
上記の実施形態では、安全装置はバスに接続され、追加のスレーブデバイスとして機能するが、他の実施形態では、安全装置はマスターデバイスとして接続されてもよい。その場合、例えばマルチマスター機能をサポートするバスプロトコルに適用されてもよい。
周辺デバイスの代わりに応答する安全装置による無許可なトランザクションに対する保護
別の実施形態では、安全装置86は、周辺デバイス78に代わって選択されたホストデバイスのトランザクションに応答する。以下の説明は、主に図1および図2の構成を参照する。 上記の図5と図6は、単なる例である。一般に、開示された技術は、この特定のシステム構成に限定されず、他の構成、例えば上記の図3または図4の構成を使用して適用されてもよい。
図5および図6の構成に関連する例示的な実施形態では、周辺デバイス78のアドレス空間内の特定のアドレスゾーンから読み取りコマンドが検出されると、IML 92はCS2_O#の信号レベルを強制的に「High」にし、安全装置の内部メモリ98でホストデバイスの読み取りコマンド(または読み取りコマンドの一部)に応答する。ホストデバイス74は通常、応答が周辺デバイスからのものではないことを認識していない。いくつかの実施形態では、このシナリオは、図4の安全システム110にも適用可能であり、例えば、MISO信号が安全装置によって上書きされる場合に適用される。
このメカニズムの使用例の1つによる安全システムでは、周辺デバイス7はSPIフラッシュメモリデバイスを備える。そして、安全装置86は、フラッシュアドレス空間の一部を無効にすることで、そのアドレスゾーンに安全なフラッシュエミュレーションを提供するように構成される。例えば、安全装置86は、IML92を使用して、初期ホストデバイスブートコード(ブート時にホストデバイスによってフェッチされる最初のブートコマンド)を含むフラッシュアドレスゾーンを上書きするTPM(Trusted Platform Module)を備えてもよい。TPMは、自己完結型(self−contained)の認証済み初期ブートコードでフラッシュアドレスゾーンを上書きすることができる。たとえば、残りのコードにジャンプする前に認証する。
一部の実施形態では、安全装置86は、SPIフラッシュデバイス用のマスターインターフェースをさらに備える。また、安全装置86は、システムブートプロセスの一部として、SPIフラッシュデバイスにアクセスしている間、ホストデバイス74をリセット状態に維持する適切なインターフェースおよび回路を備えてもよい。安全装置86は、例えば、組み込みコントローラ(EC)、スーパーI / O(SIO)またはベースボード管理コントローラ(BMC)デバイスであり得る。
図7は、本発明の実施形態によるセキュアブートプロセスの一例を概略的に示すフローチャートである。この方法は、電源投入、つまりシステム電源のアサートから始まる。リセット維持ステップ100において、安全装置86は、ホストデバイス74をリセット状態に維持し、オプションでSPIフラッシュメモリ(周辺デバイス78)をアサートする。初期ローディングステップ104(オプション)において、安全装置86は、SPIフラッシュメモリからデータセグメントをロードし、データセグメントの真正性を検証し、それを内部メモリ98に保存する。
上書きステップ108では、安全装置86は、IML92を設定して、SPIフラッシュ(周辺デバイス78)内の少なくとも1つの(例えば、ホストデバイス74の1つ以上のキー、構成データ、および/または初期起動データセグメントを格納する)所定のアドレスゾーンへのアクセスを上書きする。。
リセット解除ステップ112では、安全装置86はホストデバイスをリセットから解除する。ブートステップ116では、ホストデバイス74はブートプロセスを開始する。ブートプロセスの一部として、ゾーンアクセルサブステップ120において、予め定義されたアドレスゾーンへのアクセスは、安全装置86によって内部メモリ98を介して処理される。
このようにして、キー、構成データ、初期ブートコードなどの機密情報を安全装置から安全に提供できる。ホストデバイス74は、この情報がSPIフラッシュからではなく安全装置から提供されるという事実を認識することはない。
図7の安全方法は、安全装置が周辺デバイスの予め定義されたアドレスゾーンへのアクセスを上書きする安全方法を示す例である。他の実施形態では、この目的のために他の適切な安全方法を使用することができる。また、SPIフラッシュデバイスを装われた時に、安全装置は、他の適切な方法で無許可なトランザクションを上書きおよび/または中断することにより、フラッシュデバイス(または他の周辺デバイス)を保護できる。
さらに、不正なトランザクションの上書きは、特定の事前定義されたアドレスゾーンの保護に限定されない。例えば、保護されたペリフェラルから返されたデータまたはSPIコマンドコードに基づいて、上書きがトリガーされる場合もある。たとえば、安全装置は、セキュリティポリシーを実装して、フラッシュデバイスのプログラミング、消去、書き込みの有効化、ステータス/構成命令、および/またはその他の命令または機能を無効にすることができる。2015年8月24日にWinbond Electronics Co.、Ltd.より発行されたドキュメント「デュアル/クワッドSPIおよびQPIを備えたSPI 3Vフラッシュメモリ」には、SPIフラッシュメモリの命令と制御の仕様例について記載されている。
別の例として、図7の安全方法では、機密情報はフラッシュデバイスに常駐し、ブートプロセスの一部として安全装置によって読み取られる。他の実施形態では、機密情報は最初から安全装置に(フラッシュメモリに加えて、またはフラッシュメモリの代わりに)保存されてもよい。その場合、この情報をフラッシュデバイスから安全装置に読み取る必要はない。
さらに別の実施例では、図7に示すように、SPIバスを使用したる安全方法に関して説明されている。他の実施形態では、安全装置は、バスの専用信号(もしあれば)および/または共有信号を使用して、他のバスおよびプロトコルを介した周辺デバイスの予め定義された所定のアドレスゾーンへのアクセスを上書きする。たとえば、I2Cバスはプルアップ双方向バスであり、複数のスレーブデバイスと複数のマスターデバイスをサポートするように設計されている。そのため、プロトコルにはデバイス間の競合を処理するためのメカニズムが組み込まれている。例えば、I2Cデバイスが「1」(プルアップ)を設定しようとしてSDAラインで「0」を検出すると、デバイスは競合を想定し、次のトランザクションまでバスを解放する。一実施形態では、I2C安全装置(例えば、図1のデバイス36)は、別の周辺スレーブ(例えば、図1のデバイス28)のアドレス空間の一部と重複するように構成される。例えば、安全装置は、他の周辺デバイスから期待されるデータと同じデータに応答するように構成できる。もし、安全装置がデータの不一致を検出した場合たとえば、SDAラインで「1」をプルアップしようとしたが「0」を検知した場合)、レスポンシアクション(停止条件の生成、1つ以上のデータライン上で「0」で駆動、無限クロックストレッチを設定、またはその他の適切なアクション)を開始することができる。この技術は、従来のI2Cスレーブデバイスを使用して(物理層でハードウェアを変更することなく)、データレベルまでデバイスを監視できる。
さらに別の実施形態では、安全装置86(ILM92を使用)は、SPIアドレスのデータフェーズも監視する。データの不一致を検出すると、安全装置は、たとえば、トランザクションの切断、システムのリセット、キーへのアクセスのロック、またはその他の適切なアクションによって、レスポンシアクションを開始する。
例示的なシナリオでは、安全装置86は、SPIフラッシュに格納された特定のコードセクションの署名(signature)またはダイジェストを保持する。安全装置は、バックグラウンドでこのコードセクションの署名またはハッシュを計算しながら、SPIフラッシュへのホストデバイス74のアクセスを監視する。間違った署名、ハッシュ、またはSPIフェッチシーケンスが検出された場合、安全装置86は適切なレスポンシアクションを開始できる。
さらに別の実施形態では、安全装置は、バス82上の複数の周辺機器78を監視し、例えば、異なるデバイスへのアクセス順が予想通りかどうかを検証することができる。
さらに別の実施形態では、安全装置86は、(CS以外の)1つ以上の信号を使用して、周辺デバイス78へのアクセスを制限するか、特定のシステム状態を強制する。非限定的な例として、以下のような信号を含む。
・図4の安全システムを参照して説明したいずれの信号。
・フラッシュメモリの書き込み保護(write−protect)信号。
・リセット信号の制御。
・電源管理(power management)信号の制御。
・1つ以上のデバイスの電源の制御。
・システム通信の無効化(たとえば、ネットワークインターフェイスコントローラー(NIC)を無効にする。
・システムのリセット。
追加的または代替的に、そのような信号、または任意の他の適切な信号は、システムアラートを生成するために、および/または任意の適切なレスポンジブアクションを開始するために使用することができる。
CS期間を延長することによる不正なSPIフラッシュトランザクションの中断
図8は、本発明の別の実施形態による、複数のデバイスがSPIバスを介して通信する安全システム132を概略的に示すブロック図である。図8の安全システム132は、追加のANDゲート134およびMASK_LOW_CS2で示される追加の制御信号を除いて、上記の図5の安全システム130と同様である。 また、図8の例では、周辺デバイス78は、SPIフラッシュデバイスである。図5を参照して上述したように、安全装置86は、CS2#信号が周辺デバイスに到達することを選択的に可能にするか、CS2#信号が周辺デバイスに到達するのを防ぐことにより、ホストデバイス74と周辺デバイス78の間のトランザクションを中断するように構成される。図5の例では、この選択はMASK_CS2#信号で示される制御信号をアサートまたはディアサートすることによって実行される。
一実施例では、周辺デバイス78がSPIフラッシュデバイスである。本実施形態では、フラッシュデバイスのCS信号(図ではCS2_O#)を「Low」に設定するとフラッシュデバイスが選択され、CS信号を「High」に設定するとフラッシュデバイスの選択が解除される。
上記の図5の例では、安全装置86は、トランザクションの終了前にMASK_CS2#信号を「High」にアサートすることにより、ホスト74とフラッシュ78との間のトランザクションを中断するように構成される。この操作により、トランザクションが終了する前に、(フラッシュデバイスが選択されずに)フラッシュデバイスのCS信号が「High」に設定される。
ただし、場合によっては(たとえば、許可されたトランザクションが許可されていないトランザクションと最後のビットのみが異なる場合)、上記の手法では一部の不正なトランザクションを中断できないことがある。例えば、一実施形態では、コマンドop−code 0x60は許可されるが、コマンドop−code 0x61は許可されず、中断されるべきである。このような場合、最後のビットがサンプリングされた後にフラッシュデバイスのCS信号の選択を解除しても、トランザクションは中断されない。
図8のの実施形態は、この問題を解決できる。図8の構成では、MASK_LOW_CS2信号は通常「High」に設定されている。無許可のトランザクションの検出に応答して、安全装置86は、MASK_LOW_CS2を「Low」に設定する。この操作により、フラッシュデバイス78のCS信号の持続時間は、トランザクションの実際の終了時間を超えて延長される。その結果、フラッシュデバイス78は、トランザクションの長さが予想される長さよりも1クロックサイクル以上長いことを検出し、トランザクションの実行を控えることができる。
図8の技術を使用する場合、安全装置86は、CS信号の持続時間を任意の適切な長さ、例えば、単一のクロックサイクル、数クロックサイクル、または無期限に(例えば、次のリセットまたは電源投入まで)延長することができる。
図8の実装例(および上記の図5の実装例)では、安全装置86は、CS1#を使用して安全装置を選択することにより、SPIバス82を介してホスト装置74と通信する。 代替の実施形態では、安全が別個のCS信号を有することは必須ではない。 安全装置は、他の適切なインターフェースを使用して、直接または間接的にホストデバイスと通信することができる。 いくつかの実施形態では、(SPIトランザクションを監視し、そのようなインターフェースがない場合にバスを保護できれば、)ホストデバイスと安全装置との間にインターフェースがまったくなくてもよい。
トランザクショングループカウンターを使用したSPIフラッシュトランザクションの監視
いくつかの実施形態では、安全装置86のプロセッサ94は、SPIトランザクションの1つまたは複数のグループを指定し、各グループ内のSPIトランザクションの数の継続中のカウントを維持する。各グループは、いくつかの予め定義された基準を満たす1つ以上のSPIトランザクションで構成される。
一例では、1つのグループは様々なタイプの読み取りトランザクションを含み、別のグループは様々なタイプの書き込みトランザクションを含む。 別の例では、1つのグループは、様々なタイプの許可されたトランザクションを含み、別のグループは、様々なタイプの許可されていないトランザクションを含む。あるいは、任意の他の適切なグループ化を使用することができる。 プロセッサ94は、任意の適切な数のグループを定義することができる。グループには、可能なすべてのトランザクションタイプを必ずしも含める必要はない。グループ化はユーザーによってカスタマイズできる。
一実施形態では、安全装置86は、複数のハードウェア実装またはソフトウェア実装のカウンタ(本明細書では「トランザクショングループカウンタ」と呼ばれる)を含む。 プロセッサ94は、それぞれのカウンタを各トランザクショングループに割り当てる。カウンタは、通常、たとえばシステムのリセットまたは電源投入時、カウンタの読み取り後、カウンタが特定のしきい値に達した後、または他の適切な条件またはイベントで、プロセッサ94のソフトウェアによってリセット可能である。
一般に、特定のトランザクションタイプが複数のグループに表示される場合がある。つまり、トランザクションによって複数のカウンタが増加する場合がある。 例えば、第1のグループがすべてのタイプの書き込みトランザクションを含み、第2のグループがすべてのタイプの読み取りトランザクションを含み、第3のグループがすべての無許可トランザクションを含む実施形態を考えられる。 ただし、この例では、一部のタイプの書き込みトランザクションは許可され、他のタイプの書き込みトランザクションは無許可である。 3つのグループに対して3つのカウンターが定義されている。 この実施形態では、無許可の書き込みトランザクションの識別に応答して、プロセッサ94は、第1のカウンタと第3のカウンタの両方を増加する。 または、無許可なトランザクションを他のカウントグループから除外することもできる。
プロセッサ94は、通常の動作中に継続的にカウンタを増加する。したがって、所定の時間において、各トランザクショングループカウンターは、そのグループに属するSPIトランザクションの、その時間までに発生した数を示す。この情報は、安全装置86などによって、ホストデバイス74の動作のプロファイリング、セキュリティ脅威を示す可能性のあるホストデバイス74の異常な動作の検出、またはその他の適切な目的に使用できる。一部の実施形態では、カウンタ値がホストデバイス74の疑わしい挙動プロファイル(例えば、予想外に多数の書き込みまたは消去トランザクション)を示す場合、プロセッサ94は、アラートを発するか、または他のレスポンジブアクションをトリガすることができる。
図9は、本発明の実施形態による、トランザクショングループカウンタを使用してSPIトランザクションを監視する方法を概略的に示すフローチャートである。 この方法は、プロセッサ94は、様々なタイプのSPIトランザクションを2つ以上のグループに分割し、グループ化および割り当てステップ140で、それぞれのトランザクショングループカウンタをグループの少なくとも1つに割り当てることから始まる。
トランザクション識別ステップ144では、プロセッサ94は、SPIバス82上のホストデバイス74とSPIフラッシュ78との間のSPIトランザクションを識別する。分類ステップ148では、プロセッサ94は、識別されたSPIトランザクションが属するトランザクショングループを識別する。
許可検査ステップ152で、プロセッサ94は、識別されたSPIトランザクションが許可されているかどうかを検査する。 許可されている場合、プロセッサ94は、トランザクション受諾ステップ156で、トランザクションの完了を許可する。許可されていない場合、プロセッサ94は、トランザクション中断ステップ160で、トランザクションを中断する。
カウンタ増分ステップ164で、プロセッサ94は、ステップ148で識別されたグループに対応するトランザクショングループカウンタを増加する。その後、上記のステップ144に戻り、プロセッサ94は、後続のトランザクションをSPIバス82を引き続き監視する。
図9のフローは、単に概念を明確にするために描かれたフローの一例である。 別の実施形態では、他の任意の適切なフローを使用することができる。 例えば、いくつかの実施形態では、プロセッサ94は、無許可のトランザクションを必ず妨害するわけではない。代わりに、プロセッサ94は、アラートをトリガーする、またはアラートモードに入るなどの適切なレスポンジブアクションを開始することができる。 別の例として、トランザクショングループカウンタメカニズムは、未承認のトランザクションを必ずしもチェックせずに、つまり、トランザクションを未承認と見なすことなく使用できる。
安全装置でのSPIフラッシュモードのサポート
一部の実施形態では、SPIフラッシュデバイス78は、1つまたは複数の専用動作モードをサポートする。専用モードの開始と専用モードの終了は、ホストデバイスからの専用SPIコマンドに応答して実行されます。一部のSPIトランザクションは、SPIフラッシュデバイスが専用モードかどうかに応じて、異なる形式または解釈を持つ場合がある。一部の実施形態では、セキュリティデバイス86のプロセッサ94は、SPIフラッシュ78によってサポートされる専用モードを認識し、サポートする。
専用モードの1つの例は、「連続読み取り」モード(XIPモードとも呼ばれる)である。たとえば、2015年11月13日発表のWinbond Electronics Corp.「W25Q257FV SPI Flash−3V 256M−Bit Serial Flash Memory with Dual / Quad SPI&QPI」には、「XIPモード」について記載されている。このモードで動作している場合、フラッシュデバイスは読み取りトランザクションのみを受信することを想定しているため、ホストデバイスはすべてのコマンドで読み取りオペコードを送信しない。安全装置86のプロセッサ94は、任意の他の適切な専用モードをサポートすることができる。
一部の実施形態では、プロセッサ94は、所定の専用モードを以下によってサポートする。
(i)ホストデバイス74がフラッシュデバイス78に専用モードに入るように命令するSPIトランザクションを(SPIバス82上で)識別することにより、専用モードへのエントリーを認識する。(ii)ホストデバイス74がフラッシュデバイス78に専用モードを終了するように命令するSPIトランザクションを(SPIバス82上で)識別することにより、専用モードからの終了を認識する。(iii)フラッシュデバイスがモードで動作するかどうかに応じて、安全装置の動作を一致させる。
いくつかの実施形態では、専用モードへのエントリを識別すると、プロセッサ94は、フラッシュデバイス78に実現されたロジックと同様に、そのモードの実際のロジックを実現する。これらの実施形態では、プロセッサ94は、専用モードにある間、SPIトランザクションを監視し続け、トランザクション解釈をモード定義に適合させる。たとえば、「連続読み取り」モードでは、プロセッサ94は、省略された読み取りコマンドのオペコードが前のトランザクションと同じであると想定し、トランザクションの開始時(CS#信号がローになった後の最初のサイクル)からアドレスビットの監視/分析を開始する。言い換えれば、プロセッサ94は、メモリデバイス78が所定の動作モードで動作しているときに、1つ以上のトランザクションに第1解釈(first interpretation)を適用し、メモリデバイス78が所定の動作モードで動作していないときに、1つ以上のトランザクションに第1解釈と異なる第2解釈(second interpretation)を適用する。
他の実施形態では、専用モードへのエントリを識別すると、プロセッサ94は、モードが終了するまで、SPIトランザクションの監視を一時停止する。プロセッサ94がモードへのエントリとモードからの終了を識別するだけで、モードロジック全体を実装する必要がないため、用意に実現できる。この実施形態は、許可されたトランザクションのみが(したがって、トランザクションの中断がない)が期待される専用モードに適用できる。例えば、安全装置86が無許可の書き込みトランザクションから保護することのみが要求される実施形態では、「連続読み取り」モードに入るときに監視を一時停止することは許容される。
安全装置のシリアルフラッシュ検出可能パラメーター(SFDP)の操作
Serial Flash Discoverable Parameters(SFDP)規格は、シリアルフラッシュデバイスの機能性と特徴を、標準の内部パラメーターテーブルのセットで指定する。これらのパラメータテーブルは、ホストシステムソフトウェアから問い合わせる(interrogate)ことができる。
SFDPは、JEDEC JESD216ファミリーの規格で指定され、説明されている。たとえば、Marconix International Co.、Ltd.が2011に発表した「SFDPの概要−シリアルフラッシュの検出可能なパラメーターの構造」というタイトルのアプリケーションノート、及びMicron Technology Inc.が2012年に発表した「MT25Qファミリのシリアルフラッシュ検出パラメータ−はじめに」というタイトルのテクニカルノートには記載されている。
いくつかの実施形態では、安全装置86のプロセッサ94は、ホストデバイス74が最初にフラッシュデバイスと通信する前に、フラッシュデバイス78からSFDPを取得するように構成される。 その後、プロセッサ94は、SFDPを修正し、修正されたSFDPをホストデバイス74に提示する(「公開する」)。以下の説明は、主にSFDPを参照していますが、本発明は、メモリデバイスの機能を照会する他の種類のトランザクションでも適用できる。
いくつかの実施形態では、SFDPを修正する際に、プロセッサ94は、フラッシュデバイス78によってサポートされていない1つまたは複数の機能をSFDPに追加する。修正されたSFDPが提示されると、ホストデバイス74は、フラッシュデバイスによってサポートされていない追加の機能を使用しようと試みる可能性がある。通常、プロセッサ94は、この試みをSPIバス82上のSPIトランザクションの監視の一部として識別し、安全装置86は、フラッシュデバイスに代わって上記機能を実現する。このような機能の1つの例は、リプレイ保護単調カウンター(RPMC)のサポートでである。例えば、「RPMC Flash Emulation」と題された米国特許出願第16 / 503,501号において、その開示は参照により本明細書に組み込まれる。 また、他の適切な機能をSFDPに追加できる。
いくつかの実施形態では、SFDPを修正する際に、プロセッサ94は、ホストデバイス74からのサポートを隠すために、フラッシュデバイス78によってサポートされる1つまたは複数の機能をSFDPから除外する。例えば、プロセッサ94は、ダブルデータレート(DDR)、クワッドペリフェラルインターフェース(QPI)および「連続読み取り」(XIP)、または任意の他の適切な機能などのモードに対するサポートを隠すことができる。フラッシュデバイス78が所定の機能をサポートするという事実を隠すことは、例えば、安全装置86の実現を単純化するために有用である。機能をホストデバイスから隠されている場合、安全装置はその機能をサポートする必要は無い(ただし、通常、関連するSPIトランザクションを識別して、それらがバスに現れた場合にそれらを中断するために必要である)。
様々な実施形態では、プロセッサ94は、異なる時点でフラッシュデバイス78から実際のSFDPを取得することができる。 例えば、安全装置86内の不揮発性メモリは、例えば、システム統合またはテスト中に、フラッシュデバイス78の実際のSFDPで事前にプログラムされてもよい。 別の例として、プロセッサ94は、ホストデバイスがフラッシュデバイスにアクセスする前に、電源投入シーケンス中にフラッシュデバイス78からSFDPを検索してもよい。
続いて、ホストデバイス74がSFDP読み取りトランザクションを発行すると、プロセッサ94はコマンドのオペコードを識別し、(例えば、図5または図8のCS2_O#信号を「High」に設定することによって)トランザクションを中断する。その後、バス82のMISOラインを介して修正されたSFDPをホストデバイス74に供給することにより、トランザクションを完了する。ホストデバイスには、SFDPがフラッシュデバイスではなく安全装置によって提供されていることを検出する方法がない。
安全装置による書き込み/消去トランザクションの安全なメディエーション
一部の実施形態では、安全装置86は、SPIバス上のトランザクションを監視するだけでなく、ホストデバイスとフラッシュデバイスとの間を仲介する。これらの実施形態では、安全装置86は、ホストデバイス78から選択されたSPIコマンド(例えば、書き込みコマンドおよび消去コマンド)を受け取り、コマンドが許可されていることを確認する。許可された場合にのみ、安全装置86はトランザクションを完了する。つまり、ホストデバイス74の代わりにフラッシュデバイス78でコマンドを実行する。
通常、安全装置86における検証プロセスは、フラッシュデバイスに書き込まれるべきデータに対するいくらかの評価を含む。いくつかの実施形態では、この評価は、いくつかの暗号化操作、例えば、署名されたデータの署名に対する認証を含む。この種の検証タスクは、通常、かなりの計算作業を必要とするため、バス上のトランザクションのリアルタイムのオンザフライ検証(および場合によっては中断)にはあまり適さない。
図10は、本発明の実施形態による、ホストとSPIフラッシュとの間の書き込み/消去トランザクションの安全な仲介のための方法を概略的に示すフローチャートである。 この方法は、監視ステップ170で、安全装置86のプロセッサ94がSPIバス82上のトランザクションを監視することから始まる。
識別ステップ174で、プロセッサ94は、ホストデバイス74によって要求された、フラッシュデバイス78への書き込みトランザクションを識別する。ブロックステップ178では、プロセッサ94は、要求された書き込みトランザクションがフラッシュデバイスで実行されるのをブロックする。取得ステップ182では、プロセッサ94は、ホストデバイス74から(SPIバスを介して、またはホストデバイスと安全装置の間の他の任意の適切なインターフェースを介して)書き込みトランザクションのコマンドおよびデータを取得する。
評価ステップ186では、プロセッサ94は書き込みトランザクションを評価する。上記のように、評価には、書き込まれるデータの暗号化またはその他の評価が含まれる場合がある。検証が成功した場合、すなわち、書き込みトランザクションが許可されていることが判明した場合、プロセッサ94は、ホストデバイス74に代わってフラッシュデバイス78で書き込みトランザクションを実行する。そうでない場合、すなわち検証が失敗した場合、書き込みトランザクションは実行されず、上記のステップ170に戻る。
図10のフローは、単に概念を明確にするために描かれたフローの例である。 別の実施形態では、他の任意の適切なフローを使用することができる。 たとえば、図10のフローは、一度に1つのトランザクションの識別、ブロック、および条件付き実行を示している。 別の実施形態では、複数のトランザクションがブロックされ、評価され、実行され、または一括して拒否されてもよい。 例えば、プロセッサ94は、大量のデータをメモリに書き込む一連の書き込みトランザクションを識別することができる。プロセッサは、これらのトランザクションをブロックし(フラッシュも指定されている場合)、データ全体(トランザクションのシーケンス全体)をホストデバイスから取得し、データ全体を評価する。データ全体が許可されている場合にのみ、プロセッサ94はデータをフラッシュデバイスに書き込む。
本明細書において、「書き込みトランザクション」という用語は、フラッシュプログラム、フラッシュセクター/ブロック/チップ消去、書き込み可能、およびフラッシュデバイスの状態を変更する他のさまざまなコマンドなど、さまざまなタイプのトランザクションを指す。
通常、この方法をサポートするには、安全装置86がバス82でSPIトランザクションを開始し、安全装置とホストデバイスの間に適切なインターフェイス(バス82またはその他)を提供し、バスが安全装置の制御下にある間は、ホストデバイスがSPIバスを介してトランザクションを送信しないようにする必要がある。
図1および2のシステム20、70、110、130および132の構成。 図1、3〜6、および8ならびに安全装置36、86ならびにバス32、82などの様々なシステム要素の構成は、概念を明確にするために純粋に描かれている構成例である。代替の実施形態では、他の任意の適切な構成を使用することができる。
図では、わかりやすくするために、単一の周辺デバイスと単一のホストデバイスのみを示しているが、いくつかの実施形態では、安全システムは、2つ以上の周辺デバイスおよび/または2つ以上のホストデバイスを備えてもよい。本明細書で説明される実施形態は、例としてI2CおよびSPIバスに言及しているが、本発明はこれに限定されない。必要に応じて、他の適切なタイプのバスで本発明を実施することができる。
本明細書で説明するSPI関連の実施形態は、明確にするために、主に単一ビットSPIモードを指す。代替の実施形態では、本発明に開示された技法は、デュアルSPI、クワッドSPI、QPIおよびDDRモードなどの他のSPIモードで使用することもできる。本発明に開示された技術は、連続読み取りモードなどの他のモードにも適用できる。
システム20、70、110、130、および132の異なる要素は、特定用途向け集積回路(ASIC)またはフィールドプログラマブルゲートアレイ(FPGA)などの任意の適切なハードウェアを使用して実現できる。いくつかの実施形態では、安全装置32および86のいくつかの要素、例えば、プロセッサ44またはプロセッサ94は、ソフトウェアを使用して、またはハードウェアおよびソフトウェア要素の組み合わせを使用して実現することができる。メモリ48および98は、ランダムアクセスメモリ(RAM)またはフラッシュメモリなどの任意の適切なタイプのメモリデバイスを使用して実現することができる。
いくつかの実施形態では、プロセッサ44および/またはプロセッサ94は、本明細書で説明される機能を実行するようにソフトウェアでプログラムされた汎用プログラム可能プロセッサを含む。 ソフトウェアは、例えばネットワークを介して電子的形態でプロセッサにダウンロードされてもよく、磁気、光学、または電子メモリなどの非一時的な有形媒体(non−transitory tangible media)に提供および/または格納されてもよい。
上述の実施形態では、安全装置は、先にバスを監視することによって無許可のトランザクションを検出し、次にトランザクションを中断する。代替実施形態では、安全装置は、バス上で先にそれを検出することなく、またはバスをまったく監視することなく、トランザクションを中断することができる。 たとえば、安全装置は、所定のホストが承認されるまで、または承認されない限り、所定のホストのチップセレクト(CS)ラインを上書きする場合がある。 許可は、必ずしも同じバスを使用する必要はなく、任意の適切な方法で実行できる。
非限定的な例として、本明細書に記載の方法およびシステムは、セキュアメモリアプリケーション、モノのインターネット(IoT)アプリケーション、組み込みアプリケーション、または自動車アプリケーションなどのさまざまなアプリケーションで使用できる。
よって、理解されるべきことは、上述の実施例は、一例として引用されたものであり、本発明は、特に上で示され説明されたものに限定されないことである。むしろ、本発明の範囲は、上述した様々な特徴の組み合わせ及び部分的な組み合わせ、ならびに前述の説明を読むことによって当業者に想到し得る変形および修正の両方を含む。本特許出願において参照により援用される文書は、本明細書において明示的または暗示的になされた定義と矛盾するとき、これらの組み込まれた文書で定義される用語を除いて、本明細書の定義を考慮する必要がある。