(57)【要約】【課題】フィスカル情報を記憶する電子機器について、フィスカル情報の改ざんの前提となる、不正アクセスによるメモリーからのデータの読み出しを検出可能とする。【解決手段】メイン制御部３０は、第１メモリー制御部３５を制御して、第１メモリー制御部３５の機能により当該データをＥＪメモリー３４に書き込ませ、暗号化されたデータを第１メモリー制御部３５にＥＪメモリー３４から読み出させたことのログを作成するコマンド出力ログ作成部６６、第２読出／書込実行ログ作成部５３を備えるようにした。【選択図】図３
2011123781.tif 000002
【特許請求の範囲】
【請求項１】
インターフェイスから入力されたフィスカル情報を含むデータを前記記録制御部に出力するメイン制御部と、このメイン制御部に接続され、前記データに基づいて記録部を制御して、この記録部にレシートを発行させる記録制御部と、このメイン制御部に接続されると共にメモリーに接続され、前記メイン制御部の制御に従って前記メモリーに対するデータの読み書きを行うメモリー制御部とを備え、
前記インターフェイスから前記メイン制御部に前記データが入力された場合、前記メイン制御部は、前記メモリー制御部を制御して、前記フィスカル情報を前記メモリーに書き込ませ、
前記メイン制御部が前記フィスカル情報を前記メモリー制御部に前記メモリーから読み出させたことのログを作成するログ作成部を備えることを特徴とする電子機器。
【請求項２】
前記インターフェイスから入力された読み出し命令に基づき、前記メイン制御部が前記フィスカル情報を前記メモリー制御部に前記メモリーから読み出させる場合、前記メイン制御部は、読み出し要求を前記メモリー制御部に出力し、前記メモリー制御部は、前記メイン制御部から入力された読み出し要求に基づいて前記メモリーにアクセスして前記メモリーから前記フィスカル情報を読み出して、前記インターフェイスに出力し、
前記ログ作成部は、前記インターフェイスから読み出し命令が入力されたことのログまたは前記メイン制御部が前記メモリー制御部に読み出し要求を出力したことのログである読出要求ログと共に、前記メモリー制御部が前記メモリーにアクセスして前記メモリーから前記フィスカル情報を読み出したことのログである読出実行ログを作成することを特徴とする請求項１に記載の電子機器。
【請求項３】
前記ログ作成部が作成した読出要求ログに基づいて、前記インターフェイスからの読み出し命令の回数または前記メイン制御部が前記メモリー制御部に読み出し要求を出力した回数を検出すると共に、前記ログ作成部が作成した読出実行ログに基づいて、前記メモリー制御部が前記メモリーにアクセスして前記メモリーから前記フィスカル情報を読み出した回数を検出し、検出結果に基づいて、前記メモリーへの不正アクセスを検出する不正アクセス検出部を備えることを特徴とする請求項２に記載の電子機器。
【請求項４】
日時を計時する計時部をさらに備え、
前記ログ作成部は、前記計時部により計時された日時に基づいて、前記メイン制御部が前記フィスカル情報を前記メモリー制御部に前記メモリーから読み出させた日時と対応づけて、ログを作成することを特徴とする請求項１に記載の電子機器。
【請求項５】
前記ログ作成部が作成したログに基づいて、前記メイン制御部が前記フィスカル情報を前記メモリー制御部に前記メモリーから読み出させた日時の履歴を検出し、前記検出した履歴に基づいて、前記メモリーへの不正アクセスを検出する不正アクセス検出部を備えることを特徴とする請求項４に記載の電子機器。
【請求項６】
前記フィスカル情報を前記メモリーから読み出すことが許可された外部機器が接続可能に構成され、
前記ログ作成部は、前記外部機器の接続状況のログを作成することを特徴とする請求項１に記載の電子機器。
【請求項７】
前記ログ作成部により作成された前記メイン制御部が前記フィスカル情報を前記メモリー制御部に前記メモリーから読み出させたことのログ、及び、前記外部機器の接続状況のログに基づいて、前記メモリーへの不正アクセスを検出する不正アクセス検出部を備えることを特徴とする請求項６に記載の電子機器。
【請求項８】
インターフェイスから入力されたフィスカル情報を含むデータを前記記録装置制御部に出力するメイン制御部と、このメイン制御部に接続され、前記データに基づいて記録部を制御して、この記録部にレシートを発行させる記録制御部と、このメイン制御部に接続されると共にメモリーに接続され、前記メイン制御部の制御に従って前記メモリーに対するデータの読み書きを行うメモリー制御部とを備え、
前記インターフェイスから前記メイン制御部に前記データが入力された場合、前記メイン制御部は、前記メモリー制御部を制御して、前記フィスカル情報を前記メモリーに書き込ませる電子機器を制御して、
前記メイン制御部が前記フィスカル情報を前記メモリー制御部に前記メモリーから読み出させたことを検出し、検出した結果に基づいてログを作成することを特徴とする電子機器の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フィスカル情報を記憶する電子機器、及び、この電子機器の制御方法に関する。
【背景技術】
【０００２】
従来、商品を販売し、また、サービスを提供する店舗等に設けられ、商品等の販売取引に関する情報（売上に関する情報や課税額等に関する情報）を含むフィスカル情報を記憶する書込み可能な不揮発性のメモリー（フィスカルＲＯＭ）を備えた電子機器（電子式キャッシュレジスター、レシート用のプリンター）が知られている（例えば、特許文献１参照）。メモリーに記憶されたフィスカル情報は、例えば、政府等の国家機関による店舗からの税金の徴収に際し、当該店舗における取引の実態を把握するための情報として利用される。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平０５−１２０５６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上述のように、メモリーに記憶されたフィスカル情報は、店舗における取引の実態を把握するための情報として利用されることがあるため、メモリーに記憶されたフィスカル情報が改ざんされることを防止する必要がある。特に、国によっては、法律によって、電子機器を、メモリーに記憶されたフィスカル情報が改ざんされることを防止した構成とすることが義務づけられている場合がある。
本発明は、上述した事情に鑑みてなされたものであり、フィスカル情報の改ざんの前提となる、不正アクセスによるメモリーからのデータの読み出しを検出可能な電子機器、及び、この電子機器の制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００５】
上記目的を達成するために、本発明は、インターフェイスから入力されたフィスカル情報を含むデータを前記記録制御部に出力するメイン制御部と、このメイン制御部に接続され、前記データに基づいて記録部を制御して、この記録部にレシートを発行させる記録制御部と、このメイン制御部に接続されると共にメモリーに接続され、前記メイン制御部の制御に従って前記メモリーに対するデータの読み書きを行うメモリー制御部とを備え、前記インターフェイスから前記メイン制御部に前記データが入力された場合、前記メイン制御部は、前記メモリー制御部を制御して、前記フィスカル情報を前記メモリーに書き込ませ、前記メイン制御部が前記フィスカル情報を前記メモリー制御部に前記メモリーから読み出させたことのログを作成するログ作成部を備えることを特徴とする電子機器。
この構成によれば、ログ作成部により作成されたログに基づいて、過去におけるフィスカル情報の読み出しの状況の中から、過去に不正アクセスの可能性があるような態様でフィスカル情報を含むデータの読み出しが行われていることを検出できる。さらに、フィスカル情報を含むデータを、メモリー制御部の機能によって特有のフォーマットによりデータが生成された上でメモリーに記憶されるようにすれば、どのフォーマットであるかを知らない者がメモリーに不正アクセスしてデータを読み出そうとした場合、短時間の間に頻繁にメモリーからデータを読み出す等、正常なデータの読み出しの態様と異なる態様でデータが読み出されることが考えられ、ログ作成部により作成されたログに基づいて、より適切に不正アクセスによるデータの読み出しを検出できる。データを特定の規則により圧縮するなど一種の暗号化して記憶させておいてもよい。
【０００６】
ここで、上記発明の電子機器において、前記インターフェイスから入力された読み出し命令に基づき、前記メイン制御部が前記フィスカル情報を前記メモリー制御部に前記メモリーから読み出させる場合、前記メイン制御部は、読み出し要求を前記メモリー制御部に出力し、前記メモリー制御部は、前記メイン制御部から入力された読み出し要求に基づいて前記メモリーにアクセスして前記メモリーから前記フィスカル情報を読み出し、前記ログ作成部は、前記インターフェイスから読み出し命令が入力されたことのログまたは前記メイン制御部が前記メモリー制御部に読み出し要求を出力したことのログである読出要求ログと共に、前記メモリー制御部が前記メモリーにアクセスして前記メモリーから前記フィスカル情報を読み出したことのログである読出実行ログを作成するようにしてもよい。
ここで、上記構成では、メモリーからフィスカル情報を読み出す場合、インターフェイスから読み出し命令が入力され、メイン制御部は、読み出し要求をメモリー制御部に出力し、メモリー制御部は、メイン制御部から入力された読み出し要求に基づいてメモリーにアクセスしてメモリーからフィスカル情報を読み出す。従って、インターフェイスから読み出し命令またはメイン制御部からメモリー制御部に出力された読み出し要求と、メモリー制御部がメモリーからデータを読み出す処理とは、対応しているはずであり、対応していない場合は、メモリーに対する不正アクセスが行われた可能性がある。
これを踏まえ、上記構成によれば、読出要求ログと、読出実行ログとに基づいて、不正アクセスによるフィスカル情報の読み出しを適切に検出することができる。
【０００７】
また、上記発明の電子機器において、前記ログ作成部が作成した読出要求ログに基づいて、前記インターフェイスからの読み出し命令の回数または前記メイン制御部が前記メモリー制御部に読み出し要求を出力した回数を検出すると共に、前記ログ作成部が作成した読出実行ログに基づいて、前記メモリー制御部が前記メモリーにアクセスして前記メモリーから前記フィスカル情報を読み出した回数を検出し、検出結果に基づいて、前記メモリーへの不正アクセスを検出する不正アクセス検出部を備えるようにしてもよい。
ここで、上記構成では、メモリーからフィスカル情報を読み出す場合、インターフェイスから読み出し命令が入力され、メイン制御部は、読み出し要求をメモリー制御部に出力し、メモリー制御部は、メイン制御部から入力された読み出し要求に基づいてメモリーにアクセスしてメモリーからフィスカル情報を読み出す。従って、前記インターフェイスからの読み出し命令の回数またはメイン制御部からメモリー制御部に出力された読み出し要求の回数と、メモリー制御部がメモリーからフィスカル情報を読み出す処理の回数とは、一致しているはずであり、一致していない場合は、不正アクセスによりメモリーからフィスカル情報が読み出された可能性がある。
これを踏まえ、上記構成によれば、読出要求ログに基づいて検出されたメイン制御部が前記メモリー制御部に読み出し要求を出力した回数と、読出実行ログに基づいて検出されたメモリー制御部が前記メモリーにアクセスしてメモリーから前記フィスカル情報を読み出した回数とに基づいて、適切に不正アクセスによる前記フィスカル情報の読み出しを検出することができる。
【０００８】
また、上記発明の電子機器において、日時を計時する計時部をさらに備え、前記ログ作成部は、前記計時部により計時された日時に基づいて、前記メイン制御部が前記フィスカル情報を前記メモリー制御部に前記メモリーから読み出させた日時と対応づけて、ログを作成するようにしてもよい。
この構成によれば、メイン制御部がフィスカル情報をメモリー制御部にメモリーから読み出させた日時の履歴が検出可能となり、メモリーに対する正常のアクセスと異なる態様で行われる不正アクセスを検出できる。
【０００９】
また、上記発明の電子機器において、前記ログ作成部が作成したログに基づいて、前記メイン制御部が前記フィスカル情報を前記メモリー制御部に前記メモリーから読み出させた日時の履歴を検出し、前記検出した履歴に基づいて、前記メモリーへの不正アクセスを検出する不正アクセス検出部を備えるようにしてもよい。
この構成によれば、正常なアクセスを行った場合におけるアクセス時の履歴と、不正アクセスにおけるアクセス時の履歴との相違点の検出が可能となり、検出した相違点に基づいて不正アクセスの検出が可能となる。
【００１０】
また、上記発明の電子機器において、前記フィスカル情報を前記メモリーから読み出すことが許可された外部機器が接続可能に構成され、前記ログ作成部は、前記外部機器の接続状況のログを作成するようにしてもよい。
この構成によれば、外部機器の接続状況に関するログと、前記メイン制御部が前記フィスカル情報を前記メモリー制御部に前記メモリーから読み出させたことに関するログとに基づいて、外部機器によるメモリーへのアクセスの状況の検出が可能となり、これに基づいて不正アクセスの検出が可能となる。
【００１１】
また、上記発明の電子機器において、前記ログ作成部により作成された前記メイン制御部が前記フィスカル情報を前記メモリー制御部に前記メモリーから読み出させたことのログ、及び、前記外部機器の接続状況のログに基づいて、前記メモリーへの不正アクセスを検出する不正アクセス検出部を備えるようにしてもよい。
この構成によれば、この構成によれば、外部機器の接続状況に関するログと、前記メイン制御部が前記フィスカル情報を前記メモリー制御部に前記メモリーから読み出させたことに関するログとに基づいて、外部機器によるメモリーへのアクセスの状況の検出が可能となり、これに基づいて不正アクセスの検出が可能となる。
【００１２】
また、上記目的を達成するために、本発明は、インターフェイスから入力されたフィスカル情報を含むデータを前記記録装置制御部に出力するメイン制御部と、このメイン制御部に接続され、前記データに基づいて記録部を制御して、この記録部にレシートを発行させる記録制御部と、このメイン制御部に接続されると共にメモリーに接続され、前記メイン制御部の制御に従って前記メモリーに対するデータの読み書きを行うメモリー制御部とを備え、前記インターフェイスから前記メイン制御部に前記データが入力された場合、前記メイン制御部は、前記メモリー制御部を制御して、前記フィスカル情報を前記メモリーに書き込ませる電子機器を制御して、前記メイン制御部が前記フィスカル情報を前記メモリー制御部に前記メモリーから読み出させたことを検出し、検出した結果に基づいてログを作成することを特徴とする。
この制御方法によれば、ログ作成部により作成されたログに基づいて、過去におけるフィスカル情報の読み出しの状況の中から、過去に不正アクセスの可能性があるような態様でフィスカル情報を含むデータの読み出しが行われていることを検出できる。特に、フィスカル情報を含むデータは、メモリー制御部の機能によって特有のフォーマットでメモリーに記憶されるため、不正アクセスしてデータを読み出した場合、短時間の間に頻繁にメモリーからデータを読み出す等、正常なデータの読み出しの態様と異なる態様でデータが読み出されることが考えられ、ログ作成部により作成されたログに基づいて、より適切に不正アクセスによるデータの読み出しを検出できる。
【発明の効果】
【００１３】
本発明によれば、フィスカル情報の改ざんの前提となる、メモリーからの不正アクセスによるデータの読み出しを検出できる。
【図面の簡単な説明】
【００１４】
【図１】本実施形態に係るフィスカルプリンターの外観斜視図である。
【図２】フィスカルプリンターの外観斜視図である。
【図３】フィスカルプリンターの回路構成図である。
【図４】レシートに記録された情報の一例を示す図である。
【図５】フィスカルプリンターの動作を示すフローチャートである。
【図６】フィスカルプリンターの動作を示すフローチャートである。
【図７】フィスカルプリンターの動作を示すフローチャートである。
【図８】フィスカルプリンターの動作を示すフローチャートである。
【図９】コマンド出力ログの構成を模式的に示す図である。
【図１０】第１読出／書込実行ログ及び第２読出／書込実行ログを示す図である。
【図１１】接続状況ログの構成を模式的に示す図である。
【図１２】フィスカルプリンターの動作を示すフローチャートである。
【図１３】フィスカルプリンターの動作を示すフローチャートである。
【図１４】フィスカルプリンターの動作を示すフローチャートである。
【発明を実施するための形態】
【００１５】
以下、図面を参照して本発明の実施形態について説明する。
図１は、本実施形態に係るフィスカルプリンター１（電子機器）を上方から見たときの外観斜視図であり、図２は、フィスカルプリンター１を下方から見たときの外観斜視図である。
本実施形態に係るフィスカルプリンター１は、ＰＯＳ端末等のホストコンピューター１０（図３）に接続され、ホストコンピューター１０の制御の下、レシートを発行すると共に、ホストコンピューター１０から入力されたフィスカル情報を含むデータを記憶する。フィスカル情報とは、商品等の販売取引に関する情報（売上に関する情報や課税額等に関する情報）であって、記憶すべき情報として予め定められた情報のことである。このフィスカル情報は、例えば、政府等の国家機関による店舗からの税金の徴収に際し、国家機関が当該店舗における取引の実態を把握するために参照する情報として利用される。本実施形態では、フィスカルプリンター１には、フィスカル情報を含むデータとして、後述する書込レシートデータ１１（図３）、及び、日計売上データ１２（図３）が記憶される。
【００１６】
図１及び図２に示すように、フィスカルプリンター１は、プリンター本体１４と、このプリンター本体１４の底部１５に固定されたフィスカルユニット１６と、を備えている。
プリンター本体１４の内部には、ロール紙を搬送する搬送機構や、ロール紙に画像を記録するための記録機構等、レシートを発行するための機構や装置等（記録部）や、ロール紙を収納するためのロール紙収納部等が収容されている。
また、プリンター本体１４は、図１に示すように、プリンター本体１４の上面の前側部分を覆う前側開閉蓋１７及び後側部分を覆う後側開閉蓋１８を備えており、前側開閉蓋１７と後側開閉蓋１８との間には、幅方向に延びる記録紙排出口１９が形成されている。後側開閉蓋１８は、記録紙排出口１９の側方に配置されているスライドボタン２０を操作すると、ロック機構（不図示）が外れ、開けることが可能となる。後側開閉蓋１８を開けると、ロール紙収納部が露出し、ロール紙の交換を行うことができる。また、前側開閉蓋１７を開けると、インクリボンの交換等を行うことができる。
【００１７】
フィスカルユニット１６は、下面に開口部が形成された箱体のケース２１と、このケース２１の開口部を覆う底板２２とを備えている。また、ケース２１の後方の側面には、電源アダプタや、ネットワークケーブル、プリンター本体１４内部の基板に接続されたケーブルが接続されるコネクターの他、ホストコンピューター１０が接続されるＰＣコネクター２４、及び、後述するフィスカルデータ読出装置２５（外部機器）が接続されるフィスカルコネクター２９が設けられている。
フィスカルユニット１６の内部には、管理基板２６、プリンター基板２７、及び、サブ基板２８（いずれも図３）が設けられている。
【００１８】
図３は、フィスカルプリンター１の回路構成図であり、特に、フィスカルユニット１６の内部に設けられた管理基板２６、プリンター基板２７、及び、サブ基板２８の回路構成を模式的に示している。
図３に示すように、管理基板２６には、メイン制御部３０と、ＰＣコネクター２４と、フィスカルコネクター２９と、通信ＩＣ３１（インターフェイス）と、ＲＯＭ３２と、ＳＲＡＭ３３と、ＲＴＣ３８（計時部）と、ＥＪメモリー３４と、第１メモリー制御部３５（メモリー制御部）と、バッファーＩＣ３６と、が実装されている。
【００１９】
メイン制御部３０は、フィスカルプリンター１の各部を中枢的に制御するものであり、ＣＰＵやその他の周辺回路を備えている。メイン制御部３０は、コマンド出力ログ作成部６６と、接続状況ログ作成部６７と、第１不正アクセス検出部７０と、第２不正アクセス検出部７１と、第３不正アクセス検出部７２とを備えているが、これらについては後述する。
ＰＣコネクター２４は、フィスカルプリンター１の通常使用時においてホストコンピューター１０が接続されるコネクターである。ホストコンピューター１０は、ＰＣコネクター２４を介してフィスカルプリンター１にレシートの発行に係る印刷コマンドを出力し、また、フィスカル情報を含むデータである日計売上データ１２を出力する。
フィスカルコネクター２９は、フィスカルデータ読出装置２５（外部機器）が接続されるコネクターである。フィスカルデータ読出装置２５とは、後述するＥＪメモリー３４や、フィスカルメモリー３７に記憶されたデータを読み出すための装置であり、例えば国家機関（政府等）に係る者等の、特別な許可を得た者だけが所持し得る。上述したホストコンピューター１０はＰＣコネクター２４に接続された状態が維持されるが、フィスカルデータ読出装置２５は、ホストコンピューター１０と異なり、データの読み出しが行われる際に、適宜、フィスカルコネクター２９に接続される。
【００２０】
通信ＩＣ３１は、ＰＣコネクター２４及びフィスカルコネクター２９に接続され、メイン制御部３０の制御の下、ホストコンピューター１０や、フィスカルデータ読出装置２５との間でデータの送受信を行う。特に、通信ＩＣ３１は、フィスカルコネクター２９からの出力値に基づいて、フィスカルコネクター２９にフィスカルデータ読出装置２５が通信可能に接続されている状態であることを検出できる。メイン制御部３０は、通信ＩＣ３１の検出値に基づいて、フィスカルコネクター２９にフィスカルデータ読出装置２５が接続されていた時間帯（接続開始時刻、及び、接続解除時刻）について検出できる。
ＲＯＭ３２は、メイン制御部３０が各種制御を行うための制御プログラム（ファームウェア）や、制御データ等を記憶する。本実施形態では、ＲＯＭ３２として、ＥＥＰＲＯＭやフラッシュＲＯＭ等のデータの書き換えが可能な不揮発性のメモリーが用いられている。ＲＯＭ３２には、コマンド出力ログ４０（読出要求ログ）と、接続状況ログ４１とが記憶されるが、これについては後述する。
ＳＲＡＭ３３は、メイン制御部３０のＣＰＵのワークエリアとして機能するメモリーであり、各種データを一時的に記憶する。フィスカルプリンター１に商用電源から電力が供給されている間は、ＳＲＡＭ３３に対しても商用電源から電力が供給され、商用電源からの電力が遮断されている間は、電池４２からＳＲＡＭ３３に対して電力が供給される。
ＲＴＣ３８（Real-time clock）は、現在日時（年月日、時刻）及び現在の曜日を示すデータをメイン制御部３０に出力する。ＳＲＡＭ３３と同様、ＲＴＣ３８には、フィスカルプリンター１に商用電源から電力が供給されている間は、商用電源から電力が供給され、商用電源からの電力が遮断されている間は、電池４２から電力が供給される。
【００２１】
ＥＪ（エレクトリックジャーナル）メモリー３４は、ＮＡＮＤ型フラッシュメモリーであり、大容量のデータを記憶可能である。図３に示すように、ＥＪメモリー３４には、書込レシートデータ１１と、第１読出／書込実行ログ４５（読出実行ログ）とが記憶されるが、これらについては後述する。ＥＪメモリー３４は、第１メモリー制御部３５の制御の下、１つのアドレスに対して１度しかデータを書き込めないメモリーとして機能する。これにより、ＥＪメモリー３４に書き込まれたデータが後から編集されることが防止され、ＥＪメモリー３４に記憶されたデータ対する改ざんが防止されている。ＥＪメモリー３４では、第１読出／書込実行ログ４５が記憶される領域として専用の記憶領域が割り振られており、当該記憶領域に記憶されている第１読出／書込実行ログ４５については、適宜、更新できる構成となっている。
第１メモリー制御部３５は、ＣＰＵを備え、メイン制御部３０の制御の下、ＥＪメモリー３４に対してデータの読み書きを行う。第１メモリー制御部３５は、第１読出／書込実行ログ作成部４６を備えているが、これについては後述する。
バッファーＩＣ３６は、ＥＪメモリー３４に対するデータの読み出し、書き込みの効率を向上するために設けられたバッファーを制御する。
これらＥＪメモリー３４、第１メモリー制御部３５、及び、バッファーＩＣ３６は、エポキシ樹脂によって管理基板２６に封止されており、ＥＪメモリー３４が管理基板２６から物理的に取り外された上で、ＥＪメモリー３４に記憶されたデータが改ざんされることが防止されている。ＥＪメモリー３４とフィスカルメモリー３７の両方を指して、フィスカルメモリーと称することもある。また、１つのメモリーに両方の情報を記憶することもできる。
なお、メイン制御部３０の制御の下、第１メモリー制御部３５がＥＪメモリー３４に対して書込レシートデータ１１を読み書きする際の動作については、後に詳述する。
【００２２】
プリンター基板２７には、プリンター制御部４８（記録制御部）が実装されている。プリンター制御部４８は、ＣＰＵや各種周辺回路を備え、印刷コマンドに基づいて、上述したロール紙を搬送する搬送機構や、ロール紙に画像を記録するための画像記録機構等のレシートを発行するための機構や装置（記録部）を制御し、レシートを発行する。プリンター基板２７は、専用コネクター４９を介して、メイン制御部３０と通信可能に接続されている。
本実施形態では、レシートの発行に際し、まず、フィスカルプリンター１に接続されたホストコンピューター１０が、印刷コマンドを生成し、生成した印刷コマンドをＰＣコネクター２４を介してメイン制御部３０に出力する。印刷コマンドが入力されたメイン制御部３０は、入力された印刷コマンドを専用コネクター４９を介して、プリンター制御部４８に出力する。
【００２３】
サブ基板２８には、フィスカルメモリー３７と、第２メモリー制御部５０（メモリー制御部）とが実装されている。
フィスカルメモリー３７は、ＥＰＲＯＭを備えるメモリーである。フィスカルメモリー３７には、日計売上データ１２と、第２読出／書込実行ログ５２（読出実行ログ）とが記憶されるが、これらについては後述する。フィスカルメモリー３７は、第２メモリー制御部５０の制御の下、１つのアドレスに対して１度しかデータを書き込めないメモリーとして機能する。これにより、フィスカルメモリー３７に書き込まれたデータが後から編集されることが防止され、フィスカルメモリー３７に記憶されたデータ対する改ざんが防止されている。ＥＪメモリー３４では、第２読出／書込実行ログ５２が記憶される領域として専用の記憶領域が割り振られており、当該記憶領域に記憶されている第２読出／書込実行ログ５２については、適宜、更新できる構成となっている。
第２メモリー制御部５０は、プログラム可能な論理回路を書き込んだデバイスであるＣＰＬＤ（Complex programmable logic device）を備え、メイン制御部３０の制御の下、フィスカルメモリー３７に対してデータの読み書きを行う。第２メモリー制御部５０は、第２読出／書込実行ログ作成部５３を備えているが、これについては後述する。
これらフィスカルメモリー３７、及び、第２メモリー制御部５０は、エポキシ樹脂によってサブ基板２８に封止されており、例えば、フィスカルメモリー３７がサブ基板２８から物理的に取り外された上で、フィスカルメモリー３７に記憶されたデータが改ざんされることが防止されている。
なお、メイン制御部３０の制御の下、第２メモリー制御部５０がフィスカルメモリー３７に対してデータを読み書きする際の動作については、後に詳述する。
【００２４】
次いで、メイン制御部３０の制御の下、第１メモリー制御部３５がＥＪメモリー３４に対して書込レシートデータ１１を読み書きする際の動作について説明する。
【００２５】
図４は、フィスカルプリンター１によって発行されるレシートの一例を示す図である。
以下の説明では、フィスカルプリンター１が商品を販売する店舗に設置されているものとし、レシートは、顧客が、店舗において１又は複数の商品を購入する際に、代金の支払いに応じて発行されるものとする。また、レシートには、図４に示すように、顧客が購入した商品毎に、商品を示す商品情報６０と、当該商品の単価を示す単価情報６１と、当該商品を購入した個数を示す購入個数情報６２と、当該商品の購入にかかる代金（当該商品の単価×当該商品を購入した個数）を示す商品購入代金情報６３とが対応づけて記録され、さらに、全ての商品の総購入代金（商品の購入に係る代金のそれぞれを合計したもの）を示す総購入代金情報６４が記録されるものとする。
【００２６】
まず、図５及び図６を用いて、メイン制御部３０が第１メモリー制御部３５を制御して、ＥＪメモリー３４に書込レシートデータ１１を書き込む際の動作について説明する。
図５は、メイン制御部３０が第１メモリー制御部３５を制御してＥＪメモリー３４に対して書込レシートデータ１１を書き込む際の、メイン制御部３０の動作を示すフローチャートであり、図６は、当該動作時における第１メモリー制御部３５の動作を示すフローチャートである。
動作の前提として、ホストコンピューター１０が、レシートを発行するための印刷コマンドを生成し、メイン制御部３０に出力したものとする。この印刷コマンドには、レシートに記録される上述した商品情報６０、単価情報６１、購入個数情報６２、商品購入代金情報６３、及び、総購入代金情報６４を示すデータがテキストデータとして含まれている。
【００２７】
図５を参照し、メイン制御部３０は、印刷コマンドが入力されたか否かを監視する（ステップＳＡ１）。印刷コマンドが入力された場合（ステップＳＡ１：ＹＥＳ）、メイン制御部３０は、入力された印刷コマンドをプリンター制御部４８に出力すると共に、入力された印刷コマンドから、上述した各種情報（商品情報６０、単価情報６１、購入個数情報６２、商品購入代金情報６３、及び、総購入代金情報６４）を示すテキストデータを抽出する。ここで、抽出されたデータが書込レシートデータ１１である（ステップＳＡ２）。
次いで、メイン制御部３０は、第１メモリー制御部３５に対し、予め定められた所定の文字列を示すデータを出力する（ステップＳＡ３）。このように、本実施形態では、メイン制御部３０は、ＥＪメモリー３４に対するデータの書き込みを要求するコマンドである書込要求コマンドを第１メモリー制御部３５に出力する前に、予め定められた所定の文字列を示すデータを第１メモリー制御部３５に出力する。当該所定の文字列は、フィスカルプリンター１の製造段階で、１のメイン制御部３０と、当該１のメイン制御部３０に接続された第１メモリー制御部３５との組み合わせ毎に一意に定められており、第１メモリー制御部３５は、所定の文字列を示すデータが入力された場合にのみ、書込要求コマンド等のコマンドを受け付ける構成となっている。この構成により、第１メモリー制御部３５が、対応するメイン制御部３０以外の制御部（ＣＰＵ）であって、書込要求コマンドの出力に際し、所定の文字列を示すデータを出力するようプログラミングされていないプログラムを実行する制御部、に接続された場合、当該制御部によるＥＪメモリー３４のアクセスが不可能となり、このような手段によるＥＪメモリー３４に記憶されたデータへの不正アクセスが防止される。
【００２８】
図６を参照して、第１メモリー制御部３５は、所定の文字列を示すデータが入力されたか否かを監視する（ステップＳＢ１）。所定の文字列を示すデータが入力された場合（ステップＳＢ１：ＹＥＳ）、第１メモリー制御部３５は、入力されたデータが示す文字列が、予め定められた文字列であるか否かを判別する（ステップＳＢ２）。予め定められた文字列でない場合（ステップＳＢ２：ＮＯ）、第１メモリー制御部３５は、メイン制御部３０からのデータの書き込みを実行しない（ステップＳＢ３）。これにより、対応するメイン制御部３０以外の制御部によるＥＪメモリー３４へのアクセスが防止される。
予め定められた文字列の場合（ステップＳＢ２：ＹＥＳ）、第１メモリー制御部３５は、メイン制御部３０に対し、コマンドの出力を許可する旨のデータを出力する（ステップＳＢ４）。
【００２９】
図５を参照して、ステップＳＡ３の処理後、メイン制御部３０は、第１メモリー制御部３５から「コマンドの出力を許可する旨のデータ」が入力されたか否かを判別する（ステップＳＡ４）。当該データが入力された場合（ステップＳＡ４：ＹＥＳ）、メイン制御部３０は、ＳＲＡＭ３３から、ＥＪメモリー３４におけるデータの書込開始アドレスを取得する（ステップＳＡ５）。書込開始アドレスとは、ＥＪメモリー３４にデータを書き込む際に、ＥＪメモリー３４のメモリー領域において書き込みが開始されるアドレスのことである。本実施形態では、ＥＪメモリー３４に対してデータの書き込みが行われる度に、第１メモリー制御部３５が、次回、ＥＪメモリー３４に対してデータを書き込む際の書込開始アドレスを取得し、取得した書込開始アドレスを示すデータをメイン制御部３０に出力する。メイン制御部３０は、この書込開始アドレスを示すデータを、ＳＲＡＭ３３に記憶し、次回、書込レシートデータ１１をＥＪメモリー３４に書き込む場合は、ＳＲＡＭ３３から書込開始アドレスを取得し、取得した書込開始アドレスが示す記憶領域にデータを書き込む旨の書込要求コマンドを出力する。このため、何らかの不正の手段によって、ＳＲＡＭ３３から書込開始アドレスを取得せずに、書込要求コマンドが出力された場合、書込要求コマンドにおいて指定された書込開始アドレスと、ＥＪメモリー３４において実際に書き込みの開始が可能なアドレスとが相違する事態が生じる。本実施形態では、この事態が生じた場合、書き込みエラーとなる構成とされ、これにより、不正の手段によって、ＥＪメモリー３４に対してデータが書き込まれることが防止されている。
【００３０】
ＳＲＡＭ３３から書込開始アドレスを取得した後（ステップＳＡ５）、メイン制御部３０は、ＳＲＡＭ３３から取得した書込開始アドレスに、ステップＳＡ２で抽出した書込レシートデータ１１を書き込む旨の書込要求コマンドを第１メモリー制御部３５に出力する。
【００３１】
図６を参照して、ステップＳＢ５において、第１メモリー制御部３５は、メイン制御部３０から書込要求コマンドが入力されたか否かを判別する。
書込要求コマンドが入力された場合（ステップＳＢ５：ＹＥＳ）、第１メモリー制御部３５は、書込要求コマンドに含まれる書込レシートデータ１１を抽出し、この書込レシートデータ１１に暗号化処理を施す（ステップＳＢ６）。ここで暗号化されたデータを復号するための機能は、上述したフィスカルデータ読出装置２５等の、フィスカル情報を含むデータを正規に読み出すことが許可された限られた装置のみが有している。
次いで、第１メモリー制御部３５は、暗号化された書込レシートデータ１１をＥＪメモリー３４に書き込むと共に（ステップＳＢ７）、次回、書込レシートデータ１１を書き込む際の、書込開始アドレスを検出する（ステップＳＢ８）。次いで、第１メモリー制御部３５は、書込開始アドレスを示すデータをメイン制御部３０に出力する（ステップＳＢ９）。暗号化は、データ圧縮により実現することができる。この場合、ランレングス符号化、ホフマン符号化などが使用できる。また、フラッシュメモリーなどは、セクターを分割して特有のフォーマットでデータを生成して配列し、記憶するように構成されているので、このような特有のフォーマットを使用して、一種の暗号化として使用してもよい。
【００３２】
図５を参照して、ステップＳＡ７において、メイン制御部３０は、書込開始アドレスを示すデータが入力されたか否かを監視する。書込開始アドレスを示すデータが入力された場合（ステップＳＡ７：ＹＥＳ）、メイン制御部３０は、書込開始アドレスを示すデータをＳＲＡＭ３３に記憶する（ステップＳＡ８）。
【００３３】
以上のようにしてメイン制御部３０によって制御される第１メモリー制御部３５により書込レシートデータ１１がＥＪメモリー３４に書き込まれるが、同様の手順によって、メイン制御部３０によって制御される第２メモリー制御部５０により、フィスカルメモリー３７に日計売上データ１２が書き込まれる。日計売上データ１２とは、１日ごとの総売上を示すデータのことであり、店舗の営業終了後、ホストコンピューター１０がその日における総売上を計算し、計算した総売上に基づいて、日計売上データ１２を生成し、生成した日計売上データ１２をメイン制御部３０に出力する。日計売上データ１２が入力されると、メイン制御部３０は、上述した第１メモリー制御部３５に対する制御と同様の制御によって、第２メモリー制御部５０を制御し、フィスカルメモリー３７に日計売上データ１２を書き込む。
【００３４】
次いで、図７及び図８を用いて、メイン制御部３０が第１メモリー制御部３５を制御して、ＥＪメモリー３４から書込レシートデータ１１を読み出す際の動作について説明する。
図７は、メイン制御部３０が第１メモリー制御部３５を制御してＥＪメモリー３４から書込レシートデータ１１を読み出す際の、メイン制御部３０の動作を示すフローチャートであり、図８は、当該動作時における第１メモリー制御部３５の動作を示すフローチャートである。
なお、以下の動作では、フィスカルプリンター１にフィスカルデータ読出装置２５が接続されており、メイン制御部３０は、フィスカルデータ読出装置２５によるデータの読み出し指示（読み出し命令）に基づいて、ＥＪメモリー３４から書込レシートデータ１１を読み出し、読み出した書込レシートデータ１１をフィスカルデータ読出装置２５に出力するものとする。
【００３５】
図７を参照し、メイン制御部３０は、フィスカルデータ読出装置２５から書込レシートデータ１１を読み出すことを指示するコマンド（読み出し命令）が入力されたか否かを監視する（ステップＳＣ１）。コマンドが入力された場合（ステップＳＣ１：ＹＥＳ）、メイン制御部３０は、上述の予め定められた所定の文字列を示すデータを第１メモリー制御部３５に出力する（ステップＳＣ２）。
【００３６】
図８を参照し、第１メモリー制御部３５は、所定の文字列を示すデータが入力されたか否かを監視する（ステップＳＤ１）。所定の文字列を示すデータが入力された場合（ステップＳＤ１：ＹＥＳ）、第１メモリー制御部３５は、入力されたデータが示す文字列が、予め定められた文字列であるか否かを判別する（ステップＳＤ２）。予め定められた文字列でない場合（ステップＳＤ２：ＮＯ）、第１メモリー制御部３５は、メイン制御部３０からのデータの読み出し要求を実行しない（ステップＳＤ３）。これにより、メイン制御部３０以外の制御部によるＥＪメモリー３４へのアクセスが防止される。
予め定められた文字列の場合（ステップＳＤ２：ＹＥＳ）、第１メモリー制御部３５は、メイン制御部３０に対し、コマンドの出力を許可する旨のデータを出力する（ステップＳＤ４）。
【００３７】
図７を参照し、メイン制御部３０は、「コマンドの出力を許可する旨のデータ」が入力されたか否かを監視する（ステップＳＣ３）。データが入力された場合（ステップＳＣ３：ＹＥＳ）、メイン制御部３０は、書込レシートデータ１１を読み出す旨の読出要求コマンドを第１メモリー制御部３５に出力する（ステップＳＣ４）。
【００３８】
図８を参照して、ステップＳＤ５において、第１メモリー制御部３５は、メイン制御部３０から読出要求コマンドが入力されたか否かを判別する。
読出要求コマンドが入力された場合（ステップＳＤ５：ＹＥＳ）、第１メモリー制御部３５は、ＥＪメモリー３４にアクセスし、ＥＪメモリー３４から書込レシートデータ１１を読み出し（ステップＳＤ６）、読み出した書込レシートデータ１１をメイン制御部３０に出力する（ステップＳＤ７）。ここで、メイン制御部３０に出力された書込レシートデータ１１は、暗号化または特有のフォーマット化されたままのデータである。
【００３９】
図７を参照して、ステップＳＣ５において、メイン制御部３０は、第１メモリー制御部３５から書込レシートデータ１１が入力されたか否かを監視する（ステップＳＣ５）。
書込レシートデータ１１が入力された場合（ステップＳＣ５：ＹＥＳ）、メイン制御部３０は、入力された書込レシートデータ１１を、通信ＩＣ３１とフィスカルコネクター２９を介して、フィスカルデータ読出装置２５に出力する（ステップＳＣ６）。
上述したように、書込レシートデータ１１は、暗号化または特有のフォーマット化が施されており、復号化の機能を有する正規のフィスカルデータ読出装置２５等によってのみ、復号化が可能である。
なお、同様の手順によって、メイン制御部３０によって制御される第２メモリー制御部５０によって、フィスカルメモリー３７から日計売上データ１２が読み出される。この場合も、フィスカルデータ読出装置２５から日計売上データ１２を読み出すことを指示するコマンド（読み出し命令）の基づき、フィスカルメモリー３７から日計売上データ１２を読み出し、通信ＩＣ３１とフィスカルコネクター２９を介して、フィスカルデータ読出装置２５に出力する。書込レシートデータ１１や日計売上データ１２は、当日分のみでなく、所定の期間内に蓄積されたものを指定して読み出すこともできる。
【００４０】
次いで、メイン制御部３０が備えるコマンド出力ログ作成部６６について説明する。
このコマンド出力ログ作成部６６の機能は、ＣＰＵがプログラムを実行する等、ハードウェアとソフトウェアとの協働によって実現される。
コマンド出力ログ作成部６６は、所定のタイミングで、ＲＯＭ３２に記憶されたコマンド出力ログ４０にログ情報を付加し、コマンド出力ログ４０を更新する。
【００４１】
図９は、コマンド出力ログ作成部６６によって作成されるコマンド出力ログ４０を模式的に示す図である。
コマンド出力ログ作成部６６は、メイン制御部３０が第１メモリー制御部３５又は第２メモリー制御部５０に読出要求コマンド又は書込要求コマンドを出力する度に、ＲＯＭ３２に記憶されたコマンド出力ログ４０に、以下のログ情報を付加し、コマンド出力ログ４０を更新する。すなわち、コマンド出力ログ４０に付加されるログ情報とは、コマンドが出力された日時（年、月、日、時刻）と、ＰＣコネクター２４に接続されたホストコンピューター１０からデータの読み出しが指示されたのか、フィスカルコネクター２９に接続されたフィスカルデータ読出装置２５からデータの読み出しが指示されたのかを示す情報と、読出要求コマンド及び書込要求コマンドのいずれのコマンドが出力されたのかを示す情報と、ＥＪメモリー３４及びフィスカルメモリー３７のいずれのメモリーに対してコマンドが出力されたのかを示す情報とを対応づけた情報である。
なお、メイン制御部３０にコマンド出力ログ４０は、通信ＩＣ３１（インターフェイス）を介して、読み出し命令、又は、書き込み命令が入力されたことのログでもある。
【００４２】
次いで、第１メモリー制御部３５が備える第１読出／書込実行ログ作成部４６について説明する。
第１読出／書込実行ログ作成部４６は、ＥＪメモリー３４に記憶された第１読出／書込実行ログ４５にログ情報を付加し、第１読出／書込実行ログ４５を更新する。
【００４３】
図１０（Ａ）は、第１読出／書込実行ログ４５を模式的に示す図である。
第１読出／書込実行ログ作成部４６は、第１メモリー制御部３５によって、ＥＪメモリー３４への書込レシートデータ１１の書き込み、又は、ＥＪメモリー３４からの書込レシートデータ１１の読み出しが実際に行われる度に、ＥＪメモリー３４に記憶された第１読出／書込実行ログ４５に、以下のログ情報を付加し、第１読出／書込実行ログ４５を更新する。すなわち、第１読出／書込実行ログ４５に付加されるログ情報とは、ＥＪメモリー３４への書込レシートデータ１１の書き込み、又は、ＥＪメモリー３４からの書込レシートデータ１１の読み出しが行われた日時を示す情報と、データの書き込みが行われたのかデータの読み出しが行われたのかを示す情報とを対応づけた情報である。
なお、第１読出／書込実行ログ作成部４６は、第１読出／書込実行ログ４５を更新する際に発生するＥＪメモリー３４へのデータの書き込みや、データの読み出しについては、ログ情報を付加しない。
【００４４】
次いで、第２メモリー制御部５０が備える第２読出／書込実行ログ作成部５３について説明する。
第２読出／書込実行ログ作成部５３は、フィスカルメモリー３７に記憶された第２読出／書込実行ログ５２にログ情報を付加し、第２読出／書込実行ログ５２を更新する。
【００４５】
図１０（Ｂ）は、第２読出／書込実行ログ５２を模式的に示す図である。
第２読出／書込実行ログ作成部５３は、第２メモリー制御部５０によって、フィスカルメモリー３７への日計売上データ１２の書き込み、又は、フィスカルメモリー３７からの日計売上データ１２の読み出しが行われる度に、フィスカルメモリー３７に記憶された第２読出／書込実行ログ５２に、以下のログ情報を付加し、第２読出／書込実行ログ５２を更新する。すなわち、第２読出／書込実行ログ５２に付加される情報とは、フィスカルメモリー３７への日計売上データ１２の書き込み、又は、フィスカルメモリー３７からの日計売上データ１２の読み出しが行われた日時を示す情報と、データの書き込みが行われたのかデータの読み出しが行われたのかを示す情報とを対応づけた情報である。
なお、第２読出／書込実行ログ作成部５３は、第２読出／書込実行ログ５２を更新する際に発生するフィスカルメモリー３７へのデータの書き込みや、データの読み出しについては、ログ情報を付加しない。
【００４６】
次いで、メイン制御部３０が備える接続状況ログ作成部６７について説明する。
接続状況ログ作成部６７は、ＲＯＭ３２に記憶された接続状況ログ４１にログ情報を付加し、接続状況ログ４１を更新する。
【００４７】
図１１は、接続状況ログ４１を模式的に示す図である。
接続状況ログ４１とは、フィスカルコネクター２９にフィスカルデータ読出装置２５が接続されていた時間帯を示すログであり、接続が開始された日時を示す情報と、接続が解除された日時を示す情報とが対応づけられたログ情報を有している。
上述したように、通信ＩＣ３１は、フィスカルコネクター２９にフィスカルデータ読出装置２５が接続されていることを検出できるが、接続状況ログ作成部６７は、通信ＩＣ３１の検出値と、ＲＴＣ３８から入力されたデータとに基づいて、フィスカルコネクター２９にフィスカルデータ読出装置２５が接続されていた時間帯（接続が開始された日時と接続が解除された日時）を検出し、検出した時間帯に基づいて、接続状況ログ４１に各ログ情報を付加する。
【００４８】
次いで、メイン制御部３０が備える第１不正アクセス検出部７０について図１２のフローチャートを用いて説明する。
この第１不正アクセス検出部７０は、以下説明する動作によって、ＥＪメモリー３４やフィスカルメモリー３７に対して不正アクセスによるデータの読み出しがあった可能性があることを検出する。
第１不正アクセス検出部７０の動作は、ＣＰＵがプログラムを実行する等、ハードウェアとソフトウェアとの協働によって実現される。
【００４９】
図１２を参照して、第１不正アクセス検出部７０は、ＲＯＭ３２に記憶されたコマンド出力ログ４０を参照し（ステップＳＥ１）、メイン制御部３０が第１メモリー制御部３５に対して書込レシートデータ１１の読出要求コマンドを出力した回数を取得する（ステップＳＥ２）。このステップＳＥ２では、例えば、現時点から所定の時間だけ遡った日時までの間に、読出要求コマンドを出力した回数を取得するようにしてもよい。
次いで、第１不正アクセス検出部７０は、第１メモリー制御部３５に、ＥＪメモリー３４から第１読出／書込実行ログ４５を読み出す旨の読出要求コマンドを出力することによって、ＥＪメモリー３４から第１読出／書込実行ログ４５を取得する（ステップＳＥ３）。
次いで、第１不正アクセス検出部７０は、取得した第１読出／書込実行ログ４５を参照し（ステップＳＥ４）、第１メモリー制御部３５がＥＪメモリー３４から実際に書込レシートデータ１１の読み出しを実行した回数を取得する（ステップＳＥ５）。なお、ステップＳＥ２において、現時点から所定の時間だけ遡った日時までの間に、読出要求コマンドを出力した回数を取得するようにした場合、このステップＳＥ５では、現時点から所定の時間だけ遡った日時までの間に、第１メモリー制御部３５がＥＪメモリー３４から実際にデータの読み出しを実行した回数を取得するようにする。
【００５０】
次いで、第１不正アクセス検出部７０は、ステップＳＥ２で取得したメイン制御部３０が第１メモリー制御部３５に対して読出要求コマンドを出力した回数と、ステップＳＥ５で取得した第１メモリー制御部３５によってＥＪメモリー３４から実際に書込レシートデータ１１の読み出しが実行された回数と、を比較する（ステップＳＥ６）。
ここで、本実施形態では、ＥＪメモリー３４からの書込レシートデータ１１の読み出しは、メイン制御部３０から第１メモリー制御部３５に対して読出要求コマンドが出力され、この読出要求出力コマンドに基づいて、第１メモリー制御部３５がＥＪメモリー３４から書込レシートデータ１１を読み出す。従って、ステップＳＥ２で取得したメイン制御部３０が第１メモリー制御部３５に対して読出要求コマンドを出力した回数と、ステップＳＥ５で取得した第１メモリー制御部３５によってＥＪメモリー３４から実際に書込レシートデータ１１の読み出しが実行された回数と、は一致するはずである。一方で、第１メモリー制御部３５にメイン制御部３０以外の制御部が不正に接続された上で、当該制御部の制御に基づいて、ＥＪメモリー３４からデータが読み出された場合、上記回数のそれぞれは、一致しない。これを踏まえ、上記回数のそれぞれが一致するか否かによって不正アクセスによる書込レシートデータ１１の読み出しがあった可能性があるか否かを検出できる。
【００５１】
ステップＳＥ６において、上記回数のそれぞれが一致した場合（ステップＳＥ６：ＹＥＳ）、第１不正アクセス検出部７０は、不正アクセスが検出されなかった旨を示すデータを生成し、ホストコンピューター１０やフィスカルデータ読出装置２５に出力する（ステップＳＥ７）。ホストコンピューター１０やフィスカルデータ読出装置２５では、入力されたデータに基づいて、表示部等にその旨表示する等して、そのことを報知する。
一方、上記回数のそれぞれが一致しなかった場合（ステップＳＥ６：ＮＯ）、すなわち、不正アクセスによる書込レシートデータ１１の読み出しが行われた可能性がある場合、第１不正アクセス検出部７０は、不正アクセスがあった可能性がある旨を示すデータを生成し、ホストコンピューター１０やフィスカルデータ読出装置２５に出力する（ステップＳＥ８）。ホストコンピューター１０やフィスカルデータ読出装置２５では、入力されたデータに基づいて、表示部等にその旨表示する等して、そのことを報知する。
【００５２】
以上説明したように、第１不正アクセス検出部７０は、コマンド出力ログ４０と、第１読出／書込実行ログ４５とに基づいて、不正アクセスがあった可能性があることを検出する。
なお、図１２の例では、ＥＪメモリー３４に記憶された書込レシートデータ１１が不正に読み出された可能性のあることを検出する場合の第１不正アクセス検出部７０の動作について説明したが、これと同様の手段によって、不正アクセスによってＥＪメモリー３４に書込レシートデータ１１が書き込まれた可能性があることを検出でき、また、コマンド出力ログ４０と、第２読出／書込実行ログ５２とに基づいて、フィスカルメモリー３７に記憶された日計売上データ１２が不正に読み出された可能性のあることを検出できると共に、フィスカルメモリー３７に対して日計売上データ１２が不正に書き込まれた可能性のあることを検出できる。
【００５３】
次いで、メイン制御部３０が備える第２不正アクセス検出部７１について図１３のフローチャートを用いて説明する。
この第２不正アクセス検出部７１は、以下説明する動作によって、ＥＪメモリー３４やフィスカルメモリー３７に対して不正アクセスによるデータの読み出しがあった可能性があることを検出する。
第２不正アクセス検出部７１の動作は、ＣＰＵがプログラムを実行する等、ハードウェアとソフトウェアとの協働によって実現される。
また、以下の説明では、ＥＪメモリー３４に記憶された書込レシートデータ１１が不正に読み出された可能性があること、又は、読み出されようとした可能性があることを検出する際の、第２不正アクセス検出部７１の動作について説明する。
【００５４】
まず、第２不正アクセス検出部７１は、ＲＯＭ３２に記憶されたコマンド出力ログ４０を参照する（ステップＳＦ１）。
次いで、第２不正アクセス検出部７１は、コマンド出力ログ４０に基づいて、メイン制御部３０から第１メモリー制御部３５に対して読出要求コマンドが出力された日時の履歴を検出する（ステップＳＦ２）。
次いで、第２不正アクセス検出部７１は、ステップＳＦ２で検出したメイン制御部３０から第１メモリー制御部３５に対して読出要求コマンドが出力された日時の履歴に基づいて、不正アクセスによる書込レシートデータ１１の読み出しがあった可能性があることを検出する（ステップＳＦ３）。
ここで、ステップＳＦ２及びステップＳＦ３における動作について、具体例を挙げて説明する。
【００５５】
例えば、第２不正アクセス検出部７１は、コマンド出力ログ４０に基づいて、ある限られた一定時間（例えば、１時間）の間に、所定の間隔より短い間隔（例えば、１分間より短い間隔）で所定の回数以上（例えば、１０回以上）、読出要求コマンドが出力されたことがあるか否かを判別し、上記の態様で読出要求コマンドが出力されたことがある場合、不正アクセスによるデータの読み出しがあった可能性があると判別する。これによれば、通常、ある限られた時間の間に、比較的短い間隔で、何度もＥＪメモリー３４から書込レシートデータ１１が出力されることがないような場合に、適切に不正アクセスがあった可能性があることを検出できる。特に、本実施形態では、上述したように、書込レシートデータ１１は、第１メモリー制御部３５の機能により暗号化または特有のフォーマット化された上で、ＥＪメモリー３４に記憶される。従って、書込レシートデータ１１が暗号化または特有のフォーマット化されていることを知らない者が、例えば、フィスカルプリンター１に外部機器を接続した上で、当該外部機器を利用して、不正に、ＥＪメモリー３４から書込レシートデータ１１を読み出す場合、書込レシートデータ１１が暗号化または特有のフォーマット化されていることに起因して、短時間の間に何度も書込レシートデータ１１を読み出す場合があるが、上記方法によって不正アクセスによる書込レシートデータ１１の読み出しを検出することにより、このような場合における不正アクセスを適切に検出できる。なお、ある限られた一定時間の間に、所定の間隔より短い間隔で所定の回数以上、読出要求コマンドが出力されたことがあるか否かの判別について、一定時間、所定の間隔、及び、所定の回数は、フィスカルプリンター１が設置された店舗の状況や、フィスカルプリンター１の利用の態様等に応じて適切に設定可能である。
【００５６】
また例えば、第２不正アクセス検出部７１は、コマンド出力ログ４０に基づいて、予め定められた時間帯に、読出要求コマンドが出力されたことがあるか否かを判別し、出力されたことがある場合、不正アクセスによるデータの読み出しがあった可能性があると判別する。予め定められた時間帯とは、例えば、店舗の営業終了の時刻から営業開始の時刻に含まれる時刻であって、書込レシートデータ１１の読み出しを行うことがないような時間帯のことである。このような時間帯に書込レシートデータ１１の読み出しが行われた場合、不正アクセスによるデータの読み出しが行われた可能性がある。
なお、予め定められた時間帯は、上述したような時間帯のみならず、曜日と時間帯の組み合わせでもよく、また、特定の日付の特定の時間帯としてもよい。こうすることにより、営業日、休業日等、店舗の特有の事情を考慮した上で適切に不正アクセスによる書込レシートデータ１１の読み出しを検出できる。
【００５７】
なお、図１３の例では、ＥＪメモリー３４に記憶された書込レシートデータ１１が不正に読み出された可能性のあることを検出する場合の第２不正アクセス検出部７１の動作について説明したが、これと同様の手段によって、不正アクセスによってＥＪメモリー３４に書込レシートデータ１１が書き込まれた可能性があることを検出でき、また、フィスカルメモリー３７に記憶された日計売上データ１２が不正に読み出された可能性のあることを検出できると共に、フィスカルメモリー３７に対して日計売上データ１２が不正に書き込まれた可能性のあることを検出できる。
【００５８】
次いで、メイン制御部３０が備える第３不正アクセス検出部７２について図１４のフローチャートを用いて説明する。
この第３不正アクセス検出部７２は、以下説明する動作によって、ＥＪメモリー３４やフィスカルメモリー３７に対して不正アクセスによるデータの読み出しがあった可能性があることを検出する。
第３不正アクセス検出部７２の動作は、ＣＰＵがプログラムを実行する等、ハードウェアとソフトウェアとの協働によって実現される。
また、以下の説明では、ＥＪメモリー３４に記憶された書込レシートデータ１１が不正に読み出された可能性があること、又は、読み出されようとした可能性があることを検出する際の、第３不正アクセス検出部７２の動作について説明する。
【００５９】
まず、第３不正アクセス検出部７２は、接続状況ログ４１を参照し（ステップＳＧ１）、フィスカルデータ読出装置２５がフィスカルプリンター１に接続されていた時間帯を取得する（ステップＳＧ２）。
次いで、第３不正アクセス検出部７２は、コマンド出力ログ４０を参照し（ステップＳＧ３）、フィスカルプリンター１に接続されたフィスカルデータ読出装置２５の指示に基づいてメイン制御部３０が第１メモリー制御部３５に書込レシートデータ１１の読出要求コマンドを出力した日時を取得する（ステップＳＧ４）。
次いで、第３不正アクセス検出部７２は、ステップＳＧ２で取得したフィスカルデータ読出装置２５がフィスカルプリンター１に接続されていた時間帯と、ステップＳＧ４で取得したメイン制御部３０が第１メモリー制御部３５に書込レシートデータ１１の読出要求コマンドを出力した日時とに基づいて、不正アクセスによってＥＪメモリー３４から書込レシートデータ１１が読み出されたこと、又は、読み出された可能性があることを検出する（ステップＳＧ５）。
ここで、ステップＳＧ５の動作について具体例を挙げて詳述する。
【００６０】
例えば、ステップＳＧ５では、第３不正アクセス検出部７２は、ステップＳＧ２で取得したフィスカルデータ読出装置２５がフィスカルプリンター１に接続されていた時間帯と、ステップＳＧ４で取得したメイン制御部３０が第１メモリー制御部３５に書込レシートデータ１１の読出要求コマンドを出力した日時とに基づいて、フィスカルデータ読出装置２５が予め定められた所定の時間帯以外の時間帯にフィスカルプリンター１に接続された上で、このフィスカルデータ読出装置２５の指示に基づいて、書込レシートデータ１１の読み出しが行われたことがあるか否かを検出する。そして、当該読み出しが行われたことがある場合、不正アクセスによって書込レシートデータ１１の読み出しが行われた可能性があることを検出する。
この検出方法は、以下のような場合に特に有効である。すなわち、フィスカルデータ読出装置２５は、政府関係者等の限られた者が、フィスカルプリンター１に記憶された書込レシートデータ１１や日計売上データ１２等、フィスカル情報を含むデータを読み出す際に利用する装置であり、当該フィスカル情報を含むデータの読み出しは、予め定められた時間帯に定期的になされ、また、事前に定められた特定の時間帯に行われると考えられる。そして、これら時間帯以外の時間帯にフィスカルデータ読出装置２５が接続された上で、書込レシートデータ１１の読み出しが実行された場合、不正にフィスカルデータ読出装置２５を取得した者が、フィスカルデータ読出装置２５を利用して書込レシートデータ１１を読み出した可能性がある。これを踏まえ、上記方法のように、フィスカルデータ読出装置２５が予め定められた所定の時間帯以外の時間帯にフィスカルプリンター１に接続された上で、このフィスカルデータ読出装置２５の指示に基づいて、書込レシートデータ１１の読み出しが行われたことがあるか否かを検出することによって、不正アクセスによって書込レシートデータ１１の読み出しが行われた可能性があることを検出することにより、適切に、不正アクセスによって書込レシートデータ１１の読み出しが行われた可能性があることを検出できる。
【００６１】
また、例えば、ステップＳＧ５では、第３不正アクセス検出部７２は、ステップＳＧ２で取得したフィスカルデータ読出装置２５がフィスカルプリンター１に接続されていた時間帯と、ステップＳＧ４で取得したメイン制御部３０が第１メモリー制御部３５に書込レシートデータ１１の読出要求コマンドを出力した日時とに基づいて、フィスカルデータ読出装置２５がフィスカルプリンター１に接続されているのにもかかわらず、フィスカルデータ読出装置２５が接続されている間に、１回も書込レシートデータ１１の読み出しが実行されなかったことがあるか否か、又は、１回のフィスカルデータ読出装置２５の接続の間に頻繁に（例えば、１０回等の所定の回数以上）書込レシートデータ１１の読み出しが実行されたことがあるか否かを検出し、１回も書込レシートデータ１１の読み出しが実行されなかったことがあり、又は、頻繁に書込レシートデータ１１の読み出しが実行されたことがある場合は、不正アクセスによる書込レシートデータ１１の読み出しが行われようとした可能性があることを検出する。これは、フィスカルデータ読出装置２５は、書込レシートデータ１１等のデータを読み出すための専用的な装置であり、このフィスカルデータ読出装置２５が接続されたのにもかかわらず、データの読み出しが行われていない場合や、頻繁にデータの読み出しが行われた場合は、通常のフィスカルデータ読出装置２５によるデータの読み出しの態様と異なっており、不正アクセスによるデータの読み出しの可能性があるからである。
【００６２】
なお、図１４の例では、ＥＪメモリー３４に記憶された書込レシートデータ１１が不正に読み出された可能性のあることを検出する場合の第３不正アクセス検出部７２の動作について説明したが、これと同様の手段によって、不正アクセスによってＥＪメモリー３４に書込レシートデータ１１が書き込まれた可能性があることを検出でき、また、フィスカルメモリー３７に記憶された日計売上データ１２が不正に読み出された可能性のあることを検出できると共に、フィスカルメモリー３７に対して日計売上データ１２が不正に書き込まれた可能性のあることを検出できる。
【００６３】
以上説明したように、本実施形態に係るフィスカルプリンター１は、メイン制御部３０が暗号化または特有のフォーマット化されたデータである書込レシートデータ１１や日計売上データ１２を第１メモリー制御部３５や第２メモリー制御部５０にメモリーから読み出させたことに関するログであるコマンド出力ログ４０、第１読出／書込実行ログ４５、及び、第２読出／書込実行ログ５２を作成するコマンド出力ログ作成部６６、第１読出／書込実行ログ作成部４６、及び、第２読出／書込実行ログ作成部５３を備えている。
これによれば、各ログ作成部により作成された各ログに基づいて、過去におけるフィスカル情報を含むデータの読み出しの状況の中から、過去に不正アクセスの可能性があるような態様でフィスカル情報を含むデータの読み出しが行われていることを検出できる。特に、フィスカル情報を含むデータは、第１メモリー制御部３５又は第２メモリー制御部５０の機能によって暗号化または特有のフォーマット化された上でメモリーに記憶されるため、データが暗号化または特有のフォーマット化されていることを知らない者がメモリーに不正アクセスしてデータを読み出した場合、短時間の間に頻繁にメモリーからデータを読み出す等、データが暗号化または特有のフォーマット化されていることを知る者による正常なデータの読み出しの態様と異なる態様でデータが読み出されることが考えられ、各ログ作成部により作成された各ログに基づいて、より適切に不正アクセスによるデータの読み出しを検出できる。
【００６４】
また、本実施形態では、コマンド出力ログ作成部６６は、メイン制御部３０が第１メモリー制御部３５又は第２メモリー制御部５０に読出要求コマンドを出力したことに関するコマンド出力ログ４０を作成し、さらに、第１読出／書込実行ログ作成部４６は、第１メモリー制御部３５がＥＪメモリー３４にアクセスしてＥＪメモリー３４から書込レシートデータ１１を読み出したことに関する第１読出／書込実行ログ４５を作成し、第２読出／書込実行ログ作成部５３は、第２メモリー制御部５０がフィスカルメモリー３７にアクセスしてフィスカルメモリー３７から日計売上データ１２を読み出したことに関する第２読出／書込実行ログ５２を作成する。
ここで、本実施形態では、例えば、ＥＪメモリー３４から書込レシートデータ１１を読み出す場合、メイン制御部３０は、読出要求コマンドを第１メモリー制御部３５に出力し、第１メモリー制御部３５は、メイン制御部３０から入力された読出要求コマンドに基づいてＥＪメモリー３４にアクセスしてＥＪメモリー３４から書込レシートデータ１１を読み出す。従って、メイン制御部３０から第１メモリー制御部３５に出力された読出要求コマンドと、第１メモリー制御部３５がＥＪメモリー３４からデータを読み出す処理とは、対応しているはずであり、対応していない場合は、ＥＪメモリー３４に対する不正アクセスが行われた可能性がある。
これを踏まえ、上記構成によれば、コマンド出力ログ４０と、第１読出／書込実行ログ４５及び第２読出／書込実行ログ５２とに基づいて、不正アクセスを検出することができる。
【００６５】
また、本実施形態では、第１不正アクセス検出部７０は、コマンド出力ログ４０に基づいて、メイン制御部３０が第１メモリー制御部３５に書込レシートデータ１１の読出要求コマンドを出力した回数を検出すると共に、第１読出／書込実行ログ４５に基づいて、第１メモリー制御部３５がＥＪメモリー３４にアクセスしてＥＪメモリー３４から書込レシートデータ１１を読み出した回数を検出し、検出結果に基づいて、ＥＪメモリー３４への不正アクセスを検出する。同様に、第１不正アクセス検出部７０は、コマンド出力ログ４０に基づいて、メイン制御部３０が第２メモリー制御部５０に日計売上データ１２の読出要求コマンドを出力した回数を検出すると共に、第２読出／書込実行ログ５２に基づいて、第２メモリー制御部５０がフィスカルメモリー３７にアクセスしてフィスカルメモリー３７から日計売上データ１２を読み出した回数を検出し、検出結果に基づいて、フィスカルメモリー３７への不正アクセスを検出する。
ここで、本実施形態では、例えば、ＥＪメモリー３４から書込レシートデータ１１を読み出す場合、メイン制御部３０は、読出要求コマンドを第１メモリー制御部３５に出力し、第１メモリー制御部３５は、メイン制御部３０から入力された読出要求コマンドに基づいてＥＪメモリー３４にアクセスしてＥＪメモリー３４から書込レシートデータ１１を読み出す。従って、メイン制御部３０から第１メモリー制御部３５に出力された読出要求コマンドの回数と、第１メモリー制御部３５がＥＪメモリーから書込レシートデータ１１を読み出す処理の回数とは、一致しているはずであり、一致していない場合は、不正アクセスによりＥＪメモリー３４から書込レシートデータ１１が読み出された可能性がある。このことは、フィスカルメモリー３７に記憶された日計売上データ１２についても同様である。
これを踏まえ、上記構成によれば、第１不正アクセス検出部７０により、適切に不正アクセスによるデータの読み出しを検出することができる。
【００６６】
また、本実施形態では、コマンド出力ログ作成部６６、第１読出／書込実行ログ作成部４６、及び、第２読出／書込実行ログ作成部５３の各ログ作成部は、ＲＴＣ３８から入力されたデータに基づいて、メイン制御部３０が、書込レシートデータ１１や日計売上データ１２を、ＥＪメモリー３４やフィスカルプリンター１から読み出したことについて、日時と対応づけたログを作成する。
これによれば、メイン制御部３０が書込レシートデータ１１や日計売上データ１２を第１メモリー制御部３５や第２メモリー制御部５０にＥＪメモリー３４やフィスカルメモリー３７から読み出させた日時の履歴が検出可能となり、ＥＪメモリー３４やフィスカルメモリー３７に対する正常のアクセスと異なる態様で行われる不正アクセスを検出できる。
【００６７】
また、本実施形態では、第２不正アクセス検出部７１は、コマンド出力ログ４０に基づいて、メイン制御部３０が書込レシートデータ１１や日計売上データ１２を第１メモリー制御部３５や第２メモリー制御部５０にＥＪメモリー３４やフィスカルメモリー３７から読み出させた日時の履歴を検出し、検出した履歴に基づいて、ＥＪメモリー３４やフィスカルメモリー３７への不正アクセスを検出する。
これによれば、正常なアクセスを行った場合におけるアクセスの履歴と、不正アクセスにおけるアクセスの履歴との相違点の検出が可能となり、検出した相違点に基づいて不正アクセスの検出が可能となる。
【００６８】
また、本実施形態に係るフィスカルプリンター１は、書込レシートデータ１１や日計売上データ１２をＥＪメモリー３４やフィスカルメモリー３７から読み出すことが許可されたフィスカルデータ読出装置２５が接続可能に構成されており、接続状況ログ作成部６７は、フィスカルデータ読出装置２５の接続状況に関する接続状況ログ４１を作成する。
これによれば、接続状況ログ４１に基づいて、フィスカルデータ読出装置２５の接続状況が検出可能となり、これに基づいて不正アクセスの検出が可能となる。
【００６９】
また、本実施形態では、第３不正アクセス検出部７２は、接続状況ログ４１と、コマンド出力ログ４０とに基づいて、ＥＪメモリー３４やフィスカルメモリー３７への不正アクセスを検出する。
これによれば、フィスカルデータ読出装置２５の接続状況、及び、フィスカルデータ読出装置２５によるＥＪメモリー３４やフィスカルメモリー３７へのアクセスの状況の検出が可能となり、これに基づいて不正アクセスの検出が可能となる。
【００７０】
なお、上述した実施の形態は、あくまでも本発明の一態様を示すものであり、本発明の範囲内で任意に変形および応用が可能である。
例えば、上述した実施形態では、第１不正アクセス検出部７０、第２不正アクセス検出部７１、及び、第３不正アクセス検出部７２の動作の説明の際に、不正アクセスを検出するための条件を具体的に例を挙げて説明したが、これら条件は、フィスカルプリンター１が設置された店舗の状況、フィスカルプリンター１の使用状況、仕様態様等に応じて、適宜、変更されるものである。
【符号の説明】
【００７１】
１…フィスカルプリンター（電子機器）、１１…書込レシートデータ（フィスカル情報を含むデータ）、１２…日計売上データ（フィスカル情報を含むデータ）、２５…フィスカルデータ読出装置（外部機器）、３０…メイン制御部、３４…ＥＪメモリー（メモリー）、３５…第１メモリー制御部（メモリー制御部）、３７…フィスカルメモリー（メモリー）、３８…ＲＴＣ（計時部）、４０…コマンド出力ログ（ログ）、４１…接続状況ログ（外部機器の接続状況のログ）、４５…第１読出／書込実行ログ（ログ）、４６…第１読出／書込実行ログ作成部（ログ作成部）、４８…プリンター制御部（記録制御部）、５０…第２メモリー制御部（メモリー制御部）、５２…第２読出／書込実行ログ（ログ）、５３…書込実行ログ作成部（ログ作成部）、６６…コマンド出力ログ作成部（ログ作成部）、６７…接続状況ログ作成部（ログ作成部）、７０…第１不正アクセス検出部（不正アクセス検出部）、７１…第２不正アクセス検出部（不正アクセス検出部）、７２…第３不正アクセス検出部（不正アクセス検出部）。
【図１】
2011123781.tif 000003
【図２】
2011123781.tif 000004
【図３】
2011123781.tif 000005
【図４】
2011123781.tif 000006
【図５】
2011123781.tif 000007
【図６】
2011123781.tif 000008
【図７】
2011123781.tif 000009
【図８】
2011123781.tif 000010
【図９】
2011123781.tif 000011
【図１０】
2011123781.tif 000012
【図１１】
2011123781.tif 000013
【図１２】
2011123781.tif 000014
【図１３】
2011123781.tif 000015
【図１４】
2011123781.tif 000016