IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ ルネサスエレクトロニクス株式会社の特許一覧

<>
  • 特開-半導体装置およびその制御方法 図1
  • 特開-半導体装置およびその制御方法 図2
  • 特開-半導体装置およびその制御方法 図3
  • 特開-半導体装置およびその制御方法 図4
  • 特開-半導体装置およびその制御方法 図5
  • 特開-半導体装置およびその制御方法 図6
  • 特開-半導体装置およびその制御方法 図7
  • 特開-半導体装置およびその制御方法 図8
  • 特開-半導体装置およびその制御方法 図9
  • 特開-半導体装置およびその制御方法 図10
  • 特開-半導体装置およびその制御方法 図11
  • 特開-半導体装置およびその制御方法 図12
  • 特開-半導体装置およびその制御方法 図13
  • 特開-半導体装置およびその制御方法 図14
  • 特開-半導体装置およびその制御方法 図15
  • 特開-半導体装置およびその制御方法 図16
  • 特開-半導体装置およびその制御方法 図17
  • 特開-半導体装置およびその制御方法 図18
  • 特開-半導体装置およびその制御方法 図19
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023177247
(43)【公開日】2023-12-13
(54)【発明の名称】半導体装置およびその制御方法
(51)【国際特許分類】
   G06F 21/57 20130101AFI20231206BHJP
