JP2019118064A - 半導体装置及び暗号鍵の制御方法 - Google Patents

半導体装置及び暗号鍵の制御方法 Download PDF

Info

Publication number
JP2019118064A
JP2019118064A JP2017252235A JP2017252235A JP2019118064A JP 2019118064 A JP2019118064 A JP 2019118064A JP 2017252235 A JP2017252235 A JP 2017252235A JP 2017252235 A JP2017252235 A JP 2017252235A JP 2019118064 A JP2019118064 A JP 2019118064A
Authority
JP
Japan
Prior art keywords
encryption key
read request
data bus
generation unit
random number
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2017252235A
Other languages
English (en)
Other versions
JP7032926B2 (ja
Inventor
大輔 熊木
Daisuke Kumaki
大輔 熊木
佑典 秦
Yusuke Hata
佑典 秦
俊彦 中村
Toshihiko Nakamura
俊彦 中村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Lapis Semiconductor Co Ltd
Original Assignee
Lapis Semiconductor Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Lapis Semiconductor Co Ltd filed Critical Lapis Semiconductor Co Ltd
Priority to JP2017252235A priority Critical patent/JP7032926B2/ja
Publication of JP2019118064A publication Critical patent/JP2019118064A/ja
Application granted granted Critical
Publication of JP7032926B2 publication Critical patent/JP7032926B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

【課題】不正なアクセスによるデータの漏洩を防ぐことが可能な半導体装置を提供する。【解決手段】半導体装置(マイクロコンピュータ100)は、データバスBS1またはBS8を介して受信した暗号鍵を用いて平文データを暗号化する暗号処理部12と、暗号鍵を生成し、生成した暗号鍵を第1又は第2の読出要求に応じてデータバスBS1またはBS8に送出する暗号鍵生成部13と、第1の読出要求を暗号鍵生成部13に供給し、暗号鍵生成部13から送出された暗号鍵をデータバスBS1を介して暗号処理部12に転送するCPU14と、第2の読出要求を暗号鍵生成部13に供給し、暗号鍵生成部13から送出された暗号鍵をデータバスBS8を介して暗号処理部12に転送するセキュアDMAC21と、を含む。暗号鍵生成部13は、第1の及び第2の読出要求のうちの一方の読出要求を受けた場合に、暗号鍵の値を他の値に変更する。【選択図】図1

Description

本発明は、半導体装置、特に暗号鍵を用いたデータの暗号化機能を有する半導体装置、及び暗号鍵の制御方法に関する。
現在、スクランブルキーを用いて平文データをスクランブルしたものをメモリに記憶し、当該平文データを用いたデータ処理を行うときに、このスクランブルされた平文データをデスクランブルして元の平文データを復元するデータ処理装置が提案されている(例えば、特許文献1参照)。
このデータ処理装置では、平文データをクランブルする場合、CPU(central processing unit)が、平文データをススクランブル回路にてスクランブルさせる。この際、スクランブル回路は、レジスタに保持されているスクランブルキーを読み出し、このスクランブルキーを用いて平文データをスクランブルする。
また、平文データを用いたデータ処理を行う場合には、このデータ処理装置では、CPUが、上記したようにスクランブルされた平文データを、スクランブル回路によってデスクランブルさせる。この際、スクランブル回路は、レジスタに保持されているスクランブルキーを読み出し、当該スクランブルキーを用いて、スクランブルされた平文データをデスクランブルすることにより元の平文データを復元する。CPUは、このように復元された平文データを用いて所定のデータ処理を実行する。
更に、当該データ処理装置では、スクランブル及びデスクランブル処理で用いるスクランブルキーの漏洩を防止するために、CPUが上記したような所定のデータ処理を終了したら、スクランブルキーの値を他の値に変更する。つまり、上記したレジスタに保持されているスクランブルキーの値を変更した新たなスクランブルキーを、このレジスタに上書きする。
特開2010−92117号公報
ところで、上記したようなCPUを有するデータ処理装置には、CPUを介在することなく周辺回路とのデータ転送制御を行う、いわゆるDMAC(direct memory access controller)が搭載されている場合がある。
この際、DMACによるデータ転送を行う場合にも、平文データの漏洩を防止するために、暗号鍵としてのスクランブルキーを用いた暗号化(スクランブル)又は復号化(デスクランブル)を実施する。
よって、CPUが、暗号鍵(スクランブルキー)によって復号化(デスクランブル)された平文データに基づくデータ処理の実行中に、DMACが、他の平文データを周辺回路に転送する場合が生じる。この際、DMACによるデータ転送時にも、上記した他の平文データを復元するために、レジスタから暗号鍵(スクランブルキー)を読み出す必要がある。
したがって、このような場合、同一値の暗号鍵(スクランブルキー)が2回連続してレジスタから読み出されることになり、暗号鍵の漏洩を招く可能性が高くなる。よって、不正に取得した暗号鍵により上記した平文データが漏洩する虞があった。
そこで、本発明は、不正なアクセスによるデータの漏洩を防ぐことが可能な半導体装置、及び暗号鍵の制御方法を提供することを目的とする。
本発明に係る半導体装置は、データバスを介して受けた暗号鍵を用いて平文データを暗号化する暗号処理部と、前記暗号鍵を生成し、生成した前記暗号鍵を第1の読出要求又は第2の読出要求に応じて前記データバスに送出する暗号鍵生成部と、前記第1の読出要求を前記暗号鍵生成部に供給し、前記暗号鍵生成部から送出された前記暗号鍵を前記データバスを介して前記暗号処理部に転送する第1の転送制御部と、前記第2の読出要求を前記暗号鍵生成部に供給し、前記暗号鍵生成部から送出された前記暗号鍵を前記データバスを介して前記暗号処理部に転送する第2の転送制御部と、を含み、前記暗号鍵生成部は、前記第1の読出要求及び前記第2の読出要求のうちの一方の読出要求を受けた場合に、前記暗号鍵の値を他の値に変更する。
また、本発明に係る半導体装置は、データバスを介して受けた暗号鍵を用いて平文データを暗号化する暗号処理部と、前記暗号鍵を生成し、生成した前記暗号鍵を第1の読出要求又は第2の読出要求に応じて前記データバスに送出する暗号鍵生成部と、前記第1の読出要求を前記暗号鍵生成部に供給し、前記暗号鍵生成部から送出された前記暗号鍵を前記データバスを介して前記暗号処理部に転送する第1の転送制御部と、前記第2の読出要求を前記暗号鍵生成部に供給し、前記暗号鍵生成部から送出された前記暗号鍵を前記データバスを介して前記暗号処理部に転送する第2の転送制御部と、を含み、前記暗号鍵生成部は、所定期間毎に、前記所定期間内において前記第1の読出要求を受けた後に前記第2の読出要求を受けた場合には、前記第2の読出要求に応じて前記暗号鍵に代えてエラー応答を前記データバスに送出する。
また、本発明に係る暗号鍵の制御方法は、データバスを介して受けた暗号鍵を用いて平文データを暗号化する際の前記暗号鍵の制御方法であって、前記暗号鍵を生成し、生成した前記暗号鍵を第1の読出要求又は第2の読出要求に応じて前記データバスに送出すると共に、前記第1の読出要求及び前記第2の読出要求のうちの一方の読出要求を受けたときに前記暗号鍵の値を他の値に変更する。
また、本発明に係る暗号鍵の制御方法は、データバスを介して受けた暗号鍵を用いて平文データを暗号化する際の前記暗号鍵の制御方法であって、前記暗号鍵を生成し、生成した前記暗号鍵を第1の読出要求又は第2の読出要求に応じて前記データバスに送出し、所定期間毎に、前記所定期間内において前記第1の読出要求を受けた後に前記第2の読出要求を受けた場合には、前記第2の読出要求に応じて前記暗号鍵に代えてエラー応答を前記データバスに送出する。
本発明では、データバスを介して受けた暗号鍵を用いて平文データを暗号化するにあたり、生成した暗号鍵を第1又は第2の読出要求に応じてデータバスに送出すると共に、第1及び第2の読出要求のうちの一方を受けたときに暗号鍵の値を他の値に変更する。
また、本発明では、所定期間毎に、この所定期間内において第1の読出要求を受けた後に第2の読出要求を受けた場合には、第2の読出要求に応じて、暗号鍵に代えてエラー応答をデータバスに送出する。
これにより、例えばCPU(又はDMAC)から暗号鍵を取得する第1の読出要求が為され、引き続きDMAC(又はCPU)から暗号鍵を取得する第2の読出要求が為されても、同一値の暗号鍵が2回連続してデータバスに送出されることはない。
よって、暗号鍵の漏洩を招く可能性が低くなるので、不正なアクセスによる平文データの漏洩を防ぐことが可能となる。
本発明に係る半導体装置の一例としてのマイクロコンピュータ100の構成を示すブロック図である。 暗号鍵生成部13の内部構成の一例を示すブロック図である。 セキュアDMAC21による暗号鍵取得の為のデータ転送動作を表す図である。 CPU14による暗号鍵取得の為のデータ転送動作を表す図である。 暗号鍵生成部13の内部動作の一例を表すタイムチャートである。 暗号鍵生成部13の内部動作の他の一例を表すタイムチャートである。 半導体装置の他の一例としてのマイクロコンピュータ100の構成を示すブロック図である。 暗号鍵生成部13Aの内部構成の一例を示すブロック図である。 図7に示すマイクロコンピュータ100における、セキュアDMAC21による暗号鍵取得の為のデータ転送動作の一例を表す図である。 図7に示すマイクロコンピュータ100における、CPU14による暗号鍵取得の為のデータ転送動作の一例を表す図である。 暗号鍵生成部13Aの内部動作の一例を表すタイムチャートである。 図7に示すマイクロコンピュータ100における、CPU14による暗号鍵取得の為のデータ転送動作の他の一例を表す図である。 図7に示すマイクロコンピュータ100における、セキュアDMAC21による暗号鍵取得の為のデータ転送動作の他の一例を表す図である。 暗号鍵生成部13Aの内部動作の他の一例を表すタイムチャートである。 図7に示すマイクロコンピュータ100の変形例を示すブロック図である。 図15に示すマイクロコンピュータ100における、セキュアDMAC21による暗号鍵取得の為のデータ転送動作の一例を表す図である。 図15に示すマイクロコンピュータ100における、CPU14による暗号鍵取得の為のデータ転送動作の一例を表す図である。 図15に示すマイクロコンピュータ100における、CPU14による暗号鍵取得の為のデータ転送動作の他の一例を表す図である。 図15に示すマイクロコンピュータ100における、セキュアDMAC21による暗号鍵取得の為のデータ転送動作の他の一例を表す図である。
図1は、本発明に係る半導体装置に含まれるマイクロコンピュータ100の構成を示すブロック図である。
マイクロコンピュータ100は、暗号処理部12、暗号鍵生成部13、CPU(central processing unit)14、RAM(random access memory)15、ROM(read only memory)制御部16、ROM17、セキュアRAM19、セキュアROM20、セキュアDMAC(direct memory access controller)21、及びキーストレージ22を有する。
更に、マイクロコンピュータ100は、2系統のデータバスBS1及びBS8を含む。マイクロコンピュータ100は、外部接続された機器とのデータ通信が可能であり、当該データバスBS1を介して各種データの送信又は受信を行う。
データバスBS1には、暗号処理部12、暗号鍵生成部13、CPU14、RAM15、ROM制御部16、ROM17、セキュアRAM19、及びキーストレージ22が接続されている。
データバスBS8は、データバスBS1には接続されておらず、且つマイクロコンピュータ100の外部からのアクセス不可な独立したバスである。データバスBS8は、秘匿性を要求される暗号鍵生成部13、セキュアRAM19、セキュアROM20、セキュアDMAC21及びキーストレージ22、並びに暗号処理部12に接続されている。
暗号処理部12は、データバスBS1を介して受けた暗号化前の平文データ片を、暗号鍵を用いて暗号化することにより暗号化データ片を得て、これをデータバスBS1に送出する。また、暗号処理部12は、データバスBS1を介して受けた暗号化データ片を、この暗号鍵を用いて復号することにより、暗号化前の平文データ片を復元する。尚、暗号処理部12は、このような暗号化又は復号化処理を行うにあたり、その実行前に、キーストレージ22から暗号鍵を取得しておく。
暗号鍵生成部13は、暗号鍵を生成しこれをデータバスBS1又はBS8に送出する。
図2は、暗号鍵生成部13の内部構成の一例を示すブロック図である。
図2に示す一例では、暗号鍵生成部13は、乱数生成部131、レジスタ132及び出力制御部133を含む。
乱数生成部131は、所定期間毎に乱数値が変化する乱数RNDを生成し、これをレジスタ132に供給する。尚、乱数生成部131は、乱数変更信号CHを受けた場合には、上記した所定期間の経過を待つことなく、当該乱数変更信号CHを受けた時点で、乱数RNDにて示される乱数値を他の乱数値に変更する。
レジスタ132は、乱数RNDを保持しつつ、当該乱数RNDにて表される乱数値を有する暗号鍵CRKを出力制御部133に供給する。
出力制御部133は、データバスBS1を介して暗号鍵読出要求RQ1を受けた場合には、レジスタ132から供給された暗号鍵CRKをデータバスBS1に送出し、引き続き、乱数変更信号CHを乱数生成部131に供給する。また、出力制御部133は、データバスBS8を介して暗号鍵読出要求RQ2を受けた場合には、レジスタ132から供給された暗号鍵CRKをデータバスBS8に送出する。
図1に示すCPU14は、このマイクロコンピュータ100の中央演算処理装置であり、ROM17に格納されているプログラムに従った演算或いはデータ転送の為の各種制御を行う。
RAM15は、データ書き込みが可能な記憶素子であり、CPU14によってデータの書込又は読出が行われる。
ROM制御部16は、ROM17に対して、データの書き込み、又はデータが正しく書き込まれたか否かを確認するベリファイ、或いは書き込まれたデータの消去等を行う。
ROM17には、CPU14が実行するプログラムを表すプログラムデータが書き込まれている。
セキュアRAM19は、セキュアDMAC21からのデータ書込アクセスに応じて、データバスBS8を介して受けたデータを記憶する。また、セキュアRAM19は、セキュアDMAC21からのデータ読出アクセスに応じて、自身に記憶されているデータを読み出し、これをデータバスBS8に送出する。また、セキュアRAM19は、CPU14からのデータ書込アクセスに応じて、データバスBS1を介して受けたデータを記憶する。尚、セキュアRAM19は、CPU14からのデータ読出アクセスは受け付けない。
セキュアROM20は、セキュアDMAC21からのデータ読出アクセスに応じて、自身に格納されているデータを読み出し、これをデータバスBS8に送出する。また、セキュアROM20は、ROM制御部16又はセキュアDMAC21からのデータ書込アクセスに応じて、データバスBS8を介して受けたデータを書き込む。
セキュアDMAC21は、データバスBS8を介して、暗号処理部12、暗号鍵生成部13、セキュアRAM19、セキュアROM20、及びキーストレージ22間のデータ転送を行う。
キーストレージ22は、データバスBS8を介して受けた暗号鍵を保持する。また、キーストレージ22は、暗号鍵読出要求に応じて、保持されている暗号鍵を読み出し、データバスBS8に送出する。
上記した構成により、マイクロコンピュータ100は、ROM17に格納されているプログラムに従って、上記した暗号鍵を用いた平文データの暗号又は暗号化データの復号処理を含む各種のデータ処理を行う。
以下に、データバスBS1上の平文データ片を暗号化する場合を例にとって、マイクロコンピュータ100内で行われるデータ転送動作について説明する。
先ず、セキュアDMAC21が、暗号鍵を取得する為の暗号鍵読出要求RQ2を、図3の太線矢印に示すようにデータバスBS8を介して暗号鍵生成部13に供給する。暗号鍵読出要求RQ2に応じて、暗号鍵生成部13は、暗号鍵CRKを、図3の太線矢印に示すようにデータバスBS8を介してセキュアDMAC21に供給する。
セキュアDMAC21は、取得した暗号鍵CRKをデータバスBS8を介してキーストレージ22に転送し、当該暗号鍵CRKをキーストレージ22に保持させる。次に、セキュアDMAC21は、キーストレージ22に保持されている暗号鍵CRKをセキュアRAM19及びセキュアROM20の各々に転送し、当該暗号鍵CRKをこれらセキュアRAM19及びセキュアROM20に書き込ませる。そして、セキュアDMAC21は、セキュアRAM19に書き込まれた暗号鍵CRKを、データバスBS8を介して暗号処理部12に供給する。
これにより、暗号処理部12は、上記のようにデータバスBS8を介してセキュアDMAC21が取得した暗号鍵CRKを用いて、データバスBS1上の平文データ片を暗号化した暗号化データ片を生成し、これをデータバスBS1に送出する。この際、CPU14は、当該暗号化データ片をデータバスBS1を介してRAM15に供給し、この暗号化データ片をRAM15に書き込ませる。
よって、上記した一連の処理により、平文データ片を暗号化した暗号化データ片が生成される。
ところで、マイクロコンピュータ100では、セキュアDMAC21のみならずCPU14でも、上述したような平文データの暗号化、又は暗号化データの復号化の為のデータ転送制御を行うことが可能である。
例えば、データバスBS1上の平文データ片を暗号化する場合、先ず、CPU14は、暗号鍵を取得する為の暗号鍵読出要求RQ1を、図4の太線矢印に示すようにデータバスBS1を介して暗号鍵生成部13に供給する。暗号鍵読出要求RQ1に応じて、暗号鍵生成部13は、暗号鍵CRKを、図4の太線矢印に示すようにデータバスBS1を介してCPU14に供給する。
CPU14は、取得した暗号鍵CRKをデータバスBS1を介してキーストレージ22に転送し、当該暗号鍵CRKをキーストレージ22に保持させる。次に、CPU14は、キーストレージ22に保持されている暗号鍵CRKをRAM15に転送し、当該暗号鍵CRKをRAM15に書き込ませる。そして、CPU14は、RAM15に書き込まれた暗号鍵CRKを、データバスBS1を介して暗号処理部12に供給する。
これにより、暗号処理部12は、図4に示すようにデータバスBS1を介してCPU14が取得した暗号鍵CRKを用いて、データバスBS1上の平文データ片を暗号化した暗号化データ片を生成し、これをデータバスBS1に送出する。この際、CPU14は、当該暗号化データ片をデータバスBS1を介してRAM15に供給し、この暗号化データ片をRAM15に書き込ませる。
このように、マイクロコンピュータ100では、セキュアDMAC21及びCPU14の双方で、データの暗号化又は復号化の為のデータ転送を行うことが可能である。
よって、セキュアDMAC21によって図3に示すような暗号鍵を取得する為のデータ転送が終了した後、当該暗号鍵を用いた暗号処理部12による暗号化処理が終了する前に、CPU14により図4に示すような暗号鍵取得の為のデータ転送が行われる場合がある。
以下に、セキュアDMAC21による暗号鍵取得の為のデータ転送(図3)、及びCPU14による暗号鍵取得の為のデータ転送(図4)が連続した場合における暗号鍵生成部13の内部動作を、図5に示すタイムチャートを参照しつつ説明する。
尚、最初に暗号鍵生成部13の乱数生成部131が、図5に示すように乱数値Q1を示す乱数RNDを生成しているものとする。よって、レジスタ132は、当該乱数RNDを保持しつつ、この乱数RNDによって表される乱数値Q1を有する暗号鍵CRKを出力制御部133に供給する。
先ず、暗号鍵生成部13が、図3に示すようにセキュアDMAC21から送出された暗号鍵読出要求RQ2をデータバスBS8を介して受ける。すると、暗号鍵生成部13の出力制御部133は、図5に示すように、乱数値Q1を有する暗号鍵CRKをデータバスBS8に送出する。これにより、当該暗号鍵CRKが図3に示すようにデータバスBS8を介してセキュアDMAC21に供給される。
更に、出力制御部133は、当該暗号鍵読出要求RQ2に応答し、且つ暗号鍵CRKをデータバスBS8に送出した直後に、図5に示すように論理レベル0から論理レベル1の状態に遷移する2値の乱数変更信号CHを乱数生成部131に供給する。すなわち、出力制御部133は、暗号鍵の変更を促す乱数変更信号CHを乱数生成部131に供給する。
当該乱数変更信号CHに応答して、乱数生成部131は、図5に示すように、現時点での乱数RNDの乱数値Q1を乱数値Q2に変更する。
これにより、レジスタ132は、保持している内容を乱数値Q2で上書きする。つまり、レジスタ132は、その直前まで保持していた乱数値Q1を削除し、当該乱数値Q1に代えて乱数値Q2を保持する。よって、この際、レジスタ132は、図5に示す乱数値Q2を有する暗号鍵CPKを出力制御部133に供給する。
その後、暗号鍵生成部13が、図4に示すようにCPU14から送出された暗号鍵読出要求RQ1をデータバスBS1を介して受ける。すると、暗号鍵生成部13の出力制御部133は、図5に示すように、乱数値Q2を有する暗号鍵CRKをデータバスBS1に送出する。これにより、当該暗号鍵CRKが図4に示すようにデータバスBS1を介してCPU14に供給される。
よって、CPU14からの暗号鍵読出要求RQ1に応じて暗号鍵生成部13が送出した暗号鍵CRKの値(Q2)は、その直前に、セキュアDMAC21からの暗号鍵読出要求RQ2に応じて暗号鍵生成部13が送出した暗号鍵CRKの値(Q1)とは異なる。
従って、図3に示すようなセキュアDMAC21からの暗号鍵読出要求RQ2に続き、図4に示すようなCPU14からの暗号鍵読出要求RQ1が行われても、同一値を有する暗号鍵CRKが2回連続して暗号鍵生成部13から送出されることはない。よって、暗号鍵CRKがマイクロコンピュータ100の外部へ漏洩される可能性が低くなり、平文データの漏洩を防ぐことが可能となる。
尚、上記した一例では、暗号鍵生成部13は、セキュアDMAC21からの暗号鍵読出要求RQ2に応じて、暗号鍵CRKの値(Q1)を他の値(Q2)に変更している。しかしながら、CPU14からの暗号鍵読出要求RQ1に応じて、暗号鍵CRKの値を他の値に変更しても良い。この際、暗号鍵生成部13としては、以下の動作を行う出力制御部133を採用する。
すなわち、出力制御部133は、データバスBS1を介してCPU14からの暗号鍵読出要求RQ1を受けた場合には、レジスタ132から供給された暗号鍵CRKをデータバスBS1に送出し、引き続き、乱数変更信号CHを乱数生成部131に供給する。また、出力制御部133は、データバスBS8を介してセキュアDMAC21からの暗号鍵読出要求RQ2を受けた場合には、レジスタ132から供給された暗号鍵CRKをデータバスBS8に送出する。
図6は、CPU14による暗号鍵取得の為のデータ転送(図4)の直後に、セキュアDMAC21による暗号鍵取得の為のデータ転送(図3)が連続した場合における暗号鍵生成部13の内部動作を表すタイムチャートである。
先ず、暗号鍵生成部13の出力制御部133は、図4に示すようにCPU14から送出された暗号鍵読出要求RQ1をデータバスBS1を介して受けると、図6に示すように、乱数値Q1を有する暗号鍵CRKをデータバスBS1に送出する。これにより、当該暗号鍵CRKが、図4に示すようにデータバスBS1を介してCPU14に供給される。
更に、出力制御部133は、当該暗号鍵読出要求RQ1に応答し、且つ暗号鍵CRKをデータバスBS1に送出した直後に、図6に示すように、論理レベル0から論理レベル1の状態に遷移する2値の乱数変更信号CHを乱数生成部131に供給する。当該乱数変更信号CHに応答して、乱数生成部131は、図6に示すように、現時点での乱数RNDの乱数値Q1を乱数値Q2に変更する。これにより、レジスタ132は、保持している内容を乱数値Q2で上書きする。つまり、レジスタ132は、その直前まで保持していた乱数値Q1を削除し、当該乱数値Q1に代えて乱数値Q2を保持する。よって、この際、レジスタ132は、図6に示すように乱数値Q2を有する暗号鍵CPKを出力制御部133に供給する。
その後、暗号鍵生成部13の出力制御部133は、図3に示すようにセキュアDMAC21から送出された暗号鍵読出要求RQ2をデータバスBS8を介して受けると、図6に示すように、乱数値Q2を有する暗号鍵CRKをデータバスBS8に送出する。これにより、当該暗号鍵CRKが、図3に示すようにデータバスBS8を介してセキュアDMAC21に供給される。
よって、セキュアDMAC21からの暗号鍵読出要求RQ2に応じて暗号鍵生成部13が送出した暗号鍵CRKの値(Q2)は、その直前に、CPU14からの暗号鍵読出要求RQ1に応じて暗号鍵生成部13が送出した暗号鍵CRKの値(Q1)とは異なる。
従って、図4に示すようなCPU14からの暗号鍵読出要求RQ1に続き、図3に示すようなセキュアDMAC21からの暗号鍵読出要求RQ2が行われても、同一値を有する暗号鍵CRKが2回連続して暗号鍵生成部13から送出されることはない。よって、暗号鍵CRKがマイクロコンピュータ100の外部へ漏洩される可能性が低くなり、平文データの漏洩を防ぐことが可能となる。
尚、上記した実施例では、暗号鍵生成部13で生成された暗号鍵CRKを読み出し、これをデータバス(BS1、BS8)を介して暗号処理部12に転送する転送制御部として、CPU14及びDMAC21を用いている。しかしながら、上記したような暗号鍵取得の為のデータ転送を行うことができるものであれば、転送制御部としてはCPUや、DMAC等に限定されない。
また、図1及び図2に示す実施例では、暗号鍵取得の為のデータ転送を2つのデータバスBS1及びBS8を用いて行っているが、単一のデータバスによっても同様に実施することが可能である。
要するに、図1に示すマイクロコンピュータ100としては、以下の暗号処理部、暗号鍵生成部、第1及び第2の転送制御部を含むものであれば良い。
つまり、暗号処理部(12)は、データバス(BS1、BS8)を介して受けた暗号鍵(CRK)を用いて平文データを暗号化する。暗号鍵生成部(13)は、暗号鍵(CRK)を生成し、生成した暗号鍵を第1の読出要求(RQ1又はRQ2)又は第2の読出要求(RQ2又はRQ1)に応じてデータバスに送出する。第1の転送制御部(14又は21)は、第1の読出要求を暗号鍵生成部に供給し、暗号鍵生成部から送出された暗号鍵をデータバスを介して暗号処理部に転送する。第2の転送制御部(21又は14)は、第2の読出要求を暗号鍵生成部に供給し、暗号鍵生成部から送出された暗号鍵をデータバスを介して暗号処理部に転送する。ここで、暗号鍵生成部は、第1の読出要求及び第2の読出要求のうちの一方の読出要求を受けた場合に、暗号鍵の値を他の値に変更する。
更に、図2に示す暗号鍵生成部13としては、以下の乱数生成部、レジスタ、及び出力制御部を含むものであれば良い。
つまり、乱数生成部(131)は、所定期間毎に乱数値が変化する乱数(RND)を生成し、乱数変更信号(CH)を受けた場合に乱数値を他の乱数値に変更する。レジスタ(132)は、この乱数を保持し、保持した乱数を暗号鍵(CRK)として出力する。出力制御部(133)は、第1又は第2の読出要求を受けた場合にレジスタ(132)から出力された暗号鍵をデータバスに送出する。更に、出力制御部は、第1及び第2の読出要求のうちの一方の読出要求を受けた場合に乱数変更信号(CH)を乱数生成部に供給する。
図7は、マイクロコンピュータ100の他の構成を示すブロック図である。尚、図7に示される構成では、暗号鍵生成部13に代えて暗号鍵生成部13Aを採用した点を除く他の構成は図1に示されるものと同一である。よって、以下に暗号鍵生成部13Aの構成を中心に、図7に示す構成におけるマイクロコンピュータ100の内部動作を説明する。
図8は、暗号鍵生成部13Aの内部構成を示すブロック図である。
図8に示すように、暗号鍵生成部13Aは、乱数生成部131A、レジスタ132、出力制御部133A、及びフラグレジスタ134を含む。
乱数生成部131Aは、所定期間毎に乱数値が変化する乱数RNDを生成し、これをレジスタ132に供給する。尚、乱数生成部131Aは、乱数RNDの乱数値が変化するタイミングで、この乱数値が変化したことを表す乱数変化信号VAを出力制御部133Aに供給する。
レジスタ132は、乱数RNDを保持しつつ、当該乱数RNDにて表される乱数値を有する暗号鍵CRKを出力制御部133Aに供給する。
フラグレジスタ134には、上記した所定期間毎に、その所定期間内で暗号鍵読出要求を受けたか否かを表すフラグFGが保持されている。例えば、暗号鍵読出要求を受けた場合には論理レベル1、暗号鍵読出要求を受けていない場合には論理レベル0を有する2値のフラグFGがフラグレジスタ134に保持される。尚、電源投入時には、論理レベル0を有するフラグFGがフラグレジスタ134に保持される。
出力制御部133Aは、セキュアDMAC21からの暗号鍵読出要求RQ2をデータバスBS8を介して受けた場合には、レジスタ132から供給された暗号鍵CRKをデータバスBS8に送出する。更に、出力制御部133Aは、この暗号鍵読出要求RQ2に応じて、フラグレジスタ134に保持されているフラグFGを、暗号鍵読出要求を受けたことを表す論理レベル1に書き換える。
また、出力制御部133Aは、CPU14からの暗号鍵読出要求RQ1をデータバスBS1を介して受けた場合には、先ず、フラグレジスタ134に保持されているフラグFGが論理レベル0であるか、或いは論理レベル1であるのかを判定する。
ここで、フラグFGが論理レベル0であると判定した場合、つまり暗号鍵読出要求を受けていないと判定した場合には、出力制御部133Aは、レジスタ132から供給された暗号鍵CRKをデータバスBS1に送出する。
一方、フラグFGが論理レベル1であると判定した場合、つまり暗号鍵読出要求を既に受けていると判定したら、出力制御部133Aは、暗号鍵CRKに代えて、暗号鍵の読出エラーを表すエラー応答ERRを、データバスBS1に送出する。この際、データバスBS1を介してエラー応答ERRがCPU14に供給される。
更に、出力制御部133Aは、乱数RNDの乱数値が変化したことを表す乱数変化信号VAを受けた場合には、フラグレジスタ134に保持されているフラグFGを論理レベル0の状態に初期化する。
以下に、図7及び図8に示される構成において、セキュアDMAC21による暗号鍵取得の為のデータ転送に引き続き、CPU14による暗号鍵取得の為のデータ転送が実施された場合での動作について、図9〜図11を参照しつつ説明する。
尚、図9は、セキュアDMAC21による暗号鍵取得の為のデータ転送動作を表し、図10は、図9に示すデータ転送の直後に行われる、CPU14による暗号鍵取得の為のデータ転送動作を表す図である。
また、図11は、図9に示すデータ転送の直後に図10に示すデータ転送が行われた場合における、暗号鍵生成部13Aの内部動作を表すタイムチャートである。
尚、図11に示す一例では、暗号鍵生成部13Aの乱数生成部131Aが、先ず、乱数値Q1を示す乱数RNDを所定期間TUに亘りレジスタ132に供給し、当該所定期間TUの経過後に乱数値Q2を示す乱数RNDをレジスタ132に供給するものとする。よって、レジスタ132は、所定期間TUに亘り乱数値Q1を有する暗号鍵CRKを出力制御部133Aに供給し、所定期間TUの経過後に乱数値Q2を有する暗号鍵CRKを出力制御部133Aに供給する。更に、暗号鍵生成部131Aは、乱数RNDにて示される乱数値が変化する時点で、図11に示すように、論理レベル0の状態から論理レベル1の状態に遷移し、論理レベル0の状態に戻る2値の乱数変化信号VAを出力制御部133Aに供給する。
先ず、暗号鍵生成部13Aが、図9の太線矢印に示すようにセキュアDMAC21から送出された暗号鍵読出要求RQ2をデータバスBS8を介して受ける。すると、暗号鍵生成部13Aの出力制御部133Aは、図11に示すように、乱数値Q1を有する暗号鍵CRKをデータバスBS8に送出する。これにより、当該暗号鍵CRKが図9の太線矢印に示すようにデータバスBS8を介してセキュアDMAC21に供給される。更に、出力制御部133Aは、暗号鍵読出要求RQ2に応じて、フラグレジスタ134に保持されているフラグFGを図11に示すように、暗号鍵読出要求を受けたことを表す論理レベル1に書き換える。
その後、暗号鍵生成部13Aが、図10の太線矢印に示すようにCPU14から送出された暗号鍵読出要求RQ1をデータバスBS1を介して受ける。すると、暗号鍵生成部13Aの出力制御部133Aは、図11に示すように、暗号鍵読出要求RQ1を受けた時点でフラグFGが論理レベル1であることから、エラー応答ERRをデータバスBS1に送出する。この際、暗号鍵生成部13Aから送出されたエラー応答ERRは、図10の太線矢印に示すようにデータバスBS1を介してCPU14に供給される。エラー応答ERRを受けたCPU14は、暗号鍵生成部13Aからの暗号鍵の読出に失敗したと判断する。尚、上記したように暗号鍵読出要求RQ1を受けた時点でフラグFGが論理レベル1である場合には、出力制御部133Aは、その時点で暗号鍵の送出は行わない。
このように、暗号鍵生成部13Aは、セキュアDMAC21からの暗号鍵読出要求RQ2に応じて暗号鍵CRKをデータバスBS8に送出する。この際、引き続きCPU14からの暗号鍵読出要求RQ1を受けた場合には、暗号鍵生成部13Aは、この暗号鍵読出要求RQ1に応じて、暗号鍵CRKに代えてエラー応答ERRをデータバスBS1に送出する。
これにより、図9に示すようなセキュアDMAC21からの暗号鍵読出要求RQ2に続き、図10に示すようなCPU14からの暗号鍵読出要求RQ1が行われても、同一値を有する暗号鍵CRKが2回連続して暗号鍵生成部13Aから送出されることはない。よって、暗号鍵CRKがマイクロコンピュータ100の外部へ漏洩される可能性が低くなり、平文データの漏洩を防ぐことが可能となる。
その後、乱数生成部131Aが乱数RNDにて示される乱数値を、図11に示すようにQ1からQ2に変更すると、出力制御部133Aは、フラグレジスタ134に保持されているフラグFGの内容を論理レベル1から論理レベル0に書き換える。
よって、その後、暗号鍵生成部13Aは、CPU14からの暗号鍵読出要求RQ1をデータバスBS1を介して受けると、図11に示すように暗号鍵読出要求RQ1を受けた時点でフラグFGが論理レベル0であることから、乱数値Q2を有する暗号鍵CRKをデータバスBS1に送出する。
この際、CPU14からの暗号鍵読出要求RQ1に応じて暗号鍵生成部13Aが送出した暗号鍵CRKの値(Q2)は、その直前に、セキュアDMAC21からの暗号鍵読出要求RQ2に応じて暗号鍵生成部13Aが送出した暗号鍵CRKの値(Q1)とは異なる。
よって、同一の値を有する暗号鍵CRKが2回連続して暗号鍵生成部13Aから送出されることはないので、暗号鍵CRKがマイクロコンピュータ100の外部へ漏洩される可能性が低くなり、平文データの漏洩を防ぐことが可能となる。
ところで、図9及び図10に示す一例では、暗号鍵生成部13Aは、セキュアDMAC21からの暗号鍵読出要求を受けた直後に、CPU14からの暗号鍵読出要求を受けた場合にエラー応答ERRを行うようにしている。しかしながら、暗号鍵生成部13Aとしては、CPU14から暗号鍵読出要求を受けた直後に、セキュアDMAC21から暗号鍵読出要求を受けた場合にエラー応答ERRを行うようにしても良い。
この際、暗号鍵生成部13Aとしては、以下のような出力制御部133Aを採用する。
すなわち、出力制御部133Aは、CPU14からの暗号鍵読出要求RQ1を受けた場合には、暗号鍵CRKをデータバスBS1に送出する。更に、暗号鍵読出要求RQ1に応じて、出力制御部133Aは、フラグレジスタ134に保持されているフラグFGを、暗号鍵読出要求を受けたことを表す論理レベル1に書き換える。
また、出力制御部133Aは、セキュアDMAC21からの暗号鍵読出要求RQ2を受けた場合には、先ず、フラグレジスタ134に保持されているフラグFGが論理レベル1であるか、或いは論理レベル0であるかを判定する。ここで、フラグFGが論理レベル0であると判定した場合、つまり、暗号鍵読出要求を受けていないと判定した場合、出力制御部133Aは、暗号鍵CRKをデータバスBS8に送出する。
一方、フラグFGが論理レベル1であると判定した場合、つまり暗号鍵読出要求を既に受けていると判定したら、出力制御部133Aは、暗号鍵の読出エラーを表すエラー応答ERRを、データバスBS8に送出する。この際、データバスBS8を介してエラー応答ERRがセキュアDMAC21に供給される。
更に、出力制御部133Aは、乱数生成部131Aから、乱数RNDの乱数値が変化したことを表す乱数変化信号VAが供給された場合には、フラグレジスタ134に保持されているフラグFGを論理レベル0の状態に初期化する。
以下に、CPU14による暗号鍵取得の為のデータ転送の直後に、セキュアDMAC21による暗号鍵取得の為のデータ転送が連続した場合での動作について、図12〜図14を参照しつつ説明する。
尚、図12は、CPU14による暗号鍵取得の為のデータ転送動作を表し、図13は、図12に示すデータ転送の直後に行われるセキュアDMAC21による暗号鍵取得の為のデータ転送動作を表す図である。
また、図14は、図12に示すデータ転送の直後に図13に示すデータ転送が行われた場合における、暗号鍵生成部13Aの内部動作を表すタイムチャートである。
先ず、暗号鍵生成部13Aが、図12の太線矢印に示すようにCPU14から送出された暗号鍵読出要求RQ1をデータバスBS1を介して受ける。すると、暗号鍵生成部13Aの出力制御部133Aは、図14に示すように、乱数値Q1を有する暗号鍵CRKをデータバスBS1に送出する。これにより、当該暗号鍵CRKが図12の太線矢印に示すようにデータバスBS1を介してCPU14に供給される。更に、出力制御部133Aは、暗号鍵読出要求RQ1に応じて、フラグレジスタ134に保持されているフラグFGを図14に示すように、暗号鍵読出要求を受けたことを表す論理レベル1に書き換える。
その後、暗号鍵生成部13Aが、図13の太線矢印に示すようにセキュアDMAC21から送出された暗号鍵読出要求RQ2をデータバスBS8を介して受ける。すると、暗号鍵生成部13Aの出力制御部133Aは、図14に示すように、暗号鍵読出要求RQ2を受けた時点でフラグFGが論理レベル1であることから、暗号鍵CRKに代えてエラー応答ERRをデータバスBS8に送出する。この際、暗号鍵生成部13Aから送出されたエラー応答ERRは、図13の太線矢印に示すようにデータバスBS8を介してセキュアDMAC21に供給される。このエラー応答ERRを受けたセキュアDMAC21は、暗号鍵生成部13Aからの暗号鍵の読出に失敗したと判断する。尚、上記したように暗号鍵読出要求RQ2を受けた時点でフラグFGが論理レベル1である場合には、出力制御部133Aは、その時点で暗号鍵の送出は行わない。
このように、暗号鍵生成部13Aは、CPU14からの暗号鍵読出要求に応じて暗号鍵CRKを送出した直後に、セキュアDMAC21からの暗号鍵読出要求を受けた場合には、暗号鍵CRKの送出は行わず、エラー応答ERRを送出する。
これにより、図12に示すようなCPU14からの暗号鍵読出要求RQ1に続き、図13に示すようなセキュアDMAC21からの暗号鍵読出要求RQ2が行われても、同一値を有する暗号鍵CRKが2回連続して暗号鍵生成部13Aから送出されることはない。よって、暗号鍵CRKがマイクロコンピュータ100の外部へ漏洩される可能性が低くなり、平文データの漏洩を防ぐことが可能となる。
その後、乱数生成部131Aが乱数RNDにて示される乱数値を、図14に示すようにQ1からQ2に変更すると、出力制御部133Aは、フラグレジスタ134に保持されているフラグFGの内容を論理レベル1から論理レベル0に書き換える。
よって、引き続き、暗号鍵生成部13Aは、セキュアDMAC21からの暗号鍵読出要求RQ2をデータバスBS8を介して受けると、図14に示すように暗号鍵読出要求RQ2を受けた時点でフラグFGが論理レベル0であることから、乱数値Q2を有する暗号鍵CRKをデータバスBS8に送出する。
この際、セキュアDMAC21からの暗号鍵読出要求RQ2に応じて暗号鍵生成部13Aが送出した暗号鍵CRKの値(Q2)は、その直前に、CPU14からの暗号鍵読出要求RQ1に応じて暗号鍵生成部13Aが送出した暗号鍵CRKの値(Q1)とは異なる。
よって、同一の値を有する暗号鍵CRKが2回連続して暗号鍵生成部13Aから送出されることはないので、暗号鍵CRKがマイクロコンピュータ100の外部へ漏洩される可能性が低くなり、平文データの漏洩を防ぐことが可能となる。
以上のように、図7に示すマイクロコンピュータ100では、図2に示される暗号鍵生成部13に代えて、図8に示される暗号鍵生成部13Aを採用している。当該暗号鍵生成部(13A)では、所定期間(TU)毎に、この所定期間内において第1の読出要求(RQ1又はRQ2)を受けた後に第2の読出要求(RQ2又はRQ1)を受けた場合には、この第2の読出要求に応じて暗号鍵(CRK)に代えてエラー応答(ERR)をデータバス(BS1、BS8)に送出する。
更に、マイクロコンピュータ100では、図8に示す暗号鍵生成部13Aとして、以下の乱数生成部と、第1及び第2のレジスタと、出力制御部とを含むものを採用している。
つまり、乱数生成部(131A)は、所定期間(TU)毎に乱数値が変化する乱数(RND)を生成する。第1のレジスタ(132)は、この乱数を保持し、保持した乱数を暗号鍵(CRK)として出力する。第2のレジスタ(134)は、読出要求(RQ1又はRQ2)を受けたか否かを表すフラグ(FG)が保持される。
出力制御部(133A)は、第1の読出要求又は前記第2の読出要求を受けた場合に第1のレジスタから出力された暗号鍵をデータバス(BS1、BS8)に送出すると共に、所定期間(TU)毎に第2のレジスタに保持されているフラグを読出要求を受けていないことを表す状態(例えば論理レベル0)に初期化する。ここで、出力制御部は、第1の読出要求を受けた場合には、第2のレジスタに保持されているフラグを読出要求を受けたことを表す状態(例えば論理レベル1)に書き換える。また、出力制御部は、第2の読出要求を受けた場合には、第2のレジスタに保持されているフラグが読出要求を受けたことを表す場合に、暗号鍵に代えてエラー応答(ERR)をデータバスに送出する。
図15は、図7に示すマイクロコンピュータ100の変形例を示すブロック図である。尚、図15に示される構成では、リセット制御部23を追加した点を除く他の構成は図7に示すものと同一である。
図15において、リセット制御部23は、データバスBS1又はBS8を介して上記したエラー応答ERRを受けた場合に、リセット信号RSを暗号鍵生成部13A、CPU14、及びキーストレージ22に供給する。暗号鍵生成部13A、CPU14、及びキーストレージ22は、リセット信号RSに応じて自身の状態をリセットする。
以下に、図15に示す構成において、セキュアDMAC21による暗号鍵取得の為のデータ転送に引き続き、CPU14による暗号鍵取得の為のデータ転送が実施された場合での動作について、図16、図17、並びに上記した図11を参照しつつ説明する。
尚、図16は、セキュアDMAC21による暗号鍵取得の為のデータ転送動作を表し、図17は、図16に示すデータ転送の直後に連続して行われる、CPU14による暗号鍵取得の為のデータ転送動作を表す図である。
先ず、暗号鍵生成部13Aが、図16の太線矢印に示すようにセキュアDMAC21から送出された暗号鍵読出要求RQ2をデータバスBS8を介して受ける。すると、暗号鍵生成部13Aの出力制御部133Aは、乱数値Q1を有する暗号鍵CRKをデータバスBS8に送出する。これにより、当該暗号鍵CRKが図16の太線矢印に示すようにデータバスBS8を介してセキュアDMAC21に供給される。更に、出力制御部133Aは、暗号鍵読出要求RQ2に応じて、フラグレジスタ134に保持されているフラグFGを図11に示すように、暗号鍵読出要求を受けたことを表す論理レベル1に書き換える。
その後、暗号鍵生成部13Aが、図17の太線矢印に示すようにCPU14から送出された暗号鍵読出要求RQ1をデータバスBS1を介して受ける。すると、暗号鍵生成部13Aの出力制御部133Aは、図11に示すように、暗号鍵読出要求RQ1を受けた時点でフラグFGが論理レベル1であることから、エラー応答ERRをデータバスBS1に送出する。この際、暗号鍵生成部13Aから送出されたエラー応答ERRは、図17の太線矢印に示すようにデータバスBS1を介してリセット制御部23に供給される。
エラー応答ERRを受けたリセット制御部23は、リセット信号RSを暗号鍵生成部13A、CPU14、及びキーストレージ22に供給する。暗号鍵生成部13A、CPU14、及びキーストレージ22は、リセット信号RSに応じて自身の状態をリセットする。
このように、暗号鍵生成部13Aは、セキュアDMAC21からの暗号鍵読出要求に応じて暗号鍵CRKを送出した直後に、CPU14からの暗号鍵読出要求を受けた場合には、暗号鍵CRKの送出は行わず、エラー応答ERRを送出する。この際、エラー応答ERRを受けたリセット制御部23は、暗号鍵生成部13A、CPU14、及びキーストレージ22各々の状態をリセットする。
これにより、図16に示すようなセキュアDMAC21からの暗号鍵読出要求RQ2に続き、図17に示すようなCPU14からの暗号鍵読出要求RQ1が行われても、同一値を有する暗号鍵CRKが2回連続して暗号鍵生成部13Aから送出されることはない。よって、暗号鍵CRKがマイクロコンピュータ100の外部へ漏洩される可能性が低くなり、平文データの漏洩を防ぐことが可能となる。
尚、図16及び図17に示す一例では、暗号鍵生成部13Aは、セキュアDMAC21からの暗号鍵読出要求を受けた直後に、CPU14からの暗号鍵読出要求を受けた場合に、リセット制御部23にエラー応答ERRを行うようにしている。しかしながら、暗号鍵生成部13Aとしては、CPU14から暗号鍵読出要求を受けた直後に、セキュアDMAC21から暗号鍵読出要求を受けた場合に、リセット制御部23に対してエラー応答ERRを行うようにしても良い。
この際、暗号鍵生成部13Aとしては、以下の動作を行う出力制御部133Aを採用する。
すなわち、出力制御部133Aは、CPU14からの暗号鍵読出要求RQ1を受けた場合には、暗号鍵CRKをデータバスBS1に送出する。更に、暗号鍵読出要求RQ1に応じて、出力制御部133Aは、フラグレジスタ134に保持されているフラグFGを、暗号鍵読出要求を受けたことを表す論理レベル1に書き換える。
また、出力制御部133Aは、セキュアDMAC21からの暗号鍵読出要求RQ2を受けた場合には、先ず、フラグレジスタ134に保持されているフラグFGが論理レベル0であるか、或いは論理レベル1であるのかを判定する。ここで、フラグFGが論理レベル0であると判定した場合、つまり暗号鍵読出要求を受けていないと判定した場合に、出力制御部133Aは、暗号鍵CRKをデータバスBS8に送出する。
一方、フラグFGが論理レベル1であると判定した場合、つまり暗号鍵読出要求を既に受けていると判定したら、出力制御部133Aは、暗号鍵CRKに代えて、暗号鍵の読出エラーを表すエラー応答ERRをデータバスBS8に送出する。この際、データバスBS8を介してエラー応答ERRがリセット制御部23に供給される。
以下に、図15に示す構成において、CPU14による暗号鍵取得の為のデータ転送に引き続き、セキュアDMAC21による暗号鍵取得の為のデータ転送が実施された場合での動作について、図18、図19、並びに上記した図14を参照しつつ説明する。
尚、図18は、CPU14による暗号鍵取得の為のデータ転送動作を表し、図19は、図18に示すデータ転送の直後に行われる、セキュアDMAC21による暗号鍵取得の為のデータ転送動作を表す図である。
先ず、暗号鍵生成部13Aが、図18の太線矢印に示すようにCPU14から送出された暗号鍵読出要求RQ1をデータバスBS1を介して受ける。すると、暗号鍵生成部13Aの出力制御部133Aは、乱数値Q1を有する暗号鍵CRKをデータバスBS1に送出する。これにより、当該暗号鍵CRKが図18の太線矢印に示すようにデータバスBS1を介してCPU14に供給される。更に、出力制御部133Aは、この暗号鍵読出要求RQ1に応じて、フラグレジスタ134に保持されているフラグFGを図14に示すように、暗号鍵読出要求を受けたことを表す論理レベル1に書き換える。
その後、暗号鍵生成部13Aが、図19の太線矢印に示すようにセキュアDMAC21から送出された暗号鍵読出要求RQ2をデータバスBS8を介して受ける。すると、暗号鍵生成部13Aの出力制御部133Aは、図14に示すように、この暗号鍵読出要求RQ2を受けた時点でフラグFGが論理レベル1であることから、エラー応答ERRをデータバスBS8に送出する。この際、暗号鍵生成部13Aから送出されたエラー応答ERRは、図19の太線矢印に示すようにデータバスBS8を介してリセット制御部23に供給される。
エラー応答ERRを受けたリセット制御部23は、リセット信号RSを暗号鍵生成部13A、CPU14、及びキーストレージ22に供給する。暗号鍵生成部13A、CPU14、及びキーストレージ22は、リセット信号RSに応じて自身の状態をリセットする。
このように、暗号鍵生成部13Aは、CPU14からの暗号鍵読出要求に応じて暗号鍵CRKを送出した直後に、セキュアDMAC21からの暗号鍵読出要求を受けた場合には、暗号鍵CRKの送出は行わず、エラー応答ERRを送出する。この際、エラー応答ERRを受けたリセット制御部23は、暗号鍵生成部13A、CPU14、及びキーストレージ22各々の状態をリセットする。
これにより、図18に示すようなCPU14からの暗号鍵読出要求RQ1に続き、図19に示すようなセキュアDMAC21からの暗号鍵読出要求RQ2が行われても、同一値を有する暗号鍵CRKが2回連続して暗号鍵生成部13Aから送出されることはない。よって、暗号鍵CRKがマイクロコンピュータ100の外部へ漏洩される可能性が低くなり、平文データの漏洩を防ぐことが可能となる。
12 暗号処理部
13、13A 暗号鍵生成部
14 CPU
21 セキュアDMAC
131 乱数生成部
133 出力制御部

Claims (9)

  1. データバスを介して受けた暗号鍵を用いて平文データを暗号化する暗号処理部と、
    前記暗号鍵を生成し、生成した前記暗号鍵を第1の読出要求又は第2の読出要求に応じて前記データバスに送出する暗号鍵生成部と、
    前記第1の読出要求を前記暗号鍵生成部に供給し、前記暗号鍵生成部から送出された前記暗号鍵を前記データバスを介して前記暗号処理部に転送する第1の転送制御部と、
    前記第2の読出要求を前記暗号鍵生成部に供給し、前記暗号鍵生成部から送出された前記暗号鍵を前記データバスを介して前記暗号処理部に転送する第2の転送制御部と、を含み、
    前記暗号鍵生成部は、前記第1の読出要求及び前記第2の読出要求のうちの一方の読出要求を受けた場合に、前記暗号鍵の値を他の値に変更することを特徴とする半導体装置。
  2. 前記暗号鍵生成部は、
    所定期間毎に乱数値が変化する乱数を生成し、乱数変更信号に応答して前記乱数値を他の乱数値に変更する乱数生成部と、
    前記乱数を保持し、保持した前記乱数を暗号鍵として出力するレジスタと、
    前記第1の読出要求又は前記第2の読出要求を受けた場合に前記レジスタから出力された前記暗号鍵を前記データバスに送出すると共に、前記第1の読出要求及び前記第2の読出要求のうちの一方の読出要求を受けた場合に前記乱数変更信号を前記乱数生成部に供給する出力制御部と、を含むことを特徴とする請求項1に記載の半導体装置。
  3. 前記第1の転送制御部はCPUであり、前記第2の転送制御部はDMAC(direct memory access controller)であることを特徴とする請求項1又は2に記載の半導体装置。
  4. データバスを介して受けた暗号鍵を用いて平文データを暗号化する暗号処理部と、
    前記暗号鍵を生成し、生成した前記暗号鍵を第1の読出要求又は第2の読出要求に応じて前記データバスに送出する暗号鍵生成部と、
    前記第1の読出要求を前記暗号鍵生成部に供給し、前記暗号鍵生成部から送出された前記暗号鍵を前記データバスを介して前記暗号処理部に転送する第1の転送制御部と、
    前記第2の読出要求を前記暗号鍵生成部に供給し、前記暗号鍵生成部から送出された前記暗号鍵を前記データバスを介して前記暗号処理部に転送する第2の転送制御部と、を含み、
    前記暗号鍵生成部は、所定期間毎に、前記所定期間内において前記第1の読出要求を受けた後に前記第2の読出要求を受けた場合には、前記第2の読出要求に応じて前記暗号鍵に代えてエラー応答を前記データバスに送出することを特徴とする半導体装置。
  5. 前記暗号鍵生成部は、
    前記所定期間毎に乱数値が変化する乱数を生成する乱数生成部と、
    前記乱数を保持し、保持した前記乱数を暗号鍵として出力する第1のレジスタと、
    前記読出要求を受けたか否かを表すフラグが保持される第2のレジスタと、
    前記第1の読出要求又は前記第2の読出要求を受けた場合に前記第1のレジスタから出力された前記暗号鍵を前記データバスに送出すると共に、前記所定期間毎に前記第2のレジスタに保持されている前記フラグを前記読出要求を受けていないことを表す状態に初期化する出力制御部と、を含み、
    前記出力制御部は、
    前記第1の読出要求を受けた場合には、前記第2のレジスタに保持されている前記フラグを前記読出要求を受けたことを表す状態に書き換え、
    前記第2の読出要求を受けた場合には、前記第2のレジスタに保持されている前記フラグが前記読出要求を受けたことを表す場合に、前記暗号鍵に代えて前記エラー応答を前記データバスに送出することを特徴とする請求項4に記載の半導体装置。
  6. 前記データバスに送出された前記暗号鍵を保持する鍵保持部と、
    前記データバスを介して前記エラー応答を受けたときに、前記鍵保持部、前記第1の転送制御部及び前記第2の転送制御部をリセットするリセット制御部と、を含むことを特徴とする請求項4又は5に記載の半導体装置。
  7. 前記第1の転送制御部及び前記第2の転送制御部のうちの一方はCPUであり、他方はDMAC(direct memory access controller)であることを特徴とする請求項4〜6のいずれか1に記載の半導体装置。
  8. データバスを介して受けた暗号鍵を用いて平文データを暗号化する際の前記暗号鍵の制御方法であって、
    前記暗号鍵を生成し、生成した前記暗号鍵を第1の読出要求又は第2の読出要求に応じて前記データバスに送出すると共に、前記第1の読出要求及び前記第2の読出要求のうちの一方の読出要求を受けたときに前記暗号鍵の値を他の値に変更することを特徴とする暗号鍵の制御方法。
  9. データバスを介して受けた暗号鍵を用いて平文データを暗号化する際の前記暗号鍵の制御方法であって、
    前記暗号鍵を生成し、生成した前記暗号鍵を第1の読出要求又は第2の読出要求に応じて前記データバスに送出し、
    所定期間毎に、前記所定期間内において前記第1の読出要求を受けた後に前記第2の読出要求を受けた場合には、前記第2の読出要求に応じて前記暗号鍵に代えてエラー応答を前記データバスに送出することを特徴とする暗号鍵の制御方法。

JP2017252235A 2017-12-27 2017-12-27 半導体装置及び暗号鍵の制御方法 Active JP7032926B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2017252235A JP7032926B2 (ja) 2017-12-27 2017-12-27 半導体装置及び暗号鍵の制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017252235A JP7032926B2 (ja) 2017-12-27 2017-12-27 半導体装置及び暗号鍵の制御方法

Publications (2)

Publication Number Publication Date
JP2019118064A true JP2019118064A (ja) 2019-07-18
JP7032926B2 JP7032926B2 (ja) 2022-03-09

Family

ID=67304688

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017252235A Active JP7032926B2 (ja) 2017-12-27 2017-12-27 半導体装置及び暗号鍵の制御方法

Country Status (1)

Country Link
JP (1) JP7032926B2 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001508893A (ja) * 1996-12-12 2001-07-03 インテル・コーポレーション 暗号によって保護されたページング・システム
JP2002328845A (ja) * 2001-05-07 2002-11-15 Fujitsu Ltd 半導体集積回路及びicカードのセキュリティー保護方法
JP2007281994A (ja) * 2006-04-10 2007-10-25 Renesas Technology Corp 半導体集積回路
JP2011087249A (ja) * 2009-10-19 2011-04-28 Ricoh Co Ltd 通信装置及び通信制御方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001508893A (ja) * 1996-12-12 2001-07-03 インテル・コーポレーション 暗号によって保護されたページング・システム
JP2002328845A (ja) * 2001-05-07 2002-11-15 Fujitsu Ltd 半導体集積回路及びicカードのセキュリティー保護方法
JP2007281994A (ja) * 2006-04-10 2007-10-25 Renesas Technology Corp 半導体集積回路
JP2011087249A (ja) * 2009-10-19 2011-04-28 Ricoh Co Ltd 通信装置及び通信制御方法

Also Published As

Publication number Publication date
JP7032926B2 (ja) 2022-03-09

Similar Documents

Publication Publication Date Title
TWI822783B (zh) 包括具有改善記憶體使用效率的安全處理器的系統晶片與記憶體系統以及操作系統晶片的方法
JP4551802B2 (ja) プロセッサ、メモリ、コンピュータシステムおよびデータ転送方法
KR101546204B1 (ko) 호스트 디바이스, 반도체 메모리 디바이스, 및 인증 방법
EP3518128B1 (en) Enabling a software application to be executed on a hardware device
JP2021505995A (ja) アドレススクランブルのための記憶機器及び方法
US11387980B2 (en) Hardware multiple cipher engine
JP2009163284A (ja) プロセッサ装置
CN104902138A (zh) 加密/解密系统及其控制方法
CN114266055B (zh) 一种多核固件安全存储方法及系统
JP2007173999A (ja) 認証システム及び認証対象装置
CN113890728A (zh) 基于fpga加密卡的密钥处理方法、系统、设备及介质
US20120008772A1 (en) Memory controller, memory control device memory device, memory information protection system, control method for memory control device, and control method for memory device
CN111814212B (zh) 总线数据的保护方法、装置、存储介质及芯片
JP7057675B2 (ja) 半導体装置及び暗号鍵の生成方法
JP7032926B2 (ja) 半導体装置及び暗号鍵の制御方法
JP6203532B2 (ja) 半導体記憶装置及びデータ処理システム
KR20220000537A (ko) 차량 네트워크 기반의 데이터 송수신 시스템 및 그 방법
JP6636006B2 (ja) 暗号化/復号化システム及びその制御方法、並びにプログラム
US20230224284A1 (en) Method of controlling security key of vehicle
JP7170588B2 (ja) データ処理方法及びデータ処理システム
US20070053515A1 (en) Semiconductor device using a read-only memory (ROM) scrambling/descrambling method, and a method of operating the same
TWI721765B (zh) 動態加擾電路及其相關加擾方法
US11244066B2 (en) System on chip
JP2017108293A (ja) 半導体集積回路装置およびデータ処理装置
JP6987112B2 (ja) 集積回路

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201029

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210610

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210615

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210816

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20211012

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220106

C60 Trial request (containing other claim documents, opposition documents)

Free format text: JAPANESE INTERMEDIATE CODE: C60

Effective date: 20220106

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20220117

C21 Notice of transfer of a case for reconsideration by examiners before appeal proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C21

Effective date: 20220118

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220201

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220225

R150 Certificate of patent or registration of utility model

Ref document number: 7032926

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150