【解決手段】本明細書で開示する暗号処理システムは、第1情報処理装置と、第2情報処理装置と、第3情報処理装置とを備える。第1情報処理装置は、開発元識別子を用いて第1秘密鍵を生成し、第1秘密鍵を用いて第1公開鍵を作成する。第2情報処理装置は、開発環境に含まれる第1公開鍵と第2秘密鍵とを用いた共通鍵の作成と、第2秘密鍵を用いた第2公開鍵の作成とを実行し、共通鍵を用いてデータを暗号化する。第3情報処理装置は、設計元で設定された開発元識別子を記憶する記憶部を備え、第2公開鍵と暗号化データを記憶する記憶装置と接続される。第3情報処理装置は、開発元識別子を用いて第1秘密鍵を生成し、第2公開鍵と第1秘密鍵とを用いて共通鍵を作成し、共通鍵を用いて記憶装置に記憶された暗号化データを復号する。
【発明を実施するための形態】
【0010】
[実施形態]
実施形態の暗号処理システムについて説明する。
図1は、暗号処理システム300の一実施例を示す図である。
暗号処理システム300は、第4情報処理装置4と、第5情報処理装置5と、第6情報処理装置6とを含む。
【0011】
第4情報処理装置4は、例えば、第6情報処理装置6の設計及び製造を行なう会社(以下、設計元ともいう。)で用いられるコンピュータ装置である。第5情報処理装置5は、例えば、設計元から提供されたデータ作成プログラム(以下、開発環境ともいう。)を用いて、画像データやプログラムデータなどの開発を行なう会社(以下、開発元ともいう。)で用いられるコンピュータ装置である。第6情報処理装置6は、例えば、パチンコ、スロット及びゲーム機などの遊技機で用いられる画像処理装置である。以下の説明において、設計元の処理は、第4情報処理装置4を用いて処理されるものである。また、開発元の処理は、第5情報処理装置5を用いて処理されるものである。なお、第6情報処理装置6は、遊技機などに用いられる画像処理装置の他、例えば、パソコン、輸送機器、ゲーム機、及びVR(Virtual Reality)装置などに用いられる各種情報処理装置でもよい。
【0012】
パチンコやスロットなどの遊技機で用いられる画像処理装置において、データの改ざんによる不正行為を防止するため、暗号処理において、Diffie−Hellman(以下、DHともいう。)鍵交換を用いる技術が知られている。暗号処理とは、鍵作成処理と、暗号化処理と、復号処理とを含むものとする。以下の説明では、一例として、第6情報処理装置6は、遊技機に用いられる画像処理装置であるものとして説明する。
【0013】
具体的には、設計元は、DH鍵交換を行うための生成元gと、素数nとを設定し、開発元と共有する。また、設計元は、設定した素数nを第6情報処理装置6にハードワイヤード(以下、結線論理ともいう。)で記憶する。さらに、設計元は、任意の乱数などを用いて秘密鍵pを生成し、第6情報処理装置6にハードワイヤードで秘密鍵pを記憶する。
【0014】
設計元は、生成元gと、秘密鍵pと、素数nとを下記式(1)に代入して、公開鍵aを作成する。そして、設計元は、作成した公開鍵aを開発元に提供する(S501)。具体的には、設計元は、開発元に提供するデータ作成プログラムに公開鍵aを含ませることにより、公開鍵aを開発元に提供する。
公開鍵a=g
^p mod n・・・(1)
【0015】
また、開発元は、乱数などを用いて秘密鍵sを生成し、生成元g、秘密鍵sと、素数nとを下記式(2)に代入して、公開鍵bを作成する。そして、開発元は、作成した公開鍵bを第6情報処理装置6に含まれる記憶装置に格納する(S502)。
公開鍵b=g
^s mod n・・・(2)
さらに、開発元は、公開鍵aと、秘密鍵sと、素数nとを下記式(3)に代入して、共通鍵dhを作成する(S503)。
共通鍵dh=a
^s mod n・・・(3)
【0016】
開発元は、共通鍵dhを用いて、開発元が作成した画像データやプログラムデータなどを暗号化する。そして、開発元は、暗号化した暗号化データを第6情報処理装置6の記憶装置に格納する(S504)。
【0017】
第6情報処理装置6は、起動時に、第6情報処理装置6に含まれる記憶装置から公開鍵bを読み出し、さらに、ハードワイヤードで記憶された秘密鍵pと、素数nとを読み出し、下記式(4)に代入して、共通鍵dhを作成する(S505)。
共通鍵dh=b
^p mod n・・・(4)
第6情報処理装置6は、遊技の進行に応じて、記憶装置から暗号化データを読み出し、生成した共通鍵dhを用いて暗号化データを復号する(S506)。
上述のように、暗号処理システム300において、開発元は、秘密鍵sを秘密にすることにより、データの改ざんによる不正行為を防止することができる。
【0018】
しかし、暗号処理システム300では、公開鍵aが1種類であるため、設計元から各開発元に公開鍵aを含む共通の開発環境が提供される。したがって、暗号処理システム300において、公開鍵aを含む開発環境が第三者に手に入れられたとき、第三者によるデータの改ざんを防止できないことがある。
【0019】
具他的には、公開鍵aを含む開発環境を第三者が手に入れ、第三者が任意に秘密鍵saを設定し、任意の秘密鍵saを用いて公開鍵baと、共通鍵dhaとを作成する。また、第三者は、共通鍵dhaを用いて改ざん目的で作成したデータを暗号化した不正な暗号化データを作成する。さらに、第三者は、作成した不正な公開鍵baと、不正な暗号化データとを記憶した不正な記憶装置を作成する。そして、第三者は、第6情報処理装置6に含まれる記憶装置と、作成した不正な記憶装置とを差し替える。すると、第6情報処理装置6は、改ざんされたデータを復号してそのデータに従った処理を実行することになる。したがって、暗号処理システム300では、データの改ざんによる不正行為を防止することができないことがある。
【0020】
図2は、開発元識別子を用いた暗号処理システムの一実施例を示す図である。
図2を参照して、データを作成する開発元を識別する開発元識別子(以下、開発元IDともいう。)を用いた暗号処理システム100の一実施例を説明する。具体的には、データの改ざんによる不正行為を防止するために、各開発元に、各開発元を識別する開発元IDを用いて作成された公開鍵A(第1公開鍵)を含む、開発環境を提供するというものである。
【0021】
暗号処理システム100は、第1情報処理装置1(以下、鍵作成装置ともいう。)と、第2情報処理装置2(以下、暗号化装置ともいう。)と、第3情報処理装置3(以下、復号装置ともいう。)とを含む。
【0022】
第1情報処理装置1は、設計元で用いられるコンピュータ装置である。第2情報処理装置2は、開発元で用いられるコンピュータ装置である。第3情報処理装置3は、例えば、復号装置を含む画像処理装置である。以下の説明において、設計元の処理は、第1情報処理装置1を用いて処理されるものである。また、開発元の処理は、第2情報処理装置2を用いて処理されるものである。なお、第3情報処理装置3は、遊技機などに用いられる画像処理装置の他、例えば、復号装置を含む、パソコン、輸送機器、ゲーム機、及びVR装置などに用いられる各種情報処理装置でもよい。
【0023】
設計元は、DH鍵交換を行うための生成元G(第1設定値)と、素数N(第2設定値)とを設定し、開発元と共有する。さらに、設計元は、マスターキー(第3設定値)と、開発元IDとを設定し、第3情報処理装置3に設定したマスターキーと、開発元IDと、素数Nとをハードワイヤードで記憶する。
【0024】
より具体的には、マスターキーと、素数Nとは、第3情報処理装置3に含まれる集積回路上の配線やヒューズを用いた第1結線論理(以下、第1数値記憶部ともいう。)を用いて記憶される。また、開発元IDは、第3情報処理装置3に含まれる集積回路を実装する基板上の第2結線論理(以下、第2数値記憶部ともいう。)を用いて記憶される。
【0025】
第3情報処理装置3に含まれる集積回路は、例えば、電源とグランドとの間にプルアップ抵抗と、ヒューズとを直列に接続し、かつプルアップ抵抗と、ヒューズとの間に出力線を接続した1以上の選択回路を有する第1結線論理を含む。このとき、プルアップ抵抗は電源側に接続され、ヒューズはグランド側に接続される。
【0026】
設計元は、集積回路をパッケージングする前の段階で、第1結線論理に含まれる各選択回路のヒューズ部分に高電圧をかけてヒューズを焼き切る、またはそのままにするという選択をする。これにより、設計元は、第1結線論理に含まれる各出力線からの出力のHレベルと、Lレベルとを切り替えて第1結線論理に、マスターキーと、素数Nとの値を記憶する。
【0027】
第3情報処理装置3は、集積回路上の第1結線論理からの出力を検出し、マスターキーと、素数Nとを読み出す。上記の第1結線論理の構成は一例であり、例えば、プルダウン抵抗を用いる構成やアンチヒューズを用いる構成などの、他の構成を用いてもよい。また、マスターキーと、素数Nとは、EPROM (Erasable Programmable Read Only Memory)や、電子ヒューズ(eFuse)を用いて記憶されてもよい。
【0028】
第3情報処理装置3に含まれる集積回路を実装する基板は、例えば、電源とグランドとの間の接続と開放とを切り替える2本のピンと、グランド側のピンとグランドとの間に接続されるプルダウン抵抗と、グランド側のピンとプルダウン抵抗との間に接続される出力線とを備えた1以上の選択回路を有する第2結線論理を含む。
【0029】
設計元は、ピンヘッダを基板上に配置して、第2結線論理に含まれる各選択回路の2本のピンにジャンパを刺す、または刺さないという選択をする。これにより、設計元は、第2結線論理に含まれる各出力線からの出力のHレベルと、Lレベルとを切り替えて第2結線論理に、開発元IDの値を記憶する。
【0030】
第3情報処理装置3は、基板上の第2結線論理からの出力を検出し、開発元IDを読み出す。上記の第2結線論理の構成は一例であり、例えば、第2結線論理に含まれる選択回路の2本のピンを配線により接続する構成、ディップスイッチを用いる構成、出力線に電源またはグランドを直接接続する構成などの、他の構成を用いてもよい。
なお、マスターキーと、開発元IDと、素数Nとは、それぞれ、第1結線論理及び第2結線論理のいずれか、または両方を適宜選択して記憶されてもよい。
以下の説明では、第1結線論理及び第2結線論理のことを、単に記憶部または記憶装置ともいう。
【0031】
図3は、秘密鍵Pの生成処理を示す図である。
図3を参照して、秘密鍵P(第1秘密鍵)の生成処理を説明する。
設計元は、カウンタから出力される指定数の各カウント値と、設定したマスターキーとをそれぞれ組み合わせた組合値Cを生成する。また、設計元は、開発元IDを暗号鍵として用いて、生成した複数の組合値Cをそれぞれ暗号化処理する。さらに、設計元は、暗号化処理をした指定数の暗号化組合値CCを連結して秘密鍵Pを作成する(S601)。
【0032】
図2を参照して説明する。
設計元は、生成元Gと、秘密鍵Pと、素数Nとを下記式(5)に代入して、公開鍵Aを作成する。そして、設計元は、作成した公開鍵Aを含む、開発環境を開発元に提供する(S602)。
公開鍵A=G
^P mod N・・・(5)
【0033】
また、開発元は、乱数などを用いて秘密鍵Sを生成し、生成元G、秘密鍵Sと、素数Nとを下記式(6)に代入して、公開鍵Bを作成する。そして、開発元は、作成した公開鍵Bを第3情報処理装置3に含まれる記憶装置に格納する(S603)。
公開鍵B=G
^S mod N・・・(6)
さらに、開発元は、公開鍵Aと、秘密鍵Sと、素数Nとを下記式(7)に代入して、共通鍵DH(共通鍵)を作成する(S604)。
共通鍵DH=A
^S mod N・・・(7)
【0034】
そして、開発元は、共通鍵DHを用いて、開発元が作成した画像データやプログラムデータなどを暗号化する。そして、開発元は、暗号化した暗号化データを第3情報処理装置3の記憶装置に格納する(S605)。
【0035】
図3を参照して説明する。
第3情報処理装置3は、起動時に、カウンタから出力される指定数の各カウント値と、設定したマスターキーとをそれぞれ組み合わせた組合値Cを生成する。また、第3情報処理装置3は、開発元IDを暗号鍵に用いて、生成した複数の組合値Cをそれぞれ暗号化処理する。さらに、第3情報処理装置3は、暗号化処理をした指定数の暗号化組合値CCを連結して秘密鍵Pを作成する(S606)。
【0036】
図2を参照して説明する。
そして、第3情報処理装置3は、記憶装置から公開鍵Bと、素数Nとを読み出し、読み出した公開鍵Bと、素数Nと、作成した秘密鍵Pとを下記式(8)に代入して、共通鍵DHを作成する(S607)。
共通鍵DH=B
^P mod N・・・(8)
第3情報処理装置3は、遊技の進行に応じて、記憶装置から暗号化データを読み出し、生成した共通鍵DHを用いて暗号化データを復号する(S608)。
以上により、暗号処理システム100において、開発元は、秘密鍵Sを秘密にすることにより、データの改ざんによる不正行為を防止することができる。
【0037】
図4は、公開鍵Aと顧客IDとの対応関係の説明図である。
図4を参照して、公開鍵Aと顧客IDとの対応関係を説明する。
暗号処理システム100では、第1情報処理装置1と第3情報処理装置3とで秘密鍵Pを生成するとき、互いに開発元IDを用いるので、開発元IDと公開鍵Aとの間に対応関係が生じる。これにより、第3情報処理装置3は、第2結線論理に記憶された開発元IDに対応する公開鍵Aではない、他の公開鍵を用いて作成された共通鍵で暗号化データを復号したとき、破損した画像データや起動できないプログラムデータを出力することになる。このとき、第3情報処理装置3は、まともに動作しなくなる。
【0038】
また、暗号処理システム100では、設計元は、開発元IDに対応する公開鍵Aを含む開発環境と、開発元IDを記憶している第3情報処理装置3とを各開発元に提供する。よって、第三者は、第3情報処理装置3に対応する公開鍵Aを含む開発環境を手に入れることが困難である。したがって、第三者は、データを改ざんし、改ざんしたデータを記憶した不正な記憶装置を第3情報処理装置3の記憶装置と差し替えても、第3情報処理装置3にまともにデータを出力させることができない。以上により、第3情報処理装置3は、データの改ざんによる不正行為を防止することができる。
【0039】
図5は、暗号処理システムの一実施例を示すブロック図である。
図5を参照して、第1情報処理装置1(鍵作成装置)と、第2情報処理装置2(暗号化装置)と、第3情報処理装置3(復号装置)とを含む暗号化システム100についてさらに説明する。第1情報処理装置1と、第2情報処理装置2と、第3情報処理装置3とは、例えば、後述するコンピュータ装置200である。
【0040】
第1情報処理装置は、例えば、設計元で使用されるコンピュータ装置である。また、第2情報処理装置は、例えば、開発元で使用されるコンピュータ装置であり、設計元から提供される、開発元を識別する開発元IDに対応する公開鍵Aを含むデータ作成プログラムを実行する。第3情報処理装置3は、設計元で設計及び製造され、開発元に提供されるコンピュータ装置であり、例えば、パチンコやスロットなどの遊技機に用いられる画像処理装置である。データ作成プログラムは、第3情報処理装置3の記憶装置に格納するデータを作成するためのプログラムである。
【0041】
暗号化システム100では、DH鍵交換が用いられる。設計元は、DH鍵交換を行うための生成元Gと、素数Nとを設定する。そして、設計元と、開発元との間で生成元Gと、素数Nとを予め共有する。さらに、設計元は、第3情報処理装置の第2記憶部50に第3情報処理装置3の提供先である開発元の開発元IDと、素数Nと、マスターキーとを格納する。
【0042】
第1情報処理装置1は、第1制御部10を含む。第1制御部10は、第1取得部11と、第1カウント部12と、第1生成部13と、第1作成部14とを含む。
【0043】
第1取得部11は、生成元Gと、素数Nと、マスターキーと、開発元IDとを取得する。第1取得部11は、例えば、設計元からの入力を受け付けることにより、生成元Gと、素数Nと、マスターキーと、開発元IDとを取得する。生成元Gと、素数Nと、マスターキーと、開発元IDとは、例えば、設計元で任意に設定される値である。生成元Gと素数Nとは、DH鍵交換で用いられる値である。マスターキーは、例えば、設計元が任意に設定し、秘密にされる値である。開発元IDは、例えば、設計元が第3情報処理装置3の提供先の開発元それぞれに任意に振り分ける識別子である。
【0044】
そして、第1取得部11は、第1生成部13に、マスターキーと、開発元IDとを出力する。さらに、第1取得部11は、第1作成部14に、生成元Gと、素数Nとを出力する。
第1カウント部12は、値をカウントし、指定数Dのカウント値を第1生成部13に出力する。指定数Dは、例えば、開発元により指定される。
【0045】
指定数Dは、秘密鍵Pのビット数を暗号化組合値CCのビット数で除算した数である。すなわち、指定数Dは、例えば、カウント値とマスターキーとを組み合わせた暗号化組合値CCのビット数Lと、秘密鍵Pのビット数Mとを下記式(9)に代入して得られる値である。
指定数D=M/L・・・(9)
【0046】
具体的には、第1カウント部12は、例えば、暗号化組合値CCが128bitであり、秘密鍵Pのビット数が2048bitであるとき、指定数D=16となるので、0〜15までカウントし、16個のカウント値を出力する。なお、第1カウント部12は、指定数D個の異なる値のカウント値を出力してもよい。指定数が16のとき、第1カウント部12は、16個の異なる値のカウント値を出力してもよい。
第1生成部13は、開発元IDを用いて秘密鍵Pを生成する。
【0047】
第1生成部13は、一例として、
図3に示すように、第1カウント部12でカウントされた各カウント値と、マスターキーとを組み合わせて指定数の組合値Cを生成する。そして、第1生成部13は、開発元IDを暗号鍵に用いて、生成した各組合値Cを暗号化処理し、暗号化処理をした指定数の暗号化組合値CCを連結して秘密鍵Pを生成する。第1生成部13は、第1作成部14に、生成した秘密鍵Pを出力する。
【0048】
組合値Cは、例えば、マスターキーと、カウント値との論理和でもよい。また、組合値Cは、例えば、マスターキーと、カウント値との加算や論理積でもよいし、連結でもよい。
【0049】
また、暗号化処理は、例えば、DES(Data ENcryptioN StaNdard)、やAES(AdvaNced ENcryptioN StaNdard)などの任意のブロック暗号処理を用いてもよい。
【0050】
第1作成部14は、秘密鍵Pで生成元Gをべき乗した値を、素数Nで除算した余りである公開鍵Aを作成する。より具体的には、第1作成部14は、第1取得部11から入力された生成元G及び素数Nと、第1生成部13から入力された秘密鍵Pとを式(5)に代入して、公開鍵Aを作成する。そして、第1作成部14は、公開鍵Aを開発元に提供する。第1作成部14は、例えば、公開鍵Aを、データ作成プログラムに組み込んでもよい。これにより、開発元には、第2情報処理装置2でデータ作成プログラムを実行したとき、公開鍵Aが提供される。すなわち、第1作成部14は、各開発元で異なる開発元IDを用いて生成した秘密鍵Pを生成し、生成した秘密鍵Pを用いて公開鍵Aを作成し、各開発元に異なる公開鍵Aを提供する。
【0051】
第2情報処理装置2は、第2制御部20と、第1記憶部30とを含む。第2制御部20は、第2取得部21と、第2作成部22と、暗号化部23とを含む。第1記憶部30は、第1設定情報31と、第1鍵情報32とを記憶する。
第1設定情報31は、開発元と共有する生成元Gと、素数Nとを含む。第1鍵情報32は、公開鍵Aを含む。
【0052】
第2取得部21は、公開鍵Aと開発元が任意に設定した秘密鍵S(第2秘密鍵)を取得する。そして、第2取得部21は、第2作成部22に、秘密鍵Sを出力する。また、第2取得部21は、秘密鍵Sを第1鍵情報32に格納してもよい。
【0053】
第2取得部21は、例えば、第2情報処理装置2で実行されるデータ作成プログラムに組み込まれた公開鍵Aを取得する。そして、第2取得部21は、公開鍵Aを第1鍵情報32に格納する。
【0054】
第2作成部22は、生成元Gを秘密鍵Sでべき乗した値を素数Nで除算した余りである公開鍵B(第2公開鍵)を作成する。具体的には、第2作成部22は、第1記憶部30から読み出した生成元G及び素数Nと、第2取得部21から入力された秘密鍵Sとを式(6)に代入して、公開鍵Bを作成する。そして、第2作成部22は、作成した公開鍵Bを、第3情報処理装置3に接続される記憶装置に格納する。第3情報処理装置3が画像処理装置であるとき、公開鍵Bは、例えば、CGROMの先頭の領域に格納されてもよい。
【0055】
第2作成部22は、公開鍵Aを秘密鍵Sでべき乗した値を、素数Nで除算した余りである共通鍵DHを作成する。具体的には、第2作成部22は、第1記憶部30から読み出した素数N及び公開鍵Aと、第2取得部21から入力された秘密鍵Sとを式(7)に代入して、共通鍵DHを作成する。
【0056】
暗号化部23は、第2作成部22で作成された共通鍵DHを用いて、開発元が第2情報処理装置2でデータ作成プログラムを実行することにより作成したデータを暗号化する。そして、暗号化部23は、暗号化データを第3情報処理装置3の第2記憶部50に格納する。また、暗号化処理は、復号部44の復号処理と対応した処理であればよく、例えば、DES(Data Encryption Standard)、またはAES(Advanced Encryption Standard)などの任意の暗号処理を用いてもよい。
【0057】
第3情報処理装置3は、第3制御部40と、第2記憶部50とを含む。第3制御部40は、第2カウント部41と、第2生成部42と、第3作成部43と、復号部44とを含む。第2記憶部50は、第2設定情報51と、第2鍵情報52と、識別情報53と、データ情報54とを記憶する。
【0058】
第2設定情報51は、マスターキーと、素数Nとを含む。第2鍵情報52は、公開鍵Bを含む。識別情報53は、開発元IDを含む。データ情報54は、暗号化データを含む。
【0059】
第2記憶部50は、例えば、集積回路上の第1結線論理を用いて数値を記憶する第1数値記憶部を含む。さらに、第2記憶部50は、例えば、集積回路を実装する基板上の第2結線路理を用いて数値を記憶する第2数値記憶部を含む。そして、マスターキーと、素数Nとは、第1数値記憶部に記憶されてもよい。開発元IDは、第2数値記憶部に記憶されてもよい。なお、マスターキーと、開発元IDと、素数Nとは、それぞれ、第1数値記憶部及び第2数値記憶部のいずれか、または両方を適宜選択して記憶されてもよい。
【0060】
第2カウント部41は、値をカウントし、指定数Dのカウント値を第2生成部42に出力する。第2カウント部41のカウント処理は、第1カウント部12と同様のカウント処理であり、第1カウント部12と同じ値のカウント値を出力するものである。
第2生成部42は、開発元IDを用いて秘密鍵Pを生成する。
【0061】
第2生成部42は、一例として、
図3に示すように、第2カウント部41でカウントされた各カウント値と、マスターキーとを組み合わせて指定数の組合値Cを生成する。そして、第2生成部42は、開発元IDを暗号鍵に用いて、生成した各組合値Cを暗号化処理し、暗号化処理をした指定数の暗号化組合値CCを連結して秘密鍵Pを生成する。第2生成部42は、第2作成部22に、生成した秘密鍵Pを出力する。第2生成部42の生成処理は、第1生成部13と同様の生成処理であり、第1生成部13と同じ秘密鍵Pを出力するものである。
【0062】
第3作成部43は、第2生成部42から入力された秘密鍵Pで公開鍵Bをべき乗した値を、素数Nで除算した余りである共通鍵DHを作成する。具体的には、第3生成部43は、秘密鍵Pと、公開鍵Bと、素数Nとを式(8)に代入して、共通鍵DHを作成する。
【0063】
復号部44は、共通鍵DHを用いて、第2記憶部50に格納されている暗号化データを復号する。また、復号処理は、暗号化部23の暗号化処理と対応した処理であればよく、例えば、DESまたはAESなどの任意の暗号処理を用いてもよい。
【0064】
上記の説明では、第1生成部13と第2生成部42とは、マスターキーとカウンタ値とを用いて生成した複数の組合値Cを、開発元IDを暗号鍵として用いてそれぞれ暗号化処理をする。そして、第1生成部13と第2生成部42とは、複数の組合値Cを暗号化して生成した複数の暗号化組合値CCを連結して、秘密鍵Pを作成するものとして説明したが、これに限定されるものではない。
【0065】
第1生成部13と第2生成部42とは、開発元IDを用いて、任意の方法で秘密鍵Pを生成してもよい。具体的には、第1生成部13と第2生成部42とは、例えば、開発元IDと、マスターキーとを暗号鍵として用いて暗号化処理をして秘密鍵Pを生成してもよい。また、第1生成部13と第2生成部42とは、例えば、開発元IDとカウンタ値とを用いて複数の組合値C2を生成し、マスターキーを暗号鍵として用いてそれぞれ暗号化処理をした複数の暗号化組合値CC2を生成してもよい。そして、第1生成部13と第2生成部42とは、複数の暗号化組合値CC2を連結して秘密鍵Pを作成してもよい。
【0066】
また、第1生成部13と第2生成部42とは、擬似乱数生成器を含み、擬似乱数生成器に開発元IDを入力して秘密鍵Pを生成してもよい。すなわち、秘密鍵Pは、擬似乱数生成器を用いて生成されてもよい。擬似乱数生成器は、暗号論的擬似乱数生成器(CSPRNG)でもよい。
【0067】
なお、CSPRNGとは、Cryptographically Secure Pseudo RaNdom Number GeNeratorの略であり、暗号技術での利用に適した特性を持つ暗号論的擬似乱数生成器のことである。
【0068】
図6は、第1情報処理装置における処理を示すフローチャートである。
図6を参照して、第1情報処理装置における処理を説明する。
第1取得部11は、マスターキーと、開発元IDとを取得したか否かを判定する(S101)。そして、第1取得部11は、マスターキーと、開発元IDとを取得していないとき(S101でNo)、S101の処理を繰り返し実行する。
第1取得部11は、マスターキーと、開発元IDとを取得したとき(S101にてYes)、第1生成部13に、マスターキーと、開発元IDとを出力する。
【0069】
第1生成部13は、第1取得部11から入力されたマスターキーと、開発元IDとを取得すると、秘密鍵Pを生成する(S102)。そして、第1生成部13は、秘密鍵Pを第1作成部14に出力する。
【0070】
図7は、秘密鍵Pを作成する処理を示すフローチャートである。
図7を参照して、S102における秘密鍵Pを作成する処理を説明する。
第1生成部13は、第1カウント部12からカウント値が入力されたか否かを判定する(S201)。第1生成部13は、第1カウント部12からカウント値が入力されていないとき(S201にてNo)、S201の処理を繰り返し実行する。
【0071】
第1生成部13は、第1カウント部12からカウント値が入力されたとき(S201にてYes)、第1カウント部12でカウントされたカウント値と、マスターキーとを組み合わせて組合値Cを生成する(S202)。
第1生成部13は、開発元IDを暗号鍵に用いて、生成した組合値Cを暗号化処理し、暗号化組合値CCを生成する(S203)。
【0072】
第1生成部13は、入力されたカウント値の数(以下、カウント数ともいう。)が指定数Dであるか否かを判定する(S204)。第1生成部13は、カウント数が指定数Dでないとき(S204にてNo)、S201の処理を実行する。これ以降の処理では、S201において、第1生成部13は、前回までに入力されたカウント値と異なるカウント値が入力されたか否かを判定する。そして、第1生成部13は、前回までに取得したカウント値と異なるカウント値が入力されたとき、S202の処理を実行する。第1生成部13は、例えば、第1カウント部12によりカウント値がインクリメントされている場合には、S201において、0、1、2、3・・・の順で指定数Dの異なるカウント値が入力されるまでS201〜S204の処理を繰り返し実行する。
【0073】
第1生成部13は、カウント数が指定数Dのとき(S204にてYes)、S203において生成された指定数の暗号化組合値CCを連結させて秘密鍵Pを生成する(S205)。
【0074】
そして、第1生成部13は、第1カウント部12のカウント値をリセットする(S206)。第1生成部13は、例えば、第1カウント部12によりによりカウント値がインクリメントされている場合には、S206において、カウント部(第1カウント部12または第2カウント部41)のカウント値を0にする。
【0075】
図6を参照して説明する。
第1取得部11は、生成元Gと、素数Nとを取得したか否かを判定する(S103)。第1取得部11は、生成元Gと、素数Nとを取得していないとき(S103にてNo)、S103の処理を繰り返し実行する。
第1取得部11は、生成元Gと、素数Nとを取得したとき(S103にてYes)、第1作成部14に生成元Gと、素数Nとを出力する。
【0076】
第1作成部14は、第1取得部11から入力された生成元G及び素数Nと、第1生成部13から入力された秘密鍵Pとを式(5)に代入し、公開鍵Aを作成する(S104)。
そして、第1作成部14は、公開鍵Aをデータ作成プログラムに組み込む(S105)。
【0077】
上述の説明では、S102において、マスターキーとカウンタ値とを用いて生成した複数の組合値Cを、開発元IDを暗号鍵として用いて暗号化処理し、暗号化組合値CCを連結して秘密鍵Pを作成する処理を説明したが、これに限定されるものではない。S102では、開発元IDを用いて、任意の方法で秘密鍵Pを生成してもよい。また、S102では、擬似乱数生成器に開発元IDを入力して秘密鍵Pを生成してもよい。すなわち、秘密鍵Pは、擬似乱数生成器を用いて生成されてもよい。
【0078】
図8は、第2情報処理装置における処理を示すフローチャートである。
図8を参照して、第2情報処理装置における処理を説明する。
以下の説明では、第2情報処理装置2にデータ作成プログラムがインストールされ、データ作成プログラムに組み込まれている公開鍵Aは、第2取得部21により取得され、第1記憶部30に格納されているものとする。
【0079】
第2取得部21は、秘密鍵Sを取得したか否かを判定する(S301)。そして、第2取得部21は、秘密鍵Sを取得していないとき(S301でNo)、S301の処理を繰り返し実行する。
第2取得部21は、秘密鍵Sを取得したとき(S301にてYes)、第2作成部22に秘密鍵Sを出力する。
【0080】
第2作成部22は、秘密鍵Sが入力されると、秘密鍵Sと、第1記憶部30に格納されている生成元Gと、素数Nとを式(6)に代入し、公開鍵Bを作成する(S302)。
【0081】
さらに、第2作成部22は、第2取得部21から秘密鍵Sが入力されると、秘密鍵Sと、素数Nと、第1記憶部30に格納されている公開鍵Aとを式(7)に代入し、共通鍵DHを作成する(S303)。
そして、第2作成部22は、第3情報処理装置3の第2記憶部50に公開鍵Bを格納する(S304)。
暗号化部23は、第2作成部22で作成された共通鍵DHを用いて、開発元が作成したデータを暗号化する(S305)。
そして、暗号化部23は、暗号化データを第3情報処理装置3の第2記憶部50に格納する(S306)。
【0082】
図9は、第3情報処理装置における処理を示すフローチャートである。
図9を参照して、第3情報処理装置3における処理を説明する。
以下の説明では、第2情報処理装置2で作成された公開鍵Bは、第2記憶部50に格納されているものとする。
第2生成部42は、例えば、第3情報処理装置3が起動されたとき、第2記憶部50に格納されているマスターキーと、開発元IDと、第2カウント部41のカウント値とを用いて、秘密鍵Pを作成する(S401)。第2生成部42の秘密鍵Pの作成処理は、
図3を用いて説明した第1生成部13の秘密鍵Pの作成処理と同様であるため説明を省略する。
【0083】
第3作成部43は、第2生成部42で作成された秘密鍵Pと、第2記憶部50に格納されている素数Nと、公開鍵Bとを式(8)に代入して、共通鍵DHを作成する(S402)。
復号部44は、共通鍵DHを用いて、第2記憶部50に格納されている暗号化データを復号する(S403)。
【0084】
上述の説明では、S401において、マスターキーとカウンタ値とを用いて生成した複数の組合値Cを、開発元IDを暗号鍵として用いて暗号化処理し、暗号化組合値CCを連結して秘密鍵Pを作成する処理を説明したが、これに限定されるものではない。S401では、開発元IDを用いて、任意の方法で秘密鍵Pを生成してもよい。また、S401では、擬似乱数生成器に開発元IDを入力して秘密鍵Pを生成してもよい。すなわち、秘密鍵Pは、擬似乱数生成器を用いて生成されてもよい。
【0085】
図10は、コンピュータ装置の一実施例を示すブロック図である。
図10を参照して、コンピュータ装置200の構成について説明する。
図10において、コンピュータ装置200は、制御回路201と、記憶装置202と、読書装置203と、記録媒体204と、通信インターフェイス205と、入出力インターフェイス206と、入力装置207と、表示装置208と、結線論理209とを含む。また、通信インターフェイス205は、ネットワーク210と接続される。そして、各構成要素は、バス211により接続される。第1情報処理装置1と、第2情報処理装置2と、第3情報処理装置3とは、それぞれコンピュータ装置200に記載の構成要素の一部または全てを適宜選択して構成することができる。
【0086】
制御回路201は、コンピュータ装置200全体の制御をする。そして、制御回路201は、例えば、CPU(Central Processing Unit)、マルチコアCPU、FPGA(Field Programmable Gate Array)およびPLD(Programmable Logic Device)などのプロセッサである。そして、制御回路201は、例えば、
図5において、第1制御部10、第2制御部20、及び第3制御部40として機能する。
【0087】
記憶装置202は、各種データを記憶する。そして、記憶装置202は、例えば、ROM(Read Only Memory)およびRAM(Random Access Memory)などのメモリや、HD(Hard Disk)などである。記憶装置202は、例えば、
図5において、第1記憶部30と、第2記憶部50として機能する。そして、記憶装置202は、第1記憶部30として機能するとき、
図5に示す、第1設定情報31と、第1鍵情報32とを記憶してもよい。また、記憶装置202は、第2記憶部50として機能するとき、
図5に示す、第2設定情報51と、第2鍵情報52と、識別情報53と、データ情報54とを記憶しても良い。
【0088】
また、ROMは、ブートプログラムなどのプログラムを記憶している。RAMは、制御回路201のワークエリアとして使用される。HDは、OS、アプリケーションプログラム、ファームウェアなどのプログラム、および各種データを記憶している。
【0089】
第1情報処理装置1の記憶装置202は、制御回路201を、第1取得部11と、第1カウント部12と、第1生成部13と、第1作成部14として機能させる鍵作成プログラムを記憶してもよい。また、第2情報処理装置2の記憶装置202は、第2取得部21と、第2作成部22と、暗号化部23として機能させる暗号化プログラムと、データ作成プログラムとを記憶してもよい。さらに、第3情報処理装置3の記憶装置202は、第2カウント部41と、第2生成部42と、第3作成部43と、復号部44として機能させる復号プログラムを記憶してもよい。また、第1情報処理装置1〜第3情報処理装置3の記憶装置202は、制御回路201を、第1制御部10と、第2制御部20と、第3制御部40として機能させる暗号処理プログラムを記憶してもよい。
【0090】
情報処理装置1〜情報処理装置3は、暗号処理をするとき、記憶装置202に記憶されたプログラムをRAMに読み出す。RAMに読み出されたプログラムを制御回路201で実行することにより、情報処理装置1〜情報処理装置3は、それぞれ取得処理と、カウント処理と、生成処理と、作成処理と、暗号化処理と、復号処理との1以上を含む暗号処理を実行する。
【0091】
なお、上述の各プログラムは、制御回路201が通信インターフェイス205を介してアクセス可能であれば、ネットワーク210上のサーバが有する記憶装置に記憶されていても良い。
【0092】
読書装置203は、制御回路201に制御され、着脱可能な記録媒体204のデータのリード/ライトを行なう。そして、読書装置203は、例えば、FDD(Floppy Disk Drive)、CDD(Compact Disc Drive)、DVDD(Digital Versatile Disk Drive)、BDD(Blu−ray(登録商標) Disk Drive)およびUSB(Universal Serial Bus)などである。
【0093】
記録媒体204は、各種データを保存する。記録媒体204は、例えば、鍵作成プログラム、暗号化プログラム、復号プログラム、及び暗号処理プログラムのいずれか1以上を記憶する。さらに、記録媒体204は、
図5に示す、第1設定情報31と、第1鍵情報32と、第2設定情報51と、第2鍵情報52と、識別情報53と、データ情報54とを記憶しても良い。
【0094】
そして、記録媒体204は、読書装置203を介してバス211に接続され、制御回路201が読書装置203を制御することにより、データのリード/ライトが行なわれる。また、記録媒体204は、例えば、SDメモリーカード(SD Memory Card)、FD(Floppy Disk)、CD(Compact Disc)、DVD(Digital Versatile Disk)、BD(Blu−ray(登録商標) Disk)、およびフラッシュメモリなどの非一時的記録媒体である。
【0095】
通信インターフェイス205は、ネットワーク210を介してコンピュータ装置200と他の装置とを通信可能に接続する。また、通信インターフェイス205は、無線LANの機能を有するインターフェイス、および近距離無線通信機能を有するインターフェイスを含んでも良い。そして、無線LANインターフェイスは、例えば、無線LAN規格として、Wi−Fi(登録商標)をサポートしても良い。近距離無線インターフェイスは、例えば、近距離無線通信規格として、Bluetooth(登録商標)をサポートしても良い。LANは、Local Area Networkの略である。
【0096】
入出力インターフェイス206は、例えば、キーボード、マウス、およびタッチパネルなどの入力装置207と接続され、接続された入力装置207から各種情報を示す信号が入力されると、バス211を介して入力された信号を制御回路201に出力する。また、入出力インターフェイス206は、制御回路201から出力された各種情報を示す信号がバス211を介して入力されると、接続された各種装置にその信号を出力する。入出力インターフェイス206は、例えば、ユーザによる生成元G、素数N、マスターキー、開発元ID及び秘密鍵Sの入力を受け付けても良い。入出力インターフェイス206は、制御回路201と共に動作することにより、例えば、
図5において、第1取得部11、及び第2取得部21として機能する。
表示装置208は、各種情報を表示する。表示装置208は、タッチパネルでの入力を受け付けるための情報を表示しても良い。
【0097】
結線論理209は、例えば、ハードワイヤードで形成された論理メモリである。そして、結線論理209は、例えば、第3情報処理装置3に備えられ、素数Nと、マスターキーと、開発元IDとを格納する。結線論理209は、例えば、
図5において、第2記憶部50に含まれる第1数値記憶部及び第2数値記憶部として機能する。素数Nと、マスターキーとは、例えば、第1数値記憶部に記憶される。また、開発元IDは、例えば、第2数値記憶部に記憶される。
ネットワーク210は、例えば、LAN、無線通信、またはインターネットなどであり、コンピュータ装置200と他の装置を通信接続する。
【0098】
以上のように、鍵作成装置(第1情報処理装置1)及び復号装置(第3情報処理装置3)は、DH鍵交換において、開発元IDを用いて秘密鍵Pを生成する。また、鍵作成装置は、生成した秘密鍵Pを用いて、公開鍵Aを作成する。これにより、復号装置は、復号装置にハードワイヤードで記憶している開発元IDに対応する公開鍵Aではない、他の公開鍵を用いて作成された共通鍵で暗号化データを復号したとき、破損した画像データや起動できないプログラムデータを出力することになる。このとき、復号装置は、画像データやプログラムデータをまともに、表示及び実行できなくなる。暗号処理システム100では、設計元は、開発元IDに対応する公開鍵Aを含む開発環境と、開発元IDを記憶している復号装置とを各開発元に提供する。よって、第三者は、復号装置に対応する公開鍵Aを含む開発環境を手に入れることが困難である。したがって、第三者は、データを改ざんし、改ざんしたデータを記憶した不正な記憶装置を復号装置の記憶装置と差し替えても、復号装置にまともにデータを出力させることができない。以上により、鍵作成装置及び復号装置は、データの改ざんによる不正行為を防止することができる。
【0099】
実施形態の鍵作成装置及び復号装置は、開発元IDと、マスターキーとを用いて秘密鍵Pを生成する。これにより、第三者は、マスターキーと、開発元IDとを知らないと、鍵作成装置及び復号装置で秘密鍵Pを生成するために使用されている暗号化アルゴリズムを知ったとしても、秘密鍵Pを生成することができない。したがって、鍵作成装置及び復号装置は、データの改ざんによる不正行為を防止することができる。
【0100】
実施形態の鍵作成装置及び復号装置は、暗号論的擬似乱数生成器(CSPRNG)を含み、暗号論的擬似乱数生成器を用いて秘密鍵Pを生成する。したがって、鍵作成装置及び復号装置は、暗号論的に適した秘密鍵Pを生成することができる。
【0101】
鍵作成装置及び復号装置は、例えば、マスターキーと指定数の各カウント値とを組み合わせた指定数の組合値Cを、それぞれ暗号化処理した暗号化組合値CCを連結することにより秘密鍵Pを作成している。また、安全なブロック暗号アルゴリズムを用いたCTRモードで、平文とXORする前のデータはCSPRNGと呼んで差し支えない性質を持つことがわかっている。したがって、鍵作成装置及び復号装置は、暗号論的に適した秘密鍵Pを生成することができる。
【0102】
実施形態の鍵作成装置及び復号装置は、カウンタにより、秘密鍵Pのビット数を暗号化組合値CCのビット数で除算した指定数Dをカウントし、そのカウント値とマスターキーとを組み合わせた指定数Dの組合値Cを用いて暗号化組合値CCを生成する。そして、鍵作成装置及び復号装置は、指定数の暗号化組合値CCを連結することで秘密鍵Pを生成している。これにより、復号装置は、ハードワイヤードでの記憶が困難である長いビット数の秘密鍵Pに代えて、短いビット数であるマスターキー、開発元IDと、素数Nとをハードワイヤードで記憶すればよいため、製造コストを削減することができる。
【0103】
実施形態の復号装置は、マスターキー及び素数Nを、復号装置に含まれる集積回路上の第1結線論理を用いて数値を記憶する。集積回路は、マスターキー及び素数Nを記憶したあとにパッケージングされるので、第三者による、マスターキーの取得を困難にしている。したがって、復号装置は、データの改ざんによる不正行為を防止することができる。
【0104】
実施形態の復号装置は、復号装置に含まれる集積回路を実装する基板上の第2結線論理を用いて数値を記憶する。基板は、筐体の内部に固定されているので、開発元IDを得るために基板の配線を確認しようとするとき、筐体を開いて確認する必要がある。これにより、復号装置は、第三者による、開発元IDの取得を困難にしている。したがって、復号装置は、開発元IDの不正な書き換えを抑制することができる。
【0105】
実施形態の復号装置は、マスターキー及び素数Nを、第1結線論理に記憶し、開発元IDを、第2結線論理で記憶する。マスターキー及び素数Nは、集積回路内の第1結線論理に記憶されるので低コストである。また、開発元IDは、ビット数が多くある必要がないので、基板上の第2結線論理に記憶しても低コストを実現できる。これにより、復号装置は、ビット数の多いマスターキー及び素数Nを集積回路内の配線によるハードワイヤードで設定し、ビット数の少ない開発者IDを実装面積の大きな基板上のヒューズ又はピンにより設定して実装面積を小さくすることができる。
【0106】
実施形態の復号装置は、開発元IDを、基板上の第2結線論理に記憶する。第2結線論理は、例えば、基板上でピンの短絡と開放とを選択することで、開発元IDを設定する構成にすることができる。これにより、復号装置は、設計元から開発元へ基板を提供する際の、開発元IDの設定を容易にすることができる。
【0107】
実施形態の暗号化装置は、開発元IDを用いて生成された秘密鍵Pを用いて作成された公開鍵Aと、秘密鍵Sとを取得する。そして、暗号化装置は、公開鍵Aと、秘密鍵Sとを用いて共通鍵DHを作成し、作成した共通鍵DHでデータを暗号化した暗号化データを復号装置の記憶装置に格納する。これにより、暗号化装置は、公開鍵Aに対応する開発元IDを格納した復号装置のみに、暗号化データから元のデータを復号させることができる。したがって、暗号化装置は、データの改ざんによる不正行為を防止することができる。
【0108】
なお、本実施形態は、以上に述べた実施形態に限定されるものではなく、本実施形態の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。