(57)【特許請求の範囲】
【請求項１】
遊技機の動作を制御する中央処理装置、及び遊技機のユーザプログラム及びセキュリティコードが書き込まれるユーザメモリが含まれ、遊技機の起動時に前記セキュリティコードに基づいてセキュリティチェックを実行し、遊技機メーカが新しい遊技機を開発するときに用いる遊技機用セキュリティチップであって、
前記ユーザメモリのプログラム管理エリアのヘッダ部に所定の文字列が書き込まれているか否かで、前記ユーザプログラムの読み出しの許否を決定するようにしたことを特徴とする遊技機用セキュリティチップ。
【請求項２】
さらに、前記ユーザメモリのプログラム管理エリアのヘッダ部に所定の文字列が書き込まれているか否かで、内部のバスから外部端子への出力の許可又は禁止を決定するようにしたことを特徴とする、請求項１に記載の遊技機用セキュリティチップ。
【請求項３】
前記ヘッダ部に所定の文字列が書き込まれているか否かの判定は、内部のＣＰＵによって行うものである、請求項１又は２に記載の遊技機用セキュリティチップ。
【請求項４】
内部のバスからの外部への出力の許可又は禁止は、内部のバスと外部との接続部に設けられるバッファの動作を制御して行うものである、請求項２又は３に記載の遊技機用セキュリティチップ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、遊技機に使用されるセキュリティチップに関する。
【背景技術】
【０００２】
パチンコやパチスロ等の遊技機は、動作の内容が種々の法律によって規制されている他、検査機関による所定の検査を受けることが義務づけられている。このような遊技機には、違法な改変を防止するためのセキュリティチェック回路が含まれたセキュリティチップが搭載されている。
【０００３】
セキュリティチップは一般にセキュリティチップメーカによって製造され、各遊技機メーカに提供される。遊技機メーカは、遊技機のソフトウェアを開発する際に、セキュリティチップメーカが製造したセキュリティチップを実際の基板に搭載し、動作を試しながら開発を進める。その結果、最終的な販売対象の制御プログラムコードその他のデータが作成されると、検査機関での検査に必要な量産時と同等のチップ、すなわちセキュリティコードが付与されたチップが必要となる。
【０００４】
セキュリティチップメーカは、遊技機メーカからセキュリティコード付与の依頼があると、遊技機メーカが書き込んだプログラム等のデータに基づいてハッシュ計算等の所定の計算を行って、遊技機メーカが書き込んだデータによって一意的に定まるセキュリティコードを生成し、これをセキュリティチップ内の所定の領域に書き込む。セキュリティコードが書き込まれたセキュリティチップは、実際の遊技機に搭載されたあと、検査機関による検査を受ける。この検査に合格した遊技機と同一の機械は販売可能になり、量産時にはこの機械と同一のＲＯＭ内容がコピーされたセキュリティチップを搭載した遊技機が、各遊技ホール等へ引き渡される。
【０００５】
セキュリティコードが書き込まれたセキュリティチップは、遊技機に電源が投入された時点でセキュリティチェックを実行する。すなわち、セキュリティチップのメモリに書き込まれているプログラム等のデータに基づいてセキュリティチップメーカと同じ計算方法でセキュリティコードを生成し、これがセキュリティチップメーカによって予め書き込まれているものと一致するかどうかを判定する。プログラムやデータの一部が改変されていると、その時点で生成されたコードは予め書き込まれているセキュリティコードとは一致しなくなるため、遊技機は改変が行われたと判断し、その時点でＣＰＵの動作を停止させる。セキュリティチップのこのような仕組みによって、遊技機のプログラム等の改変の防止が図られている。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
量産されたセキュリティチップは、遊技機に搭載されて遊技機市場に広く流出することになる。このようなセキュリティチップのメモリに記録されている内容を、悪意者が読み出すことができるとすると、悪意者は読み出したソフトウェアに基づいて偽造チップを製造したり、秘匿性の高いプログラムの内容を解析して知的財産として保護されるべきプログラムの内容を違法に模倣することが想定される。一方で、セキュリティチップのメモリに記録されている内容を全く読み出すことができないとすると、遊技機が法律に従って製造、使用されているかどうかを行政機関又は検査機関が検査する必要があるときに不都合を生じる。
【０００７】
開発段階で用いられるセキュリティチップは、開発の途中で頻繁に内部のソフトウェアを読み出すことが必要となる。しかし、開発の途中で展示会へ出品したり、あるいはまたはアウトソーシングのために社外にこのようなチップを一時的に引き渡す場合などに、内部のソフトウェアが読み出し可能であると不都合な場合がある。
【０００８】
本発明は、このような事情のもとでなされたものであり、内部に記録されたプログラム等の重要な情報について十分な秘匿性を備えるとともに、必要があるときは容易にこれらの情報の読み出しや書き込みができる遊技機用セキュリティチップを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記の課題を解決するために、本発明にかかる遊技機用セキュリティチップは、遊技機の動作を制御する中央処理装置、及び遊技機のユーザプログラム及びセキュリティコードが書き込まれるユーザメモリが含まれ、遊技機の起動時に前記セキュリティコードに基づいてセキュリティチェックを実行する遊技機用セキュリティチップであって、前記ユーザメモリのプログラム管理エリアのヘッダ部に所定の文字列が書き込まれているか否かで、前記ユーザプログラムの読み出しの許否を決定するようにしたことを特徴とする。
【００１０】
さらに、前記ユーザメモリのプログラム管理エリアのヘッダ部に所定の文字列が書き込まれているか否かで、内部のバスから外部端子への出力の許可又は禁止を決定するようにしたことを特徴とする。
【００１１】
前記ヘッダ部に所定の文字列が書き込まれているか否かの判定は、内部のＣＰＵによって行うようにすることができる。また、内部のバスからの外部への出力の許可又は禁止は、内部のバスと外部との接続部に設けられるバッファの動作を制御して行うようにすることができる。
【発明の効果】
【００１２】
遊技機用セキュリティチップにおいて、ユーザメモリのプログラム管理エリアのヘッダ部に所定の文字列が書き込まれているか否かで、ユーザプログラムの読み出しの許否を決定するようにしたことにより、遊技機メーカが例えば開発段階において必要に応じて容易にユーザプログラムの読み出しの禁止／許可を切り替えることができるので、特に開発段階における使い易さと秘匿性の向上を両立させることができる。
【００１３】
さらに、前記ユーザメモリのプログラム管理エリアのヘッダ部に所定の文字列が書き込まれているか否かで、内部のバスからの外部への出力の許可又は禁止を決定するようにしたことにより、プログラム動作のＣＰＵバス出力による観測を不可とし、遊技機用セキュリティチップの秘匿性が必要とされる場合にそのレベルをより高くすることができる。
【発明を実施するための最良の形態】
【００１４】
図１は、本発明の実施の一形態に係る遊技機用セキュリティチップのブロック図である。同図において、中央処理装置（ＣＰＵ）１０は、遊技機の全体的な動作を制御する。ユーザメモリはユーザＲＯＭ１２及びユーザＲＡＭ１４からなり、ユーザＲＯＭ１２の中には、パチンコなどを開発、製造する遊技機メーカが開発したユーザプログラムが格納され、ユーザＲＡＭ１４には遊技動作の実行時に必要なデータが一時的に記憶される。
【００１５】
符号１６はマップ切替回路であり、これはモード制御回路２４から出力制御信号生成回路２６を介して、後述の「セキュリティモード」、「ＰＲＯＭモード」、「ユーザモード」のいずれかの信号が入ったときに、それぞれのモードに応じて予め用意されているメモリマップに切り替える。ブートＲＯＭ１８は起動時に立ち上がるプログラムが格納されたメモリであり、ブートＲＡＭ２０は起動時に使用されるＲＡＭである。クロック回路３０は、ボードのクロック信号を受け入れてクロック信号をチップ全体に供給する。
【００１６】
本実施形態のセキュリティチップには、「セキュリティモード」、「ＰＲＯＭモード」、「ユーザモード」という三つのモードが用意されている。出力制御回路生成回路２６からは、この三つのモードに応じた制御信号が出力され、バス５０を介してバッファ３２、３４、３６、３８、４０に対して供給され、それぞれのバッファの入力や出力の可否を制御する。
【００１７】
これらのバッファのうち、バッファ３２はコントロール出力制御信号の出力を制御するものであり、バッファ３４はアドレスデータの入力及び出力を制御するものであり、バッファ３６はアドレス以外のデータの入力及び出力を制御するものであり、バッファ３８はパラレルデータの入力を制御するものであり、バッファ４０はアドレスデコード回路４４からのチップセレクト信号などの出力を制御するものである。
【００１８】
ここで、「セキュリティモード」とは、セキュリティチェック回路５２によってユーザＲＯＭ１２のセキュリティチェックを行う他、ユーザプログラムの環境設定などを行うモードである。「ユーザモード」とは、ユーザＲＯＭ１２に書き込まれているユーザプログラムを実行するモードであり、このモードに移行すると、ユーザＲＯＭのリセットアドレスからユーザプログラムを実行する。「ＰＲＯＭモード」とは、ユーザＲＯＭに対してユーザプログラムを読み書きするモードである。
【００１９】
図２は、「セキュリティモード」、「ユーザモード」、「ＰＲＯＭモード」の間の関係を示しており、（ａ）が量産用チップ、（ｂ）が開発用チップの場合である。（ａ）の量産用チップの場合、システムリセット入力端子（ＸＳＲＳＴ端子）が“Ｌｏｗ”とされてリセットがかかると、ＰＲＯＭモード設定入力端子（ＰＲＧ端子）が“Ｈｉｇｈ”の場合にはＰＲＯＭモードに移行し、ＰＲＧ端子が“Ｌｏｗ”の場合にはセキュリティモードに移行する。そしてセキュリティチェックがＯＫの場合（通常の場合）にはユーザモードに移行するが、セキュリティチェックがＮＧの場合にはＣＰＵが停止する。
【００２０】
図２（ｂ）の開発用チップの場合は、システムリセット後にＰＲＧ端子が“Ｈｉｇｈ”の場合にＰＲＯＭモードに移行する点は量産用チップと同じであるが、ＰＲＧ端子が“Ｌｏｗ”の場合のセキュリティモードにおける結果に関係なくユーザモードに移行する点が、量産用チップと異なる。
【００２１】
図３は、図１のブロック図に示したもののうちＰＲＯＭモードにおいて動作する主な回路ブロックを示しており、図４は、図１のブロック図に示したもののうちユーザモードにおいて動作する主な回路ブロックを示している。図３及び図４において、図１と同じ要素については同一の符号が付してある。
【００２２】
前述のように、遊技機メーカは新しい遊技機を開発するときに、セキュリティチップメーカが提供するセキュリティチップのユーザメモリにデータを書き込み、当該セキュリティチップをボードに実装し、さらにこれを遊技機に搭載して、実際に遊技機全体として動作するかどうかを確かめながら開発を進める。このため、遊技機メーカとしては、開発の途中でセキュリティチップの内容を実際に読み出すことや、ロジックステートアナライザ等によりチップの動作タイミングの確認を行うことが必要になる。
【００２３】
図５は、図１に示したユーザＲＯＭ１２のメモリマップである。図５の左側の図から分かるように、ユーザＲＯＭ１２の内部は大きく分けて「プログラムコードエリア」、「プログラムデータエリア」、「プログラム管理エリア」から構成される。「プログラムコードエリア」及び「プログラムデータエリア」には、遊技機の実際の動作を制御するためのプログラム及びデータが書き込まれる。
【００２４】
プログラム管理エリアには例えば１２８バイトの記憶領域が用意され、ここにプログラムを管理するために必要な情報が記憶される。具体的には、図５の右側に拡大して示すように、「ヘッダ」、「メーカコード」、「製品コード」、「プログラムコードエンドアドレス」、「各種設定」、「使用禁止エリア」、「読み出しＲＡＭエリア」、「セキュリティコード」の各領域から構成されている。
【００２５】
遊技機メーカが遊技機のソフトウェアの開発を実行する際に、ユーザＲＯＭのうち、「プログラムコードエリア」及び「プログラムデータエリア」に自社の遊技機を制御するプログラムを書き込む。また、プログラム管理エリアに関しては、セキュリティコード以外の領域に、開発において必要な情報を書き込む。新たな遊技機のソフトウェアの開発が完了し、遊技機メーカによって必要なコードが書き込まれると、セキュリティチップメーカが、ユーザＲＯＭに書かれている情報に基づいてセキュリティコードを生成し、これをセキュリティコード領域に書き込む。こうしてセキュリティコードが書き込まれたチップに基づいて、遊技機メーカは所定の機関の型式試験を受ける。そして、この試験に合格したチップに基づいて、量産用チップにデータをコピーして、実際の遊技機に搭載する。
【００２６】
量産用チップは、遊技機に搭載されて遊技機市場に広く流出することになる。このような量産用チップのユーザＲＯＭの内容を、悪意者が読み出すことができるとすると、悪意者は読み出したソフトウェアに基づいて偽造チップを製造したり、秘匿性の高いプログラムの内容を解析して知的財産として保護されるべきプログラムの内容を違法に模倣することが想定される。一方で、量産用チップのユーザＲＯＭの内容を全く読み出すことができないとすると、行政機関や検査機関が遊技機が法律に従って製造、使用されているかどうかを検査する必要があるとき、不都合を生じる。
【００２７】
一方、開発段階のセキュリティチップの場合、開発の途中で頻繁に内部のソフトウェアを読み出すことが必要となる。しかし、開発の途中で展示会へ出品したり、あるいはまたはアウトソーシングのために社外に開発用チップを一時的に引き渡す場合などに、内部のソフトウェアが読み出し可能であると不都合な場合がある。
【００２８】
そこで、量産用チップのユーザＲＯＭ１２に書き込まれている内容は原則として読み出すことができないようにし、例外的に所定の権限を有する検査機関による特別な場合には量産用チップのユーザＲＯＭの内容を読み出すことができるようにしておく。そのため遊技機メーカにおいては量産時にマスターチップが必要となる。その一方で、遊技機メーカが開発用チップを取り扱うときに、自らの意思でユーザＲＯＭ１２に書き込まれているデータの読み出しを許すかどうかを簡単な方法で選択できるようにする。併せて、ユーザモードにおいて使用するバッファ３２、３４、３６を介したバス出力についても、外部からの読み出しの可否を遊技機メーカの意思で選択できるようにし、ユーザＲＯＭ１２に書き込まれるユーザプログラムの秘匿性を高める。
【００２９】
そのために、本実施形態では、量産用チップと開発用チップとを用意する。量産用チップと開発用チップは、前述のように異なる動作を実行するが、回路のほとんどの部分は共通であり、チップを製造する段階でモード制御回路２４の所定の端子を“Ｈｉｇｈ”又は“Ｌｏｗ”に固定することによって、量産用チップとするか開発用チップとするかを決めることができる。また、開発用チップの場合に、ＲＯＭ読み出しの可否及びバス出力の可否の設定には、プログラム管理エリアに書き込む情報のユーザプログラムのヘッダ部分の情報を利用する。
【００３０】
図６は、ＰＲＯＭモードにおけるユーザＲＯＭ１２に書き込まれたデータの読み出しの可否、並びにバッファ３２、３４、３６を介したバス出力の可否をまとめた表である。図６を見ると分かるように、量産用チップでは、通常の場合、ＰＲＯＭモードにおけるユーザＲＯＭからの読み出し及びバス出力はいずれも禁止するよう設定される。これにより、量産用チップは原則として、ユーザＲＯＭの内容を外部から読み出すことができず、また、遊技機が動作している間においてバス上を行き来している信号を外部から参照することもできない。
【００３１】
ただし、セキュリティチップの性格上、検査機関による検査の必要性から全くユーザＲＯＭの読み出しが不可能とすることは問題があるので、所定の検査装置を接続し、所定の暗号コードのやり取りの後、正規の検査装置であることが認識された場合には、当該検査装置によるユーザＲＯＭの読み出しを可能する。遊技機に接続されたのが特定の検査装置かどうかという認識は、図１及び図４に示した照合用ブロック２８によって行われる。この照合用ブロック２８によって正規の検査装置が接続されていると認識されると、量産用チップであるか開発用チップであるかにかかわらず、当該検査装置によるユーザＲＯＭの読み出し及びバス出力を可能とする。
【００３２】
一方、開発用チップの場合には、図６に示すように、ヘッダのすべてのビットを「０」とした場合は、量産用チップと同様にＰＲＯＭモードにおけるユーザＲＯＭからの読み出し及びバス出力は、いずれも禁止され、正規の検査装置であることが認識された場合のみ、当該検査装置によるユーザＲＯＭの読み出しを可能とする。また、ヘッダに予め決められた文字列（例えば「ＬＥ４３８０Ａ」という製品名）が書き込まれている場合には、バス出力は禁止されるが、ユーザＲＯＭからの読み出しは可能となる。さらに、ヘッダに上記以外の文字列が書き込まれていた場合には、ユーザＲＯＭからの読み出しもバス出力も可能となる。
【００３３】
このヘッダの文字列の有無及び種類の認識は、ブートＲＯＭ１２に記憶されている専用のプログラムと、ＣＰＵ１０とによって行われる。このように、遊技機メーカは開発段階において、プログラム管理エリアのヘッダにおける文字列の種類又はその有無によって、自由にユーザＲＯＭの読み出しの可否及びバス出力の可否を指定することができる。なお、開発用チップの場合であっても、正規の検査装置が接続され、照合用ブロック２８がその旨を認識した場合には、当該検査装置によるユーザＲＯＭの読み出し及びバス出力を可能となる。
【００３４】
検査に合格した段階で、遊技機メーカはＲＯＭ読み出し可能なマスターチップが必要となる。マスターチップは、マスターチップ内のユーザＲＯＭの内容をそのまま量産用チップにコピーするコピー元であるため、量産用チップとはＲＯＭ読み出しが可能な部分のみ異なる仕様のチップである必要がある。このためセキュリティチップメーカは、プログラムコードエリア及びプログラムデータエリアに書き込まれているデータ、そして、チップの型名（製品名）が書かれたヘッダを含むプログラム管理エリアの既に書き込まれているデータに基づいてハッシュを計算し、これをセキュリティコードとして、開発用チップのプログラム管理エリアの「セキュリティコード」領域に書き込む。こうして開発用チップが、セキュリティコードを含んだマスターチップとして使用可能になる。
【００３５】
量産用チップにマスターチップのコードを書き込む場合には、量産用チップをＰＲＯＭモードとすることで書き込むことが可能となる。このようにして作成されたチップ（量産用チップ）は、前述のように、正規の検査装置が接続されている場合を除いて、ヘッダに何が書いてあるかに関係なくデータの読み出しはできないし、バスからもデータが出力されない。したがって、高いセキュリティが確保される。
【００３６】
図７は、開発用チップの全体的な動作を示したフローチャートである。まず、システムリセットに入力があってＸＳＲＳＴ端子が“Ｌｏｗ”になると（Ｓ１）、ＰＲＧ端子の状態を確認し（Ｓ２）、“Ｈｉｇｈ”であれば、ＰＲＯＭモードへ移行し、“Ｌｏｗ”であれば、セキュリティモードへ移行する。ＰＲＯＭモードに移行した場合、まずユーザメモリのプログラム管理エリアのヘッダ部分を確認し（Ｓ３）、ヘッダ部分にすべて「０」が書き込まれていた場合には、ＲＯＭ読出しの禁止の設定を行う（Ｓ４）。これにより、開発用チップにおいて、ユーザＲＯＭからの読み出しは原則として禁止される。
【００３７】
その後は、ユーザＲＯＭからの読み出し命令があるかどうか常時を検出しており（Ｓ５）命令があった場合には、ＲＯＭ読出しの禁止の設定がなされているかどうかを見に行く（Ｓ６）。ここで、ＲＯＭ読出禁止設定がなされていた場合にはユーザＲＯＭからユーザプログラムを読み出すことはできない（Ｓ７）。一方、ＲＯＭ読出禁止設定がなされていなかった場合には、読み出し命令に従ってユーザＲＯＭからユーザプログラムの読み出しがなされる（Ｓ８）。
【００３８】
一方、Ｓ２においてセキュリティモードに移行した場合は、まず、セキュリティチェック回路にてセキュリティチェックを行って（Ｓ９）、プログラムの正否を確認する。このセキュリティチェックの結果がＮＧの場合、量産用チップの場合にはこの段階でＣＰＵを停止するが、開発用チップの場合には図７に示すようにそのまま処理を続行する。続いて、ユーザメモリのプログラム管理エリアのヘッダに書かれている内容を調べ（Ｓ１０）、ヘッダ部分にすべて「０」が書き込まれているか或いは製品名が書かれている場合には、バス出力の禁止を設定し（Ｓ１１）、各バッファに対し出力禁止の信号を供給する（Ｓ１２）。その後、ユーザＲＯＭからユーザプログラムを読み出してプログラムの実行に移る（Ｓ１３）。一方、Ｓ１０において、ヘッダ部分にすべて「０」とも製品名も書かれていない場合には、バス出力禁止の設定を行わずにプログラムの実行に移る（Ｓ１３）。
【００３９】
したがって、ヘッダにすべて「０」を書き込む、製品名を書き込む、或いはそれ以外を書き込むのいずれかによって、ＲＯＭ読み出し可否及びバッファ出力の可否を、容易に設定することができる。
【図面の簡単な説明】
【００４０】
【図１】本発明の実施の一形態に係る遊技機用セキュリティチップのブロック図である。
【図２】量産用チップ、開発用チップの各場合における「セキュリティモード」、「ユーザモード」、「ＰＲＯＭモード」の間の関係を示した図である。
【図３】図１のブロック図に示したもののうちＰＲＯＭモードにおいて動作する主な回路ブロックを示した図である。
【図４】図１のブロック図に示したもののうちユーザモードにおいて動作する主な回路ブロックを示した図である。
【図５】図１に示したユーザＲＯＭ１２のメモリマップである。
【図６】ＰＲＯＭモードにおけるユーザＲＯＭ１２に書き込まれたデータの読み出しの可否、並びにバッファ２３、３４、３６を介したバス出力の可否をまとめた表である。
【図７】開発用チップの全体的な動作を示したフローチャートである。
【符号の説明】
【００４１】
１０    中央処理装置（ＣＰＵ）
１２    ユーザＲＯＭ
１４    ユーザＲＡＭ
１６    マップ切替回路
１８    ブートＲＯＭ
２０    ブートＲＡＭ
２４    モード制御回路
２６    出力制御信号生成回路
３０    クロック回路
３２、３４、３６、３８、４０    バッファ
５０    バス
５２    セキュリティチェック回路
【図１】
0005204997.tif 000002
【図２】
0005204997.tif 000003
【図３】
0005204997.tif 000004
【図４】
0005204997.tif 000005
【図５】
0005204997.tif 000006
【図６】
0005204997.tif 000007
【図７】
0005204997.tif 000008