(57)【要約】【課題】  データの暗号化に用いる暗号鍵の解読が困難なマイクロコンピュータのデータ保護システムおよび保護方法を提供することにある。【解決手段】  暗号鍵生成装置３は、現在の日時データを出力する時計装置２から取得した日時データをもとに暗号鍵を生成する。この暗号鍵を用いて、暗号化装置４は、入力されたデータを暗号化する。暗号化されたデータおよび暗号鍵は、マイクロコンピュータ１Ａに内蔵のフラッシュメモリ１１へ書き込まれる。マイクロコンピュータ１Ａの復号部１３は、フラッシュメモリ１１から読み出した暗号化されたデータを、フラッシュメモリ１１から読み出した暗号鍵を復号鍵として用いて、復号する。【選択図】  図１
2007226525.tif 000002
【特許請求の範囲】
【請求項１】
現在の日時データを出力する時計装置と、
前記時計装置から前記日時データを取得し、この取得した前記日時データをもとに暗号鍵を生成する暗号鍵生成装置と、
前記暗号鍵生成装置により生成された前記暗号鍵を用いて入力されるデータを暗号化する暗号化装置と、
前記暗号化装置により暗号化されたデータおよび前記暗号鍵が書き込まれる書き換え可能なメモリと、
前記書き換え可能なメモリから前記暗号化されたデータおよび前記暗号鍵を読み出し、前記暗号鍵を復号鍵として用いて前記暗号化されたデータを復号する復号手段を有するマイクロコンピュータと
を備えることを特徴とするマイクロコンピュータのデータ保護システム。
【請求項２】
前記暗号化装置は、前記暗号化装置への暗号化要求があるごとに、その時点の日時データを前記時計装置から取得し、その取得した日時データをもとに新たな暗号鍵を生成して前記暗号化装置へ供給することを特徴とする請求項１記載のマイクロコンピュータのデータ保護システム。
【請求項３】
前記暗号鍵生成装置は、要求されるセキュリティレベルにより、生成する暗号鍵の複雑度を変えることを特徴とする請求項１または２に記載のマイクロコンピュータのデータ保護システム。
【請求項４】
前記暗号鍵生成装置は、前記日時データをシード値として乱数を発生させ、前記暗号鍵生成に使用することを特徴とする請求項３に記載のマイクロコンピュータのデータ保護システム。
【請求項５】
現在の日時データを出力する時計装置から暗号化開始時刻の日時データを取得するステップと、
前記取得した日時データをもとに暗号鍵を生成するステップと、
前記暗号鍵を用いてマイクロコンピュータで使用されるデータを暗号化するステップと、
前記暗号化により暗号化されたデータおよび前記暗号化鍵を書き換え可能なメモリに書き込むステップと
を有することを特徴とするマイクロコンピュータのデータ保護方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロコンピュータのデータ保護システムおよび保護方法に関し、特に内蔵または外付けの書き換え可能なメモリにデータを格納するマイクロコンピュータのデータ保護システムおよび保護方法に関する。
【背景技術】
【０００２】
フラッシュメモリやＥＥＰＲＯＭなどの書き換え可能なメモリを内蔵または外付けし、この書き換え可能なメモリに実行用プログラムや実行時データなどを格納するマイクロコンピュータがある。このようなマイクロコンピュータでは、この書き換え可能なメモリに格納されたデータが第三者に解読されないようにすることがデータ保護の観点から重要である。
【０００３】
そこで、従来、メモリに格納されたデータの解読を困難にするため、メモリに書き込むデータを暗号化してメモリに格納することが行われている。このとき、乱数発生回路をマイクロコンピュータに内蔵し、暗号化のための暗号鍵として乱数を発生させることなどが行われる（例えば、特許文献１参照。）。
【０００４】
しかし、このような乱数発生回路を内蔵する場合、マイクロコンピュータのチップサイズの制約上、乱数のビット数を余り大きくできないことがある。乱数のビット数が少ない場合、繰り返し暗号化を行うと同じ乱数が何度も発生し、暗号鍵自体が解読されやすくなるという問題があった。
【特許文献１】特開２０００−７６１４４号公報  （第２−３ページ、図１）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
そこで、本発明の目的は、データの暗号化に用いる暗号鍵の解読が困難なマイクロコンピュータのデータ保護システムおよび保護方法を提供することにある。
【課題を解決するための手段】
【０００６】
本発明の一態様によれば、現在の日時データを出力する時計装置と、前記時計装置から前記日時データを取得し、この取得した前記日時データをもとに暗号鍵を生成する暗号鍵生成装置と、前記暗号鍵生成装置により生成された前記暗号鍵を用いて入力されるデータを暗号化する暗号化装置と、前記暗号化装置により暗号化されたデータおよび前記暗号鍵が書き込まれる書き換え可能なメモリと、前記書き換え可能なメモリから前記暗号化されたデータおよび前記暗号鍵を読み出し、前記暗号鍵を復号鍵として用いて前記暗号化されたデータを復号する復号手段を有するマイクロコンピュータとを備えることを特徴とするマイクロコンピュータのデータ保護システムが提供される。
【０００７】
また、本発明の一態様によれば、現在の日時データを出力する時計装置から暗号化開始時刻の日時データを取得するステップと、前記取得した日時データをもとに暗号鍵を生成するステップと、前記暗号鍵を用いてマイクロコンピュータで使用されるデータを暗号化するステップと、前記暗号化により暗号化されたデータおよび前記暗号化鍵を書き換え可能なメモリに書き込むステップとを有することを特徴とするマイクロコンピュータのデータ保護方法が提供される。
【発明の効果】
【０００８】
本発明によれば、暗号化を行なうごとに暗号化要求時点の日時データをもとにした新しい暗号鍵を生成するので暗号鍵が解読されにくく、マイクロコンピュータで使用されるデータのセキュリティを向上させることができる。
【発明を実施するための最良の形態】
【０００９】
以下、本発明の実施例を図面を参照して説明する。
【実施例１】
【００１０】
図１は、本発明の実施例１に係るマイクロコンピュータのデータ保護システムの構成の例を示すブロック図である。
【００１１】
本実施例のマイクロコンピュータのデータ保護システムは、マイクロコンピュータ１Ａに内蔵されている書き換え可能なメモリであるフラッシュメモリ１１に書き込まれるプログラムデータを暗号化して保護するものである。
【００１２】
そのために、本実施例のマイクロコンピュータのデータ保護システムは、現在の日時データを出力する時計装置２と、時計装置２から出力される日時データを取得し、この取得した日時データをもとに暗号鍵を生成する暗号鍵生成装置３と、記暗号鍵生成装置３により生成された暗号鍵を用いて入力されるプログラムデータを暗号化する暗号化装置４とを有する。
【００１３】
暗号化装置４により暗号化されたプログラムデータは、マイクロコンピュータ１Ａに内蔵されるフラッシュメモリ１１に書き込まれる。
【００１４】
ここで、本実施例の暗号化装置４は、復号の際に暗号鍵をそのまま復号鍵として用いて復号することのできる暗号化アルゴリズムを用いるものとする。
【００１５】
そこで、フラッシュメモリ１１には、暗号鍵生成装置３により生成された暗号鍵も書き込む。
【００１６】
一方、マイクロコンピュータ１Ａは、フラッシュメモリ１１に書き込まれた暗号鍵を読み出し、これを復号鍵として格納する復号鍵バッファ１２と、復号鍵バッファ１２に格納された復号鍵を用いてフラッシュメモリ１１から読み出した暗号化されたプログラムデータを復号する復号部１３と、復号されたプログラムデータに書かれたプログラムを実行するＣＰＵ１４とを有する。
【００１７】
図２は、本実施例において、入力されたプログラムデータを暗号化し、フラッシュメモリ１１へ書き込むまでの手順を示したフロー図である。
【００１８】
暗号化装置４に暗号化の要求があると、暗号鍵生成装置３は、時計装置２から出力される現在の日時データ、すなわち暗号化要求時点の日時データを取得する（ステップＳ０１）。
【００１９】
続いて、暗号鍵生成装置３は、時計装置２から取得した暗号化要求時点の日時データをもとに暗号鍵を生成する（ステップＳ０２）。
【００２０】
次に、暗号化装置４が、暗号鍵生成装置３により生成された暗号鍵を用いて、入力されたプログラムデータの暗号化を行う（ステップＳ０３）。
【００２１】
最後に、暗号化装置４により暗号化されたプログラムデータおよび暗号鍵生成装置３により生成された暗号鍵をマイクロコンピュータ１Ａのフラッシュメモリ１１に書き込み（ステップＳ０４）、プログラムデータの暗号化処理を終了する。
【００２２】
次に、本実施例で使用する日時データ、およびこの日時データをもとに生成される暗号鍵について説明する。
【００２３】
図３は、時計装置２から出力される日時データの例である。日時データは、年月日により日付を表す日付データと、時刻を表す時刻データにより構成されるものとする。
【００２４】
例えば、暗号化要求時刻が、２０００５年０６月０２日１０時３７分２５秒９４であるとき、日時データとして、日付を示す２００５０６０２の各桁の値をそれぞれ４ビットの２進数で表した３２ビットの日付データと、時刻を示す１０３７２５９４の各桁の値をそれぞれ４ビットの２進数で表した３２ビットの時刻データとが出力されるものとする。
【００２５】
図３に示した例では、日付データは、００１０  ００００  ００００  ０１０１  ００００  ０１１０  ００００  ００１０となり、時刻データは、００１０  ００００  ００１１  ０１１１  ００１０  ０１０１  １００１  ０１００となる。
【００２６】
暗号鍵生成装置３は、この日付データおよび時刻データにより構成される日時データをもとに暗号鍵を生成する。その１例を図４に示す。
【００２７】
図４に示す例では、暗号鍵生成装置３は、日付データおよび時刻データをそのまま暗号鍵として使用する。
【００２８】
すなわち、暗号鍵生成装置３は、コード１、コード２の２つのコードで構成される暗号鍵を生成するものとし、コード１として日付データを出力し、コード２として時刻データを出力するものとする。
【００２９】
このようにして生成される暗号鍵は、暗号化要求時点の日時データをもとに作成されるので、暗号化を行なうごとに異なるものとなる。したがって、暗号化を繰り返し実行しても、そのつど異なる暗号鍵が使用されるので、暗号鍵の解読は困難である。
【００３０】
図５に、暗号鍵の生成をさらに複雑にした例を示す。
【００３１】
図５に示す例では、暗号鍵生成装置３は、日付データと時刻データとの間で演算を行なって暗号鍵を生成する。
【００３２】
すなわち、この場合、暗号鍵生成装置３は、日付データと時刻データとの論理和（ＯＲ）演算の結果をコード１として出力し、日付データの反転出力から時刻データを減算した結果をコード２として出力する。
【００３３】
このような演算を行なうことにより、暗号鍵の解読は一層困難になる。
【００３４】
どのような暗号鍵を生成するかは、要求されるセキュリティレベルに応じて決定するものとする。
【００３５】
次に、暗号化装置４による暗号化について説明する。本実施例では、暗号鍵と復号鍵を同じものとして暗号化および復号を行なう。そのような暗号化は、入力データと暗号鍵との間で排他的論理和演算（ＥＸ−ＯＲ、ＥＸ−ＮＯＲ）を行なうことで実現できることが知られている。この場合、暗号化されたデータは、暗号鍵と同じ復号鍵を用い、暗号化と同じ演算を行うことにより復号される。
【００３６】
図６に、このような排他的論理和演算を用いた暗号化装置４による暗号化の例を示す。
【００３７】
図６に示す例では、暗号化装置４に入力されるデータを偶数番地の入力データと奇数番地の入力データに分け、偶数番地の入力データは、暗号鍵生成装置３から出力される暗号鍵のコード１のデータとビットごとのＥＸ−ＯＲ演算を行い、奇数番地の入力データは、暗号鍵生成装置３から出力される暗号鍵のコード２のデータとビットごとのＥＸ−ＮＯＲ演算を行うものとする。それぞれの演算結果が、暗号化されたプログラムデータとして、暗号化装置４から出力される。
【００３８】
このような本実施例によれば、暗号化に用いる暗号鍵が暗号化要求時点の日時データをもとに生成されるので、暗号化を繰り返し実行したときに、そのつど異なる暗号鍵が生成される。そのため、例え、第三者が複数の暗号化されたデータを不正に読み取って暗号鍵を推測しようとしても、その推測が非常に困難である。その結果、暗号化されたプログラムの解読が困難となり、マイクロコンピュータで使用されるプログラムのセキュリティの向上を図ることができる。
【実施例２】
【００３９】
図７は、本発明の実施例２に係るマイクロコンピュータのデータ保護システムの構成の例を示すブロック図である。
【００４０】
本実施例では、実施例１における暗号化装置４の代わりに、マイクロコンピュータ１Ｂが、入力されたプログラムデータを暗号化する暗号化部４１を内蔵する。また、マイクロコンピュータ１Ｂは、暗号鍵生成装置３から入力される暗号鍵を一時格納する暗号鍵バッファ３１を有する。なお、図７において、図１に示したブロックと同様の機能を有するブロックには図１と同じ符号を付し、ここではその詳細な説明を省略する。
【００４１】
本実施例においては、マイクロコンピュータ１Ｂへ入力されるプログラムデータに対する暗号化が暗号化部１へ要求されたときの日時データを時計装置２から取得した暗号鍵生成装置３により生成された暗号鍵は、暗号鍵バッファ３１へ入力され、暗号鍵バッファ３１に一旦格納される。暗号鍵バッファ３１に格納された暗号鍵は、フラッシュメモリ１へ転送されるとともに、暗号化部４１による暗号化に使用される。暗号化部４１による暗号化が終了すると、暗号鍵バッファ３１に格納された暗号鍵は消去される。
【００４２】
暗号化部４１により暗号化されたプログラムデータは、フラッシュメモリ１１へ書き込まれる。
【００４３】
暗号化されたプログラムデータを復号するときは、実施例１と同様、フラッシュメモリ１１から読み出した暗号鍵を復号鍵として復号鍵バッファ１２へ格納し、この復号鍵バッファ１２に格納された復号鍵を用いて、フラッシュメモリ１１から読み出した暗号化されたプログラムデータを復号部１３により復号する。
【００４４】
復号されたプログラムデータに書かれたプログラムはＣＰＵ１４により実行されるが、そのプログラムの実行中に、命令によっては、命令実行時のデータをフラッシュメモリ１１へ書き込むことがある。そこで、本実施例では、このような実行時データも暗号化してフラッシュメモリ１１へ書き込み、実行時データに対しても機密の保護が図れるようにする。この実行時データに対する暗号化も暗号化部４１にて行なう。
【００４５】
実行時データに対する暗号化を行う場合、まず、フラッシュメモリ１１から暗号鍵を読み出して暗号鍵バッファ３１に格納する。続いて、暗号化部４１が、暗号鍵バッファ３１に格納された暗号鍵を用いて、ＣＰＵ１４から送られた実行時データの暗号化を行なう。暗号化された実行時データはフラッシュメモリ１１へ書き込まれる。
【００４６】
暗号化された実行時データを復号するときは、プログラムデータの復号と同様、フラッシュメモリ１１から読み出した暗号鍵を復号鍵として復号鍵バッファ１２へ格納し、この復号鍵バッファ１２に格納された復号鍵を用いて、フラッシュメモリ１１から読み出した暗号化された実行時データを復号部１３により復号する。
【００４７】
このような本実施例によれば、プログラム実行時のデータも、プログラムデータの暗号化に使用したものと同じ暗号鍵を用いて暗号化した上でフラッシュメモリに格納されるので、フラッシュメモリに対する不正な読み出しへの防御が強化され、マイクロコンピュータのセキュリティをより向上させることができる。
【実施例３】
【００４８】
図８は、本発明の実施例３に係るマイクロコンピュータのデータ保護システムの構成の例を示すブロック図である。
【００４９】
本実施例のマイクロコンピュータ１Ｃは、フラッシュメモリを内蔵せず、外付けのフラッシュメモリ５を用いる。
【００５０】
本実施例のマイクロコンピュータのデータ保護システムは、実施例１と同様に、時計装置２、暗号鍵生成装置３および暗号化装置４を有する。また、マイクロコンピュータ１Ｃには、実施例２と同様に、復号鍵バッファ１２、復号部１３、ＣＰＵ１４および暗号鍵バッファ３１が含まれる。それぞれのブロックの機能は、実施例１および実施例２で説明したものと同様であるのでここではその詳細な説明は省略する。
【００５１】
また、本実施例のマイクロコンピュータ１Ｃは、暗号化部４２を含む。暗号化部４２は、実施例２の暗号化部４１とは異なり、ＣＰＵ１３から出力される実行時データのみを暗号化する。
【００５２】
本実施例のフラッシュメモリ５へ書き込むプログラムデータの暗号化は、実施例１と同様、暗号化装置４で行う。一方、マイクロコンピュータ１Ｃにおけるプログラム実行中にＣＰＵ１３から出力される実行時データは、暗号化部４２にて暗号化されてフラッシュメモリ５へ書き込まれる。ここで、暗号化装置４と暗号化部４２で使用される暗号化アルゴリズムは同一のものとする。これにより、復号部１３は、暗号化されたプログラムデータも実行時データも同一の復号アルゴリズムで復号することができる。
【００５３】
本実施例では、フラッシュメモリ５が単体で使用されるため、マイクロコンピュータに内蔵されているときよりも、不正な読み出しの脅威に曝される危険性が高い。
【００５４】
そこで、本実施例では、暗号鍵生成装置３が、日時データをシード値として内蔵の乱数発生部にて乱数を発生させ、この乱数をもとに暗号鍵を作成するようにする。これにより、フラッシュメモリ５に書き込まれた暗号鍵の解読をより困難にする。
【００５５】
さらに、暗号化装置４および暗号化部４２がフラッシュメモリ５へデータを書き込むとき、その書き込み先アドレスおよび書き込みデータにスクランブルをかけて、フラッシュメモリ５に格納されたデータの解読をより難しくする。
【００５６】
図９に、フラッシュメモリ５に書き込むデータのスクランブルの例を示す。
【００５７】
図９（ａ）に書き込み対象のデータの構成の例を示す。書き込み対象のデータＤＡＴＡ０、ＤＡＴＡ１、ＤＡＴＡ２、ＤＡＴＡ３、・・・は、それぞれ８カラムのデータで構成され、フラッシュメモリ５へは４カラム単位のデータとして書き込まれるものとする。そこで、ＤＡＴＡ０の１〜４カラムのデータをｄ０１、５〜８カラムのデータをｄ０２と表すようにし、以下、同様に、ＤＡＴＡ１をｄ１１、ｄ１２、ＤＡＴＡ２をｄ２１、ｄ２２、ＤＡＴＡ３をｄ３１、ｄ３２、・・・と表すものとする。
【００５８】
このようなデータをフラッシュメモリ５の例えばアドレスＡＤＲ０以降に書き込むとした場合に、本実施例では、図９（ｂ）に示すようにアドレスおよびデータをスクランブルさせて書き込む。
【００５９】
図９（ｂ）に、図９（ａ）に示したデータに対するスクランブルの例を示す。
【００６０】
この例では、ＤＡＴＡ０のデータｄ０１はアドレスＡＤＲ３のカラム５〜８へ、データｄ０２はアドレスＡＤＲ２のカラム１〜４へ、ＤＡＴＡ１のデータｄ１１はアドレスＡＤＲ１のカラム５〜８へ、データｄ１２はアドレスＡＤＲ１のカラム１〜４へ、ＤＡＴＡ２のデータｄ２１はアドレスＡＤＲ３のカラム１〜４へ、データｄ２２はアドレスＡＤＲ２のカラム５〜８へ、ＤＡＴＡ３のデータｄ３１はアドレスＡＤＲ１のカラム１〜４へ、データｄ３２はアドレスＡＤＲ０のカラム５〜８へ、それぞれ書き込む。
【００６１】
このような本実施例によれば、マイクロコンピュータに外付けされるフラッシュメモリに対しては、書き込まれる暗号鍵およびデータの生成アルゴリズムをより高度化することにより、より高度のセキュリティが得られるようにすることができる。
【図面の簡単な説明】
【００６２】
【図１】本発明の実施例１に係るマイクロコンピュータのデータ保護システムの構成の例を示すブロック図。
【図２】本発明のデータ保護方法により図1に示すマイクロコンピュータで使用されるプログラムデータを保護する手順を示すフロー図。
【図３】本発明の実施例に係る時計装置から出力される日時データの例を示す図。
【図４】本発明の実施例１に係る暗号鍵生成装置における暗号鍵生成の例を示す図。
【図５】本発明の実施例１に係る暗号鍵生成装置における暗号鍵生成の別の例を示す図。
【図６】本発明の実施例に係る暗号化装置における暗号化の例を示す図。
【図７】本発明の実施例２に係るマイクロコンピュータのデータ保護システムの構成の例を示すブロック図。
【図８】本発明の実施例３に係るマイクロコンピュータのデータ保護システムの構成の例を示すブロック図。
【図９】本発明の実施例３におけるフラッシュメモリへ書き込むデータのスクランブルの例を示す図。
【符号の説明】
【００６３】
１Ａ、１Ｂ、１Ｃ  マイクロコンピュータ
２  時計装置
３  暗号鍵生成装置
４  暗号化装置
５、１１  フラッシュメモリ
１２  復号鍵バッファ
１３  復号部
１４  ＣＰＵ
３１  暗号鍵バッファ
４１、４２  暗号化部
【図１】
2007226525.tif 000003
【図２】
2007226525.tif 000004
【図３】
2007226525.tif 000005
【図４】
2007226525.tif 000006
【図５】
2007226525.tif 000007
【図６】
2007226525.tif 000008
【図７】
2007226525.tif 000009
【図８】
2007226525.tif 000010
【図９】
2007226525.tif 000011