(57)【要約】【課題】書き込み速度を低下させることなく、フィスカルメモリーに書き込まれたフィスカル情報の改竄の有無を検出できるフィスカルプリンターを提案すること。【解決手段】フィスカル情報が書き込まれるフィスカルメモリーモジュール４１は、第１メモリー４１１、フィスカル制御用ＣＰＵ４２、第２メモリー４１３を有する。フィスカル制御用ＣＰＵ４２によって、フィスカル情報が第１メモリー４１１に書き込まれる際に、メモリー制御用ＣＰＵ４１２は、フィスカル情報に対応する第１ハッシュ値の第２メモリー４１３に書き込む。第１メモリー４１１からフィスカル情報を読み出す際には、フィスカル制御用ＣＰＵ４２は、メモリー制御用ＣＰＵ４１２を介して第２メモリー４１３から第１ハッシュ値を読み出し、第１ハッシュ値と、第１メモリー４１１から読み出したフィスカル情報から算出した第２ハッシュ値を比較して、フィスカル情報の改竄を検出する。【選択図】図１
2012218345.tif 000002
【特許請求の範囲】
【請求項１】
フィスカル情報の書き込みおよび読み出しが行われる不揮発性の第１メモリーと、
前記フィスカル情報が前記第１メモリーに書き込まれる際に、所定のハッシュ関数を用いて算出された前記フィスカル情報に対応する第１ハッシュ値の書き込みおよび読み出しが行われる第２メモリーと、
前記第１メモリーから前記フィスカル情報が読み出される際に、前記第２メモリーから読み出される前記第１ハッシュ値と、前記第１メモリーから読み出されて前記ハッシュ関数を用いて算出された前記フィスカル情報に対応する第２ハッシュ値に基づいて、前記第１メモリーから読み出された前記フィスカル情報が改竄されているか否かを判定する改竄判定部と、
を備えていることを特徴とするフィスカルプリンター。
【請求項２】
請求項１において、
前記フィスカル情報を記憶保持するためのフィスカルメモリーモジュールと、
前記フィスカルメモリーモジュールに対して前記フィスカル情報の書き込みおよび読み出しを行なう制御部と、を有し、
前記フィスカルメモリーモジュールは、
前記制御部によって前記フィスカル情報の書き込みおよび読み出しが行なわれる前記第１メモリーと、
前記制御部による前記第１メモリーへの書き込みを監視しているメモリー制御部と、
前記メモリー制御部によって書き込みおよび読み出しが行われる不揮発性の前記第２メモリーと、を備え、
前記メモリー制御部は、前記フィスカル情報が前記第１メモリーに書き込まれる際に、前記フィスカル情報に対応する前記第１ハッシュ値を前記所定のハッシュ関数を用いて算出して前記第２メモリーに書き込み、
前記制御部は、
前記第１メモリーから前記フィスカル情報を読み出す際に、前記メモリー制御部を介して前記第２メモリーから前記第１ハッシュ値を読み出すハッシュ値取得部と、
前記第１メモリーから読み出した前記フィスカル情報に対応する前記第２ハッシュ値を前記ハッシュ関数を用いて算出するハッシュ値算出部と、
前記第２ハッシュ値と前記第１ハッシュ値とに基づいて、前記第１メモリーから読み出した前記フィスカル情報が改竄されているか否かを判定する前記改竄判定部と、
を備えていることを特徴とするフィスカルプリンター。
【請求項３】
請求項２において、
前記メモリー制御部は、前記第１メモリーに書き込まれている前記フィスカル情報全体に基づいてハッシュ値を算出し、当該算出したハッシュ値を前記第１ハッシュ値として前記第２メモリーに書き込み、
前記ハッシュ値取得部は、前記メモリー制御部を介して前記第２メモリーから前記第１ハッシュ値を取得し、
前記ハッシュ値算出部は、前記第１メモリーから読み出した前記フィスカル情報全体に基づいて前記第２ハッシュ値を算出することを特徴とするフィスカルプリンター。
【請求項４】
請求項２において、
前記メモリー制御部は、前記第１メモリーに追加して前記フィスカル情報が書き込みされる１単位毎に、当該追加書き込みされる１単位の前記フィスカル情報と既に前記第２メモリーに書き込まれている前記第１ハッシュ値の少なくとも２つの情報に基づいて１つのハッシュ値を算出し、当該算出したハッシュ値を最新の前記第１ハッシュ値として前記第２メモリーに書き込み、
前記ハッシュ値取得部は、前記メモリー制御部を介して前記第２メモリーから最新の前記第１ハッシュ値を取得し、
前記ハッシュ値算出部は、追加書き込みした前記１単位のフィスカル情報を前記第１メモリーから読み出す毎に、当該１単位のフィスカル情報と既に算出済みの前記第２ハッシュ値の少なくとも２つの情報に基づいて１つのハッシュ値を算出し、当該算出したハッシュ値を最新の前記第２ハッシュ値とすることを特徴とするフィスカルプリンター。
【請求項５】
請求項２ないし４のうちのいずれかの項において、
前記フィスカルメモリーモジュールは、前記第１メモリー、前記メモリー制御部および前記第２メモリーを搭載している基板を備えており、
少なくとも、前記メモリー制御部、前記第２メモリーおよび前記メモリー制御部と前記第２メモリーを電気的に接続している配線が前記基板上で樹脂により封止されていることを特徴とするフィスカルプリンター。
【請求項６】
請求項１ないし５のうちのいずれかの項において、
前記第１メモリーは、書き換え可能な不揮発性メモリーであることを特徴とするフィスカルプリンター。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、レシート等の印刷と共に販売取引に関するフィスカル情報をフィスカルメモリーに記憶保持する機能を備えたフィスカルプリンターに関する。
【背景技術】
【０００２】
フィスカルプリンターはＰＯＳシステムなどにおいてキャッシュレジスターのプリンターとして用いられており、レシート等を印刷すると共に、商品等の販売取引に関する販売取引に関する売上金額や課税額等の決済情報（フィスカル情報）を記憶保持する機能を備えている。特許文献１に記載のフィスカルプリンターは、フィスカル情報を記憶保持するためのフィスカルメモリーを搭載している。
【０００３】
フィスカルプリンターが記憶するべきフィスカル情報は各国の法律で定められており、フィスカルメモリーに記憶保持されたフィスカル情報は税務監査用データなどとして用いられる。従って、フィスカルメモリーとしては、一旦書き込まれたフィスカル情報の消去や書き換えが行われていないことを保障するために、ＯＴＰ−ＲＯＭ（One Time Programmable Read Only Memory）が用いられている。
【０００４】
近年、ＯＴＰ−ＲＯＭは需要の低下によって入手が困難な状態となっているので、書き換え可能な不揮発性メモリーによってＯＴＰ−ＲＯＭを代替することができれば製品生産上非常に有効である。しかし、書き換え可能な不揮発性メモリーをフィスカルメモリーとして用いる場合には、フィスカルメモリーに記憶保持したフィスカル情報の消去や書き換えといった改竄が容易となる。そのため、改竄を防止する措置を講ずるか、或いは、改竄が行われた場合にその改竄を検出可能としておくことによって改竄を抑止することが必要となる。
【０００５】
ここで、情報の改竄を防止する技術としては、特許文献２に記載されているように、暗号鍵を用いて情報を暗号化するものが知られている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００８−２７６５９３号公報
【特許文献２】特開２００３−６９５５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、フィスカル情報を暗号化して改竄を防止する技術では、暗号鍵が不正に利用された場合に、改竄を防止できないという問題がある。また、暗号鍵の不正使用による改竄が行われた場合には、その改竄を検出することができないので、改竄されたフィスカル情報が税務監査用データなどとして用いられてしまうという問題がある。さらに、フィスカル情報の暗号化に際してフィスカルプリンターの制御部の負荷が増加するので、不揮発性メモリーに対するフィスカル情報の書き込み速度が低下するという問題がある。
【０００８】
そこで、改竄が行われた場合にその改竄を検出可能とすることによって改竄を抑止することが考えられる。ところが従来技術では、不揮発性メモリーに対する書き込み速度を低下させることなく、書き換え可能な不揮発性メモリーに書き込まれたフィスカル情報の改竄の有無を検出することができるフィスカルプリンターは提案されていない。
【０００９】
本発明の課題は、この点に鑑みて、不揮発性メモリーに対する書き込み速度を低下させることなく、不揮発性メモリーに書き込まれたフィスカル情報の改竄の有無を検出することができるフィスカルプリンターを提供することにある。
【課題を解決するための手段】
【００１０】
（適用例１）上記の課題を解決するために、本発明のフィスカルプリンターは、フィスカル情報の書き込みおよび読み出しが行われる不揮発性の第１メモリーと、前記フィスカル情報が前記第１メモリーに書き込まれる際に、所定のハッシュ関数を用いて算出された前記フィスカル情報に対応する第１ハッシュ値の書き込みおよび読み出しが行われる第２メモリーと、前記第１メモリーから前記フィスカル情報が読み出される際に、前記第２メモリーから読み出される前記第１ハッシュ値と、前記第１メモリーから読み出されて前記ハッシュ関数を用いて算出された前記フィスカル情報に対応する第２ハッシュ値に基づいて、前記第１メモリーから読み出された前記フィスカル情報が改竄されているか否かを判定する改竄判定部と、を備えていることを特徴とする。
【００１１】
（適用例２）さらに、本発明のフィスカルプリンターは、前記フィスカル情報を記憶保持するためのフィスカルメモリーモジュールと、前記フィスカルメモリーモジュールに対して前記フィスカル情報の書き込みおよび読み出しを行なう制御部と、を有し、前記フィスカルメモリーモジュールは、前記制御部によって前記フィスカル情報の書き込みおよび読み出しが行なわれる前記第１メモリーと、前記制御部による前記第１メモリーへの書き込みを監視しているメモリー制御部と、前記メモリー制御部によって書き込みおよび読み出しが行われる不揮発性の前記第２メモリーと、を備え、前記メモリー制御部は、前記フィスカル情報が前記第１メモリーに書き込まれる際に、前記フィスカル情報に対応する前記第１ハッシュ値を前記所定のハッシュ関数を用いて算出して前記第２メモリーに書き込み、前記制御部は、前記第１メモリーから前記フィスカル情報を読み出す際に、前記メモリー制御部を介して前記第２メモリーから前記第１ハッシュ値を読み出すハッシュ値取得部と、前記第１メモリーから読み出した前記フィスカル情報に対応する前記第２ハッシュ値を前記ハッシュ関数を用いて算出するハッシュ値算出部と、前記第２ハッシュ値と前記第１ハッシュ値とに基づいて、前記第１メモリーから読み出した前記フィスカル情報が改竄されているか否かを判定する前記改竄判定部と、を備えていることを特徴とする。
【００１２】
本発明によれば、フィスカル情報に改竄がない場合には、第１メモリーへの書き込み時にメモリー制御部によって第２メモリーへ書き込まれた第１ハッシュ値と、第１メモリーから読み出したフィスカル情報から制御部が算出した第２ハッシュ値とで、同じ値を得ることができる。従って、第１ハッシュ値と第２ハッシュ値とを比較することによって、第１メモリーに記憶保持されていたフィスカル情報の改竄の有無を判別できる。よって、改竄されたフィスカル情報がそのまま税務監査用データなどに用いられてしまうことを防止できる。また、制御部は、フィスカル情報を暗号化する必要がなく、直接、第１メモリーに書き込んでいるので、第１メモリーに対する書き込み速度が低下することがない。
【００１３】
（適用例３）本発明において、前記メモリー制御部は、前記第１メモリーに書き込まれている前記フィスカル情報全体に基づいてハッシュ値を算出し、当該算出したハッシュ値を前記第１ハッシュ値として前記第２メモリーに書き込み、前記ハッシュ値取得部は、前記メモリー制御部を介して前記第２メモリーから前記第１ハッシュ値を取得し、前記ハッシュ値算出部は、前記第１メモリーから読み出した前記フィスカル情報全体に基づいて前記第２ハッシュ値を算出する。
【００１４】
このようにすれば、常にフィスカル情報全体に基づいてハッシュ値を算出すれば良いので、ハッシュ値を算出する処理を簡素化することができ、さらに前記第１ハッシュ値は常にひとつのみのため、前記第２メモリーとして記憶容量の非常に小さなメモリーを用いることが可能となる。また、制御部によるフィスカル情報の第１メモリーに対する書き込みと並行して、メモリー制御部による第１ハッシュ値の算出および第１ハッシュ値の第２メモリーへの書き込みを行うことができる。従って、不揮発性メモリーに対する書き込み速度を低下させることがない。
【００１５】
（適用例４）本発明において、前記メモリー制御部は、前記第１メモリーに追加して前記フィスカル情報が書き込みされる１単位毎に、当該追加書き込みされる１単位の前記フィスカル情報と既に前記第２メモリーに書き込まれている前記第１ハッシュ値の少なくとも２つの情報に基づいて１つのハッシュ値を算出し、当該算出したハッシュ値を最新の前記第１ハッシュ値として前記第２メモリーに書き込み、前記ハッシュ値取得部は、前記メモリー制御部を介して前記第２メモリーから最新の前記第１ハッシュ値を取得し、前記ハッシュ値算出部は、追加書き込みした前記１単位のフィスカル情報を前記第１メモリーから読み出す毎に、当該１単位のフィスカル情報と既に算出済みの前記第２ハッシュ値の少なくとも２つの情報に基づいて１つのハッシュ値を算出し、当該算出したハッシュ値を最新の前記第２ハッシュ値とする。
【００１６】
このようにすれば、フィスカル情報全体に基づいてハッシュ値を算出する場合と比較して、ハッシュ値を算出する際にメモリー制御部が扱うデータ量を少なくすることができ、ハッシュ値の算出にかかる負荷を低減できる。また、制御部によるフィスカル情報の第１メモリーに対する書き込みと並行して、メモリー制御部による第１ハッシュ値の算出および第１ハッシュ値の第２メモリーへの書き込みを行うことができる。従って、不揮発性メモリーに対する書き込み速度を低下させることがない。
【００１７】
（適用例５）また、本発明において、前記フィスカルメモリーモジュールは、前記第１メモリー、前記メモリー制御部および前記第２メモリーを搭載している基板を備えており、  少なくとも、前記メモリー制御部、前記第２メモリーおよび前記メモリー制御部と前記第２メモリーを電気的に接続している配線が前記基板上で樹脂により封止されていることが望ましい。
【００１８】
このようにすれば、外部から第２メモリーに直接アクセスすることによって第２メモリーに書き込まれている第１ハッシュ値が書き換えられることを回避できる。
【００１９】
（適用例６）また、本発明において、前記第１メモリーは、書き換え可能な不揮発性メモリーであることが望ましい。
【００２０】
このようにすれば、広く流通しているフラッシュメモリーなどを利用してフィスカルメモリーモジュールを構成することができる。
【図面の簡単な説明】
【００２１】
【図１】フィスカルプリンターの制御系の主要部分を示す概略ブロック図。
【図２】第１、第２メモリーのメモリー領域を説明するための説明図。
【発明を実施するための形態】
【００２２】
以下に、図面を参照して、本発明を適用したフィスカルプリンターの実施の形態を説明する。
図１は本実施の形態に係るフィスカルプリンターの制御系の主要部分を示す概略ブロック図である。フィスカルプリンター１は、ＰＯＳシステムのホスト側のコンピューター２に接続して用いられ、コンピューター２の側から供給される販売取引に関する印刷情報を印刷してレシートとして発行する。また、決済処理の度に、コンピューター２の側から供給される販売取引に関するフィスカル情報を記憶保持する機能を備えている。
【００２３】
図１に示すように、フィスカルプリンター１は、プリンター制御回路基板３およびフィスカル制御回路基板４を備えている。プリンター制御回路基板３には、印刷動作を行うために、一般のプリンターと同様なプリンター制御機能を備えたプリンター制御用ＣＰＵ３１および印刷制御用のファームウェア等が記憶されている書き替え可能な不揮発性メモリーであるフラッシュメモリー３２が搭載されている。
【００２４】
フィスカル制御回路基板４には、フィスカル情報を記憶保持するためのフィスカルメモリーモジュール４１と、フィスカルメモリーモジュール４１に対するフィスカル情報の書き込みおよび読み出しを行なうフィスカル制御用ＣＰＵ４２（制御部）が搭載されている。フィスカル制御用ＣＰＵ４２には、フィスカル制御用ＣＰＵ４２の演算処理に用いられるＲＡＭ４３が接続されている。
【００２５】
フィスカルメモリーモジュール４１は、フィスカル制御用ＣＰＵ４２によってフィスカル情報が書き込まれる第１メモリー４１１と、フィスカル制御用ＣＰＵ４２による第１メモリー４１１への書き込みを監視しているメモリー制御用ＣＰＵ４１２（メモリー制御部）と、メモリー制御用ＣＰＵ４１２によって書き込みおよび読み出しが行われる第２メモリー４１３を搭載している。
【００２６】
第１メモリー４１１および第２メモリー４１３は、いずれもフラッシュメモリーなどの書き換え可能な不揮発性メモリーである。そして、第２メモリー４１３は、後述するように、第１メモリー４１１よりも容量を小さくすることができる。メモリー制御用ＣＰＵ４１２は、フィスカル制御用ＣＰＵ４２によってフィスカル情報が第１メモリー４１１に書き込まれる際に、フィスカル情報に対応する第１ハッシュ値を算出して第２メモリー４１３に書き込む。
【００２７】
ここで、メモリー制御用ＣＰＵ４１２、第２メモリー４１３およびメモリー制御用ＣＰＵ４１２と第２メモリー４１３を電気的に接続している配線は、図１に２点鎖線で示すように、フィスカル制御回路基板４上において、例えばエポキシ樹脂などで封止されている。この封止により、外部から第２メモリー４１３に直接アクセスすることによって第２メモリー４１３に書き込まれている第１ハッシュ値が書き換えられることが防止されている。
【００２８】
フィスカル制御用ＣＰＵ４２は、ホスト側のコンピューター２との間で情報の送受信を行うためのインターフェース機能およびプリンター制御用ＣＰＵ３１との間で情報の送受信を行うためのインターフェース機能を備えている。また、第１メモリー４１１からフィスカル情報を読み出す際に、メモリー制御用ＣＰＵ４１２を介して第２メモリー４１３から第１ハッシュ値を取得するハッシュ値取得部４２１を備えている。さらに、第１メモリー４１１から読み出したフィスカル情報に対応する第２ハッシュ値を算出するハッシュ値算出部４２２を備えている。そしてさらに、第２ハッシュ値と第１ハッシュ値とに基づいて第１メモリー４１１から読み出したフィスカル情報が改竄されているか否かを判定する改竄判定部４２３を備えている。
【００２９】
次に、フィスカル制御回路基板４には、レシート内容を記憶保持するためのＥＪ（電子ジャーナル）メモリー４４およびＥＪメモリー制御用ＣＰＵ４５が搭載されている。ＥＪメモリー制御用ＣＰＵ４５はフィスカル制御用ＣＰＵ４２との間で通信を行い、フィスカルプリンター１によるレシート発行毎に、レシート内容に関するテキスト情報を受け取り、受け取った情報をＥＪメモリー４４に記憶保持する。
【００３０】
ここで、フィスカル制御回路基板４は、プリンター本体から取り外し可能な状態に取り付けられている。そして、プリンター制御回路基板３に対しては着脱可能なコネクター４６を介して電気的に接続されている。コネクター４６は、プリンター制御回路基板３に搭載されているプリンター側コネクター端子部３３と、フィスカル制御回路基板４に搭載されているフィスカル側コネクター端子部４６１とを備え、これらが取り外し可能な状態で接続されている。従って、正当な権限のある担当者が、フィスカルプリンター１からフィスカル制御回路基板４を取り外し、そこに搭載されているフィスカルメモリーモジュール４１の記憶データを取得することが可能である。
【００３１】
（フィスカル情報の書き込みおよび読み出し）
（第１実施形態）
ここで第１実施形態に係るフィスカル情報の書き込みおよび読み出しについて図２を参照して説明する。図２は、第１、第２メモリーのメモリー領域を説明するための説明図である。詳しくは、図２（ａ）は第１メモリーのメモリー領域を説明し、図２（ｂ）は第２メモリーのメモリー領域を説明するための図である。フィスカル制御用ＣＰＵ４２がフィスカルメモリーモジュール４１の第１メモリー４１１にフィスカル情報を書き込む場合には（ステップＳＴ１）、この書き込みを監視しているメモリー制御用ＣＰＵ４１２が、第１メモリー４１１に書き込まれているフィスカル情報全体に基づいて第１ハッシュ値を算出して第２メモリー４１３に書き込む（ステップＳＴ２）。
【００３２】
より詳細には、第１メモリー４１１は、図２（ａ）に示すように、フィスカル制御用ＣＰＵ４２により、メモリー領域４１１ａ、４１１ｂ・・に順次フィスカル情報が書き込まれていく。そして、メモリー制御用ＣＰＵ４１２は、フィスカル制御用ＣＰＵ４２により第１メモリー４１１に新規にフィスカル情報が書き込まれた際、第１メモリー４１１内に書き込まれているフィスカル情報全体に基づいて第１ハッシュ値を算出し、このハッシュ値を第２メモリー４１３に書き込む。ここで、第１メモリー４１１のメモリー領域４１１ａ、４１１ｂ・・は、固定値長でも良いし、順次書き込まれるフィスカル情報量に応じて可変としても良い。
【００３３】
本例では、ハッシュ関数としてＳＨＡ−１を使用し、メモリー制御用ＣＰＵ４１２によって算出されるフィスカル情報全体に基づいて第１ハッシュ値は２０バイトの固定長となる。従って、第２メモリー４１３の容量はわずか２０バイト分あれば足りるため、第２メモリー４１３には非常に小容量のメモリーを用いることができる。
【００３４】
ここで、メモリー制御用ＣＰＵ４１２は、常にメモリー領域４１１ａ、４１１ｂ・・書き込まれたフィスカル情報全体に基づいて第１ハッシュ値を算出すれば良いので、第１ハッシュ値を算出する処理を簡素化することができる。また、メモリー制御用ＣＰＵ４１２による第１ハッシュ値の算出および第１ハッシュ値の第２メモリー４１３への書き込みは、フィスカル制御用ＣＰＵ４２によるフィスカル情報の第１メモリー４１１への書き込みと並行して行うことができる。さらに、フィスカル制御用ＣＰＵ４２は、後述のように、本実施形態によりフィスカル情報の改竄の有無を検出することができるので、フィスカル情報を暗号化する必要がなく、直接、第１メモリー４１１に書き込んでいる。従って、フィスカル制御用ＣＰＵ４２による第１メモリー４１１へのフィスカル情報の書き込み速度は低下しない。
【００３５】
次に、フィスカル制御用ＣＰＵ４２が第１メモリー４１１に記憶保持されているフィスカル情報を読み出す際には（ステップＳＴ３）、ハッシュ値取得部４２１が、メモリー制御用ＣＰＵ４１２を介して、第１ハッシュ値を第２メモリー４１３から取得する（ステップＳＴ４）。また、ハッシュ値算出部４２２が第１メモリー４１１のフィスカル情報全体に基づいて第２ハッシュ値を、第１ハッシュ値を求める際に利用したハッシュ関数と同一のハッシュ関数を用いて算出する。そしてその後、改竄判定部４２３は第１ハッシュ値と第２ハッシュ値とを比較して第１メモリー４１１から読み出したフィスカル情報が改竄されているか否かを判定する（ステップＳＴ５）。
【００３６】
すなわち、フィスカル情報に改竄がない場合には、第１メモリー４１１への書き込み時にメモリー制御用ＣＰＵ４１２によって第２メモリー４１３へ書き込まれた第１ハッシュ値と、第１メモリー４１１から読み出したフィスカル情報からフィスカル制御用ＣＰＵ４２が算出した第２ハッシュ値とが、同じ値となる。一方、フィスカル情報に改竄がある場合には、第１ハッシュ値と第２ハッシュ値とが異なる。従って、第１ハッシュ値と第２ハッシュ値に基づいて、第１メモリー４１１に記憶保持されていたフィスカル情報の改竄の有無を判別できる。よって、改竄されたフィスカル情報がそのまま税務監査用データなどに用いられてしまうことを防止できる。
【００３７】
（第２実施形態）
次いで、第２実施形態に係るフィスカル情報の書き込みおよび読み出しについて同じく図２を参照して説明する。なお、第１実施形態と同一の構成等については、同一の番号を付与し、重複する説明は省略する。
【００３８】
フィスカル制御用ＣＰＵ４２がフィスカルメモリーモジュール４１の第１メモリー４１１にフィスカル情報を書き込む操作（ステップＳＴ１）は、前述の第１実施形態と同様である。一方、この書き込みを監視しているメモリー制御用ＣＰＵ４１２は、第１メモリー４１１に追加してフィスカル情報が書き込みされる毎に、追加書き込みされる１単位（４１１ａ、４１１ｂ、・・のいずれかひとつ）のフィスカル情報と既に第２メモリー４１３に書き込まれている第１ハッシュ値の少なくとも２つの情報に基づいてひとつのハッシュ値を算出する。そして、算出されたハッシュ値を最新の前記第１ハッシュ値として第２メモリー４１３に書き込む（ステップＳＴ２）。
【００３９】
より詳細には、第１メモリー４１１は、図２（ａ）に示すように、フィスカル制御用ＣＰＵ４２によりメモリー領域４１１ａ、４１１ｂ・・に順次フィスカル情報が書き込まれていく。そして、メモリー制御用ＣＰＵ４１２は、フィスカル制御用ＣＰＵ４２により第１メモリー４１１に新規にフィスカル情報が書き込まれた際、現在第２メモリー４１３に書き込まれている第１ハッシュ値を読み出し、その第１ハッシュ値と新規に第１メモリー４１１に書き込まれたフィスカル情報の両者に基づくハッシュ値を算出する。そして、算出したハッシュ値を最新の第１ハッシュ値として第２メモリー４１３に書き込む。
【００４０】
ここで、第１メモリー４１１のメモリー領域４１１ａ、４１１ｂ・・は、固定値長でも良いし、順次書き込まれるフィスカル情報量に応じて可変としても良い。さらに、第２メモリー４１３は、図２（ｂ）に示すように２つのメモリー領域（４１３ｘ、４１３ｙ）に分割して、一方を最新の第１ハッシュ値の記憶領域とし、他方をメモリー制御用ＣＰＵ４１２が最新の第１ハッシュ値を算出するための演算処理に用いても良い。一方、演算処理に用いるメモリーは、第２メモリー４１３を用いないでメモリー制御用ＣＰＵ４１２が内蔵するメモリーを用いることもできる。
【００４１】
また、本例においても、ハッシュ関数としてＳＨＡ−１を使用すれば、最新の第１ハッシュ値は２０バイトの固定長となるので、第２メモリー４１３には小容量のメモリーを用いることができる。
【００４２】
ここで、メモリー制御用ＣＰＵ４１２は、メモリー領域４１１ａ、４１１ｂ・・の１つに新規に書き込まれたフィスカル情報と第２メモリー４１３に書き込まれている現在の第１ハッシュ値の両者に基づいて新規の第１ハッシュ値を算出するので、フィスカル情報全体に基づいてハッシュ値を算出する場合と比較して扱う情報量が少ないため、メモリー制御用ＣＰＵ４１２にかかる負荷が低減する。また、第１の実施形態と同様に、メモリー制御用ＣＰＵ４１２による第１ハッシュ値の算出および第１ハッシュ値の第２メモリー４１３への書き込みは、フィスカル制御用ＣＰＵ４２によるフィスカル情報の第１メモリー４１１への書き込みと並行して行うことができる。さらに、フィスカル制御用ＣＰＵ４２は、第１実施形態と同様に、フィスカル情報を暗号化する必要がなく、直接、第１メモリー４１１に書き込んでいる。従って、フィスカル制御用ＣＰＵ４２による第１メモリー４１１へのフィスカル情報の書き込み速度は低下しない。
【００４３】
次に、フィスカル制御用ＣＰＵ４２が第１メモリー４１１に記憶保持されているフィスカル情報を読み出す際には（ステップＳＴ３）、ハッシュ値取得部４２１が、メモリー制御用ＣＰＵ４１２を介して、第１ハッシュ値を第２メモリー４１３から取得する（ステップＳＴ４）。また、ハッシュ値算出部４２２は、第１メモリー４１１のメモリー領域４１１ａ、４１１ｂ・・から、最初に書き込まれたフィスカル情報を読み出し第２ハッシュ値を算出する。その後、書き込まれた順に順次ひとつずつフィスカル情報を読み出し、その度に、前回算出した第２ハッシュ値と新規に読み出したフィスカル情報の両者に基づき新しい第２ハッシュ値を算出することを、第１メモリー４１１に記憶された全てのフィスカル情報が読み出されるまで繰り返す。そしてその後、改竄判定部４２３は第１ハッシュ値と第２ハッシュ値とを比較して第１メモリー４１１から読み出したフィスカル情報が改竄されているか否かを判定する（ステップＳＴ５）。
【００４４】
すなわち、フィスカル情報に改竄がない場合には、第１メモリー４１１への書き込み時にメモリー制御用ＣＰＵ４１２によって第２メモリー４１３へ書き込まれた第１ハッシュ値と、第１メモリー４１１から読み出したフィスカル情報からフィスカル制御用ＣＰＵ４２が算出した第２ハッシュ値とが、同じ値となる。一方、フィスカル情報に改竄がある場合には、第１ハッシュ値と第２ハッシュ値とが異なる。従って、第１ハッシュ値と第２ハッシュ値に基づいて、第１メモリー４１１に記憶保持されていたフィスカル情報の改竄の有無を判別できる。よって、改竄されたフィスカル情報がそのまま税務監査用データなどに用いられてしまうことを防止できる。
【００４５】
なお、本発明は上述した実施形態に限定されず、上述した実施形態に種々の変更や改良などを加えることが可能である。変形例を以下に述べる。
【００４６】
（変形例）また、第１および第２の実施形態において、フィスカル制御用ＣＰＵ４２がフィスカルメモリーモジュール４１に対する読み書きを行う権限を備えているか否かを、フィスカルメモリーモジュール４１の側から判断するために、フィスカル制御用ＣＰＵ４２がフィスカルメモリーモジュール４１に書き込むフィスカル情報にデジタルシグネチャを付加するようにしてもよい。この場合には、メモリー制御用ＣＰＵ４１２がデジタルシグネチャに基づいてフィスカル制御用ＣＰＵ４２が読み書きを行う権限を備えているか否かを認証すればよい。
【００４７】
１…フィスカルプリンター、２…コンピューター、３…プリンター制御回路基板、４…フィスカル制御回路基板、３１…プリンター制御用ＣＰＵ、３２…フラッシュメモリー、３３…プリンター側コネクター端子部、４１…フィスカルメモリーモジュール、４２…フィスカル制御用ＣＰＵ（制御部）、４３…ＲＡＭ、４４…ＥＪメモリー、４５…ＥＪメモリー制御用ＣＰＵ、４６…コネクター、４１１…第１メモリー、４１１ａ，４１１ｂ…第１メモリーのメモリー領域、４１２…メモリー制御用ＣＰＵ（メモリー制御部）、４１３…第２メモリー、４１３ｘ，４１３ｙ…第２実施形態における第２メモリーのメモリー領域、４２１…ハッシュ値取得部、４２２…ハッシュ値算出部、４２３…改竄判定部、４６１…フィスカル側コネクター端子部。
【図１】
2012218345.tif 000003
【図２】
2012218345.tif 000004