トップ :: G 物理学 :: G06 計算;計数




【発明の名称】 データ処理装置、データ処理方法、およびデータ処理プログラム
【発明者】 【氏名】高清水 響
【住所又は居所】東京都港区芝四丁目1番23号 株式会社コナミコンピュータエンタテインメントスタジオ内

【要約】 【課題】セーブデータの解析を簡単かつ確実に防止し、セーブデータが破損や改変された場合に容易かつ確実に発見することができて機密性を向上させられるデータ処理装置を提供する。

【解決手段】バイナリデータをデータ記憶手段2にセーブする場合、ビットデータ抽出手段12が前記バイナリデータから所定のデータ単位毎に少なくとも1つのビット位置におけるビットデータを抽出し、プロテクトデータ作成手段13が前記各ビットデータによりプロテクトデータを作成し、データ記憶処理手段14が前記バイナリデータおよび前記プロテクトデータをセーブデータとしてデータ記憶手段2に保存する。
【特許請求の範囲】
【請求項1】 セーブデータを書き換え可能に記憶するデータ記憶手段を備えており、所定のデータをセーブデータとして前記データ記憶手段に記憶するデータ処理装置であって、前記所定のデータをバイナリデータに変換するバイナリデータ変換手段と、前記バイナリデータ変換手段によりバイナリ化されたバイナリデータを前記データ記憶手段に記憶する場合に、前記バイナリデータのうち所定のデータ単位毎に少なくとも1つのビット位置におけるビットデータを抽出するビットデータ抽出手段と、前記ビットデータ抽出手段により抽出された各ビットデータで構成されるプロテクトデータを作成するプロテクトデータ作成手段と、前記プロテクトデータ作成手段により作成されたプロテクトデータおよび前記バイナリデータをセーブデータとして前記データ記憶手段に記憶するデータ記憶処理手段とを備えたことを特徴とするデータ処理装置。
【請求項2】 請求項1において、前記プロテクトデータ作成手段は、前記ビットデータ抽出手段により前記ビットデータが抽出されたときの前記データ単位、前記ビット位置、および前記ビットデータの組み合わせにより前記プロテクトデータを作成することを特徴とするデータ処理装置。
【請求項3】 請求項2において、前記ビットデータ抽出手段は、ビットデータを抽出するための前記データ単位および前記ビット位置の少なくとも一方をランダムに決定することを特徴とするデータ処理装置。
【請求項4】 請求項1から請求項3のいずれか1項において、前記ビットデータ抽出手段は、前記データ単位を8*2(n−1)ビット(nは自然数)にすることを特徴とするデータ処理装置。
【請求項5】 請求項1から請求項4のいずれか1項において、前記データ処理装置はさらに、前記セーブデータをロードする場合、前記データ記憶手段から前記セーブデータを読み出すセーブデータ読出手段と、前記セーブデータ読出手段により読み出された前記セーブデータから前記プロテクトデータを抜き出すプロテクトデータ抜出手段と、前記プロテクトデータ抜出手段により抜き出された前記プロテクトデータの各ビットデータと、この各ビットデータが抽出されたときのデータ単位毎のビット位置に対応する前記バイナリデータの各ビットデータとを比較するデータ比較手段と、前記データ比較手段による比較の結果、前記プロテクトデータの各ビットデータおよび前記バイナリデータの各ビットデータが不一致の場合に読み出しを禁止するデータ読出禁止手段とを備えたことを特徴とするデータ処理装置。
【請求項6】 セーブデータを書き換え可能に記憶するデータ記憶手段に対し、所定のデータをセーブデータとして記憶するデータ処理方法であって、前記所定のデータをバイナリデータに変換するバイナリデータ変換ステップと、前記バイナリデータ変換ステップにおいてバイナリ化されたバイナリデータを前記データ記憶手段に記憶する場合に、前記バイナリデータのうち所定のデータ単位毎に少なくとも1つのビット位置におけるビットデータを抽出するビットデータ抽出ステップと、前記ビットデータ抽出ステップにおいて抽出された各ビットデータで構成されるプロテクトデータを作成するプロテクトデータ作成ステップと、前記プロテクトデータ作成ステップにおいて作成されたプロテクトデータおよび前記バイナリデータをセーブデータとして前記データ記憶手段に記憶するデータ記憶処理ステップとを有することを特徴とするデータ処理方法。
【請求項7】 請求項6において、前記プロテクトデータ作成ステップは、前記ビットデータ抽出ステップにおいて前記ビットデータが抽出されたときの前記データ単位、前記ビット位置、および前記ビットデータの組み合わせにより、前記プロテクトデータを作成することを特徴とするデータ処理方法。
【請求項8】 請求項7において、前記ビットデータ抽出ステップは、ビットデータを抽出するための前記データ単位および前記ビット位置の少なくとも一方をランダムに決定することを特徴とするデータ処理方法。
【請求項9】 請求項6から請求項8のいずれか1項において、前記ビットデータ抽出ステップは、前記データ単位を8*2(n−1)ビット(nは自然数)にすることを特徴とするデータ処理方法。
【請求項10】 請求項6から請求項9のいずれか1項において、前記データ処理方法はさらに、前記セーブデータをロードする場合、前記データ記憶手段から前記セーブデータを読み出すセーブデータ読出ステップと、前記セーブデータ読出ステップにおいて読み出された前記セーブデータから前記プロテクトデータを抜き出すプロテクトデータ抜出ステップと、前記プロテクトデータ抜出ステップにおいて抜き出された前記プロテクトデータの各ビットデータと、この各ビットデータが抽出されたときのデータ単位毎のビット位置に対応する前記バイナリデータの各ビットデータとを比較するデータ比較ステップと、前記データ比較ステップにおける比較の結果、前記プロテクトデータの各ビットデータおよび前記バイナリデータの各ビットデータが不一致の場合に読み出しを禁止するデータ読出禁止ステップとを備えたことを特徴とするデータ処理方法。
【請求項11】 セーブデータを書き換え可能に記憶するデータ記憶手段を備えたコンピュータに、所定のデータをセーブデータとして前記データ記憶手段に記憶させるデータ処理プログラムであって、前記所定のデータをバイナリデータに変換するバイナリデータ変換ステップと、前記バイナリデータ変換ステップにおいてバイナリ化されたバイナリデータを前記データ記憶手段に記憶する場合に、前記バイナリデータのうち所定のデータ単位毎に少なくとも1つのビット位置におけるビットデータを抽出するビットデータ抽出ステップと、前記ビットデータ抽出ステップにおいて抽出された各ビットデータで構成されるプロテクトデータを作成するプロテクトデータ作成ステップと、前記プロテクトデータ作成ステップにおいて作成されたプロテクトデータおよび前記バイナリデータをセーブデータとして前記データ記憶手段に記憶するデータ記憶処理ステップとをコンピュータに実行させることを特徴とするデータ処理プログラム。
【請求項12】 請求項11において、前記プロテクトデータ作成ステップは、前記ビットデータ抽出ステップにおいて前記ビットデータが抽出されたときの前記データ単位、前記ビット位置、および前記ビットデータの組み合わせにより、前記プロテクトデータを作成することを特徴とするデータ処理プログラム。
【請求項13】 請求項12において、前記ビットデータ抽出ステップは、ビットデータを抽出するための前記データ単位および前記ビット位置の少なくとも一方をランダムに決定することを特徴とするデータ処理プログラム。
【請求項14】 請求項11から請求項13のいずれか1項において、前記ビットデータ抽出ステップは、前記データ単位を8*2(n−1)ビット(nは自然数)にすることを特徴とするデータ処理プログラム。
【請求項15】 請求項11から請求項14のいずれか1項において、前記データ処理プログラムはさらに、前記セーブデータをロードする場合、前記データ記憶手段から前記セーブデータを読み出すセーブデータ読出ステップと、前記セーブデータ読出ステップにおいて読み出された前記セーブデータから前記プロテクトデータを抜き出すプロテクトデータ抜出ステップと、前記プロテクトデータ抜出ステップにおいて抜き出された前記プロテクトデータの各ビットデータと、この各ビットデータが抽出されたときのデータ単位毎のビット位置に対応する前記バイナリデータの各ビットデータとを比較するデータ比較ステップと、前記データ比較ステップにおける比較の結果、前記プロテクトデータの各ビットデータおよび前記バイナリデータの各ビットデータが不一致の場合に読み出しを禁止するデータ読出禁止ステップとを備えたことを特徴とするデータ処理プログラム。
【請求項16】 セーブデータを書き換え可能に記憶するデータ記憶手段を備えており、所定のデータをセーブデータとして前記データ記憶手段に記憶するデータ処理装置であって、前記所定のデータをバイナリデータに変換するバイナリデータ変換手段と、前記バイナリデータ変換手段によりバイナリ化されたバイナリデータを前記データ記憶手段に記憶する場合、前記バイナリデータを暗号化するために使用されるマスクデータを取得するマスクデータ取得手段と、前記マスクデータ取得手段により取得されたマスクデータを使用して、前記バイナリデータに対し排他的論理和演算を行って暗号化する排他的論理和暗号化手段と、少なくとも前記排他的論理和暗号化手段により暗号化された暗号化バイナリデータをセーブデータとして前記データ記憶手段に記憶するデータ記憶処理手段とを備えたことを特徴とするデータ処理装置。
【請求項17】 請求項16において、前記データ記憶処理手段は、前記暗号化バイナリデータに、暗号化に使用したマスクデータまたはそのマスクデータを特定する識別子を付随させてセーブデータとして前記データ記憶手段に記憶することを特徴とするデータ処理装置。
【請求項18】 請求項17において、複数のマスクデータにマスク識別子を対応づけたマスクデータテーブルを記憶するマスクデータテーブル記憶手段を備えているとともに、前記マスクデータ取得手段は、前記マスクデータテーブルから任意のマスク識別子に基づいてマスクデータを取得することを特徴とするデータ処理装置。
【請求項19】 請求項17において、所定のデータを記憶させるたび毎に乱数を発生させてマスクデータをランダムに作成するマスクデータランダム作成手段を備えているとともに、前記マスクデータ取得手段は、前記マスクデータランダム作成手段により作成されたマスクデータを取得することを特徴とするデータ処理装置。
【請求項20】 請求項17において、前記マスクデータ取得手段は、所定の静的なメモリ領域内における任意のアドレスのデータを前記マスクデータとして取得することを特徴とするデータ処理装置。
【請求項21】 請求項16から請求項20のいずれか1項において、前記マスクデータ取得手段は、8*2(n−1)ビット(nは自然数)のデータ単位でマスクデータを取得することを特徴とするデータ処理装置。
【請求項22】 請求項16から請求項21のいずれか1項において、前記データ処理装置はさらに、前記セーブデータをロードする場合、前記データ記憶手段から前記セーブデータを読み出すセーブデータ読出手段と、前記排他的論理和暗号化手段により暗号化に使用されたマスクデータを所定の記憶領域から抜き出すマスタデータ抜出手段と、前記セーブデータ読出手段により読み出された前記セーブデータ内の暗号化バイナリデータに対して前記マスクデータ抜出手段によって抜き出された前記マスクデータを使用して排他的論理和演算を行って復元する排他的論理和復号化手段とを備えたことを特徴とするデータ処理装置。
【請求項23】 セーブデータを書き換え可能に記憶するデータ記憶手段に対し、所定のデータをセーブデータとして前記データ記憶手段に記憶するデータ処理方法であって、前記所定のデータをバイナリデータに変換するバイナリデータ変換ステップと、前記バイナリデータ変換ステップにおいてバイナリ化されたバイナリデータを前記データ記憶手段に記憶する際に、前記バイナリデータを暗号化するために使用されるマスクデータを取得するマスクデータ取得ステップと、前記マスクデータ取得ステップにおいて取得されたマスクデータを使用して、前記バイナリデータに対し排他的論理和演算を行って暗号化する排他的論理和暗号化ステップと、少なくとも前記排他的論理和暗号化ステップにおいて暗号化された暗号化バイナリデータをセーブデータとして前記データ記憶手段に記憶するデータ記憶処理ステップとを備えたことを特徴とするデータ処理方法。
【請求項24】 請求項23において、前記データ記憶処理ステップは、前記暗号化バイナリデータに、暗号化に使用したマスクデータまたはそのマスクデータを特定する識別子を付随させてセーブデータとして前記データ記憶手段に記憶することを特徴とするデータ処理方法。
【請求項25】 請求項24において、複数のマスクデータにマスク識別子を対応づけたマスクデータテーブルを記憶するマスクデータテーブル記憶手段を備えているとともに、前記マスクデータ取得ステップにおいては、前記マスクデータテーブルから任意のマスク識別子に基づいてマスクデータを取得することを特徴とするデータ処理方法。
【請求項26】 請求項24において、所定のデータを記憶させるたび毎に乱数を発生させてマスクデータをランダムに作成するマスクデータランダム作成手段を備えているとともに、前記マスクデータ取得ステップにおいては、前記マスクデータランダム作成手段により作成されたマスクデータを取得することを特徴とするデータ処理方法。
【請求項27】 請求項24において、前記マスクデータ取得ステップにおいては、所定の静的なメモリ領域内における任意のアドレスのデータを前記マスクデータとして取得することを特徴とするデータ処理方法。
【請求項28】 請求項23から請求項27のいずれか1項において、前記マスクデータ取得ステップにおいては、8*2(n−1)ビット(nは自然数)のデータ単位でマスクデータを取得することを特徴とするデータ処理方法。
【請求項29】 請求項23から請求項28のいずれか1項において、前記データ処理方法はさらに、前記セーブデータをロードする場合、前記データ記憶手段から前記セーブデータを読み出すセーブデータ読出ステップと、前記排他的論理和暗号化ステップにおいて暗号化に使用されたマスクデータを所定の記憶領域から抜き出すマスタデータ抜出ステップと、前記セーブデータ読出手段により読み出された前記セーブデータ内の暗号化バイナリデータに対して前記マスクデータ抜出手段によって抜き出された前記マスクデータを使用して排他的論理和演算を行って復元する排他的論理和復号化ステップとを備えたことを特徴とするデータ処理方法。
【請求項30】 セーブデータを書き換え可能に記憶するデータ記憶手段を備えたコンピュータに、所定のデータをセーブデータとして前記データ記憶手段に記憶させるデータ処理プログラムであって、前記所定のデータをバイナリデータに変換するバイナリデータ変換ステップと、前記バイナリデータ変換ステップにおいてバイナリ化されたバイナリデータを前記データ記憶手段に記憶する際に、前記バイナリデータを暗号化するために使用されるマスクデータを取得するマスクデータ取得ステップと、前記マスクデータ取得ステップにおいて取得されたマスクデータを使用して、前記バイナリデータに対し排他的論理和演算を行って暗号化する排他的論理和暗号化ステップと、少なくとも前記排他的論理和暗号化ステップにおいて暗号化された暗号化バイナリデータをセーブデータとして前記データ記憶手段に記憶するデータ記憶処理ステップとをコンピュータに実行させることを特徴とするデータ処理プログラム。
【請求項31】 請求項30において、前記データ記憶処理ステップは、前記暗号化バイナリデータに、暗号化に使用したマスクデータまたはそのマスクデータを特定する識別子を付随させてセーブデータとして前記データ記憶手段に記憶することを特徴とするデータ処理プログラム。
【請求項32】 請求項31において、複数のマスクデータにマスク識別子を対応づけたマスクデータテーブルを記憶するマスクデータテーブル記憶手段を備えているとともに、前記マスクデータ取得ステップにおいては、前記マスクデータテーブルから任意のマスク識別子に基づいてマスクデータを取得することを特徴とするデータ処理プログラム。
【請求項33】 請求項31において、所定のデータを記憶させるたび毎に乱数を発生させてマスクデータをランダムに作成するマスクデータランダム作成手段を備えているとともに、前記マスクデータ取得ステップにおいては、前記マスクデータランダム作成手段により作成されたマスクデータを取得することを特徴とするデータ処理プログラム。
【請求項34】 請求項31において、前記マスクデータ取得ステップにおいては、所定の静的なメモリ領域内における任意のアドレスのデータを前記マスクデータとして取得することを特徴とするデータ処理プログラム。
【請求項35】 請求項30から請求項34のいずれか1項において、前記マスクデータ取得ステップにおいては、8*2(n−1)ビット(nは自然数)のデータ単位でマスクデータを取得することを特徴とするデータ処理プログラム。
【請求項36】 請求項30から請求項35のいずれか1項において、前記データ処理プログラムはさらに、前記セーブデータをロードする場合、前記データ記憶手段から前記セーブデータを読み出すセーブデータ読出ステップと、前記排他的論理和暗号化ステップにおいて暗号化に使用されたマスクデータを所定の記憶領域から抜き出すマスタデータ抜出ステップと、前記セーブデータ読出手段により読み出された前記セーブデータ内の暗号化バイナリデータに対して前記マスクデータ抜出手段によって抜き出された前記マスクデータを使用して排他的論理和演算を行って復元する排他的論理和復号化ステップとを備えたことを特徴とするデータ処理プログラム。
【請求項37】 セーブデータを書き換え可能に記憶するデータ記憶手段を備えており、所定のデータをセーブデータとして前記データ記憶手段に記憶するデータ処理装置であって、前記所定のデータをバイナリデータに変換するバイナリデータ変換手段と、前記バイナリデータ変換手段によりバイナリ化された前記バイナリデータを前記データ記憶手段に記憶する場合、前記バイナリデータのうち所定のデータ単位毎に少なくとも1つのビット位置におけるビットデータを抽出するビットデータ抽出手段と、前記ビットデータ抽出手段により抽出された各ビットデータで構成されるプロテクトデータを作成するプロテクトデータ作成手段と、前記プロテクトデータ作成手段により作成されたプロテクトデータおよび前記バイナリデータをプリセーブデータとして作成するプリセーブデータ作成手段と、前記プリセーブデータ作成手段により作成された前記プリセーブデータを暗号化するために使用するマスクデータを取得するマスクデータ取得手段と、前記マスクデータ取得手段により取得されたマスクデータを使用して前記プリセーブデータに対し排他的論理和演算を行って暗号化する排他的論理和暗号化手段と、少なくとも前記排他的論理和暗号化手段により暗号化された暗号化プリセーブデータをセーブデータとして前記データ記憶手段に記憶するデータ記憶処理手段とを備えたことを特徴とするデータ処理装置。
【請求項38】 セーブデータを書き換え可能に記憶するデータ記憶手段を備えており、所定のデータをセーブデータとして前記データ記憶手段に記憶するデータ処理装置であって、前記所定のデータをバイナリデータに変換するバイナリデータ変換手段と、前記バイナリデータ変換手段によりバイナリ化された前記バイナリデータを前記データ記憶手段に記憶する場合、前記バイナリデータを暗号化するために使用されるマスクデータを取得するマスクデータ取得手段と、前記マスクデータ取得手段により取得されたマスクデータを使用して前記バイナリデータに対し排他的論理和演算を行って暗号化する排他的論理和暗号化手段と、少なくとも前記排他的論理和暗号化手段により暗号化された暗号化バイナリデータをプリセーブデータとして作成するプリセーブデータ作成手段と、前記プリセーブデータ作成手段により作成された前記プリセーブデータのうち所定のデータ単位毎に少なくとも1つのビット位置におけるビットデータを抽出するビットデータ抽出手段と、前記ビットデータ抽出手段により抽出された各ビットデータで構成されるプロテクトデータを作成するプロテクトデータ作成手段と、前記プロテクトデータ作成手段により作成されたプロテクトデータおよび前記プリセーブデータをセーブデータとして前記データ記憶手段に記憶するデータ記憶処理手段とを備えたことを特徴とするデータ処理装置。
【発明の詳細な説明】【0001】
【発明の属する技術分野】本発明はデータ処理装置、データ処理方法、およびデータ処理プログラムに関し、特に、データ記憶手段に記憶されたセーブデータの解析や破損改変等に対する防御手段としての簡易保管処理技術および暗号化処理技術に関するものである。
【0002】
【従来の技術】従来から家庭用テレビゲーム機やパーソナルコンピュータにおいてゲームを行う場合、CD−ROM等から所望のゲームプログラムをメインメモリ上に読み出して起動する。そして、ゲームが終了し、あるいはゲームの途中で一旦中断する場合、その終了時や中断時における進行状態や編集状態を所定のデータ形式に変換してセーブデータとしてメモリーカードやハードディスク等の記憶手段に記憶させている。その後、再び前記ゲームプログラムを実行する際には、前記記憶手段に記憶したセーブデータをゲームプログラムとともにメインメモリ上に読み込ませて、終了時または中断時に記憶しておいた進行状態や編集状態から再開できるようになっている。
【0003】
【発明が解決しようとする課題】しかしながら、従来においてセーブデータを記憶手段に記憶する場合、そのセーブデータは、一般に0と1からなる2進数で表現される、いわゆるバイナリ形式のデータに変換されて保存されることが多いため、容易に理解しやすく、データの解析や改変、が簡単にされてしまうという問題がある。また、ゲーム等のセーブデータが勝手に改変されてしまうと、ゲームのアトラクション性が低下してしまい商品価値も低下してしまう。さらに、重要データが書き換えられてしまうとデータの価値が失われてしまうという問題がある。
【0004】本発明は前述のような課題に鑑みてなされたものであって、セーブデータの解析や改変を簡単かつ確実に防止することができるとともに、セーブデータが破損や改変された場合に容易かつ確実に発見することができて速やかに対策を講じることができ、セーブデータの機密性を向上させることができるデータ処理装置、データ処理方法、およびデータ処理プログラムを提供することを目的とする。
【0005】
【課題を解決するための手段】本発明に係るデータ処理装置の特徴は、セーブデータを書き換え可能に記憶するデータ記憶手段を備えており、所定のデータをセーブデータとして前記データ記憶手段に記憶するようになっており、前記所定のデータをバイナリデータに変換するバイナリデータ変換手段と、前記バイナリデータ変換手段によりバイナリ化されたバイナリデータを前記データ記憶手段に記憶する場合、前記バイナリデータのうち所定のデータ単位毎に少なくとも1つのビット位置におけるビットデータを抽出するビットデータ抽出手段と、前記ビットデータ抽出手段により抽出された各ビットデータで構成されるプロテクトデータを作成するプロテクトデータ作成手段と、前記プロテクトデータ作成手段により作成されたプロテクトデータおよび前記バイナリデータをセーブデータとして前記データ記憶手段に記憶するデータ記憶処理手段とを備えている点にある。
【0006】ここで、データとしてはゲーム終了時や中断時における進行状態や編集状態に関するデータ、作成した文書、画像等に関するデータなどが採用できる。そして、このような構成を採用したことにより、データを記憶手段に記憶させる場合、従来のように単にバイナリ形式に変換したデータをセーブデータとするのではなく、バイナリ化したデータから、任意の位置におけるビットデータ群を抽出してデータ化したものを記憶すべきデータに付随させ、これをセーブデータとすることにより、ファイルサイズをいたずらに増加させることなく、簡易のプロテクトシステムを備えたデータとしてデータ記憶手段に記憶させることができ、簡易かつ確実にデータのセキュリティ性能の高めることができる。
【0007】以上において、本発明において、前記プロテクトデータ作成手段は、前記ビットデータ抽出手段により前記ビットデータが抽出されたときの前記データ単位、前記ビット位置、および前記ビットデータの組み合わせにより前記プロテクトデータを作成するように構成されていることが好ましい。これによれば、ビットデータを抽出するデータ単位やビット位置をランダムに決定した場合であっても、データ読み込みの際におけるプロテクトデータおよびバイナリデータの各ビットデータを比較する場合に、比較位置を確実かつ簡単に抽出することができる。
【0008】また、本発明において、前記ビットデータ抽出手段は、ビットデータを抽出するための前記データ単位および前記ビット位置の少なくとも一方をランダムに決定するように構成されていることが望ましい。これによれば、プロテクトデータがランダムに作成されるため、記憶データの解析や改変をより困難なものとし、データの機密性を向上させることができる。
【0009】さらに、本発明において、前記ビットデータ抽出手段は、前記データ単位を8*2(n−1)ビット(nは自然数)にするように構成されていることが好ましい。これによれば、データ処理装置のレジスタ長の単位と合致するためデータ処理速度を向上させることができる。
【0010】また、本発明は、さらに、前記セーブデータをロードする場合、前記データ記憶手段から前記セーブデータを読み出すセーブデータ読出手段と、前記セーブデータ読出手段により読み出された前記セーブデータから前記プロテクトデータを抜き出すプロテクトデータ抜出手段と、前記プロテクトデータ抜出手段により抜き出された前記プロテクトデータの各ビットデータと、この各ビットデータが抽出されたときのデータ単位毎のビット位置に対応する前記バイナリデータの各ビットデータとを比較するデータ比較手段と、前記データ比較手段による比較の結果、前記プロテクトデータの各ビットデータおよび前記バイナリデータの各ビットデータが不一致の場合に読み出しを禁止するデータ読出禁止手段とを備えるように構成されていることが望ましい。これによれば、セキュリティ性能の高いデータ保存を簡易かつ確実に実現できるとともに、容易かつ安全に読み出しを実行することができるし、もしデータが不正に改変、改ざんされた場合には、高い確率でデータの読み出しを禁止することができる。
【0011】また、本発明は前述のデータ処理装置に限らず、例えば、セーブデータを書き換え可能に記憶するデータ記憶手段に対し、所定のデータをセーブデータとして記憶するデータ処理方法であって、前記所定のデータをバイナリデータに変換するバイナリデータ変換ステップと、前記バイナリデータ変換ステップにおいてバイナリ化されたバイナリデータを前記データ記憶手段に記憶する場合、前記バイナリデータのうち所定のデータ単位毎に少なくとも1つのビット位置におけるビットデータを抽出するビットデータ抽出ステップと、前記ビットデータ抽出ステップにおいて抽出された各ビットデータで構成されるプロテクトデータを作成するプロテクトデータ作成ステップと、前記プロテクトデータ作成ステップにおいて作成されたプロテクトデータおよび前記バイナリデータをセーブデータとして前記データ記憶手段に記憶するデータ記憶処理ステップとを有するデータ処理方法にも適用することができ、同様の作用効果を得ることができる。
【0012】さらに、本発明は、前述のデータ処理装置、データ処理方法に限らず、例えば、セーブデータを書き換え可能に記憶するデータ記憶手段を備えたコンピュータに、所定のデータをセーブデータとして前記データ記憶手段に記憶させるデータ処理プログラムであって、前記所定のデータをバイナリデータに変換するバイナリデータ変換ステップと、前記バイナリデータ変換ステップにおいてバイナリ化されたバイナリデータを前記データ記憶手段に記憶する際に、前記バイナリデータのうち所定のデータ単位毎に少なくとも1つのビット位置におけるビットデータを抽出するビットデータ抽出ステップと、前記ビットデータ抽出ステップにおいて抽出された各ビットデータで構成されるプロテクトデータを作成するプロテクトデータ作成ステップと、前記プロテクトデータ作成ステップにおいて作成されたプロテクトデータおよび前記バイナリデータをセーブデータとして前記データ記憶手段に記憶するデータ記憶処理ステップとをコンピュータに実行させるデータ処理プログラムにも適用することができ、同様の作用効果を得ることができる。
【0013】また、本発明に係るデータ処理装置の特徴は、セーブデータを書き換え可能に記憶するデータ記憶手段を備えており、所定のデータをセーブデータとして前記データ記憶手段に記憶するデータ処理装置であって、前記所定のデータをバイナリデータに変換するバイナリデータ変換手段と、前記バイナリデータ変換手段によりバイナリ化されたバイナリデータを前記データ記憶手段に記憶する場合、前記バイナリデータを暗号化するために使用されるマスクデータを取得するマスクデータ取得手段と、前記マスクデータ取得手段により取得されたマスクデータを使用して前記バイナリデータに対し排他的論理和演算を行って暗号化する排他的論理和暗号化手段と、少なくとも前記排他的論理和暗号化手段により暗号化された暗号化バイナリデータをセーブデータとして前記データ記憶手段に記憶するデータ記憶処理手段とを備えている点にある。
【0014】ここで、データとしてはゲーム終了時や中断時における進行状態や編集状態に関するデータ、作成した文書、画像等に関するデータなどが採用できる。
【0015】そして、このような構成を採用したことにより、データを記憶手段に記憶させる際に、従来のように単にバイナリ形式に変換したデータをセーブデータとするのではなく、バイナリ化したデータに対し任意のビットデータ群からなるマスクデータによって排他的論理和演算を行い、その演算後のデータをセーブデータとすることで、簡単かつ確実に解析や改変が困難な記憶データを作成し、機密性を高めることができる。
【0016】以上において、本発明において、前記データ記憶処理手段は、前記暗号化バイナリデータに、暗号化に使用したマスクデータまたはそのマスクデータを特定する識別子を付随させてセーブデータとして前記データ記憶手段に記憶するように構成されることが好ましい。これによれば、マスクデータが固定値でない場合であっても、マスクデータまたは識別子を参照して暗号化バイナリデータの復元を確実かつ容易に行うことができる。
【0017】また、本発明は、複数のマスクデータにマスク識別子を対応づけたマスクデータテーブルを記憶するマスクデータテーブル記憶手段を備えているとともに、前記マスクデータ取得手段は、前記マスクデータテーブルから任意のマスク識別子に基づいてマスクデータを取得するように構成されていることが望ましい。これによれば、セーブデータのファイルサイズは小さいままで、簡単にランダムなマスクデータを取得することができる。
【0018】さらに、本発明は、所定のデータを記憶させるたび毎に乱数を発生させてマスクデータをランダムに作成するマスクデータランダム作成手段を備えているとともに、前記マスクデータ取得手段は、前記マスクデータランダム作成手段により作成されたマスクデータを取得するように構成されていることが望ましい。これによれば、完全にランダムなマスクデータを得ることができて暗号処理を特定しにくくできるため、より機密性を向上させることができる。
【0019】また、本発明において、前記マスクデータ取得手段は、所定の静的なメモリ領域内における任意のアドレスのデータを前記マスクデータとして取得するように構成されていることが好ましい。これによれば、特別な手段を設けることなく解読困難なマスクデータを容易かつ確実に取得することができる。
【0020】さらに、本発明において、前記マスクデータ取得手段は、8*2(n−1)ビット(nは自然数)のデータ単位でマスクデータを取得することが好ましい。これによれば、データ処理装置のレジスタ長の単位と合致することにより、暗号化処理および復号化処理などのデータ処理速度を向上させることができる。
【0021】また、本発明は、さらに前記セーブデータをロードする場合、前記データ記憶手段から前記セーブデータを読み出すセーブデータ読出手段と、前記排他的論理和暗号化手段により暗号化に使用されたマスクデータを所定の記憶領域から抜き出すマスタデータ抜出手段と、前記セーブデータ読出手段により読み出された前記セーブデータ内の暗号化バイナリデータに対して前記マスクデータ抜出手段によって抜き出された前記マスクデータを使用して排他的論理和演算を行って復元する排他的論理和復号化手段とを備えるように構成されることが望ましい。これによれば、機密性の高い暗号化処理を容易かつ確実に行えるとともに、暗号化データを復元する処理も安全かつ確実に実行することができる。
【0022】また、本発明は、前述のデータ処理装置に限らず、例えば、セーブデータを書き換え可能に記憶するデータ記憶手段に対し、所定のデータをセーブデータとして前記データ記憶手段に記憶するデータ処理方法であって、前記所定のデータをバイナリデータに変換するバイナリデータ変換ステップと、前記バイナリデータ変換ステップにおいてバイナリ化されたバイナリデータを前記データ記憶手段に記憶する際に、前記バイナリデータを暗号化するために使用されるマスクデータを取得するマスクデータ取得ステップと、前記マスクデータ取得ステップにおいて取得されたマスクデータを使用して、前記バイナリデータに対し排他的論理和演算を行って暗号化する排他的論理和暗号化ステップと、前記排他的論理和暗号化ステップにおいて暗号化された暗号化バイナリデータをセーブデータとして前記データ記憶手段に記憶するデータ記憶処理ステップとを有するデータ処理方法にも適用することができ、同様の作用効果を得ることができる。
【0023】さらに、本発明は、前述のデータ処理装置、データ処理方法に限らず、セーブデータを書き換え可能に記憶するデータ記憶手段を備えたコンピュータに、所定のデータをセーブデータとして前記データ記憶手段に記憶させるデータ処理プログラムであって、前記所定のデータをバイナリデータに変換するバイナリデータ変換ステップと、前記バイナリデータ変換ステップにおいてバイナリ化されたバイナリデータを前記データ記憶手段に記憶する際に、前記バイナリデータを暗号化するために使用されるマスクデータを取得するマスクデータ取得ステップと、前記マスクデータ取得ステップにおいて取得されたマスクデータを使用して、前記バイナリデータに対し排他的論理和演算を行って暗号化する排他的論理和暗号化ステップと、前記排他的論理和暗号化ステップにおいて暗号化された暗号化バイナリデータをセーブデータとして前記データ記憶手段に記憶するデータ記憶処理ステップとをコンピュータに実行させるデータ処理プログラムにも適用することができ、同様の作用効果を得ることができる。
【0024】さらにまた、本発明に係る別の態様のデータ処理装置の特徴は、セーブデータを書き換え可能に記憶するデータ記憶手段を備えており、所定のデータをセーブデータとして前記データ記憶手段に記憶するデータ処理装置であって、前記所定のデータをバイナリデータに変換するバイナリデータ変換手段と、前記バイナリデータ変換手段によりバイナリ化された前記バイナリデータを前記データ記憶手段に記憶する際に、前記バイナリデータのうち所定のデータ単位毎に少なくとも1つのビット位置におけるビットデータを抽出するビットデータ抽出手段と、前記ビットデータ抽出手段により抽出された各ビットデータで構成されるプロテクトデータを作成するプロテクトデータ作成手段と、前記プロテクトデータ作成手段により作成されたプロテクトデータおよび前記バイナリデータをプリセーブデータとして作成するプリセーブデータ作成手段と、前記プリセーブデータ作成手段により作成された前記プリセーブデータを暗号化するために使用するマスクデータを取得するマスクデータ取得手段と、前記マスクデータ取得手段により取得されたマスクデータを使用して前記プリセーブデータに対し排他的論理和演算を行って暗号化する排他的論理和暗号化手段と、前記排他的論理和暗号化手段により暗号化された暗号化プリセーブデータをセーブデータとして前記データ記憶手段に記憶するデータ記憶処理手段とを備えている点にある。
【0025】また、本発明に係る別の態様のデータ処理装置の特徴は、セーブデータを書き換え可能に記憶するデータ記憶手段を備えており、所定のデータをセーブデータとして前記データ記憶手段に記憶するデータ処理装置であって、前記所定のデータをバイナリデータに変換するバイナリデータ変換手段と、前記バイナリデータ変換手段によりバイナリ化された前記バイナリデータを前記データ記憶手段に記憶する際に、前記バイナリデータを暗号化するために使用されるマスクデータを取得するマスクデータ取得手段と、前記マスクデータ取得手段により取得されたマスクデータを使用して前記バイナリデータに対し排他的論理和演算を行って暗号化する排他的論理和暗号化手段と、前記排他的論理和暗号化手段により暗号化された暗号化バイナリデータプリセーブデータとして作成するプリセーブデータ作成手段と、前記プリセーブデータ作成手段により作成された前記プリセーブデータのうち所定のデータ単位毎に少なくとも1つのビット位置におけるビットデータを抽出するビットデータ抽出手段と、前記ビットデータ抽出手段により抽出された各ビットデータで構成されるプロテクトデータを作成するプロテクトデータ作成手段と、前記プロテクトデータ作成手段により作成されたプロテクトデータおよび前記プリセーブデータをセーブデータとして前記データ記憶手段に記憶するデータ記憶処理手段とを備えている点にある。
【0026】これらによれば、読み出し時のプロテクト機能を有するデータを暗号化することで、または暗号化されたデータに読み出し時のプロテクト機能を付加することで、データの機密性をより一層高めることができ、セーブデータの改変を極めて効果的に防止できるとともに、改変等された場合には直ちに発見することができる。
【0027】
【発明の実施の形態】以下、本発明に係るデータ処理装置、データ処理方法、およびデータ処理プログラムの一実施形態について図面を参照して説明する。
【0028】図1は、本発明の第1の実施形態に係るデータ処理装置1aの概略構成を示すブロック図である。このデータ処理装置1aには、データを記憶するためのデータ記憶手段であるメモリカード2を着脱可能なカードリーダ8と、ゲーム、文書作成、画像生成等の所定のアプリケーションプログラムを格納したCD−ROM(Compact Disk Read Only Memory)3を読み取るCD−ROM読取部9と、データ処理装置1aのオペレーティングシステムや本発明のデータ処理プログラムを格納したROM(Read Only Memory)4と、読み出されたアプリケーションプログラムやデータ等が書き込まれるRAM(Random Access Memory)5とが、バスBを介してCPU(Central Processing Unit)10とデータ通信可能に接続されている。そして、このデータ処理装置1aには、バスBを介して接続される入出力制御部IFにコントローラやキーボードなどの操作入力部6、およびテレビ受像機や液晶ディスプレイなどの表示部7がコード接続されている。
【0029】なお、本実施形態ではデータを記憶させるためのデータ記憶手段として、カードリーダ8に着脱可能なメモリカード2を用いているが、書き換え可能なものであればこれに限る必要はない。特に、このデータ処理装置1aがパーソナルコンピュータであれば磁気ディスク、光磁気ディスク、ハードディスク等の外部記憶手段であってもよい。また、アプリケーションプログラムはデータ記憶手段内に記憶されたデータを扱うものならば任意に用いて構わない。また、データ処理装置1aの具体例としては、パーソナルコンピュータやゲーム装置などが挙げられる。例えば、パーソナルコンピュータであれば、記憶処理されるデータは前記パーソナルコンピュータ上で作動するアプリケーションプログラムにより作成、編集、加工などが行われた文書ファイル、図面ファイル、画像ファイル、音声ファイル等、様々なデータが該当する。また、ゲーム装置であれば、記憶処理されるデータは格闘技ゲーム、スポーツゲーム、シミュレーションゲーム、RPGゲームなどのゲームソフトを作動させる場合に扱う選手データやチームデータ、アイテムデータや進行状況データなどの様々なデータが該当する。
【0030】CPU10は、ROM4に格納されたオペレーティングシステムやデータ処理プログラムに基づいて、データ処理装置1aの各部や周辺機器を制御し、データ処理を行う。図1に示すように、CPU10は、その機能に着目して、バイナリデータ変換部11、ビットデータ抽出部12、プロテクトデータ作成部13、データ記憶処理部14、セーブデータ読出部15、プロテクトデータ抜出部16、データ比較部17、およびデータ読出禁止部18から構成される。
【0031】ここで、バイナリデータ変換部11は、アプリケーションプログラムの中断や終了のため、ユーザから操作入力部6を介してデータを記憶する信号を受信した場合、例えばゲームの進行状態や作成した文書、画像などの編集状態を保持する所定のデータを、図2(A)に示すように、0と1からなる2進数で表現されるバイナリ形式のデータに変換するようになっている。
【0032】ビットデータ抽出部12は、バイナリデータ変換部11によりバイナリ化されたバイナリデータDのうち、所定のデータ単位毎に少なくとも1つのビット位置におけるビットデータを抽出するようになっている。本実施形態では、図2に示すように16ビットのデータ単位で区分けし、各データ単位における2ビット目のビット位置(図2(A)の網掛け部)にあるビットデータを抽出する。
【0033】プロテクトデータ作成部13は、ビットデータ抽出部12により適宜抽出された各ビットデータをそのデータ単位数(本実施形態では16ビット単位)および抽出ビット位置(本実施形態では2ビット目)とともに組合せてプロテクトデータP(図2(B))を作成するようになっている。ここで、プロテクトデータPは、後述するように、メモリーカード2に記憶されたセーブデータを読み出す際に、そのセーブデータが改変や改造されていないかを簡易的にチェックするために利用される。なお、プロテクトデータ作成部13は、前述のごとくデータ単位数、ビット位置、およびビットデータの3要素を組み合わせてプロテクトデータPを構成しているが、必ずしも3要素を組み合わせる必要はない。つまり、本実施形態では、データ単位数およびビット位置がデータを記憶する毎にランダムに決定される場合、特に有効であるが、例えば、データ単位数およびビット位置が予め設定されている場合には、各ビットデータのみによってプロテクトデータPを構成すればよい。
【0034】データ記憶処理部14は、プロテクトデータ作成部13により作成されたプロテクトデータPおよびバイナリデータ変換部11によりバイナリ形式に変換されたバイナリデータD1を合わせてセーブデータS1(図2(C))としてメモリーカード2に記憶するようになっている。前記データ記憶処理部14によるセーブデータS1の記憶処理が終了すると、所定のデータ記憶処理が完了する。
【0035】セーブデータ読出部15は、操作入力部6からセーブデータS1をロードする入力信号を受信した場合、前記メモリカード2からセーブデータS1を読み出し、RAM5上に展開するようになっている。
【0036】プロテクトデータ抜出部16は、セーブデータ読出部15により読み出された前記セーブデータS1からプロテクトデータPを抜き出すようになっている。
【0037】データ比較部17は、プロテクトデータ抜出部16により抜き出されたプロテクトデータPの各ビットデータと、前記バイナリデータD1のうち、前記プロテクトデータPの各ビットデータ抽出時に対応する16ビット単位毎の2ビット目の各ビットデータとを比較するようになっている。すなわち、プロテクトデータP内に保存されていた16ビット単位数毎の2ビット位置を確認して、そのデータに従ってセーブデータS1内のバイナリデータDを16ビット毎に区切り、各16ビットデータの2ビット目の位置におけるビットデータを抽出して、前記プロテクトデータP内の各ビットデータを比較する。ここで、前記データ比較部17は、プロテクトデータPを構成する各ビットデータが、ランダムに決定されたデータ単位毎のビット位置に従って抽出されたものである場合、比較時においても、そのデータ単位毎のビット位置に従ってセーブされていたバイナリデータD1の各ビットデータと比較する。一方、前記各ビットデータを抽出するデータ単位毎のビット位置が予めデータ処理プログラム上で設定されている場合には、前記データ比較部17は、前記データ処理プログラムを読み出し、そのデータ単位毎のビット位置に従って前記セーブされたバイナリデータD1の各ビットデータと、前記プロテクトデータPの各ビットデータと比較する。
【0038】データ読出禁止部18は、前記データ比較部17による比較の結果、前記プロテクトデータPの各ビットデータおよび前記バイナリデータD1の各ビットデータが不一致の場合に読み出しを禁止するようになっている。そして、データ読出禁止部18は、セーブデータS1が壊れている旨、あるいはロードできない旨を表示部7に表示させたり、あるいはデータを消去するようになっている。なお、本実施形態では、不一致の場合に表示部7へ表示させることとしているが、一致した場合にもその旨を表示させても構わない。
【0039】カードリーダ8は、データ処理装置1aに内蔵されており、CPU10からの指示に従ってメモリカード2に記憶されたバイナリデータD1を読み取るようになっている。また、CD−ROM読取部9は、CPU10からの指示に従ってCD−ROM3に記録されたアプリケーションプログラムおよび必要なデータを読み取るようになっている。さらに、入出力制御部IFは、一以上の外部入出力機器をデータ処理装置1aに接続するためのインタフェースであり、本実施形態では操作入力部6および表示部7が着脱自在に取り付けられている。入出力制御部IFは一定周期(例えば1/60秒毎)に操作入力部6の操作状態をスキャンし、そのスキャン結果を表す信号をバスを介してCPU10に渡す。CPU10は、その信号に基づいてユーザの操作を判定する。
【0040】つぎに、本第1実施形態に係るデータ処理装置1aにより実行されるデータ処理プログラムの処理について説明する。図3はROM4に格納されたデータ処理プログラムのうちデータ記憶時の処理を説明するフローチャート図である。また、図2に示した各データは、本実施形態で扱われる(A)バイナリデータD1、(B)プロテクトデータP、(C)セーブデータS1、および(D)改変されたバイナリデータを概念的に示したものである。
【0041】図3に示すように、本実施形態においてデータをメモリーカード2に記憶させる場合、まず、所定のアプリケーションプログラムを実行させているユーザが操作入力部6によりデータを記憶するための操作入力がなされると、CPU10がそのデータ記憶指示信号を受信する(処理S1)。このデータ記憶指示信号を受けたCPU10では、バイナリデータ変換部11が、RAM5上に展開されている現状を保持するデータを読み出し、図2(A)に示すようなバイナリデータD1に変換する(処理S2)。ここで、図2(A)に示すバイナリデータD1は、16ビット単位で区切った状態を示している。
【0042】つぎに、ビットデータ抽出部12は、バイナリデータ変換部11により変換されたバイナリデータD1から、16ビット単位毎に2ビット目のビットデータ(図2(A)の網掛け部)を抽出する(処理S3)。本実施形態のビットデータ抽出部12は、16ビット単位毎に2ビット目のビットデータを抽出しているが、これに限る必要はなく、どの位置のビットデータを抽出するかは任意に選択してよい。例えば、データ単位数は10ビット単位毎でも30ビット単位毎でもよいし、抽出するビット位置は1ビット目でも16ビット目でもよい。また、各データ単位毎に複数のビット位置のデータを抽出するようにしてもよい。ただし、処理速度を優先する場合、データ単位数を8*2(n−1)ビット(nは自然数)から選択するとよい。コンピュータが処理するバイト単位に合致するからである。一方、セキュリティ性能を優先する場合には、バイナリデータD1を区分けするデータ単位数を8ビット以下に小さく設定すればよい。細かいデータ単位でビットデータを抽出できるため改変位置をヒットする確率を高められるからである。しかし、あまり細かくデータ単位を区切ると、プロテクトデータPの量が膨大になって処理が遅延することを考慮する必要がある。また、より一層機密性を高めたい場合には、データを記憶するたび毎にデータ単位およびビット位置のうち少なくとも一方をランダムに決定するようにすればよい。
【0043】つづいて、処理S3でビットデータ抽出部12が抽出したビットデータに基づいて、プロテクトデータ作成部13がプロテクトデータPを作成する(処理S4)。本実施形態のプロテクトデータPは、図2(B)に示すように、データ単位数、抽出ビット位置、および抽出したビットデータの3要素から構成され、具体的には、16ビット単位数、2ビット位置、およびそのビットデータがバイナリ化されて構成されている。なお、本実施形態のプロテクトデータPは、上記3要素から構成されているが、データ単位数あるいは抽出するビット位置が予めデータ処理プログラムで設定されており、変更されないものであれば、プロテクトデータPに含めなくてもよい。
【0044】その後、データ記憶処理部14が、処理S4においてプロテクトデータ作成部13により作成されたプロテクトデータPおよびバイナリデータDを合わせてセーブデータS1(図2(C))としてメモリーカード2に記憶させて(処理S5)、このデータ記憶処理を終了する。
【0045】つぎに、本第1実施形態のデータ処理装置1aにより実行されるデータ処理プログラムの処理のうち、上述のデータ記憶処理が施されたセーブデータS1をメモリーカード2から読み出す際のデータ読み出し処理について説明する。図4は、前記セーブデータS1を読み出す場合のフローチャート図である。
【0046】セーブデータS1をメモリーカード2から読み出す場合、まず、所定のアプリケーションプログラムを再開しようとするユーザが操作入力部6によりデータをロードする指示を操作入力すると、CPU10がそのセーブデータS1の読出指示信号を受信する(処理S11)。この読出指示信号を受けて、CPU10では、セーブデータ読出部15がメモリカードからセーブデータS1をRAM上に読み込む(処理S12)。つづいて、プロテクトデータ抜出部16が前記セーブデータS1からプロテクトデータPを抜き出す(処理S13)。
【0047】つぎに、データ比較部17は、処理S13において、セーブデータS1から抜き出されたプロテクトデータPの各ビットデータと、これら各ビットデータが抽出されたときのデータ単位毎のビット位置に対応するバイナリデータDの各ビットデータとを比較する(処理S14)。すなわち、データ比較部17は、プロテクトデータP内からデータ単位数が16ビット単位であって、ビット位置が2ビット目であることを確認し、これに従ってバイナリデータDを16ビット毎に区切り、第2ドット目における各ビットデータを抽出し、前記プロテクトデータPの各ビットデータと比較する。
【0048】処理S14でのデータ比較部17による比較の結果、両者の各ビットデータが一致する場合(処理S15:YES)、データ読出禁止部18がセーブデータS1の読み出しを禁止せずに許可し(処理S16)、セーブデータ読出部15がバイナリデータDのロードを最後まで実行してデータ読み出し処理を完了する(処理S17)。
【0049】一方、処理S14でのデータ比較部17による比較の結果、プロテクトデータPおよびバイナリデータDの各ビットデータのいずれかが一致しなかった場合(処理S15:NO)、データ読出禁止部18がセーブデータS1の読み出しを禁止する(処理S18)。例えば、図2(D)に示すように、セーブデータS1のバイナリデータの一部が、全て「0」に改変されていた場合には、プロテクトデータPのビットデータ(図2(A)の網掛け部)と比較することにより、図2(D)に示す位置Xにおいて不一致が判明し(処理S15:NO)、データ読出禁止部18が、セーブデータS1の読み出しを禁止する(処理S18)。そして、表示部7がその読出禁止処理信号を受信して「セーブしたデータは改変または壊れた可能性があります」等の読み出しが不可能となった旨のコメントを表示して(処理S19)ユーザに通知する。これによりデータ読み出し処理を終了する。
【0050】以上のように、本第1実施形態によれば、セーブデータS1から所定のデータ単位毎に少なくとも1つのビット位置におけるビットデータを抽出して保管するだけで容易にデータの改変や改造を発見してデータの読出を禁止することができるため、極めて簡単かつ確実にデータのセキュリティ性能を向上させることができる。また、前記プロテクトデータPのデータサイズは、少なく済むためいたずらに肥大化せず、セーブデータS1の記憶処理や読み込み処理に負担をかけることがなく、効率的に機密性を高められる。
【0051】なお、本実施形態においてセキュリティ性能を優先させる場合にはプロテクトデータの単位数を小さくすればよいし、データの肥大化を防ぐにはデータ単位数をより大きくすればよく、ユーザのニーズに合わせた対応が可能となり便利である。
【0052】つぎに、本発明の第2の実施形態であるデータ処理装置1bについて図面を参照しつつ説明する。図5は本第2実施形態のデータ処理装置1bの構成を示す概略構成ブロック図である。なお、本第2実施形態の構成のうち前述した第1実施形態の構成と同一もしくは相当する構成については、同一の符号を付して再度の説明を省略する。
【0053】本第2実施形態のデータ処理装置1bの特徴は、所定のデータをセーブする場合に、当該データに排他的論理和演算を施すようにし、解読困難な暗号化処理を容易に行えるとともに、データを読み出す場合には負担をかけずに容易に読み出すことができるようにしたものである。具体的には、本第2実施形態のデータ処理装置1bは、ROM4に格納されたオペレーティングシステムや、本第2実施形態におけるデータ処理プログラムに基づいて各構成部および周辺機器を制御するCPU20を有している。図5に示すように、CPU20は、その機能に着目して、バイナリデータ変換部21、マスクデータ取得部22、排他的論理和暗号化部23、データ記憶処理部24、セーブデータ読出部25、マスクデータ抜出部26、排他的論理和複合化部27、およびマスクデータランダム作成部28から構成されている。
【0054】ここで、バイナリデータ変換部21は、アプリケーションプログラムの中断や終了のため、ユーザから操作入力部6を介してデータを記憶する信号を受信した場合、進行状態や編集状態を保持する所定のデータを、図6(A)に示すように、0と1からなる2進数で表現されるバイナリ形式のデータに変換するようになっている。
【0055】マスクデータ取得部22は、バイナリデータ変換部21によりバイナリ化されたバイナリデータD2をメモリーカード2に記憶する場合、当該バイナリデータD2を暗号化するために使用するマスクデータMを取得するようになっている。マスクデータMは、後述するように、バイナリデータD2に排他的論理和演算を行うために用いられるため、図6(B)に示すような0と1の組合せで構成されている。このマスクデータMは、任意の0と1の組合せであればよいので、予め固定値として設定されていてもよいし、任意に選択できるよう複数個用意してもよい。また、セーブの都度、ランダムに作成して決定するようにしてもよい。
【0056】マスクデータMを固定値とする場合、マスクデータMはROM3内のプログラム上に予め設定されており、セーブ時あるいはロード時に読み出される。また、マスクデータMを複数の中から任意に選択する場合、複数のマスクデータMにマスク識別子を対応付けたマスクデータテーブルを記憶するマスクデータテーブル記憶部Tを準備し、そこから任意にマスク識別子を指定してマスクデータMを選択する。例えば、マスクデータMを1000個格納したマスクデータテーブル記憶部Tを準備しておく。セーブ時に、マスクデータ取得部22が、前記マスクデータテーブル記憶部Tの中からマスク識別子として「45」を選択してこれに対応するマスクデータMを取得することができる。
【0057】マスクデータMをランダムに作成する場合、マスクデータランダム作成部28が、乱数表や乱数発生アルゴリズムに従ってセーブの度に0と1のランダムな組合せからなるマスクデータMを作成する。その他、ROM4等の静的なメモリ内の任意のアドレスに記憶されているバイナリデータを抜き出してマスクデータMとして使用してもよいし、あるいは、任意のテキストデータをバイナリ形式に変換させて適用するようにしてもよい。ただし、ランダムにマスクデータMを取得する場合、すべてのビットデータが0あるいは1になることを避けるため、オール0またはオール1のマスクデータMを取得したときには、それを除外するプログラムが設定されている【0058】一方、マスクデータMのデータ単位数は任意に定めてよい。もし、処理速度を優先させる場合にはデータ単位幅を8*2(n−1)ビット(nは自然数)にしてレジスタ長に合致するようにすればよいし、セキュリティ性能を優先させる場合にはマスクデータのデータ単位を11ビット等の8*2(n−1)ビット(nは自然数)以外の値に設定すればよい。本実施形態では、16ビットのレジスタ長を想定して処理負担のないように図6(B)に示すような16ビットのマスクデータMを使用するものとする。
【0059】排他的論理和暗号化部23は、マスクデータ取得部22により取得されたマスクデータMに基づいて、バイナリデータD2に対し排他的論理和演算を施して暗号化するものである。ここで、排他的論理和演算とは、1と0との組合せで、どちらか片方が0のとき「1」となり、1と1、0と0の組合せのとき「0」となる論理演算のことである。このような排他的論理和演算によれば、バイナリデータを暗号化するのに適当であるだけでなく、暗号化バイナリデータを復元する場合にも全く逆の処理によって容易に復号化できるというメリットがある。
【0060】データ記憶処理部24は、排他的論理和暗号化部23によりマスクデータMを使って暗号化された暗号化バイナリデータDをセーブデータS2としてメモリーカード2に記憶するようになっている。ここで、データ記憶処理部24は、マスクデータMが固定値である場合、予めマスクデータMの内容がわかっているためメモリカード2には暗号化バイナリデータDのみを記憶する。しかし、マスクデータMがマスクデータテーブル記憶部Tからマスク識別子を介して任意に選択された場合や、ROM4内の適当なアドレスデータを抜き出して適用した場合、あるいは別途ランダムに作成した場合には、復号化処理において必要になるため、前記暗号化バイナリデータDに付随させてセーブデータS2として記憶するようになっている。なお、マスクデータテーブル記憶部Tから取得した場合には、そのマスクデータMに対応するマスク識別子を記憶しておく。以上のようにデータ記憶処理部24によってセーブデータS2がメモリカード2に記憶されることで、データの暗号化記憶処理が終了される。
【0061】セーブデータ読出部25は、操作入力部6からセーブデータS2をロードする指示の入力信号を受信した場合、前記メモリカード2からセーブデータS2を読み出し、RAM5上に展開するようになっている。
【0062】マスクデータ抜出部26は、排他論理和暗号化部23による暗号化処理に使用されたマスクデータMを所定の領域から抜き出すものである。つまり、マスクデータ抜出部26は、読み出すべき暗号化バイナリデータDの暗号化に使用されたマスクデータMが固定値である場合、その固定値をROM4内のプログラムから抜き出すようになっている。一方、マスクデータMが固定値でなく任意に選択されたりランダムに作成されている場合、マスクデータMあるいはこれに対応するマスク識別子がセーブデータS2としてメモリカード2に記憶されている。したがって、マスクデータ抜出部26は、RAM5上に展開されているセーブデータS2から所望のマスクデータMを抜き出すようになっている。マスク識別子が記憶されている場合には、まず、そのマスク識別子を取得してマスクデータテーブル記憶部Tから当該マスク識別子に対応するマスクデータMを抜き出す。
【0063】排他的論理和復号化部27は、マスクデータ抜出部26により抜き出されたマスクデータMを使用して暗号化バイナリデータDに対し、暗号化と逆の手順で排他的論理和演算を施し、バイナリデータを復元するようになっている。つまり、暗号化処理において、複数のマスクデータMを使用して排他的論理和演算を施していたり、あるいは同じマスクデータMを使って複数回排他論理和演算を繰り返し施している場合には、その逆の手順で複数回の排他的論理和演算を行うようになっている。
【0064】つぎに、本第2実施形態のデータ処理装置1bにより実行されるデータ処理プログラムの処理について説明する。図7は本第2実施形態におけるデータ処理プログラムを実行する処理のうち、データを記憶する場合の処理を示すフローチャート図である。また、図6は本第2実施形態で扱われるデータのうち、(A)バイナリデータD2、(B)マスクデータM、(C)暗号化バイナリデータD、および(D)セーブデータS2を概念的に示したものである。
【0065】図7に示すように、本第2実施形態において所定のデータをメモリーカード2に記憶させる場合、まず、ユーザが操作入力部6によりデータを記憶する指示の操作入力を行うと、CPU20がそのデータ記憶指示信号を受信する(処理S21)。ユーザからデータ記憶指示信号を受信したCPU20では、バイナリデータ変換部21が、その時点におけるアプリケーションプログラムの進行状態や編集状態を保持するデータをRAM5から読み出し、図6(A)に示すようなバイナリデータD2に変換する(処理S22)。なお、前記バイナリデータD2は、連続的なデータであるが便宜上16ビット単位で区切った状態で図6(A)に表示している。
【0066】つぎに、マスクデータ取得部22は、バイナリ化されたバイナリデータD2をメモリーカード2に記憶する場合、前記バイナリデータD2を暗号化するために使用するマスクデータMを取得する(処理S23)。具体的には、マスクデータ取得部22は、マスクデータMが固定値であればデータ処理プログラムからそのマスクデータMを取得し、マスクデータMがマスクデータテーブル記憶部T内に格納されている場合であれば、任意のマスク識別子を指定してマスクデータMを取得する。また、マスクデータMがランダムに作成される場合であれば、マスクデータランダム作成部28からマスクデータMを取得する。さらに、マスクデータMをランダムに選択するのであれば、特に手段を特定する必要はなく、例えば、ROM4内の物理アドレスデータやテキストデータから任意に選択することとしてもよい。なお、この場合、マスクデータMが全て「0」または、「1」になってしまうと、暗号化の機能を果たさなくなってしまうので、オール0またはオール1を取得した場合には、他のマスクデータMを選択するように制御される。
【0067】つづいて、処理S23において取得されたマスクデータMに基づいて、排他的論理和暗号化部23が、バイナリデータD2に対し排他的論理和演算を施して暗号化させる(処理S24)。図6(C)には、図6(A)のバイナリデータD2を図6(B)のマスクデータMを使用して排他的論理和演算を行った後の暗号化バイナリデータDを示す。
【0068】そして、データ記憶処理部24は、排他的論理和暗号化部23により暗号化された暗号化バイナリデータDをセーブデータS2としてメモリカード2に記憶する(処理S25)。このとき、必要に応じて暗号化に使用されたマスクデータMあるいはマスク識別子を付随させて一緒にメモリカード2に保存する(図6(D)。
【0069】つぎに、本第2実施形態のデータ処理装置1bにより実行されるデータ処理プログラムの処理のうち、セーブデータS2をメモリーカード2から読み出す際のデータ読み出し処理について図8を参照しつつ説明する。
【0070】セーブデータS2をメモリーカード2から読み出す場合、まず、ユーザが操作入力部6を介してデータ読出指示を入力すると、CPU20がそのデータ読出指示信号を受信する(処理S31)。このデータ読出指示信号を受信したCPU20では、セーブデータ読出部25がメモリカード2からセーブデータS2を読み出してRAM5上に展開する(処理S32)。そして、マスクデータ抜出部26が暗号化に使用されたマスクデータMを所定の領域から抜き出す(処理S33)。もし、マスクデータMがセーブデータS2として保存されている場合には、RAM5上に展開されたセーブデータS2から抜き出す。また、マスク識別子としてセーブデータS2に含まれている場合には、そのマスク識別子を取得して対応するマスクデータMをマスクデータテーブル記憶部Tから抜き出す。一方、マスクデータMがセーブデータS2に含まれていない場合、例えば、予め固定値として設定されている場合には、ROM4内のデータ処理プログラムから取得する。さらには、マスクデータMが存在するROM4内のアドレスがセーブデータS2に格納されている場合には、そのアドレスを取得して対応するマスクデータMを抜き出すことになる。
【0071】そして、排他的論理和復号化部27は、マスクデータ抜出部26がにより抜き出されたマスクデータMを用いて、暗号化バイナリデータDに対し、暗号化処理と逆の手順で排他的論理和演算を施して復元する(処理S34)。この復号化処理により、暗号化バイナリデータDは、再び暗号化前のバイナリデータD2に復元され、セーブデータ読出部25によって読み出し処理が続けられ、表示部7に所定の画面が表示される。これによりデータの読み出し処理は終了する。
【0072】以上のように、本第2実施形態によれば、メモリカード2に記憶させるためのバイナリデータD2を任意に選択されるマスクデータMを使用して排他的論理和演算により暗号化されるので、データの解析および改変を防止でき、セキュリティ性能を向上させることができる。これにより、ゲームデータ等に適用する場合であれば、ユーザがセーブデータを改変してしまうことを防止できて本来のゲーム性を保持できるし、違法なデータ解析や改変から重要なデータを守ってその価値が毀損されることを防止できる。
【0073】なお、本第2実施形態においては、マスクデータMとして16ビットのレジスタ長に合わせて16ビットのものを使用したが、これに限らず、処理速度を優先させる場合にはデータ単位幅を8*2(n−1)ビット(nは自然数)にすればよく、セキュリティ性能を優先させる場合にはマスクデータMの単位を8*2n−1)ビット(nは自然数)以外の値に設定すればよい。また、より高い機密性が要求される場合には、一度排他的論理和演算により暗号化した暗号化バイナリデータDに、別のマスクデータMを用いて重ねて排他的論理和演算を施せばよい。
【0074】また、前述した第1実施形態によるデータ処理と、第2実施形態によるデータ処理とを組み合わせることによって、よりセキュリティ性能の高いデータ処理を行うようにしてもよい。すなわち、所定のバイナリデータについて第1実施形態によるデータ処理を施した後に、第2実施形態によるデータ処理を施してからメモリカード2にデータを記憶させるようにしたり、逆に、第2実施形態によるデータ処理を施した後に、第1実施形態によるデータ処理を施してメモリカード2にデータを記憶させるようにすればよい。
【0075】より具体的には、所定のバイナリデータについて、まず第1実施形態によるデータ処理として、所定のデータ単位毎に少なくとも1つのビット位置におけるビットデータを抽出してプロテクトデータを作成し、このプロテクトデータおよび前記バイナリデータを合わせてプリセーブデータとする。つぎに、第2実施形態によるデータ処理として、前記プリセーブデータに対し、所定のマスクデータに基づいて所定の排他的論理和演算を施して暗号化し、この暗号化データをセーブデータとして保存し、あるいはマスクデータを付随させてセーブデータとして保存すればよい。
【0076】一方、先に第2実施形態によるデータ処理を施す場合、所定のバイナリデータに対し、所定のマスクデータに基づいて排他的論理和演算を施して暗号化し、この暗号化データに前記マスクデータを付随させてプリセーブデータとする。つづいて第1実施形態によるデータ処理として、前記プリセーブデータに対し、所定のデータ単位毎に少なくとも1つのビット位置におけるビットデータを抽出してプロテクトデータを作成し、このプロテクトデータおよび前記プリセーブデータをセーブデータとしてメモリカード2に記憶すればよい。もちろん、機密性の要求度に応じて前記データ処理を相互に複数回繰り返せば、より一層高い機密性を保持することができる。
【0077】
【発明の効果】以上説明したように本発明によれば、セーブデータの解析や改変を簡単かつ確実に防止することができるとともに、セーブデータが破損や改変された場合に容易かつ確実に発見することができて速やかに対策を講じることができ、セーブデータの機密性を向上させることができる。
【出願人】 【識別番号】000105637
【氏名又は名称】コナミ株式会社
【住所又は居所】東京都千代田区丸の内2丁目4番1号
【出願日】 平成14年3月19日(2002.3.19)
【代理人】 【識別番号】100110766
【弁理士】
【氏名又は名称】佐川 慎悟
【公開番号】 特開2003−271459(P2003−271459A)
【公開日】 平成15年9月26日(2003.9.26)
【出願番号】 特願2002−76046(P2002−76046)