(57)【要約】【課題】  ファームウエアのバージョンアップをする際、ファームウエアプログラムをダウンロードするためのＰＣが必要であること、また専用Ｉ／Ｆを介してＰＣと機器間で通信する必要があった。【解決手段】  画像処理装置自身がネットワークＩ／Ｆを用いインターネットを介してファームウエアを保持するサーバと通信し、直接ファームウエアプログラムをダウンロードする手段を持つ。【選択図】        図１
2007011944.tif 000002
【特許請求の範囲】
【請求項１】
電源投入後の初期動作を実行するためのプログラムを格納するフラッシュＲＯＭを有し、プログラムを動作させるためのメモリを有し、さらにシステム起動後に動作するプログラムを格納するハードディスク等の外部記憶装置を有し、機体の個別を特定可能とするシリアル番号を格納する不揮発性メモリを有し、ネットワーク接続するネットワークインターフェイスを有するシステムにおいて、インターネット先に存在するファームウエアプログラムダウンロードサーバと通信する手段と、前述サーバよりデータを取得する手段と、シリアル番号を読み出す手段とを有することを特徴とする画像処理装置。
【請求項２】
画像処理装置内において、ダウンロードしたファームウエアプログラムデータをフラッシュＲＯＭ内部に格納されたプログラムに焼き換える際、ファームウエアプログラムを初期起動部とその他の部分に分けること、さらにその他の部分に関して前記シリアル番号を暗号鍵データとして、プログラムコードに加算または、減算することにより暗号化し、前記フラッシュＲＯＭに焼きこむことを特徴とするファームバージョンアップ方法。
【請求項３】
前記画像処理装置で、電源投入時に最初に起動されるプログラムの動作において、フラッシュＲＯＭの前記初期起動部が、その他の部分のデータをメモリ上に展開する際、前記シリアル番号を復号化の鍵として暗号化されたデータから加算または、減算することにより復号化しメモリに展開しプログラムを動作させることを特徴とする請求項２に記載のファームバージョンアップ方法。
【請求項４】
前記画像処理装置で、ハードディスク内部に格納されるファームウエアプログラムデータをダウンロードしたファームウエアプログラムに置き換える際、ファームウエア全体を、前記シリアル番号を暗号鍵データとして、プログラムコードを加算または、減算することより暗号化し、置き換えることを特徴とする請求項２に記載のファームバージョンアップ方法。
【請求項５】
前記画像処理装置で、電源投入時に最初に起動されるプログラムの動作において、ハードディスク内部に格納されているファームウエアプログラムデータをメモリ上に展開する際、前記シリアル番号を復号化の鍵として暗号化されたデータから加算または、減算することにより復号化しメモリに展開しプログラムを動作させることを特徴とする請求項２に記載のファームバージョンアップ方法。
【請求項６】
前記画像処理装置で、前記ファームウエアプログラムの暗号化の処理をサーバ側でシリアル番号を暗号鍵データとして、プログラムコードを加算または、減算することにより暗号化し、暗号化されたデータをして、画像処理装置にダウンロードすることを特徴とする請求項２または４に記載のファームバージョンアップ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
画像処理装置上で動作するファームウエアプログラムは、機能拡張のための動作するファームウエアプログラムの修正や、不具合修正のためにウエアプログラムの修正の方法において、プログラムをダウンロードして置き換え作業を行なうバージョンアップ時のダウンロード方法に関するものである。
【０００２】
また格納されているファームウエアプログラムの揮発性メインメモリ（以下、メモリとする）上への展開の手法に関するものである。
【背景技術】
【０００３】
従来のネットワーク接続可能な画像処理装置において、ファームウエアのバージョンアップ等は、人為（サービスマン等）的な処理の介在するＲＯＭの交換や、画像処理装置とサービスマンやユーザの所有するパーソナルコンピュータ上に装備されている画像処理装置との通信ソフトウエアにより、ファームウエアのバージョンアップを行ってきた。
【０００４】
ダウンロードするプログラムコードに、ダウンロードするサーバ側で、機体の個別を特定するシリアル番号を埋め込む処理を行ない、ネットワークと接続可能なパーソナルコンピュータ（以下ＰＣ）とファームウエアをダウンロードするサーバと通信し、一度ＰＣにファームウエアをダウンロードした後、専用Ｉ／ＦでＰＣと機器間で通信しファームウエアプログラムをバージョンアップするという技術はあった（例えば、特許文献１参照）。
【特許文献１】特開平１１−１４９３７９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、このような従来の技術では、ファームウエアのバージョンアップをする際、ファームウエアプログラムをダウンロードするためのＰＣが必要であること、また専用Ｉ／Ｆを介してＰＣと機器間で通信しなければいけないという第一の問題があった。
【０００６】
電気的書き換え可能なＲｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙであるフラッシュ（以下、フラッシュＲＯＭとする）や、ハードディスク（以下、ＨＤＤとする）内部のファームウエアプログラムに、機体を特定可能なシリアル番号を格納や、固体情報を元にした暗号化（データを加工）をしていない場合は、悪意のある第三者が、他の機体のフラッシュＲＯＭを取り出し、市販されているＲＯＭライターで複製が出来ることから、不正にフラッシュＲＯＭ内に格納されるファームウエアプログラムを容易に更新ができてしまう、またＨＤＤ内部のファイルをコピーすることでファームウエアプログラムを容易に更新できてしまう第二の問題がある。
【０００７】
不正にコピーされることによりソフトウエアの著作権の侵害がされてしまう問題もある。
【０００８】
また暗号化するロジックを複雑なロジックにして行なうと復号化の際に時間がかかり起動時間が長くなるという問題も発生する。
【０００９】
本発明は、以上の点に着目して成されたもので、悪意を持つ第三者による不正な機器のバージョンアップが防げるようになり、ファームウエアの著作権の保護に役立つ効果がある画像処理装置およびファームバージョンアップ方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明は、画像処理装置自身がネットワークＩ／Ｆを用いインターネットを介してファームウエアを保持するサーバと通信し、直接ファームウエアプログラムをダウンロードする手段を持つことにより、第一の問題点を解決する。
【００１１】
また、画像処理装置の機体の個別を特定可能のシリアル番号を暗号鍵データとして、ファームウエアプログラム暗号化してフラッシュＲＯＭ内部に格納する手段と、ファームウエアを動作させる際、シリアル番号を復号鍵データとして復号し起動させる手段をもつことで、第二の問題点となっている不正のフラッシュＲＯＭの複製を阻止する解決ができる。
【００１２】
ＨＤＤ格納のファームウエアプログラムに関しても同じ手段で解決が出来る。
【００１３】
暗号化の論理を複雑化させれば、させるほど時間が復号化に要する為、ファームウエアデータに対して、シリアル番号データを単位データサイズで加算するまた減算するという簡単なロジックで暗号化することにより復号化時の時間短縮を可能にする。
【００１４】
すなわち、本発明の技術内容は以下の構成を備えることにより前記課題を解決できた。
【００１５】
（１）電源投入後の初期動作を実行するためのプログラムを格納するフラッシュＲＯＭを有し、プログラムを動作させるためのメモリを有し、さらにシステム起動後に動作するプログラムを格納するハードディスク等の外部記憶装置を有し、機体の個別を特定可能とするシリアル番号を格納する不揮発性メモリを有し、ネットワーク接続するネットワークインターフェイスを有するシステムにおいて、インターネット先に存在するファームウエアプログラムダウンロードサーバと通信する手段と、前述サーバよりデータを取得する手段と、シリアル番号を読み出す手段とを有することを特徴とする画像処理装置。
【００１６】
（２）画像処理装置内において、ダウンロードしたファームウエアプログラムデータをフラッシュＲＯＭ内部に格納されたプログラムに焼き換える際、ファームウエアプログラムを初期起動部とその他の部分に分けること、さらにその他の部分に関して前記シリアル番号を暗号鍵データとして、プログラムコードに加算または、減算することにより暗号化し、前記フラッシュＲＯＭに焼きこむことを特徴とするファームバージョンアップ方法。
【発明の効果】
【００１７】
本発明によれば、フラッシュＲＯＭをＲＯＭライター等で複製したものを機器に装着しても正しく動作することが出来ない。また、ハードディスク上のプログラムをコピーし動作させてもプログラムが正常に動作しない仕組みが、容易に実現できる。
【００１８】
このことにより、悪意を持つ第三者による不正な機器のバージョンアップが防げるようになり、ファームウエアの著作権の保護に役立つ効果がある。
【発明を実施するための最良の形態】
【００１９】
以下本発明を実施するための最良の形態を、実施例により詳しく説明する。
【実施例１】
【００２０】
以下、本発明の第一実施例について図面を参照して説明する。
【００２１】
図１は、本発明にかかる基本的なシステム構成を示すネットワークでの概念図である。
【００２２】
１−１は、インターネット上に存在する画像処理装置の販売元が管理する前記画像処理装置上で動作するファームウエアのプログラム抱えるＦＴＰ／ＨＴＴＰサーバである。１−２は、画像処理装置が設置されているオフィスとインターネットを接続するファイアーウォールである。１−３はファームウエアのバージョンアップを希望する画像処理装置である。１−４は、１−２と１−３のそれぞれの機器を接続されているローカルエリアネットワーク（以下ＬＡＮ）を示す。
【００２３】
図２は、本システムにおける画像処理装置内部の基本的な構成を示すシステムブロック図である。
【００２４】
２−１はＣＰＵ、即ち中央処理装置であり、この装置全体の制御及び演算処理等を行なうものである。２−２はフラッシュＲＯＭ即ち読み出し専用メモリであり、システム起動プログラムやプリンタエンジンの制御を行なうプログラムや、文字データ、文字コード情報等の記憶領域である。
【００２５】
通常時は、ＲＯＭとして動作するが、プログラムにより電気的に内部のデータを消去およぶ書き込みが可能であるフラッシュＲＯＭである。
【００２６】
２−３はＲＡＭ即ちランダムアクセスメモリであり、使用制限のないデータ記憶領域で、ダウンロードにより追加登録されたフォントデータの展開領域と使用したり、様々な処理毎にプログラムやデータがロードされ実行される。２−４は、例えばハードディスク等の外部記憶装置であり、印刷装置か受け付けた印刷ジョブをスプールしたり、フラッシュＲＯＭに格納されている以外のプログラムや印刷データ等が格納されたり、作業用の領域としてダウンロードされたファームウエアプログラムが一時的に利用したりする。２−５は液晶などの表示部であり、印刷装置の設定状態や、現在の印刷装置内部の処理、エラー状態などの表示などに使用される。２−６は操作部であり、印刷装置の設定を変更を行なったり、ファームウエアのダウンロード処理の起動等の操作や、リセットするために使用される。
【００２７】
２−７はエンジンインターフェイスであり実際にエンジンを制御するコマンド等のやり取りする口である。ここでのエンジンとはスキャナおよびプリンタを指す。２−１１は、スキャナエンジンである、２−１２は、プリンタエンジンである。２−８はネットワークインターフェイスであり、このインターフェイスを介して機器がネットワークに接続される。２−９は外部インターフェイスであり、パラレル（またはシリアル）などのインターフェイスを介してホストコンピュータと接続される。２‐１３は、機種の固体識別を可能とするシリアル番号を格納する記憶媒体である。ＥＥＰＲＯＭであったりＳＲＡＭ等の不揮発性の記憶媒体である。
【００２８】
２−１０はシステムバスであり、上述の構成要素間のデータの通路となるべきものである。例えば、サーバからファームウエアのファイルをダウンロードする際は、次のようなながれになる。
【００２９】
ネットワークＩ／Ｆ２−８からデータを取得し、一度ＲＡＭ２−３に受信データを格納し、外部記憶装置２−４たとえばＨＤＤにファイルを格納する際、２−１０のシステムバスを経由してデータが流れる。
【００３０】
操作部２−６でのダウンロードの指示入力をきっかけにして、ＲＡＭ２−３に格納されたまたは、フラッシュＲＯＭ２−２上のプログラムが動作を始め、ネットワークＩ／Ｆ経由でサーバとのコマンドやり取りを行なった後、ファームウエアのデータファイルをＲＡＭ２−３に格納する。
【００３１】
その後、２−１０システムバスを経由し外部記憶装置２−４にファイルを格納する。また２−２のフラッシュＲＯＭの内容を書き換えたり、外部記憶装置２−４上のファームウエアを置き換えたりする。また、動作中には操作者に処理中であることを知らせたり、処理中の異常等のエラー動作が発生した際、エラーの種別を通知する情報が表示部２−５には表示される。
【００３２】
図３は、本実施例における画像処理装置で行なわれるファームウエアサーバに対するコマンドの送信、ファームウエアのファイル受信、ファームウエアプログラムの更新に関する操作を示す全体的な流れを示すフローチャートである。
【００３３】
画像処理装置でのファームウエアの更新を実行しようとした際、操作の起動は操作部２−６よりかける（Ｓ３０１）。ダウンロードするファームウエアの種類を起動用にＢｏｏｔｒｏｍファームウエアなのか？アプリケーション動作用のファームウエアなのか？エンジン制御用のファームウエアなのか？を選択する（Ｓ３０２）。ファームウエアダウンロードサーバ１−１との通信前に、自機の個別機体を示す機器内に存在する不揮発性の記憶装置２−１３に存在するシリアル番号情報を取得する（Ｓ３０３）。
【００３４】
Ｓ３０２，Ｓ３０３で取得した情報をファームウエアダウンロードサーバに対してファイアーウォール１−２先のインターネットを介して送信を行なう（Ｓ３０４）。このときのプロトコル、手法に関しては、ＳＭＴＰ／ＰＯＰを使用したメールによるデータ通知でもよいし、ＦＴＰ／ＨＴＴＰ等のプロトコルを使ったデータ送信でも手法は限定しない。ファームウエアダウンロードサーバ側では、Ｓ３０４の処理で受信したシリアル番号とファームウエア種別のデータより、ダウンロードを要求する画像処理装置に対して、シリアル番号をもとに、どのファームウエアをダウンロードさせてよいかどうかの判断を行ない、選択する（Ｓ３０５）。
【００３５】
Ｓ３０５で選択されたデータをファームウエアダウンロード要求のあった画像処理装置に対して送信を行なう（Ｓ３０６）。送信の処理は、ＳＭＴＰ／ＰＯＰを使用したメールによりメール添付データとしてもよいし、ＦＴＰ／ＨＴＴＰのプロトコル使用したものであってもよいが、本提案においては、転送プロトコルの部分は根幹でないので、その手法は特記しない。画像処理装置では、Ｓ３０６の処理で受信したファイルにより、フラッシュＲＯＭ２−２の書き換えを行なうバージョンアップを行なう（Ｓ３０７）。この書き換え動作に関しては、図４、図５、図６の概念説明図、図７、図８、図９、図１０のフローチャートにて詳細を説明する。
【００３６】
図４は、フラッシュＲＯＭ２−２に対して、シリアル番号を暗号鍵として暗号化したデータを、変換する処理を概念を図式化したものである。以下に個々の部分を説明する。
【００３７】
４−１は、ダウンロードされたファームウエアプログラムの初期起動部がメモリ２−３上に展開されたメモリマップ的に表したものである。４−２は、ダウンロードされたファームウエアプログラムの初期起動部以外のその他の部分がメモリ２−３上に展開されたメモリマップ的に表したものである。この４−１のデータと４−２のデータをフラッシュＲＯＭに焼くために、シリアル番号を暗号鍵として暗号化する。４−３は、４−１のデータを、暗号化の変換を行なわず、無変換ままメモリ上に展開したものである。４−４は、４−２のデータをシリアル番号を暗号鍵として加算、または減算という単純なロジックで暗号化処理を行った変換後のデータを示す。
【００３８】
図５は、シリアル番号を暗号鍵として暗号化際の処理を説明する図である。
【００３９】
５−１は、暗号化する前のファームウエアプログラムの一部のバイナリイメージであり、５−２は、暗号化処理後の変換データのバイナリイメージである。５−３は、シリアル番号を暗号鍵とした暗号化処理のロジックを示したものである。ここでは暗号化のロジックとして加算の例を示しているが、減算であってもよい。また暗号鍵であるシリアル番号が３２Ｂｉｔ  ４Ｂｙｔｅである場合なので、バイナリデータを３２Ｂｉｔ単位で加算または、減算して暗号化を行なう例を示している。
【００４０】
図６は、シリアル番号を復号鍵として復号化際の処理を説明する図である。
【００４１】
６−１は、復号化する前のファームウエアプログラムの一部のバイナリイメージであり、６−２は、復号化処理後の変換データのバイナリイメージである。６−３は、シリアル番号を復号鍵とした暗号化処理のロジックを示したものである。ここでは暗号化を加算のロジックで行っていたため、復号時は、のロジックは、減算で処理を行なう。暗号化が減算で行われている場合は、復号時は加算処理を行なう。また復号鍵であるシリアル番号が３２Ｂｉｔ  ４Ｂｙｔｅである場合なので、バイナリデータを３２Ｂｉｔ単位で減算または、加算して復号化を行なう例を示している。
【００４２】
図７は、フラッシュＲＯＭ２−２へのファームウエアにプログラムを焼きこむ際の暗号化の際に用いるフローチャートである。
【００４３】
図４で説明したようにファームウエアデータの初期起動部分とそれ以外の部分をメモリ上２−３に分けて展開する（Ｓ７０１）。初期起動部分のファームウエアプログラムは、そのままとし、それ以外の部分を機器固有のシリアル番号２−１３より読み出した値を暗号鍵として暗号化を行なう（Ｓ７０２）。この時の暗号化のロジックは、図５で示したように３２Ｂｉｔ単位の加算のロジックでもあってもよいし、減算のロジックであってもよい。Ｓ７０２の操作で暗号化されたデータをフラッシュＲＯＭ２−２に焼きこむことによりファームウエアの更新作業を終了する（Ｓ７０３）。
【００４４】
図８はフラッシュＲＯＭ２−２に書き込まれたファームウエアのデータを起動するときのシーケンスを説明するフローチャートである。
【００４５】
システムが起動した際、フラッシュＲＯＭ２−２内プログラムの初期起動部分が動作する（Ｓ８０１）。この際プログラムはフラッシュＲＯＭ２−２上で動作しつづけてもよいし、メモリ２−３に展開されて動作していてもよい。Ｓ８０１で動作している初期起動プログラムが、図５で説明したロジックでシリアル番号２−１３を暗号鍵として暗号化されたデータを、復号化してメモリ２−３上に展開する（Ｓ８０２）。展開終了したところで、プログラムカウンタを復号化されたプログラム上に移動しファームウエアを全体が動作し始める（Ｓ８０３）。
【００４６】
このとき、フラッシュＲＯＭが不正にコピーされてあった場合は、復号化に失敗するためプログラムが動作しなくなる。
【００４７】
図９はハードディスク等の外部記憶装置２−４に格納されているファームウエアのバージョンアップ手順を示すフローチャートである。
【００４８】
フラッシュＲＯＭ２−２上で動作するプログラム、または、メモリ２−３上で動作するプログラムが、ダウンロードされてメモリ上に展開されているファームウエアデータのすべてを図５で示すロジックでシリアル番号２−１３を暗号鍵として暗号化し、結果をメモリ２−３上に展開する（Ｓ９０１）。Ｓ９０１で暗号化されたファームウエアデータをハードディスク２−４上に格納し（Ｓ９０２）、ファームウエアのバージョンアップ作業を終了する。
【００４９】
図１０はハードディスク等の外部記憶装置２−４に格納されているファームウエアが起動するときのシーケンスを表すフローチャートである。
【００５０】
フラッシュＲＯＭ２−２上で動作するプログラムまたは、メモリ２−３上で動作するプログラムが、ハードディスク２−４上の暗号化されたファームウエアデータを読み出し、シリアル番号２−１３を復号鍵として図５で説明したロジックで復号化を行ないメモリ２−３上に展開する（Ｓ１００１）。メモリに復号化し転換されたファームウエアプログラムにプログラムカウンタを渡し、プログラムを動作させる（Ｓ１００２）。
【００５１】
このとき、ハードディスク上のプログラムファイルが不正にコピーされてあった場合は、復号化に失敗するためプログラムが動作しなくなる。
【図面の簡単な説明】
【００５２】
【図１】本発明を説明するネットワークシステムの構成を示すブロック図
【図２】画像処理装置の基本的な構成を示すブロック図
【図３】実施例を説明するフローチャートその１
【図４】実施例におけるフラッシュＲＯＭのファームウエアデータをシリアル番号を暗号鍵として加工する作の概念図
【図５】実施例におけるシリアル番号を暗号鍵としてファームウエアデータを暗号化するロジックの説明図
【図６】実施例におけるシリアル番号を復号鍵としてファームウエアデータを復号化するロジックの説明図
【図７】実施例を説明するフローチャートその２
【図８】実施例を説明するフローチャートその３
【図９】実施例を説明するフローチャートその４
【図１０】実施例を説明するフローチャートその５
【符号の説明】
【００５３】
１−１    ファームウエアサーバ
１−２    ファイアーウォール
１−３    画像処理装置（自機）
１−４    ＬＡＮ（ローカルエリアネットワーク）
２−１    ＣＰＵ
２−２    ＲＯＭ
２−３    ＲＡＭ
２−４    外部記憶装置
２−５    表示部
２−６    操作部
２−７    エンジンインターフェイス
２−８    ネットワークインターフェイス
２−９    外部インターフェイス
２−１０  システムバス
２−１１  スキャナ
２−１２  プリンタ
２−１３  シリアル番号記録媒体
【図１】
2007011944.tif 000003
【図２】
2007011944.tif 000004
【図３】
2007011944.tif 000005
【図４】
2007011944.tif 000006
【図５】
2007011944.tif 000007
【図６】
2007011944.tif 000008
【図７】
2007011944.tif 000009
【図８】
2007011944.tif 000010
【図９】
2007011944.tif 000011
【図１０】
2007011944.tif 000012