(57)【特許請求の範囲】
【請求項１】
秘匿情報が格納される秘匿領域を有する不揮発性メモリと、
前記不揮発性メモリに対するアクセスについて認証する認証コントローラと、
フラグ情報を記憶するフラグ情報記憶部と、
前記フラグ情報記憶部に記憶された前記フラグ情報を用いて、前記不揮発性メモリへのアクセスを制御するメモリコントローラと、
を有し、
前記メモリコントローラは、前記フラグ情報の値が所定の値であり、かつ、前記認証コントローラによりアクセスの正当性が認証された場合、前記秘匿領域からの前記秘匿情報の読み出しを許可し、
前記メモリコントローラは、前記認証コントローラの認証結果によらず、前記秘匿領域の内容が消去されていない場合には、前記フラグ情報の値を、アクセスを許可するために必要な値に変更しない、
情報処理装置。
【請求項２】
前記メモリコントローラは、前記秘匿領域の内容が消去された場合に、前記フラグ情報の値を前記所定の値へと変更する
請求項１に記載の情報処理装置。
【請求項３】
前記フラグ情報は、前記認証コントローラによる認証結果によらず、前記秘匿情報の読み出しを禁止するための第１のフラグ情報を含み、
前記メモリコントローラは、
前記第１のフラグ情報の値が認証結果によらず、前記秘匿情報の読み出しを禁止することを示す値ではなく、かつ、前記認証コントローラによりアクセスの正当性が認証された場合、前記秘匿領域からの前記秘匿情報の読み出しを許可する
請求項１に記載の情報処理装置。
【請求項４】
前記フラグ情報は、さらに、前記秘匿領域への書込みの可否を制御するための第２のフラグ情報を含み、
前記メモリコントローラは、
前記第２のフラグ情報の値が前記秘匿領域への書込みを許可することを示す値である場合、前記秘匿領域への書込みを許可する
請求項３に記載の情報処理装置。
【請求項５】
前記フラグ情報は、
前記秘匿領域への書込み及び前記秘匿領域からの読み出しを禁止するための第３のフラグ情報と、
前記認証コントローラによる認証結果をアクセスの可否の判定に用いるための第４のフラグ情報と
を含み、
前記メモリコントローラは、
前記第３のフラグ情報の値が前記秘匿領域への書込み及び前記秘匿領域からの読み出しを禁止することを示す値ではなく、かつ、前記第４のフラグ情報の値が前記認証コントローラによる認証結果をアクセスの可否の判定に用いることを示す値であり、かつ、前記認証コントローラによりアクセスの正当性が認証された場合、前記秘匿領域からの前記秘匿情報の読み出しを許可する
請求項１に記載の情報処理装置。
【請求項６】
前記不揮発性メモリは、１つのバンクから構成される
請求項１に記載の情報処理装置。
【請求項７】
前記不揮発性メモリは、複数のバンクから構成され、
前記フラグ情報記憶部は、前記秘匿情報の読み出しの可否を制御するために用いられるフラグ情報に加え、さらに、前記複数のバンクのうち有効なバンクを指定する有効バンク設定フラグを記憶し、
前記メモリコントローラは、現在有効ではないバンクの前記秘匿領域に新たな秘匿情報が書き込まれた場合に、該バンクを有効なバンクとするよう前記有効バンク設定フラグを変更する
請求項１に記載の情報処理装置。
【請求項８】
前記メモリコントローラは、さらに、前記フラグ情報の値が所定の値であり、かつ、前記認証コントローラによりアクセスの正当性が認証された場合、前記秘匿領域の消去を許可する
請求項２に記載の情報処理装置。
【請求項９】
前記フラグ情報記憶部は、前記不揮発性メモリであり、前記フラグ情報が前記不揮発性メモリの前記秘匿領域以外の領域に記憶されている
請求項１に記載の情報処理装置。
【請求項１０】
秘匿情報が格納される秘匿領域を有する不揮発性メモリへのアクセスの可否を判定するために用いるフラグ情報を記憶し、
前記不揮発性メモリに対するアクセスについて、正当なアクセスであるか否かを判定し、
前記フラグ情報の値が所定の値であり、かつ、正当なアクセスであると判定された場合、前記秘匿領域からの前記秘匿情報の読み出しを許可し、
正当なアクセスであるか否かについての前記判定の結果によらず、前記秘匿領域の内容が消去されていない場合には、前記フラグ情報の値を、アクセスを許可するために必要な値に変更しない、
読み出し制御方法。
【請求項１１】
秘匿情報が格納される秘匿領域を有する不揮発性メモリに対するアクセスについて、正当なアクセスであるか否かを判定する判定ステップと、
前記不揮発性メモリへのアクセスの可否を判定するために用いられるフラグ情報の値が所定の値であり、かつ、前記判定ステップで正当なアクセスであると判定された場合、前記秘匿領域からの前記秘匿情報の読み出しを許可する制御ステップと、
正当なアクセスであるか否かについての前記判定の結果によらず、前記秘匿領域の内容が消去されていない場合には、前記フラグ情報の値を、アクセスを許可するために必要な値に変更しないステップと、
をコンピュータに実行させるプログラム。
【請求項１２】
前記フラグ情報の値が所定の値であり、かつ、前記判定ステップで正当なアクセスであると判定された場合、前記秘匿領域の消去を許可する消去許可ステップ
をさらに前記コンピュータに実行させる請求項１１に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理装置、読み出し制御方法、及びプログラムに関し、例えば、秘匿領域を有する不揮発性メモリへのアクセスを行う情報処理装置、読み出し制御方法、及びプログラムに関する。
【背景技術】
【０００２】
一般的に、マイクロコンピュータ等により実行されるプログラムは、複数の開発者（例えば、１次開発者、２次開発者など）により開発され、データ記憶部に記憶される。ここで、例えば、１次開発者の作成したプログラムに秘匿性が要求される場合、このプログラムが２次開発者に読み出されることを防ぐ必要がある。
【０００３】
これに対し、データへのアクセスに認証を必要とする技術が知られている。例えば、特許文献１では、秘匿領域を有するデータ記憶部と、認証部とを備える記憶装置部について開示している。この秘匿領域は、読出認証情報を用いた認証に成功した場合に読出し可能となり、書込認証情報を用いた認証に成功した場合に書込み可能となる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−１４５２９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、特許文献１に記載された技術では、読出認証情報さえ知っていれば、秘匿領域に書込んだ秘匿性の高いプログラムを誰でも読み出すことが出来てしまう。
【０００６】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００７】
一実施の形態によれば、情報処理装置は、フラグ情報の値が所定の値であり、かつ、認証コントローラによりアクセスの正当性が認証された場合、秘匿領域からの秘匿情報の読み出しを許可するメモリコントローラを有する。
【発明の効果】
【０００８】
前記一実施の形態によれば、認証のみによりアクセスを制御する場合と比べて、秘匿領域に書込まれた情報の秘匿性を向上させることができる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態の概要に係る情報処理装置の一例である半導体装置の構成例を示すブロック図である。
【図２】実施の形態１にかかる半導体装置のハードウェア構成を示す模式図である。
【図３】実施の形態１にかかる設定情報記憶領域の構成の一例を示す模式図である。
【図４】実施の形態１にかかるセキュリティデータ設定領域の構成の一例を示す模式図である。
【図５】実施の形態１にかかる認証情報期待値設定領域の構成の一例を示す模式図である。
【図６】実施の形態１にかかる不揮発性メモリのバンク構成の一例を示す模式図である。
【図７】実施の形態１にかかる認証コントローラによる認証処理の動作の一例を示すフローチャートである。
【図８】実施の形態１にかかる認証コントローラによる認証用期待値の設定動作の一例を示すフローチャートである。
【図９】実施の形態１にかかるメモリコントローラによるアクセス可否の判定条件について示す表である。
【図１０】実施の形態１にかかるフラグ情報の設定変更の判断フローを示すフローチャートである。
【図１１】実施の形態１にかかる秘匿領域のデータの更新動作の一例を示すフローチャートである。
【図１２】実施の形態１の変形例にかかるメモリコントローラによるアクセス可否の判定条件について示す表である。
【図１３】実施の形態１の変形例にかかる読出制御フラグの設定変更の判断フローを示すフローチャートである。
【図１４】実施の形態２にかかる半導体装置のハードウェア構成を示す模式図である。
【図１５】実施の形態２にかかる不揮発性メモリのバンク構成の一例を示す模式図である。
【図１６】実施の形態２にかかる設定情報記憶領域の構成の一例を示す模式図である。
【図１７】実施の形態２にかかるセキュリティデータ設定領域の構成の一例を示す模式図である。
【図１８】実施の形態２にかかるバンク情報設定領域の構成の一例を示す模式図である。
【図１９】実施の形態２にかかるメモリコントローラによるアクセス可否の判定条件について示す表である。
【図２０】実施の形態２にかかる秘匿領域のデータの更新動作の一例を示すフローチャートである。
【図２１】実施の形態２にかかる有効バンク設定フラグの切替判断フローを示すフローチャートである。
【図２２】実施の形態２にかかるバンク構成の切替について示す模式図である。
【図２３】実施の形態２にかかるバンク構成の切替判断フローを示すフローチャートである。
【図２４】実施の形態２の変形例にかかるメモリコントローラによるアクセス可否の判定条件について示す表である。
【図２５】実施の形態２の変形例にかかる有効バンク設定フラグの切替判断フローを示すフローチャートである。
【図２６】実施の形態３にかかるメモリコントローラによるアクセス可否の判定条件について示す表である。
【図２７】実施の形態３にかかる秘匿領域のデータの更新動作の一例を示すフローチャートである。
【発明を実施するための形態】
【００１０】
説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【００１１】
＜実施の形態の概要＞
実施の形態の詳細を説明する前に、まず、概要について説明する。図１は、実施の形態の概要に係る情報処理装置の一例である半導体装置１の構成例を示すブロック図である。図１に示されるように、半導体装置１は、不揮発性メモリ２と、フラグ情報記憶部３と、認証コントローラ４と、メモリコントローラ５とを有している。
【００１２】
不揮発性メモリ２は、秘匿領域６を有している。秘匿領域６は、秘匿情報が格納される領域である。なお、秘匿情報とは、秘匿性を有する情報である。なお、不揮発性メモリ２は、秘匿領域６に限らず、秘匿情報以外の情報を記憶する領域を有していてもよい。
【００１３】
フラグ情報記憶部３は、不揮発性メモリ２へのアクセスの可否を判定するために用いられるフラグ情報を記憶する。なお、図１に示した構成例では、フラグ情報記憶部３は、不揮発性メモリ２とは別の記憶装置として図示されているが、これに限られない。フラグ情報記憶部３は、不揮発性メモリ２により実現されてもよいし、不揮発性メモリ２とは別の不揮発性メモリにより実現されてもよいし、他の記憶装置により実現されてもよい。
【００１４】
フラグ情報記憶部３が、不揮発性メモリ２により実現される場合、不揮発性メモリ２は、フラグ情報を記憶する領域（後述する設定情報記憶領域２２０）をさらに有する。つまり、フラグ情報記憶部３が不揮発性メモリ２であり、かつ、フラグ情報が不揮発性メモリ２の秘匿領域６以外の領域に記憶されていてもよい。この場合、フラグ情報記憶部を別途用意する必要がなく、構成を簡易化することができる。
【００１５】
認証コントローラ４は、不揮発性メモリ２に対するアクセスについて認証する。例えば、認証コントローラ４は、認証コントローラ４に入力された認証情報が、所定の条件を満たすか否か判定することにより認証を行う。認証コントローラ４は、認証結果をメモリコントローラ５に出力する。
【００１６】
メモリコントローラ５は、フラグ情報記憶部３に記憶されたフラグ情報を用いて、不揮発性メモリ２へのアクセスを制御する。具体的には、メモリコントローラ５は、フラグ情報の値が所定の値であり、かつ、認証コントローラ４によりアクセスの正当性が認証された場合、秘匿領域６からの秘匿情報の読み出しを許可する。
【００１７】
半導体装置１によれば、メモリコントローラ５は、認証コントローラ４による認証結果のみならず、フラグ情報の値に応じて、読み出しの可否を決定する。したがって、フラグ情報の値が上記所定の値以外の値に設定されている場合には、メモリコントローラ５は、認証コントローラ４の認証結果によらず秘匿情報の読み出しを許可しない。このため、半導体装置１によれば、認証のみによりアクセスを制御する場合と比べて、秘匿領域に書込まれた情報の秘匿性を向上させることができる。
【００１８】
＜実施の形態１＞
以下、実施の形態１の詳細について説明する。図２は、実施の形態１にかかる半導体装置１０のハードウェア構成を示す模式図である。半導体装置１０は、マイクロコンピュータとして構成されている。図２に示されるように、半導体装置１０において、半導体装置１０の動作を制御するＣＰＵ（Central Processing Unit）１００、秘匿領域２１１及び設定情報記憶領域２２０を有する不揮発性メモリ２００、認証コントローラ４００、及びメモリコントローラ５００が周辺バス３００上に存在している。また、ＣＰＵ１００の動作中にプログラムなどを一時退避させるために、ＲＡＭ（Random Access Memory）６００がＣＰＵ１００に接続されている。さらに、ＣＰＵ１００がプログラムを不揮発性メモリ２００から入手する際、効率よく入手するためにキャッシュ１１０がＣＰＵ１００に付属している。なお、図示していないが、不揮発性メモリ２００にＣＰＵ１００がアクセスする際に用いられる読出し制御回路がＣＰＵ１００に付属している。
【００１９】
不揮発性メモリ２００は、ＣＰＵ１００により実行されるプログラムなどの各種情報を格納する。なお、このプログラムのうち、秘匿性を有するプログラムについては、秘匿情報として秘匿領域２１１に格納されている。秘匿領域２１１は、秘匿領域６と同様、秘匿情報が格納される領域である。本実施の形態では、不揮発性メモリ２００は、具体的にはフラッシュメモリであるが、他の不揮発性メモリであってもよい。
【００２０】
不揮発性メモリ２００は、プログラムを格納する領域であるプログラム格納領域２１０と、設定情報記憶領域２２０とを有している。プログラム格納領域２１０は、秘匿情報を格納するための秘匿領域２１１を備えている。設定情報記憶領域２２０は、秘匿領域２１１についてのセキュリティ設定情報を格納する領域であり、図３に示されるように、セキュリティデータ設定領域２２１と認証情報期待値設定領域２２２を備えている。
【００２１】
図４は、セキュリティデータ設定領域２２１の構成の一例を示す模式図である。図４に示されるように、セキュリティデータ設定領域２２１には、読出制御フラグの設定値と、セキュリティ保護フラグの設定値とが格納される。本実施の形態では、読出制御フラグの設置値とセキュリティ保護フラグの設定値は、セキュリティデータ設定領域２２１の同一のアドレスに格納される。図４に示した例では、具体的には、所定のアドレスの最下位ビット（ｂｉｔ０）にセキュリティ保護フラグの設定値が格納され、所定のアドレスの最上位ビット（ｂｉｔ３１）に読出制御フラグの設定値が格納されている。なお、読出制御フラグの設置値とセキュリティ保護フラグの設定値は、セキュリティデータ設定領域２２１の異なるアドレスにそれぞれ格納されてもよい。
【００２２】
セキュリティ保護フラグは、秘匿領域２１１への書込み及び秘匿領域２１１からの読み出しの両方を禁止するためのフラグ情報である。セキュリティ保護フラグの設定値が０である場合、秘匿領域２１１への書込み及び秘匿領域２１１からの読み出しの両方が、メモリコントローラ５００によって禁止される。これに対し、セキュリティ保護フラグの設定値が１である場合、秘匿領域２１１への書込みがメモリコントローラ５００によって許可される。このように、本実施の形態において、セキュリティ保護フラグは、秘匿領域２１１への書込みの可否を制御するためのフラグ情報とも言うことができる。また、セキュリティ保護フラグが１である場合、秘匿領域２１１からの読み出しの可否は、メモリコントローラ５００によって、他の条件も含めて総合的に判断される。
【００２３】
本実施の形態において、読出制御フラグは、認証コントローラ４００による認証結果によらず、秘匿領域２１１における秘匿情報の読み出しを禁止するためのフラグ情報である。読出制御フラグの設定値が１である場合、認証コントローラ４００による認証結果によらず、秘匿領域２１１における秘匿情報の読み出しが禁止される。これに対し、読出制御フラグの設定値が０である場合、認証コントローラ４００による認証結果に応じて、秘匿領域２１１における秘匿情報の読み出しの可否が決定される。なお、その際、上述の通り、セキュリティ保護フラグの値が１に設定されている必要がある。なお、本実施の形態における、秘匿領域２１１からの読み出しが許可される条件についての詳細は後述する。
【００２４】
このように、本実施の形態においては、不揮発性メモリ２００は、上述のフラグ情報記憶部３としても機能する。すなわち、不揮発性メモリ２００は、不揮発性メモリ２００へのアクセスの可否を判定するために用いられるフラグ情報として、セキュリティ保護フラグ及び読出制御フラグを記憶する。
【００２５】
図５は、認証情報期待値設定領域２２２の構成の一例を示す模式図である。図５に示されるように、認証情報期待値設定領域２２２には、認証用期待値が格納される。認証用期待値は、認証コントローラ４００による認証時に参照される値である。図５に示した例では、３２ビットの認証用期待値が格納されている。
【００２６】
図６は、本実施の形態にかかる不揮発性メモリ２００のバンク構成の一例を示す模式図である。本実施の形態において、不揮発性メモリ２００は、１つのバンクから構成されており、メモリバンクとして、ｂａｎｋ０のみを備えている。なお、図６に示した例では、ｂａｎｋ０は、フラッシュメモリマクロ２５０Ａとフラッシュメモリマクロ２５０Ｂとにより物理的に実現されているが、１つのフラッシュメモリマクロにより実現されてもよい。なお、メモリマクロとは、メモリの読み出し回路及び書き込み回路を内蔵したユニット（ハードマクロ）のことである。
【００２７】
次に認証コントローラ４００について説明する。認証コントローラ４００は、認証コントローラ４に対応しており、不揮発性メモリ２００に対するアクセスについて認証する制御回路である。具体的には、認証コントローラ４００は、外部から入力された認証情報と、設定情報記憶領域２２０に予め記憶された認証情報の期待値とを用いて、入力された認証情報が所定の条件を満たすか否かを判定する。認証コントローラ４００は、入力された認証情報が所定の条件を満たす場合には、アクセスの正当性を認証する。
【００２８】
本実施の形態では、認証コントローラ４００は、外部から入力された認証情報に対し所定の暗号化アルゴリズムに従った変換を行って得られた値と、認証情報期待値設定領域２２２に格納されている認証用期待値とを比較し、両者が一致しているか否かを判定する。両者が一致した場合、認証が成功したことを示す。一方、両者が一致しない場合、認証が失敗したことを示す。外部から入力される認証情報としては、例えば、パスワード又はＩＤコードなどが挙げられるが、これらに限られない。
【００２９】
認証コントローラ４００は、認証結果を示す認証結果信号を、メモリコントローラ５００に出力する。具体的には、認証コントローラ４００は、認証に成功した場合、認証結果信号として１を出力し、認証に失敗した場合、認証結果信号として０を出力する。なお、認証コントローラ４００は、ハードウェアとしての実現に限らず、例えば、プログラムが実行されることにより実現されてもよい。
【００３０】
図７は、認証コントローラ４００による認証処理の動作の一例を示すフローチャートである。
ステップ１０（Ｓ１０）において、認証コントローラ４００は、認証情報期待値設定領域２２２に格納された認証用期待値をリードする。
ステップ１１（Ｓ１１）において、認証コントローラ４００は、認証コントローラ４００に入力された認証情報と、ステップ１０でリードした認証用期待値が一致するか否かを判定する。
認証情報と認証用期待値とが一致した場合、ステップ１２（Ｓ１２）において、認証コントローラ４００はアクセスの正当性を認証する。すなわち、認証に成功したこととなり、認証コントローラ４００は、認証結果信号として１を、メモリコントローラ５００に出力する。
認証情報と認証用期待値とが一致しなかった場合、ステップ１３（Ｓ１３）において、認証コントローラ４００はアクセスの正当性を認証しない。すなわち、認証に失敗したこととなり、認証コントローラ４００は、認証結果信号として０を、メモリコントローラ５００に出力する。
【００３１】
なお、認証コントローラ４００は、認証用期待値を更新してもよい。認証コントローラ４００は、例えば、入力された認証情報に対し、現在の認証用期待値を用いた認証が成功した場合に、新たな認証用期待値を現在の認証用期待値に代えて認証情報期待値設定領域２２２に格納する。また、認証コントローラ４００は、例えば、認証情報期待値設定領域２２２に格納されている値が、不揮発性メモリ２００の消去状態を示す値である場合（例えば、認証情報期待値設定領域２２２の全てのビットの値が１である場合）、初期の認証用期待値を認証情報期待値設定領域２２２に格納する。
【００３２】
図８は、認証コントローラ４００による認証用期待値の設定動作の一例を示すフローチャートである。
ステップ２０（Ｓ２０）において、認証コントローラ４００は、認証情報期待値設定領域２２２に格納されている値が、不揮発性メモリ２００の消去状態を示す値であるか否かを確認する。具体的には、認証コントローラ４００は、現在の認証用期待値の全てのビットの値が１であるか否かを判定する。認証情報期待値設定領域２２２に格納されている値が不揮発性メモリ２００の消去状態を示す値である場合、すなわち、現在の認証用期待値の全てのビットの値が１である場合、処理は、ステップ２３へ移行する。これに対し、認証情報期待値設定領域２２２に格納されている値が不揮発性メモリ２００の消去状態を示す値ではない場合、すなわち、現在の認証用期待値のビット列のうち少なくとも１つのビットの値が０である場合、処理は、ステップ２１へ移行する。
【００３３】
ステップ２１（Ｓ２１）において、認証コントローラ４００は、現在の認証用期待値を用いて認証処理を実施する。すなわち、認証コントローラ４００は、図７に示したフローチャートに示される処理を実施する。ここで、認証が成功した場合（ステップ２２（Ｓ２２）でＯＫ）、処理はステップ２３へ移行する。これに対し、認証が失敗した場合（ステップ２２でＮＧ）、処理は終了する。認証コントローラ４００は、認証用期待値の設定動作を終了する。
【００３４】
ステップ２３（Ｓ２３）において、認証コントローラ４００は、新規の認証情報の入力を受付ける。
ステップ２４（Ｓ２４）において、認証コントローラ４００は、ステップ２３で受け付けた新規の認証情報に基づいて新規の認証用期待値を生成する。例えば、認証コントローラ４００は、所定の暗号化アルゴリズムに従って、ステップ２３で受け付けた新規の認証情報を認証用期待値に変換する。
【００３５】
ステップ２５（Ｓ２５）において、認証コントローラ４００は、ステップ２４で生成された新規の認証用期待値が、不揮発性メモリ２００の消去状態を示す値であるか否かを確認する。具体的には、認証コントローラ４００は、ステップ２４で生成された新規の認証用期待値の全てのビットの値が１であるか否かを判定する。新規の認証用期待値が不揮発性メモリ２００の消去状態を示す値である場合、すなわち、新規の認証用期待値の全てのビットの値が１である場合、入力された新規の認証情報が適切ではないため、処理は、ステップ２２へと戻る。これに対し、新規の認証用期待値が不揮発性メモリ２００の消去状態を示す値ではない場合、すなわち、新規の認証用期待値のビット列のうち少なくとも１つのビットの値が０である場合、処理は、ステップ２６へ移行する。
【００３６】
ステップ２６（Ｓ２６）において、認証コントローラ４００は、ステップ２４で生成された新規の認証用期待値を、認証情報期待値設定領域２２２に新たに格納する認証用期待値として確定する。すなわち、認証コントローラ４００は、ステップ２４で生成された新規の認証用期待値を認証情報期待値設定領域２２２に格納する。
【００３７】
次に、メモリコントローラ５００について説明する。メモリコントローラ５００は、メモリコントローラ５に対応しており、フラグ情報を用いて、不揮発性メモリ２００へのアクセスを制御する制御回路である。本実施の形態において、具体的には、メモリコントローラ５００は、セキュリティデータ設定領域２２１に格納されたフラグ情報を用いて、不揮発性メモリ２００へのアクセスを制御する。なお、メモリコントローラ５００は、ハードウェアとしての実現に限らず、例えば、プログラムが実行されることにより実現されてもよい。
【００３８】
なお、認証コントローラ４００を実現するためのプログラム及びメモリコントローラ５００を実現するためのプログラムは、様々なタイプの非一時的なコンピュータ可読媒体（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（ｔａｎｇｉｂｌｅ  ｓｔｏｒａｇｅ  ｍｅｄｉｕｍ）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  ＰＲＯＭ）、フラッシュＲＯＭ、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【００３９】
ここで、本実施の形態にかかるメモリコントローラ５００によるアクセス可否の判定について説明する。図９は、本実施の形態にかかるメモリコントローラ５００によるアクセス可否の判定条件について示す表である。図９に示すように、メモリコントローラ５００は、次のように秘匿領域２１１に対するアクセスの可否を決定する。
【００４０】
セキュリティ保護フラグの値が０である場合、メモリコントローラ５００は、秘匿領域２１１への情報の書込みを禁止すると共に、秘匿領域２１１からの秘匿情報の読み出しを禁止する。したがって、セキュリティ保護フラグの値が０の場合、読出制御フラグの設定値によらず、常に、秘匿領域２１１への書込み及び秘匿領域２１１からの読み出しが禁止されることとなる。また、セキュリティ保護フラグの値が０の場合、認証コントローラ４００による認証の結果によらず、常に、秘匿領域２１１への書込み及び秘匿領域２１１からの読み出しが禁止されることとなる。
【００４１】
セキュリティ保護フラグの値が１である場合、メモリコントローラ５００は、秘匿領域２１１への情報の書込みを許可する。つまり、セキュリティ保護フラグの値が１の場合、読出制御フラグの設定値によらず、常に、秘匿領域２１１への書込みが許可されることとなる。また、セキュリティ保護フラグの値が１の場合、認証コントローラ４００による認証の結果によらず、常に、秘匿領域２１１への書込みが許可されることとなる。このように、メモリコントローラ５００は、セキュリティ保護フラグの値が、秘匿領域２１１への書込みを許可することを示す値である場合、秘匿領域２１１への書込みを許可する。
【００４２】
セキュリティ保護フラグの値が１であり、かつ、読出制御フラグの値が１である場合、メモリコントローラ５００は、認証コントローラ４００による認証結果によらず、秘匿領域２１１における秘匿情報の読み出しを禁止する。つまり、この場合、不正なアクセスに対する認証が成功したとしても、秘匿情報が読み出されることは防がれる。このように、読出制御フラグは、読み出しが可能となる期間を制限している。
【００４３】
セキュリティ保護フラグの値が１であり、かつ、読出制御フラグの値が０である場合、メモリコントローラ５００は、認証コントローラ４００による認証の結果によって、秘匿領域２１１からの秘匿情報の読み出しの可否を決定する。したがって、この場合、メモリコントローラ５００は、認証が成功すると、すなわち、認証コントローラ４００から認証結果信号として１を受信すると、秘匿領域２１１からの秘匿情報の読み出しを許可する。これに対し、メモリコントローラ５００は、認証が失敗すると、すなわち、認証コントローラ４００から認証結果信号として０を受信すると、秘匿領域２１１からの秘匿情報の読み出しを禁止する。このように、メモリコントローラ５００は、読出制御フラグの値が認証結果によらず、秘匿情報の読み出しを禁止することを示す値ではなく、かつ、認証コントローラ４００によりアクセスの正当性が認証された場合、秘匿領域２１１からの秘匿情報の読み出しを許可する。
【００４４】
ここで、本実施の形態では、メモリコントローラ５００は、秘匿領域２１１の内容が消去された場合に、フラグ情報の値を、前記秘匿領域２１１からの秘匿情報の読み出しを許可するために要求される値へと変更する。図１０は、フラグ情報の設定変更の判断フローを示すフローチャートである。
ステップ３０（Ｓ３０）において、メモリコントローラ５００は、秘匿領域２１１に格納されているデータが消去されたか否かを判定する。メモリコントローラ５００が、秘匿領域２１１の消去を検知した場合、処理はステップ３１へ移行する。これに対し、メモリコントローラ５００が、秘匿領域２１１の消去を検知しない場合、処理はステップ３２へ移行する。
ステップ３１（Ｓ３１）において、メモリコントローラ５００は、セキュリティ保護フラグの値を１に設定可能であると判定すると共に、読出制御フラグの値を０に設定可能であると判定する。
一方、ステップ３２（Ｓ３２）では、メモリコントローラ５００は、セキュリティ保護フラグの値を１に設定不可能であると判定すると共に、読出制御フラグの値を０に設定不可能であると判定する。
【００４５】
なお、フラグ情報の設定変更は、セキュリティデータ設定領域２２１のビットの書き換えにより行うことができる。ここで、フラグ情報の切替を不可能にする具体的の方法としては任意の方法が採用可能である。例えば、セキュリティデータ設定領域２２１への書込み要求に対し、メモリコントローラ５００が書き込みエラーを出力してもよい。又は、書込み動作は実行されるものの実際にデータの更新は行わないことで、フラグ情報の切替を不可能にしてもよい。
【００４６】
次に、半導体装置１０における、秘匿領域２１１のデータの更新動作について説明する。図１１は、秘匿領域２１１のデータの更新動作の一例を示すフローチャートである。なお、図１１において、フローチャートのステップの横に、当該ステップが実行された際の秘匿領域２１１に対するアクセス可否の状態を示している。以下、図１１に沿って、秘匿領域２１１のデータの更新動作について説明する。なお、本実施の形態では、上述の通り、不揮発性メモリ２００は１バンク構成となっているため、書き換えの実行中に、不揮発性メモリ２００に記憶されたＲＯＭプログラムの実行を行うことができない。したがって、更新の際に実行されるＲＯＭプログラムは、更新の前に、ＲＡＭ６００などの別のメモリにコピーされている。そして、秘匿領域２１１の更新の際は、コピー先のメモリ上で、このＲＯＭプログラムが実行される。
【００４７】
なお、更新動作が行われる前のフラグ情報の設定値は、次のようになっている。すなわち、セキュリティ保護フラグの値が０であり、読出制御フラグの値が１となっている。したがって、この状態では、秘匿領域２１１への書込み及び秘匿領域２１１からの読み出しは禁止される。
【００４８】
ステップ４０（Ｓ４０）において、秘匿領域２１１のデータの消去が行われる。具体的には、例えば、秘匿領域２１１の更新を行う正当なユーザの指示に基づき、又はこのユーザが用意した消去プログラムが実行されることにより、秘匿領域２１１のデータが消去される。これにより、メモリコントローラ５００は、秘匿領域２１１の消去を検知し、セキュリティ保護フラグの値を１に設定可能であると判定すると共に、読出制御フラグの値を０に設定可能であると判定する。
【００４９】
なお、ステップ４０で消去されるデータは、例えば、秘匿領域２１１の更新を行う正当なユーザにより開発されたプログラムである。したがって、本実施の形態においては、正当なユーザによって秘匿領域２１１に格納された旧プログラムを、この正当なユーザが更新したい場合、このように秘匿領域２１１に格納された旧プログラムは一旦削除されることとなる。しかし、このような削除ステップが実行されることにより、秘匿領域２１１に格納された旧プログラムが、正当ではないユーザにより閲覧されることを、確実に防ぐことが可能となる。
【００５０】
ステップ４１（Ｓ４１）及びステップ４２（Ｓ４２）において、フラグ情報の設定値が変更される。本実施の形態では、上述の通り、読出制御フラグとセキュリティ保護フラグは、セキュリティデータ設定領域２２１の同一のアドレスに格納されているため、メモリコントローラ５００は、ステップ４１とステップ４２とを同時に実行することが可能であるが、ステップ４１とステップ４２とが同時に実行されなくてもよい。ステップ４１において、メモリコントローラ５００は、セキュリティ保護フラグの値を１に設定する。これにより、秘匿領域２１１への書込みが禁止された状態から許可された状態へと変わる。すなわち、メモリコントローラ５００は、秘匿領域２１１に対する書き込み要求を許可する。ステップ４２において、メモリコントローラ５００は、読出制御フラグの値を０に設定する。なお、読出制御フラグの値が０に変更されても、秘匿領域２１１からの読み出し禁止された状態は継続している。
【００５１】
ステップ４３（Ｓ４３）において、認証コントローラ４００による認証が行われる。アクセスが許可される認証結果が得られると、すなわち認証コントローラ４００から認証成功を示す認証結果信号をメモリコントローラ５００が受信すると、メモリコントローラ５００は、秘匿領域２１１に対する読み出し要求を許可する。具体的には、メモリコントローラ５００は、秘匿領域２１１についてのリード許可信号をＣＰＵ１００に出力する。なお、図１１で示したフローチャートでは、アクセスが許可される認証結果が得られた場合、すなわち認証が成功する場合を例に示しているが、認証に失敗した場合には、読み出しが禁止された状態が継続することとなる。
【００５２】
ステップ４４（Ｓ４４）において、秘匿領域２１１に新たなデータが書き込まれる。具体的には、例えば、秘匿領域２１１の更新を行う正当なユーザの指示に基づき、又はこのユーザが用意した書き込みプログラムが実行されることにより、秘匿領域２１１に秘匿情報（新プログラム）が書き込まれる。
【００５３】
ステップ４５（Ｓ４５）において、秘匿領域２１１に書込まれた新しいデータが読み出され、書き込まれた内容の確認が行われる。これは、ステップ４４での書き込みで正しく書き込みが完了したかを確認するために行われる。具体的には、例えば、秘匿領域２１１の更新を行う正当なユーザの指示に基づき、又はこのユーザが用意した確認プログラムが実行されることにより、秘匿領域２１１のデータが読み出される。
【００５４】
ステップ４６（Ｓ４６）において、メモリコントローラ５００は、ステップ４５における確認が完了したことの通知を受信し、フラグ情報を変更する。なお、秘匿領域２１１の更新を行う正当なユーザの指示に基づきメモリコントローラ５００にこの通知がなされてもよいし、このユーザが用意した確認プログラムがメモリコントローラ５００にこの通知を行ってもよい。本ステップにおいて、メモリコントローラ５００は、セキュリティ保護フラグの値を０に設定すると共に、読出制御フラグの値を１に設定する。これにより、以降、メモリコントローラ５００は、秘匿領域２１１に対する書き込み及び読み出しを禁止することとなる。なお、ステップ４６において、セキュリティ保護フラグの変更と読出制御フラグの変更が同時に行われなくてもよい。すなわち、これらのフラグの変更が別々に行われてもよい。
【００５５】
ステップ４７（Ｓ４７）において、システムのリセット（再起動）が行われる。これにより、認証結果信号が初期化され、認証結果信号の信号状態が認証失敗を示す信号状態となる。
【００５６】
図１１に示したフローチャートでは、ステップ４２及びステップ４３は、ステップ４４の前に実施されるが、これらがステップ４４の後に実施されてもよいことは言うまでもない。
【００５７】
なお、上記説明では、ＣＰＵ１００側に読出し制御回路が存在する場合を想定しているが、読出し制御回路がメモリコントローラ５００に設けられていてもよい。また同様に、キャッシュ１１０がメモリコントローラ５００に設けられていてもよい。また、上記説明では、ステップ４７において、リセットが行われるが、リセットは必ずしも行われなくてもよい。また、リセットを行わない場合、認証コントローラ４００に疑似認証情報が意図的に入力されることにより、認証結果信号の信号状態を、認証失敗を示す信号状態としてもよい。
【００５８】
なお、秘匿領域２１１の更新中にキャッシュ処理が行われないようキャッシュを無効にすることで、更新後にキャッシュ１１０に秘匿情報が残ることを防ぐことができる。また、秘匿領域２１１の更新中にキャッシュ処理を行う場合には、更新完了後に、例えばメモリコントローラ５００からの通知により、キャッシュ１１０のデータが削除されるようにすることで、更新後にキャッシュ１１０に秘匿情報が残ることを防ぐことができる。
【００５９】
以上、実施の形態１について説明した。実施の形態１にかかる半導体装置１０によれば、秘匿情報の読み出しの可否は、認証結果のみではなく、認証結果によらず、読み出しを禁止するための読出制御フラグの値によって、判定される。したがって、認証のみによりアクセスを制御する場合と比べて、秘匿領域に書込まれた情報の秘匿性を向上させることができる。また、上述の通り、半導体装置１０は、秘匿領域２１１への書込みの可否を制御するためのセキュリティ保護フラグを有する。このため、秘匿領域２１１への書込みについてのセキュリティも担保することができる。また、さらに、本実施の形態１にかかる半導体装置１０では、秘匿領域２１１の内容が消去されない限り、フラグ情報の値を、アクセスが許可されるために要求される値へと変更することができない。このため、秘匿領域２１１の秘匿性がさらに向上している。また、本実施の形態によれば、不揮発性メモリが複数のバンクを備えていない場合であっても、秘匿領域に書込まれた情報の秘匿性を担保することができる。なお、上述のように、本実施の形態では、読出制御フラグの値を０に設定可能とするために秘匿領域２１１の消去が必要であるが、秘匿領域２１１の消去によらず、読出制御フラグの値が０に設定されてもよい。
【００６０】
＜実施の形態１の変形例＞
次に、実施の形態１の変形例について説明する。なお、以下では、実施の形態１の変形例について、上述の実施の形態１と異なる点について説明し、同様の構成又は動作については、適宜、説明を省略する。上述の半導体装置１０は、秘匿情報が扱われる利用環境を想定した構成であるが、変形例にかかる半導体装置１０は、秘匿情報が扱われない利用環境での利便性を考慮した構成となっている。不揮発性メモリ２００において秘匿情報が扱われない場合、不揮発性メモリ２００に対する読み出し及び書き込みは自由に行われることが求められる。したがって、このような利用態様の場合、セキュリティ保護フラグの値は１に設定される必要がある。しかしながら、上述の半導体装置１０では、図９で示したように、不揮発性メモリ２００の秘匿領域２１１については、読出しの際に認証コントローラ４００による認証が要求されることとなる。つまり、不揮発性メモリ２００に対する自由な読み出し及び書き込みが実現できない。
【００６１】
よって、本変形例では、メモリコントローラ５００は、図１２に示すように、秘匿領域２１１に対するアクセスの可否を決定する。図１２に示した表は、セキュリティ保護フラグの値が１であり、かつ、読出制御フラグの値が１である場合における読み出しの制御が、図９に示した表と異なっている。すなわち、セキュリティ保護フラグの値が１であり、かつ、読出制御フラグの値が１である場合、変形例にかかるメモリコントローラ５００は、秘匿領域２１１からの情報の読み出しを許可する。したがって、この場合、読み出し処理が行われる際に、認証コントローラ４００による認証処理は必要とされない。つまり、変形例にかかる半導体装置１０にあっては、セキュリティ保護フラグの値を１に設定し、かつ、読出制御フラグの値も１に設定することにより、不揮発性メモリ２００に対する自由な読み出し及び書き込みを実現することが可能となる。
【００６２】
本変形例において、秘匿情報を使用しない半導体装置１０の利用態様の場合、秘匿領域２１１からの自由な読み出しを可能にするために読出制御フラグの値は１である必要がある。なぜならば、図１２に示すように、セキュリティ保護フラグの値が１である場合、読出制御フラグの値が１であれば、読出しの可否の判定のために認証結果が必要とされないからである。これに対し、本変形例において、秘匿情報を使用する半導体装置１０の利用態様の場合、読み出しが行われる際、秘匿領域２１１からの自由な読み出しを禁止するために読出制御フラグの値は０である必要がある。なぜならば、図１２に示すように、セキュリティ保護フラグの値が１である場合に、読出制御フラグの値が０であれば、読出しの可否の判定に認証結果が参照されるためである。したがって、本変形例にかかる半導体装置１０においては、読出制御フラグは、認証コントローラ４００による認証結果をアクセスの可否の判定に用いるためのフラグ情報ということができる。読出制御フラグの値が０である場合、認証コントローラ４００による認証結果が、秘匿領域２１１からの読み出しのためのアクセスの可否の判定に用いられる。これに対し、読出制御フラグの設定値が１である場合、認証コントローラ４００による認証結果が、秘匿領域２１１からの読み出しのためのアクセスの可否の判定に用いられない。
また、図１２に示されるメモリコントローラ５００の制御条件からわかるように、本変形例にかかる半導体装置１０においては、セキュリティ保護フラグは、秘匿領域２１１への書込み及び秘匿領域２１１からの読み出しを禁止するためのフラグ情報ということができる。
【００６３】
ここで、本変形例においても、メモリコントローラ５００は、セキュリティ保護フラグの値が１であり、かつ、読出制御フラグの値が０であり、かつ、認証コントローラ４００によりアクセスの正当性が認証された場合、秘匿領域２１１からの秘匿情報の読み出しを許可する。言い換えると、本変形例において、メモリコントローラ５００は、セキュリティ保護フラグの値が秘匿領域２１１への書込み及び秘匿領域２１１からの読み出しを禁止することを示す値ではなく、かつ、読出制御フラグの値が認証コントローラ４００による認証結果をアクセスの可否の判定に用いることを示す値であり、かつ、認証コントローラ４００によりアクセスの正当性が認証された場合、秘匿領域２１１からの秘匿情報の読み出しを許可する。
【００６４】
したがって、秘匿情報を使用する半導体装置１０の利用態様において、秘匿情報の読み出しの可否は、認証結果のみではなく、セキュリティ保護フラグ及び読出制御フラグの値によって、判定される。したがって、本変形例においても、認証のみによりアクセスを制御する場合と比べて、秘匿領域に書込まれた情報の秘匿性を向上させることができる。
【００６５】
なお、本変形例にかかる半導体装置１０も、実施の形態１にかかる半導体装置１０の説明において示した各フローチャートにしたがって動作する。ただし、実施の形態１では、図１１のステップ４６において、セキュリティ保護フラグの変更と読出制御フラグの変更が同時に行われなくてもよいが、本変形例においては、これらのフラグの変更が同時に行われる。また、実施の形態１と同様、変形例にかかる半導体装置１０においても、秘匿領域２１１のデータの消去が、セキュリティ保護フラグの値を１に設定可能となるための条件である。図１２に示されるように、セキュリティ保護フラグの値が１に変更されると、読出制御フラグの値が１である場合には、秘匿領域２１１に対する自由な読み出しが可能となってしまう。しかし、このように、秘匿領域２１１のデータの消去が事前に行われることで、秘匿情報を使用する半導体装置１０の利用態様において、秘匿情報が不正に読み出されてしまうのが防がれる。
【００６６】
また、本変形例では、秘匿情報を使用する半導体装置１０の利用態様において読出制御フラグの値を１に設定する場合は、同時に、セキュリティ保護フラグの値を０に設定する。これは、セキュリティ保護フラグの値が１のまま、読出制御フラグの値を１に設定した場合、秘匿情報を使用する半導体装置１０の利用態様において、図１２に示されるように、秘匿領域２１１のデータが読出し可能になってしまうためである。上述の通り、半導体装置１０において、読出制御フラグとセキュリティ保護フラグとは、セキュリティデータ設定領域２２１における同一のアドレスに格納されている。したがって、これらのフラグを同時に書き換えることが可能である。
【００６７】
上記判断フローについて、フローチャートにより説明する。図１３は、読出制御フラグの設定変更の判断フローを示すフローチャートである。
ステップ５０（Ｓ５０）において、メモリコントローラ５００は、セキュリティ保護フラグの値が０であるか否かを判定する。セキュリティ保護フラグの値が０である場合、処理はステップ５１へ移行する。これに対し、セキュリティ保護フラグの値が１である場合、処理はステップ５２へ移行する。
ステップ５１（Ｓ５１）において、メモリコントローラ５００は、読出制御フラグの値を１に設定可能であると判定する。
一方、ステップ５２（Ｓ５２）では、メモリコントローラ５００は、読出制御フラグの値を１に設定不可能であると判定する。
【００６８】
以上、実施の形態１の変形例にかかる半導体装置１０について説明した。本変形例においては、秘匿情報の読み出しの可否は、認証結果のみではなく、セキュリティ保護フラグ及び読出制御フラグの値によって判定されため、認証のみによりアクセスを制御する場合と比べて、秘匿情報の秘匿性を向上させることができる。また、実施の形態１の変形例にかかる半導体装置１０も、秘匿領域２１１の内容が消去されない限り、フラグ情報の値を、秘匿情報へのアクセスが許可されるために要求される値へと変更することができない。このため、秘匿領域２１１の秘匿性がさらに向上している。さらに、実施の形態１の変形例にかかる半導体装置１０によれば、秘匿情報を使用しない利用態様である場合に、不揮発性メモリ２００に対する自由な読み出し及び書き込みを実現することが可能となる。
【００６９】
＜実施の形態２＞
次に、実施の形態２について説明する。実施の形態１にかかる半導体装置１０の不揮発性メモリ２００は、１つのバンクから構成されていた。これに対し、実施の形態２にかかる半導体装置の不揮発性メモリは、２つのバンクから構成される点で異なる。また、これに伴い、実施の形態２にかかる半導体装置の不揮発性メモリは、設定情報記憶領域２２０に後述するバンク情報設定領域が追加された点で、実施の形態１にかかる不揮発性メモリ２００と異なる。
【００７０】
不揮発性メモリが２バンク構成となっている場合、更新の前にＲＡＭ６００などの別メモリにＲＯＭプログラムをコピーしておく必要がないという利点がある。また、不揮発性メモリが１バンク構成である場合、更新処理が行われている際に、電源瞬断などの要因によりＲＯＭプログラムが破壊されことがある。この場合、システムの起動が行えなくなる恐れがある。これに対し、不揮発性メモリが２バンク構成となっている場合、２つのバンクのうち、予約領域となっているバンクの方に、更新プログラムを書込むことができる。このため、電源瞬断などが発生した場合であっても、システムの起動に影響を与えないという利点もある。
なお、以下では、実施の形態２について、上述の実施の形態１と異なる点について説明し、同様の構成又は動作については、適宜、説明を省略する。
【００７１】
図１４は、実施の形態２にかかる半導体装置２０のハードウェア構成を示す模式図である。半導体装置２０では、図１４に示されるように、実施の形態１にかかる不揮発性メモリ２００が不揮発性メモリ７００に置き換わっている。
【００７２】
図１５は、本実施の形態にかかる不揮発性メモリ７００のバンク構成の一例を示す模式図である。本実施の形態において、不揮発性メモリ７００は、２つのバンクから構成されており、メモリバンクとして、ｂａｎｋ０及びｂａｎｋ１を備えている。一方のバンクが、フラッシュメモリマクロ２５０Ａにより物理的に実現されており、他方のバンクが、フラッシュメモリマクロ２５０Ｂにより物理的に実現されている。ここで、本実施の形態では、ｂａｎｋ０が、起動プログラムの格納される領域であり、ｂａｎｋ１が、更新プログラムが書きこまれる領域である。すなわち、ｂａｎｋ１が予約領域である。
【００７３】
このように、不揮発性メモリ７００を構成するフラッシュメモリマクロがフラッシュメモリマクロ２５０Ａとフラッシュメモリマクロ２５０Ｂとに分かれていることで、プログラムを更新する際にｂａｎｋ１側に新しいプログラムを書込むことができる。したがって、仮にｂａｎｋ１に対する更新処理が行われている際に電源瞬断などでマイクロコンピュータがリセットされても、ｂａｎｋ０に格納されたプログラムによりシステムの再起動が可能である。
【００７４】
なお、図１５では、ｂａｎｋ０がフラッシュメモリマクロ２５０Ａにより物理的に実現され、ｂａｎｋ１がフラッシュメモリマクロ２５０Ｂにより物理的に実現されている状態を図示している。しかしながら、後述するバンクの切替が行われると、ｂａｎｋ０がフラッシュメモリマクロ２５０Ｂにより物理的に実現され、ｂａｎｋ１がフラッシュメモリマクロ２５０Ａにより物理的に実現されている状態となる。いずれの状態であっても、ＣＰＵ１００は、ｂａｎｋ０を起動プログラムが格納された領域と認識し、ｂａｎｋ１を予約領域と認識する。
【００７５】
また、本実施の形態にかかる半導体装置２０においては、不揮発性メモリ７００は、上述の２バンク構成から図６に示したような１バンク構成へと切り替えることが可能である。また、逆に、不揮発性メモリ７００は、１バンク構成から２バンク構成へと切り替えることが可能である。
【００７６】
不揮発性メモリ７００は、不揮発性メモリ２００と同様、ＣＰＵ１００により実行されるプログラムなどの各種情報を格納する。本実施の形態では、不揮発性メモリ７００は、具体的にはフラッシュメモリであるが、他の不揮発性メモリであってもよい。
【００７７】
図１４に示したように、不揮発性メモリ７００は、プログラムを格納する領域であるプログラム格納領域７１０と、設定情報記憶領域７２０とを有している。プログラム格納領域７１０は、ｂａｎｋ０に属する領域と、ｂａｎｋ１に属する領域とに分かれており、いずれの領域も秘匿領域を備えている。すなわちプログラム格納領域７１０は、ｂａｎｋ０に属する秘匿領域７１１＿０と、ｂａｎｋ１に属する秘匿領域７１１＿１とを備えている。
【００７８】
設定情報記憶領域７２０は、図１６に示されるように、セキュリティデータ設定領域７２１と、認証情報期待値設定領域２２２と、バンク情報設定領域７２３を備えている。セキュリティデータ設定領域７２１は、実施の形態１にかかるセキュリティデータ設定領域２２１と同様である。ただし、セキュリティデータ設定領域７２１は、図１７に示されるように、セキュリティ保護フラグについては、ｂａｎｋ０用のセキュリティ保護フラグとｂａｎｋ１用のセキュリティ保護フラグとを格納している。具体的には、本実施の形態では、セキュリティデータ設定領域７２１の同一のアドレスに、読出制御フラグの設置値と、ｂａｎｋ０用のセキュリティ保護フラグの設定値と、ｂａｎｋ１用のセキュリティ保護フラグの設定値とが格納される。なお、各フラグの設定値は、セキュリティデータ設定領域７２１の異なるアドレスにそれぞれ格納されてもよい。
【００７９】
図１８は、バンク情報設定領域７２３の構成の一例を示す模式図である。図１８に示されるように、バンク情報設定領域７２３には、バンク構成設定フラグの設定値と、有効バンク設定フラグの設定値とが格納される。
【００８０】
バンク構成設定フラグは、ＣＰＵが認識するバンク構成を切替えるためのフラグである。すなわち、バンク構成設定フラグは、不揮発性メモリ７００のバンク構成を１バンク構成とするか、２バンク構成とするかを設定するためのフラグである。バンク構成設定フラグの設定値が１である場合、不揮発性メモリ７００のバンク構成は、１バンク構成に設定される。また、バンク構成設定フラグの設定値が０である場合、不揮発性メモリ７００のバンク構成は、２バンク構成に設定される。
【００８１】
有効バンク設定フラグは、起動プログラムが格納される領域を、いずれのフラッシュメモリマクロにより実現するかを設定するためのフラグである。言い換えると、複数のバンクのうち有効なバンクを指定するフラグである。有効バンク設定フラグの設定値が１である場合、フラッシュメモリマクロ２５０Ａにより実現されるバンクが、起動プログラムが格納される領域となる。すなわち、有効バンク設定フラグの設定値が１である場合、ｂａｎｋ０は、フラッシュメモリマクロ２５０Ａにより実現される。したがって、有効バンク設定フラグの設定値が１である場合、ｂａｎｋ１は、フラッシュメモリマクロ２５０Ｂにより実現される。また、有効バンク設定フラグの設定値が０である場合、フラッシュメモリマクロ２５０Ｂにより実現されるバンクが、起動プログラムが格納される領域となる。すなわち、有効バンク設定フラグの設定値が０である場合、ｂａｎｋ０は、フラッシュメモリマクロ２５０Ｂにより実現される。したがって、有効バンク設定フラグの設定値が０である場合、ｂａｎｋ１は、フラッシュメモリマクロ２５０Ａにより実現される。なお、以下の説明において、有効バンク設定フラグの変更によるこのようなバンクの切替を有効バンクの切替と称する。
【００８２】
なお、一般的に、バンク構成の変更は頻繁に行われることはないため、バンク構成設定フラグは頻繁に変更されることはない。これに対し、秘匿領域のデータの更新頻度は、バンク構成の変更頻度に比べて高い。したがって、有効バンク設定フラグの変更頻度は、バンク構成設定フラグの変更頻度よりも高い。このため、図１８に示すように、バンク構成設定フラグは、有効バンク設定フラグとは異なるアドレスに格納されている方が安全である。バンク構成設定フラグと有効バンク設定フラグとが同一アドレスに格納されている場合、有効バンク設定フラグの変更すべきところを、誤ってバンク構成設定フラグを変更してしまうといった誤設定が発生することが考えられる。しかし、各フラグを異なるアドレスに格納することにより、このような誤設定の発生が抑制される。
【００８３】
次に、本実施の形態にかかるメモリコントローラ５００によるアクセス可否の判定について説明する。図１９は、本実施の形態にかかるメモリコントローラ５００によるアクセス可否の判定条件について示す表である。図１９に示すように、メモリコントローラ５００は、次のように秘匿領域７１１＿０、７１１＿１に対するアクセスの可否を決定する。なお、本実施の形態では、更新プログラムの書き込みはｂａｎｋ１に対して行われる。したがって、秘匿情報を使用する半導体装置２０の利用態様の場合、ｂａｎｋ０用のセキュリティ保護フラグの値を１に設定する必要がない。このため、例えば、一旦、ｂａｎｋ０用のセキュリティ保護フラグの値を０に設定すると、１への変更ができないように制御が行われる。すなわち、一旦設定が行われると、設定をクリアできないようｂａｎｋ０用のセキュリティ保護フラグは構成されている。ただし、そのような構成に限らず、ｂａｎｋ１用のセキュリティ保護フラグと同様に、ｂａｎｋ０用のセキュリティ保護フラグが、設定値を１に変更可能に構成されていてもよい。ただし、この場合、秘匿領域７１１＿０の消去が行われた後でないと、設定値を１に変更できないようにすることが好ましい。
【００８４】
本実施の形態にかかるメモリコントローラ５００は、ｂａｎｋ０用のセキュリティ保護フラグの値が１である場合、秘匿情報を使用しない半導体装置２０の利用態様と判断し、ｂａｎｋ０に属する秘匿領域７１１＿０に対するアクセス、及びｂａｎｋ１に属する秘匿領域７１１＿１に対するアクセスに対して何ら制限を設けない。すなわち、この場合、メモリコントローラ５００は、秘匿領域７１１＿０に対する書き込み及び読み取り、並びに秘匿領域７１１＿１に対する書き込み及び読み取りについて、無条件で許可する。これに対し、本実施の形態にかかるメモリコントローラ５００は、ｂａｎｋ０用のセキュリティ保護フラグの値が０である場合、秘匿情報を使用する半導体装置２０の利用態様と判断し、以下のようにアクセスを判定する。
【００８５】
以下、図１９を参照して、本実施の形態にかかるメモリコントローラ５００によるアクセス可否の判定の詳細について説明する。ｂａｎｋ０用のセキュリティ保護フラグの値が０である場合、メモリコントローラ５００は、ｂａｎｋ０に属する秘匿領域７１１＿０への情報の書込みを禁止すると共に、秘匿領域７１１＿０からの秘匿情報の読み出しを禁止する。したがって、本実施の形態においては、秘匿領域７１１＿０に対する書き込み及び読み出しは行うことができない。
【００８６】
次に、ｂａｎｋ１に属する秘匿領域７１１＿１に対する書き込み及び読み出しの制御について説明する。ｂａｎｋ１に属する秘匿領域７１１＿１に対する書き込み及び読み出しの制御は、実施の形態１における制御と同様である。具体的には以下のように制御が行われる。
【００８７】
ｂａｎｋ１用のセキュリティ保護フラグの値が０の場合、メモリコントローラ５００は、秘匿領域７１１＿１への情報の書込みを禁止すると共に、秘匿領域７１１＿１からの秘匿情報の読み出しを禁止する。したがって、ｂａｎｋ１用のセキュリティ保護フラグの値が０の場合、秘匿領域７１１＿１に対する書き込み及び読み出しは行うことができない。
【００８８】
ｂａｎｋ１用のセキュリティ保護フラグの値が１である場合、メモリコントローラ５００は、ｂａｎｋ１に属する秘匿領域７１１＿１への情報の書込みを許可する。つまり、ｂａｎｋ１用のセキュリティ保護フラグの値が１の場合、読出制御フラグの設定値によらず、秘匿領域７１１＿１への書込みが許可されることとなる。また、ｂａｎｋ１用のセキュリティ保護フラグの値が１の場合、認証コントローラ４００による認証の結果によらず、秘匿領域７１１＿１への書込みが許可されることとなる。
【００８９】
ｂａｎｋ１用のセキュリティ保護フラグの値が１であり、かつ、読出制御フラグの値が１である場合、メモリコントローラ５００は、認証コントローラ４００による認証結果によらず、秘匿領域７１１＿１における秘匿情報の読み出しを禁止する。
ｂａｎｋ１用のセキュリティ保護フラグの値が１であり、かつ、読出制御フラグの値が０である場合、メモリコントローラ５００は、認証コントローラ４００による認証の結果によって、秘匿領域７１１＿１からの秘匿情報の読み出しの可否を決定する。したがって、この場合、メモリコントローラ５００は、認証が成功すると、すなわち、認証コントローラ４００から認証結果信号として１を受信すると、秘匿領域７１１＿１からの秘匿情報の読み出しを許可する。これに対し、メモリコントローラ５００は、認証が失敗すると、すなわち、認証コントローラ４００から認証結果信号として０を受信すると、秘匿領域７１１＿１からの秘匿情報の読み出しを禁止する。
【００９０】
次に、半導体装置２０における、秘匿領域のデータの更新動作について説明する。本実施の形態では、ｂａｎｋ１に属する秘匿領域７１１＿１に新たな秘匿情報を書きこんだ上で、有効バンクの切替が行われることで、秘匿領域の更新が行われる。図２０は、実施の形態２にかかる秘匿領域のデータの更新動作の一例を示すフローチャートである。なお、図２０において、フローチャートのステップの横には、当該ステップが実行された際の秘匿領域７１１＿０及び７１１＿１に対するアクセス可否の状態が示されている。以下、図２０に沿って、秘匿領域のデータの更新動作について説明する。
【００９１】
なお、更新動作が行われる前のフラグ情報の設定値は、次のようになっている。すなわち、ｂａｎｋ０用のセキュリティ保護フラグの値及びｂａｎｋ１用のセキュリティ保護フラグの値が０であり、読出制御フラグの値が１となっている。したがって、この状態では、秘匿領域７１１＿１への書込み及び秘匿領域７１１＿１からの読み出しは禁止される。なお、上述の通り、秘匿領域７１１＿０に対する書き込み及び読み出しは、更新動作の際、禁止されたままである。
【００９２】
ステップ６０（Ｓ６０）において、上述のステップ４０と同様、秘匿領域７１１＿１のデータの消去が行われる。これにより、メモリコントローラ５００は、秘匿領域７１１＿１の消去を検知し、セキュリティ保護フラグの値を１に設定可能であると判定すると共に、読出制御フラグの値を０に設定可能であると判定する。なお、ここでは、一例として、読出制御フラグの値を０に設定可能とするために秘匿領域７１１＿１の消去が必要である構成を示したが、秘匿領域７１１＿１の消去によらず、読出制御フラグの値が０に設定されてもよい。
【００９３】
ステップ６１（Ｓ６１）及びステップ６２（Ｓ６２）において、上述のステップ４１、４２と同様、フラグ情報の設定値が変更される。具体的には、ステップ６１において、メモリコントローラ５００は、ｂａｎｋ１用のセキュリティ保護フラグの値を１に設定する。これにより、秘匿領域７１１＿１への書込みが禁止された状態から許可された状態へと変わる。すなわち、メモリコントローラ５００は、秘匿領域７１１＿１に対する書き込み要求を許可する。ステップ６２において、メモリコントローラ５００は、読出制御フラグの値を０に設定する。なお、読出制御フラグの値が０に変更されても、秘匿領域７１１＿１からの読み出し禁止された状態は継続している。
【００９４】
ステップ６３（Ｓ６３）において、上述のステップ４３と同様、認証コントローラ４００による認証が行われる。認証が成功すると、メモリコントローラ５００は、秘匿領域７１１＿１からの読み出しを許可する。なお、図２０で示したフローチャートでは、認証が成功する場合を例に示しているが、認証に失敗した場合には、読み出しが禁止された状態が継続することとなる。
【００９５】
ステップ６４（Ｓ６４）において、上述のステップ４４と同様、秘匿領域７１１＿１に新たなデータが書き込まれる。
ステップ６５（Ｓ６５）において、上述のステップ４５と同様、秘匿領域７１１＿１に書込まれた新しいデータが読み出され、書き込まれた内容の確認が行われる。
【００９６】
ステップ６６（Ｓ６６）において、上述のステップ４６と同様、メモリコントローラ５００は、ステップ６５における確認が完了したことの通知を受信し、フラグ情報を変更する。具体的には、メモリコントローラ５００は、ｂａｎｋ１用のセキュリティ保護フラグの値を０に設定すると共に、読出制御フラグの値を１に設定する。これにより、以降、メモリコントローラ５００は、秘匿領域７１１＿１に対する書き込み及び読み出しを禁止することとなる。
【００９７】
ステップ６７（Ｓ６７）において、メモリコントローラ５００は、新しいデータが書き込まれたバンクが起動側のバンクとなるよう有効バンク設定フラグを切り替える。すなわち、メモリコントローラ５００は、新しいデータが書き込まれたバンクが、起動プログラムが格納される領域のバンクとなるよう、有効バンク設定フラグを切り替える。このように、メモリコントローラ５００は、現在有効ではないバンクの秘匿領域に新たな秘匿情報が書き込まれた場合に、該バンクを有効なバンクとするよう有効バンク設定フラグを変更する。
【００９８】
図２０に示す更新動作のフローの開始時点において、ｂａｎｋ０がフラッシュメモリマクロ２５０Ａにより実現されていた場合、つまり、有効バンク設定フラグの値が１であった場合、ステップ６７において、メモリコントローラ５００は、ｂａｎｋ０がフラッシュメモリマクロ２５０Ｂにより実現されるよう、有効バンク設定フラグを切り替える。つまり、この場合、メモリコントローラ５００は、ステップ６７において、有効バンク設定フラグの値を、１から０へと変更する。
【００９９】
また、図２０に示す更新動作のフローの開始時点において、ｂａｎｋ０がフラッシュメモリマクロ２５０Ｂにより実現されていた場合、つまり、有効バンク設定フラグの値が０であった場合、ステップ６７において、メモリコントローラ５００は、ｂａｎｋ０がフラッシュメモリマクロ２５０Ａにより実現されるよう、有効バンク設定フラグを切り替える。つまり、この場合、メモリコントローラ５００は、ステップ６７において、有効バンク設定フラグの値を、０から１へと変更する。
【０１００】
ステップ６８（Ｓ６８）において、上述のステップ４７と同様、システムのリセット（再起動）が行われる。これにより、更新後のプログラムによりシステムが起動することとなる。その際、ステップ６７での設定に従って、システムは起動する。
【０１０１】
以上、秘匿領域のデータの更新動作について説明した。上述の通り、更新動作のフローの開始時点において、有効バンク設定フラグの値が０である場合も、１である場合も、図２０に示す更新動作のフローにしたがって更新を実現することができる。したがって、フローを実現するために必要とされるプログラムを、更新時の有効バンク設定フラグの値によらず、共通化することができる。
【０１０２】
ところで、２バンク構成の不揮発性メモリ７００において、プログラム格納領域７１０の秘匿領域以外の部分の更新を行う場合、ｂａｎｋ０の秘匿領域７１１＿０の内容をｂａｎｋ１の秘匿領域７１１＿１にコピーしつつ、新たなデータを予約領域であるｂａｎｋ１に書き込む必要がある。本実施の形態では、２バンク構成の不揮発性メモリ７００において、プログラム格納領域７１０の秘匿領域以外の部分を更新する場合であっても、秘匿領域にアクセスするための認証情報を知らない限り、秘匿領域のデータを読み出して予約領域にコピーすることができない。このため、例えば、秘匿領域以外の領域の更新者が、秘匿領域の更新者とは異なる場合、秘匿領域以外の領域の更新者は、秘匿領域７１１＿０の内容を秘匿領域７１１＿１にコピーできないため、問題となる。このような問題は、秘匿領域を更新する際に、秘匿領域７１１＿０と秘匿領域７１１＿１の両方に、新たなデータが置かれることで回避できる。つまり、秘匿領域について更新する場合、図２０に示す更新動作のフローが２回行われるようにすればよい。例えば、更新開始前の有効バンク設定フラグの値が１である場合、１回目の更新動作のフローにより、フラッシュメモリマクロ２５０Ｂにより実現されるｂａｎｋ１の秘匿領域７１１＿１に新たなデータを格納後、２回目の更新動作のフローにより、フラッシュメモリマクロ２５０Ａにより実現されるｂａｎｋ１の秘匿領域７１１＿１に新たなデータを格納すればよい。また、更新開始前の有効バンク設定フラグの値が０である場合、１回目の更新動作のフローにより、フラッシュメモリマクロ２５０Ａにより実現されるｂａｎｋ１の秘匿領域７１１＿１に新たなデータを格納後、２回目の更新動作のフローにより、フラッシュメモリマクロ２５０Ｂにより実現されるｂａｎｋ１の秘匿領域７１１＿１に新たなデータを格納すればよい。このようにすることで、秘匿領域以外の領域の更新者は、秘匿領域以外の領域の更新の際、ｂａｎｋ０の秘匿領域７１１＿０の内容をｂａｎｋ１にコピーする必要がなくなる。
【０１０３】
次に、有効バンクの切替について補足説明する。図２１は、有効バンク設定フラグの切替判断フローを示すフローチャートである。以下、図２１に沿って、有効バンク設定フラグの切替判断フローについて説明する。
【０１０４】
ステップ７０（Ｓ７０）において、メモリコントローラ５００は、ｂａｎｋ０用及びｂａｎｋ１用のセキュリティ保護フラグの値が、いずれも０であるかを判定する。ｂａｎｋ０用及びｂａｎｋ１用のセキュリティ保護フラグの値がいずれも０である場合、処理はステップ７１へ移行する。これに対し、ｂａｎｋ０用及びｂａｎｋ１用のセキュリティ保護フラグの値のうち少なくとも一方の値が１である場合、処理はステップ７２へ移行する。
ステップ７１（Ｓ７１）において、メモリコントローラ５００は、有効バンク設定フラグの値を切り替えることが可能であると判定する。
一方、ステップ７２（Ｓ７２）では、メモリコントローラ５００は、有効バンク設定フラグの値を切り替えることが不可能であると判定する。
【０１０５】
一方のバンクの秘匿領域だけが保護されている場合に有効バンクの切替が行われてしまうことで、保護されていない他方のバンクの秘匿領域にあったデータが読出し可能になってしまう。このため、図２１に示したように、ｂａｎｋ０用のセキュリティ保護フラグの値が０であり、かつ、ｂａｎｋ１用のセキュリティ保護フラグの値も０である場合に、有効バンク設定フラグの切替を許可することにより、これを防いでいる。
【０１０６】
最後に、不揮発性メモリ７００におけるバンク構成の切替について説明する。図２２は、バンク構成の切替について示す模式図である。図２２に示されるように、バンク構成設定フラグを切り替えることにより、不揮発性メモリ７００は、１バンク構成から２バンク構成への切替、及び２バンク構成から１バンク構成への切替が可能である。なお、図２２で示した例では、プログラム格納領域７１０がフラッシュメモリマクロ２５０Ａ及びフラッシュメモリマクロ２５０Ｂにより実現され、設定情報記憶領域７２０がフラッシュメモリマクロ２５０Ｃにより実現されている。
【０１０７】
図２３は、バンク構成の切替判断フローを示すフローチャートである。以下、図２３に沿って、バンク構成の切替判断フローについて説明する。
ステップ８０（Ｓ８０）において、メモリコントローラ５００は、ｂａｎｋ０用及びｂａｎｋ１用のセキュリティ保護フラグの値が、いずれも１であるかを判定する。ｂａｎｋ０用及びｂａｎｋ１用のセキュリティ保護フラグの値がいずれも１である場合、処理はステップ８１へ移行する。これに対し、ｂａｎｋ０用及びｂａｎｋ１用のセキュリティ保護フラグの値のうち少なくとも一方の値が０である場合、処理はステップ８２へ移行する。
ステップ８１（Ｓ８１）において、メモリコントローラ５００は、バンク構成設定フラグの値を切り替えることが可能であると判定する。
一方、ステップ８２（Ｓ８２）では、メモリコントローラ５００は、バンク構成設定フラグの値を切り替えることが不可能であると判定する。
【０１０８】
２バンク構成において、ｂａｎｋ１用のセキュリティ保護フラグの値が０である場合（つまり、ｂａｎｋ１の秘匿領域７１１＿１に秘匿性が高いプログラムが格納された状態の場合）に、２バンク構成から１バンク構成へと切替わることで、ｂａｎｋ１の秘匿領域７１１＿１に存在するデータが読出し可能になってしまう。また、２バンク構成の際にｂａｎｋ１の秘匿領域７１１＿１となる領域に、秘匿性の高くないプログラムが１バンク構成時に格納されていた場合に、ｂａｎｋ１用のセキュリティ保護フラグの値が０に設定されていた状態で１バンク構成から２バンク構成へと切り替わることで、当該領域が書込み不可かつデータ読出し不可になってしまう。このため、ｂａｎｋ０用のセキュリティ保護フラグの値が１であり、かつ、ｂａｎｋ１用のセキュリティ保護フラグの値も１である場合に、バンク構成設定フラグの切替を許可することにより、これらの問題の発生を防いでいる。
【０１０９】
以上、実施の形態２について説明した。本実施の形態によれば、実施の形態１と同様、秘匿領域におけるセキュリティを向上させることができる。また、不揮発性メモリ７００が２バンク構成となっているため、更新の前にＲＡＭ６００などの別メモリにＲＯＭプログラムをコピーしておく必要がないという利点がある。また、２つのバンクのうち、予約領域となっているバンクの方に、更新プログラムが書き込まれるため、電源瞬断などによりシステムリセットが発生した場合であっても、システムの起動に影響を与えない。
【０１１０】
＜実施の形態２の変形例＞
次に、実施の形態２の変形例について説明する。実施の形態２に対し、実施の形態１の変形例と同様の変形を行うことができる。すなわち、本変形例では、メモリコントローラ５００は、図２４に示すようにアクセス可否の判定を行う。本変形例は、実施の形態２に対し、実施の形態１の変形例と同様の変形を行っただけであるため、その詳細な説明は割愛する。
【０１１１】
なお、秘匿情報を使用しない半導体装置２０の利用態様の場合、ｂａｎｋ０用のセキュリティ保護フラグの値及びｂａｎｋ１用のセキュリティ保護フラグの値は共に１に設定されるが、この場合においてもバンクの切替が実現できるよう、本変形例では、図２１に示した有効バンク設定フラグの切替判断フローに代えて、図２５に示す有効バンク設定フラグの切替判断フローが用いられる。すなわち、図２１に示したフローチャートのステップ７０がステップ７５（Ｓ７５）に置き換わる。ステップ７５では、メモリコントローラ５００は、ｂａｎｋ０用及びｂａｎｋ１用のセキュリティ保護フラグの値が、いずれも１であるか、又はいずれも０であるかを判定する。そして、ｂａｎｋ０用及びｂａｎｋ１用のセキュリティ保護フラグの値がいずれも１である場合、又は、ｂａｎｋ０用及びｂａｎｋ１用のセキュリティ保護フラグの値がいずれも０である場合、処理はステップ７１へ移行する。また、ｂａｎｋ０用のセキュリティ保護フラグの値と、ｂａｎｋ１用のセキュリティ保護フラグの値とが異なる場合、処理はステップ７２へ移行する。
【０１１２】
＜実施の形態３＞
次に、実施の形態３について説明する。本実施の形態では、秘匿領域のデータ消去についても、認証機能で保護する点で上述の実施の形態と異なる。以下の説明では、実施の形態２と異なる点について具体的に説明し、実施の形態２と同様の構成及び動作については適宜説明を省略する。
【０１１３】
本実施の形態にかかるメモリコントローラ５００は、フラグ情報の値が所定の値であり、かつ、認証コントローラ４００によりアクセスの正当性が認証された場合、秘匿領域の消去を許可する。具体的には、例えば、以下のようにメモリコントローラ５００は、秘匿領域の消去の可否を決定する。図２６は、実施の形態３にかかるメモリコントローラ５００によるアクセス可否の判定条件について示す表である。なお、本実施の形態では、メモリコントローラ５００が秘匿領域の消去の可否を判定する点において、他の実施の形態と異なるだけであるため、以下では、秘匿領域の消去の可否に関するメモリコントローラ５００の判定について説明する。
【０１１４】
図２６に示すように、本実施の形態にかかるメモリコントローラ５００は、ｂａｎｋ０の秘匿領域７１１＿０に対しては、消去を禁止する。また、本実施の形態にかかるメモリコントローラ５００は、セキュリティ保護フラグの値によらず、読出制御フラグの値が１である場合には、ｂａｎｋ１の秘匿領域７１１＿１に対する消去を禁止する。これに対し、本実施の形態にかかるメモリコントローラ５００は、ｂａｎｋ１用のセキュリティ保護フラグの値が１であり、かつ、読出制御フラグの値が０である場合、認証コントローラ４００による認証の結果によって、秘匿領域７１１＿１に対する消去の可否を決定する。また、本実施の形態にかかるメモリコントローラ５００は、ｂａｎｋ１用のセキュリティ保護フラグの値が０であり、かつ、読出制御フラグの値が０である場合、認証コントローラ４００による認証の結果によって、秘匿領域７１１＿１に対する消去の可否を決定する。
【０１１５】
次に、本実施の形態にかかる半導体装置２０における、秘匿領域のデータの更新動作について説明する。図２７は、実施の形態３にかかる秘匿領域のデータの更新動作の一例を示すフローチャートである。なお、図２７において、フローチャートのステップの横には、当該ステップが実行された際の秘匿領域７１１＿０及び７１１＿１に対するアクセス可否の状態が示されている。以下、図２７に沿って、秘匿領域のデータの更新動作について説明する。
【０１１６】
なお、更新動作が行われる前のフラグ情報の設定値は、次のようになっている。すなわち、ｂａｎｋ０用のセキュリティ保護フラグの値及びｂａｎｋ１用のセキュリティ保護フラグの値が０であり、読出制御フラグの値が１となっている。したがって、この状態では、秘匿領域７１１＿１に対する消去、書込み、及び読み出しは禁止される。なお、秘匿領域７１１＿０に対する消去、書き込み、及び読み出しは、更新動作の際、禁止されたままである。
【０１１７】
ステップ１００（Ｓ１００）において、図２０に示したステップ６２と同様、メモリコントローラ５００は、読出制御フラグの値を０に設定する。なお、読出制御フラグの値が０に変更されても、秘匿領域７１１＿１に対する消去、書込み、及び読み出しが禁止された状態は継続している。
【０１１８】
ステップ１０１（Ｓ１０１）において、図２０に示したステップ６３と同様、認証コントローラ４００による認証が行われる。認証が成功すると、メモリコントローラ５００は、秘匿領域７１１＿１に対する消去を許可する。なお、図２７で示したフローチャートでは、認証が成功する場合を例に示しているが、認証に失敗した場合には、消去が禁止された状態が継続することとなる。
【０１１９】
ステップ１０２（Ｓ１０２）において、図２０に示したステップ６０と同様、秘匿領域７１１＿１のデータの消去が行われる。これにより、メモリコントローラ５００は、秘匿領域７１１＿１の消去を検知し、セキュリティ保護フラグの値を１に設定可能であると判定すると共に、読出制御フラグの値を０に設定可能であると判定する。
【０１２０】
ステップ１０３（Ｓ１０３）において、図２０に示したステップ６１と同様、メモリコントローラ５００は、ｂａｎｋ１用のセキュリティ保護フラグの値を１に設定する。これにより、秘匿領域７１１＿１に対する書込み及び読み出しが許可される。
以降、図２０に示したステップ６４以降の処理が行われる。
【０１２１】
本実施の形態によれば、秘匿領域のデータ消去による改ざんも防止することができる。なお、本実施の形態の一例として、秘匿領域のデータ消去に認証を用いる構成を、実施の形態２にかかる半導体装置２０に適用した例を示したが、当該構成は、実施の形態１にかかる半導体装置に適用してもよいし、上述の各変形例にかかる半導体装置に適用してもよい。
【０１２２】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。例えば、フラグの値として０と１を例にあげたが、これらは一例であり、各フラグは、取りうる値として２つの値（例えば、第１の値と第２の値）を有していればよい。したがって、フラグの値が１ビットでなくてもよい。また、実施の形態２では、不揮発性メモリが２バンク構成である場合について示したが、不揮発性メモリは３つ以上の複数のバンクから構成されてもよい。この場合、例えば、複数のバンクのうちいずれか一つが、起動プログラムの格納される領域であり、他の少なくとも一つが、予約領域となる。
【符号の説明】
【０１２３】
１、１０    半導体装置
２、２００、７００    不揮発性メモリ
３    フラグ情報記憶部
４、４００    認証コントローラ
５、５００    メモリコントローラ
６、２１１、７１１＿０、７１１＿１    秘匿領域
１１０    キャッシュ
２１０、７１０    プログラム格納領域
２２０、７２０    設定情報記憶領域
２２１、７２１    セキュリティデータ設定領域
２２２    認証情報期待値設定領域
２５０Ａ、２５０Ｂ、２５０Ｃ    フラッシュメモリマクロ
３００    周辺バス
７２３    バンク情報設定領域
【図１】
0006742831.tif 000002
【図２】
0006742831.tif 000003
【図３】
0006742831.tif 000004
【図４】
0006742831.tif 000005
【図５】
0006742831.tif 000006
【図６】
0006742831.tif 000007
【図７】
0006742831.tif 000008
【図８】
0006742831.tif 000009
【図９】
0006742831.tif 000010
【図１０】
0006742831.tif 000011
【図１１】
0006742831.tif 000012
【図１２】
0006742831.tif 000013
【図１３】
0006742831.tif 000014
【図１４】
0006742831.tif 000015
【図１５】
0006742831.tif 000016
【図１６】
0006742831.tif 000017
【図１７】
0006742831.tif 000018
【図１８】
0006742831.tif 000019
【図１９】
0006742831.tif 000020
【図２０】
0006742831.tif 000021
【図２１】
0006742831.tif 000022
【図２２】
0006742831.tif 000023
【図２３】
0006742831.tif 000024
【図２４】
0006742831.tif 000025
【図２５】
0006742831.tif 000026
【図２６】
0006742831.tif 000027
【図２７】
0006742831.tif 000028