(57)【要約】【課題】中央処理部とセキュリティ処理部とが不揮発性メモリに同時にアクセスすることを回避する。【解決手段】データフラッシュ１３は、セキュア領域３１とユーザ領域３２とを含む。セキュア領域３１には、セキュリティ処理で使用される複数のセキュリティ情報が記憶される。セキュリティＩＰ１２は、セキュア領域３１から複数のセキュリティ情報の一部を読み出してセキュアＲＡＭ２２に格納する。セキュアＩＰ１２は、セキュリティ処理で使用するセキュリティ情報がセキュアＲＡＭに記憶されている場合は、セキュアＲＡＭ２２からセキュリティ情報を読み出して使用する。【選択図】図１
2018106628.tif 000002
【特許請求の範囲】
【請求項１】
セキュリティ情報を使用したセキュリティ処理を実施するセキュリティ処理部と、
前記セキュリティ処理部へ、前記セキュリティ処理の実行を依頼する中央処理部と、
論理的に分割された、前記セキュリティ処理部からはアクセス可能で前記中央処理部からはアクセスができないセキュア領域と、前記セキュリティ処理部及び前記中央処理部の双方からアクセスが可能なユーザ領域とを有する不揮発性メモリと、
前記セキュリティ処理部からはアクセス可能で前記中央処理部からはアクセスができないセキュアメモリとを備え、
前記セキュア領域には複数のセキュリティ情報が記憶されており、
前記セキュリティ処理部は、前記セキュア領域から前記複数のセキュリティ情報の一部を読み出して前記セキュアメモリに格納し、前記セキュリティ処理で使用するセキュリティ情報が前記セキュアメモリに記憶されている場合は、前記セキュアメモリから前記セキュリティ情報を読み出して使用する半導体装置。
【請求項２】
前記中央処理部は、前記セキュリティ処理部に前記セキュリティ処理の実行を依頼した後、前記ユーザ領域にアクセスする請求項１に記載の半導体装置。
【請求項３】
前記中央処理部は、前記セキュリティ処理部に対して前記セキュアメモリに格納させるセキュリティ情報を指定し、前記セキュリティ処理部は、前記中央処理部から指定されたセキュリティ情報を前記セキュア領域から読み出して前記セキュアメモリに格納する請求項１に記載の半導体装置。
【請求項４】
前記中央処理部は、初期設定動作において前記セキュアメモリに格納させるセキュリティ情報を指定する請求項３に記載の半導体装置。
【請求項５】
前記セキュア領域には、前記セキュアメモリに格納させるセキュリティ情報の識別情報が更に記憶されており、前記セキュリティ処理部は、前記セキュア領域から前記識別情報を読み出し、該読み出した識別情報に対応するセキュリティ情報を前記セキュア領域から読み出して前記セキュアメモリに格納する請求項１に記載の半導体装置。
【請求項６】
前記セキュリティ処理部は、初期設定動作において前記セキュア領域から前記識別情報を読み出す請求項５に記載の半導体装置。
【請求項７】
前記セキュリティ処理部は、前記セキュアメモリに格納するセキュリティ情報の識別情報を前記セキュアメモリに更に格納する請求項１に記載の半導体装置。
【請求項８】
前記セキュリティ処理部は、前記セキュリティ情報を前記セキュアメモリに格納する前に前記識別情報を前記セキュアメモリに格納し、該セキュアメモリに格納された識別情報に対応するセキュリティ情報を前記セキュア領域から読み出して前記セキュアメモリに格納する請求項７に記載の半導体装置。
【請求項９】
前記セキュリティ処理部は、前記セキュリティ情報を第１の格納タイプで前記セキュアメモリに格納し、かつ、前記識別情報と、前記セキュリティ情報の前記セキュアメモリへの格納の種別が前記第１の格納タイプである旨を示す情報とを対応付けて前記セキュアメモリに格納する請求項７に記載の半導体装置。
【請求項１０】
前記セキュリティ処理部は、前記セキュリティ処理の実行中に、前記セキュアメモリに記憶されていないセキュリティ情報を前記セキュア領域から読み出して使用し、該読み出したセキュリティ情報を第２の格納タイプで前記セキュアメモリに更に格納し、かつ該格納したセキュリティ情報の識別情報と、前記セキュリティ情報の前記セキュアメモリへの格納の種別が前記第２の格納タイプである旨を示す情報とを対応付けて前記セキュアメモリに格納する請求項９に記載の半導体装置。
【請求項１１】
前記セキュアメモリは、前記セキュリティ情報を格納するためのスロットを複数有し、該複数のスロットのうちの所定数のスロットが前記第１の格納タイプで前記セキュリティ情報を格納するために使用され、残りのスロットが前記第２の格納タイプでセキュリティ情報を格納するために使用される請求項１０に記載の半導体装置。
【請求項１２】
前記セキュリティ処理部は、前記第２の格納タイプで前記セキュリティ情報を前記セキュアメモリに格納する場合に、前記セキュアメモリに前記セキュリティ情報を前記第２の格納タイプで格納するためのスロットに空きがない場合は、前記セキュリティ情報を前記第２の格納タイプで格納済みのスロットに上書きする請求項１１に記載の半導体装置。
【請求項１３】
前記中央処理部は、該中央処理部で実行されるアプリケーションに含まれる、前記セキュリティ処理の実施依頼を含む処理を前記セキュリティ処理部に通知し、
セキュリティ処理部は、前記処理と、該処理が実施された場合にセキュリティ処理部において使用されるセキュリティ情報との対応関係を管理するセキュリティ情報管理テーブルを参照して、前記通知された処理が実施された場合に前記セキュリティ処理において使用されるセキュリティ情報を特定し、該特定したセキュリティ情報を前記セキュア領域から読み出して前記セキュアメモリに格納する請求項１に記載の半導体装置。
【請求項１４】
中央処理装置と通信するための第１のインタフェースと、
前記中央処理装置と共通にアクセスが可能な不揮発性メモリにアクセスするための第２のインタフェースと、
セキュリティ情報を使用したセキュリティ処理を実行するセキュリティ処理実行部と、
前記セキュリティ処理実行部からアクセスが可能で前記中央処理装置からはアクセスができないセキュアメモリとを備え、
前記セキュリティ処理実行部は前記不揮発性メモリに第２のインタフェースを介してアクセス可能であり、
前記不揮発性メモリは、論理的に分割された、前記セキュリティ処理実行部からはアクセス可能で前記中央処理装置からはアクセスができないセキュア領域と、前記セキュリティ処理実行部及び前記中央処理装置の双方からアクセスが可能なユーザ領域とを有し、
前記セキュア領域には複数のセキュリティ情報が記憶されており、
前記セキュリティ処理実行部は、前記セキュア領域から前記複数のセキュリティ情報の一部を読み出して前記セキュアメモリに格納し、前記セキュリティ処理で使用するセキュリティ情報が前記セキュアメモリに記憶されている場合は、前記セキュアメモリから前記セキュリティ情報を読み出して使用するセキュリティ処理実行装置。
【請求項１５】
セキュリティ情報を使用したセキュリティ処理を実施するセキュリティ処理実行装置と中央処理装置の双方からアクセス可能であり、論理的に分割された、前記セキュリティ処理実行装置からはアクセス可能で前記中央処理装置からはアクセスができないセキュア領域と、前記セキュリティ処理装置及び前記中央処理装置の双方からアクセスが可能なユーザ領域とを有する不揮発性メモリのセキュア領域から、該セキュア領域に格納された複数のセキュリティ情報のうちの一部を読み出し、
前記読み出したセキュリティ情報を、前記セキュリティ処理実行装置からはアクセス可能で前記中央処理装置からはアクセスができないセキュアメモリに格納し、
前記中央処理装置から前記セキュリティ処理の実行の依頼を受けて前記セキュリティ処理を開始し、
前記セキュリティ処理で使用するセキュリティ情報が前記セキュアメモリに格納されているか否かを調べ、
前記セキュリティ情報が前記セキュアメモリに記憶されている場合は、前記セキュアメモリから前記セキュリティ情報を読み出して使用するセキュリティ処理実行方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置及びセキュリティ処理実行装置に関し、例えばセキュリティ情報を用いたセキュリティ処理を実行するセキュリティ処理実行装置、及びそのようなセキュリティ処理実行装置を含む半導体装置に関する。
【０００２】
また、本発明は、セキュリティ処理実行装置におけるセキュリティ処理実行方法に関する。
【背景技術】
【０００３】
特許文献１は、セキュリティレベルに対応した書き込み動作を行うことができる記憶装置（不揮発性メモリ）を開示する。特許文献１に記載の不揮発性メモリは、セキュリティレベルに対応して設けられた複数の記憶領域を有する。特許文献１に記載の不揮発性メモリにおいて、記憶領域は、セキュア領域と一般領域とを含む。セキュア領域には、セキュリティに関連した鍵情報などが格納される。セキュリティに関連した処理を実行するセキュアモジュールは、セキュア領域と一般領域の双方にアクセスが可能である。一方、一般処理を行うＭＰＵ（Micro Processor Unit）は、一般領域にはアクセス可能であるが、セキュア領域にはアクセスできない。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−９０５１９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１では、不揮発性メモリのセキュア領域と一般領域とが物理的に同一のマクロに存在する場合、セキュアモジュールがセキュア領域にアクセスしている間、ＭＰＵが一般領域にアクセスすることができなくなるという問題があった。
【０００６】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００７】
一実施の形態によれば、半導体装置は、中央処理部と、セキュリティ処理部と、セキュア領域及びユーザ領域を有する不揮発性メモリと、セキュアメモリとを有しており、セキュリティ処理部は、セキュア領域から複数のセキュリティ情報の一部を読み出してセキュアメモリに格納し、セキュリティ処理で使用するセキュリティ情報がセキュアメモリに記憶されている場合は、セキュアメモリからセキュリティ情報を読み出して使用するものである。
【発明の効果】
【０００８】
前記一実施の形態によれば、半導体装置に含まれる中央処理部は、セキュリティ処理部がセキュリティ情報を使用した処理を行っている間に、不揮発性メモリの一般領域に対してアクセスが可能である。
【図面の簡単な説明】
【０００９】
【図１】実施形態１に係る半導体装置を示すブロック図。
【図２】セキュリティＩＰの構成を示すブロック図。
【図３】データフラッシュのセキュア領域に格納されるデータを示す図。
【図４】セキュアＲＡＭに格納されるデータを示す図。
【図５】セキュアＲＡＭに登録するデータの識別情報を登録する際の手順を示すフローチャート。
【図６】セキュアＲＡＭにデータを登録する際の手順を示すフローチャート。
【図７】セキュリティ処理の手順を示すフローチャート。
【図８】半導体装置における処理の流れを示すシーケンス図。
【図９】実施形態２においてセキュアＲＡＭに格納されるデータを示す図。
【図１０】セキュリティ処理の手順を示すフローチャート。
【図１１】実施形態３においてセキュア領域に格納されるデータを示す図。
【図１２】セキュア領域へのデータの格納の手順を示すフローチャート。
【図１３】セキュアＲＡＭへのデータの登録の手順を示すフローチャート。
【図１４】変形例においてセキュア領域に格納されるデータを示す図。
【図１５】セキュリティ情報管理テーブルを示す図。
【図１６】セキュアＲＡＭに格納されるデータを示す図。
【図１７】セキュアＲＡＭへのデータの登録の手順を示すフローチャート。
【図１８】セキュリティ処理の手順を示すフローチャート。
【発明を実施するための形態】
【００１０】
以下、図面を参照しつつ、上記課題を解決するための手段を適用した実施形態を詳細に説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェア的には、ＣＰＵ（Central Processing Unit）、メモリ、又はその他の回路で構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、又はそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、何れかに限定されるものではない。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【００１１】
また、上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体（non-transitory computer readable medium）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（tangible storage medium）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスク）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Read Only Memory）ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、及び半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Programmable ROM）、ＥＰＲＯＭ（Erasable PROM）、フラッシュＲＯＭ、ＲＡＭ（Random Access Memory））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（transitory computer readable medium）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【００１２】
以下の実施の形態においては便宜上その必要があるときは、複数のセクション又は実施の形態に分割して説明するが、特に明示した場合を除き、それらはお互いに無関係なものではなく、一方は他方の一部又は全部の変形例、応用例、詳細説明、又は補足説明等の関係にある。また、以下の実施の形態において、要素の数等（個数、数値、量、範囲等を含む）に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でもよい。
【００１３】
さらに、以下の実施の形態において、その構成要素（動作ステップ等も含む）は、特に明示した場合及び原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではない。同様に、以下の実施の形態において、構成要素等の形状、又は位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数等（個数、数値、量、範囲等を含む）についても同様である。
【００１４】
［実施形態１］
図１は、実施形態１に係る半導体装置を示す。半導体装置１０は、ＣＰＵ１１、セキュリティＩＰ（intellectual property）１２、データフラッシュ１３、及びユーザＲＡＭ１４を有する。半導体装置１０において、これら要素はバス１５を介して相互に接続されている。半導体装置１０は、例えばセキュリティ機能を有するマイクロコントローラーユニット（ＭＣＵ：Micro Controller Unit）として構成される。半導体装置１０は、具体的には、自動車用ＥＣＵ（Electronic Control Unit）向けセキュリティＩＰ搭載マイコンとして構成され得る。
【００１５】
ＣＰＵ１１は、ユーザプログラム（ユーザアプリケーション）に従った各種処理を実施する。ユーザＲＡＭ１４は揮発性メモリであり、ＣＰＵ１１は、例えば各種処理の実施時にユーザＲＡＭ１４を作業領域として使用する。セキュリティＩＰ１２は、セキュリティ処理部（セキュリティ処理実行装置）であり、セキュリティ情報を使用したセキュリティ処理を実施する。ＣＰＵ１１は、例えばセキュリティＩＰ１２にセキュリティ処理の実施を依頼（指示）し、セキュリティＩＰ１２は、ＣＰＵ１１から指示を受けると、指示されたセキュリティ処理を実施する。
【００１６】
データフラッシュ１３は、不揮発性メモリであり、論理的に分割されたセキュア領域３１とユーザ領域３２とを有する。セキュア領域３１は、セキュリティＩＰ１２からはアクセス可能であるが、ＣＰＵ１１からは直接にアクセスができない領域である。ユーザ領域３２は、ＣＰＵ１１及びセキュリティＩＰ１２の双方からアクセスが可能である。セキュア領域３１には、セキュリティＩＰ１２において使用される複数のセキュリティ鍵情報（以下、単に鍵情報とも呼ぶ）、及びその他の情報などが記憶される。ユーザ領域３２には、例えばＣＰＵ１１において実行されるユーザプログラムで利用するデータなどが格納される。
【００１７】
セキュリティＩＰ１２は、揮発性メモリであるセキュアＲＡＭ（セキュアメモリ）２２を有する。セキュアＲＡＭ２２は、セキュリティＩＰ１２からはアクセスが可能であるが、ＣＰＵ１１からは直接にアクセスができないメモリである。セキュリティＩＰ１２は、データフラッシュ１３のセキュア領域３１から複数の鍵情報の一部を読み出し、読み出した鍵情報の一部をセキュアＲＡＭ２２に格納する。セキュリティＩＰ１２は、セキュリティ処理で使用する鍵情報がセキュアＲＡＭ２２に格納されている場合は、セキュアＲＡＭ２２から鍵情報を読み出して使用する。なお、セキュアＲＡＭ２２は、セキュリティＩＰ１２からのみアクセス可能であればよく、必ずしもセキュリティＩＰ１２に内蔵されている必要はない。
【００１８】
［セキュリティＩＰ］
図２は、セキュリティＩＰの構成例を示す。セキュリティＩＰ１２は、例えば、処理実行部２１、セキュアＲＡＭ２２、暗号化エンジン２３、乱数発生器２４、ＣＰＵインタフェース２５、及びフラッシュインタフェース２６を有する。ＣＰＵインタフェース２５は、セキュリティＩＰ１２とＣＰＵ１１（図１を参照）とを接続するインタフェースである。また、フラッシュインタフェース２６は、セキュリティＩＰ１２とデータフラッシュ１３とを接続するインタフェースである。
【００１９】
処理実行部（セキュリティ処理実行部）２１は、各種セキュリティ処理の実施を制御する。暗号化エンジン２３は、暗号化に関する処理を実施する。乱数発生器２４は、乱数を発生させる。処理実行部２１は、暗号化エンジン２３及び乱数発生器２４などを用いて、暗号処理、復号処理、及び乱数発生など含む各種セキュリティ処理を実施する。処理実行部２１は、例えばシーケンサー及びプロセッサ（ＣＰＵ）の少なくとも一方を含む。処理実行部２１がプロセッサを含む場合、そのプロセッサは、例えばデータフラッシュ１３のセキュア領域３１からプログラムを読み出して実行することで、セキュリティ処理を実施してもよい。
【００２０】
処理実行部２１は、ＣＰＵインタフェース２５を通じて、ＣＰＵ１１と通信する。ＣＰＵ１１は、特定の鍵情報のセキュアＲＡＭへの格納（コピー）を処理実行部２１に指示（依頼）する。ＣＰＵ１１は、この指示においてセキュアＲＡＭ２２に格納させる鍵情報を指定する。処理実行部２１は、ＣＰＵ１１から鍵情報のコピーが指示されると、フラッシュインタフェース２６を通じてデータフラッシュ１３にアクセスし、指定された鍵情報をセキュア領域３１から取得してセキュアＲＡＭ２２に格納（登録）する。
【００２１】
また、ＣＰＵ１１は、セキュリティ処理の実施を処理実行部２１に指示する。処理実行部２１は、ＣＰＵ１１からセキュリティ処理の実施が指示されると、指示されたセキュリティ処理を実施する。処理実行部２１は、セキュリティ処理において使用する鍵情報がセキュアＲＡＭ２２に格納されている場合は、セキュアＲＡＭ２２に格納された鍵情報を使用してセキュリティ処理を実施する。鍵情報のセキュアＲＡＭ２２へのコピーの指示は、例えば処理実行部２１が鍵情報を使用したセキュリティ処理を実施する前に行われる。
【００２２】
［データフラッシュのセキュア領域］
図３は、データフラッシュ１３のセキュア領域３１に格納されるデータを示す。セキュア領域３１は、複数の鍵情報を記憶する。図３では、鍵情報として、Ｋｅｙ＿０〜Ｋｅｙ＿３の４つの鍵情報が図示されている。以下では、ｎを１以上の整数として、鍵情報（その本体）をＫｅｙ＿ｎとも呼ぶ。
【００２３】
［セキュアＲＡＭ］
図４は、セキュアＲＡＭに格納されるデータを示す。セキュアＲＡＭ２２は、鍵情報Ｋｅｙ＿ｎを格納するためのスロットを複数有する。処理実行部２１は、データフラッシュ１３のセキュア領域３１から複数の鍵情報の一部をコピーし、セキュアＲＡＭ２２のスロットに格納する。また、処理実行部２１は、セキュアＲＡＭ２２の各スロットに格納される鍵情報の識別情報を、スロットに対応付けてセキュアＲＡＭ２２に更に格納する。以下では、鍵情報の識別情報として、鍵番号が用いられることとする。また、以下では、鍵番号をＮｍ＿Ｋｅｙ＿ｎとも呼ぶ。
【００２４】
図４に示される例では、セキュアＲＡＭ２２の２つのスロットに鍵情報Ｋｅｙ＿０及びＫｅｙ＿２が格納されており、それらスロットに対応する鍵番号Ｎｍ＿Ｋｅｙ＿ｎとして「０」及び「２」が格納されている。セキュアＲＡＭ２２の鍵番号Ｎｍ＿Ｋｅｙ＿ｎを参照することで、セキュアＲＡＭ２２にどの鍵情報が格納されているかが認識可能である。処理実行部２１は、例えば、鍵情報Ｋｅｙ＿ｎのセキュアＲＡＭ２２への格納に先立って鍵番号Ｎｍ＿Ｋｅｙ＿ｎをセキュアＲＡＭ２２に格納し、セキュアＲＡＭ２２に格納された鍵番号Ｎｍ＿Ｋｅｙ＿ｎに対応する鍵情報Ｋｅｙ＿ｎをデータフラッシュ１３のセキュア領域３１から読み出してセキュアＲＡＭ２２に格納する。
【００２５】
セキュアＲＡＭ２２に格納される鍵情報を変更する場合、ＣＰＵ１１は、セキュリティＩＰ１２に対してセキュアＲＡＭ２２上のデータのクリアを指示し、その後、新たな鍵情報の格納を指示する。セキュリティＩＰ１２は、ＣＰＵ１１からセキュアＲＡＭ２２のクリアが指示されると、セキュアＲＡＭ２２上の鍵番号Ｎｍ＿Ｋｅｙ＿ｎ及び鍵情報Ｋｅｙ＿ｎを消去する。セキュリティＩＰ１２は、鍵番号Ｎｍ＿Ｋｅｙ＿ｎ及び鍵情報Ｋｅｙ＿ｎの消去後、ＣＰＵ１１から指定される新たな鍵番号Ｎｍ＿Ｋｅｙ＿ｎをセキュアＲＡＭ２２に格納し、格納した鍵番号に対応する鍵情報Ｋｅｙ＿ｎをデータフラッシュ１３のセキュア領域３１から取得してセキュアＲＡＭ２２に格納する。
【００２６】
［鍵番号の登録］
以下、動作手順を説明する。まず、セキュアＲＡＭ２２への鍵番号Ｎｍ＿Ｋｅｙ＿ｎの格納（登録）の動作（以下、この動作をBuffer Configとも呼ぶ）を説明する。図５は、セキュアＲＡＭ２２に鍵番号を登録する際の手順を示す。ＣＰＵ（その上で実行されるアプリケーション）１１は、セキュアＲＡＭ２２に登録させる鍵情報の番号（鍵番号Ｎｍ＿Ｋｅｙ＿ｎ）を決定する（ステップＳ１１）。ＣＰＵ１１は、ステップＳ１１では、例えば、後に実行されるユーザアプリケーションがセキュリティＩＰ１２に実施を依頼するセキュリティ処理において使用される鍵情報の番号を決定する。
【００２７】
セキュアＲＡＭ２２はＣＰＵ１１から直接にアクセスができないため、セキュアＲＡＭ２２への鍵番号Ｎｍ＿Ｋｅｙ＿ｎの登録はセキュリティＩＰ１２が実施する必要がある。ＣＰＵ１１は、セキュリティＩＰ１２に、ステップＳ１１で決定した鍵番号Ｎｍ＿Ｋｅｙ＿ｎの登録を指示する信号を送信する（ステップＳ１２）。この信号には、ステップＳ１１で決定された鍵番号Ｎｍ＿Ｋｅｙ＿ｎが含まれる。
【００２８】
セキュリティＩＰ１２の処理実行部２１（図２を参照）は、ＣＰＵ１１が送信した信号を、ＣＰＵインタフェース２５を通じて受信する。処理実行部２１は、ＣＰＵ１１から鍵番号Ｎｍ＿Ｋｅｙ＿ｎの登録を指示する信号を受信すると、セキュアＲＡＭ２２に鍵番号Ｎｍ＿Ｋｅｙ＿ｎを登録する（ステップＳ１３）。処理実行部２１は、例えばステップＳ１２で送信された信号（指示）に鍵番号「０」及び「２」が含まれていた場合は、それら鍵番号を、セキュアＲＡＭ２２の鍵番号Ｎｍ＿Ｋｅｙ＿ｎを格納するための領域に格納する。
【００２９】
[鍵情報の登録]
次いで、セキュアＲＡＭ２２への鍵情報Ｋｅｙ＿ｎの登録の動作（以下、この動作をBuffer Exexcとも呼ぶ）を説明する。図６は、セキュアＲＡＭ２２に鍵情報を登録する際の手順を示す。Buffer Execは、Buffer Configの実施後に実施される。ＣＰＵ１１は、鍵番号Ｎｍ＿Ｋｅｙ＿ｎに対応する鍵情報Ｋｅｙ＿ｎの登録を指示する信号をセキュリティＩＰ１２に送信する（ステップＳ２１）。ＣＰＵ１１は、例えば、アプリケーション実行前の初期設定動作においてBuffer Configを実施して鍵番号Ｎｍ＿Ｋｅｙ＿ｎをセキュアＲＡＭ２２に登録し、その後、鍵情報の登録を指示する。
【００３０】
セキュリティＩＰ１２の処理実行部２１（図２を参照）は、ＣＰＵ１１が送信した信号を、ＣＰＵインタフェース２５を通じて受信する。処理実行部２１は、ＣＰＵ１１から鍵情報Ｋｅｙ＿ｎの登録を指示する信号を受信すると、セキュアＲＡＭ２２の鍵番号Ｎｍ＿Ｋｅｙ＿ｎを参照し、対応する鍵番号の鍵情報Ｋｅｙ＿ｎをデータフラッシュ１３のセキュア領域３１から取得する（ステップＳ２２）。処理実行部２１は、取得した鍵情報Ｋｅｙ＿ｎをセキュアＲＡＭ２２に登録する（ステップＳ２３）。
【００３１】
処理実行部２１は、ステップＳ２２では、まず、例えばセキュアＲＡＭ２２の鍵番号Ｎｍ＿Ｋｅｙ＿ｎを参照して鍵番号「０」を取得する。処理実行部２１は、次いで、フラッシュインタフェース２６を通じてデータフラッシュ１３にアクセスし、セキュア領域３１から鍵番号「０」に対応する鍵情報Ｋｅｙ＿０を取得する。処理実行部２１は、ステップＳ２３において、ステップＳ２２で取得した鍵情報Ｋｅｙ＿０をセキュアＲＡＭ２２に登録する。
【００３２】
処理実行部２１は、セキュアＲＡＭ２２に鍵番号Ｎｍ＿Ｋｅｙ＿ｎが複数登録されている場合は、それらに対応する鍵情報をセキュア領域３１から取得し、セキュアＲＡＭ２２に登録する。処理実行部２１は、例えば、セキュアＲＡＭ２２の鍵番号Ｎｍ＿Ｋｅｙ＿ｎに格納された鍵番号を１つずつ選択しながら、全ての鍵番号が選択されるまで、ステップＳ２２及びステップＳ２３を繰り返し実施する。
【００３３】
なお、上記では、先に鍵番号Ｎｍ＿Ｋｅｙ＿ｎをセキュアＲＡＭ２２に登録し、その後鍵情報Ｋｅｙ＿ｎをセキュアＲＡＭ２２に登録する例について説明したが、鍵番号Ｎｍ＿Ｋｅｙ＿ｎの登録と鍵情報Ｋｅｙ＿ｎの登録とはどちらを先に実施しもよい。例えば、ＣＰＵ１１が鍵番号を指定して鍵情報の登録を指示し、セキュリティＩＰ１２が、指定された鍵番号の鍵情報をセキュア領域３１から取得してセキュアＲＡＭ２２に登録することとしてもよい。その場合、セキュリティＩＰ１２は、鍵情報の登録後、又は登録と同時に、登録した鍵情報の鍵番号を、セキュアＲＡＭ２２に登録することとしてもよい。
【００３４】
［セキュリティ処理］
続いて、セキュアＲＡＭ２２を用いたセキュリティ処理を説明する。図７は、セキュリティ処理の手順を示す。ＣＰＵ１１上で実行されるユーザアプリケーションは、暗号化や復号化などの鍵情報を用いたセキュリティ処理の実施を、セキュリティＩＰ１２に依頼（命令）する。セキュリティＩＰ１２の処理実行部２１は、ＣＰＵインタフェース２５を通じて命令を受信すると、命令されたセキュリティ処理を開始する（ステップＳ３１）。
【００３５】
処理実行部２１は、鍵情報を使用する場合、セキュアＲＡＭ２２の鍵番号Ｎｍ＿Ｋｅｙ＿ｎを参照し（ステップＳ３２）、使用する鍵情報がセキュアＲＡＭ２２に登録されているか否かを判断する（ステップＳ３３）。処理実行部２１は、セキュアＲＡＭ２２に登録されていると判断したときは、セキュアＲＡＭ２２から鍵情報Ｋｅｙ＿ｎを取得し、セキュリティ処理において使用する（ステップＳ３４）。処理実行部２１は、セキュリティ処理で使用する鍵情報がセキュアＲＡＭ２２に登録されていないと判断した場合は、フラッシュインタフェース２６を通じてデータフラッシュ１３にアクセスし、セキュア領域３１から鍵情報Ｋｅｙ＿ｎを読み出して使用する（ステップＳ３５）。
【００３６】
ここで、ユーザアプリケーション（ＣＰＵ１１）は、セキュリティＩＰ１２にセキュリティ処理を命令した後、セキュリティ処理が終了する前に、ユーザアプリケーションの動作を再開してもよい。ＣＰＵ１１は、ユーザアプリケーションの動作において、データフラッシュ１３のユーザ領域３２にアクセスする。セキュリティＩＰ１２がセキュリティ処理において使用する鍵情報がセキュアＲＡＭ２２に登録されていた場合、セキュリティＩＰ１２は、セキュリティ処理においてデータフラッシュ１３のセキュア領域３１にアクセスする必要がない。このため、ＣＰＵ１１のデータフラッシュ１３へのアクセスとセキュリティＩＰ１２のデータフラッシュ１３へのアクセスが同時に発生せず、一方のアクセスが他方のアクセスが終了するまで待たされる事態が発生しない。
【００３７】
［全体的な処理の流れ］
引き続き、半導体装置１０における全体的な処理の流れを声明する。図８は、半導体装置１０における処理の流れを示す。半導体装置１０に電源が投入されると、或いはリセットがかけられると、セキュリティＩＰ１２は、システムの初期化を実施する（ステップＳ４０１）。この初期化では、例えば半導体装置１０の正当性などが検証される。セキュリティＩＰ１２が実施するシステムの初期化は、データフラッシュ１３へのアクセスを含み得る。セキュリティＩＰ１２は、初期化が終了すると、その旨をＣＰＵ１１に通知する（ステップＳ４０２）。
【００３８】
ＣＰＵ１１は、初期化完了の通知を受けると、セキュアＲＡＭ２２に登録する鍵情報の番号（鍵番号Ｎｍ＿Ｋｅｙ＿ｎ）を決定する（ステップＳ４０３）。ＣＰＵ１１は、セキュリティＩＰ１２に対して、決定した鍵番号Ｎｍ＿Ｋｅｙ＿ｎの登録を指示する（ステップＳ４０４）。セキュリティＩＰ１２は、指示された鍵番号Ｎｍ＿Ｋｅｙ＿ｎをセキュアＲＡＭ２２に登録する（ステップＳ４０５）。セキュリティＩＰ１２は、鍵番号Ｎｍ＿Ｋｅｙ＿ｎの登録が完了すると、その旨をＣＰＵ１１に通知する（ステップＳ４０６）。ステップＳ４０３からステップＳ４０６までの動作は、図５に示されるBuffer Configの動作に対応する。
【００３９】
ＣＰＵ１１は、鍵番号Ｎｍ＿Ｋｅｙ＿ｎの登録完了の通知を受けると、セキュリティＩＰ１２に鍵情報Ｋｅｙ＿ｎの登録を指示する（ステップＳ４０７）。セキュリティＩＰ１２は、セキュアＲＡＭ２２にアクセスし、セキュアＲＡＭ２２から鍵番号Ｎｍ＿Ｋｅｙ＿ｎを取得する（ステップＳ４０８）。その後、セキュリティＩＰ１２は、データフラッシュ１３に対するアクセスを開始し、取得した鍵番号Ｎｍ＿Ｋｅｙ＿ｎに対応する鍵情報Ｋｅｙ＿ｎをセキュア領域３１から取得する（ステップＳ４０９）。セキュリティＩＰ１２は、セキュア領域３１から取得した鍵情報Ｋｅｙ＿ｎをセキュアＲＡＭ２２に登録する（ステップＳ４１０）。セキュリティＩＰ１２は、取得した全ての鍵番号Ｎｍ＿Ｋｅｙ＿ｎに対応する鍵情報Ｋｅｙ＿ｎの登録が完了すると、その旨をＣＰＵ１１に通知する（ステップＳ４１１）。ステップＳ４０７からステップＳ４１１までの動作は、図６に示されるBuffer Execの動作に対応する。
【００４０】
ＣＰＵ１１は、鍵情報の登録完了の通知を受けると、例えばユーザアプリケーションの処理を開始する。ＣＰＵ１１は、例えばユーザアプリケーションの処理において、セキュリティＩＰ１２にセキュリティ処理の実施を指示（依頼）する（ステップＳ４１２）。セキュリティＩＰ１２は、処理実施の指示を受けると、セキュリティ処理開始の応答をＣＰＵ１１に送信し（ステップＳ４１３）、セキュリティ処理を開始する（ステップＳ４１４）。ＣＰＵ１１は、セキュリティ処理が開始された後、ユーザアプリケーションにおいて別の処理を実施する（ステップＳ４１５）。ＣＰＵ１１は、別の処理において、データフラッシュ１３のユーザ領域３２へのアクセスを開始する（ステップＳ４１６）。
【００４１】
セキュリティＩＰ１２は、セキュリティ処理において、鍵情報Ｋｅｙ＿ｎの使用が必要な局面においてセキュアＲＡＭ２２にアクセスし、セキュアＲＡＭ２２から鍵情報Ｋｅｙ＿ｎを取得する（ステップＳ４１７）。セキュアＲＡＭ２２には、事前に鍵情報Ｋｅｙ＿ｎが登録されているため、セキュリティＩＰ１２は、鍵情報Ｋｅｙ＿ｎを、データフラッシュ１３にアクセスすることなく、セキュアＲＡＭ２２から取得できる。このため、ＣＰＵ１１のデータフラッシュ１３のユーザ領域３２へのアクセスは、セキュリティＩＰ１２のデータフラッシュ１３のセキュア領域３１へのアクセスによって妨げられない。
【００４２】
セキュリティＩＰ１２は、セキュリティ処理が終了すると、その旨をＣＰＵ１１に通知する（ステップＳ４１８）。ＣＰＵ１１は、任意のタイミングでデータフラッシュ１３のユーザ領域３２へのアクセスを終了し（ステップＳ４１９）、ユーザアプリケーションの処理を終了する。
【００４３】
［まとめ］
本実施形態では、ＣＰＵ１１は、セキュリティＩＰ１２に、特定の鍵情報のセキュアＲＡＭ２２への登録を指示する。セキュリティＩＰ１２は、ＣＰＵ１１の指示に従って、指定された鍵情報を、データフラッシュ１３のセキュア領域３１からコピーし、セキュアＲＡＭ２２に登録する。ＣＰＵ１１がセキュアＲＡＭ２２にコピーされた鍵情報を使用するセキュリティ処理の実施をセキュリティＩＰ１２に指示すると、セキュリティＩＰ１２は、セキュリティ処理においてセキュアＲＡＭ２２から鍵情報を読み出して使用する。本実施形態では、セキュアＲＡＭ２２にセキュリティ処理において使用する鍵情報を登録しておくことで、セキュリティＩＰ１２は、セキュリティ処理の実施中に、データフラッシュ１３へアクセスすることなく、鍵情報を取得して使用することが可能である。
【００４４】
例えば、セキュリティＩＰ１２がデータフラッシュ１３のセキュア領域３１から鍵情報を取得して使用する場合、セキュリティＩＰ１２がデータフラッシュ１３にアクセスしている間、ＣＰＵ１１はデータフラッシュ１３のユーザ領域３２にアクセスすることができない。逆に、ＣＰＵ１１がデータフラッシュ１３のユーザ領域３２にアクセスしている場合、セキュリティＩＰ１２はデータフラッシュ１３のセキュア領域３１及びユーザ領域３２にアクセスすることができない。セキュリティＩＰ１２がセキュア領域３１から鍵情報を取得することを可能にするためには、ＣＰＵ１１のアクセスを中断させるか、或いはＣＰＵ１１のアクセス終了までセキュリティ処理を待機する必要がある。
【００４５】
本実施形態では、セキュリティ処理で使用される鍵情報をセキュアＲＡＭ２２にコピーしておくことで、セキュリティ処理の実施中に、ＣＰＵ１１のデータフラッシュ１３のユーザ領域３２へのアクセスとセキュリティＩＰ１２のデータフラッシュ１３のセキュア領域３１へのアクセスとが競合しない。このため、セキュリティＩＰ１２のセキュリティ処理の実施と、ＣＰＵ１１のデータフラッシュ１３のユーザ領域３２へのアクセスとを両立させることができる。例えば、頻繁に使用する鍵情報をセキュアＲＡＭにコピーしておくことで、ＣＰＵ１１の処理又はセキュリティＩＰ１２のセキュリティ処理がたびたび中断する事態を回避することができ、処理のリアルタイム性を向上できる。
【００４６】
［実施形態２］
続いて、実施形態２を説明する。本実施形態に係る半導体装置の構成は、図１に示される実施形態１で説明した半導体装置１０の構成と同様でよい。また、本実施形態において用いられるセキュリティＩＰの構成は、図２に示される実施形態１で説明したセキュリティＩＰ１２の構成と同様でよい。
【００４７】
本実施形態では、セキュリティＩＰ１２は、鍵情報を複数の格納タイプでセキュアＲＡＭ２２に格納する。鍵情報の格納タイプは、Ｂｕｆｆｅｒ（第１の格納タイプ）とＣａｃｈｅ（第２の格納タイプ）とを含む。セキュリティＩＰ１２は、実施形態１で説明したBuffer Execにおいて、鍵情報Ｋｅｙ＿ｎをセキュアＲＡＭ２２に格納タイプＢｕｆｆｅｒで格納する。また、セキュリティＩＰ１２は、Buffer Configにおいて、鍵番号Ｎｍ＿Ｋｅｙ＿ｎと、セキュアＲＡＭ２２への鍵情報の格納の種別がＢｕｆｆｅｒである旨を示す情報とを対応付けてセキュアＲＡＭ２２に格納する。
【００４８】
セキュリティＩＰ１２は、実施形態１において説明したように、セキュリティ処理の実施中に、使用する鍵情報がセキュアＲＡＭ２２に格納されていない場合は、データフラッシュ１３のセキュア領域３１から鍵情報を読み出して使用する。本実施形態では、セキュリティＩＰ１２は、セキュリティ処理の実施中にセキュア領域３１から鍵情報を読み出して使用した場合、その鍵情報を格納タイプＣａｃｈｅでセキュアＲＡＭ２２に格納する。このとき、セキュリティＩＰ１２は、格納した鍵情報の番号（鍵番号）と、鍵情報のセキュアＲＡＭ２２への格納の種別が格納タイプＣａｃｈｅである旨を示す情報とを対応付けてセキュアＲＡＭ２２に格納する。このようにすることで、セキュリティＩＰ１２は、一度使用した鍵情報を次に使用する場合に、データフラッシュ１３にアクセスしなくても、鍵情報を取得して使用することができる。
【００４９】
［セキュアＲＡＭ］
図９は、本実施形態においてセキュアＲＡＭ２２に格納されるデータを示す。本実施形態におけるセキュアＲＡＭ２２のデータと、図４に示される実施形態１におけるセキュアＲＡＭ２２のデータとの違いの一つは、鍵番号Ｎｍ＿Ｋｅｙ＿ｎが格納タイプ（格納の種別）Ｔｙｐｅと対応付けて格納される点である。本実施形態では、例えば、セキュアＲＡＭ２２が有する鍵情報を格納するための複数のスロットのうち、所定数のスロットが格納タイプＢｕｆｆｅｒで鍵情報を格納するために使用され、残りのスロットが格納タイプＣａｃｈｅで鍵情報を格納するために使用される。
【００５０】
図９に示される例では、セキュアＲＡＭ２２には、鍵情報Ｋｅｙ＿０、鍵情報Ｋｅｙ＿２、及び鍵情報Ｋｅｙ＿５が格納されている。また、セキュアＲＡＭ２２には、鍵番号Ｎｍ＿Ｋｅｙ＿ｎとして「０」、「２」、及び「５」が格納されている。さらに、セキュアＲＡＭ２２には、格納の種別Ｔｙｐｅとして、鍵番号「０」及び「２」に対応して格納タイプＢｕｆｆｅｒが格納され、鍵番号「５」に対応して格納タイプＣａｈｃｅが格納されている。格納タイプを参照することで、セキュアＲＡＭ２２に格納された鍵情報が、Buffer Config及びBuffer Execを経て登録されたものであるのか、或いはセキュリティ処理の実施中に格納されたものであるのかの判別が可能である。
【００５１】
［動作手順］
以下、本実施形態における動作手順を説明する。本実施形態において、Buffer Configの動作は、図５に示されるものと同様な手順で実施され得る。本実施形態では、セキュリティＩＰ１２は、図５のステップＳ１３で鍵番号Ｎｍ＿Ｋｅｙ＿ｎを登録するときに、鍵番号Ｎｍ＿Ｋｅｙ＿ｎに格納タイプＢｕｆｆｅｒを対応付けてセキュアＲＡＭ２２に格納する。本実施形態において、Buffer Execの動作は、図６に示されるものと同様な手順で実施され得る。セキュリティＩＰ１２は、Buffer Execにおいて、格納タイプBufferに対応付けて記憶されている鍵番号の鍵情報をセキュア領域３１から取得してセキュアＲＡＭ２２に登録する。なお、格納タイプＢｕｆｆｅｒのセキュアＲＡＭ２２への格納はBuffer Execにおいて実施してもよい。より詳細には、例えば格納タイプＢｕｆｆｅｒのセキュアＲＡＭ２２への格納は、図６のステップＳ２３の鍵情報Ｋｅｙ＿ｎの登録時に実施してもよい。
【００５２】
［セキュリティ処理］
図１０は、セキュリティ処理の手順を示す。ＣＰＵ１１は、セキュリティ処理の実施を、セキュリティＩＰ１２に命令する。セキュリティＩＰ１２の処理実行部２１（図２を参照）は、ＣＰＵインタフェース２５を通じて命令を受信すると、命令されたセキュリティ処理を開始する（ステップＳ５１）。処理実行部２１は、鍵情報を使用する場合、セキュアＲＡＭ２２の鍵番号Ｎｍ＿Ｋｅｙ＿ｎを参照し（ステップＳ５２）、使用する鍵情報がセキュアＲＡＭ２２に格納されているか否かを判断する（ステップＳ５３）。
【００５３】
処理実行部２１は、ステップＳ５３において鍵情報がセキュアＲＡＭ２２に格納されていると判断したときは、セキュアＲＡＭ２２から鍵情報Ｋｅｙ＿ｎを取得し、セキュリティ処理において使用する（ステップＳ５４）。処理実行部２１は、ステップＳ５４では、セキュアＲＡＭ２２に格納タイプＢｕｆｆｅｒ又は格納タイプＣａｃｈｅで格納された鍵情報をセキュアＲＡＭ２２から取得して使用する。鍵情報がセキュアＲＡＭ２２から取得された場合、処理実行部２１は、データフラッシュ１３へアクセスせずに鍵情報を使用することができる。
【００５４】
一方、処理実行部２１は、ステップＳ５３においてセキュリティ処理で使用する鍵情報がセキュアＲＡＭ２２に格納されていないと判断した場合は、フラッシュインタフェース２６を通じてデータフラッシュ１３にアクセスし、セキュア領域３１から鍵情報Ｋｅｙ＿ｎを読み出して使用する（ステップＳ５５）。また、処理実行部２１は、ステップＳ５５で読み出した鍵情報Ｋｅｙ＿ｎを格納タイプＣａｃｈｅでセキュアＲＡＭ２２に格納する（ステップＳ５６）。処理実行部２１は、ステップＳ５６では、セキュアＲＡＭ２２の空きスロットに鍵情報Ｋｅｙ＿ｎを格納し、かつ、格納した鍵情報の鍵番号Ｎｍ＿Ｋｅｙ＿ｎを、格納タイプＣａｃｈｅと対応付けてセキュアＲＡＭ２２に格納する。一度使用した鍵情報を格納タイプＣａｃｈｅでセキュアＲＡＭ２２に格納することで、次に同じ鍵情報を使用する場合に、その鍵情報をセキュアＲＡＭ２２から取得することが可能となる。
【００５５】
処理実行部２１は、ステップＳ５６において、セキュアＲＡＭ２２に空きスロットが存在しない場合は、格納タイプＣａｃｈｅで鍵情報を格納しているスロットから１つスロットを選択し、選択したスロットにステップＳ５５で新たに取得した鍵情報を上書きしてもよい。このようにした場合、格納タイプＢｕｆｆｅｒで格納された鍵情報は上書きされず、セキュアＲＡＭ２２に格納された状態を維持できる。上書きするスロットを選択するアルゴリズムは特に限定されない。処理実行部２１は、例えば鍵情報の格納順序が最も古い鍵情報を格納するスロットを上書きするスロットとして選択し、そのスロットに新たに取得した鍵情報を上書きしてもよい。処理実行部２１は、格納順序に従って上書きするスロットを選択するのに代えて、使用頻度の情報を記憶しておき、その情報に基づいて上書きするスロットを選択してもよい。
【００５６】
［まとめ］
本実施形態では、Buffer Config及びBuffer Execにおいて格納タイプＢｕｆｆｅｒで鍵情報をセキュアＲＡＭ２２に格納するのに加えて、セキュリティＩＰ１２がセキュリティ処理においてデータフラッシュ１３のセキュア領域３１から取得して使用した鍵情報をセキュアＲＡＭ２２に格納タイプＣａｃｈｅで格納する。このようにすることで、セキュリティＩＰ１２は、同じ鍵情報を複数回使用する場合に、データフラッシュ１３へアクセスせずに、鍵情報を取得することが可能である。特に、Buffer Config及びBuffer ExecによってセキュアＲＡＭ２２に登録されてはいないが、使用頻度が高い鍵情報を格納タイプＣａｃｈｅでセキュアＲＡＭ２２に格納することで、セキュリティＩＰ１２はセキュリティ処理においてデータフラッシュ１３に頻繁にアクセスする必要がなくなる。
【００５７】
［実施形態３］
引き続き、本発明の実施形態３を説明する。本実施形態に係る半導体装置の構成は、図１に示される実施形態１で説明した半導体装置１０の構成と同様でよい。また、本実施形態において用いられるセキュリティＩＰの構成は、図２に示される実施形態１で説明したセキュリティＩＰ１２の構成と同様でよい。以下では、主に実施形態１との相違点を中心に説明するが、なお、本実施形態においても、実施形態２と同様に複数の格納タイプで鍵情報がセキュアＲＡＭ２２に格納されることとしてもよい。
【００５８】
実施形態１では、セキュリティＩＰ１２は、ＣＰＵ１１から指定された鍵番号Ｎｍ＿Ｋｅｙ＿ｎをセキュアＲＡＭ２２に格納し、格納した鍵番号Ｎｍ＿Ｋｅｙ＿ｎの鍵情報Ｋｅｙ＿ｎをデータフラッシュ１３のセキュア領域３１から取得してセキュアＲＡＭ２２に登録した。本実施形態では、セキュアＩＰ１２は、セキュアＲＡＭ２２に登録する鍵情報の鍵番号をデータフラッシュ１３のセキュア領域３１に登録し、セキュア領域３１に登録された鍵番号の鍵情報をセキュア領域３１から取得してセキュアＲＡＭ２２に格納する。
【００５９】
［セキュア領域］
図１１は、本実施形態においてデータフラッシュ１３のセキュア領域３１に格納されるデータを示す。本実施形態においてセキュア領域３１に格納されるデータと、図３に示される実施形態１においてセキュア領域３１に格納されるデータとの違いの一つは、設定情報Ｃｏｎｆｉｇ（Ｎｍ＿Ｋｅｙ＿ｎ）が追加されている点である。設定情報Ｃｏｎｆｉｇ（Ｎｍ＿Ｋｅｙ＿ｎ）には、セキュアＲＡＭ２２に格納させる鍵情報の鍵番号が格納される。
【００６０】
セキュリティＩＰ１２は、セキュア領域３１から設定情報Ｃｏｎｆｉｇ（Ｎｍ＿Ｋｅｙ＿ｎ）を読み出す。図１１の例では、設定情報Ｃｏｎｆｉｇ（Ｎｍ＿Ｋｅｙ＿ｎ）には、セキュアＲＡＭ２２に格納させる鍵情報の鍵番号として、鍵番号「０」及び「２」が格納されている。例えば、セキュリティＩＰ１２は、セキュア領域３１から鍵番号「０」及び「２」を読み出す。セキュリティＩＰ１２は、読み出した鍵番号「０」及び「１」をセキュアＲＡＭ２２の鍵番号Ｎｍ＿Ｋｅｙ＿ｎ（図４を参照）に格納する。また、セキュリティＩＰ１２は、鍵番号「０」及び「２」の鍵情報Ｋｅｙ＿０及びＫｅｙ＿２をセキュア領域３１から取得し、セキュアＲＡＭ２２に格納する。
【００６１】
［設定情報の登録］
以下、動作手順を説明する。まず、データフラッシュ１３のセキュア領域への設定情報Ｃｏｎｆｉｇ（Ｎｍ＿Ｋｅｙ＿ｎ）の登録（Config）の手順を説明する。図１２は、セキュア領域３１への設定情報の登録の手順を示す。ＣＰＵ１１は、セキュアＲＡＭ２２に登録させる鍵情報の番号（鍵番号Ｎｍ＿Ｋｅｙ＿ｎ）を決定する（ステップＳ６１）。ＣＰＵ１１は、セキュリティＩＰ１２に、ステップＳ６１で決定した鍵番号Ｎｍ＿Ｋｅｙ＿ｎのデータフラッシュ１３への登録を指示する信号を送信する（ステップＳ６２）。この信号には、ステップＳ６１で決定された鍵番号Ｎｍ＿Ｋｅｙ＿ｎが含まれる。
【００６２】
セキュリティＩＰ１２の処理実行部２１（図２を参照）は、ＣＰＵ１１が送信した信号を、ＣＰＵインタフェース２５を通じて受信する。処理実行部２１は、ＣＰＵ１１から鍵番号Ｎｍ＿Ｋｅｙ＿ｎのデータフラッシュ１３への登録を指示する信号を受信すると、フラッシュインタフェース２６を通じてデータフラッシュ１３にアクセスし、セキュア領域３１に鍵番号Ｎｍ＿Ｋｅｙ＿ｎを登録する（ステップＳ６３）。処理実行部２１は、例えばステップＳ６２で送信された信号（指示）に鍵番号「０」及び「２」が含まれていた場合は、それら鍵番号を、セキュア領域３１の設定情報Ｃｏｎｆｉｇ（Ｎｍ＿Ｋｅｙ＿ｎ）に格納する。
【００６３】
［鍵情報の登録］
次いで、セキュアＲＡＭ２２への鍵番号及び鍵情報の登録（Buffer）の手順を説明する。図１３は、セキュアＲＡＭ２２への鍵番号及び鍵情報の登録の手順を示す。セキュリティＩＰ１２の処理実行部２１（図２を参照）は、フラッシュインタフェース２６を通じてデータフラッシュ１３にアクセスし、セキュア領域３１から設定情報Ｃｏｎｆｉｇ（Ｎｍ＿Ｋｅｙ＿ｎ）を取得する（ステップＳ７１）。
【００６４】
処理実行部２１は、データフラッシュ１３のセキュア領域３１から、ステップＳ７１で取得した設定情報Ｃｏｎｆｉｇ（Ｎｍ＿Ｋｅｙ＿ｎ）に含まれる鍵番号の鍵情報Ｋｅｙ＿ｎを取得する（ステップＳ７２）。処理実行部２１は、ステップＳ７１で取得した設定情報Ｃｏｎｆｉｇ（Ｎｍ＿Ｋｅｙ＿ｎ）に含まれる鍵番号Ｎｍ＿Ｋｅｙ＿ｎをセキュアＲＡＭ２２に登録する（ステップＳ７３）。また、処理実行部２１は、ステップＳ７２で取得した鍵情報Ｋｅｙ＿ｎをセキュアＲＡＭ２２に登録する（ステップＳ７４）。
【００６５】
処理実行部２１は、例えばシステムの初期化処理（図８のステップＳ４０１を参照）においてステップＳ７１を実施し、設定情報Ｃｏｎｆｉｇ（Ｎｍ＿Ｋｅｙ＿ｎ）をデータフラッシュ１３のセキュア領域３１から取得してもよい。その場合、初期化処理において、設定情報Ｃｏｎｆｉｇ（Ｎｍ＿Ｋｅｙ＿ｎ）で指定される鍵情報が、ＣＰＵ１１の指示を介さずにセキュアＲＡＭ２２に自動的に登録される。システムの初期化処理において鍵番号及び鍵情報をセキュアＲＡＭ２２に登録することに加えて、別途、Buffer Config及びBuffer Execを実施し、ＣＰＵ１１から指定された鍵番号及びそれに対応する鍵情報をセキュアＲＡＭ２２に登録することとしてもよい。
【００６６】
［まとめ］
本実施形態では、データフラッシュ１３のセキュア領域３１に、セキュリティ処理で使用される鍵情報の番号（鍵番号）が登録される。鍵番号の登録が不揮発性メモリであるデータフラッシュ１３において行われるため、鍵番号の登録作業は１度で済む。セキュリティＩＰ１２は、セキュア領域３１に登録された鍵番号（設定情報Ｃｏｎｆｉｇ（Ｎｍ＿Ｋｅｙ＿ｎ））が指定する鍵情報をセキュア領域３１から取得し、セキュアＲＡＭ２２に登録する。このようにすることで、例えば起動後又はリセット後に、毎回ＣＰＵ１１からセキュリティＩＰ１２に対して鍵番号及び鍵情報の登録を指示しなくても、セキュリティＩＰ１２は、自動的に鍵情報をデータフラッシュ１３のセキュア領域３１から取得してセキュアＲＡＭ２２に登録することができる。
【００６７】
［変形例］
続いて、変形例を説明する。上記各実施形態では、データフラッシュ１３のセキュア領域３１に記憶される鍵情報をセキュアＲＡＭ２２にコピーして登録する例について説明したが、これには限定されない。上記各実施形態において、鍵情報には限定されない任意のセキュリティ情報をセキュアＲＡＭ２２に登録し、セキュリティ処理の実施時に、セキュリティＩＰ１２がセキュアＲＡＭ２２からセキュリティ情報を取得して使用することとしてもよい。
【００６８】
［セキュリティ情報］
図１４は、変形例においてデータフラッシュ１３のセキュア領域３１に格納されるセキュリティ情報を示す。セキュア領域３１は、セキュリティ情報を記憶する。ここで、セキュリティ情報とは、例えばセキュリティＩＰ１２において実施されるセキュリティ処理で使用される情報で、かつ秘匿にすることが要求される情報を意味する。図１４では、鍵情報として、Ｓｅｃｕｒｉｔｙ_ｉｎｆｏ＿０〜Ｓｅｃｕｒｉｔｙ＿ｉｎｆｏ＿４の５つのセキュリティ情報が図示されている。以下では、ｎを１以上の整数として、セキュリティ情報（その本体）をＳｅｃｕｒｉｔｙ＿ｉｎｆｏ＿ｎとも呼ぶ。
【００６９】
［セキュリティ情報管理テーブル］
図１５は、セキュリティ情報管理テーブルを示す。セキュリティ情報管理テーブルは、ＣＰＵ１１で実行されるユーザアプリケーションに含まれる、セキュリティ処理の実施依頼を含む処理と、その処理が実施された場合にセキュリティＩＰ１２において使用されるセキュリティ情報との対応関係を管理するテーブルである。セキュリティ情報管理テーブルは、例えばデータフラッシュ１３のセキュア領域３１に記憶される。
【００７０】
セキュリティ情報管理テーブルは、例えば図１５に示されるように、セキュリティ情報Ｓｅｃｕｒｉｔｙ＿ｉｎｆｏ＿０と処理Ａ及び処理Ｃとを対応付けて記憶し、セキュリティ情報Ｓｅｃｕｒｉｔｙ＿ｉｎｆｏ＿１と処理Ｆとを対応付けて記憶し、セキュリティ情報Ｓｅｃｕｒｉｔｙ＿ｉｎｆｏ＿２と処理Ｂとを対応付けて記憶する。また、セキュリティ情報管理テーブルは、セキュリティ情報Ｓｅｃｕｒｉｔｙ＿ｉｎｆｏ＿３と処理Ｄを対応付けて記憶し、セキュリティ情報Ｓｅｃｕｒｉｔｙ＿ｉｎｆｏ＿４と処理Ｅとを対応付けて記憶する。
【００７１】
変形例において、ＣＰＵ１１は、ユーザアプリケーションに含まれる、セキュリティ処理の実施依頼を含む処理をセキュリティＩＰ１２に通知する。この通知は、例えばその処理の実施前に行われる。セキュリティＩＰ１２は、実施される処理の通知を受けると、セキュリティ情報管理テーブルを参照し、セキュアＲＡＭ２２に登録するセキュリティ情報を決定する。セキュリティＩＰ１２は、例えばＣＰＵ１１から処理Ａの通知を受けた場合は、図１５に示されるセキュリティ情報管理テーブルを参照して、セキュリティ情報Ｓｅｃｕｒｉｔｙ＿ｉｎｆｏ＿０をセキュアＲＡＭ２２に登録することを決定する。
【００７２】
［セキュアＲＡＭ］
図１６は、セキュアＲＡＭに格納されるデータを示す。セキュアＲＡＭ２２は、セキュリティ情報Ｓｅｃｕｒｉｔｙ＿ｉｎｆｏ＿ｎを格納するためのスロットを複数有する。セキュアＩＰ１２の処理実行部２１（図２を参照）は、データフラッシュ１３のセキュア領域３１から複数のセキュリティ情報の一部をコピーし、セキュアＲＡＭ２２のスロットに格納する。また、処理実行部２１は、セキュアＲＡＭ２２の各スロットに格納されるセキュリティ情報の識別情報を、スロットに対応付けてセキュアＲＡＭ２２に更に格納する。セキュリティ情報Ｓｅｃｕｒｉｔｙ＿ｉｎｆｏ＿ｎは実施形態１における鍵情報Ｋｅｙ＿ｎに対応し、識別番号Ｎｍ＿Ｓｅｃｕｒｉｔｙ＿ｉｎｆｏ＿ｎは実施形態１における鍵番号Ｎｍ＿Ｋｅｙ＿ｎに対応する。
【００７３】
図１６に示される例では、セキュアＲＡＭ２２の２つのスロットにセキュリティ情報Ｓｅｃｕｒｉｔｙ＿ｉｎｆｏ＿０及びＳｅｃｕｒｉｔｙ＿ｉｎｆｏ＿２がそれぞれ格納されており、それらスロットに対応する識別番号Ｎｍ＿Ｓｅｃｕｒｉｔｙ＿ｉｎｆｏ＿ｎとして「０」及び「２」がそれぞれ格納されている。セキュアＲＡＭ２２の識別番号Ｎｍ＿Ｓｅｃｕｒｉｔｙ＿ｉｎｆｏ＿ｎを参照することで、セキュアＲＡＭ２２にどのセキュリティ情報がコピーされているかが認識可能である。
【００７４】
［セキュリティ情報の登録］
以下、変形例における動作手順を説明する。まず、セキュリティ情報のセキュアＲＡＭ２２への登録の手順を説明する。図１７は、セキュアＲＡＭ２２へのセキュリティ情報の登録の手順を示す。ＣＰＵ１１は、ユーザアプリケーションにおいて実行する処理を決定する（ステップＳ８１）。ＣＰＵ１１は、ステップＳ８１では、例えば、これから実行するユーザアプリケーションにおいて、セキュリティＩＰ１２へのセキュリティ処理の実施の依頼を含む処理を決定する。ＣＰＵ１１は、決定した処理をセキュアＩＰ１２に通知する。
【００７５】
セキュアＩＰ１２の処理実行部２１（図２を参照）は、ＣＰＵ１１から送信された通知を、ＣＰＵインタフェース２５を通じて受信する。処理実行部２１は、ＣＰＵ１１から実行される処理の通知を受信すると、データフラッシュ１３へアクセスし、セキュア領域３１に記憶されたセキュリティ情報管理テーブルを参照して、セキュアＲＡＭ２２へ登録するセキュリティ情報の識別番号Ｎｍ＿Ｓｅｃｕｒｉｔｙ＿ｉｎｆｏ＿ｎを決定する（ステップＳ８２）。別の言い方をすると、処理実行部２１は、セキュリティ情報管理テーブルを参照して、ＣＰＵ１１から通知された処理が実施された場合にセキュリティ処理において使用されるセキュリティ情報の識別番号Ｎｍ＿Ｓｅｃｕｒｉｔｙ＿ｉｎｆｏ＿ｎを特定する。
【００７６】
処理実行部２１は、ステップＳ８２で決定した識別番号Ｎｍ＿Ｓｅｃｕｒｉｔｙ＿ｉｎｆｏ＿ｎをセキュアＲＡＭ２２に登録する（ステップＳ８３）。処理実行部２１は、例えばステップＳ８２で決定した識別番号が「０」及び「２」である場合には、それら識別番号を、セキュアＲＡＭ２２の識別番号Ｎｍ＿Ｓｅｃｕｒｉｔｙ＿ｉｎｆｏ＿ｎを格納するための領域に格納する。また処理実行部２１は、ステップＳ８２で決定した識別番号Ｎｍ＿Ｓｅｃｕｒｉｔｙ＿ｉｎｆｏ＿ｎに対応するセキュリティ情報Ｓｅｃｕｒｉｔｙ＿ｉｎｆｏ＿ｎをデータフラッシュ１３のセキュア領域３１から取得し、セキュアＲＡＭ２２に登録する（ステップＳ８４）。ステップＳ８３とステップＳ８４とは、どちらを先に実施してもよい。
【００７７】
なお、上記では、セキュアＩＰ１２が、ＣＰＵ１１から実行される処理の通知を受けて識別番号Ｎｍ＿Ｓｅｃｕｒｉｔｙ＿ｉｎｆｏ＿ｎとセキュリティ情報Ｓｅｃｕｒｉｔｙ＿ｉｎｆｏ＿ｎとをセキュアＲＡＭ２２に登録する例を説明したが、これには限定されない。実施形態１と同様に、識別番号Ｎｍ＿Ｓｅｃｕｒｉｔｙ＿ｉｎｆｏ＿ｎの登録とセキュリティ情報Ｓｅｃｕｒｉｔｙ＿ｉｎｆｏ＿ｎの登録とが、別の手順で実施されることとしてもよい。つまり、セキュリティＩＰ１２が、ＣＰＵ１１から実行される処理の通知を受けて識別番号Ｎｍ＿Ｓｅｃｕｒｉｔｙ＿ｉｎｆｏ＿ｎをセキュアＲＡＭ２２に登録し、次いで、ＣＰＵ１１からセキュリティ情報の登録命令を受けてセキュリティ情報Ｓｅｃｕｒｉｔｙ＿ｉｎｆｏ＿ｎをセキュアＲＡＭ２２に登録することとしてもよい。
【００７８】
［セキュリティ処理］
次いで、セキュリティ処理の手順を説明する。図１８は、セキュリティ処理の手順を示す。ＣＰＵ１１上で実行されるユーザアプリケーションは、所定の処理において、セキュリティ処理の実施をセキュリティＩＰ１２に依頼（命令）する。セキュリティＩＰ１２の処理実行部２１は、ＣＰＵインタフェース２５を通じて命令を受信すると、命令されたセキュリティ処理を開始する（ステップＳ９１）。
【００７９】
処理実行部２１は、セキュリティ情報を使用する場合、セキュアＲＡＭ２２の識別番号Ｎｍ＿Ｓｅｃｕｒｉｔｙ＿ｉｎｆｏ＿ｎを参照し（ステップＳ９２）、使用するセキュリティ情報がセキュアＲＡＭ２２に登録されているか否かを判断する（ステップＳ９３）。処理実行部２１は、セキュアＲＡＭ２２に登録されていると判断した場合、セキュアＲＡＭ２２からセキュリティ情報Ｓｅｃｕｒｉｔｙ＿ｉｎｆｏ＿ｎを取得し、セキュリティ処理において使用する（ステップＳ９４）。処理実行部２１は、セキュリティ処理で使用するセキュリティ情報がセキュアＲＡＭ２２に登録されていないと判断した場合は、フラッシュインタフェース２６を通じてデータフラッシュ１３にアクセスし、セキュア領域３１からセキュリティ情報Ｓｅｃｕｒｉｔｙ＿ｉｎｆｏ＿ｎを読み出して使用する（ステップＳ９５）。
【００８０】
なお、上記変形例は、実施形態１の変形例として説明したが、これには限定されない。上記変形例は、実施形態２及び実施形態３と組み合わせることも可能である。また、上記変形例では、ＣＰＵ１１から処理を通知し、セキュリティＩＰ１２が通知された処理に対応したセキュリティ情報をセキュアＲＡＭ２２に登録する例を説明したが、これには限定されない。上記変形例において、実施形態１と同様に、ＣＰＵ１１がセキュアＲＡＭ２２に登録させるセキュリティ情報の識別番号を指定し、セキュリティＩＰ１２が指定された識別番号のセキュリティ情報をセキュアＲＡＭ２２に登録することとしてもよい。
【００８１】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
【符号の説明】
【００８２】
１０：半導体装置
１１：ＣＰＵ
１２：セキュリティＩＰ
１３：データフラッシュ
１４：ユーザＲＡＭ
１５：バス
２１：処理実行部
２２：セキュアＲＡＭ
２３：暗号化エンジン
２４：乱数発生器
２５：ＣＰＵインタフェース
２６：フラッシュインタフェース
３１：セキュア領域
３２：ユーザ領域
【図１】
2018106628.tif 000003
【図２】
2018106628.tif 000004
【図３】
2018106628.tif 000005
【図４】
2018106628.tif 000006
【図５】
2018106628.tif 000007
【図６】
2018106628.tif 000008
【図７】
2018106628.tif 000009
【図８】
2018106628.tif 000010
【図９】
2018106628.tif 000011
【図１０】
2018106628.tif 000012
【図１１】
2018106628.tif 000013
【図１２】
2018106628.tif 000014
【図１３】
2018106628.tif 000015
【図１４】
2018106628.tif 000016
【図１５】
2018106628.tif 000017
【図１６】
2018106628.tif 000018
【図１７】
2018106628.tif 000019
【図１８】
2018106628.tif 000020