(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-06
(45)【発行日】2024-11-14
(54)【発明の名称】半導体装置
(51)【国際特許分類】
H04L 9/14 20060101AFI20241107BHJP
G06F 21/60 20130101ALI20241107BHJP
G06F 21/62 20130101ALI20241107BHJP
G09C 1/00 20060101ALI20241107BHJP
G06F 7/58 20060101ALI20241107BHJP
H04L 9/10 20060101ALI20241107BHJP
【FI】
H04L9/14
G06F21/60 320
G06F21/62
G09C1/00 650B
G06F7/58 620
H04L9/10 A
(21)【出願番号】P 2021130994
(22)【出願日】2021-08-10
【審査請求日】2023-12-21
(73)【特許権者】
【識別番号】302062931
【氏名又は名称】ルネサスエレクトロニクス株式会社
(74)【代理人】
【識別番号】110000350
【氏名又は名称】ポレール弁理士法人
(72)【発明者】
【氏名】森 祐紀
【審査官】青木 重徳
(56)【参考文献】
【文献】特開2008-306633(JP,A)
【文献】特開2003-333023(JP,A)
【文献】米国特許第07631195(US,B1)
【文献】米国特許出願公開第2016/0092376(US,A1)
【文献】米国特許出願公開第2019/0214102(US,A1)
【文献】国際公開第2012/025988(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/14
G06F 21/60
G06F 21/62
G09C 1/00
G06F 7/58
H04L 9/10
(57)【特許請求の範囲】
【請求項1】
第一制御ユニットと、
第二制御ユニットと、
前記第二制御ユニットからはアクセス可能で前記第一制御ユニットからはアクセスできない乱数生成器と、
前記第二制御ユニットからはアクセス可能で前記第一制御ユニットからはアクセスできない、前記乱数生成器により生成される乱数が格納される第一メモリと、
前記第一メモリに格納される乱数を利用して暗号化および復号の処理を行う暗号化エンジンと、
前記第二制御ユニットからはアクセス可能で前記第一制御ユニットからはアクセスできない、乱数生成に関する情報が格納される第二メモリと、
を備え、
前記第二制御ユニットは、前記乱数生成に関する情報に基づいて前記乱数生成器により乱数を生成するよう構成される半導体装置。
【請求項2】
請求項1の半導体装置において、
前記第二制御ユニットは、前記第一制御ユニットから前記乱数生成に関する情報の前記第二メモリに設定要求がある場合、認証が成功したとき、前記乱数生成に関する情報を前記第二メモリに設定するよう構成される半導体装置。
【請求項3】
請求項1の半導体装置において、
前記第二制御ユニットは、前記第一メモリに格納されている利用可能な乱数量に基づいて前記乱数生成器に乱数の生成を要求するよう構成される半導体装置。
【請求項4】
請求項3の半導体装置において、
前記乱数生成に関する情報は、前記乱数生成器の乱数生成を開始する残り乱数量であり、
前記第二制御ユニットは、前記第一メモリに格納されている利用可能な乱数量と前記乱数生成に関する情報とに基づいて前記乱数生成器に乱数の生成を要求するよう構成される半導体装置。
【請求項5】
請求項3の半導体装置において、
前記第二制御ユニットは、前記乱数生成に関する情報に基づいて、前記第一制御ユニットからの要求により前記乱数生成器に乱数の生成を要求するか、前記第一メモリに格納されている利用可能な乱数量に基づいて前記乱数生成器に乱数の生成を要求するか、を選択するよう構成される半導体装置。
【請求項6】
請求項3の半導体装置において、
前記第二制御ユニットは、前記乱数生成に関する情報に基づいて、前記乱数生成器に乱数の生成をトリガする頻度および前記乱数生成器の動作時間を設定するよう構成される半導体装置。
【請求項7】
請求項6の半導体装置において、
前記乱数生成に関する情報は、前記第一メモリに乱数保持用に確保する領域の大きさおよび前記乱数生成器の乱数生成を開始する残り乱数量である半導体装置。
【請求項8】
請求項2の半導体装置において、
前記第一制御ユニットは第一中央処理装置と前記第一中央処理装置が実行するプログラムが格納される第三メモリとにより構成され、
前記第二制御ユニットは第二中央処理装置と前記第二中央処理装置が実行するプログラムが格納される前記第二メモリとにより構成される半導体装置。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は半導体装置に関し、例えばセキュリティ機能を内蔵する半導体装置に適用可能である。
【背景技術】
【0002】
近年、半導体装置の一例であるECU(Electronic Control Unit)の分野では、ECU間の通信において、悪意ある第三者による脅威を防ぐためのセキュリティ要件の重要性が増している。
【0003】
例えば、特開2018-106628号公報には自動車用ECU向けセキュアIP(Intellectual Property)搭載マイコンとして構成される半導体装置が開示されている。当該半導体装置はCPU(Central Processing Unit)およびセキュアIPを有する。セキュアIPはCPUからの処理要求に対して自身が管理するハードウエア資源を用いてセキュリティ機能をCPUに提供する。ハードウエア資源は、暗号化エンジンおよび乱数生成器などである。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
一般的に、乱数生成器が生成した所定量の乱数はセキュアIPが乱数を利用する度に消費されていき、生成された乱数が枯渇した場合に乱数の再生成を行う必要がある。CPUより暗号処理の要求を受けた後にセキュアIPが乱数生成器に乱数生成を要求していては、乱数を利用する暗号処理の完了に時間がかかる。
【0006】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【0007】
本開示のうち代表的なものの概要を簡単に説明すれば下記の通りである。すなわち、半導体装置は、第一制御ユニットと、第二制御ユニットと、乱数生成器と、乱数生成器により生成される乱数が格納される第一メモリと、第一メモリに格納される乱数を利用して暗号化および復号の処理を行う暗号化エンジンと、乱数生成に関する情報が格納される第二メモリと、を備える。第二制御ユニットは、乱数生成に関する情報に基づいて乱数生成器により乱数を生成するよう構成される。
【図面の簡単な説明】
【0008】
【
図1】
図1は実施形態における二つの半導体装置の間の通信の概念を示すブロック図である。
【
図2】
図2は実施形態における半導体装置の構成を示すブロック図である。
【
図3】
図3は
図1に示すセキュアIPの構成を示すブロック図である。
【
図4】
図4は
図2に示すセキュアIPのセキュアCPUの処理を示す機能ブロック図である。
【
図5】
図5は乱数生成に関する情報のデータフラッシュへの保存の流れを示すシーケンス図である。
【
図6】
図6は第一実施例における半導体装置の処理の流れを示すシーケンス図である。
【
図7】
図7は比較例における半導体装置の処理の流れを示すシーケンス図である。
【
図8】
図8は第二実施例における半導体装置の処理の流れを示すシーケンス図である。
【
図9】
図9は第三実施例における半導体装置の処理の流れを示すシーケンス図である。
【
図10】
図10は第三実施例における乱数保持領域の乱数量の推移例を示すイメージ図である。
【
図11】
図11はCPUの想定動作の第一ケースにおける乱数量の推移例を示すイメージ図である。
【
図12】
図12はCPUの想定動作の第二ケースにおける乱数量の推移例を示すイメージ図である。
【
図13】
図13はCPUの想定動作の第三ケースにおける乱数量の推移例を示すイメージ図である。
【発明を実施するための形態】
【0009】
以下、実施形態、実施例および変形例について、図面を用いて説明する。ただし、以下の説明において、同一構成要素には同一符号を付し繰り返しの説明を省略することがある。
【0010】
本実施形態における二つの半導体装置の間の通信について
図1を用いて説明する。
【0011】
半導体装置11および半導体装置12は、信号線13により接続され、相互にデータの通信が可能である。そして、半導体装置11および半導体装置12は、双方で予め保持する共通鍵を用いて通信対象のデータの暗号化および復号化を所定の暗号処理アルゴリズムを用いて行うことができるものとする。また、半導体装置11および半導体装置12は、同等の機能を有し、送信側と受信側を相互に入れ替わることが可能であるものとする。
【0012】
半導体装置11および半導体装置12は、具体的には、自動車用ECU向けセキュアIP(Intellectual Property)搭載のマイクロコントローラとして構成され得る。半導体装置11および半導体装置12は、それぞれ同一または異なる自動車に搭載されたものであってもよい。また、半導体装置11および半導体装置12は、半導体チップと呼ばれる場合もある。
【0013】
例えば、半導体装置11は共通鍵を使って、送付したい平文と乱数をつなげたものを暗号化して暗号文を作成する。その後、暗号文を半導体装置12に送付する。半導体装置12は共通鍵を使って受け取った暗号文を復号し平文と乱数を取得する。平文の位置は共通鍵と同じタイミングで共有しておけば、半導体装置12は復号結果から半導体装置11が送付したい平文のみを抽出できる。
【0014】
実施形態における半導体装置11について
図2を用いて説明する。
【0015】
半導体装置11は、CPU100、セキュアIP200、データフラッシュ300、ユーザRAM400および通信インタフェース(I/F)500を備える。半導体装置11において、これら要素はバス600を介して相互に接続されている。半導体装置12は半導体装置11と同様な構成である。
【0016】
CPU100は、ユーザプログラム(ユーザアプリケーション)に従った各種処理を実施する。セキュアIP200は、乱数を利用する暗号処理等のセキュリティ処理を実施する。CPU100は、例えばセキュアIP200にセキュリティ処理の実施を依頼(指示)する。そして、セキュアIP200は、CPU100から指示を受けると、指示されたセキュリティ処理を実施する。
【0017】
セキュアIP200は、揮発性メモリであるSRAM(Static Random Access Memory)で構成されるセキュアRAM220を有する。第一メモリとしてのセキュアRAM220は、セキュアIP200からはアクセスが可能であるが、CPU100からは直接にアクセスができないメモリである。セキュアIP200は、後述する乱数生成器が生成する乱数をセキュアRAM220に格納する。なお、セキュアRAM220は、セキュアIP200からのみアクセス可能であればよく、必ずしもセキュアIP200に内蔵されている必要はない。
【0018】
データフラッシュ(DATA FLASH)300は不揮発性メモリであるフラッシュメモリで構成され、論理的に分割されたセキュア領域310とユーザ領域320とを有する。第二メモリとしてのデータフラッシュ300のセキュア領域310は、セキュアIP200からはアクセス可能であるが、CPU100からは直接にアクセスができない領域である。なお、セキュア領域310はセキュアIP200に内蔵されてもよい。ユーザ領域320は、CPU100およびセキュアIP200の双方からアクセスが可能である。セキュア領域310には、セキュアIP200において使用される乱数生成に関する情報などが記憶される。ユーザ領域320には、例えばCPU100において実行されるユーザプログラムおよびユーザプログラムで利用するデータなどが格納される。CPU100およびデータフラッシュ300のユーザ領域320により第一制御ユニットが構成される。
【0019】
ユーザRAM400は揮発性メモリであり、CPU100は、例えば各種処理の実施時にユーザRAM400を作業領域として使用する。また、ユーザRAM400はCPU100とセキュアIP200との共有メモリである。例えば、CPU100はセキュアIP200に依頼するセキュリティ処理の対象データをユーザRAM400に格納する。また、セキュアIP200はセキュリティ処理したデータをユーザRAM400に格納する。
【0020】
通信I/F500は、半導体装置11の外部、例えば、信号線13を介した半導体装置12との通信を行うインタフェースである。
【0021】
実施形態におけるセキュアIP200の構成について
図3を用いて説明する。
【0022】
セキュアIP200は、例えば、セキュアCPU210、セキュアRAM220、暗号化エンジン230、乱数生成器240、CPUインタフェース(CPU I/F)250およびフラッシュインタフェース(FLASH I/F)260を有する。CPUインタフェース250は、セキュアIP200とCPU100(
図2を参照)とを接続するインタフェースである。CPUインタフェース250は、例えば、CPU100への割り込み要求を送る機能およびCPU100からの割り込み要求を受ける機能を有する。また、フラッシュインタフェース260は、セキュアIP200とデータフラッシュ300とを接続するインタフェースである。
【0023】
セキュアCPU210は、各種セキュリティ処理の実施を制御する。暗号化エンジン230は、暗号化に関する処理を実施する。乱数生成器240は、乱数を生成する。セキュアCPU210は、暗号化エンジン230および乱数生成器240などを用いて、暗号処理、復号処理および乱数生成など含む各種セキュリティ処理を実施する。セキュアCPU210は、例えばデータフラッシュ300のセキュア領域310からプログラムを読み出して実行することで、セキュリティ処理を実施する。
【0024】
セキュアCPU210は、CPUインタフェース250を通じて、CPU100と通信する。CPU100は、乱数生成に関する情報のデータフラッシュ300のセキュア領域310への格納をセキュアCPU210に指示(依頼)する。セキュアCPU210は、CPU100から乱数生成に関する情報の格納が指示されると、フラッシュインタフェース260を通じてデータフラッシュ300にアクセスし、指定された乱数生成に関する情報をセキュア領域310に格納(保存)する。
【0025】
また、CPU100は、セキュリティ処理の実施をセキュアCPU210に指示する。セキュアCPU210は、CPU100からセキュリティ処理の実施が指示されると、指示されたセキュリティ処理を実施する。その際、セキュアCPU210は、データフラッシュ300のセキュア領域310に格納された乱数生成に関する情報を使用して乱数生成を実施する。乱数生成に関する情報のデータフラッシュ300のセキュア領域310への格納の指示は、例えばセキュアCPU210が乱数生成に関する情報を使用した乱数生成を実施する前に行われる。
【0026】
セキュアIP200の機能を実行する制御ユニットについて
図4を用いて説明する。
【0027】
制御ユニット211は、送受信部(S/R_U)212、暗号処理部(ENC_U)213、乱数管理部(RNM_U)214、乱数生成制御部(RGC_U)215、乱数生成設定管理部(RSM_U)216およびデータフラッシュ制御部(DFC_U)217を有する。ここで、第二制御ユニットとしての制御ユニット211はセキュアCPU210およびセキュアCPU210が実行するプログラムが格納されるセキュア領域310を含む構成である。送受信部(S/R_U)212はCPU100との通信を行う。暗号処理部(ENC_U)213は乱数を利用する暗号処理(以下、単に、暗号処理という。)を行う。乱数管理部(RNM_U)214は乱数の生成を管理する。乱数生成制御部(RGC_U)215は乱数生成器240を制御する。乱数生成設定管理部(RSM_U)216は乱数生成に関する情報の設定を管理する。データフラッシュ制御部(DFC_U)217はデータフラッシュ300のセキュア領域310へのアクセスを制御する。
【0028】
乱数生成に関する情報のデータフラッシュへの保存について
図5を用いて説明する。
【0029】
CPU100はセキュアCPU210に乱数生成に関する情報(RGD)のデータフラッシュ300への保存を要求する(ステップS121)。送受信部(S/R_U)212はCPU100からの要求を受けて乱数生成設定管理部(RSM_U)216に乱数生成に関する情報の保存を要求する(ステップS122)。
【0030】
乱数生成設定管理部(RSM_U)216は要求を受け取り、認証を実施する(ステップS123)。認証は例えば共通鍵を用いて行われる。認証には必要に応じて暗号化エンジン230および乱数生成器240を利用してもよい。
【0031】
認証に失敗した場合は、乱数生成設定管理部(RSM_U)216はその時点で処理を終了し、送受信部(S/R_U)212に認証が失敗したことを通知する(ステップS124)。送受信部(S/R_U)212は乱数生成設定管理部(RSM_U)216からの通知を受けて、CPU100に認証が失敗したことを通知する(ステップS125)。
【0032】
認証に成功した場合は、乱数生成設定管理部(RSM_U)216はデータフラッシュ制御部(DFC_U)217に乱数生成に関する情報(RGD)をデータフラッシュ300のセキュア領域310へ保存することを要求する(ステップS126)。データフラッシュ制御部(DFC_U)217はデータフラッシュ300のセキュア領域310に乱数生成に関する情報(RGD)を保存する(ステップS127)。
【0033】
乱数生成に関する情報(RGD)の保存が完了すると、データフラッシュ制御部(DFC_U)217は乱数生成設定管理部(RSM_U)216に保存の完了を通知する(ステップS128)。乱数生成設定管理部(RSM_U)216はデータフラッシュ制御部(DFC_U)217からの通知を受けて、送受信部(S/R_U)212に保存の完了を通知する(ステップS129)。送受信部(S/R_U)212は乱数生成設定管理部(RSM_U)216からの通知を受けて、CPU100に保存の完了を通知する(ステップS130)。
【0034】
実施形態における乱数生成に関する情報(RGD)の例について第一実施例、第二実施例および第三実施例を用いて以下説明する。
【実施例1】
【0035】
第一実施例における半導体装置11の処理について
図6を用いて説明する。
【0036】
CPU100はセキュアCPU210に向けて暗号処理を要求する(ステップS101)。送受信部(S/R_U)212はCPU100からの要求を受けて暗号処理部(ENC_U)213に処理を要求する(ステップS102)。
【0037】
暗号処理部(ENC_U)213は乱数管理部(RNM_U)214に乱数を要求する(ステップS103)。乱数管理部(RNM_U)214はセキュアRAM220から乱数を取得する(ステップS104)。乱数管理部(RNM_U)214は暗号処理部(ENC_U)213に乱数を返却する(ステップS105)。ここでは説明を簡単にするため、乱数生成は乱数生成器240において完了しセキュアRAM220に保存されているとする。
【0038】
暗号処理部(ENC_U)213は取得した乱数をもとに暗号処理を行う(ステップS106)。暗号処理部(ENC_U)213は必要に応じて暗号化エンジン230を操作する。
【0039】
暗号処理部(ENC_U)213は暗号処理が完了すると送受信部(S/R_U)212に処理の完了を通知する(ステップS107)。送受信部(S/R_U)212は暗号処理部(ENC_U)213からの通知を受けてCPU100に処理の完了を通知する(ステップS108)。
【0040】
暗号処理部(ENC_U)213は暗号処理が完了すると乱数管理部(RNM_U)214に暗号処理の完了を通知する(ステップS109)。乱数管理部(RNM_U)214は暗号処理部(ENC_U)213がセキュアRAM220に格納されている乱数を使用すると、その乱数をセキュアRAM220から削除する。
【0041】
乱数管理部(RNM_U)214は乱数生成設定管理部(RSM_U)216に乱数生成に関する情報(RGD)を要求する(ステップS110)。乱数生成設定管理部(RSM_U)216は乱数管理部(RNM_U)214からの要求を受けてデータフラッシュ制御部(DFC_U)217に乱数生成に関する情報(RGD)を要求する(ステップS111)。データフラッシュ制御部(DFC_U)217は乱数生成設定管理部(RSM_U)216からの要求を受けてデータフラッシュ300のセキュア領域310から乱数生成に関する情報(RGD)を読み出す(ステップS112)。データフラッシュ制御部(DFC_U)217は乱数生成設定管理部(RSM_U)216に乱数生成に関する情報(RGD)を渡す(ステップ113)。乱数生成設定管理部(RSM_U)216は乱数管理部(RNM_U)214に乱数生成に関する情報(RGD)を返却する(ステップS114)。ここで、本実施例における乱数生成に関する情報(RGD)は乱数生成を開始する残り乱数量(RNDth)である。
【0042】
乱数管理部(RNM_U)214は乱数生成が必要かどうかを判断する(ステップS115)。暗号処理部(ENC_U)213が乱数を使用する暗号処理を行うことにより、セキュアRAM220に格納している乱数は消費されて乱数量は減少する。乱数管理部(RNM_U)214はセキュアRAM220に格納されている乱数量(残りの乱数量)とRNDthとを比較することにより乱数生成が必要かどうかを判断する。残りの乱数量がRNDth以下であり、乱数生成が必要と判断した場合、乱数管理部(RNM_U)214は乱数生成制御部(RGC_U)215に乱数生成を要求する(ステップS116)。乱数生成制御部(RGC_U)215は、乱数生成器240により乱数を生成する(ステップS117)。乱数生成制御部(RGC_U)215は、乱数生成器240が生成した乱数を乱数管理部(RNM_U)214に渡す(ステップS118)。乱数管理部(RNM_U)214は取得した乱数をセキュアRAM220に保存する(ステップS119)。
【0043】
本実施例による利点を
図6および
図7を用いて説明する。
【0044】
まず、本実施例を明確にするため比較例について説明する。
図7に示すように、比較例では、CPU100から暗号処理の要求を受け付けた後、セキュアCPU210が乱数生成を要求する。
【0045】
すなわち、CPU100はセキュアCPU210に向けて暗号処理を要求する(ステップS101)。送受信部(S/R_U)212はCPU100からの要求を受けて暗号処理部(ENC_U)213に処理を要求する(ステップS102)。暗号処理部(ENC_U)213は送受信部(S/R_U)212からの要求を受けて乱数管理部(RNM_U)214に乱数生成を要求する(ステップS103)。乱数管理部(RNM_U)214は暗号処理部(ENC_U)213からの要求を受けて乱数生成制御部(RGC_U)215に乱数生成を要求する(ステップS116)。
【0046】
乱数生成制御部(RGC_U)215は、乱数生成器240により乱数を生成する(ステップS117)。乱数生成制御部(RGC_U)215は、乱数生成器240が生成した乱数を乱数管理部(RNM_U)214に渡す(ステップS118)。乱数管理部(RNM_U)214は暗号処理部(ENC_U)213に乱数を返却する(ステップS105)。
【0047】
これに対して、本実施例は、上述したように、暗号処理後、セキュアCPU210が乱数生成を行うかどうかを判断し、必用に応じて乱数生成を開始する。すなわち、
図6に示すように、ステップS106の後、乱数管理部(RNM_U)214は乱数生成が必要かどうかを判断し(ステップS115)、必要な場合は乱数生成制御部(RGC_U)215に乱数生成を要求する(ステップS116)。
【0048】
セキュアCPU210がCPU100から乱数生成の要求を待たずして、乱数生成器240に乱数生成を要求することで、CPU100からみると、事前に乱数生成が開始される。よって、CPU100が要求する暗号処理の完了までの時間(ステップS101の開始からステップS108の終了までの時間)を短縮できる。
図6に示す、ステップS101の開始からステップS108の終了までの時間をtAとし、
図7に示す、ステップS101の開始からステップS107の終了までの時間をtBとすると、tA<tBとなる。
【実施例2】
【0049】
続いて、第二実施例について説明する。本実施例では、セキュアIP200は乱数生成の開始を要求するのがセキュアCPU210であるかCPU100であるかを示すトリガデータ(TRG)をデータフラッシュ300のセキュア領域310に格納する。
【0050】
本実施例における半導体装置の処理について
図8を用いて説明する。
【0051】
本実施例におけるセキュアIP200では、乱数生成器240へ乱数生成の要求をセキュアCPU210が判断して要求するか、CPU100からの要求を待って行うのか、を選択し得る。すなわち、セキュアIP200は第一実施例の動作と比較例の動作とを選択できるように構成される。乱数生成の開始を要求するのがセキュアCPU210であるかCPU100であるかを示すトリガデータ(TRG)はデータフラッシュ300のセキュア領域310に保存される。セキュアCPU210はトリガデータ(TRG)をデータフラッシュ300のセキュア領域310から読み込み、トリガデータ(TRG)に応じて乱数生成を開始する。ここで、トリガデータ(TRG)は乱数生成に関する情報(RGD)である。トリガデータ(TRG)は
図5に示されるシーケンスによりデータフラッシュ300のセキュア領域310に保存される。
【0052】
本実施例における半導体装置の処理について第一実施例との相違点を中心に以下に説明する。本実施例におけるステップS101,S102は第一実施例におけるステップS101,S102と同様である。
【0053】
本実施例では、暗号処理の開始時、暗号処理部(ENC_U)213が乱数生成設定管理部(RSM_U)216およびデータフラッシュ制御部(DFC_U)217を介してデータフラッシュ300のセキュア領域310からトリガデータ(TRG)を読み込む。これにより、トリガデータ(TRG)の設定が行われる。
【0054】
すなわち、暗号処理部(ENC_U)213は乱数生成設定管理部(RSM_U)216にトリガデータ(TRG)を要求する(ステップS131)。乱数生成設定管理部(RSM_U)216は暗号処理部(ENC_U)213からの要求を受けてデータフラッシュ制御部(DFC_U)217にトリガデータ(TRG)を要求する(ステップS132)。データフラッシュ制御部(DFC_U)217は乱数生成設定管理部(RSM_U)216からの要求を受けてデータフラッシュ300のセキュア領域310からトリガデータ(TRG)を読み出す(ステップS133)。データフラッシュ制御部(DFC_U)217は乱数生成設定管理部(RSM_U)216にトリガデータ(TRG)を渡す(ステップS134)。乱数生成設定管理部(RSM_U)216はトリガデータ(TRG)を受けて暗号処理部(ENC_U)213にトリガデータ(TRG)を渡す(ステップS135)。
【0055】
トリガデータ(TRG)が乱数生成の要求をCPU100が行うことを示している場合(TRG=CPU)、セキュアCPU210は、
図7の一点破線Bに示されるシーケンスに従って処理を行う。トリガデータ(TRG)が乱数生成の要求をセキュアCPU210が行うことを示している場合(TRG=SIP)、セキュアCPU210はは
図6の一点破線Aに示されるシーケンスに従って処理を行う。
【0056】
第一実施例の比較例では、暗号処理が完了するまでに時間がかかることが課題である。一方、暗号処理内で乱数生成を開始するので、暗号処理が完了するまでの時間がCPU100からみると一定である。このように、機能の応答性能が一定である場合、機能を使うアプリケーションの設計が容易になり得る。
【0057】
第一実施例では、乱数生成をセキュアCPU210が判断して要求することで、CPU100からみた暗号処理の完了時間が乱数生成器240の乱数生成の進み度合いによって変化してしまう。すなわち、乱数生成器240が乱数を生成中にCPU100から暗号処理の要求がある場合、生成された乱数が暗号処理に必要な乱数に満たないときは、乱数生成器が乱数を生成完了するまで、暗号処理を開始しない。このため、CPU100が暗号処理を要求するタイミングによって処理時間が異なる。よって、暗号処理の完了の時間がCPU100から見ると意図せず変化することがある。一方、セキュアCPU210がCPU100から乱数生成の要求を待たずして、乱数生成器240に乱数生成を要求することにより、CPU100からみると、事前に乱数生成を開始することができる。CPU100が要求する暗号処理の完了までの時間を短縮できる。
【0058】
暗号処理の応答時間が一定でない時に異常とみなすシステムを想定したCPU100の場合、利用者は乱数生成の要求者(トリガ)としてCPU100を選択する。また、暗号処理の応答時間が一定のであることにこだわらずできるだけ早い時間の応答を期待するシステムを想定したCPU100の場合、利用者は乱数生成の要求者としてセキュアCPU210を選択する。すなわち、本実施例では、乱数生成器240への乱数生成開始のトリガをCPU100が設定できる。これにより、暗号処理の完了時間について、上述のメリット・デメリットのどちらを許容するかを利用者が状況に応じて選択し得る。
【実施例3】
【0059】
続いて、第三実施例について説明する。本実施例では、CPU100がセキュアIP200のセキュアRAM220における乱数保持用に確保する領域の大きさと乱数生成を開始する残り乱数量を設定できるようにする。第一実施例では、乱数生成までの時間と消費量、処理要求の頻度が関係して処理時間が意図せず変化する。乱数生成を開始するかどうかの閾値(RNDth)だけでは、短い時間に乱数を利用する暗号処理が連続して要求されるケースに対応できないためである。乱数生成器240の動作時間は、暗号処理に比べ10倍以上に長いことが一般的である。このため、短い時間で暗号処理が連続して要求される場合は、セキュアRAM220上に乱数を保持しておき、そこから消費していく必要がある。このため、RNDthだけでなくセキュアRAM220における乱数保持用に確保する領域の大きさも設定できるようにする必要がある。
【0060】
本実施例における半導体装置の処理について
図9および
図10を用いて説明する。
【0061】
セキュアCPU210は、乱数生成器240に乱数生成をトリガする頻度と乱数生成器240の動作時間を設定できるようにしている。すなわち、CPU100は、第一実施例で固定であった、セキュアRAM220における乱数保持用に確保する領域の大きさ(RNDmax)と乱数生成を開始する残り乱数量(RNDth)を設定できるようにしている。ここで、RNDmaxおよびRNDthは乱数生成に関する情報(RGD)である。データフラッシュ300のセキュア領域310への乱数生成に関する情報(RGD)の保存の手順は、第一実施例の
図5と同様のシーケンスである。
【0062】
本実施例における半導体装置の処理について第一実施例との相違点を中心に以下説明する。本実施例におけるステップS101~S119は第一実施例におけるステップS101~S119と同様である。ただし、データフラッシュ300のセキュア領域310に保存される乱数生成に関する情報(RGD)が異なる。
【0063】
乱数管理部(RNM_U)214は乱数生成が必要かどうかを判断する(ステップS115)。乱数管理部(RNM_U)214はセキュアRAM220に格納されている乱数量(残りの乱数量)がRNDth以下で、乱数生成が必要と判断した場合、乱数管理部(RNM_U)214は乱数生成制御部(RGC_U)215に乱数生成を要求する(ステップS116)。乱数生成制御部(RGC_U)215は、乱数生成器240により乱数を生成する(ステップS117)。乱数生成制御部(RGC_U)215は、乱数生成器240が生成した乱数を乱数管理部(RNM_U)214に渡す(ステップS118)。乱数管理部(RNM_U)は取得した乱数をセキュアRAM220に保存する(ステップS119)。
【0064】
上述したように、CPU100が設定変更できる乱数生成に関する情報(RGD)は、RNDmax、RNDthである。そして、CPU100はRNDmaxとRNDthの設定値を変化させることで、セキュアCPU210が乱数生成を要求するタイミングと乱数生成器240の動作時間を制御できるようになる。
【0065】
このとき、乱数を使用する暗号処理実行回数と乱数保持領域にある乱数量は
図10に示すようなイメージになる。
図10に示すように、状態Aは乱数生成器240が乱数生成を完了した状態であり、セキュアRAM220の乱数保持領域にある乱数量はRNDmaxである。状態Bは暗号処理で乱数が取得(消費)された状態であり、セキュアRAM220の乱数保持領域にある乱数量はRNDmaxよりも少なくなっている。状態CはセキュアRAM220の乱数保持領域にある乱数量はRNDth以下の状態であり、乱数管理部(RNM_U)214は乱数生成器240に乱数生成を要求する。
【0066】
本実施例は、乱数を使用する暗号処理の完了の時間がCPU100から見ると意図せず変化することがあるという第一実施例の課題を第二実施例と異なる方法で解決する。本実施例では、CPU100が乱数生成器240の動作の頻度と時間を設定し、セキュアCPU210はその設定に基づいて乱数生成器240を動作させるかを判断する。言い換えると、CPU100はその設定によって必要な時に乱数を準備することができ、暗号処理が乱数生成器240によって待たされることなく処理され得る。
【0067】
本実施例は、セキュアCPU210が乱数生成器を操作する条件をCPU100が設定できるようにすることによって、セキュアCPU210が暗号処理をCPU100にとって最適な時間でCPU100へ提供できるようにするものである。
【0068】
本実施例においてCPU100の利用者の乱数生成設定の選定方法、CPU100の処理において想定されるRNDmax、RNDthの設定選択基準について以下説明する。
【0069】
CPU100の処理において、想定される、その他のパラメータは下記のとおりである。
1回の暗号処理で使用する乱数量:RNDdelta
暗号処理を連続で要求する区間(RQS)の時間:Treq
暗号処理を要求しない区間(NQS)の時間:Tnreq
暗号処理を連続で要求する区間において処理を要求する周期の間隔:Tperi
乱数生成器240がRNDdelta分の乱数を生成する時間:Trnddelta
【0070】
このとき、暗号処理を要求する区間(RQS)において乱数が枯渇しないための条件は下記の式(1)で示される。
Treq / Tperi * RNDdelta < RNDmax ・・・(1)
【0071】
暗号処理を要求する区間(RQS)において乱数生成器240を動作させない条件は下記の式(2)で示される。
Treq / Tperi * RNDdelta < (RNDmax - RNDth) ・・・(2)
【0072】
Treq、Tnreq、TperiはCPU100の処理において想定される動作によって、値が決定される。TrnddeltaはセキュアIP200の乱数生成器240の性能によって、値が決定される。このようにCPU100の処理において想定される動作からRNDmax、RNDthの設定値を決定し得る。
【0073】
次に、CPU100の処理について3種類のケースを想定してそれぞれの設定例について
図11から
図13を用いて説明する。
図11から
図13に示される黒い三角形(▲)は乱数を使用する暗号処理の実行タイミングを表している。
【0074】
(第一ケース)
図11に示すように、第一ケースにおけるCPU100の処理は、暗号処理を要求する区間(RQS)と暗号処理を要求しない区間(NQS)が交互にくることを想定する。
【0075】
暗号処理を要求する区間(RQS)において、乱数生成器240を動作させず、乱数が枯渇しないための条件は上記の式(2)で表される。
【0076】
暗号処理を要求しない区間(NQS)において乱数生成が完了する条件は下記の式(3)で示される。
Trnddelta * (Treq / Tperi * RNDdelta) < Tnreq ・・・(3)
【0077】
式(2)および式(3)の条件を満たすように、RNDmax、RNDthを調整することにより、CPU100は、暗号処理を乱数の生成時間を待たずに実行し得る。また、式(3)は乱数生成の性能と処理要求の頻度の関係式のため、CPU100の処理の想定をセキュアIP200の性能が満たせるかどうかの判定に使用される。
【0078】
(第二ケース)
次に、
図12に示すように、第二ケースにおけるCPU100の処理は、暗号処理を要求する区間(RQS)がずっと続くことを想定する。暗号処理の要求が際限なく続くため、暗号処理を要求する間隔(Tperi)の間に乱数の生成を行う必要がある。
【0079】
暗号処理で使用する乱数量を確保する条件は下記の式(4)を満たす必要がある。
RNDmax > RNDdelta ・・・(4)
【0080】
乱数生成を行うまでの、暗号処理の要求数は下記の式(5)で示される。なお、
図12では要求数を1として表現している。
(RNDmax - RNDth) / RNDdelta ・・・(5)
【0081】
暗号処理を要求する間隔(Tperi)の間に乱数の生成を行う必要があるため、式(5)から下記の式(6)の条件が導出される。
Trnddelta * (RNDmax - RNDth) / RNDdelta < Tperi ・・・(6)
【0082】
式(4)と式(6)を満たす条件で、RNDmax、RNDthを調整することにより、CPU100は、暗号処理を乱数の生成時間を待たずに実行し得る。また、式(4)および式(6)は乱数生成の性能と処理要求の頻度を含むため、CPU100における処理の想定をセキュアIP200の性能が満たせるかどうかも合わせて判定する。
【0083】
(第三ケース)
最後に、
図13に示すように、第三ケースにおけるCPU100の処理は、暗号処理を長い間隔で要求する区間(RQLS)と暗号処理を短い間隔で要求する区間(RQSS)が交互にくることを想定する。
【0084】
暗号処理を長い間隔で要求する区間(RQLS)の時間をTreq(long)、暗号処理を短い間隔で要求する区間(RQSS)の時間をTreq(short)とする。それぞれの区間における暗号処理を要求する間隔をTperi(long)とTperi(short)とする。
【0085】
また、暗号処理を長い間隔で要求する区間(RQLS)と暗号処理を短い間隔で要求する区間(RQSS)においてそれぞれRNDthを設定変更する。暗号処理を長い間隔で要求する区間(RQLS)における、乱数生成を開始する残り乱数量をRNDth(long)とする。そして、暗号処理を短い間隔で要求する区間(RQSS)における、乱数生成を開始する残り乱数量をRNDth(short)とする。暗号処理を長い間隔で要求する区間(RQLS)と暗号処理を短い間隔で要求する区間(RQSS)の切り替え時間をTchangeとする。Tchangeは、暗号処理を長い間隔で要求する区間(RQLS)における最後の処理要求から暗号処理を短い間隔で要求する区間(RQSS)における最初の処理要求までの時間及びその逆の時間である。
【0086】
暗号処理を長い間隔で要求する区間(RQLS)において、RNDmax、RNDthが満たすべき条件は、上述した第二ケースの式(4)と式(6)と同じになる。
【0087】
また、暗号処理を短い間隔で要求する区間(RQSS)においては短い時間で処理要求がくるため、乱数が乱数生成器240を動作させず、乱数を枯渇させないことが必要である。加えて、暗号処理を短い間隔で要求する区間(RQSS)において消費した乱数を次の要求までの時間である、Tchangeの間で生成を完了させる必要もある。
【0088】
暗号処理を短い間隔で要求する区間(RQSS)において、RNDmax、RNDthが満たすべき条件は、下記の式(7)および式(8)となる。
Treq(short) / Tperi(short) * RNDdelta < (RNDmax - RNDth(short)) ・・・(7)
Treq(short) / Tperi(short) * Trnddelta < Tchange ・・・(8)
【0089】
暗号処理を長い間隔で要求する区間(RQLS)においては、式(4)および式(6)を満たす条件でRNDmax、RNDthを調整する。そして、暗号処理を短い間隔で要求する区間(RQSS)においては、式(7)および式(8)を満たす条件でRNDmax、RNDthを調整する。これらにより、CPU100は、暗号処理を乱数の生成時間を待たずに実行できることになる。また、式(7)および式(8)は乱数生成の性能と処理要求の頻度を含むため、CPU100が想定する処理をセキュアIP200の性能が満たせるかどうかも合わせて判定する。
【0090】
以上、本開示者によってなされた開示を実施形態および実施例に基づき具体的に説明したが、本開示は上記実施形態および実施例に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【符号の説明】
【0091】
11,12・・・半導体装置
211・・・制御ユニット(第二制御ユニット)
220・・・セキュアRAM(第一メモリ)
230・・・暗号化エンジン
240・・・乱数生成器
310・・・セキュア領域(第二メモリ)