(57)【要約】【課題】本発明は、誤ってまたは意図的に旧バージョン情報を読出してしまうリワインドを防止して、最新バージョン情報を常に読み出すことが可能なセキュリティモジュールを含む半導体装置を提供する。【解決手段】本発明は、ＣＰＵ１０と、内臓ＦＬＡＳＨメモリ２０と、セキュリティモジュール３０とを備える半導体装置である。セキュリティモジュール３０は、バスを監視して取得したデータに含まれる最新バージョン情報と、ＣＰＵ１０がセキュリティモジュール３０に書込むセキュリティ機能の最新バージョン情報とが一致し、最新バージョン情報の次に読出されるアドレスに記憶してあるデータが、予め定められた情報であると判定した場合に、セキュリティ機能の処理を行なう。【選択図】図１
2013149089.tif 000002
【特許請求の範囲】
【請求項１】
プログラムを実行する演算処理部と、
前記演算処理部で実行する前記プログラム、および前記プログラムを実行するときに必要となるデータを記憶する不揮発性メモリと、
前記不揮発性メモリに記憶した前記プログラムおよび前記データのうち、セキュリティ機能の前記プログラムおよび前記データを処理するセキュリティモジュールと
を備える半導体装置であって、
前記セキュリティモジュールは、
前記演算処理部と前記不揮発性メモリとの間で前記プログラムおよび前記データの入出力を行なう経路を監視し、前記演算処理部が前記不揮発性メモリから読出す前記不揮発性メモリのアドレスおよび前記データを取得する監視部と、
前記監視部が取得した前記データに含まれる最新バージョン情報と、前記演算処理部が前記セキュリティモジュールに書込むセキュリティ機能の前記最新バージョン情報とを比較する比較部と、
前記最新バージョン情報の次に読出されるアドレスに記憶してある前記データが、予め定められた情報であるか否かを判定する情報判定部と
を有し、
前記セキュリティモジュールは、前記比較部で前記最新バージョン情報が一致し、前記情報判定部で前記最新バージョン情報の次に読出されるアドレスに記憶してある前記データが、予め定められた情報であると判定した場合に、前記セキュリティ機能の処理を行なう半導体装置。
【請求項２】
前記演算処理部は、前記最新バージョン情報を記憶した前記不揮発性メモリのアドレスを最新アドレス情報として保持し、
前記監視部は、前記演算処理部から前記最新アドレス情報を受取り、前記最新アドレス情報に含まれるアドレスの前記データを監視する、請求項１に記載の半導体装置。
【請求項３】
前記演算処理部は、前記不揮発性メモリから読出したバージョン情報の次に読出すアドレスに記憶してある前記データが、予め定められた情報である場合、読出した前記バージョン情報を前記最新バージョン情報として、前記最新バージョン情報を記憶した前記不揮発性メモリのアドレスを前記最新アドレス情報とする、請求項２に記載の半導体装置。
【請求項４】
情報判定部が判定する予め定められた情報は、消去状態の情報である、請求項１〜請求項３のいずれか１項に記載の半導体装置。
【請求項５】
前記不揮発性メモリは、複数のアドレス単位を前記データの内容を消去する消去単位とし、前記消去単位の先頭に位置するアドレスに予め定められた情報を記憶してある、請求項１〜請求項４のいずれか１項に記載の半導体装置。
【請求項６】
前記演算処理部は、前記最新バージョン情報を書込むときに、既に情報が書込まれているアドレスに、予め定められた情報を書込む、請求項１〜請求項５のいずれか１項に記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置に関し、特に、セキュリティ機能の処理を行なうセキュリティモジュールを含む半導体装置に関する。
【背景技術】
【０００２】
ＣＰＵ（Central  Processing  Unit）や、その動作プログラムを格納したメモリを含むＭＣＵ（Micro  Control  Unit）などの半導体装置において、セキュリティ機能の処理を行なうセキュリティモジュールをさらに含む半導体装置が、近年開発されている。
【０００３】
たとえば、特許文献１には、プログラム機密保護を図るためのセキュリティ回路（セキュリティモジュール）を含む半導体装置が開示してある。特許文献１に開示してある半導体装置では、セキュリティ回路に、外部入力されたセキュリティ解除コードとセキュリティコードとを比較するための比較部と、セキュリティ解除コードとセキュリティコードとの不一致回数を記憶するための加算記憶部と、不一致回数が最大許容回数以下で、且つ、セキュリティコードとセキュリティ解除コードとが一致した場合にのみ、セキュリティを解除する判定部とを有している。
【０００４】
また、セキュリティモジュールを含む半導体装置では、メモリに記憶してあるバージョン情報に基づいて、認証用の一時鍵の生成、暗号・復号化用の一時鍵の生成や通信相手の除外リストの決定などのセキュリティ機能の処理を行なう。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平７−７３０３３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
バージョン情報は、メモリのバージョン情報記憶領域に記憶され、情報が更新されると、バージョン情報記憶領域内の次のアドレスに順次書込まれて行く。つまり、半導体装置は、バージョン情報を更新する場合、セキュリティモジュールによる認証にパスしてメモリへの書込みが許可されてから、旧バージョン情報を残したまま新しいバージョン情報をメモリのバージョン情報記憶領域に追記する。
【０００７】
そのため、メモリのバージョン情報記憶領域には、最新バージョン情報だけでなく、旧バージョン情報も存在している。よって、半導体装置は、最新バージョン情報を読出すことなく、誤ってまたは意図的に旧バージョン情報を読出してしまうリワインド（rewind）を行なう可能性があった。半導体装置がリワインドを行なうと、最新バージョン情報では認証用の一時鍵が生成できないにもかかわらず、旧バージョン情報では認証用の一時鍵が生成できてしまう可能性があった。また、最新バージョン情報では除外リストに載っている通信相手であるにもかかわらず、旧バージョン情報では除外リストに載っておらず、該通信相手と通信可能になってしまう可能性があった。さらに、旧バージョン情報が、セキュリティホールがあるバージョンのプログラムを使用することを示唆している場合、半導体装置は、該旧バージョン情報を使用することで、セキュリティが低下するという問題があった。
【０００８】
そこで、本発明は、上記問題点を解決するためになされたものであり、誤ってまたは意図的に旧バージョン情報を読出してしまうリワインドを防止して、最新バージョン情報を常に読み出すことが可能なセキュリティモジュールを含む半導体装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、本発明の１つの実施の形態は、プログラムを実行する演算処理部と、演算処理部で実行するプログラム、およびプログラムを実行するときに必要となるデータを記憶する不揮発性メモリと、不揮発性メモリに記憶したプログラムおよびデータのうち、セキュリティ機能のプログラムおよびデータを処理するセキュリティモジュールとを備える半導体装置であって、セキュリティモジュールは、演算処理部と不揮発性メモリとの間でプログラムおよびデータの入出力を行なう経路を監視し、演算処理部が不揮発性メモリから読出す不揮発性メモリのアドレスおよびデータを取得する監視部と、監視部が取得したデータに含まれる最新バージョン情報と、演算処理部がセキュリティモジュールに書込むセキュリティ機能の最新バージョン情報とを比較する比較部と、最新バージョン情報の次に読出されるアドレスに記憶してあるデータが、予め定められた情報であるか否かを判定する情報判定部とを有し、セキュリティモジュールは、比較部で最新バージョン情報が一致し、情報判定部で最新バージョン情報の次に読出されるアドレスに記憶してあるデータが、予め定められた情報であると判定した場合に、セキュリティ機能の処理を行なう。
【発明の効果】
【００１０】
本発明に係る半導体装置は、監視部が取得したデータに含まれる最新バージョン情報と、演算処理部がセキュリティモジュールに書込むセキュリティ機能の最新バージョン情報とが一致し、最新バージョン情報の次に読出されるアドレスに記憶してあるデータが、予め定められた情報であるである場合に、セキュリティ機能の処理を行なう。そのため、本発明に係る半導体装置は、誤ってまたは意図的に旧バージョン情報を読出してしまうリワインドを防止して、最新バージョン情報を常に読み出すことが可能となり、セキュリティモジュールのセキュリティを向上させることができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施の形態１に係る半導体装置の構成を示すブロック図である。
【図２】本発明の実施の形態１に係る半導体装置のセキュリティモジュールの構成を示すブロック図である。
【図３】内蔵ＦＬＡＳＨメモリのバージョン情報記憶領域の構成を示す概略図である。
【図４】本発明の実施の形態１に係る半導体装置のバージョン情報の更新について説明するためのフローチャートである。
【図５】本発明の実施の形態１に係る半導体装置のバージョン情報の監視について説明するためのフローチャートである。
【図６】本発明の実施の形態２に係る内蔵ＦＬＡＳＨメモリのバージョン情報記憶領域の構成を示す概略図である。
【図７】消去単位がバージョン情報で埋まった内蔵ＦＬＡＳＨメモリ２０のバージョン情報記憶領域の構成を示す概略図である。
【図８】本発明の実施の形態３に係る内蔵ＦＬＡＳＨメモリのバージョン情報記憶領域の構成を示す概略図である。
【図９】本発明の実施の形態４に係る半導体装置のバージョン情報の監視について説明するためのフローチャートである。
【発明を実施するための形態】
【００１２】
以下、本発明に係る実施の形態について図面を参照して説明する。
（実施の形態１）
図１は、本発明の実施の形態１に係る半導体装置の構成を示すブロック図である。図１に示す半導体装置１は、ＣＰＵ１０、内蔵ＦＬＡＳＨメモリ２０、セキュリティモジュール３０、バス４０、外部バスＩＦ（Interface）５０、内蔵ＲＡＭ（Random  Access  Memory）６０を含んでいる。
【００１３】
ＣＰＵ１０は、内蔵ＦＬＡＳＨメモリ２０などに記憶したプログラムを実行する演算処理部である。
【００１４】
内蔵ＦＬＡＳＨメモリ２０は、不揮発性メモリであり、プログラムおよびプログラムの実行に必要なデータを記憶してある。ただし、内蔵ＦＬＡＳＨメモリ２０は、ＣＰＵ１０で実行する通常のプログラムおよびデータのみでなく、セキュリティモジュール３０で実行するセキュリティ機能のプログラムおよびデータも記憶してある。セキュリティ機能のデータには、たとえば認証用や暗号・復号化用の鍵、やバージョン情報などがある。
【００１５】
なお、ＣＰＵ１０は、内蔵ＦＬＡＳＨメモリ２０からプログラムおよびデータを読出すことは原則として許可される。また、ＣＰＵ１０が消去や書込みを行なう場合、内蔵ＦＬＡＳＨメモリ２０は、すべての領域に対して、セキュリティ機能による認証を得る必要がある領域として設定してもよいが、セキュリティ機能のプログラムおよびデータを記憶する領域のみに限定してもよい。
【００１６】
セキュリティモジュール３０は、内蔵ＦＬＡＳＨメモリ２０から読出したプログラムおよびデータに基づいてセキュリティ機能の処理を行なう。具体的に、セキュリティモジュール３０は、ＣＰＵ１０が内蔵ＦＬＡＳＨメモリ２０に対して消去や書込みを行なう場合、セキュリティ機能による認証を行なったり、内蔵ＦＬＡＳＨメモリ２０や内蔵ＲＡＭ６０に書込むデータの暗号・復号化する処理を行なう。
【００１７】
バス４０は、ＣＰＵ１０、内蔵ＦＬＡＳＨメモリ２０、セキュリティモジュール３０、および内蔵ＲＡＭ６０の間でプログラムおよびデータの入出力を行なう経路である。つまり、内蔵ＦＬＡＳＨメモリ２０に記憶してあるプログラムおよびデータは、バス４を介してＣＰＵ１０やセキュリティモジュール３０に入力される。
【００１８】
外部バスＩＦ５０は、半導体装置１の内部にあるバス４０と半導体装置１の外部にあるバス４とを接続するためのインターフェースである。バス４には、外付けＦＬＡＳＨメモリ２および外付けＲＡＭ３が接続してあるので、半導体装置１は、外部バスＩＦ５０およびバス４を介して、外付けＦＬＡＳＨメモリ２および外付けＲＡＭ３にプログラムおよびデータを読出したり、書込んだりすることができる。なお、外付けＦＬＡＳＨメモリ２には、ＣＰＵ１０で実行する通常のプログラムおよびデータが記憶してあり、ＣＰＵ１０によるプログラムおよびデータを読出し、消去や書込みが可能である。外付けＲＡＭ３には、ＣＰＵ１０で処理するデータが記憶してあり、ＣＰＵ１０によるデータを読出し、消去や書込みが可能である。
【００１９】
内蔵ＲＡＭ６０は、ＣＰＵ１０で処理するデータが記憶してあり、ＣＰＵ１０によるデータを読出し、消去や書込みが可能である。内蔵ＲＡＭ６０および外付けＲＡＭ３は、揮発性メモリで、たとえばＤＲＡＭ（Dynamic  Random  Access  Memory）などを用いている。
【００２０】
さらに、セキュリティモジュール３０について説明する。セキュリティモジュール３０は、セキュリティ機能の処理に必要な演算器と一時記憶装置（レジスタなど）で構成され、ＣＰＵ１０から内部の処理を直接操作したり、内部で処理したデータにアクセスしたりできないように構成してある。つまり、ＣＰＵ１０は、セキュリティモジュール３０のセキュリティ境界内の処理に対して直接関与することができない。また、セキュリティモジュール３０から出力するデータは暗号化またはＭＡＣ（Message  Authentication  Code）の付加により、盗聴や改ざんを防止することができる。
【００２１】
また、セキュリティモジュール３０は、実行するプログラムを内蔵ＦＬＡＳＨメモリ２０から直接読出すのではなく、ＣＰＵ１０がセキュリティモジュール３０のレジスタにコマンドやデータを入力することでプログラムを実行する。そして、セキュリティモジュール３０は、内蔵ＦＬＡＳＨメモリ２０に記憶してあるプログラムに対して、ＣＰＵ１０がセキュリティモジュール３０のレジスタに入力するコマンド（プログラム）が変更されていないかを検出する改竄検出機能を搭載してある。そのため、ＣＰＵ１０が内蔵ＦＬＡＳＨメモリ２０から読出したプログラムを変更して、セキュリティモジュール３０のレジスタにコマンドを入力した場合、セキュリティモジュール３０は、改竄検出機能により動作が停止する。このように、セキュリティモジュール３０は、内部で扱っているデータが外部から自由に操作できず、且つ勝手に処理内容を変更することができないので、セキュリティが守られている。
【００２２】
さらに、本発明の実施の形態１に係るセキュリティモジュール３０は、バス４０を監視する機能を設け、内蔵ＦＬＡＳＨメモリ２０のバージョン情報領域から最新バージョン情報が入力されていることを確認することができる機能を有している。図２は、本発明の実施の形態１に係る半導体装置１のセキュリティモジュール３０の構成を示すブロック図である。図２に示すセキュリティモジュール３０は、上記の機能を実現するために、比較部３１、監視部３２、情報判定部３３、セキュリティ処理部３４を含んでいる。
【００２３】
監視部３２は、セキュリティモジュール３０がバス４０に流れる内蔵ＦＬＡＳＨメモリ２０のアドレスとデータとを監視するための手段である。具体的には、監視部３２は、ＣＰＵ１０が内蔵ＦＬＡＳＨメモリ２０から読出すセキュリティ機能の最新バージョン情報、および最新バージョン情報の次に読出されるアドレスに記憶してあるデータを取得し、セキュリティモジュール３０のレジスタ（図示せず）に記憶しておく。
【００２４】
比較部３１は、監視部３２が取得した最新バージョン情報と、ＣＰＵ１０がセキュリティモジュール３０のレジスタに書込むセキュリティ機能の最新バージョン情報とを比較する。つまり、比較部３１は、ＣＰＵ１０が内蔵ＦＬＡＳＨメモリ２０から読出した最新バージョン情報を変更して、セキュリティモジュール３０のレジスタに書込んでいないかを確認している。
【００２５】
情報判定部３３は、最新バージョン情報の次に読出されるアドレスに記憶してあるデータが、消去状態の情報であるか否かを判定する。
【００２６】
ここで、内蔵ＦＬＡＳＨメモリ２０のバージョン情報記憶領域について説明する。図３は、内蔵ＦＬＡＳＨメモリ２０のバージョン情報記憶領域の構成を示す概略図である。図３に示す内蔵ＦＬＡＳＨメモリ２０のバージョン情報記憶領域では、図中上側から順にバージョン情報が追記され、ｖｅｒ．００１〜ｖｅｒ．０１１までが、旧バージョン情報で、ｖｅｒ．０１２が最新バージョン情報である。
【００２７】
次に、更新したバージョン情報を内蔵ＦＬＡＳＨメモリ２０に追記する場合、最新バージョン情報のｖｅｒ．０１２の図中下側の消去状態に追記することになる。つまり、最新バージョン情報のｖｅｒ．０１２を記憶したアドレスの次のアドレスに更新したバージョン情報を記憶させる。そのため、内蔵ＦＬＡＳＨメモリ２０のバージョン情報記憶領域では、最新バージョン情報の次のアドレスが常に消去状態の情報となっている。
【００２８】
よって、情報判定部３３は、最新バージョン情報の次に読出されるアドレスに記憶してあるデータが、消去状態の情報であるか否かを判定することで、セキュリティモジュール３０のレジスタに現在書込んである最新バージョン情報が、内蔵ＦＬＡＳＨメモリ２０のバージョン情報記憶領域で本当に最新バージョン情報であるか否かを判定することができる。
【００２９】
セキュリティ処理部３４は、比較部３１で最新バージョン情報が一致し、情報判定部３３で最新バージョン情報の次に読出されるアドレスに記憶してあるデータが、消去状態の情報であると判定した場合に、該最新バージョン情報を用いて、セキュリティ機能の処理を行なう。セキュリティ処理部３４は、セキュリティ機能の処理を行なった結果を、バス４０を介して、ＣＰＵ１０などに出力する。
【００３０】
次に、バージョン情報の更新（アップデート）および最新バージョン情報の監視についてフローチャートを用いてさらに詳しく説明する。図４は、本発明の実施の形態１に係る半導体装置１のバージョン情報の更新について説明するためのフローチャートである。図５は、本発明の実施の形態１に係る半導体装置１のバージョン情報の監視について説明するためのフローチャートである。
【００３１】
まず、図４に示すように、半導体装置１は、内蔵ＦＬＡＳＨメモリ２０に記憶してあるセキュリティ機能のバージョン情報を更新するためのアップデート要求を外部機器から受付ける（ステップＳ４１）。
【００３２】
次に、半導体装置１は、アップデート要求の発信元の外部機器との間で認証を行ない、アップデート要求の発信元の外部機器が、セキュリティ機能のバージョン情報を更新する正当な権限を有しているかを確認する（ステップＳ４２）。
【００３３】
次に、半導体装置１は、アップデート要求の発信元の外部機器との間で認証が完了し、アップデート要求の発信元の外部機器が、セキュリティ機能のバージョン情報を更新する正当な権限を有しているか否かを判断する（ステップＳ４３）。半導体装置１は、外部機器がセキュリティ機能のバージョン情報を更新する正当な権限を有していないと判断した場合（ステップＳ４３：ＮＯ）、セキュリティ機能のバージョン情報を更新する処理を中止（アップデート中止）する。
【００３４】
次に、半導体装置１は、外部機器がセキュリティ機能のバージョン情報を更新する正当な権限を有していると判断した場合（ステップＳ４３：ＹＥＳ）、外部機器から最新バージョン情報を受取る（ステップＳ４４）。
【００３５】
次に、半導体装置１は、セキュリティ機能による認証を得た後、外部機器から受取った最新バージョン情報を、図３に示すように１つ前に記憶されたバージョン情報のアドレスの次のアドレスの内蔵ＦＬＡＳＨメモリ２０に書込む（ステップＳ４５）。そして、半導体装置１は、セキュリティ機能のバージョン情報を更新する処理を完了（アップデート完了）する。
【００３６】
次に、図５に示すように、ＣＰＵ１０は、内蔵ＦＬＡＳＨメモリ２０に書込んだ最新バージョン情報を記憶している内蔵ＦＬＡＳＨメモリ２０のアドレスをセキュリティモジュール３０に設定する（ステップＳ５１）。セキュリティモジュール３０に、最新バージョン情報を記憶している内蔵ＦＬＡＳＨメモリ２０のアドレスを設定することで、セキュリティモジュール３０の監視部３２は、ＣＰＵ１０が内蔵ＦＬＡＳＨメモリ２０から最新バージョン情報を読出し際に、当該最新バージョン情報を監視することができる。なお、ＣＰＵ１０は、最新バージョン情報を内蔵ＦＬＡＳＨメモリ２０に書込んだ際に、最新バージョン情報を記憶している内蔵ＦＬＡＳＨメモリ２０のアドレスを保持している。
【００３７】
次に、ＣＰＵ１０が内蔵ＦＬＡＳＨメモリ２０から最新バージョン情報の読出しを行ない、セキュリティモジュール３０の監視部３２は、監視しているバス４０から当該最新バージョン情報を取得する（ステップＳ５２）。
【００３８】
次に、ＣＰＵ１０は、内蔵ＦＬＡＳＨメモリ２０から読出した最新バージョン情報を、セキュリティモジュール３０に書込む（ステップＳ５３）。
【００３９】
次に、セキュリティモジュール３０の比較部３１は、ステップＳ５２で監視部３２が取得した最新バージョン情報と、ステップＳ５３でＣＰＵ１０が書込む最新バージョン情報とを比較する（ステップＳ５４）。
【００４０】
次に、セキュリティモジュール３０の比較部３１は、監視部３２が取得した最新バージョン情報と、ＣＰＵ１０が書込む最新バージョン情報とが一致しているか否かを判断する（ステップＳ５５）。セキュリティモジュール３０の比較部３１が、監視部３２が取得した最新バージョン情報と、ＣＰＵ１０が書込む最新バージョン情報とが一致しないと判断した場合（ステップＳ５５：ＮＯ）、セキュリティモジュール３０は、セキュリティ機能の処理を停止（ＮＧ）する。
【００４１】
次に、セキュリティモジュール３０の比較部３１が、監視部３２が取得した最新バージョン情報と、ＣＰＵ１０が書込む最新バージョン情報とが一致しすると判断した場合（ステップＳ５５：ＹＥＳ）、ＣＰＵ１０は最新バージョン情報の次に読出されるアドレスに記憶してあるデータを読出し、セキュリティモジュール３０は、監視部３２が監視しているバス４０からデータを取得する（ステップＳ５６）。なお、セキュリティモジュール３０の比較部３１は、ＣＰＵ１０が最新バージョン情報の次に読出されるアドレスに記憶してあるデータを読出すまで、ＣＰＵ１０が内蔵ＦＬＡＳＨメモリ２０から読出すデータを監視している。また、最新バージョン情報の次に読出されるアドレスに記憶してあるデータは、セキュリティモジュール３０が読出してもよい。
【００４２】
次に、セキュリティモジュール３０の情報判定部３３は、最新バージョン情報の次に読出されるアドレスに記憶してあるデータが、消去状態の情報であるか否かを判定する（ステップＳ５７）。セキュリティモジュール３０の情報判定部３３が、最新バージョン情報の次に読出されるアドレスに記憶してあるデータが、消去状態の情報でないと判定した場合（ステップＳ５７：ＮＯ）、セキュリティモジュール３０は、セキュリティ機能の処理を停止（ＮＧ）する。
【００４３】
セキュリティモジュール３０の情報判定部３３が、最新バージョン情報の次に読出されるアドレスに記憶してあるデータが、消去状態の情報であると判定した場合（ステップＳ５７：ＹＥＳ）、セキュリティモジュール３０は、セキュリティ機能の処理を行なう（ＯＫ）。
【００４４】
以上のように、本発明の実施の形態１に係る半導体装置１は、監視部３２がバス４０から取得したデータに含まれる最新バージョン情報と、ＣＰＵ１がセキュリティモジュール３０に書込むセキュリティ機能の最新バージョン情報とが一致し、最新バージョン情報の次に読出されるアドレスに記憶してあるデータが、消去状態の情報である場合に、セキュリティ機能の処理を行なう。そのため、本発明の実施の形態１に係る半導体装置１は、誤ってまたは意図的に旧バージョン情報を読出してしまうリワインドを防止して、最新バージョン情報を常に読み出すことが可能となり、セキュリティモジュール３０のセキュリティを向上させることができる。
【００４５】
なお、最新バージョン情報の次に読出されるアドレスに記憶してあるデータは、消去状態の情報に限定されるものではなく、予め定められた情報であればよい。たとえば、最新バージョン情報の次に読出されるアドレスに記憶してあるデータに、“０１０１・・・”、“１１１１・・・”や“１１１１・・・”などの情報を書込んで、最新バージョン情報であることを確認してもよい。
【００４６】
（実施の形態２）
内蔵ＦＬＡＳＨメモリ２０において、複数のアドレス単位をデータの内容を消去する消去単位とする構成について説明する。図６は、本発明の実施の形態２に係る内蔵ＦＬＡＳＨメモリ２０のバージョン情報記憶領域の構成を示す概略図である。なお、本発明の実施の形態２に係る半導体装置１は、内蔵ＦＬＡＳＨメモリ２０の構成以外、実施の形態２に係る半導体装置１の構成と同じであるため、同じ構成要素に同じ符号を付して詳細な説明は繰返さない。
【００４７】
図６に示す内蔵ＦＬＡＳＨメモリ２０は、複数のアドレス単位をデータの内容を消去する消去単位とし、実施の形態１と同様、バージョン情報を更新する度に、書込まれているバージョン情報の次の消去単位内のアドレスに最新バージョン情報が追記される。なお、内蔵ＦＬＡＳＨメモリ２０は、初回のバージョン情報を書込む時、バージョン情報記憶領域内の全ての消去単位を消去状態にし、消去単位の先頭アドレスにバージョン情報記憶領域であることを示す特定コードを書込む。
【００４８】
つまり、図６に示す内蔵ＦＬＡＳＨメモリ２０は、複数のアドレス単位をデータの内容を消去する消去単位とし、図中では２つの消去単位が図示してある。図中上側の消去単位には、１つ目のアドレスに特定コード（たとえば、“０１０１・・・”など）が記憶され、２つ目以降のアドレスにバージョン情報（ｖｅｒ．００１〜ｖｅｒ．０１２）が記憶してある。バージョン情報を記憶していないアドレスは、消去状態である。図中下側の消去単位には、１つ目のアドレスに特定コードが記憶され、２つ目以降のアドレスは消去状態である。
【００４９】
次に、図６に示す内蔵ＦＬＡＳＨメモリ２０において、バージョン情報を更新すると、消去状態のアドレスに最新アドレス情報が追記され、図中上側の消去単位がバージョン情報で埋まってしまう。図７は、消去単位がバージョン情報で埋まった内蔵ＦＬＡＳＨメモリ２０のバージョン情報記憶領域の構成を示す概略図である。図７に示すように、消去単位がバージョン情報で埋まった状態でバージョン情報を更新する場合、次の消去領域の先頭に特定コードが書かれているので、該特定コードの次のアドレスにバージョン情報を追記することになる。さらに、旧バージョン情報で埋まっている消去単位を消去し、その消去単位の先頭アドレスに特定コードを書込んでバージョン情報の更新処理が終了する。
【００５０】
バージョン情報の読出す処理は実施の形態１と同様の処理を行なうが、最新バージョン情報が消去単位の最終アドレスに書かれている場合、最新バージョン情報の次に読出されるアドレスに記憶してあるデータは、消去単位の先頭になるので、特定コードが書かれていることを確認する。セキュリティモジュール３０の情報判定部３３は、特定コードを確認することで、使用している最新バージョン情報が正しいと判断することができる。
【００５１】
以上のように、本発明の実施の形態２に係る半導体装置１は、内蔵ＦＬＡＳＨメモリ２０が、複数のアドレス単位をデータの内容を消去する消去単位とし、消去単位の先頭に位置するアドレスに特定コードを記憶してあるので、消去単位の最終アドレスに最新バージョン情報が記憶してあるときにバージョン情報を更新する場合であっても、次の消去単位がバージョン情報記憶領域であることを確認することができ、誤ってまたは意図的にバージョン情報記憶領域以外に追記してしまうことを防ぐことができる。
【００５２】
（実施の形態３）
内蔵ＦＬＡＳＨメモリ２０において、旧バージョン情報を破棄する処理を行なう構成について説明する。図８は、本発明の実施の形態３に係る内蔵ＦＬＡＳＨメモリのバージョン情報記憶領域の構成を示す概略図である。なお、本発明の実施の形態３に係る半導体装置１は、内蔵ＦＬＡＳＨメモリ２０の構成以外、実施の形態２に係る半導体装置１の構成と同じであるため、同じ構成要素に同じ符号を付して詳細な説明は繰返さない。
【００５３】
図８に示す内蔵ＦＬＡＳＨメモリ２０は、実施の形態１と同様、バージョン情報を更新する度に、書込まれているバージョン情報の次のアドレスに最新バージョン情報が追記される。さらに、最新バージョン情報を内蔵ＦＬＡＳＨメモリ２０に追記した後、ＣＰＵ１０は、旧バージョン情報に“０”（消去と逆の状態）を上書きし、旧バージョン情報を破棄する。
【００５４】
図中上側から順にバージョン情報が追記され、ｖｅｒ．００１〜ｖｅｒ．０１１までが、旧バージョン情報で、ｖｅｒ．０１２が最新バージョン情報である。ｖｅｒ．０１２の最新バージョン情報を追記したときに、ｖｅｒ．０１１の旧バージョン情報に“０”を上書きし、旧バージョン情報を破棄する。
【００５５】
以上のように、本発明の実施の形態３に係る半導体装置１は、ＣＰＵ１が、最新バージョン情報を内蔵ＦＬＡＳＨメモリ２０に書込むときに、旧バージョン情報が書込まれているアドレスに“０”を上書きし、旧バージョン情報を破棄する。そのため、本発明の実施の形態３に係る半導体装置１は、誤ってまたは意図的に旧バージョン情報を読出した場合であっても、使用することができないので、セキュリティモジュール３０のセキュリティをさらに向上させることができる。
【００５６】
（実施の形態４）
実施の形態１に係る半導体装置１では、ＣＰＵ１０が、最新バージョン情報を内蔵ＦＬＡＳＨメモリ２０に書込んだ際に、最新バージョン情報を記憶している内蔵ＦＬＡＳＨメモリ２０のアドレスを保持していた。本実施の形態４に係る半導体装置１では、ＣＰＵ１０が、最新バージョン情報を記憶している内蔵ＦＬＡＳＨメモリ２０のアドレスを特定する処理を行なう場合について説明する。図９は、本発明の実施の形態４に係る半導体装置１のバージョン情報の監視について説明するためのフローチャートである。なお、本発明の実施の形態４に係る半導体装置１は、内蔵ＦＬＡＳＨメモリ２０の構成以外、実施の形態２に係る半導体装置１の構成と同じであるため、同じ構成要素に同じ符号を付して詳細な説明は繰返さない。
【００５７】
まず、図９に示すように、ＣＰＵ１０は、内蔵ＦＬＡＳＨメモリ２０のバージョン情報記憶領域内の最初のアドレスをセキュリティモジュール３０に設定する。ＣＰＵ１０は内蔵ＦＬＡＳＨメモリ２０のバージョン情報記憶領域内の最初のアドレスからバージョン情報の読出しを行なう。セキュリティモジュール３０の監視部３２は、ＣＰＵ１０が読み出すバージョン情報をバス４０から取得をする。ＣＰＵ１０は読み出したバージョン情報をセキュリティモジュール３０に書込み、セキュリティモジュール３０の比較部３１は、ＣＰＵ１０が書込んだバージョン情報と監視部３２が取得したバージョン情報とを比較する（ステップＳ９１）。
【００５８】
次に、比較部３１での比較結果が一致しないと判断した場合（ステップＳ９１：ＮＯ）、セキュリティモジュール３０はセキュリティ機能の処理を停止（ＮＧ）する。
【００５９】
比較部３１での比較結果が一致すると判断した場合（ステップＳ９１：ＹＥＳ）、ＣＰＵ１０は次のバージョン情報が格納されている次のアドレスをセキュリティモジュール３０に設定して、当該次のアドレスの読出しを行なう。監視部３２はＣＰＵ１０が読出すデータをバス４０から取得する。ＣＰＵ１０は当該次のアドレスから読出したデータをセキュリティモジュール３０に書込み、比較部３１はＣＰＵ１０から書込まれたデータと監視部３２が取得したデータとの両方のデータが共に消去状態であるか否か確認する（ステップＳ９３）。
【００６０】
比較部３１が、両方のデータが共に消去状態であると判断した場合（ステップＳ９４：ＹＥＳ）、セキュリティモジュール３０はＣＰＵ１０へデータ設定禁止を通知し、当該次のアドレスでの読出しの前のアドレスで読出したデータを最新バージョン情報とする（ステップＳ９５）。その後、セキュリティモジュール３０は、セキュリティ機能の処理を行なう（ＯＫ）。
【００６１】
比較部３１が、両方のデータが共に消去状態ではないと判断した場合（ステップＳ９４：ＮＯ）、当該次のアドレスがバージョン情報領域の最終アドレスか否かを判断する（ステップＳ９６）。
【００６２】
比較部３１が、当該次のアドレスがバージョン情報領域の最終アドレスであると判断した場合（ステップＳ９６：ＹＥＳ）、セキュリティモジュール３０はセキュリティ機能の処理を停止（ＮＧ）する。
【００６３】
比較部３１が、当該次のアドレスがバージョン情報領域の最終アドレスではないと判断した場合（ステップＳ９６：ＮＯ）、ＣＰＵ１０から書込まれたデータと監視部３２が取得したデータとが一致しているか否かを比較（ステップＳ９７）し、ステップＳ９２の判定を行なう。
【００６４】
以上のように、本発明の実施の形態４に係る半導体装置１は、ＣＰＵ１０が、内蔵ＦＬＡＳＨメモリ２０から読出したバージョン情報の次に読出すアドレスに記憶してあるデータが、消去状態の情報である場合、読出したバージョン情報を最新バージョン情報として、最新バージョン情報を記憶した内蔵ＦＬＡＳＨメモリ２０のアドレスを最新アドレス情報とするので、ＣＰＵ１０が、最新バージョン情報を内蔵ＦＬＡＳＨメモリ２０に書込んだ際に、最新バージョン情報を記憶している内蔵ＦＬＡＳＨメモリ２０のアドレスを保持しておく必要がない。
【００６５】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【００６６】
１  半導体装置、２  外付けＦＬＡＳＨメモリ、３  外付けＲＡＭ、４，４０  バス、２０  内蔵ＦＬＡＳＨメモリ、３０  セキュリティモジュール、３１  比較部、３２  監視部、３３  情報判定部、３４  セキュリティ処理部、５０  外部バスＩＦ、６０  内蔵ＲＡＭ。
【図１】
2013149089.tif 000003
【図２】
2013149089.tif 000004
【図３】
2013149089.tif 000005
【図４】
2013149089.tif 000006
【図５】
2013149089.tif 000007
【図６】
2013149089.tif 000008
【図７】
2013149089.tif 000009
【図８】
2013149089.tif 000010
【図９】
2013149089.tif 000011