(57)【要約】【課題】  プログラム更新用データの欠損或は破壊、又は第３者による捏造等によって、送信先及びプログラム更新用データそのものが不正となっている場合には、そのプログラム更新用データによりＣＰＵのプログラムを更新すると、システムが誤動作したり動作不能になるという虞がある。【解決手段】  外部より供給される、暗号化されたヘッダ及びプログラムを含むプログラム更新用データを受信するコントローラ１０２と、受信されたプログラム更新用データのヘッダを復号及び認証して前記プログラムの供給先のＣＰＵを特定し、特定されたＣＰＵに暗号化されたプログラムを供給するＳＵＢＣＰＵ１と、供給先のＳＳＵＢＣＰＵ２は、その暗号化されたプログラムを復号及び認証し、認証されたプログラムを用いて当該ＣＰＵのプログラムを更新する。【選択図】  図１
2006178544.tif 000002
【特許請求の範囲】
【請求項１】
互いにデータの送受信が可能な複数のＣＰＵを有するデータ処理装置であって、
外部より供給される、暗号化されたヘッダ及びプログラムを含むプログラム更新用データを受信する受信手段と、
前記受信手段により受信された前記プログラム更新用データのヘッダを復号及び認証して前記プログラムの供給先のＣＰＵを特定し、特定された前記ＣＰＵに前記暗号化されたプログラムを供給する供給手段とを有し、
前記供給先のＣＰＵは、
前記供給手段により供給された前記暗号化されたプログラムを復号及び認証する復号認証手段と、
前記復号認証手段により認証されたプログラムを用いて当該ＣＰＵのプログラムを更新することを特徴とするデータ処理装置。
【請求項２】
前記プログラム更新用データは、前記暗号化されたヘッダ及びプログラムのそれぞれの復号用及び認証用データを含むことを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記複数のＣＰＵは、前記プログラム更新用データを受信するための第１ＣＰＵ、前記第１ＣＰＵから供給される前記プログラム更新用データの供給対象先となり得る複数のＳＵＢＣＰＵとを含み、前記供給先ＣＰＵは前記複数のＳＵＢＣＰＵのいずれかであることを特徴とする請求項１又は２に記載のデータ処理装置。
【請求項４】
前記複数のＳＵＢＣＰＵのそれぞれは、当該ＳＵＢＣＰＵの識別番号、前記暗号化されたプログラム更新用データを復号及び認証するための復号認証秘密キーと、前記プログラム更新用データの復号及び認証を行うための運用プログラムを記憶するメモリを有することを特徴とする請求項３に記載のデータ処理装置。
【請求項５】
前記複数のＳＵＢＣＰＵのそれぞれは、更に、更新したプログラムのバージョン情報を前記メモリに記憶することを特徴とする請求項４に記載のデータ処理装置。
【請求項６】
それぞれが少なくともＣＰＵ、メモリ及び通信回路を有し、それぞれ相互に通信可能な複数のＣＰＵ回路と、
外部より供給される、暗号化されたヘッダ及びプログラムを含むプログラム更新用データを受信して前記複数のＣＰＵ回路に供給するコントローラとを有し、
前記コントローラは、
前記プログラム更新用データに含まれる前記ヘッダを復号して、当該プログラム更新用データの供給先を特定して供給する手段を有し、
前記複数のＣＰＵ回路のそれぞれは、
前記プログラム更新用データを復号して認証する復号認証手段と、
前記復号認証手段により復号及び認証されたプログラムを前記メモリに格納する手段と、
を有することを特徴とするデータ処理装置。
【請求項７】
前記復号認証手段は、前記メモリに記憶されている認証コードに基づいて前記プログラム更新用データを認証することを特徴とする請求項６に記載のデータ処理装置。
【請求項８】
互いにデータの送受信が可能な複数のＣＰＵを有するデータ処理装置におけるプログラム更新方法であって、
外部より供給される、暗号化されたヘッダ及びプログラムを含むプログラム更新用データを受信する受信工程と、
前記受信工程で受信された前記プログラム更新用データのヘッダを復号及び認証して前記プログラムの供給先のＣＰＵを特定し、特定された前記ＣＰＵに前記暗号化されたプログラムを供給する供給工程とを有し、
前記供給工程により供給された前記暗号化されたプログラムを復号及び認証する復号認証工程と、
前記復号認証工程で認証されたプログラムを用いて当該ＣＰＵのプログラムを更新することを特徴とするデータ処理装置におけるプログラム更新方法。
【請求項９】
前記プログラム更新用データは、前記暗号化されたヘッダ及びプログラムのそれぞれの復号用及び認証用データを含むことを特徴とする請求項８に記載のプログラム更新方法。
【請求項１０】
前記複数のＳＵＢＣＰＵのそれぞれは、更に、更新したプログラムのバージョン情報を前記メモリに記憶することを特徴とする請求項９に記載のプログラム更新方法。
【請求項１１】
それぞれが少なくともＣＰＵ、メモリ及び通信回路を有し、それぞれ相互に通信可能な複数のＣＰＵ回路と、外部より供給される、暗号化されたヘッダ及びプログラムを含むプログラム更新用データを受信して前記複数のＣＰＵ回路に供給するコントローラとを有するデータ処理装置におけるプログラム更新方法であって、
前記プログラム更新用データに含まれる前記ヘッダを復号して、当該プログラム更新用データの供給先を特定して供給する工程と、
前記複数のＣＰＵ回路のそれぞれにおいて、前記プログラム更新用データを復号して認証する復号認証工程と、
前記復号認証工程により復号及び認証されたプログラムを前記メモリに格納する工程と、
を有することを特徴とするデータ処理装置におけるプログラム更新方法。
【請求項１２】
前記復号認証工程は、前記メモリに記憶されている認証コードに基づいて前記プログラム更新用データを認証することを特徴とする請求項１１に記載のプログラム更新方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のＣＰＵを有し、これら複数のＣＰＵにより制御されるデータ処理装置及びそのプログラム更新方法に関するものである。
【背景技術】
【０００２】
複数のＣＰＵを用いて処理を行うマルチＣＰＵ構成のコンピュータ機器において、各ＣＰＵで実行されるプログラムを更新するためにプログラム更新用データを外部から供給することにより、プログラムの更新を行う技術が提案されている（特許文献１）。これによれば、その供給されたプログラム更新用データがどのＣＰＵ用のプログラムであるかを判定し、その判定結果に基づいてその動作プログラムを更新する必要がある。このような更新対象のプログラムを実行するＣＰＵを検知する方法として、マルチＣＰＵ全体を統括しているコントローラＣＰＵが、そのプログラム更新用データに含まれているＣＰＵ識別子により、どのＣＰＵ用の更新用データであるかを判断し、その更新用データを対応するＣＰＵに送信することが記載されている。具体的には、コントローラＣＰＵは、プログラム更新データを供給する外部の更新データ出力装置から出力されたプログラム更新データの所定の位置に格納されているＣＰＵ指定番号と、そのＣＰＵ指定番号に対応するプログラム更新用データの本体アドレス情報とに基づいて、そのプログラム更新用データ本体を読み出し、その指定番号に対応するＣＰＵに送信して、そのＣＰＵのプログラムの更新作業を行っている。
【特許文献１】特開２００１−３４５４３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら上記従来例では、そのＣＰＵ指定番号に基づいて、対応するＣＰＵがどれであるかを判断しているため、プログラム更新用データに対する正当性の確認まではなされていない。このため例えば、プログラム更新用データの欠損或は破壊、又は第３者による捏造等によって、送信先及びプログラム更新用データそのものが不正となっている場合には、そのプログラム更新用データによりＣＰＵのプログラムを更新すると、システムが誤動作したり動作不能になるという虞がある。
【０００４】
本発明は上記問題点に鑑みてなされたもので、外部より供給される、暗号化されたプログラム更新用データを復号して認証し、その認証したプログラムによりＣＰＵにより実行されるプログラムを更新するデータ処理装置及びそのプログラム更新方法を提供することにある。
【課題を解決するための手段】
【０００５】
本発明の一態様に係るデータ処理装置は以下のような構成を備える。即ち、
互いにデータの送受信が可能な複数のＣＰＵを有するデータ処理装置であって、
外部より供給される、暗号化されたヘッダ及びプログラムを含むプログラム更新用データを受信する受信手段と、
前記受信手段により受信された前記プログラム更新用データのヘッダを復号及び認証して前記プログラムの供給先のＣＰＵを特定し、特定された前記ＣＰＵに前記暗号化されたプログラムを供給する供給手段とを有し、
前記供給先のＣＰＵは、
前記供給手段により供給された前記暗号化されたプログラムを復号及び認証する復号認証手段と、
前記復号認証手段により認証されたプログラムを用いて当該ＣＰＵのプログラムを更新することを特徴とする。
【０００６】
本発明の一態様に係るデータ処理装置におけるプログラム更新方法は以下のような工程を備える。即ち、
互いにデータの送受信が可能な複数のＣＰＵを有するデータ処理装置におけるプログラム更新方法であって、
外部より供給される、暗号化されたヘッダ及びプログラムを含むプログラム更新用データを受信する受信工程と、
前記受信工程で受信された前記プログラム更新用データのヘッダを復号及び認証して前記プログラムの供給先のＣＰＵを特定し、特定された前記ＣＰＵに前記暗号化されたプログラムを供給する供給工程とを有し、
前記供給工程により供給された前記暗号化されたプログラムを復号及び認証する復号認証工程と、
前記復号認証工程で認証されたプログラムを用いて当該ＣＰＵのプログラムを更新することを特徴とする。
【発明の効果】
【０００７】
本発明によれば、不正なプログラムによりＣＰＵのプログラムが更新されることによる誤動作の発生や動作不良の発生を防止できるという効果がある。
【発明を実施するための最良の形態】
【０００８】
以下、添付図面を参照して本発明の好適な実施の形態を詳しく説明する。
【０００９】
図１は、本発明の実施の形態に係るプログラム更新機能を有するマルチＣＰＵシステムの構成を示すブロック図である。尚、このようなマルチＣＰＵシステムは、例えばコンピュータ機器（ＰＣ）等のような情報処理装置、またはレーザビームプリンタやインクジェットプリンタなどの画像形成装置、通信装置、複写機、複写機能に通信機能等を備えた多機能複合機などの制御回路として採用される。
【００１０】
図１において、プログラム更新用データ出力装置（以下、更新用データ出力装置）１０１は、マルチＣＰＵシステムのＣＰＵのプログラム更新用データを供給する。コントローラＣＰＵボード１０２は、このマルチＣＰＵシステムに供給されるプログラム更新用データの受信及び、その更新結果を報告する処理を行っている。このコントローラＣＰＵボード１０２は更新用データ出力装置１０１と接続され、この更新用データ出力装置１０１から供給されるプログラム更新用データを受信し、このマルチＣＰＵシステムを構成するＳＵＢＣＰＵボードの対応するＳＵＢＣＰＵに、そのプログラム更新用データを供給する。ここでは具体的には、コントローラＣＰＵボード１０２に最も隣接しているＳＵＢＣＰＵボードシステム１０３のＳＵＢＣＰＵボード１０４のＳＵＢＣＰＵ１（１９１）に、そのプログラム更新用データを供給する。
【００１１】
ＳＵＢＣＰＵボードシステム１０３は、このマルチＣＰＵシステムを構成している複数のＳＵＢＣＰＵボード１０４，１０５を有し、各ＳＵＢＣＰＵボードによる制御処理を実行している。このＳＵＢＣＰＵボードシステム１０３は、コントローラＣＰＵボード１０２から供給されるプログラム更新用データに従って、それぞれ対応するＳＵＢＣＰＵボード１０４，１０５において、ＳＵＢＣＰＵの動作プログラムを更新することができる。尚、ＳＵＢＣＰＵボード１０４は、シリアル通信制御部１１２によってコントローラＣＰＵ１０２との間でデータの送受信を行うことができ、シリアル通信制御部１１１によりＳＵＢＣＰＵボード１０５のシリアル通信制御部１１６との間でデータの送受信を行うことができる。尚、ここでは１つのＳＵＢＣＰＵボードシステム１０３のみを示しているが、これ以外のＳＵＢＣＰＵボードシステムが設けられていても良く、また１つのＳＵＢＣＰＵボードシステムは、１つ或はそれ以上のＳＵＢＣＰＵボードを有していても良い。
【００１２】
以下、各部の構成を説明する。
【００１３】
コントローラＣＰＵボード１０２は、このボード１０２全体の制御を司るコントローラＣＰＵ１０６、このＣＰＵ１０６により実行されるプログラムを記憶しているメモリ１０６ａ、更新用データ出力装置１０１との間でデータの送受信を行う通信制御部１０７、ＳＵＢＣＰＵボードシステム１０３との間でのデータのやり取りを行うシリアル通信制御部１０８を備えている。
【００１４】
ＳＵＢＣＰＵボード１０４は、このボード１０４全体の制御を司るＳＵＢＣＰＵ１（１０９）、このＳＵＢＣＰＵ１（１０９）により実行されるプログラムを記憶している不揮発メモリ１１３、ＳＵＢＣＰＵ１（１０９）による制御処理時に各種データを一時的に記憶するＲＡＭ１１０、コントローラＣＰＵボード１０２との間でデータの送受信を行うシリアル通信制御部１１２、ＳＵＢＣＰＵボード１０５との間でデータの送受信を行うシリアル通信制御部１１１を備えている。
【００１５】
ＳＵＢＣＰＵボード１０５も同様に、このボード１０５全体の制御を司るＳＵＢＣＰＵ２（１１４）、このＳＵＢＣＰＵ２（１１４）により実行される動作プログラムを記憶している不揮発メモリ１１７、ＳＵＢＣＰＵ２（１１４）による制御処理時に各種データを一時的に記憶するＲＡＭ１１５、ＳＵＢＣＰＵボード１０４との間でデータの送受信を行うシリアル通信制御部１１６を備えている。
【００１６】
図２は、本実施の形態に係るプログラム更新機能を有するマルチＣＰＵシステムにおける不揮発メモリ１１３，１１７の内容を説明する図である。尚、この実施の形態では、不揮発メモリ１１３，１１７の基本データ構成は実質的に同一とする。
【００１７】
この不揮発メモリ１１３，１１７は、プログラム更新用データによって書き換え可能な書換え可能ブロック（第１記憶ブロック）２０２と、書き換え不可能なブロック（第２記憶ブロック）２０３とに分割されている。これは、例えば不揮発メモリとしてフラッシュメモリを使用している場合、各メモリ領域毎に書き換えの可能／不可能を予め設定しておくことにより、これら第１及び第２ブロックを設定することができる。書き変え可能な第１記憶ブロック２０２には、通常動作時に、そのＳＵＢＣＰＵボードのＳＵＢＣＰＵが実行する動作プログラム２０４と、この動作プログラム２０４のバージョン番号２０５が格納されている。
【００１８】
また書き換え不可能な第２記憶ブロック２０３には、この不揮発メモリに記憶されている動作プログラム２０４を実行するＳＵＢＣＰＵを識別するためのＣＰＵ指定番号２０６と、対象となる暗号化されたプログラムを復号及び認証するための復号・認証秘密キー２０７と、動作プログラム２０４を更新するための運用プログラム２０８とが格納されている。
【００１９】
図３は、本実施の形態において、更新用データ出力装置１０１から供給されるプログラム更新用データの内容を説明する図である。
【００２０】
図３において、３０１は、本実施の形態に係るマルチＣＰＵシステムに供給される動作プログラム更新用データを示している。尚、この動作プログラム更新用データ３０１は、このマルチＣＰＵシステムが備えているＳＵＢＣＰＵボードのＳＵＢＣＰＵを指定し、そのＳＵＢＣＰＵにより実行される動作プログラムの更新したい数（ここでは、Ｎ）の更新プログラムを含んでいる。
【００２１】
ヘッダ復号用データ３０２は、プログラムを更新するＳＵＢＣＰＵを指定するＣＰＵ指定番号を含むヘッダ３０３を復号する際に使用されるデータである。このヘッダ３０３は、このヘッダ復号用データ３０２と、ＳＵＢＣＰＵボード１０４の不揮発メモリ１１３に記憶されている復号・認証秘密キー２０７（図２）、運用プログラム２０８によってＳＵＢＣＰＵボード１０４で復号され、認証データ０（３０４）と不揮発メモリ１１３に含まれる復号・認証秘密キー２０７と運用プログラム２０８とによってＳＵＢＣＰＵボード１０４で認証される。これによりＳＵＢＣＰＵボード１０４のＳＵＢＣＰＵ１（１０９）は、この動作プログラム更新用データ３０１の送信先を特定することができる。
【００２２】
尚、ここでは、ヘッダ３０３と、本文に相当するプログラム更新用データ１，２，〜Ｎ（３０６，３０８，３１０）とその認証データ１，２，〜Ｎ（３０７，３０９，３１１）とは、それぞれ別々（ヘッダ用、本文用）の復号用データによって暗号化されている。そして認証データ０（３０４）は、ヘッダの復号用データ３０２の他に、本文に相当するプログラムデータの一部を認証対象とすることにより、本文のプログラム更新用データとヘッダとがそれぞれ別々のアルゴリズム／秘密キーの場合でも、容易に全てのデータを認証できる構成となっている。
【００２３】
本文用の復号用データ３０５は、それ以降の暗号化されたプログラム更新用データ１〜Ｎ（３０６，３０８，３１０）、及びそれぞれに対応する暗号化された認証データ１〜Ｎ（３０７，３０９，３１１）を復号する際に使用されるデータである。またプログラム更新用データ１〜Ｎのそれぞれは、復号された後、その対応する認証データを用いて認証される。
【００２４】
図４は、本発明の実施の形態に係るマルチＣＰＵシステムにおけるプログラム更新処理を説明するフローチャートである。この処理は、更新用データ出力装置１０１よりコントローラＣＰＵ１０６に対してプログラム更新作業指示及びプログラム更新用データが送信されることによって開始される。
【００２５】
まずステップＳ４０１で、コントローラＣＰＵ１０６は、ＳＵＢＣＰＵ１（１０９）に対し、ＣＰＵ指定番号を含むプログラム更新作業の開始を指示するコマンドを送信する。次にステップＳ４０２で、コントローラＣＰＵ１０６は、更新用データ出力装置１０１より受信したプログラム更新用データ３０１を、ＳＵＢＣＰＵボード１０４のＳＵＢＣＰＵ１（１０９）に送信する。これによりＳＵＢＣＰＵ１（１０９）は、その受信したプログラム更新用データ３０１をＲＡＭ１１０に格納する。次にステップＳ４０３で、ＳＵＢＣＰＵ１（１０９）は、ＣＰＵ指定番号を含むヘッダ３０３を、その認証データ０（３０４）とヘッダ復号用データ３０２を用いて復号してプレインテキスト化したヘッダ３０３を得て認証する。またこの際、本文の復号用データ３０５を用いて、ヘッダ３０３以外の本文を復号し、この本文に含まれるプログラムの更新指示コマンドに含まれるＳＵＢＣＰＵの指定番号を得る。
【００２６】
次にステップＳ４０４で、ＳＵＢＣＰＵ１（１０９）は、このプレインテキスト化したヘッダ３０３と、動作プログラムの更新指示コマンドに含まれるＳＵＢＣＰＵの指定番号とが一致するか否かを判定する。ここで一致しない場合、即ち、ヘッダと本文との整合性が取れていない場合はステップＳ４０６に進み、ＳＵＢＣＰＵ１（１０９）は、コントローラＣＰＵ１０６にエラーを通知して、一連のプログラム更新作業を終了させる。
【００２７】
一方ステップＳ４０４で、ヘッダと本文とでＳＵＢＣＰＵの指定番号が一致する場合はステップＳ４０５に進み、ＳＵＢＣＰＵ１（１０９）は、そのプレインテキスト化されたヘッダ３０３に含まれるＣＰＵの指定番号が、不揮発メモリ１１７１１３の第２ブロック２０３に保存されたＣＰＵ指定番号２０６とが一致しているか否かを判断し、一致する場合、即ち、そのＣＰＵ指定番号に該当するＳＵＢＣＰＵが、このＳＵＢＣＰＵボードシステム１０３に含まれている場合はステップＳ４０７に進んで、その後のプログラム更新動作を継続するが、一致しない場合には、ステップＳ４０６に進み、コントローラＣＰＵ１０６にエラーを通知して一連のプログラム更新作業を終了させる。ＳＵＢＣＰＵ１は、不揮発メモリ１１７の第２ブロック２０３に保存されたＣＰＵ指定番号２０６は、ＳＵＢＣＰＵ２に対して、問い合わせる事で知る事ができる。尚、ここではＳＵＢＣＰＵボードは、１０４と１０５の２種類しか示されていないが、それ以上の場合には、このステップＳ４０５で、ヘッダ３０３に含まれるＣＰＵの指定番号と、それだけ分の不揮発メモリ１１３の第２ブロック２０３に保存されたＣＰＵ指定番号２０６とが一致しているか否かを判断することはもちろんである。
【００２８】
ステップＳ４０７では、ＳＵＢＣＰＵ１（１０９）は、ＳＵＢＣＰＵの指定番号に該当するＳＵＢＣＰＵが搭載されているＳＵＢＣＰＵボードの不揮発メモリの書き換え可能ブロック２０２に格納されているバージョン番号２０５を取得する。これは各ＳＵＢＣＰＵボードに搭載されているシリアル通信制御部を介して行われる。そして、そのバージョン番号２０５と、プログラム更新用データに含まれるバージョン番号とを比較し、ＳＵＢＣＰＵの指定番号が一致し、且つ、バージョン番号が一致しないかどうか、即ち、同じバージョン番号であれば更新の必要がないため、バージョンが一致するかどうかを判定する。この条件を満足しない場合はステップＳ４０８に進み、コントローラＣＰＵ１０６にプログラム更新の必要が無い旨を通知して処理を終了する。
【００２９】
一方ステップＳ４０７で、この条件が満足されるとステップＳ４０９に進み、ＳＵＢＣＰＵ１（１０９）は、ＳＵＢＣＰＵの指定番号が示すＳＵＢＣＰＵ（ここでは例えばＳＵＢＣＰＵ２（１１４）とする）にプログラム更新作業を指示するコマンドを送信する。そして、そのＳＵＢＣＰＵ２（１１４）に、その本文の復号用データ３０５〜認証データＮ（３１１）までを送信する。これによりＣＰＵ指定番号で示されるＳＵＢＣＰＵボードに、そのプログラム更新用データが送信されてプログラムが復号され、そのＳＵＢＣＰＵボードの動作プログラムが更新される。但し、ここでＳＵＢＣＰＵボード１０４だけが存在している場合には、ＳＵＢＣＰＵ１（１０９）がＳＵＢＣＰＵの指定番号に該当しなければ、ステップＳ４０９以降の処理が実行されることはないことはもちろんである。
【００３０】
ステップＳ４０９では、そのＣＰＵ指定番号に該当するＳＵＢＣＰＵ２（１１４）が、そのプログラム更新用データを受信して、そのＳＵＢＣＰＵボード１０５のＲＡＭ１１５に格納する。そしてステップＳ４１０で、そのＳＵＢＣＰＵ２（１１４）は、その本文の復号用データ３０５、暗号化されたプログラム更新用データ３０６、認証データ３０７と、そのボードの不揮発メモリ１１７に記憶されている復号・認証秘密キー２０７と運用プログラム２０８とを使用して、そのプログラム更新用データ３０６及び認証データ３０７を復号してプレインテキスト化されたプログラム更新用データ及び認証データを得る。そして、この復号されたプログラム更新用本文データを認証データを使って認証する。なお、このステップＳ４１０では、その指定されたＳＵＢＣＰＵ２（１１４）は、プログラム更新用データ１（３０６）〜プログラム更新用データＮ（３１０）の全てに対して復号及び認証処理を実行する。
【００３１】
次にステップＳ４１１で、そのＳＵＢＣＰＵ２（１１４）は、ステップＳ４１０で復号したプログラム更新用データの認証に成功したかどうかを判定する。認証に失敗した場合はステップＳ４０６に進み、ＳＵＢＣＰＵ１（１０９）にエラーを通知してプログラム更新作業を終了する。これによりＳＵＢＣＰＵ１（１０９）は、コントローラＣＰＵ１０６にエラーを通知してプログラム更新作業を終了する。
【００３２】
一方、ステップＳ４１１で、プログラム更新用データの認証に成功した場合はステップＳ４１２に進み、ＳＵＢＣＰＵ２（１１４）は、そのプログラム更新用データを、そのＳＵＢＣＰＵボード１０５の不揮発メモリ１１７の書き換え可能な第１記憶ブロック２０２に書き込む。このとき、その動作プログラムのバージョン番号をバージョン番号２０５に記憶する。そしてステップＳ４１３で、その書き込み結果をＳＵＢＣＰＵ１（１０９）に通知して、そのＳＵＢＣＰＵボード１０５のプログラム更新作業を終了する。
【００３３】
これによりＳＵＢＣＰＵ１（１０９）は、コントローラＣＰＵ１０６に、そのプログラムの更新結果を通知する。またコントローラＣＰＵ１０６は、更新用データ出力装置１０１に対して、その更新結果を通知することにより、プログラム更新作業を終了する。
【００３４】
以上説明したように本実施の形態１に係るマルチＣＰＵシステムによれば、プログラム更新用データの破壊、改竄による不正な不揮発メモリの更新、別のＣＰＵ用のプログラム更新用データによる動作プログラムの更新といった事態の発生を防止できる。また、このような動作プログラムの誤った更新による、システムの誤動作や動作不良などの発生を防止できるという効果がある。
【００３５】
［実施の形態２］
次に本発明の実施の形態２について説明する。前述の実施の形態１は、プリンタ等の電子機器に予め組み込まれ、各々のＣＰＵの通信経路内の位置及び機能が決まっているマルチＣＰＵシステムにおけるプログラム更新処理を念頭にして説明したが、この実施の形態２では、例えばパーソナルコンピュータ（ＰＣ）等の拡張ボードの様に、マルチＣＰＵシステムにおいて、ＳＵＢＣＰＵの通信経路内の位置及び機能が確定されていない場合での処理について説明する。尚、この実施の形態２に係るマルチＣＰＵシステムのハードウェア構成は前述の実施の形態１の場合と同様であるため、その説明を省略する。
【００３６】
図５は、本発明の実施の形態２に係るマルチＣＰＵシステムにおけるプログラム更新処理を説明するフローチャートである。
【００３７】
尚、この実施の形態２では、マルチＣＰＵシステムにおけるプログラム更新用データ３０１において、ＳＵＢＣＰＵの指定番号を含むヘッダ３０３及び認証データ０（３０４）は、ヘッダ復号用データ３０２とＳＵＢＣＰＵ指定番号が示すＳＵＢＣＰＵの不揮発メモリの第２記憶ブロック２０３に含まれる復号・認証秘密キー２０７、運用プログラム２０８によって復号されて、プレインテキストが得られる。また、こうして復号されたヘッダ３０３は、その復号された認証データ０（３０４）と復号・認証秘密キー２０７と運用プログラム２０８とによって認証される。この処理は、更新用データ出力装置１０１よりコントローラＣＰＵ１０６に対してプログラム更新作業指示及びプログラム更新用データが送信されることによって開始される。
【００３８】
まずステップＳ５０１で、コントローラＣＰＵ１０６はその受信したプログラム更新作業指示に従ってＳＵＢＣＰＵ１（１０９）に対して、プログラム更新作業の開始を指示する。またこれによりＳＵＢＣＰＵ１（１０９）は、ＳＵＢＣＰＵ２（１１４）に対して、プログラム更新作業の開始を指示する。次にステップＳ５０２で、コントローラＣＰＵ１０６は、その受信した動作プログラム更新用データ３０１をＳＵＢＣＰＵ１（１０９）に送信する。またＳＵＢＣＰＵ１（１０６）も、その送られてきた動作プログラム更新用データ３０１をＳＵＢＣＰＵ２（１１４）に送信する。そしてステップＳ５０３で、ＳＵＢＣＰＵ１（１０９）とＳＵＢＣＰＵ２（１１４）は、その受信したプログラム更新用データ３０１のヘッダ３０３とヘッダ用認証データ０（３０４）とを復号してプレインテキストにした後、そのヘッダの認証を行う。
【００３９】
ステップＳ５０４では、ＳＵＢＣＰＵ１（１０９）及びＳＵＢＣＰＵ２（１１４）は、そのプレインテキストとなったプログラム更新データのヘッダに含まれるＣＰＵの指定番号と、各々のＳＵＢＣＰＵボードの不揮発メモリ１１２，１１３の書き換え不可能な第２記憶ブロック２０３に格納されたＣＰＵ指定番号２０６と一致するかどうかを判定する。一致する場合はステップＳ５０６に進み、その後のプログラム更新作業を続行するが、一致しない場合にはステップＳ５０５に進み、その後の各々のプログラム更新作業を終了させる。即ち、ステップＳ５０５で、ＳＵＢＣＰＵ１（１０９）はコントローラＣＰＵ１０６にエラーを通知して、ＳＵＢＣＰＵシステム１０３によるプログラム更新作業が終了する。
【００４０】
一方ステップＳ５０４で、ＳＵＢＣＰＵの指定番号と、不揮発メモリに格納されたＣＰＵ指定番号２０６とが一致すると（ここではＳＵＢＣＰＵ２（１１４）が該当するものとする）ステップＳ５０６に進み、暗号化された本文復号用データ３０５、プログラム更新用データ３０６，認証データ３０７と、不揮発メモリに記憶されている復号・認証秘密キー２０７と運用プログラム２０８によって、プログラム更新用データ３０６、認証データ３０７を復号してプレインテキスト化されたデータを取得する。そして、この復号したプログラム更新用データを認証データ３０７を使って認証する。そしてこれ以降、その指定されたＳＵＢＣＰＵは、ステップＳ５０６を繰り返し実行して、プログラム更新用データ１〜Ｎまでの全てについて復号及び認証を行う。
【００４１】
こうしてステップＳ５０７で、指定されたＳＵＢＣＰＵ２（１１４）が、その認証に成功したかどうかを判定し、認証に失敗するとステップＳ５０５０に進み、その指定ＳＵＢＣＰＵ２（１１４）は、ＳＵＢＣＰＵ１（１０９）にエラーを通知してプログラム更新作業を終了する。これによりＳＵＢＣＰＵ１（１０９）は、そのエラーをコントローラＣＰＵ１０６に通知してプログラム更新作業を終了する。
【００４２】
一方ステップＳ５０７で、プログラム更新用データの認証に成功した場合はステップＳ５０８に進み、そのＳＵＢＣＰＵ２（１１４）は、プログラム更新用データを不揮発メモリ１１７の書き換え可能な第１記憶ブロック２０２の動作プログラム２０４に書き込む。このとき、その動作プログラムのバージョン番号をバージョン番号２０５に記憶する。そしてステップＳ５１０に進み、その書き込み結果をＳＵＢＣＰＵ１（１０９）に通知して、プログラム更新作業を終了する。これによりＳＵＢＣＰＵ１（１０９）は、コントローラＣＰＵ１０６に、その更新結果を通知する。また、更にコントローラＣＰＵ１０６は、更新用データ出力装置１０１に対して、その更新結果を通知することにより、プログラム更新作業を終了する。
【００４３】
以上説明したように本実施の形態２によれば、マルチＣＰＵシステムにおけるＳＵＢＣＰＵの配置に、より自由度を持たせることができ、このようなシステムにおいても前述の実施の形態１と同様に、プログラム更新用データの破壊、不正な改竄による動作プログラムの更新、別のＣＰＵ用の動作プログラムにより誤って更新する等の誤った動作プログラムの更新を防止できる。これにより、誤った動作プログラムが起動されることによるシステムの誤動作や動作不良の発生を防止できる。
【００４４】
［実施の形態３］
次に本発明の実施の形態３について説明する。この実施の形態３では、各々のＳＵＢＣＰＵのＣＰＵ番号の通信経路上の位置が既知である場合、１つのプログラム更新データで複数のＣＰＵ番号を持つＳＵＢＣＰＵの動作プログラムを更新する場合で説明する。尚、この実施の形態３に係るマルチＣＰＵシステムのハードウェア構成及び不揮発メモリのデータ構成は前述の実施の形態１，２と同様であるためその説明を省略する。
【００４５】
図６は、本発明の実施の形態３に係るプログラム更新用データのデータ構成を説明する図である。
【００４６】
この実施の形態３に係るプログラム更新用データ６０１は、ＳＵＢＣＰＵ１（１０９）用のプログラム更新用データ６０３と、ＳＵＢＣＰＵ２（１１４）用のプログラム更新用データ６０４、ＣＰＵ指定番号及び指定番号のプログラム更新データが存在するデータ位置を示すヘッダ６０６と、このヘッダ６０６を復号するに必要なヘッダ復号用データ６０５と、復号されたヘッダ６０６を認証するに必要な認証データ０（６０７）が、前述の実施の形態に係るプログラム更新用データ３０１に追加されている。
【００４７】
ここで、ＳＵＢＣＰＵ１（１０９）用のプログラム更新用データ６０３及びヘッダデータ６０２は、ＳＵＢＣＰＵ１（１０９）により復号・認証が可能な対称アルゴリズム及び秘密キーで暗号化されている。またＳＵＢＣＰＵ２（１１４）用のプログラム更新用データ６０４は、ＳＵＢＣＰＵ２（１１４）によって復号・認証が可能な対称アルゴリズム及び秘密キーで暗号化されている。更に、ヘッダの認証データ６０７は、ＳＵＢＣＰＵ１（１０９）用のプログラム更新用データ６０３の少なくとも一部と、ＳＵＢＣＰＵ２（１１４）用のプログラム更新用データ６０４の少なくとも一部のデータを認証対象として構成されている。
【００４８】
図７は、本実施の形態３に係るマルチＣＰＵシステムにおけるプログラム更新処理を説明するフローチャートである。この処理は、更新用データ出力装置１０１よりコントローラＣＰＵ１０６に対してプログラム更新作業指示及びプログラム更新用データが送信されることによって開始される。
【００４９】
ますステップＳ７０１で、コントローラＣＰＵ１０６は、更新用データ出力装置１０１よりの更新指示に応じて、ＳＵＢＣＰＵ１（１０９）にプログラムの更新を指示する。次にステップＳ７０２で、コントローラＣＰＵ１０６は、ＳＵＢＣＰＵ１（１０９）にプログラム更新用データ６０１を送信する。次にステップＳ７０３で、ＳＵＢＣＰＵ１（１０９）は、そのプログラム更新用データのヘッダデータ６０２を復号し、ＳＵＢＣＰＵ１（１０９）用のプログラム更新データ６０３の少なくとも一部、ＳＵＢＣＰＵ２（１１４）用のプログラム更新用データ６０４の少なくとも一部とともに認証する。次にステップＳ７０４では、ヘッダデータ６０２の認証に成功し、且つそのヘッダに含まれるＣＰＵ指定番号を示すＳＵＢＣＰＵが、ＳＵＢＣＰＵシステム１０３の中に存在するか否かを判定する。存在する場合はステップＳ７０６に進むが、そうでない場合はステップＳ７０５に進み、ＳＵＢＣＰＵ１（１０９）はコントローラＣＰＵ１０６にエラーを通知して、プログラム処理を終了する。
【００５０】
一方、存在する場合はステップＳ７０６で、ＳＵＢＣＰＵ１（１０９）はヘッダで指定されているＣＰＵ指定番号のＳＵＢＣＰＵ（ここではＳＵＢＣＰＵ２（１１４）とする）にプログラムの更新を指示する。そしてステップＳ７０７で、ＳＵＢＣＰＵ１（１０９）は、そのヘッダで指定されているＣＰＵ指定番号とアドレス情報とに基づいて、ＳＵＢＣＰＵ２（１１４）にプログラム更新用データを送信する。次にステップＳ７０８で、ＳＵＢＣＰＵ１（１０９）からプログラム更新指示とプログラム更新用データを受信したＳＵＢＣＰＵ２（１１４）は、その受信したプログラム更新データのヘッダと認証データとを復号して、プレインテキストのプログラム更新データ及びヘッダを取得する。そして認証データを使って、そのヘッダを認証する。
【００５１】
その結果、ステップＳ７０９で、ＳＵＢＣＰＵ２（１１４）は、その認証が成功し、且つプレインテキストとなったプログラム更新データのヘッダに含まれるＣＰＵ指定番号と、そのＳＵＢＣＰＵボード１０５の不揮発メモリ１１７の第２記憶ブロック２０３に格納されたＣＰＵ指定番号２０６とが一致するかを判定する。一致したときはステップＳ７１０に進むが、一致しない場合にはステップＳ７１５に進み、ＳＵＢＣＰＵ１（１０９）にエラーを通知してプログラム更新作業を終了させる。
【００５２】
ステップＳ７１０では、ＳＵＢＣＰＵ２（１１４）は、そのプログラム更新データ６０４を復号して認証する。次にステップＳ７１１で、ＳＵＢＣＰＵ２（１１４）は、認証に成功したかどうかを判定し、成功した場合はステップＳ７１２に進むが、そうでない場合にはステップＳ７１５に進み、ＳＵＢＣＰＵ１（１０９）にエラーを通知してプログラム更新作業を終了する。
【００５３】
ステップＳ７１２では、ＳＵＢＣＰＵ２（１１４）は、プログラム更新データによって不揮発メモリ１１７の書き換え可能な第１記憶ブロック２０２の動作プログラム２０４を更新する。このとき、その動作プログラムのバージョン番号をバージョン番号２０５に記憶する。次にステップＳ７１３で、ＳＵＢＣＰＵ２（１１４）は、その更新作業の処理結果をＳＵＢＣＰＵ１（１０９）に通知する。そしてステップＳ７０５で、ＳＵＢＣＰＵ１（１０９）は、そのＳＵＢＣＰＵ２（１１４）からの更新結果をコントローラＣＰＵ１０６に通知する。
【００５４】
尚、ここではＳＵＢＣＰＵボードが２種類の場合で説明したが、それ以上のＳＵＢＣＰＵボードが含まれている場合であっても、ヘッダに含まれているＣＰＵ番号に応じてＳＵＢＣＰＵ１（１０９）がＳＵＢＣＰＵを指定することにより、上述の実施の形態と同様にして、その指定されたＳＳＵＢＣＰＵの動作プログラムが更新されることは言うまでもない。
【００５５】
上記説明したように本実施の形態３によれば、プログラム更新用データの破壊、不正な改竄による動作プログラムの更新、別のＣＰＵ用の動作プログラムで誤って更新するといった事態の発生を防止できる。これにより、不正なプログラム更新用データによる動作プログラムの更新に伴う、システムの誤動作やデータの破損などの発生を防止できるという効果がある。
【００５６】
［他の実施形態］
以上、本発明の実施の形態を詳述したが、本発明は、複数の機器から構成されるシステムに適用しても良いし、または一つの機器からなる装置に適用しても良い。
【００５７】
なお本発明は、前述した実施の形態の機能を実現するソフトウェアのプログラムを、システム或いは装置に直接或いは遠隔から供給し、そのシステム或いは装置のコンピュータが、その供給されたプログラムコードを読み出して実行することによっても達成される場合を含む。その場合、プログラムの機能を有していれば、その形態はプログラムである必要はない。従って、本発明の機能処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明には、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等、プログラムの形態を問わない。
【００５８】
プログラムを供給するための記憶媒体としては、例えば、フロッピー（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−Ｒ）などがある。その他のプログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続し、該ホームページから本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルをハードディスク等の記憶媒体にダウンロードすることによっても供給できる。また本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバも、本発明のクレームに含まれるものである。
【００５９】
また本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布し、所定の条件を満足するユーザに対してインターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせ、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【００６０】
またコンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される他、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが、実際の処理の一部または全部を行ない、その処理によっても前述した実施形態の機能が実現され得る。
【００６１】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行ない、その処理によっても前述した実施形態の機能が実現される。
【図面の簡単な説明】
【００６２】
【図１】本発明の実施の形態に係るマルチＣＰＵシステムの構成を説明するブロック図である。
【図２】本発明の実施の形態に係るＳＵＢＣＰＵボードの不揮発メモリのデータ構成を説明する図である。
【図３】本発明の実施の形態１，２に係るプログラム更新用データの構成を説明する図である。
【図４】本発明の実施の形態１に係るマルチＣＰＵシステムにおけるプログラム更新処理を説明するフローチャートである。
【図５】本発明の実施の形態２に係るマルチＣＰＵシステムにおけるプログラム更新処理を説明するフローチャートである。
【図６】本発明の実施の形態３に係るプログラム更新用データの構成を説明する図である。
【図７】本発明の実施の形態３に係るマルチＣＰＵシステムにおけるプログラム更新処理を説明するフローチャートである。
【図１】
2006178544.tif 000003
【図２】
2006178544.tif 000004
【図３】
2006178544.tif 000005
【図４】
2006178544.tif 000006
【図５】
2006178544.tif 000007
【図６】
2006178544.tif 000008
【図７】
2006178544.tif 000009