(57)【要約】      （修正有）【課題】  データ転送の際データの保護を行う。【解決手段】  データの書き込みが行え、あらかじめ復号のためのデータを格納している不揮発性ＲＯＭを備え、通常時は前記不揮発性ＲＯＭに書き込まれているデータで制御を行い、書き込み時には前記不揮発性ＲＯＭ内のデータの一部もしくは全ての書き換えを行う電子制御装置である。また、新規データを転送する際、転送する新規データは複数のＭＡＣ（メッセージ認証コード）を付加し、ＣＢＣモードにて暗号化を行う暗号化手段により暗号処理を施されており、当該電子制御装置は転送された暗号データを不揮発性ＲＯＭにあらかじめ格納されているデータを利用して復号化処理を行う復号化手段と、復号されたデータが正規のデータであるかどうかを付加されているＭＡＣによって認証を行う認証手段とを備えることを特徴とする。【選択図】        図１
2006165874.tif 000002
【特許請求の範囲】
【請求項１】
入力されたデータの演算処理を行うＣＰＵと、あらかじめデータを格納する書き換え可能な不揮発性ＲＯＭと、前記ＣＰＵの作業領域として使用されるＲＡＭと、データの送受信を行うＩ／Ｏポートとを備え、通常時は前記不揮発性ＲＯＭに書き込まれているプログラムで制御を行い、書き込み時には前記Ｉ／Ｏポートにより受信した暗号データを前記不揮発性ＲＯＭに格納されているデータにより復号化を行う復号手段と、前記暗号データが正規のデータであるかどうか前記不揮発性ＲＯＭに格納されているデータにより認証を行う認証手段とを備える電子制御装置であって、
前記不揮発性ＲＯＭは通常時実行する通常プログラムと受信したデータを復号するための復号プログラムと復号したデータが正規のデータであるか認証を行う認証プログラムと前記不揮発性ＲＯＭの書き換えを行うための書き換えプログラムと復号時に使用するデータと認証時に使用するデータを格納し、前記暗号データは１つの平分データに複数のＭＡＣ（メッセージ認証コード）を付加しＣＢＣ（ｃｉｐｈｅｒ  ｂｌｏｃｋ  ｃｈａｉｎｉｎｇ）モードを使用して暗号化を行ったデータであり、
また、前記復号手段は前記暗号データの復号を行うことを特徴とし、前記認証手段は前記ＭＡＣによって認証を行うことを特徴とする電子制御装置。
【請求項２】
前記復号時に使用するデータはＣＢＣモードにて暗号化を行うときに使用する初期値ベクトルと鍵とＳ−ｂｏｘ（入力されたデータを非線形で出力するための行列）であり、前記復号手段は前記初期値ベクトルと前記鍵と前期Ｓ−ｂｏｘを使用して復号を行うことを特徴とする請求項１記載の電子制御装置。
【請求項３】
前記平分データは暗号化を行うデータの先頭に当該データのバイト数を添付したデータであり、前期復号手段は前記添付されているバイト数だけ前記暗号データの復号を行うことを特徴とした請求項１または２に記載の電子制御装置。
【請求項４】
平分に複数のＭＡＣを付加し、ＣＢＣモードにて暗号化を行った暗号データを請求項１、２、３いずれかに記載の電子制御装置へ送信することを特徴としたデータ保護システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ転送時のセキュリティや認証などを含む電子制御装置及びデータ保護システムに関するものである。
【背景技術】
【０００２】
近年、インターネットなどのネットワーク（インターネット）の普及とともに、データの配信やソフトウェアのアップグレードなどがネットワークを介してユーザに提供するシステムの構築が提案されている。これらの情報には重要なデータが含まれていることがあるので、情報の漏洩や不正コピー、改竄などが大きな問題となっている。そのため、これらの問題を防ぐためにいくつかの情報保護、認証技術が開発されている。その一つとして、ＭＡＣ（メッセージ認証コード）認証技術がある。ＭＡＣは慣用暗号によって生成される短い固定長のデータで、メッセージに付加される。この技術では、通信にかかわる２つの主体ＡとＢが、共有鍵Ｋを共有することを前提としている。ＡがＢにメッセージを送る際には、メッセージと鍵の関数であるＭＡＣ＝Ｃ（Ｍ，Ｋ）を計算する。そして、メッセージとＭＡＣが受信者に送られる。受信者は受け取ったメッセージに対して、同じ鍵を使って同じ計算を行い、新たなＭＡＣを計算し、受け取ったＭＡＣと計算されたＭＡＣが一致すれば、そのメッセージは送信中に変化しなかったことを意味する。
【０００３】
この技術を使用することで現在以下のようなことが行われている。
【０００４】
データの配信やソフトウェアなどのアップグレードをネットワークを介して提供する際、そのデータにＭＡＣを付加し、さらに暗号化を施してからデータの転送を行う。データを受け取る受信端末は暗号用および認証用それぞれの共通鍵を有しており、データを受信すると受信端末内のＲＡＭにおいて復号および認証を行うことができる。認証によりデータが改竄されていないことがわかると受信端末はデータの書き換えもしくはソフトウェアのアップグレードを開始する。また、２つの共有鍵（暗号用、認証用）は受信端末から取り出すことができないので、受信端末へのデータ転送中の情報漏洩を防ぐことができ、かつ受信端末は付加されているＭＡＣにより情報の改竄を検知することができるため、誤ったデータの書き換えを防ぐことができる。
【特許文献１】特開２００２−１０８７１０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記従来例では平文データ全体に対して１つのＭＡＣを付加し、さらに暗号化を施した暗号データを受信端末に転送していることから以下のような欠点があった。
【０００６】
受信端末はＲＡＭ上で受信データの復号および認証を行う。復号データの認証は復号データからＭＡＣを計算し付加されているＭＡＣと一致するか否かで行う。このことから、認証が終了してからデータの書き換えを行おうとすると、受信端末はＲＡＭ上に受信データ全てを保有し、この受信データの復号および認証を行わなければならない。もし、受信データのデータ量が大きいとＲＡＭは全てのデータを保有することが困難になるという問題が生じる。また、この問題を解決するためにデータの送信をブロック（ＭＡＣの付加および暗号化を行ったデータを数ｂｙｔｅごとに区切る）単位にすることが考えられる。これを行うと受信端末はブロックごとに復号およびＭＡＣ（途中段階のＭＡＣ）の計算を行い復号データの書き込みを行う。そして、最後のブロックにおいて復号およびＭＡＣ（最終的なＭＡＣ）の計算を行い復号データの書き込み及びこれまで書き込んだ復号データの認証を行う。この方法をとると小さなＲＡＭ領域においても復号および認証を行うことができるが、認証はデータを全て書き込んでからでなければ行うことができずデータの認証をリアルタイム（データが書き換えられているところを書き込みが行われる前に検知）に実行することはできなくなる。これでは、データのリカバリーに時間がかかってしまう。
【０００７】
本発明は、上述の問題点に着目してなされたものであって、プリンタ装置にデータを送信する際、データの内容を容易に読み取れないように保護し、ノイズまたは意図的な行為により転送データの一部もしくは全てが書き換えられたときや、データの中抜けや入れ替えが行われたときにそのバグを早期に発見でき、システムの破壊を免れることができる電子制御装置及びデータ保護システムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するため、本出願にかかわる第１の発明は入力されたデータの演算処理を行うＣＰＵと、あらかじめデータを格納する書き換え可能な不揮発性ＲＯＭと、前記ＣＰＵの作業領域として使用されるＲＡＭと、データの送受信を行うＩ／Ｏポートとを備え、通常時は前記不揮発性ＲＯＭに書き込まれているプログラムで制御を行い、書き込み時には前記Ｉ／Ｏポートにより受信した暗号データを前記不揮発性ＲＯＭに格納されているデータにより復号化を行う復号手段と、前記暗号データが正規のデータであるかどうか前記不揮発性ＲＯＭに格納されているデータにより認証を行う認証手段とを備える電子制御装置であって、
前記不揮発性ＲＯＭは通常時実行する通常プログラムと受信したデータを復号するための復号プログラムと復号したデータが正規のデータであるか認証を行う認証プログラムと前記不揮発性ＲＯＭの書き換えを行うための書き換えプログラムと復号時に使用するデータと認証時に使用するデータを格納し、前記暗号データは１つの平分データに複数のＭＡＣ（メッセージ認証コード）を付加しＣＢＣ（ｃｉｐｈｅｒ  ｂｌｏｃｋ  ｃｈａｉｎｉｎｇ）モードを使用して暗号化を行ったデータであり、
また、前記復号手段は前記暗号データの復号を行うことを特徴とし、前記認証手段は前記ＭＡＣによって認証を行うことを特徴とする電子制御装置。
【０００９】
第１の発明によると、電子制御装置に次々に転送された暗号データブロックに対して、あらかじめ不揮発性ＲＯＭに格納されている共通鍵１やＳ−ｂｏｘ（入力されたデータを非線形で出力するための行列）を利用してこれを復号化する。この復号データからＭＡＣ部分を省いたデータが転送する前のデータブロックと一致するかどうかを確認するために復号データのＭＡＣ部分を省いたデータに共通鍵２を使用してＭＡＣ処理を行いそれにより得たＭＡＣと復号データのＭＡＣ部分とを比較して認証を行う。この認証で一致していなければエラーを検出し、一致していればＭＡＣ部分を省いた復号データを不揮発性ＲＯＭに書き込む。全ての暗号データブロックおいてこの処理を行う。これにより、少ないＲＡＭ領域においても処理することが出来かつ、認証をリアルタイムに行うことができる。
【００１０】
前記暗号データブロックは共通鍵２を使用してＭＡＣを複数個付加し、これに共通鍵１を使用して暗号化処理を行ったものである。また、ブロックの単位はＭＡＣごとに区切った単位である。
【００１１】
また、本出願にかかわる第２の発明は前記復号時に使用するデータはＣＢＣモードにて暗号化を行うときに使用する初期値ベクトルと鍵とＳ−ｂｏｘ（入力されたデータを非線形で出力するための行列）であり、前記復号手段は前記初期値ベクトルと前記鍵と前期Ｓ−ｂｏｘを使用して復号を行うことを特徴とする請求項１記載の電子制御装置。
【００１２】
あらかじめＲＯＭに格納されている初期値ベクトルを使用することで転送された暗号データの最初のブロック（ＭＡＣ付加単位の最初のブロックからＭＡＣを抜いたもの）が抜け落ちていたとしても、それを検知することができる。
【００１３】
また、本出願にかかわる第３の発明は前記平分データは暗号化を行うデータの先頭に当該データのバイト数を添付したデータであり、前期復号手段は前記添付されているバイト数だけ前記暗号データの復号を行うことを特徴とした請求項１または２に記載の電子制御装置。
【００１４】
これにより、転送される暗号データが途中で切れていても、それを検知することができる。
【００１５】
また、本出願にかかわる第４の発明は平分に複数のＭＡＣを付加し、ＣＢＣモードにて暗号化を行った暗号データを請求項１、２、３いずれかに記載の電子制御装置へ送信することを特徴としたデータ保護システム。
【００１６】
これにより、データの転送中に情報の漏洩を防ぐことができ、かつ情報の改竄が行われたとしても電子制御装置がその改竄を検知することができるデータの保護システムを提供する。
【発明の効果】
【００１７】
以上説明したように、本発明によれば、不揮発性ＲＯＭにデータを転送する際、データの漏洩を防ぐことができ、何らかの要因でデータを書き換えられた場合においても、それを発見しシステムの破壊を免れることができる。また、複数のＭＡＣを付加することで認証の単位が小さくなり小さなＲＡＭ領域においてもリアルタイム（不揮発性ＲＯＭに復号データを書き込む前に）にデータの改竄を検知することができる。さらに、ＣＢＣモードを使用していることからデータの入れ替えや中抜けにも対応する。
【発明を実施するための最良の形態】
【００１８】
以下、本発明を実施するための最良の形態について、図を参照しながら説明する。
【実施例１】
【００１９】
図１は第１の実施形態に係わるデータ転送システムのシステム構成およびプリンタ装置０１のハードウェア構成図である。また、図４は図１のデータ転送システムに係わるデータ保護システムである。図１のデータ転送システムはデータを要求するプリンタ装置０１と、このプリンタ装置からの要求を受け、インターネット０５を介してデータのやり取りを行うＰＣ０４とで構成されている。ここで、このプリンタ装置０１はプリンタ装置０１の制御を行うための制御ユニット０２と、図２のようなデータの演算処理を行うＣＰＵ１１と、ＣＰＵ１１が実行するプログラムやデータを記憶するＲＯＭ１２と、ＣＰＵ１１の作業領域として使用されるＲＡＭ１３と、データの送受信を行うＩ／Ｏポート１４とがワンチップ化されていて、ＰＣ０４からのデータを受信するワンチップＣＰＵ０３とで構成されている。
【００２０】
また、図２のＲＯＭは図３のような、電源を立ち上げたときに走り出すブートプログラム２１と、プリンタ装置０１のプログラムを書き換えるための書き込みプログラム２２と、プリンタ装置０１の制御を行うための制御プログラム２３と、図２のワンチップＣＰＵ０３に送られてきたデータの復号化を行うための復号プログラム２４と、図２のワンチップＣＰＵ０３に送られてきたデータの認証を行うための認証プログラム２５と、復号化に使用する初期値ベクトル２６と、復号化や認証に使用するデータであるＳ−ｂｏｘ２７（入力されたデータを非線形で出力するための行列）と、復号化に使用するデータである鍵ａ２８と、認証に使用するデータである鍵ａ２９とを格納している。
【００２１】
次に、電子制御装置に転送される暗号データの暗号化手段と制御装置が受信した暗号データの復号手段、認証手段および書き込み手段を図４で説明する。
【００２２】
図１のインターネット０５を介してＰＣ０４にデータをダウンロードする際、データは図４の暗号化手段３１のような暗号化処理が行われてからデータの転送が行われる。ＰＣ０４に転送されたデータは次にワンチップＣＰＵ０３に転送され図４の復号化手段３２のような処理を施した後、認証手段３３により認証を行ってから書き込み手段３４によってデータのＲＯＭへの書き込みを行う。ここで、制御装置が実際に行う処理は復号手段３２と認証手段３３と書き込み手段３４のみである。
【００２３】
図４において平文は暗号化を行う前の元のデータ（４０ｂｙｔｅ）、ｂｙｔｅ数データは平文の全データ数（ここでは４０ｂｙｔｅ）、ＭＡＣ（Ａ、Ｂ、Ｃ）はデータＡとＢに鍵Ｃを使用したＭＡＣデータ、暗号文は入力データを暗号化したデータ、復号文は暗号文を復号化したデータ、暗号処理入力バイトは８ｂｙｔｅ、ＭＡＣ認証単位は１６ｂｙｔｅ（ＭＡＣの付加分を考えると２４ｂｙｔｅ）、ＭＡＣ処理に使用する鍵は鍵ａ、暗号化、復号化に使用する鍵は鍵ｂである。
【００２４】
暗号化手段３１は平文の先頭に当該平文のバイト数データ（ここでは４０ｂｙｔｅ）を添付する。ここでの平文１〜５および添付したバイト数データはそれぞれ８ｂｙｔｅである。これは暗号化処理の入力データを８ｂｙｔｅとしたためである。
【００２５】
2006165874.tif 000003
【００２６】
次に、出来上がったデータ（ＭＡＣを付加したデータ７２ｂｙｔｅ）をＣＢＣモードにて暗号化する。（ここで使用される鍵ｂと初期値ベクトルは図２のＲＯＭにあらかじめ格納しておく。）これにより得た暗号データをＰＣ０４にダウンロードし、さらにワンチップＣＰＵ０３にデータ転送を行う。ＰＣ０４からワンチップＣＰＵ０３への１回のデータ転送ｂｙｔｅは認証単位（ここでは２４ｂｙｔｅ）で決定する。転送されたデータは復号手段３２、認証手段３３、書き込み手段３４を経たのち次のデータ転送を行う。この処理をデータ全ての書き込みが終わるかエラーが発生するまで行う。復号手段３２はワンチップＣＰＵにて暗号データを受信する。受信したデータはあらかじめＲＯＭ１２に格納されている初期値ベクトル２６と鍵ｂ２９により復号化される。認証手段３３は復号化されたデータである復号文のＭＡＣ部分であろう８ｂｙｔｅ（ここでは、復号文３、６、９）を取り除いたデータに対してあらかじめＲＯＭ１２に格納されている鍵ａを使用してＭＡＣを作成する。作成したＭＡＣと復号文のＭＡＣ部分であろうデータとを比較して一致していれば書き込み手段３４を実行し一致しなければエラーを検出する。書き込み手段３４は最初に受信した認証単位（暗号文１〜３までの２４ｂｙｔｅ）のデータの場合だけ処理が異なる。最初の２４ｂｙｔｅデータの頭８ｂｙｔｅ（復号文１）は平文のバイト数が格納されている。つまり、ＲＯＭへ書き込みを行うべきデータ量が格納されているので、まずはそのデータを取り出す。このバイト数データから後何回データの転送および書き込みを行うかを計算して、バイト数データとＭＡＣ部分以外の転送データ（ここでは復号文２）の書き込みを行う。転送回数が複数である場合データの転送要求を出す。最初に受信したデータ以外の場合はＭＡＣ部分以外の復号データの書き込みを行いデータの転送要求を出す。この処理を転送回数分行う。
【００２７】
このように図４の構成によると、データに対して暗号化を施していることからＰＣ０４にデータをダウンロード中にその内容を読み取られることはなく、またＰＣ０４にデータをダウンロード中もしくはワンチップＣＰＵ０３にデータの転送中にノイズがのりデータの一部もしくは全てに変化が生じたり、故意にデータの書き換えが行われたりすると、認証手段３３でのＭＡＣ比較が一致しなくなりデータの改竄が行われたことを検知することができる。また、ＣＢＣモードを使用していることから暗号文の認証単位による前後関係が発生する。これから、認証単位でのデータの入れ替えやデータの中抜けが発生したときもそれを検知することができる。さらに、小さなバイト単位で認証を行えることからＲＡＭに一度に取り込むデータ量を少なくすることができ、かつ認証を行ってからデータの書き込みを行うことができる。これによりリアルタイムにデータの認証および書き込みが可能になる。
【００２８】
次に、データの転送からデータの書き込みまでのフローを図６のフローチャートに示しそれを説明する。
【００２９】
１．認証単位バイト数（ここでは２４ｂｙｔｅ）だけデータを受信する。
【００３０】
２．Ｉｎｉｔ＿ｖｅｃ（ＣＢＣモードにて復号するデータに排他的論理輪を行うデータ）にＲＯＭ内に格納されている初期値ベクトルを代入する。
【００３１】
３．鍵ｂとＩｎｉｔ＿ｖｅｃを使用して受信したデータ（２４ｂｙｔｅ）を復号化する。
【００３２】
４．復号したデータの先頭１６ｂｙｔｅに鍵ａを使用してＭＡＣを作成する。
【００３３】
５．復号したデータ後ろ８ｂｙｔｅと作成したＭＡＣを比較して一致していれば６に進み、一致していなければデータの改竄を検知してｅｒｒｏｒを出力する。
【００３４】
６．ｃｏｕｎｔに復号したデータ先頭８ｂｙｔｅ（全平文ｂｙｔｅ数ここでは４０）を入力する。
【００３５】
７．ｃｏｕｎｔ≦０であれば書き込みを終了しｃｏｕｎｔ≦０でなければ８へ進む。
【００３６】
８．復号したデータ９〜１６ｂｙｔｅ目を書き込む。
【００３７】
９．ｃｏｕｎｔ＝ｃｏｕｎｔ−８。
【００３８】
１０．ｃｏｕｎｔ≦０であれば書き込みを終了しｃｏｕｎｔ≦０でなければ１１へ進む。
【００３９】
１１．Ｉｎｉｔ＿ｖｅｃに１７〜２４ｂｙｔｅ目を代入し初期値ベクトルを更新する。
【００４０】
１２．次のデータ２４ｂｙｔｅを受信する。
【００４１】
１３．鍵ｂとＩｎｉｔ＿ｖｅｃを使用して受信したデータ（２４ｂｙｔｅ）を復号化する。
【００４２】
１４．復号したデータの先頭１６ｂｙｔｅに鍵ａを使用してＭＡＣを作成する。
【００４３】
１５．復号したデータ後ろ８ｂｙｔｅと作成したＭＡＣを比較して一致していれば１６に進み、一致していなければデータの改竄を検知してｅｒｒｏｒを出力する。
【００４４】
１６．復号したデータ１〜８ｂｙｔｅ目を書き込む。
【００４５】
１７．ｃｏｕｎｔ＝ｃｏｕｎｔ−８。
【００４６】
１８．ｃｏｕｎｔ≦０であれば書き込みを終了しｃｏｕｎｔ≦０でなければ１９へ進む。
【００４７】
１９．復号したデータ９〜１６ｂｙｔｅ目を書き込む。
【００４８】
２０．ｃｏｕｎｔ＝ｃｏｕｎｔ−８。
【００４９】
２１．ｃｏｕｎｔ≦０であれば書き込みを終了しｃｏｕｎｔ≦０でなければ１１へ戻る。
【実施例２】
【００５０】
図１は第１の実施形態に係わるデータ転送システムのシステム構成およびプリンタ装置０１のハードウェア構成図である。また、図７は図１のデータ転送システムに係わるデータ保護システムである。図１のデータ転送システムはデータを要求するプリンタ装置０１と、このプリンタ装置からの要求を受け、インターネット０５を介してデータのやり取りを行うＰＣ０４とで構成されている。ここで、このプリンタ装置０１はプリンタ装置０１の制御を行うための制御ユニット０２と、図２のようなデータの演算処理を行うＣＰＵ１１と、ＣＰＵ１１が実行するプログラムやデータを記憶するＲＯＭ１２と、ＣＰＵ１１の作業領域として使用されるＲＡＭ１３と、データの送受信を行うＩ／Ｏポート１４とがワンチップ化されていて、ＰＣ０４からのデータを受信するワンチップＣＰＵ０３とで構成されている。
【００５１】
また、図２のＲＯＭは図３のような、電源を立ち上げたときに走り出すブートプログラム２１と、プリンタ装置０１のプログラムを書き換えるための書き込みプログラム２２と、プリンタ装置０１の制御を行うための制御プログラム２３と、図２のワンチップＣＰＵ０３に送られてきたデータの復号化を行うための復号プログラム２４と、図２のワンチップＣＰＵ０３に送られてきたデータの認証を行うための認証プログラム２５と、復号化に使用する初期値ベクトル２６と、復号化や認証に使用するデータであるＳ−ｂｏｘ２７（入力されたデータを非線形で出力するための行列）と、復号化に使用するデータである鍵ａ２８と、認証に使用するデータである鍵ａ２９とを格納している。
【００５２】
次に、電子制御装置に転送される暗号データの暗号化手段と制御装置が受信した暗号データの復号手段、認証手段および書き込み手段を図７で説明する。
【００５３】
図１のインターネット０５を介してＰＣ０４にデータをダウンロードする際、データは図７の暗号化手段６１のような暗号化処理が行われてからデータの転送が行われる。ＰＣ０４に転送されたデータは次にワンチップＣＰＵ０３に転送され図７の認証手段６３により認証を行ってから復号化手段６２のような処理を施した後、書き込み手段６４によってデータのＲＯＭへの書き込みを行う。ここで、制御装置が実際に行う処理は復号手段６２と認証手段６３と書き込み手段６４のみである。
【００５４】
図７において平文は暗号化を行う前の元のデータ（４０ｂｙｔｅ）、ｂｙｔｅ数データは平文の全データ数（ここでは４０ｂｙｔｅ）、ＭＡＣ（Ａ、Ｂ、Ｃ）はデータＡとＢに鍵Ｃを使用したＭＡＣデータ、暗号文は入力データを暗号化したデータ、復号文は暗号文を復号化したデータ、暗号処理入力バイトは８ｂｙｔｅ、ＭＡＣ認証単位は１６ｂｙｔｅ（ＭＡＣの付加分を考えると２４ｂｙｔｅ）、ＭＡＣ処理に使用する鍵は鍵ａ、暗号化、復号化に使用する鍵は鍵ｂである。
【００５５】
暗号化手段６１は平文の先頭に当該平文のバイト数データ（ここでは４０ｂｙｔｅ）を添付する。ここでの平文１〜５および添付したバイト数データはそれぞれ８ｂｙｔｅである。これは暗号化処理の入力データを８ｂｙｔｅとしたためである。
【００５６】
2006165874.tif 000004
【００５７】
次に得た暗号データをＰＣ０４にダウンロードし、さらにワンチップＣＰＵ０３にデータ転送を行う。ＰＣ０４からワンチップＣＰＵ０３への１回のデータ転送ｂｙｔｅは認証単位（ここでは２４ｂｙｔｅ）で決定する。転送されたデータは認証手段６３、復号手段６２、書き込み手段６４を経たのち次のデータ転送を行う。この処理をデータ全ての書き込みが終わるかエラーが発生するまで行う。認証手段６３はワンチップＣＰＵにて暗号データを受信する。受信したデータのＭＡＣ部分であろう８ｂｙｔｅ（ここでは、復号文３、６、９）を取り除いたデータに対してあらかじめＲＯＭ１２に格納されている鍵ａを使用してＭＡＣを作成する。作成したＭＡＣと受信データのＭＡＣ部分であろうデータとを比較して一致していれば復号化手段６２を実行すし、一致しなければエラーを検出する。復号化手段６２は受信データのＭＡＣ部分を取り除いたデータをあらかじめＲＯＭ１２に格納されている初期値ベクトル２６と鍵ｂ２９を用いて（初期値ベクトルを用いるのは１回目の転送のときのみで、それ以降は１つ手前の暗号文８ｂｙｔｅを用いる）復号化する。書き込み手段３４は最初に受信した認証単位（暗号文１〜３までの２４ｂｙｔｅ）のデータの場合だけ処理が異なる。最初の２４ｂｙｔｅデータの頭８ｂｙｔｅ（復号文１）は平文のバイト数が格納されている。つまり、ＲＯＭへ書き込みを行うべきデータ量が格納されているので、まずはそのデータを取り出す。このバイト数データから後何回データの転送および書き込みを行うかを計算して、バイト数データとＭＡＣ部分以外の転送データ（ここでは復号文２）の書き込みを行う。転送回数が複数である場合データの転送要求を出す。最初に受信したデータ以外の場合はＭＡＣ部分以外の復号データの書き込みを行いデータの転送要求を出す。この処理を転送回数分行う。
【００５８】
このように図７の構成によると、データに対して暗号化を施していることからＰＣ０４にデータをダウンロード中にその内容を読み取られることはなく、またＰＣ０４にデータをダウンロード中もしくはワンチップＣＰＵ０３にデータの転送中にノイズがのりデータの一部もしくは全てに変化が生じたり、故意にデータの書き換えが行われたりすると、認証手段６３でのＭＡＣ比較が一致しなくなりデータの改竄が行われたことを検知することができる。また、ＣＢＣモードを使用していることから暗号文の認証単位による前後関係が発生する。これから、認証単位でのデータの入れ替えやデータの中抜けが発生したときもそれを検知することができる。さらに、小さなバイト単位で認証を行えることからＲＡＭに一度に取り込むデータ量を少なくすることができ、かつ認証を行ってからデータの書き込みを行うことができる。これによりリアルタイムにデータの認証および書き込みが可能になる。
【００５９】
次に、データの転送からデータの書き込みまでのフローを図８のフローチャートに示しそれを説明する。
【００６０】
１．証単位バイト数（ここでは２４ｂｙｔｅ）だけデータを受信する。
【００６１】
２．Ｉｎｉｔ＿ｖｅｃ（ＣＢＣモードにて復号するデータに排他的論理輪を行うデータ）にＲＯＭ内に格納されている初期値ベクトルを代入する。
【００６２】
３．転送データの先頭１６ｂｙｔｅに鍵ａを使用してＭＡＣを作成する。
【００６３】
４．転送データ後ろ８ｂｙｔｅ（ＭＡＣが付加されているであろうデータ）と作成したＭＡＣを比較して一致していれば５に進み、一致していなければデータの改竄を検知してｅｒｒｏｒを出力する。
【００６４】
５．鍵ｂとＩｎｉｔ＿ｖｅｃを使用して受信した転送データ先頭１６ｂｙｔｅを復号化する。
【００６５】
６．ｃｏｕｎｔに復号したデータ先頭８ｂｙｔｅ（全平文ｂｙｔｅ数ここでは４０）を入力する。
【００６６】
７．ｃｏｕｎｔ≦０であれば書き込みを終了しｃｏｕｎｔ≦０でなければ８へ進む。
【００６７】
８．復号したデータ９〜１６ｂｙｔｅ目を書き込む。
【００６８】
９．ｃｏｕｎｔ＝ｃｏｕｎｔ−８。
【００６９】
１０．ｃｏｕｎｔ≦０であれば書き込みを終了しｃｏｕｎｔ≦０でなければ１１へ進む。
【００７０】
１１．Ｉｎｉｔ＿ｖｅｃに転送データ９〜１６ｂｙｔｅ目を代入し初期値ベクトルを更新する。
【００７１】
１２．次のデータ２４ｂｙｔｅを受信する。
【００７２】
１３．転送データの先頭１６ｂｙｔｅに鍵ａを使用してＭＡＣを作成する。
【００７３】
１４．転送データ後ろ８ｂｙｔｅ（ＭＡＣが付加されているであろうデータ）と作成したＭＡＣを比較して一致していれば１５に進み、一致していなければデータの改竄を検知してｅｒｒｏｒを出力する。
【００７４】
１５．鍵ｂとＩｎｉｔ＿ｖｅｃを使用して受信した転送データ先頭１６ｂｙｔｅを復号化する。
【００７５】
１６．復号したデータ１〜８ｂｙｔｅ目を書き込む。
【００７６】
１７．ｃｏｕｎｔ＝ｃｏｕｎｔ−８。
【００７７】
１８．ｃｏｕｎｔ≦０であれば書き込みを終了しｃｏｕｎｔ≦０でなければ１９へ進む。
【００７８】
１９．復号したデータ９〜１６ｂｙｔｅ目を書き込む。
【００７９】
２０．ｃｏｕｎｔ＝ｃｏｕｎｔ−８。
【００８０】
２１．ｃｏｕｎｔ≦０であれば書き込みを終了しｃｏｕｎｔ≦０でなければ１１へ戻る。
【図面の簡単な説明】
【００８１】
【図１】本発明の第１および第２の実施例に係わるデータ転送システムのシステム構成およびプリンタ装置のハードウェア構成図である。
【図２】本発明の第１および第２の実施例に係わる制御ユニットを大まかに説明する図である。
【図３】図２のＲＯＭに格納されているデータの図である。
【図４】本発明の第１の実施例に係わるデータ保護システムの構成を大まかに説明する図である。
【図５】ＭＡＣ処理を大まかに説明する図である。
【図６】本発明の第１の実施例に係わるデータ保護システムの動作をフローチャートにしたものである。
【図７】本発明の第２の実施例に係わるデータ保護システムの構成を大まかに説明した図である。
【図８】本発明の第２の実施例に係わるデータ保護システムの動作をフローチャートにしたものである。
【符号の説明】
【００８２】
０１  プリンタ装置
０２  制御ユニット
０３  ワンチップＣＰＵ
０４  ＰＣ
０５  インターネット
１１  ＣＰＵ
１２  ＲＯＭ
１３  ＲＡＭ
１４  Ｉ／Ｏポート
２１  ブートプログラム
２２  書き込みプログラム
２３  制御プログラム
２４  復号プログラム
２５  認証プログラム
２６  初期値ベクトル
２７  Ｓ−ｂｏｘ
２８  鍵ａ
２９  鍵ｂ
３１  暗号化手段
３２  復号化手段
３３  認証手段
３４  書き込み手段
６１  暗号化手段
６２  復号化手段
６３  認証手段
６４  書き込み手段
【図１】
2006165874.tif 000005
【図２】
2006165874.tif 000006
【図３】
2006165874.tif 000007
【図４】
2006165874.tif 000008
【図５】
2006165874.tif 000009
【図６】
2006165874.tif 000010
【図７】
2006165874.tif 000011
【図８】
2006165874.tif 000012