(57)【要約】【課題】プログラムの正当性を確保する必要のある印刷装置であって、サブＣＰＵ用のプログラム更新を通信によって適正に行うことのできる印刷装置、等を提供する。【解決手段】印刷装置が、外部装置と通信を行う通信部と、前記通信部を制御する第１ＣＰＵと、前記第１ＣＰＵと通信を行う第２ＣＰＵと、を備え、前記第１ＣＰＵは、前記通信部が受信した、前記第２ＣＰＵ用のプログラムを更新するための更新データの正当性を確認した後に、前記更新データを用いて前記第２ＣＰＵ用のプログラムを更新する。【選択図】  図１
2016212545.tif 000002
【特許請求の範囲】
【請求項１】
外部装置と通信を行う通信部と、
前記通信部を制御する第１ＣＰＵと、
前記第１ＣＰＵと通信を行う第２ＣＰＵと、を備え、
前記第１ＣＰＵは、前記通信部が受信した前記第２ＣＰＵ用のプログラムを更新するための更新データの正当性を確認した後に、前記更新データを用いて前記第２ＣＰＵ用のプログラムを更新する
ことを特徴とする印刷装置。
【請求項２】
請求項１において、更に、
前記第１ＣＰＵが実行するプログラムを記憶する第１記憶部と、
前記第２ＣＰＵが実行するプログラムを記憶する第２記憶部と、
前記更新データを一時的に記憶する第３記憶部と、を備える
ことを特徴とする印刷装置。
【請求項３】
請求項２において、
前記第１ＣＰＵは、前記通信部が受信した前記更新データを前記第３記憶部に格納し、
前記第１ＣＰＵは、前記格納した更新データの正当性を確認後、当該更新データを前記第２ＣＰＵに送信し、
前記第２ＣＰＵは、前記送信された更新データで前記第２記憶部に記憶されるプログラムを更新する
ことを特徴とする印刷装置。
【請求項４】
請求項１乃至３のいずれか一項において、
前記更新データは、更新プログラムデータと正当性判断情報を含み、
前記第１ＣＰＵは、前記正当性判断情報に基づいて前記更新プログラムデータの正当性を判断する
ことを特徴とする印刷装置。
【請求項５】
請求項１乃至４のいずれか一項において、
前記第２ＣＰＵは、フィスカルメモリーを制御する
ことを特徴とする印刷装置。
【請求項６】
ホスト装置と印刷装置を有するプログラム更新システムであって、
前記ホスト装置は、
前記印刷装置のプログラムを更新するための更新データを前記印刷装置に送信する更新部を備え、
前記印刷装置は、
前記ホスト装置と通信を行う通信部と、
前記通信部を制御する第１ＣＰＵと、
前記第１ＣＰＵと通信を行う第２ＣＰＵと、を備え、
前記第１ＣＰＵは、前記通信部が受信した前記更新データの正当性を確認した後に、前記更新データを用いて前記第２ＣＰＵ用のプログラムを更新する
ことを特徴とするプログラム更新システム。
【請求項７】
外部装置と通信を行う通信部と、前記通信部を制御する第１ＣＰＵと、前記第１ＣＰＵと通信を行う第２ＣＰＵと、を備える印刷装置の制御方法であって、
前記第１ＣＰＵが、前記通信部で受信した前記第２ＣＰＵ用のプログラムを更新するための更新データの正当性を確認した後に、前記更新データを用いて前記第２ＣＰＵ用のプログラムを更新する
ことを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムの正当性を確保する必要のある印刷装置等に関し、特に、サブＣＰＵ用のプログラム更新を通信によって適正に行うことのできる印刷装置等に関する。
【背景技術】
【０００２】
いわゆるフィスカルプリンターなど、セキュリティー性能を求められる電子機器においては、データの改ざん等の不正を防止し、データの正当性を確保する必要がある。それに伴い、データを処理するプログラム（ファームウェア）自体の正当性を確保することが重要である。
【０００３】
そこで、従来は、このような機器について、更新（アップデート）機能を持たせないようにする、プログラムを格納するメモリーへの書き込みを禁止する等の措置が施されていた。また、このような機器に複数のＣＰＵが備えられる場合には、サブＣＰＵ用のプログラムについては、製造工程でのみ更新が可能である仕様としていた。
【０００４】
下記特許文献１には、プログラムの更新が可能なマルチＣＰＵシステムにおいて、プログラム更新を行うべきＣＰＵの種類が増えた場合でも更新作業を高速に行える発明について提案されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−６４３１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述したセキュリティー性能を求められる電子機器においても、プログラムのバグ（不具合）修正、ユーザーの要望による機能追加、法律改正に伴う仕様変更などによるプログラム更新の必要があり、これらのプログラム更新を通信によって行えるようにすることは、ユーザー、ベンダー（提供者）の双方にとって利便性が高く、また、コスト面でも有利である。従って、サブＣＰＵ用のプログラム更新についても、通信による方法が強く望まれている。そして、その際には、更新プログラム自体の正当性を確実に確保することが必要である。
【０００７】
なお、上記特許文献１には、サブＣＰＵのプログラム更新について記載されているが、更新プログラムのデータ自体についての正当性確保については記載されていない。
【０００８】
そこで、本発明の目的は、プログラムの正当性を確保する必要のある印刷装置であって、サブＣＰＵ用のプログラム更新を通信によって適正に行うことのできる印刷装置、等を提供することである。
【課題を解決するための手段】
【０００９】
上記の目的を達成するために、本発明の一つの側面は、印刷装置が、外部装置と通信を行う通信部と、前記通信部を制御する第１ＣＰＵと、前記第１ＣＰＵと通信を行う第２ＣＰＵと、を備え、前記第１ＣＰＵは、前記通信部が受信した、前記第２ＣＰＵ用のプログラムを更新するための更新データの正当性を確認した後に、前記更新データを用いて前記第２ＣＰＵ用のプログラムを更新する、ことである。
【００１０】
また、上記発明において、好ましい態様は、更に、前記第１ＣＰＵが実行するプログラムを記憶する第１記憶部と、前記第２ＣＰＵが実行するプログラムを記憶する第２記憶部と、前記更新データを一時的に記憶する第３記憶部と、を備える、ことを特徴とする。
【００１１】
更に、上記発明において、好ましい態様は、前記第１ＣＰＵは、前記通信部が受信した前記更新データを前記第３記憶部に格納し、前記第１ＣＰＵは、前記格納した更新データの正当性を確認後、当該更新データを前記第２ＣＰＵに送信し、前記第２ＣＰＵは、前記送信された更新データで前記第２記憶部に記憶されるプログラムを更新する、ことを特徴とする。
【００１２】
更に、上記発明において、好ましい態様は、前記更新データは、更新プログラムデータと正当性判断情報を含み、前記第１ＣＰＵは、前記正当性判断情報に基づいて前記更新プログラムデータの正当性を判断する、ことを特徴とする。
【００１３】
更に、上記発明において、好ましい態様は、前記第２ＣＰＵは、フィスカルメモリーを制御する、ことを特徴とする。
【００１４】
上記の目的を達成するために、本発明の別の側面は、ホスト装置と印刷装置を有するプログラム更新システムにおいて、前記ホスト装置は、前記印刷装置のプログラムを更新するための更新データを前記印刷装置に送信する更新部を備え、前記印刷装置は、前記ホスト装置と通信を行う通信部と、前記通信部を制御する第１ＣＰＵと、前記第１ＣＰＵと通信を行う第２ＣＰＵと、を備え、前記第１ＣＰＵは、前記通信部が受信した前記更新データの正当性を確認した後に、前記更新データを用いて前記第２ＣＰＵ用のプログラムを更新する、ことである。
【００１５】
上記の目的を達成するために、本発明の更に別の側面は、外部装置と通信を行う通信部と、前記通信部を制御する第１ＣＰＵと、前記第１ＣＰＵと通信を行う第２ＣＰＵと、を備える印刷装置の制御方法において、前記第１ＣＰＵが、前記通信部で受信した前記第２ＣＰＵ用のプログラムを更新するための更新データの正当性を確認した後に、前記更新データを用いて前記第２ＣＰＵ用のプログラムを更新する、ことである。
【００１６】
本発明の更なる目的及び、特徴は、以下に説明する発明の実施の形態から明らかになる。
【図面の簡単な説明】
【００１７】
【図１】本発明を適用したプログラム更新システムの実施の形態例に係る構成図である。
【図２】プログラム更新システム１００による更新処理の手順を例示したフローチャートである。
【図３】更新データ１４の生成手順及び正当性判断手順を説明するための図である。
【発明を実施するための形態】
【００１８】
以下、図面を参照して本発明の実施の形態例を説明する。しかしながら、かかる実施の形態例が、本発明の技術的範囲を限定するものではない。なお、図において、同一又は類似のものには同一の参照番号又は参照記号を付して説明する。
【００１９】
図１は、本発明を適用したプログラム更新システムの実施の形態例に係る構成図である。図１に示す本実施の形態例に係るプログラム更新システム１００では、プリンター２（印刷装置）のメインＣＰＵ２４（第１ＣＰＵ）が、ホストコンピューター１（外部装置）から送信されるサブＣＰＵ２７（第２ＣＰＵ）用の更新データ１４に含まれる正当性判断情報（デジタル署名１４３、図３参照）に基づいて、更新データ１４に含まれる更新プログラム自体の正当性を判断した後に、サブＣＰＵ２７用のプログラム更新を行う。これにより、プリンター２のサブＣＰＵ２７用のプログラム更新が、通信によって適正行われ、利便性の向上及びコストの低減を図ることができる。
【００２０】
図１に示すように、本プログラム更新システム１００は、セキュリティー性能を必要とするプリンター２と当該プリンター２のホスト装置であるホストコンピューター１とを備える。ホストコンピューター１とプリンター２はネットワークを介して通信可能に接続される。プリンター２のプログラム（ファームウェア）を更新する際には、ホストコンピューター１から更新プログラムを送信して作業を行う。
【００２１】
ホストコンピューター１は、パーソナルコンピューター等で構成され、図示していないが、ＣＰＵ、ＲＡＭ、ＨＤＤ、通信装置、表示装置、指示装置等を備える。また、ホストコンピューター１は、図１に示すように、機能構成として、更新部１１を備える。
【００２２】
更新部１１は、プリンター２のプログラム更新を指示する部分であり、データ転送部１２とデータ記憶部１３を備える。
【００２３】
データ記憶部１３は、プリンター２のプログラムを更新するための更新データ１４を記憶する。更新データ１４については、図３に基づいて後述するが、更新データ１４は、ＲＯＭに書き込むための所定のフォーマットで表現され、ヘッダー１４１、更新プログラムデータ１４２、及びデジタル署名１４３を含む。ヘッダー１４１は、更新先を示す情報等、更新データ１４を説明する情報であり、更新プログラムデータ１４２は更新プログラム自体のデータであり、デジタル署名１４３は更新データ１４及び更新プログラムデータ１４２の正当性を判断するための正当性判断情報である。なお、本実施の形態例では、更新データ１４は、プリンター２のサブ制御部２２（サブＣＰＵ２７）用の更新データである。また、更新データ１４は、ホストコンピューター１で生成されてもよいし、他の装置で生成されてもよい。また、更新部１１が更新データ１４を生成する機能を備えてもよい。なお、データ記憶部１３は、ＨＤＤ等の記憶装置で構成することができる。
【００２４】
データ転送部１２は、データ記憶部１３に記憶される更新データ１４をプリンター２へ送信する部分である。データ転送部１２は、データ転送用のアプリケーションプログラム、当該プログラムに従って動作するＣＰＵ、ＲＡＭ等によって構成される。
【００２５】
プリンター２は、ホストコンピューター１によるプログラム更新の対象装置であり、一例として、店舗の精算装置（レジ）等に接続されて使用される、フィスカルプリンターである。
【００２６】
プリンター２は、動作モードとして、プログラムを更新する際の更新モードと、印刷を実行する際の印刷モードを備える。
【００２７】
プリンター２は、図１に示すように、メイン制御部２１と複数のサブ制御部２２（２２ａ、２２ｂ、・・・）を備える。各制御部２１、２２は、ＣＰＵ、ＲＯＭ、ＲＡＭ、ＡＳＩＣ等を載せた電子基板で構成される。また、図示していないが、各サブ制御部２２は、制御対象である各動作部を備える。
【００２８】
メイン制御部２１は、プリンター２全体の制御、ホストコンピューター１を含む外部装置との通信の制御を司る部分である。また、メイン制御部２１は、サブ制御部２２用のプログラム更新の際に、更新指示及び更新プログラムの正当性判断を行う。
【００２９】
メイン制御部２１は、図１に示すように、通信部２３、メインＣＰＵ２４、一時記憶部２５、及びメイン記憶部２６を備える。通信部２３は、外部装置との通信を司る部分である。通信部２３は、一例として、外部装置がプリンター２の印刷処理等の制御を行うホストコンピューター１の場合は、ＵＳＢ（Universal Serial Bus）に則った通信を行う。また、外部装置はネットワークを介するサーバーコンピューターでもよい。
【００３０】
メインＣＰＵ２４（第１ＣＰＵ）は、メインＣＰＵ用のプログラム（ファームウェア）に従って上述したメイン制御部２１の制御を実行する部分である。
【００３１】
一時記憶部２５（第３記憶部）は、メインＣＰＵ２４が用いるテンポラリーメモリーであり、例えば、フラッシュＲＯＭで構成される。一時記憶部２５は、ホストコンピューター１から送信される更新データ１４を一時的に記憶（保持）する。
【００３２】
メイン記憶部２６（第１記憶部）は、メインＣＰＵ２４が用いるメインメモリーであり、例えば、フラッシュＲＯＭで構成される。メイン記憶部２６は、メインＣＰＵ２４が実行するプログラムを記憶する。
【００３３】
サブ制御部２２（２２ａ、２２ｂ、・・・）は、図１に示すように、それぞれ、サブＣＰＵ２７（２７ａ、２７ｂ、・・・）（第２ＣＰＵ）とサブ記憶部２８（２８ａ、２８ｂ、・・・）（第２記憶部）を備える。各サブＣＰＵ２７は、各サブ記憶部２８に記憶されるサブＣＰＵ用のプログラム（ファームウェア）を実行して制御を行う。これらサブＣＰＵ用のプログラムが本プログラム更新システム１００での更新対象である。各サブＣＰＵ２７は、メインＣＰＵ２４から送信される更新データ１４を受信して、更新データ１４に含まれる更新プログラムデータ１４２（図３参照）を各サブ記憶部２８に書き込んでプログラム更新を行う。なお、各サブ記憶部２８は、例えば、フラッシュＲＯＭで構成される。
【００３４】
サブ制御部２２としては、印刷制御部（２２ａ）、フィスカルメモリー制御部（２２ｂ）、バッテリー制御部、などがある。
【００３５】
印刷制御部（２２ａ）には、図示しない動作部（印刷機構部）が接続され、印刷制御部（２２ａ）の制御により印刷機構部が用紙などの印刷媒体に印刷を実行する。例えば、印刷方式として、インクジェット方式を用いる場合には、印刷機構部は、インクを吐出するノズルを備えた印刷ヘッド、印刷媒体を搬送する搬送装置などを備える。
【００３６】
フィスカルメモリー制御部（２２ｂ）には、図示しない動作部（フィスカルメモリー）が接続され、フィスカルメモリーは、プリンター２に印刷指示を出す精算装置等で処理された売上情報などのフィスカルデータを記憶する。フィスカルメモリーに記憶された情報は、消去、編集することができない構成とされ、徴税のために、改竄が防止される。フィスカルメモリーは、不揮発性のメモリーで構成することができる。
【００３７】
以上説明したような構成を備える本プログラム更新システム１００では、以下のような手順で、サブＣＰＵ用のプログラムの更新処理が行われる。図２は、プログラム更新システム１００による更新処理の手順を例示したフローチャートである。
【００３８】
ホストコンピューター１の操作者がデータ転送部１２を起動すると、データ転送部１２は、データ記憶部１３に記憶される更新データ１４を読み出して取得する（図２のステップＳ１）。
【００３９】
次に、データ転送部１２は、取得した更新データ１４をネットワーク３を介してプリンター２へ送信する（図２のステップＳ２）。
【００４０】
ホストコンピューター１は、通信部２３で送信された更新データ１４を受信する。受信された更新データ１４は、メインＣＰＵ２４に渡される。
【００４１】
メインＣＰＵ２４は、更新データ１４のヘッダー１４１を解釈し、更新データ１４がサブＣＰＵ用の更新データであると判断し、動作モードを更新モードに切り替える。その後、メインＣＰＵ２４は、更新データ１４を一時記憶部２５に格納（保持）する（図２のステップＳ３）。
【００４２】
次に、メインＣＰＵ２４は、一時記憶部２４に記憶される更新データ１４の正当性を判断する（図２のステップＳ４）。当該正当性判断の具体的な処理については後述するが、本実施形態例では、一例として、デジタル署名方式による認証処理を行う。当該正当性判断処理により、更新データ１４全体の正当性、換言すれば、プログラム更新指示の正当性、及び、更新データ１４に含まれる更新プログラムデータ１４２自体の正当性が判断される。
【００４３】
正当性判断の結果、更新データ１４の正当性が認められなければ（図２のステップＳ４のＮＧ）、メインＣＰＵ２４は、一時記憶部２５から更新データ１４を削除する（図２のステップＳ５）。その後、メインＣＰＵ２４は、ホストコンピューター１の更新部１１に対し、更新データ１４の正当性が認められず更新データ１４によるプログラム更新が行われなかった旨の応答を行い、当該プログラム更新処理を終了する。
【００４４】
一方、正当性判断（Ｓ４）の結果、更新データ１４の正当性が認められれば（図２のステップＳ４のＯＫ）、メインＣＰＵ２４は、一時記憶部２４から更新データ１４を読み出し、そのヘッダー１４１に含まれる更新先のサブＣＰＵ２７に、更新データ１４を送信する（図２のステップＳ６）。
【００４５】
更新データ１４を送信されたサブＣＰＵ２７は、更新データ１４を受信し、更新データ１４の指示に従って、更新データ１４に含まれる更新プログラムデータ１４２をサブ記憶部２８に記憶する。当該記憶の際に、サブＣＰＵ２７は、更新プログラムデータ１４２に相当する、サブ記憶部２８に記憶されていたこれまでの（現行の）プログラムデータを消去し、更新データ１４によるプログラム更新が実行される（図２のステップＳ７）。
【００４６】
更新先のサブ制御部２２がサブ制御部２２ｂ（フィスカルメモリー制御部）である場合には、サブＣＰＵ２７ｂがフィスカルメモリー用の更新データ１４を受信し、サブ記憶部２８ｂに記憶されるプログラムが、受信された更新データ１４に含まれる更新プログラムデータ１４２によって更新される。
【００４７】
以上のようにして、本プログラム更新システム１００によるプログラム更新処理が実行される。
【００４８】
次に、更新データ１４の生成処理及び正当性判断処理について説明する。図３は、更新データ１４の生成手順及び正当性判断手順を説明するための図である。更新データ１４を生成する際には、まず、新たにサブ記憶部２８ｂに記憶されるべきプログラムのデータである更新プログラムデータ１４２が用意される（図３の（Ａ））。更新プログラムデータ１４２は、ＲＯＭへ書き込みを行うための所定のフォーマットで表現されている。
【００４９】
次に、所定のハッシュ関数に更新プログラムデータ１４２を入力され（図３の（Ｂ））、更新プログラムデータ１４２のハッシュ値が求められる（図３の（Ｃ））。その後、求めたハッシュ値を秘密鍵で暗号化され（図３の（Ｄ））、デジタル署名１４３が生成される（図３の（Ｅ））。生成されたデジタル署名１４３は、上記所定のフォーマットで表現される。
【００５０】
その後、更新先の情報等を含むヘッダー１４１が上記所定のフォーマットで生成され（図３の（Ｆ））、生成されたヘッダー１４１、更新プログラムデータ１４２、及びデジタル署名１４３が合わせられて更新データ１４が生成される（図３の（Ｇ））。かかる更新データ１４の生成は、ホストコンピューター１あるいは他のコンピューターに備えられる更新データ生成プログラムを用いて行うことができる。
【００５１】
生成された更新データ１４は、上述の通り、プリンター２のメインＣＰＵ２４により正当性の判断がなされる。メインＣＰＵ２４は、受信した更新データ１４に含まれる更新プログラムデータ１４２を読み出す（図３の（Ｈ））。メインＣＰＵ２４は、更新データ１４を生成した際の上記ハッシュ関数を記憶しており、そのハッシュ関数に読み出した更新プログラムデータ１４２を入力してハッシュ値を求める（図３の（Ｊ））。
【００５２】
また、メインＣＰＵ２４は、受信した更新データ１４に含まれるデジタル署名１４３を読み出す（図３の（Ｉ））。メインＣＰＵ２４は、更新データ１４を生成した際に用いた秘密鍵に対応する公開鍵を記憶しており、その公開鍵を用いて読み出したデジタル署名１４３を復号化し、ハッシュ値を得る（図３の（Ｋ））。
【００５３】
その後、メインＣＰＵ２４は、図３の（Ｊ）により求めたハッシュ値と、図３の（Ｋ）により求めたハッシュ値を照合（比較）し（図３の（Ｌ））、両者が一致すれば、受信した更新データ１４は正当であると判断する。すなわち、更新指示と更新プログラムデータ１４２自身の正当性を認める。
【００５４】
一方、両者が一致していない場合には、メインＣＰＵ２４は、受信した更新データ１４は正当でないと判断する。この場合には、更新プログラムデータ１４２が改ざんされた虞がある。また、上述した公開鍵による復号化（図３の（Ｋ））ができない場合には、メインＣＰＵ２４は、受信した更新データ１４は正当でないと判断する。この場合には、更新指示が正当な指示者からのもでないことが疑われる。
【００５５】
なお、以上説明したデジタル署名方式以外の方法で正当性判断の処理を行ってもよい。
【００５６】
以上説明したように、本実施の形態例に係るプログラム更新システム１００では、プリンター２に送信されるサブＣＰＵ用の更新データ１４が正当性判断情報（デジタル署名１４３）を含み、更新処理を行う前に、メインＣＰＵ２４が正当性判断情報を用いて更新データ１４の正当性を判断するので、正当性が確保されるべき装置のサブＣＰＵ用のプログラム更新を、通信を用いて適正に行うことができる。従って、ユーザー及びベンダーの利便性向上と、プログラム更新にかかるコストの削減を図ることができる。
【００５７】
また、正当性の判断には、更新プログラムのデータ自体を用いるので、更新プログラムの改ざん等の不正を有効に防止することができる。
【００５８】
なお、本発明はプリンター以外の電子機器に適用することができる。
【００５９】
本発明の保護範囲は、上記の実施の形態に限定されず、特許請求の範囲に記載された発明とその均等物に及ぶものである。
【符号の説明】
【００６０】
１  ホストコンピューター、  ２  プリンター、  １１  更新部、  １２  データ転送部、  １３  データ記憶部、  １４  更新データ、  ２１  メイン制御部、  ２２（２２ａ、２２ｂ）  サブ制御部、  ２３  通信部、  ２４  メインＣＰＵ、  ２５  一時記憶部、  ２６  メイン記憶部、  ２７（２７ａ、２７ｂ）  サブＣＰＵ、  ２８（２８ａ、２８ｂ）  サブ記憶部、  １００  プログラム更新システム、  １４１  ヘッダー、  １４２  更新プログラムデータ、  １４３  デジタル署名
【図１】
2016212545.tif 000003
【図２】
2016212545.tif 000004
【図３】
2016212545.tif 000005