【課題】認証のみによりアクセスを制御する場合と比べて、秘匿領域に書込まれた情報の秘匿性を向上させることができる情報処理装置、読み出し制御方法、及びプログラムを提供する。
【解決手段】情報処理装置は、秘匿情報が格納される秘匿領域6を有する不揮発性メモリ2と、不揮発性メモリ2に対するアクセスについて認証する認証コントローラ4と、フラグ情報を記憶するフラグ情報記憶部3と、フラグ情報記憶部3に記憶されたフラグ情報を用いて、不揮発性メモリ2へのアクセスを制御するメモリコントローラ5とを有する。メモリコントローラ5は、フラグ情報の値が所定の値であり、かつ、認証コントローラ4によりアクセスの正当性が認証された場合、秘匿領域6からの秘匿情報の読み出しを許可する。
前記メモリコントローラは、さらに、前記フラグ情報の値が所定の値であり、かつ、前記認証コントローラによりアクセスの正当性が認証された場合、前記秘匿領域の消去を許可する
請求項2に記載の情報処理装置。
【発明を実施するための形態】
【0010】
説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【0011】
<実施の形態の概要>
実施の形態の詳細を説明する前に、まず、概要について説明する。
図1は、実施の形態の概要に係る情報処理装置の一例である半導体装置1の構成例を示すブロック図である。
図1に示されるように、半導体装置1は、不揮発性メモリ2と、フラグ情報記憶部3と、認証コントローラ4と、メモリコントローラ5とを有している。
【0012】
不揮発性メモリ2は、秘匿領域6を有している。秘匿領域6は、秘匿情報が格納される領域である。なお、秘匿情報とは、秘匿性を有する情報である。なお、不揮発性メモリ2は、秘匿領域6に限らず、秘匿情報以外の情報を記憶する領域を有していてもよい。
【0013】
フラグ情報記憶部3は、不揮発性メモリ2へのアクセスの可否を判定するために用いられるフラグ情報を記憶する。なお、
図1に示した構成例では、フラグ情報記憶部3は、不揮発性メモリ2とは別の記憶装置として図示されているが、これに限られない。フラグ情報記憶部3は、不揮発性メモリ2により実現されてもよいし、不揮発性メモリ2とは別の不揮発性メモリにより実現されてもよいし、他の記憶装置により実現されてもよい。
【0014】
フラグ情報記憶部3が、不揮発性メモリ2により実現される場合、不揮発性メモリ2は、フラグ情報を記憶する領域(後述する設定情報記憶領域220)をさらに有する。つまり、フラグ情報記憶部3が不揮発性メモリ2であり、かつ、フラグ情報が不揮発性メモリ2の秘匿領域6以外の領域に記憶されていてもよい。この場合、フラグ情報記憶部を別途用意する必要がなく、構成を簡易化することができる。
【0015】
認証コントローラ4は、不揮発性メモリ2に対するアクセスについて認証する。例えば、認証コントローラ4は、認証コントローラ4に入力された認証情報が、所定の条件を満たすか否か判定することにより認証を行う。認証コントローラ4は、認証結果をメモリコントローラ5に出力する。
【0016】
メモリコントローラ5は、フラグ情報記憶部3に記憶されたフラグ情報を用いて、不揮発性メモリ2へのアクセスを制御する。具体的には、メモリコントローラ5は、フラグ情報の値が所定の値であり、かつ、認証コントローラ4によりアクセスの正当性が認証された場合、秘匿領域6からの秘匿情報の読み出しを許可する。
【0017】
半導体装置1によれば、メモリコントローラ5は、認証コントローラ4による認証結果のみならず、フラグ情報の値に応じて、読み出しの可否を決定する。したがって、フラグ情報の値が上記所定の値以外の値に設定されている場合には、メモリコントローラ5は、認証コントローラ4の認証結果によらず秘匿情報の読み出しを許可しない。このため、半導体装置1によれば、認証のみによりアクセスを制御する場合と比べて、秘匿領域に書込まれた情報の秘匿性を向上させることができる。
【0018】
<実施の形態1>
以下、実施の形態1の詳細について説明する。
図2は、実施の形態1にかかる半導体装置10のハードウェア構成を示す模式図である。半導体装置10は、マイクロコンピュータとして構成されている。
図2に示されるように、半導体装置10において、半導体装置10の動作を制御するCPU(Central Processing Unit)100、秘匿領域211及び設定情報記憶領域220を有する不揮発性メモリ200、認証コントローラ400、及びメモリコントローラ500が周辺バス300上に存在している。また、CPU100の動作中にプログラムなどを一時退避させるために、RAM(Random Access Memory)600がCPU100に接続されている。さらに、CPU100がプログラムを不揮発性メモリ200から入手する際、効率よく入手するためにキャッシュ110がCPU100に付属している。なお、図示していないが、不揮発性メモリ200にCPU100がアクセスする際に用いられる読出し制御回路がCPU100に付属している。
【0019】
不揮発性メモリ200は、CPU100により実行されるプログラムなどの各種情報を格納する。なお、このプログラムのうち、秘匿性を有するプログラムについては、秘匿情報として秘匿領域211に格納されている。秘匿領域211は、秘匿領域6と同様、秘匿情報が格納される領域である。本実施の形態では、不揮発性メモリ200は、具体的にはフラッシュメモリであるが、他の不揮発性メモリであってもよい。
【0020】
不揮発性メモリ200は、プログラムを格納する領域であるプログラム格納領域210と、設定情報記憶領域220とを有している。プログラム格納領域210は、秘匿情報を格納するための秘匿領域211を備えている。設定情報記憶領域220は、秘匿領域211についてのセキュリティ設定情報を格納する領域であり、
図3に示されるように、セキュリティデータ設定領域221と認証情報期待値設定領域222を備えている。
【0021】
図4は、セキュリティデータ設定領域221の構成の一例を示す模式図である。
図4に示されるように、セキュリティデータ設定領域221には、読出制御フラグの設定値と、セキュリティ保護フラグの設定値とが格納される。本実施の形態では、読出制御フラグの設置値とセキュリティ保護フラグの設定値は、セキュリティデータ設定領域221の同一のアドレスに格納される。
図4に示した例では、具体的には、所定のアドレスの最下位ビット(bit0)にセキュリティ保護フラグの設定値が格納され、所定のアドレスの最上位ビット(bit31)に読出制御フラグの設定値が格納されている。なお、読出制御フラグの設置値とセキュリティ保護フラグの設定値は、セキュリティデータ設定領域221の異なるアドレスにそれぞれ格納されてもよい。
【0022】
セキュリティ保護フラグは、秘匿領域211への書込み及び秘匿領域211からの読み出しの両方を禁止するためのフラグ情報である。セキュリティ保護フラグの設定値が0である場合、秘匿領域211への書込み及び秘匿領域211からの読み出しの両方が、メモリコントローラ500によって禁止される。これに対し、セキュリティ保護フラグの設定値が1である場合、秘匿領域211への書込みがメモリコントローラ500によって許可される。このように、本実施の形態において、セキュリティ保護フラグは、秘匿領域211への書込みの可否を制御するためのフラグ情報とも言うことができる。また、セキュリティ保護フラグが1である場合、秘匿領域211からの読み出しの可否は、メモリコントローラ500によって、他の条件も含めて総合的に判断される。
【0023】
本実施の形態において、読出制御フラグは、認証コントローラ400による認証結果によらず、秘匿領域211における秘匿情報の読み出しを禁止するためのフラグ情報である。読出制御フラグの設定値が1である場合、認証コントローラ400による認証結果によらず、秘匿領域211における秘匿情報の読み出しが禁止される。これに対し、読出制御フラグの設定値が0である場合、認証コントローラ400による認証結果に応じて、秘匿領域211における秘匿情報の読み出しの可否が決定される。なお、その際、上述の通り、セキュリティ保護フラグの値が1に設定されている必要がある。なお、本実施の形態における、秘匿領域211からの読み出しが許可される条件についての詳細は後述する。
【0024】
このように、本実施の形態においては、不揮発性メモリ200は、上述のフラグ情報記憶部3としても機能する。すなわち、不揮発性メモリ200は、不揮発性メモリ200へのアクセスの可否を判定するために用いられるフラグ情報として、セキュリティ保護フラグ及び読出制御フラグを記憶する。
【0025】
図5は、認証情報期待値設定領域222の構成の一例を示す模式図である。
図5に示されるように、認証情報期待値設定領域222には、認証用期待値が格納される。認証用期待値は、認証コントローラ400による認証時に参照される値である。
図5に示した例では、32ビットの認証用期待値が格納されている。
【0026】
図6は、本実施の形態にかかる不揮発性メモリ200のバンク構成の一例を示す模式図である。本実施の形態において、不揮発性メモリ200は、1つのバンクから構成されており、メモリバンクとして、bank0のみを備えている。なお、
図6に示した例では、bank0は、フラッシュメモリマクロ250Aとフラッシュメモリマクロ250Bとにより物理的に実現されているが、1つのフラッシュメモリマクロにより実現されてもよい。なお、メモリマクロとは、メモリの読み出し回路及び書き込み回路を内蔵したユニット(ハードマクロ)のことである。
【0027】
次に認証コントローラ400について説明する。認証コントローラ400は、認証コントローラ4に対応しており、不揮発性メモリ200に対するアクセスについて認証する制御回路である。具体的には、認証コントローラ400は、外部から入力された認証情報と、設定情報記憶領域220に予め記憶された認証情報の期待値とを用いて、入力された認証情報が所定の条件を満たすか否かを判定する。認証コントローラ400は、入力された認証情報が所定の条件を満たす場合には、アクセスの正当性を認証する。
【0028】
本実施の形態では、認証コントローラ400は、外部から入力された認証情報に対し所定の暗号化アルゴリズムに従った変換を行って得られた値と、認証情報期待値設定領域222に格納されている認証用期待値とを比較し、両者が一致しているか否かを判定する。両者が一致した場合、認証が成功したことを示す。一方、両者が一致しない場合、認証が失敗したことを示す。外部から入力される認証情報としては、例えば、パスワード又はIDコードなどが挙げられるが、これらに限られない。
【0029】
認証コントローラ400は、認証結果を示す認証結果信号を、メモリコントローラ500に出力する。具体的には、認証コントローラ400は、認証に成功した場合、認証結果信号として1を出力し、認証に失敗した場合、認証結果信号として0を出力する。なお、認証コントローラ400は、ハードウェアとしての実現に限らず、例えば、プログラムが実行されることにより実現されてもよい。
【0030】
図7は、認証コントローラ400による認証処理の動作の一例を示すフローチャートである。
ステップ10(S10)において、認証コントローラ400は、認証情報期待値設定領域222に格納された認証用期待値をリードする。
ステップ11(S11)において、認証コントローラ400は、認証コントローラ400に入力された認証情報と、ステップ10でリードした認証用期待値が一致するか否かを判定する。
認証情報と認証用期待値とが一致した場合、ステップ12(S12)において、認証コントローラ400はアクセスの正当性を認証する。すなわち、認証に成功したこととなり、認証コントローラ400は、認証結果信号として1を、メモリコントローラ500に出力する。
認証情報と認証用期待値とが一致しなかった場合、ステップ13(S13)において、認証コントローラ400はアクセスの正当性を認証しない。すなわち、認証に失敗したこととなり、認証コントローラ400は、認証結果信号として0を、メモリコントローラ500に出力する。
【0031】
なお、認証コントローラ400は、認証用期待値を更新してもよい。認証コントローラ400は、例えば、入力された認証情報に対し、現在の認証用期待値を用いた認証が成功した場合に、新たな認証用期待値を現在の認証用期待値に代えて認証情報期待値設定領域222に格納する。また、認証コントローラ400は、例えば、認証情報期待値設定領域222に格納されている値が、不揮発性メモリ200の消去状態を示す値である場合(例えば、認証情報期待値設定領域222の全てのビットの値が1である場合)、初期の認証用期待値を認証情報期待値設定領域222に格納する。
【0032】
図8は、認証コントローラ400による認証用期待値の設定動作の一例を示すフローチャートである。
ステップ20(S20)において、認証コントローラ400は、認証情報期待値設定領域222に格納されている値が、不揮発性メモリ200の消去状態を示す値であるか否かを確認する。具体的には、認証コントローラ400は、現在の認証用期待値の全てのビットの値が1であるか否かを判定する。認証情報期待値設定領域222に格納されている値が不揮発性メモリ200の消去状態を示す値である場合、すなわち、現在の認証用期待値の全てのビットの値が1である場合、処理は、ステップ23へ移行する。これに対し、認証情報期待値設定領域222に格納されている値が不揮発性メモリ200の消去状態を示す値ではない場合、すなわち、現在の認証用期待値のビット列のうち少なくとも1つのビットの値が0である場合、処理は、ステップ21へ移行する。
【0033】
ステップ21(S21)において、認証コントローラ400は、現在の認証用期待値を用いて認証処理を実施する。すなわち、認証コントローラ400は、
図7に示したフローチャートに示される処理を実施する。ここで、認証が成功した場合(ステップ22(S22)でOK)、処理はステップ23へ移行する。これに対し、認証が失敗した場合(ステップ22でNG)、処理は終了する。認証コントローラ400は、認証用期待値の設定動作を終了する。
【0034】
ステップ23(S23)において、認証コントローラ400は、新規の認証情報の入力を受付ける。
ステップ24(S24)において、認証コントローラ400は、ステップ23で受け付けた新規の認証情報に基づいて新規の認証用期待値を生成する。例えば、認証コントローラ400は、所定の暗号化アルゴリズムに従って、ステップ23で受け付けた新規の認証情報を認証用期待値に変換する。
【0035】
ステップ25(S25)において、認証コントローラ400は、ステップ24で生成された新規の認証用期待値が、不揮発性メモリ200の消去状態を示す値であるか否かを確認する。具体的には、認証コントローラ400は、ステップ24で生成された新規の認証用期待値の全てのビットの値が1であるか否かを判定する。新規の認証用期待値が不揮発性メモリ200の消去状態を示す値である場合、すなわち、新規の認証用期待値の全てのビットの値が1である場合、入力された新規の認証情報が適切ではないため、処理は、ステップ22へと戻る。これに対し、新規の認証用期待値が不揮発性メモリ200の消去状態を示す値ではない場合、すなわち、新規の認証用期待値のビット列のうち少なくとも1つのビットの値が0である場合、処理は、ステップ26へ移行する。
【0036】
ステップ26(S26)において、認証コントローラ400は、ステップ24で生成された新規の認証用期待値を、認証情報期待値設定領域222に新たに格納する認証用期待値として確定する。すなわち、認証コントローラ400は、ステップ24で生成された新規の認証用期待値を認証情報期待値設定領域222に格納する。
【0037】
次に、メモリコントローラ500について説明する。メモリコントローラ500は、メモリコントローラ5に対応しており、フラグ情報を用いて、不揮発性メモリ200へのアクセスを制御する制御回路である。本実施の形態において、具体的には、メモリコントローラ500は、セキュリティデータ設定領域221に格納されたフラグ情報を用いて、不揮発性メモリ200へのアクセスを制御する。なお、メモリコントローラ500は、ハードウェアとしての実現に限らず、例えば、プログラムが実行されることにより実現されてもよい。
【0038】
なお、認証コントローラ400を実現するためのプログラム及びメモリコントローラ500を実現するためのプログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non−transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD−ROM(Read Only Memory)、CD−R、CD−R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(Random Access Memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【0039】
ここで、本実施の形態にかかるメモリコントローラ500によるアクセス可否の判定について説明する。
図9は、本実施の形態にかかるメモリコントローラ500によるアクセス可否の判定条件について示す表である。
図9に示すように、メモリコントローラ500は、次のように秘匿領域211に対するアクセスの可否を決定する。
【0040】
セキュリティ保護フラグの値が0である場合、メモリコントローラ500は、秘匿領域211への情報の書込みを禁止すると共に、秘匿領域211からの秘匿情報の読み出しを禁止する。したがって、セキュリティ保護フラグの値が0の場合、読出制御フラグの設定値によらず、常に、秘匿領域211への書込み及び秘匿領域211からの読み出しが禁止されることとなる。また、セキュリティ保護フラグの値が0の場合、認証コントローラ400による認証の結果によらず、常に、秘匿領域211への書込み及び秘匿領域211からの読み出しが禁止されることとなる。
【0041】
セキュリティ保護フラグの値が1である場合、メモリコントローラ500は、秘匿領域211への情報の書込みを許可する。つまり、セキュリティ保護フラグの値が1の場合、読出制御フラグの設定値によらず、常に、秘匿領域211への書込みが許可されることとなる。また、セキュリティ保護フラグの値が1の場合、認証コントローラ400による認証の結果によらず、常に、秘匿領域211への書込みが許可されることとなる。このように、メモリコントローラ500は、セキュリティ保護フラグの値が、秘匿領域211への書込みを許可することを示す値である場合、秘匿領域211への書込みを許可する。
【0042】
セキュリティ保護フラグの値が1であり、かつ、読出制御フラグの値が1である場合、メモリコントローラ500は、認証コントローラ400による認証結果によらず、秘匿領域211における秘匿情報の読み出しを禁止する。つまり、この場合、不正なアクセスに対する認証が成功したとしても、秘匿情報が読み出されることは防がれる。このように、読出制御フラグは、読み出しが可能となる期間を制限している。
【0043】
セキュリティ保護フラグの値が1であり、かつ、読出制御フラグの値が0である場合、メモリコントローラ500は、認証コントローラ400による認証の結果によって、秘匿領域211からの秘匿情報の読み出しの可否を決定する。したがって、この場合、メモリコントローラ500は、認証が成功すると、すなわち、認証コントローラ400から認証結果信号として1を受信すると、秘匿領域211からの秘匿情報の読み出しを許可する。これに対し、メモリコントローラ500は、認証が失敗すると、すなわち、認証コントローラ400から認証結果信号として0を受信すると、秘匿領域211からの秘匿情報の読み出しを禁止する。このように、メモリコントローラ500は、読出制御フラグの値が認証結果によらず、秘匿情報の読み出しを禁止することを示す値ではなく、かつ、認証コントローラ400によりアクセスの正当性が認証された場合、秘匿領域211からの秘匿情報の読み出しを許可する。
【0044】
ここで、本実施の形態では、メモリコントローラ500は、秘匿領域211の内容が消去された場合に、フラグ情報の値を、前記秘匿領域211からの秘匿情報の読み出しを許可するために要求される値へと変更する。
図10は、フラグ情報の設定変更の判断フローを示すフローチャートである。
ステップ30(S30)において、メモリコントローラ500は、秘匿領域211に格納されているデータが消去されたか否かを判定する。メモリコントローラ500が、秘匿領域211の消去を検知した場合、処理はステップ31へ移行する。これに対し、メモリコントローラ500が、秘匿領域211の消去を検知しない場合、処理はステップ32へ移行する。
ステップ31(S31)において、メモリコントローラ500は、セキュリティ保護フラグの値を1に設定可能であると判定すると共に、読出制御フラグの値を0に設定可能であると判定する。
一方、ステップ32(S32)では、メモリコントローラ500は、セキュリティ保護フラグの値を1に設定不可能であると判定すると共に、読出制御フラグの値を0に設定不可能であると判定する。
【0045】
なお、フラグ情報の設定変更は、セキュリティデータ設定領域221のビットの書き換えにより行うことができる。ここで、フラグ情報の切替を不可能にする具体的の方法としては任意の方法が採用可能である。例えば、セキュリティデータ設定領域221への書込み要求に対し、メモリコントローラ500が書き込みエラーを出力してもよい。又は、書込み動作は実行されるものの実際にデータの更新は行わないことで、フラグ情報の切替を不可能にしてもよい。
【0046】
次に、半導体装置10における、秘匿領域211のデータの更新動作について説明する。
図11は、秘匿領域211のデータの更新動作の一例を示すフローチャートである。なお、
図11において、フローチャートのステップの横に、当該ステップが実行された際の秘匿領域211に対するアクセス可否の状態を示している。以下、
図11に沿って、秘匿領域211のデータの更新動作について説明する。なお、本実施の形態では、上述の通り、不揮発性メモリ200は1バンク構成となっているため、書き換えの実行中に、不揮発性メモリ200に記憶されたROMプログラムの実行を行うことができない。したがって、更新の際に実行されるROMプログラムは、更新の前に、RAM600などの別のメモリにコピーされている。そして、秘匿領域211の更新の際は、コピー先のメモリ上で、このROMプログラムが実行される。
【0047】
なお、更新動作が行われる前のフラグ情報の設定値は、次のようになっている。すなわち、セキュリティ保護フラグの値が0であり、読出制御フラグの値が1となっている。したがって、この状態では、秘匿領域211への書込み及び秘匿領域211からの読み出しは禁止される。
【0048】
ステップ40(S40)において、秘匿領域211のデータの消去が行われる。具体的には、例えば、秘匿領域211の更新を行う正当なユーザの指示に基づき、又はこのユーザが用意した消去プログラムが実行されることにより、秘匿領域211のデータが消去される。これにより、メモリコントローラ500は、秘匿領域211の消去を検知し、セキュリティ保護フラグの値を1に設定可能であると判定すると共に、読出制御フラグの値を0に設定可能であると判定する。
【0049】
なお、ステップ40で消去されるデータは、例えば、秘匿領域211の更新を行う正当なユーザにより開発されたプログラムである。したがって、本実施の形態においては、正当なユーザによって秘匿領域211に格納された旧プログラムを、この正当なユーザが更新したい場合、このように秘匿領域211に格納された旧プログラムは一旦削除されることとなる。しかし、このような削除ステップが実行されることにより、秘匿領域211に格納された旧プログラムが、正当ではないユーザにより閲覧されることを、確実に防ぐことが可能となる。
【0050】
ステップ41(S41)及びステップ42(S42)において、フラグ情報の設定値が変更される。本実施の形態では、上述の通り、読出制御フラグとセキュリティ保護フラグは、セキュリティデータ設定領域221の同一のアドレスに格納されているため、メモリコントローラ500は、ステップ41とステップ42とを同時に実行することが可能であるが、ステップ41とステップ42とが同時に実行されなくてもよい。ステップ41において、メモリコントローラ500は、セキュリティ保護フラグの値を1に設定する。これにより、秘匿領域211への書込みが禁止された状態から許可された状態へと変わる。すなわち、メモリコントローラ500は、秘匿領域211に対する書き込み要求を許可する。ステップ42において、メモリコントローラ500は、読出制御フラグの値を0に設定する。なお、読出制御フラグの値が0に変更されても、秘匿領域211からの読み出し禁止された状態は継続している。
【0051】
ステップ43(S43)において、認証コントローラ400による認証が行われる。アクセスが許可される認証結果が得られると、すなわち認証コントローラ400から認証成功を示す認証結果信号をメモリコントローラ500が受信すると、メモリコントローラ500は、秘匿領域211に対する読み出し要求を許可する。具体的には、メモリコントローラ500は、秘匿領域211についてのリード許可信号をCPU100に出力する。なお、
図11で示したフローチャートでは、アクセスが許可される認証結果が得られた場合、すなわち認証が成功する場合を例に示しているが、認証に失敗した場合には、読み出しが禁止された状態が継続することとなる。
【0052】
ステップ44(S44)において、秘匿領域211に新たなデータが書き込まれる。具体的には、例えば、秘匿領域211の更新を行う正当なユーザの指示に基づき、又はこのユーザが用意した書き込みプログラムが実行されることにより、秘匿領域211に秘匿情報(新プログラム)が書き込まれる。
【0053】
ステップ45(S45)において、秘匿領域211に書込まれた新しいデータが読み出され、書き込まれた内容の確認が行われる。これは、ステップ44での書き込みで正しく書き込みが完了したかを確認するために行われる。具体的には、例えば、秘匿領域211の更新を行う正当なユーザの指示に基づき、又はこのユーザが用意した確認プログラムが実行されることにより、秘匿領域211のデータが読み出される。
【0054】
ステップ46(S46)において、メモリコントローラ500は、ステップ45における確認が完了したことの通知を受信し、フラグ情報を変更する。なお、秘匿領域211の更新を行う正当なユーザの指示に基づきメモリコントローラ500にこの通知がなされてもよいし、このユーザが用意した確認プログラムがメモリコントローラ500にこの通知を行ってもよい。本ステップにおいて、メモリコントローラ500は、セキュリティ保護フラグの値を0に設定すると共に、読出制御フラグの値を1に設定する。これにより、以降、メモリコントローラ500は、秘匿領域211に対する書き込み及び読み出しを禁止することとなる。なお、ステップ46において、セキュリティ保護フラグの変更と読出制御フラグの変更が同時に行われなくてもよい。すなわち、これらのフラグの変更が別々に行われてもよい。
【0055】
ステップ47(S47)において、システムのリセット(再起動)が行われる。これにより、認証結果信号が初期化され、認証結果信号の信号状態が認証失敗を示す信号状態となる。
【0056】
図11に示したフローチャートでは、ステップ42及びステップ43は、ステップ44の前に実施されるが、これらがステップ44の後に実施されてもよいことは言うまでもない。
【0057】
なお、上記説明では、CPU100側に読出し制御回路が存在する場合を想定しているが、読出し制御回路がメモリコントローラ500に設けられていてもよい。また同様に、キャッシュ110がメモリコントローラ500に設けられていてもよい。また、上記説明では、ステップ47において、リセットが行われるが、リセットは必ずしも行われなくてもよい。また、リセットを行わない場合、認証コントローラ400に疑似認証情報が意図的に入力されることにより、認証結果信号の信号状態を、認証失敗を示す信号状態としてもよい。
【0058】
なお、秘匿領域211の更新中にキャッシュ処理が行われないようキャッシュを無効にすることで、更新後にキャッシュ110に秘匿情報が残ることを防ぐことができる。また、秘匿領域211の更新中にキャッシュ処理を行う場合には、更新完了後に、例えばメモリコントローラ500からの通知により、キャッシュ110のデータが削除されるようにすることで、更新後にキャッシュ110に秘匿情報が残ることを防ぐことができる。
【0059】
以上、実施の形態1について説明した。実施の形態1にかかる半導体装置10によれば、秘匿情報の読み出しの可否は、認証結果のみではなく、認証結果によらず、読み出しを禁止するための読出制御フラグの値によって、判定される。したがって、認証のみによりアクセスを制御する場合と比べて、秘匿領域に書込まれた情報の秘匿性を向上させることができる。また、上述の通り、半導体装置10は、秘匿領域211への書込みの可否を制御するためのセキュリティ保護フラグを有する。このため、秘匿領域211への書込みについてのセキュリティも担保することができる。また、さらに、本実施の形態1にかかる半導体装置10では、秘匿領域211の内容が消去されない限り、フラグ情報の値を、アクセスが許可されるために要求される値へと変更することができない。このため、秘匿領域211の秘匿性がさらに向上している。また、本実施の形態によれば、不揮発性メモリが複数のバンクを備えていない場合であっても、秘匿領域に書込まれた情報の秘匿性を担保することができる。なお、上述のように、本実施の形態では、読出制御フラグの値を0に設定可能とするために秘匿領域211の消去が必要であるが、秘匿領域211の消去によらず、読出制御フラグの値が0に設定されてもよい。
【0060】
<実施の形態1の変形例>
次に、実施の形態1の変形例について説明する。なお、以下では、実施の形態1の変形例について、上述の実施の形態1と異なる点について説明し、同様の構成又は動作については、適宜、説明を省略する。上述の半導体装置10は、秘匿情報が扱われる利用環境を想定した構成であるが、変形例にかかる半導体装置10は、秘匿情報が扱われない利用環境での利便性を考慮した構成となっている。不揮発性メモリ200において秘匿情報が扱われない場合、不揮発性メモリ200に対する読み出し及び書き込みは自由に行われることが求められる。したがって、このような利用態様の場合、セキュリティ保護フラグの値は1に設定される必要がある。しかしながら、上述の半導体装置10では、
図9で示したように、不揮発性メモリ200の秘匿領域211については、読出しの際に認証コントローラ400による認証が要求されることとなる。つまり、不揮発性メモリ200に対する自由な読み出し及び書き込みが実現できない。
【0061】
よって、本変形例では、メモリコントローラ500は、
図12に示すように、秘匿領域211に対するアクセスの可否を決定する。
図12に示した表は、セキュリティ保護フラグの値が1であり、かつ、読出制御フラグの値が1である場合における読み出しの制御が、
図9に示した表と異なっている。すなわち、セキュリティ保護フラグの値が1であり、かつ、読出制御フラグの値が1である場合、変形例にかかるメモリコントローラ500は、秘匿領域211からの情報の読み出しを許可する。したがって、この場合、読み出し処理が行われる際に、認証コントローラ400による認証処理は必要とされない。つまり、変形例にかかる半導体装置10にあっては、セキュリティ保護フラグの値を1に設定し、かつ、読出制御フラグの値も1に設定することにより、不揮発性メモリ200に対する自由な読み出し及び書き込みを実現することが可能となる。
【0062】
本変形例において、秘匿情報を使用しない半導体装置10の利用態様の場合、秘匿領域211からの自由な読み出しを可能にするために読出制御フラグの値は1である必要がある。なぜならば、
図12に示すように、セキュリティ保護フラグの値が1である場合、読出制御フラグの値が1であれば、読出しの可否の判定のために認証結果が必要とされないからである。これに対し、本変形例において、秘匿情報を使用する半導体装置10の利用態様の場合、読み出しが行われる際、秘匿領域211からの自由な読み出しを禁止するために読出制御フラグの値は0である必要がある。なぜならば、
図12に示すように、セキュリティ保護フラグの値が1である場合に、読出制御フラグの値が0であれば、読出しの可否の判定に認証結果が参照されるためである。したがって、本変形例にかかる半導体装置10においては、読出制御フラグは、認証コントローラ400による認証結果をアクセスの可否の判定に用いるためのフラグ情報ということができる。読出制御フラグの値が0である場合、認証コントローラ400による認証結果が、秘匿領域211からの読み出しのためのアクセスの可否の判定に用いられる。これに対し、読出制御フラグの設定値が1である場合、認証コントローラ400による認証結果が、秘匿領域211からの読み出しのためのアクセスの可否の判定に用いられない。
また、
図12に示されるメモリコントローラ500の制御条件からわかるように、本変形例にかかる半導体装置10においては、セキュリティ保護フラグは、秘匿領域211への書込み及び秘匿領域211からの読み出しを禁止するためのフラグ情報ということができる。
【0063】
ここで、本変形例においても、メモリコントローラ500は、セキュリティ保護フラグの値が1であり、かつ、読出制御フラグの値が0であり、かつ、認証コントローラ400によりアクセスの正当性が認証された場合、秘匿領域211からの秘匿情報の読み出しを許可する。言い換えると、本変形例において、メモリコントローラ500は、セキュリティ保護フラグの値が秘匿領域211への書込み及び秘匿領域211からの読み出しを禁止することを示す値ではなく、かつ、読出制御フラグの値が認証コントローラ400による認証結果をアクセスの可否の判定に用いることを示す値であり、かつ、認証コントローラ400によりアクセスの正当性が認証された場合、秘匿領域211からの秘匿情報の読み出しを許可する。
【0064】
したがって、秘匿情報を使用する半導体装置10の利用態様において、秘匿情報の読み出しの可否は、認証結果のみではなく、セキュリティ保護フラグ及び読出制御フラグの値によって、判定される。したがって、本変形例においても、認証のみによりアクセスを制御する場合と比べて、秘匿領域に書込まれた情報の秘匿性を向上させることができる。
【0065】
なお、本変形例にかかる半導体装置10も、実施の形態1にかかる半導体装置10の説明において示した各フローチャートにしたがって動作する。ただし、実施の形態1では、
図11のステップ46において、セキュリティ保護フラグの変更と読出制御フラグの変更が同時に行われなくてもよいが、本変形例においては、これらのフラグの変更が同時に行われる。また、実施の形態1と同様、変形例にかかる半導体装置10においても、秘匿領域211のデータの消去が、セキュリティ保護フラグの値を1に設定可能となるための条件である。
図12に示されるように、セキュリティ保護フラグの値が1に変更されると、読出制御フラグの値が1である場合には、秘匿領域211に対する自由な読み出しが可能となってしまう。しかし、このように、秘匿領域211のデータの消去が事前に行われることで、秘匿情報を使用する半導体装置10の利用態様において、秘匿情報が不正に読み出されてしまうのが防がれる。
【0066】
また、本変形例では、秘匿情報を使用する半導体装置10の利用態様において読出制御フラグの値を1に設定する場合は、同時に、セキュリティ保護フラグの値を0に設定する。これは、セキュリティ保護フラグの値が1のまま、読出制御フラグの値を1に設定した場合、秘匿情報を使用する半導体装置10の利用態様において、
図12に示されるように、秘匿領域211のデータが読出し可能になってしまうためである。上述の通り、半導体装置10において、読出制御フラグとセキュリティ保護フラグとは、セキュリティデータ設定領域221における同一のアドレスに格納されている。したがって、これらのフラグを同時に書き換えることが可能である。
【0067】
上記判断フローについて、フローチャートにより説明する。
図13は、読出制御フラグの設定変更の判断フローを示すフローチャートである。
ステップ50(S50)において、メモリコントローラ500は、セキュリティ保護フラグの値が0であるか否かを判定する。セキュリティ保護フラグの値が0である場合、処理はステップ51へ移行する。これに対し、セキュリティ保護フラグの値が1である場合、処理はステップ52へ移行する。
ステップ51(S51)において、メモリコントローラ500は、読出制御フラグの値を1に設定可能であると判定する。
一方、ステップ52(S52)では、メモリコントローラ500は、読出制御フラグの値を1に設定不可能であると判定する。
【0068】
以上、実施の形態1の変形例にかかる半導体装置10について説明した。本変形例においては、秘匿情報の読み出しの可否は、認証結果のみではなく、セキュリティ保護フラグ及び読出制御フラグの値によって判定されため、認証のみによりアクセスを制御する場合と比べて、秘匿情報の秘匿性を向上させることができる。また、実施の形態1の変形例にかかる半導体装置10も、秘匿領域211の内容が消去されない限り、フラグ情報の値を、秘匿情報へのアクセスが許可されるために要求される値へと変更することができない。このため、秘匿領域211の秘匿性がさらに向上している。さらに、実施の形態1の変形例にかかる半導体装置10によれば、秘匿情報を使用しない利用態様である場合に、不揮発性メモリ200に対する自由な読み出し及び書き込みを実現することが可能となる。
【0069】
<実施の形態2>
次に、実施の形態2について説明する。実施の形態1にかかる半導体装置10の不揮発性メモリ200は、1つのバンクから構成されていた。これに対し、実施の形態2にかかる半導体装置の不揮発性メモリは、2つのバンクから構成される点で異なる。また、これに伴い、実施の形態2にかかる半導体装置の不揮発性メモリは、設定情報記憶領域220に後述するバンク情報設定領域が追加された点で、実施の形態1にかかる不揮発性メモリ200と異なる。
【0070】
不揮発性メモリが2バンク構成となっている場合、更新の前にRAM600などの別メモリにROMプログラムをコピーしておく必要がないという利点がある。また、不揮発性メモリが1バンク構成である場合、更新処理が行われている際に、電源瞬断などの要因によりROMプログラムが破壊されことがある。この場合、システムの起動が行えなくなる恐れがある。これに対し、不揮発性メモリが2バンク構成となっている場合、2つのバンクのうち、予約領域となっているバンクの方に、更新プログラムを書込むことができる。このため、電源瞬断などが発生した場合であっても、システムの起動に影響を与えないという利点もある。
なお、以下では、実施の形態2について、上述の実施の形態1と異なる点について説明し、同様の構成又は動作については、適宜、説明を省略する。
【0071】
図14は、実施の形態2にかかる半導体装置20のハードウェア構成を示す模式図である。半導体装置20では、
図14に示されるように、実施の形態1にかかる不揮発性メモリ200が不揮発性メモリ700に置き換わっている。
【0072】
図15は、本実施の形態にかかる不揮発性メモリ700のバンク構成の一例を示す模式図である。本実施の形態において、不揮発性メモリ700は、2つのバンクから構成されており、メモリバンクとして、bank0及びbank1を備えている。一方のバンクが、フラッシュメモリマクロ250Aにより物理的に実現されており、他方のバンクが、フラッシュメモリマクロ250Bにより物理的に実現されている。ここで、本実施の形態では、bank0が、起動プログラムの格納される領域であり、bank1が、更新プログラムが書きこまれる領域である。すなわち、bank1が予約領域である。
【0073】
このように、不揮発性メモリ700を構成するフラッシュメモリマクロがフラッシュメモリマクロ250Aとフラッシュメモリマクロ250Bとに分かれていることで、プログラムを更新する際にbank1側に新しいプログラムを書込むことができる。したがって、仮にbank1に対する更新処理が行われている際に電源瞬断などでマイクロコンピュータがリセットされても、bank0に格納されたプログラムによりシステムの再起動が可能である。
【0074】
なお、
図15では、bank0がフラッシュメモリマクロ250Aにより物理的に実現され、bank1がフラッシュメモリマクロ250Bにより物理的に実現されている状態を図示している。しかしながら、後述するバンクの切替が行われると、bank0がフラッシュメモリマクロ250Bにより物理的に実現され、bank1がフラッシュメモリマクロ250Aにより物理的に実現されている状態となる。いずれの状態であっても、CPU100は、bank0を起動プログラムが格納された領域と認識し、bank1を予約領域と認識する。
【0075】
また、本実施の形態にかかる半導体装置20においては、不揮発性メモリ700は、上述の2バンク構成から
図6に示したような1バンク構成へと切り替えることが可能である。また、逆に、不揮発性メモリ700は、1バンク構成から2バンク構成へと切り替えることが可能である。
【0076】
不揮発性メモリ700は、不揮発性メモリ200と同様、CPU100により実行されるプログラムなどの各種情報を格納する。本実施の形態では、不揮発性メモリ700は、具体的にはフラッシュメモリであるが、他の不揮発性メモリであってもよい。
【0077】
図14に示したように、不揮発性メモリ700は、プログラムを格納する領域であるプログラム格納領域710と、設定情報記憶領域720とを有している。プログラム格納領域710は、bank0に属する領域と、bank1に属する領域とに分かれており、いずれの領域も秘匿領域を備えている。すなわちプログラム格納領域710は、bank0に属する秘匿領域711_0と、bank1に属する秘匿領域711_1とを備えている。
【0078】
設定情報記憶領域720は、
図16に示されるように、セキュリティデータ設定領域721と、認証情報期待値設定領域222と、バンク情報設定領域723を備えている。セキュリティデータ設定領域721は、実施の形態1にかかるセキュリティデータ設定領域221と同様である。ただし、セキュリティデータ設定領域721は、
図17に示されるように、セキュリティ保護フラグについては、bank0用のセキュリティ保護フラグとbank1用のセキュリティ保護フラグとを格納している。具体的には、本実施の形態では、セキュリティデータ設定領域721の同一のアドレスに、読出制御フラグの設置値と、bank0用のセキュリティ保護フラグの設定値と、bank1用のセキュリティ保護フラグの設定値とが格納される。なお、各フラグの設定値は、セキュリティデータ設定領域721の異なるアドレスにそれぞれ格納されてもよい。
【0079】
図18は、バンク情報設定領域723の構成の一例を示す模式図である。
図18に示されるように、バンク情報設定領域723には、バンク構成設定フラグの設定値と、有効バンク設定フラグの設定値とが格納される。
【0080】
バンク構成設定フラグは、CPUが認識するバンク構成を切替えるためのフラグである。すなわち、バンク構成設定フラグは、不揮発性メモリ700のバンク構成を1バンク構成とするか、2バンク構成とするかを設定するためのフラグである。バンク構成設定フラグの設定値が1である場合、不揮発性メモリ700のバンク構成は、1バンク構成に設定される。また、バンク構成設定フラグの設定値が0である場合、不揮発性メモリ700のバンク構成は、2バンク構成に設定される。
【0081】
有効バンク設定フラグは、起動プログラムが格納される領域を、いずれのフラッシュメモリマクロにより実現するかを設定するためのフラグである。言い換えると、複数のバンクのうち有効なバンクを指定するフラグである。有効バンク設定フラグの設定値が1である場合、フラッシュメモリマクロ250Aにより実現されるバンクが、起動プログラムが格納される領域となる。すなわち、有効バンク設定フラグの設定値が1である場合、bank0は、フラッシュメモリマクロ250Aにより実現される。したがって、有効バンク設定フラグの設定値が1である場合、bank1は、フラッシュメモリマクロ250Bにより実現される。また、有効バンク設定フラグの設定値が0である場合、フラッシュメモリマクロ250Bにより実現されるバンクが、起動プログラムが格納される領域となる。すなわち、有効バンク設定フラグの設定値が0である場合、bank0は、フラッシュメモリマクロ250Bにより実現される。したがって、有効バンク設定フラグの設定値が0である場合、bank1は、フラッシュメモリマクロ250Aにより実現される。なお、以下の説明において、有効バンク設定フラグの変更によるこのようなバンクの切替を有効バンクの切替と称する。
【0082】
なお、一般的に、バンク構成の変更は頻繁に行われることはないため、バンク構成設定フラグは頻繁に変更されることはない。これに対し、秘匿領域のデータの更新頻度は、バンク構成の変更頻度に比べて高い。したがって、有効バンク設定フラグの変更頻度は、バンク構成設定フラグの変更頻度よりも高い。このため、
図18に示すように、バンク構成設定フラグは、有効バンク設定フラグとは異なるアドレスに格納されている方が安全である。バンク構成設定フラグと有効バンク設定フラグとが同一アドレスに格納されている場合、有効バンク設定フラグの変更すべきところを、誤ってバンク構成設定フラグを変更してしまうといった誤設定が発生することが考えられる。しかし、各フラグを異なるアドレスに格納することにより、このような誤設定の発生が抑制される。
【0083】
次に、本実施の形態にかかるメモリコントローラ500によるアクセス可否の判定について説明する。
図19は、本実施の形態にかかるメモリコントローラ500によるアクセス可否の判定条件について示す表である。
図9に示すように、メモリコントローラ500は、次のように秘匿領域711_0、711_1に対するアクセスの可否を決定する。なお、本実施の形態では、更新プログラムの書き込みはbank1に対して行われる。したがって、秘匿情報を使用する半導体装置20の利用態様の場合、bank0用のセキュリティ保護フラグの値を1に設定する必要がない。このため、例えば、一旦、bank0用のセキュリティ保護フラグの値を0に設定すると、1への変更ができないように制御が行われる。すなわち、一旦設定が行われると、設定をクリアできないようbank0用のセキュリティ保護フラグは構成されている。ただし、そのような構成に限らず、bank1用のセキュリティ保護フラグと同様に、bank0用のセキュリティ保護フラグが、設定値を1に変更可能に構成されていてもよい。ただし、この場合、秘匿領域711_0の消去が行われた後でないと、設定値を1に変更できないようにすることが好ましい。
【0084】
本実施の形態にかかるメモリコントローラ500は、bank0用のセキュリティ保護フラグの値が1である場合、秘匿情報を使用しない半導体装置20の利用態様と判断し、bank0に属する秘匿領域711_0に対するアクセス、及びbank1に属する秘匿領域711_1に対するアクセスに対して何ら制限を設けない。すなわち、この場合、メモリコントローラ500は、秘匿領域711_0に対する書き込み及び読み取り、並びに秘匿領域711_1に対する書き込み及び読み取りについて、無条件で許可する。これに対し、本実施の形態にかかるメモリコントローラ500は、bank0用のセキュリティ保護フラグの値が0である場合、秘匿情報を使用する半導体装置20の利用態様と判断し、以下のようにアクセスを判定する。
【0085】
以下、
図19を参照して、本実施の形態にかかるメモリコントローラ500によるアクセス可否の判定の詳細について説明する。bank0用のセキュリティ保護フラグの値が0である場合、メモリコントローラ500は、bank0に属する秘匿領域711_0への情報の書込みを禁止すると共に、秘匿領域711_0からの秘匿情報の読み出しを禁止する。したがって、本実施の形態においては、秘匿領域711_0に対する書き込み及び読み出しは行うことができない。
【0086】
次に、bank1に属する秘匿領域711_1に対する書き込み及び読み出しの制御について説明する。bank1に属する秘匿領域711_1に対する書き込み及び読み出しの制御は、実施の形態1における制御と同様である。具体的には以下のように制御が行われる。
【0087】
bank1用のセキュリティ保護フラグの値が0の場合、メモリコントローラ500は、秘匿領域711_1への情報の書込みを禁止すると共に、秘匿領域711_1からの秘匿情報の読み出しを禁止する。したがって、bank1用のセキュリティ保護フラグの値が0の場合、秘匿領域711_1に対する書き込み及び読み出しは行うことができない。
【0088】
bank1用のセキュリティ保護フラグの値が1である場合、メモリコントローラ500は、bank1に属する秘匿領域711_1への情報の書込みを許可する。つまり、bank1用のセキュリティ保護フラグの値が1の場合、読出制御フラグの設定値によらず、秘匿領域711_1への書込みが許可されることとなる。また、bank1用のセキュリティ保護フラグの値が1の場合、認証コントローラ400による認証の結果によらず、秘匿領域711_1への書込みが許可されることとなる。
【0089】
bank1用のセキュリティ保護フラグの値が1であり、かつ、読出制御フラグの値が1である場合、メモリコントローラ500は、認証コントローラ400による認証結果によらず、秘匿領域711_1における秘匿情報の読み出しを禁止する。
bank1用のセキュリティ保護フラグの値が1であり、かつ、読出制御フラグの値が0である場合、メモリコントローラ500は、認証コントローラ400による認証の結果によって、秘匿領域711_1からの秘匿情報の読み出しの可否を決定する。したがって、この場合、メモリコントローラ500は、認証が成功すると、すなわち、認証コントローラ400から認証結果信号として1を受信すると、秘匿領域711_1からの秘匿情報の読み出しを許可する。これに対し、メモリコントローラ500は、認証が失敗すると、すなわち、認証コントローラ400から認証結果信号として0を受信すると、秘匿領域711_1からの秘匿情報の読み出しを禁止する。
【0090】
次に、半導体装置20における、秘匿領域のデータの更新動作について説明する。本実施の形態では、bank1に属する秘匿領域711_1に新たな秘匿情報を書きこんだ上で、有効バンクの切替が行われることで、秘匿領域の更新が行われる。
図20は、実施の形態2にかかる秘匿領域のデータの更新動作の一例を示すフローチャートである。なお、
図20において、フローチャートのステップの横には、当該ステップが実行された際の秘匿領域711_0及び711_1に対するアクセス可否の状態が示されている。以下、
図20に沿って、秘匿領域のデータの更新動作について説明する。
【0091】
なお、更新動作が行われる前のフラグ情報の設定値は、次のようになっている。すなわち、bank0用のセキュリティ保護フラグの値及びbank1用のセキュリティ保護フラグの値が0であり、読出制御フラグの値が1となっている。したがって、この状態では、秘匿領域711_1への書込み及び秘匿領域711_1からの読み出しは禁止される。なお、上述の通り、秘匿領域711_0に対する書き込み及び読み出しは、更新動作の際、禁止されたままである。
【0092】
ステップ60(S60)において、上述のステップ40と同様、秘匿領域711_1のデータの消去が行われる。これにより、メモリコントローラ500は、秘匿領域711_1の消去を検知し、セキュリティ保護フラグの値を1に設定可能であると判定すると共に、読出制御フラグの値を0に設定可能であると判定する。なお、ここでは、一例として、読出制御フラグの値を0に設定可能とするために秘匿領域711_1の消去が必要である構成を示したが、秘匿領域711_1の消去によらず、読出制御フラグの値が0に設定されてもよい。
【0093】
ステップ61(S61)及びステップ62(S62)において、上述のステップ41、42と同様、フラグ情報の設定値が変更される。具体的には、ステップ61において、メモリコントローラ500は、bank1用のセキュリティ保護フラグの値を1に設定する。これにより、秘匿領域711_1への書込みが禁止された状態から許可された状態へと変わる。すなわち、メモリコントローラ500は、秘匿領域711_1に対する書き込み要求を許可する。ステップ62において、メモリコントローラ500は、読出制御フラグの値を0に設定する。なお、読出制御フラグの値が0に変更されても、秘匿領域711_1からの読み出し禁止された状態は継続している。
【0094】
ステップ63(S63)において、上述のステップ43と同様、認証コントローラ400による認証が行われる。認証が成功すると、メモリコントローラ500は、秘匿領域711_1からの読み出しを許可する。なお、
図20で示したフローチャートでは、認証が成功する場合を例に示しているが、認証に失敗した場合には、読み出しが禁止された状態が継続することとなる。
【0095】
ステップ64(S64)において、上述のステップ44と同様、秘匿領域711_1に新たなデータが書き込まれる。
ステップ65(S65)において、上述のステップ45と同様、秘匿領域711_1に書込まれた新しいデータが読み出され、書き込まれた内容の確認が行われる。
【0096】
ステップ66(S66)において、上述のステップ46と同様、メモリコントローラ500は、ステップ65における確認が完了したことの通知を受信し、フラグ情報を変更する。具体的には、メモリコントローラ500は、bank1用のセキュリティ保護フラグの値を0に設定すると共に、読出制御フラグの値を1に設定する。これにより、以降、メモリコントローラ500は、秘匿領域711_1に対する書き込み及び読み出しを禁止することとなる。
【0097】
ステップ67(S67)において、メモリコントローラ500は、新しいデータが書き込まれたバンクが起動側のバンクとなるよう有効バンク設定フラグを切り替える。すなわち、メモリコントローラ500は、新しいデータが書き込まれたバンクが、起動プログラムが格納される領域のバンクとなるよう、有効バンク設定フラグを切り替える。このように、メモリコントローラ500は、現在有効ではないバンクの秘匿領域に新たな秘匿情報が書き込まれた場合に、該バンクを有効なバンクとするよう有効バンク設定フラグを変更する。
【0098】
図20に示す更新動作のフローの開始時点において、bank0がフラッシュメモリマクロ250Aにより実現されていた場合、つまり、有効バンク設定フラグの値が1であった場合、ステップ67において、メモリコントローラ500は、bank0がフラッシュメモリマクロ250Bにより実現されるよう、有効バンク設定フラグを切り替える。つまり、この場合、メモリコントローラ500は、ステップ67において、有効バンク設定フラグの値を、1から0へと変更する。
【0099】
また、
図20に示す更新動作のフローの開始時点において、bank0がフラッシュメモリマクロ250Bにより実現されていた場合、つまり、有効バンク設定フラグの値が0であった場合、ステップ67において、メモリコントローラ500は、bank0がフラッシュメモリマクロ250Aにより実現されるよう、有効バンク設定フラグを切り替える。つまり、この場合、メモリコントローラ500は、ステップ67において、有効バンク設定フラグの値を、0から1へと変更する。
【0100】
ステップ68(S68)において、上述のステップ47と同様、システムのリセット(再起動)が行われる。これにより、更新後のプログラムによりシステムが起動することとなる。その際、ステップ67での設定に従って、システムは起動する。
【0101】
以上、秘匿領域のデータの更新動作について説明した。上述の通り、更新動作のフローの開始時点において、有効バンク設定フラグの値が0である場合も、1である場合も、
図20に示す更新動作のフローにしたがって更新を実現することができる。したがって、フローを実現するために必要とされるプログラムを、更新時の有効バンク設定フラグの値によらず、共通化することができる。
【0102】
ところで、2バンク構成の不揮発性メモリ700において、プログラム格納領域710の秘匿領域以外の部分の更新を行う場合、bank0の秘匿領域711_0の内容をbank1の秘匿領域711_1にコピーしつつ、新たなデータを予約領域であるbank1に書き込む必要がある。本実施の形態では、2バンク構成の不揮発性メモリ700において、プログラム格納領域710の秘匿領域以外の部分を更新する場合であっても、秘匿領域にアクセスするための認証情報を知らない限り、秘匿領域のデータを読み出して予約領域にコピーすることができない。このため、例えば、秘匿領域以外の領域の更新者が、秘匿領域の更新者とは異なる場合、秘匿領域以外の領域の更新者は、秘匿領域711_0の内容を秘匿領域711_1にコピーできないため、問題となる。このような問題は、秘匿領域を更新する際に、秘匿領域711_0と秘匿領域711_1の両方に、新たなデータが置かれることで回避できる。つまり、秘匿領域について更新する場合、
図20に示す更新動作のフローが2回行われるようにすればよい。例えば、更新開始前の有効バンク設定フラグの値が1である場合、1回目の更新動作のフローにより、フラッシュメモリマクロ250Bにより実現されるbank1の秘匿領域711_1に新たなデータを格納後、2回目の更新動作のフローにより、フラッシュメモリマクロ250Aにより実現されるbank1の秘匿領域711_1に新たなデータを格納すればよい。また、更新開始前の有効バンク設定フラグの値が0である場合、1回目の更新動作のフローにより、フラッシュメモリマクロ250Aにより実現されるbank1の秘匿領域711_1に新たなデータを格納後、2回目の更新動作のフローにより、フラッシュメモリマクロ250Bにより実現されるbank1の秘匿領域711_1に新たなデータを格納すればよい。このようにすることで、秘匿領域以外の領域の更新者は、秘匿領域以外の領域の際、bank0の秘匿領域711_0の内容をbank1にコピーする必要がなくなる。
【0103】
次に、有効バンクの切替について補足説明する。
図21は、有効バンク設定フラグの切替判断フローを示すフローチャートである。以下、
図21に沿って、有効バンク設定フラグの切替判断フローについて説明する。
【0104】
ステップ70(S70)において、メモリコントローラ500は、bank0用及びbank1用のセキュリティ保護フラグの値が、いずれも0であるかを判定する。bank0用及びbank1用のセキュリティ保護フラグの値がいずれも0である場合、処理はステップ71へ移行する。これに対し、bank0用及びbank1用のセキュリティ保護フラグの値のうち少なくとも一方の値が1である場合、処理はステップ72へ移行する。
ステップ71(S71)において、メモリコントローラ500は、有効バンク設定フラグの値を切り替えることが可能であると判定する。
一方、ステップ72(S72)では、メモリコントローラ500は、有効バンク設定フラグの値を切り替えることが不可能であると判定する。
【0105】
一方のバンクの秘匿領域だけが保護されている場合に有効バンクの切替が行われてしまうことで、保護されていない他方のバンクの秘匿領域にあったデータが読出し可能になってしまう。このため、
図21に示したように、bank0用のセキュリティ保護フラグの値が0であり、かつ、bank1用のセキュリティ保護フラグの値も0である場合に、有効バンク設定フラグの切替を許可することにより、これを防いでいる。
【0106】
最後に、不揮発性メモリ700におけるバンク構成の切替について説明する。
図22は、バンク構成の切替について示す模式図である。
図22に示されるように、バンク構成設定フラグを切り替えることにより、不揮発性メモリ700は、1バンク構成から2バンク構成への切替、及び2バンク構成から1バンク構成への切替が可能である。なお、
図22で示した例では、プログラム格納領域710がフラッシュメモリマクロ250A及びフラッシュメモリマクロ250Bにより実現され、設定情報記憶領域720がフラッシュメモリマクロ250Cにより実現されている。
【0107】
図23は、バンク構成の切替判断フローを示すフローチャートである。以下、
図23に沿って、バンク構成の切替判断フローについて説明する。
ステップ80(S80)において、メモリコントローラ500は、bank0用及びbank1用のセキュリティ保護フラグの値が、いずれも1であるかを判定する。bank0用及びbank1用のセキュリティ保護フラグの値がいずれも1である場合、処理はステップ81へ移行する。これに対し、bank0用及びbank1用のセキュリティ保護フラグの値のうち少なくとも一方の値が0である場合、処理はステップ82へ移行する。
ステップ81(S81)において、メモリコントローラ500は、バンク構成設定フラグの値を切り替えることが可能であると判定する。
一方、ステップ82(S82)では、メモリコントローラ500は、バンク構成設定フラグの値を切り替えることが不可能であると判定する。
【0108】
2バンク構成において、bank1用のセキュリティ保護フラグの値が0である場合(つまり、bank1の秘匿領域711_1に秘匿性が高いプログラムが格納された状態の場合)に、2バンク構成から1バンク構成へと切替わることで、bank1の秘匿領域711_1に存在するデータが読出し可能になってしまう。また、2バンク構成の際にbank1の秘匿領域711_1となる領域に、秘匿性の高くないプログラムが1バンク構成時に格納されていた場合に、bank1用のセキュリティ保護フラグの値が0に設定されていた状態で1バンク構成から2バンク構成へと切り替わることで、当該領域が書込み不可かつデータ読出し不可になってしまう。このため、bank0用のセキュリティ保護フラグの値が1であり、かつ、bank1用のセキュリティ保護フラグの値も1である場合に、バンク構成設定フラグの切替を許可することにより、これらの問題の発生を防いでいる。
【0109】
以上、実施の形態2について説明した。本実施の形態によれば、実施の形態1と同様、秘匿領域におけるセキュリティを向上させることができる。また、不揮発性メモリ700が2バンク構成となっているため、更新の前にRAM600などの別メモリにROMプログラムをコピーしておく必要がないという利点がある。また、2つのバンクのうち、予約領域となっているバンクの方に、更新プログラムが書き込まれるため、電源瞬断などによりシステムリセットが発生した場合であっても、システムの起動に影響を与えない。
【0110】
<実施の形態2の変形例>
次に、実施の形態2の変形例について説明する。実施の形態2に対し、実施の形態1の変形例と同様の変形を行うことができる。すなわち、本変形例では、メモリコントローラ500は、
図24に示すようにアクセス可否の判定を行う。本変形例は、実施の形態2に対し、実施の形態1の変形例と同様の変形を行っただけであるため、その詳細な説明は割愛する。
【0111】
なお、秘匿情報を使用しない半導体装置20の利用態様の場合、bank0用のセキュリティ保護フラグの値及びbank1用のセキュリティ保護フラグの値は共に1に設定されるが、この場合においてもバンクの切替が実現できるよう、本変形例では、
図21に示した有効バンク設定フラグの切替判断フローに代えて、
図25に示す有効バンク設定フラグの切替判断フローが用いられる。すなわち、
図21に示したフローチャートのステップ70がステップ75(S75)に置き換わる。ステップ75では、メモリコントローラ500は、bank0用及びbank1用のセキュリティ保護フラグの値が、いずれも1であるか、又はいずれも0であるかを判定する。そして、bank0用及びbank1用のセキュリティ保護フラグの値がいずれも1である場合、又は、bank0用及びbank1用のセキュリティ保護フラグの値がいずれも0である場合、処理はステップ71へ移行する。また、bank0用のセキュリティ保護フラグの値と、bank1用のセキュリティ保護フラグの値とが異なる場合、処理はステップ72へ移行する。
【0112】
<実施の形態3>
次に、実施の形態3について説明する。本実施の形態では、秘匿領域のデータ消去についても、認証機能で保護する点で上述の実施の形態と異なる。以下の説明では、実施の形態2と異なる点について具体的に説明し、実施の形態2と同様の構成及び動作については適宜説明を省略する。
【0113】
本実施の形態にかかるメモリコントローラ500は、フラグ情報の値が所定の値であり、かつ、認証コントローラ400によりアクセスの正当性が認証された場合、秘匿領域の消去を許可する。具体的には、例えば、以下のようにメモリコントローラ500は、秘匿領域の消去の可否を決定する。
図26は、実施の形態3にかかるメモリコントローラ500によるアクセス可否の判定条件について示す表である。なお、本実施の形態では、メモリコントローラ500が秘匿領域の消去の可否を判定する点において、他の実施の形態と異なるだけであるため、以下では、秘匿領域の消去の可否に関するメモリコントローラ500の判定について説明する。
【0114】
図26に示すように、本実施の形態にかかるメモリコントローラ500は、bank0の秘匿領域711_0に対しては、消去を禁止する。また、本実施の形態にかかるメモリコントローラ500は、セキュリティ保護フラグの値によらず、読出制御フラグの値が1である場合には、bank1の秘匿領域711_1に対する消去を禁止する。これに対し、本実施の形態にかかるメモリコントローラ500は、bank1用のセキュリティ保護フラグの値が1であり、かつ、読出制御フラグの値が0である場合、認証コントローラ400による認証の結果によって、秘匿領域711_1に対する消去の可否を決定する。また、本実施の形態にかかるメモリコントローラ500は、bank1用のセキュリティ保護フラグの値が0であり、かつ、読出制御フラグの値が0である場合、認証コントローラ400による認証の結果によって、秘匿領域711_1に対する消去の可否を決定する。
【0115】
次に、本実施の形態にかかる半導体装置20における、秘匿領域のデータの更新動作について説明する。
図27は、実施の形態3にかかる秘匿領域のデータの更新動作の一例を示すフローチャートである。なお、
図27において、フローチャートのステップの横には、当該ステップが実行された際の秘匿領域711_0及び711_1に対するアクセス可否の状態が示されている。以下、
図27に沿って、秘匿領域のデータの更新動作について説明する。
【0116】
なお、更新動作が行われる前のフラグ情報の設定値は、次のようになっている。すなわち、bank0用のセキュリティ保護フラグの値及びbank1用のセキュリティ保護フラグの値が0であり、読出制御フラグの値が1となっている。したがって、この状態では、秘匿領域711_1に対する消去、書込み、及び読み出しは禁止される。なお、秘匿領域711_0に対する消去、書き込み、及び読み出しは、更新動作の際、禁止されたままである。
【0117】
ステップ100(S100)において、
図20に示したステップ62と同様、メモリコントローラ500は、読出制御フラグの値を0に設定する。なお、読出制御フラグの値が0に変更されても、秘匿領域711_1に対する消去、書込み、及び読み出しが禁止された状態は継続している。
【0118】
ステップ101(S101)において、
図20に示したステップ63と同様、認証コントローラ400による認証が行われる。認証が成功すると、メモリコントローラ500は、秘匿領域711_1に対する消去を許可する。なお、
図27で示したフローチャートでは、認証が成功する場合を例に示しているが、認証に失敗した場合には、消去が禁止された状態が継続することとなる。
【0119】
ステップ102(S102)において、
図20に示したステップ60と同様、秘匿領域711_1のデータの消去が行われる。これにより、メモリコントローラ500は、秘匿領域711_1の消去を検知し、セキュリティ保護フラグの値を1に設定可能であると判定すると共に、読出制御フラグの値を0に設定可能であると判定する。
【0120】
ステップ103(S103)において、
図20に示したステップ61と同様、メモリコントローラ500は、bank1用のセキュリティ保護フラグの値を1に設定する。これにより、秘匿領域711_1に対する書込み及び読み出しが許可される。
以降、
図20に示したステップ64以降の処理が行われる。
【0121】
本実施の形態によれば、秘匿領域のデータ消去による改ざんも防止することができる。なお、本実施の形態の一例として、秘匿領域のデータ消去に認証を用いる構成を、実施の形態2にかかる半導体装置20に適用した例を示したが、当該構成は、実施の形態1にかかる半導体装置に適用してもよいし、上述の各変形例にかかる半導体装置に適用してもよい。
【0122】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。例えば、フラグの値として0と1を例にあげたが、これらは一例であり、各フラグは、取りうる値として2つの値(例えば、第1の値と第2の値)を有していればよい。したがって、フラグの値が1ビットでなくてもよい。また、実施の形態2では、不揮発性メモリが2バンク構成である場合について示したが、不揮発性メモリは3つ以上の複数のバンクから構成されてもよい。この場合、例えば、複数のバンクのうちいずれか一つが、起動プログラムの格納される領域であり、他の少なくとも一つが、予約領域となる。