(57)【要約】【課題】メモリ領域に対するアクセスを検閲することができる集積回路を提供する。【解決手段】集積回路は、検閲基準に基づいて様々なメモリ領域に対するアクセスを検閲することができる不揮発性メモリモジュールを含む。検閲基準を実装するために使用される情報が、不揮発性メモリロケーションに記憶される。ワンタイムプログラマブル不揮発性メモリロケーションが、永続検閲キーを表す値を記憶する。永続検閲キーが消去状態にある場合、１つまたは複数の資源が、不揮発性メモリロケーションを変更し、検閲をディセーブルすることを許可される。永続検閲キーが１つまたは複数のプログラムビットを有する場合、資源は、不揮発性メモリロケーションを変更し、検閲をディセーブルすることを許可されない。【選択図】図１
2013186896.tif 000002
【特許請求の範囲】
【請求項１】
方法であって、
集積回路の第１の不揮発性メモリ記憶ロケーションにおいて第１の指示子をアサートして集積回路のメモリを検閲動作モードに移行させることであって、検閲モードに移行した場合、前記集積回路のデバッグモジュールからの前記メモリにアクセスするアクセス要求が認証される必要があり、命令ベースのプロセッサからの前記集積回路の前記メモリにアクセスするアクセス要求は認証される必要がない、前記集積回路のメモリを動作モードに移行させること、
第１のワンタイムプログラマブル（ＯＴＰ）不揮発性メモリロケーションにおいて第２の指示子をアサートして前記メモリを永続検閲動作モードに移行させることであって、前記永続検閲動作モードに移行した場合、前記命令ベースのプロセッサにおいて実行される命令が前記第１の記憶ロケーションを消去することを妨げられる、前記メモリを永続検閲動作モードに移行させることを備える、方法。
【請求項２】
前記第２の指示子は複数のビットを含み、
前記第２の指示子をアサートすることは、前記第２の指示子の値に関係なく、前記複数のビットのうちの少なくとも所定数をプログラミングすることを含む、請求項１に記載の方法。
【請求項３】
前記所定数は１である、請求項２に記載の方法。
【請求項４】
前記メモリは、プログラム可能でありかつ消去可能である複数の不揮発性メモリブロックを含み、
前記複数の不揮発性メモリブロックは、前記第１の記憶ロケーションを含む第１のメモリブロックを含む、請求項１に記載の方法。
【請求項５】
前記第２の指示子をアサートすることは、前記第１の指示子をアサートした後に行われ、
前記第１のメモリブロックを消去することは、前記第１の指示子をアサートするよりも前に行われる、請求項４に記載の方法。
【請求項６】
永続検閲動作モードに移行した場合、前記命令ベースのプロセッサにおいて実行される前記命令は、前記第１のメモリブロックの複数の記憶ロケーションのいずれを消去することを妨げられる、請求項４に記載の方法。
【請求項７】
前記複数の不揮発性メモリブロックの第２のメモリブロックは、前記メモリが永続検閲動作モードに移行した場合に前記命令ベースのプロセッサによって実行される命令によって消去およびプログラミングされることができる、請求項４に記載の方法。
【請求項８】
前記集積回路の前記デバッグモジュールからの前記メモリにアクセスするアクセス要求は、前記第１のメモリブロックに記憶される第３の指示子に基づいて認証される必要がある、請求項４に記載の方法。
【請求項９】
前記複数のプログラム可能かつ消去可能な不揮発性メモリブロックおよび前記ＯＴＰ不揮発性メモリブロックは同じビットセルアレイ内に位置する、請求項４に記載の方法。
【請求項１０】
永続検閲動作モードに移行した場合、前記命令ベースのプロセッサは、前記第１の記憶ロケーションをプログラミングすることを妨げられる、請求項１に記載の方法。
【請求項１１】
前記第１のワンタイムプログラマブル（ＯＴＰ）不揮発性メモリロケーションは、複数のＯＴＰメモリロケーションのうちの１つであり、
前記複数のＯＴＰメモリロケーションは、前記メモリが永続検閲動作モードに移行したときにプログラミングされることができる、請求項１０に記載の方法。
【請求項１２】
前記メモリは、前記第１の記憶ロケーションを含む、請求項１に記載の方法。
【請求項１３】
前記第１のＯＴＰメモリロケーションを含む複数のＯＴＰメモリロケーションの消去アクセスを妨げることをさらに備える、請求項１に記載の方法。
【請求項１４】
デバイスであって、
デバッグモジュールと、
命令ベースのプロセッサと、
第１の指示子を記憶するための第１の記憶ロケーションを含む第１のメモリ領域と、
第２の指示子を記憶するための第２の記憶ロケーションであって、該第２の記憶ロケーションはワンタイムプログラマブル記憶ロケーションである、前記第２の記憶ロケーションと、
前記第１のメモリロケーション、前記第２の記憶ロケーション、前記デバッグモジュール、および前記命令ベースのプロセッサに結合されるメモリコントローラと、
前記第１の指示子がアサートされていることに応答して、前記デバッグモジュールによる前記第１のメモリ領域へのメモリアクセス要求の認証を要求するとともに、前記第１の指示子がアサートされていることに応答して、前記命令ベースのデータプロセッサによる前記第１のメモリ領域に対するメモリアクセス要求の前記認証を要求しない前記メモリコントローラの検閲制御モジュールと、
前記第２の指示子がアサートされていることに応答して、前記第１の記憶ロケーションが消去されることを防止する前記メモリコントローラの消去モジュールとを備える、デバイス。
【請求項１５】
前記第２の記憶ロケーションは、複数のビットを含み、
前記消去モジュールは、前記第２の指示子の値に関係なく、複数のビットのうちの所定数をプログラミングされていることに応答して、前記第２の指示子がアサートされると判定することが可能である、請求項１４に記載のデバイス。
【請求項１６】
前記第１のメモリ領域は、前記第１の記憶ロケーションを含む不揮発性メモリ領域を含み、
該不揮発性メモリ領域は、プログラム可能かつ消去可能である、請求項１４に記載のデバイス。
【請求項１７】
前記不揮発性メモリ領域は、第１のメモリブロックおよび第２のメモリブロックを含む複数のメモリブロックを含み、
前記第１のメモリブロックは、
前記第１の記憶ロケーションと、
前記第２の指示子がセットされていることに応答して、前記第１のメモリブロックの任意の記憶ロケーションが消去されることを妨げ、前記第２の指示子がアサートされていることに応答して、前記第２のメモリブロックの任意の記憶ロケーションが消去されることを妨げない前記消去モジュールとを含む、請求項１６に記載のデバイス。
【請求項１８】
方法であって、
メモリコントローラにおいて、要求側デバイスからの消去またはプログラミング要求を受信すること、
複数のビットを有するＯＴＰ記憶ロケーションのすべてのビットが消去されるとの判定に応答して前記消去またはプログラミング要求が実施されることを許可すること、またはそうではなく、前記ＯＴＰ記憶ロケーションの任意の１つまたは複数のビットがプログラミングされているとの判定に応答して前記消去またはプログラミング要求の実施を妨げることを含む、方法。
【請求項１９】
前記消去またはプログラミング要求は第１の資源から第１のメモリロケーションへのものであり、
第１のメモリロケーションは、デバッグモジュールによる前記第１のメモリに対するアクセス要求が認証される必要があるか否かを示す第１の指示子を記憶する、請求項１８に記載の方法。
【請求項２０】
前記要求側デバイスは、命令ベースのプロセッサである、請求項１９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般的には電子デバイスに関し、より詳細には、不揮発性メモリを含む電子デバイスに関する。
【背景技術】
【０００２】
知的財産を保護するとともにそのようなデータの完全性を保証するために、不揮発性メモリ（ＮＶＭ）内に記憶されている特定の情報がコンテンツの読み出し、消去またはプログラムのためにアクセスされることを防止する機能が所望されている。１つまたは複数の周辺機器および１つまたは複数のデータプロセッサを含む集積回路上にＮＶＭが組み込まれるときのそのような情報の保護も所望されている。多くのマイクロコントローラは、デバイスが検閲されないままにするために公衆検閲制御語（ｐｕｂｌｉｃ  ｃｅｎｓｏｒｓｈｉｐ  ｃｏｎｔｒｏｌ  ｗｏｒｄ）が特定のＮＶＭブロック内にプログラミングされることを必要とする検閲ロジックを実装し、それによって、ＮＶＭに対する外部アクセスが可能になる。たとえば、検閲制御語を記憶しているＮＶＭブロックを消去およびプログラミングすることによって検閲制御語ロケーションが変更され、所有者のパスワードが提供されると、たとえば、デバッグインターフェースを介して、デバイスは所有者のパスワードを知ることなく検閲されることになり、ＮＶＭは外部からアクセス可能でなくなり、したがってコンテンツおよびＮＶＭのコンテンツの完全性が保護される。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許第５４３２９５０号明細書
【特許文献２】米国特許第５３７７２６４号明細書
【特許文献３】米国特許第５７７１３４８号明細書
【特許文献４】米国特許出願公開第２００８／００８６７８０号明細書
【非特許文献】
【０００４】
【非特許文献１】インテル（Intel）、「Intel StrataFlash(r) Embedded Memory (P30):1-Gbit P30 Family」、Datasheet, Order Number:306666, Revision:004;２００５年１１月１日;１０７ページ
【発明の概要】
【課題を解決するための手段】
【０００５】
本発明の方法は、集積回路の第１の不揮発性メモリ記憶ロケーションにおいて第１の指示子をアサートして集積回路のメモリを検閲動作モードに移行させることであって、検閲モードに移行した場合、前記集積回路のデバッグモジュールからの前記メモリにアクセスするアクセス要求が認証される必要があり、命令ベースのプロセッサからの前記集積回路の前記メモリにアクセスするアクセス要求は認証される必要がない、前記集積回路のメモリを動作モードに移行させること、第１のワンタイムプログラマブル（ＯＴＰ）不揮発性メモリロケーションにおいて第２の指示子をアサートして前記メモリを永続検閲動作モードに移行させることであって、前記永続検閲モードに移行した場合、前記命令ベースのプロセッサにおいて実行される命令が前記第１の記憶ロケーションを消去することを妨げられる、前記メモリを永続検閲動作モードに移行させることを備える。
【０００６】
本発明のデバイスは、デバッグモジュールと、命令ベースのプロセッサと、第１の指示子を記憶するための第１の記憶ロケーションを含む第１のメモリ領域と、第２の指示子を記憶するための第２の記憶ロケーションであって、該第２の記憶ロケーションはワンタイムプログラマブル記憶ロケーションである、前記第２の記憶ロケーションと、前記第１のメモリロケーション、前記第２の記憶ロケーション、前記デバッグモジュール、および前記命令ベースのプロセッサに結合されるメモリコントローラと、前記第１の指示子がアサートされていることに応答して、前記デバッグモジュールによる前記第１のメモリ領域へのメモリアクセス要求の認証を要求するとともに、前記第１の指示子がアサートされていることに応答して、前記命令ベースのデータプロセッサによる前記第１のメモリ領域に対するメモリアクセス要求の前記認証を要求しない前記メモリコントローラの検閲制御モジュールと、前記第２の指示子がアサートされていることに応答して、前記第１の記憶ロケーションが消去されることを防止する前記メモリコントローラの消去モジュールとを備える。
【０００７】
本発明の方法は、メモリコントローラにおいて、要求側デバイスからの消去またはプログラミング要求を受信すること、複数のビットを有するＯＴＰ記憶ロケーションのすべてのビットが消去されるとの判定に応答して前記消去またはプログラミング要求が実施されることを許可すること、またはそうではなく、前記ＯＴＰ記憶ロケーションの任意の１つまたは複数のビットがプログラミングされているとの判定に応答して前記消去またはプログラミング要求の実施を妨げることを含む。
【図面の簡単な説明】
【０００８】
本開示は、添付の図面を参照することによってよりよく理解されることができ、その多数の特徴、および利点が当業者に明らかとなる。
【図１】一実施形態による集積回路を示すブロック図である。
【図２】一実施形態による図１のＮＶＭモジュールを示すブロック図である。
【図３】本発明の特定の実施形態による流れ図である。
【図４】図３の流れ図を含む流れ図の特定の実施態様を示す図である。
【図５】図３の流れ図を含む流れ図の特定の実施態様を示す図である。
【発明を実施するための形態】
【０００９】
集積回路は、検閲基準に基づいて様々なメモリ領域に対するアクセスを検閲することができる不揮発性メモリ（ＮＶＭ）モジュールを含む。検閲基準の現在のセットを示すために使用される検閲制御情報が、消去可能／プログラム可能である不揮発性メモリロケーションに記憶される。ワンタイムプログラマブル（one-time programmable:ＯＴＰ）不揮発性メモリロケーションが、永続検閲キーを表す値を記憶する。永続検閲キーが消去状態にある場合、１つまたは複数の資源が、検閲基準を実装するように使用される不揮発性メモリロケーションを消去およびプログラムすることを許可され、したがって、検閲をディセーブルすることができる。永続検閲キーが１つまたは複数のプログラミングされたビットを有する場合、資源は、検閲基準を実装するように使用される不揮発性メモリロケーションを消去およびプログラムすることを許可されず、それゆえ、検閲をディセーブルすることができない。永続検閲キーを使用することによって、通常なら検閲制御情報を変更することが可能である資源が、そうすることを防止される。検閲制御情報が変更されることを防止する機能は、検閲制御情報が記憶されているＮＶＭブロックを消去するとともにこの制御情報を公衆検閲制御語に戻してプログラミングするのに使用され得、それによって、デバイスを悪意をもって危険に晒す、複雑なアプリケーション内に埋め込まれるハッカーコードが存在し得るという懸念に対処することができる。本開示の具体的な実施態様は図１〜図５を参照することによってより良好に理解されよう。
【００１０】
図１は、一実施形態による集積回路１００をブロック図形式で示す。示されている実施形態では、集積回路（ＩＣ）１００は、バスなどのような適切なインターフェース２１を介して複数の信号またはビットと接続される１つまたは複数のプロセッサ１１１と、デバッグモジュール１１２と、外部ＩＯモジュール１１３と、１つまたは複数のＮＶＭモジュール２００と、１つまたは複数の他の揮発性メモリモジュール１４６と、１つまたは複数の他のモジュール１４７とを含む。代替の実施形態は、プロセッサ１１１を有しなくてもよく、デバッグモジュール１１２を有しなくてもよく、他のメモリ１４６を有しなくてもよく、他のモジュール１４７を有しなくてもよく、かつ／または外部ＩＯモジュール１１３を有しなくてもよい。逆に代替の実施形態は追加のモジュールを有してもよい。
【００１１】
説明を目的として、プロセッサ１１１は、揮発性メモリモジュール１４６またはＮＶＭモジュール２００のいずれかから命令およびデータをフェッチおよび実行することができる汎用プロセッサであると仮定される。
【００１２】
デバッグモジュール１１２は、外部デバッグインターフェースを介して集積回路１００と外部デバッグデバイス（図示せず）との間で情報を通信するように使用されて、消費者特有のアプリケーションをデバッグするためにＩＣ１００の状態情報にアクセスして変更する機能を提供する。同様に、外部ＩＯモジュール１１３は、外部インターフェースに接続され、当該外部インターフェースを通じて、ＩＣ１００と外部デバイスとの間で情報が通信される。なお、デバッグモジュール１１２および外部ＩＯモジュール１１３は、外部インターフェースを有しないという点で内部モジュールであるとみなされ、または他の様態で外部モジュールよりもよりセキュアであると考えられるプロセッサ１１１ほどにセキュアであるとは考えられない外部モジュールの例である。それゆえ、プロセッサ１１１は処理のためにＮＶＭモジュール２００からコードおよびデータを常にフェッチすることができる内部資源であると考えられ、一方でデバッグモジュール１１２および外部ＩＯモジュール１１３は、そのＮＶＭに対するアクセスがＮＶＭモジュール２００の検閲ロジックによって精査される外部資源であると考えられる。
【００１３】
図２は、ＮＶＭモジュール２００の特定の実施形態を示す。示されている具体的な実施形態では、ＮＶＭモジュール２００は検閲制御モジュール２３０と、ＮＶＭコントローラモジュール２２０と、ＮＶＭアレイモジュール２１０とを有するものとして示されている。示されている具体的な実施形態によれば、ＮＶＭアレイモジュール２１０は、ＮＶＭビットセルアレイ２１３と、列ロジックモジュール２１１と、行復号モジュール２１２とを含む。列ロジックモジュール２１１は、列復号器およびセンス増幅器（図示せず）を組み込んでいる。ＮＶＭコントローラモジュール２２０は、バスインターフェース２１または他のインターフェースを通じて通信されるプロセッサ（複数の場合もあり）１１１に応答するなどして、行復号器モジュール２１２および列ロジックモジュール２１１を通じてＮＶＭビットセルアレイ２１３の動作を制御する。たとえば、ＮＶＭコントローラモジュール２２０は、行アドレスを行復号器モジュール２１２に供給し、列アドレスを列ロジックモジュール２１１に供給することによってＮＶＭビットセルアレイ２１３内のメモリセルに対するアクセスを制御する。たとえば、プログラミングのためにデータが列ロジックモジュール２１１を介してＮＶＭビットセルアレイ２１３に書き込まれ、またはそこから読み出される。ＮＶＭビットセルアレイ２１３は、通常使用のためのプログラム可能・消去可能なブロックのセット４１と、シャドーブロックとも称される特殊プログラム可能・消去可能ブロック２５０と、ワンタイムプログラマブル（ＯＴＰ）ブロック２６０とを含む多数のメモリブロックとして実装される。
【００１４】
シャドーブロック２５０は、検閲制御語（censorship control word:ＣＣＷ）５１およびセキュア・アクセス・キー（secure access key:ＳＡＫ）５２のような様々な制御情報を記憶するように使用される。ＯＴＰブロック２６０は、ＩＣ１００に関連する構成情報、および永続検閲キー（permanent censorship key:ＰＣＫ）のような様々な制御情報を記憶する。不揮発性メモリモジュール２００においてアクセス要求を受信すると、検閲制御モジュール２３０は、アクセス要求が有効であるか否かを判定する。たとえば、検閲制御モジュール２３０は、ＣＣＷ５１の状態に基づいて所与のアクセス要求が検閲の影響下にあるか否かを判定する。ＣＣＷ５１の状態が現在のアクセス要求が検閲の影響下にないことを示す場合、要求は正当であると確認されてさらなる処理を受ける。しかしながら、ＣＣＷ５１の状態が現在のアクセス要求が検閲の影響下にあることを示す場合、検閲制御モジュール２３０は、セキュア・アクセス・キー（ＳＡＫ）５２に基づいて現在のアクセス要求が認証されるべきか否かを判定する。ＳＡＫ５２に基づいて認証される場合、要求は正当であると確認され、継続を許可される。ＳＡＫ５２によって認証されない場合、検閲制御モジュール２３０はアクセス要求が完了するのを妨げる。
【００１５】
特定の実施形態によれば、検閲されることになるアクセス要求は、ユーザによって提供されるパスワードをＳＡＫ５２に記憶されている値と比較することによって認証されることができる。一実施形態では、パスワードは、外部ＩＯモジュール１１３からのＩＣ１００の初期ブート手順の間にユーザによって提供され、その間、ユーザによって提供される値がＳＡＫ５２における値と比較される。他の実施形態では、提供されるパスワードは、認証のために各個々のアクセス要求とともに提供される。ＳＡＫ５２に記憶されている値が所有者のパスワードと一致する場合、検閲制御モジュール２３０は要求が正当であると確認し、それによって、要求の実施を許可する。記憶されている所有者のパスワードが提供される所有者のパスワードと一致しない場合、要求は検閲される。別の実施形態では、検閲制御モジュール２３０はＮＶＭモジュール２００の外部にあり、別個のＮＶＭバス・インターフェース・ユニット（ＢＩＵ）モジュール（図示せず）の中にあることができる。
【００１６】
ＳＡＫ５２および／またはＣＣＷ５１に記憶される値は、ＮＶＭの内容が外部デバイスによってアクセスされることを防止するように設定されることができるが、内部資源がＳＡＫ５２および／またはＣＣＷ５１の状態を検閲機能をディセーブルするように変更することが可能であり得る。ＩＣ１００のいくつかの構成では、内部資源がＳＡＫ５２および／またはＣＣＷ５１の状態を変更可能であることが望ましい場合がある。一方で他の構成では、内部資源がＳＡＫ５２および／またはＣＣＷ５１の状態を変更することができることが望ましくない場合がある。
【００１７】
ＣＣＷ５１およびＳＡＫ５２の値が内部資源のような任意の資源によって変更されることを防止するために、ＣＣＷ５１およびＳＡＫ５２を含むＮＶＭブロックが消去またはプログラミングを受けるか否かを示す永続検閲キー（ＰＣＫ）の値がＯＴＰロケーションのＰＣＫ６１に記憶されている。本開示の具体的な実施形態によれば、ＰＣＫは、ＰＣＫ６１の消去論理状態を反映する論理値を有する、６４ビットワードのようなマルチビット値である。他の実施形態は、１６ビット以上、３２ビット以上などのような、より多いまたはより少ないビット数を有するＰＣＫ６１を含むことができる。ＰＣＫ６１の任意の１つまたは複数のビットが続いてプログラミングされること、たとえば、ＰＣＫ６１の１つまたは複数のメモリセルがプログラム状態にあることに応答して、ＮＶＭコントローラモジュール２２０はＣＣＷ５１およびＳＡＫ５２が消去またはプログラミングされることを許可しない。このようにして、通常ならＣＣＷ５１およびＳＡＫ５２の値を消去またはプログラミングすることを認証される資源がそうすることを防止することが可能であり、それによって、さらなるレベルのセキュリティが提供される。
【００１８】
本明細書に記載の実施形態によれば、検閲制御モジュール２３０によって正当であると確認されるアクセス要求はＮＶＭコントローラモジュール２２０によってさらに処理され、ＮＶＭコントローラは、より低いレベルのアクセス要求情報をＮＶＭアレイモジュール２１０に提供する。ＮＶＭコントローラモジュール２２０は、それぞれ、様々なアクセスタイプをハンドリングする複数のモジュールを有するものとして示されている。たとえば、読み出し制御モジュール２２８は、読み出しアクセス要求（読み出し要求）をハンドリングし、消去制御モジュール２２６は、消去アクセス要求（消去要求）をハンドリングし、プログラム制御モジュール２２７は、プログラムアクセス要求（プログラム要求）をハンドリングする。別の実施形態では、ＮＶＭコントローラモジュール２２０は、すべてのタイプのＮＶＭアレイアクセスをハンドリングする１つのモジュールであることができる。たとえば、ＮＶＭビットセルアレイ２１３は、フラッシュメモリとして実装されることができ、ＮＶＭコントローラは、メモリの特定のアドレスに対する書き込み要求を、フラッシュメモリ動作と一致する１つまたは複数のプログラミングおよび消去要求に変換する。
【００１９】
ＮＶＭコントローラモジュール２２０に供給される消去要求は、消去制御モジュール２２６によってハンドリングされる。ＯＴＰブロック２６０に対する消去要求を妨げることに加えて、消去制御モジュール２２６は、ＰＣＫ６１の状態に基づいて、シャドーブロック２５０に対する消去アクセスを許可するか、またはシャドーブロック２５０に対する消去アクセスを妨げるかを判定する。特定の実施形態によれば、永続検閲キー（ＰＣＫ）６１は、プログラミングされることが可能であるが消去されることが可能でないマルチビット記憶ロケーションである。ＰＣＫ６１が、そのマルチビット記憶ロケーションのうちの１つまたは複数をプログラミングされることに応答して、消去制御モジュール２２６は、シャドーブロック２５０への消去要求を妨げる。それゆえ、ＰＣＫ６１の１つまたは複数のビットがプログラミングされると、ＰＣＫ６１にプログラミングされている値にかかわらず、シャドーブロック２５０が消去されることは可能でない。同様に、プログラム制御モジュール２２７は、ＰＣＫ２６１記憶ロケーションの１つまたは複数のビットがプログラミングされている場合、いかなるプログラム要求がシャドーブロック２５０のロケーションをプログラミングすることも妨げる。
【００２０】
それゆえ、ＯＴＰブロック２６０内にＰＣＫ６１記憶ロケーションを実装することによって、ＩＣ１００を使用するシステムの製造者は、検閲ＰＣＫ６１の１つまたは複数のビットをプログラミングして、シャドーブロック２５０の変更を妨げることによってデバイスのモードを永続的に保持することができる。なお、ＯＴＰ  ＮＶＭロケーションについて、１つまたは複数のビットがプログラミングされると、いずれのビットをも消去状態に変更し戻す方法はなく、ビット（複数の場合もあり）は永続的にプログラム状態にあるままである。したがって、内部資源から実行する、ＩＣ内に埋め込まれるハッカーコードが、デバイスを悪意をもって危険に晒すためにシャドーブロック２５０を消去およびプログラミングすることを妨げられることができる。ＮＶＭコントローラモジュール２２０がどのようにこのセキュリティ機能を実装するかは図３〜図５の流れ図を参照するとより良好に理解されよう。
【００２１】
図３は、本発明の特定の実施形態の流れ図を示す。ＮＶＭビットセルアレイ２１３内に位置する不揮発性メモリに対する現在のアクセス要求がブロック３０１において受信される。現在のアクセス要求は１つまたは複数の特定の条件に関してすでに正当性を確認されている場合がある。たとえば、一実施形態では、ブロック３０１に提供される現在のアクセス要求は、図４を参照してさらに説明されるように、現在のアクセス要求が、検閲基準の一部として正当性を確認されたことに続いて、たとえば、検閲制御モジュール２３０によって正当性を確認された後に、発生する。代替の実施形態では、ブロック３０１に提供される現在のアクセス要求は、図５を参照してさらに説明されるように、現在のアクセス要求が、検閲基準の一部として正当性を確認される前に、発生する。それゆえ、特定の実施態様に応じて、ブロック３０１において受信される現在のアクセス要求は、すでに説明されたように、要求側デバイスの特定のメモリロケーションにアクセスする機能に関して、値ＣＣＷおよびＳＡＫに基づいて検閲制御モジュール２３０によってすでに正当性を確認されている場合がある。
【００２２】
ブロック３０１において、現在のアクセス要求がプログラミング要求であるか否かが判定される。そうである場合、フローはハンドリングのためのブロック３０２に進み、そうでない場合、フローはブロック３１１に進む。
【００２３】
ブロック３０２において、プログラミング要求が、ＮＶＭビットセルアレイ２１３のシャドーブロック２５０のような、特定のメモリロケーションまたは領域に対するものであるか否かが判定される。本開示によれば、「シャドーブロック」という用語は、検閲制御モジュール２３０およびＮＶＭコントローラモジュール２２０によって、ＮＶＭのいくつかまたはすべてが構成される様式を決定するために使用される情報を記憶することが可能であるＮＶＭメモリのロケーションまたは領域を指す。たとえば、シャドーブロックは、すでに説明されたように、ＣＣＷ５１およびＳＡＫ５２が記憶されるＮＶＭの一部分であることができる。プログラミング要求がシャドーブロックに対するものであると判定された場合、フローはブロック３０２からブロック３０３に進む。そうでない場合、フローはブロック３１３に進み、現在のプログラミング要求の正当性が確認されて通常通りに継続することを許可される。
【００２４】
ブロック３０３において、永続検閲キー（ＰＣＫ）を記憶するＯＴＰロケーションがプログラミングされているか否かが判定される。１つの実施形態では、ＰＣＫが記憶されているＯＴＰロケーションは複数のメモリセルを含み、実際のＰＣＫ値に関係なく、複数のメモリセルのうちの１つまたは複数がプログラミングされている場合、ブロック３０３においてＰＣＫはプログラミングされていると判定され、フローはブロック３０４に進み、そうでない場合、フローはブロック３１３に進み、現在のプログラミング要求が実施を許可される。
【００２５】
ブロック３０４において、ＮＶＭコントローラは現在のプログラミングアクセスが発生することを妨げる。プログラミングアクセスが発生することを妨げることによって、シャドーメモリの内容が変更されることはできず、それによって、ＣＣＷ５１およびＳＡＫ５２に記憶されている情報のような任意のセキュリティ情報は通常なら有効である要求によって変更されないことを確実にする。たとえば、上述のように、検閲がイネーブルされることに応答して検閲の影響下にない、プロセッサ１１１のような内部資源からの要求は、少なくともＣＣＷまたはＳＡＫに情報をプログラミングすることを妨げられることになる。ＰＣＫの任意の１つまたは複数のプログラムビットが、ＰＣＫの値に関係なく、シャドーメモリに対するアクセスを妨げることを可能にすることによってシャドーメモリがプログラミングされることができないことを確実にするために、ＰＣＫのすべてのビットをプログラミングすることによってさらなる保護が提供される。
【００２６】
ブロック３０１に戻って参照して、現在のアクセス要求がプログラミング要求でない場合、フローはブロック３１１に進む。ブロック３１１において、現在のアクセス要求が消去要求であるか否かが判定される。そうである場合、フローはブロック３１２に進み、そうでない場合、現在のアクセス要求はプログラミング要求でも消去要求でもなく、たとえば、読み出しアクセス要求であり、フローはブロック３１３に進み、アクセス要求は進行し、たとえば、正当性を確認されることを許可される。
【００２７】
ブロック３１２において、消去制御モジュール２２６は、消去要求がＰＣＫを含むＮＶＭアレイのＯＴＰブロック２６０のようなＯＴＰブロックに対するものであるか否かを判定する。そうである場合、フローはブロック３０４に進み、ＯＴＰロケーションの消去要求が妨げられ、そうでない場合、フローはブロック３０２に進む。
【００２８】
ブロック３０２において、現在の消去要求が、ＮＶＭビットセルアレイ２１３のシャドーブロック２５０のような、特定のメモリロケーションまたは領域に対するものであるか否かが判定される。現在の消去要求がシャドーブロックに対するものであると判定された場合、フローはブロック３０２からブロック３０３に進む。そうでない場合、フローはブロック３１３に進み、現在の消去要求の正当性が確認されてブロック３１４において通常通りに継続する。
【００２９】
ブロック３０３において、すでに説明されたようにＰＣＫがプログラミングされているか否かが判定される。そうである場合、フローはブロック３０４に進み、現在の消去要求が阻害され、そうでない場合、フローはＰＣＫがプログラミングされていないことに応答してブロック３１３に進み、現在のプログラミング要求が実施を許可される。
【００３０】
フローは正当性確認のブロック３１３からブロック３１４に進み、さらに正当性を確認された現在のアクセス要求が継続して通常通りにハンドリングされる。通常のアクセス操作の一部として、他の基準に基づくさらなる正当性確認が行われて、または行われずに、現在のアクセス要求がブロック３１４において実行されることができることが正しく理解されよう。これは図４および図５を参照するとより良好に理解されよう。
【００３１】
図４は、図３のブロック３０１に提供される前の検閲に関する現在のアクセス要求の正当性確認を示す、本開示の特定の実施形態の流れ図を示す。具体的には、アクセス要求はブロック４０１において受信され、ＣＣＷ５１に記憶されている値のような指示子が検閲をイネーブルするか否かが判定され、そこでは、目標メモリロケーションに対するアクセス要求がセキュア・アクセス・キー（ＳＡＫ）によって正当性を確認される必要がある。そうである場合、デバイスは検閲モードにあり、フローはブロック４０２に進み、そうでない場合、フローはブロック４１１に進み、アクセス要求が正当性を確認され、通常通りに継続することを許可される。
【００３２】
ブロック４０２において、ユーザによって提供されるパスワードがＳＡＫに一致するか否かが判定される。そうである場合、検閲モードが現在のアクセス要求を認証しており、フローは、さらなる正当性確認のための図３のフローを表すブロック４０３に進む。そうでない場合、フローはブロック４１２に進み、アクセス要求が阻害される。したがって、図４の特定の実施形態では、シャドーメモリに対するプログラミング要求および消去要求は、検閲制御語（ＣＣＷ）がアサートされ、かつセキュア・アクセス・キー（ＳＡＫ）の正当性が確認される場合にのみ、（ＰＣＫ）の状態に基づいて正当性を確認され、または妨げられる。
【００３３】
図５は、図３のフローに基づく現在のアクセス要求の最初の正当性確認の後に、検閲制御モジュール２３０が検閲に関して現在のアクセス要求の正当性を確認することを含む本開示の特定の実施形態の流れ図を示す。具体的には、ブロック４３１において最初にアクセス要求がハンドリングされ、これは図３のフローに対応し、図３のブロック３１４の継続される処理は図５においてブロック４３２〜４３５によって表されている。それゆえ、図３のブロック３１３において正当性を確認されたアクセス要求は図５のブロック４３２に提供され、検閲がイネーブルされるか否か、たとえば、ＣＣＷが検閲イネーブル値にプログラミングされているか否かが判定される。そうである場合、デバイスは検閲モードにあり、フローはブロック４３３に進み、そうでない場合、フローはブロック４３４に進み、アクセス要求が正当性を確認され、通常通りに継続することを許可される。ブロック４３３において、受信されるアクセスキーが記憶されているＳＡＫに一致するか否かが判定される。そうである場合、検閲モードが現在のアクセス要求の正当性を確認しており、フローは、アクセス要求の継続される処理のためにブロック４３４に進む。したがって、図５の特定の実施形態では、シャドーメモリに対するプログラミング要求および消去要求は、検閲制御語（ＣＣＷ）およびセキュア・アクセス・キー（ＳＡＫ）の状態に関係なく、永続検閲キー（ＰＣＫ）の状態に基づいて正当性を確認され、または妨げられる。
【００３４】
一般的に、ＮＶＭ内のコード／データのセキュリティを確実にするために、最初にシャドーブロックを消去してＣＣＷおよびＳＡＫをシャドーブロック内にプログラミングして検閲をイネーブルし、次いで、ＯＴＰ領域内の永続検閲キー（ＰＣＫ）ロケーションのすべてのビットをプログラミングしてプログラム状態にし、任意の資源によってシャドーブロックが変更されることを妨いて永続的な検閲をイネーブルすることが推奨される。
【００３５】
第１の態様において、方法は、集積回路のメモリコントローラにおいて、メモリロケーションのセットのうちの１つのロケーションにアクセスするための第１のアクセス要求を受信することを含むことができ、メモリロケーションのセットは、メモリロケーションの第１のサブセットおよびメモリロケーションのワンタイムプログラマブル（ＯＴＰ）サブセットを含み、第１のサブセットは、第１のメモリロケーションにおける第１の制御指示子を含み、ＯＴＰサブセットは、第２のメモリロケーションにおける複数のビットを備える第２の制御指示子を含み、第１の制御指示子は、メモリコントローラによって、メモリロケーションのセットにアクセスするための、集積回路の第１の資源からのアクセス要求が認証される必要があるか否かを判定するように使用される。方法は、第１のアクセス要求が第１のサブセットにアクセスするための要求であることに応答して、条件が満たされているか否かを判定することをも含むことができ、条件を満たすことは、第２の制御指示子の値に関係なく、第２の制御指示子の複数のビットのうちの少なくとも所定数がプログラミングされていると判定されることを含む。方法は、複数のビットのうちの少なくとも所定数がプログラミングされていると判定されることに応答して第１のサブセットに対する第１のアクセス要求を妨げること、そうでなく、複数のビットのうちの所定数未満がプログラミングされていないと判定されることに応答して第１のサブセット要求に対する第１のアクセスの正当性を検証することをさらに含むことができる。
【００３６】
第１の態様の１つの実施形態では、メモリの第１のサブセットは、プログラム可能／消去可能不揮発性メモリ（ＮＶＭ）であり、第１のアクセス要求は、プログラミング要求である。別の実施形態では、メモリの第１のサブセットは、プログラム可能／消去可能不揮発性メモリ（ＮＶＭ）であり、第１のアクセス要求は、消去要求である。特定の実施形態では、第１のサブセットは、第１の制御指示子を含む第１の部分および第２の部分を含むプログラム可能／消去可能不揮発性メモリ（ＮＶＭ）であり、条件を満たすことは、第１のアクセス要求が第１の部分に対するものであると判定すること、および、第１のアクセス要求が第２の部分に対するものである場合に条件が満たされていないと判定することをさらに含む。
【００３７】
第１の態様のさらに別の実施形態では、メモリのＯＴＰサブセットおよびメモリの第１のサブセットは、不揮発性メモリ（ＮＶＭ）である共通のメモリアレイ内に存在し、第１のアクセス要求がＯＴＰサブセットに対する消去要求であると判定されることに応答して第１のアクセス要求を妨げることをさらに含む。さらなる実施形態では、メモリの第１のサブセットは、第１の制御指示子を含む第１の部分および第２の部分を含み、条件を満たすことは、第１のアクセス要求が第１の部分に対するものであると判定すること、および、第１のアクセス要求が第２の部分に対するものである場合に条件が満たされていないと判定することをさらに含む。なおさらなる実施形態では、第１のアクセス要求がメモリのＯＴＰサブセットに対するプログラミング要求であることに応答して、条件が満たされているか否かにかかわりなく、第１のアクセス要求が正当性を確認される。
【００３８】
第１の態様の別の実施形態では、第１のアクセス要求は、集積回路の第２の資源からのものであり、第１の制御指示子は、メモリコントローラによって第２の資源からのアクセス要求が認証される必要があるか否かを判定するようには使用されない。さらに別の実施形態では、第２の資源は、集積回路のプロセッサコアである。さらなる実施形態では、第１のアクセス要求は、集積回路の第１の資源からのものであり、第１の資源からのアクセス要求が認証されるべきであることを示す第１の制御指示子に応答してメモリコントローラによって認証されている。
【００３９】
第２の態様において、集積回路デバイスは、電気的プログラム可能／消去可能不揮発性メモリである第１の記憶領域と、電気的にプログラム可能であるが電気的に消去可能ではない不揮発性メモリである第２のメモリ領域であって、当該第２の領域はマルチビット制御値を記憶するためのマルチビット記憶ロケーションを備える、前記第２のメモリ領域と、第１の制御指示子を記憶するための記憶ロケーションと、第１の制御指示子の所定値に応答して、集積回路デバイスの記憶領域のセットにアクセスするために認証される必要がある第１の資源とを含むことができる。デバイスは、第１の制御指示子の状態に関係なく、記憶領域のセットにアクセスすることができる第２の資源と、マルチビット記憶ロケーションの任意のビットロケーションがプログラム状態を有することに応答して、任意の資源による、第１の制御指示子を含む領域へのアクセス要求を妨げるためのメモリコントローラとをさらに含むことができる。
【００４０】
第２の態様の一実施形態では、メモリコントローラは、アクセス要求が消去アクセスである場合にアクセス要求を妨げることが可能である。別の実施形態では、メモリコントローラは、アクセス要求がプログラミングアクセスである場合にアクセス要求を妨げることが可能である。さらに別の実施形態では、記憶ロケーションは、第１の記憶領域の部分領域内にあり、メモリコントローラは、アクセス要求が部分領域に対するものである場合にアクセス要求を妨げることが可能である。
【００４１】
第２の態様のさらなる実施形態では、デバイスは、列ロジックおよび行復号器に結合されるメモリアレイを含み、メモリアレイは、第１の記憶領域および第２の記憶領域を備え、メモリコントローラは、第２の記憶領域に対する消去アクセス要求を妨げる。
【００４２】
第３の態様において、方法は、要求側デバイスに関して、かつ消去要求によって消去されることに成るアドレスに関して有効である消去要求を要求側デバイスからメモリコントローラにおいて受信すること、および、複数のビットを有するＯＴＰ記憶ロケーションのすべてのビットが消去されるとの判定に応答して、消去要求の正当性を確認すること、または、ＯＴＰ記憶ロケーションのいずれか１つもしくは複数のビットがプログラミングされていると判定することに応答して消去要求が記憶ロケーションを消去することを妨げることを含むことができる。
【００４３】
第３の態様の１つの形態では、方法は、アクセス要求が読み出し要求であるか、またはプログラミング要求もしくは消去要求であるかを判定すること、および、アクセス要求が消去もしくはプログラミング要求であることに応答して正当性確認または阻害を実施すること、またはそうではなくアクセス要求が読み出し要求であることに応答して、ＯＴＰ記憶ロケーションの状態に関係なく読み出し要求の正当性を確認することを含む。たとえば、ＯＴＰの或るロケーションの読み出しおよびプログラミングは、ＯＴＰロケーションの状態（ＰＣＫ）には依存しない。別の実施形態では、消去要求は、メモリコントローラによって要求が正当性を確認される否かを判定するために使用される値を記憶するワンタイムプログラマブル（ＯＴＰ）不揮発性メモリ（ＮＶＭ）に対するものである。
【００４４】
第３の態様のさらなる実施形態では、消去またはプログラミング要求は、メモリコントローラによって、要求側デバイスがＮＶＭに対するアクセスを認証される必要があるか否かを判定するために使用される値を記憶するプログラム可能かつ消去可能な不揮発性メモリ（ＮＶＭ）に対するものである。なおさらなる実施形態では、記憶ロケーションは、アクセスされているアドレスに関係なく要求側デバイスの正当性を確認するために使用される値を記憶する。
【００４５】
第４の態様では、方法は、該集積回路の第１の不揮発性メモリ記憶ロケーションにおいて第１の指示子をアサートして集積回路のメモリを検閲動作モードに移行することを含むことができ、検閲モードに移行した場合、集積回路のデバッグモジュールからのメモリにアクセスするアクセス要求が認証される必要があり、一方で命令ベースのプロセッサからの集積回路のメモリにアクセスするアクセス要求は認証される必要がない。方法は、第１のワンタイムプログラマブル（ＯＴＰ）不揮発性メモリロケーションにおいて第２の指示子をアサートしてメモリを永続検閲動作モードに移行することをも含むことができ、永続検閲モードに移行した場合、命令ベースのプロセッサにおいて実行される命令が第１の記憶ロケーションを消去することを妨げられる。
【００４６】
第４の態様の１つの実施形態では、第２の指示子は複数のビットを含み、第２の指示子をアサートすることは、第２の指示子の値に関係なく、複数のビットのうちの少なくとも所定数をプログラミングすることを含む。別の態様では、所定数は１である。特定の実施形態では、メモリは、プログラム可能でありかつ消去可能である複数の不揮発性メモリブロックを含み、複数の不揮発性メモリブロックは、第１の記憶ロケーションを含む第１のメモリブロックを含む。さらなる実施形態では、方法は、第１の指示子をアサートした後に第２の指示子をアサートすること、第１の指示子をアサートする前に第１のメモリブロックを消去することを含む。
【００４７】
第４の態様の別の実施形態では、方法は、永続検閲モードに移行した場合、命令ベースのプロセッサにおいて実行される命令が、第１のメモリブロックの複数の記憶ロケーションのいずれを消去することも妨げられることを含む。さらなる実施形態では、複数の不揮発性メモリブロックの第２のメモリブロックは、メモリが永続検閲モードにあるときは命令ベースのプロセッサによって実行される命令によって消去およびプログラミングされることができる。なおさらなる実施形態では、集積回路のデバッグモジュールからのメモリにアクセスするアクセス要求は、第１のメモリブロックに記憶される第３の指示子に基づいて認証される必要がある。さらに別の実施形態では、複数のプログラム可能かつ消去可能な不揮発性メモリブロックおよびＯＴＰ不揮発性メモリブロックは同じビットセルアレイ内に位置する。
【００４８】
第４の態様のまたさらなる実施形態では、永続検閲モードに移行した場合、命令ベースのプロセッサは、第１の記憶ロケーションをプログラミングすることを妨げられる。特定の実施形態では、第１のワンタイムプログラマブル（ＯＴＰ）メモリロケーションは、複数のＯＴＰメモリロケーションのうちの１つであり、複数のＯＴＰメモリロケーションは、メモリが永続検閲動作モードにあるときにプログラミングされることができる。より詳細な実施形態では、方法は、第１のＯＴＰロケーションを含む複数のＯＴＰメモリロケーションの消去アクセスを妨げることを含む。
【００４９】
第５の態様において、デバイスは、デバッグモジュールと、命令ベースのプロセッサと、第１の指示子を記憶するための第１の記憶ロケーションを含む第１のメモリ領域と、第２の指示子を記憶するための第２の記憶ロケーションとを含むことができ、第２の記憶ロケーションは、ワンタイムプログラマブル記憶ロケーションである。デバイスは、第１のメモリロケーション、第２の記憶ロケーション、デバッグモジュール、および命令ベースのプロセッサに結合されるメモリコントローラと、第１の指示子がアサートされていることに応答して、デバッグモジュールによる第１のメモリ領域へのメモリアクセス要求の認証を要求するとともに、第１の指示子がアサートされていることに応答して、命令ベースのデータプロセッサによる第１のメモリ領域に対するメモリアクセス要求の認証を要求しないためのメモリコントローラの検閲制御モジュールと、第２の指示子がアサートされていることに応答して、第１の記憶ロケーションが消去されることを防止するためのメモリコントローラの消去モジュールとを含む。
【００５０】
第５の態様の一実施形態では、第２の記憶ロケーションは複数のビットを含み、消去モジュールは、第２の指示子の値に関係なく、複数のビットのうちの所定数をプログラミングされていることに応答して、第２の指示子がアサートされると判定することが可能である。別の実施形態では、第１のメモリ領域は、第１の記憶ロケーションを含む不揮発性メモリ領域を含み、該不揮発性メモリ領域は、プログラム可能かつ消去可能である。さらなる実施形態では、不揮発性メモリ領域は、第１のメモリブロックおよび第２のメモリブロックを含む複数のメモリブロックを含み、第１のメモリブロックは、第１の記憶ロケーションを含む複数のメモリブロックと、第２の指示子がセットされていることに応答して、第１のメモリブロックの任意の記憶ロケーションが消去されることを妨げ、第２の指示子がアサートされていることに応答して、第２のメモリブロックの任意の記憶ロケーションが消去されることを妨げない消去モジュールとを含む。
【００５１】
第６の態様では、方法は、メモリコントローラにおいて、要求側デバイスからの消去またはプログラミング要求を受信すること、および、複数のビットを有するＯＴＰ記憶ロケーションのすべてのビットが消去されるとの判定に応答して消去またはプログラミング要求が実施されることを許可すること、またはそうではなく、ＯＴＰ記憶ロケーションの任意の１つまたは複数のビットがプログラミングされているとの判定に応答して消去またはプログラミング要求の実施を妨げることを含むことができる。
【００５２】
第６の態様の１つの実施形態では、消去またはプログラミング要求は第１の資源から第１のメモリロケーションへのものであり、第１のメモリロケーションは、デバッグモジュールによる第１のメモリに対するアクセス要求が認証される必要があるか否かを示す第１の指示子を記憶する。別の実施形態では、要求側デバイスは、命令ベースのプロセッサである。
【００５３】
なお、一般的な説明における上述の活動または要素のすべてが必要であるとは限らず、特定の活動またはデバイスの一部は必要とされない場合があり、記載されているものに加えて、１つまたは複数のさらなる活動が実行され、または要素が含まれてもよい。またさらに、活動がリストされている順序は必ずしもそれらが実行される順序であるとは限らない。
【００５４】
また、その概念は具体的な実施形態を参照して説明されている。しかしながら、添付の特許請求の範囲に明記されているような本開示の範囲から逸脱することなく様々な改変および変更を為すことができることを当業者は諒解する。したがって、本明細書および図面は限定的な意味ではなく例示とみなされるべきであり、すべてのこのような改変が本開示の範囲内に含まれることが意図されている。
【００５５】
たとえば、本実施形態は、不揮発性メモリ（ＮＶＭ）が、最小消去可能単位がブロックであるフラッシュメモリであると仮定して記載されている。しかしながら、これは、最小消去単位が１ワード程度に小さいことができる電気的消去可能かつプログラム可能読み出し専用メモリ（ＥＥＰＲＯＭ）のような他のタイプのＮＶＭにも適用されることができる。共有または専用ロジックを使用してＮＶＭコントローラモジュール２２０の様々なサブモジュールが実装されることができることが諒解されよう。特に、様々なモジュールが、本明細書において説明されているような様々な機能を実装するためのソフトウェア、ファームウェア、または状態機械ロジックを使用して実装されることができる。
【００５６】
利益、他の利点、および問題に対する解決策が具体的な実施形態に関連して上記で説明された。しかしながら、利益、利点、問題に対する解決策、および、任意の利益、利点、または解決策を発生させまたはより明白にする任意の特徴（複数の場合もあり）は、特許請求項のいずれかまたはすべての決定的な、必要とされる、または必須の特徴であると解釈されるべきではない。
【符号の説明】
【００５７】
１００…集積回路、１１１…プロセッサ、１１２…デバッグモジュール、２００…不揮発性メモリモジュール。
【図１】
2013186896.tif 000003
【図２】
2013186896.tif 000004
【図３】
2013186896.tif 000005
【図４】
2013186896.tif 000006
【図５】
2013186896.tif 000007