(57)【要約】 【課題】  ＲＡＭの使用量の低減、改ざん等の不具合検出時間の短縮、ならびに復号および認証の済んだデータブロックを一度に不揮発性メモリに書き込めるようにする。【解決手段】  復号化装置側の書き換え可能な不揮発性メモリに書き込まれることになる平文データを暗号化する暗号化装置であって、入力された平文データを、不揮発性メモリのバンクサイズの整数倍となる１以上のデータブロックへと分割し、このデータブロックから認証データを作成する。そして、データブロックに認証データを結合してから暗号文データを生成する。一方、復号化装置では、この逆の処理を行なって平文データを復号し、不揮発性のメモリに平文データを書き込む。【選択図】  図９
2006039206.tif 000002
【特許請求の範囲】
【請求項１】
書き換え可能な不揮発性メモリに書き込まれることになる平文データを暗号化する暗号化装置であって、
前記平文データを入力する入力手段と、
入力された前記平文データを、前記書き換え可能な不揮発性メモリのバンクサイズを整数倍したサイズの１以上のデータブロックへと分割する分割手段と、
前記データブロックに対して第１の暗号化キーを用いて認証データを作成する認証データ作成手段と、
前記データブロックに前記認証データを結合する結合手段と、
前記認証データの結合された前記データブロックに対して第２の暗号化キーを用いて暗号文データを生成する暗号化手段と、
前記暗号文データを出力する出力手段と
を有する暗号化装置。
【請求項２】
入力された暗号文データを復号して書き換え可能な不揮発性メモリに書き込む復号化装置であって、
前記暗号文データを入力する入力手段と、
入力された前記暗号文データに第１の暗号化キーを用いて復号文データに復号する復号化手段と、
前記復号文データを、前記書き換え可能な不揮発性メモリのバンクサイズの整数倍となる復号文データブロックと、認証データとに分割する分割手段と、
前記復号文データブロックに第２の暗号化キーを用いて比較データを生成する比較データ生成手段と、
前記比較データと前記認証データとを比較することで、前記復号文データブロックの正常性を判定する判定手段と、
正常と判定された前記前記復号文データブロックを前記書き換え可能な不揮発性メモリに書き込む書き込み手段と
を有する復号化装置。
【請求項３】
前記復号文データブロックが正常ではないと判定された場合に、前記暗号文データの再送要求を送信する再送要求手段をさらに含む請求項２に記載の復号化装置。
【請求項４】
前記復号文データブロックの前記不揮発性メモリへの書き込みが完了すると、該復号文データブロックを作業用の揮発性メモリから削除し、次の暗号文データを前記入力手段から入力し、該揮発性メモリに記憶して復号処理を継続するよう制御する制御手段をさらに含む請求項２または３に記載の復号化装置。
【請求項５】
書き換え可能な不揮発性メモリに書き込まれることになる平文データを暗号化する暗号化装置であって、
前記平文データを入力する入力手段と、
入力された前記平文データを、該平文データが書き込まれることになる書き換え可能な不揮発性メモリのバンクサイズの整数倍となる１以上のデータブロックに分割する分割手段と、
前記データブロックに第１の暗号化キーを用いて暗号文データブロックを生成する暗号化手段と、
前記暗号文データブロックに対して第２の暗号化キーを用いて認証データを作成する認証データ作成手段と、
前記暗号文データブロックに前記認証データを結合して暗号文データを生成する結合手段と、
前記暗号文データを出力する出力手段と
を有する暗号化装置。
【請求項６】
入力された暗号文データを復号して書き換え可能な不揮発性メモリに書き込む復号化装置であって、
前記暗号文データを入力する入力手段と、
入力された前記暗号文データを、前記書き換え可能な不揮発性メモリのバンクサイズの整数倍となる１以上の暗号化データブロックと、認証データとに分割する分割手段と、
前記暗号文データブロックに第１の暗号化キーを用いて比較データを生成する比較データ生成手段と、
前記比較データと前記認証データとを比較することで、前記暗号文データブロックの正常性を判定する判定手段と、
正常と判定された前記暗復号文データブロックに第２の暗号化キーを用いて復号文データブロックを生成する復号化手段と、
前記復号文データブロックを前記書き換え可能な不揮発性メモリに書き込む書き込み手段と
を有する復号化装置。
【請求項７】
前記暗号文データブロックが正常ではないと判定された場合に、前記暗号文データの再送要求を送信する再送要求手段をさらに含む請求項６に記載の復号化装置。
【請求項８】
前記復号文データブロックの前記不揮発性メモリへの書き込みが完了すると、該復号文データブロックを作業用の揮発性メモリから削除し、次の暗号文データを前記入力手段から入力し、該揮発性メモリに記憶して復号処理を継続するよう制御する制御手段をさらに含む、請求項６または７に記載の復号化装置。
【請求項９】
書き換え可能な不揮発性メモリに書き込まれることになる平文データを暗号化する暗号化方法であって、
前記平文データを入力する入力工程と、
前記書き換え可能な不揮発性メモリのバンクサイズの整数倍となる１以上のデータブロックへと、入力された前記平文データを分割する分割工程と、
前記データブロックに対して第１の暗号化キーを用いて認証データを作成する認証データ作成工程と、
前記データブロックに前記認証データを結合する結合工程と、
前記認証データの結合された前記データブロックに対して第２の暗号化キーを用いて暗号文データを生成する暗号化工程と、
前記暗号文データを出力する出力工程と
を有する暗号化方法。
【請求項１０】
入力された暗号文データを復号して書き換え可能な不揮発性メモリに書き込む復号化方法であって、
前記暗号文データを入力する入力工程と、
入力された前記暗号文データに第１の暗号化キーを用いて復号文データに復号する復号化工程と、
前記復号文データを、前記書き換え可能な不揮発性メモリのバンクサイズの整数倍となる復号文データブロックと、認証データとに分割する分割工程と、
前記復号文データブロックに第２の暗号化キーを用いて比較データを生成する比較データ生成工程と、
前記比較データと前記認証データとを比較することで、前記復号文データブロックの正常性を判定する判定工程と、
正常と判定された前記前記復号文データブロックを前記書き換え可能な不揮発性メモリに書き込む書き込み工程と
を有する復号化方法。
【請求項１１】
書き換え可能な不揮発性メモリに書き込まれることになる平文データを暗号化する暗号化方法であって、
前記平文データを入力する入力工程と、
入力された前記平文データを、該平文データが書き込まれることになる書き換え可能な不揮発性メモリのバンクサイズの整数倍となる１以上のデータブロックへと分割する分割工程と、
前記データブロックに第１の暗号化キーを用いて暗号文データブロックを生成する暗号化工程と、
前記暗号文データブロックに対して第２の暗号化キーを用いて認証データを作成する認証データ作成工程と、
暗号文データを生成するために前記暗号文データブロックに前記認証データを結合する結合工程と、
前記暗号文データを出力する出力工程と
を有する暗号化方法。
【請求項１２】
入力された暗号文データを復号して書き換え可能な不揮発性メモリに書き込む復号化方法であって、
前記暗号文データを入力する入力工程と、
入力された前記暗号文データを、前記書き換え可能な不揮発性メモリのバンクサイズの整数倍となる１以上の暗号化データブロックと認証データとに分割する分割工程と、
前記暗号文データブロックに第１の暗号化キーを用いて比較データを生成する比較データ生成工程と、
前記比較データと前記認証データとを比較することで、前記暗号文データブロックの正常性を判定する判定工程と、
正常と判定された前記暗号文データブロックに第２の暗号化キーを用いて復号文データブロックを生成する復号化工程と、
前記復号文データブロックを前記書き換え可能な不揮発性メモリに書き込む書き込み工程と
を有する復号化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、転送されるデータのセキュリティを確保する暗号化および復号化技術に関する。
【背景技術】
【０００２】
近年、ネットワークを介してデータやアップグレードソフトウェアなどをユーザに提供するシステムが提案されている。これらのデータやソフトウエアには重要な情報が含まれていることがあるので、漏洩、不正コピー、または改ざんなどから保護する必要がある。
【０００３】
保護技術の一つとして、ＭＡＣ（メッセージ認証コード）認証技術が知られている。ＭＡＣは慣用暗号によって生成される短い固定長の認証データのことであり、通常はメッセージに付加されて送信される。この認証技術では、通信に関与する２つのエンティティＡとＢとが、共有鍵Ｋを共有していることを前提としている。ＡがＢにメッセージを送信する際には、メッセージと鍵の関数であるＭＡＣ＝Ｃｋ（Ｍ）が計算され、算出されたＭＡＣとともにメッセージが受信エンティティへと送信される。受信エンティティは受信したメッセージに対して、送信エンティティが使用した鍵および関数と同一の鍵および関数を使用して演算を行い、比較用のＭＡＣを算出する。そして、受信したＭＡＣと算出したＭＡＣとが一致すれば、そのメッセージは送信中に改ざん等がなされなかったと判定できる。
【０００４】
特許文献１に記載の技術によれば、ファームウエアなどの平文データの全体にＭＡＣを付加してから暗号化を行い、得られた暗号文データを受信端末に送信し、受信端末においてこの暗号文データを復号し、復号されたＭＡＣを用いて認証してから不揮発性ＲＯＭに書き込みを行っていた。
【特許文献１】特開２００２−１５２４５８号公報。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記従来技術では、大量の暗号文データのすべてを受信しなければ、認証が行なえないといった課題があった。加えて、次の課題が存在する。
（１）全ての暗号文データと、復号した全てのデータとを格納できるだけのＲＡＭ領域が必要となってしまう。
（２）認証処理を実行するには、暗号文データの全てを使用してＭＡＣを算出しなければならず、改ざん等の発見に時間がかかってしまう。
（３）平文データのサイズが、不揮発性ＲＯＭのバンクサイズよりも大きい場合には、一度に書き込みが行なえず、しかも書き込みプログラムが複雑になってしまう。
【０００６】
一方、上記従来技術で、上述の暗号文データを随時不揮発性ＲＯＭに書き込みを行なうようにした場合には、以下のような課題に直面する。
（１）全ての暗号文データを格納できるだけのＲＡＭ領域が必要となる。
（２）認証処理を実行するには、暗号文データの全てを使用してＭＡＣを算出しなければならないので、改ざん等の発見に時間がかかってしまう。
（３）随時不揮発性ＲＯＭに書き込みを行ってしまうことから、データに改ざんが存在した場合に、リカバリーに時間がかかってしまう。
（４）平文データが不揮発性ＲＯＭのバンクサイズより大きい場合には、一度に書き込みが行なえず、かつ、書き込みのプログラムが複雑になってしまう。
【０００７】
そこで、本発明は、このような課題および他の課題を解決することを目的とする。なお、他の課題については明細書の全体を通して理解できよう。
【課題を解決するための手段】
【０００８】
上記課題を解決すべく、本発明は、書き換え可能な不揮発性メモリに書き込まれることになる平文データを暗号化する暗号化装置であって、入力された平文データを、前記書き換え可能な不揮発性メモリのバンクサイズの整数倍となるサイズを有する１以上のデータブロックに分割する。そして、データブロックに対して第１の暗号化キーを用いて認証データを作成する。データブロックに認証データを結合する。認証データの結合された前記データブロックに対して第２の暗号化キーを用いて暗号文データを生成する。一方、復号化装置では、この逆の処理を行なって平文データを復号し、不揮発性のメモリに平文データを書き込む。
【発明の効果】
【０００９】
以上説明したように、本発明では、不揮発性メモリのバンクサイズにあわせて、複数に分離された平文データごとに認証と暗号を実行するようにしたので、ＲＡＭの使用量を従来よりも低減させることができる。また、伝送路で改ざん等が発生した場合には、従来よりも短時間で問題を発見できる。さらに、復号および認証の済んだデータブロックを一度に不揮発性ＲＯＭに対して書き込むことができる。それゆえ、書き込みに必要となるプログラムも従来よりも簡素なものとすることができる。
【発明を実施するための最良の形態】
【００１０】
以下に本発明の上位概念、中位概念および下位概念の理解に役立つ一実施形態を示す。なお、以下の実施形態に含まれる概念について、そのすべてが特許請求の範囲に記載されているとは限らない。ただし、これは特許発明の技術的範囲から意識的に除外したのではなく、特許発明と均等の関係にあるため特許請求の範囲には記載していない場合があることを理解していただきたい。
【００１１】
［第１の実施形態］
図１は、実施形態に係るデータ転送システムの構成例を示す図である。図１に示すシステムには、ファームウエアプログラムなどのデータを要求するプリンタ装置１０１と、このプリンタ装置１０１からの要求を受信し、ネットワーク１１５を介してサーバ１２０と要求されたデータの送受信を行なうＰＣ１１０とが含まれている。
【００１２】
プリンタ装置１０１には、プリンタ装置１０１の各部を統括的に制御する制御ユニット１０２が含まれている。制御ユニット１０２には、ワンチップＣＰＵ１０３が搭載されている。
【００１３】
図２は、実施形態に係るワンチップＣＰＵ１０３の構成例を示す図である。ワンチップＣＰＵ１０３には、入力されたデータの演算処理を行なうＣＰＵ２０１と、ＣＰＵ２０１が実行するプログラムやデータを記憶するフラッシュＲＯＭ２０２と、ＣＰＵ２０１の作業領域として使用されるＲＡＭ２０３と、データの送受信を行なうＩ／Ｏポート２０４とがワンチップ化されている。
【００１４】
図３は、プリンタ装置のＲＯＭに記憶されているプログラムやデータの一例を示す図である。プリンタ装置１０１の電源が投入されると起動するブートプログラム３０１と、プリンタ装置１０１のプログラムを書き換えるための書き込みプログラム３０２と、プリンタ装置１０１における画像形成などの制御を行なうための制御プログラム３０３と、ワンチップＣＰＵ２０１に送られてきたデータを復号する復号プログラム３０４と、ワンチップＣＰＵ２０１に送られてきたデータについて認証処理を実行する認証プログラム３０５と、復号処理や認証処理に使用されるデータであるＳ−ｂｏｘ３０６と、復号処理に使用されるデータである鍵ａ３０７と、認証処理に使用されるデータである鍵ｂ３０８とを格納している。Ｓ−ｂｏｘ３０６は、入力されたデータを非線形なデータに変換して出力するための行列である。
【００１５】
図４は、実施形態に係るＰＣの例示的なブロック図である。ＣＰＵ４０１は、ＰＣ１１０を統括的に制御する中央演算処理装置である。ＲＡＭ４０２は、ワークエリアとして機能する読み書き可能な揮発性のメモリである。ＲＯＭ４０３は、ブートプログラムなどを記憶する不揮発性のメモリである。通信インタフェース４０４は、ネットワーク１１５を介してサーバ１２０と通信する通信回路である。ハードディスクドライブ４０５は、大容量の記憶装置であり、中継プログラム４１０などを記憶している。中継プログラム４１０は、プリンタ装置１０１とサーバ１２０との間で暗号文データを送受信する際の中継処理を担当するソフトウエアである。Ｉ／Ｏポート４０６は、Ｉ／Ｏポート２０４と対を成しデータを送受信するポートである。具体的には、ＰＣ１１０とプリンタ装置１０１との間は、ＵＳＢ、ＩＥＥＥ１３９４、イーサネット（登録商標）、無線ＬＡＮ、またはブルートゥースなどインタフェースを介して接続する。
【００１６】
図５は、実施形態に係るサーバの例示的なブロック図である。ＣＰＵ５０１は、サーバ１２０を統括的に制御する中央演算処理装置である。ＲＡＭ５０２は、ワークエリアとして機能する読み書き可能な揮発性のメモリである。ＲＯＭ５０３は、ブートプログラムなどを記憶する不揮発性のメモリである。通信インタフェース５０４は、ネットワーク１１５を介してＰＣ１１０と通信する通信回路である。ハードディスクドライブ５０５は、大容量の記憶装置であり、暗号処理プログラム５１０、サーバプログラム５１１および暗号文データ５１２などを記憶している。暗号処理プログラム５１０は、後述する手順に従って、ファームウエアなどの平文データを暗号化したり、認証用の処理を行なったりするソフトウエアである。サーバプログラム５１１は、ＰＣ１１０を経由してプリンタ装置１０１から送信されてきた暗号文データの送信要求を受信して、暗号文データ５１２を送信するための制御ソフトウエアである。暗号文データ５１２は、認証処理と暗号処理とが施された暗号文である。
【００１７】
（暗号化処理）
図６は、実施形態に係る暗号化処理の例示的なフローチャートである。本フローチャートは、サーバ１２０の暗号処理プログラム５１０に相当する。
【００１８】
図７は、実施形態に係る暗号化処理の概要を説明するための図である。この例では、フラッシュＲＯＭ２０２のバンクサイズが１２８ビットであり、転送データブロックを２５６ビット長としている。すなわち、プリンタ装置１０１のファームウエアを平文データとし、当該平文データを複数のデータブロックに分割する際に、データブロックのサイズが、ＲＯＭ２０２のバンクサイズの整数倍となるようにしている。図７において、Ｄは、バンクサイズの２倍である２５６ビットの平文データブロックを示している。
【００１９】
また、この例において、一回のＭＡＣ処理に対して入力されるデータの入力ビット長は６４ビットとする。ｋｅｙ１（上述の鍵ｂ３０８に相当する。）は、ＭＡＣ処理に使用される鍵データであり、ｋｅｙ２（上述の鍵ａ３０７に相当する。）は、暗号化処理に使用される鍵データである。ＭＡＣｋｅｙ１（Ｄ）は、平文データブロックＤにｋｅｙ１を適用して得たＭＡＣデータである。ＭＤは、平文データブロックＤにＭＡＣｋｅｙ１（Ｄ）を付加したデータである。ＣＯＤＥｋｅｙ２（ＭＤ）は、ＭＤとｋｅｙ２を使用して得られた暗号文データ５１２である。
【００２０】
ステップＳ６０１において、ＣＰＵ５０１は、ファームウエアなどの平文データをハードディスクドライブ５０５などから入力する。
【００２１】
ステップＳ６０２において、ＣＰＵ５０１は、入力された平文データを所定のサイズごとに分離して、データブロックＤを生成する。所定のサイズは、フラッシュＲＯＭ２０２のバンクサイズの整数倍である。図７の例では、所定のサイズは２５６ビットとなる。
【００２２】
ステップＳ６０３において、ＣＰＵ５０１は、ＭＡＣ処理にて取り扱える所定のサイズとなるようにデータブロックＤを分割する。この例における所定のサイズは６４ビットである。
【００２３】
ステップＳ６０４において、ＣＰＵ５０１は、処理単位となるデータごとに第１の暗号化キー（ｋｅｙ１）を使用してＭＡＣ処理を行なう。
【００２４】
図８は、実施形態に係る例示的なＭＡＣ処理を示す図である。この例では、２５６ビット長のデータブロックＤを６４ビット長の平文ブロックに分割しているので、平文１ないしｎ（ｎ＝４）についてＭＡＣ処理を行なう。
【００２５】
ＭＡＣ１は、平文ブロック１に対して第１の暗号化キー（ｋｅｙ１）を適用してＭＡＣ処理を行って得られたＭＡＣデータである。他のＭＡＣ２〜ＭＡＣｎは、それぞれ平文ブロック２〜平文ブロックｎに対して、一つ前のＭＡＣデータｎ−１と排他的論理和の演算を実行した上で、第１の暗号化キーによりＭＡＣ処理を行って得られたＭＡＣデータである。また、この例では、ＭＡＣｎがＭＡＣｋｅｙ１（Ｄ）となる。
【００２６】
ステップＳ６０５において、ＣＰＵ５０１は、ＭＡＣ処理により得られたＭＡＣデータＭＡＣｋｅｙ１（Ｄ）を、転送データＤに結合し、結合データＭＤを生成する。
【００２７】
ステップＳ６０６において、ＣＰＵ５０１は、結合データＭＤに対して第２の暗号化キーである鍵ｋｅｙ２を適用して暗号化処理を実行し、暗号文データＣＯＤＥｋｅｙ２（ＭＤ）をハードディスクドライブ５０５または通信インタフェース５０４へと出力する。
【００２８】
（復号処理）
図９は、実施形態に係るプリンタ装置のＲＯＭとＲＡＭとの間で授受されるプログラムとデータとを例示する図である。プリンタ装置１０１の電源が投入され、ブートプログラム３０１が起動すると、ＣＰＵ２０１は、通常モードに設定されているか、プログラム書き換えモードに設定されているかを確認する。通常モードになっていれば制御プログラム３０３を実行する。一方、特定のスイッチが押されたまま電源投入スイッチが押された場合などは、プログラム書き換えモードに設定されているとＣＰＵ２０１は判定する。書き換えモードになっていれば、ＣＰＵ５０１は、書き込みプログラム３０２をＲＡＭ２０３に転送するとともに、復号プログラム３０４、認証プログラム３０５、Ｓ−ｂｏｘ３０６、鍵ａ３０７、鍵ｂ３０８をＲＡＭ２０２へと転送する。これらは図９の（１）および（２）に相当する。
【００２９】
図１０は、実施形態に係る復号プログラム、認証プログラムおよび書き込みプログラムに関連する例示的なフローチャートである。図１１は、実施形態に係る復号処理と認証処理の概要を示す図である。予め、ＣＰＵ２０１は、Ｉ／Ｏポートから暗号文データの送信要求を送信する。ＰＣ１１０のＣＰＵ４０１は、Ｉ／Ｏポート４０６を介して、プリンタ装置１０１からの暗号文データの送信要求を受信すると、通信インタフェース４０４を介して、サーバ１２０に対して当該要求を転送する。サーバ１２０は、当該要求を受信すると、上述の暗号処理を実行して暗号文データ５１２を送信する。ＰＣ１１０のＣＰＵ４０１は、通信インタフェース４０４を介して暗号文データ５１２を受信すると、Ｉ／Ｏポート４０６へと出力する。
【００３０】
ステップＳ１００１において、ＣＰＵ２０１は、Ｉ／Ｏポート２０４から暗号文データブロックＴＤを入力し、ＲＡＭ２０２に書き込む。この書き込み処理は図９の（３）に相当する。
【００３１】
ステップＳ１００２において、ＣＰＵ２０１は、復号プログラム３０４に従って、Ｓ−ｂｏｘ、第２の暗号化キー鍵ａを暗号文データブロックに適用し、復号データブロックＴＤｎと復号ＭＡＣデータＴＤｍとを含むデータＤＥｋｅｙ２を生成する。これは、図９の（４）ないし（７）に相当する。
【００３２】
ステップＳ１００３において、ＣＰＵ２０１は、データＤＥｋｅｙ２から復号データブロックＴＤｎと復号ＭＡＣデータＴＤｍとを分離する。
【００３３】
ステップＳ１００４において、ＣＰＵ２０１は、認証プログラムに従って、復号データＴＤｎに含まれる各復号文ブロックに対して第１の暗号化キー鍵ｂとＳ−ｂｏｘを適用して比較用のＭＡＣデータを生成する。この処理は、図９の（８）ないし（１１）に相当する。具体的なＭＡＣ処理は、図８で示したとおりである。すなわち、サーバ１２０で実行されたＭＡＣ処理と同一となる。
【００３４】
ステップＳ１１０５において、ＣＰＵ２０１は、制御プログラムに従って、復号されたＭＡＣデータＴＤｍと、比較用のＭＡＣデータＭＡＣｋｅｙ１（ＴＤｎ）とを比較する。一致した場合は、ステップＳ１００６に進む。一方、不一致であれば、受信された暗号文データブロックＴＤが、送信した暗号文データブロックＣＯＤＥｋｅｙ２（ＭＤ）と一致しないことになる。すなわち、改ざんなどのダメージが伝送路上で発生したことになるので、ステップＳ１００７においてエラー処理を実行する。エラー処理とは、たとえば、サーバ１２０に対して再送要求を送信するが如くである。なお、この比較処理は、図９の（１２）に相当する。このようにダメージを受けた暗号データブロックＴＤのみを再送させるので、従来のように暗号化されたファームウエア等の全体を再送させる場合よりも、処理の効率がよい。
【００３５】
ステップＳ１００６において、ＣＰＵ２０１は、書き込みプログラム３０２を使用して、復号されたデータブロックＴＤｎをフラッシュＲＯＭ２０２へと書き込む。また、ＲＡＭ２０３から、暗号文データブロック、復号文データブロック、および２つのＭＡＣデータを削除し、ＲＡＭ２０３の空き領域を確保する。
【００３６】
まだ、サーバ１２０側に残りの暗号文データブロックが存在する場合は、ＣＰＵ２０１は、ＰＣ１１０を経由して、次の暗号文データブロックに関する送信要求を送信する。最終的にすべての暗号文データブロックを復号し、フラッシュＲＯＭ２０２への書き込みが終了すれば、ＣＰＵ２０１は、本フローチャートに関する処理を終了し、プリンタ装置１０１をリセットする。
【００３７】
本実施形態によれば、もしＣＯＤＥｋｅｙ２（ＭＤ）が転送されている時にノイズがのり、データの一部もしくは全てに変化が生じたり、故意にデータが書き換えられたりした場合には、暗号文データブロックごとに認証エラーとして検出できる。すなわち、暗号文全体がないと認証を行なえなかった従来技術に比較し、より短時間で認証エラーを検出できる利点がある。
【００３８】
また、ＭＡＣ処理をフラッシュＲＯＭ２０２のバンクサイズの整数倍を単位として実行するようにしたので、復号されたデータをただちにフラッシュＲＯＭ２０２へと書き込むことができる。すなわち、従来技術のように復号されたデータのサイズが、バンクサイズの整数倍になっていないと、復号されたデータを一度に書き込むことができず、余りのデータをＲＡＭ２０３に残したまま新たなデータの処理を行なわなければならなくなる課題があった。それに対して本実施形態では、復号されたデータを一度にＲＯＭに書き込め、ＲＡＭの領域を開放できるので、新たに受信した暗号データをＲＡＭ領域で処理することができるようになる。このように、復号文データブロックのサイズが揮発性メモリのバンクサイズの整数倍となっているので、復号文データブロックを一度の書き込み処理で不揮発性のメモリに書き込めるので、書き込みプログラムを従来よりも簡素にできる。
【００３９】
さらに、所定のサイズの暗号文データブロックごとに転送、認証および復号を実行するようにしたので、少ないＲＡＭしか有していない電子装置に対しても、効率よく暗号文データを転送できるといったメリットがある。上述の例では、一つのＭＡＣデータを付加するデータ単位を２５６ビットとしたので、ＲＡＭには２５６ビットのデータを格納するだけで、復号処理と認証処理とを実行できることになる。すなわち、ファームウエアが巨大である場合には、２５６ビットの暗号文データブロックを受信するだけで認証できるため、暗号化されたファームウエアのすべてを受信するのを待たずに、認証処理や復号化処理を実行できる。従って、従来よりも、受信された暗号文データの不具合を早期に発見しやすくなる。なお、ＲＡＭには、暗号文データブロックを記憶する領域に加え、それと同じ大きさの復号データを格納する領域と、復号や認証を行なうためのデータやプログラムを格納できる領域とが存在すればよい。
【００４０】
本実施形態に係る発明の優れた効果を説明するための一例を紹介する。送信すべきファームウエア等の平文が全体で５１２０ビットであるとする。また、一回に行なえる復号化のビット数は６４ビット、ＭＡＣの入力ビットを６４ビット、ＲＯＭのバンクサイズを１２８ビットとする。このような前提の下に、復号処理、認証処理およびＭＡＣ処理の回数を検討してみる。プリンタ装置１０１内で実行される処理は、復号処理と認証処理の二つであるから、ここではサーバ１２０における暗号処理の回数はカウントしないこととする。
【００４１】
図１１に示した一連の復号処理と認証処理では、復号化処理が５回（復号文１〜４とＭＡＣデータを復号するので５回となる。）であり、ＭＡＣ処理が４回（ＭＡＣ処理は、復号文１〜４に対して実行されるので４回となる。）である。一連の復号化処理および認証処理において処理可能な平文のビット数は２５６ビットなので、５１２０ビット全てに対しては、一連の復号化処理および認証処理を２０回（５１２０／２５６＝２０回）実行することになる。よって、復号処理の実行回数は１００回となり、ＭＡＣ処理の実行回数は８０回となる。なお、認証処理は２５６ビットごとに行なうことができる。
【００４２】
次にＭＡＣデータを付加する単位を６４ビットごとと仮定して処理回数を検討してみる。一連の復号処理および認証処理では、復号処理が２回となり、ＭＡＣ処理が１回となる。一連の復号処理および認証処理において処理可能な平文のビット数は６４ビットなので、５１２０ビット全てに対して当該処理は８０回実行されることになる。よって、復号処理の実行回数は１６０回となり、ＭＡＣ処理の実行回数は８０回となる。なお、この場合は、認証は６４ビットごとに行なうことができる。
【００４３】
以上の検討結果から明らかなように、ＭＡＣデータを付加するデータブロックの単位を変更することにより、復号処理と認証処理を実行するためのスピードをトレードオフすることができる。
【００４４】
［第２の実施形態］
第２の実施形態は、第１の実施形態の一部を変形したものである。第１の実施形態では、平文ブロック１〜ｎについてＭＡＣ処理を行なってから暗号化処理を実行していたが、第２の実施形態では、平文ブロック１〜ｎについて暗号化し、その後でＭＡＣ処理を行なうようにしている。そのため、復号化時には、復号する前に認証処理を実行できるようになるため、受信した暗号文データのエラーを第１の実施形態よりも早期に発見できる利点がある。
【００４５】
（暗号化処理）
図１２は、第２の実施形態に係る暗号化処理の例示的なフローチャートである。図１３は、暗号化処理の概要を説明するための図である。なお、既に説明した部分には同一の参照符号を付すことで、説明を簡略化している。上述したステップＳ６０１とＳ６０２とを実行した後で、ステップＳ１２０３へと進む。
【００４６】
ステップＳ１２０３において、サーバ１２０のＣＰＵ５０１は、データブロックＤに対して、第２の暗号化キーｋｅｙ２を適用して、暗号文データブロックＣＤを生成する。
【００４７】
ステップＳ１２０４において、ＣＰＵ５０１は、暗号文データブロックＣＤを、ＭＡＣ処理可能な処理単位に分割する。この例では、上述したように２５６ビットの暗号文データブロックを６４ビットごとに分割し、暗号文ブロック１ないし４を生成する。
【００４８】
ステップＳ１２０５において、ＣＰＵ５０１は、各処理単位ごとの暗号文ブロックに、第１の暗号化キーｋｅｙ１を適用して、ＭＡＣデータＭＡＣｋｅｙ１（ＣＤ）を生成する。具体的なＭＡＣ処理の一例は、図８で説明したとおりである。
【００４９】
ステップＳ１２０６において、ＣＰＵ５０１は、暗号文データブロックＣＤに対してＭＡＣデータＭＡＣｋｅｙ１（ＣＤ）を結合し、結合データＭＣＤを生成する。
【００５０】
ステップＳ１２０７において、ＣＰＵ５０１は、結合データＭＣＤを、暗号文データ５１２として、ハードディスクドライブ５０５に出力する（書き込む）か、または通信インタフェース５０４からＰＣ１１０もしくはプリンタ装置１０１に向けて出力（送信）する。
【００５１】
（復号化処理）
図１４は、第２の実施形態に係る復号化処理の例示的なフローチャートである。また、図１５は、第２の実施形態に係る復号化処理の概要を説明するための図である。なお、既に説明した個所には同一の参照符号を付すことにより説明を簡潔にする。ステップＳ１００１において、サーバ１２０から、ＰＣ１１０を経由して暗号文データを受信済みであるものとする。
【００５２】
ステップＳ１４０２において、ＣＰＵ２０１は、Ｉ／Ｏポート２０４から入力されＲＡＭ２０３に記憶された暗号文データＴＤを、暗号文データブロックＴＤｎとＭＡＣデータＴＤｍとに分離する。すなわち、暗号文データＴＤからＭＡＣデータＴＤｍが抽出される。
【００５３】
ステップＳ１４０３において、ＣＰＵ２０１は、暗号文データブロックＴＤｎに含まれる各暗号文ブロック対して、第１の暗号化キーｋｅｙ１を用いてＭＡＣ処理（図８）を実行し、比較用のＭＡＣデータＭＡＣｋｅｙ１（ＴＤｎ）を生成する。
【００５４】
ステップＳ１４０４において、ＣＰＵ２０１は、復号されたＭＡＣデータＴＤｍと、比較用のＭＡＣデータＭＡＣｋｅｙ１（ＴＤｎ）とを比較する。一致した場合は、ステップＳ１４０５に進む。一方、不一致であれば、受信された暗号文データＴＤが、送信した暗号文データＭＣＤと一致しないことになり、すなわち、改ざんなどのダメージが伝送路上で発生したことになる。よって、ステップＳ１００７においてエラー処理を実行する。エラー処理とは、たとえば、サーバ１２０に対して再送要求を送信するが如くである。
【００５５】
ステップＳ１４０５において、ＣＰＵ２０１は、暗号文データブロックＴＤｎに対して、第２の暗号化キーｋｅｙ２を適用して復号し、復号文１〜４を含む復号文データＤＥｋｅｙ２（ＴＤｎ）を生成する。
【００５６】
ステップＳ１００６において、ＣＰＵ２０１は、書き込みプログラム３０２を使用して、復号文データＤＥｋｅｙ２（ＴＤｎ）をフラッシュＲＯＭ２０２へと書き込む。なお、まだ、サーバ１２０側に残りの暗号文データが存在する場合は、それについての送信要求を送信する。最終的にすべての暗号文データを復号し、フラッシュＲＯＭ２０２への書き込みが終了すれば、ＣＰＵ２０１は、本フローチャートに関する処理を終了し、プリンタ装置１０１をリセットする。
【００５７】
本実施形態によれば、第１の実施形態おける効果に加え、暗号文データを復号する前に認証処理を実行できるので、第１の実施形態よりも早く暗号文データの改ざん等を検出できるといった効果がある。また、認証に失敗すれば復号処理を実行しないように制御するので、無駄な処理を省略できる利点がある。
【００５８】
［他の実施形態］
上述の実施形態では、制御部をワンチップ化したワンチップＣＰＵ１０３を使用して説明したが、本発明はこの構成に限定されるわけではない。たとえば、ＣＰＵ、ＲＯＭ、ＲＡＭおよびＩ／Ｏポートのすべてまたは一部を独立した構成としてもよい。
【００５９】
また、上述の実施形態では、プリンタ装置１０１を一例として説明したが、ネットワークを介して暗号化されたファームウエアやデータなどを受信する電子装置であれば、本発明を好適に適用できることはいうまでもない。
【００６０】
また、上述の実施形態によれば、プリンタ装置１０１は、ＰＣ１１０を介してサーバ１２０に接続していたが、プリンタ装置１０１に通信インタフェースとクラインアントプログラムが搭載されていれば、プリンタ装置１０１を直接ネットワーク１１５に接続してもよい。
【００６１】
上述の実施形態では、データの分割や分離との用語を用いたが、データを物理的に分割や分離する場合だけでなく、論理的に分割または分離する場合も含まれる。すなわち、実態としては一つのデータであるが、処理の都合上、当該データの一部を特定して抽出することも、分割または分離として説明する。
【００６２】
なお、本発明は、前述した実施形態の各機能を実現するソフトウェアプログラム（本実施形態では図６、１０、１２または１４に示すフローチャートに対応したプログラム）を、システム若しくは装置に対して直接または遠隔から供給し、そのシステム若しくは装置に含まれるコンピュータが該供給されたプログラムコードを読み出して実行することによっても達成される。
【００６３】
従って、本発明の機能・処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、上記機能・処理を実現するためのコンピュータプログラム自体も本発明の一つである。
【００６４】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等、プログラムの形態を問わない。
【００６５】
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−Ｒ）などがある。
【００６６】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続し、該ホームページから本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバも、本発明の構成要件となる場合がある。
【００６７】
また、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせ、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【００６８】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される他、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが、実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
【００６９】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現される。
【図面の簡単な説明】
【００７０】
【図１】図１は、実施形態に係るデータ転送システムの構成例を示す図である。
【図２】図２は、実施形態に係るワンチップＣＰＵ１０３の構成例を示す図である。
【図３】図３は、プリンタ装置のＲＯＭに記憶されているプログラムやデータの一例を示す図である。
【図４】図４は、実施形態に係るＰＣの例示的なブロック図である。
【図５】図５は、実施形態に係るサーバの例示的なブロック図である。
【図６】図６は、実施形態に係る暗号化処理の例示的なフローチャートである。
【図７】図７は、実施形態に係る暗号化処理の概要を説明するための図である。
【図８】図８は、実施形態に係る例示的なＭＡＣ処理を示す図である。
【図９】図９は、実施形態に係るプリンタ装置のＲＯＭとＲＡＭとの間で授受されるプログラムとデータとを例示する図である。
【図１０】図１０は、実施形態に係る復号プログラム、認証プログラムおよび書き込みプログラムに関連する例示的なフローチャートである。
【図１１】図１１は、実施形態に係る復号処理と認証処理の概要を示す図である。
【図１２】図１２は、第２の実施形態に係る暗号化処理の例示的なフローチャートである。
【図１３】図１３は、暗号化処理の概要を説明するための図である。
【図１４】図１４は、第２の実施形態に係る復号化処理の例示的なフローチャートである。
【図１５】図１５は、第２の実施形態に係る復号化処理の概要を説明するための図である。
【図１】
2006039206.tif 000003
【図２】
2006039206.tif 000004
【図３】
2006039206.tif 000005
【図４】
2006039206.tif 000006
【図５】
2006039206.tif 000007
【図６】
2006039206.tif 000008
【図７】
2006039206.tif 000009
【図８】
2006039206.tif 000010
【図９】
2006039206.tif 000011
【図１０】
2006039206.tif 000012
【図１１】
2006039206.tif 000013
【図１２】
2006039206.tif 000014
【図１３】
2006039206.tif 000015
【図１４】
2006039206.tif 000016
【図１５】
2006039206.tif 000017