【FI】
G06F21/57 350
【審査請求】未請求
【請求項の数】11
【出願形態】OL
(21)【出願番号】P 2023065146
(22)【出願日】2023-04-12
(31)【優先権主張番号】17/828,388
(32)【優先日】2022-05-31
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】302062931
【氏名又は名称】ルネサスエレクトロニクス株式会社
(74)【代理人】
【識別番号】110002066
【氏名又は名称】弁理士法人筒井国際特許事務所
(72)【発明者】
【氏名】森 優樹
(72)【発明者】
【氏名】久保 悠司
(72)【発明者】
【氏名】森田 浩史
(57)【要約】
【課題】セキュアブートアドレスの改ざんチェックを行う半導体装置を提供する。
【解決手段】半導体装置100は、プロセッサ部21と、ブートプログラムが格納されているメモリ30と、リセット要求に従ってプロセッサ部21にリセットを指示し、リセット解除後にブートアドレスを出力するリセットコントローラ10と、リセットコントローラ10から出力されるブートアドレスの改ざんチェックを行うアドレスチェック部22とを備える。
【選択図】図1
【特許請求の範囲】
【請求項1】
プロセッサ部と、
ブートプログラムが格納されているメモリと、
リセット要求に従って前記プロセッサ部にリセットを指示し、リセット解除後最初に実行されるブートプログラムのためのブートアドレスを前記プロセッサ部に出力するリセットコントローラと、
前記リセットコントローラから出力されるブートアドレスの改ざんチェックを行い、改ざんチェック結果に基づいてブートアドレスエラー信号を出力するアドレスチェック部と、
を備える半導体装置。
【請求項2】
前記プロセッサ部は、前記ブートアドレスエラー信号に基づいて前記ブートプログラムの実行可否を判定する、
請求項1記載の半導体装置。
【請求項3】
前記プロセッサ部は、前記ブートアドレスエラー信号が、ブートアドレスが改ざんされていることを示す場合に、リセット状態を維持する、
請求項2に記載の半導体装置。
【請求項4】
前記プロセッサ部と前記メモリとに接続されるバスをさらに備え、
前記プロセッサ部は、前記リセットコントローラから出力される前記ブートアドレスに基づいてメモリアクセス要求を生成して前記バスに出力し、
前記アドレスチェック部は、前記プロセッサ部が生成するメモリアクセス要求に含まれるブートアドレスの改ざんチェックを行う、
請求項1に記載の半導体装置。
【請求項5】
請求項4に記載の半導体装置において、
前記アドレスチェック部は、前記バスが前記メモリアクセス要求を受け付けたときに発行する応答信号に応じて、ブートアドレスの改ざんチェック動作を停止する。
【請求項6】
前記プロセッサ部は、第1のプロセッサ部であって、
さらに第2のプロセッサ部を有し、
前記リセットコントローラは、
リセット要求に基づいて第1または第2のリセットを指示し、指示したリセットを識別するためのリセット識別信号を出力するリセット制御回路と、
第1および第2のブートアドレスを有し、リセット解除時に、前記リセット識別信号が示す情報に基づいて前記第1または第2のブートアドレスを選択するアドレス選択回路と、
を有し、
前記アドレスチェック部は、前記リセット識別信号が示す情報に対応する複数のブートアドレス期待値を有し、前記アドレス選択回路によって選択されたブートアドレスと、前記リセット識別信号が示す情報に対応するブートアドレス期待値とを比較する、
請求項1に記載の半導体装置。
【請求項7】
請求項6に記載の半導体装置において、
前記アドレスチェック部は、前記リセット識別信号が第1のリセットを示す場合には、前記アドレス選択回路によって選択されたブートアドレスの全ビットと、前記リセット識別信号が示す情報に対応するブートアドレス期待値との全ビットとを比較する第1の比較回路を有する。
【請求項8】
請求項6に記載の半導体装置において、
前記アドレスチェック部は、前記リセット識別信号が第2のリセットを示す場合には、前記アドレス選択回路によって選択されたブートアドレスの上位側ビットと、前記リセット識別信号が示す情報に対応するブートアドレス期待値との上位側ビットとを比較する第2の比較回路を有する。
【請求項9】
請求項6に記載の半導体装置は、さらに、前記アドレスチェック部によるブートアドレス改ざんチェックを行うか否かを示す改ざんチェック要否情報を設定するヒューズモジュールを有する。
【請求項10】
半導体装置の制御方法であって、半導体装置は、プロセッサ部と、リセット要求にしたがって前記プロセッサ部にリセット指示を行い、リセット解除時に前記プロセッサ部が実行するブートプログラムに対応するブートアドレスを前記プロセッサ部に出力するリセットコントローラと、を備え、
前記リセットコントローラが出力するブートアドレスの改ざんチェックを行い、
改ざんチェック結果に応じてブートプログラムを実行する。
【請求項11】
請求項9に記載の半導体装置において、
前記改ざんチェック結果が、ブートアドレスが改ざんされていることを示す場合には、前記プロセッサ部はリセット状態を維持する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は半導体装置に関し、例えば、ブートプログラムを実行する半導体装置に好適に利用できるものである。
【背景技術】
【0002】
近年、自動車におけるセキュリティの重要性は日増しに高まっている。そのため、車載用の半導体装置のセキュリティレベルの向上は重要である。
【0003】
セキュリティレベルの向上を実現する技術の一つとして、セキュアブートが知られている。セキュアブートは、不正なプログラムの起動を防止するために、起動時にプログラムの正当性を確認する仕組みである。セキュアブートは、リセット解除後に、セキュアブートプログラムを実行することによって実現される。セキュアブートプログラムはメモリに格納され、その先頭アドレス(セキュアブートアドレス)を指定することによって実行される。
【0004】
特開2008-59300号公報(特許文献1)は、低消費電力モードから通常動作モードに復帰するときのブートプログラムを、外部ROM、または、保持用RAMから読み出すマイクロコンピュータを開示する。特許文献1のマイクロコンピュータは、外部ROMのブートプログラムをアクセスするためのブートアドレスと、保持用RAMのブートプログラムをアクセスするためのブートアドレスとを選択するアドレス切換回路を有する。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2008-59300号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
セキュリティアタックの一つとして、フォルトインジェクションアタックがある。機器に電圧やノイズを加えるフォルトインジェクションアタックによって、機器が誤動作を引き起こし、セキュリティ対策が回避されてしまう可能性がある。半導体装置に意図的にノイズが混入されることによって、セキュアブートアドレスが改ざんされてしまうかもしれない。例えば、特許文献1のようなブートアドレスを選択するアドレス切換回路が、意図的に加えられたノイズによって誤動作すると、意図していないブートアドレスを選択してしまうかもしれない。このように、ブートアドレスが改ざんされることによって、意図していたセキュアブートが実行されず、リセット後に実行されるプログラムの正当性が確認できなくなる可能性がある。それだけでなく、意図していないブートアドレスによって指定される不正なプログラムが実行されてしまう恐れがある。
【0007】
その他の課題および新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【0008】
一実施の形態によれば、半導体装置は、プロセッサ部と、ブートプログラムが格納されているメモリと、リセット要求に従ってプロセッサ部にリセットを指示し、リセット解除後にブートアドレスを出力するリセットコントローラと、リセットコントローラから出力されるブートアドレスの改ざんチェックを行うアドレスチェック部とを備える。
【発明の効果】
【0009】
前記一実施の形態によれば、半導体装置のセキュリティレベルを向上させることができる。
【図面の簡単な説明】
【0010】
図1図1は、実施の形態1に係る半導体装置の構成例を示すブロック図である。
図2図2は、実施の形態1に係るアドレスチェック部の構成例を示すブロック図である。
図3図3は、実施の形態1に係る半導体装置の動作を示すフローチャートである。
図4図4は、実施の形態1の変形例に係る半導体装置の構成例を示すブロック図である。
図5図5は、実施の形態1の変形例に係るアドレスチェック部の構成例を示すブロック図である。
図6図6は、実施の形態1の変形例に係るアドレスチェック部の動作を説明するタイミングチャートである。
図7図7は、実施の形態1の変形例に係るアドレスチェック部の動作を説明するタイミングチャートである。
図8図8は、実施の形態2に係る半導体装置の構成例を示すブロック図である。
図9図9は、実施の形態2に係るリセットコントローラの構成例を示すブロック図である。
図10図10は、実施の形態2に係るアドレスチェック部の構成例を示すブロック図である。
図11図11は、実施の形態2に係る半導体装置の動作を示すフローチャートである。
図12図12は、実施の形態2の変形例に係るプロセッサモジュールの構成例を示すブロック図である。
図13図13は、実施の形態2の変形例に係るアドレスチェック部の構成例を説明するブロック図である。
図14図14は、実施の形態3に係る半導体装置の構成例を示すブロック図である。
図15図15は、実施の形態3に係るリセットコントローラの構成例を示すブロック図である。
図16図16は、実施の形態3に係るアドレスチェック部の構成例を示すブロック図である。
図17図17は、実施の形態3におけるプロセッサモジュールの動作を示すフローチャートである。
図18図18は、実施の形態3の変形例に係るプロセッサモジュールの構成例を示すブロック図である。
図19図19は、実施の形態3の変形例に係るアドレスチェック部の構成例を示すブロック図である。
【発明を実施するための形態】
【0011】
以下、一実施の形態に係る半導体装置について、図面を参照して詳細に説明する。なお、明細書および図面において、同一の構成要件または対応する構成要件には、同一の符号を付し、重複する説明は省略する。また、図面では、説明の便宜上、構成を省略または簡略化している場合もある。また、各実施の形態の少なくとも一部は、互いに任意に組み合わされてもよい。
【0012】
(実施の形態1)
図1は、実施の形態1にかかる半導体装置100の構成例を示すブロック図である。
【0013】
本実施の形態の半導体装置100は、例えば、セキュアブート機能が搭載されたSoC(System On Chip)であり、周知の半導体製造技術を用いて1個の半導体チップ上に形成された半導体集積回路(LSI)である。半導体装置100は、セキュアブート機能を備えている。
【0014】
半導体装置100は、リセットコントローラ(RSTC)10、プロセッサモジュール(PM)20、メモリ(MEM)30、機能モジュール(FM)40、および、バス50を有する。リセットコントローラ10、プロセッサモジュール20、メモリ30、および、機能モジュール40はバス50を介して接続される。
【0015】
リセットコントローラ10は、外部から半導体装置100に入力される外部リセット信号RESに応じて、半導体装置100の内部モジュールに対するリセット信号RSTを生成する。内部モジュールはリセット信号RSTに基づいてリセットされる。リセット信号RSTは、外部リセット信号RESの入力に応じて、所定の期間アサートされる。リセット信号RSTのネゲートはリセット解除を示す。また、リセットコントローラ10は、リセット解除時に、セキュアブートアドレスBTAをプロセッサモジュール20に出力する。セキュアブートアドレスBTAは、リセット解除後にプロセッサモジュール20が実行するセキュアブートプログラムの先頭アドレスである。
【0016】
プロセッサモジュール20は、プロセッサ部21とアドレスチェック部22とを含む。プロセッサ部21は、メモリ30に格納されたプログラムを実行可能なように構成される。プロセッサ部21は、リセット解除時にリセットコントローラ10によって指定されたセキュアブートアドレスBTAに基づいてメモリ30をアクセスし、セキュアブートプログラムを実行する。
【0017】
アドレスチェック部(ADCHK)22は、リセットコントローラ10によって指定されたセキュアブートアドレスの改ざんチェックを行い、チェック結果に基づいてブートアドレスエラー信号ERRをアサート、または、ネゲートする。プロセッサ部21は、エラー信号ERRに基づいて、セキュアブートプログラムを実行するか否かを決定する。
【0018】
メモリ30は、プロセッサモジュール20が実行するプログラムが格納されている。当該プログラムには、リセット解除後に実行されるセキュアブートプログラムも含まれる。メモリ30は、例えば、RAM(Random Access Memory)やROM(Read Only Memory)等の記憶装置である。
【0019】
機能モジュール40は、特定の処理を実行する専用処理回路である。機能モジュール40は、例えば、DMAC(Direct Memory Access Controller)や画像処理回路等の専用処理回路である。なお、図1では一つの機能モジュールしか示されていないが、機能モジュールの数はこれに限定されない。
【0020】
バス50は、上述のとおり、半導体装置100内部の構成要素が接続されている。バス50は、例えば、AXIプロトコルに準拠したバス(AXIバス)である。バス50は、バス制御部(不図示)を有する。例えば、プロセッサ部21が発行するメモリアクセス要求は、バス50に送信され、バス制御部によって受け付けられる。バス制御部はプロセッサ部21からのメモリアクセス要求に基づいて、メモリ30へのアクセスを要求する。
【0021】
図2は、本実施の形態に係るアドレスチェック部22の構成例を示すブロック図である。アドレスチェック部22は、比較回路2201を有する。比較回路2201は、リセットコントローラ10からのセキュアブートアドレスBTAと、セキュアブートアドレス期待値BTA_Eとを比較し、その比較結果をセキュアブートアドレスエラー信号ERRとして出力する。リセットコントローラ10からのセキュアブートアドレスBTAとセキュアブートアドレス期待値BTA_Eが一致する場合は、比較回路2201は、リセットコントローラ10が出力するブートアドレスBTAは正しい(改ざんされていない)アドレスであるとして、セキュアブートアドレスエラー信号ERRをネゲートする。一方、リセットコントローラ10からのセキュアブートアドレスBTAとセキュアブートアドレス期待値BTA_Eが一致しない場合は、比較回路2201は、リセットコントローラ10が出力するブートアドレスBTAは改ざんされた不正アドレスであるとして、セキュアブートアドレスエラー信号ERRをアサートする。このようにして、アドレスチェック部22は、リセットコントローラ10によって指定されたセキュアブートアドレスBTAの改ざんチェックを行う。
【0022】
また、比較回路2201は、リセット信号RSTに基づいてイネーブル状態になる。具体的には、リセット信号RSTがリセット解除を示すネゲート状態である場合に、比較回路2201はイネーブル状態になり比較動作を行う。
【0023】
次いで、図3を参照して、リセット解除後の半導体装置100の動作について説明する。まず、リセット信号RSTがネゲートされ、リセットが解除されると、セキュアブートアドレスBTAがプロセッサモジュール20に出力される(ステップS01)。比較回路2201は、ネゲートされたリセット信号RSTに応じてイネーブル状態になる。したがって、比較回路2201は、リセットコントローラ10が出力するセキュアブートアドレスBTAとセキュアブートアドレス期待値BTA_Eとを比較する(ステップS02)。比較結果が一致を示す場合(ステップS02のYES)、アドレスチェック部22は、ブートアドレスエラー信号ERRをネゲートする。プロセッサ部21は、ネゲートされたセキュアブートアドレスエラー信号ERRに基づき、リセットコントローラ10から与えられたセキュアブートアドレスBTAは改ざんされていないと判断する。そして、プロセッサ部21は、リセットコントローラ10が出力するブートアドレスBTAに基づいて、メモリ30をアクセスし、セキュアブートプログラムを実行する(ステップS03)。一方、比較結果が不一致を示す場合(ステップS02のNO)、アドレスチェック部22は、セキュアブートアドレスエラー信号ERRをアサートする。プロセッサ部21は、アサートされたセキュアブートアドレスエラー信号ERRに基づいて、リセットコントローラ10から与えられたセキュアブートアドレスBTAは改ざんされていると判断する。そして、プロセッサ部21は、メモリ30をアクセスせず、リセット状態を維持する(ステップS04)。
【0024】
以上のように、本実施の形態1に係る半導体装置100は、アドレスチェック部22を備えているため、リセットコントローラ10が出力するセキュアブートアドレスが改ざんされているか否かを確認することができる。すなわち、半導体装置100に意図的にノイズが加えられ、リセットコントローラ10から出力されるセキュアブートアドレスが改ざんされたとしても、セキュアブートアドレスが不正であることを検出することができる。リセットコントローラ10が出力するセキュアブートアドレスが改ざんされた不正アドレスであることを検出した場合には、プロセッサ部21は、不正アドレスによって指定されるプログラムを実行することなく、リセット状態を維持する。このように、リセット解除後に正しいセキュアブートアドレスであることが確認できなければ、プログラムを実行しないようにすることで、強固なセキュリティを実現することができる。
【0025】
(実施の形態1の変形例)
次に、実施の形態1の変形例を説明する。上述した実施の形態1では、アドレスチェック部22は、リセットコントローラ10によって出力されたセキュアブートアドレスBTAに対して、改ざんチェックを行っている。しかしながら、プロセッサ部21からバスに出力されるセキュアブートアドレスを用いて、改ざんチェックを行うことも可能である。図4は、実施の形態1の変形例に係る半導体装置100aの構成例を示すブロック図である。実施の形態1の変形例に係る半導体装置100aは、図1に示される半導体装置100と比べて、プロセッサモジュール20が、プロセッサモジュール20aに置き換えられている点で異なる。これ以外の構成要素は、図1で示される半導体装置100と同様でよい。したがって、図1と同一の機能を有する構成については、同一の符号を付し、それらの説明を省略する。
【0026】
プロセッサモジュール20aは、プロセッサ部21aとアドレスチェック部22aを有する。プロセッサ部21aは、リセットコントローラ10によって指定されたセキュアブートアドレスBTAを用いてメモリアクセス要求を出力する。当該メモリアクセス要求には、セキュアブートアドレスBTAに基づくブートアドレスBAが含まれる。アドレスチェック部22aは、プロセッサ部21aとバス50との間に設けられ、プロセッサ部21aがバス50に出力するメモリアクセス要求に含まれるブートアドレスBAが改ざんされているか否かをチェックする。そして、アドレスチェック部22aは、チェック結果に応じてセキュアブートアドレスエラー信号ERRを生成しプロセッサ部21aにフィードバックする。
【0027】
図5は、アドレスチェック部22aの構成を示すブロック図である。アドレスチェック部22aは、比較回路2201、ブート中設定回路2202、および、ブート終了検出回路2203を含む。
【0028】
ブート中設定回路2202は、リセット信号RSTがアサートされてからブート処理が完了するまで、ブート中信号S1を出力する。ブート中信号S1は、リセット信号RSTによってセットされ、ブート終了信号S2によってリセット(クリア)される。ブート中信号S1は、比較回路2201にイネーブル信号として供給される。
【0029】
ブート終了検出回路2203は、リセット解除後、最初にプロセッサ部21aが出力するメモリアクセス要求に含まれるブートアドレスBAと、メモリアクセス要求を受け付けたときにバス50のバス制御部(不図示)によって発行される受付信号(不図示)を観測し、ブート終了信号S2を生成する。したがって、ブート終了信号S2は、プロセッサ部21aがリセット解除後に最初に出力するメモリアクセス要求が、バス50で受け付けられたサイクルで出力される。
【0030】
比較回路2201は、ブート中信号S1がセットされている期間に、プロセッサ部21aからのメモリアクセス要求に含まれるブートアドレスBAと、セキュアブートアドレス期待値BAEとを比較する。そして、比較回路2201は、比較結果に基づいてセキュアブートアドレスエラー信号ERRを生成する。
【0031】
図6、7は、本変形例に係るアドレスチェック部21aの動作を説明するためのタイミングチャートである。まず、図6を参照して、リセット解除後にプロセッサ部21aからのメモリアクセス要求に含まれるブートアドレスBAが改ざんされていない場合のアドレスチェック部22aの動作を説明する。
【0032】
外部リセット信号RESの入力に応じたリセットが解除され、リセット信号RSTがネゲートされると(時刻T01)、ブート中信号S1がセットされる。これにより、比較回路2201がイネーブル状態となる。また、リセットコントローラ10からプロセッサモジュール20aにセキュアブートアドレスBTAが転送される。プロセッサモジュール20aのプロセッサ部21aは、リセットコントローラ10によって指定されたセキュアブートアドレスBTAに基づき、ブートアドレス(BA)を含むメモリアクセス要求をバス50に出力する。比較回路2201は、プロセッサ部21aからのメモリアクセス要求に含まれるブートアドレスBAと、セキュアブートアドレス期待値BAEとの比較を行う。図6では、比較結果が一致を示すため、比較回路2201はセキュアブートアドレスエラー信号ERRをネゲートする。時刻T02において、プロセッサ部21aからのメモリアクセス要求がバスで受け付けられ、ブート終了検出回路2203がブート終了信号S2をアサートする。ブート中信号S1は、ブート終了信号S2によってリセット(クリア)される。したがって、比較回路2201がディスエーブル状態となり、以降の比較動作は行われない。
【0033】
次に、図7を参照して、リセット解除後にプロセッサ部21aからのメモリアクセス要求に含まれるブートアドレスBAが改ざんされた不正アドレスである場合のアドレスチェック部22aの動作を説明する。図7では、プロセッサ部21aから出力されたブートアドレスBAと、セキュアブートアドレス期待値BAEとが一致しない。したがって、時刻T11において、比較回路2201はセキュアブートアドレスエラー信号ERRをアサートする。これ以外のアドレスチェック部22aの動作については、図6と同様であるため、説明を省略する。
【0034】
プロセッサ部21aは、セキュアブートアドレスエラー信号ERRに基づいて、セキュアブートプログラムの実行可否を決定する。セキュアブートアドレスエラー信号ERRがネゲートされている場合は、プロセッサ部21aは、読み出したセキュアブートプログラムを実行する。一方、セキュアブートアドレスエラー信号ERRがアサートされた場合は、プロセッサ部21aは、読み出したプログラムの実行を行わず、リセット状態を維持する。
【0035】
実施の形態1の変形例によれば、半導体装置100aは、アドレスチェック部22aを有することによって、実施の形態1に係る半導体装置100とほぼ同様に、セキュアブートアドレスが改ざんされたか否かを確認することができる。さらに、実施の形態1の変形例によれば、アドレスチェック部22aは、プロセッサ部21aが出力するメモリアクセス要求に含まれるセキュアブートアドレスをチェックしている。したがって、リセットコントローラ10にノイズが加えられセキュアブートアドレスが改ざんされた場合のみならず、プロセッサ部21aにノイズが加えられメモリアクセス要求に含まれるセキュアブートアドレスが改ざんされたことも検出できる。これによって、不正なブートアドレスに基づく不正プログラム実行を防ぐことができ、より強固なセキュリティを実現することができる。
【0036】
(実施の形態2)
図8は、実施の形態2に係る半導体装置100bの構成例を示すブロック図である。実施の形態2に係る半導体装置100bと、図1に示す実施の形態1に係る半導体装置100との違いは、リセットコントローラ10およびプロセッサモジュール20がそれぞれ、リセットコントローラ10bおよびプロセッサモジュール20bに置き換えられており、プロセッサモジュール60がさらに追加されていることである。また、プロセッサモジュール20bは、実施の形態1で説明したプロセッサモジュール20と比べて、アドレスチェック部22がアドレスチェック部22bに置き換えられている点で異なる。これ以外の構成要素および動作については、実施の形態1で説明した半導体装置100と同様であるので、同一の構成については同一の符号を付し、重複した説明は省略する。
【0037】
実施の形態2において、プロセッサモジュール20bは、セキュアモジュールであって、セキュアブートや暗号化処理などセキュリティに関連した処理を実行する。以下、プロセッサモジュール20bをセキュアモジュール20bとも称する。一方、プロセッサモジュール60は、半導体装置100b全体の制御を行うプロセッサである。なお、図8では、二つのプロセッサモジュールしか示されていないが、プロセッサモジュールの数はこれに限定されない。また、プロセッサモジュール60は、複数のプロセッサにより冗長化されていてもよい。
【0038】
図9は、実施の形態2に係るリセットコントローラ10bの構成例を示すブロック図である。リセットコントローラ10bは、リセット設定レジスタ1010、リセット制御回路1020、および、ブートアドレス選択回路1030を有する。
【0039】
リセット設定レジスタ1010は、プロセッサモジュール60によって、リードおよびライトが可能なように構成されている。リセット設定レジスタ1010にデータが書き込まれることによって、リセット要求信号RRが生成される。リセット設定レジスタ1010には、少なくとも半導体装置100b(半導体チップ)全体のリセット(システムリセット)を要求するための第1データSRD1と、半導体装置100bの一部のモジュールのリセット(モジュールリセット)を要求するための第2データSRD2が書き込まれる。なお、第2データSRD2によってリセット対象となるモジュールは限定されないが、本実施の形態においては、第2データSRD2によって、セキュアモジュール20bのリセットが要求される場合を一例として説明する。
【0040】
リセット制御回路1020は、外部から入力される外部リセット信号RESまたはリセット要求信号RRなどのリセット要求に基づいて、リセット信号RST1-RSTnを生成する。リセット信号RST1-RSTnは、セキュアモジュール20b、プロセッサモジュール60、メモリ30、機能モジュール40等、半導体装置100bの各内部モジュールに供給されるリセット信号が含まれる。リセット制御回路1020は、リセット信号RST1-RSTnをアサートすることによってリセットを指示し、ネゲートすることによってリセットを解除する。
【0041】
また、リセット制御回路1020は、外部リセット信号RESまたはリセット要求信号RRに基づいて要求されたリセットが、システムリセットなのか、モジュールリセットなのかを識別し、システムリセット識別信号SRおよびモジュールリセット識別信号MRを生成する。なお、システムリセットは第1のリセット、モジュールリセットは第2のリセットとみなすことができる。また、システムリセット識別信号SRは第1のリセット識別信号、モジュールリセット識別信号MRは第2のリセット識別信号とみなすことができる。
【0042】
例えば、外部リセット信号RESが入力されたとき、および、リセット設定レジスタ1010に第1データSRD1が書き込まれたときには、リセット制御回路1020は、システムリセットを指示する。このとき、リセット制御回路1020は、すべてのリセット信号RST1-RSTnをアサートするとともに、システムリセット識別信号SRを生成する。一方、リセット設定レジスタ1010に第2データSRD2が書き込まれたときには、リセット制御回路1020は、モジュールリセットを指示するため、セキュアモジュール20bのリセット信号をアサートするとともに、モジュールリセット識別信号MRを生成する。なお、システムリセット識別信号SRおよびモジュールリセット識別信号MRは、リセット解除時にネゲートされる。
【0043】
ブートアドレス選択回路1030は、アドレスレジスタ1031と選択回路1032とを有する。
【0044】
アドレスレジスタ1031は、セキュアブートアドレスS_BA(第1のブートアドレス)とセキュアブートアドレスM_BA(第2のブートアドレス)とを保持する。セキュアブートアドレスS_BAは、システムリセット解除時に実行されるセキュアブートプログラムの先頭アドレスである。セキュアブートアドレスM_BAは、モジュールリセット解除時に実行されるセキュアブートプログラムの先頭アドレスであり、セキュアブートアドレスS_BAとは異なる。
【0045】
なお、システムリセット解除時に実行されるセキュアブートプログラムのための先頭アドレスは予め決められている。したがって、セキュアブートアドレスS_BAは、ユーザによって変更することはできない。一方、モジュールリセットのリセット対象であるプロセッサモジュール20bのリセットが解除された後は、プロセッサモジュール20bが実行するプログラムの正当性が確認できればよい。したがって、モジュールリセット解除時に実行されるセキュアブートプログラムの内容は、システムリセット解除時に実行されるセキュアブートプログラムとは異なり、ユーザによって設定される。そして、そのセキュアブートプログラムは、ユーザによってメモリの所定の領域内に格納される。したがって、セキュアブートアドレスM_BAは固定のアドレスではなく、ユーザによって設定可能である。
【0046】
選択回路1032は、システムリセット識別信号SRおよびモジュールリセット識別信号MRに基づいて、アドレスレジスタ1031が保持するセキュアブートアドレスを選択する。例えば、選択回路1032は、一旦アサートされたシステムリセット識別信号SRがネゲートされたときに、セキュアブートアドレスS_BAを選択しセキュアブートアドレスBTAとして出力する。また、選択回路1032は、一旦アサートされたモジュールリセット識別信号MRがネゲートされたときに、セキュアブートアドレスM_BAを選択しセキュアブートアドレスBTAとして出力する。
【0047】
次に、図10を参照して、本実施の形態に係るアドレスチェック部22bについて説明する。図10は、アドレスチェック部22bの構成の一例を示すブロック図である。アドレスチェック部22bは、比較回路2201、2204、および、OR回路2205を有する。アドレスチェック部22bは、リセットコントローラ10bからのセキュアブートアドレスBTAの正当性を確認して、確認結果をブートアドレスエラー信号ERRとして出力する。このように、リセットに応じてセキュアブートアドレスが選択される。
【0048】
比較回路2201は、システムリセットが解除されシステムリセット識別信号SRがネゲートされると、イネーブル状態となる。イネーブル状態となった比較回路2201は、リセットコントローラ10bから出力されたセキュアブートアドレスBTAと、セキュアブートアドレス期待値S_BAEとを比較する。セキュアブートアドレス期待値S_BAEは、システムリセット解除後に実行されるセキュアブートプログラムの先頭アドレスの期待値である。そして、比較回路2201は、比較結果に基づいてブートアドレスエラー信号S_ERRをアサートまたはネゲートする。
【0049】
比較回路2204は、モジュールリセットが解除されモジュールリセット識別信号MRがネゲートされると、イネーブル状態となる。イネーブル状態となった比較回路2204は、リセットコントローラ10bから出力されたセキュアブートアドレスBTAと、セキュアブートアドレス期待値M_BAEとを比較する。セキュアブートアドレス期待値M_BAEは、モジュールリセット解除後のセキュアブートプログラムの先頭アドレスの期待値である。そして、比較回路2204は、比較結果に基づいてブートアドレスエラー信号M_ERRをアサートまたはネゲートする。
【0050】
なお、上述のとおり、システムリセット解除後に実行されるセキュアブートプログラムの先頭アドレスは、予め決められている。したがって、比較回路2201は、リセットコントローラ10bからのブートアドレスBTAの全ビットと、セキュアブートアドレス期待値S_BAEの全ビットとが完全に一致するか否かを判定する。一方、モジュールリセット解除後のセキュアブートプログラムは、メモリ30の所定の領域内にユーザが割り当てるため、リセットコントローラ10bからのブートアドレスBTAがメモリ30の所定領域内に存在するかを判定すればよい。したがって、比較回路2204は、ブートアドレスBTAの上位側ビットと、セキュアブートアドレス期待値M_BAEの上位側ビットを比較する。
【0051】
OR回路2205は、ブートアドレスエラー信号S_ERR、M_ERRを受け取り、プロセッサモジュール20bのプロセッサ部21にセキュアブートアドレスエラー信号ERRを出力する。セキュアブートアドレスエラー信号ERRは、システムリセット解除後またはモジュールリセット解除後に指定されたセキュアブートアドレスが改ざんされた不正アドレスである場合にアサートされる。
【0052】
図11を参照して、リセット解除後の半導体装置100bの動作について説明する。まず、リセット制御回路1020は、外部リセット信号RESまたはリセット要求信号RRに基づいて要求されたリセットが、システムリセットなのか、モジュールリセットなのかを識別する(ステップS11)。要求されたリセットがシステムリセットである場合、ブートアドレス選択回路1030は、システムリセット解除後、システムリセット識別信号SRに基づいてセキュアブートアドレスS_BAを選択し、ブートアドレスBTAとして出力する(ステップS12)。アドレスチェック部22bの比較回路2201が、システムリセット識別信号SRに基づいてイネーブル状態となり、ブートアドレスBTAとセキュアブートアドレス期待値S_BAEとを比較する(ステップS13)。ブートアドレスBTAがセキュアブートアドレス期待値S_BAEと一致する場合(ステップS13のYES)は、リセットコントローラ10bから出力されたブートアドレスBTAは正しいと判断される。そして、プロセッサ部21は、ブートアドレスBTAに基づきメモリ30をアクセスし、システムリセット解除後に実行すべきセキュアブートプログラムを読み出して実行する(ステップS14)。一方、ブートアドレスBTAがセキュアブートアドレス期待値S_BAEと一致しない場合(ステップS13のNO)、ブートアドレスエラー信号S_ERRがアサートされ、結果、セキュアブートアドレスエラー信号ERRがアサートされる。したがって、プロセッサ部21は、メモリ30をアクセスせず、システムリセット状態を維持する(ステップS15)。
【0053】
同様に、要求されたリセットがモジュールリセットである場合、ブートアドレス選択回路1030は、モジュールリセット解除後に、モジュールリセット識別信号MRに基づいてセキュアブートアドレスM_BAを選択し、ブートアドレスBTAとして出力する(ステップS16)。アドレスチェック部22bの比較回路2204は、モジュールリセット識別信号MRに基づいてイネーブル状態となり、ブートアドレスBTAの上位側ビットとモジュールリセット解除後に実行されるセキュアブートのためのセキュアブートアドレスM_BAの上位側ビットとの比較を行い、ブートアドレスBTAが所定のアドレス領域内にあるか判定する(ステップS17)。ブートアドレスBTAの上位側ビットとセキュアブートアドレスM_BAの上位側ビットとが一致する場合(ステップS17のYES)、リセットコントローラ10bから出力されたブートアドレスBTAは正しいと判断される。そして、プロセッサ部21は、ブートアドレスBTAに基づいてメモリ30をアクセスし、モジュールリセット解除後に実行すべきセキュアブートプログラムを読み出して実行する(ステップS18)。一方、ブートアドレスBTAの上位側ビットが、セキュアブートアドレスM_BAの上位側ビットと一致しない場合(ステップS17のNO)、ブートアドレスエラー信号M_ERRがアサートされ、結果、セキュアブートアドレスエラー信号ERRがアサートされる。したがって、プロセッサ部21は、メモリ30をアクセスせず、モジュールリセット状態を維持する(ステップS15)。
【0054】
以上のように、実施の形態2によれば、アドレスチェック部22bを備えているため、リセット解除後にリセットコントローラ10bが指定するブートアドレスの改ざんチェックを行うことができる。さらに、実施の形態2によれば、リセットコントローラ10bによってリセット識別信号を生成し、アドレスチェック部22bは、リセット識別信号に応じて、セキュアブートアドレス期待値を切り替える。したがって、システムリセットのみならずモジュールリセット機能が実装された半導体装置であっても、システムリセット解除後およびモジュールリセット解除後に指定されるセキュアブートアドレスのそれぞれの改ざんチェックを行い、要求されたリセットに対応した正しいセキュアブートプログラムを実行することができる。
【0055】
さらに、実施の形態2によれば、システムリセット解除後およびモジュールリセット解除後にリセットコントローラ10bが指定するブートアドレスの改ざんが検出された場合には、プロセッサ部21は、リセットコントローラ10bが指定するブートアドレスに基づくプログラムを起動することなく、リセット状態を維持する。これによって、改ざんされた不正なブートアドレスによって指定されるプログラムの実行を防ぐことができ、強固なセキュリティを実現することができる。
【0056】
(実施の形態2の変形例)
次に、実施の形態2の変形例を説明する。上述した実施の形態2において、実施の形態1の変形例と同様に、プロセッサモジュール20bからバスに出力されるメモリアクセス要求に含まれるセキュアブートアドレスをチェック対象としてもよい。図12は、実施の形態2の変形例に係る半導体装置100cのプロセッサモジュール20c(セキュアモジュール20c)の構成例を示すブロック図である。
【0057】
プロセッサモジュール(セキュアモジュール)20cは、プロセッサ部21cとアドレスチェック部22cとを含む。プロセッサ部21cは、リセットコントローラ10bによって指定されたセキュアブートアドレスBTAを用いてメモリアクセスを行う。アドレスチェック部22cは、プロセッサ部21cがバス50に出力するメモリアクセス要求に含まれるアドレスが改ざんされているか否かをチェックする。そして、アドレスチェック部22cは、チェック結果に基づきセキュアブートアドレスエラー信号ERRを生成し、プロセッサ部21cにフィードバッグする。
【0058】
図13は、アドレスチェック部22cの構成例を示すブロック図である。実施の形態2で説明したアドレスチェック部と比べて、アドレスチェック部22cは、ブート中設定回路2202c、2206c、ブート終了検出回路2203cをさらに備える点で異なる。これ以外の構成要素および動作については、実施の形態2で説明した図10のアドレスチェック部22bと同様であるので、同一の構成については同一の符号を付し、重複した説明は省略する。
【0059】
ブート中設定回路2202c、2206cは、図5に示す実施の形態1の変形例のブート中設定回路2202と同じ構成および機能を有する。ブート中設定回路2202c、2206cはそれぞれ、システムリセット識別信号SRおよびモジュールリセット識別信号MRによってセットされる。そして、ブート中設定回路2202c、2206cはいずれも、ブート終了信号S2cによってリセット(クリア)される。すなわち、ブート中信号S1cは、システムリセット識別信号SRがアサートされてからブート処理が完了するまで出力される。ブート中信号S3cは、モジュールリセット識別信号MRがアサートされてからブート処理が完了するまで出力される。
【0060】
ブート終了検出回路2203cは、上述した実施の形態1の変形例のブート終了検出回路2203と同様であり、システムリセット解除後またはモジュールリセット解除後にプロセッサ部21cが出力するメモリアクセス要求に含まれるブートアドレスBAと、バス50からの受付信号(不図示)を観測し、ブート終了信号S2cを生成する。
【0061】
比較回路2201、2204はそれぞれ、ブート中信号S1c、S3cに基づいて、イネーブル状態となる。システムリセットにおいてイネーブル状態となる比較回路2201は、プロセッサ部21cが出力するメモリアクセス要求に含まれるブートアドレス(BA)と、システムリセット後に実行されるセキュアブートプログラムのセキュアブートアドレス期待値S_BAEとを比較する。また、モジュールリセットにおいてイネーブル状態となった比較回路2204は、プロセッサ部21cが出力するメモリアクセス要求に含まれるブートアドレス(BA)と、モジュールリセット後に実行されるセキュアブートプログラムのセキュアブートアドレス期待値M_BAEとを比較する。
【0062】
したがって、実施の形態2の変形例によれば、実施の形態2とほぼ同様に、システムリセットおよびモジュールリセット後に指定されるセキュアブートアドレスが改ざんされたか否かを検出することができる。しかも、実施の形態2の変形例によれば、ブート中設定回路2202c、2206cおよびブート終了検出回路2203cを備えることによって、リセット解除後最初に出力されるメモリアクセス要求のアドレスの改ざんチェックを行うことができる。これによって、リセットコントローラ10bのみならず、プロセッサモジュール20cにおいてセキュアブートアドレスが改ざんされたことも検出できる。
【0063】
(実施の形態3)
次に、実施の形態3について説明する。図14は、実施の形態3に係る半導体装置100dの構成例を示すブロック図である。実施の形態3に係る半導体装置100dと、図8に示される実施の形態2の半導体装置100bとの違いは、リセットコントローラ10bとアドレスチェック部22bがそれぞれリセットコントローラ10d、アドレスチェック部22dに置き換えられ、さらに、ヒューズモジュール70、および、デコーダ80が追加されていることである。それ以外の構成要素およびその機能は、実施の形態2で説明した半導体装置100bと同様であるため、同一の構成については同一の符号を付し、重複した説明は省略する。
【0064】
ヒューズモジュール70は、電気的に書き込みが可能な電気ヒューズを有する。ヒューズモジュール70は、半導体装置100dの製造メーカーまたは評価者によって、顧客出荷状態やデバッグモード状態などの半導体装置100dの状態を示すライフサイクルステート情報が書き込まれる。
【0065】
デコーダ80は、システムリセット解除時に、ヒューズモジュール70に記憶されているライフサイクルステート情報を取り込み、取り込んだライフサイクルステート情報に基づいてライフサイクルステート信号LCSを生成する。ライフサイクルステート信号LCSは、セキュアブート有効状態を示すセキュアブートフラグビットを含む。例えば、ライフサイクルステート情報が顧客出荷状態を示すときには、デコーダ80は通常動作モードを示すライフサイクルステート信号LCSを生成する。このとき、ライフサイクルステート信号LCSに含まれるセキュアブートフラグビットはセキュアブートが有効であることを示すように設定される。例えば、セキュアブートフラグビットは「1」となる。また、ライフサイクルステート情報がデバッグ状態を示すときには、デバッグモードを示すライフサイクルステート信号LCSを生成する。このとき、ライフサイクルステート信号LCSに含まれるセキュアブートフラグビットはセキュアブートが無効なことを示すように設定される。例えば、セキュアブートフラグビットは「0」となる。
【0066】
図15は、実施の形態3に係るリセットコントローラ10dの構成例を示すブロック図である。リセットコントローラ10dは、図9に示される実施の形態2のリセットコントローラ10bと比べて、アドレス選択回路1030がアドレス選択回路1030dに置き換えられている点で異なる。アドレス選択回路1030dは、アドレスレジスタ1031dと選択回路1032dとを含む。
【0067】
アドレスレジスタ1031dは、システムリセット解除後に実行されるセキュアブートプログラム、および、モジュールリセット解除後に実行されるセキュアブートプログラムのアドレス情報に加えて、セキュアブートプログラム以外のブートプログラムの先頭アドレス情報を保持する。すなわち、アドレスレジスタ1031dは、セキュアブートアドレスS_BA(第1のブートアドレス)とセキュアブートアドレスM_BA(第2のブートアドレス)に加えて、ブートアドレスD_BA(第3のブートアドレス)とを保持する。ブートアドレスD_BAは、例えば、デバッグモードで使われる。
【0068】
選択回路1032dは、リセット制御回路1020が出力するシステムリセット識別信号SRとモジュールリセット識別信号MR、および、デコーダ80が生成するライフサイクルステート信号LCSに基づいて、アドレスレジスタ1031dに保持されるブートアドレスを選択する。ライフサイクルステート信号LCSのセキュアブートフラグビットが「1」、すなわち、セキュアブートが有効であることを示す場合には、選択回路1032dは、システムリセット識別信号SRまたはモジュールリセット識別信号MRに基づいて、セキュアブートアドレスS_BAまたはセキュアブートアドレスM_BAを選択する。また、ライフサイクルステート信号LCSのセキュアブートフラグビットが「0」、すなわち、セキュアブートが無効であることを示す場合には、選択回路1032dは、システムリセット識別信号SRに応じてブートアドレスD_BAを選択する。
【0069】
図16は、実施の形態3に係るアドレスチェック部22dの構成例を示すブロック図である。アドレスチェック部22dは、図10に示す実施の形態2のアドレスチェック部22bと比べて、ライフサイクルステート判定部2207、およびイネーブル信号生成回路2208、2209が追加されている点で異なる。それ以外の構成は、図10に示す実施の形態2で説明したアドレスチェック部22bと同様であるため、同一の構成については同一の符号を付し、その説明を省略する。
【0070】
ライフサイクルステート判定部2207は、ライフサイクルステート信号LCSによるセキュアブートの有効または無効を判定するために、ライフサイクルステート信号LCSと、セキュアブートが有効であることを示すセキュアブート有効データSEとを比較する。すなわち、ライフサイクルステート判定部2207は、ライフサイクルステート信号LCSのセキュアブートフラグビットが「1」であるか否かを判定する。ライフサイクルステート信号LCSに基づいてセキュアブートが有効であると判定された場合には、ライフサイクルステート判定部2207は、「1」を出力する。一方、セキュアブートが無効であると判定した場合には、ライフサイクルステート判定部2207は、「0」を出力する。
【0071】
イネーブル信号生成回路2208、2209はそれぞれ比較回路2201、2204のためのイネーブル信号EN1、EN2を生成する。イネーブル信号生成回路2208は、ライフサイクルステート判定部2207の判定結果とシステムリセット識別信号SRとに基づいて比較回路2201のイネーブル信号EN1を生成する。同様に、イネーブル信号生成回路2209は、ライフサイクルステート判定部2207の判定結果とモジュールリセット識別信号MRとに基づいて、比較回路2204のイネーブル信号EN2を生成する。例えば、イネーブル信号生成回路2208、2209は、例えばAND回路であり、対応するリセット識別信号がネゲートされたとき、すなわち、リセットが解除されたときにライフサイクルステート判定部2207による判定結果に基づきイネーブル信号EN1、EN2を生成する。
【0072】
セキュアブートが有効である場合は、イネーブル信号生成回路2208は、システムリセット識別信号SRに応じて、イネーブル信号EN1をアサートする。したがって、比較回路2201がイネーブル状態となる。また、イネーブル信号生成回路2209は、モジュールリセット識別信号MRに応じて、比較回路2204のイネーブル信号EN2をアサートする。したがって、比較回路2204がイネーブル状態となる。すなわち、セキュアブートが有効である場合には、セキュアブートアドレスの改ざんチェックを行う。
【0073】
一方、セキュアブート無効である場合には、イネーブル信号生成回路2208、2209は、対応するリセット識別信号に関わらずイネーブル信号EN1,EN2をアサートしない。すなわち、比較回路2001、2204はディスエーブル状態になり、リセットコントローラ10bによって指定されたセキュアブートアドレスBTAの改ざんチェックは行わない。このように、ライフサイクルステート信号LCSは、セキュアブートアドレスの改ざんチェック要否信号とみなすことができる。
【0074】
図17は、実施の形態3におけるプロセッサモジュール20dの動作フローである。まず、アドレスチェック部22dのライフサイクルステート判定部2207は、ライフサイクルステート信号LCSに基づいて、セキュアブートが有効か無効かを判定する(ステップS21)。セキュアブートが有効な場合は、リセット識別信号に応じて比較回路2201または比較回路2204をイネーブル状態にする(ステップS22)。イネーブル状態にされた比較回路2201または比較回路2204は、リセットコントローラ10dによって指定されたセキュアブートアドレスBTAと対応する期待値とを比較し、リセットコント―ラ10dによって指定されたセキュアブートアドレスBTAが改ざんされているか確認する(ステップS23)。セキュアブートアドレスBTAが改ざんされていない場合(ステップS23のNO)は、プロセッサ部21は、リセットコントローラ10dによって指定されたセキュアブートアドレスBTAに基づいてセキュアブートプログラムを読み出し実行する(ステップS24)。一方、セキュアブートアドレスBTAの改ざんを検出した場合は、プロセッサ部21はリセット状態を維持する(ステップS25)。
【0075】
一方、セキュアブートが無効である場合は、比較回路2201、2204はディセーブル状態になる(ステップS26)。したがって、リセットコントローラ10dによって指定されたブートアドレスBTAの改ざんチェックは行われず、プロセッサ部21は、ブートアドレスBTAによって指定されるプログラムを読み出し実行する(ステップS27)。
【0076】
以上のとおり、実施の形態3は、セキュアブートアドレスの改ざんチェックを行うアドレスチェック部22dを有しているため、実施の形態2とほぼ同様な効果が得られる。さらに、ヒューズモジュール70に設定されたライフサイクルステート情報に基づいて、リセットコントローラ10dで指定されたブートアドレスの改ざんチェック要否を制御する。これにより、デバッグモードでは、任意のアドレスからのブート処理が実行でき、デバッグ効率を向上させることができる。
【0077】
(実施の形態3の変形例)
上述した実施の形態3において、実施の形態2の変形例と同様に、プロセッサモジュール20bからバス50に出力されるメモリアクセス要求に含まれるセキュアブートアドレスを用いて、改ざんチェックを行ってもよい。図18は、実施の形態3の変形例に係る半導体装置100eのプロセッサモジュール20e(セキュアモジュール20e)の構成例を示すブロック図である。
【0078】
プロセッサモジュール20eは、プロセッサ部21eとアドレスチェック部22eとを含む。プロセッサ部21eは、リセットコントローラによって指定されたセキュアブートアドレスBTAに基づきメモリアクセス要求を生成する。アドレスチェック部22eは、ライフサイクルステート信号LCSがセキュアブート有効を示している場合には、プロセッサ部21eが生成したメモリアクセス要求に含まれるセキュアブートアドレスが改ざんされているか否かをチェックする。そして、アドレスチェック部22eは、チェック結果に基づきセキュアブートアドレスエラー信号ERRを生成し、プロセッサ部21eにフィードバッグする。一方、ライフサイクルステート信号LCSが、セキュアブート無効を示している場合には、アドレス改ざんチェックが行われず、リセットコントローラによって指定されたブートアドレスに基づくプログラムが読み出され実行される。
【0079】
図19は、実施の形態3の変形例に係るアドレスチェック部22eの構成例を示すブロック図である。図16に示す実施の形態3のアドレスチェック部22dに比べて、アドレスチェック部22eは、ブート中設定回路2202e、2206e、および、ブート終了検出回路2203eをさらに備える点で異なる。これ以外の構成要素および動作については、実施の形態3のアドレスチェック部22dと同様であるので、同一の構成については同一の符号を付し、重複した説明は省略する。
【0080】
ブート中設定回路2202e、2206eは、図5に示す実施の形態1の変形例のブート中設定回路2202と同じ構成および機能を有する。ブート中設定回路2202e、2206eはそれぞれ、システムリセット識別信号SRおよびモジュールリセット識別信号MRによってセットされる。そして、ブート中設定回路2202e、2206eはいずれも、ブート終了信号S2eによってリセット(クリア)される。すなわち、ブート中信号S1eは、システムリセット識別信号SRがアサートされてからブート処理が完了するまで出力される。ブート中信号S3eは、モジュールリセット識別信号MRがアサートされてからブート処理が完了するまで出力される。
【0081】
また、ブート終了検出回路2203eは、上述した実施の形態1の変形例のブート終了検出回路2203と同様に、システムリセット解除後またはモジュールリセット解除後にプロセッサ部21eが出力するメモリアクセス要求に含まれるブートアドレスBAと、バス50からの受付信号(不図示)を観測し、ブート終了信号S2eを生成する。
【0082】
したがって、ライフサイクルステート信号LCSがセキュアブート有効を示す場合には、比較回路2201は、システムリセットの指示がされてから、バスによるブートアドレスの受付信号を受信するまでの間、イネーブル状態となる。また、比較回路2204は、モジュールリセットの指示がされてから、バスによるブートアドレスの受付信号を受信するまでの間、イネーブル状態となる。イネーブル状態となった比較回路2201、2204はそれぞれ、バス50に出力されるブートアドレスBAと、それぞれのセキュアブートアドレス期待値(S_BAE,M_BAE)とを比較し、セキュアブートプログラムをアクセスするためのアドレスが改ざんされていないかを検出する。一方、ライフサイクルステート信号LCSがセキュアブート無効を示す場合には、比較回路2201、2204はディセーブル状態となり、バス50に出力されるブートアドレスBAの改ざんチェックは行われない。
【0083】
したがって、実施の形態3の変形例によれば、実施の形態3とほぼ同様に、システムリセットおよびモジュールリセット後に指定されるセキュアブートアドレスが改ざんされたか否かを検出することができる。また、実施の形態3の変形例によれば、ブート中設定回路2202e、2206eおよびブート終了検出回路2203eを備えることによって、セキュアブートが有効な場合には、リセット解除後最初に出力されるメモリアクセス要求のアドレスの改ざんチェックを行う。これにより、リセットコントローラ10dのみならず、プロセッサモジュール20dにおいてセキュアブートアドレスが改ざんされたことも検出できる。
【0084】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【符号の説明】
【0085】
10、10b、10d リセットコントローラ
20、20a、20b、20c、20d、20e プロセッサモジュール
21、21a、21c、21e プロセッサ部
22、22a、22b、22c、22d、22e アドレスチェック部
30 メモリ
40 機能モジュール
50 バス
60 プロセッサモジュール
70 ヒューズモジュール
80 デコーダ
100、100a、100b、100c、100d、100e 半導体装置
1010 リセット設定レジスタ
1020 リセット制御回路
1030、1030d アドレス選択回路
2201、2204 比較回路
2202、2202c、2202e、2206c、2206e ブート中設定回路
2203、2203c、2203e ブート終了検出回路
2207 ライフサイクルステート判定部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19