(57)【要約】      （修正有）【課題】データを遮断又は保護するためにデータを消去し、アクセスをロックアウトするシステムを提供する。【解決手段】コントローラ２４は、複数のワードを含む状態アレイ４０をＮＶＭに格納する。各ワードにおいて、一つ以上のビットがロックビットとして指定され、コントローラは、状態アレイのロックビットに基づいて装置の動作状態を次のように設定する。そのワードのロックビットをそれぞれの予定ロック値と比較し状態アレイ内の各ワードがロック又はアンロックされるかを判断し、状態アレイ内のすべてのワードがロックされたと判定された場合、装置をロック状態に設定し、状態アレイ内のすべてのワードがアンロックされたと判断された場合、装置をアンロック状態に設定し、一つまたは複数のワードがロックされ、且つ、一つまたは複数の他のワードがアンロックされたと判断された場合、装置をエラー状態に設定する。【選択図】図１
2018190386.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリ（ＮＶＭ）と、コントローラとを備える
安全な集積回路状態管理装置であって、
前記コントローラは、
複数のワード（ｗｏｒｄ）を備える状態アレイを前記不揮発性メモリに格納し、各前記ワードにおいて、一つまたは複数のビット（ｂｉｔ）をロックビット（ｌｏｃｋ−ｂｉｔ）として指定し、
前記状態アレイの前記ロックビットに基づいて、装置の動作状態を以下のステップによって設定するように構成され、
前記以下のステップは、
前記ワードの前記ロックビットをそれぞれの予定ロック値と比較することによって、前記状態アレイの各ワードがロックまたはアンロックされるかを判断し、
前記状態アレイのすべてのワードがロックされると判断された場合に、前記装置をロック状態に設定し、
前記状態アレイのすべてのワードがアンロックされると判断された場合に、前記装置をアンロック状態に設定し、
一つまたは複数のワードがロックされ、且つ一つまたは複数の他のワードがアンロックされると判断された場合に、前記装置をエラー状態に設定することを特徴とする、安全な集積回路状態管理装置。
【請求項２】
前記コントローラは、前記状態アレイのワードにおいて、前記ロックビット以外の一つまたは複数のビットをキービットとして指定し、前記キービットから導出されたキーを用いて暗号演算を実行するように構成されることを特徴とする、請求項１に記載の装置。
【請求項３】
前記コントローラは、前記キービットおよび前記ロックビットを前記不揮発性メモリのインターリーブメモリセルに格納することを特徴とする、請求項２に記載の装置。
【請求項４】
前記コントローラは、所与のワードの前記ロックビットと比較される前記予定ロック値を、前記所与のワードの前記キービットの関数と等しいように設定することを特徴とする、請求項２に記載の装置。
【請求項５】
前記装置が前記エラー状態に設定される場合、前記コントローラは、集積回路に格納された情報へのアクセスを防止する保護動作を実行するように構成されることを特徴とする、請求項１に記載の装置。
【請求項６】
前記コントローラは、電源投入時に前記動作状態を設定するように構成されることを特徴とする、請求項１に記載の装置。
【請求項７】
前記コントローラは、読み取り専用ハードウェアから前記予定ロック値を検索するように構成されることを特徴とする、請求項１に記載の装置。
【請求項８】
複数のワードを備える状態アレイを不揮発性メモリに格納し、各前記ワードにおいて、一つまたは複数のビットをロックビットとして指定するステップと、
前記状態アレイの前記ロックビットに基づいて、集積回路の動作状態を以下のステップによって設定するステップと、を含み、
前記以下のステップは、
前記ワードの前記ロックビットをそれぞれの予定ロック値と比較することによって、前記状態アレイの各ワードがロックまたはアンロックされるかを判断し、
前記状態アレイのすべてのワードがロックされると判断された場合に、前記集積回路をロック状態に設定し、
前記状態アレイのすべてのワードがアンロックされると判断された場合に、前記集積回路をアンロック状態に設定し、
一つまたは複数のワードがロックされ、且つ一つまたは複数の他のワードがアンロックされると判断された場合に、前記集積回路をエラー状態に設定することを特徴とする、集積回路状態の動作方法。
【請求項９】
前記状態アレイを格納するステップは、前記状態アレイのワードの内、前記ロックビット以外の一つ又は複数のビットをキービットとして指定し、前記キービットから導出されたキーを用いて暗号演算を実行するステップを含むことを特徴とする、請求項８に記載の方法。
【請求項１０】
前記状態アレイを格納するステップは、前記キービットおよび前記ロックビットを前記不揮発性メモリのインターリーブメモリセルに格納するステップを含むことを特徴とする、請求項９に記載の方法。
【請求項１１】
所与のワードの前記ロックビットと比較される前記予定ロック値を、前記所与のワードの前記キービットの関数と等しいように設定するステップを含むことを特徴とする、請求項９に記載の方法。
【請求項１２】
前記集積回路を前記エラー状態に設定するステップは、前記集積回路に格納された情報へのアクセスを防止する保護動作を実行するステップを含むことを特徴とする、請求項８に記載の方法。
【請求項１３】
前記動作状態を設定するステップは、電源投入時に実行することを特徴とする、請求項８に記載の方法。
【請求項１４】
前記ロックビットを前記予定ロック値と比較するステップは、前記読み取り専用ハードウェアから前記予定ロック値を検索するステップを含むことを特徴とする、請求項８に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に安全なデータ記憶に関わり、特に安全な集積回路（ＩＣ）状態管理のための方法およびシステムに関する。
【背景技術】
【０００２】
様々なシステムおよびアプリケーションにおいて、安全な集積回路（ＩＣ）は、例えばフラッシュメモリまたは他の不揮発性メモリ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ，ＮＶＭ）に機密情報を記憶する。ＮＶＭに記憶された情報への不正アクセスを防止するための様々な技術が当該技術分野で知られている。例えば、参照により本明細書に組み込まれる米国特許第８，１５１，５７２号には、読み取りおよび／または書き込みのアクセスがロックされ得る複数のワード（ｗｏｒｄ）１．．．Ｎを有するＮＶＭを備える電子デバイスが記載される。保護レジスタ（ｐｒｏｔｅｃｔｉｏｎ  ｒｅｇｉｓｔｅｒ）は、プログラマブルメモリのワード１．．．Ｎを連続的にロックする間に、交互にアクティブおよび非アクティブとなる２つの保護ワードＡおよびＢから形成される。保護レジスタの状態はアクティブワードによって定義される。最初のアクティブワードは、そのコンテンツが非アクティブワードにコピーされるまで削除されない。ロックコマンドに従ってコンテンツが変更されると、最初の非アクティブワードが保護レジスタのアクティブワードになる。
【０００３】
参照することにより本明細書に組み込まれる米国特許第９，２０２，０７３号において、集積回路（ＩＣ）上のデータまたは機密信号を遮蔽または保護するための安全対策が記載される。開示されたシステムおよび方法は、アクセスがアンロックされる場合に機密データを消去し、間接的および直接的な手段による通常動作中の機密データへのアクセスをロックアウトし、侵入探知または操作から機密信号を遮蔽することを可能にする。
【０００４】
参照により本明細書に組み込まれる米国特許第９，２６２，２５９号において、ワンタイムプログラマブル（Ｏｎｅ−Ｔｉｍｅ  Ｐｒｏｇｒａｍｍａｂｌｅ，ＯＴＰ）集積回路セキュリティの技術が記載される。例示的な方法は、複数のＯＴＰメモリアレイの値をサンプリングするステップと、各ＯＴＰメモリアレイのサンプリング値を、他の各ＯＴＰメモリのサンプリング値およびプログラムされないＯＴＰメモリアレイ値と比較するステップとを含む。この方法は、比較されたサンプリング値に基づいて集積回路性能不良が発生したかどうかを判断するステップをさらに含む。
【０００５】
参照により本明細書に組み込まれる米国特許第５，９５４，８１８号において、第一および第二メモリアレイを備えるフラッシュメモリ装置内のメモリセルに書き込む方法が記載される。第一メモリアレイはメモリブロックを備える。独立な第二メモリアレイは、それぞれがメモリブロックの一つに対応するブロックロックビットを備える。第一メモリアレイのメモリブロックの一つのメモリセルに書き込む方法は、メモリセルに書き込むコマンドを発行するステップと、独立な第二メモリアレイ内の対応するブロックロックビットがセットされているかどうかを判定するステップと、対応するブロックロックビットが設定されていない場合、メモリセルに書き込むステップとを含む。
【０００６】
参照により本明細書に組み込まれる米国特許第６，０７３，２４３号には、第一メモリアレイ、ブロックロック回路、および制御回路を備えるフラッシュメモリデバイスが記載される。メモリアレイは複数のメモリブロックを備える。ブロックロック回路は、複数のブロックロックビットと、マスターロックビットとを備える。各ブロックロックビットは、複数のメモリブロックの一つに対応し、対応するメモリブロックがロックされているかどうかを示す。マスターロックビットは、複数のブロックロックビットがロックされているかどうかを示す。制御回路は、制御回路がマスターロックビットをオーバーライドさせるパスコードを受け取るように構成される。
【発明の概要】
【０００７】
本明細書で説明される本発明の実施例は、不揮発性メモリ（ＮＶＭ）およびコントローラを備える装置を提供する。コントローラは、複数のワードを備える状態アレイをＮＶＭに格納するように構成される。各ワードにおいて、一つ以上のビットがロックビット（ｌｏｃｋ−ｂｉｔ）として指定される。コントローラは、状態アレイのロックビットに基づいて、装置の動作状態を以下のステップによって設定するように構成され、そのステップは：（ｉ）そのワードのロックビットをそれぞれの予定ロック値と比較することによって状態アレイ内の各ワードがロック又はアンロックされるかを判断し、（ｉｉ）状態アレイ内のすべてのワードがロックされていると判定された場合、装置をロック状態に設定し、（ｉｉｉ）状態アレイ内のすべてのワードがアンロックされていると判断された場合、装置をアンロック状態に設定し、（ｉｖ）一つまたは複数のワードがロックされ、且つ一つまたは複数の他のワードがアンロックされると判断された場合、装置をエラー状態に設定する。
【０００８】
一部の実施例において、コントローラは、状態アレイのワードにおいて、ロックビット以外の一つまたは複数のビット（ｂｉｔ）をキービットとして指定し、キービットから導出されたキーを用いて暗号演算（ｃｒｙｐｔｏｇｒａｐｈｉｃ  ｏｐｅｒａｔｉｏｎｓ）を実行するように構成される。一実施例では、コントローラは、ＮＶＭのインターリーブメモリセル（ｉｎｔｅｒｌｅａｖｅｄ  ｍｅｍｏｒｙ  ｃｅｌｌｓ）にキービットおよびロックビットを格納するように構成される。開示された実施例では、コントローラは、所与のワードのロックビットと比較される予定ロック値を、所与のワードのキービットの関数と等しいように設定するように構成される。
【０００９】
一部の実施例において、装置がエラー状態に設定される場合、コントローラは、ＩＣに記憶された情報へのアクセスを防止する保護動作を実行するように構成される。例示的な実施例では、コントローラは、電源投入時に動作状態を設定するように構成される。一部の実施例において、コントローラは、読み出し専用ハードウェアから予定ロック値を検索する（ｒｅｔｒｉｅｖｅ）ように構成される。
【００１０】
本発明の一実施例によれば、集積回路（ＩＣ）の動作方法がさらに提供される。この方法は、不揮発性メモリ（ＮＶＭ）に複数のワードを備える状態アレイを格納し、各ワード内の一つ以上のビットをロックビットとして指定するステップを含む。状態アレイのロックビットに基づいて、ＩＣの動作状態を以下のステップによって設定し、そのステップは：（ｉ）各ワードのロックビットをそれぞれの予定ロック値と比較することによって、状態アレイ内の各ワードがロックまたはアンロックされるかを判断し、（ｉｉ）状態アレイ内のすべてのワードがロックされていると判定された場合、ＩＣをロック状態に設定し、（ｉｉｉ）状態アレイ内のすべてのワードがアンロック状態にある場合、ＩＣをアンロック状態に設定し、（ｉｖ）一つまたは複数のワードがロックされ、且つ一つまたは複数の他のワードがアンロックされると判断された場合、ＩＣをエラー状態に設定する。
【００１１】
本発明は、より完全に理解されるため、以下の実施例を添付の図面とともに詳細に説明する。
【図面の簡単な説明】
【００１２】
【図１】図１は、本発明の一実施例による、ＮＶＭを備える安全な集積回路（ＩＣ）を概略的に示すブロック図である。
【図２】図２は、本発明の一実施例による、図１のＩＣの動作状態を概略的に示す状態図である。
【発明を実施するための形態】
【００１３】
（概要）
本明細書で説明される本発明の実施例は、安全な集積回路（ｓｅｃｕｒｅ  ＩＣ）における情報への不正アクセスを防止するための向上方法およびシステムを提供する。例示的な実施例において、開示された技術は、レーザまたは電磁妨害（Ｅｌｅｃｔｒｏｍａｇｎｅｔｉｃ  Ｉｎｔｅｒｆｅｒｅｎｃｅ，ＥＭＩ）攻撃のような外部の改ざんに対して機密情報を記憶する不揮発性メモリ（ＮＶＭ）を保護する。
【００１４】
一部の実施例において、安全なＩＣは、ＮＶＭおよびコントローラを備える。他の機能の中では、コントローラは、ＮＶＭまたは他のメモリに記憶された情報（例えば、データおよび／またはソフトウェアコード）に対して一つまたは複数の暗号キーを使用して暗号演算（例えば、暗号化、復号化および／または認証）を実行し、複数の動作状態に従ってＩＣを動作させる。
【００１５】
状態の１つは、ＮＶＭに自由にアクセスし（例えば、書き込み、読み出し、または消去）、様々なデバッグ機能（例えば、ＪＴＡＧ）やテストモードを動作させ、ランダムアクセスメモリ（ＲＡＭ）やハードウェアレジスタなどの内部メモリにアクセスし、及び／又はＩＣ機能を自由に動作させることができる「アンロック状態（ｕｎｌｏｃｋｅｄ  ｓｔａｔｅ）」である。この状態は、例えば、開発中または製造中に、安全なＩＣがエンドユーザに配信される前、使用され得る。もう一つの状態は、ＩＣが機能モードにある「ロック状態（ｌｏｃｋｅｄ  ｓｔａｔｅ）」である。典型的に、この状態では、ＩＣのデバッグ能力はオフであり、そのＩＣはその意図的な機能的インターフェースのみを介してアクセスされ、使用されることができる。通常、ロック状態はエンドユーザに公開される唯一の状態である。第三状態は、ＩＣがロックされていないが、正当にアンロックされていない「エラー状態（ｅｒｒｏｒ  ｓｔａｔｅ）」である。この状態は、例えば、ＮＶＭを改ざんしようとする試みの検出に応答して達成され得る。追加の状態を適切なものとして定義することもできる。
【００１６】
一部の実施例において、ＮＶＭは、「状態アレイ（ｓｔａｔｅ  ａｒｒａｙ）」と称される複数のワードのアレイを保持する。状態アレイは、ＩＣの動作状態を維持し、外部の改ざんから一つ又は複数のキーを保護するために使用される。状態アレイを使用することにより、権限のない使用者が安全なデータコンテンツにアクセス（例えば、読み取り、修正または消去）し、デバッグ機能を使用してＩＣをさらに調査することを防止する。状態アレイの各ワードにおいて、一つまたは複数のビットが「キービット」として指定され、一つまたは複数の他のビットが「ロックビット」として指定される。キービットは、一つまたは複数の暗号キーを生成するために使用される。ロックビットは、ＮＶＭに対する外部攻撃を検出するために使用される。
【００１７】
一部の実施例において、状態アレイの各ワードのロックビットがそのワードの状態を判断する。状態アレイの所与のワードは、そのワードのすべてのロックビットがそれぞれの予定ロック値と等しい場合、ロックされたものとみなされ、そうでない場合はアンロックされたものとみなされる。ワードのロック値（ワードがロックされていることを示すロックビット値の予想の組み合わせ）は、状態アレイ内、ワードごとに異なることができる。状態アレイ内のすべてのワードがロックされている場合、ＩＣはロックされた（すなわち、ロック状態である）とみなされる。状態アレイ内のすべてのワードがアンロックされている場合、ＩＣはアンロックされた（すなわち、アンロック状態である）とみなされる。一つまたは複数のワードがロックされ、一つまたは複数の他のワードがロックされていない場合、ＩＣはエラー状態にあるとみなされる。
【００１８】
キービットおよびロックビットの位置は、通常、相互にインターリーブされ、ワードごとに異なることができる。ロックビットおよびキービットは互いに物理的に近接してインターリーブされるので、ロックビットによる外部の改ざんは、一つまたは複数のキービットを破損する可能性が高い。したがって、外部攻撃が何らかの手段ですべてのワードをアンロックに成功したとしても、キービットの多くが破損し、一つ又は複数の暗号キーが回復不能になることができる。
【００１９】
典型的な実施例では、コントローラは、電源投入時に状態アレイをチェックし、ＩＣに適切な動作状態を設定する。状態アレイ内の各ワードについて、コントローラはロックビットに対応する予定ロック値と比較し、このワードがロック又はアンロックされるかを判断する。一つまたは複数のワードがロックされ、一つまたは複数の他のワードがアンロックされていると判断された場合、コントローラは攻撃が試みられたと判断し、ＩＣをエラー状態に設定する。例えば、コントローラは、ＮＶＭの内容全体を消去し、ＩＣへのさらなるアクセスを無効にし、および／または他の適切な保護手段をとることができる。
（システムの説明）
【００２０】
図１は、本発明の一実施例による安全な集積回路（ＩＣ）２０を概略的に示すブロック図である。ＩＣ２０は、ホスト２２の情報を安全に記憶する。ＩＣ２０は、任意の適切なシステム、例えば安全な記憶装置に、任意の適切なホスト２２にサービスするために使用されてもよい。
【００２１】
ＩＣ２０は、情報をフラッシュメモリ２８に記憶するコントローラ２４を備える。本明細書に記載された実施例は、主にフラッシュメモリを参照するが、開示された技術は、任意の他の適切なタイプのＮＶＭに適用可能である。この例では、ＩＣ２０は、コントローラ２４のソフトウェアを格納するブート読み取り専用メモリ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ，  ＲＯＭ）３２をさらに備える。一実施例では、ＲＯＭ３２に格納されたソフトウェアは、ブースターソフトウェア（ｂｏｏｔｅｒ  ｓｏｆｔｗａｒｅ）、すなわち起動時にＲＯＭ３２からコントローラ２４を起動するソフトウェアコードを含む。
【００２２】
図１に示すシステムおよびＩＣの構成は、単に概念を明瞭にするために示される構成例である。代替の実施例では、任意の他の適切な構成を使用することができる。典型的には、コントローラ２４およびフラッシュメモリ２８は、（ｉ）フラッシュメモリとコントローラとを互いに分離することは全く不可能であり、（ｉｉ）フラッシュメモリはコントローラからの許可のみによってアクセス可能であるように製造される。一実施例では、コントローラ２４およびフラッシュメモリ２８は、同じＩＣパッケージ内に、または同じシリコンダイ（ｓｉｌｉｃｏｎ  ｄｉｅ）上に製造されることができる。開示された技術の理解のために必須ではない要素は、明瞭のために図面から省略されている。
【００２３】
様々な実施例において、図１に示される異なるシステム要素は、特定用途向け集積回路（Ａｐｐｌｉｃａｔｉｏｎ−Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ，ＡＳＩＣ）またはフィールドプログラマブルゲートアレイ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ，ＦＰＧＡ）などの任意の適切なハードウェアを使用して実現されてもよい。あるいは、ＩＣ２０の機能の一部、例えばコントローラ２４の機能は、ソフトウェアで、またはソフトウェアとハードウェア要素との組み合わせを用いて実現することができる。
【００２４】
一部の実施例において、コントローラ２４は、本明細書に記載の機能を実行するようにソフトウェアでプログラムされた汎用プロセッサを備える。ソフトウェアは、例えば、電子形式でネットワーク、またはホスト２２からプロセッサにダウンロードされることができ、代替的にまたは追加的に、磁気、光学、または電子メモリのような非一時的な有形の媒体上に提供および／または格納されることができる。
（ＩＣの動作状態の安全管理）
【００２５】
一部の実施例において、コントローラ２４は、一つまたは複数の暗号キー（ここでは、簡潔さのために単に「キー」とも称される）を使用して、情報、たとえばフラッシュメモリ２８に記憶された情報に関する暗号演算を実行する。例えば、コントローラは、フラッシュメモリ２８にデータを記憶する前に、ホスト２２から、且つ記憶のために受け取ったユーザデータを暗号化し、ホスト２２に送る前にフラッシュメモリ２８から読み取ったデータを復号（ｄｅｃｒｙｐｔ）することができる。追加的または代替的に、コントローラは、内部フラグまたは他の管理情報を暗号化し、内部ソフトウェアコードを認証および／または暗号化し、または任意の他の適切な暗号演算を実行することができる。これらの暗号演算のそれぞれは、異なるキーを使用してもよい。
【００２６】
本発明の一部の実施例において、コントローラ２４は、フラッシュメモリ２８に状態アレイ４０を格納する。状態アレイ４０の一例が、図１の下部の挿入図に示されている。図面からわかるように、状態アレイ４０は複数のワード４４を備える。各ワード４４において、一つまたは複数のビットが「キービット」（図では「Ｋ」で示されている）として指定され、一つまたは複数の他のビットが「ロックビット」（図では「Ｌ」で示される）として指定される。
【００２７】
図１の例では、状態アレイ４０は合計１２８ワードを備え、各ワードは１６ビットを備え、そのうちの５ビットがロックビットとして指定され、その内の１１ビットがキービットとして指定される。これらの数値、ならびに図１に示されているキービットおよびロックビットの特定の位置は、単なる一例として示されている。代替の実施例では、任意の他の適切な状態アレイ構成を使用することができる。
【００２８】
キービットは、暗号キーまたはキーを生成するためにコントローラ２４によって使用される。例えば、コントローラ２４は、キービットの一部または全部にハッシュ関数（例えば、ＳＨＡ）を適用することによってキーを生成することができる。一実施例では、実現を簡単にするために、コントローラ２４は、キービットおよびロックビットの両方を備える状態アレイ全体にハッシュ関数を適用することによって、キーを生成することができる。ロックビットは、ＮＶＭに対する外部攻撃を検出するために使用される。
【００２９】
ワード４４内およびアレイ４０にわたるキービットおよびロックビットの位置は、通常、相互にインターリーブされる。このインターリーブは、典型的には、相互に物理的にインターリーブされたキービットおよびロックビットがフラッシュメモリセルに格納され、マルチレベルセル（Ｍｕｌｔｉ−Ｌｅｖｅｌ  Ｃｅｌｌ，ＭＬＣ）フラッシュメモリの場合には、同じメモリセル内に格納が可能であることを表す。
【００３０】
したがって、一つ以上のロックビットを改ざんすることは、キービットの少なくとも一つを破損させることが予想される。換言すれば、（例えば、ＩＣ２０の選択された領域にレーザまたは集束電磁放射線を外部から照射することによって）ロックビットに対する物理的攻撃は、攻撃者がＩＣのロック解除に成功して、状態アレイ４０へのフルアクセスを得る場合でさえ、暗号キーを回復不能にする可能性が最も高い。
【００３１】
開示された実施例では、コントローラ２４は、状態アレイ４０の任意のワード４４のすべてのロックビットがそれぞれの所定のロック値と等しい場合、そのワードをロックされたものとみなされる。それ以外の場合、そのワードはアンロックされるとみなされる。ロック値は、状態アレイ４０内、ワード４４ごとに異なることができる。状態アレイ４０の全てのワード４４がロックされている場合には、ＩＣ２０は全体としてロックされているとみなされる。状態アレイ内のすべてのワード４４がアンロックされている場合、ＩＣ２０は全体としてアンロックされているとみなされる。一つまたは複数のワード４４がロックされ、一つまたは複数の他のワード４４がアンロックされている場合、コントローラ２４は、ＩＣ２０がエラー状態にあるとみなす。
【００３２】
ロック値を指定するとき、フラッシュメモリデバイス２８が最初に電源投入された場合に錯誤が発生しない値を選択することが通常望ましい。典型的には、最初の電源投入時に、状態アレイはアンロック状態にあると予想される。したがって、意図しないロック値の発生により、エラー状態が回復不能になる可能性がある。
【００３３】
一部の実施例において、様々なワード４４のロック値が予め定義され、例えばブートＲＯＭ３２の読み取り専用ハードウェアに記憶される。もう一つの実施例では、ロックビットとキービットが論理的にマージされることができる。例えば、一部の実施例において、各ワード４４のロック値は、同じワードのキービットの関数として定義される。例えば、各ロックビットは、いくつかのキービットのＸＯＲ論理として定義されることができる。一部の実施例において、ワード４４のロック値は、そのワードのキービットのエラー検出関数として定義される。任意の適切なエラー検出関数またはエラー判断コードをこの目的のために使用することができる。一実施例では、各ワード４４のロック値は、そのワードのキービットにわたって巡回冗長検査（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ，ＣＲＣ）を計算することによって計算される。ＣＲＣ結果は、ロック値（キービットの予定値）として使用される。
【００３４】
一部の実施例において、コントローラ２４は、起動時にブートプロセスの一部としてＩＣ２０の状態を評価する。コントローラのブートソフトウェアは、通常、各ワード４４のロックビットを予定ロック値と比較し、ＩＣがロックされているか、アンロックされているか、またはエラー状態にあるかを判断する。ロック値がブートＲＯＭ３２に記憶される場合、ブートソフトウェアは、通常、比較を実行するためにブートＲＯＭからのロック値を読み取る。ロック値がキービットのエラー検出関数として計算される場合、ブートソフトウェアは、通常、各ワード４４のキービットにわたってエラー検出関数を計算し、その結果をそのワードのロックビットと比較する。
【００３５】
図２は、本発明の一実施例によるＩＣ２０の動作状態を概略的に示す状態図である。この例では、上述のように、コントローラ２４は、３つの可能な状態、すなわち、アンロック状態５０、ロック状態５４、およびエラー状態５８に従ってＩＣ２０を動作させる。
【００３６】
一つの例示的な実施例において、３つの状態は以下のように定義される。
（１）アンロック状態は、最初の電源投入時にＩＣがウェイクアップする工場出荷時のデフォルト状態である。この状態では、エンジニアリングテストモードとデバッガインタフェース（ＪＴＡＧなど）が通常有効である開発状態とも称される。ＩＣ２０は全体として機能しても機能しなくてもよい。コントローラ２４は、通常、情報のフラッシュメモリ２８へ書き込みおよび情報のフラッシュメモリ２８からの読み取りを可能にする。
（２）ロック状態は、典型的には、ＩＣ２０がエンドユーザに供給される完全に機能する状態である。これは通常、エンドユーザの使用が唯一許可される状態である。ＩＣへのアクセスは、デバイスインタフェース仕様で定義される意図された使用に限定されている。例えば、トラステッドプラットフォームモジュール（Ｔｒｕｓｔｅｄ  Ｐｌａｔｆｏｒｍ  Ｍｏｄｕｌｅ，ＴＰＭ）インターフェイスは、「ＴＣＧ  ＰＣクライアントプラットフォームＴＰＭプロファイル（ＰＴＰ）仕様、」ファミリ「２．０」、レベル００、リビジョン００．４３、２０１５年１月２６日に規定されているように定義することができ、参照することにより本明細書に組み込まれる。
（３）エラー状態では、コントローラ２４は、攻撃が疑われると判断し、適切な保護手段を取ることにより、フラッシュメモリ２８またはＩＣ２０内の情報を保護するようにアクセスを防止する。例示的な保護手段は、例えば、フラッシュメモリ２８のコンテンツの一部または全部を消去すること、ＩＣ２０の一つまたは複数の関数へのアクセスをブロックすること、ＩＣ２０が機能しなくなるフェイルモードに移行すること、および／または任意の他の適切な手段を含むことができる。
【００３７】
アンロック状態５０からロック状態５４（「ＩＣをロックする」）への移行のため、ロック値（ロックビットの予定値）がアレイ４０内の適切な位置に書き込まれる。キービットの値は、状態アレイの適切な位置にも書き込まれる。状態アレイをポピュレート（ｐｏｐｕｌａｔｉｎｇ）した後、ＩＣ２０はパワーダウンすることができる。
【００３８】
その後の電源投入時に、ＩＣ２０はロック状態５４でウェイクアップする。
【００３９】
ブートプロセスの間、コントローラ２４は状態アレイ４０をチェックする。各ワード４４について、コントローラ２４は、ロックビットの値を対応するロック値と比較する。ビット値が一致する場合、コントローラ２４は、このワードがアンロックされたものとみなす。ビット値が一致しない場合、コントローラ２４は、このワードがロックされたものとみなす。すべてのワード４４がロックされていると判断された場合、コントローラ２４はロック状態５４に保持する。すべてのワード４４がアンロックされていると判断される場合、コントローラ２４は、アンロック状態５０に移行する。状態アレイ４０が一致しない（すなわち、一つまたは複数のワード４４がロックされ、一つまたは複数の他のワード４４がアンロックされていると判断された）場合、コントローラ２４は、攻撃が発生した可能性があると判断し、エラー状態５８に移行する。上述したように、エラー状態である場合、コントローラ２４は、ＩＣ２０内の情報への不正アクセスを防止するための適切な防護手段を取る。
【００４０】
状態定義および状態間の移行を含み、図２の状態図は、単に概念を明瞭にするために選択された状態図の一例である。代替の実施例では、任意の他の適切な状態および移行を使用することができる。
【００４１】
本明細書で説明される実施例は主にＴＰＭに対処するが、本明細書に記載の方法およびシステムは、スマートカードまたは埋め込まれたＮＶＭを有する他の安全なデバイスなどの他のアプリケーションでも使用することができる。
【００４２】
したがって、上述した実施例は例として引用されたものであり、本発明は上記に具体的に示した又は説明した内容に制限的ではない理解されよう。むしろ、本発明の範囲は、本明細書において上述の様々な特徴の組み合わせおよびサブコンビネーションの双方を含み、さらに、、前述の説明を読むことによって当業者が想到し得る、かつ先行技術に開示されていないそれらの変形および修正が含まれる。本特許出願において参考により組み込まれる文献は、本出願の統合された一部とみなされるべきであるが、これらの組み込まれた文書で定義されている任意の用語が本明細書に明示的または暗黙的に使用される定義と矛盾する場合は、本明細書において使用される定義のみが考慮されるべきである。
【符号の説明】
【００４３】
２０：集積回路
２２：ホスト
２４：コントローラ
２８：フラッシュメモリ
３２：ブート読み取り専用メモリ
４０：状態アレイ
４４：ワード
５０：アンロック状態
５４：ロック状態
５８：エラー状態
【図１】
2018190386.tif 000003
【図２】
2018190386.tif 000004