電子機器、遊技機、主制御基板、周辺基板、認証方法および認証プログラム
【課題】主制御部によって送信された制御コマンドに基づいて所定の処理をおこなう周辺部を備える電子機器に対する不正を防止すること。
【解決手段】主制御基板310は、データ記憶部311内に記憶されているデータを所定のデータ量に分割し、分割されたデータのそれぞれに対して結合法則を満たす2項演算をおこなって認証データを生成する。主制御基板310は、認証データを所定の制御コマンドに付加して周辺基板320に送信する。認証データが付加される制御コマンドの種類は、データの分割数に基づいて変更される。周辺基板320は、受信した認証データに対して2項演算をおこない、演算結果と期待値とが一致するか否かに基づいて主制御基板310を認証する。
【解決手段】主制御基板310は、データ記憶部311内に記憶されているデータを所定のデータ量に分割し、分割されたデータのそれぞれに対して結合法則を満たす2項演算をおこなって認証データを生成する。主制御基板310は、認証データを所定の制御コマンドに付加して周辺基板320に送信する。認証データが付加される制御コマンドの種類は、データの分割数に基づいて変更される。周辺基板320は、受信した認証データに対して2項演算をおこない、演算結果と期待値とが一致するか否かに基づいて主制御基板310を認証する。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は、複数の基板を備え、これらの基板間の通信の認証をおこなう電子機器、遊技機、主制御基板、周辺基板、認証方法および認証プログラムに関する。
【背景技術】
【0002】
従来、複数の基板を備えた電子機器において、これら各基板に対する不正を防止するための様々な技術が提案されている。複数の基板を備えた電子機器としては、たとえば、ぱちんこ遊技機などがある。ぱちんこ遊技機には、電子機器全体の動作を司る主制御基板と、電子機器の各部の動作をおこなう被制御基板(周辺基板)とを備えている。この主制御基板は、周辺基板に制御コマンドを含む制御信号を出力し、周辺基板は、主制御基板から送信された制御信号にしたがって動作を実行する機能を備えている。
【0003】
主制御基板に対する不正には、たとえば、正規の主制御基板を不正な制御基板に取り替えたり、主制御基板がおこなう処理を規定したプログラムコードを改ざんしたりするなどの方法がある。このような不正を防止するため、たとえば、主制御基板内に搭載されたROMに記録されているプログラムデータをROMチェッカによってチェックして、ROMの不正交換などを防止する技術が提案されている(たとえば、下記特許文献1参照。)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開平11−333108号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、上述した特許文献1の技術によれば、プログラムデータの改ざんは検知できるが、正規な主制御基板と被制御基板との間に不正な制御基板が接続されてしまうのを防止することができない。このため、不正な制御基板から出力される制御信号によって、被制御基板が不正な制御をおこなってしまうという問題がある。
【0006】
ここで、図15および図16を用いて、従来技術による不正防止技術について説明する。図15は、従来技術による不正防止技術の概要を示す説明図である。また、図16は、不正な制御基板の挿入例を示す説明図である。図15に示すように、正規の主制御基板1501は、周辺基板1502に対して正規の制御信号RSを出力して、周辺基板1502の動作を制御する。正規の主制御基板1501には、検査用ポート1503が設けられている。この検査用ポート1503から正規の主制御基板1501の内部に設けられたROMなどに記録されたプログラムデータを検査して、正規の主制御基板1501に不正がおこなわれていないかを検査する。
【0007】
ところが、図16に示すように、正規の主制御基板1501と周辺基板1502との間に、不正な制御基板1601が挿入されてしまう場合がある。不正な制御基板1601は、正規の主制御基板1501から出力された正規の制御信号RSを破棄または無視し、替わりに不正な制御信号FSを周辺基板1502に出力する。ここで、周辺基板1502は、入力された信号が、正規の制御信号RSであるか不正な制御信号FSであるかを判別することができない。このため、周辺基板1502は、不正な制御信号FSにしたがって動作してしまうという問題がある。
【0008】
また、検査用ポート1503は正規の主制御基板1501のみに設けられているため、検査用ポート1503を用いた検査をおこなっても、正規の主制御基板1501内の処理に対する検査結果が返ってしまう。このため、検査用ポート1503を用いた検査をおこなっても、不正な制御基板1601による不正制御を検知することができないという問題がある。
【0009】
この発明は、上述した従来技術による問題点を解消するため、正規の主制御基板と周辺基板との間に不正な制御基板が接続されたことを検知して、ぱちんこ遊技機などの電子機器に対する不正を防止することができる電子機器、遊技機、主制御基板、周辺基板、認証方法および認証プログラムを提供することを目的とする。
【課題を解決するための手段】
【0010】
上述した課題を解決し、目的を達成するため、請求項1の発明にかかる電子機器は、主制御部と、前記主制御部によって送信された制御コマンドに基づいて所定の処理をおこなう周辺部と、を備える電子機器であって、前記主制御部は、所定のデータを記憶するデータ記憶手段と、前記主制御部を認証するための認証値の生成に用いる前記データの量(以下、「データ量」という)を決定する決定手段と、前記データ記憶手段内の前記データを前記データ量に分割し、分割した前記データに対してそれぞれ結合法則を満たす2項演算をおこなって、分割した前記データの数(以下、「分割数」という)分の前記認証値を生成する認証値生成手段と、前記周辺部に送信する前記制御コマンドが所定の制御コマンドである場合、前記認証値を前記制御コマンドに付加する付加手段と、前記制御コマンドを前記周辺部に送信する送信手段と、を備え、前記周辺部は、前記認証値が付加された前記制御コマンドを受信する受信手段と、前記分割数分の前記認証値に対して前記2項演算をおこなった演算結果と当該演算結果の期待値とが一致するか否かに基づいて前記主制御部を認証する認証手段と、を備え、前記期待値は、前記データ記憶手段内の全ての前記データに対して前記2項演算をおこなった値であり、前記付加手段は、前記分割数に基づいて前記認証値を付加する前記制御コマンドの種類を変更することを特徴とする。
【0011】
この請求項1の発明によれば、主制御部は、データ記憶手段内のデータの分割数に基づいて認証データを付加する制御コマンドの種類を変更する。分割数は主制御部のみが知る値なので、不正解析者は、認証データを付加する制御コマンドの種類の変更タイミングを知ることができない。これにより、認証コマンドが不正に盗取される可能性を低減することができる。
【0012】
また、請求項1の発明によれば、認証値を制御コマンドに付加して送信するので、認証値を単体で送信する場合と比較して、主制御部と周辺部との間の通信負荷の増大を抑えることができる。また、請求項1の発明によれば、認証値を単体で送信する場合と比較して、通信データ中から認証値が抽出され、解析されてしまう可能性を低減することができる。
【0013】
また、請求項1の発明によれば、分割数そのものを決定するのではなく、認証値の生成に用いるデータ量を決定する。このため、分割数が不正に窃取される可能性を低減することができる。
【0014】
また、請求項2の発明にかかる電子機器は、請求項1に記載の発明において、前記決定手段は、それぞれの前記認証値ごとに前記データ量を決定し、前記認証値生成手段は、前記認証値ごとにそれぞれ決定された前記データ量分の前記データを用いて当該認証値を生成する。
【0015】
この請求項2の発明によれば、それぞれの認証値を生成するごとにデータ量を決定することができる。これにより、あらかじめデータ量を決定しておく場合と比較して、分割数が不正に窃取される可能性をさらに低減することができる。
【0016】
また、請求項3の発明にかかる電子機器は、請求項1または2に記載の発明において、前記認証手段は、前記主制御部に対する前記認証が成立した際に前記2項演算の対象となった前記認証値の数に基づいて、前記認証値が付加された前記制御コマンドの種類を識別することを特徴とする。
【0017】
この請求項3の発明によれば、周辺部において、認証データが付加されている制御コマンドを識別することができる。これにより、認証にかかる周辺部の処理負荷を軽減するとともに、認証処理の確実性を向上させることができる。
【0018】
また、請求項4の発明にかかる電子機器は、請求項1〜3のいずれか一つに記載の発明において、前記認証値生成手段は、前記認証値が付加される前記制御コマンドを用いて前記認証値を生成することを特徴とする。
【0019】
この請求項4の発明によれば、認証値を付加して送信する制御コマンドを用いて認証値を生成する。一般に、不正な制御部は、正規の主制御部と異なる制御コマンドを送信することによって、周辺部に不正な動作をおこなわせようとする。請求項3の発明のように、今回送信する制御コマンドを用いて認証値を生成すれば、不正な制御部によって認証値が再利用された場合であっても、認証値と制御コマンドの整合がとれず、不正を検知することができる。
【0020】
また、請求項5の発明にかかる電子機器は、請求項1〜4のいずれか一つに記載の発明において、前記認証値生成手段は、前記認証値を所定の暗号化方法で暗号化し、前記認証手段は、前記認証値を前記所定の暗号化方法に対応する復号化方法で復号化して前記認証をおこなうことを特徴とする。
【0021】
この請求項5の発明によれば、認証値を暗号化して送信するので、認証値の生成方法が解析されたり、認証値が再利用されたりする可能性を低減することができる。
【0022】
また、請求項6の発明にかかる電子機器は、請求項5に記載の発明において、前記認証値生成手段は、前記分割数に基づいて前記認証値の暗号化方法を変更し、前記認証手段は、前記主制御部に対する前記認証が成立した際に前記2項演算の対象となった前記認証値の数に基づいて前記認証値の復号化方法を変更することを特徴とする。
【0023】
この請求項6の発明によれば、不正解析者は、認証値の暗号化方法の切り替えタイミングを知ることができず、認証値の生成方法が解析されたり、認証値が再利用されたりする可能性をさらに低減することができる。
【0024】
また、請求項7の発明にかかる電子機器は請求項1〜6のいずれか一つに記載の発明において、前記データ記憶手段は、前記主制御部で用いられるプログラムデータを記憶することを特徴とする。
【0025】
この請求項7の発明によれば、主制御部に記録されたプログラムコードの不正な書き換えや、主制御部のデータ記憶手段の不正な取り替えなどを検出することができる。
【0026】
また、請求項8の発明にかかる電子機器は、請求項1〜7のいずれか一つに記載の発明において、前記2項演算は、加算または排他的論理和演算であることを特徴とする。
【0027】
この請求項8の発明によれば、認証値の生成に用いる2項演算として、加算または排他的論理和演算を切り替えて用いることができる。
【0028】
また、請求項9の発明にかかる遊技機は、請求項1〜8のいずれか一つに記載の電子機器を備え、前記主制御部は主制御基板であり、前記周辺部は周辺基板であることを特徴とする。
【0029】
この請求項9の発明によれば、遊技機の主制御基板は、データ記憶手段内のデータの分割数に基づいて認証データを付加する制御コマンドの種類を変更する。分割数は主制御部のみが知る値なので、不正解析者は、認証データを付加する制御コマンドの種類の変更タイミングを知ることができない。これにより、認証コマンドが不正に盗取される可能性を低減することができる。
【0030】
また、請求項9の発明によれば、認証値を制御コマンドに付加して送信するので、認証値を単体で送信する場合と比較して、主制御基板と周辺基板との間の通信負荷の増大を抑えることができる。また、請求項9の発明によれば、認証値を単体で送信する場合と比較して、通信データ中から認証値が抽出され、解析されてしまう可能性を低減することができる。
【0031】
また、請求項9の発明によれば、分割数そのものを決定するのではなく、認証値の生成に用いるデータ量を決定する。このため、分割数が不正に窃取される可能性を低減することができる。
【0032】
また、請求項10の発明にかかる主制御基板は、電子機器に搭載され、周辺基板に所定の処理をおこなわせる制御コマンドを送信する主制御基板であって、所定のデータを記憶するデータ記憶手段と、前記主制御基板を認証するための認証値の生成に用いる前記データの量(以下、「データ量」という)を決定する決定手段と、前記データ記憶手段内の前記データを前記データ量に分割し、分割した前記データに対してそれぞれ結合法則を満たす2項演算をおこなって、分割した前記データの数(以下、「分割数」という)分の前記認証値を生成する認証値生成手段と、前記周辺基板に送信する前記制御コマンドが所定の制御コマンドである場合、前記認証値を前記制御コマンドに付加する付加手段と、前記制御コマンドを前記周辺基板に送信する送信手段と、を備え、前記付加手段は、前記分割数に基づいて前記認証値を付加する前記制御コマンドの種類を変更することを特徴とする。
【0033】
この請求項10の発明によれば、主制御基板は、データ記憶手段内のデータを分割した分割数に基づいて認証データを付加する制御コマンドの種類を変更する。分割数は主制御基板のみが知る値なので、不正解析者は、認証データを付加する制御コマンドの種類の変更タイミングを知ることができない。これにより、認証コマンドが不正に盗取される可能性を低減することができる。
【0034】
また、請求項10の発明によれば、認証値を制御コマンドに付加して送信するので、認証値を単体で送信する場合と比較して、主制御基板と周辺基板との間の通信負荷の増大を抑えることができる。また、請求項10の発明によれば、認証値を単体で送信する場合と比較して、通信データ中から認証値が抽出され、解析されてしまう可能性を低減することができる。
【0035】
また、請求項10の発明によれば、分割数そのものを決定するのではなく、認証値の生成に用いるデータ量を決定する。このため、分割数が不正に窃取される可能性を低減することができる。
【0036】
また、請求項11の発明にかかる周辺基板は、電子機器に搭載され、主制御基板によって送信された制御コマンドに基づいて所定の処理をおこなう周辺基板であって、前記主制御基板によって送信された前記制御コマンドを受信する受信手段と、前記分割数分の前記認証値に対して前記2項演算をおこなった演算結果と当該演算結果の期待値とが一致するか否かに基づいて前記主制御基板を認証する認証手段と、を備え、前記期待値は、前記データ記憶手段内の全ての前記データに対して前記2項演算をおこなった値であり、前記認証手段は、前記主制御基板に対する前記認証が成立した際に前記2項演算の対象となった前記認証値の数に基づいて、前記認証値が付加された前記制御コマンドの種類を識別することを特徴とする。
【0037】
この請求項11の発明によれば、認証値を制御コマンドに付加して送信するので、認証値を単体で送信する場合と比較して、主制御基板と周辺基板との間の通信負荷の増大を抑えることができる。また、請求項11の発明によれば、認証値を単体で送信する場合と比較して、通信データ中から認証値が抽出され、解析されてしまう可能性を低減することができる。また、請求項11の発明によれば、周辺基板において、認証データが付加されている制御コマンドを識別することができる。これにより、認証にかかる周辺基板の処理負荷を軽減するとともに、認証処理の確実性を向上させることができる。
【0038】
また、請求項12の発明にかかる認証方法は、主制御部と、前記主制御部によって送信された制御コマンドに基づいて所定の処理をおこなう周辺部と、を備える電子機器における認証方法であって、前記主制御部において、前記主制御部を認証するための認証値の生成に用いるデータの量(以下、「データ量」という)を決定する決定工程と、前記主制御部に記憶されている所定のデータを前記データ量に分割し、分割した前記データに対してそれぞれ結合法則を満たす2項演算をおこなって、分割した前記データの数(以下、「分割数」という)分の前記認証値を生成する認証値生成工程と、前記周辺部に送信する前記制御コマンドが所定の制御コマンドである場合、前記認証値を前記制御コマンドに付加する付加工程と、前記制御コマンドを前記周辺部に送信する送信工程と、を含み、前記周辺部において、前記認証値が付加された前記制御コマンドを受信する受信工程と、前記分割数分の前記認証値に対して前記2項演算をおこなった演算結果と当該演算結果の期待値とが一致するか否かに基づいて前記主制御部を認証する認証工程と、を含み、前記期待値は、前記データ記憶手段内の全ての前記データに対して前記2項演算をおこなった値であり、前記付加工程では、前記分割数に基づいて前記認証値を付加する前記制御コマンドの種類を変更することを特徴とする。
【0039】
この請求項12の発明によれば、主制御部は、データ記憶手段内のデータの分割数に基づいて認証データを付加する制御コマンドの種類を変更する。分割数は主制御部のみが知る値なので、不正解析者は、認証データを付加する制御コマンドの種類の変更タイミングを知ることができない。これにより、認証コマンドが不正に盗取される可能性を低減することができる。
【0040】
また、請求項12の発明によれば、認証値を制御コマンドに付加して送信するので、認証値を単体で送信する場合と比較して、主制御部と周辺部との間の通信負荷の増大を抑えることができる。また、請求項12の発明によれば、認証値を単体で送信する場合と比較して、通信データ中から認証値が抽出され、解析されてしまう可能性を低減することができる。
【0041】
また、請求項12の発明によれば、分割数そのものを決定するのではなく、認証値の生成に用いるデータ量を決定する。このため、分割数が不正に窃取される可能性を低減することができる。
【0042】
また、請求項13の発明にかかる認証プログラムは、請求項12に記載の認証方法をコンピュータに実行させることを特徴とする。
【0043】
この請求項13の発明によれば、請求項12に記載の認証方法をコンピュータに実行させることができる。
【発明の効果】
【0044】
本発明にかかる電子機器、遊技機、主制御基板、周辺基板、認証方法および認証プログラムによれば、正規の主制御基板と周辺基板との間に不正な制御基板が接続されたことを検知して、ぱちんこ遊技機などの電子機器に対する不正を防止することができる。
【図面の簡単な説明】
【0045】
【図1】本発明のぱちんこ遊技機の遊技盤の一例を示す正面図である。
【図2】ぱちんこ遊技機の制御部の内部構成を示すブロック図である。
【図3】主制御基板および周辺基板の機能的構成を示すブロック図である。
【図4】主制御部による演出制御部の制御処理の手順を示すフローチャートである。
【図5】主制御部による演出制御部の制御処理の手順を示すフローチャートである。
【図6】大当たり関連コマンドの送信タイミングを示すタイムチャートである。
【図7】演出制御部による図柄変動処理の手順を示すフローチャートである。
【図8】演出制御部による大当たり時の処理の手順を示すフローチャートである。
【図9】ランプ制御部による図柄変動時のランプ制御処理の手順を示すフローチャートである。
【図10】主制御部が出力する制御信号のデータフォーマットを模式的に示す説明図である。
【図11】主制御部における認証データ(検査値)の生成方法を模式的に示す説明図である。
【図12】主制御部201による制御信号の送信処理の手順を示すフローチャートである。
【図13】周辺部による制御信号の受信処理の手順を示すフローチャートである。
【図14】制御部間のデータの流れの一例を示すシーケンス図である。
【図15】従来技術による不正防止技術の概要を示す説明図である。
【図16】不正な制御基板の挿入例を示す説明図である。
【発明を実施するための形態】
【0046】
(実施の形態)
以下に添付図面を参照して、この発明にかかる電子機器の機能を有したぱちんこ遊技機と、このぱちんこ遊技機に搭載されている複数の基板間(主制御基板および周辺基板)の制御信号に含まれる制御コマンドを認証する認証方法および認証プログラムの好適な実施の形態を詳細に説明する。
【0047】
(ぱちんこ遊技機の基本構成)
図1は、本発明のぱちんこ遊技機の遊技盤の一例を示す正面図である。遊技盤101の下部位置に配置された発射部(図2参照)の駆動によって発射された遊技球は、レール102a,102b間を上昇して遊技盤101の上部位置に達した後、遊技領域103内を落下する。遊技領域103には、図示を省略する複数の釘が設けられ、遊技球を各種の方向に向けて落下させるとともに、落下途中の位置には、遊技球の落下方向を変化させる風車や、入賞口が配設されている。
【0048】
遊技盤101の遊技領域103の中央部分には、図柄表示部104が配置されている。図柄表示部104としては、たとえば液晶表示器(LCD)が用いられる。なお、図柄表示部104としては、LCDに限らずCRTなどを用いることもできる。図柄表示部104の下方には、始動入賞させるための始動入賞口105が配設されている。図柄表示部104の左右には、それぞれ入賞ゲート106が配設されている。
【0049】
入賞ゲート106は、遊技球の通過を検出し、始動入賞口105を一定時間だけ開放させる抽選をおこなうために設けられる。図柄表示部104の側部や下方などには普通入賞口107が配設されている。普通入賞口107に遊技球が入賞すると、普通入賞時の賞球数(たとえば10個)の払い出しをおこなう。遊技領域103の最下部には、どの入賞口にも入賞しなかった遊技球を回収する回収口108が設けられている。
【0050】
上述した図柄表示部104は、特定の入賞口に遊技球が入賞したとき(始動入賞時)に、複数の図柄の表示の変動を開始させ、所定時間後に図柄が停止する。この停止時に特定図柄(たとえば「777」)に揃ったとき、大当たり状態となる。大当たり状態のとき、下方に位置する大入賞口109が一定の期間開放を所定ラウンド(たとえば15ラウンド)繰り返し、入賞した遊技球に対応した賞球数を払い出す。
【0051】
図2は、ぱちんこ遊技機の制御部の内部構成を示すブロック図である。制御部200は、複数の制御部により構成されている。図示の例では、主制御部201と、周辺部(演出制御部202、賞球制御部203)とを有する。主制御部201は、ぱちんこ遊技機の遊技にかかる基本動作を制御する。演出制御部202は、遊技中の演出動作を制御する。賞球制御部203は、払い出す賞球数を制御する。
【0052】
主制御部201は、ROM212に記憶されたプログラムデータに基づき、遊技内容の進行に伴う基本処理を実行するCPU211と、CPU211の演算処理時におけるデータのワークエリアとして機能するRAM213、各検出部221〜224から各種データを受信するとともに、演出制御部202および賞球制御部203への各種データの送信をおこなうインタフェース(I/F)214などを備えて構成される。主制御部201は、たとえばいわゆる主制御基板によってその機能を実現する。
【0053】
この主制御部201の入力側には、始動入賞口105に入賞した入賞球を検出する始動入賞口検出部221と、入賞ゲート106を通過した遊技球を検出するゲート検出部222と、普通入賞口107に入賞した遊技球を検出する普通入賞口検出部223と、大入賞口109に入賞した入賞球を検出する大入賞口検出部224とがI/F214を介して接続されている。これらの検出部としては、近接スイッチなどを用いて構成できる。
【0054】
この主制御部201の出力側には、大入賞口開閉部231が接続され、この大入賞口開閉部231の開閉を制御する。大入賞口開閉部231は、大当たり時に大入賞口109を一定期間開放する機能であり、ソレノイドなどを用いて構成される。この大当たりは、生成した乱数(大当たり判定用乱数)に基づいて所定の確率(たとえば300分の1など)で発生するようあらかじめプログラムされている。
【0055】
演出制御部202は、主制御部201から各種の制御コマンドを含む制御信号を受け取り、このコマンドに基づいてROM242に記憶されたプログラムデータを実行して遊技中における演出制御をおこなう。この演出制御部202は、演出処理を実行するCPU241と、CPU241の演算処理時におけるデータのワークエリアとして機能するRAM243、図柄表示部104に表示させる画像データを書き込むVRAM244、主制御部201からの各種データの受信およびランプ制御部251や音声制御部252への各種データの送信をおこなうインタフェース(I/F)245などを備えて構成される。演出制御部202は、たとえばいわゆる演出基板によってその機能を実現する。また、演出制御部202の出力側には、上述した図柄表示部(LCD)104、ランプ制御部251、音声制御部252がI/F245を介して接続されている。ランプ制御部251はランプ261の点灯を制御する。また、音声制御部252はスピーカ262から出力される音声を制御する。
【0056】
賞球制御部203は、主制御部201から各種の制御コマンドを含む制御信号を受け取り、このコマンドに基づいてROM282に記憶されたプログラムデータを実行して賞球制御をおこなう。この賞球制御部203は、賞球制御の処理を実行するCPU281と、CPU281の演算処理時におけるデータのワークエリアとして機能するRAM283、主制御部201からの各種データの受信および発射部292との各種データの送受信をおこなうインタフェース(I/F)284などを備えて構成される。賞球制御部203は、たとえばいわゆる賞球基板によってその機能を実現する。
【0057】
賞球制御部203は、接続される払出部291に対して入賞時の賞球数を払い出す制御をおこなう。また、発射部292に対する遊技球の発射の操作を検出し、遊技球の発射を制御する。払出部291は、遊技球の貯留部から所定数を払い出すためのモータなどからなる。賞球制御部203は、この払出部291に対して、各入賞口(始動入賞口105、普通入賞口107、大入賞口109)に入賞した遊技球に対応した賞球数を払い出す制御をおこなう。
【0058】
発射部292は、遊技のための遊技球を発射するものであり、遊技者による遊技操作を検出するセンサと、遊技球を発射させるソレノイドなどを備える。賞球制御部203は、発射部292のセンサにより遊技操作を検出すると、検出された遊技操作に対応してソレノイドなどを駆動させて遊技球を間欠的に発射させ、遊技盤101の遊技領域103に遊技球を送り出す。
【0059】
上記構成の主制御部201と、演出制御部202と、賞球制御部203は、それぞれ異なるプリント基板(主制御基板、演出基板、賞球基板)に設けられる。これに限らず、たとえば、賞球制御部203は、主制御部201と同一のプリント基板上に設けることもできる。
【0060】
(主制御基板および周辺基板の機能的構成)
図3は、主制御基板(主制御部)および周辺基板(演出制御部、賞球制御部)の機能的構成を示すブロック図である。まず、主制御部201としての機能を有する主制御基板310の機能的構成について説明する。図3に示すように、主制御基板310は、周辺基板320を動作させるための制御コマンドを送信する機能部であり、データ記憶部311、決定部312、認証値生成部313、付加部314、送信部315によって構成される。
【0061】
データ記憶部311は、所定のデータを記憶する。所定のデータとは、たとえば主制御基板310で用いられるプログラムデータである。データ記憶部311としては、たとえば、主制御部201のROM212(図2参照)の一部を用いることができる。
【0062】
決定部312は、主制御部201を認証するための認証データ(認証値)の生成に用いるデータの量(以下、「データ量」という)を決定する。決定部312は、たとえば、乱数生成回路や乱数生成プログラムによって生成された値をデータ量として決定したり、主制御基板310の他の処理において生成される値を所定のタイミングで参照し、その値をデータ量として決定する。
【0063】
認証値生成部313は、データ記憶部311内のデータを、決定部312によって決定されたデータ量に分割し、分割したデータに対してそれぞれ結合法則を満たす2項演算をおこなって、分割したデータの数(以下、「分割数」という)分の認証値を生成する。結合法則を満たす2項演算とは、たとえば加算または排他的論理和演算である。認証値生成部313は、分割されたデータのそれぞれに対して加算または排他的論理和演算をおこなって、分割数分の認証値データを生成する。認証値生成部313は、認証データを生成する際、データ記憶部311に記憶された全てのデータを、重複なく用いるようにする。具体的には、たとえば、決定部312によって決定された量のデータを、データ記憶部311内のアドレスの先頭から順番に読み出して、認証データを生成する。
【0064】
認証値生成部313は、生成した認証値を所定の暗号化方法で暗号化してもよい。この場合、分割数に基づいて認証値の暗号化方法を変更してもよい。具体的には、たとえば、分割数が奇数の場合は今回用いた暗号化方法と異なる暗号化方法に変更し、偶数の場合には今回用いた暗号化方法と同じ暗号化方法で暗号化する、などの方法がある。また、認証値生成部313は、後述する制御信号内の制御コマンドを用いて認証値を生成するようにしてもよい。
【0065】
付加部314は、周辺基板に送信する制御コマンドが所定の制御コマンドである場合、認証値生成部313によって生成された認証データを制御コマンドに付加して、制御信号を生成する(図10参照)。後述するように、主制御部201が送信する制御コマンドは多くの種類のコマンドがある。たとえば大当たり関連コマンドを例にすると、「大当たりリーチコマンド」や「大当たり開始コマンド」、「大当たりコマンド」、「大当たり終了コマンド」のように複数の種類のコマンドが存在する。付加部314は、分割数に基づいて認証データを付加する制御コマンドの種類を変更する。付加部314は、たとえば以下のような方法で、認証データを付加する制御コマンドの種類を変更する。
【0066】
(方法1)
大当たりリーチコマンド→大当たり開始コマンド→大当たりコマンド→大当たり終了コマンド・・のように、認証データを付加する制御コマンドの順番を決めておき、分割数が所定の数の場合には、次のコマンドに変更する。所定の数をどのような数とするかは任意であるが、たとえば、「奇数」「3の倍数」などにすることができる。
【0067】
(方法2)
各コマンドに対して所定の数を関連づけておき、分割数が所定の数である場合、その数と関連づけられたコマンドに認証データを付加する。たとえば、2=大当たりリーチコマンド、3=大当たり開始コマンド、4=大当たりコマンド、5=大当たり終了コマンド・・のように制御コマンドと数とを関連づけておく。そして、たとえば分割数が2の場合は大当たりリーチコマンドに認証データを付加し、分割数が3の場合は大当たり開始コマンドに認証データを付加する。
【0068】
コマンドに関連づける数は複数であってもよい。たとえば、2または10=大当たりリーチコマンド、3または11=大当たり開始コマンド・・のように、1つの制御コマンドに対して複数の数を関連づけてもよい。また、たとえば、2の倍数=大当たりリーチコマンド、3の倍数=大当たり開始コマンド、5の倍数=大当たりコマンド・・のような関連づけをおこなってもよい。この場合、分割数が公倍数である場合に、優先して認証データを付加する制御コマンドをあらかじめ決めておく。
【0069】
送信部315は、制御コマンドを含む制御信号を周辺基板に送信する。送信部315は、今回送信するコマンドが所定のコマンドである場合は、認証データが付加された制御コマンドを含む制御信号を周辺基板に送信する。また、送信部315は、今回送信するコマンドが所定のコマンドでない場合は、認証データが付加されていない制御コマンドを含む制御信号を周辺基板に送信する。
【0070】
つぎに、演出制御部202や賞球制御部203などの周辺部としての機能を有する周辺基板320の機能的構成について説明する。図3に示すように、周辺基板320は、受信部321および認証部322によって構成される。
【0071】
受信部321は、主制御基板310によって送信された分割数分の認証値を受信する。受信部321は、たとえば、認証値が付加された制御信号を受信することによって、認証値を受信する。
【0072】
認証部322は、受信部321によって受信された分割数分の認証値に対して、認証値生成部313が用いるのと同じ2項演算をおこない、当該演算結果と期待値とが一致するか否かに基づいて主制御基板310を認証する。認証部322による認証に用いられる期待値は、データ記憶部311内の全てのデータに対して、認証値生成部313が用いるのと同じ2項演算をおこなった値である。この2項演算は結合法則を満たすため、データ記憶部311内の全てのデータに対して演算をおこなった値と、分割したデータから生成された認証値に対して演算をおこなった値とは一致するはずである。これにより、認証部322は、主制御基板310の正当性を認証する。
【0073】
認証部322は、主制御基板310に対する認証が成立した際に選択した2項演算の対象となった認証値の数に基づいて、認証データが付加された前記制御コマンドの種類を識別する。主制御基板310に対する認証が成立した際に選択した2項演算の対象となった認証値の数は、分割数と一致する。このため、主制御基板310の認証値生成部313と認証部322とにおいて、認証データを付加する制御コマンドの変更ルールを共有することにより、認証データを付加する制御コマンドの種類を変更させながら認証処理を継続することができる。
【0074】
分割数は主制御基板310のみが知る値なので、不正解析者は、認証データが付加される制御コマンドの種類の変更タイミングを知ることができない。これにより、主制御基板310と周辺基板320との間に不正な制御基板が挿入されたことを検知することができ、不正な制御基板による不正な処理を防止することができる。
【0075】
認証部322は、認証データが暗号化されている場合、認証値生成部313による暗号化方法に対応する復号化方法で認証データを復号化する。認証値生成部313による暗号化方法が分割数に基づいて変更される場合、認証部322は、主制御基板310の個体に対する認証が成立した際に2項演算の対象となった認証データの数に基づいて復号化方法を変更する。
【0076】
(ぱちんこ遊技機の基本動作)
上記構成によるぱちんこ遊技機の基本動作の一例を説明する。主制御部201は、各入賞口に対する遊技球の入賞状況を制御コマンドとして賞球制御部203に出力する。賞球制御部203は、主制御部201から出力された制御コマンドに応じて、入賞状況に対応した賞球数の払い出しをおこなう。
【0077】
また、主制御部201は、始動入賞口105に遊技球が入賞するごとに、対応する制御コマンドを演出制御部202に出力し、演出制御部202は、図柄表示部104の図柄を変動表示させ、停止させることを繰り返す。大当たりの発生が決定しているときには、対応する制御コマンドを演出制御部202に出力し、演出制御部202は、所定の図柄で揃えて停止させる。このとき同時に、大入賞口109を開放する制御をおこなう。演出制御部202は、大当たり発生期間中、および大当たり発生までの間のリーチ時や、リーチ予告時などには、図柄表示部104に対して、図柄の変動表示に加えて各種の演出表示をおこなう。このほか、各種役物に対して特定の駆動をおこなったり、ランプ261の表示状態を変更するなどの演出をおこなう。
【0078】
そして、大当たり発生時には、大入賞口109が複数回開放される。1回の開放が1ラウンドとして、たとえば15回のラウンドが繰り返し実行される。1ラウンドの期間は、遊技球がたとえば10個入賞したとき、あるいは所定期間(たとえば30秒)とされている。この際、賞球制御部203は、大入賞口109に対する遊技球1個の入賞あたり、たとえば15個の賞球数で払い出しをおこなう。大当たり終了後は、この大当たり状態が解除され、通常の遊技状態に復帰する。
【0079】
(各制御部による処理の詳細)
つぎに、各制御部がおこなう各種処理の詳細について説明する。はじめに、主制御部201による演出制御部202の制御処理について説明する。図4および図5は、主制御部による演出制御部の制御処理の手順を示すフローチャートである。なお、図4〜図9においては、演出制御部202の制御処理の手順を明確にするため、補正データ、認証データおよび付随データについては考慮しないものとする。すなわち、図4〜図9の説明において、「コマンドを送信する」とは、「当該コマンドを示すデータ(制御コマンドデータ)を含む制御信号を送信する」との意味であり、たとえば認証データや付随データ(図10参照)の有無は考慮しないものとする。
【0080】
図4および図5のフローチャートにおいて、主制御部201は、まず、ぱちんこ遊技機の電源がオンにされるまで待機する(ステップS401:Noのループ)。ぱちんこ遊技機の電源がオンにされると(ステップS401:Yes)、主制御部201は、演出制御部202や賞球制御部203などの周辺部に対して電源オンコマンドを送信する(ステップS402)。電源オンコマンドが送信されると、演出制御部202は、ランプ制御部251や音声制御部252、図柄表示部104のそれぞれに対して電源オン時の演出用の制御コマンド(具体的には、ランプの点灯や音声の出力、デモ画面の表示などを指示する制御コマンド)を送信する。
【0081】
つぎに、主制御部201は、ROM212またはRAM213に記録されている未抽選入賞回数データを参照して、未抽選入賞回数が0回か否かを判断する(ステップS403)。未抽選入賞回数とは、始動入賞口に検出された入賞球の数(入賞回数)から、入賞球に対応する抽選がおこなわれた回数(既抽選回数)を減じた数である。未抽選入賞回数が0回の場合(ステップS403:Yes)、主制御部201は、デモが開始されてから経過した時間を計測する(ステップS404)。
【0082】
デモが開始されてから所定時間が経過すると(ステップS405:Yes)、主制御部201は、演出制御部202に客待ちデモコマンドを送信して(ステップS406)、ステップS407に移行する。デモが開始されてから所定時間が経過しない場合は(ステップS405:No)、そのままステップS407に移行する。ステップS406で客待ちデモコマンドが送信されると、演出制御部202は、ランプ制御部251や音声制御部252、図柄表示部104に対して客待ちデモ用の制御信号を送信する。また、ステップS403で、未抽選入賞回数が0回ではない場合は(ステップS403:No)、ステップS410に移行する。
【0083】
つぎに、主制御部201は、始動入賞口検出部221によって始動入賞口への入賞球が検出されたか否か判断する(ステップS407)。始動入賞口への入賞球が検出されると(ステップS407:Yes)、主制御部201は、デモが開始されてから計測していた時間をクリアして(ステップS408)、未抽選入賞回数に1を加える(ステップS409)。つづいて、主制御部201は、大当たり判定用乱数を取得して(ステップS410)、未抽選入賞回数から1を減算し(ステップS411)、図5のステップS412に移行する。また、ステップS407で、始動入賞口への入賞球が検出されない場合は(ステップS407:No)、ステップS404に戻り、以降の処理を継続する。
【0084】
つぎに、主制御部201は、ステップS410で取得した大当たり判定用乱数が、あらかじめ定められた大当たり乱数であるか否かを判断する(ステップS412)。大当たり判定用乱数が大当たり乱数である場合(ステップS412:Yes)、主制御部201は、演出制御部202に大当たりリーチコマンド(図柄変動コマンド)を送信する(ステップS413)。主制御部201は、図柄変動時間が経過するまで待機して(ステップS414:Noのループ)、図柄変動時間が経過すると(ステップS414:Yes)、演出制御部202に図柄停止コマンドを送信する(ステップS415)。
【0085】
つぎに、主制御部201は、演出制御部202に大当たり開始コマンドを送信し(ステップS416)、つづけて、大当たり中の各ラウンドに対応するコマンド(大当たりコマンド)を順次送信する(ステップS417)。そして、主制御部201は、全てのラウンドの大当たりコマンドの送信が終わると、大当たり終了コマンドを送信して(ステップS418)、ステップS422に移行する。
【0086】
一方、ステップS412で、大当たり判定用乱数が大当たり乱数でなかった場合(ステップS412:No)、主制御部201は、演出制御部202にはずれリーチコマンド(図柄変動コマンド)を送信する(ステップS419)。主制御部201は、図柄変動時間が経過するまで待機して(ステップS420:Noのループ)、図柄変動時間が経過すると(ステップS420:Yes)、演出制御部202に図柄停止コマンドを送信する(ステップS421)。
【0087】
主制御部201は、ぱちんこ遊技機の電源がオフにされるまでは(ステップS422:No)、図4のステップS403に戻り、以降の処理を繰り返す。そして、ぱちんこ遊技機の電源がオフにされると(ステップS422:Yes)、主制御部201は、演出制御部202に終了処理コマンドを送信して(ステップS423)、本フローチャートによる処理を終了する。
【0088】
図6は、大当たり関連コマンド(大当たりリーチコマンド、大当たり開始コマンド、大当たりコマンド、大当たり終了コマンド)の送信タイミングを示すタイムチャートである。大当たりリーチコマンドは、実際に大当たりが発生するよりも頻繁に、かつランダムに送信される。また、大当たり開始コマンドは、実際に大当たりが発生した場合に、大当たり状態に移行する際に1度だけ送信される。また、大当たりコマンドは、大当たり状態に移行した後、ラウンドごとに継続的に送信される。また、大当たり終了コマンドは、大当たり状態の全てのラウンドが終了し、通常の状態に移行する際に1度だけ送信される。
【0089】
つぎに、演出制御部202による処理について説明する。以下では、図柄変動時(大当たりリーチコマンド(図5のステップS413参照)または、はずれリーチコマンド(図5のステップS419参照)を受信した場合)および、大当たり時の演出制御部202の処理について説明する。
【0090】
図7は、演出制御部による図柄変動処理の手順を示すフローチャートである。図7のフローチャートにおいて、演出制御部202は、まず、図柄変動コマンドである大当たりリーチコマンド(図5のステップS413参照)、または、はずれリーチコマンド(図5のステップS419参照)を受信するまで待機する(ステップS701:Noのループ)。図柄変動コマンドを受信すると(ステップS701:Yes)、演出制御部202は、変動演出選択用の乱数を取得して(ステップS702)、取得した乱数に基づいて変動演出の種類を選択する(ステップS703)。そして、演出制御部202は、ランプ制御部251や音声制御部252に対して変動演出別の演出開始コマンドを送信する(ステップS704)。
【0091】
演出制御部202は、変動演出の演出時間が経過したか否かや(ステップS705)、主制御部201から図柄停止コマンド(図5のステップS415,S421参照)を受信したか否かを判断する(ステップS706)。演出時間が経過した場合(ステップS705:Yes)、または、図柄停止コマンドを受信した場合(ステップS706:Yes)、演出制御部202は、ランプ制御部251や音声制御部252に対して演出停止コマンドを送信して(ステップS707)、本フローチャートによる処理を終了する。また、演出時間が経過せず(ステップS705:No)、かつ図柄停止コマンドを受信しない場合は(ステップS706:No)、ステップS705に戻り、以降の処理を繰り返す。
【0092】
つぎに、演出制御部202の大当たり時の処理について説明する。図8は、演出制御部による大当たり時の処理の手順を示すフローチャートである。図8のフローチャートにおいて、演出制御部202は、まず、主制御部201から大当たり開始コマンド(図5のステップS416参照)を受信するまで待機する(ステップS801:Noのループ)。大当たり開始コマンドを受信すると(ステップS801:Yes)、演出制御部202は、ランプ制御部251や音声制御部252に対して大当たり開始処理コマンドを送信する(ステップS802)。
【0093】
つぎに、演出制御部202は、主制御部201からラウンド別の大当たりコマンド(図5のステップS417参照)を受信するまで待機する(ステップS803:Noのループ)。大当たりコマンドを受信すると(ステップS803:Yes)、演出制御部202は、ランプ制御部251や音声制御部252に対して受信したラウンド別の大当たりコマンドに対応するラウンド別処理コマンドを送信する(ステップS804)。
【0094】
つづいて、演出制御部202は、主制御部201から大当たり終了コマンド(図5のステップS418参照)を受信するまで待機する(ステップS805:Noのループ)。大当たり終了コマンドを受信すると(ステップS805:Yes)、演出制御部202は、ランプ制御部251や音声制御部252に対して大当たり終了処理コマンドを送信して(ステップS806)、本フローチャートによる処理を終了する。
【0095】
つづいて、ランプ制御部251によるランプ制御処理について説明する。ここでは、演出制御部202から図柄変動コマンドを受信した場合(図柄変動時)の処理について説明する。図9は、ランプ制御部による図柄変動時のランプ制御処理の手順を示すフローチャートである。図9のフローチャートにおいて、ランプ制御部251は、まず、演出制御部202から演出開始コマンドを受信するまで待機する(ステップS901:Noのループ)。
【0096】
演出制御部202から演出開始コマンドを受信すると(ステップS901:Yes)、ランプ制御部251は、コマンド別に用意されているデータを読み出して(ステップS902)、コマンド別の選択ルーチンを実行し(ステップS903)、ランプデータをセットする(ステップS904)。そして、ランプ制御部251は、ランプ261に対してランプデータを出力する(ステップS905)。ランプ制御部251から出力されたランプデータに基づいて、ランプ261は点灯または消灯する。
【0097】
ランプ制御部251は、演出制御部202から演出停止コマンドを受信するまでは(ステップS906:No)、ステップS905に戻り、ランプデータの出力を継続する。演出停止コマンドを受信すると(ステップS906:Yes)、ランプ制御部251は、ランプデータの出力を停止して(ステップS907)、本フローチャートによる処理を終了する。
【0098】
なお、図9にはランプ制御部251の処理を記載したが、音声制御部252による音声制御も、図9の処理とほぼ同様である。音声制御部252による音声制御処理は、図9の処理において、ステップS904,S905,S907の「ランプデータ」を「音声データ」と読み替えればよい。
【0099】
このように、演出制御部202や賞球制御部203などの周辺部は、主制御部201によって出力された制御コマンドに基づいて各種の処理をおこなう。一方、たとえば、主制御部201と周辺部との間に不正な制御基板が接続された場合(図15参照)などのように、制御コマンドの出力元が正規の主制御部201ではない場合、周辺部は不正な制御基板から出力された不正な制御コマンドによって不正な動作をおこなってしまう。
【0100】
これを防止するため、本実施の形態にかかるぱちんこ遊技機では、主制御部201と周辺部との間で認証処理をおこなう。より詳細には、周辺部を認証者、主制御部201を被認証者とした認証処理をおこない、主制御部201から送信される制御信号の正当性を認証する。この認証処理に用いる認証値(認証データ)は、主制御部201に記録されているプログラムデータを任意に分割したデータを元に生成されている。この認証処理によって、主制御部201が不正な制御基板に交換されたり、主制御部201と周辺部との間に不正な制御基板が取り付けられるなどの不正を検知して、ぱちんこ遊技機への不正を防止することができる。
【0101】
本実施の形態では、認証データを制御コマンドデータに付加して送信する。認証データを制御コマンドデータに付加することによって、認証データ単体で送信する場合と比較して、主制御部201と周辺部との間の通信負荷の増大を抑えることができる。また、認証データを制御コマンドデータに付加することによって、認証データを単体で送信する場合と比較して、通信データ中から認証データが抽出され、解析されてしまう可能性を低減することができる。以下に認証データと制御コマンドデータを含む制御信号のフォーマットについて説明する。
について説明する。
【0102】
(制御信号のデータフォーマット)
図10は、主制御部が出力する制御信号のデータフォーマットを模式的に示す説明図である。図10には、主制御部201が出力する通常の制御信号1010および認証データ付制御信号1020が示されている。
【0103】
通常の制御信号1010は、制御コマンドデータ1001および付随データ1002を含んでいる。制御コマンドデータ1001は、たとえばリーチコマンドや大当たり開始コマンド、ラウンド別コマンドなどの各コマンド固有のデータである。また、付随データ1002は、制御コマンドデータ1001に付随するデータであり、たとえば、入賞した遊技球の数など制御コマンドデータ1001に基づく処理に必要なデータである。
【0104】
また、認証データ付制御信号1020は、制御コマンドデータ1001および付随データ1002に加え、認証データ1003を含んでいる。認証データ1003は、制御コマンドデータ1001および付随データ1002が正規の主制御部201から出力されたものであることを、周辺部が認証するためのデータである。認証データ1003は、具体的には以下のように生成された値である。
【0105】
(認証データ(検査値)の生成方法)
図11は、主制御部における認証データ(検査値)の生成方法を模式的に示す説明図である。認証データ1003は、主制御部201のROM212などに記録されたデータを用いて生成する。より詳細には、ROM212の所定の領域に格納されたデータを、任意のデータ量に分割した上で、分割した領域にそれぞれ格納されたデータに対して結合法則を満たす2項演算(半群演算)をおこなって検査値を算出する。半群演算としては、たとえば、加算や排他的論理和演算などが挙げられる。そして、検査値に対して所定の演算(たとえば、暗号化処理)をおこなって得られた値を認証データとする。なお、検査値を暗号化するか否かは任意であるが、不正防止の観点から暗号化することが望ましい。
【0106】
主制御部201は、たとえば、1つの検査値を生成するごとに、その生成に用いるデータの量(データ量)を決定する。この場合、主制御部201は、ROM212の所定領域内の全てのデータを用いた検査値の生成が完了するまで、データ量の決定と検査値の生成とをくり返す。このため、いくつの検査値が生成されるか(すなわち、分割数がいくつになるか)は、ROM212の所定領域内の全てのデータを用いた検査値の生成が完了するまでわからない。
【0107】
なお、1つの検査値を生成するごとにデータ量を決定するのではなく、あらかじめ検査値の生成に用いるデータの量を決定しておいてもよい。また、全ての検査値の生成に用いるデータ量を等しくするようにしてもよい。この場合、データ量を決定した時点で分割数が予測可能となる。
【0108】
検査値を算出するために用いるデータの種類は任意であるが、たとえば、主制御部201のROM212に記録されたプログラムデータ(命令コードや固定データ)を用いることができる。主制御部201のROM212に記録されたプログラムデータを用いることによって、プログラムコードの不正な書き換えや、主制御部201のROM212の不正な取り替えなどを検出することができる。
【0109】
たとえば、図11に示すプログラムデータ格納部1100には、12個のデータ(0x01〜0x09,0x0A〜0x0C、1つのデータのデータ量は1バイト)が格納されている。検査値の生成に用いるデータ量を4バイト、3バイト、5バイトとする場合、プログラムデータ格納部1100は、たとえば4バイト分のデータを含む第1ブロック1100a、3バイト分のデータを含む第2ブロック1100b、5バイト分のデータを含む第3ブロック1100c、の3つに分割できる。すなわち、分割数は3となる。主制御部201は、これらの各ブロックに格納されたデータに対してそれぞれ半群演算をおこなって検査値を算出する。なお、上述したデータ量は例示である。
【0110】
たとえば、半群演算として加算を用いる方法を方式Aとすると、第1ブロック1100aに格納された4バイト分のデータ0x01,0x02,0x03,0x04を加算して第1検査値0x0Aが得られる。同様に、第2ブロック1100bに格納された3バイト分のデータ0x05,0x06,0x07を加算して第2検査値0x12が、第3ブロック1100cに格納された5バイト分のデータ0x08,0x09,0x0A,0x0B,0x0Cを加算して第3検査値0x32がそれぞれ得られる。
【0111】
また、たとえば、半群演算として排他的論理和演算を用いる方法を方式Bとすると、第1ブロック1100aに格納された4バイト分のデータ0x01,0x02,0x03,0x04に排他的論理和演算をおこない第1検査値0x04が得られる。同様に、第2ブロック1100bに格納された3バイト分のデータ0x05,0x06,0x07に排他的論理和演算をおこない第2検査値0x04が、第3ブロック1100cに格納された5バイト分のデータ0x08,0x09,0x0A,0x0B,0x0Cに排他的論理和演算をおこない第3検査値0x0Cがそれぞれ得られる。
【0112】
そして、得られた検査値に対して暗号化処理をおこなって認証データとする。この暗号化処理の際、検査値とともに、同時に送信される制御コマンドデータ1001や付随データ1002に関するデータを含めて暗号化処理をおこなってもよい。制御コマンドデータ1001や付随データ1002に関するデータとは、制御コマンドデータ1001や付随データ1002そのものや、制御コマンドデータ1001や付随データ1002に対してハッシュ関数による演算やパリティチェック、巡回冗長検査(Cyclic Redundancy Check:CRC)、チェックサムなどの演算をおこなって得られた値などである。
【0113】
一般に、不正な制御基板は、正規の主制御部201と異なる制御コマンドを送信することによって、周辺部に不正な動作をおこなわせようとする。このため、制御コマンドデータ1001や付随データ1002を用いて認証データ1003を生成すれば、不正な制御基板によって認証データ1003を再利用された場合であっても、認証データ1003と制御コマンドの整合がとれず、不正を検知することができる。
【0114】
一方、認証者である周辺部は、プログラムデータ格納部1100に格納されたデータ全体に対して半群演算をおこなった値を期待値として保持している。たとえば、方式Aの場合の期待値は0x01〜0x0Cの和である0x4Eとなる。また、方式Bの場合の期待値は0x01〜0x0Cの排他的論理和である0x0Cとなる。周辺部では、主制御部201による検査値生成方法の数と同じ数の期待値を保持している。
【0115】
周辺部は、受信した認証データ付制御信号1020から検査値を取り出して、検査値に対して半群演算をおこなった値を期待値と照合する。検査値は半群演算を用いて生成されているので、分割したプログラムデータから生成した検査値の全てに対して同じ半群演算をおこなえば、プログラムデータ全体に対して半群演算をおこなった期待値と一致するはずである。検査値に対して半群演算をおこなった値と期待値とが一致すると、周辺部は主制御部201を認証する。
【0116】
なお、周辺部における半群演算処理は、分割したデータから生成した検査値を結合する処理に対応するため、「結合処理」と呼ぶ。また、認証が成立した際の結合処理に用いた検査値の数を「結合数」という。周辺部における結合数と主制御部201における分割数とは同じ数となる。
【0117】
ここで、主制御部201は、認証データを付加する制御コマンドの種類を、分割数を用いて変更する。また、周辺部は、認証データが付加されている制御コマンドの種類を、結合数を用いて識別する。主制御部201は、たとえば、分割数および結合数が奇数の場合には認証データを付加する制御コマンドの種類を変更し、分割数および結合数が偶数の場合にはそれまでと同じ種類の制御コマンドに認証データを付加する。分割数は主制御部201のみが知る値であり、周辺部は認証が成立した時に初めてその値を結合数として知ることができる。よって、不正解析者は分割数および結合数を知ることができず、認証データが付加されている制御コマンドの種類の変更タイミングを知ることができない。これにより、不正解析者によって認証データが不正に盗取されるのを防止することができる。以下、認証データを付加する制御コマンドを「認証データ付加コマンド」という。
【0118】
また、制御コマンドデータ1001、付随データ1002、認証データ1003の並び方は、図10に示す順番に限らず、たとえば認証データ1003を制御信号の先頭にしたり、制御コマンドデータ1001と付随データ1002との間に認証データ1003を挿入してもよい。
【0119】
(制御信号の送受信処理)
つづいて、主制御部201と周辺部との間でおこなう制御信号の送受信処理について説明する。図12は、主制御部201による制御信号の送信処理の手順を示すフローチャートである。本フローチャートでは、検査値(認証データ)を生成するごとに、データ量を決定する場合の処理について説明する。主制御部201は、通常の制御信号の送信をおこないながら(ステップS1201)、認証データの送信タイミングになるまで待機する(ステップS1202:No)。認証データの送信タイミングになると(ステップS1202:Yes)、主制御部201は、認証データを送信するため、検査値の生成に用いるプログラムデータのデータ量を決定する(ステップS1203)。
【0120】
つぎに、主制御部201は、たとえば、プログラムデータ格納部1100の先頭から、ステップS1203で決定した量のプログラムデータを読み出し、読み出したデータに対して半群演算をおこなって検査値を算出し(ステップS1204)、検査値に対して暗号化処理をおこなって認証データを生成する(ステップS1205)。
【0121】
プログラムデータ格納部1100内の全てのデータを用いて検査値を生成するまで(ステップS1206:No)、主制御部201は、ステップS1203に戻り、以降の処理をくり返す。ここで、「プログラムデータ格納部1100内の全てのデータを用いて」とは、プログラムデータ格納部1100内のデータをもれなく、かつ重複なく用いて、という意味である。2つ目以降の検査値を生成する場合、主制御部201は、たとえば、前の検査値生成に用いたプログラムデータの次の領域に書き込まれたデータを、ステップS1203で決定した量だけ読み出して検査値を生成する。なお、最後の検査値を生成する際は、ステップS1203で決定したデータ量に足りない可能性があるが、主制御部201は、取得できる分のプログラムデータのみを用いて検査値を生成する。なお、ステップS1203〜S1205の処理は、認証データの送信タイミングとなる前にあらかじめおこなっておいてもよい。
【0122】
プログラムデータ格納部1100内の全てのデータを用いて検査値を生成すると(ステップS1206:Yes)、主制御部201は、認証データ付加コマンドの送信タイミングとなるまで(ステップS1207:No)、通常の制御信号の送信を継続する(ステップS1208)。認証データ付加コマンドの送信タイミングになると(ステップS1207:Yes)、主制御部201は、制御コマンドに認証データを付加し(ステップS1209)、周辺部へと送信する(ステップS1210)。生成した全ての認証データを送信するまで(ステップS1211:No)、主制御部201は、ステップS1207に戻り、以降の処理を継続する。
【0123】
認証データを全て送信すると(ステップS1211:Yes)、主制御部201は、生成した認証データ(検査値)の数、すなわち分割数が所定の値か否かを判断する(ステップS1212)。所定の値とは、主制御部201と周辺部との間で認証データ付加コマンドの種類を変更すると取り決めた値であり、たとえば奇数(または偶数)や所定の数の倍数などである。分割数が所定の値である場合(ステップS1212:Yes)、主制御部201は、認証データ付加コマンドの種類を変更して(ステップS1213)、本フローチャートによる処理を終了する。一方、分割数が所定の値でない場合は(ステップS1212:No)、認証データ付加コマンドの種類を変更せずに、そのまま本フローチャートによる処理を終了する。
【0124】
つぎに、周辺部による制御信号の受信処理について説明する。図13は、周辺部による制御信号の受信処理の手順を示すフローチャートである。図13のフローチャートにおいて、周辺部は、まず、主制御部201から制御信号を受信するまで待機する(ステップS1301:Noのループ)。主制御部201から制御信号を受信すると(ステップS1301:Yes)、周辺部は、受信した制御信号に認証データ1003が含まれているか否かを判断する(ステップS1302)。具体的には、周辺部は、制御信号に含まれている制御コマンドが認証データ付加コマンドであるか否かを判断する。なお、制御信号に認証データ1003が含まれているか否かは、たとえば、制御信号のデータ量が通常の制御信号よりも多いか否かや、認証データ1003が含まれていることを示すフラグが制御信号に立てられているか否かによって判断してもよい。
【0125】
制御信号に認証データ1003が含まれている場合(ステップS1302:Yes)、周辺部は、制御信号から認証データ1003を抽出し、さらに復号化処理をおこなって検査値を取得する(ステップS1303)。周辺部は、取得した検査値を検査値用メモリに格納して(ステップS1304)、検査値用メモリ内の全ての検査値に対して半群演算(結合処理)をおこなう(ステップS1305)。なお、ステップS1305でおこなう半群演算の種類は、前回の認証データ受信時に決定されている。また、検査値用メモリ内の検査値が1つの場合は、結合処理をおこなわずにそのままステップS1306に移行する。
【0126】
そして、周辺部は、演算結果(結合結果)と保持している検査値の期待値とを照合して、結合結果と期待値とが一致するか否かを判断する(ステップS1306)。結合結果と期待値が一致する場合(ステップS1306:Yes)、周辺部は、主制御部201に対する認証を成立させる(ステップS1307)。
【0127】
つづいて、周辺部は、認証成立時において結合処理の対象となった検査値数の数(結合数)が所定の値か否かを判断する(ステップS1308)。所定の値とは、たとえば奇数(または偶数)や所定の数の倍数などである。結合数が所定の値である場合(ステップS1308:Yes)、周辺部は認証データ付加コマンドとして識別する制御コマンドの種類を変更し(ステップS1309)、検査値用メモリ内のデータを消去して(ステップS1310)、本フローチャートによる処理を終了する。一方、分割数が所定の値でない場合は(ステップS1308:No)、認証データ付加コマンドの種類を変更せずに、検査値用メモリ内のデータを消去して(ステップS1310)、本フローチャートによる処理を終了する。
【0128】
また、ステップS1306において、検査値の演算結果と期待値が一致しない場合(ステップS1306:No)、周辺部は、所定数以上の認証データを受信するまで(ステップS1311:No)、ステップS1301に戻り、結合処理を繰り返す。所定数以上の認証データを受信すると(ステップS1311:Yes)、周辺部は、主制御部201に対する認証を不成立とする(ステップS1312)。所定数は任意の数であるが、たとえば、プログラムデータ格納部1100に格納可能なデータの数(最大分割数)とすることができる。認証が成立しなかった場合、周辺部は、制御コマンドデータ1001および付随データ1002を破棄するとともに、たとえばスピーカ262(図2参照)から報知信号を出力して(ステップS1313)、本フローチャートによる処理を終了する。
【0129】
また、ステップS1302で、制御信号に認証データが含まれていない場合(ステップS1302:No)、周辺部は、認証処理をおこなわず、そのまま制御コマンドデータ1001および付随データ1002に基づく処理をおこなって(ステップS1314)、本フローチャートによる処理を終了する。
【0130】
(検査値生成方法の切り替え処理の具体例)
つづいて、図11および図12に示す処理のうち、検査値生成方法の切り替え処理の具体例について説明する。図14は、制御部間のデータの流れの一例を示すシーケンス図である。図14では、説明の便宜上、検査値の生成に用いるデータ量を一括して決定するように示しているが、図12のフローチャートのように、検査値を生成するごとにデータ量を決定してもよい。また、図14においては、認証データ付加コマンドの順番を決めておき、分割数が奇数の場合に次のコマンドに変更するものとする(上記方法1)。また、認証データ付加コマンドの順番は、大当たりリーチコマンド→大当たり開始コマンド→大当たりコマンド→大当たり終了コマンド、とする。
【0131】
まず、主制御部201は、任意の方法で認証データの生成に用いるデータ量を決定する。たとえば、全データ量が12バイトあり、検査値の生成に用いるデータ量を、それぞれ4バイト、3バイト、5バイトとすると、3つの検査値を生成することになり、分割数=3となる(ステップS1401)。主制御部201は、プログラムデータ格納部1100の先頭から順に4バイト、3バイト、5バイトのデータを読み出し、それぞれのデータを用いて検査値を算出し、検査値を暗号化して認証データを生成する(ステップS1402)。主制御部201は、生成した認証データを大当たりリーチコマンドに付加して(ステップS1403)、認証データ付制御信号として周辺部に送信する(ステップS1404)。
【0132】
その後、主制御部201は今回の分割数が奇数であるため、認証データ付加コマンドの種類を変更する(ステップS1405)。具体的には、認証データ付加コマンドを大当たりリーチコマンド(リーチコマンド)から大当たり開始コマンド(開始コマンド)へと変更する。
【0133】
つづいて、周辺部における処理について説明する。周辺部は、主制御部201から送信された認証データ付制御信号を受信する(ステップS1406)。そして、認証データ付制御信号から認証データを抽出し(ステップS1407)、復号化をおこなって検査値を取得する(ステップS1408)。周辺部は、取得した検査値に対して結合処理をおこない(ステップS1409)、結合結果を期待値と照合する。期待値と一致すると、周辺部は主制御部201との認証を成立させる(ステップS1410)。今回の場合は、3つの検査値を用いて結合処理をおこなった際に期待値と一致するはずである(結合数=3)。
【0134】
その後、周辺部は今回の結合数が奇数であるため、認証データ付加コマンドとして識別するコマンドの種類を変更する(ステップS1411)。具体的には、認証データ付加コマンドとして識別するコマンドの種類を大当たりリーチコマンドから大当たり開始コマンドへと変更する。
【0135】
2回目の認証処理の説明に移り、主制御部201は、再び任意の方法で認証データの生成に用いるデータ量を決定する。たとえば、検査値の生成に用いるデータ量を、それぞれ4バイト、3バイト、2バイト、3バイトとすると、4つの検査値を生成することになり、分割数=4となる(ステップS1412)。主制御部201は、プログラムデータ格納部1100の先頭から順に4バイト、3バイト、5バイトのデータを読み出し、それぞれのデータを用いて検査値を算出し、検査値を暗号化して認証データを生成する(ステップS1413)。主制御部201は、生成した認証データを大当たり開始コマンドに付加して(ステップS1414)、認証データ付制御信号として周辺部に送信する(ステップS1415)。今回の分割数は偶数であるため、主制御部201は認証データ付加コマンドの種類を変更せず、そのまま継続させる(ステップS1416)。具体的には、認証データ付加コマンドを大当たり開始コマンドのままとする。
【0136】
つづいて、周辺部は、主制御部201から送信された認証データ付制御信号を受信し(ステップS1417)、認証データを抽出する(ステップS1418)。そして、復号化をおこなって検査値を取得し(ステップS1419)、取得した検査値に対して結合処理をおこなう(ステップS1420)。結合結果が期待値と一致すると、周辺部は主制御部201との認証を成立させる(ステップS1421)。今回の場合は、4つの検査値を用いて結合処理をおこなった際に期待値と一致するはずである(結合数=4)。周辺部は今回の結合数は偶数であるため、認証データ付加コマンドとして識別するコマンドの種類を変更せず、そのまま継続させる(ステップS1422)。具体的には、認証データ付加コマンドとして識別するコマンドの種類を大当たり開始コマンドのままとする。
【0137】
なお、上述した実施の形態では、検査値の暗号化に際して単一の暗号化方法を用いたが、検査値の生成方式と同様に複数の暗号化方法を切り替えてもよい。これにより、不正解析者によって認証データが解析される可能性を低減することができる。
【0138】
本実施の形態にかかるぱちんこ遊技機は、認証データの生成に用いた分割数に基づいて認証データを付加する制御コマンドの種類を変更する。分割数は主制御部のみが知る値なので、不正解析者は、認証データを付加する制御コマンドの種類の変更タイミングを知ることができない。これにより、認証コマンドが不正に盗取される可能性を低減することができる。
【0139】
また、本実施の形態にかかるぱちんこ遊技機は、認証データを制御コマンドに付加して送信するので、認証データを単体で送信する場合と比較して、主制御部201と周辺部との間の通信負荷の増大を抑えることができる。また、本実施の形態にかかるぱちんこ遊技機は、認証データを単体で送信する場合と比較して、通信データ中から認証データが抽出され、解析されてしまう可能性を低減することができる。
【0140】
また、本実施の形態にかかるぱちんこ遊技機は、主制御部において、分割数そのものを決定するのではなく、認証データの生成に用いるデータ量を決定する。このため、分割数が不正に窃取される可能性を低減することができる。
【0141】
なお、本実施の形態で説明した主制御部および周辺部の制御方法は、あらかじめ用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネット等のネットワークを介して配布することが可能な伝送媒体であってもよい。
【産業上の利用可能性】
【0142】
以上のように、本発明は、制御部への不正が懸念される電子機器やその電子機器に搭載される制御基板に有用であり、特に、ぱちんこ遊技機、スロット遊技機、その他各種の遊技機に適している。
【符号の説明】
【0143】
310 主制御基板
311 データ記憶部
312 決定部
313 認証値生成部
314 付加部
315 送信部
320 周辺基板
321 受信部
322 認証部
【技術分野】
【0001】
この発明は、複数の基板を備え、これらの基板間の通信の認証をおこなう電子機器、遊技機、主制御基板、周辺基板、認証方法および認証プログラムに関する。
【背景技術】
【0002】
従来、複数の基板を備えた電子機器において、これら各基板に対する不正を防止するための様々な技術が提案されている。複数の基板を備えた電子機器としては、たとえば、ぱちんこ遊技機などがある。ぱちんこ遊技機には、電子機器全体の動作を司る主制御基板と、電子機器の各部の動作をおこなう被制御基板(周辺基板)とを備えている。この主制御基板は、周辺基板に制御コマンドを含む制御信号を出力し、周辺基板は、主制御基板から送信された制御信号にしたがって動作を実行する機能を備えている。
【0003】
主制御基板に対する不正には、たとえば、正規の主制御基板を不正な制御基板に取り替えたり、主制御基板がおこなう処理を規定したプログラムコードを改ざんしたりするなどの方法がある。このような不正を防止するため、たとえば、主制御基板内に搭載されたROMに記録されているプログラムデータをROMチェッカによってチェックして、ROMの不正交換などを防止する技術が提案されている(たとえば、下記特許文献1参照。)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開平11−333108号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、上述した特許文献1の技術によれば、プログラムデータの改ざんは検知できるが、正規な主制御基板と被制御基板との間に不正な制御基板が接続されてしまうのを防止することができない。このため、不正な制御基板から出力される制御信号によって、被制御基板が不正な制御をおこなってしまうという問題がある。
【0006】
ここで、図15および図16を用いて、従来技術による不正防止技術について説明する。図15は、従来技術による不正防止技術の概要を示す説明図である。また、図16は、不正な制御基板の挿入例を示す説明図である。図15に示すように、正規の主制御基板1501は、周辺基板1502に対して正規の制御信号RSを出力して、周辺基板1502の動作を制御する。正規の主制御基板1501には、検査用ポート1503が設けられている。この検査用ポート1503から正規の主制御基板1501の内部に設けられたROMなどに記録されたプログラムデータを検査して、正規の主制御基板1501に不正がおこなわれていないかを検査する。
【0007】
ところが、図16に示すように、正規の主制御基板1501と周辺基板1502との間に、不正な制御基板1601が挿入されてしまう場合がある。不正な制御基板1601は、正規の主制御基板1501から出力された正規の制御信号RSを破棄または無視し、替わりに不正な制御信号FSを周辺基板1502に出力する。ここで、周辺基板1502は、入力された信号が、正規の制御信号RSであるか不正な制御信号FSであるかを判別することができない。このため、周辺基板1502は、不正な制御信号FSにしたがって動作してしまうという問題がある。
【0008】
また、検査用ポート1503は正規の主制御基板1501のみに設けられているため、検査用ポート1503を用いた検査をおこなっても、正規の主制御基板1501内の処理に対する検査結果が返ってしまう。このため、検査用ポート1503を用いた検査をおこなっても、不正な制御基板1601による不正制御を検知することができないという問題がある。
【0009】
この発明は、上述した従来技術による問題点を解消するため、正規の主制御基板と周辺基板との間に不正な制御基板が接続されたことを検知して、ぱちんこ遊技機などの電子機器に対する不正を防止することができる電子機器、遊技機、主制御基板、周辺基板、認証方法および認証プログラムを提供することを目的とする。
【課題を解決するための手段】
【0010】
上述した課題を解決し、目的を達成するため、請求項1の発明にかかる電子機器は、主制御部と、前記主制御部によって送信された制御コマンドに基づいて所定の処理をおこなう周辺部と、を備える電子機器であって、前記主制御部は、所定のデータを記憶するデータ記憶手段と、前記主制御部を認証するための認証値の生成に用いる前記データの量(以下、「データ量」という)を決定する決定手段と、前記データ記憶手段内の前記データを前記データ量に分割し、分割した前記データに対してそれぞれ結合法則を満たす2項演算をおこなって、分割した前記データの数(以下、「分割数」という)分の前記認証値を生成する認証値生成手段と、前記周辺部に送信する前記制御コマンドが所定の制御コマンドである場合、前記認証値を前記制御コマンドに付加する付加手段と、前記制御コマンドを前記周辺部に送信する送信手段と、を備え、前記周辺部は、前記認証値が付加された前記制御コマンドを受信する受信手段と、前記分割数分の前記認証値に対して前記2項演算をおこなった演算結果と当該演算結果の期待値とが一致するか否かに基づいて前記主制御部を認証する認証手段と、を備え、前記期待値は、前記データ記憶手段内の全ての前記データに対して前記2項演算をおこなった値であり、前記付加手段は、前記分割数に基づいて前記認証値を付加する前記制御コマンドの種類を変更することを特徴とする。
【0011】
この請求項1の発明によれば、主制御部は、データ記憶手段内のデータの分割数に基づいて認証データを付加する制御コマンドの種類を変更する。分割数は主制御部のみが知る値なので、不正解析者は、認証データを付加する制御コマンドの種類の変更タイミングを知ることができない。これにより、認証コマンドが不正に盗取される可能性を低減することができる。
【0012】
また、請求項1の発明によれば、認証値を制御コマンドに付加して送信するので、認証値を単体で送信する場合と比較して、主制御部と周辺部との間の通信負荷の増大を抑えることができる。また、請求項1の発明によれば、認証値を単体で送信する場合と比較して、通信データ中から認証値が抽出され、解析されてしまう可能性を低減することができる。
【0013】
また、請求項1の発明によれば、分割数そのものを決定するのではなく、認証値の生成に用いるデータ量を決定する。このため、分割数が不正に窃取される可能性を低減することができる。
【0014】
また、請求項2の発明にかかる電子機器は、請求項1に記載の発明において、前記決定手段は、それぞれの前記認証値ごとに前記データ量を決定し、前記認証値生成手段は、前記認証値ごとにそれぞれ決定された前記データ量分の前記データを用いて当該認証値を生成する。
【0015】
この請求項2の発明によれば、それぞれの認証値を生成するごとにデータ量を決定することができる。これにより、あらかじめデータ量を決定しておく場合と比較して、分割数が不正に窃取される可能性をさらに低減することができる。
【0016】
また、請求項3の発明にかかる電子機器は、請求項1または2に記載の発明において、前記認証手段は、前記主制御部に対する前記認証が成立した際に前記2項演算の対象となった前記認証値の数に基づいて、前記認証値が付加された前記制御コマンドの種類を識別することを特徴とする。
【0017】
この請求項3の発明によれば、周辺部において、認証データが付加されている制御コマンドを識別することができる。これにより、認証にかかる周辺部の処理負荷を軽減するとともに、認証処理の確実性を向上させることができる。
【0018】
また、請求項4の発明にかかる電子機器は、請求項1〜3のいずれか一つに記載の発明において、前記認証値生成手段は、前記認証値が付加される前記制御コマンドを用いて前記認証値を生成することを特徴とする。
【0019】
この請求項4の発明によれば、認証値を付加して送信する制御コマンドを用いて認証値を生成する。一般に、不正な制御部は、正規の主制御部と異なる制御コマンドを送信することによって、周辺部に不正な動作をおこなわせようとする。請求項3の発明のように、今回送信する制御コマンドを用いて認証値を生成すれば、不正な制御部によって認証値が再利用された場合であっても、認証値と制御コマンドの整合がとれず、不正を検知することができる。
【0020】
また、請求項5の発明にかかる電子機器は、請求項1〜4のいずれか一つに記載の発明において、前記認証値生成手段は、前記認証値を所定の暗号化方法で暗号化し、前記認証手段は、前記認証値を前記所定の暗号化方法に対応する復号化方法で復号化して前記認証をおこなうことを特徴とする。
【0021】
この請求項5の発明によれば、認証値を暗号化して送信するので、認証値の生成方法が解析されたり、認証値が再利用されたりする可能性を低減することができる。
【0022】
また、請求項6の発明にかかる電子機器は、請求項5に記載の発明において、前記認証値生成手段は、前記分割数に基づいて前記認証値の暗号化方法を変更し、前記認証手段は、前記主制御部に対する前記認証が成立した際に前記2項演算の対象となった前記認証値の数に基づいて前記認証値の復号化方法を変更することを特徴とする。
【0023】
この請求項6の発明によれば、不正解析者は、認証値の暗号化方法の切り替えタイミングを知ることができず、認証値の生成方法が解析されたり、認証値が再利用されたりする可能性をさらに低減することができる。
【0024】
また、請求項7の発明にかかる電子機器は請求項1〜6のいずれか一つに記載の発明において、前記データ記憶手段は、前記主制御部で用いられるプログラムデータを記憶することを特徴とする。
【0025】
この請求項7の発明によれば、主制御部に記録されたプログラムコードの不正な書き換えや、主制御部のデータ記憶手段の不正な取り替えなどを検出することができる。
【0026】
また、請求項8の発明にかかる電子機器は、請求項1〜7のいずれか一つに記載の発明において、前記2項演算は、加算または排他的論理和演算であることを特徴とする。
【0027】
この請求項8の発明によれば、認証値の生成に用いる2項演算として、加算または排他的論理和演算を切り替えて用いることができる。
【0028】
また、請求項9の発明にかかる遊技機は、請求項1〜8のいずれか一つに記載の電子機器を備え、前記主制御部は主制御基板であり、前記周辺部は周辺基板であることを特徴とする。
【0029】
この請求項9の発明によれば、遊技機の主制御基板は、データ記憶手段内のデータの分割数に基づいて認証データを付加する制御コマンドの種類を変更する。分割数は主制御部のみが知る値なので、不正解析者は、認証データを付加する制御コマンドの種類の変更タイミングを知ることができない。これにより、認証コマンドが不正に盗取される可能性を低減することができる。
【0030】
また、請求項9の発明によれば、認証値を制御コマンドに付加して送信するので、認証値を単体で送信する場合と比較して、主制御基板と周辺基板との間の通信負荷の増大を抑えることができる。また、請求項9の発明によれば、認証値を単体で送信する場合と比較して、通信データ中から認証値が抽出され、解析されてしまう可能性を低減することができる。
【0031】
また、請求項9の発明によれば、分割数そのものを決定するのではなく、認証値の生成に用いるデータ量を決定する。このため、分割数が不正に窃取される可能性を低減することができる。
【0032】
また、請求項10の発明にかかる主制御基板は、電子機器に搭載され、周辺基板に所定の処理をおこなわせる制御コマンドを送信する主制御基板であって、所定のデータを記憶するデータ記憶手段と、前記主制御基板を認証するための認証値の生成に用いる前記データの量(以下、「データ量」という)を決定する決定手段と、前記データ記憶手段内の前記データを前記データ量に分割し、分割した前記データに対してそれぞれ結合法則を満たす2項演算をおこなって、分割した前記データの数(以下、「分割数」という)分の前記認証値を生成する認証値生成手段と、前記周辺基板に送信する前記制御コマンドが所定の制御コマンドである場合、前記認証値を前記制御コマンドに付加する付加手段と、前記制御コマンドを前記周辺基板に送信する送信手段と、を備え、前記付加手段は、前記分割数に基づいて前記認証値を付加する前記制御コマンドの種類を変更することを特徴とする。
【0033】
この請求項10の発明によれば、主制御基板は、データ記憶手段内のデータを分割した分割数に基づいて認証データを付加する制御コマンドの種類を変更する。分割数は主制御基板のみが知る値なので、不正解析者は、認証データを付加する制御コマンドの種類の変更タイミングを知ることができない。これにより、認証コマンドが不正に盗取される可能性を低減することができる。
【0034】
また、請求項10の発明によれば、認証値を制御コマンドに付加して送信するので、認証値を単体で送信する場合と比較して、主制御基板と周辺基板との間の通信負荷の増大を抑えることができる。また、請求項10の発明によれば、認証値を単体で送信する場合と比較して、通信データ中から認証値が抽出され、解析されてしまう可能性を低減することができる。
【0035】
また、請求項10の発明によれば、分割数そのものを決定するのではなく、認証値の生成に用いるデータ量を決定する。このため、分割数が不正に窃取される可能性を低減することができる。
【0036】
また、請求項11の発明にかかる周辺基板は、電子機器に搭載され、主制御基板によって送信された制御コマンドに基づいて所定の処理をおこなう周辺基板であって、前記主制御基板によって送信された前記制御コマンドを受信する受信手段と、前記分割数分の前記認証値に対して前記2項演算をおこなった演算結果と当該演算結果の期待値とが一致するか否かに基づいて前記主制御基板を認証する認証手段と、を備え、前記期待値は、前記データ記憶手段内の全ての前記データに対して前記2項演算をおこなった値であり、前記認証手段は、前記主制御基板に対する前記認証が成立した際に前記2項演算の対象となった前記認証値の数に基づいて、前記認証値が付加された前記制御コマンドの種類を識別することを特徴とする。
【0037】
この請求項11の発明によれば、認証値を制御コマンドに付加して送信するので、認証値を単体で送信する場合と比較して、主制御基板と周辺基板との間の通信負荷の増大を抑えることができる。また、請求項11の発明によれば、認証値を単体で送信する場合と比較して、通信データ中から認証値が抽出され、解析されてしまう可能性を低減することができる。また、請求項11の発明によれば、周辺基板において、認証データが付加されている制御コマンドを識別することができる。これにより、認証にかかる周辺基板の処理負荷を軽減するとともに、認証処理の確実性を向上させることができる。
【0038】
また、請求項12の発明にかかる認証方法は、主制御部と、前記主制御部によって送信された制御コマンドに基づいて所定の処理をおこなう周辺部と、を備える電子機器における認証方法であって、前記主制御部において、前記主制御部を認証するための認証値の生成に用いるデータの量(以下、「データ量」という)を決定する決定工程と、前記主制御部に記憶されている所定のデータを前記データ量に分割し、分割した前記データに対してそれぞれ結合法則を満たす2項演算をおこなって、分割した前記データの数(以下、「分割数」という)分の前記認証値を生成する認証値生成工程と、前記周辺部に送信する前記制御コマンドが所定の制御コマンドである場合、前記認証値を前記制御コマンドに付加する付加工程と、前記制御コマンドを前記周辺部に送信する送信工程と、を含み、前記周辺部において、前記認証値が付加された前記制御コマンドを受信する受信工程と、前記分割数分の前記認証値に対して前記2項演算をおこなった演算結果と当該演算結果の期待値とが一致するか否かに基づいて前記主制御部を認証する認証工程と、を含み、前記期待値は、前記データ記憶手段内の全ての前記データに対して前記2項演算をおこなった値であり、前記付加工程では、前記分割数に基づいて前記認証値を付加する前記制御コマンドの種類を変更することを特徴とする。
【0039】
この請求項12の発明によれば、主制御部は、データ記憶手段内のデータの分割数に基づいて認証データを付加する制御コマンドの種類を変更する。分割数は主制御部のみが知る値なので、不正解析者は、認証データを付加する制御コマンドの種類の変更タイミングを知ることができない。これにより、認証コマンドが不正に盗取される可能性を低減することができる。
【0040】
また、請求項12の発明によれば、認証値を制御コマンドに付加して送信するので、認証値を単体で送信する場合と比較して、主制御部と周辺部との間の通信負荷の増大を抑えることができる。また、請求項12の発明によれば、認証値を単体で送信する場合と比較して、通信データ中から認証値が抽出され、解析されてしまう可能性を低減することができる。
【0041】
また、請求項12の発明によれば、分割数そのものを決定するのではなく、認証値の生成に用いるデータ量を決定する。このため、分割数が不正に窃取される可能性を低減することができる。
【0042】
また、請求項13の発明にかかる認証プログラムは、請求項12に記載の認証方法をコンピュータに実行させることを特徴とする。
【0043】
この請求項13の発明によれば、請求項12に記載の認証方法をコンピュータに実行させることができる。
【発明の効果】
【0044】
本発明にかかる電子機器、遊技機、主制御基板、周辺基板、認証方法および認証プログラムによれば、正規の主制御基板と周辺基板との間に不正な制御基板が接続されたことを検知して、ぱちんこ遊技機などの電子機器に対する不正を防止することができる。
【図面の簡単な説明】
【0045】
【図1】本発明のぱちんこ遊技機の遊技盤の一例を示す正面図である。
【図2】ぱちんこ遊技機の制御部の内部構成を示すブロック図である。
【図3】主制御基板および周辺基板の機能的構成を示すブロック図である。
【図4】主制御部による演出制御部の制御処理の手順を示すフローチャートである。
【図5】主制御部による演出制御部の制御処理の手順を示すフローチャートである。
【図6】大当たり関連コマンドの送信タイミングを示すタイムチャートである。
【図7】演出制御部による図柄変動処理の手順を示すフローチャートである。
【図8】演出制御部による大当たり時の処理の手順を示すフローチャートである。
【図9】ランプ制御部による図柄変動時のランプ制御処理の手順を示すフローチャートである。
【図10】主制御部が出力する制御信号のデータフォーマットを模式的に示す説明図である。
【図11】主制御部における認証データ(検査値)の生成方法を模式的に示す説明図である。
【図12】主制御部201による制御信号の送信処理の手順を示すフローチャートである。
【図13】周辺部による制御信号の受信処理の手順を示すフローチャートである。
【図14】制御部間のデータの流れの一例を示すシーケンス図である。
【図15】従来技術による不正防止技術の概要を示す説明図である。
【図16】不正な制御基板の挿入例を示す説明図である。
【発明を実施するための形態】
【0046】
(実施の形態)
以下に添付図面を参照して、この発明にかかる電子機器の機能を有したぱちんこ遊技機と、このぱちんこ遊技機に搭載されている複数の基板間(主制御基板および周辺基板)の制御信号に含まれる制御コマンドを認証する認証方法および認証プログラムの好適な実施の形態を詳細に説明する。
【0047】
(ぱちんこ遊技機の基本構成)
図1は、本発明のぱちんこ遊技機の遊技盤の一例を示す正面図である。遊技盤101の下部位置に配置された発射部(図2参照)の駆動によって発射された遊技球は、レール102a,102b間を上昇して遊技盤101の上部位置に達した後、遊技領域103内を落下する。遊技領域103には、図示を省略する複数の釘が設けられ、遊技球を各種の方向に向けて落下させるとともに、落下途中の位置には、遊技球の落下方向を変化させる風車や、入賞口が配設されている。
【0048】
遊技盤101の遊技領域103の中央部分には、図柄表示部104が配置されている。図柄表示部104としては、たとえば液晶表示器(LCD)が用いられる。なお、図柄表示部104としては、LCDに限らずCRTなどを用いることもできる。図柄表示部104の下方には、始動入賞させるための始動入賞口105が配設されている。図柄表示部104の左右には、それぞれ入賞ゲート106が配設されている。
【0049】
入賞ゲート106は、遊技球の通過を検出し、始動入賞口105を一定時間だけ開放させる抽選をおこなうために設けられる。図柄表示部104の側部や下方などには普通入賞口107が配設されている。普通入賞口107に遊技球が入賞すると、普通入賞時の賞球数(たとえば10個)の払い出しをおこなう。遊技領域103の最下部には、どの入賞口にも入賞しなかった遊技球を回収する回収口108が設けられている。
【0050】
上述した図柄表示部104は、特定の入賞口に遊技球が入賞したとき(始動入賞時)に、複数の図柄の表示の変動を開始させ、所定時間後に図柄が停止する。この停止時に特定図柄(たとえば「777」)に揃ったとき、大当たり状態となる。大当たり状態のとき、下方に位置する大入賞口109が一定の期間開放を所定ラウンド(たとえば15ラウンド)繰り返し、入賞した遊技球に対応した賞球数を払い出す。
【0051】
図2は、ぱちんこ遊技機の制御部の内部構成を示すブロック図である。制御部200は、複数の制御部により構成されている。図示の例では、主制御部201と、周辺部(演出制御部202、賞球制御部203)とを有する。主制御部201は、ぱちんこ遊技機の遊技にかかる基本動作を制御する。演出制御部202は、遊技中の演出動作を制御する。賞球制御部203は、払い出す賞球数を制御する。
【0052】
主制御部201は、ROM212に記憶されたプログラムデータに基づき、遊技内容の進行に伴う基本処理を実行するCPU211と、CPU211の演算処理時におけるデータのワークエリアとして機能するRAM213、各検出部221〜224から各種データを受信するとともに、演出制御部202および賞球制御部203への各種データの送信をおこなうインタフェース(I/F)214などを備えて構成される。主制御部201は、たとえばいわゆる主制御基板によってその機能を実現する。
【0053】
この主制御部201の入力側には、始動入賞口105に入賞した入賞球を検出する始動入賞口検出部221と、入賞ゲート106を通過した遊技球を検出するゲート検出部222と、普通入賞口107に入賞した遊技球を検出する普通入賞口検出部223と、大入賞口109に入賞した入賞球を検出する大入賞口検出部224とがI/F214を介して接続されている。これらの検出部としては、近接スイッチなどを用いて構成できる。
【0054】
この主制御部201の出力側には、大入賞口開閉部231が接続され、この大入賞口開閉部231の開閉を制御する。大入賞口開閉部231は、大当たり時に大入賞口109を一定期間開放する機能であり、ソレノイドなどを用いて構成される。この大当たりは、生成した乱数(大当たり判定用乱数)に基づいて所定の確率(たとえば300分の1など)で発生するようあらかじめプログラムされている。
【0055】
演出制御部202は、主制御部201から各種の制御コマンドを含む制御信号を受け取り、このコマンドに基づいてROM242に記憶されたプログラムデータを実行して遊技中における演出制御をおこなう。この演出制御部202は、演出処理を実行するCPU241と、CPU241の演算処理時におけるデータのワークエリアとして機能するRAM243、図柄表示部104に表示させる画像データを書き込むVRAM244、主制御部201からの各種データの受信およびランプ制御部251や音声制御部252への各種データの送信をおこなうインタフェース(I/F)245などを備えて構成される。演出制御部202は、たとえばいわゆる演出基板によってその機能を実現する。また、演出制御部202の出力側には、上述した図柄表示部(LCD)104、ランプ制御部251、音声制御部252がI/F245を介して接続されている。ランプ制御部251はランプ261の点灯を制御する。また、音声制御部252はスピーカ262から出力される音声を制御する。
【0056】
賞球制御部203は、主制御部201から各種の制御コマンドを含む制御信号を受け取り、このコマンドに基づいてROM282に記憶されたプログラムデータを実行して賞球制御をおこなう。この賞球制御部203は、賞球制御の処理を実行するCPU281と、CPU281の演算処理時におけるデータのワークエリアとして機能するRAM283、主制御部201からの各種データの受信および発射部292との各種データの送受信をおこなうインタフェース(I/F)284などを備えて構成される。賞球制御部203は、たとえばいわゆる賞球基板によってその機能を実現する。
【0057】
賞球制御部203は、接続される払出部291に対して入賞時の賞球数を払い出す制御をおこなう。また、発射部292に対する遊技球の発射の操作を検出し、遊技球の発射を制御する。払出部291は、遊技球の貯留部から所定数を払い出すためのモータなどからなる。賞球制御部203は、この払出部291に対して、各入賞口(始動入賞口105、普通入賞口107、大入賞口109)に入賞した遊技球に対応した賞球数を払い出す制御をおこなう。
【0058】
発射部292は、遊技のための遊技球を発射するものであり、遊技者による遊技操作を検出するセンサと、遊技球を発射させるソレノイドなどを備える。賞球制御部203は、発射部292のセンサにより遊技操作を検出すると、検出された遊技操作に対応してソレノイドなどを駆動させて遊技球を間欠的に発射させ、遊技盤101の遊技領域103に遊技球を送り出す。
【0059】
上記構成の主制御部201と、演出制御部202と、賞球制御部203は、それぞれ異なるプリント基板(主制御基板、演出基板、賞球基板)に設けられる。これに限らず、たとえば、賞球制御部203は、主制御部201と同一のプリント基板上に設けることもできる。
【0060】
(主制御基板および周辺基板の機能的構成)
図3は、主制御基板(主制御部)および周辺基板(演出制御部、賞球制御部)の機能的構成を示すブロック図である。まず、主制御部201としての機能を有する主制御基板310の機能的構成について説明する。図3に示すように、主制御基板310は、周辺基板320を動作させるための制御コマンドを送信する機能部であり、データ記憶部311、決定部312、認証値生成部313、付加部314、送信部315によって構成される。
【0061】
データ記憶部311は、所定のデータを記憶する。所定のデータとは、たとえば主制御基板310で用いられるプログラムデータである。データ記憶部311としては、たとえば、主制御部201のROM212(図2参照)の一部を用いることができる。
【0062】
決定部312は、主制御部201を認証するための認証データ(認証値)の生成に用いるデータの量(以下、「データ量」という)を決定する。決定部312は、たとえば、乱数生成回路や乱数生成プログラムによって生成された値をデータ量として決定したり、主制御基板310の他の処理において生成される値を所定のタイミングで参照し、その値をデータ量として決定する。
【0063】
認証値生成部313は、データ記憶部311内のデータを、決定部312によって決定されたデータ量に分割し、分割したデータに対してそれぞれ結合法則を満たす2項演算をおこなって、分割したデータの数(以下、「分割数」という)分の認証値を生成する。結合法則を満たす2項演算とは、たとえば加算または排他的論理和演算である。認証値生成部313は、分割されたデータのそれぞれに対して加算または排他的論理和演算をおこなって、分割数分の認証値データを生成する。認証値生成部313は、認証データを生成する際、データ記憶部311に記憶された全てのデータを、重複なく用いるようにする。具体的には、たとえば、決定部312によって決定された量のデータを、データ記憶部311内のアドレスの先頭から順番に読み出して、認証データを生成する。
【0064】
認証値生成部313は、生成した認証値を所定の暗号化方法で暗号化してもよい。この場合、分割数に基づいて認証値の暗号化方法を変更してもよい。具体的には、たとえば、分割数が奇数の場合は今回用いた暗号化方法と異なる暗号化方法に変更し、偶数の場合には今回用いた暗号化方法と同じ暗号化方法で暗号化する、などの方法がある。また、認証値生成部313は、後述する制御信号内の制御コマンドを用いて認証値を生成するようにしてもよい。
【0065】
付加部314は、周辺基板に送信する制御コマンドが所定の制御コマンドである場合、認証値生成部313によって生成された認証データを制御コマンドに付加して、制御信号を生成する(図10参照)。後述するように、主制御部201が送信する制御コマンドは多くの種類のコマンドがある。たとえば大当たり関連コマンドを例にすると、「大当たりリーチコマンド」や「大当たり開始コマンド」、「大当たりコマンド」、「大当たり終了コマンド」のように複数の種類のコマンドが存在する。付加部314は、分割数に基づいて認証データを付加する制御コマンドの種類を変更する。付加部314は、たとえば以下のような方法で、認証データを付加する制御コマンドの種類を変更する。
【0066】
(方法1)
大当たりリーチコマンド→大当たり開始コマンド→大当たりコマンド→大当たり終了コマンド・・のように、認証データを付加する制御コマンドの順番を決めておき、分割数が所定の数の場合には、次のコマンドに変更する。所定の数をどのような数とするかは任意であるが、たとえば、「奇数」「3の倍数」などにすることができる。
【0067】
(方法2)
各コマンドに対して所定の数を関連づけておき、分割数が所定の数である場合、その数と関連づけられたコマンドに認証データを付加する。たとえば、2=大当たりリーチコマンド、3=大当たり開始コマンド、4=大当たりコマンド、5=大当たり終了コマンド・・のように制御コマンドと数とを関連づけておく。そして、たとえば分割数が2の場合は大当たりリーチコマンドに認証データを付加し、分割数が3の場合は大当たり開始コマンドに認証データを付加する。
【0068】
コマンドに関連づける数は複数であってもよい。たとえば、2または10=大当たりリーチコマンド、3または11=大当たり開始コマンド・・のように、1つの制御コマンドに対して複数の数を関連づけてもよい。また、たとえば、2の倍数=大当たりリーチコマンド、3の倍数=大当たり開始コマンド、5の倍数=大当たりコマンド・・のような関連づけをおこなってもよい。この場合、分割数が公倍数である場合に、優先して認証データを付加する制御コマンドをあらかじめ決めておく。
【0069】
送信部315は、制御コマンドを含む制御信号を周辺基板に送信する。送信部315は、今回送信するコマンドが所定のコマンドである場合は、認証データが付加された制御コマンドを含む制御信号を周辺基板に送信する。また、送信部315は、今回送信するコマンドが所定のコマンドでない場合は、認証データが付加されていない制御コマンドを含む制御信号を周辺基板に送信する。
【0070】
つぎに、演出制御部202や賞球制御部203などの周辺部としての機能を有する周辺基板320の機能的構成について説明する。図3に示すように、周辺基板320は、受信部321および認証部322によって構成される。
【0071】
受信部321は、主制御基板310によって送信された分割数分の認証値を受信する。受信部321は、たとえば、認証値が付加された制御信号を受信することによって、認証値を受信する。
【0072】
認証部322は、受信部321によって受信された分割数分の認証値に対して、認証値生成部313が用いるのと同じ2項演算をおこない、当該演算結果と期待値とが一致するか否かに基づいて主制御基板310を認証する。認証部322による認証に用いられる期待値は、データ記憶部311内の全てのデータに対して、認証値生成部313が用いるのと同じ2項演算をおこなった値である。この2項演算は結合法則を満たすため、データ記憶部311内の全てのデータに対して演算をおこなった値と、分割したデータから生成された認証値に対して演算をおこなった値とは一致するはずである。これにより、認証部322は、主制御基板310の正当性を認証する。
【0073】
認証部322は、主制御基板310に対する認証が成立した際に選択した2項演算の対象となった認証値の数に基づいて、認証データが付加された前記制御コマンドの種類を識別する。主制御基板310に対する認証が成立した際に選択した2項演算の対象となった認証値の数は、分割数と一致する。このため、主制御基板310の認証値生成部313と認証部322とにおいて、認証データを付加する制御コマンドの変更ルールを共有することにより、認証データを付加する制御コマンドの種類を変更させながら認証処理を継続することができる。
【0074】
分割数は主制御基板310のみが知る値なので、不正解析者は、認証データが付加される制御コマンドの種類の変更タイミングを知ることができない。これにより、主制御基板310と周辺基板320との間に不正な制御基板が挿入されたことを検知することができ、不正な制御基板による不正な処理を防止することができる。
【0075】
認証部322は、認証データが暗号化されている場合、認証値生成部313による暗号化方法に対応する復号化方法で認証データを復号化する。認証値生成部313による暗号化方法が分割数に基づいて変更される場合、認証部322は、主制御基板310の個体に対する認証が成立した際に2項演算の対象となった認証データの数に基づいて復号化方法を変更する。
【0076】
(ぱちんこ遊技機の基本動作)
上記構成によるぱちんこ遊技機の基本動作の一例を説明する。主制御部201は、各入賞口に対する遊技球の入賞状況を制御コマンドとして賞球制御部203に出力する。賞球制御部203は、主制御部201から出力された制御コマンドに応じて、入賞状況に対応した賞球数の払い出しをおこなう。
【0077】
また、主制御部201は、始動入賞口105に遊技球が入賞するごとに、対応する制御コマンドを演出制御部202に出力し、演出制御部202は、図柄表示部104の図柄を変動表示させ、停止させることを繰り返す。大当たりの発生が決定しているときには、対応する制御コマンドを演出制御部202に出力し、演出制御部202は、所定の図柄で揃えて停止させる。このとき同時に、大入賞口109を開放する制御をおこなう。演出制御部202は、大当たり発生期間中、および大当たり発生までの間のリーチ時や、リーチ予告時などには、図柄表示部104に対して、図柄の変動表示に加えて各種の演出表示をおこなう。このほか、各種役物に対して特定の駆動をおこなったり、ランプ261の表示状態を変更するなどの演出をおこなう。
【0078】
そして、大当たり発生時には、大入賞口109が複数回開放される。1回の開放が1ラウンドとして、たとえば15回のラウンドが繰り返し実行される。1ラウンドの期間は、遊技球がたとえば10個入賞したとき、あるいは所定期間(たとえば30秒)とされている。この際、賞球制御部203は、大入賞口109に対する遊技球1個の入賞あたり、たとえば15個の賞球数で払い出しをおこなう。大当たり終了後は、この大当たり状態が解除され、通常の遊技状態に復帰する。
【0079】
(各制御部による処理の詳細)
つぎに、各制御部がおこなう各種処理の詳細について説明する。はじめに、主制御部201による演出制御部202の制御処理について説明する。図4および図5は、主制御部による演出制御部の制御処理の手順を示すフローチャートである。なお、図4〜図9においては、演出制御部202の制御処理の手順を明確にするため、補正データ、認証データおよび付随データについては考慮しないものとする。すなわち、図4〜図9の説明において、「コマンドを送信する」とは、「当該コマンドを示すデータ(制御コマンドデータ)を含む制御信号を送信する」との意味であり、たとえば認証データや付随データ(図10参照)の有無は考慮しないものとする。
【0080】
図4および図5のフローチャートにおいて、主制御部201は、まず、ぱちんこ遊技機の電源がオンにされるまで待機する(ステップS401:Noのループ)。ぱちんこ遊技機の電源がオンにされると(ステップS401:Yes)、主制御部201は、演出制御部202や賞球制御部203などの周辺部に対して電源オンコマンドを送信する(ステップS402)。電源オンコマンドが送信されると、演出制御部202は、ランプ制御部251や音声制御部252、図柄表示部104のそれぞれに対して電源オン時の演出用の制御コマンド(具体的には、ランプの点灯や音声の出力、デモ画面の表示などを指示する制御コマンド)を送信する。
【0081】
つぎに、主制御部201は、ROM212またはRAM213に記録されている未抽選入賞回数データを参照して、未抽選入賞回数が0回か否かを判断する(ステップS403)。未抽選入賞回数とは、始動入賞口に検出された入賞球の数(入賞回数)から、入賞球に対応する抽選がおこなわれた回数(既抽選回数)を減じた数である。未抽選入賞回数が0回の場合(ステップS403:Yes)、主制御部201は、デモが開始されてから経過した時間を計測する(ステップS404)。
【0082】
デモが開始されてから所定時間が経過すると(ステップS405:Yes)、主制御部201は、演出制御部202に客待ちデモコマンドを送信して(ステップS406)、ステップS407に移行する。デモが開始されてから所定時間が経過しない場合は(ステップS405:No)、そのままステップS407に移行する。ステップS406で客待ちデモコマンドが送信されると、演出制御部202は、ランプ制御部251や音声制御部252、図柄表示部104に対して客待ちデモ用の制御信号を送信する。また、ステップS403で、未抽選入賞回数が0回ではない場合は(ステップS403:No)、ステップS410に移行する。
【0083】
つぎに、主制御部201は、始動入賞口検出部221によって始動入賞口への入賞球が検出されたか否か判断する(ステップS407)。始動入賞口への入賞球が検出されると(ステップS407:Yes)、主制御部201は、デモが開始されてから計測していた時間をクリアして(ステップS408)、未抽選入賞回数に1を加える(ステップS409)。つづいて、主制御部201は、大当たり判定用乱数を取得して(ステップS410)、未抽選入賞回数から1を減算し(ステップS411)、図5のステップS412に移行する。また、ステップS407で、始動入賞口への入賞球が検出されない場合は(ステップS407:No)、ステップS404に戻り、以降の処理を継続する。
【0084】
つぎに、主制御部201は、ステップS410で取得した大当たり判定用乱数が、あらかじめ定められた大当たり乱数であるか否かを判断する(ステップS412)。大当たり判定用乱数が大当たり乱数である場合(ステップS412:Yes)、主制御部201は、演出制御部202に大当たりリーチコマンド(図柄変動コマンド)を送信する(ステップS413)。主制御部201は、図柄変動時間が経過するまで待機して(ステップS414:Noのループ)、図柄変動時間が経過すると(ステップS414:Yes)、演出制御部202に図柄停止コマンドを送信する(ステップS415)。
【0085】
つぎに、主制御部201は、演出制御部202に大当たり開始コマンドを送信し(ステップS416)、つづけて、大当たり中の各ラウンドに対応するコマンド(大当たりコマンド)を順次送信する(ステップS417)。そして、主制御部201は、全てのラウンドの大当たりコマンドの送信が終わると、大当たり終了コマンドを送信して(ステップS418)、ステップS422に移行する。
【0086】
一方、ステップS412で、大当たり判定用乱数が大当たり乱数でなかった場合(ステップS412:No)、主制御部201は、演出制御部202にはずれリーチコマンド(図柄変動コマンド)を送信する(ステップS419)。主制御部201は、図柄変動時間が経過するまで待機して(ステップS420:Noのループ)、図柄変動時間が経過すると(ステップS420:Yes)、演出制御部202に図柄停止コマンドを送信する(ステップS421)。
【0087】
主制御部201は、ぱちんこ遊技機の電源がオフにされるまでは(ステップS422:No)、図4のステップS403に戻り、以降の処理を繰り返す。そして、ぱちんこ遊技機の電源がオフにされると(ステップS422:Yes)、主制御部201は、演出制御部202に終了処理コマンドを送信して(ステップS423)、本フローチャートによる処理を終了する。
【0088】
図6は、大当たり関連コマンド(大当たりリーチコマンド、大当たり開始コマンド、大当たりコマンド、大当たり終了コマンド)の送信タイミングを示すタイムチャートである。大当たりリーチコマンドは、実際に大当たりが発生するよりも頻繁に、かつランダムに送信される。また、大当たり開始コマンドは、実際に大当たりが発生した場合に、大当たり状態に移行する際に1度だけ送信される。また、大当たりコマンドは、大当たり状態に移行した後、ラウンドごとに継続的に送信される。また、大当たり終了コマンドは、大当たり状態の全てのラウンドが終了し、通常の状態に移行する際に1度だけ送信される。
【0089】
つぎに、演出制御部202による処理について説明する。以下では、図柄変動時(大当たりリーチコマンド(図5のステップS413参照)または、はずれリーチコマンド(図5のステップS419参照)を受信した場合)および、大当たり時の演出制御部202の処理について説明する。
【0090】
図7は、演出制御部による図柄変動処理の手順を示すフローチャートである。図7のフローチャートにおいて、演出制御部202は、まず、図柄変動コマンドである大当たりリーチコマンド(図5のステップS413参照)、または、はずれリーチコマンド(図5のステップS419参照)を受信するまで待機する(ステップS701:Noのループ)。図柄変動コマンドを受信すると(ステップS701:Yes)、演出制御部202は、変動演出選択用の乱数を取得して(ステップS702)、取得した乱数に基づいて変動演出の種類を選択する(ステップS703)。そして、演出制御部202は、ランプ制御部251や音声制御部252に対して変動演出別の演出開始コマンドを送信する(ステップS704)。
【0091】
演出制御部202は、変動演出の演出時間が経過したか否かや(ステップS705)、主制御部201から図柄停止コマンド(図5のステップS415,S421参照)を受信したか否かを判断する(ステップS706)。演出時間が経過した場合(ステップS705:Yes)、または、図柄停止コマンドを受信した場合(ステップS706:Yes)、演出制御部202は、ランプ制御部251や音声制御部252に対して演出停止コマンドを送信して(ステップS707)、本フローチャートによる処理を終了する。また、演出時間が経過せず(ステップS705:No)、かつ図柄停止コマンドを受信しない場合は(ステップS706:No)、ステップS705に戻り、以降の処理を繰り返す。
【0092】
つぎに、演出制御部202の大当たり時の処理について説明する。図8は、演出制御部による大当たり時の処理の手順を示すフローチャートである。図8のフローチャートにおいて、演出制御部202は、まず、主制御部201から大当たり開始コマンド(図5のステップS416参照)を受信するまで待機する(ステップS801:Noのループ)。大当たり開始コマンドを受信すると(ステップS801:Yes)、演出制御部202は、ランプ制御部251や音声制御部252に対して大当たり開始処理コマンドを送信する(ステップS802)。
【0093】
つぎに、演出制御部202は、主制御部201からラウンド別の大当たりコマンド(図5のステップS417参照)を受信するまで待機する(ステップS803:Noのループ)。大当たりコマンドを受信すると(ステップS803:Yes)、演出制御部202は、ランプ制御部251や音声制御部252に対して受信したラウンド別の大当たりコマンドに対応するラウンド別処理コマンドを送信する(ステップS804)。
【0094】
つづいて、演出制御部202は、主制御部201から大当たり終了コマンド(図5のステップS418参照)を受信するまで待機する(ステップS805:Noのループ)。大当たり終了コマンドを受信すると(ステップS805:Yes)、演出制御部202は、ランプ制御部251や音声制御部252に対して大当たり終了処理コマンドを送信して(ステップS806)、本フローチャートによる処理を終了する。
【0095】
つづいて、ランプ制御部251によるランプ制御処理について説明する。ここでは、演出制御部202から図柄変動コマンドを受信した場合(図柄変動時)の処理について説明する。図9は、ランプ制御部による図柄変動時のランプ制御処理の手順を示すフローチャートである。図9のフローチャートにおいて、ランプ制御部251は、まず、演出制御部202から演出開始コマンドを受信するまで待機する(ステップS901:Noのループ)。
【0096】
演出制御部202から演出開始コマンドを受信すると(ステップS901:Yes)、ランプ制御部251は、コマンド別に用意されているデータを読み出して(ステップS902)、コマンド別の選択ルーチンを実行し(ステップS903)、ランプデータをセットする(ステップS904)。そして、ランプ制御部251は、ランプ261に対してランプデータを出力する(ステップS905)。ランプ制御部251から出力されたランプデータに基づいて、ランプ261は点灯または消灯する。
【0097】
ランプ制御部251は、演出制御部202から演出停止コマンドを受信するまでは(ステップS906:No)、ステップS905に戻り、ランプデータの出力を継続する。演出停止コマンドを受信すると(ステップS906:Yes)、ランプ制御部251は、ランプデータの出力を停止して(ステップS907)、本フローチャートによる処理を終了する。
【0098】
なお、図9にはランプ制御部251の処理を記載したが、音声制御部252による音声制御も、図9の処理とほぼ同様である。音声制御部252による音声制御処理は、図9の処理において、ステップS904,S905,S907の「ランプデータ」を「音声データ」と読み替えればよい。
【0099】
このように、演出制御部202や賞球制御部203などの周辺部は、主制御部201によって出力された制御コマンドに基づいて各種の処理をおこなう。一方、たとえば、主制御部201と周辺部との間に不正な制御基板が接続された場合(図15参照)などのように、制御コマンドの出力元が正規の主制御部201ではない場合、周辺部は不正な制御基板から出力された不正な制御コマンドによって不正な動作をおこなってしまう。
【0100】
これを防止するため、本実施の形態にかかるぱちんこ遊技機では、主制御部201と周辺部との間で認証処理をおこなう。より詳細には、周辺部を認証者、主制御部201を被認証者とした認証処理をおこない、主制御部201から送信される制御信号の正当性を認証する。この認証処理に用いる認証値(認証データ)は、主制御部201に記録されているプログラムデータを任意に分割したデータを元に生成されている。この認証処理によって、主制御部201が不正な制御基板に交換されたり、主制御部201と周辺部との間に不正な制御基板が取り付けられるなどの不正を検知して、ぱちんこ遊技機への不正を防止することができる。
【0101】
本実施の形態では、認証データを制御コマンドデータに付加して送信する。認証データを制御コマンドデータに付加することによって、認証データ単体で送信する場合と比較して、主制御部201と周辺部との間の通信負荷の増大を抑えることができる。また、認証データを制御コマンドデータに付加することによって、認証データを単体で送信する場合と比較して、通信データ中から認証データが抽出され、解析されてしまう可能性を低減することができる。以下に認証データと制御コマンドデータを含む制御信号のフォーマットについて説明する。
について説明する。
【0102】
(制御信号のデータフォーマット)
図10は、主制御部が出力する制御信号のデータフォーマットを模式的に示す説明図である。図10には、主制御部201が出力する通常の制御信号1010および認証データ付制御信号1020が示されている。
【0103】
通常の制御信号1010は、制御コマンドデータ1001および付随データ1002を含んでいる。制御コマンドデータ1001は、たとえばリーチコマンドや大当たり開始コマンド、ラウンド別コマンドなどの各コマンド固有のデータである。また、付随データ1002は、制御コマンドデータ1001に付随するデータであり、たとえば、入賞した遊技球の数など制御コマンドデータ1001に基づく処理に必要なデータである。
【0104】
また、認証データ付制御信号1020は、制御コマンドデータ1001および付随データ1002に加え、認証データ1003を含んでいる。認証データ1003は、制御コマンドデータ1001および付随データ1002が正規の主制御部201から出力されたものであることを、周辺部が認証するためのデータである。認証データ1003は、具体的には以下のように生成された値である。
【0105】
(認証データ(検査値)の生成方法)
図11は、主制御部における認証データ(検査値)の生成方法を模式的に示す説明図である。認証データ1003は、主制御部201のROM212などに記録されたデータを用いて生成する。より詳細には、ROM212の所定の領域に格納されたデータを、任意のデータ量に分割した上で、分割した領域にそれぞれ格納されたデータに対して結合法則を満たす2項演算(半群演算)をおこなって検査値を算出する。半群演算としては、たとえば、加算や排他的論理和演算などが挙げられる。そして、検査値に対して所定の演算(たとえば、暗号化処理)をおこなって得られた値を認証データとする。なお、検査値を暗号化するか否かは任意であるが、不正防止の観点から暗号化することが望ましい。
【0106】
主制御部201は、たとえば、1つの検査値を生成するごとに、その生成に用いるデータの量(データ量)を決定する。この場合、主制御部201は、ROM212の所定領域内の全てのデータを用いた検査値の生成が完了するまで、データ量の決定と検査値の生成とをくり返す。このため、いくつの検査値が生成されるか(すなわち、分割数がいくつになるか)は、ROM212の所定領域内の全てのデータを用いた検査値の生成が完了するまでわからない。
【0107】
なお、1つの検査値を生成するごとにデータ量を決定するのではなく、あらかじめ検査値の生成に用いるデータの量を決定しておいてもよい。また、全ての検査値の生成に用いるデータ量を等しくするようにしてもよい。この場合、データ量を決定した時点で分割数が予測可能となる。
【0108】
検査値を算出するために用いるデータの種類は任意であるが、たとえば、主制御部201のROM212に記録されたプログラムデータ(命令コードや固定データ)を用いることができる。主制御部201のROM212に記録されたプログラムデータを用いることによって、プログラムコードの不正な書き換えや、主制御部201のROM212の不正な取り替えなどを検出することができる。
【0109】
たとえば、図11に示すプログラムデータ格納部1100には、12個のデータ(0x01〜0x09,0x0A〜0x0C、1つのデータのデータ量は1バイト)が格納されている。検査値の生成に用いるデータ量を4バイト、3バイト、5バイトとする場合、プログラムデータ格納部1100は、たとえば4バイト分のデータを含む第1ブロック1100a、3バイト分のデータを含む第2ブロック1100b、5バイト分のデータを含む第3ブロック1100c、の3つに分割できる。すなわち、分割数は3となる。主制御部201は、これらの各ブロックに格納されたデータに対してそれぞれ半群演算をおこなって検査値を算出する。なお、上述したデータ量は例示である。
【0110】
たとえば、半群演算として加算を用いる方法を方式Aとすると、第1ブロック1100aに格納された4バイト分のデータ0x01,0x02,0x03,0x04を加算して第1検査値0x0Aが得られる。同様に、第2ブロック1100bに格納された3バイト分のデータ0x05,0x06,0x07を加算して第2検査値0x12が、第3ブロック1100cに格納された5バイト分のデータ0x08,0x09,0x0A,0x0B,0x0Cを加算して第3検査値0x32がそれぞれ得られる。
【0111】
また、たとえば、半群演算として排他的論理和演算を用いる方法を方式Bとすると、第1ブロック1100aに格納された4バイト分のデータ0x01,0x02,0x03,0x04に排他的論理和演算をおこない第1検査値0x04が得られる。同様に、第2ブロック1100bに格納された3バイト分のデータ0x05,0x06,0x07に排他的論理和演算をおこない第2検査値0x04が、第3ブロック1100cに格納された5バイト分のデータ0x08,0x09,0x0A,0x0B,0x0Cに排他的論理和演算をおこない第3検査値0x0Cがそれぞれ得られる。
【0112】
そして、得られた検査値に対して暗号化処理をおこなって認証データとする。この暗号化処理の際、検査値とともに、同時に送信される制御コマンドデータ1001や付随データ1002に関するデータを含めて暗号化処理をおこなってもよい。制御コマンドデータ1001や付随データ1002に関するデータとは、制御コマンドデータ1001や付随データ1002そのものや、制御コマンドデータ1001や付随データ1002に対してハッシュ関数による演算やパリティチェック、巡回冗長検査(Cyclic Redundancy Check:CRC)、チェックサムなどの演算をおこなって得られた値などである。
【0113】
一般に、不正な制御基板は、正規の主制御部201と異なる制御コマンドを送信することによって、周辺部に不正な動作をおこなわせようとする。このため、制御コマンドデータ1001や付随データ1002を用いて認証データ1003を生成すれば、不正な制御基板によって認証データ1003を再利用された場合であっても、認証データ1003と制御コマンドの整合がとれず、不正を検知することができる。
【0114】
一方、認証者である周辺部は、プログラムデータ格納部1100に格納されたデータ全体に対して半群演算をおこなった値を期待値として保持している。たとえば、方式Aの場合の期待値は0x01〜0x0Cの和である0x4Eとなる。また、方式Bの場合の期待値は0x01〜0x0Cの排他的論理和である0x0Cとなる。周辺部では、主制御部201による検査値生成方法の数と同じ数の期待値を保持している。
【0115】
周辺部は、受信した認証データ付制御信号1020から検査値を取り出して、検査値に対して半群演算をおこなった値を期待値と照合する。検査値は半群演算を用いて生成されているので、分割したプログラムデータから生成した検査値の全てに対して同じ半群演算をおこなえば、プログラムデータ全体に対して半群演算をおこなった期待値と一致するはずである。検査値に対して半群演算をおこなった値と期待値とが一致すると、周辺部は主制御部201を認証する。
【0116】
なお、周辺部における半群演算処理は、分割したデータから生成した検査値を結合する処理に対応するため、「結合処理」と呼ぶ。また、認証が成立した際の結合処理に用いた検査値の数を「結合数」という。周辺部における結合数と主制御部201における分割数とは同じ数となる。
【0117】
ここで、主制御部201は、認証データを付加する制御コマンドの種類を、分割数を用いて変更する。また、周辺部は、認証データが付加されている制御コマンドの種類を、結合数を用いて識別する。主制御部201は、たとえば、分割数および結合数が奇数の場合には認証データを付加する制御コマンドの種類を変更し、分割数および結合数が偶数の場合にはそれまでと同じ種類の制御コマンドに認証データを付加する。分割数は主制御部201のみが知る値であり、周辺部は認証が成立した時に初めてその値を結合数として知ることができる。よって、不正解析者は分割数および結合数を知ることができず、認証データが付加されている制御コマンドの種類の変更タイミングを知ることができない。これにより、不正解析者によって認証データが不正に盗取されるのを防止することができる。以下、認証データを付加する制御コマンドを「認証データ付加コマンド」という。
【0118】
また、制御コマンドデータ1001、付随データ1002、認証データ1003の並び方は、図10に示す順番に限らず、たとえば認証データ1003を制御信号の先頭にしたり、制御コマンドデータ1001と付随データ1002との間に認証データ1003を挿入してもよい。
【0119】
(制御信号の送受信処理)
つづいて、主制御部201と周辺部との間でおこなう制御信号の送受信処理について説明する。図12は、主制御部201による制御信号の送信処理の手順を示すフローチャートである。本フローチャートでは、検査値(認証データ)を生成するごとに、データ量を決定する場合の処理について説明する。主制御部201は、通常の制御信号の送信をおこないながら(ステップS1201)、認証データの送信タイミングになるまで待機する(ステップS1202:No)。認証データの送信タイミングになると(ステップS1202:Yes)、主制御部201は、認証データを送信するため、検査値の生成に用いるプログラムデータのデータ量を決定する(ステップS1203)。
【0120】
つぎに、主制御部201は、たとえば、プログラムデータ格納部1100の先頭から、ステップS1203で決定した量のプログラムデータを読み出し、読み出したデータに対して半群演算をおこなって検査値を算出し(ステップS1204)、検査値に対して暗号化処理をおこなって認証データを生成する(ステップS1205)。
【0121】
プログラムデータ格納部1100内の全てのデータを用いて検査値を生成するまで(ステップS1206:No)、主制御部201は、ステップS1203に戻り、以降の処理をくり返す。ここで、「プログラムデータ格納部1100内の全てのデータを用いて」とは、プログラムデータ格納部1100内のデータをもれなく、かつ重複なく用いて、という意味である。2つ目以降の検査値を生成する場合、主制御部201は、たとえば、前の検査値生成に用いたプログラムデータの次の領域に書き込まれたデータを、ステップS1203で決定した量だけ読み出して検査値を生成する。なお、最後の検査値を生成する際は、ステップS1203で決定したデータ量に足りない可能性があるが、主制御部201は、取得できる分のプログラムデータのみを用いて検査値を生成する。なお、ステップS1203〜S1205の処理は、認証データの送信タイミングとなる前にあらかじめおこなっておいてもよい。
【0122】
プログラムデータ格納部1100内の全てのデータを用いて検査値を生成すると(ステップS1206:Yes)、主制御部201は、認証データ付加コマンドの送信タイミングとなるまで(ステップS1207:No)、通常の制御信号の送信を継続する(ステップS1208)。認証データ付加コマンドの送信タイミングになると(ステップS1207:Yes)、主制御部201は、制御コマンドに認証データを付加し(ステップS1209)、周辺部へと送信する(ステップS1210)。生成した全ての認証データを送信するまで(ステップS1211:No)、主制御部201は、ステップS1207に戻り、以降の処理を継続する。
【0123】
認証データを全て送信すると(ステップS1211:Yes)、主制御部201は、生成した認証データ(検査値)の数、すなわち分割数が所定の値か否かを判断する(ステップS1212)。所定の値とは、主制御部201と周辺部との間で認証データ付加コマンドの種類を変更すると取り決めた値であり、たとえば奇数(または偶数)や所定の数の倍数などである。分割数が所定の値である場合(ステップS1212:Yes)、主制御部201は、認証データ付加コマンドの種類を変更して(ステップS1213)、本フローチャートによる処理を終了する。一方、分割数が所定の値でない場合は(ステップS1212:No)、認証データ付加コマンドの種類を変更せずに、そのまま本フローチャートによる処理を終了する。
【0124】
つぎに、周辺部による制御信号の受信処理について説明する。図13は、周辺部による制御信号の受信処理の手順を示すフローチャートである。図13のフローチャートにおいて、周辺部は、まず、主制御部201から制御信号を受信するまで待機する(ステップS1301:Noのループ)。主制御部201から制御信号を受信すると(ステップS1301:Yes)、周辺部は、受信した制御信号に認証データ1003が含まれているか否かを判断する(ステップS1302)。具体的には、周辺部は、制御信号に含まれている制御コマンドが認証データ付加コマンドであるか否かを判断する。なお、制御信号に認証データ1003が含まれているか否かは、たとえば、制御信号のデータ量が通常の制御信号よりも多いか否かや、認証データ1003が含まれていることを示すフラグが制御信号に立てられているか否かによって判断してもよい。
【0125】
制御信号に認証データ1003が含まれている場合(ステップS1302:Yes)、周辺部は、制御信号から認証データ1003を抽出し、さらに復号化処理をおこなって検査値を取得する(ステップS1303)。周辺部は、取得した検査値を検査値用メモリに格納して(ステップS1304)、検査値用メモリ内の全ての検査値に対して半群演算(結合処理)をおこなう(ステップS1305)。なお、ステップS1305でおこなう半群演算の種類は、前回の認証データ受信時に決定されている。また、検査値用メモリ内の検査値が1つの場合は、結合処理をおこなわずにそのままステップS1306に移行する。
【0126】
そして、周辺部は、演算結果(結合結果)と保持している検査値の期待値とを照合して、結合結果と期待値とが一致するか否かを判断する(ステップS1306)。結合結果と期待値が一致する場合(ステップS1306:Yes)、周辺部は、主制御部201に対する認証を成立させる(ステップS1307)。
【0127】
つづいて、周辺部は、認証成立時において結合処理の対象となった検査値数の数(結合数)が所定の値か否かを判断する(ステップS1308)。所定の値とは、たとえば奇数(または偶数)や所定の数の倍数などである。結合数が所定の値である場合(ステップS1308:Yes)、周辺部は認証データ付加コマンドとして識別する制御コマンドの種類を変更し(ステップS1309)、検査値用メモリ内のデータを消去して(ステップS1310)、本フローチャートによる処理を終了する。一方、分割数が所定の値でない場合は(ステップS1308:No)、認証データ付加コマンドの種類を変更せずに、検査値用メモリ内のデータを消去して(ステップS1310)、本フローチャートによる処理を終了する。
【0128】
また、ステップS1306において、検査値の演算結果と期待値が一致しない場合(ステップS1306:No)、周辺部は、所定数以上の認証データを受信するまで(ステップS1311:No)、ステップS1301に戻り、結合処理を繰り返す。所定数以上の認証データを受信すると(ステップS1311:Yes)、周辺部は、主制御部201に対する認証を不成立とする(ステップS1312)。所定数は任意の数であるが、たとえば、プログラムデータ格納部1100に格納可能なデータの数(最大分割数)とすることができる。認証が成立しなかった場合、周辺部は、制御コマンドデータ1001および付随データ1002を破棄するとともに、たとえばスピーカ262(図2参照)から報知信号を出力して(ステップS1313)、本フローチャートによる処理を終了する。
【0129】
また、ステップS1302で、制御信号に認証データが含まれていない場合(ステップS1302:No)、周辺部は、認証処理をおこなわず、そのまま制御コマンドデータ1001および付随データ1002に基づく処理をおこなって(ステップS1314)、本フローチャートによる処理を終了する。
【0130】
(検査値生成方法の切り替え処理の具体例)
つづいて、図11および図12に示す処理のうち、検査値生成方法の切り替え処理の具体例について説明する。図14は、制御部間のデータの流れの一例を示すシーケンス図である。図14では、説明の便宜上、検査値の生成に用いるデータ量を一括して決定するように示しているが、図12のフローチャートのように、検査値を生成するごとにデータ量を決定してもよい。また、図14においては、認証データ付加コマンドの順番を決めておき、分割数が奇数の場合に次のコマンドに変更するものとする(上記方法1)。また、認証データ付加コマンドの順番は、大当たりリーチコマンド→大当たり開始コマンド→大当たりコマンド→大当たり終了コマンド、とする。
【0131】
まず、主制御部201は、任意の方法で認証データの生成に用いるデータ量を決定する。たとえば、全データ量が12バイトあり、検査値の生成に用いるデータ量を、それぞれ4バイト、3バイト、5バイトとすると、3つの検査値を生成することになり、分割数=3となる(ステップS1401)。主制御部201は、プログラムデータ格納部1100の先頭から順に4バイト、3バイト、5バイトのデータを読み出し、それぞれのデータを用いて検査値を算出し、検査値を暗号化して認証データを生成する(ステップS1402)。主制御部201は、生成した認証データを大当たりリーチコマンドに付加して(ステップS1403)、認証データ付制御信号として周辺部に送信する(ステップS1404)。
【0132】
その後、主制御部201は今回の分割数が奇数であるため、認証データ付加コマンドの種類を変更する(ステップS1405)。具体的には、認証データ付加コマンドを大当たりリーチコマンド(リーチコマンド)から大当たり開始コマンド(開始コマンド)へと変更する。
【0133】
つづいて、周辺部における処理について説明する。周辺部は、主制御部201から送信された認証データ付制御信号を受信する(ステップS1406)。そして、認証データ付制御信号から認証データを抽出し(ステップS1407)、復号化をおこなって検査値を取得する(ステップS1408)。周辺部は、取得した検査値に対して結合処理をおこない(ステップS1409)、結合結果を期待値と照合する。期待値と一致すると、周辺部は主制御部201との認証を成立させる(ステップS1410)。今回の場合は、3つの検査値を用いて結合処理をおこなった際に期待値と一致するはずである(結合数=3)。
【0134】
その後、周辺部は今回の結合数が奇数であるため、認証データ付加コマンドとして識別するコマンドの種類を変更する(ステップS1411)。具体的には、認証データ付加コマンドとして識別するコマンドの種類を大当たりリーチコマンドから大当たり開始コマンドへと変更する。
【0135】
2回目の認証処理の説明に移り、主制御部201は、再び任意の方法で認証データの生成に用いるデータ量を決定する。たとえば、検査値の生成に用いるデータ量を、それぞれ4バイト、3バイト、2バイト、3バイトとすると、4つの検査値を生成することになり、分割数=4となる(ステップS1412)。主制御部201は、プログラムデータ格納部1100の先頭から順に4バイト、3バイト、5バイトのデータを読み出し、それぞれのデータを用いて検査値を算出し、検査値を暗号化して認証データを生成する(ステップS1413)。主制御部201は、生成した認証データを大当たり開始コマンドに付加して(ステップS1414)、認証データ付制御信号として周辺部に送信する(ステップS1415)。今回の分割数は偶数であるため、主制御部201は認証データ付加コマンドの種類を変更せず、そのまま継続させる(ステップS1416)。具体的には、認証データ付加コマンドを大当たり開始コマンドのままとする。
【0136】
つづいて、周辺部は、主制御部201から送信された認証データ付制御信号を受信し(ステップS1417)、認証データを抽出する(ステップS1418)。そして、復号化をおこなって検査値を取得し(ステップS1419)、取得した検査値に対して結合処理をおこなう(ステップS1420)。結合結果が期待値と一致すると、周辺部は主制御部201との認証を成立させる(ステップS1421)。今回の場合は、4つの検査値を用いて結合処理をおこなった際に期待値と一致するはずである(結合数=4)。周辺部は今回の結合数は偶数であるため、認証データ付加コマンドとして識別するコマンドの種類を変更せず、そのまま継続させる(ステップS1422)。具体的には、認証データ付加コマンドとして識別するコマンドの種類を大当たり開始コマンドのままとする。
【0137】
なお、上述した実施の形態では、検査値の暗号化に際して単一の暗号化方法を用いたが、検査値の生成方式と同様に複数の暗号化方法を切り替えてもよい。これにより、不正解析者によって認証データが解析される可能性を低減することができる。
【0138】
本実施の形態にかかるぱちんこ遊技機は、認証データの生成に用いた分割数に基づいて認証データを付加する制御コマンドの種類を変更する。分割数は主制御部のみが知る値なので、不正解析者は、認証データを付加する制御コマンドの種類の変更タイミングを知ることができない。これにより、認証コマンドが不正に盗取される可能性を低減することができる。
【0139】
また、本実施の形態にかかるぱちんこ遊技機は、認証データを制御コマンドに付加して送信するので、認証データを単体で送信する場合と比較して、主制御部201と周辺部との間の通信負荷の増大を抑えることができる。また、本実施の形態にかかるぱちんこ遊技機は、認証データを単体で送信する場合と比較して、通信データ中から認証データが抽出され、解析されてしまう可能性を低減することができる。
【0140】
また、本実施の形態にかかるぱちんこ遊技機は、主制御部において、分割数そのものを決定するのではなく、認証データの生成に用いるデータ量を決定する。このため、分割数が不正に窃取される可能性を低減することができる。
【0141】
なお、本実施の形態で説明した主制御部および周辺部の制御方法は、あらかじめ用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネット等のネットワークを介して配布することが可能な伝送媒体であってもよい。
【産業上の利用可能性】
【0142】
以上のように、本発明は、制御部への不正が懸念される電子機器やその電子機器に搭載される制御基板に有用であり、特に、ぱちんこ遊技機、スロット遊技機、その他各種の遊技機に適している。
【符号の説明】
【0143】
310 主制御基板
311 データ記憶部
312 決定部
313 認証値生成部
314 付加部
315 送信部
320 周辺基板
321 受信部
322 認証部
【特許請求の範囲】
【請求項1】
主制御部と、前記主制御部によって送信された制御コマンドに基づいて所定の処理をおこなう周辺部と、を備える電子機器であって、
前記主制御部は、
所定のデータを記憶するデータ記憶手段と、
前記主制御部を認証するための認証値の生成に用いる前記データの量(以下、「データ量」という)を決定する決定手段と、
前記データ記憶手段内の前記データを前記データ量に分割し、分割した前記データに対してそれぞれ結合法則を満たす2項演算をおこなって、分割した前記データの数(以下、「分割数」という)分の前記認証値を生成する認証値生成手段と、
前記周辺部に送信する前記制御コマンドが所定の制御コマンドである場合、前記認証値を前記制御コマンドに付加する付加手段と、
前記制御コマンドを前記周辺部に送信する送信手段と、を備え、
前記周辺部は、
前記認証値が付加された前記制御コマンドを受信する受信手段と、
前記分割数分の前記認証値に対して前記2項演算をおこなった演算結果と当該演算結果の期待値とが一致するか否かに基づいて前記主制御部を認証する認証手段と、を備え、
前記期待値は、前記データ記憶手段内の全ての前記データに対して前記2項演算をおこなった値であり、
前記付加手段は、前記分割数に基づいて前記認証値を付加する前記制御コマンドの種類を変更することを特徴とする電子機器。
【請求項2】
前記決定手段は、それぞれの前記認証値ごとに前記データ量を決定し、
前記認証値生成手段は、前記認証値ごとにそれぞれ決定された前記データ量分の前記データを用いて当該認証値を生成することを特徴とする請求項1に記載の電子機器。
【請求項3】
前記認証手段は、前記主制御部に対する前記認証が成立した際に前記2項演算の対象となった前記認証値の数に基づいて、前記認証値が付加された前記制御コマンドの種類を識別することを特徴とする請求項1または2に記載の電子機器。
【請求項4】
前記認証値生成手段は、前記認証値が付加される前記制御コマンドを用いて前記認証値を生成することを特徴とする請求項1〜3のいずれか一つに記載の電子機器。
【請求項5】
前記認証値生成手段は、前記認証値を所定の暗号化方法で暗号化し、
前記認証手段は、前記認証値を前記所定の暗号化方法に対応する復号化方法で復号化して前記認証をおこなうことを特徴とする請求項1〜4のいずれか一つに記載の電子機器。
【請求項6】
前記認証値生成手段は、前記分割数に基づいて前記認証値の暗号化方法を変更し、
前記認証手段は、前記主制御部に対する前記認証が成立した際に前記2項演算の対象となった前記認証値の数に基づいて前記認証値の復号化方法を変更することを特徴とする請求項5に記載の電子機器。
【請求項7】
前記データ記憶手段は、前記主制御部で用いられるプログラムデータを記憶することを特徴とする請求項1〜6のいずれか一つに記載の電子機器。
【請求項8】
前記2項演算は、加算または排他的論理和演算であることを特徴とする請求項1〜7のいずれか一つに記載の電子機器。
【請求項9】
請求項1〜8のいずれか一つに記載の電子機器を備え、前記主制御部は主制御基板であり、前記周辺部は周辺基板であることを特徴とする遊技機。
【請求項10】
電子機器に搭載され、周辺基板に所定の処理をおこなわせる制御コマンドを送信する主制御基板であって、
所定のデータを記憶するデータ記憶手段と、
前記主制御基板を認証するための認証値の生成に用いる前記データの量(以下、「データ量」という)を決定する決定手段と、
前記データ記憶手段内の前記データを前記データ量に分割し、分割した前記データに対してそれぞれ結合法則を満たす2項演算をおこなって、分割した前記データの数(以下、「分割数」という)分の前記認証値を生成する認証値生成手段と、
前記周辺基板に送信する前記制御コマンドが所定の制御コマンドである場合、前記認証値を前記制御コマンドに付加する付加手段と、
前記制御コマンドを前記周辺基板に送信する送信手段と、を備え、
前記付加手段は、前記分割数に基づいて前記認証値を付加する前記制御コマンドの種類を変更することを特徴とする主制御基板。
【請求項11】
電子機器に搭載され、主制御基板によって送信された制御コマンドに基づいて所定の処理をおこなう周辺基板であって、
前記主制御基板によって送信された前記制御コマンドを受信する受信手段と、
前記分割数分の前記認証値に対して前記2項演算をおこなった演算結果と当該演算結果の期待値とが一致するか否かに基づいて前記主制御基板を認証する認証手段と、を備え、
前記期待値は、前記データ記憶手段内の全ての前記データに対して前記2項演算をおこなった値であり、
前記認証手段は、前記主制御基板に対する前記認証が成立した際に前記2項演算の対象となった前記認証値の数に基づいて、前記認証値が付加された前記制御コマンドの種類を識別することを特徴とする周辺基板。
【請求項12】
主制御部と、前記主制御部によって送信された制御コマンドに基づいて所定の処理をおこなう周辺部と、を備える電子機器における認証方法であって、
前記主制御部において、
前記主制御部を認証するための認証値の生成に用いるデータの量(以下、「データ量」という)を決定する決定工程と、
前記主制御部に記憶されている所定のデータを前記データ量に分割し、分割した前記データに対してそれぞれ結合法則を満たす2項演算をおこなって、分割した前記データの数(以下、「分割数」という)分の前記認証値を生成する認証値生成工程と、
前記周辺部に送信する前記制御コマンドが所定の制御コマンドである場合、前記認証値を前記制御コマンドに付加する付加工程と、
前記制御コマンドを前記周辺部に送信する送信工程と、を含み、
前記周辺部において、
前記認証値が付加された前記制御コマンドを受信する受信工程と、
前記分割数分の前記認証値に対して前記2項演算をおこなった演算結果と当該演算結果の期待値とが一致するか否かに基づいて前記主制御部を認証する認証工程と、を含み、
前記期待値は、前記データ記憶手段内の全ての前記データに対して前記2項演算をおこなった値であり、
前記付加工程では、前記分割数に基づいて前記認証値を付加する前記制御コマンドの種類を変更することを特徴とする認証方法。
【請求項13】
請求項12に記載の認証方法をコンピュータに実行させることを特徴とする認証プログラム。
【請求項1】
主制御部と、前記主制御部によって送信された制御コマンドに基づいて所定の処理をおこなう周辺部と、を備える電子機器であって、
前記主制御部は、
所定のデータを記憶するデータ記憶手段と、
前記主制御部を認証するための認証値の生成に用いる前記データの量(以下、「データ量」という)を決定する決定手段と、
前記データ記憶手段内の前記データを前記データ量に分割し、分割した前記データに対してそれぞれ結合法則を満たす2項演算をおこなって、分割した前記データの数(以下、「分割数」という)分の前記認証値を生成する認証値生成手段と、
前記周辺部に送信する前記制御コマンドが所定の制御コマンドである場合、前記認証値を前記制御コマンドに付加する付加手段と、
前記制御コマンドを前記周辺部に送信する送信手段と、を備え、
前記周辺部は、
前記認証値が付加された前記制御コマンドを受信する受信手段と、
前記分割数分の前記認証値に対して前記2項演算をおこなった演算結果と当該演算結果の期待値とが一致するか否かに基づいて前記主制御部を認証する認証手段と、を備え、
前記期待値は、前記データ記憶手段内の全ての前記データに対して前記2項演算をおこなった値であり、
前記付加手段は、前記分割数に基づいて前記認証値を付加する前記制御コマンドの種類を変更することを特徴とする電子機器。
【請求項2】
前記決定手段は、それぞれの前記認証値ごとに前記データ量を決定し、
前記認証値生成手段は、前記認証値ごとにそれぞれ決定された前記データ量分の前記データを用いて当該認証値を生成することを特徴とする請求項1に記載の電子機器。
【請求項3】
前記認証手段は、前記主制御部に対する前記認証が成立した際に前記2項演算の対象となった前記認証値の数に基づいて、前記認証値が付加された前記制御コマンドの種類を識別することを特徴とする請求項1または2に記載の電子機器。
【請求項4】
前記認証値生成手段は、前記認証値が付加される前記制御コマンドを用いて前記認証値を生成することを特徴とする請求項1〜3のいずれか一つに記載の電子機器。
【請求項5】
前記認証値生成手段は、前記認証値を所定の暗号化方法で暗号化し、
前記認証手段は、前記認証値を前記所定の暗号化方法に対応する復号化方法で復号化して前記認証をおこなうことを特徴とする請求項1〜4のいずれか一つに記載の電子機器。
【請求項6】
前記認証値生成手段は、前記分割数に基づいて前記認証値の暗号化方法を変更し、
前記認証手段は、前記主制御部に対する前記認証が成立した際に前記2項演算の対象となった前記認証値の数に基づいて前記認証値の復号化方法を変更することを特徴とする請求項5に記載の電子機器。
【請求項7】
前記データ記憶手段は、前記主制御部で用いられるプログラムデータを記憶することを特徴とする請求項1〜6のいずれか一つに記載の電子機器。
【請求項8】
前記2項演算は、加算または排他的論理和演算であることを特徴とする請求項1〜7のいずれか一つに記載の電子機器。
【請求項9】
請求項1〜8のいずれか一つに記載の電子機器を備え、前記主制御部は主制御基板であり、前記周辺部は周辺基板であることを特徴とする遊技機。
【請求項10】
電子機器に搭載され、周辺基板に所定の処理をおこなわせる制御コマンドを送信する主制御基板であって、
所定のデータを記憶するデータ記憶手段と、
前記主制御基板を認証するための認証値の生成に用いる前記データの量(以下、「データ量」という)を決定する決定手段と、
前記データ記憶手段内の前記データを前記データ量に分割し、分割した前記データに対してそれぞれ結合法則を満たす2項演算をおこなって、分割した前記データの数(以下、「分割数」という)分の前記認証値を生成する認証値生成手段と、
前記周辺基板に送信する前記制御コマンドが所定の制御コマンドである場合、前記認証値を前記制御コマンドに付加する付加手段と、
前記制御コマンドを前記周辺基板に送信する送信手段と、を備え、
前記付加手段は、前記分割数に基づいて前記認証値を付加する前記制御コマンドの種類を変更することを特徴とする主制御基板。
【請求項11】
電子機器に搭載され、主制御基板によって送信された制御コマンドに基づいて所定の処理をおこなう周辺基板であって、
前記主制御基板によって送信された前記制御コマンドを受信する受信手段と、
前記分割数分の前記認証値に対して前記2項演算をおこなった演算結果と当該演算結果の期待値とが一致するか否かに基づいて前記主制御基板を認証する認証手段と、を備え、
前記期待値は、前記データ記憶手段内の全ての前記データに対して前記2項演算をおこなった値であり、
前記認証手段は、前記主制御基板に対する前記認証が成立した際に前記2項演算の対象となった前記認証値の数に基づいて、前記認証値が付加された前記制御コマンドの種類を識別することを特徴とする周辺基板。
【請求項12】
主制御部と、前記主制御部によって送信された制御コマンドに基づいて所定の処理をおこなう周辺部と、を備える電子機器における認証方法であって、
前記主制御部において、
前記主制御部を認証するための認証値の生成に用いるデータの量(以下、「データ量」という)を決定する決定工程と、
前記主制御部に記憶されている所定のデータを前記データ量に分割し、分割した前記データに対してそれぞれ結合法則を満たす2項演算をおこなって、分割した前記データの数(以下、「分割数」という)分の前記認証値を生成する認証値生成工程と、
前記周辺部に送信する前記制御コマンドが所定の制御コマンドである場合、前記認証値を前記制御コマンドに付加する付加工程と、
前記制御コマンドを前記周辺部に送信する送信工程と、を含み、
前記周辺部において、
前記認証値が付加された前記制御コマンドを受信する受信工程と、
前記分割数分の前記認証値に対して前記2項演算をおこなった演算結果と当該演算結果の期待値とが一致するか否かに基づいて前記主制御部を認証する認証工程と、を含み、
前記期待値は、前記データ記憶手段内の全ての前記データに対して前記2項演算をおこなった値であり、
前記付加工程では、前記分割数に基づいて前記認証値を付加する前記制御コマンドの種類を変更することを特徴とする認証方法。
【請求項13】
請求項12に記載の認証方法をコンピュータに実行させることを特徴とする認証プログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【公開番号】特開2011−30607(P2011−30607A)
【公開日】平成23年2月17日(2011.2.17)
【国際特許分類】
【出願番号】特願2009−177081(P2009−177081)
【出願日】平成21年7月29日(2009.7.29)
【出願人】(000161806)京楽産業.株式会社 (4,820)
【出願人】(300023383)株式会社トリニティーセキュリティーシステムズ (376)
【Fターム(参考)】
【公開日】平成23年2月17日(2011.2.17)
【国際特許分類】
【出願日】平成21年7月29日(2009.7.29)
【出願人】(000161806)京楽産業.株式会社 (4,820)
【出願人】(300023383)株式会社トリニティーセキュリティーシステムズ (376)
【Fターム(参考)】
[ Back to top ]