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