1.実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
〔1〕<遷移可能な3状態のセキュリティ状態>
本発明の代表的な実施の形態に係る半導体装置(10)は、夫々内部バス(18)に接続された電気的に書き換え可能な不揮発性記憶装置(14)、命令を実行する中央処理装置(11)、外部インタフェース回路(16,17)、及び外部バス回路(19)を有し、前記不揮発性記憶装置の遷移可能なセキュリティ状態として、第1セキュリティ状態乃至第3セキュリティ状態を有する。
第1セキュリティ状態(アンプロテクト状態1)は、前記不揮発性記憶装置に秘密情報がセットされていないとき、前記不揮発性記憶装置に対する読み出しが許可され、且つ前記不揮発性記憶装置に対する書き換えが許可され、且つ前記外部インタフェース回路からの外部出力が許可される状態であり、
第2セキュリティ状態(プロテクトアンロック状態2)は、前記不揮発性記憶装置に前記秘密情報がセットされているとき、前記不揮発性記憶装置に対する読み出しが許可され、且つ当該秘密情報を利用する認証結果が正当であることを条件に、前記不揮発性記憶装置に対する書き換えが許可され、且つ前記外部インタフェース回路からの外部出力が許可される状態であり、
第3セキュリティ状態(プロテクトロック状態3)は、前記不揮発性記憶装置に前記秘密情報がセットされているとき、当該秘密情報を利用する認証結果の正当性が確認されるまで、前記不揮発性記憶装置に対する書き換えが禁止され、且つ前記不揮発性記憶装置に対する読み出しが所定の条件下で禁止され、且つ前記外部インタフェース回路からの外部出力が許可される状態である。
これによれば、前記セキュリティ状態の設定及び解除は秘密情報に関する権限に基づいて決めるから、システムデバッグ時及び実機搭載時の何れの動作の区別なくセキュリティ状態の設定及び解除が可能である。また、秘密情報は保護対象にされる不揮発性記憶装置で保持し、保持状態では少なくとも第2セキュリティ状態にされ、当該秘密情報の書き換えや外部への読み出しは認証一致を条件とするから、秘密情報は容易に漏洩せず、この点で不揮発性記憶装置に対する保護には高い信頼がある。
〔2〕<メモリ制御部でセキュリティ制御>
項1の半導体装置において、前記不揮発性記憶装置は不揮発性メモリセルのアレイが配置された不揮発性記憶部(13)と、前記不揮発性記憶部のメモリセルに対する消去書き込みと読み出し動作手順を制御するメモリ制御部(12)とを有し、前記メモリ制御部は更に前記第1セキュリティ状態乃至第3セキュリティ状態の制御を行う。
メモリ制御部がセキュリティ状態の制御を行うから、換言すれば、セキュリティ状態の制御手法はメモリ制御部の論理構成によって隠蔽されるから、第三者はセキュリティ状態の制御方法について容易に知ることができず、これによってセキュリティ性が強化される。
〔3〕<リセットによるセキュリティ状態の維持>
項1又は2の半導体装置において、前記第2セキュリティ状態又は第3セキュリティ状態において指示される半導体装置のリセット動作において前記メモリ制御部は前記不揮発性記憶装置の初期セキュリティ状態を第3セキュリティ状態とする。
半導体装置に対する強制リセットによって不揮発性記憶装置に対する保護が解除されることはない。第1セキュリティ状態でリセットされたときは第1セキュリティ状態にされ、頻繁にリセット動作が入るようなシステムデバッグ動作ではリセット毎に不揮発性記憶装置に対する保護が働いて書き込みできなくなったりする不便はない。
〔4〕<セキュリティ制御コマンド>
項2の半導体装置において、前記メモリ制御部は、前記第1セキュリティ状態乃至第3セキュリティ状態の制御を行うためのコマンドセットとして、セットコマンド、リセットコマンド及び認証コマンドを有する。前記セットコマンドは、外部インタフェース回路から入力された秘密情報を前記不揮発性記憶部の前記所定の記憶領域に書き込む動作を指示するコマンドである。リセットコマンドは、前記所定の記憶領域の情報に対して無効を指示するコマンドである。前記認証コマンドは、前記所定の記憶領域に記憶されている秘密情報と外部インタフェース回路から与えられた情報を比較し、比較一致により認証正当、比較不一致により認証不当、と判別して前記セキュリティ状態の遷移制御を行う動作を指示するコマンドである。
前記セキュリティ制御用のコマンドに応答する動作はメモリ制御部の論理構成によって隠蔽される。
〔5〕<セキュリティ状態の遷移制御>
項4の半導体装置において、前記メモリ制御部は、前記第2セキュリティ状態(プロテクトアンロック状態)における前記リセットコマンドの実行、又は前記所定の記憶領域の情報が無効にされている状態での半導体装置のリセット動作により、セキュリティ状態を第1セキュリティ状態(アンプロテクト状態)とする。
また、前記メモリ制御部は、前記第1セキュリティ状態における(アンプロテクト状態)セットコマンドの実行、又は第3セキュリティ状態(プロテクトロック状態)における認証コマンド実行による認証結果の認証正当により、セキュリティ状態を前記第2セキュリティ状態とする。
また、前記メモリ制御部は、前記第2セキュリティ状態(プロテクトアンロック状態)における認証コマンド実行による認証結果の認証不当、又は前記所定の記憶領域に秘密情報がセットされている状態での半導体装置のリセット動作により、セキュリティ状態を第3セキュリティ状態(プロテクトロック状態)とする。
上記遷移制御により、半導体装置に対する強制リセットによって不揮発性記憶装置に対する保護が解除されることはない。第1セキュリティ状態でリセットされたときは第1セキュリティ状態にされ、頻繁にリセット動作が入るようなシステムデバッグ動作ではリセット毎に不揮発性記憶装置に対する保護が働いて書き込みできなくなったりする不便はない。
〔6〕<制御モードレジスタ>
項4の半導体装置において、セキュリティ制御モードビット(CM)を有する制御モードレジスタ(MREG)を更に有する。前記セキュリティ制御モードビットが第1の値に設定されたとき、前記セットコマンド、リセットコマンド及び認証コマンドの実行が可能にされる。前記セキュリティ制御モードビットが第2の値に設定されたとき、前記セットコマンド、リセットコマンド及び認証コマンドの実行によるセキュリティ状態の変更が不可能にされる。
秘密情報を用いたセキュリティ状態の遷移制御を必要に応じて非選択にすることができるという便に供する。セキュリティ制御モードビットを操作してセキュリティ状態の遷移制御を選択から非選択に切替えても、そのときの第3セキュリティ状態又は第2セキュリティ状態が第1セキュリティ状態にされることは阻止されている。
〔7〕<セキュリティ制御ステータスレジスタ>
項6の半導体装置において、前記セキュリティ制御モードにおいて現在のセキュリティ状態を示すセキュリティ制御ステータスレジスタ(SREG)を更に備える。
メモリ制御部等による内部動作の必要に応じてセキュリティ状態を容易に確認することが可能である。
〔8〕<不揮発性記憶装置からの読み出し禁止>
項1乃至7の何れかの半導体装置において、前記所定の条件下とは前記中央処理装置による前記外部バス回路を経由した外部アドレス空間への命令フェッチを一旦検出した以降である。前記第3セキュリティ状態における不揮発性記憶装置からの読み出し禁止は、読み出し要求に応答する前記不揮発性記憶装置の出力をメモリ読み出し動作によらない所定の既定値又は前記不揮発性記憶装置の出力データとは異なるランダムな値とすることである。
書き換えが禁止された状態の不揮発性記憶装置が保有するプログラムを実行する正規の状態において、不正行為は外部アドレス空間から中央処理装置に不正なプログラムをフェッチさせることに端を発すると想定される。そのため、それ以前の正規のプログラム実行状態では不揮発性記憶装置から外部へのデータの読み出しなどが行われる場合にこれを許容できるようにし、一旦不正と想定される外部空間からの命令フェッチサイクルが発生された後は不揮発性記憶装置に記憶された記憶情報を一切外部へ出力させず、記憶情報の保護を最優先とすることができる。
また、第3セキュリティ状態において前記所定の条件下では不揮発性記憶装置が保持する正規のデータは如何なる意味においても不揮発性記憶装置の外部に存在することにはならず、半導体装置の外部への正規データの出力を阻止しても内部のバスやバッファ上に滞留するという事態も抑制することができ、この点においても万全のセキュリティ性を達成することができる。
〔9〕<秘密情報の外部出力禁止>
項1乃至7の何れかの半導体装置において、前記メモリ制御部は、前記内部バスを介して与えられる秘密情報を記憶する領域への読み出しアクセスの要求を無効にする。
第1セキュリティ状態においても秘密情報の漏洩に万全を期することができる。
〔10〕<遷移可能な5状態のセキュリティ状態>
本発明の別の実施の形態に係る半導体装置(400)は、夫々内部バス(418)に接続された電気的に書き換え可能な不揮発性記憶装置(414)、命令を実行する中央処理装置(411)、デバッグ専用の外部インタフェースに割り当てられた第1外部インタフェース回路(417)、その他の外部インタフェースに割り当てられた第2外部インタフェース回路(416)、及び外部バス回路(419)を有する半導体装置である。
また、前記半導体装置は前記不揮発性記憶装置の遷移可能なセキュリティ状態として、第1セキュリティ状態乃至第5セキュリティ状態を有する。
第1セキュリティ状態(アンプロテクト状態1)は、前記不揮発性記憶装置に第1秘密情報及び第2秘密情報がセットされていないとき、前記不揮発性記憶装置に対する読み出しが許可され、且つ前記不揮発性記憶装置に対する書き換えが許可され、且つ前記第1外部インタフェース回路及び第2外部インタフェース回路からの外部出力が許可される状態であり、
第2セキュリティ状態(第1プロテクトアンロック状態2A)は、前記不揮発性記憶装置に前記第1秘密情報がセットされているとき、前記不揮発性記憶装置に対する読み出しが許可され、且つ当該秘密情報を利用する認証結果が正当であることを条件に、前記不揮発性記憶装置に対する書き換えが許可され、且つ前記第1外部インタフェース回路及び第2外部インタフェース回路からの外部出力が許可される状態である。
また、第3セキュリティ状態(第1プロテクトロック状態3A)は、前記不揮発性記憶装置に前記第1秘密情報セットされているとき、当該秘密情報を利用する認証結果の正当性が確認されるまで、前記不揮発性記憶装置に対する書き換えが禁止され、且つ前記不揮発性記憶装置に対する読み出しが所定の条件下で禁止され、且つ前記第1外部インタフェース回路及び第2外部インタフェース回路からの外部出力が許可される状態であり、
第4セキュリティ状態(第2プロテクトアンロック状態2B)は、前記不揮発性記憶装置に前記第2秘密情報がセットされているとき、前記不揮発性記憶装置に対する読み出しが許可され、且つ当該秘密情報を利用する認証結果が正当であることを条件に、前記不揮発性記憶装置に対する書き換えが許可され、且つ前記第1外部インタフェース回路及び第2外部インタフェース回路からの外部出力が許可される状態であり、
第5セキュリティ状態(第2プロテクトロック状態3B)は、前記不揮発性記憶装置に前記第2秘密情報がセットされているとき、当該秘密情報を利用する認証結果の正当性が確認されるまで、前記不揮発性記憶装置に対する書き換えが禁止され、且つ前記不揮発性記憶装置に対する読み出しが所定の条件下で禁止され、且つ前記第1外部インタフェース回路のインタフェース動作が無効にされ、且つ前記第2外部インタフェース回路からの外部出力が許可される状態である。
項1の半導体装置に対して第4及び第5セキュリティ状態を採り得る点が相違される。第4及び第5セキュリティ状態への遷移に用いる秘密情報が第2及び第3セキュリティ状態への遷移に用いる秘密情報と相違され、第5セキュリティ状態では第1外部インタフェース回路が不使用にされる点が第3セキュリティ状態と相違される。したがって、不揮発性記憶装置を単に書き換えるような処理主体に対しては第1、第4及び第5セキュリティ状態への遷移だけで運用させることにより、インタフェース仕様が公開されるデバッグ専用の第1外部インタフェース回路を使用した半導体装置内部の不正アクセスによる不揮発性記憶装置に対するアタックを容易に行えないようになる。一方、システムデバッグの一環として不揮発性記憶装置の書き換えを伴う処理などを行うような処理主体に対しては第1、第2及び第3セキュリティ状態への遷移も可能に運用させることにより、使い勝手の良好なデバッグ環境を提供することが可能になる。
〔11〕<メモリ制御部でセキュリティ制御>
項10の半導体装置において、前記不揮発性記憶装置は不揮発性メモリセルのアレイが配置された不揮発性記憶部と、前記不揮発性記憶部のメモリセルに対する消去書き込みと読み出し動作手順を制御するメモリ制御部とを有する。前記メモリ制御部は更に前記第1セキュリティ状態乃至第5セキュリティ状態の制御を行う。
メモリ制御部がセキュリティ状態の制御を行うから、セキュリティ状態の制御手法はメモリ制御部の論理構成によって隠蔽され、第三者はセキュリティ状態の制御方法について容易に知ることができず、これによってセキュリティ性が強化される。
〔12〕<リセットによるセキュリティ状態の維持>
項11の半導体装置において、前記第2セキュリティ状態又は第3セキュリティ状態において指示される半導体装置のリセット動作において前記メモリ制御部は前記不揮発性記憶装置の初期セキュリティ状態を第3セキュリティ状態とし、前記第4セキュリティ状態又は第5セキュリティ状態において指示される半導体装置のリセット動作において前記メモリ制御部は前記不揮発性記憶装置の初期セキュリティ状態を第5セキュリティ状態とする。
半導体装置に対する強制リセットによって不揮発性記憶装置に対する保護が解除されることはない。第1セキュリティ状態でリセットされたときは第1セキュリティ状態にされ、頻繁にリセット動作が入るようなシステムデバッグ動作ではリセット毎に不揮発性記憶装置に対する保護が働いて書き込みできなくなったりする不便はない。
〔13〕<第1,第2秘密情報の格納先個別化>
項11の半導体装置において、前記不揮発性記憶部は前記第1秘密情報の格納に割り当てられた第1記憶領域と第2秘密情報の格納に割り当てられた第2記憶領域とを別々に有する。
〔14〕<セキュリティ制御コマンド>
項13の半導体装置において、前記メモリ制御部は、前記第1セキュリティ状態乃至第5セキュリティ状態の制御を行うためのコマンドセットとして、セットコマンド、リセットコマンド及び認証コマンドを有する。前記セットコマンドは、前記第1外部インタフェース回路又は第2外部インタフェース回路から入力された情報を前記第1記憶領域又は第2記憶領域を指定して書き込む動作を指示するコマンドである。リセットコマンドは、前記第1記憶領域及び第2記憶領域の情報に対して無効を指示するコマンドである。前記認証コマンドは、前記第1記憶領域又は第2記憶領域を指定して入力された情報を指定された前記第1記憶領域又は第2記憶領域の情報とを比較し、指定された記憶領域の情報に関する比較一致により当該指定された記憶領域の秘密譲情報について認証正当、指定された記憶領域の情報に関する比較不一致により認証不当、と判別して前記セキュリティ状態の遷移制御を行う動作を指示するコマンドである。
前記セキュリティ制御用のコマンドに応答する動作はメモリ制御部の論理構成によって隠蔽される。
〔15〕<セキュリティ状態の遷移制御>
項14の半導体装置において、前記メモリ制御部は、前記第2セキュリティ状態(第1プロテクトアンロック状態)における前記リセットコマンドの実行、前記第4セキュリティ状態(第2プロテクトアンロック状態)における前記リセットコマンドの実行、又は前記第1記憶領域及び第2記憶領域の情報が無効にされている状態での半導体装置のリセット動作により、セキュリティ状態を第1セキュリティ状態(アンプロテクト状態)とする。前記第1セキュリティ状態における(アンプロテクト状態)前記第1記憶領域を指定したセットコマンドの実行、又は第3セキュリティ状態(第1プロテクトロック状態)における前記第1記憶領域を指定した認証コマンド実行による認証結果の認証正当により、セキュリティ状態を前記第2セキュリティ状態とする。前記第2セキュリティ状態(第1プロテクトアンロック状態)における前記第1記憶領域を指定した認証コマンド実行による認証結果の認証不当、又は前記第1記憶領域に秘密情報がセットされている状態での半導体装置のリセット動作により、セキュリティ状態を第3セキュリティ状態(第1プロテクトロック状態)とする。前記第1セキュリティ状態(アンプロテクト状態)における前記第2記憶領域を指定したセットコマンドの実行、第5セキュリティ状態(第2プロテクトロック状態)における前記第2記憶領域を指定した認証コマンド実行による認証結果の認証正当、又は前記第2セキュリティ状態における(第1プロテクトアンロック状態)前記第2記憶領域を指定したセットコマンドの実行により、セキュリティ状態を前記第4セキュリティ状態(第2プロテクトアンロック状態)とする。前記第4セキュリティ状態(第2プロテクトアンロック状態)における前記第2記憶領域を指定した認証コマンド実行による認証結果の認証不当、又は前記第2記憶領域に秘密情報がセットされている状態での半導体装置のリセット動作により、セキュリティ状態を第5セキュリティ状態(第2プロテクトロック状態)とする。
上記遷移制御により、半導体装置に対する強制リセットによって不揮発性記憶装置に対する保護が解除されることはない。第1セキュリティ状態でリセットされたときは第1セキュリティ状態にされ、頻繁にリセット動作が入るようなシステムデバッグ動作ではリセット毎に不揮発性記憶装置に対する保護が働いて書き込みできなくなったりする不便はない。
〔16〕<制御モードレジスタ>
項14又は15の半導体装置において、セキュリティ制御モードビットを有する制御モードレジスタを更に有する。前記セキュリティ制御モードビットが第1の値に設定されたとき、前記セットコマンド、リセットコマンド及び認証コマンドの実行が可能にされる。前記セキュリティ制御モードビットが第2の値に設定されたとき、前記セットコマンド、リセットコマンド及び認証コマンドの実行によるセキュリティ状態の変更が不可能にされる。
秘密情報を用いたセキュリティ状態の遷移制御を必要に応じて非選択にすることができるという便に供する。セキュリティ制御モードビットを操作してセキュリティ状態の遷移制御を選択から非選択に切替えても、そのときの第3セキュリティ状態、第2セキュリティ状態、第5セキュリティ状態、又は第4セキュリティ状態が第1セキュリティ状態にされることは阻止されている。
〔17〕<セキュリティ制御ステータスレジスタ>
項16の半導体装置において、前記セキュリティ制御モードにおいて現在のセキュリティ状態を示すセキュリティ制御ステータスレジスタを更に備える。
メモリ制御部等による内部動作の必要に応じてセキュリティ状態を容易に確認することが可能である。
〔18〕<不揮発性記憶装置からの読み出し禁止>
項10乃至17の何れかの半導体装置において、前記所定の条件下とは前記中央処理装置による前記外部バス回路を経由した外部アドレス空間への命令フェッチを一旦検出した以降である。前記第3セキュリティ状態及び第5セキュリティ状態における不揮発性記憶装置からの読み出し禁止は、読み出し要求に応答する前記不揮発性記憶装置の出力をメモリ読み出し動作によらない所定の既定値又は前記不揮発性記憶装置の出力データとは異なるランダムな値とすることである。
書き換えが禁止された状態の不揮発性記憶装置が保有するプログラムを実行する正規の状態において、不正行為は外部アドレス空間から中央処理装置に不正なプログラムをフェッチさせることに端を発すると想定される。そのため、それ以前の正規のプログラム実行状態では不揮発性記憶装置から外部へのデータの読み出しなどが行われる場合にこれを許容できるようにし、一旦不正と想定される外部空間からの命令フェッチサイクルが発生された後は不揮発性記憶装置に記憶された記憶情報を一切外部へ出力させず、記憶情報の保護を最優先とすることができる。
また、第3セキュリティ状態及び第5セキュリティ状態において前記所定の条件下では不揮発性記憶装置が保持する正規のデータは如何なる意味においても不揮発性記憶装置の外部に存在することにはならず、半導体装置の外部への正規データの出力を阻止しても内部のバスやバッファ上に滞留するという事態も抑制することができ、この点においても万全のセキュリティ性を達成することができる。
〔19〕<秘密情報の外部出力禁止>
項10乃至18の何れかの半導体装置において、前記メモリ制御部は、前記内部バスを介して与えられる秘密情報を記憶する領域への読み出し要求を無効にする。
第1セキュリティ状態においても秘密情報の漏洩に万全を期することができる。
〔20〕<遷移可能な3状態のセキュリティ状態を持つLSIに対する書き換え方法>
項1記載の半導体装置を用いたデータ処理システムにおいて、前記外部インタフェース回路に外部機器を接続して前記不揮発性記憶装置を書き換えるデータ処理方法は、前記不揮発性記憶装置が秘密情報を保持しているとき、外部機器から半導体装置に供給された情報が秘密情報に一致するかを半導体装置が判別する第1処理を含む。
また、前記データ処理方法は、前記第3セキュリティ状態において前記第1処理による判別結果が一致のとき半導体装置は不揮発性記憶装置のセキュリティ状態を第2セキュリティ状態に遷移させる第2処理と、前記第2処理によって遷移された第2セキュリティ状態において外部装置が半導体装置の不揮発性記憶装置を書き換える第3処理と、を含む。
また、前記データ処理方法は、前記第3処理の後に前記秘密情報と異なる情報を外部機器が半導体装置に供給する第4処理と、前記第4処理で供給された情報が前記秘密情報に一致しないことを確認して半導体装置が不揮発性記憶装置のセキュリティ状態を第3セキュリティ状態に遷移させる第5処理と、を含む。
不揮発性記憶装置の記憶情報を単に書き換える処理に無駄なく且つ安全に対処することができる。
〔21〕<遷移可能な3状態のセキュリティ状態を持つLSIに対するデバッグ方法>
項1記載の半導体装置を用いたデータ処理システムにおいて前記外部インタフェース回路に外部機器を接続して前記不揮発性記憶装置を書き換えるデータ処理方法は、前記不揮発性記憶装置が秘密情報を保持しているとき、外部機器から半導体装置に供給された情報が秘密情報に一致するかを半導体装置が判別する第1処理を含む。
また、前記データ処理方法は、前記第3セキュリティ状態において前記第1処理による判別結果が一致のとき半導体装置は不揮発性記憶装置のセキュリティ状態を第2セキュリティ状態に遷移させる第2処理と、前記第2処理によって遷移された第2セキュリティ状態において外部装置が半導体装置の不揮発性記憶装置に格納されている秘密情報を無効化して第1セキュリティ状態に遷移させる第3処理と、を含む。
また、前記データ処理方法は、前記第3処理によって遷移された不揮発性記憶装置の第1セキュリティ状態で外部機器が半導体装置を書き換えながら動作の解析を行う第4処理と、前記第4処理の後に外部機器が秘密情報をセットする第5処理と、を含む。
また、前記データ処理方法は、前記第5処理でセットした秘密情報と異なる情報を外部機器が半導体装置に供給する第6処理と、前記第6処理で供給された情報が第5処理でセットされた秘密情報に一致しないことを確認して半導体装置が不揮発性記憶装置のセキュリティ状態を第3セキュリティ状態に遷移させる第7処理と、を含む。
不揮発性記憶装置の記憶情報を書き換えながらデータ処理システムを再起動してシステム性能などを解析するようなデバッグ処理に効率的に対処することができる。
〔22〕<遷移可能な5状態のセキュリティ状態を持つLSIに対する書き換え方法>
請求項10記載の半導体装置を用いたデータ処理システムにおいて前記第1外部インタフェース回路又は第2外部インタフェース回路に外部機器を接続して前記不揮発性記憶装置を書き換えるデータ処理方法は、前記不揮発性記憶装置が秘密情報を保持しているとき、外部機器から半導体装置に供給された情報が秘密情報に一致するかを半導体装置が判別する第1処理を含む。
また、前記データ処理方法は、前記第3セキュリティ状態において前記第1処理による判別結果が一致のとき半導体装置は不揮発性記憶装置のセキュリティ状態を第2セキュリティ状態に遷移させる第2処理と、前記第2処理によって遷移された第2セキュリティ状態において外部装置が半導体装置の不揮発性記憶装置を書き換える第3処理と、を含む。
また、前記データ処理方法は、前記第3処理の後に前記秘密情報と異なる情報を外部機器が半導体装置に供給する第4処理と、前記第4処理で供給された情報が前記秘密情報に一致しないことを確認して半導体装置が不揮発性記憶装置のセキュリティ状態を第3セキュリティ状態に遷移させる第5処理と、を含む。
不揮発性記憶装置の記憶情報を単に書き換える処理に無駄なく且つ安全に対処することができる。この場合、外部装置を第1外部インタフェース回路又は第2外部インタフェース回路の何れに接続してもよい。
〔23〕<遷移可能な5状態のセキュリティ状態を持つLSIに対するデバッグ方法>
請求項10記載の半導体装置を用いたデータ処理システムにおいて前記第1外部インタフェース回路又は第2外部インタフェース回路に外部機器を接続して前記不揮発性記憶装置を書き換えるデータ処理方法は、前記不揮発性記憶装置が秘密情報を保持しているとき、外部機器から半導体装置に供給された情報が秘密情報に一致するかを半導体装置が判別する第1処理を含む。
また、前記データ処理方法は、前記第3セキュリティ状態において前記第1処理による判別結果が一致のとき半導体装置は不揮発性記憶装置のセキュリティ状態を第2セキュリティ状態に遷移させる第2処理と、前記第2処理によって遷移された第2セキュリティ状態において外部装置が半導体装置の不揮発性記憶装置に格納されている秘密情報を無効化して第1セキュリティ状態に遷移させる第3処理と、を含む。
また、前記データ処理方法は、前記第3処理によって遷移された不揮発性記憶装置の第1セキュリティ状態で外部機器が半導体装置を書き換えながら動作の解析を行う第4処理と、前記第4処理の後に外部機器が秘密情報をセットする第5処理と、を含む。
また、前記データ処理方法は、前記第4処理でセットした秘密情報と異なる情報を外部機器が半導体装置に供給する第6処理と、前記第6処理で供給された情報が第5処理でセットされた秘密情報に一致しないことを確認して半導体装置が不揮発性記憶装置のセキュリティ状態を第3セキュリティ状態に遷移させる第7処理と、を含む。
不揮発性記憶装置の記憶情報を書き換えながらデータ処理システムを再起動してシステム性能などを解析するようなデバッグ処理に効率的に対処することができる。
〔24〕<遷移可能な5状態のセキュリティ状態を持つLSIに対する書き換え方法>
請求項10記載の半導体装置を用いたデータ処理システムにおいて前記第2外部インタフェース回路に外部機器を接続して前記不揮発性記憶装置を書き換えデータ処理方法は、前記不揮発性記憶装置が秘密情報を保持しているとき、外部機器から半導体装置に供給された情報が秘密情報に一致するかを半導体装置が判別する第1処理を含む。
また、前記データ処理方法は、前記第5セキュリティ状態において前記第1処理による判別結果が一致のとき半導体装置は不揮発性記憶装置のセキュリティ状態を第4セキュリティ状態に遷移させる第2処理と、前記第2処理によって遷移された第4セキュリティ状態において外部装置が半導体装置の不揮発性記憶装置を書き換える第3処理を含む。
また、前記データ処理方法は、前記第3処理の後に前記秘密情報と異なる情報を外部機器が半導体装置に供給する第4処理と、前記第4処理で供給された情報が前記秘密情報に一致しないことを確認して半導体装置が不揮発性記憶装置のセキュリティ状態を第5セキュリティ状態に遷移させる第5処理と、を含む。
不揮発性記憶装置を単に書き換えるような処理主体に対しては第4及び第5セキュリティ状態への遷移だけで運用させることにより、インタフェース仕様が公開されるデバッグ専用の第1外部インタフェース回路を使用した半導体装置内部の不正アクセスによる不揮発性記憶に対するアタックを未然に防止することができる。
2.実施の形態の詳細
実施の形態について更に詳述する。
[実施の形態1]
《マイクロコンピュータ》
図2には本発明に係る半導体装置の一例としてマイクロコンピュータの構成が例示される。マイクロコンピュータ(MCU)10は、特に制限されないが、単結晶シリコンのような1個の半導体基板に相補型MOS集積回路製造技術等によって構成される。
マイクロコンピュータ10は、電気的に書き換え可能な不揮発性記憶装置14、命令を実行する中央処理装置(CPU)11、中央処理装置11のワーク領域等に利用されるSRAM(Static Random Access Memory)15、デバッグ専用の外部インタフェースに割り当てられた第1外部インタフェース回路(デバッグインタフェース回路)17、及びその他の外部インタフェースに割り当てられた第2外部インタフェース回路(通信インタフェース回路)16、外部バス回路19を有し、それらは内部バス18に接続される。内部バス18は当然階層化されていてもよい。
不揮発性記憶装置14は、不揮発性メモリセルのアレイが配置された不揮発性記憶部(不揮発性メモリ部)13と、前記不揮発性メモリ部13のメモリセルに対する消去書き込みと読み出し動作手順等を制御するメモリ制御部(メモリ制御シーケンサ)12とを有する。メモリ制御シーケンサ12はCPU11等からのアクセスコマンド、アドレス、書き込みデータ等を受け取って、不揮発性メモリ部13に対する消去、書き込み及び読み出し動作等を制御する。読み出しデータは不揮発性メモリ部13から内部バス18に出力される。不揮発性記憶装置14は、例えばフラッシュメモリ、EEPROM(Electrically Erasable and Programmable Read Only Memory)、又はMRAM(Magnetoresistive Random Access Memory)等とされる。
通信インタフェース回路16には、特に制限されないが、UART(Universal Asynchronous Receiver Transmitter)、LIN(Local Interconnect Network)、CAN(Controller Area Network)、FlexRay、USB(Universal Serial Bus)、IEEE1394等の通信規格若しくは通信プロトコルを採用することができる。
デバッグ用インタフェース回路17には、例えばJTAG(IEEE754)、NBD(Non Break Debug)などを採用することができる。
前記外部バス回路19は、例えばデバッグ用又は車載電子制御システムのボード上のメモリバス回路に接続され、前記ボード上のメモリバスには、例えばSRAM(Static Random Access Memory)、フラッシュメモリ、EEPROM(Electrically Erasable and Programmable Read Only Memory)、又はMRAM(Magnetoresistive Random Access Memory)等が接続され、前記中央処理装置の命令やデータが格納される。
前記メモリ制御シーケンサ12はメモリアクセス制御と共にセキュリティ制御を行って、不揮発性メモリ部13に対する不正な消去及び書き込み並びに読み出しを抑制する。
《3状態のセキュリティレベル》
図3には不揮発性記憶装置のセキュリティ状態(セキュリティレベル)が例示される。ここに例示されるセキュリティ状態は、アンプロテクト状態(第1セキュリティ状態)、プロテクトアンロック状態(第2セキュリティ状態)及びプロテクトロック状態(第3セキュリティ状態)の3状態とされる。
アンプロテクト状態は、前記不揮発性記憶装置14にキーコード(秘密情報)がセットされていないとき、前記不揮発性記憶装置に対する読み出しが許可され、且つ前記不揮発性記憶装置14に対する書き換えが許可され、且つ前記外部インタフェース回路16,17からの外部出力が許可される状態である。要するに、不揮発性記憶装置14に格納されたソフトウェア等は保護されない状態である。
プロテクトアンロック状態は、前記不揮発性記憶装置14にキーコードがセットされているとき、前記不揮発性記憶装置に対する読み出しが許可され、且つキーコードを用いた認証結果が正当であること、例えばセットされているキーコードに一致するキーコードが外部から供給されることを条件に、不揮発性記憶装置14に対する書き換えが許可され、且つ前記外部インタフェース回路16,17からの外部出力が許可される状態である。この状態は、認証結果が正当な場合に不揮発性記憶装置14に格納されたソフトウェア等の保護が一時的に解除された状態である。
プロテクトロック状態は、不揮発性記憶装置14にキーコードがセットされているとき、キーコードを用いた認証結果の正当性が確認されるまで、不揮発性記憶装置14に対する書き換えが禁止され、且つ不揮発性記憶装置14に対する読み出しが所定の条件下で禁止され、且つ前記外部インタフェース回路16,17からの外部出力が許可される状態である。要するに、不揮発性記憶装置14に格納されたソフトウェア等が保護された状態である。
ここで、前記所定の条件下とは前記中央処理装置11による前記外部バス回路19を経由し外部アドレス空間への命令フェッチを一旦検出した以降であり、前記プロテクトロック状態において、前記不揮発性記憶装置14の出力をメモリ読み出し動作によらない所定の既定値又は前記不揮発性記憶装置の出力データとは異なるランダムな値とすることにより前記不揮発性記憶装置14に格納されたソフトウェアの保護が可能となる。書き換えが禁止された状態の不揮発性記憶装置14が保有するプログラムを実行する正規の状態において、不正行為は外部アドレス空間からCPU11に不正なプログラムをフェッチさせることに端を発すると想定される。そのため、それ以前の正規のプログラム実行状態では不揮発性記憶装置14から外部へのデータの読み出しなどが行われる場合にこれを許容できるようにし、一旦不正と想定される外部空間からの命令フェッチサイクルが発生された後は不揮発性記憶装置14に記憶された記憶情報を一切外部へ出力させず、記憶情報の保護を最優先とすることができる。
また、プロテクトロック状態において前記所定の条件下では不揮発性記憶装置14が保持する正規のデータは如何なる意味においても不揮発性記憶装置14の外部に存在することにはならず、マイクロコンピュータ10の外部への正規データの出力を阻止しても内部のバスやバッファ上に滞留するという事態も抑制することができる。
図4には前記セキュリティ状態に関する操作コマンドが例示される。メモリ制御シーケンサ12は、セキュリティ状態を制御する操作コマンドのセットとして、キーコードセットコマンド、キーコードリセットコマンド及びキーコード認証コマンドのコマンドを有する。
キーコードセットコマンドは、外部インタフェース回路16,17から入力されたキーコードを前記不揮発性メモリ部13の所定の記憶領域(キーコード記憶領域)に書き込む動作(キーコードセット)を指示するコマンドである。このキーコードセットはアンプロテクト状態又はプロテクトアンロック状態で可能である。セットするキーコードはコマンドパラメータで指定さる。特に制限されないが、メモリ制御シーケンサ12はバス18を介して与えられるキーコード領域に対する読み出しアクセスの要求を無効とし、不正な書き換えだけでなく、不正なリード要求があってもこれを無効とすることにより、キーコードに対する保護の万全を期するものである。
キーコードリセットコマンドは、キーコード記憶領域の情報に対して無効、例えば消去を指示するコマンドである。キーコードリセットはアンプロテクト状態又はプロテクトアンロック状態で可能である。
キーコード認証コマンドは、前記キーコード記憶領域に記憶されているキーコードと外部インタフェース回路16,17から与えられた情報を比較し、比較一致により認証正当、比較不一致により認証不当、と判別して前記セキュリティ状態への遷移制御を行うコマンドである。プロテクトロック状態において認証正当であればプロテクトアンロック状態に遷移し、プロテクトアンロック状態において認証不当であればプロテクトロック状態に遷移する。認証するキーコードはコマンドパラメータで指定される。
図1にはセキュリティレベルの状態遷移図が示される。同図に示される状態遷移制御はメモリ制御シーケンサ12の制御による。
プロテクトアンロック状態における前記リセットコマンドの実行、又は前記キーコード記憶領域の情報が無効にされている状態でのマイクロコンピュータのリセット動作により、セキュリティ状態はアンプロテクト状態1とされる。
アンプロテクト状態1におけるセットコマンドの実行、又はプロテクトロック状態における認証コマンド実行による認証結果の認証正当により、セキュリティ状態がプロテクトアンロック状態2にされる。
前記プロテクトアンロック状態2における認証コマンド実行による認証結果の認証不当(キーコード認証不一致)、又は前記キーコード記憶領域にキーコードがセットされている状態でのマイクロコンピュータ10のリセット動作により、セキュリティ状態がプロテクトロック状態3とされる。
図5にはメモリ制御シーケンサ12が有する制御モードレジスタMREGとセキュリティ制御ステータスレジスタSREGが例示される。
制御モードレジスタMREGは、セキュリティ制御モードビットSCMを有する。セキュリティ制御モードビットSCMが第1の値(例えば論理値“0”)に設定されたとき、前記セットコマンド、リセットコマンド及び認証コマンドの実行が可能にされる。前記セキュリティ制御モードビットSCMが第2の値(論理値“1”)に設定されたとき、前記セットコマンド、リセットコマンド及び認証コマンドの実行によるセキュリティ状態の変更が不可能にされる。
セキュリティ制御モードビットSCMを採用することにより、キーコードを用いたセキュリティ状態の遷移制御を必要に応じて非選択にとすることができるという便に供することができる。セキュリティ制御モードビットSCMを操作してセキュリティ状態の遷移制御を選択から非選択に切替えても、そのときの第3セキュリティ状態又は第2セキュリティ状態が第1セキュリティ状態にされることは阻止されている。
セキュリティ制御ステータスレジスタSREGは、前記セキュリティ制御モードにおいて現在のセキュリティ状態を複数ビットによって示すセキュリティ制御ステータスコードSTTを有する。メモリ制御シーケンサ12等による内部動作の必要に応じてセキュリティ状態を容易に確認することが可能である。
以上の3レベルによるセキュリティ状態の遷移制御によれば、前記セキュリティ状態の設定及び解除はキーコードに関する権限に基づいて決めるから、システムデバッグ時及び実機搭載時の何れの動作の区別なくセキュリティ状態の設定及び解除が可能である。また、キーコードは保護対象にされる不揮発性記憶装置14で保持し、保持状態では少なくとも第2セキュリティ状態にされ、当該キーコードの書き換えは認証一致を条件とし、外部への読み出しは無効にされるから、キーコードは容易に漏洩せず、この点で不揮発性記憶装置14に対する保護には高い信頼がある。
また、マイクロコンピュータ10に対する強制リセットによって不揮発性記憶装置14に対する保護が解除されることはない。第1セキュリティ状態でリセットされたときは第1セキュリティ状態にされ、頻繁にリセット動作が入るようなシステムデバッグ動作ではリセット毎に不揮発性記憶装置に対する保護が働いて書き込みできなくなったりする不便はない。
図6にはターゲットシステムに対するエミュレータを用いたデバッグ環境が例示される。ターゲットシステム20は例えばマイクロコンピュータ10を搭載した機器であり、マイクロコンピュータ10のデバッグインタフェース回路17にインタフェースケーブルでインサーキットエミュレータ21が接続される。インサーキットエミュレータ21はパーソナルコンピュータやワークステーションによって構成されたエミュレータホスト装置22からの指示にしたがってエミュレーション動作が制御され、エミュレーション動作によって得られたトレース情報などをエミュレータホスト装置22が解析する。エミュレーション動作では、不揮発性記憶装置14にデバッグ対象のプログラムを書き込んでCPU11に実行させる動作が繰り返され、その途中で、プログラムの書き換えや、リセットが頻繁に行われ、CPU11によるプログラムの実行結果が解析される。
図7にはターゲットシステムに対するメンテナンス環境が例示される。ターゲットシステム30は例えばマイクロコンピュータ10を搭載した実機であり、例えば自動車に搭載されるECUである。ターゲットシステム30のマイクロコンピュータ10に搭載された通信インタフェース回路16に通信ケーブルを介してパーソナルコンピュータやワークステーションによって構成されたオンボード書き込みホスト装置31が接続される。オンボード書き込みホスト装置31は通信インタフェース回路16を経由して不揮発性記憶装置14が保有するプログラムなどの書き換え若しくは書き込みを制御する。不揮発性記憶装置14は所謂オンボード書き込みが行われる。
図8にはマイクロコンピュータ10にオンチップされた初期状態の不揮発性記憶装置にソフトウェアを書き込むときの動作手順が例示される。図8では図6のエミュレータを用いた書き込みと図7のオンボード書き込みの区別なく示している。図8ではエミュレータホスト装置22又はオンボード書き込み装置31の操作(ホストの操作)、マイクロコンピュータ10の動作(CPUの動作、メモリ制御シーケンサの動作、不揮発性メモリ部の動作)、及び不揮発性記憶装置14のセキュリティ状態に大別して動作手順を示している。
開始時においては不揮発性記憶装置14にはキーコードがセットされていないから、セキュリティ状態はアンプロテクト状態であり、記憶情報の保護は行われていない。
ホスト装置はまずキーコードをマイクロコンピュータ10に与えて接続確認を待つ(40)。
マイクロコンピュータ10はキーコード認証処理(50)として、ホスト装置から受取ったキーコードとキーコード認証コマンドをメモリ制御シーケンサ12に与える。メモリ制御シーケンサ12は不揮発性メモリ部13によるキーコード領域からの読み出し動作(70)によって得られたリードデータをそのキーコードと比較してその結果をCPU11に返す(60)。CPU11は比較結果に応ずる認証結果が得られたことによって接続確認をホスト装置に返す(51)。
ホスト装置はソフトウェアをCPU11に転送して書き込み確認を待つ(41)。CPU11は当該ソフトウェアをダウンロードし(52)、メモリ制御シーケンサ12にメモリ書き込みを指示する(53)。メモリ制御シーケンサ12は書き込みコマンドと書き込みデータにしたがって不揮発性メモリ部13に書き込み動作を制御し(61)、これによって不揮発性メモリ部13にソフトウェアが書き込まれる(71)。
ホスト装置は書き込み確認を受けた後にCPU11にキーコードの書き込み指示し、接続確認を待つ(42)。CPU11はこれに応答してキーコードセットコマンドをメモリ制御シーケンサ12に発行し(54)、メモリ制御シーケンサ12は当該コマンドに応答して、コマンドで指定されたキーコードを不揮発性メモリ部13に書き込む(72)。CPU11は書き込み完了を確認して(55)、これをホスト装置に通知する。
これにより、不揮発性記憶装置14のキーコード領域に所定のキーコードが初期設定される。この状態でセキュリティ状態はプロテクトアンロック状態になっている。次の動作ではキーコードの認証結果の正当性が得られなければプロテクトアンロック状態を維持できず、プロテクトロック状態に遷移するから、ソフトウェアは保護された状態となる。
図9には保護された状態の不揮発性記憶装置に対するソフトウェアに書き換え動作の手順が例示される。
開始時においてキーコードがセットされているためセキュリティ状態はプロテクトロックでありソフトウェアは保護されている。
ホスト装置はまず認証するキーコードをマイクロコンピュータ10に与えて接続確認を待つ(80)。マイクロコンピュータ10はキーコード認証処理(90)として、ホスト装置から受取ったキーコードとキーコード認証コマンドをメモリ制御シーケンサ12に与える。メモリ制御シーケンサ12は不揮発性メモリ部13によるキーコード領域からの読み出し動作(110)によって得られたリードデータをそのキーコードと比較してその結果をCPU11に返す(100)。ここでは比較一致とする。CPU11は比較結果に応ずる認証結果が得られたことによって接続確認をホスト装置に返す(91)。
ホスト装置はソフトウェアをCPU11に転送して書き込み確認を待つ(81)。CPU11は当該ソフトウェアをダウンロードし(92)、メモリ制御シーケンサ12にメモリ書き込みを指示する(93)。メモリ制御シーケンサ12は書き込みコマンドと書き込みデータにしたがって不揮発性メモリ部13に書き込み動作を制御し(101)、これによって不揮発性メモリ部13にソフトウェアが書き込まれる(111)。
次の動作ではキーコードの認証結果の正当性が得られなければプロテクトアンロック状態を維持できず、プロテクトロック状態に遷移するから、ソフトウェアは保護された状態となる。動作を継続させながらソフトウェアの保護が必要な場合は誤ったキーコードによるキーコード認証により、プロテクトロック状態に遷移させることにより、ソフトウェアの保護が可能である。
図10にはプロテクトロック状態においてCPU11がアプリケーションプログラムを実行するときの状態が示される。プロテクトロック状態において不揮発性記憶装置の書き換えは禁止されているから、それを書き換える場合にはキーコード認証を必要とするが、不揮発性記憶装置14をプログラムなどの読み出し専用メモリに用いている限りセキュリティレベルの変更を要しない。CPU11は不揮発性メモリ14から順次読み出されたアプリケーションソフトウェア(130)をリードして実行すればよい(120)。
図11には実機上でマイクロコンピュータが実行するアプリケーションプログラムに基づいて不揮発性記憶装置の書き換えを行う場合の動作手順が例示される。CPU11は不揮発性メモリ部13が保有するアプリケーションソフトウェア(160)をプロテクトロック状態で実行し(140)、その途上で、不揮発性メモリ部13の書き換えを行うときは、まずキーコード認証処理(141)として、アプリケーションソフトウェアに基づいて指定されたキーコードとキーコード認証コマンドをメモリ制御シーケンサ12に与える。メモリ制御シーケンサ12は不揮発性メモリ部13によるキーコード領域からの読み出し動作(161)によって得られたリードデータをそのキーコードと比較してその結果をCPU11に返す(150)。比較一致の場合には不揮発性記憶装置14のセキュリティ状態はプロテクトアンロックに遷移する。CPU11は比較結果に応ずる認証結果を確認する(142)。比較不一致の場合にはCPU11は図示を省略する例外処理などを行う。比較一致の場合には、CPU11はソフトウェアをダウンロードし(143)、メモリ制御シーケンサ12にメモリ書き込みを指示する(144)。メモリ制御シーケンサ12は書き込みコマンドと書き込みデータにしたがって不揮発性メモリ部13に書き込み動作を制御し(151)、これによって不揮発性メモリ部13にソフトウェアが書き込まれる(162)。
書き込み処理(144)の後、CPU11はキーコード認証処理(145)を行って正規のキーコードに一致しないコード情報とキーコード認証コマンドをメモリ制御シーケンサ12に与える。メモリ制御シーケンサ12は不揮発性メモリ部13によるキーコード領域からの読み出し動作(163)によって得られたリードデータをそのコード情報と比較してその結果をCPU11に返す(152)。比較不一致により不揮発性記憶装置14のセキュリティ状態はプロテクトアンロック状態からプロテクトロック状態に遷移する。CPU11は比較結果に応ずる認証結果を確認する(146)。比較不一致の場合にはCPU11は図示を省略する例外処理などを行う。比較不一致が確認された後は、特に制限されないが、書き換えられたアプリケーションソフトウェアに基づき、プロテクトロック状態で次の処理が開始される。
図12にはキーコードセット動作手順が示される。まず、制御モードレジスタMREGのセキュリティ制御モードビットSCMに“1”がセットされ(200)、次に、メモリ制御シーケンサ12のコマンドレジスタにキーコードセットコマンドが書き込まれる(201)。キーコードセットコマンドは、特に制限されないが、キーコードのバッファデータレジスタのアドレスとセットすべきキーコードを伴う書き込みコマンドに相当する。それらの動作制御主体はCPU11である。キーコードセットコマンドに従ってメモリ制御シーケンサ12がキーコードの書き込みを開始する(202)。特に制限されないが、ここではキーコードの書き込みに4サイクルの書き込みサイクルを要するものとし、書き込みサイクル数を管理するために変数nに初期値1をセットし(203)、次の書き込みサイクルを実行し(204)、書き込みサイクル数が4になるまで、変数nをn+1に更新しながら(206)ステップ204の書き込みを繰り返す(205)。その間、CPU11はキーコードセット終了フラグがセットされたか否かを確認しており(207)、その前に、書き込みに必要な書き込みベリファイ動作時間が経過したときは(208のyes)、フラッシュ制御シーケンサ12が初期化され今回のキーコードセットコマンドによる書き込み要求がクリアされる(210)。キーコードセット終了フラグのセットが確認されると(207の“1”)、ステータスレジスタSREG等をリードしてエラーの確認を行う(209)。即ち、今回の書き込み及びベリファイ動作によってセキュリティ状態がプロテクトロック状態になっていることステータスSTTによって確認する。これによって、不揮発性メモリ部13にキーコードがセットされて不揮発性記憶装置はプロテクトロック状態になる。
図13にはキーコードリセット動作手順が示される。まず、制御モードレジスタMREGのセキュリティ制御モードビットSCMに“1”がセットされ(220)、次に、メモリ制御シーケンサ12のコマンドレジスタにキーコードリセットコマンドが書き込まれる(221)。キーコードリセットコマンドは、特に制限されないが、キーコード領域のアドレスを特定する消去コマンドに相当する。それらの動作制御主体はCPU11である。キーコードリセットコマンドに従ってメモリ制御シーケンサ12は現在のセキュリティ状態がプロテクトアンロック状態であることを確認してからキーコードの消去を開始する。現在のセキュリティ状態がプロテクトアンロック状態でないときは当該コマンドの受付は拒否される。その間、CPU11はキーコードリセット終了フラグがセットされたか否かを確認しており(222)、その前に、消去に必要な消去時間が経過したときは(223のyes)、フラッシュ制御シーケンサ12が初期化され今回のキーコードリセットコマンドによる消去要求がクリアされる(225)。キーコードリセット終了フラグのセットが確認されると(222の“1”)、ステータスレジスタSREG等をリードしてエラーの確認を行う(224)。即ち、今回の消去及びベリファイ動作によってセキュリティ状態がアンプロテクトロック状態になっていることステータスSTTによって確認する。これによって、不揮発性記憶装置はアンプロテクト状態にされる。
図14にはキーコード認証動作手順が示される。まず、制御モードレジスタMREGのセキュリティ制御モードビットSCMに“1”がセットされ(230)、次に、メモリ制御シーケンサ12のコマンドレジスタにキーコード認証コマンドが書き込まれる(231)。キーコード認証コマンドは、特に制限されないが、キーコードのバッファデータレジスタのアドレスと認証すべきキーコードを伴う書き込みベリファイコマンドに相当する。それらの動作制御主体はCPU11である。キーコード認証コマンドに従ってメモリ制御シーケンサ12が不揮発性メモリ部13からキーコードをリードしリードしたキーコードをバッファデータレジスタの認証すべきキーコードと比較するベリファイ動作による認証動作を開始する(232)。特に制限されないが、ここではキーコードの認証に4サイクルのベリファイサイクルを要するものとし、ベリファイサイクル数を管理するために変数nに初期値1をセットし(233)、次のベリファイサイクルを実行し(234)、変数
nをn+1に更新しながら(236)ベリファイサイクル数が4になるまでステップ234のベリファイを繰り返す(235)。その間、CPU11はキーコード認証終了フラグがセットされたか否かを確認しており(237)、その前に、ベリファイに必要なベリファイ動作時間が経過したときは(238のyes)、フラッシュ制御シーケンサ12が初期化され今回のキーコード認証コマンドによる認証要求がクリアされる(240)。キーコードセット終了フラグのセットが確認されると(237の“1”)、ステータスレジスタSREG等をリードしてエラーの確認を行う(239)。即ち、今回のキーコード認証動作によってセキュリティ状態がプロテクトアンロック状態になっていることステータスSTTによって確認する。これによって、不揮発性メモリ部13にキーコードがセットされて不揮発性記憶装置はプロテクトロック状態になる。
上記実施の形態1によれば以下の作用効果を得る。
半導体装置に内蔵された不揮発性記憶装置に書き込まれたソフトウェアを第三者が不正にコピーしたり解析したりすることを防止することができる。
市場で取引され或いは流通している機器に組み込まれた半導体装置のオンチップ不揮発性記憶装置に対して、第三者が不正に消去・書き換えを行って当該半導体装置を使用した電装ユニットのハードウェアを再利用したり、不正ソフトウェアを実装した不正改造電装ユニットを製造したりする自体の発生を防止することができる。
半導体装置に内蔵された不揮発性記憶装置に対するキーコードを知る正当な権限保有者による書き込み・消去などの機能は損なわれない。
書き換え可能な不揮発性記憶装置を内蔵する半導体装置の特徴であった、市場での書き換え機能を損なうことなく、目的にあわせて不揮発性記憶装置のソフトウェアの保護状態(セキュリティ状態)を設定可能となり、第三者によるアプリケーションソフトウェアの不正な解析やシステムの改造に対して対抗することができる。
[実施の形態2]
実施の形態2では実施の形態1で説明したマイクロコンピュータを自動車用の電装ユニットに搭載する場合の例を説明する。
図15には実施の形態1で説明したマイクロコンピュータを搭載した電装ユニットの量産時における不揮発性記憶装置に対する初期書き込みの動作形態が例示される。
300は電装ユニット量産ラインの初期書き込みホスト装置であり、これには通信ケーブル301を介して多数のマイクロコンピュータ10が接続される。その接続インタフェースには通信インタフェース回路16が用いられる。夫々にマイクロコンピュータ10にオンチップされている不揮発性記憶装置14には並列的に初期書き込みが行われる。例えば図8で説明したソフトウェアの書き込み動作が全てのマイクロコンピュータ10に対して並列的に行われる。
図16には自動車に搭載された電装ユニットのメンテナンス時における不揮発性記憶装置に対する書き込みの動作形態が例示される。310はカーディーラ等に設置された電装ユニット用ソフトウェア書き換えホスト装置であり、これには通信ケーブル313を介してメンテナンス対象自動車に搭載された電装ユニット312のマイクロコンピュータ10が接続される。その接続インタフェースには通信インタフェース回路16が用いられる。ホスト装置310による不揮発性記憶装置14に対するソフトウェアの書き換えは例えば図11で説明したソフトウェアの書き換え動作手順に従って行われる。
図17にはマイクロコンピュータ10を自動車用電装ユニットに適用した場合における不揮発性記憶装置のセキュリティ保護の遷移状態が全体的に示される。ここでは、自動車用電装ユニットに製造メーカ(電装メーカ)での初期書き込み、市場での動作(走行する自動車上での動作)、市場での書き換え(カーディーラ等にけるソフトウェア書き換え)、及びソフトウェア又はシステム解析(自動車メーカやカーディーラにおける特性や不具合の解析)の各フェーズに大別して遷移状態を図示してある。
電装メーカにおけるソフトウェアの初期書き込みは、アンプロテクト状態において図7で説明したエミュレータを用いたソフトウェア及びキーコードの書き込み(320)又図7で説明したオンボード書き込みによるソフトウェア及びキーコードの書き込み(323)によって実現可能である。
処理320の書き込みの後はプロテクトアンロック状態にされ、ここでキーコード認証不一致を生じさせることによって(321)、プロテクトロック状態になって書き込みを完了することができる(322)。同じく、処理323の書き込みの後もプロテクトアンロック状態にされ、ここでキーコード認証不一致を生じさせることによって(324)、プロテクトロック状態になって書き込みを完了することができる(325)。
市場では、書き込み完了状態(322,325)であるプロテクトロック状態又はキーコード認証不一致(321,324)によるプロテクトロック状態において、CPU11は不揮発性記憶装置14に書き込まれたソフトウェアを実行してアプリケーション動作を行うことができる(330)。当然その場合には不揮発性記憶装置14に対する消去及び書き込み並びにキーコード領域に対する読み出しは阻止されている。アプリケーション動作状態(330)においてキーコード認証を行って正当性が判別されれば(340)、プロテクトアンロック状態でソフトウェアの書き換えが可能になり(341)、ソフトウェア書き込み後に不一致のキーコード認証を行えば(343)、再度プロテクトロック状態でアプリケーション動作可能な状態に遷移することができる(330)。処理341の前記ソフトウェア書き換え後にキーコードリセット動作を行ってキーコードを書き換え(342)、その後、不一致のキーコード認証を行えば(343)、再度プロテクトロック状態でアプリケーション動作可能な状態に遷移することができる(330)。一方、システム解析が必要な場合には、プロテクトロック状態でキーコード認証を行い(350)、プロテクトアンロック状態でキーコードリセットを行って(351)、アンプロテクト状態に遷移して、ここでエミュレータ等を用いてシステム解析を行うことができる(352)。
上記実施の形態1のマイクロコンピュータを適用した電装ユニットを用いる場合には以下の作用効果を得ることができる。
電装ユニットメーカでのユニット開発時には、インサーキットエミュレータを使用することができ、オンチップの不揮発性記憶装置14へのソフトウェアの書き込みもエミュレータで実施することができる。ソフトウェアの保護が必要であれば、エミュレータでキーコードを設定することにより保護可能となる。
電装ユニットメーカでのユニット量産時の初期書き込みには、オンボード書き込みを使用することができる。量産時は、書き込み時間、スループット、コストなどが重要なファクターとなるため、並列に複数個の書き込みを実施することが一般的である。そのため、図15で説明した通り、オンボード書き込みを複数のマイクロコンピュータに対して並列で書き込みを実施する。電装ユニット出荷に際し、ソフトウェアの保護が必要な場合は初期書き込みとあわせてキーコードを設定することによりユニット出荷後はソフトウェア保護が可能となる。
市場での書き換えは、ユーザアプリケーション動作状態での書き換えとなる。市場での書き換えは安全面、セキュリティ面でカーディーラなどのメンテナンスサービスを提供できるところでソフトウェアの書き換えを実施することが妥当である。出荷時にはソフトウェア保護のためにキーコードセットされたプロテクトロック状態であったとしても書き換え時にユーザアプリケーションであらかじめ用意しておいた通信プロトコルを用いてキーコード認証と書き換えの実現が可能となる。
電装メーカでの解析は電装ユニットおよびマイクロコンピュータの解析を行うことが必要になる。市場動作している電装ユニット若しくはマイクロコンピュータに対して何らかの解析や調査が必要な場合は、ユニットを自動車から外しインサーキットエミュレータなどのデバッグツールを使用して解析する必要がある。市場ではキーコードがセットされたプロテクトロック状態でソフトウェアの保護がされている場合でもエミュレータを接続するデバッグインタフェース経由でキーコード認証が可能なため何らかの解析や調査が可能となる。
以上より、マイクロコンピュータ10を自動車パワートレイン制御システムに適用した場合、制御システムのセットメーカが開発したソフトウェアを第三者が解析できないようにすることができる。イモビライザーなど盗難防止に関するソフトウェアを第三者が解析できないようにすることができる。ソフトウェアの改竄による不正改造を防止することができる。ソフトウェア不具合の対策や機能追加などの目的で市場でのソフトウェア書き換えを実施することが可能である。例えばリコールによるカーディーラでのソフトウェアアップデートも可能である。
[実施の形態3]
《マイクロコンピュータ》
実施の形態3では、不揮発性記憶装置のセキュリティ状態として5状態を採り得る場合の例を説明する。
図18には本発明に係る半導体装置の別の例としてマイクロコンピュータの構成が例示される。マイクロコンピュータ(MCU)400は、特に制限されないが、単結晶シリコンのような1個の半導体基板に相補型MOS集積回路製造技術等によって構成される。
マイクロコンピュータ400は、電気的に書き換え可能な不揮発性記憶装置414、命令を実行する中央処理装置(CPU)411、中央処理装置411のワーク領域等に利用されるSRAM(Static Random Access Memory)415、デバッグ専用の外部インタフェースに割り当てられた第1外部インタフェース回路(デバッグインタフェース回路)417、及びその他の外部インタフェースに割り当てられた第2外部インタフェース回路(通信インタフェース回路)416、外部バス回路419、を有し、それらは内部バス418に接続される。内部バス418は当然階層化されていてもよい。
不揮発性記憶装置414は、不揮発性メモリセルのアレイが配置された不揮発性記憶部(不揮発性メモリ部)413と、前記不揮発性メモリ部413のメモリセルに対する消去書き込みと読み出し動作手順等を制御するメモリ制御部(メモリ制御シーケンサ)412とを有する。メモリ制御シーケンサ412はCPU411等からのアクセスコマンド、アドレス、書き込みデータ等を受け取って、不揮発性メモリ部413に対する消去、書き込み及び読み出し動作等を制御する。読み出しデータは不揮発性メモリ部413から内部バス418に出力される。不揮発性記憶装置414は、例えばフラッシュメモリ、EEPROM(Electrically Erasable and Programmable Read Only Memory)、又はMRAM(Magnetoresistive Random Access Memory)等とされる。
通信インタフェース回路416、デバッグ用インタフェース回路417は実施の形態1と同じであってよい。
前記外部バス回路419は、例えばデバッグ用又は車載電子制御システムのボード上のメモリバス回路に接続され、前記ボード上のメモリバスには、例えばSRAM(Static Random Access Memory)、フラッシュメモリ、EEPROM(Electrically Erasable and Programmable Read Only Memory)、又はMRAM(Magnetoresistive Random Access Memory)等が接続され、前記中央処理装置の命令やデータが格納される。
前記メモリ制御シーケンサ412はメモリアクセス制御と共にセキュリティ制御を行って、不揮発性メモリ部413に対する不正な消去及び書き込み並びに読み出しを抑制する。
《5状態のセキュリティレベル》
図20には不揮発性記憶装置414のセキュリティ状態(セキュリティレベル)が例示される。ここに例示されるセキュリティ状態は、アンプロテクト状態(第1セキュリティ状態)、第1プロテクトアンロック状態(第2セキュリティ状態)第1プロテクトロック状態(第3セキュリティ状態)、第2プロテクトアンロック状態(第4セキュリティ状態)、及び第2プロテクトロック状態(第5セキュリティ状態)、の5状態とされる。以下の説明では、第1プロテクトアンロック状態をセキュリティレベル1のプロテクトアンロック状態、第1プロテクトロック状態をセキュリティレベル1のプロテクトロック状態、第2プロテクトアンロック状態をセキュリティレベル2のプロテクトアンロック状態、第2プロテクトロック状態をセキュリティレベル2のプロテクトロック状態とも称する。
プロテクトアンロック状態は、不揮発性記憶装置414に第1キーコード及び第2キーコードがセットされていないとき、不揮発性記憶装置414に対する読み出しが許可され、且つ不揮発性記憶装置414に対する書き換えが許可され、且つ前記通信インタフェース回路416及びデバッグインタフェース回路417からの外部出力が許可される状態である。要するに、不揮発性記憶装置14に格納されたソフトウェア等は保護されない状態である。
セキュリティレベル1のプロテクトアンロック状態は、不揮発性記憶装置414に前記第1キーコードがセットされているとき、不揮発性記憶装置414に対する読み出しが許可され、且つ当該キーコードを利用する認証結果が正当であることを条件に、前記不揮発性記憶装置414に対する書き換えが許可され、且つ前記通信インタフェース回路416及びデバッグインタフェース回路417からの外部出力が許可される状態である。この状態は、認証結果が正当な場合に不揮発性記憶装置414に格納されたソフトウェア等の保護が一時的に解除された状態である。
セキュリティレベル1のプロテクトロック状態は、不揮発性記憶装置414に第1キーコードがセットされているとき、当該キーコードを利用する認証結果の正当性が確認されるまで、前記不揮発性記憶装置414に対する書き換えが禁止され、且つ不揮発性記憶装置414に対する読み出しが所定の条件下で禁止され、且つ前記通信インタフェース回路416及びデバッグインタフェース回路417からの外部出力が許可される状態である。要するに、不揮発性記憶装置414に格納されたソフトウェア等が保護された状態である。
セキュリティレベル2のプロテクトアンロック状態は、不揮発性記憶装置414に前記第2キーコードがセットされているとき、不揮発性記憶装置414に対する読み出しが許可され、且つ当該キーコードを利用する認証結果が正当であることを条件に、不揮発性記憶装置414に対する書き換えが許可され、且つ前記通信インタフェース回路416及びデバッグインタフェース回路417からの外部出力が許可される状態である。セキュリティレベル1のプロテクトアンロック状態との相違は使用するキーコードの相違だけである。
セキュリティレベル2のプロテクトロック状態は、不揮発性記憶装置414に第2キーコードがセットされているとき、当該キーコードを利用する認証結果の正当性が確認されるまで、前記不揮発性記憶装置414に対する書き換えが禁止され、且つ不揮発性記憶装置414に対する読み出しが所定の条件下で禁止され、且つ前記デバッグインタフェース回路417のインタフェース動作が無効にされ、且つ前記通信インタフェース回路416からの外部出力が許可される状態である。セキュリティレベル1のプロテクトロック状態との相違は使用するキーコードの相違と、デバッグインタフェース回路417のインタフェース動作が無効にされる点である。
ここで、前記所定の条件下とは前記中央処理装置411による外部バス回路419を経由し外部アドレス空間への命令フェッチを一旦検出した以降である。前記セキュリティレベル1及び2のプロテクトロック状態において前記不揮発性記憶装置414の出力をメモリ読み出し動作によらない所定の既定値又は前記不揮発性記憶装置の出力データとは異なるランダムな値とすることにより前記不揮発性記憶装置414に格納されたソフトウェアの保護が可能になる。書き換えが禁止された状態の不揮発性記憶装置414が保有するプログラムを実行する正規の状態において、不正行為は外部バス回路419を経由し外部アドレス空間からCPU411に不正なプログラムをフェッチさせることに端を発すると想定される。そのため、それ以前の正規のプログラム実行状態では不揮発性記憶装置414から外部へのデータの読み出しなどが行われる場合にこれを許容できるようにし、一旦不正と想定される外部空間からの命令フェッチサイクルが発生された後は不揮発性記憶装置414に記憶された記憶情報を一切外部へ出力させず、記憶情報の保護を最優先とすることができる。
また、セキュリティレベル1及び2のプロテクトロック状態において前記所定の条件下では不揮発性記憶装置414が保持する正規のデータは如何なる意味においても不揮発性記憶装置414の外部に存在することにはならず、マイクロコンピュータ400の外部への正規データの出力を阻止しても内部のバスやバッファ上に滞留するという事態も抑制することができる。
図21には前記セキュリティ状態に関する操作コマンドが例示される。メモリ制御シーケンサ412は、セキュリティ状態を制御する操作コマンドのセットとして、キーコードセットコマンド、キーコードリセットコマンド及びキーコード認証コマンドのコマンドを有する。
キーコードセットコマンドは、外部インタフェース回路416,417から入力されたキーコードを前記不揮発性メモリ部413の所定の記憶領域(キーコード記憶領域)に書き込む動作(キーコードセット)を指示するコマンドである。このキーコードセットはアンプロテクト状態又はプロテクトアンロック状態で可能である。キーコードをセットするとき、セキュリティレベル1,2は、キーコードを格納するためのアドレスの指定の相違によって選択する。ここで言うキーコードを格納するためのアドレスとはメモリ制御シーケンサ412が保有するデータレジスタのアドレスであり、不揮発性メモリ部のメモリアドレスではない。要するに、セットするキーコードはコマンドパラメータとしてのレジスタアドレスで指定される。したがって、第1キーコードと第2キーコードの値については同じであっても相違していてもよく、任意値であってよい。特に制限されないが、メモリ制御シーケンサ412はバス418を介して与えられるキーコード領域に対する読み出しアクセスの要求を無効とし、不正な書き換えだけでなく、不正なリード要求があってもこれを無効とすることにより、キーコードに対する保護の万全を期するものである。
キーコードリセットコマンド、及びキーコード認証コマンドは実施の形態1と同様である。リセット対象キーコードや認証対象キーコードは、そのときのセキュリティ状態に基づいてメモリ制御シーケンサ412が判別する。
図19にはセキュリティレベルの状態遷移図が示される。同図に示される状態遷移制御はメモリ制御シーケンサ412の制御による。
プロテクトアンロック状態における前記リセットコマンドの実行、又は前記キーコード記憶領域の情報が無効にされている状態でのマイクロコンピュータのリセット動作により、セキュリティ状態はアンプロテクト状態1とされる。
アンプロテクト状態1における第1キーコード(レベル1のキーコード)のセットコマンドの実行、又はセキュリティレベル1のプロテクトロック状態3Aにおける認証コマンド実行による認証結果の認証正当により、セキュリティ状態がセキュリティレベル1のプロテクトアンロック状態2Aにされる。
前記セキュリティレベル1のプロテクトアンロック状態2Aにおける認証コマンド実行による認証結果の認証不当(キーコード認証不一致)、又は不揮発性メモリ部413にレベル1キーコードがセットされている状態でのマイクロコンピュータ10のリセット動作により、セキュリティ状態がセキュリティレベル1のプロテクトロック状態3Aとされる。
アンプロテクト状態1における第2キーコード(レベル2のキーコード)のセットコマンドの実行、セキュリティレベル2のプロテクトロック状態3Bにおける認証コマンド実行による認証結果の認証正当(認証一致)、又はセキュリティレベル1のプロテクトアンロック状態2Aにける第2キーコード(レベル2のキーコード)のセットコマンドの実行により、セキュリティ状態がセキュリティレベル2のプロテクトアンロック状態2Bにされる。
前記セキュリティレベル2のプロテクトアンロック状態2Bにおける認証コマンド実行による認証結果の認証不当(キーコード認証不一致)、又は不揮発性メモリ部413にレベル2キーコードがセットされている状態でのマイクロコンピュータ400のリセット動作により、セキュリティ状態がセキュリティレベル2のプロテクトロック状態3Bとされる。
特に図示はしないが、メモリ制御シーケンサ412が有する制御モードレジスタMREGは実施の形態1と同じであり、セキュリティ制御ステータスレジスタSREGのセキュリティ制御ステータスコードSTTは5状態のセキュリティ状態を異なるコードで表すことができるビット数を有する。
その他の構成並びに基本的な作用は実施の形態1と同じであるからその詳細な説明は省略する。
特に、5レベルによるセキュリティ状態の遷移制御を行う本実施の形態によれば、不揮発性記憶装置414を単に書き換えるような処理主体に対してはアンプロテクトセキュリティ状態1、レベル2のプロテクトアンロック及びプロテクトロックのセキュリティ状態への遷移だけで運用できる。つまり、インタフェース仕様が公開されるデバッグ専用のデバッグインタフェース回路417を使用したマイクロコンピュータ400内部の不正アクセスによる不揮発性記憶装置414に対するアタックが容易に行えないようになる。更に詳述すれば、実施の形態1ではプロテクトロック状態でセキュリティ性を保った状態でも、インサーキットエミュレータのデバッグインタフェースではキーコード認証を実施して一致した場合はエミュレータの接続が許可されデバッグが可能になる。つまり、キーコードは有限な組み合わせのため、組み合わせの総当りなどの攻撃によりキーコードを本来知りえない第三者でもエミュレータの接続が可能になるポテンシャルは残っている。そのため、更なるセキュリティ性の向上のためエミュレータのインタフェースがキーコード認証により接続が許可されるプロテクトロック状態(プロテクトロック状態レベル1)とエミュレータのインタフェースが全く使用できないプロテクトロック状態(プロテクトロック状態レベル2)の2種類の状態のプロテクトロック状態を用意することによって更にセキュリティ性能を向上させる事ができる。一方、システムデバッグの一環として不揮発性記憶装置414の書き換えを伴う処理などを行うような処理主体に対してはレベル1のプロテクトアンロック及びプロテクトロックのセキュリティ状態への遷移も可能に運用させることにより、使い勝手の良好なデバッグ環境を提供することが可能になる。
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
例えば、電気的に書き換え可能な不揮発性メモリ、デバッグ用インタフェース、通信インタフェースは上記説明に限定されず適宜変更可能である。また、半導体装置はマイクロコンピュータに限定されず、画像処理、圧縮伸長処理、通信処理等のアクセラレータや、その他のシステムオンチップ形態の半導体装置に広く適用することができる。また、秘密情報を用いる認証は秘密情報に比較一致判別による場合に限定されず、その他の認証アルゴリズムを用いて行ってもよい。