特許第6771523号(P6771523)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 新唐科技股▲ふん▼有限公司の特許一覧

<>
  • 特許6771523-メモリー保護装置および方法 図000002
  • 特許6771523-メモリー保護装置および方法 図000003
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6771523
(24)【登録日】2020年10月1日
(45)【発行日】2020年10月21日
(54)【発明の名称】メモリー保護装置および方法
(51)【国際特許分類】
   G06F 12/14 20060101AFI20201012BHJP
   G06F 21/78 20130101ALI20201012BHJP
【FI】
   G06F12/14 510D
   G06F21/78
【請求項の数】16
【外国語出願】
【全頁数】12
(21)【出願番号】特願2018-191982(P2018-191982)
(22)【出願日】2018年10月10日
(65)【公開番号】特開2019-145070(P2019-145070A)
(43)【公開日】2019年8月29日
【審査請求日】2019年4月5日
(31)【優先権主張番号】15/834,087
(32)【優先日】2017年12月7日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】508197206
【氏名又は名称】新唐科技股▲ふん▼有限公司
(74)【代理人】
【識別番号】100102923
【弁理士】
【氏名又は名称】加藤 雄二
(72)【発明者】
【氏名】ジヴ ハーシュマン
(72)【発明者】
【氏名】ダン モラヴ
【審査官】 吉田 歩
(56)【参考文献】
【文献】 特表2009−505303(JP,A)
【文献】 特開2016−031656(JP,A)
【文献】 米国特許出願公開第2014/0281319(US,A1)
【文献】 特開2004−199693(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/14
G06F 21/78
(57)【特許請求の範囲】
【請求項1】
メモリー、インターフェース、及び読み取り制限ロジックを備えるメモリー保護装置であって、
前記読み取り制限ロジックは、前記インターフェースから前記メモリーの特定アドレスからデータ値を読み取る要求を受信し、
前記特定アドレスから前記データ値を取得し、
前記特定アドレスが予め定義された限定アドレス範囲内にいることが発見される場合に、取得された前記データ値が予め定義された許容データ値セットに属するかをチェックし、
取得された前記データ値が予め定義された許容データ値セットに属する場合に、取得された前記データ値で前記要求を応答し、及び
取得された前記データ値が予め定義された許容データ値セットに属しない場合に、ダミーデータ値で前記要求を応答することを特徴とする、メモリー保護装置。
【請求項2】
前記メモリー保護装置は、コントローラを更に備え、
前記コントローラは、第一ソフトウェアプログラムを実行し、
前記第一ソフトウェアプログラムが前記予め定義された限定アドレス範囲から任意のデータ値を読み取ることを許可し、及び
取得した前記データ値が前記予め定義された許容データ値セットに属する場合にのみ、前記第一ソフトウェアプログラムの後にプロセッサーに実行された第二ソフトウェアプログラムが前記予め定義された限定アドレス範囲内の前記データ値を読み取ることを許可することを特徴とする、請求項1に記載のメモリー保護装置。
【請求項3】
前記メモリー保護装置は、コントローラを更に備え、
前記コントローラは、ブートストラッププロセスを実行し、前記ブートストラッププロセスが実行するときに外部から前記メモリーへのアクセスを無効にし、且つ前記ブートストラッププロセスの後に前記読み取り制限ロジックをブートすることを特徴とする、請求項1に記載のメモリー保護装置。
【請求項4】
前記読み取り制限ロジックは、(i)前記装置のBISTモジュール、及び(ii)外部テスタのうちの一つから前記要求を受信するように構成されることを特徴とする、請求項1に記載のメモリー保護装置。
【請求項5】
前記許容データ値セットは前記メモリーをテストするためのテスト値を含むことを特徴とする、請求項1に記載のメモリー保護装置。
【請求項6】
前記読み取り制限ロジックは、(i)前記特定アドレスが予め定義された限定アドレス範囲内にいる場合、及び(ii)取得された前記データ値が前記予め定義された許容データ値セットにない場合の検出に応じて応答動作を開始するように構成されることを特徴とする、請求項1に記載のメモリー保護装置。
【請求項7】
前記読み取り制限ロジックは、異なるダミーデータ値で同じ特定アドレスの複数の読み取り操作を応答するように構成されることを特徴とする、請求項1に記載のメモリー保護装置。
【請求項8】
前記メモリー保護装置は追加読み取り制限ロジックを更に備え、
前記追加読み取り制限ロジックは追加の予め定義された限定アドレス範囲へのアクセスを制限し、前記読み取り制限ロジック及び前記追加読み取り制限ロジックは異なるソフトウェア層によって制御されることを特徴とする、請求項1に記載のメモリー保護装置。
【請求項9】
メモリーを備える装置中に、前記メモリーの特定アドレスからデータ値を読み取る要求を受信し、
前記特定アドレスから前記データ値を取得し、
前記特定アドレスが予め定義された限定アドレス範囲内にいることが発見される場合に、取得された前記データ値が予め定義された許容データ値セットに属するかをチェックし、
取得された前記データ値が予め定義された許容データ値セットに属する場合に、取得された前記データ値で前記要求を応答し、及び
取得された前記データ値が予め定義された許容データ値セットに属しない場合に、ダミーデータ値で前記要求を応答することを特徴とする、メモリー保護方法。
【請求項10】
前記メモリー保護方法は、第一ソフトウェアプログラムを実行し、
前記第一ソフトウェアプログラムが前記予め定義された限定アドレス範囲から任意のデータ値を読み取ることを許可し、及び
取得した前記データ値が前記予め定義された許容データ値セットに属する場合にのみ、前記第一ソフトウェアプログラムの後にプロセッサーに実行された第二ソフトウェアプログラムが前記予め定義された限定アドレス範囲内の前記データ値を読み取ることを許可するステップを含むことを特徴とする、請求項に記載のメモリー保護方法。
【請求項11】
前記メモリー保護方法は、ブートストラッププロセスを実行し、前記ブートストラッププロセスが実行するときに外部から前記メモリーへのアクセスを無効にし、且つ前記ブートストラッププロセスの後に取得された前記データ値の前記特定アドレスのチェックをブートするステップを含むことを特徴とする、請求項に記載のメモリー保護方法。
【請求項12】
前記要求を受信するステップは、(i)前記装置のBISTモジュール、及び(ii)外部テスタのうちの一つから前記要求を受信することを含むことを特徴とする、請求項に記載のメモリー保護方法。
【請求項13】
前記許容データ値セットは前記メモリーをテストするためのテスト値を含むことを特徴とする、請求項に記載のメモリー保護方法。
【請求項14】
前記メモリー保護方法は、(i)前記特定アドレスが予め定義された限定アドレス範囲内にいる場合、及び(ii)取得された前記データ値が前記予め定義された許容データ値セットにない場合の検出に応じて応答動作を開始するステップを含むことを特徴とする、請求項に記載のメモリー保護方法。
【請求項15】
前記要求への応答は、異なるダミーデータ値で同じ特定アドレスの複数の読み取り操作を応答するステップを含むことを特徴とする、請求項に記載のメモリー保護方法。
【請求項16】
前記メモリー保護方法は、予め定義された限定アドレス範囲へのアクセスの制限、及び追加の予め定義された限定アドレス範囲へのアクセスの制限が、異なるソフトウェア層によって制御するステップを含むことを特徴とする、請求項に記載のメモリー保護方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は安全データ記憶装置に関わり、具体的には、メモリー読み取り制限によってメモリーを安全にアクセスすることを実現する方法及びシステムに関する。
【背景技術】
【0002】
当分野には、メモリーに記憶された機密情報に安全にアクセスする様々な技術が知られている。例えば、米国特許公開第2007/0237325号には、マイクロコントローラブロックに接続されたセキュリティシステムを含み、暗号機能を有する装置が記載されている。セキュリティシステムは、不揮発性メモリーと有限状態機械とを備える。有限状態機械は、不揮発性メモリーに記憶された暗号鍵の安全を保護し、且つマイクロコントローラブロック内の計算処理ユニット及び/または装置のエンドユーザによる暗号鍵へのアクセスを防止するように装置を管理する。
【発明の概要】
【0003】
本明細書に記載された本発明の一実施例には、メモリー、インターフェース、及び読み取り制限ロジックを備えるメモリー保護装置が提供される。読み取り制限ロジックは、インターフェースを介して前記メモリーの特定アドレスからデータ値を読み取る要求を受信し、且つ特定アドレスからデータ値を取得する時、特定アドレスが予め定義された限定アドレス範囲内にいることが発見される場合に、取得したデータ値が予め定義された許容データ値セットに属するかをチェックし、取得したデータ値が予め定義された許容データ値セットに属する場合に、取得したデータ値で要求に応答し、そして、取得したデータ値が予め定義された許容データ値セットに属しない場合に、ダミーデータ値で要求に応答する。
【0004】
一部の実施例において、前記メモリー保護装置はコントローラを更に備える。コントローラは、第一ソフトウェアプログラムを実行し、第一ソフトウェアプログラムが予め定義された限定アドレス範囲から任意のデータ値を読み取ることを許可し、及び取得したデータ値が予め定義された許容データ値セットに属する場合にのみ、第一ソフトウェアプログラムの後にプロセッサーに実行された第二ソフトウェアプログラムが予め定義された限定アドレス範囲内のデータ値を読み取ることを許可する。
【0005】
一部の実施例において、前記メモリー保護装置はコントローラを更に備える。コントローラは、ブートストラッププロセスを実行し、ブートストラッププロセスが実行するときに外部からメモリーへのアクセスを無効にし、且つブートストラッププロセスの後に読み取り制限ロジックをブートする。
【0006】
一実施例において、読み取り制限ロジックは、(i)装置のBISTモジュール、及び(ii)外部テスタのうちの一つから要求を受信するように構成される。例示的な実施例において、許容データ値セットはメモリーをテストするためのテスト値を含む。開示された実施例において、読み取り制限ロジックは、(i)特定アドレスが予め定義された限定アドレス範囲内にいる場合、及び(ii)取得されたデータ値が予め定義された許容データ値セットにない場合の検出に応じて応答動作を開始するように構成される。
【0007】
一実施例において、代替のセキュリティ機構が故障した場合、読み取り制限ロジックは、取得したデータ値が許容データ値セットに属する場合にのみ、予め定義された限定アドレス範囲からのデータ値の読み取りを許可するように構成される。もう一つの実施例において、読み取り制限ロジックは、異なるダミーデータ値で同じ特定アドレスの複数の読み取り操作を応答するように構成される。更にもう一つの実施例において、メモリー保護装置は追加読み取り制限ロジックを更に備え、追加読み取り制限ロジックは追加の予め定義された限定アドレス範囲へのアクセスを制限し、読み取り制限ロジック及び追加読み取り制限ロジックは異なるソフトウェア層によって制御される。
【0008】
本発明の実施例により、一種の方法が更に提供される。その方法において、メモリーを備える装置中に、メモリーの特定アドレスからデータ値を読み取る要求を受信する。特定アドレスから前記データ値を取得する時、特定アドレスが予め定義された限定アドレス範囲内にいることが発見される場合に、取得されたデータ値が予め定義された許容データ値セットに属するかをチェックする。取得されたデータ値が予め定義された許容データ値セットに属する場合に、取得されたデータ値で要求に応答し、そして、取得されたデータ値が予め定義された許容データ値セットに属しない場合に、ダミーデータ値で要求に応答する。
【0009】
本発明は、以下の詳細な説明の実施例及び図面を参照しながらより完全に理解されるであろう。
【図面の簡単な説明】
【0010】
図1図1は、本発明の実施例による電子保護装置を概略的に示すブロック図である。
図2図2は、本発明の実施例による例示的な読み取り制限のためのメモリー保護装置に使用される方法のフローチャート図である。
【発明を実施するための形態】
【0011】
(概要)
本明細書で説明される実施例は、メモリーに記憶された秘密情報を保護する改良された方法及びシステムを提供する。具体的には、開示された技術はテスト品質またはデータセキュリティを損なうことなく、秘密情報を記憶するメモリーをテストすることができる。
【0012】
一部の実施例において、電子保護装置は、暗号鍵などの秘密情報を記憶するためのあるアドレス範囲(限定アドレス範囲)を含むメモリーを備える。その装置はインターフェースを備え、テスタがインターフェースを介してメモリーをテストするための書き込み要求及び読み取り要求を送信する。テストインターフェースを介して、受信された一部の読み取り要求は、限定アドレス範囲内にいるアドレスを指定する事ができる。適切に処理されない限り、そのような要求に応答すると、秘密情報が漏洩する可能性がある。
【0013】
このようなセキュリティ上の危険を防ぐために、一部の実施例において、その装置は読み取り制限ロジックを備える。前記読み取り制限ロジックは、テストインターフェースを介して受信した読み取り要求を監視し、且つそれらに選択的に応答する。アドレスが限定アドレス範囲内にいる読み取り要求を受信すると、読み取り制限ロジックは要求されたデータ値を取り出し、且つそのデータ値が予め定義された許容データ値セットに属するかをチェックする。
【0014】
許容データ値は通常テスト及び開発に使用されるデータ値(データ単位あたり)の小さなセットを含む。例えば、8ビットのデータ単位(バイト)の場合、0x00、0xAA、0xFFなどの16進数を考慮することができる。これは、正当なテスト手順では、これらのデータ値のみが使用されることを仮定した場合である。取得したデータ値が許容値の一つである場合、読み取り制限ロジックは、要求されたデータ値で応答する。そうでない場合、読み取り制限ロジックはダミー値で要求に応答する。
【0015】
この技術を使用する場合、一連の読み取り要求が秘密情報の取得を試みる時、取得したデータ値の大部分は許容データ値セットに属しないことになる。よって、読み取り制限ロジックはその読み取り要求をブロックし、ダミー値で応答する。一方、正当のテスト手順としての正当な読み取り要求が求めるデータ値は許容データ値セットに属するため、その要求はブロックされない。一般的な技術では、取得したデータ値に関わらず、限定アドレス範囲以外のアドレスの読み取り要求であればブロックされることはない。
【0016】
本明細書は前記読み取り制限技術を使用する電子保護装置の例示的な構成を記載する。一部の開示された構成は安全なブートプロセスによって読み取り制限ロジックを初期化する。
【0017】
(システムの説明)
図1は本発明の実施例による例示的な電子保護装置のブロック図である。装置20はメモリー24、例えば、一つまたは複数のフラッシュメモリ装置を有する非揮発性メモリー(NVM)を備える。装置20は、メモリー24にデータを記憶することを含む装置の全体的な操作を管理するコントローラ36を更に備える。「ブート」として略称されるブートソフトウェア40は、例えば、起動またはリセットするときにコントローラ36を起動するブートストラッププロセスを実行する。一般的には、少なくとも第一部分のブートコードを装置20のROMまたは別形態の不変ストレージに常駐する。
【0018】
装置20は、内部にNVM及びコントローラを有する任意の適切な電子装置を備えることができる。典型的の例としては、保護装置を備える。保護装置のいくつかの非限定的な例としては、TPM(trusted platform modules)、プリントカートリッジの偽造を防止するための認証集積回路、スマートカード、モバイル装置加入者識別モジュール、販売時点管理コントローラなどを含む。
【0019】
本実施例において、装置20はホストインターフェース28及びテストインターフェース32の二つのインターフェースを備える。コントローラ36はホストインターフェース28を介してホスト(図示されていない)と通信する。ホストは、装置20と通信するためにホストインターフェース28を使用する。例えば、装置20はTPMとすることができ、且つホストはTCG(Trusted Computing Group)によって定義されるように、ホストと通信することができる。別の実施例において、装置20は記憶装置とすることができ、且つメモリー24に記憶されるデータを読み取るが、限定アドレス範囲48への非制限読み取りアクセスは決してしない。装置20は、例えば、認証及び自己保護のための鍵を記憶するように限定アドレス範囲を使用することがでる。
【0020】
テストインターフェース32は装置20をテストするように使用される。装置20は、メモリー24及び装置に使用される他の部品を備える。テストインターフェース32は、例えば、JTAGまたはUARTポートのような外部テスタまたはデバッグインターフェースに接続するための外部インターフェースとして図示されている。しかし、これに加えて、テストインターフェース32は装置20の内部組み込み自己テスト(BIST)モジュールに接続されても良い。マルチプレクサ(MUX)44は読み取り制限ロジック56を介してインターフェース28及び32をメモリー24に接続する。
【0021】
一部の実施例において、メモリー24のアドレス空間内の一部のアドレス範囲48は特定アドレスとして予め定義される。前記アドレス範囲は暗号鍵などの秘密情報を記憶するために使用される。アドレス範囲48に記憶された情報は、例えば、ハードウェアモジュール52(例えば、暗号エンジン)またはコントローラ36のブートローダー40のような様々の部品を介してアクセスすることができる。
【0022】
メモリー24を全面的にテストするために、テストインターフェース32を介してメモリーへのアクセスを可能にすることが通常望ましい。具体的には、限定アドレス範囲48へのアクセスを可能にすることが望ましい。正しく管理されていない限り、このような外部アクセスは重大なセキュリティ上の危険をもたらす。本発明の一部の実施例において、装置20は、限定アドレス範囲48への不正アクセスから装置を保護する読み取り制限ロジック56を備える。読み取り制限ロジック56の動作については、以下に詳細に説明する。
【0023】
図1に示された装置20の構成は、単に発明の概念を明確にするために示される構成例である。代替の実施例には、他の適切な構成を使用することができる。例えば、メモリー24は、他の任意のタイプの揮発性/非揮発性メモリーを含むことができる。別の例として、ホストインターフェース28及びテストインターフェース32の機能は単一のインターフェースに組み合わせることもできる。
【0024】
更に別の実施例として、装置20は、限定アドレス範囲48の情報をアクセスする他の任意の適切なタイプのハードウェアモジュール52を含むことができる。一部の実施例において、装置20は、直接に接続するハードウェアモジュール52を全く含まないことができる。一部の実施例において、メモリー24とハードウェアモジュール52との間は直接接続されないため、ブートローダー40はブート時間内に限定アドレス範囲48の関連するデータをハードウェアモジュール(例えば、書き込み専用のレジスタ)にコピーすることができる。
【0025】
図1の例示的な構成において、ハードウェアモジュール52はメモリー24に直接(即ち、読み取り制限ロジック56を介さずに)接続している。ただし、このような構成は必須ではなく、ハードウェアモジュールは読み取り制限ロジックを介してメモリーに代替的に接続することができる。暗号エンジンは図1のように直接接続する場合、一定の制限を課す必要がある:
・無制限のデータは、コントローラ36のソフトウェア、ファームウェア、または暗号エンジンを介した任意のテストまたはデバッグ機能に公開すべきではない。
・暗号エンジンは無制限のデータを使用することができるが、無制限のデータを暗号エンジンの出力から推測されないことを保証するべきである。
・通常、ブートローダー40及び装置20は、モジュールの内部を公開するテストモードに移行する前に(例えば、スキャンまたは可観測性テスト)、暗号エンジンに無制限のデータが存在しないことを保証すべきである。例えば、テストモードに移行する前にデータを削除する、またはデータが暗号化モジュールに入る前にテストモードを無効にすることによって前記条件を満たす。
【0026】
典型的には、装置20の各部品(例えば、メモリー24、読み取り制限ロジック56、ハードウェアモジュール52、MUX 44及び/またはコントローラ36)は、それらを互いに分離し、それらの間のインターフェースにアクセスすることは全く不可能であるように製造される。一実施例において、装置20の各部品は同じ集積回路(IC)パッケージ内に、または同じシリコンダイ上に製造されることができる。開示された技術の理解に必須でない要素は、明確化のために図から省略される。
【0027】
様々な実施例において、図1に示された装置20の異なる部品は、ASICまたはFGPAなどの任意の適切なハードウェアを使用して構成され得る。あるいは、装置20の一部機能、例えば、コントローラ36の機能はソフトウェア、またはソフトウェアとハードウェアの組み合わせによって構成され得る。
【0028】
一部の実施例において、コントローラ36は、本明細書で説明する機能を実行するようにソフトウェアでプログラムされた汎用プロセッサーを備える。ソフトウェアは、例えば、ネットまたはホストから電子形式でプロセスにダウンロードすることができ、あるいは、それに代えて、またはそれに加えて、磁気的、光学的、または電子メモリーのような非一時的な有形メディアに提供及び/または記憶されることができる。
【0029】
(読み取り制限を使用するメモリー保護装置)
一部の実施例において、読み取り制限ロジック56は、現在または将来にそこに記憶される秘密情報の安全性を損なうことなく、限定アドレス範囲48を含むメモリー24を完全にテストすることができる。
【0030】
一実施例において、メモリー24は、あるデータ値をメモリーに書き込み、メモリーからデータ値を読み取り、及び読み取られたデータ値が書き込まれた値と一致することを検証することによってテストされる。典型的に、必須ではないが、テストに使用されるデータ値は、全てのメモリービットをトグルするように選択される。例えば、0x00、0Xff、0x55及0xAAのような8ビットデータ値は適切なデータ値として使用され得る。
【0031】
換言すれば、テストに使用されるデータ値は、通常、予め定義されたデータ値セットから引き出される。そのデータ値セットは、通常、所与のサイズの全ての可能なデータ値に比べてはるかに少ないデータ値からなる小さなデータ値セットである。上記の例において、8ビットのデータ値の中で、256個の可能なデータ値0x00−0xFF中、ただ4つのデータ値(0x00、0xFF、0x55及び0xAA)がテストに使用される。8ビットデータユニット(例えば、16ビットまたは32ビットデータユニット)以外のデータユニットも使用可能であることに留意されたい。
【0032】
一部の実施例において、実際の装置20は、メモリー24に記憶された秘密情報を保護するために、テストに使用されるデータ値が予め定義されたデータ値セットから引き出される。
【0033】
一実施例において、読み取り制限ロジック56は、テストのためのデータ値セットが予めに設定される。このセットは、「特定データ範囲」または「許容データ値セット」とも呼ばれ、これらの用語は本明細書において互換的に使用される。
【0034】
図1に示されるように、読み取り制限ロジック56は、(i)限定アドレス範囲の定義、及び(ii)特定データ範囲の定義、即ち、許容データ値セットが設定される。
【0035】
読み取り制限ロジック56は、テストインターフェース32を介して、限定アドレス範囲48内の特定アドレスからデータ値を読み取る要求を受信すると、そのデータ値がテストのための許容値ではないかを検討またはチェックする。そうであれば、読み取り制限ロジック56は要求に応じてテストインターフェース32上にデータ値を出力して要求に応答する。そうでなければ、読み取り制限ロジック56はダミーデータ値を出力して要求に応答する。
【0036】
このように、通常のテストは、テスト手順において書き込まれ、リードバックされるデータ値が全て許容値のセットから引き出される場合、限定アドレス範囲48を含むメモリー24はアドレス空間を全体にカバーすることができる。このようなテストは、メモリーに秘密情報が含まれている場合も実行できる。テストインターフェース32を介して受信された読み取り要求が秘密情報の読み取りを試みる場合、引き出されたデータ値の大部分は許容データ値セットに属せず、且つ読み取り制限ロジック56をトリガーしてダミーデータ値で応答する。したがって、テストインターフェース上の任意の使用可能な形式で秘密情報を出力するリスクが有効に減少される。1つ可能な実施例において、秘密情報自体は、テストに使用される「許容値」を含まないようにフォーマットされる。
【0037】
開示された技術は、例えば、暗号エンジンまたはメモリー24内の秘密情報にアクセスする他のハードウェアモジュールの、装置20のセキュリティ機能を全体にテストすることができる。例示的な実施例において、コントローラ36または外部テスタは、限定アドレス範囲48内の1つまたは複数の「テストキー」を記憶することができる。テストキーは、通常の暗号鍵と同様に機能するが、特定データ範囲のデータ値からなるものである。このような暗号鍵は、テストインターフェース32を介して自由に読み取ることができる。
【0038】
一実施例において、読み取り制限ロジック56はテストのための一部のデータ値を含むように構成される。例えば、テストに使用されるデータ値は0x00、0xFF、0x55及び0xAAである場合、これらのデータ値の中の3つ(例えば、0x00、0xFF及び0xAA)で読み取り制限ロジック56を予め設定し、且つダミーデータ値を4つ目のデータ値として設定する。
【0039】
図2は、本発明の一実施例による読み取り制限を使用するメモリー保護方法のフローチャート図である。フローチャート図の第一部分(ステップ60及び64)は、コントローラ36及び装置20全体のブートプロセスを説明する。第二部分(ステップ68−84)は、装置20の通常動作モードを説明する。
【0040】
通常の動作モードは、専用のテストモードに切り替える必要なく、テスト動作と通常の読み取り動作と書き込み動作の両方をサポートすることができる。あるいは、テスト無効保護が他の手段によって実行される場合(例えば、生産中にテスト機能を永久にディセーブルする)、開示された技術は「セカンド防衛線」として応用し、不正な手段に騙されてテスト有効モードに移行、または悪意のあるソフトウェアが装置に侵入することを防止できる。
【0041】
この方法は、電源入りまたはリセットのとき、ブートローダー40が一部のブートプログラムコードを実行してコントローラ36を起動するブートステップ60から始まる。ブートプロセスの一部として、ブートローダー40は、例えば、ブートプログラムコードの少なくとも一部に署名する署名を検証するため、及び/または暗号鍵を暗号アクセラレータにロードするために、メモリー24の限定アドレス範囲48中の秘密情報にアクセスすることができる。ブートプロセスが実行されている限り、ブートローダー40は、通常、インターフェース28及び32を介するメモリー24へのアクセスをブロックする。
【0042】
ブートプロセスが完了すると、ブートローダー40は、制限起動ステップ64において読み取り制限ロジックを起動する。図1の実施例において、ブートローダー40は、「読み取り制限」及び「ロック制限」を表示する2つの信号を介して読み取り制限ロジック56を制御する。「読み取り制限」信号をアサートすると、読み取り制限ロジック56は起動され、「ロック制限」信号をアサートすると、「読み取り制限」信号はラッチされ、即ち、次のブートまでこの制限は不可逆的に起動される。読み取り制限ロジック56が起動した後、ブートローダー40はホストインターフェース28及びテストインターフェース32を介してメモリー24をアクセスすることができる。
【0043】
代替的な実施例において、「読み取り制限」及び「ロック制限」信号の機能は、起動またはロックの両方を実行する単一の信号を使用して実施することができる。通常、限定アドレス範囲と特定データ範囲の数値はブートローダー40を介して設定及び制御することができる。ブートプロセスが完了しようとする時、またはテストモードが起動される時、ブートローダー40は通常、後続の変更のためにこれらの値をロックする。
【0044】
この段階で、実際のテスト処理を許可する前に、コントローラ36はテストモードが起動されているかをチェックする。そうでなければ、次のパワーサイクル(例えば、起動またはリセット)までテストモードをブロックする。テストモードが起動されると、前記方法が実行される。前記の制限(テストモードの起動のチェック)は、装置20内のファームウェアによって実行されても良い。この場合、装置が不正にテストモードを起動する時、データの読み取りを特定の値に制限することは「セカンド防衛線」としての役割を果たすことができる。
【0045】
通常の動作のある時点で、装置20は、読み取り要求68で、例えばテストインターフェース32上に読み取り要求を受信する。読み取り要求は、データ値が読み取られるメモリー24中のアドレスを指定する。読み取り制限ロジック56は、メモリー24の指定アドレスからデータ値を読み取る。
【0046】
アドレス検査ステップ72において、読み取り制限ロジック56は特定アドレスが限定アドレス範囲48に属するかを検査する。特定アドレスが限定アドレス範囲48に属しない場合、読み取り制限ロジック56は例えば、データ出力ステップ76において要求されるように、読み取ったデータ値をテストインターフェース32に出力する。そして、その後は前記ステップ68にループバックする。
【0047】
特定アドレスが限定アドレス範囲48に属する場合、読み取り制限ロジック56はデータ値検査ステップ80において、読み取ったデータ値は許容データ値(特定データ範囲)の1つであるかをチェックする。そうであれば、読み取り制限ロジック56は、データ出力ステップ76において、要求されるように読み取ったデータ値を出力する。そして、その後は前記ステップ68にループバックする。
【0048】
しかし、ステップ80において、読み取り制限ロジック56が読み取ったデータ値が許容データ値の1つでないことを検出する場合、読み取り制限ロジック56は読み取ったデータ値を出力しない。そのかわり、読み取り制限ロジック56は、出力ステップ84において、ダミーデータ値を、例えば、テストインターフェース32に出力し、そして、その後は前記ステップ68にループバックする。また、その後の起動またはリセットイベントが発生する場合はステップ60から再開される。
【0049】
図2に示される方法の流れは、概念を明確するために選択された流れの一例である。代替的実施例において、開示された技術は、他の任意の適切な流れを使用して実施することができる。
【0050】
一部の実施例では、ステップ84において、読み取り制限ロジック56は複数のダミー値のセットから、例えば、ランダムで1つのダミー値を選択することができる。別の実施例において、読み取り制限ロジック56は所与のアドレスについて、毎回の読み取り動作によって変化するダミー値を出力する。例示的な実施例において、読み取り制限ロジック56は、(例えば、軽量暗号化アルゴリズムを使用して)秘密情報の難読化キーとブレンドされたアドレスの決定的関数としてダミーデータ値を選択する。
【0051】
一部の実施例では、ステップ80において、テストインターフェース32を介して限定アドレス範囲48から秘密情報を読み取るための不正な試みを検出すると、読み取り制限ロジック56は適切な応答動作を開始することができる。例えば、読み取り制限ロジック56は、無効な読み取り値を攻撃試みとして解釈することができる。応答する動作の実施例として、アラートを発行すること、装置20の一部または全部をシャットダウン、メモリー24またはその一部へのアクセスをブロックする、及び/または秘密情報の一部または全部をメモリー24から削除することを含むことができる。
【0052】
上記の実施例において、コントローラ36は「読み取り制限」及び「ロック制限」メカニズムを介して、ブートプロセスにおいてブートローダー40が限定アドレス範囲48にアクセスすることを許可する。その後に実行するソフトウェアプログラムにおいて、「読み取り制限」及び「ロック制限」メカニズムは、限定アドレス範囲48内に予め定義された許容テスト値セットだけをアクセスように制限される。
【0053】
したがって、本明細書において、「制限アクセス」という用語は、これらのデータ値が許容データ値セットの予め定義されたサブセットに属する場合にのみ、特定アドレスに記憶された実際データ値を応答する読み取りアクセスを指す。それに対応して、「無制限アクセス」という用語は、データ値に関係なく、特定アドレスに記憶された実際のデータ値を応答する読み取りアクセスを指す。
【0054】
より一般的にいうと、いくつかの実施例において、このようなコントローラ36は第一ソフトウェアプログラムを実行し、第一ソフトウェアプログラムが予め定義された限定アドレス範囲をアクセスすることを許可するが、第一ソフトウェアプログラムの後の第二ソフトウェアプログラムが予め定義された限定アドレス範囲内の制限アクセスが許可される。
【0055】
一部の実施例において、メモリー24は複数の限定アドレス範囲48を含み、各限定アドレス範囲48は それぞれの読み取り制限ロジック56に関連する。このような構成において、それぞれの読み取り制限ロジック56は異なるソフトウェア層を介して制御される。例示的な実施例において、階層化されたブートプロセスに順次に異なるソフトウェア層(それぞれのソフトウェア層は異なる限定アドレス範囲48に関連する異なる読み取り制限ロジック56を制御する)を使用する。これらのソフトウェア層の実施例は、イングランドらの「RIoT − A Foundation for Trust in the Internet of Things」、Microsoft Research Technical Report MSR−TR−2016−18、2016年4月に記載されている。引用した論文においては、L0、L1、L2およびOSと呼ばれるソフトウェア層を有する階層化ブートプロセスを記述している。
【0056】
したがって、上述した実施例は例として記載されたものであり、本発明は、上記具体的に示されて説明されたものに限定されないことが理解されよう。むしろ、本発明の範囲は、上述した様々な特徴の組み合わせおよび部分的な組み合わせ、ならびに前述の説明から当業者に想到し得る従来技術に開示されていない変形および修正を含む。本特許出願において参照により援用される文献は、本出願の一部であるとみなされるべきであり、これらの組み込まれた文献において、本明細書に明示または示唆された定義と矛盾する場合、本明細書に定義されたもののみが考慮されるべきである。
【符号の説明】
【0057】
20:装置
24:メモリー
28:ホストインターフェース
32:テストインターフェース
36:コントローラ
40:ブートソフトウェア(ブートローダー)
44:マルチプレクサ(MUX)
48:限定アドレス範囲
52:ハードウェアモジュール
56:読み取り制限ロジック
60、64、68、72、76、80、84:ステップ
図1
図2