(57)【要約】【課題】有効な不正コピー防止対策がない状況を踏まえ、より高度で、かつ、不正コピーの攻撃を受けたとときでも被害を最小に抑える情報保護システムを提供する。【解決手段】情報保護システムにおいて、情報処理装置３００に情報記憶媒体２００が装着されたとき、情報記憶媒体２００に格納されたソフトウェアコンテンツに付される電子署名により真正なものであることを判定する電子署名による真贋判定処理（第１判定処理）１００と、情報処理装置３００と情報記憶媒体２００とがお互いに真正なものであることを判定する認証手順による真贋判定処理（第２判定処理）１０１と、情報記憶媒体２００に格納されたソフトウェアコンテンツに対する改竄の有無を判定する改竄検出処理（第３判定処理）１０２によって３重にセキュリティチェックを実行する。【選択図】図２
2012060320.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置と前記情報処理装置に着脱可能に装着される情報記憶媒体とによって構成される情報処理システムにおける前記情報記憶媒体に格納されたソフトウェアコンテンツに対する情報保護システムであって、
前記情報記憶媒体は、
ソフトウェアコンテンツが格納された第１記憶手段と、
前記ソフトウェアコンテンツに対する一方向ハッシュ関数に基づく第１要約値が格納された第２記憶手段と、
第１秘密鍵が格納された第３記憶手段と、
前記第１秘密鍵に対する公開鍵となる第１公開鍵が格納された第４記憶手段と、
前記情報記憶媒体及び前記情報処理装置とは別に秘密に保持される第２秘密鍵で前記第１要約値と前記第１公開鍵を含む情報を暗号化することにより生成された暗号文が格納された第５記憶手段と、
前記情報処理装置から供給される乱数に応答して、応答情報を生成する第１演算手段と、
を、備えてなり、
前記情報処理装置は、
前記第２秘密鍵に対する公開鍵となる第２公開鍵が格納された第６記憶手段と、
乱数生成手段と、
前記第５記憶手段から読み出した前記暗号文と前記第６記憶手段から読み出した前記第２公開鍵に基づく演算を行い前記第１要約値と前記第１公開鍵とを含む第１復号文を生成する第２演算手段と、
前記第２演算手段で生成された前記第１要約値と前記第１公開鍵とを含む前記第１復号文を、前記第２記憶手段から読み出した前記第１要約値及び前記第４記憶手段から読み出した前記第１公開鍵を含む情報と比較する第３演算手段と、
前記乱数生成手段で生成された乱数を前記情報記憶媒体の前記第１演算手段に送信する手段と、
前記第１演算手段から受信する演算結果に基づく演算を行う第４演算手段と、
前記第４演算手段の演算で得られた演算結果に基づく比較演算を行う第５演算手段と、
前記情報記憶媒体の前記第１記憶手段から読み出した前記ソフトウェアコンテンツに対し一方向ハッシュ関数に基づく第２要約値を生成する第６演算手段と、
前記第２要約値と前記情報記憶媒体の前記第２記憶手段から読み出した前記第１要約値とを比較する第７演算手段と、
を、備えてなり、
前記情報記憶媒体が前記情報処理装置に装着されているとき、
前記第３演算手段による比較処理に基づき、前記第２記憶手段に格納された前記第１要約値に対する真贋判定を行う第１判定処理と、
前記第５演算手段の演算結果に基づき前記情報記憶媒体が前記情報処理装置に対し真正なものであるか否かの認証判定を行う第２判定処理と、
第７演算手段による比較処理に基づき前記第２記憶手段に格納された前記第１要約値と前記第１記憶手段に格納された前記ソフトウェアコンテンツに対する改竄有無判定を行う第３判定処理と、
前記第１判定処理乃至前記第３判定処理の全てにおいて合格判定が得られたとき前記情報記憶媒体から読み出した前記ソフトウェアコンテンツの前記情報処理装置での実行を許可する処理と、
が行われる構成であることを特徴とする情報保護システム。
【請求項２】
請求項１に記載の情報保護システムにおいて、
前記第５記憶手段は、前記第１秘密鍵に対する公開鍵である前記第１公開鍵を前記第２秘密鍵で暗号化して得られた前記暗号文を格納する第５（１）記憶手段と、前記ソフトウェアコンテンツに対する一方向ハッシュ関数に基づく前記第１要約値を前記第２秘密鍵で暗号化して得られた暗号文を格納する第５（２）記憶手段とを含み、
第２演算手段は、前記第５（１）記憶手段から読み出した前記暗号文を前記第６記憶手段に格納された前記第２秘密鍵に対する公開鍵である前記第２公開鍵に基づき復号化する演算を行う第２（１）演算手段と、前記第５（２）記憶手段から読み出した前記暗号文を前記第２公開鍵に基づき復号化する演算を行う第２（２）演算手段とを含み、
前記第３演算手段は、前記第２（１）演算手段で復号化された復号文を前記第４記憶手段から読み出した前記第１秘密鍵に対する公開鍵と比較する第３（１）演算手段と、前記第２（２）演算手段で復号化された前記復号文を前記第２記憶手段から読み出した前記第１要約値と比較する第３（２）演算手段とを、
それぞれ含むことを特徴とする情報保護システム。
【請求項３】
請求項１に記載の情報保護システムにおいて、
前記情報記憶媒体はさらに、乱数生成手段と、第１演算引数選択手段と、法の数字を記憶する第７記憶手段とを含み、前記第５記憶手段には前記第１秘密鍵に対する公開鍵と前記第１要約値の合成値を一方向ハッシュ関数に基づき生成した要約値を前記第２秘密鍵で暗号化して得られた暗号文が格納されており、
前記情報処理装置はさらに、前記第４記憶手段から読み出した前記第１公開鍵と前記第２記憶手段から読み出した前記第１要約値との合成値を生成する第８演算手段と、前記第８演算手段で得られた合成値の一方向ハッシュ関数に基づく要約値を生成する第９演算手段と、第２演算引数選択手段と、法の数字を記憶する第８記憶手段と、前記第４演算手段の演算結果を記憶する第９記憶手段と、を含み、前記情報処理装置の乱数生成手段は“Ｕ＝０”と“Ｕ＝１”のいずれかを無作為に出力するものであり、
前記第１判定処理は、前記第２演算手段で復号された前記合成値の要約値である前記第１復号文を前記第９演算手段で生成された前記合成値の要約値と比較する処理が前記第３演算手段によって行われるものであり、
前記第２判定処理は、
前記第２判定処理の開始時に、前記情報記憶媒体において、前記第１演算手段がＲ2  ｍｏｄ  Ｎを演算し演算結果を前記情報処理装置に送信する処理を含み、
前記情報記憶媒体の乱数生成手段によって生成された乱数をＲ、前記第７記憶手段及び前記第８記憶手段に格納されている法の数字をそれぞれＮ、前記第１秘密鍵をＭ、前記第１公開鍵をＷとするとき、
（１）前記情報処理装置の乱数生成手段で生成される出力がＵ＝０のときは、
前記情報記憶媒体において、前記情報処理装置からの出力Ｕ＝０に応答して、前記第１演算手段がＲ2  ｍｏｄ  Ｎを演算し演算結果を前記情報処理装置に送信し、
前記情報処理装置において、
（ａ−１）前記第４演算手段が、前記第２判定処理の開始時に前記情報記憶媒体から受信する前記第１演算手段による演算結果に基づき演算した演算値を前記第９記憶手段に格納し、
（ｂ−１）前記第４演算手段が、前記情報処理装置からの出力Ｕ＝０に応答して前記情報記憶媒体から受信する前記第１演算手段による演算結果に基づき演算した演算値を前記第９記憶手段に格納し、
（ｃ−１）前記第５演算手段が、前記（ａ−１）で格納された演算値と前記（ｂ−１）で格納された演算値を比較する処理を実行し、
（２）前記情報処理装置の乱数生成手段で生成される出力がＵ＝１のときは、
前記情報記憶媒体において、前記情報処理装置からの出力Ｕ＝１に応答して、前記第１演算手段が（Ｒ・Ｍ）  ｍｏｄ  Ｎを演算し演算結果を前記情報処理装置に送信し、
前記情報処理装置において、
（ａ−２）前記第４演算手段が、前記第２判定処理の開始時に前記情報記憶媒体から受信する前記第１演算手段による演算結果と前記第４記憶手段から読み出した前記第１公開鍵（Ｗ）とに基づき演算した演算値を前記第９記憶手段に格納し、
（ｂ−２）前記第４演算手段が、前記情報処理装置からの出力Ｕ＝１に応答して前記情報記憶媒体から受信する前記第１演算手段による演算結果と前記第４記憶手段から読み出した前記第１公開鍵（Ｗ）とに基づき演算した演算値を前記第９記憶手段に格納し、
（ｃ−２）前記第５演算手段が、前記（ａ−２）で格納された演算値と前記（ｂ−２）で格納された演算値を比較する処理を実行するものであることを特徴とする情報保護システム。
【請求項４】
請求項１〜３のいずれか１項に記載の情報保護システムにおいて、
前記情報処理装置は、
前記第１判定処理、前記第２判定処理、及び前記第３判定処理のうち少なくともいずれか１つの判定処理を前記情報記憶媒体が前記情報処理装置に装着されたとき実行し、残余の判定処理は前記ソフトウェアコンテンツの実行途中のアイドル時に実行するセキュリティ実行プログラムにより処理することを特徴とする情報保護システム。
【請求項５】
請求項４に記載の情報保護システムにおいて、
前記セキュリティ実行プログラムは、前記情報処理装置及び前記情報記憶媒体の少なくとも１つに搭載されていることを特徴とする情報保護システム。
【請求項６】
情報処理装置に着脱可能に装着される情報記憶媒体であって、
ソフトウェアコンテンツが格納された第１記憶手段と、
前記ソフトウェアコンテンツに対する一方向ハッシュ関数に基づく第１要約値が格納された第２記憶手段と、
第１秘密鍵が格納された第３記憶手段と、
前記第１秘密鍵に対する公開鍵となる第１公開鍵が格納された第４記憶手段と、
前記情報記憶媒体及び前記情報処理装置とは別に秘密に保持される第２秘密鍵で前記第１要約値と前記第１公開鍵を含む情報を暗号化することにより生成された暗号文が格納された第５記憶手段と、
前記情報処理装置から供給される乱数に応答して、応答情報を生成する第１演算手段と、
を、備えてなり、
前記情報処理装置に装着されているとき、
前記第１演算手段は、前記情報処理装置で実行される処理に対応して演算を実行し演算結果を前記情報処理装置に送信し、
前記情報記憶媒体から読み出された前記ソフトウェアコンテンツと、前記第１要約値と、前記第１公開鍵と、前記暗号文と、前記第１演算手段から送信される前記演算結果が、前記情報処理装置によって、
前記第２秘密鍵に対する公開鍵である第２公開鍵に基づき復号化して生成した前記第１要約値と前記第１公開鍵とを含む前記暗号文に対する第１復号文を、前記第２記憶手段から読み出した前記第１要約値と前記第４記憶手段から読み出した前記第１公開鍵とを含む情報と比較する処理に基づき前記第５記憶手段に格納された前記暗号文と前記第２記憶手段に格納された前記第１要約値に対する真贋判定を行う第１判定処理と、
前記第１演算手段から送信される演算結果と第４記憶手段から読み出された前記第１公開鍵とに基づき前記情報記憶媒体が前記情報処理装置に対し真正なものであるか否かの認証判定を行う第２判定処理と、
前記第１記憶手段から読み出した前記ソフトウェアコンテンツに対し一方向ハッシュ関数に基づき生成した第２要約値を、前記第２記憶手段から読み出された前記第１要約値と比較する処理に基づき前記第２記憶手段に格納された前記第１要約値と前記第１記憶手段に格納されたソフトウェアコンテンツに対する改竄有無判定を行う第３判定処理と、
前記第１判定処理乃至前記第３判定処理の全てにおいて合格判定が得られたとき前記情報記憶媒体から読み出した前記ソフトウェアコンテンツの前記情報処理装置での実行を許可する処理と、が行われるものであることを特徴とする情報記憶媒体。
【請求項７】
請求項６に記載の情報記憶媒体において、
前記第５記憶手段は、前記第１秘密鍵に対する公開鍵である前記第１公開鍵を第２暗号で暗号化して得られた暗号文（１）を格納する第５（１）記憶手段と、前記ソフトウェアコンテンツに対する一方向ハッシュ関数に基づく前記第１要約値を前記第２秘密鍵で暗号化して得られた暗号文（２）を格納する第５（２）記憶手段と、を含み、
前記第５記憶手段から読み出された前記暗号文（１）と前記暗号文（２）に対し、前記情報処理装置において、前記第５（１）記憶手段から読み出した暗号文（１）を前記第２公開鍵に基づき復号化する前記第２（１）演算手段によって行われる処理と、前記第５（２）記憶手段から読み出した前記暗号文（２）を前記第２公開鍵に基づき復号化する前記第２（２）演算手段によって行われる処理と、前記第２（１）演算手段によって復号化された情報を前記第４記憶手段から読み出した前記第１公開鍵と比較する処理と、前記第２（２）演算手段によって復号化された情報を前記第２記憶手段から読み出した前記第１要約値と比較する処理と、が行われるものであることを特徴とする情報記憶媒体。
【請求項８】
請求項６に記載の情報記憶媒体において、
前記情報記憶媒体はさらに、乱数生成手段と、第１演算引数選択手段と、法の数字を記憶する第７記憶手段とを含み、前記第５記憶手段には前記第１秘密鍵に対する公開鍵となる第１公開鍵と前記第１要約値の合成値を一方向ハッシュ関数に基づき生成した要約値を第２秘密鍵で暗号化して得られた暗号文が格納されており、
前記暗号文を前記第２公開鍵に基づき復号して得られた前記合成値の要約値を前記第１要約値と前記第１公開鍵の合成値を一方向ハッシュ関数に基づき生成した要約値と比較する処理が前記情報処理装置によって実行されることによって、前記第５記憶手段に格納された前記暗号文と、前記第２記憶手段に格納された前記第１要約値に対する真贋判定を行う前記第１判定処理が行われるものであり、
前記情報記憶媒体の乱数生成手段によって生成された乱数をＲ、前記第７記憶手段に格納されている法の数字をＮ、前記第１秘密鍵をＭ、前記第１公開鍵をＷとするとき、
前記第２判定処理において、前記第２判定処理の開始時に、前記第１演算手段がＲ2  ｍｏｄ  Ｎを演算し演算結果を前記情報処理装置に送信する処理と、
前記情報処理装置から無作為に出力される“Ｕ＝０”と“Ｕ＝１”のいずれかに応答して前記第１演算手段で行う演算結果を前記情報処理装置に送信する処理と、を実行するように構成されてなり、
（１）前記情報処理装置からの出力がＵ＝０のときは、
前記出力Ｕ＝０に応答して、前記第１演算手段がＲ２  ｍｏｄ  Ｎを演算し演算結果を前記情報処理装置に送信し、
前記情報処理装置は、前記第２判定処理の開始時に受信する前記演算結果と、出力Ｕ＝０に応答して受信する前記演算結果と、に基づき前記第２判定処理を実行し、
（２）前記情報処理装置からの出力がＵ＝１のときは、
前記出力Ｕ＝１に応答して、前記第１演算手段が（Ｒ・Ｍ）  ｍｏｄ  Ｎを演算し演算結果を前記情報処理装置に送信し、
前記情報処理装置は、前記第２判定処理の開始時に受信する前記演算結果と、前記出力Ｕ＝１に応答して受信する前記演算結果と、前記第４記憶手段から読み出した前記第１公開鍵（Ｗ）と、に基づき前記第２判定処理を実行することを特徴とする情報記憶媒体。
【請求項９】
請求項６〜８のいずれか１項に記載の情報記憶媒体において、
前記情報処理装置により、
前記第１判定処理、前記第２判定処理、及び前記第３判定処理のうち少なくともいずれか１つの判定処理を前記情報記憶媒体が前記情報処理装置に装着されたとき実行し、残余の判定処理は前記ソフトウェアコンテンツの実行途中のアイドル時に実行するセキュリティ実行プログラムにより処理することを特徴とする情報記憶媒体。
【請求項１０】
請求項９に記載の情報記憶媒体において、
前記セキュリティ実行プログラムは、前記情報処理装置及び前記情報記憶媒体の少なくとも１つに搭載されていることを特徴とする情報記憶媒体。
【請求項１１】
ソフトウェアコンテンツが格納された情報記憶媒体が着脱可能に装着される情報処理装置であって、
前記情報記憶媒体には、ソフトウェアコンテンツと、前記ソフトウェアコンテンツに対する一方向ハッシュ関数に基づく第１要約値と、第１秘密鍵と、前記第１秘密鍵の公開鍵となる第１公開鍵と、前記情報記憶媒体及び前記情報処理装置とは別に秘密に保持される第２秘密鍵で前記第１要約値と前記第１公開鍵を含む情報を暗号化することにより生成された暗号文とが格納された記憶手段と、前記情報処理装置から供給される乱数に応答して応答情報を生成する第１演算手段が備えられており、
前記情報処理装置は、
前記第２秘密鍵に対する公開鍵となる前記第２公開鍵が格納された公開鍵記憶手段と、
乱数生成手段と、
前記情報記憶媒体から読み出した前記暗号文と前記公開鍵記憶手段から読み出した前記第２公開鍵に基づく演算を行い前記第１要約値と前記第１公開鍵とを含む第１復号文を生成する第２演算手段と、
前記第２演算手段で生成された前記第１要約値と前記第１公開鍵とを含む前記第１復号文を、前記情報記憶媒体から読み出した前記第１要約値及び前記第１公開鍵を含む情報と比較する第３演算手段と、
前記乱数生成手段で生成された乱数を前記情報記憶媒体の前記第１演算手段に送信する手段と、
前記第１演算手段から受信する演算結果に基づく演算を行う第４演算手段と、
前記第４演算手段の演算で得られた演算結果に基づく比較演算を行う第５演算手段と、
前記情報記憶媒体から読み出した前記ソフトウェアコンテンツに対し一方向ハッシュ関数に基づく第２要約値を生成する第６演算手段と、
前記第２要約値と前記情報記憶媒体から読み出した前記第１要約値とを比較する第７演算手段と、を備えてなり、
前記情報記憶媒体が装着されているとき、
前記第３演算手段による比較処理に基づき、前記情報記憶媒体に格納されている前記暗号文と前記第１要約値に対する真贋判定を行う第１判定処理と、
前記第５演算手段の演算結果に基づき前記情報記憶媒体が前記情報処理装置に対し真正なものであるか否かの認証判定を行う第２判定処理と、
前記第７演算手段による比較処理に基づき前記情報記憶媒体に格納されている前記第１要約値と前記ソフトウェアコンテンツに対する改竄有無判定を行う第３判定処理と、
前記第１判定処理乃至前記第３判定処理の全てにおいて合格判定が得られたとき前記情報記憶媒体から読み出した前記ソフトウェアコンテンツの前記情報処理装置での実行を許可する処理と、が行われる構成であることを特徴とする情報処理装置。
【請求項１２】
請求項１１に記載の情報処理装置において、
前記情報記憶媒体には、前記暗号文として、前記第１公開鍵を前記第２秘密鍵で暗号化した暗号文（１）と、前記ソフトウェアコンテンツに対する一方向ハッシュ関数に基づく第１要約値を前記第２秘密鍵で暗号化した暗号文（２）とが、個別に格納されており、
第２演算手段は、前記情報記憶媒体から読み出した前記暗号文（１）を前記公開鍵記憶手段に格納された前記第２公開鍵に基づき復号化する演算を行う第２（１）演算手段と、前記情報記憶媒体から読み出した暗号文（２）を前記公開鍵記憶手段に格納された前記第２公開鍵に基づき前記第１要約値に復号化する演算を行う第２（２）演算手段とを含み、
前記第３演算手段は、前記第２（１）演算手段で復号化された復号文を前記情報記憶媒体から読み出した前記第１公開鍵と比較する第３（１）演算手段と、前記第２（２）演算手段で復号化された復号文を前記情報記憶媒体から読み出した前記第１要約値と比較する第３（２）演算手段とを含むことを特徴とする情報処理装置。
【請求項１３】
請求項１１に記載の情報処理装置において、
前記情報記憶媒体はさらに、乱数生成手段と、第１演算引数選択手段と、法の数字を記憶する法数記憶手段とを含み、前記暗号文は、前記第１秘密鍵に対する公開鍵と前記第１要約値の合成値に一方向ハッシュ関数を適用して生成した要約値を前記第２秘密鍵で暗号化したものであり、
前記情報処理装置は、さらに、前記情報記憶媒体から読み出した前記第１公開鍵と前記第１要約値との合成値を生成する第８演算手段と、前記第８演算手段で得られた合成値の一方向ハッシュ関数に基づく要約値を生成する第９演算手段と、引数選択手段と、法の数字を記憶する法数記憶手段と、前記第４演算手段の演算結果を記憶する演算結果記憶手段と、を含み、前記情報処理装置の乱数生成手段は“Ｕ＝０”と“Ｕ＝１”のいずれかを無作為に出力するものであり、
前記第１判定処理は、前記第２演算手段で復号された前記合成値の要約値である前記第１復号文を前記第９演算手段で生成された前記合成値の要約値と比較する処理が前記第３演算手段によって行われるものであり、
前記情報記憶媒体の乱数生成手段によって生成された乱数をＲ、法の数字をＮ、前記第１秘密鍵をＭ、前記第１公開鍵をＷとするとき、
前記第２判定処理は、
前記第２判定処理の開始時に、前記情報記憶媒体で行われるＲ2  ｍｏｄ  Ｎの演算結果を前記情報記憶媒体から受信する処理を含み、
（１）前記情報処理装置の乱数生成手段で生成される出力がＵ＝０のときは、
（ａ−１）前記第２判定処理の開始時に前記情報記憶媒体から受信する演算結果に基づき前記第４演算手段が行う演算の演算値を前記第９記憶手段に格納し、
（ｂ−１）前記出力Ｕ＝０に応答して前記情報記憶媒体で行われるＲ2  ｍｏｄ  Ｎの演算結果を前記情報記憶媒体から受信し、前記受信した演算結果に基づき前記第４演算手段が行う演算の演算値を前記第９記憶手段に格納し、
（ｃ−１）前記第５演算手段が、前記（ａ−１）で格納された演算値と前記（ｂ−１）で格納された演算値を比較する処理を実行し、
（２）前記情報処理装置の乱数生成手段で生成される出力がＵ＝１のときは、
（ａ−２）前記第２判定処理の開始時に前記情報記憶媒体から受信する演算結果と前記情報記憶媒体から読み出した前記第１公開鍵（Ｗ）とに基づき前記第４演算手段によって行われる演算の演算値を前記第９記憶手段に格納し、
（ｂ−２）前記出力Ｕ＝１に応答して前記情報記憶媒体で行われる（Ｒ・Ｍ）  ｍｏｄ  Ｎの演算結果を受信し、当該演算結果と前記第４記憶手段から読み出した前記第１公開鍵（Ｗ）とに基づき前記第４演算手段（３４８）によって行われる演算の演算値を前記第９記憶手段に格納し、
（ｃ−２）前記第５演算手段が、前記（ａ−２）で格納された演算値と前記（ｂ−２）で格納された演算値を比較する処理を実行するものであることを特徴とする情報処理装置。
【請求項１４】
請求項１１〜１３に記載の情報処理装置において、
前記第１判定処理、前記第２判定処理、及び前記第３判定処理のうち少なくともいずれか１つの判定処理を前記情報記憶媒体が前記情報処理装置に装着されたとき実行し、残余の判定処理は前記ソフトウェアコンテンツの実行途中のアイドル時に実行するセキュリティ実行プログラムにより処理することを特徴とする情報処理装置。
【請求項１５】
請求項１４に記載の情報処理装置において、
前記セキュリティ実行プログラムは、前記情報処理装置及び前記情報記憶媒体の少なくとも１つに搭載されていることを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置で使用されるソフトウェアコンテンツを保護する技術に関し、特にゲーム装置用情報記憶媒体に記憶されたゲームプログラム等のデータを保護する技術に関する。
【背景技術】
【０００２】
記憶媒体に格納されたゲームプログラムやデータ等ソフトウェアを不正な複製から保護するための技術がいろいろ提案されている。例えば、特開２００６−１４６６０８号公報（特許文献１）や特開２００６−１３９８８４号公報（特許文献２）では、情報処理装置に供給されるソフトウェアを、第三者には解読困難なコピー防止の仕組みを備えた半導体記憶装置にソフトウェアを記憶し保護する技術が記載されている。
【０００３】
特許文献１は、保護すべきソフトウェアが記憶された半導体記憶装置と情報処理装置との間のデータ通信を制御するコマンドを暗号化し、かかる暗号化に必要な暗号鍵データを記憶している半導体記憶装置が情報処理装置に接続されたときには情報処理装置は正常にソフトウェアを実行するが、半導体記憶装置に記憶されたソフトウェアの単純な複製を記憶した半導体記憶装置、すなわち暗号化に必要な暗号鍵の情報を備えていない半導体記憶装置を前記情報処理装置に接続したときには、前記データ通信を制御するコマンドが半導体記憶装置によって受け付けられず、半導体記憶装置から情報処理装置へソフトウェアのデータの通信が行われず、情報処理装置は正常にソフトウェア実行しないことでソフトウェアを保護するものである。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−１４６６０８号公報
【特許文献２】特開２００６−１３９８８４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、今までのところいずれの不正コピー防止対策も破られており有効な対抗策がないのが実情である。特許文献１などの保護技術は、半導体記憶装置に記憶された暗号鍵元データから暗号鍵データを生成するための暗号生成データを情報処理装置内に保持する構成（特許文献１の図１に図示される情報処理装置１０に搭載された暗号生成データ記憶部１４）となっているため、暗号生成データ記憶部に格納されている暗号生成データが不正に解読されたときは、当該情報処理装置に対応する全てのソフトウェアタイトルが不正コピーの危険に晒され、甚大な被害を受けることになる。
【０００６】
したがって、本発明の目的は、有効な不正コピー防止対策がない状況を踏まえ、より高度で、かつ、不正コピーの攻撃を受けたときでも被害を最小に抑える情報保護システムを提供するものである。
【０００７】
本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００８】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次の通りである。
【０００９】
本発明による、情報処理装置と前記情報処理装置に着脱可能に装着される情報記憶媒体とによって構成される情報処理システムにおいて、前記情報記憶媒体は、ソフトウェアコンテンツが格納された第１記憶手段（２０７）と、前記ソフトウェアコンテンツに対する一方向ハッシュ関数に基づく第１要約値が格納された第２記憶手段（２０６）と、公開鍵暗号に基づく第１秘密鍵が格納された第３記憶手段（３３０，３４１）と、前記第１秘密鍵に対する公開鍵となる公開鍵が格納された第４記憶手段（３２０，３４０）と、前記情報記憶媒体及び前記情報処理装置とは別に秘密に保持される第２秘密鍵で前記第１要約値と前記第１公開鍵を含む情報を暗号化することにより生成された暗号文が格納された第５記憶手段（２１０）と、前記情報処理装置から供給される乱数に応答して、応答情報を生成する第１演算手段（３３２，３４３）と、を備えてなり、前記情報処理装置は、前記第２秘密鍵に対する公開鍵となる第２公開鍵が格納された第６記憶手段（３０２）と、乱数生成手段（３３５，３４６）と、前記第５記憶手段（２１０）から読み出した前記暗号文と前記第６記憶手段（３０２）から読み出した前記第２公開鍵に基づく演算を行い前記第１要約値と前記第１公開鍵とを含む第１復号文を生成する第２演算手段（３１０）と、前記第２演算手段（３１０）で生成された前記第１要約値と前記第１公開鍵とを含む前記第１復号文を、前記第２記憶手段（２０６）から読み出した前記第１要約値及び前記第４記憶手段（３２０，３４０）から読み出した前記第１公開鍵を含む情報と比較する第３演算手段（３１２）と、前記乱数生成手段（３３５，３４６）で生成された乱数を前記情報記憶媒体の前記第１演算手段（３３２）に送信する手段と、前記第１演算手段（３３２，３４３）から受信する演算結果（３３１，３４２）に基づく演算を行う第４演算手段（３１６，３４８）と、前記第４演算手段（３１６，３４８）の演算で得られた演算結果に基づく比較演算を行う第５演算手段（３３４，３６７）と、前記情報記憶媒体の前記第１記憶手段（２０７）から読み出した前記ソフトウェアコンテンツに対し一方向ハッシュ関数に基づく第２要約値を生成する第６演算手段（３１９）と、前記第２要約値と前記情報記憶媒体の前記第２記憶手段（２０６）から読み出した前記第１要約値とを比較する第７演算手段（３１７）と、を備えてなり、前記情報記憶媒体が前記情報処理装置に装着されているとき、前記第３演算手段（３１２）による比較処理に基づき、前記第５記憶手段（２１０）に格納された前記暗号文と前記第２記憶手段（２０６）に格納された前記第１要約値に対する真贋判定を行う第１判定処理と、前記第５演算手段（３３４，３６７）の演算結果に基づき前記情報記憶媒体が前記情報処理装置に対し真正なものであるか否かの認証判定を行う第２判定処理と、第７演算手段（３１７）による比較処理に基づき前記第２記憶手段（２０６）に格納された前記第１要約値と前記第１記憶手段（２０７）に格納されたソフトウェアコンテンツに対する改竄有無判定を行う第３判定処理と、前記第１判定処理乃至前記第３判定処理の全てにおいて合格判定が得られたとき前記情報記憶媒体から読み出した前記ソフトウェアコンテンツの前記情報処理装置での実行を許可する処理と、が行われる構成であることを特徴とする。
【００１０】
本発明による一実施態様において、前記第５記憶手段（２１０）は、前記第１秘密鍵の対する公開鍵である前記第１公開鍵を前記第２秘密鍵で暗号化して得られた暗号文を格納する第５（１）記憶手段（２１０−１）と、前記ソフトウェアコンテンツに対する一方向ハッシュ関数に基づく第１要約値を第２秘密鍵で暗号化して得られた暗号文を格納する第５（２）記憶手段（２１０−２）とを含み、第２演算手段（３１０）は、前記第５（１）記憶手段（２１０−１）から読み出した暗号文を前記第６記憶手段（３０２）に格納された前記第２秘密鍵に対する公開鍵である前記第２公開鍵に基づき復号化する演算を行う第２（１）演算手段（３１０−１）と、前記第５（２）記憶手段（２１０−２）から読み出した暗号文を前記第２公開鍵に基づき復号化する演算を行う第２（２）演算手段（３１０−２）とを含み、前記第３演算手段（３１２）は、前記第２（１）演算手段（３１０−１）で復号化された復号文を前記第４記憶手段（３２０）から読み出した前記第１秘密鍵に対する公開鍵と比較する第３（１）演算手段（３１２−１）と、前記第２（２）演算手段（３１０−２）で復号化された復号文を前記第２記憶手段（２０６）から読み出した前記第１要約値と比較する第３（２）演算手段（３１２−２）とを、それぞれ含む構成とすることができる。
【００１１】
さらに、本発明による他の実施態様において、前記情報記憶媒体はさらに、乱数生成手段（３４５）と、第１演算引数選択手段（３４４）と、法の数字を記憶する第７記憶手段（図示せず）とを含み、前記第５記憶手段（２１０）には前記第１秘密鍵に対する公開鍵と前記第１要約値の合成値を一方向ハッシュ関数に基づき生成した要約値を前記第２秘密鍵で暗号化して得られた暗号文が格納されており、前記情報処理装置はさらに、前記第４記憶手段（３４０）から読み出した前記第１公開鍵と前記第２記憶手段（２０６）から読み出した前記第１要約値との合成値を生成する第８演算手段（３１３）と、前記第８演算手段（３１３）で得られた合成値の一方向ハッシュ関数に基づく要約値を生成する第９演算手段（３１４）と、第２演算引数選択手段（３４７）と、法の数字を記憶する第８記憶手段（図示せず）と、前記第４演算手段（３４８）の演算結果を記憶する第９記憶手段（３６５，３６６）と、を含み、前記情報処理装置の乱数生成手段（３４６）は“Ｕ＝０”と“Ｕ＝１”のいずれかを無作為に出力するものであり、前記第１判定処理は、前記第２演算手段（３１０）で復号された前記合成値の要約値である前記第１復号文を前記第９演算手段（３１４）で生成された前記合成値の要約値と比較する処理が前記第３演算手段（３１２）によって行われるものであり、前記第２判定処理は、前記第２判定処理の開始時に、前記情報記憶媒体において、前記第１演算手段（３４３）がＲ2  ｍｏｄ  Ｎを演算し演算結果を前記情報処理装置に送信する処理を含み、前記情報記憶媒体の乱数生成手段（３４５）によって生成された乱数をＲ、前記第７記憶手段（図示せず）及び前記第８記憶手段（図示せず）に格納されている法の数字をそれぞれＮ，前記第１秘密鍵をＭ、前記第１公開鍵をＷ（＝Ｍ2  ｍｏｄ  Ｎ）とするとき、（１）前記情報処理装置の乱数生成手段（３４６）で生成される出力がＵ＝０のときは、前記情報記憶媒体において、前記情報処理装置からの出力Ｕ＝０に応答して、前記第１演算手段（３４３）がＲ2  ｍｏｄ  Ｎを演算し演算結果を前記情報処理装置に送信し、前記情報処理装置において、（ａ−１）前記第４演算手段（３４８）が、前記第２判定処理の開始時に前記情報記憶媒体から受信する前記第１演算手段（３４３）による演算結果に基づき演算した演算値を前記第９記憶手段（３６５，３６６）に格納し、（ｂ−１）前記第４演算手段（３４８）が、前記情報処理装置からの出力Ｕ＝０に応答して前記情報記憶媒体から受信する前記第１演算手段（３４３）による演算結果に基づき演算した演算値を前記第９記憶手段（３６５，３６６）に格納し、（ｃ−１）前記第５演算手段が、前記（ａ−１）で格納された演算値と前記（ｂ−１）で格納された演算値を比較する処理を実行し、（２）前記情報処理装置の乱数生成手段で生成される出力がＵ＝１のときは、前記情報記憶媒体において、前記情報処理装置からの出力Ｕ＝１に応答して、前記第１演算手段（３４３）が（Ｒ・Ｍ）  ｍｏｄ  Ｎを演算し演算結果を前記情報処理装置に送信し、前記情報処理装置において、（ａ−２）前記第４演算手段（３４８）が、前記第２判定処理の開始時に前記情報記憶媒体から受信する前記第１演算手��（３４３）による演算結果と前記第４記憶手段（３４０）から読み出した前記第１公開鍵（Ｗ）とに基づき演算した演算値を前記第９記憶手段（３６５，３６６）に格納し、（ｂ−２）前記第４演算手段（３４８）が、前記情報処理装置からの出力Ｕ＝１に応答して前記情報記憶媒体から受信する前記第１演算手段（３４３）による演算結果と前記第４記憶手段（３４０）から読み出した前記第１公開鍵（Ｗ）とに基づき演算した演算値を前記第９記憶手段（３６５，３６６）に格納し、（ｃ−２）前記第５演算手段が、前記（ａ−２）で格納された演算値と前記（ｂ−２）で格納された演算値を比較する処理を実行する構成とすることができる。
【００１２】
さらに、本発明による他の実施態様において、前記第１判定処理乃至前記第３判定処理のうち少なくともいずれか一の判定処理を前記情報記憶媒体が前記情報処理装置に装着されたとき実行し、残余の判定処理は前記ソフトウェアコンテンツの実行途中のアイドル時に実行する構成のセキュリティ実行プログラムを前記情報記憶媒体と前記情報処理装置の少なくともいずれかに搭載する構成とすることができる。
【発明の効果】
【００１３】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下の通りである。すなわち、代表的なものによって得られる効果は、情報処理装置に情報記憶媒体が装着されたとき、情報記憶媒体に格納された第１秘密鍵に基づき情報記憶媒体を証明者とし情報処理装置を認証者とする認証判定により装着された情報記憶媒体が情報処理装置に対し真正なものであることの第２判定処理（認証判定）とともに、ソフトウェアコンテンツの一方向ハッシュ関数に基づく要約値と前記第１秘密鍵の公開鍵を含む情報を情報処理装置と情報記憶媒体とは別に秘密に保持される第２秘密鍵で暗号化した暗号文を電子署名として使用する真贋判定を行う第１判定処理（電子署名による真贋判定処理）と、情報記憶媒体に格納されたソフトウェアコンテンツ及びその要約値に対する改竄の有無を判定する第３判定処理（改竄検出処理）によって３重にセキュリティチェックを実行するものとし、さらに認証判定処理と電子署名による真贋判定処理と改竄検出処理のそれぞれを互いに関連付けるとともに各判定処理をソフトウェアコンテンツの一方向ハッシュ関数に基づく要約値に関連付けて実行することで、ソフトウェアコンテンツに対する不正コピーや改竄をさらに困難にするとともに、セキュリティが破られたとしても、被害を当該ソフトウェアコンテンツタイトルに限定することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施の形態１に係る情報保護システムの構成を示す構成図である。
【図２】本発明の実施の形態１に係る情報保護システムの情報保護処理を説明するための説明図である。
【図３】本発明の実施の形態２に係る情報保護システムの構成を示す構成図である。
【図４】本発明の実施の形態２に係る情報保護システムの認証手順による真贋判定処理で用いられるゼロ知識対話証明の認証方式を説明するための説明図である。
【図５】本発明の実施の形態２に係る情報保護システムの情報保護処理を説明するための説明図である。
【発明を実施するための形態】
【００１５】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００１６】
（実施の形態１）
図１により、本発明の実施の形態１に係る情報保護システムの構成について説明する。図１は本発明の実施の形態１に係る情報保護システムの構成を示す構成図である。
【００１７】
図１において、情報保護システムは、ソフトウェアコンテンツを記憶する情報記憶媒体２００と情報記憶媒体２００に記憶されたソフトウェアコンテンツを読み出し各種処理を行う情報処理装置３００から構成されている。
【００１８】
情報記憶媒体２００は、記憶部２０２、第１演算手段である演算回路３３２、演算回路３３２への入出力を制御する暗号制御回路２５０、記憶部２０２からの情報読み出しを制御する記憶部制御回路２５１、情報処理装置３００との入出力を制御する入出力部２５２から構成されている。入出力部２５２は一群の端子を備えたコネクタによって構成され、情報処理装置３００に着脱可能に接続される。情報処理装置３００が携帯ゲーム装置の場合、情報記憶媒体は配線基板を内蔵したＩＣカードあるいはカートリッジ形態でユーザに供給される。演算回路３３２、暗号制御回路２５０及び記憶部制御回路２５１は１個の半導体集積回路チップ内に一体的に形成され配線基板上に組み込まれる。
【００１９】
記憶部２０２は、第１秘密鍵が格納された第１秘密鍵記憶部３３０、第１秘密鍵に対する公開鍵が格納された第１秘密鍵の公開鍵記憶部３２０、演算回路３３２の演算結果を一時的に格納する第１演算結果記憶部３３１、ゲームプログラム等のソフトウェアコンテンツを格納する第１記憶手段であるソフトウェアコンテンツ記憶部２０７、ソフトウェアコンテンツに対する一方向ハッシュ関数に基づいて生成された第１要約値が格納された第２記憶手段である第１要約値記憶部２０６、第１公開鍵を第２秘密鍵で暗号化した暗号文（１）と第１要約値を第２秘密鍵で暗号化した暗号文（２）が格納された第５記憶手段である暗号文記憶部２１０から構成されている。
【００２０】
演算回路３３２の演算結果を一時的に格納する第１演算結果記憶部３３１は、演算回路３３２が形成された半導体チップ内に設けられたレジスタによって構成される。その他の第１秘密鍵記憶部３３０、第１秘密鍵の公開鍵記憶部３２０、ソフトウェアコンテンツ記憶部２０７、第１要約値記憶部２０６、暗号文記憶部２１０は一乃至複数の不揮発性半導体メモリチップに構成され、上記回路基板に組み込まれる。第１秘密鍵記憶部３３０は、外部からその情報が読み取れないように耐タンパ性を持つ記憶部として構成されており、第１秘密鍵は、情報記憶媒体２００が不正に解析される場合に備え解読が極めて困難な構成となっている。
【００２１】
情報処理装置３００は、例えば、携帯ゲーム機の場合、情報記憶媒体が装着されたときソフトウェアコンテンツ記憶部２０７からゲームプログラムを読み出しユーザの操作に応答してゲームを実行できるように構成されている。情報処理装置３００は、第２秘密鍵に対する公開鍵である第２公開鍵を格納する第６記憶手段である公開鍵記憶部３０２（情報処理装置３００の外部から記憶情報の変更が困難なことを特徴とする。）、乱数を生成する乱数生成手段である乱数生成部３３５、情報処理装置３００の基本プログラム（情報処理装置全般の制御に使用されるプログラム）が格納される基本プログラム記憶装置３５２、主記憶部３５０（プログラムや関連するデータを読み出し実行可能に展開するメモリで処理速度の速いＤＲＡＭで構成される。）、画像制御装置、音響制御装置、通信制御装置、その他の処理装置による処理部３５４、情報処理装置３００の全体の制御処理を行う中央演算装置３５１（ＣＰＵ、処理プロセッサ）、表示装置３５５、スピーカ３５６、操作部３５７、外部接続用の端子３５８から構成されている。
【００２２】
次に、図２により、本発明の実施の形態１に係る情報保護システムの情報保護処理について説明する。図２は本発明の実施の形態１に係る情報保護システムの情報保護処理を説明するための説明図であり、情報処理装置３００内及び情報記憶媒体２００内での処理の流れを示している。また、図２において、図１に示す各記憶部に格納された情報は、各記憶部と同じ符号を付けている。
【００２３】
図２に示す情報保護処理を実行する手段は、図１に図示されていないが、一群の演算回路等によりハードウェアで構成することも可能であるが、基本プログラムの一部として基本プログラム記憶部３５２に格納しておき中央処理装置３５１の制御下で主記憶部３５０に展開し実行することで構成することができる。あるいは図示されていないが、情報保護処理のシーケンスを実行するプログラムを、情報記憶媒体内の不揮発性メモリ内に格納しておき、情報処理媒体が情報処理装置に装着されたとき主記憶部３５０に読み出しソフトウェア的に情報保護処理のシーケンスを実行するようにしてもよい。
【００２４】
本発明による情報保護処理は、電子署名による真贋判定処理１００、認証手順による真贋判定処理１０１、改竄検出処理１０２の３つの処理があり、それぞれを互いに関連させて処理している。電子署名による真贋判定処理１００とは、認証手順による真贋判定処理１０１と改竄検出処理１０２で使用する情報が信頼できるものであるかを判定するものであり、認証手順による真贋判定処理１０１とは、ソフトウェアコンテンツを記憶する情報記憶媒体２００が正規の提供者が製造したものであることの認証を行うものであり、改竄検出処理１０２とは、情報記憶媒体２００に記憶されたソフトウェアコンテンツが、オリジナルのものと同一であること、すなわち上記ソフトウェアコンテンツが別の正規のソフトウェアコンテンツに差し換わっていないこと、ならびに上記ソフトウェアコンテンツのすべてまたは、その一部にも改変が無いことを検査するものである。
【００２５】
情報記憶媒体２００に格納される暗号文２１０は、予め情報記憶媒体２００の製造時などに、情報記憶媒体に格納されるべき第１秘密鍵の公開鍵２０１−１と、情報記憶媒体２００に搭載されるべきソフトウェアコンテンツに一方向ハッシュ関数を適用して生成した第１要約値２０１−２を、情報処理装置の製造者、ソフトウェアコンテンツの開発者等権限を有するもの（以下、権限所有者という。）によって、情報処理装置及び情報記憶媒体とは別に秘密に保持される公開鍵暗号に基づく第２秘密鍵による暗号化処理３１０を行うことによって生成される。
【００２６】
第２秘密鍵による暗号化処理３１０では、認証手順による真贋判定処理１０１における情報記憶媒体側で行われる証明情報生成の根拠となる第１秘密鍵に対する公開鍵２０１−１と改竄検出処理１０２で使うソフトウェアコンテンツの第１要約値２０１−２に対応する情報を、権限所有者が情報記憶媒体２００と情報処理装置３００のいずれにも記憶されていない電子署名用の第２秘密鍵３０１−１を用いて暗号化して（３０１−２、３０１−３）、真正の提供者が暗号化した情報、すなわち電子署名として、暗号文（１）２１０−１、暗号文（２）２１０−２を含む暗号文２１０として、情報記憶媒体２００に記憶させる。他方情報処理装置３００には第２秘密鍵３０１−１に対応した第２秘密鍵の公開鍵を第２秘密鍵の公開鍵記憶部３０２に記憶させる。
【００２７】
暗号文２１０には、情報記憶媒体２００の認証手順による真贋判定処理１０１に使う公開鍵の署名とソフトウェアコンテンツの改竄検出処理１０２に使う要約値の署名を含んでいる。このため、情報記憶媒体２００とソフトウェアコンテンツの組み合わせに限定して関連付けられる。
【００２８】
これにより、上記組み合わせの異なる情報記憶媒体２００に記憶されたソフトウェアコンテンツは、電子署名に基づく真贋判定処理１００で合格しないため情報処理装置３００での動作を制限させることが可能である。
【００２９】
また、偽造された真正でない情報記憶媒体２００にソフトウェアコンテンツがコピーされるような事態となった場合でも、偽造された情報記憶媒体に記憶されたソフトウェアコンテンツの不正コピー品は、改竄検出処理１０２により情報処理装置３００上での動作に制限させることが可能である。
【００３０】
本発明による保護手段は、電子署名による真贋判定処理１００、認証手順による真贋判定処理１０１、改竄検出処理１０２の３つの処理で構成されている。電子署名による真贋判定処理１００と改竄検出処理１０２には、素因数分解の困難性に基づく非対称暗号、及び与えられた値を出力するような異なる入力を求めることが困難である性質を持つ一方向ハッシュ関数という社会的にその安全性が実証されている技術を用いている。また、第１秘密鍵の情報保護の手段が破られたとしても、解読された第１秘密鍵に対応する情報記憶媒体２００に記憶された特定のソフトウェアコンテンツのみが不正コピーの被害を受け、他のソフトウェアコンテンツまでコピー被害が及ぶことがなく、被害を最小限に抑えることが可能である。
【００３１】
また、暗号化処理３０１で使用した第２秘密鍵３０１−１は、情報記憶媒体２００及び情報処理装置３００のどちらにも格納されておらず、及び第２秘密鍵３０１−１が漏洩することがない限り、暗号文２１０の偽造や改竄が不可能なため、より安全な情報保護を行うことが可能である。
【００３２】
次に、情報記憶媒体が情報処理装置に装着されたときの実施の態様１による真贋検証手順を説明する。
【００３３】
＜電子署名による真贋判定処理１００＞
情報処理装置３００は、情報記憶媒体２００に格納された暗号文（１）２１０−１を読み出し、記憶部３０２に格納された公開鍵を用いて復号する第２演算処理（１）３１０−１を行ない、第１復号文（１）３１１−１を生成する。生成された復号文（１）は第１秘密鍵の公開鍵２０１−１と同じ情報である。この復号文（１）に対し情報記憶媒体２００から読み出した第１秘密鍵の公開鍵３２０と比較検証する第３演算処理（１）３１２−１が行われる。
【００３４】
また、情報記憶媒体２００に格納された暗号文（２）２１０−２を読み出し、記憶部３０２に格納された公開鍵を用いて復号する第２演算処理（２）３１０−２を行ない、第２暗号文（２）３１１−２を生成する。生成された復号文（２）はソフトウェアコンテンツの第１要約値２０１−２と同じ情報である。この復号文（２）に対し情報記憶媒体２００から読み出したソフトウェアコンテンツの第１要約値と比較検証する第３演算処理（２）が行われる。
【００３５】
この比較処理３１２−１と比較処理３１２−２の比較の結果、両方の比較結果が一致していれば、情報記憶媒体に格納されている第１秘密鍵の公開鍵３２０とソフトウェアコンテンツの第１要約値２０６は信頼できると判断する。何故なら、第３演算３１２において第１要約値２０６及び第１秘密鍵に対する公開鍵３２０と一致する第２演算処理３１０による暗号文２１０の複号で生成される複号文３１１を作成できるのは、第２秘密鍵対する公開鍵３０２に対応する第２秘密鍵３０１−１を知っている前記権限所有者でしかないからである。
【００３６】
＜認証手順による真贋判定処理１０１＞
まず、情報処理装置３００の乱数生成部３３５で乱数を生成し、情報記憶媒体２００に送信する。情報記憶媒体２００では、受信した乱数に対し非対称鍵暗号に基づく第１秘密鍵３３０を用いて暗号化する演算処理３３２を実行しその演算結果３３１を情報処理装置３００に送信する。情報記憶媒体２００に耐タンパ手段で保護されて格納された第１秘密鍵３３０の存在によって当該情報記憶媒体が真正なものであることを証明するものである。
【００３７】
情報処理装置３００では、受信した演算結果３３１に対し情報記憶媒体から読み出した第１秘密鍵に対する公開鍵３２０を用いて第４演算手段である復号化演算処理３１６を行い、第２復号文３３３を生成する。第２復号文３３３は情報記憶媒体が真正なものである場合、情報処理装置３００が送信した乱数と等しい値となる。
【００３８】
そして、第２復号文３３３を、乱数生成部３３５で生成し情報記憶媒体に送信した乱数と比較検証する第５演算手段である演算処理３３４を実行する。この比較検証により、比較した結果が一致していれば、ソフトウェアコンテンツを記憶する情報記憶媒体２００は正規の提供者が製造したものと認証する。
【００３９】
その根拠は、情報記憶媒体２００が、受信した乱数を元に演算し生成した正しい暗号文３３１を情報処理装置３００へ返すためには、情報記憶媒体２００の製造者が正しい第１秘密鍵３３０を知らなければならないからである。
【００４０】
＜改竄検出処理１０２＞
情報処理装置３００は、情報記憶媒体２００からソフトウェアコンテンツ２０７を読み出し、当該ソフトウェアコンテンツに対し一方向ハッシュ関数を適用し第２要約値３１８を生成する演算処理を第６演算手段３１９で実行し、生成された第２要約値を情報記憶媒体２００から読み出したソフトウェアコンテンツの第１要約値２０６と比較演算する処理を第７演算手段３１７で実行する。この比較結果により、比較した結果が一致していれば、ソフトウェアコンテンツの改竄がないと判断し、一致していなければ、改竄があったものとみなす。
【００４１】
その根拠は、ソフトウェアコンテンツのごく一部でも変化した場合、一方向ハッシュ関数の出力値は大きく変化するからである。
【００４２】
以上の電子署名による情報記憶媒体に格納されたデータに対する真贋判定処理１００、情報記憶媒体に対する認証を行う認証手順による真贋判定処理１０１、情報記憶媒体に格納されたソフトウェアコンテンツに対する改竄検出処理１０２の３つの処理により、全てその比較結果が一致した場合に、情報処理装置３００では、情報記憶媒体２００のソフトウェアコンテンツ記憶部２０７から読み出したソフトウェアコンテンツを情報処理装置３００上で実行することを許可し、そのソフトウェアコンテンツに基づいた処理を行う。
【００４３】
なお、改竄検出処理１０２については、その処理に時間がかかるため、情報処理装置３００では、初めに（情報記憶媒体が情報処理装置に装着され情報処理装置での処理手順が開始される初期の段階で）電子署名による真贋判定処理１００及び認証手順による真贋判定処理１０１での処理を行い、この２つの処理の比較結果が一致した場合に、まずソフトウェアコンテンツを実行し、そのソフトウェアコンテンツを実行すると同時に改竄検出処理１０２を並行して行い、もし、改竄検出処理１０２での比較結果が一致しない場合には、ソフトウェアコンテンツの実行を終了するなどソフトウェアコンテンツの実行を制限する処理を行うようにしてもよい。
【００４４】
以上のように、本発明によれば、電子署名による真贋判定処理１００、認証手順による真贋判定処理１０１、改竄検出処理１０２の３つの処理により情報保護処理を行うので、ソフトウェアコンテンツに対する不正コピーや改竄を困難にすることができる。さらに、情報保護処理を情報記憶媒体に格納するソフトウェアコンテンツに関連付けて実行されるように構成されているので、万が一、第１秘密鍵の情報保護の手段が破られたとしても、被害を当該ソフトウェアコンテンツに限定することができる。
【００４５】
（実施の形態２）
実施の形態２は、実施の形態１において、暗号文２１０として、第１秘密鍵の公開鍵とソフトウェアコンテンツに対し一方向ハッシュ関数に基づいて生成した第１要約値との合成値に対に対しさらに一方向ハッシュ関数に基づい生成し要約値を第２秘密鍵で暗号化したものとし、認証手順による真贋判定処理１０１をゼロ知識対話証明の認証方式を用いたものとしたものである。
【００４６】
図３により、本発明の実施の形態２に係る情報保護システムの構成について説明する。図３は本発明の実施の形態２に係る情報保護システムの構成を示す構成図である。
【００４７】
図３において、実施の形態１における図１のシステムに対比すると、情報記憶媒体２００にゼロ知識対話証明の認証方式で使用する乱数生成部３４５と第１演算選択回路（演算回路）３４４と定数発生回路３６０が追加され、情報処理装置には、（図３に図示されないが図５に図示されるように）第２演算選択手段（演算回路）３４４と定数発生手段３６１が追加されている。それ以外の構成は、実施の形態１と同様である。但し、第１乱数生成手段３４６は質問Ｕ＝０と１を無作為に出力構成とされている。また、暗号文２１０は、上述したように合成値として生成されている。
【００４８】
次に、図４の説明図により、本発明の実施の形態２に係る情報保護システムの認証処理で用いられるゼロ知識対話証明の認証方式について基本的な手順を説明する。図４における証明者６００が、情報記憶媒体２００、認証者６１０が情報処理装置３００となる。
【００４９】
まず、認証に先立ち、証明者６００は２つの素数ＰとＱと秘匿情報Ｍを決める。次に証明者６００は、ＰとＱの積であるＮ＝Ｐ×Ｑと、Ｗ＝Ｍ2  ｍｏｄ  Ｎを認証者６１０へ教える。ここで、ｍｏｄ  Ｎは、Ｎを法の数とする剰余演算子のことである。また、ＷはＭ2をＮで割ったときの余りであり、もともと秘匿情報Ｍをもとにしたものであるが、Ｗ自体は秘匿情報の扱いにはならない。
【００５０】
これは、大きな２つの素数の掛け算からなる数を法とする数の平方根の計算は極めて困難であるため、ＷからＭを逆算することができないからである。このＷ自体は秘匿情報の扱いではないという特質によって、秘匿情報Ｍを持つ証明者以外について、悪意を持った第３者による攻撃に対して強く対抗する必要はないといえる。これは、認証者６１０及び証明者６００のどちらにも同じ秘匿情報を持つチャレンジ・アンド・レスポンス方式と比べて大きく異なる特徴の１つである。
【００５１】
この準備の後、実際の認証の手順では、処理６０１において証明者６００は乱数Ｒを生成し、処理６０２においてＸ＝Ｒ2  ｍｏｄ  Ｎを計算し、処理６２０においてＸを認証者６１０へ送る。認証者６１０は、処理６１１において受け取ったＸを一旦記憶する。引き続き認証者６１０は、処理６１２において質問Ｕとして‘０’（零）又は‘１’の数値のうちのいずれか一方を無作為に選択する。認証者６１０は、処理６２１において上記選択した一方を質問Ｕとして証明者へ返す。
【００５２】
質問Ｕを受け取った証明者６００は、処理６０３においてＹ＝（Ｒ・ＭU）  ｍｏｄ  Ｎを計算し、かかる計算結果Ｙを処理６２２において認証者６１０へ送り返す。この処理６２２で送り返されるＹは、質問Ｕが‘０’であったとき、上記乱数Ｒそのものであり、質問Ｕが‘１’であったとき、上記乱数Ｒと秘匿情報Ｍを掛けた値をＮで割ったときの余りである。すなわち、認証者６１０の質問Ｕが‘０’のときには証明者６００は認証者６１０へ乱数Ｒを回答し、認証者６１０の質問Ｕが‘１’のときには証明者６００は（Ｒ・Ｍ）  ｍｏｄ  Ｎを認証者６１０へ回答しなければならない。
【００５３】
次に、認証者６１０は、処理６１３において受け取ったＹからＹ2  ｍｏｄ  Ｎを求め、自らも上記質問ＵとＸならびにＷを用いて、Ｘ×ＷUを求め、求めた２つの値を比較する。ここで、認証者６１０の質問Ｕが‘０’のとき、証明者６００は回答ＹとしてＲを回答しなければならないが、同回答はすなわち乱数Ｒそのものであるため、秘匿情報Ｍを知らない偽の証明者６００でも正しく回答することができてしまう。しかし、認証者６１０の質問Ｕはランダムに選択されるため、常に‘０’ではなく‘１’のときもあるので、そのときは、秘匿情報Ｍを知っている真の証明者６００のみ、（Ｒ・Ｍ）  ｍｏｄ  Ｎを正しく認証者６１０へ回答することができる。
【００５４】
次に、認証者６１０の質問Ｕが‘１’のとき、証明者６００は回答Ｙとして（Ｒ・Ｍ）ｍｏｄ Ｎを回答しなければならないが、秘匿情報Ｍを知らない偽の証明者６００でもＹを適当に決め、Ｘ＝（Ｙ2／Ｗ）  ｍｏｄ  Ｎ＝Ｒ2  ｍｏｄ  Ｎという計算により予めＸを準備しておけば、上記（適当に決めた）Ｙを正しいものとして回答することができてしまう。しかし、認証者６１０の質問Ｕはランダムに選択されるため、常に‘１’ではなく‘０’のときもあるので、そのときは、偽の証明者６００は上記（適当に決めた）ＹからＲ（＝Ｙ1/2）を求めて回答しなければならい。だが、大きな２つの素数の掛け算からなる数を法とする数の平方根の計算は極めて困難であるため、偽の証明者６００には回答することができない。
【００５５】
つまり要約すると、偽の証明者６００は認証者６１０の質問Ｕが‘０’に対しても‘１’に対しても１／２の確率で正しく回答できるし、また１／２の確率で正しく回答できない。従って、上記の認証者６１０と証明者６００の手順を１回分の対話とすると、同対話を複数回繰り返すことによって、偽の証明者６００をふるい落とすことが可能である。例えば、上記対話を２０回繰り返すと、偽の証明者６００が２０回全てに正しく回答できる可能性は１００万分の１である。
【００５６】
したがって、本実施の形態では、情報記憶媒体２００の情報処理媒体３００に対する認証手順による真贋判定処理１０１でゼロ知識対話証明の認証方式の処理を複数回（例えば２０回）行うようになっている。
【００５７】
次に、本発明の実施の形態２に係る情報保護システムの情報保護処理について説明する。図５は本発明の実施の形態２に係る情報保護システムの情報保護処理を説明するための説明図であり、情報処理装置３００内及び半導体記憶装置２００内での処理の流れを示している。また、図５において、図３に示す各記憶部に格納された情報は、各記憶部と同じ符号を付けている。
【００５８】
図５において、本発明の実施の形態２による情報保護処理は実施の形態１と同様、電子署名による情報記憶媒体に格納されたデータの真贋判定処理１００、情報記憶媒体の情報処理装置に対する認証手順による真贋判定処理１０１、改竄検出処理１０２の３つの処理で構成されるが、電子署名による真贋判定処理１００と認証手順による真贋判定処理１０１で行う処理は、不正解読の攻撃に対し実施の形態１における情報保護処理よりさらに強い構成とされている。
【００５９】
情報記憶媒体２００に格納される暗号文２１０は、予め情報記憶媒体２００の製造時などに、情報記憶媒体に格納されるべき非対称暗号に基づく第１秘密鍵の公開鍵と情報記憶媒体２００に搭載されるべきソフトウェアコンテンツに対して一方向ハッシュ関数を適用して生成した第１要約値とを合成して生成した合成値に対しさらに一方向ハッシュ関数に基づいて演算し合成値の要約値２０１−３を準備し、この合成値の要約値２０１−３からなる情報２０１を上述した権限所有者によって情報処理装置及び情報記憶媒体とは別に秘密に保持される非対称暗号に基づく第２秘密鍵による暗号化処理３０１を行うことによって生成される。
【００６０】
第２秘密鍵による暗号化処理３０１では、認証手順による真贋判定処理１０１における情報記憶媒体側で行われる証明情報生成の根拠となる第１秘密鍵に対する公開鍵２０１−１に対応するデータと改竄検出処理１０２で使うソフトウェアコンテンツの第１要約値２０１−２に対応するデータの合成値の要約値２０１−３を、権限所有者あるいはその権限所有者の承認を得た真正の提供者が、例えば情報処理装置３００の製造者若しくはソフトウェアコンテンツを格納した情報記憶媒体の製造者が、情報記憶媒体２００と情報処理装置３００のいずれにも記憶されていない電子署名用の第２秘密鍵３０１−１を用いて暗号化した（３０１−４）情報すなわち暗号文２１０を、電子署名として情報記憶媒体２００に記憶させる。他方情報処理装置３００は第２秘密鍵３０１−１に対応した公開鍵３０２を記憶させる。
【００６１】
電子署名としての第２暗号文２１０は、情報記憶媒体２００の認証手順による真贋判定処理１０１に使う公開鍵に対応するデータとソフトウェアコンテンツの改竄検出処理１０２に使う要約値に対応するデータによって構成されている。このため電子署名としての第２暗号文２１０の有効性は情報記憶媒体２００と特定のソフトウェアコンテンツの組み合わせに限定される。これにより、組み合わせの異なる情報記憶媒体２００に記憶されたソフトウェアコンテンツは、電子署名に基づく真贋判定処理１００で合格しないため情報処理装置３００で動作を制限させることが可能である。このため、実施の形態１と同様にソフトウェアコンテンツのコピー被害を最小限に抑えることが可能である。
【００６２】
次に、情報記憶媒体が情報処理装置に装着されているときの実施の形態２による真贋検証手順を説明する。
【００６３】
＜電子署名による真贋判定処理１００（第１判定処理）＞
情報処理装置３００は、情報記憶媒体２００から暗号文２１０を読み出し、記憶部３０２に格納された公開鍵を用いて復号する第２演算処理３１０を行ない、第１復号文３１１を生成し主記憶部に一時的に保存する。第１復号文３１１は権限所有者によって準備された合成値の要約値２０１−３である。
【００６４】
また、情報記憶媒体２００から第１秘密鍵の公開鍵３４０とソフトウェアコンテンツの第１要約値２０６を読み出し、第８演算手段で公開鍵３４０と第１要約値２０６の合成値３１５する演算処理３１３を実行し、その合成値３１５に対する一方向ハッシュ関数に基づいて第３要約値３３９を生成する演算処理を第９演算手段で実行する。そして生成された第３要約値３３９を一時保存されている第１復号文３１１と比較する演算処理が第１演算手段３１２で実行される。この第１比較処理３１２の比較の結果、一致していれば、情報記憶媒体２００に格納された公開鍵３４０と第１要約値２０６は信頼できると判断する。
【００６５】
＜証明・認証手順による真贋判定処理１０１（第２判定処理）＞
情報記憶媒体２００の乱数生成手段３４５によって生成された乱数をＲ、法の数をＮ，前記第１秘密鍵３４１をＭ、前記第１第１秘密鍵に対する公開鍵３４０をＷ（Ｗ＝Ｍ2  ｍｏｄ  Ｎ）とする。また、第１乱数生成手段３４６は質問Ｕ＝‘０’と‘１’を無作為に（ランダムに）出力するように構成されている。
【００６６】
第２判定処理１０１の開始時にまず、情報記憶媒体２００は乱数生成部３４５で生成された乱数Ｒに対しＲ2  ｍｏｄ  Ｎを第１演算処理３４３で演算し演算結果Ｘを情報処理装置３００に送信する（図４の６０２、６２０に対応）。図示されていないが生成された乱数Ｒは情報記憶媒体２００の一時記憶手段に一時的に保存される。
【００６７】
＜第１乱数生成手段３４６の出力が質問Ｕ＝‘０’の場合＞
演算結果Ｘを受信した情報処理装置では、第２演算引数選択手段が受信した演算結果Ｘと定数発生回路３６１から出力される定数‘１’を選択して第４演算手段３４８に出力する。第４演算手段３４８は演算結果Ｘを第２演算結果記憶手段３６５（レジスタ）に一時保存する。
【００６８】
次に、質問Ｕ＝‘０’を情報記憶媒体２００に送信する。情報記憶媒体２００では、第１演算引数選択処理手段３４４が一時保存されている第２乱数生成処理３４５が生成した乱数Ｒと第１秘密鍵３３０（Ｍ）を選択して出力する。第１演算処理３４３では、第１演算引数選択処理手段３４４が選択した乱数Ｒと第１秘密鍵Ｍに基づきＹ＝（Ｒ・ＭＵ）  ｍｏｄ  Ｎの演算を第１演算手段３４３で実行する。質問Ｕ＝‘０’のときはその第１演算結果３４２としてＹ＝Ｒを情報処理装置３００に送信する。
【００６９】
情報記憶処理２００から演算値Ｙ＝Ｒを受信した情報処理装置３００では、第２演算引数選択処理３４７で受信した演算値Ｙ＝Ｒと同じ演算値Ｙ＝Ｒを選択しＹ2  ｍｏｄ  Ｎの演算を第４演算手段で実行し、その演算結果を第３演算結果記憶手段３６６（レジスタ）に一時保存する。そして、第５演算手段３６７は第２演算結果記憶手段３６５に保存されているＸ（＝Ｒ2  ｍｏｄ  Ｎ）と第３演算結果記憶手段３６６に保存されている演算結果Ｙ2  ｍｏｄ  Ｎ＝Ｒ2  ｍｏｄ  Ｎを比較し一致していれば一回目の認証判定で合格したとみなす。
【００７０】
＜第１乱数生成手段３４６の出力が質問Ｕ＝‘１’の場合＞
演算結果Ｘを受信した情報処理装置では、第２演算引数選択手段３４７が、受信した演算結果Ｘと情報記憶媒体から読み出した第１秘密鍵に対する公開鍵３４０（Ｗ）を選択して第４演算手段３４８に出力する。第４演算手段３４８は演算結果Ｘと公開鍵３４０（Ｗ）に基づく演算結果を第２演算結果（Ｘ・Ｗ）の記憶手段３６５（レジスタ）に一時保存する。
【００７１】
次に、質問Ｕ＝‘１’を情報記憶媒体２００に送信する。情報記憶媒体２００では、第１演算引数選択処理手段３４４は一時保存されている第２乱数生成処理３４５が生成した乱数Ｒと第１秘密鍵Ｍを選択し第４演算手段３４８に出力する。第４演算手段３４８はＹ＝（Ｒ・ＭＵ）  ｍｏｄ  Ｎを演算する。質問Ｕ＝‘１’のときはその演算結果３４２としてＹ＝（Ｒ・Ｍ）  ｍｏｄ  Ｎを情報処理装置３００に回答する。
【００７２】
第２演算引数選択処理３４７は情報記憶媒体から受信した第１演算結果３４２（Ｙ）を選択して出力し第４演算手段処理３４８で情報記憶媒体からの回答Ｙを二乗した値（Ｒ・Ｍ）２ｍｏｄ Ｎを演算し第３演算結果の記憶手段３６６（レジスタ）に一時保存する。第５演算手段３６７は第２演算結果の記憶手段３６５に保存されている値Ｘ・Ｗ＝（Ｒ2  ｍｏｄ  Ｎ）（Ｍ2  ｍｏｄ  Ｎ）と第３演算結果の記憶手段３６６に保存されている値（Ｒ・Ｍ）２  ｍｏｄ  Ｎを比較する比較演算処理を行い一致していれば一回目の認証判定で合格したとみなす。
【００７３】
この処理を複数回行い、全ての比較結果が一致していれば、ソフトウェアコンテンツを記憶する情報記憶媒体２００は正規の提供者が製造したものと判定する。
【００７４】
＜改竄検出処理１０２＞
情報処理装置３００は、情報記憶媒体２００からソフトウェアコンテンツ記憶部２０７からソフトウェアコンテンツを読み出し一方向ハッシュ関数に基づいた第２要約値３１８を生成する演算処理３１９を行い、情報記憶媒体２００から読み出したソフトウェアコンテンツの第１要約値２０６と比較演算する処理３１７を行う。この比較結果により、比較した結果が一致していれば、ソフトウェアコンテンツの改竄がないと判断し、一致していなければ、改竄があったものとみなす。
【００７５】
その根拠は、ソフトウェアコンテンツのごく一部でも変化した場合、一方向ハッシュ関数の出力値は大きく変化するからである。
【００７６】
以上の電子署名による真贋判定処理１００、認証手順による真贋判定処理１０１、改竄検出処理１０２の３つの処理により、全てその比較結果が一致した場合に、情報処理装置３００では、情報記憶媒体２００のソフトウェアコンテンツ記憶部２０７に格納されたソフトウェアコンテンツを実行し、そのソフトウェアコンテンツに基づいた処理を行う。
【００７７】
本実施の形態では、認証手順による真贋判定処理１０１にゼロ知識対話証明の認証方式を使用したので、セキュリティの安全性は他の方式と同等でしかも半導体装置に適用したときコンパクトに実現することができる。
【００７８】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【００７９】
例えば、改竄検出処理１０２については、その処理に時間がかかるため、情報処理装置３００では、初めに電子署名による真贋判定処理１００及び認証手順による真贋判定処理１０１での処理を行い、この２つの処理の比較結果が一致した場合に、まずソフトウェアコンテンツを実行し、そのソフトウェアコンテンツを実行する間の処理のアイドル時やＣＰＵに掛かる負荷が軽い時などに改竄検出処理１０２を並行して行い、もし、改竄検出処理１０２での比較結果が一致しない場合ことが判明したときはには、その時点で処理の実行を終了する等ソフトウェアコンテンツの実行を制限するなどの処理を行うようにしてもよいし、フトウェアコンテンツの主要な部分のみのや、さらに不規則なタイミングで改竄検出を行うようにしてもよい。
【００８０】
また、認証手順による真贋判定処理１０１で使用するものとして、３−ＤＥＳやＲＣ５、ＡＥＳ等の暗号技術や、ＲＳＡ暗号やＥｌＧａｍａｌ暗号、楕円曲線の離散対数問題を応用した楕円曲線暗号を利用してもよい。
【００８１】
さらに、本願発明に係る主要な処理、すなわち電子署名による真贋判定処理１００、認証手順による真贋判定処理１０１及び改竄検出処理１０２の３つの処理の情報処理装置３００内における処理手順を情報記憶媒体２００のソフトウェアコンテンツ記憶部２０７に記憶し、情報処理装置３００が動作を始めるときに情報処理装置３００は情報記憶媒体２００から上記処理手順を受信し、情報処理装置３００の中央演算装置３５１で上記処理手順を実行し不正にコピーされたソフトウェアの検出を行うようにしてもよい。
【産業上の利用可能性】
【００８２】
本発明は、情報処理装置で使用されるソフトウェアコンテンツを保護する技術に関し、ゲーム装置用情報記憶媒体に記憶されたゲームプログラム等のデータを保護する技術などに広く適用可能である。
【符号の説明】
【００８３】
１００…電子署名による真贋判定処理、１０１…認証手順による真贋判定処理、１０２…改竄検出処理、２００…情報記憶媒体、２０２…記憶部、２０６…ソフトウェアコンテンツの第１要約値記憶部、２０７…ソフトウェアコンテンツ記憶部、２１０…暗号文記憶部、２５０…暗号制御回路、２５１…記憶部制御回路、２５２…入出力部、３００…情報処理装置、３０２…第２秘密鍵の公開鍵記憶部、３１１…第１復号文、３２０…第１秘密鍵の公開鍵記憶部、３３０…第１秘密鍵記憶部、３３１…第１演算結果記憶部、３３２…第１演算回路、３３３…第２復号文、３３５…乱数生成部、３３９…第３要約値、３４２…第１演算結果、３４３…第１演算処理、３４５…乱数生成部、３５０…主記憶部、３５１…中央演算装置、３５２…基本プログラム記憶部、３５４…処理部、３５５…表示装置、３５６…スピーカ、３５７…操作部、３５８…端子、３６０…定数発生回路、３６１…定数発生回路、３６５…第２演算結果の記憶手段、３６６…第３演算結果の記憶手段、６００…証明者、６１０…認証者。
【図１】
2012060320.tif 000003
【図２】
2012060320.tif 000004
【図３】
2012060320.tif 000005
【図４】
2012060320.tif 000006
【図５】
2012060320.tif 000007