(57)【要約】      （修正有）【課題】不正なアクセスによるデータの漏洩を防ぐことが可能な半導体装置、及び暗号鍵の生成方法を提供する。【解決手段】半導体装置（キーストレージ）２２は、外部の乱数生成部にて生成された乱数をスクランブルキー生成部２１３が生成したスクランブルキーを用いスクランブル処理部２１４がスクランブルした結果をスクランブル暗号鍵としてストレージＲＡＭ２１５に保持する。また、読出要求に応じて、このスクランブル暗号鍵をスクランブルキーを用いてデスクランブルして得た暗号鍵を出力する。キーストレージ２２は、保持したスクランブル暗号鍵を所定期間毎にスクランブルキーでスクランブルしたものを新たなスクランブル暗号鍵として保持する。【選択図】図７
2019121955.tif 000002
【特許請求の範囲】
【請求項１】
暗号鍵を用いてデータを暗号化する半導体装置であって、
乱数を生成する乱数生成部と、
前記乱数をスクランブルキーを用いてスクランブルしたものをスクランブル暗号鍵として保持し、読出要求に応じて、前記スクランブル暗号鍵を前記スクランブルキーを用いてデスクランブルして得た暗号鍵を出力する鍵保持部と、を有し、
前記鍵保持部は、
保持した前記スクランブル暗号鍵を所定期間毎にスクランブルキーでスクランブルしたものを新たなスクランブル暗号鍵として保持することを特徴とする半導体装置。
【請求項２】
前記鍵保持部は、
時間経過につれて値が変化する乱数を前記スクランブルキーとして生成するスクランブルキー生成部と、
メモリと、
前記乱数を前記スクランブルキーでスクランブルしたものを前記スクランブル暗号鍵として前記メモリに保持させると共に、前記所定期間毎に、前記スクランブルキー生成部が生成した前記スクランブルキー、及び前記メモリに保持されている前記スクランブル暗号鍵を取り込み、取り込んだ前記スクランブル暗号鍵を、取り込んだ前記スクランブルキーでスクランブルしたものを新たなスクランブル暗号鍵として前記メモリに保持させるスクランブル処理部と、を含むことを特徴とする請求項１に記載の半導体装置。
【請求項３】
前記乱数生成部は、所定の一定周期で乱数値が変化する前記乱数を生成し、
前記所定期間は前記一定周期よりも短いことを特徴とする請求項１又は２に記載の半導体装置。
【請求項４】
プログラムが格納されているＲＯＭと、
前記プログラムに従った制御を行うＣＰＵと、
ＲＡＭと、
暗号鍵に基づきデータを暗号化する暗号処理部と、
前記鍵保持部に対して書込及び読出制御を行うＤＭＡＣ（direct memory access controller）と、を含むことを特徴とする請求項１〜３のいずれか１に記載の半導体装置。
【請求項５】
前記ＲＯＭ、前記ＣＰＵ、前記ＲＡＭ、及び前記暗号処理部が接続されている第１のデータバスと、
前記乱数生成部、前記鍵保持部、前記ＤＭＡＣ及び前記暗号処理部が接続されている第２のデータバスと、を含み、
前記ＲＡＭには平文データ片が記憶されており、
前記ＣＰＵは、前記ＲＡＭに記憶されている前記平文データ片を、前記第１のデータバスを介して前記暗号処理部に転送し、
前記ＤＭＡＣは、前記読出要求によって前記鍵保持部から読み出された前記暗号鍵を、前記第２のデータバスを介して前記暗号処理部に転送し、
前記暗号処理部は、前記第１のデータバスを介して受けた前記平文データ片を、前記第２のデータバスを介して受けた前記暗号鍵で暗号化した暗号化データ片を生成する前記第１のデータバスに送出することを特徴とする請求項４に記載の半導体装置。
【請求項６】
第１のデータバスを含み、
イネーブル又はディスエーブルを表すバスマスタイネーブル信号を受け、
前記バスマスタイネーブル信号が前記イネーブルを表す場合には前記乱数生成部、前記鍵保持部、前記ＤＭＡＣ及び前記暗号処理部が前記第１のデータバスと接続され、前記バスマスタイネーブル信号が前記ディスエーブルを表す場合には前記ＲＯＭ、前記ＣＰＵ、前記ＲＡＭ、及び前記暗号処理部が前記第１のデータバスと接続されることを特徴とする請求項４に記載の半導体装置。
【請求項７】
前記ＲＡＭには平文データ片が記憶されており、
前記バスマスタイネーブル信号を前記ディスエーブルを表す状態に設定した状態で、前記ＣＰＵが、前記ＲＡＭに記憶されている前記平文データ片を前記第１のデータバスを介して前記暗号処理部に転送し、
前記バスマスタイネーブル信号を前記イネーブルを表す状態に設定した状態で、前記ＤＭＡＣが、前記読出要求によって前記鍵保持部から読み出した前記暗号鍵を、前記第１のデータバスを介して前記暗号処理部に転送し、
前記暗号処理部は、前記第１のデータバスを介して受けた前記平文データ片を、前記第１のデータバスを介して受けた前記暗号鍵で暗号化した暗号化データ片を生成することを特徴とする請求項６に記載の半導体装置。
【請求項８】
データの暗号化に用いる暗号鍵の生成方法であって、
乱数をスクランブルキーでスクランブルしたものをスクランブル暗号鍵としてメモリに保持させると共に、前記スクランブル暗号鍵を所定期間毎にスクランブルキーでスクランブルしたものを新たなスクランブル暗号鍵として前記メモリに保持させ、
読出要求に応じて、前記メモリに保持されている前記スクランブル暗号鍵を前記スクランブルキーを用いてデスクランブルすることにより前記暗号鍵を得ることを特徴とする暗号鍵の生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置、特にデータを暗号化するための暗号鍵を記憶する記憶部を含む半導体装置、及び暗号鍵の生成方法に関する。
【背景技術】
【０００２】
現在、暗号鍵を用いてデータを暗号化し、暗号化された暗号化データに対してこの暗号鍵を用いた復号を施すことにより元のデータを復元する機能を備えたマイクロコンピュータを含む半導体装置が知られている（例えば、特許文献１参照）。
【０００３】
当該半導体装置には、暗号鍵を格納するメモリとして、ＥＥＰＲＯＭ（Electrically Erasable Programmable Read-Only Memory）が設けられている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１４−８９６４０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、暗号鍵は第三者に漏洩してはならないものであるが、外部からの物理攻撃或いは物理解析等の不正なアクセスにより、メモリに格納されている暗号鍵が不正に読み出されてしまう虞があった。この際、不正に取得した暗号鍵により上記した暗号化データが復号されてしまい、データの漏洩を招くことになる。
【０００６】
そこで、本発明は、不正なアクセスによるデータの漏洩を防ぐことが可能な半導体装置、及び暗号鍵の生成方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明に係る半導体装置は、暗号鍵を用いてデータを暗号化する半導体装置であって、乱数を生成する乱数生成部と、前記乱数をスクランブルキーを用いてスクランブルしたものをスクランブル暗号鍵として保持し、読出要求に応じて、前記スクランブル暗号鍵を前記スクランブルキーを用いてデスクランブルして得た暗号鍵を出力する鍵保持部と、を有し、前記鍵保持部は、保持した前記スクランブル暗号鍵を所定期間毎にスクランブルキーでスクランブルしたものを新たなスクランブル暗号鍵として保持する。
【０００８】
また、本発明に係る暗号鍵の生成方法は、データの暗号化に用いる暗号鍵の生成方法であって、乱数をスクランブルキーでスクランブルしたものをスクランブル暗号鍵としてメモリに保持させると共に、前記スクランブル暗号鍵を所定期間毎にスクランブルキーでスクランブルしたものを新たなスクランブル暗号鍵として前記メモリに保持させ、読出要求に応じて、前記メモリに保持されている前記スクランブル暗号鍵を前記スクランブルキーを用いてデスクランブルすることにより前記暗号鍵を得る。
【発明の効果】
【０００９】
本発明では、鍵保持部が、乱数をスクランブルしたものをスクランブル暗号鍵として保持し、この保持したスクランブル暗号鍵自体を所定期間毎にスクランブルしたものを、新たなスクランブル暗号鍵として保持する。
【００１０】
これにより、鍵保持部に保持されたスクランブル暗号鍵は、それ自体が所定期間毎に繰り返しスクランブルされるので、時間経過につれてその値が変化する。よって、たとえ外部からの不正なアクセスによって、鍵保持部に保持されているスクランブル暗号鍵が漏洩しても、このスクランブル暗号鍵からでは、暗号鍵自体を特定することが困難となる。したがって、不正なアクセスが行われても平文データの漏洩を防ぐことが可能となる。
【図面の簡単な説明】
【００１１】
【図１】本発明に係る半導体装置の一例としてのマイクロコンピュータ１００の構成を示すブロック図である。
【図２】データを暗号化する場合にマイクロコンピュータ１００内で行われる第1段階でのデータ転送の状態を表すブロック図である。
【図３】データを暗号化する場合にマイクロコンピュータ１００内で行われる第２段階でのデータ転送の状態を表すブロック図である。
【図４】データを暗号化する場合にマイクロコンピュータ１００内で行われる第３段階でのデータ転送の状態を表すブロック図である。
【図５】データを暗号化する場合にマイクロコンピュータ１００内で行われる第４段階でのデータ転送の状態を表すブロック図である。
【図６】データを暗号化する場合にマイクロコンピュータ１００内で行われる第５段階でのデータ転送の状態を表すブロック図である。
【図７】キーストレージ２２の内部構成の一例を示すブロック図である。
【図８】キーストレージ２２内で行われる暗号鍵の保持動作の手順を表すフローチャートである。
【図９】キーストレージ２２内で行われる暗号鍵の読出動作の手順を表すフローチャートである。
【図１０】マイクロコンピュータ１００の内部構成の変形例を示すブロック図である。
【図１１】キーストレージ２２の内部構成の他の一例を示すブロック図である。
【図１２】データを暗号化する場合に図１０に示すマイクロコンピュータ１００内で行われる第１段階でのデータ転送の状態を表すブロック図である。
【図１３】データを暗号化する場合に図１０に示すマイクロコンピュータ１００内で行われる第２段階でのデータ転送の状態を表すブロック図である。
【図１４】データを暗号化する場合に図１０に示すマイクロコンピュータ１００内で行われる第３段階でのデータ転送の状態を表すブロック図である。
【図１５】データを暗号化する場合に図１０に示すマイクロコンピュータ１００内で行われる第４段階でのデータ転送の状態を表すブロック図である。
【図１６】データを暗号化する場合に図１０に示すマイクロコンピュータ１００内で行われる第５段階でのデータ転送の状態を表すブロック図である。
【図１７】データを暗号化する場合に図１０に示すマイクロコンピュータ１００内で行われる第６段階でのデータ転送の状態を表すブロック図である。
【発明を実施するための形態】
【００１２】
図１は、本発明に係る半導体装置に含まれるマイクロコンピュータ１００の構成を示すブロック図である。
【００１３】
マイクロコンピュータ１００は、暗号処理部１２、乱数生成部１３、ＣＰＵ（central processing unit）１４、ＲＡＭ（random access memory）１５、ＲＯＭ（read only memory）制御部１６、ＲＯＭ１７、セキュアＲＡＭ１９、セキュアＲＯＭ２０、セキュアＤＭＡＣ（direct memory access controller）２１、及びキーストレージ２２を有する。
【００１４】
更に、マイクロコンピュータ１００は、２系統のデータバスＢＳ１及びＢＳ８を含む。マイクロコンピュータ１００は、外部接続された機器とのデータ通信が可能であり、当該データバスＢＳ１を介して各種データの送信又は受信を行う。
【００１５】
データバスＢＳ１には、暗号処理部１２、乱数生成部１３、ＣＰＵ１４、ＲＡＭ１５、ＲＯＭ制御部１６、ＲＯＭ１７、セキュアＲＡＭ１９、及びキーストレージ２２が接続されている。
【００１６】
データバスＢＳ８は、データバスＢＳ１には接続されておらず、且つマイクロコンピュータ１００の外部からのアクセス不可な独立したバスである。データバスＢＳ８は、秘匿性を要求される乱数生成部１３、セキュアＲＡＭ１９、セキュアＲＯＭ２０、セキュアＤＭＡＣ２１及びキーストレージ２２、並びに暗号処理部１２に接続されている。
【００１７】
暗号処理部１２は、データバスＢＳ１を介して受けた暗号化前の平文データ片を、暗号鍵を用いて暗号化することにより暗号化データ片を得て、これをデータバスＢＳ１に送出する。また、暗号処理部１２は、データバスＢＳ１を介して受けた暗号化データ片を、この暗号鍵を用いて復号することにより、暗号化前の平文データ片を復元する。尚、暗号処理部１２は、このような暗号化又は復号化処理を行うにあたり、その実行前に、キーストレージ２２から暗号鍵を取得しておく。
【００１８】
乱数生成部１３は、所定の一定周期で乱数値が変化する乱数を生成し、これをデータバスＢＳ８に送出する。
【００１９】
ＣＰＵ１４は、このマイクロコンピュータ１００の中央演算処理装置であり、ＲＯＭ１７に格納されているプログラムに従った各種の演算、或いはデータの転送を行う。
【００２０】
ＲＡＭ１５は、データ書き込みが可能な記憶素子であり、ＣＰＵ１４によってデータの書込又は読出が行われる。
【００２１】
ＲＯＭ制御部１６は、ＲＯＭ１７に対して、データの書き込み、又はデータが正しく書き込まれたか否かを確認するベリファイ、或いは書き込まれたデータの消去等を行う。また、ＲＯＭ制御部１６は、セキュアＤＭＡＣ２１に対して書き込み要求を行う。
【００２２】
ＲＯＭ１７には、ＣＰＵ１４が実行するプログラムを表すプログラムデータが書き込まれている。
【００２３】
セキュアＲＡＭ１９は、セキュアＤＭＡＣ２１からのデータ書込アクセスに応じて、データバスＢＳ８を介して受けたデータを記憶する。また、セキュアＲＡＭ１９は、セキュアＤＭＡＣ２１からのデータ読出アクセスに応じて、自身に記憶されているデータを読み出し、これをデータバスＢＳ８に送出する。また、セキュアＲＡＭ１９は、ＣＰＵ１４からのデータ書込アクセスに応じて、データバスＢＳ１を介して受けたデータを記憶する。尚、セキュアＲＡＭ１９は、ＣＰＵ１４からのデータ読出アクセスは受け付けない。
【００２４】
セキュアＲＯＭ２０は、セキュアＤＭＡＣ２１からのデータ読出アクセスに応じて、自身に格納されているデータを読み出し、これをデータバスＢＳ８に送出する。また、セキュアＲＯＭ２０は、ＲＯＭ制御部１６がセキュアＤＭＡＣ２１へ書き込み要求を行った際に、セキュアＤＭＡＣ２１がデータバスＢＳ８を介して受けたデータを書き込む。
【００２５】
セキュアＤＭＡＣ２１は、データバスＢＳ８を介して、暗号処理部１２、乱数生成部１３、セキュアＲＡＭ１９、セキュアＲＯＭ２０、セキュアＤＭＡＣ２１、及びキーストレージ２２間のデータ転送を行う。
【００２６】
キーストレージ２２は、乱数生成部１３で生成された乱数をスクランブルしたスクランブル暗号鍵を生成し、これを保持する。また、キーストレージ２２は、暗号鍵の読出要求に応じて、保持されているスクランブル暗号鍵を読み出し、このスクランブル暗号鍵に施されているスクランブルを解除したものを暗号鍵としてデータバスＢＳ８に送出する。
【００２７】
上記した構成により、マイクロコンピュータ１００は、ＲＯＭ１７に格納されているプログラムに従って、上記した暗号鍵を用いた平文データの暗号化及び復号化処理を含む各種のデータ処理を行う。
【００２８】
以下に、ＲＡＭ１５に記憶されている平文データを暗号化する際の動作を、図２〜図６を参照して説明する。
【００２９】
先ず、セキュアＤＭＡＣ２１が、乱数生成部１３で生成された乱数を、図２の太線矢印に示すように、データバスＢＳ８を介してキーストレージ２２に転送する。キーストレージ２２は、転送された乱数をスクランブルしたものを、スクランブル暗号鍵として保持する。
【００３０】
次に、セキュアＤＭＡＣ２１は、キーストレージ２２に対して暗号鍵の読出要求を行い、これによりキーストレージ２２から送出された暗号鍵を図３の太線矢印に示すように、データバスＢＳ８を介してセキュアＲＡＭ１９に転送する。これにより、セキュアＲＡＭ１９は、当該暗号鍵を記憶する。
【００３１】
次に、セキュアＤＭＡＣ２１は、セキュアＲＡＭ１９に記憶されている暗号鍵を読み出し、これを図４の太線矢印に示すように、データバスＢＳ８を介してセキュアＲＯＭ２０に転送する。これにより、セキュアＲＯＭ２０は、当該暗号鍵を書き込む。つまり、暗号処理部１２で暗号化が行われる度にその暗号化で用いられた暗号鍵がセキュアＲＯＭ２０に追記される。よって、セキュアＲＯＭ２０には、使用した暗号鍵の履歴が残る。
【００３２】
次に、セキュアＤＭＡＣ２１は、セキュアＲＡＭ１９に記憶されている暗号鍵を読み出し、これを図５の太線矢印に示すように、データバスＢＳ８を介して暗号処理部１２に転送する。更に、ＣＰＵ１４が、ＲＡＭ１５に記憶されている平文データ片を読み出し、これを図５の太線矢印に示すように、データバスＢＳ１を介して暗号処理部１２に転送する。暗号処理部１２は、転送された平文データを、転送された暗号鍵を用いて暗号化することにより暗号化データ片を生成し、これをデータバスＢＳ１に送出する。
【００３３】
次に、ＣＰＵ１４が、暗号処理部１２で生成された暗号化データ片を、図６の太線矢印にて示すように、データバスＢＳ１を介してＲＡＭ１５に転送する。これにより、ＲＡＭ１５は、転送された暗号化データ片を記憶する。
【００３４】
このように、平文データの暗号化を行うにあたり、マイクロコンピュータ１００内では、先ず、図２に示すように、セキュアＤＭＡＣ２１が、乱数生成部１３で生成された乱数をキーストレージ２２に転送する。この際、キーストレージ２２では、当該乱数をスクランブル化したものをスクランブル暗号鍵として保持する。そして、セキュアＤＭＡＣ２１が、当該キーストレージ２２からスクランブルが解除された暗号鍵を読み出し、当該暗号鍵を図３及び図４に示すようにセキュアＲＡＭ１９及びセキュアＲＯＭ２０に記憶させてから、図５に示すように暗号処理部１２に転送する。
【００３５】
尚、ＲＡＭ１５に記憶されている暗号化データ片を元の平文データ片に復号する場合には、ＣＰＵ１４が、この暗号化データ片をＲＡＭ１５から読み出し、これをデータバスＢＳ１を介して暗号処理部１２に転送する。更に、セキュアＤＭＡＣ２１が、この平文データ片を暗号化する際に用いた暗号鍵をセキュアＲＡＭ１９から読み出し、データバスＢＳ８を介して暗号処理部１２に転送する。よって、暗号処理部１２は、転送された暗号化データ片を、転送された暗号鍵を用いて復号することにより平文データ片を得る。
【００３６】
また、暗号化データ片をマイクロコンピュータ１００に接続されている外部機器に送信する場合には、所定のアルゴリズムに従って当該暗号化データ片と共にこの暗号化データ片に対応した暗号鍵を送信する。
【００３７】
ところで、キーストレージ２２では、外部からの不正なアクセスによる暗号鍵の漏洩を防止する為に、以下の構成を採用している。
【００３８】
図７は、キーストレージ２２の内部構成の一例を示すブロック図である。
【００３９】
図７に示すように、キーストレージ２２は、スクランブルキー生成部２１３、スクランブル処理部２１４、ストレージＲＡＭ２１５、レジスタ２１６、及びタイマ２１７を有する。
【００４０】
スクランブルキー生成部２１３は、時間経過につれて乱数値が変化する乱数をスクランブルキーＳＫＹとして生成し、これをスクランブル処理部２１４に供給する。
【００４１】
スクランブル処理部２１４は、乱数生成部１３で生成された乱数をデータバスＢＳ８を介して受けたときにスクランブルキーＳＫＹを取り込み、このスクランブルキーＳＫＹを用いたスクランブル演算（例えば排他的論理和）を、上記した乱数に施す。そして、スクランブル処理部２１４は、当該スクランブル演算によって得られた結果をスクランブル暗号鍵ＳＥＫとし、上記したスクランブルキーＳＫＹと対応付けしてストレージＲＡＭ２１５に保持させる。
【００４２】
また、スクランブル処理部２１４は、タイムアウト信号Ｔｏｕｔに応じて、ストレージＲＡＭ２１５に保持されているスクランブル暗号鍵ＳＥＫを読み出すと共に、スクランブルキー生成部２１３で生成されたスクランブルキーＳＫＹを取り込む。ここで、スクランブル処理部２１４は、取り込んだスクランブルキーＳＫＹを用いたスクランブル演算を、ストレージＲＡＭ２１５から読み出したスクランブル暗号鍵ＳＥＫに施すことにより、新たなスクランブル暗号鍵ＳＥＫを生成する。そして、スクランブル処理部２１４は、この新たなスクランブル暗号鍵データＳＥＫを、スクランブルキーＳＫＹと対応付けしてストレージＲＡＭ２１５に保持させる。
【００４３】
また、スクランブル処理部２１４は、暗号鍵の読出要求に応じて、先ず、ストレージＲＡＭ２１５に保持されているスクランブル暗号鍵ＳＥＫと、このスクランブル暗号鍵ＳＥＫに対応付けされているスクランブルキーＳＫＹと、を読み出す。次に、スクランブル処理部２１４は、スクランブルキーＳＫＹを用いて、スクランブル暗号鍵ＳＥＫにデスクランブル演算を施すことにより暗号鍵を復元し、当該暗号鍵をデータバスＢＳ８に送出する。
【００４４】
レジスタ２１６は、データバスＢＳ１を介して受けた動作開始信号又は動作停止信号を保持する。レジスタ２１６は、動作開始信号を保持した場合には、タイマ２１７のカウント動作を開始させる動作開始信号ＳＴをタイマ２１７に供給する。一方、動作停止信号を保持した場合には、レジスタ２１６は、タイマ２１７のカウント動作を停止させる動作停止信号ＳＴＰをタイマ２１７に供給する。
【００４５】
タイマ２１７は、クロック信号を受け、動作開始信号ＳＴが供給された場合に、当該クロック信号のパルス数のカウントを開始する。ここで、タイマ２１７は、カウント数が所定値に到達したときに、タイムアウト信号Ｔｏｕｔをスクランブル処理部２１４に供給する。タイムアウト信号Ｔｏｕｔをスクランブル処理部２１４に供給した後、引き続き、タイマ２１７は、初期値（例えばゼロ）からクロック信号のパルス数のカウントを継続する。すなわち、タイマ２１７は、所定期間毎に、タイムアウト信号Ｔｏｕｔをスクランブル処理部２１４に供給する。尚、タイマ２１７は、動作停止信号ＳＴＰを受けた場合には、上記したカウント動作を停止する。
【００４６】
以下に、図７に示す構成を有するキーストレージ２２の内部で行われる暗号鍵の保持及び読出動作について説明する。
【００４７】
図８は、ＣＰＵ１４からデータバスＢＳ１を介して受けた動作開始信号に応じて、キーストレージ２２内で行われる暗号鍵の保持動作の手順を表すフローチャートである。尚、ＣＰＵ１４は、例えば電源投入に応じて、動作開始信号をデータバスＢＳ１を介してキーストレージ２２に供給する。
【００４８】
先ず、キーストレージ２２のレジスタ２１６が、動作開始信号ＳＴをタイマ２１７に供給することにより、当該タイマ２１７のカウント動作を開始させる（ステップＳ３１）。これにより、タイマ２１７は、初期値からクロック信号のパルス数のカウントを行う。
【００４９】
この間、スクランブル処理部２１４は、タイマ２１７からタイムアウト信号Ｔｏｕｔが供給されたか否かを判定する（ステップＳ３２）。尚、タイマ２１７は、そのカウント数が所定値に達したらタイムアウト信号Ｔｏｕｔをスクランブル処理部２１４に供給する。
【００５０】
ステップＳ３２においてタイムアウト信号Ｔｏｕｔが供給されていないと判定した場合、スクランブル処理部２１４は、引き続きタイムアウト信号Ｔｏｕｔが供給されたか否かの判定を行う。
【００５１】
ステップＳ３２でタイムアウト信号Ｔｏｕｔが供給されたと判定した場合、スクランブル処理部２１４は、ストレージＲＡＭ２１５に保持されているスクランブル暗号鍵を読み出してこれを取り込むと共に、スクランブルキーＳＫＹを取り込む（ステップＳ３３）。
【００５２】
次に、スクランブル処理部２１４は、上記したように取り込んだスクランブルキーを用いて、取り込んだスクランブル暗号鍵にスクランブル演算を施すことにより、新たなスクランブル暗号鍵ＳＥＫを生成する（ステップＳ３４）。
【００５３】
次に、スクランブル処理部２１４は、ステップＳ３４で生成したスクランブル暗号鍵ＳＥＫと、スクランブル演算で用いたスクランブルキーＳＫＹと、を対応付けしてストレージＲＡＭ２１５に保持させる（ステップＳ３５）。
【００５４】
次に、タイマ２１７は、レジスタ２１６から動作停止信号ＳＴＰが供給されたか否かを判定する（ステップＳ３６）。
【００５５】
ステップＳ３６において動作停止信号ＳＴＰが供給されていないと判定された場合、タイマ２１７は、クロック信号のパルスのカウント動作を継続する。これにより、スクランブル処理部２１４は、上記したステップＳ３２に戻り、前述したステップＳ３２〜Ｓ３５の動作を再び実行する。
【００５６】
よって、暗号鍵をスクランブルしたスクランブル暗号鍵がストレージＲＡＭ２１５に保持され、この保持したスクランブル暗号鍵自体を所定期間毎にスクランブルしたものが、新たなスクランブル暗号鍵としてストレージＲＡＭ２１５に保持される。尚、この所定期間、つまりタイマ２１７が初期値からカウントを開始した時点から、タイムアウト信号Ｔｏｕｔを送出するまでに費やされる期間は、乱数生成部１３における乱数の変化周期（一定周期）よりも短い。これにより、乱数生成部１３で生成された１つの乱数に対して、複数回のスクランブルを施すことが可能となる。
【００５７】
ここで、ＣＰＵ１４は、キーストレージ２２の動作を停止させる場合には、その旨を促す動作停止信号をデータバスＢＳ１を介してキーストレージ２２に供給する。かかる動作停止信号を受けると、キーストレージ２２のレジスタ２１６は当該動作停止信号を保持し、動作停止信号ＳＴＰをタイマ２１７に供給する。これにより、キーストレージ２２による暗号鍵の保持動作が停止する。
【００５８】
尚、スクランブル処理部２１４は、電源遮断に応じて、ストレージＲＡＭ２１５に保持されている全てのスクランブル暗号鍵及びスクランブルキーを読み出し、データバスＢＳ８に送出する。この際、セキュアＤＭＡＣ２１は、データバスＢＳ８に送出された、全てのスクランブル暗号鍵及びスクランブルキーをセキュアＲＯＭ２０に転送する。よって、マイクロコンピュータ１００の電源遮断に応じて、セキュアＲＯＭ２０には、ストレージＲＡＭ２１５に保持されていた全てのスクランブル暗号鍵及びスクランブルキーが書き込まれる。
【００５９】
図９は、セキュアＤＭＡＣ２１からデータバスＢＳ８を介して受けた暗号鍵の読出し要求に応じて、キーストレージ２２内で行われる暗号鍵の読出動作の手順を表すフローチャートである。
【００６０】
先ず、スクランブル処理部２１４は、ストレージＲＡＭ２１５から、所望とするスクランブル暗号鍵を読み出し（ステップＳ４１）、引き続き、このスクランブル暗号鍵に対応付けされているスクランブルキーを読み出す（ステップＳ４２）。
【００６１】
次に、スクランブル処理部２１４は、読み出されたスクランブル暗号鍵に対してスクランブルキーを用いたデスクランブル演算を施してスクランブルを解除することにより、暗号鍵を復元する（ステップＳ４３）。
【００６２】
そして、スクランブル処理部２１４は、復元した暗号鍵をデータバスＢＳ８を介して送信する（ステップＳ４４）。
【００６３】
以上のように、キーストレージ２２は、乱数生成部１３で生成された乱数をスクランブルしたものをスクランブル暗号鍵として保持する。その後、キーストレージ２２は、保持したスクランブル暗号鍵自体を所定期間毎にスクランブルしたものを、新たなスクランブル暗号鍵として保持する（Ｓ３２〜Ｓ３６）。
【００６４】
また、キーストレージ２２は、暗号鍵の読出要求に応じて、先ず、保持したスクランブル暗号鍵を読み出し（Ｓ４１）、引き続きこのスクランブル暗号鍵に対応したスクランブルキーを読み出す（Ｓ４２）。そして、キーストレージ２２は、スクランブルキーを用いてスクランブル暗号鍵をデスクランブルすることにより、暗号鍵を復元し（Ｓ４３）、これを出力する。
【００６５】
このように、キーストレージ２２に保持されているスクランブル暗号鍵は、それ自体が所定期間毎に繰り返しスクランブルされているので、その値は時間経過につれて変化している。よって、外部からの不正なアクセスによって、キーストレージ２２に保持されているスクランブル暗号鍵が漏洩しても、このスクランブル暗号鍵からでは、暗号鍵自体を特定することはできない。また、用いられた暗号鍵が書き込まれるセキュアＲＡＭ１９及びセキュアＲＯＭ２０は、マイクロコンピュータ１００の外部からのアクセスが可能なデータバスＢＳ１ではなく、外部アクセスが不可能なデータバスＢＳ８を介して暗号鍵の読み出しが行われる。
【００６６】
したがって、不正なアクセスが行われても、マイクロコンピュータ１００で運用されている平文データの漏洩を防ぐことが可能となる。
【００６７】
尚、図１に示すマイクロコンピュータ１００では、ＣＰＵ１４に接続されており且つ外部アクセス可能なデータバスＢＳ１とは別に、ＣＰＵ１４に接続されておらず且つ外部アクセス不可なデータバスＢＳ８を用いることで秘匿性の高い暗号鍵の運用を行っている。
【００６８】
しかしながら、マイクロコンピュータ１００で用いるデータバスとしては、データバスＢＳ１だけであっても、秘匿性の高い暗号鍵の運用を行うことが可能である。
【００６９】
図１０は、かかる点に鑑みて為されたマイクロコンピュータ１００の内部構成の変形例を示すブロック図である。
【００７０】
図１０に示されるマイクロコンピュータ１００では、図１に示される構成中から、データバスＢＳ８を省くと共に、バスマスタイネーブル信号ＢＳＥを各モジュール（１２〜１７、１９〜２２）に供給している。バスマスタイネーブル信号ＢＳＥは、例えばイネーブル状態を表す論理レベル１、及びディスエーブル状態を表す論理レベル０のうちの一方を表す２値信号である。
【００７１】
バスマスタイネーブル信号ＢＳＥがディスエーブル状態を表す場合には、暗号処理部１２、ＣＰＵ１４、ＲＡＭ１５、ＲＯＭ制御部１６及びＲＯＭ１７がデータバスＢＳ１に接続される。尚、この際、乱数生成部１３、セキュアＲＡＭ１９、セキュアＲＯＭ２０、セキュアＤＭＡＣ２１、及びキーストレージ２２は、データバスＢＳ１との接続が遮断される。
【００７２】
一方、バスマスタイネーブル信号ＢＳＥがイネーブル状態を表す場合には、暗号処理部１２、乱数生成部１３、セキュアＲＡＭ１９、セキュアＲＯＭ２０、セキュアＤＭＡＣ２１、及びキーストレージ２２がデータバスＢＳ１に接続される。尚、バスマスタイネーブル信号ＢＳＥがイネーブル状態を表す場合には、ＣＰＵ１４、ＲＡＭ１５、ＲＯＭ制御部１６及びＲＯＭ１７は、データバスＢＳ１との接続が遮断される。
【００７３】
上記した点を除き、図１０に示されるマイクロコンピュータ１００に含まれる各モジュール（１２〜１７、１９〜２２）の構成は、図１に示されるものと同一である。
【００７４】
図１１は、図１０に示される構成のマイクロコンピュータ１００で用いられるキーストレージ２２の内部構成を示すブロック図である。図１１に示す構成では、バス接続部２１０を新たに設けた点を除く他の構成及びその動作は、図７〜図９で説明したものと同一である。
【００７５】
バス接続部２１は、バスマスタイネーブル信号ＢＳＥを受け、当該バスマスタイネーブル信号ＢＳＥがイネーブル状態を表す場合には、スクランブル処理部２１４及びレジスタ２１６をデータバスＢＳ１に接続する。一方、バスマスタイネーブル信号ＢＳＥがディスエーブル状態を表す場合には、バス接続部２１は、スクランブル処理部２１４及びレジスタ２１６と、データバスＢＳ１との接続を遮断する。
【００７６】
尚、キーストレージ２２以外の他のモジュール（１２〜１７、１９〜２１）にも、バスマスタイネーブル信号ＢＳＥに応じて、データバスＢＳ１との接続状態（接続又は遮断）を上述したように切り替えるバス接続部が含まれている。ただし、暗号処理部１２については、バスマスタイネーブル信号ＢＳＥの内容（イネーブル状態、ディスエイーブル状態）に拘わらず、常にデータバスＢＳ１と接続されている。
【００７７】
以下に、図１０及び図１１に示される構成を有するマイクロコンピュータ１００において、ＲＡＭ１５に記憶されている平文データ片を暗号化する際の動作を、図１２〜図１７を参照して説明する。
【００７８】
先ず、バスマスタイネーブル信号ＢＳＥをイネーブル状態に設定する。これにより、各モジュール（１２〜１７、１９〜２２）のうちで、暗号処理部１２、乱数生成部１３、セキュアＲＡＭ１９、セキュアＲＯＭ２０、セキュアＤＭＡＣ２１、及びキーストレージ２２が、データバスＢＳ１に接続される。ここで、セキュアＤＭＡＣ２１が、乱数生成部１３で生成された乱数を、図１２の太線矢印に示すように、データバスＢＳ１を介してキーストレージ２２に転送する。この際、キーストレージ２２は、転送された乱数をスクランブルしたものを、スクランブル暗号鍵として保持する。
【００７９】
次に、セキュアＤＭＡＣ２１は、キーストレージ２２に対して暗号鍵の読出要求を行い、これによりキーストレージ２２から読み出された暗号鍵を、図１３の太線矢印に示すように、データバスＢＳ１を介してセキュアＲＡＭ１９に転送する。これにより、セキュアＲＡＭ１９は、当該暗号鍵を記憶する。
【００８０】
次に、セキュアＤＭＡＣ２１は、上記したようにセキュアＲＡＭ１９に記憶した暗号鍵を読み出し、これを図１４の太線矢印に示すように、データバスＢＳ１を介してセキュアＲＯＭ２０に転送する。これにより、セキュアＲＯＭ２０は、当該暗号鍵を書き込む。つまり、セキュアＲＯＭ２０には、暗号処理部１２で暗号処理が行われる度に、その暗号処理で用いられた暗号鍵がセキュアＲＯＭ２０に追記される。よって、セキュアＲＯＭ２０には、使用した暗号鍵の履歴が残る。
【００８１】
次に、セキュアＤＭＡＣ２１は、セキュアＲＡＭ１９に記憶されている暗号鍵を読み出し、これを図１５の太線矢印に示すように、データバスＢＳ１を介して暗号処理部１２に転送する。
【００８２】
次に、図１６に示すように、バスマスタイネーブル信号ＢＳＥをディスエーブル状態に設定する。これにより、モジュール（１２〜１７、１９〜２２）のうちで、暗号処理部１２、ＣＰＵ１４、ＲＡＭ１５、ＲＯＭ制御部１６及びＲＯＭ１７がデータバスＢＳ１に接続される。ここで、ＣＰＵ１４が、ＲＡＭ１５に記憶されている平文データ片を読み出し、これを図１６の太線矢印に示すように、データバスＢＳ１を介して暗号処理部１２に転送する。暗号処理部１２は、転送された平文データを、転送された暗号鍵を用いて暗号化することにより暗号化データ片を生成する。
【００８３】
そして、図１７に示すように、バスマスタイネーブル信号ＢＳＥを再びイネーブル状態に設定し、セキュアＤＭＡＣ２１が、暗号処理部１２で生成された暗号化データ片を、図１７の太線矢印にて示すように、データバスＢＳ１を介してＲＡＭ１５に転送する。これにより、ＲＡＭ１５は、転送された暗号化データ片を記憶する。
【００８４】
このように、マイクロコンピュータ１００として図１０に示す構成を採用した場合には、データバスＢＳ８が不要となるので、図１に示す構成を採用した場合に比べて、マイクロコンピュータ１００を構築する領域の面積を縮小化することが可能となる。
【００８５】
尚、上記実施例では、ストレージＲＡＭ２１５を含むキーストレージ２２、つまり揮発性の半導体メモリを、スクランブル化した暗号鍵を保持する鍵保持部としているが、当該鍵保持部としては不揮発性のメモリ、或いは磁気又は光学式記録媒体であっても良い。
【００８６】
要するに、データの暗号化機能を備えたマイクロコンピュータ１００としては、以下の乱数生成部、及び鍵保持部を含むものであれば良い。
【００８７】
すなわち、鍵保持部（２２）は、乱数生成部（１３）で生成された乱数をスクランブルキー（ＳＫＹ）でスクランブルしたものをスクランブル暗号鍵（ＳＥＫ）として保持する。この際、鍵保持部（２２）は、スクランブル暗号鍵を所定期間毎にスクランブルキーでスクランブルしたものを新たなスクランブル暗号鍵として保持する。また、鍵保持部（２２）は、読出要求に応じて、保持したスクランブル暗号鍵をスクランブルキーを用いてデスクランブルしたものを暗号鍵として出力する。
【符号の説明】
【００８８】
１２                  暗号処理部
１３                  乱数生成部
２２                  キーストレージ
２１３                スクランブルキー生成部
２１４                スクランブル処理部
２１５                ストレージＲＡＭ
【図１】
2019121955.tif 000003
【図２】
2019121955.tif 000004
【図３】
2019121955.tif 000005
【図４】
2019121955.tif 000006
【図５】
2019121955.tif 000007
【図６】
2019121955.tif 000008
【図７】
2019121955.tif 000009
【図８】
2019121955.tif 000010
【図９】
2019121955.tif 000011
【図１０】
2019121955.tif 000012
【図１１】
2019121955.tif 000013
【図１２】
2019121955.tif 000014
【図１３】
2019121955.tif 000015
【図１４】
2019121955.tif 000016
【図１５】
2019121955.tif 000017
【図１６】
2019121955.tif 000018
【図１７】
2019121955.tif 000019