(57)【要約】      （修正有）【課題】メモリー、インターフェース、及び読み取り制限ロジックを備えるメモリー保護装置を提供する。【解決手段】読み取り制限ロジックは、インターフェースからメモリーの特定アドレスからデータ値を読み取る要求を受信し、特定アドレスからデータ値を取得し、特定アドレスが予め定義された限定アドレス範囲内にいることが発見される場合に、取得されたデータ値が予め定義された許容データ値セットに属するかをチェックし、取得されたデータ値が予め定義された許容データ値セットに属する場合に、取得されたデータ値で要求を応答し、そして、取得されたデータ値が予め定義された許容データ値セットに属しない場合に、ダミーデータ値で要求を応答する。【選択図】図２
2019145070.tif 000002
【特許請求の範囲】
【請求項１】
メモリー、インターフェース、及び読み取り制限ロジックを備えるメモリー保護装置であって、
前記読み取り制限ロジックは、前記インターフェースから前記メモリーの特定アドレスからデータ値を読み取る要求を受信し、
前記特定アドレスから前記データ値を取得し、
前記特定アドレスが予め定義された限定アドレス範囲内にいることが発見される場合に、取得された前記データ値が予め定義された許容データ値セットに属するかをチェックし、
取得された前記データ値が予め定義された許容データ値セットに属する場合に、取得された前記データ値で前記要求を応答し、及び
取得された前記データ値が予め定義された許容データ値セットに属しない場合に、ダミーデータ値で前記要求を応答することを特徴とする、メモリー保護装置。
【請求項２】
前記メモリー保護装置は、コントローラを更に備え、
前記コントローラは、第一ソフトウェアプログラムを実行し、
前記第一ソフトウェアプログラムが前記予め定義された限定アドレス範囲から任意のデータ値を読み取ることを許可し、及び
取得した前記データ値が前記予め定義された許容データ値セットに属する場合にのみ、前記第一ソフトウェアプログラムの後にプロセッサーに実行された第二ソフトウェアプログラムが前記予め定義された限定アドレス範囲内の前記データ値を読み取ることを許可することを特徴とする、請求項１に記載のメモリー保護装置。
【請求項３】
前記メモリー保護装置は、コントローラを更に備え、
前記コントローラは、ブートストラッププロセスを実行し、前記ブートストラッププロセスが実行するときに外部から前記メモリーへのアクセスを無効にし、且つ前記ブートストラッププロセスの後に前記読み取り制限ロジックをブートすることを特徴とする、請求項１に記載のメモリー保護装置。
【請求項４】
前記読み取り制限ロジックは、（ｉ）前記装置のＢＩＳＴモジュール、及び（ｉｉ）外部テスタのうちの一つから前記要求を受信するように構成されることを特徴とする、請求項１に記載のメモリー保護装置。
【請求項５】
前記許容データ値セットは前記メモリーをテストするためのテスト値を含むことを特徴とする、請求項１に記載のメモリー保護装置。
【請求項６】
前記読み取り制限ロジックは、（ｉ）前記特定アドレスが予め定義された限定アドレス範囲内にいる場合、及び（ｉｉ）取得された前記データ値が前記予め定義された許容データ値セットにない場合の検出に応じて応答動作を開始するように構成されることを特徴とする、請求項１に記載のメモリー保護装置。
【請求項７】
代替のセキュリティ機構が故障した場合、前記読み取り制限ロジックは、取得した前記データ値が前記許容データ値セットに属する場合にのみ、前記予め定義された限定アドレス範囲からの前記データ値の読み取りを許可するように構成されることを特徴とする、請求項１に記載のメモリー保護装置。
【請求項８】
前記読み取り制限ロジックは、異なるダミーデータ値で同じ特定アドレスの複数の読み取り操作を応答するように構成されることを特徴とする、請求項１に記載のメモリー保護装置。
【請求項９】
前記メモリー保護装置は追加読み取り制限ロジックを更に備え、
前記追加読み取り制限ロジックは追加の予め定義された限定アドレス範囲へのアクセスを制限し、前記読み取り制限ロジック及び前記追加読み取り制限ロジックは異なるソフトウェア層によって制御されることを特徴とする、請求項１に記載のメモリー保護装置。
【請求項１０】
メモリーを備える装置中に、前記メモリーの特定アドレスからデータ値を読み取る要求を受信し、
前記特定アドレスから前記データ値を取得し、
前記特定アドレスが予め定義された限定アドレス範囲内にいることが発見される場合に、取得された前記データ値が予め定義された許容データ値セットに属するかをチェックし、
取得された前記データ値が予め定義された許容データ値セットに属する場合に、取得された前記データ値で前記要求を応答し、及び
取得された前記データ値が予め定義された許容データ値セットに属しない場合に、ダミーデータ値で前記要求を応答することを特徴とする、メモリー保護方法。
【請求項１１】
前記メモリー保護方法は、第一ソフトウェアプログラムを実行し、
前記第一ソフトウェアプログラムが前記予め定義された限定アドレス範囲から任意のデータ値を読み取ることを許可し、及び
取得した前記データ値が前記予め定義された許容データ値セットに属する場合にのみ、前記第一ソフトウェアプログラムの後にプロセッサーに実行された第二ソフトウェアプログラムが前記予め定義された限定アドレス範囲内の前記データ値を読み取ることを許可するステップを含むことを特徴とする、請求項１０に記載のメモリー保護方法。
【請求項１２】
前記メモリー保護方法は、ブートストラッププロセスを実行し、前記ブートストラッププロセスが実行するときに外部から前記メモリーへのアクセスを無効にし、且つ前記ブートストラッププロセスの後に取得された前記データ値の前記特定アドレスのチェックをブートするステップを含むことを特徴とする、請求項１０に記載のメモリー保護方法。
【請求項１３】
前記要求を受信するステップは、（ｉ）前記装置のＢＩＳＴモジュール、及び（ｉｉ）外部テスタのうちの一つから前記要求を受信することを含むことを特徴とする、請求項１０に記載のメモリー保護方法。
【請求項１４】
前記許容データ値セットは前記メモリーをテストするためのテスト値を含むことを特徴とする、請求項１０に記載のメモリー保護方法。
【請求項１５】
前記メモリー保護方法は、（ｉ）前記特定アドレスが予め定義された限定アドレス範囲内にいる場合、及び（ｉｉ）取得された前記データ値が前記予め定義された許容データ値セットにない場合の検出に応じて応答動作を開始するステップを含むことを特徴とする、請求項１０に記載のメモリー保護方法。
【請求項１６】
前記メモリー保護方法は、代替のセキュリティ機構が故障した場合、取得した前記データ値が前記許容データ値セットに属する場合にのみ、前記予め定義された限定アドレス範囲からの前記データ値の読み取りを許可するステップを含むことを特徴とする、請求項１０に記載のメモリー保護方法。
【請求項１７】
前記要求への応答は、異なるダミーデータ値で同じ特定アドレスの複数の読み取り操作を応答するステップを含むことを特徴とする、請求項１０に記載のメモリー保護方法。
【請求項１８】
前記メモリー保護方法は、予め定義された限定アドレス範囲へのアクセスの制限、及び追加の予め定義された限定アドレス範囲へのアクセスの制限が、異なるソフトウェア層によって制御するステップを含むことを特徴とする、請求項１０に記載のメモリー保護方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は安全データ記憶装置に関わり、具体的には、メモリー読み取り制限によってメモリーを安全にアクセスすることを実現する方法及びシステムに関する。
【背景技術】
【０００２】
当分野には、メモリーに記憶された機密情報に安全にアクセスする様々な技術が知られている。例えば、米国特許公開第２００７／０２３７３２５号には、マイクロコントローラブロックに接続されたセキュリティシステムを含み、暗号機能を有する装置が記載されている。セキュリティシステムは、不揮発性メモリーと有限状態機械とを備える。有限状態機械は、不揮発性メモリーに記憶された暗号鍵の安全を保護し、且つマイクロコントローラブロック内の計算処理ユニット及び／または装置のエンドユーザによる暗号鍵へのアクセスを防止するように装置を管理する。
【発明の概要】
【０００３】
本明細書に記載された本発明の一実施例には、メモリー、インターフェース、及び読み取り制限ロジックを備えるメモリー保護装置が提供される。読み取り制限ロジックは、インターフェースを介して前記メモリーの特定アドレスからデータ値を読み取る要求を受信し、且つ特定アドレスからデータ値を取得する時、特定アドレスが予め定義された限定アドレス範囲内にいることが発見される場合に、取得したデータ値が予め定義された許容データ値セットに属するかをチェックし、取得したデータ値が予め定義された許容データ値セットに属する場合に、取得したデータ値で要求に応答し、そして、取得したデータ値が予め定義された許容データ値セットに属しない場合に、ダミーデータ値で要求に応答する。
【０００４】
一部の実施例において、前記メモリー保護装置はコントローラを更に備える。コントローラは、第一ソフトウェアプログラムを実行し、第一ソフトウェアプログラムが予め定義された限定アドレス範囲から任意のデータ値を読み取ることを許可し、及び取得したデータ値が予め定義された許容データ値セットに属する場合にのみ、第一ソフトウェアプログラムの後にプロセッサーに実行された第二ソフトウェアプログラムが予め定義された限定アドレス範囲内のデータ値を読み取ることを許可する。
【０００５】
一部の実施例において、前記メモリー保護装置はコントローラを更に備える。コントローラは、ブートストラッププロセスを実行し、ブートストラッププロセスが実行するときに外部からメモリーへのアクセスを無効にし、且つブートストラッププロセスの後に読み取り制限ロジックをブートする。
【０００６】
一実施例において、読み取り制限ロジックは、（ｉ）装置のＢＩＳＴモジュール、及び（ｉｉ）外部テスタのうちの一つから要求を受信するように構成される。例示的な実施例において、許容データ値セットはメモリーをテストするためのテスト値を含む。開示された実施例において、読み取り制限ロジックは、（ｉ）特定アドレスが予め定義された限定アドレス範囲内にいる場合、及び（ｉｉ）取得されたデータ値が予め定義された許容データ値セットにない場合の検出に応じて応答動作を開始するように構成される。
【０００７】
一実施例において、代替のセキュリティ機構が故障した場合、読み取り制限ロジックは、取得したデータ値が許容データ値セットに属する場合にのみ、予め定義された限定アドレス範囲からのデータ値の読み取りを許可するように構成される。もう一つの実施例において、読み取り制限ロジックは、異なるダミーデータ値で同じ特定アドレスの複数の読み取り操作を応答するように構成される。更にもう一つの実施例において、メモリー保護装置は追加読み取り制限ロジックを更に備え、追加読み取り制限ロジックは追加の予め定義された限定アドレス範囲へのアクセスを制限し、読み取り制限ロジック及び追加読み取り制限ロジックは異なるソフトウェア層によって制御される。
【０００８】
本発明の実施例により、一種の方法が更に提供される。その方法において、メモリーを備える装置中に、メモリーの特定アドレスからデータ値を読み取る要求を受信する。特定アドレスから前記データ値を取得する時、特定アドレスが予め定義された限定アドレス範囲内にいることが発見される場合に、取得されたデータ値が予め定義された許容データ値セットに属するかをチェックする。取得されたデータ値が予め定義された許容データ値セットに属する場合に、取得されたデータ値で要求に応答し、そして、取得されたデータ値が予め定義された許容データ値セットに属しない場合に、ダミーデータ値で要求に応答する。
【０００９】
本発明は、以下の詳細な説明の実施例及び図面を参照しながらより完全に理解されるであろう。
【図面の簡単な説明】
【００１０】
【図１】図１は、本発明の実施例による電子保護装置を概略的に示すブロック図である。
【図２】図２は、本発明の実施例による例示的な読み取り制限のためのメモリー保護装置に使用される方法のフローチャート図である。
【発明を実施するための形態】
【００１１】
（概要）
本明細書で説明される実施例は、メモリーに記憶された秘密情報を保護する改良された方法及びシステムを提供する。具体的には、開示された技術はテスト品質またはデータセキュリティを損なうことなく、秘密情報を記憶するメモリーをテストすることができる。
【００１２】
一部の実施例において、電子保護装置は、暗号鍵などの秘密情報を記憶するためのあるアドレス範囲（限定アドレス範囲）を含むメモリーを備える。その装置はインターフェースを備え、テスタがインターフェースを介してメモリーをテストするための書き込み要求及び読み取り要求を送信する。テストインターフェースを介して、受信された一部の読み取り要求は、限定アドレス範囲内にいるアドレスを指定する事ができる。適切に処理されない限り、そのような要求に応答すると、秘密情報が漏洩する可能性がある。
【００１３】
このようなセキュリティ上の危険を防ぐために、一部の実施例において、その装置は読み取り制限ロジックを備える。前記読み取り制限ロジックは、テストインターフェースを介して受信した読み取り要求を監視し、且つそれらに選択的に応答する。アドレスが限定アドレス範囲内にいる読み取り要求を受信すると、読み取り制限ロジックは要求されたデータ値を取り出し、且つそのデータ値が予め定義された許容データ値セットに属するかをチェックする。
【００１４】
許容データ値は通常テスト及び開発に使用されるデータ値（データ単位あたり）の小さなセットを含む。例えば、８ビットのデータ単位（バイト）の場合、０ｘ００、０ｘＡＡ、０ｘＦＦなどの１６進数を考慮することができる。これは、正当なテスト手順では、これらのデータ値のみが使用されることを仮定した場合である。取得したデータ値が許容値の一つである場合、読み取り制限ロジックは、要求されたデータ値で応答する。そうでない場合、読み取り制限ロジックはダミー値で要求に応答する。
【００１５】
この技術を使用する場合、一連の読み取り要求が秘密情報の取得を試みる時、取得したデータ値の大部分は許容データ値セットに属しないことになる。よって、読み取り制限ロジックはその読み取り要求をブロックし、ダミー値で応答する。一方、正当のテスト手順としての正当な読み取り要求が求めるデータ値は許容データ値セットに属するため、その要求はブロックされない。一般的な技術では、取得したデータ値に関わらず、限定アドレス範囲以外のアドレスの読み取り要求であればブロックされることはない。
【００１６】
本明細書は前記読み取り制限技術を使用する電子保護装置の例示的な構成を記載する。一部の開示された構成は安全なブートプロセスによって読み取り制限ロジックを初期化する。
【００１７】
（システムの説明）
図１は本発明の実施例による例示的な電子保護装置のブロック図である。装置２０はメモリー２４、例えば、一つまたは複数のフラッシュメモリ装置を有する非揮発性メモリー（ＮＶＭ）を備える。装置２０は、メモリー２４にデータを記憶することを含む装置の全体的な操作を管理するコントローラ３６を更に備える。「ブート」として略称されるブートソフトウェア４０は、例えば、起動またはリセットするときにコントローラ３６を起動するブートストラッププロセスを実行する。一般的には、少なくとも第一部分のブートコードを装置２０のＲＯＭまたは別形態の不変ストレージに常駐する。
【００１８】
装置２０は、内部にＮＶＭ及びコントローラを有する任意の適切な電子装置を備えることができる。典型的の例としては、保護装置を備える。保護装置のいくつかの非限定的な例としては、ＴＰＭ（ｔｒｕｓｔｅｄ  ｐｌａｔｆｏｒｍ  ｍｏｄｕｌｅｓ）、プリントカートリッジの偽造を防止するための認証集積回路、スマートカード、モバイル装置加入者識別モジュール、販売時点管理コントローラなどを含む。
【００１９】
本実施例において、装置２０はホストインターフェース２８及びテストインターフェース３２の二つのインターフェースを備える。コントローラ３６はホストインターフェース２８を介してホスト（図示されていない）と通信する。ホストは、装置２０と通信するためにホストインターフェース２８を使用する。例えば、装置２０はＴＰＭとすることができ、且つホストはＴＣＧ（Ｔｒｕｓｔｅｄ  Ｃｏｍｐｕｔｉｎｇ  Ｇｒｏｕｐ）によって定義されるように、ホストと通信することができる。別の実施例において、装置２０は記憶装置とすることができ、且つメモリー２４に記憶されるデータを読み取るが、限定アドレス範囲４８への非制限読み取りアクセスは決してしない。装置２０は、例えば、認証及び自己保護のための鍵を記憶するように限定アドレス範囲を使用することがでる。
【００２０】
テストインターフェース３２は装置２０をテストするように使用される。装置２０は、メモリー２４及び装置に使用される他の部品を備える。テストインターフェース３２は、例えば、ＪＴＡＧまたはＵＡＲＴポートのような外部テスタまたはデバッグインターフェースに接続するための外部インターフェースとして図示されている。しかし、これに加えて、テストインターフェース３２は装置２０の内部組み込み自己テスト（ＢＩＳＴ）モジュールに接続されても良い。マルチプレクサ（ＭＵＸ）４４は読み取り制限ロジック５６を介してインターフェース２８及び３２をメモリー２４に接続する。
【００２１】
一部の実施例において、メモリー２４のアドレス空間内の一部のアドレス範囲４８は特定アドレスとして予め定義される。前記アドレス範囲は暗号鍵などの秘密情報を記憶するために使用される。アドレス範囲４８に記憶された情報は、例えば、ハードウェアモジュール５２（例えば、暗号エンジン）またはコントローラ３６のブートローダー４０のような様々の部品を介してアクセスすることができる。
【００２２】
メモリー２４を全面的にテストするために、テストインターフェース３２を介してメモリーへのアクセスを可能にすることが通常望ましい。具体的には、限定アドレス範囲４８へのアクセスを可能にすることが望ましい。正しく管理されていない限り、このような外部アクセスは重大なセキュリティ上の危険をもたらす。本発明の一部の実施例において、装置２０は、限定アドレス範囲４８への不正アクセスから装置を保護する読み取り制限ロジック５６を備える。読み取り制限ロジック５６の動作については、以下に詳細に説明する。
【００２３】
図１に示された装置２０の構成は、単に発明の概念を明確にするために示される構成例である。代替の実施例には、他の適切な構成を使用することができる。例えば、メモリー２４は、他の任意のタイプの揮発性／非揮発性メモリーを含むことができる。別の例として、ホストインターフェース２８及びテストインターフェース３２の機能は単一のインターフェースに組み合わせることもできる。
【００２４】
更に別の実施例として、装置２０は、限定アドレス範囲４８の情報をアクセスする他の任意の適切なタイプのハードウェアモジュール５２を含むことができる。一部の実施例において、装置２０は、直接に接続するハードウェアモジュール５２を全く含まないことができる。一部の実施例において、メモリー２４とハードウェアモジュール５２との間は直接接続されないため、ブートローダー４０はブート時間内に限定アドレス範囲４８の関連するデータをハードウェアモジュール（例えば、書き込み専用のレジスタ）にコピーすることができる。
【００２５】
図１の例示的な構成において、ハードウェアモジュール５２はメモリー２４に直接（即ち、読み取り制限ロジック５６を介さずに）接続している。ただし、このような構成は必須ではなく、ハードウェアモジュールは読み取り制限ロジックを介してメモリーに代替的に接続することができる。暗号エンジンは図１のように直接接続する場合、一定の制限を課す必要がある：
・無制限のデータは、コントローラ３６のソフトウェア、ファームウェア、または暗号エンジンを介した任意のテストまたはデバッグ機能に公開すべきではない。
・暗号エンジンは無制限のデータを使用することができるが、無制限のデータを暗号エンジンの出力から推測されないことを保証するべきである。
・通常、ブートローダー４０及び装置２０は、モジュールの内部を公開するテストモードに移行する前に（例えば、スキャンまたは可観測性テスト）、暗号エンジンに無制限のデータが存在しないことを保証すべきである。例えば、テストモードに移行する前にデータを削除する、またはデータが暗号化モジュールに入る前にテストモードを無効にすることによって前記条件を満たす。
【００２６】
典型的には、装置２０の各部品（例えば、メモリー２４、読み取り制限ロジック５６、ハードウェアモジュール５２、ＭＵＸ  ４４及び／またはコントローラ３６）は、それらを互いに分離し、それらの間のインターフェースにアクセスすることは全く不可能であるように製造される。一実施例において、装置２０の各部品は同じ集積回路（ＩＣ）パッケージ内に、または同じシリコンダイ上に製造されることができる。開示された技術の理解に必須でない要素は、明確化のために図から省略される。
【００２７】
様々な実施例において、図１に示された装置２０の異なる部品は、ＡＳＩＣまたはＦＧＰＡなどの任意の適切なハードウェアを使用して構成され得る。あるいは、装置２０の一部機能、例えば、コントローラ３６の機能はソフトウェア、またはソフトウェアとハードウェアの組み合わせによって構成され得る。
【００２８】
一部の実施例において、コントローラ３６は、本明細書で説明する機能を実行するようにソフトウェアでプログラムされた汎用プロセッサーを備える。ソフトウェアは、例えば、ネットまたはホストから電子形式でプロセスにダウンロードすることができ、あるいは、それに代えて、またはそれに加えて、磁気的、光学的、または電子メモリーのような非一時的な有形メディアに提供及び／または記憶されることができる。
【００２９】
（読み取り制限を使用するメモリー保護装置）
一部の実施例において、読み取り制限ロジック５６は、現在または将来にそこに記憶される秘密情報の安全性を損なうことなく、限定アドレス範囲４８を含むメモリー２４を完全にテストすることができる。
【００３０】
一実施例において、メモリー２４は、あるデータ値をメモリーに書き込み、メモリーからデータ値を読み取り、及び読み取られたデータ値が書き込まれた値と一致することを検証することによってテストされる。典型的に、必須ではないが、テストに使用されるデータ値は、全てのメモリービットをトグルするように選択される。例えば、０ｘ００、０Ｘｆｆ、０ｘ５５及０ｘＡＡのような８ビットデータ値は適切なデータ値として使用され得る。
【００３１】
換言すれば、テストに使用されるデータ値は、通常、予め定義されたデータ値セットから引き出される。そのデータ値セットは、通常、所与のサイズの全ての可能なデータ値に比べてはるかに少ないデータ値からなる小さなデータ値セットである。上記の例において、８ビットのデータ値の中で、２５６個の可能なデータ値０ｘ００−０ｘＦＦ中、ただ４つのデータ値（０ｘ００、０ｘＦＦ、０ｘ５５及び０ｘＡＡ）がテストに使用される。８ビットデータユニット（例えば、１６ビットまたは３２ビットデータユニット）以外のデータユニットも使用可能であることに留意されたい。
【００３２】
一部の実施例において、実際の装置２０は、メモリー２４に記憶された秘密情報を保護するために、テストに使用されるデータ値が予め定義されたデータ値セットから引き出される。
【００３３】
一実施例において、読み取り制限ロジック５６は、テストのためのデータ値セットが予めに設定される。このセットは、「特定データ範囲」または「許容データ値セット」とも呼ばれ、これらの用語は本明細書において互換的に使用される。
【００３４】
図１に示されるように、読み取り制限ロジック５６は、（ｉ）限定アドレス範囲の定義、及び（ｉｉ）特定データ範囲の定義、即ち、許容データ値セットが設定される。
【００３５】
読み取り制限ロジック５６は、テストインターフェース３２を介して、限定アドレス範囲４８内の特定アドレスからデータ値を読み取る要求を受信すると、そのデータ値がテストのための許容値ではないかを検討またはチェックする。そうであれば、読み取り制限ロジック５６は要求に応じてテストインターフェース３２上にデータ値を出力して要求に応答する。そうでなければ、読み取り制限ロジック５６はダミーデータ値を出力して要求に応答する。
【００３６】
このように、通常のテストは、テスト手順において書き込まれ、リードバックされるデータ値が全て許容値のセットから引き出される場合、限定アドレス範囲４８を含むメモリー２４はアドレス空間を全体にカバーすることができる。このようなテストは、メモリーに秘密情報が含まれている場合も実行できる。テストインターフェース３２を介して受信された読み取り要求が秘密情報の読み取りを試みる場合、引き出されたデータ値の大部分は許容データ値セットに属せず、且つ読み取り制限ロジック５６をトリガーしてダミーデータ値で応答する。したがって、テストインターフェース上の任意の使用可能な形式で秘密情報を出力するリスクが有効に減少される。１つ可能な実施例において、秘密情報自体は、テストに使用される「許容値」を含まないようにフォーマットされる。
【００３７】
開示された技術は、例えば、暗号エンジンまたはメモリー２４内の秘密情報にアクセスする他のハードウェアモジュールの、装置２０のセキュリティ機能を全体にテストすることができる。例示的な実施例において、コントローラ３６または外部テスタは、限定アドレス範囲４８内の１つまたは複数の「テストキー」を記憶することができる。テストキーは、通常の暗号鍵と同様に機能するが、特定データ範囲のデータ値からなるものである。このような暗号鍵は、テストインターフェース３２を介して自由に読み取ることができる。
【００３８】
一実施例において、読み取り制限ロジック５６はテストのための一部のデータ値を含むように構成される。例えば、テストに使用されるデータ値は０ｘ００、０ｘＦＦ、０ｘ５５及び０ｘＡＡである場合、これらのデータ値の中の３つ（例えば、０ｘ００、０ｘＦＦ及び０ｘＡＡ）で読み取り制限ロジック５６を予め設定し、且つダミーデータ値を４つ目のデータ値として設定する。
【００３９】
図２は、本発明の一実施例による読み取り制限を使用するメモリー保護方法のフローチャート図である。フローチャート図の第一部分（ステップ６０及び６４）は、コントローラ３６及び装置２０全体のブートプロセスを説明する。第二部分（ステップ６８−８４）は、装置２０の通常動作モードを説明する。
【００４０】
通常の動作モードは、専用のテストモードに切り替える必要なく、テスト動作と通常の読み取り動作と書き込み動作の両方をサポートすることができる。あるいは、テスト無効保護が他の手段によって実行される場合（例えば、生産中にテスト機能を永久にディセーブルする）、開示された技術は「セカンド防衛線」として応用し、不正な手段に騙されてテスト有効モードに移行、または悪意のあるソフトウェアが装置に侵入することを防止できる。
【００４１】
この方法は、電源入りまたはリセットのとき、ブートローダー４０が一部のブートプログラムコードを実行してコントローラ３６を起動するブートステップ６０から始まる。ブートプロセスの一部として、ブートローダー４０は、例えば、ブートプログラムコードの少なくとも一部に署名する署名を検証するため、及び／または暗号鍵を暗号アクセラレータにロードするために、メモリー２４の限定アドレス範囲４８中の秘密情報にアクセスすることができる。ブートプロセスが実行されている限り、ブートローダー４０は、通常、インターフェース２８及び３２を介するメモリー２４へのアクセスをブロックする。
【００４２】
ブートプロセスが完了すると、ブートローダー４０は、制限起動ステップ６４において読み取り制限ロジックを起動する。図１の実施例において、ブートローダー４０は、「読み取り制限」及び「ロック制限」を表示する２つの信号を介して読み取り制限ロジック５６を制御する。「読み取り制限」信号をアサートすると、読み取り制限ロジック５６は起動され、「ロック制限」信号をアサートすると、「読み取り制限」信号はラッチされ、即ち、次のブートまでこの制限は不可逆的に起動される。読み取り制限ロジック５６が起動した後、ブートローダー４０はホストインターフェース２８及びテストインターフェース３２を介してメモリー２４をアクセスすることができる。
【００４３】
代替的な実施例において、「読み取り制限」及び「ロック制限」信号の機能は、起動またはロックの両方を実行する単一の信号を使用して実施することができる。通常、限定アドレス範囲と特定データ範囲の数値はブートローダー４０を介して設定及び制御することができる。ブートプロセスが完了しようとする時、またはテストモードが起動される時、ブートローダー４０は通常、後続の変更のためにこれらの値をロックする。
【００４４】
この段階で、実際のテスト処理を許可する前に、コントローラ３６はテストモードが起動されているかをチェックする。そうでなければ、次のパワーサイクル（例えば、起動またはリセット）までテストモードをブロックする。テストモードが起動されると、前記方法が実行される。前記の制限（テストモードの起動のチェック）は、装置２０内のファームウェアによって実行されても良い。この場合、装置が不正にテストモードを起動する時、データの読み取りを特定の値に制限することは「セカンド防衛線」としての役割を果たすことができる。
【００４５】
通常の動作のある時点で、装置２０は、読み取り要求６８で、例えばテストインターフェース３２上に読み取り要求を受信する。読み取り要求は、データ値が読み取られるメモリー２４中のアドレスを指定する。読み取り制限ロジック５６は、メモリー２４の指定アドレスからデータ値を読み取る。
【００４６】
アドレス検査ステップ７２において、読み取り制限ロジック５６は特定アドレスが限定アドレス範囲４８に属するかを検査する。特定アドレスが限定アドレス範囲４８に属しない場合、読み取り制限ロジック５６は例えば、データ出力ステップ７６において要求されるように、読み取ったデータ値をテストインターフェース３２に出力する。そして、その後は前記ステップ６８にループバックする。
【００４７】
特定アドレスが限定アドレス範囲４８に属する場合、読み取り制限ロジック５６はデータ値検査ステップ８０において、読み取ったデータ値は許容データ値（特定データ範囲）の１つであるかをチェックする。そうであれば、読み取り制限ロジック５６は、データ出力ステップ７６において、要求されるように読み取ったデータ値を出力する。そして、その後は前記ステップ６８にループバックする。
【００４８】
しかし、ステップ８０において、読み取り制限ロジック５６が読み取ったデータ値が許容データ値の１つでないことを検出する場合、読み取り制限ロジック５６は読み取ったデータ値を出力しない。そのかわり、読み取り制限ロジック５６は、出力ステップ８４において、ダミーデータ値を、例えば、テストインターフェース３２に出力し、そして、その後は前記ステップ６８にループバックする。また、その後の起動またはリセットイベントが発生する場合はステップ６０から再開される。
【００４９】
図２に示される方法の流れは、概念を明確するために選択された流れの一例である。代替的実施例において、開示された技術は、他の任意の適切な流れを使用して実施することができる。
【００５０】
一部の実施例では、ステップ８４において、読み取り制限ロジック５６は複数のダミー値のセットから、例えば、ランダムで１つのダミー値を選択することができる。別の実施例において、読み取り制限ロジック５６は所与のアドレスについて、毎回の読み取り動作によって変化するダミー値を出力する。例示的な実施例において、読み取り制限ロジック５６は、（例えば、軽量暗号化アルゴリズムを使用して）秘密情報の難読化キーとブレンドされたアドレスの決定的関数としてダミーデータ値を選択する。
【００５１】
一部の実施例では、ステップ８０において、テストインターフェース３２を介して限定アドレス範囲４８から秘密情報を読み取るための不正な試みを検出すると、読み取り制限ロジック５６は適切な応答動作を開始することができる。例えば、読み取り制限ロジック５６は、無効な読み取り値を攻撃試みとして解釈することができる。応答する動作の実施例として、アラートを発行すること、装置２０の一部または全部をシャットダウン、メモリー２４またはその一部へのアクセスをブロックする、及び／または秘密情報の一部または全部をメモリー２４から削除することを含むことができる。
【００５２】
上記の実施例において、コントローラ３６は「読み取り制限」及び「ロック制限」メカニズムを介して、ブートプロセスにおいてブートローダー４０が限定アドレス範囲４８にアクセスすることを許可する。その後に実行するソフトウェアプログラムにおいて、「読み取り制限」及び「ロック制限」メカニズムは、限定アドレス範囲４８内に予め定義された許容テスト値セットだけをアクセスように制限される。
【００５３】
したがって、本明細書において、「制限アクセス」という用語は、これらのデータ値が許容データ値セットの予め定義されたサブセットに属する場合にのみ、特定アドレスに記憶された実際データ値を応答する読み取りアクセスを指す。それに対応して、「無制限アクセス」という用語は、データ値に関係なく、特定アドレスに記憶された実際のデータ値を応答する読み取りアクセスを指す。
【００５４】
より一般的にいうと、いくつかの実施例において、このようなコントローラ３６は第一ソフトウェアプログラムを実行し、第一ソフトウェアプログラムが予め定義された限定アドレス範囲をアクセスすることを許可するが、第一ソフトウェアプログラムの後の第二ソフトウェアプログラムが予め定義された限定アドレス範囲内の制限アクセスが許可される。
【００５５】
一部の実施例において、メモリー２４は複数の限定アドレス範囲４８を含み、各限定アドレス範囲４８は  それぞれの読み取り制限ロジック５６に関連する。このような構成において、それぞれの読み取り制限ロジック５６は異なるソフトウェア層を介して制御される。例示的な実施例において、階層化されたブートプロセスに順次に異なるソフトウェア層（それぞれのソフトウェア層は異なる限定アドレス範囲４８に関連する異なる読み取り制限ロジック５６を制御する）を使用する。これらのソフトウェア層の実施例は、イングランドらの「ＲＩｏＴ  −  Ａ  Ｆｏｕｎｄａｔｉｏｎ  ｆｏｒ  Ｔｒｕｓｔ  ｉｎ  ｔｈｅ  Ｉｎｔｅｒｎｅｔ  ｏｆ  Ｔｈｉｎｇｓ」、Ｍｉｃｒｏｓｏｆｔ  Ｒｅｓｅａｒｃｈ  Ｔｅｃｈｎｉｃａｌ  Ｒｅｐｏｒｔ  ＭＳＲ−ＴＲ−２０１６−１８、２０１６年４月に記載されている。引用した論文においては、Ｌ０、Ｌ１、Ｌ２およびＯＳと呼ばれるソフトウェア層を有する階層化ブートプロセスを記述している。
【００５６】
したがって、上述した実施例は例として記載されたものであり、本発明は、上記具体的に示されて説明されたものに限定されないことが理解されよう。むしろ、本発明の範囲は、上述した様々な特徴の組み合わせおよび部分的な組み合わせ、ならびに前述の説明から当業者に想到し得る従来技術に開示されていない変形および修正を含む。本特許出願において参照により援用される文献は、本出願の一部であるとみなされるべきであり、これらの組み込まれた文献において、本明細書に明示または示唆された定義と矛盾する場合、本明細書に定義されたもののみが考慮されるべきである。
【符号の説明】
【００５７】
２０：装置
２４：メモリー
２８：ホストインターフェース
３２：テストインターフェース
３６：コントローラ
４０：ブートソフトウェア（ブートローダー）
４４：マルチプレクサ（ＭＵＸ）
４８：限定アドレス範囲
５２：ハードウェアモジュール
５６：読み取り制限ロジック
６０、６４、６８、７２、７６、８０、８４：ステップ
【図１】
2019145070.tif 000003
【図２】
2019145070.tif 000004
【外国語明細書】
2019145070000001.pdf
2019145070000002.pdf
2019145070000003.pdf
2019145070000004.pdf