(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-04-12
(45)【発行日】2022-04-20
(54)【発明の名称】半導体装置及び暗号鍵の生成方法
(51)【国際特許分類】
H04L 9/10 20060101AFI20220413BHJP
H04L 9/08 20060101ALI20220413BHJP
【FI】
H04L9/10 A
H04L9/08 A
(21)【出願番号】P 2018001228
(22)【出願日】2018-01-09
【審査請求日】2020-11-30
(73)【特許権者】
【識別番号】308033711
【氏名又は名称】ラピスセミコンダクタ株式会社
(74)【代理人】
【識別番号】100079119
【氏名又は名称】藤村 元彦
(74)【代理人】
【識別番号】100147728
【氏名又は名称】高野 信司
(72)【発明者】
【氏名】熊木 大輔
(72)【発明者】
【氏名】中村 俊彦
【審査官】金沢 史明
(56)【参考文献】
【文献】特開平09-205419(JP,A)
【文献】特開2000-023137(JP,A)
【文献】特開2005-303370(JP,A)
【文献】特開2000-049770(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/00- 9/38
G09C 1/00
G06F 21/60-21/62
(57)【特許請求の範囲】
【請求項1】
暗号鍵を用いてデータを暗号化する半導体装置であって、
乱数を生成する乱数生成部と、
時間経過につれて値が変化するスクランブルキーを生成するスクランブルキー生成部と、
前記乱数を
前記スクランブルキーを用いてスクランブルしたものをスクランブル暗号鍵として保持し、読出要求に応じて、前記スクランブル暗号鍵を前記スクランブルキーを用いてデスクランブル
したものを暗号鍵
として出力する鍵保持部と、を有し、
前記鍵保持部は、
前記スクランブル暗号鍵を
前記スクランブルキーでスクランブルしたものを新たなスクランブル暗号鍵として保持する
処理を所定期間毎に繰り返し行うことを特徴とする半導体装置。
【請求項2】
前記鍵保持部は
、
メモリと、
前記乱数を前記スクランブルキーでスクランブルしたものを前記スクランブル暗号鍵として前記メモリに保持させると共に、前記所定期間毎に、前記スクランブルキー生成部が生成した前記スクランブルキー、及び前記メモリに保持されている前記スクランブル暗号鍵を取り込み、取り込んだ前記スクランブル暗号鍵を、取り込んだ前記スクランブルキーでスクランブルしたものを新たなスクランブル暗号鍵として前記メモリに保持させるスクランブル処理部と、を含むことを特徴とする請求項1に記載の半導体装置。
【請求項3】
前記乱数生成部は、所定の一定周期で乱数値が変化する前記乱数を生成し、
前記所定期間は前記一定周期よりも短いことを特徴とする請求項1又は2に記載の半導体装置。
【請求項4】
プログラムが格納されているROMと、
前記プログラムに従った制御を行うCPUと、
RAMと、
暗号鍵に基づきデータを暗号化する暗号処理部と、
前記鍵保持部に対して書込及び読出制御を行うDMAC(direct memory access controller)と、を含むことを特徴とする請求項1~3のいずれか1に記載の半導体装置。
【請求項5】
前記ROM、前記CPU、前記RAM、及び前記暗号処理部が接続されている第1のデータバスと、
前記乱数生成部、前記鍵保持部、前記DMAC及び前記暗号処理部が接続されている第2のデータバスと、を含み、
前記RAMには平文データ片が記憶されており、
前記CPUは、前記RAMに記憶されている前記平文データ片を、前記第1のデータバスを介して前記暗号処理部に転送し、
前記DMACは、前記読出要求によって前記鍵保持部から読み出された前記暗号鍵を、前記第2のデータバスを介して前記暗号処理部に転送し、
前記暗号処理部は、前記第1のデータバスを介して受けた前記平文データ片を、前記第2のデータバスを介して受けた前記暗号鍵で暗号化した暗号化データ片を生成する前記第1のデータバスに送出することを特徴とする請求項4に記載の半導体装置。
【請求項6】
第1のデータバスを含み、
イネーブル又はディスエーブルを表すバスマスタイネーブル信号を受け、
前記バスマスタイネーブル信号が前記イネーブルを表す場合には前記乱数生成部、前記鍵保持部、前記DMAC及び前記暗号処理部が前記第1のデータバスと接続され、前記バ
スマスタイネーブル信号が前記ディスエーブルを表す場合には前記ROM、前記CPU、前記RAM、及び前記暗号処理部が前記第1のデータバスと接続されることを特徴とする請求項4に記載の半導体装置。
【請求項7】
前記RAMには平文データ片が記憶されており、
前記バスマスタイネーブル信号を前記ディスエーブルを表す状態に設定した状態で、前記CPUが、前記RAMに記憶されている前記平文データ片を前記第1のデータバスを介して前記暗号処理部に転送し、
前記バスマスタイネーブル信号を前記イネーブルを表す状態に設定した状態で、前記DMACが、前記読出要求によって前記鍵保持部から読み出した前記暗号鍵を、前記第1のデータバスを介して前記暗号処理部に転送し、
前記暗号処理部は、前記第1のデータバスを介して受けた前記平文データ片を、前記第1のデータバスを介して受けた前記暗号鍵で暗号化した暗号化データ片を生成することを特徴とする請求項6に記載の半導体装置。
【請求項8】
データの暗号化に用いる暗号鍵の生成方法であって、
時間経過につれて値が変化するスクランブルキーを生成し、
乱数を
前記スクランブルキーでスクランブルしたものをスクランブル暗号鍵としてメモリに保持させると共に、前記スクランブル暗号鍵を
前記スクランブルキーでスクランブルしたものを新たなスクランブル暗号鍵として前記メモリに保持させ
る処理を所定期間毎に繰り返し行いつつ、
読出要求に応じて、前記メモリに保持されている前記スクランブル暗号鍵を前記スクランブルキーを用いてデスクランブルすることによ
り暗号鍵を得ることを特徴とする暗号鍵の生成方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、半導体装置、特にデータを暗号化するための暗号鍵を記憶する記憶部を含む半導体装置、及び暗号鍵の生成方法に関する。
【背景技術】
【0002】
現在、暗号鍵を用いてデータを暗号化し、暗号化された暗号化データに対してこの暗号鍵を用いた復号を施すことにより元のデータを復元する機能を備えたマイクロコンピュータを含む半導体装置が知られている(例えば、特許文献1参照)。
【0003】
当該半導体装置には、暗号鍵を格納するメモリとして、EEPROM(Electrically Erasable Programmable Read-Only Memory)が設けられている。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
ところで、暗号鍵は第三者に漏洩してはならないものであるが、外部からの物理攻撃或いは物理解析等の不正なアクセスにより、メモリに格納されている暗号鍵が不正に読み出されてしまう虞があった。この際、不正に取得した暗号鍵により上記した暗号化データが復号されてしまい、データの漏洩を招くことになる。
【0006】
そこで、本発明は、不正なアクセスによるデータの漏洩を防ぐことが可能な半導体装置、及び暗号鍵の生成方法を提供することを目的とする。
【課題を解決するための手段】
【0007】
本発明に係る半導体装置は、暗号鍵を用いてデータを暗号化する半導体装置であって、乱数を生成する乱数生成部と、時間経過につれて値が変化するスクランブルキーを生成するスクランブルキー生成部と、前記乱数を前記スクランブルキーを用いてスクランブルしたものをスクランブル暗号鍵として保持し、読出要求に応じて、前記スクランブル暗号鍵を前記スクランブルキーを用いてデスクランブルしたものを暗号鍵として出力する鍵保持部と、を有し、前記鍵保持部は、前記スクランブル暗号鍵を前記スクランブルキーでスクランブルしたものを新たなスクランブル暗号鍵として保持する処理を所定期間毎に繰り返し行う。
【0008】
また、本発明に係る暗号鍵の生成方法は、データの暗号化に用いる暗号鍵の生成方法であって、時間経過につれて値が変化するスクランブルキーを生成し、乱数を前記スクランブルキーでスクランブルしたものをスクランブル暗号鍵としてメモリに保持させると共に、前記スクランブル暗号鍵を前記スクランブルキーでスクランブルしたものを新たなスクランブル暗号鍵として前記メモリに保持させる処理を所定期間毎に繰り返し行いつつ、読出要求に応じて、前記メモリに保持されている前記スクランブル暗号鍵を前記スクランブルキーを用いてデスクランブルすることにより暗号鍵を得る。
【発明の効果】
【0009】
本発明では、鍵保持部が、乱数をスクランブルしたものをスクランブル暗号鍵として保持し、この保持したスクランブル暗号鍵自体を所定期間毎にスクランブルしたものを、新たなスクランブル暗号鍵として保持する。
【0010】
これにより、鍵保持部に保持されたスクランブル暗号鍵は、それ自体が所定期間毎に繰り返しスクランブルされるので、時間経過につれてその値が変化する。よって、たとえ外部からの不正なアクセスによって、鍵保持部に保持されているスクランブル暗号鍵が漏洩しても、このスクランブル暗号鍵からでは、暗号鍵自体を特定することが困難となる。したがって、不正なアクセスが行われても平文データの漏洩を防ぐことが可能となる。
【図面の簡単な説明】
【0011】
【
図1】本発明に係る半導体装置の一例としてのマイクロコンピュータ100の構成を示すブロック図である。
【
図2】データを暗号化する場合にマイクロコンピュータ100内で行われる第1段階でのデータ転送の状態を表すブロック図である。
【
図3】データを暗号化する場合にマイクロコンピュータ100内で行われる第2段階でのデータ転送の状態を表すブロック図である。
【
図4】データを暗号化する場合にマイクロコンピュータ100内で行われる第3段階でのデータ転送の状態を表すブロック図である。
【
図5】データを暗号化する場合にマイクロコンピュータ100内で行われる第4段階でのデータ転送の状態を表すブロック図である。
【
図6】データを暗号化する場合にマイクロコンピュータ100内で行われる第5段階でのデータ転送の状態を表すブロック図である。
【
図7】キーストレージ22の内部構成の一例を示すブロック図である。
【
図8】キーストレージ22内で行われる暗号鍵の保持動作の手順を表すフローチャートである。
【
図9】キーストレージ22内で行われる暗号鍵の読出動作の手順を表すフローチャートである。
【
図10】マイクロコンピュータ100の内部構成の変形例を示すブロック図である。
【
図11】キーストレージ22の内部構成の他の一例を示すブロック図である。
【
図12】データを暗号化する場合に
図10に示すマイクロコンピュータ100内で行われる第1段階でのデータ転送の状態を表すブロック図である。
【
図13】データを暗号化する場合に
図10に示すマイクロコンピュータ100内で行われる第2段階でのデータ転送の状態を表すブロック図である。
【
図14】データを暗号化する場合に
図10に示すマイクロコンピュータ100内で行われる第3段階でのデータ転送の状態を表すブロック図である。
【
図15】データを暗号化する場合に
図10に示すマイクロコンピュータ100内で行われる第4段階でのデータ転送の状態を表すブロック図である。
【
図16】データを暗号化する場合に
図10に示すマイクロコンピュータ100内で行われる第5段階でのデータ転送の状態を表すブロック図である。
【
図17】データを暗号化する場合に
図10に示すマイクロコンピュータ100内で行われる第6段階でのデータ転送の状態を表すブロック図である。
【発明を実施するための形態】
【0012】
図1は、本発明に係る半導体装置に含まれるマイクロコンピュータ100の構成を示すブロック図である。
【0013】
マイクロコンピュータ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を有する。
【0014】
更に、マイクロコンピュータ100は、2系統のデータバスBS1及びBS8を含む。マイクロコンピュータ100は、外部接続された機器とのデータ通信が可能であり、当該データバスBS1を介して各種データの送信又は受信を行う。
【0015】
データバスBS1には、暗号処理部12、乱数生成部13、CPU14、RAM15、ROM制御部16、ROM17、セキュアRAM19、及びキーストレージ22が接続されている。
【0016】
データバスBS8は、データバスBS1には接続されておらず、且つマイクロコンピュータ100の外部からのアクセス不可な独立したバスである。データバスBS8は、秘匿性を要求される乱数生成部13、セキュアRAM19、セキュアROM20、セキュアDMAC21及びキーストレージ22、並びに暗号処理部12に接続されている。
【0017】
暗号処理部12は、データバスBS1を介して受けた暗号化前の平文データ片を、暗号鍵を用いて暗号化することにより暗号化データ片を得て、これをデータバスBS1に送出する。また、暗号処理部12は、データバスBS1を介して受けた暗号化データ片を、この暗号鍵を用いて復号することにより、暗号化前の平文データ片を復元する。尚、暗号処理部12は、このような暗号化又は復号化処理を行うにあたり、その実行前に、キーストレージ22から暗号鍵を取得しておく。
【0018】
乱数生成部13は、所定の一定周期で乱数値が変化する乱数を生成し、これをデータバスBS8に送出する。
【0019】
CPU14は、このマイクロコンピュータ100の中央演算処理装置であり、ROM17に格納されているプログラムに従った各種の演算、或いはデータの転送を行う。
【0020】
RAM15は、データ書き込みが可能な記憶素子であり、CPU14によってデータの書込又は読出が行われる。
【0021】
ROM制御部16は、ROM17に対して、データの書き込み、又はデータが正しく書き込まれたか否かを確認するベリファイ、或いは書き込まれたデータの消去等を行う。また、ROM制御部16は、セキュアDMAC21に対して書き込み要求を行う。
【0022】
ROM17には、CPU14が実行するプログラムを表すプログラムデータが書き込まれている。
【0023】
セキュアRAM19は、セキュアDMAC21からのデータ書込アクセスに応じて、データバスBS8を介して受けたデータを記憶する。また、セキュアRAM19は、セキュアDMAC21からのデータ読出アクセスに応じて、自身に記憶されているデータを読み出し、これをデータバスBS8に送出する。また、セキュアRAM19は、CPU14からのデータ書込アクセスに応じて、データバスBS1を介して受けたデータを記憶する。尚、セキュアRAM19は、CPU14からのデータ読出アクセスは受け付けない。
【0024】
セキュアROM20は、セキュアDMAC21からのデータ読出アクセスに応じて、自身に格納されているデータを読み出し、これをデータバスBS8に送出する。また、セキュアROM20は、ROM制御部16がセキュアDMAC21へ書き込み要求を行った際に、セキュアDMAC21がデータバスBS8を介して受けたデータを書き込む。
【0025】
セキュアDMAC21は、データバスBS8を介して、暗号処理部12、乱数生成部13、セキュアRAM19、セキュアROM20、セキュアDMAC21、及びキーストレージ22間のデータ転送を行う。
【0026】
キーストレージ22は、乱数生成部13で生成された乱数をスクランブルしたスクランブル暗号鍵を生成し、これを保持する。また、キーストレージ22は、暗号鍵の読出要求に応じて、保持されているスクランブル暗号鍵を読み出し、このスクランブル暗号鍵に施されているスクランブルを解除したものを暗号鍵としてデータバスBS8に送出する。
【0027】
上記した構成により、マイクロコンピュータ100は、ROM17に格納されているプログラムに従って、上記した暗号鍵を用いた平文データの暗号化及び復号化処理を含む各種のデータ処理を行う。
【0028】
以下に、RAM15に記憶されている平文データを暗号化する際の動作を、
図2~
図6を参照して説明する。
【0029】
先ず、セキュアDMAC21が、乱数生成部13で生成された乱数を、
図2の太線矢印に示すように、データバスBS8を介してキーストレージ22に転送する。キーストレージ22は、転送された乱数をスクランブルしたものを、スクランブル暗号鍵として保持する。
【0030】
次に、セキュアDMAC21は、キーストレージ22に対して暗号鍵の読出要求を行い、これによりキーストレージ22から送出された暗号鍵を
図3の太線矢印に示すように、データバスBS8を介してセキュアRAM19に転送する。これにより、セキュアRAM19は、当該暗号鍵を記憶する。
【0031】
次に、セキュアDMAC21は、セキュアRAM19に記憶されている暗号鍵を読み出し、これを
図4の太線矢印に示すように、データバスBS8を介してセキュアROM20に転送する。これにより、セキュアROM20は、当該暗号鍵を書き込む。つまり、暗号処理部12で暗号化が行われる度にその暗号化で用いられた暗号鍵がセキュアROM20に追記される。よって、セキュアROM20には、使用した暗号鍵の履歴が残る。
【0032】
次に、セキュアDMAC21は、セキュアRAM19に記憶されている暗号鍵を読み出し、これを
図5の太線矢印に示すように、データバスBS8を介して暗号処理部12に転送する。更に、CPU14が、RAM15に記憶されている平文データ片を読み出し、これを
図5の太線矢印に示すように、データバスBS1を介して暗号処理部12に転送する。暗号処理部12は、転送された平文データを、転送された暗号鍵を用いて暗号化することにより暗号化データ片を生成し、これをデータバスBS1に送出する。
【0033】
次に、CPU14が、暗号処理部12で生成された暗号化データ片を、
図6の太線矢印にて示すように、データバスBS1を介してRAM15に転送する。これにより、RAM15は、転送された暗号化データ片を記憶する。
【0034】
このように、平文データの暗号化を行うにあたり、マイクロコンピュータ100内では、先ず、
図2に示すように、セキュアDMAC21が、乱数生成部13で生成された乱数をキーストレージ22に転送する。この際、キーストレージ22では、当該乱数をスクランブル化したものをスクランブル暗号鍵として保持する。そして、セキュアDMAC21が、当該キーストレージ22からスクランブルが解除された暗号鍵を読み出し、当該暗号鍵を
図3及び
図4に示すようにセキュアRAM19及びセキュアROM20に記憶させてから、
図5に示すように暗号処理部12に転送する。
【0035】
尚、RAM15に記憶されている暗号化データ片を元の平文データ片に復号する場合には、CPU14が、この暗号化データ片をRAM15から読み出し、これをデータバスBS1を介して暗号処理部12に転送する。更に、セキュアDMAC21が、この平文データ片を暗号化する際に用いた暗号鍵をセキュアRAM19から読み出し、データバスBS8を介して暗号処理部12に転送する。よって、暗号処理部12は、転送された暗号化データ片を、転送された暗号鍵を用いて復号することにより平文データ片を得る。
【0036】
また、暗号化データ片をマイクロコンピュータ100に接続されている外部機器に送信する場合には、所定のアルゴリズムに従って当該暗号化データ片と共にこの暗号化データ片に対応した暗号鍵を送信する。
【0037】
ところで、キーストレージ22では、外部からの不正なアクセスによる暗号鍵の漏洩を防止する為に、以下の構成を採用している。
【0038】
図7は、キーストレージ22の内部構成の一例を示すブロック図である。
【0039】
図7に示すように、キーストレージ22は、スクランブルキー生成部213、スクランブル処理部214、ストレージRAM215、レジスタ216、及びタイマ217を有する。
【0040】
スクランブルキー生成部213は、時間経過につれて乱数値が変化する乱数をスクランブルキーSKYとして生成し、これをスクランブル処理部214に供給する。
【0041】
スクランブル処理部214は、乱数生成部13で生成された乱数をデータバスBS8を介して受けたときにスクランブルキーSKYを取り込み、このスクランブルキーSKYを用いたスクランブル演算(例えば排他的論理和)を、上記した乱数に施す。そして、スクランブル処理部214は、当該スクランブル演算によって得られた結果をスクランブル暗号鍵SEKとし、上記したスクランブルキーSKYと対応付けしてストレージRAM215に保持させる。
【0042】
また、スクランブル処理部214は、タイムアウト信号Toutに応じて、ストレージRAM215に保持されているスクランブル暗号鍵SEKを読み出すと共に、スクランブルキー生成部213で生成されたスクランブルキーSKYを取り込む。ここで、スクランブル処理部214は、取り込んだスクランブルキーSKYを用いたスクランブル演算を、ストレージRAM215から読み出したスクランブル暗号鍵SEKに施すことにより、新たなスクランブル暗号鍵SEKを生成する。そして、スクランブル処理部214は、この新たなスクランブル暗号鍵データSEKを、スクランブルキーSKYと対応付けしてストレージRAM215に保持させる。
【0043】
また、スクランブル処理部214は、暗号鍵の読出要求に応じて、先ず、ストレージRAM215に保持されているスクランブル暗号鍵SEKと、このスクランブル暗号鍵SEKに対応付けされているスクランブルキーSKYと、を読み出す。次に、スクランブル処理部214は、スクランブルキーSKYを用いて、スクランブル暗号鍵SEKにデスクランブル演算を施すことにより暗号鍵を復元し、当該暗号鍵をデータバスBS8に送出する。
【0044】
レジスタ216は、データバスBS1を介して受けた動作開始信号又は動作停止信号を保持する。レジスタ216は、動作開始信号を保持した場合には、タイマ217のカウント動作を開始させる動作開始信号STをタイマ217に供給する。一方、動作停止信号を保持した場合には、レジスタ216は、タイマ217のカウント動作を停止させる動作停止信号STPをタイマ217に供給する。
【0045】
タイマ217は、クロック信号を受け、動作開始信号STが供給された場合に、当該クロック信号のパルス数のカウントを開始する。ここで、タイマ217は、カウント数が所定値に到達したときに、タイムアウト信号Toutをスクランブル処理部214に供給する。タイムアウト信号Toutをスクランブル処理部214に供給した後、引き続き、タイマ217は、初期値(例えばゼロ)からクロック信号のパルス数のカウントを継続する。すなわち、タイマ217は、所定期間毎に、タイムアウト信号Toutをスクランブル処理部214に供給する。尚、タイマ217は、動作停止信号STPを受けた場合には、上記したカウント動作を停止する。
【0046】
以下に、
図7に示す構成を有するキーストレージ22の内部で行われる暗号鍵の保持及び読出動作について説明する。
【0047】
図8は、CPU14からデータバスBS1を介して受けた動作開始信号に応じて、キーストレージ22内で行われる暗号鍵の保持動作の手順を表すフローチャートである。尚、CPU14は、例えば電源投入に応じて、動作開始信号をデータバスBS1を介してキーストレージ22に供給する。
【0048】
先ず、キーストレージ22のレジスタ216が、動作開始信号STをタイマ217に供給することにより、当該タイマ217のカウント動作を開始させる(ステップS31)。これにより、タイマ217は、初期値からクロック信号のパルス数のカウントを行う。
【0049】
この間、スクランブル処理部214は、タイマ217からタイムアウト信号Toutが供給されたか否かを判定する(ステップS32)。尚、タイマ217は、そのカウント数が所定値に達したらタイムアウト信号Toutをスクランブル処理部214に供給する。
【0050】
ステップS32においてタイムアウト信号Toutが供給されていないと判定した場合、スクランブル処理部214は、引き続きタイムアウト信号Toutが供給されたか否かの判定を行う。
【0051】
ステップS32でタイムアウト信号Toutが供給されたと判定した場合、スクランブル処理部214は、ストレージRAM215に保持されているスクランブル暗号鍵を読み出してこれを取り込むと共に、スクランブルキーSKYを取り込む(ステップS33)。
【0052】
次に、スクランブル処理部214は、上記したように取り込んだスクランブルキーを用いて、取り込んだスクランブル暗号鍵にスクランブル演算を施すことにより、新たなスクランブル暗号鍵SEKを生成する(ステップS34)。
【0053】
次に、スクランブル処理部214は、ステップS34で生成したスクランブル暗号鍵SEKと、スクランブル演算で用いたスクランブルキーSKYと、を対応付けしてストレージRAM215に保持させる(ステップS35)。
【0054】
次に、タイマ217は、レジスタ216から動作停止信号STPが供給されたか否かを判定する(ステップS36)。
【0055】
ステップS36において動作停止信号STPが供給されていないと判定された場合、タイマ217は、クロック信号のパルスのカウント動作を継続する。これにより、スクランブル処理部214は、上記したステップS32に戻り、前述したステップS32~S35の動作を再び実行する。
【0056】
よって、暗号鍵をスクランブルしたスクランブル暗号鍵がストレージRAM215に保持され、この保持したスクランブル暗号鍵自体を所定期間毎にスクランブルしたものが、新たなスクランブル暗号鍵としてストレージRAM215に保持される。尚、この所定期間、つまりタイマ217が初期値からカウントを開始した時点から、タイムアウト信号Toutを送出するまでに費やされる期間は、乱数生成部13における乱数の変化周期(一定周期)よりも短い。これにより、乱数生成部13で生成された1つの乱数に対して、複数回のスクランブルを施すことが可能となる。
【0057】
ここで、CPU14は、キーストレージ22の動作を停止させる場合には、その旨を促す動作停止信号をデータバスBS1を介してキーストレージ22に供給する。かかる動作停止信号を受けると、キーストレージ22のレジスタ216は当該動作停止信号を保持し、動作停止信号STPをタイマ217に供給する。これにより、キーストレージ22による暗号鍵の保持動作が停止する。
【0058】
尚、スクランブル処理部214は、電源遮断に応じて、ストレージRAM215に保持されている全てのスクランブル暗号鍵及びスクランブルキーを読み出し、データバスBS8に送出する。この際、セキュアDMAC21は、データバスBS8に送出された、全てのスクランブル暗号鍵及びスクランブルキーをセキュアROM20に転送する。よって、マイクロコンピュータ100の電源遮断に応じて、セキュアROM20には、ストレージRAM215に保持されていた全てのスクランブル暗号鍵及びスクランブルキーが書き込まれる。
【0059】
図9は、セキュアDMAC21からデータバスBS8を介して受けた暗号鍵の読出し要求に応じて、キーストレージ22内で行われる暗号鍵の読出動作の手順を表すフローチャートである。
【0060】
先ず、スクランブル処理部214は、ストレージRAM215から、所望とするスクランブル暗号鍵を読み出し(ステップS41)、引き続き、このスクランブル暗号鍵に対応付けされているスクランブルキーを読み出す(ステップS42)。
【0061】
次に、スクランブル処理部214は、読み出されたスクランブル暗号鍵に対してスクランブルキーを用いたデスクランブル演算を施してスクランブルを解除することにより、暗号鍵を復元する(ステップS43)。
【0062】
そして、スクランブル処理部214は、復元した暗号鍵をデータバスBS8を介して送信する(ステップS44)。
【0063】
以上のように、キーストレージ22は、乱数生成部13で生成された乱数をスクランブルしたものをスクランブル暗号鍵として保持する。その後、キーストレージ22は、保持したスクランブル暗号鍵自体を所定期間毎にスクランブルしたものを、新たなスクランブル暗号鍵として保持する(S32~S36)。
【0064】
また、キーストレージ22は、暗号鍵の読出要求に応じて、先ず、保持したスクランブル暗号鍵を読み出し(S41)、引き続きこのスクランブル暗号鍵に対応したスクランブルキーを読み出す(S42)。そして、キーストレージ22は、スクランブルキーを用いてスクランブル暗号鍵をデスクランブルすることにより、暗号鍵を復元し(S43)、これを出力する。
【0065】
このように、キーストレージ22に保持されているスクランブル暗号鍵は、それ自体が所定期間毎に繰り返しスクランブルされているので、その値は時間経過につれて変化している。よって、外部からの不正なアクセスによって、キーストレージ22に保持されているスクランブル暗号鍵が漏洩しても、このスクランブル暗号鍵からでは、暗号鍵自体を特定することはできない。また、用いられた暗号鍵が書き込まれるセキュアRAM19及びセキュアROM20は、マイクロコンピュータ100の外部からのアクセスが可能なデータバスBS1ではなく、外部アクセスが不可能なデータバスBS8を介して暗号鍵の読み出しが行われる。
【0066】
したがって、不正なアクセスが行われても、マイクロコンピュータ100で運用されている平文データの漏洩を防ぐことが可能となる。
【0067】
尚、
図1に示すマイクロコンピュータ100では、CPU14に接続されており且つ外部アクセス可能なデータバスBS1とは別に、CPU14に接続されておらず且つ外部アクセス不可なデータバスBS8を用いることで秘匿性の高い暗号鍵の運用を行っている。
【0068】
しかしながら、マイクロコンピュータ100で用いるデータバスとしては、データバスBS1だけであっても、秘匿性の高い暗号鍵の運用を行うことが可能である。
【0069】
図10は、かかる点に鑑みて為されたマイクロコンピュータ100の内部構成の変形例を示すブロック図である。
【0070】
図10に示されるマイクロコンピュータ100では、
図1に示される構成中から、データバスBS8を省くと共に、バスマスタイネーブル信号BSEを各モジュール(12~17、19~22)に供給している。バスマスタイネーブル信号BSEは、例えばイネーブル状態を表す論理レベル1、及びディスエーブル状態を表す論理レベル0のうちの一方を表す2値信号である。
【0071】
バスマスタイネーブル信号BSEがディスエーブル状態を表す場合には、暗号処理部12、CPU14、RAM15、ROM制御部16及びROM17がデータバスBS1に接続される。尚、この際、乱数生成部13、セキュアRAM19、セキュアROM20、セキュアDMAC21、及びキーストレージ22は、データバスBS1との接続が遮断される。
【0072】
一方、バスマスタイネーブル信号BSEがイネーブル状態を表す場合には、暗号処理部12、乱数生成部13、セキュアRAM19、セキュアROM20、セキュアDMAC21、及びキーストレージ22がデータバスBS1に接続される。尚、バスマスタイネーブル信号BSEがイネーブル状態を表す場合には、CPU14、RAM15、ROM制御部16及びROM17は、データバスBS1との接続が遮断される。
【0073】
上記した点を除き、
図10に示されるマイクロコンピュータ100に含まれる各モジュール(12~17、19~22)の構成は、
図1に示されるものと同一である。
【0074】
図11は、
図10に示される構成のマイクロコンピュータ100で用いられるキーストレージ22の内部構成を示すブロック図である。
図11に示す構成では、バス接続部210を新たに設けた点を除く他の構成及びその動作は、
図7~
図9で説明したものと同一である。
【0075】
バス接続部21は、バスマスタイネーブル信号BSEを受け、当該バスマスタイネーブル信号BSEがイネーブル状態を表す場合には、スクランブル処理部214及びレジスタ216をデータバスBS1に接続する。一方、バスマスタイネーブル信号BSEがディスエーブル状態を表す場合には、バス接続部21は、スクランブル処理部214及びレジスタ216と、データバスBS1との接続を遮断する。
【0076】
尚、キーストレージ22以外の他のモジュール(12~17、19~21)にも、バスマスタイネーブル信号BSEに応じて、データバスBS1との接続状態(接続又は遮断)を上述したように切り替えるバス接続部が含まれている。ただし、暗号処理部12については、バスマスタイネーブル信号BSEの内容(イネーブル状態、ディスエイーブル状態)に拘わらず、常にデータバスBS1と接続されている。
【0077】
以下に、
図10及び
図11に示される構成を有するマイクロコンピュータ100において、RAM15に記憶されている平文データ片を暗号化する際の動作を、
図12~
図17を参照して説明する。
【0078】
先ず、バスマスタイネーブル信号BSEをイネーブル状態に設定する。これにより、各モジュール(12~17、19~22)のうちで、暗号処理部12、乱数生成部13、セキュアRAM19、セキュアROM20、セキュアDMAC21、及びキーストレージ22が、データバスBS1に接続される。ここで、セキュアDMAC21が、乱数生成部13で生成された乱数を、
図12の太線矢印に示すように、データバスBS1を介してキーストレージ22に転送する。この際、キーストレージ22は、転送された乱数をスクランブルしたものを、スクランブル暗号鍵として保持する。
【0079】
次に、セキュアDMAC21は、キーストレージ22に対して暗号鍵の読出要求を行い、これによりキーストレージ22から読み出された暗号鍵を、
図13の太線矢印に示すように、データバスBS1を介してセキュアRAM19に転送する。これにより、セキュアRAM19は、当該暗号鍵を記憶する。
【0080】
次に、セキュアDMAC21は、上記したようにセキュアRAM19に記憶した暗号鍵を読み出し、これを
図14の太線矢印に示すように、データバスBS1を介してセキュアROM20に転送する。これにより、セキュアROM20は、当該暗号鍵を書き込む。つまり、セキュアROM20には、暗号処理部12で暗号処理が行われる度に、その暗号処理で用いられた暗号鍵がセキュアROM20に追記される。よって、セキュアROM20には、使用した暗号鍵の履歴が残る。
【0081】
次に、セキュアDMAC21は、セキュアRAM19に記憶されている暗号鍵を読み出し、これを
図15の太線矢印に示すように、データバスBS1を介して暗号処理部12に転送する。
【0082】
次に、
図16に示すように、バスマスタイネーブル信号BSEをディスエーブル状態に設定する。これにより、モジュール(12~17、19~22)のうちで、暗号処理部12、CPU14、RAM15、ROM制御部16及びROM17がデータバスBS1に接続される。ここで、CPU14が、RAM15に記憶されている平文データ片を読み出し、これを
図16の太線矢印に示すように、データバスBS1を介して暗号処理部12に転送する。暗号処理部12は、転送された平文データを、転送された暗号鍵を用いて暗号化することにより暗号化データ片を生成する。
【0083】
そして、
図17に示すように、バスマスタイネーブル信号BSEを再びイネーブル状態に設定し、セキュアDMAC21が、暗号処理部12で生成された暗号化データ片を、
図17の太線矢印にて示すように、データバスBS1を介してRAM15に転送する。これにより、RAM15は、転送された暗号化データ片を記憶する。
【0084】
このように、マイクロコンピュータ100として
図10に示す構成を採用した場合には、データバスBS8が不要となるので、
図1に示す構成を採用した場合に比べて、マイクロコンピュータ100を構築する領域の面積を縮小化することが可能となる。
【0085】
尚、上記実施例では、ストレージRAM215を含むキーストレージ22、つまり揮発性の半導体メモリを、スクランブル化した暗号鍵を保持する鍵保持部としているが、当該鍵保持部としては不揮発性のメモリ、或いは磁気又は光学式記録媒体であっても良い。
【0086】
要するに、データの暗号化機能を備えたマイクロコンピュータ100としては、以下の乱数生成部、及び鍵保持部を含むものであれば良い。
【0087】
すなわち、鍵保持部(22)は、乱数生成部(13)で生成された乱数をスクランブルキー(SKY)でスクランブルしたものをスクランブル暗号鍵(SEK)として保持する。この際、鍵保持部(22)は、スクランブル暗号鍵を所定期間毎にスクランブルキーでスクランブルしたものを新たなスクランブル暗号鍵として保持する。また、鍵保持部(22)は、読出要求に応じて、保持したスクランブル暗号鍵をスクランブルキーを用いてデスクランブルしたものを暗号鍵として出力する。
【符号の説明】
【0088】
12 暗号処理部
13 乱数生成部
22 キーストレージ
213 スクランブルキー生成部
214 スクランブル処理部
215 ストレージRAM