(57)【要約】【課題】情報処理装置が実行する制御プログラムの改ざんを防止できるようにする。【解決手段】ファームウェアと、ファームウェアに対応するデジタル署名とを記憶するメインＲＯＭ１２１と、ファームウェアを実行するメイン制御部１３０と、公開鍵を記憶し、公開鍵でデジタル署名を復号する演算部２０２を備えるスマートカード２００に接続するリーダーライター１５０と、メインＲＯＭ１２１が記憶するファームウェアから第１ハッシュ値を算出し、スマートカード２００に、ファームウェアに対応するデジタル署名を復号させて第２ハッシュ値を取得し、第１ハッシュ値と第２ハッシュ値とを比較し、比較結果に基づいてメイン制御部１３０によるファームウェアの実行を制限する第２サブ制御部１４６とを備える。【選択図】図１
2017033492.tif 000002
【特許請求の範囲】
【請求項１】
制御プログラムと、前記制御プログラムに対応するデジタル署名とを記憶する記憶部と、
前記制御プログラムを実行する制御部と、
復号鍵を記憶し前記復号鍵で前記デジタル署名を復号する演算部を備える外部媒体に接続する媒体接続部と、を備え、
前記制御部は、前記記憶部が記憶する前記制御プログラムから第１ハッシュ値を算出し、前記外部媒体から前記媒体接続部を介して前記制御プログラムに対応する前記デジタル署名を復号した第２ハッシュ値を取得し、前記第１ハッシュ値と前記第２ハッシュ値とを比較し、一致しない場合に前記制御プログラムの実行を制限することを特徴とする情報処理装置。
【請求項２】
前記制御部は、前記情報処理装置が起動した際に、前記記憶部の記憶するブートプログラムを実行し、前記第１ハッシュ値と前記第２ハッシュ値とが一致しない場合に前記制御プログラムの実行を制限すること、を特徴とする請求項１に記載の情報処理装置。
【請求項３】
制御プログラムを実行する制御部と、
前記制御プログラムを更新する更新用の制御プログラムと、前記更新用の制御プログラムに対応するデジタル署名とを入力する入力部と、
復号鍵を記憶し前記復号鍵で前記デジタル署名を復号する演算部を備える外部媒体に接続する媒体接続部と、を備え、
前記制御部は、入力された前記更新用の制御プログラムから第３ハッシュ値を算出し、前記外部媒体から前記媒体接続部を介して前記更新用の制御プログラムに対応する前記デジタル署名を復号した第４ハッシュ値を取得し、前記第３ハッシュ値と前記第４ハッシュ値とを比較し、一致しない場合に前記更新用の制御プログラムへの更新を制限することを特徴とする情報処理装置。
【請求項４】
前記情報処理装置は、フィスカル情報を記憶する記憶部を備えるフィスカルプリンターであること、を特徴とする請求項１から３のいずれかに記載の情報処理装置。
【請求項５】
復号鍵を記憶する媒体記憶部、及び前記復号鍵でデジタル署名を復号する演算部を備える媒体と、前記媒体に接続可能な情報処理装置とを有する情報処理システムであって、
前記情報処理装置は、
制御プログラムを実行する制御部と、
前記制御プログラムと、前記制御プログラムに対応する前記デジタル署名とを記憶する記憶部と、を備え、
前記制御部は、前記記憶部が記憶する前記制御プログラムから第１ハッシュ値を算出し、前記媒体から前記制御プログラムに対応する前記デジタル署名を復号した第２ハッシュ値を取得し、前記第１ハッシュ値と前記第２ハッシュ値とを比較し、一致しない場合に前記制御プログラムの実行を制限することを特徴とする情報処理システム。
【請求項６】
復号鍵を記憶する媒体記憶部、及び前記復号鍵でデジタル署名を復号する演算部を備える媒体と、前記媒体に接続可能な情報処理装置とを有する情報処理システムであって、
前記情報処理装置は、
制御プログラムを実行する制御部と、
前記制御部が実行する制御プログラムを更新する更新用の制御プログラムと、前記更新用の制御プログラムに対応する前記デジタル署名とを入力する入力部を備え、
前記制御部は、入力された前記更新用の制御プログラムから第３ハッシュ値を算出し、前記媒体から前記更新用の制御プログラムに対応する前記デジタル署名を復号した第４ハッシュ値を取得し、前記第３ハッシュ値と前記第４ハッシュ値とを比較し、一致しない場合に前記更新用の制御プログラムへの更新を制限することを特徴とする情報処理システム。
【請求項７】
制御部が実行する制御プログラムと、前記制御プログラムに対応するデジタル署名とを記憶する記憶部から前記制御プログラムを読み出して、前記前記制御プログラムの第１ハッシュ値を算出するステップと、
復号鍵を記憶し、前記復号鍵で前記デジタル署名を復号する演算部を備える外部媒体に、前記記憶部から読み出した前記デジタル署名を送信して、前記外部媒体から前記デジタル署名を復号した第２ハッシュ値を取得するステップと、
前記第１ハッシュ値と前記第２ハッシュ値とを比較し、一致しない場合に前記制御部による前記制御プログラムの実行を制限するステップと、
を備えることを特徴とする情報処理装置の制御方法。
【請求項８】
制御部が実行する制御プログラムを更新する更新用の制御プログラムと、前記更新用の制御プログラムに対応するデジタル署名とを入力するステップと、
入力された前記更新用の制御プログラムの第３ハッシュ値を算出するステップと、
復号鍵を記憶し、前記復号鍵で前記デジタル署名を復号する演算部を備える外部媒体に、入力された前記デジタル署名を送信して、前記外部媒体から前記デジタル署名を復号した第４ハッシュ値を取得するステップと、
前記第３ハッシュ値と前記第４ハッシュ値とを比較し、一致しない場合に前記更新用の制御プログラムによる前記制御プログラムの更新を制限するステップと、
を有することを特徴とする情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理システム、及び、情報処理装置の制御方法に関する。
【背景技術】
【０００２】
従来、商品を販売する店舗等における取引に関する情報（売上げに関する情報や、課税に関する情報等）を含むフィスカル情報等、正当性が要求されるデータを処理する装置があった（例えば、特許文献１参照）。この種の装置はデータの正当性を確保する機能を備える。例えば、特許文献１記載のプリンターは、フィスカル情報の改ざんの有無を検出する仕組みを備える。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１２−１０３９４０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、データの正当性を損なう要因として、情報処理装置が実行する制御プログラムの改ざんが懸念される。
本発明は、上記事情に鑑みてなされたものであり、情報処理装置が実行する制御プログラムの改ざんを防止することを目的とする。
【課題を解決するための手段】
【０００５】
上記目的を達成するために、本発明の情報処理装置は、制御プログラムと、前記制御プログラムに対応するデジタル署名とを記憶する記憶部と、前記制御プログラムを実行する制御部と、復号鍵を記憶し前記復号鍵で前記デジタル署名を復号する演算部を備える外部媒体に接続する媒体接続部と、を備え、前記制御部は、前記記憶部が記憶する前記制御プログラムから第１ハッシュ値を算出し、前記外部媒体から前記媒体接続部を介して前記制御プログラムに対応する前記デジタル署名を復号した第２ハッシュ値を取得し、前記第１ハッシュ値と前記第２ハッシュ値とを比較し、一致しない場合に前記制御プログラムの実行を制限することを特徴とする。
本発明によれば、改ざんされた制御プログラムを制御部のプロセッサーが実行するのを防止し、情報処理装置が実行する制御プログラムの改ざんを防止することができる。
【０００６】
また、本発明は、上記情報処理装置において、前記制御部は、前記情報処理装置が起動した際に、前記記憶部の記憶するブートプログラムを実行し、前記第１ハッシュ値と前記第２ハッシュ値とが一致しない場合に前記制御プログラムの実行を制限することを特徴とする。
本発明によれば、制御部がブートプログラムを実行して、第１ハッシュ値と第２ハッシュ値とが一致しない場合に制御プログラムの実行を制限することができる。
【０００７】
本発明の情報処理装置は、制御プログラムを実行する制御部と、前記制御プログラムを更新する更新用の制御プログラムと、前記更新用の制御プログラムに対応するデジタル署名とを入力する入力部と、復号鍵を記憶し前記復号鍵で前記デジタル署名を復号する演算部を備える外部媒体に接続する媒体接続部と、を備え、前記制御部は、入力された前記更新用の制御プログラムから第３ハッシュ値を算出し、前記外部媒体から前記媒体接続部を介して前記更新用の制御プログラムに対応する前記デジタル署名を復号した第４ハッシュ値を取得し、前記第３ハッシュ値と前記第４ハッシュ値とを比較し、一致しない場合に前記更新用の制御プログラムへの更新を制限することを特徴とする。
本発明によれば、制御プログラムが改ざんされた制御プログラムに更新されるのを防止して、情報処理装置が実行する制御プログラムの改ざんを防止することができる。
【０００８】
また、本発明は、上記情報処理装置において、前記情報処理装置は、フィスカル情報を記憶する記憶部を備えるフィスカルプリンターであることを特徴とする。
【０００９】
本発明の情報処理システムは、復号鍵を記憶する媒体記憶部、及び前記復号鍵でデジタル署名を復号する演算部を備える媒体と、前記媒体に接続可能な情報処理装置とを有する情報処理システムであって、前記情報処理装置は、制御プログラムを実行する制御部と、前記制御プログラムと、前記制御プログラムに対応する前記デジタル署名とを記憶する記憶部と、を備え、前記制御部は、前記記憶部が記憶する前記制御プログラムから第１ハッシュ値を算出し、前記媒体から前記制御プログラムに対応する前記デジタル署名を復号した第２ハッシュ値を取得し、前記第１ハッシュ値と前記第２ハッシュ値とを比較し、一致しない場合に前記制御プログラムの実行を制限することを特徴とする。
本発明によれば、改ざんされた制御プログラムを制御部のプロセッサーが実行するのを防止し、情報処理装置が実行する制御プログラムの改ざんを防止することができる。
【００１０】
本発明の情報処理システムは、復号鍵を記憶する媒体記憶部、及び前記復号鍵でデジタル署名を復号する演算部を備える媒体と、前記媒体に接続可能な情報処理装置とを有する情報処理システムであって、前記情報処理装置は、制御プログラムを実行する制御部と、前記制御部が実行する制御プログラムを更新する更新用の制御プログラムと、前記更新用の制御プログラムに対応する前記デジタル署名とを入力する入力部を備え、前記制御部は、入力された前記更新用の制御プログラムから第３ハッシュ値を算出し、前記媒体から前記更新用の制御プログラムに対応する前記デジタル署名を復号した第４ハッシュ値を取得し、前記第３ハッシュ値と前記第４ハッシュ値とを比較し、一致しない場合に前記更新用の制御プログラムへの更新を制限することを特徴とする。
本発明によれば、改ざんされた制御プログラムを制御部のプロセッサーが実行するのを防止し、情報処理装置が実行する制御プログラムの改ざんを防止することができる。
【００１１】
本発明の情報処理装置の制御方法は、制御部が実行する制御プログラムと、前記制御プログラムに対応するデジタル署名とを記憶する記憶部から前記制御プログラムを読み出して、前記前記制御プログラムの第１ハッシュ値を算出するステップと、復号鍵を記憶し、前記復号鍵で前記デジタル署名を復号する演算部を備える外部媒体に、前記記憶部から読み出した前記デジタル署名を送信して、前記外部媒体から前記デジタル署名を復号した第２ハッシュ値を取得するステップと、前記第１ハッシュ値と前記第２ハッシュ値とを比較し、一致しない場合に前記制御部による前記制御プログラムの実行を制限するステップと、を備えることを特徴とする。
本発明によれば、改ざんされた制御プログラムを制御部のプロセッサーが実行するのを防止し、情報処理装置が実行する制御プログラムの改ざんを防止することができる。
【００１２】
本発明の情報処理装置の制御方法は、制御部が実行する制御プログラムを更新する更新用の制御プログラムと、前記更新用の制御プログラムに対応するデジタル署名とを入力するステップと、入力された前記更新用の制御プログラムの第３ハッシュ値を算出するステップと、復号鍵を記憶し、前記復号鍵で前記デジタル署名を復号する演算部を備える外部媒体に、入力された前記デジタル署名を送信して、前記外部媒体から前記デジタル署名を復号した第４ハッシュ値を取得するステップと、前記第３ハッシュ値と前記第４ハッシュ値とを比較し、一致しない場合に前記更新用の制御プログラムによる前記制御プログラムの更新を制限するステップと、を有することを特徴とする。
本発明によれば、改ざんされた制御プログラムを制御部のプロセッサーが実行するのを防止し、情報処理装置が実行する制御プログラムの改ざんを防止することができる。
【図面の簡単な説明】
【００１３】
【図１】プリンターの構成を示すブロック図。
【図２】プリンターの動作を示すフローチャート。
【図３】プリンターの動作を説明するための図。
【図４】プリンターの動作を説明するための図。
【図５】プリンターの動作を説明するための図。
【図６】プリンターの動作を説明するための図。
【図７】プリンターの動作を説明するための図。
【図８】プリンターの動作を説明するための図。
【発明を実施するための形態】
【００１４】
以下、図面を参照して本発明の実施形態について説明する。
図１は、情報処理装置（又は情報処理システム）としてのプリンター１の構成を示すブロック図である。
プリンター１は、ホストコンピューター１０に接続され、ホストコンピューター１０から供給される販売取引に関する情報を印刷したレシートを発行する。また、プリンター１は、各レシートに印刷した販売取引に関する情報と、当該プリンター１での１日の総売上の情報とをフィスカル情報として記憶保持するフィスカルプリンターとしての機能を備える。フィスカル情報は、例えば、政府等の国家機関が店舗から税金を徴収する際に、国家機関が当該店舗における取引の実態を把握するために参照する情報として利用される。本実施形態では、フィスカル情報として、後述するレシートデータ及び日計売上データの２種類のデータが存在する。
ホストコンピューター１０には、商品や商品の包装に付されたバーコードを読み取るバーコードリーダーや、顧客が有する会員カードや、クレジットカード等のカードに記録された情報を読み取るカードリーダーが接続される。ホストコンピューター１０は、これらのデバイスからの入力や、レジ担当者の操作入力に応じて、適宜、図示せぬ商品ＤＢや、顧客ＤＢにアクセスして購入商品に関する情報や、顧客に関する情報を取得する。ホストコンピューター１０は、取得した情報を含む販売取引に関する情報と、印刷を指示する制御コマンドとをプリンター１に送信して、プリンター１にレシートを発行させる。
【００１５】
プリンター１は、フィスカル制御基板１００と、プリンター基板３００とを備える。
フィスカル制御基板１００には、通信部１１０、メインＲＯＭ１２１、ＳＲＡＭ１２２、ＲＴＣ（Real-time clock：リアルタイムクロック）１２３、メイン制御部１３０、ＥＪ（Electorical Journal）メモリー１４１と、第１サブ制御部１４２、フィスカルメモリー１４３、ＣＰＬＤ（Complex programmable logic device）１４４、書換用メモリー１４５、第２サブ制御部１４６、リーダーライター１５０、スマートカード２００が実装される。
また、プリンター基板３００には、プリンター制御部３１０、記録機構３２０が実装される。
【００１６】
通信部（入力部）１１０は、ホストコンピューター１０や、不図示のフィスカルデータ読出装置に接続し、これらの装置との間でデータの送受信を行う。通信部１１０は、ホストコンピューター１０から入力された制御コマンド等のデータをメイン制御部１３０に出力する。フィスカルデータ読出装置は、ＥＪメモリー１４１や、フィスカルメモリー１４３に記憶されたデータを読み出すための装置であり、例えば国家機関（政府等）の関係者等、特別な許可を得た者だけが所持し得る。
【００１７】
メインＲＯＭ１２１は、フラッシュＲＯＭ、ＥＥＰＲＯＭ等のデータの書き換えが可能な不揮発性のメモリーである。メインＲＯＭ１２１は、起動用ファームウェアと、アプリケーション用ファームウェア（制御プログラム）と、起動検証用デジタル署名（制御プログラムに対応するデジタル署名）とを記憶する。起動用ファームウェアは、プリンター１の電源投入時に、メイン制御部１３０の備えるプロセッサー（図示略）により実行されるプログラムである。メイン制御部１３０のプロセッサーが起動用ファームウェアを実行することで、ＯＳ（Operating System）の起動等の処理が実行される。
アプリケーション用ファームウェアは、プリンター１の動作を制御するファームウェアであり、メイン制御部１３０のプロセッサーによって実行される。メイン制御部１３０がアプリケーション用ファームウェアを実行することで、レシートの印刷出力、フィスカル情報のメモリーへの記憶保存等の処理が実行される。メインＲＯＭ１２１に記憶されたアプリケーション用ファームウェアを、以下ではＡＰファームウェアと表記する。
起動検証用デジタル署名は、一般的に知られたハッシュ関数を用いて、ＡＰファームウェアのハッシュ値を算出し、算出したハッシュ値を所定の秘密鍵により暗号化したデータである。所定の秘密鍵は、例えば、プリンター１の製造者によって管理される秘密鍵である。メインＲＯＭ１２１に記憶された起動検証用デジタル署名を、以下では第１起動検証用デジタル署名という。
【００１８】
ＳＲＡＭ１２２は、メイン制御部１３０が演算を行う際のワークエリアとして機能する揮発性のメモリーであり、各種データを一時的に記憶する。
ＲＴＣ１２３は、時刻を計時し、現在日時（年月日、時刻）を示すデータをメイン制御部１３０に出力する。
【００１９】
制御部として機能するメイン制御部１３０は、プロセッサー１３１を備え、ＡＰファームウェアを実行して、プリンター１の各部を中枢的に制御する。
例えば、メイン制御部１３０には、ホストコンピューター１０からファームウェアの書き換えを指示する制御コマンドと、メインＲＯＭ１２１が記憶するＡＰファームウェアや第１起動検証用デジタル署名を書き換える書換用データとが入力される。書換用データは、ホストコンピューター１０から供給されるデータであり、プリンター１の機能拡張を行う場合やファームウェアをバージョンアップする場合にＡＰファームウェアを更新するため、プリンター１の製造者によって生成される。書換用データの詳細については後述する。
メイン制御部１３０は、制御コマンド及び書換用データが入力されると、入力された書換用データを第２サブ制御部１４６に出力して、第２サブ制御部１４６に、メインＲＯＭ１２１の記憶するデータの書き換えを指示する。第２サブ制御部１４６は、メイン制御部１３０からファームウェアの書き換えを指示する制御コマンドと、書換用データとが入力されると、入力された書換用データを書換用メモリー１４５に記憶させる。第２サブ制御部１４６がメインＲＯＭ１２１の記憶するデータを書き換える動作の詳細については後述する。
【００２０】
また、メイン制御部１３０には、ホストコンピューター１０から販売取引に関する情報と、レシートの発行を指示する制御コマンドとが入力される。メイン制御部１３０は、入力された販売取引に関する情報に、販売店名、販売日時、支払額、お釣り等の情報を付加してレシートデータを生成する。メイン制御部１３０は、生成したレシートデータをプリンター制御部３１０に出力して、レシートデータをロール紙に印刷させる。レシートデータは、例えば、販売店名、販売日時、商品名、単価、税額、総額、支払方法（現金、クレジットカード）、支払額、お釣り等の情報を含む。さらに、メイン制御部１３０は、ロール紙に印刷したレシートデータを第１サブ制御部１４２に出力して、ＥＪメモリー１４１に記憶させる。
また、メイン制御部１３０は、一日の終わりに、一日分のレシートデータをＥＪメモリー１４１から取り出してＣＰＬＤ１４４に渡す。ＣＰＬＤ１４４は、一日分のレシートデータに基づいて１日の総売上である日計売上データを算出し、フィスカルメモリー１４３に記憶させる。「１日」とは、プリンター１が設置された店舗における開店から閉店までの期間である。
【００２１】
ＥＪメモリー１４１は、例えば、ＯＴＰＲＯＭ（One Time Programmable Read Only Memory）等の不揮発性メモリーであり、第１サブ制御部１４２の制御の下、１つのアドレスに対して１度しかデータを書き込めないメモリーとして機能する。従って、ＥＪメモリー１４１に書き込まれたデータが後から編集されるのを防止し、ＥＪメモリー１４１に書き込まれたデータに対する改ざんを防止する。
第１サブ制御部１４２は、ＥＪメモリー１４１に対してデータの読み書きを行う。第１サブ制御部１４２は、レシートに印刷したレシートデータと、書込日時データと、レシートデータのハッシュ値を所定の秘密鍵で暗号化したデジタル署名とを対応付けてＥＪメモリー１４１に書き込む。書込日時データは、ＥＪメモリー１４１にレシートデータを書き込んだ日時（日付及び時刻）を示すデータであり、メイン制御部１３０がＲＴＣ１２３から日時を示すデータを取得して、第１サブ制御部１４２に出力する。
ＥＪメモリー１４１及び第１サブ制御部１４２は、エポキシ樹脂によってフィスカル制御基板１００に封止されており、ＥＪメモリー１４１がフィスカル制御基板１００から物理的に取り外され、ＥＪメモリー１４１に記憶されたデータが改ざんされるのを防止する。
【００２２】
フィスカルメモリー１４３は、例えば、ＯＴＰＲＯＭ等の不揮発性メモリーであり、ＣＰＬＤ１４４の制御の下、１つのアドレスに対して１度しかデータを書き込めないメモリーとして機能する。従って、フィスカルメモリー１４３に書き込まれたデータが後から編集されるのを防止し、フィスカルメモリー１４３に書き込まれたデータに対する改ざんを防止する。
ＣＰＬＤ１４４は、プログラム可能な論理回路を書き込んだデバイスであり、フィスカルメモリー１４３に対してデータの読み書きを行う。
ＣＰＬＤ１４４が、フィスカルメモリー１４３に書き込むデータには、日計売上データ及び書込日時データを含む。書込日時データは、フィスカルメモリー１４３に日計売上データを書き込んだ日時（日付及び時刻）を示すデータであり、メイン制御部１３０がＲＴＣ１２３から日時を示すデータを取得して、ＣＰＬＤ１４４に出力する。
フィスカルメモリー１４３及びＣＰＬＤ１４４は、エポキシ樹脂によって封止されており、例えば、フィスカルメモリー１４３がフィスカル制御基板１００から物理的に取り外され、フィスカルメモリー１４３に記憶されたデータが改ざんされるのを防止する。
【００２３】
書換用メモリー１４５は、例えば、フラッシュメモリーや、ＥＰＲＯＭ、ＥＥＰＲＯＭ等のデータの書き換えが可能な不揮発性メモリーにより構成され、ホストコンピューター１０から供給された書換用データを一時的に記憶する。
【００２４】
制御部として機能する第２サブ制御部１４６は、プロセッサー１４７と、ＲＯＭやＲＡＭ等のメモリー（いずれも図示略）をハードウェアとして備える。ＲＯＭ（記憶部）は、プロセッサー１４７が実行する制御プログラムを記憶し、ＲＡＭは、プロセッサー１４７が演算を行う際にワークメモリーとして使用される。
第２サブ制御部１４６のプロセッサー１４７は、プリンター１に電源が投入されると、メイン制御部１３０の起動よりも前に起動して、書換用メモリー１４５に、書換用データが書き込まれているか否かを判定する。書換用メモリー１４５が書換用データを記憶している場合、第２サブ制御部１４６は、この書換用データに改ざんが施されているか否かを判定する。第２サブ制御部１４６は、書換用データに改ざん等が施されていないと判定した場合には、書換用データを書換用メモリー１４５から読み出し、読み出した書換用データによりメインＲＯＭ１２１の記憶するデータを書き換える。また、第２サブ制御部１４６は、書換用データに改ざんが施されていると判定した場合には、書換用メモリー１４５が記憶する書換用データを消去する。
また、第２サブ制御部１４６のプロセッサー１４７は、起動した際に、メインＲＯＭ１２１が記憶するＡＰファームウェアに改ざんが施されているか否かを判定する。第２サブ制御部１４６は、ＡＰファームウェアに改ざんが施されていると判定した場合、メイン制御部１３０がＡＰファームウェアを実行するのを禁止（制限）する。
【００２５】
書換用データは、書換用ＡＰファームウェア（更新用の制御プログラム）と、起動検証用デジタル署名と、更新検証用デジタル署名（更新用の制御プログラムに対応するデジタル署名）とを含む。以下では、書換用メモリー１４５に記憶された起動検証用デジタル署名を第２起動検証用デジタル署名と表記する。
【００２６】
書換用ＡＰファームウェアは、メインＲＯＭ１２１が記憶するＡＰファームウェアを書き換えるプログラムである。
ＡＰファームウェアの書き換えは、メインＲＯＭ１２１に、ＡＰファームウェアに代えて書換用ＡＰファームウェアを記憶させるものであってもよいし、ＡＰファームウェアの一部を書換用ＡＰファームウェアで書き換えてもよい。
【００２７】
第２起動検証用デジタル署名は、一般的に知られたハッシュ関数を用いて書換用ＡＰファームウェアのハッシュ値を算出し、算出したハッシュ値を所定の秘密鍵により暗号化したデータである。所定の秘密鍵は、例えば、プリンター１の製造者が管理する秘密鍵である。この第２起動検証用デジタル署名は、書換用ＡＰファームウェアが改ざん等をされていない正当なファームウェアであるか否かの検証に用いる。
【００２８】
また、更新検証用デジタル署名は、一般的に知られたハッシュ関数を用いて、書換用ＡＰファームウェアのハッシュ値と、第２起動検証用デジタル署名のハッシュ値とを算出し、算出したハッシュ値の和を所定の秘密鍵により暗号化したデータである。本実施形態では、所定の秘密鍵は、例えば、プリンター１の製造者が管理する秘密鍵である。この更新検証用デジタル署名は、書換用ＡＰファームウェアを、書換用メモリー１４５から読み出してメインＲＯＭ１２１に書き込む際に、書換用ＡＰファームウェアが改ざん等をされていない正当なファームウェアであるかの検証に用いる。
【００２９】
なお、プリンター１の製造者は、起動検証用のデジタル署名の作成に使用する秘密鍵と、更新検証用のデジタル署名の作成に使用する秘密鍵とをそれぞれ別々に用意する。プリンター１の製造者は、起動検証用のデジタル署名を作成する場合には、起動検証用の秘密鍵を用いてデジタル署名を作成し、更新検証用のデジタル署名を作成する場合には、更新検証用の秘密鍵を用いてデジタル署名を作成する。
また、第１起動検証用デジタル署名と、第２起動検証用デジタル署名と、更新検証用デジタル署名とをそれぞれ別々の秘密鍵で作成してもよいし、すべて同一の秘密鍵によりデジタル署名を作成してもよい。
【００３０】
フィスカル制御基板１００には、スマートカード２００が装着されるカード装着部（図示略）が設けられ、スマートカード２００とデータの送受信を行うリーダーライター（媒体接続部）１５０とが搭載される。
スマートカード（媒体、外部媒体）２００は、ＩＣチップと接触用電極（ともに図示略）とを有するＩＣモジュールを備える。スマートカード２００は、データの記憶機能と、演算処理を行う演算機能とを備えた媒体である。
スマートカード２００がカード装着部に装着されると、スマートカード２００の接触用電極と、カード装着部に設けられたリーダーライター１５０の接触用電極とが接触する。スマートカード２００の接触用電極と、リーダーライター１５０の接触用電極とが接触することで、リーダーライター１５０は、スマートカード２００に対してデータの読み書きが可能な状態となる。スマートカード２００は、プリンター１の起動時や、ファームウェアの書き換え時に、カード装着部に装着するようにしてもよいし、工場出荷時にカード装着部に装着され、カード装着部から取り外しができないようにカード装着部に固定してもよい。
【００３１】
スマートカード２００のＩＣチップは、ハードウェアとしてＣＰＵ、ＲＯＭ、ＲＡＭ及び不揮発性メモリーを備える。ＲＯＭには、ＣＰＵの制御プログラムが記憶され、ＲＡＭは、ＣＰＵのワークメモリーとして使用される。ＣＰＵが制御プログラムに従い演算を行うことにより、機能ブロックとして、インターフェース部（以下、Ｉ／Ｆ部と略記する）２０１と、演算部２０２とが構成される。また、不揮発性メモリーは、記憶部（媒体記憶部）２０３として機能する。
【００３２】
記憶部２０３は、起動検証用公開鍵（復号鍵）と、更新検証用公開鍵（復号鍵）とを記憶する。
起動検証用公開鍵は、起動検証用デジタル署名の作成に使用した秘密鍵と対をなす公開鍵である。すなわち、起動検証用公開鍵により、第１起動検証用デジタル署名及び第２起動検証用デジタル署名を復号してハッシュ値を取得することができる。更新検証用公開鍵は、更新検証用デジタル署名の作成に使用した秘密鍵と対をなす公開鍵である。すなわち、更新検証用公開鍵により、更新検証用デジタル署名を復号してハッシュ値を取得することができる。
【００３３】
プリンター基板３００に実装されたプリンター制御部３１０は、ホストコンピューター１０が出力した制御コマンドに基づいて、記録機構３２０を制御し、レシートを発行する。
記録機構３２０は、ロール紙の印刷面に熱を与えることにより画像を記録するサーマルヘッド３２１や、ロール紙を搬送する搬送機構３２２、所定の位置でロール紙を切断する切断機構３２３等を備える。記録機構３２０は、プリンター制御部３１０の制御の下、これら機構や装置を動作させて、レシートを発行する。
プリンター基板３００には、プリンター側コネクター３５０が設けられ、フィスカル制御基板１００には、フィスカル側コネクター１６０が設けられる。プリンター側コネクター３５０と、フィスカル側コネクター１６０とが接続されることで、フィスカル制御基板１００と、プリンター基板３００とが接続される。
【００３４】
図２は、第２サブ制御部１４６の動作を示すフローチャートである。
プリンター１に電源が投入されると、第２サブ制御部１４６がまず起動し、書換用メモリー１４５が書換用データを記憶しているか否かを判定する（ステップＳ１）。書換用メモリー１４５が書換用データを記憶していない場合（ステップＳ１／ＮＯ）、第２サブ制御部１４６は、ステップＳ９の処理に移行する。ステップＳ９の処理については後述する。また、書換用メモリー１４５が書換用データを記憶する場合（ステップＳ１／ＹＥＳ）、第２サブ制御部１４６は、書換用メモリー１４５から更新検証用デジタル署名を読み出し、リーダーライター１５０によりスマートカード２００に送信する（ステップＳ２）。
【００３５】
図３は、プリンター１の動作を説明するための図である。
スマートカード２００の演算部２０２は、更新検証用デジタル署名がリーダーライター１５０から入力されると（図３（ａ）参照）、記憶部２０３から更新検証用公開鍵を読み出す（図３（ｂ）参照）。演算部２０２は、読み出した更新検証用公開鍵により更新検証用デジタル署名を復号する（図３（ｃ）参照）。
更新検証用デジタル署名は、書換用ＡＰファームウェアのハッシュ値と、第２起動検証用デジタル署名のハッシュ値との和を秘密鍵で暗号化したものである。このため、更新検証用デジタル署名を更新検証用公開鍵により復号すると、書換用ＡＰファームウェアのハッシュ値と、第２起動検証用デジタル署名のハッシュ値との和が求められる。
演算部２０２は、図３に示すように、復号結果であるハッシュ値（第４ハッシュ値）を、リーダーライター１５０を介して第２サブ制御部１４６に送信する（図３（ｄ）参照）。
【００３６】
図４は、プリンター１の動作を説明するための図である。
次に、第２サブ制御部１４６は、リーダーライター１５０からハッシュ値が入力されたか否かを判定する（ステップＳ３）。リーダーライター１５０は、スマートカード２００からハッシュ値を受信すると、受信したハッシュ値を第２サブ制御部１４６に出力する。ハッシュ値の入力がない場合（ステップＳ３／ＮＯ）、第２サブ制御部１４６は、ハッシュ値が入力されるまで待機する。
第２サブ制御部１４６は、ハッシュ値が入力されると（ステップＳ３／ＹＥＳ）（図４（ａ）参照）、書換用メモリー１４５に記憶された書換用ＡＰファームウェアと、第２起動検証用デジタル署名とのハッシュ値をそれぞれに算出する（ステップＳ４）（図４（ｂ）参照）。さらに、第２サブ制御部１４６は、算出した書換用ＡＰファームウェア及び第２起動検証用デジタル署名のハッシュ値の和（第３ハッシュ値）を算出する。算出したハッシュ値の和を演算ハッシュ値といい、スマートカード２００から受信したハッシュ値を取得ハッシュ値という。第２サブ制御部１４６は、演算ハッシュ値と取得ハッシュ値とを比較して（ステップＳ５）、演算ハッシュ値と取得ハッシュ値とが一致するか否かを判定する（ステップＳ６）（図４（ｃ）参照）。
【００３７】
第２サブ制御部１４６は、演算ハッシュ値と取得ハッシュ値とが一致しなかった場合（ステップＳ６／ＮＯ）書換用メモリー１４５から書換用データを消去する（ステップＳ８）。すなわち、第２サブ制御部１４６は、書換用データが改ざんされていると判定し、書換用メモリー１４５が記憶する書換用ＡＰファームウェアと、第２起動検証用デジタル署名と、更新検証用デジタル署名とを消去する。
【００３８】
図５は、プリンター１の動作を説明するための図である。
第２サブ制御部１４６は、演算ハッシュ値と取得ハッシュ値とが一致した場合（ステップＳ６／ＹＥＳ）、ファームウェアの書き換えを行う（ステップＳ７）。第２サブ制御部１４６は、書換用メモリー１４５から書換用ＡＰファームウェアを読み出し、読み出した書換用ＡＰファームウェアをメインＲＯＭ１２１に書き込んで、メインＲＯＭ１２１のＡＰファームウェアを書き換える（更新する）（図５（ａ）参照）。以下では、ファームウェアの書き換えが行われ、メインＲＯＭ１２１に書き込まれた書換用ＡＰファームウェアをＡＰファームウェアという。
また、第２サブ制御部１４６は、書換用メモリー１４５から第２起動検証用デジタル署名を読み出し、読み出した第２起動検証用デジタル署名をメインＲＯＭ１２１に書き込み、メインＲＯＭ１２１の第１起動検証用デジタル署名を書き換える（図５（ｂ）参照）。
以下では、起動検証用デジタル署名の書き換えが行われ、メインＲＯＭ１２１に書き込まれた第２起動検証用デジタル署名を、第１起動検証用デジタル署名という。
【００３９】
図６は、プリンター１の動作を説明するための図である。
また、第２サブ制御部１４６は、ステップＳ７においてファームウェアの書き換えを行うと、書換用データを書換用メモリー１４５から消去する（ステップＳ８）。すなわち、第２サブ制御部１４６は、書換用メモリー１４５が記憶する書換用ＡＰファームウェアと、第２起動検証用デジタル署名と、更新検証用デジタル署名とを消去する。図６には、書換用メモリー１４５から、書換用データが消去された様子を示す。
【００４０】
また、第２サブ制御部１４６は、ステップＳ８の処理を実行すると、又はステップＳ１の判定において、書換用メモリー１４５が書換用データを記憶していない場合（ステップＳ１／ＮＯ）、ステップＳ９の処理に移行する。
第２サブ制御部１４６は、メインＲＯＭ１２１から第１起動検証用デジタル署名を読み出し、リーダーライター１５０によりスマートカード２００に送信する（ステップＳ９）。
【００４１】
図７は、プリンター１の動作を説明するための図である。
スマートカード２００の演算部２０２は、起動検証用デジタル署名がリーダーライター１５０から入力されると（図７（ａ）参照）、記憶部２０３から起動検証用公開鍵を読み出す（図７（ｂ）参照）。演算部２０２は、読み出した起動検証用公開鍵により起動検証用デジタル署名を復号する（図７（ｃ）参照）。起動検証用デジタル署名は、ＡＰファームウェアのハッシュ値を秘密鍵で暗号化したものである。このため、起動検証用デジタル署名を起動検証用公開鍵により復号すると、ＡＰファームウェアのハッシュ値（第２ハッシュ値）が求められる。
演算部２０２は、図７に示すように、復号結果であるハッシュ値を、リーダーライター１５０を介して第２サブ制御部１４６に送信する（図７（ｄ）参照）。
【００４２】
次に、第２サブ制御部１４６は、リーダーライター１５０からハッシュ値が入力されたか否かを判定する（ステップＳ１０）。リーダーライター１５０は、スマートカード２００からハッシュ値を受信すると、受信したハッシュ値を第２サブ制御部１４６に出力する。ハッシュ値の入力がない場合（ステップＳ１０／ＮＯ）、第２サブ制御部１４６は、ハッシュ値が入力されるまで待機する。
【００４３】
図８は、プリンター１の動作を説明するための図である。
第２サブ制御部１４６は、ハッシュ値が入力されると（ステップＳ１０／ＹＥＳ）（図８（ａ）参照）、書換用メモリー１４５に記憶されたＡＰファームウェアのハッシュ値（第１ハッシュ値）を算出する（ステップＳ１１）（図８（ｂ）参照）。以下では、算出したハッシュ値を演算ハッシュ値といい、スマートカード２００から受信したハッシュ値を取得ハッシュ値という。
第２サブ制御部１４６は、演算ハッシュ値と取得ハッシュ値とを比較して（ステップＳ１２）、演算ハッシュ値と取得ハッシュ値とが一致するか否かを判定する（ステップＳ１３）（図８（ｃ）参照）。演算ハッシュ値と取得ハッシュ値とが一致した場合（ステップＳ１３／ＹＥＳ）、第２サブ制御部１４６は、メイン制御部１３０に、ＡＰファームウェアの実行を許可する（ステップＳ１４）。第２サブ制御部１４６は、ＡＰファームウェアの実行を許可する許可情報を、例えばＳＲＡＭ１２２等のメモリーに書き込む。メイン制御部１３０は、第２サブ制御部１４６に遅れて起動し、メインＲＯＭ１２１の起動用ファームウェアを実行する。メイン制御部１３０は、ＳＲＡＭ１２２が許可情報を記憶しているか否かを判定する。メイン制御部１３０は、ＳＲＡＭ１２２が許可情報を記憶している場合、起動用ファームウェアに続きＡＰファームウェアを実行する。
また、演算ハッシュ値と取得ハッシュ値とが一致しない場合（ステップＳ１３／ＮＯ）、第２サブ制御部１４６は、メインＲＯＭ１２１が記憶するＡＰファームウェアが改ざんされたと判定する。そして、第２サブ制御部１４６は、メイン制御部１３０に、ＡＰファームウェアの実行を制限する（ステップＳ１５）。この場合、第２サブ制御部１４６は、例えば、ＳＲＡＭ１２２等のメモリーに、ＡＰファームウェアの実行を禁止する禁止情報を書き込む。メイン制御部１３０は、ＳＲＡＭ１２２が禁止情報を記憶している場合、ＡＰファームウェアを実行しない。
【００４４】
図２に示すフローチャートでは、第２サブ制御部１４６が、ハッシュ値の算出、スマートカード２００へのデジタル署名の送信、スマートカード２００から送信された取得ハッシュ値と算出した演算ハッシュ値との比較等の処理行っていたが、メイン制御部１３０が第２サブ制御部１４６に代わりこれらの処理を実行してもよい。
メイン制御部１３０は、起動してブートプログラムである起動用ファームウェアを実行し、図２に示すフローチャートに従って、ハッシュ値の算出、スマートカード２００へのデジタル署名の送信、スマートカードから送信された取得ハッシュ値と算出した演算ハッシュ値との比較等の処理を行う。そして、メイン制御部１３０は、演算ハッシュ値と取得ハッシュ値とが一致した場合には、ＡＰファームウェアを実行し、又は書換用ＡＰファームウェアを書換用メモリー１４５から読み出して、メインＲＯＭ１２１に書き込んでＡＰファームウェアを消去する。
また、メイン制御部１３０は、演算ハッシュ値と取得ハッシュ値とが一致しない場合には、ＡＰファームウェアを実行することなく、処理を終了する。又は、メイン制御部１３０は、演算ハッシュ値と取得ハッシュ値とが一致しない場合には、書換用メモリー１４５の書換用データを消去して、ファームウェアの書き換えを実行しない。
【００４５】
以上詳細に説明したように本実施形態は、第２サブ制御部１４６が、メインＲＯＭ１２１が記憶するファームウェアから演算ハッシュ値を算出し、スマートカード２００に、ファームウェアに対応するデジタル署名を復号させて取得ハッシュ値を取得する。そして、第２サブ制御部１４６は、演算ハッシュ値と取得ハッシュ値とを比較して、比較結果に基づいてメイン制御部１３０によるファームウェアの実行を制限する。
また、第２サブ制御部１４６は、入力された更新用のファームウェアから演算ハッシュ値を算出し、スマートカード２００に、更新用のファームウェア対応するデジタル署名を復号させて取得ハッシュ値を取得する。そして、第２サブ制御部１４６は、演算ハッシュ値と取得ハッシュ値とを比較し、比較結果に基づいて更新用のファームウェアよるファームウェアの更新を制限する。
従って、改ざんされたファームウェアをメイン制御部１３０のプロセッサー１３１が実行するのを防止して、プリンター１が実行する制御プログラムの改ざんを防止することができる。
【００４６】
また、メイン制御部１３０は、プリンター１が起動した際に、メインＲＯＭ１２１が記憶する起動用ファームウェアを実行し、演算ハッシュ値と取得ハッシュ値とが一致しない場合に、制御プログラムの実行を制限する。
従って、改ざんされたファームウェアをメイン制御部１３０のプロセッサー１３１が実行するのを防止することができる。
【００４７】
また、情報処理装置として、フィスカル情報の記憶保持する機能を備えたプリンター１を用いたことで、フィスカル情報の漏洩、改ざんを防止することができる。
【００４８】
また、外部媒体又は媒体としてスマートカード２００を用いることによりにより、スマートカード２００に保存した公開鍵が解析され改ざんされるのを防止することができる。
従って、プリンター１が改ざんされたファームウェアを実行するのを防止できる。
【００４９】
上述した実施形態は本発明の好適な実施の形態である。ただし、これに限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変形実施が可能である。
例えば、スマートカード２００は、リーダーライター１５０と、近距離無線通信により通信を行って、データの送受信を行う非接触型のスマートカードであってもよい。スマートカード２００が非接触型のスマートカードである場合、プリンター１のユーザーは、プリンター１の電源投入時や、ファームウェアの更新時にスマートカード２００をリーダーライター１５０にかざし、スマートカード２００にデジタル署名を復号させる。スマートカード２００を、リーダーライター１５０にかざさない限り、プリンター１がＡＰファームウェアを実行することがないので、レシート印刷を行うことができない。
【００５０】
また、プリンター１の構成として、スマートカード２００を備えていない構成であってもよいし、スマートカード２００をプリンター１の構成の一部として備えていてもよい。
例えば、プリンター１の製造者がスマートカード２００を提供する場合には、スマートカード２００が搭載された構成のプリンター１を提供し、スマートカード２００を、後から取得する場合、プリンター１の製造者は、スマートカード２００が搭載されていない構成のプリンター１を提供する。例えば、スマートカード２００に、政府等から認証されたカードを用いる場合、プリンター１の製造者や、プリンター１のユーザーがスマートカード２００を取得して、後からスマートカード２００をプリンター１に装着させる。
また、メイン制御部１３０は、第１サブ制御部１４２、第２サブ制御部１４６の機能を含むこともできる。さらに、メイン制御部１３０は、プリンター制御部３１０の機能を含んでいてもよい。
【符号の説明】
【００５１】
１…プリンター（情報処理装置、情報処理システム）、１０…ホストコンピューター、１００…フィスカル制御基板、１１０…通信部（入力部）、１２１…メインＲＯＭ（記憶部）、１３０…メイン制御部（制御部）、１３１…プロセッサー、１４１…ＥＪメモリー、１４２…第１サブ制御部、１４３…フィスカルメモリー、１４４…ＣＰＬＤ、４５…書換用メモリー、１４６…第２サブ制御部（制御部）、１４７…プロセッサー、１５０…リーダーライター（媒体接続部）、２００…スマートカード（媒体、外部媒体）、２０２…演算部、２０３…記憶部（媒体記憶部）、３００…プリンター基板。
【図１】
2017033492.tif 000003
【図２】
2017033492.tif 000004
【図３】
2017033492.tif 000005
【図４】
2017033492.tif 000006
【図５】
2017033492.tif 000007
【図６】
2017033492.tif 000008
【図７】
2017033492.tif 000009
【図８】
2017033492.tif 000010