説明

半導体メモリ装置

【課題】現行のセキュリティシステムを改変せずに、低コストかつ短期間で違法なコピー製品を排除可能な半導体メモリ装置を提供する。
【解決手段】外部との通信を行うインターフェース部31と、インターフェース部31に接続されたコマンド解析部32と、コマンド解析部32からの指示に基づいて、メモリ領域34からセキュリティ解除のための鍵となる鍵データを読み出してコマンド解析部32に与えるデータセレクタ33と、複数の領域に論理的に分割されて、複数の鍵データが格納されるメモリ領域34と、インターフェース部31を介して、ゲームカートリッジ10内の他のデバイスへのゲームコンソール20からのアクセスをモニタするアクセスモニタ35とを備えている。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は半導体メモリ装置に関し、特に、携帯ゲーム機にゲームの供給媒体として使用される半導体メモリ装置に関する。
【背景技術】
【0002】
携帯ゲーム機では、ゲームの供給媒体としてセキュリティ機能付きの半導体メモリが格納されたカートリッジが用いられているが、セキュリティが破られて違法なコピー製品が横行しており、関連会社の収益を圧迫している。
【0003】
この行為への対策として、セキュリティシステムを改変することが最も効果的であるが、既にゲーム機本体が相当数普及してしまっている場合は改変は容易でない。
【0004】
また、セキュリティ機能付き半導体メモリも、製造プロセスの微細化が進行している現在にあっては、機能の改変には巨額の投資と開発期間がかかるという問題があり、違法なコピー製品は野放しにされている現状である。
【0005】
例えば、特許文献1においては、使用時間がセキュリティ処理の発動時間より長くなるとセキュリティ処理を発動するように制御される半導体メモリカードの構成が開示されているが、これを携帯ゲーム機に適用すると、適正なユーザが使用している場合にも所定の時間が経過するとセキュリティ処理が発動してしまうので、当該ユーザにとって不快となってしまう。
【0006】
また、特許文献1のセキュリティ処理では、所定の時間が経過するまでは半導体メモリへのアクセスが可能なので、その間にゲームソフトが読み出されてしまい、ゲームの供給媒体への適用は不向きである。
【0007】
【特許文献1】特開2005−182627号公報
【発明の開示】
【発明が解決しようとする課題】
【0008】
本発明は、上記のような問題点を解決するためになされたものであり、現行のセキュリティシステムを改変せずに、低コストかつ短期間で違法なコピー製品を排除可能な半導体メモリ装置を提供することを目的とする。
【課題を解決するための手段】
【0009】
本発明に係る請求項1記載の半導体メモリ装置は、少なくともプログラムの実行のためのプログラムデータが格納された第1のメモリと、前記プログラムの進行状況を示す情報を格納する第2のメモリと、バスを介して前記第1および第2のメモリの少なくとも1つと情報の授受を行い、前記プログラムの実行に必要な不可欠データを格納し、その出力を制御するセキュリティチップとを備え、前記セキュリティチップは、前記第1および第2のメモリの何れかへの外部からのアクセスを監視して、監視対象への所定のアクセスをトリガとして前記不可欠データを準備し、前記セキュリティチップへの、前記外部からのデータ読み出し要求があった場合に、前記不可欠データを出力する。
【0010】
本発明に係る請求項2記載の半導体メモリ装置は、前記不可欠データが、前記第1のメモリから読み出される前記プログラムデータを有意なデータとするための有意化データを含んでいる。
【0011】
本発明に係る請求項3記載の半導体メモリ装置は、前記不可欠データが、前記第1のメモリから前記プログラムデータを読み出すためのアドレスデータを含んでいる。
【0012】
本発明に係る請求項4記載の半導体メモリ装置は、前記セキュリティチップの前記監視対象が、前記第1のメモリであって、前記所定のアクセスは、前記第1のメモリからの予め定めたデータの読み出しである。
【0013】
本発明に係る請求項5記載の半導体メモリ装置は、前記セキュリティチップの前記監視対象は、前記第2のメモリであって、前記所定のアクセスは、前記第2のメモリへの予め定めたデータの書き込みである。
【0014】
本発明に係る請求項6記載の半導体メモリ装置は、前記セキュリティチップの前記監視対象は、前記第2のメモリであって、前記所定のアクセスは、前記第2のメモリからの予め定めたデータの読み出しである。
【0015】
本発明に係る請求項7記載の半導体メモリ装置は、前記第1のメモリに格納された前記プログラムデータが、少なくとも一部が暗号化されたデータであって、前記有意化データは、前記暗号化された前記プログラムデータを復号する鍵データである。
【0016】
本発明に係る請求項8記載の半導体メモリ装置は、前記プログラムデータが、読み出し単位ごとに暗号化され、前記鍵データは、前記読み出し単位ごとに設定される。
【0017】
本発明に係る請求項9記載の半導体メモリ装置は、前記第1のメモリに格納された前記プログラムデータが、部分的にデータが欠落した不完全なデータであって、前記有意化データは、不完全なデータを補完する補完データである。
【0018】
本発明に係る請求項10記載の半導体メモリ装置は、前記プログラムデータが、読み出し単位ごとに部分的にデータが欠落し、前記補完データは、前記読み出し単位ごとに設定される。
【0019】
本発明に係る請求項11記載の半導体メモリ装置は、前記セキュリティチップが、前記監視対象への前記所定のアクセスを監視するアクセスモニタと、前記有意化データを格納する記憶部と、前記アクセスモニタが、前記監視対象への前記所定のアクセスを確認した後に、前記記憶部に格納された前記有意化データのアドレスに対応するポインタアドレスをセットするアクセスポインタとを有し、外部からの前記データ読み出し要求があった場合に、前記アクセスポインタにセットされた前記ポインタアドレスに対応する前記記憶部の領域から前記有意化データを読み出して出力する。
【0020】
本発明に係る請求項12記載の半導体メモリ装置は、前記セキュリティチップが、前記監視対象への前記所定のアクセスを監視するアクセスモニタと、前記アクセスモニタが、前記監視対象への前記所定のアクセスを確認した後に、前記鍵データを関数に基づいて生成する鍵データ生成部とを有し、外部からの前記データ読み出し要求があった場合に、前記鍵データ生成部で生成した前記鍵データを出力する。
【発明の効果】
【0021】
本発明に係る請求項1記載の半導体メモリ装置によれば、セキュリティチップは、監視対象への所定のアクセスがあった場合に、第1のメモリから読み出されるプログラムの実行に必要な不可欠データを準備し、セキュリティチップへの、外部からのデータ読み出し要求があった場合に、不可欠データを出力する構成を採るので、プログラムの実行時にセキュリティチップによるセキュリティ動作が実行されることとなる。違法なコピー製品の製造者は、セキュリティチップへの、外部からの不可欠データの読み出し要求の後にフリーズが発生することを突き止めても、監視対象への所定のアクセスが何であるかが判らないと不可欠データを読み出すことができず、プログラムを実行させることができない。監視対象への所定のアクセスが何であるかを突き止めるには時間を要し、プログラムの複製に要する時間を飛躍的に増大させ、プログラムデータの違法なコピー製品が出るまでの時間を遅らせることができる。このような効果を奏する構成としては、半導体メモリ装置にセキュリティチップを搭載し、プログラムデータ作成の際に、セキュリティに関するソフトウエアを追加する程度で済むので、現行のセキュリティシステムを改変せずに、低コストかつ短期間で違法なコピー製品の排除が可能となる。
【0022】
本発明に係る請求項2記載の半導体メモリ装置によれば、不可欠データが、第1のメモリから読み出されるプログラムデータを有意なデータとするための有意化データを含んでいるので、有意化データを得ない限りはプログラムデータを有意にすることができず、プログラムを実行させることができず、違法なコピー製品の製造者によるセキュリティチップの解析を阻害することができる。
【0023】
本発明に係る請求項3記載の半導体メモリ装置によれば、セキュリティチップは、監視対象への所定のアクセスをトリガとしてアドレスデータを準備し、セキュリティチップへの、外部からのデータ読み出し要求があった場合に、アドレスデータを出力することになるので、違法なコピー製品の製造者は、何がトリガとなってアドレスデータが準備されるかを容易に知ることはできず、違法なコピー製品の製造者によるセキュリティチップの解析を阻害することができる。
【0024】
本発明に係る請求項4記載の半導体メモリ装置によれば、セキュリティチップの監視対象が第1のメモリであって、第1のメモリからの予め定めたデータの読み出をトリガとして、セキュリティチップにおいて不可欠データを準備するので、違法なコピー製品の製造者は、何がトリガとなって不可欠データが準備されるかを容易に知ることはできず、違法なコピー製品の製造者によるセキュリティチップの解析を阻害することができる。
【0025】
本発明に係る請求項5記載の半導体メモリ装置によれば、セキュリティチップの監視対象が第2のメモリであって、第2のメモリへの予め定めたデータの書き込みをトリガとして、セキュリティチップにおいて不可欠データを準備するので、違法なコピー製品の製造者は、何がトリガとなって不可欠データが準備されるかを容易に知ることはできず、違法なコピー製品の製造者によるセキュリティチップの解析を阻害することができる。
【0026】
本発明に係る請求項6記載の半導体メモリ装置によれば、セキュリティチップの監視対象はが第2のメモリであって、第2のメモリからの予め定めたデータの読み出しをトリガとして、セキュリティチップにおいて不可欠データを準備するので、違法なコピー製品の製造者は、何がトリガとなって不可欠データが準備されるかを容易に知ることはできず、違法なコピー製品の製造者によるセキュリティチップの解析を阻害することができる。
【0027】
本発明に係る請求項7記載の半導体メモリ装置によれば、第1のメモリに格納されたプログラムデータは、少なくとも一部が暗号化されており、有意化データは、暗号化されたプログラムデータを復号する鍵データであるので、違法なコピー製品の製造者は暗号化されていない部分を実行することができても、暗号化された部分を解読するまでは実行できないので、違法なコピー製品の製造を阻害することができる。
【0028】
本発明に係る請求項8記載の半導体メモリ装置によれば、プログラムデータが読み出し単位ごとに暗号化され、鍵データは読み出し単位ごとに設定されるので、プログラムデータを全て複製するには、プログラムの進行に従って複数の暗号を解除しなくてはならず、違法なコピー製品の製造をより効果的に阻害をすることができる。
【0029】
本発明に係る請求項9記載の半導体メモリ装置によれば、第1のメモリに格納されたプログラムデータは、部分的にデータが欠落した不完全なデータであるので、違法なコピー製品の製造者はデータが欠落していない部分を実行することができても、欠落した部分を補完するまでは実行できないので、違法なコピー製品の製造を阻害することができる。
【0030】
本発明に係る請求項10記載の半導体メモリ装置によれば、プログラムデータが読み出し単位ごとに部分的にデータが欠落し、補完データは、読み出し単位ごとに設定されるのでプログラムデータを全て複製するには、プログラムの進行に従って、複数の補完データで補完しなくてはならず、違法なコピー製品の製造をより効果的に阻害をすることができる。
【0031】
本発明に係る請求項11記載の半導体メモリ装置によれば、外部からのデータ読み出し要求があった場合に、アクセスポインタにセットされたポインタアドレスに対応する記憶部の領域から有意化データを読み出して出力するので、違法なコピー製品の製造者は、どのようにして有意化データを読み出しているかを容易に解明することができず、違法なコピー製品の製造を阻害することができる。
【0032】
本発明に係る請求項12記載の半導体メモリ装置によれば、外部からのデータ読み出し要求があった場合に、鍵データ生成部で生成した鍵データを出力するので、違法なコピー製品の製造者は、どのようにして有意化データを読み出しているか、また有意化データが保存されているわけではないので、有意化データを見つけることができず、セキュリティチップの解析がより困難なものとなる。
【発明を実施するための最良の形態】
【0033】
<はじめに>
発明の説明に先立って、携帯ゲーム機で採用されている半導体メモリ装置のセキュリティ機能の一例について説明する。
【0034】
携帯ゲーム機では、ゲームコンソールと呼称されるゲーム機本体に、ゲームカートリッジと呼称されるゲームソフトが格納された部品を挿入する構成を採用している。
【0035】
ゲームカートリッジには、ゲームソフト(プログラムデータ)の格納用ROM(read only memory)と、プログラムの進行状況を示す情報(バックアップデータ)を格納する書き込み、読み出し動作が可能な半導体メモリ(例えばフラッシュメモリ)とを備えている。ゲーム格納用ROMにはセキュリティ機能が付与されており、また、ゲームコンソール自体にもセキュリティ機能が付与されており、両者は対となってセキュリティ機能を発揮している。従って、ゲーム格納用ROMからデータを取り出してもセキュリティを解除できなければ、ゲームソフトを実行することができないが、このセキュリティプログラムが解読され、セキュリティを解除した製品が違法なコピー製品として横行している。
【0036】
違法なコピー製品の構成としては、ゲームカートリッジを模擬したカードに、解読したセキュリティプログラムを格納したmicroSDカード(登録商標)を取り付けることで、ゲームコンソール側のセキュリティを突破して、ゲームを実行させる構成などが採用されている。
【0037】
このように、極めて厳重に施されたセキュリティであっても、一旦、破られてしまうと、ゲームプログラム自体は簡単に複製できるので、違法なコピー製品が横行することとなる。
【0038】
そこで、発明者は、ゲーム格納用ROMに付与されたセキュリティ機能が破られた場合でも、ゲームプログラムの実行時にセキュリティ動作が実行されるように新たなセキュリティ機能を付与することで、ゲームプログラムの複製に要する時間を飛躍的に増大させ、違法なコピー製品が出るまでの時間を遅らせるという技術思想に到達した。
【0039】
<実施の形態>
<装置構成>
図1は、本発明に係る半導体メモリ装置の実施の形態の、ゲームカートリッジ10の構成を示すブロック図である。
【0040】
図1に示すように、ゲームカートリッジ10は、ゲームソフト(プログラム)が格納されたゲーム格納用ROM1(第1のメモリ)と、プログラムの進行状況を示す情報(バックアップデータ)を格納する書き込み、読み出し動作が可能なメモリとしてのフラッシュメモリ2(第2のメモリ)と、セキュリティチップ3とを備えている。
【0041】
ゲームカートリッジ10は、ゲーム機本体であるゲームコンソール20に接続され、ゲームコンソール20は、ゲーム格納用ROM1からゲームソフトを読み出して実行し、ゲームの実行中、必要に応じてフラッシュメモリ2への所定のデータの書き込みなどを行う。
【0042】
ゲーム格納用ROM1にはセキュリティ機能が付与されており、また、ゲームコンソール20自体にもセキュリティ機能が付与されており、両者は対となってセキュリティ動作を実行している。
【0043】
ここで、ゲームコンソール20、ゲーム格納用ROM1およびフラッシュメモリ2は従来品であり、ゲーム格納用ROM1およびゲームコンソール20に付与されたセキュリティ機能にも改変は加えられておらず、セキュリティチップ3のみが新規な構成である。
【0044】
次に、セキュリティチップ3の構成について、図2に示すブロック図を用いて説明する。図2に示すように、セキュリティチップ3は、外部との通信を行うインターフェース(I/F)部31と、インターフェース部31に接続されたコマンド解析部32と、コマンド解析部32からの指示に基づいて、メモリ領域34からプログラムの実行に必要な不可欠データである暗号解読のための鍵データ(有意化データ)を読み出してコマンド解析部32に与えるデータセレクタ33と、複数の領域に論理的に分割されて、複数の鍵データが格納されるメモリ領域34と、インターフェース部31を介して、ゲームカートリッジ10内の他のデバイスへのゲームコンソール20からのアクセスをモニタするアクセスモニタ35とを備えている。
【0045】
コマンド解析部32は、インターフェース部31を介して外部から受けたコマンドを解析し、データ読み出しコマンドを受けた場合は、データセレクタ33を介してメモリ領域34から所定のデータを読み出してチップ外部に送信する機能を有している。
【0046】
また、アクセスモニタ35は、ゲームカートリッジ10内の予め定めた他のデバイスへのゲームコンソール20からのアクセスを確認すると、データセレクタ33内のアクセスポインタ331のポインタアドレスを所定値にセットする。アクセスポインタ331がセットするポインタアドレスは、メモリ領域34の所定の領域に格納された鍵データにアクセスするためのアドレス情報であり、図2の例では、例えば、0番のアドレスに対応する領域には鍵データ"a"が格納されている。従って、アクセスポインタ331のポインタアドレスが"0"に設定されている場合にのみ鍵データ"a"を読み出すことができる。
【0047】
なお、アクセスモニタ35は、ゲームカートリッジ10内の予め定めた他のデバイスへのゲームコンソール20からのアクセスを確認するごとにアクセスポインタ331のポインタアドレスを変更し、例えば、ポインタアドレス"0"の次は"1" に、その次は"2"というように変更し、ポインタアドレスが"1"に設定されている場合は鍵データ"b"を、ポインタアドレスが"2"に設定されている場合は鍵データ"c"を読み出すことができる。
【0048】
データセレクタ33は、コマンド解析部32が、データ読み出しコマンドを受けた場合に、コマンド解析部32からの読み出し指示に従い、そのときのアクセスポインタ331のポインタアドレスに従ってメモリ領域34から鍵データを読み出す。例えば、コマンド解析部32からの読み出し指示を受けたときに、アクセスポインタ331のポインタアドレスが"0"であれば鍵データ"a"が読み出されることになる。
【0049】
<セキュリティ動作>
次に、図1および図2を参照しつつ、図3に示すフローチャートを用いて、ゲームカートリッジ10によるセキュリティ動作について説明する。
【0050】
ユーザがゲームコンソール20にゲームカートリッジ10を接続して、所定のゲーム開始手続きを行うと、まず、ゲームコンソール20がゲーム格納用ROM1からゲームの初期プログラムを読み出し、ゲームが実行される(ステップS1)。この時点で、ゲームの初期プログラムの読み出しには、ゲーム格納用ROM1に付与されたセキュリティ機能と、ゲームコンソール20に付与されたセキュリティ機能とによる対になったセキュリティが働くが、セキュリティチップ3によるセキュリティは働いていない。
【0051】
ゲームの初期プログラムは暗号化されていないので、ゲームが進行し、予め定めた段階に達すると、ゲームコンソール20は、セキュリティチップ3のセキュリティ動作のトリガとなるトリガデータ、例えばデータA’を、フラッシュメモリ2に書き込む(ステップS2)。
【0052】
セキュリティチップ3内のアクセスモニタ35は、フラッシュメモリ2にトリガデータA’の書き込みが行われたことを確認すると、データセレクタ33内のアクセスポインタ331のポインタアドレスを所定値にセットする。この場合、ゲーム開始後最初のトリガデータの書き込みであるので、ポインタアドレスを"0"にセットする(ステップS3)。
【0053】
次に、ゲームコンソール20は、ゲーム格納用ROM1から初期プログラムに続く継続ゲームデータ、例えばデータAを読み出す(ステップS4)。このデータAは、ゲームを引き続いて進行させるためのデータであるが、データAは暗号化されており、そのままでは実行できず、対になる鍵データで有意なデータにする必要がある。これが、セキュリティチップ3内のメモリ領域34の0番のアドレスに対応する領域に格納された鍵データ"a"である。ここで、継続ゲームデータは、一まとまりのデータとして読み出され、これを読み出し単位1つ分のデータと呼称し、読み出し単位ごとに暗号化されており、鍵データは読み出し単位ごとに設定される。
【0054】
なお、ステップS4でのデータの読み出しは、ステップS2のトリガデータのフラッシュメモリ2への書き込みに先立って行っても良い。
【0055】
ここで、トリガデータをどのようなものにするかの設定は、ゲームプログラムの作成時に決定してゲームプログラムに組み込めば良い。また、継続ゲームデータAが必要となる事象が発生する前には、フラッシュメモリ2の特定の領域にトリガデータA’が書き込まれているような設定をゲームプログラムに組み込み、また、セキュリティチップ3から鍵データが読み出されるまでは、フラッシュメモリ2の特定の領域には、次のトリガデータを書き込まないなどの規則をゲームプログラムに組み込むようにする。
【0056】
次に、ゲームコンソール20はセキュリティチップ3に対してデータ読み出しコマンドを発行し、それを受けたコマンド解析部32が、データ読み出しコマンドであることを確認すると、データセレクタ33に対して読み出し指示を行う。データセレクタ33では、読み出し指示を受けると、そのときのアクセスポインタ331のポインタアドレスに従ってメモリ領域34から鍵データを読み出す(ステップS5)。この場合は、ポインタアドレスを"0"にセットされているので、鍵データ"a"が読み出される。
【0057】
読み出された鍵データ"a"は、インターフェース部31を介してゲームコンソール20に送信され、継続ゲームデータAを復号して有意なデータとし、ゲームが進行する(ステップS6)。
【0058】
次に、ゲームコンソール20は、さらに読み出すべき継続ゲームデータがある場合には、ステップS2以下の動作を繰り返し、継続ゲームデータが存在しない場合には、ゲーム終了するまで、ゲームプログラムを実行する。なお、ステップS2以下の動作を繰り返す際には、トリガデータA’がトリガデータB’に変わり、ポインタアドレスが"1"にセットされ、鍵データ"b"が読み出されるなどの変更が行われることは言うまでもない。
【0059】
<セキュリティ動作の具体例>
次に、以上説明したセキュリティ動作の具体例について冒険ゲームを例に採って説明する。
【0060】
冒険ゲームが進行し、ボスキャラのダンジョンに入る前には、ゲームコンソール20は必ずデータのセーブを行う。この動作で、フラッシュメモリ2にトリガデータA’が書き込まれ、セキュリティチップ3では、アクセスポインタ331のポインタアドレスに"0"にセットされる。
【0061】
さらにゲームが進行すると、ボスキャラに出会うことになるが、これ以降のデータは継続ゲームデータAとして暗号化されているので、ゲームコンソール20は、継続ゲームデータAをゲーム格納用ROM1から読み出すとともに、その暗号を解読するために、セキュリティチップ3に対してデータ読み出しコマンドを発行し、セキュリティチップ3から鍵データ"a"を読み出す。
【0062】
鍵データ"a"を取得したゲームコンソール20は、継続ゲームデータAを解読して、ボスキャラと出会った後のゲームを進行させる。
【0063】
<効果>
以上説明したゲームカートリッジ10を用いた場合、ゲーム格納用ROM1に付与されたセキュリティ機能が破られた場合でも、ゲームプログラムの実行時にセキュリティチップ3によるセキュリティ動作が実行されるので、ゲームプログラムの複製に要する時間を飛躍的に増大させ、違法なコピー製品が出るまでの時間を遅らせることができる。
【0064】
すなわち、違法なコピー製品の製造者は、ゲーム格納用ROM1に付与されたセキュリティ機能を破ってゲーム格納用ROM1からゲームプログラムを読み出し、ソフトエミュレータを起動してゲームを進行させる。
【0065】
しかし、ゲームの初期プログラムは実行できても、継続ゲームデータAを実行する段階に来ると途中でフリーズしてしまう。
【0066】
違法なコピー製品の製造者は、このフリーズが、セキュリティチップ3に対して、データ読み出しコマンドを発行した後に発生することを突き止め、セキュリティチップ3を検査して、データ読み出しコマンドに応答して、何らかのデータ(鍵データ"a")が読み出されていることを突き止める。
【0067】
そして、試行錯誤し、同じ状況では、いつも同じデータが読み出されることを確認すると、FPGA(Field Programmable Gate Array)等を用いて当該データをエミュレートする。
【0068】
これにより、継続ゲームデータAが実行可能となりゲームが進行するが、次の継続ゲームデータも暗号化されている場合は、そこでまたフリーズする。
【0069】
再び、セキュリティチップ3を検査して、データ読み出しコマンドに応答して、何らかのデータ(鍵データ)が読み出されていることを突き止めるが、先のデータとは異なるため、FPGA等を用いて当該データをエミュレートする。
【0070】
このように、違法なコピー製品の製造者は、ゲームの進行に応じてたびたびフリーズに見舞われ、その都度、フリーズの原因を追及して、鍵データをエミュレートする必要が生じ、最終的には、セキュリティチップ3に格納される全ての鍵データを取得するまでは、ゲームを終了することができない。
【0071】
通常、ゲームの複製は、エミュレータの動作に必要な極めて短時間で行うことができるが、ゲームデータが暗号化されているので、複製したゲームを実行可能とするには、ゲームの進行に応じて鍵データを取得する必要があり、そのためには人間による試行錯誤が必要となり、違法なコピー製品の製造には、ゲームデータが暗号化されていない場合に比べて、飛躍的に長い時間が必要となる。従って、違法なコピー製品の製造者は、新しいゲームの販売開始直後に違法なコピー製品を売り出すことができず、正規の製造者は、販売開始直後の最も売り上げに寄与する期間を違法なコピー製品に邪魔されることなく販売を続けることができ、違法なコピー製品による売り上げ減退を抑制することができる。
【0072】
このように、本発明に係る半導体メモリ装置によれば、現行のセキュリティシステムを改変せずに、低コストかつ短期間で違法なコピー製品の排除が可能となる。
【0073】
<実装例1>
以上説明した実施の形態においては、セキュリティチップ3内のアクセスモニタ35が、フラッシュメモリ2へのアクセスを常時監視しており、フラッシュメモリ2にトリガデータの書き込みが行われたことを確認してアクセスポインタ331のポインタアドレスを所定値にセットする動作を説明した。
【0074】
フラッシュメモリ2へのアクセスは、トリガデータの書き込み以外にも頻繁に行われており、また、トリガデータの書き込みも、通常の動作の1つに過ぎないので、違法なコピー製品の製造者は、鍵データ"a"が鍵データ"b"に変わることは検出することができても、何がトリガとなっているかを容易に知ることはできず、セキュリティチップ3内のメモリ領域34に格納されている鍵データを、ゲームが進行しなければ読み出すことができない。
【0075】
このように、アクセスポインタ331の制御を、フラッシュメモリ2への通常のアクセスを利用して行うことで、セキュリティをより高めることができる。
【0076】
なお、アクセスポインタ331の制御は、フラッシュメモリ2へのデータの書き込みに限定されるものではなく、フラッシュメモリ2からのデータの読み出しをトリガとして使用しても良く、また、フラッシュメモリ2へのアクセスに限定されるものでなく、ゲーム格納用ROM1からのデータの読み出しをトリガとして使用しても良い。この場合も、違法なコピー製品の製造者は、何がトリガとなっているかを容易に知ることはできない。
【0077】
もちろん、よりシンプルに、ゲームコンソール20からセキュリティチップ3へのアクセスをアクセスポインタ331の制御に使用しても良い。この場合、プログラムを開発する上では、よりシンプルになるという利点がある。
【0078】
<実装例2>
実施の形態においては、トリガデータA’を、フラッシュメモリ2に書き込むことで、セキュリティチップ3内のアクセスモニタ35がアクセスポインタ331のポインタアドレスを"0"にセットし、ゲームコンソール20からのセキュリティチップ3に対するデータ読み出しコマンドが発行された場合には、データセレクタ33は、セキュリティチップ3内のメモリ領域34の0番のアドレスに対応する領域に格納された鍵データ"a"を読み出してゲームコンソール20に与え、ゲームコンソール20では、鍵データ"a"を用いて継続ゲームデータAを解読するという動作を説明した。
【0079】
実際には、図2にも示したが、鍵データは1つに限定されるものではなく、継続ゲームデータBに対する鍵データ"b"は、トリガデータB’によってアクセスモニタ35がアクセスポインタ331のポインタアドレスを"1"にセットし、ゲームコンソール20からのデータ読み出しコマンドに応答して、メモリ領域34の1番のアドレスに対応する領域に格納された鍵データ"b"を読み出す構成とする。同様に、トリガデータC’と、継続ゲームデータCと、鍵データ"c"の組み合わせ、トリガデータD’と、継続ゲームデータDと、鍵データ"d"の組み合わせなど、複数の組み合わせが存在していることが望ましい。これにより、ゲームを進行させるには、複数の鍵データが必要となり、ゲームプログラムを完全に解読するには多大な時間を要することとなる。
【0080】
なお、トリガデータA’、B’、C’のようにフラッシュメモリ2に異なるデータを書き込む場合、これらのデータは重複することはないので、フラッシュメモリ2の特定の領域に、次々と上書きするという方式を採れば良い。このように、トリガデータの書き込みを、特定の領域に限定することで、ハードウエア的にもソフトウエア的にも作りやすくなるという利点がある。もちろん、フラッシュメモリ2の異なる領域に次々にトリガデータを書き込む構成としても良いことは言うまでもない。
【0081】
また、トリガデータが書き込まれるフラッシュメモリ2の特定の領域には、初期状態ではデータが書き込まれていない、もしくは無意味なデータを書き込むようにしておく。これにより、違法なコピー製品の製造者は、フラッシュメモリ2を解析しても、有用な情報を得ることができず、ゲームプログラムの解読に困難を来すことになる。
【0082】
<実装例3>
実施の形態においては、セキュリティチップ3内のアクセスモニタ35が、フラッシュメモリ2へのアクセスを常時監視しており、フラッシュメモリ2にトリガデータの書き込みが行われたことを確認してアクセスポインタ331のポインタアドレスを所定値にセットするという動作を説明したが、アクセスモニタ35は、アクセスポインタ331制御のトリガとなる特定のアクセスを検出しなかった場合は、以下の処理をするように構成すれば良い。
【0083】
最も簡単なのは、特に反応しないという処理である。特定のアクセスを検出するまでは何の動作もせず、待機するという処理がこれに該当する。
【0084】
次に、アクセスポインタ331のポインタアドレスを未定義値に変更するという処理をさせても良い。これにより、定期的にポインタアドレスが未定義状態となるので、違法なコピー製品の製造者によるセキュリティチップ3の解析作業を混乱させることができる。
【0085】
最後に、最も望ましい処理としては、特定のアクセスを検出しなかった場合は、データセレクタ33からランダム値を出力させるという処理が挙げられる。これにより、カットアンドトライによるセキュリティチップ3の解析をより困難なものにすることができる。
【0086】
<実装例4>
実施の形態においては、例えば、ゲームコンソール20が行うセーブデータをトリガデータとして使用する例を示し、ゲーム格納用ROM1に格納されるゲームプログラムに含まれるデータをトリガデータとして使用していた。ゲームプログラムのデータを使用することで、ソフトウエア作成の点では作りやすいという利点があった。
【0087】
しかし、ゲームプログラムのデータそのものをトリガデータとして使用するよりも、ゲームプログラムによって生成されるデータを使用する方が、解析されにくく、セキュリティの点から望ましい。
【0088】
より具体的には、図3を用いて説明したフローにおいて、ステップS2でデータA’をフラッシュメモリ2に書き込むのに先だって、進行中のゲームの初期プログラムによってデータA’を生成するようにする。生成方法は、ゲームが所定の段階に達するごとに、何らかのデータを生成した出力するように、予めゲームプログラムの中に、生成プログラムを含ませておけば良い。
【0089】
<実装例5>
実施の形態においては、ゲームコンソール20からのセキュリティチップ3に対するデータ読み出しコマンドが発行された場合に、データセレクタ33が、セキュリティチップ3内のメモリ領域34の0番のアドレスに対応する領域に格納された鍵データ"a"を読み出すという例を説明したが、データセレクタ33にアクセスポインタ331を設けず、アクセスモニタ35が、トリガとなる特定のアクセスを検出した段階で、メモリ領域34から鍵データを読み出しておき、セキュリティチップ3内に設けたバッファメモリ等(図示せず)に格納しておくという構成を採っても良い。そして、ゲームコンソール20からのセキュリティチップ3に対するデータ読み出しコマンドが発行された段階で、上記バッファメモリ等に格納された鍵データを読み出して出力すれば良い。
【0090】
鍵データは、順番に読み出されるものなので、アクセスモニタ35が、トリガとなる特定のアクセスを検出するごとに読み出してバッファリングする構成であっても、何ら問題はない。
【0091】
このような構成を採ることで、アクセスポインタ331が不要となり、ハードウエア的にもソフトウエア的にも作りやすくなるという利点がある。
【0092】
<実装例6>
実施の形態においては、暗号化された継続ゲームデータを鍵データを用いて解読することで有意化するという構成を説明したが、継続ゲームデータは部分的にデータが欠落した不完全なデータとし、それを補完することで有意化する補完データ(有意化データ)をプログラムを実行するために必要な不可欠データとして、セキュリティチップ3内のメモリ領域34に格納されているという構成を採っても良い。すなわち、メモリ領域34には、鍵データ"a"、"b"・・・の代わりに、継続ゲームデータ"A"、"B"・・・を補完する補完データ"a"、"b"・・・が格納されているという構成を採っても良い。
【0093】
なお、この場合も、継続ゲームデータは、読み出し単位ごとに部分的にデータが欠落しており、補完データは読み出し単位ごとに設定される。
【0094】
この場合、ゲームコンソール20では、ゲーム格納用ROM1から読み出した不完全な継続ゲームデータを、セキュリティチップ3から読み出した補完データで補完することで、完全な継続ゲームデータ(有意なデータ)を得ることができる。
【0095】
なお、セキュリティチップ3内のメモリ領域34はできるだけ小さくしたいので、補完データは不完全な継続ゲームデータよりも十分小さいことが望ましい。
【0096】
<実装例7>
以上説明した実施の形態においては、鍵データはセキュリティチップ3内のメモリ領域34に予め準備されているものとして説明したが、鍵データを生成する関数によってセキュリティチップ3内で生成する鍵データ生成部を有する構成としても良い。
【0097】
この場合、アクセスモニタ35が、トリガとなる特定のアクセスを検出するごとに鍵データ生成部で関数に基づいて鍵データを生成し、生成した鍵データをセキュリティチップ3内のバッファメモリ等(図示せず)に一旦蓄積しておき、ゲームコンソール20からのデータ読み出しコマンドが発行された場合に鍵データを出力するという構成を採れば良い。この構成により、データセレクタ33もメモリ領域34も不要になって構成が簡単になるという利点がある。
【0098】
また、鍵データはトリガとなる特定のアクセスを検出するごとに生成されるので、違法なコピー製品の製造者は鍵データを見つけることができず、セキュリティチップ3の解析をより困難なものにすることができる。
【0099】
また、トリガとなる特定のアクセスを検出するごとに鍵データを生成するのではなく、トリガとなる特定のアクセスを検出したという情報(アクセスの種類の情報も含む)をセキュリティチップ3内のバッファメモリ等(図示せず)に一旦蓄積しておき、ゲームコンソール20からのデータ読み出しコマンドが発行された場合に、蓄積した情報に基づいて鍵データを生成して出力するという構成を採っても良い。
【0100】
<変形例1>
以上説明した実施の形態においては、鍵データを用いて暗号化された継続ゲームデータを解読するという構成を説明したが、継続ゲームデータは暗号化されておらず、ゲーム格納用ROM1内でのアドレスが不明な状態となっており、セキュリティチップ3内のメモリ領域34には、プログラムを実行するために必要な不可欠データとして、当該継続ゲームデータのアドレスデータが格納されているという構成を採っても良い。すなわち、鍵データ"a"、"b"・・・の代わりに、継続ゲームデータ"A"、"B"・・・のアドレスデータ"a"、"b"・・・が格納されているという構成を採っても良い。この動作について、図4に示すフローチャートを用いて説明する。
【0101】
ユーザがゲームコンソール20にゲームカートリッジ10を接続して、所定のゲーム開始手続きを行うと、まず、ゲームコンソール20がゲーム格納用ROM1からゲームの初期プログラムを読み出し、ゲームが実行される(ステップS11)。なお、ゲームの初期プログラムについては、ゲーム格納用ROM1内でのアドレスは予め判明しているので、ゲームコンソール20が読み出すことができる。
【0102】
この時点で、ゲームの初期プログラムの読み出しには、ゲーム格納用ROM1に付与されたセキュリティ機能と、ゲームコンソール20に付与されたセキュリティ機能とによる対になったセキュリティが働くが、セキュリティチップ3によるセキュリティは働いていない。
【0103】
ゲームの初期プログラムが進行し、予め定めた段階に達すると、ゲームコンソール20は、セキュリティチップ3のセキュリティ動作のトリガとなるトリガデータ、例えばデータA’を、フラッシュメモリ2に書き込む(ステップS12)。
【0104】
セキュリティチップ3内のアクセスモニタ35は、フラッシュメモリ2にトリガデータA’の書き込みが行われたことを確認すると、データセレクタ33内のアクセスポインタ331のポインタアドレスを所定値にセットする。この場合、ゲーム開始後最初のトリガデータの書き込みであるので、ポインタアドレスを"0"にセットする(ステップS13)。
【0105】
次に、ゲームコンソール20は、ゲーム格納用ROM1から初期プログラムに続く、継続ゲームデータ、例えばデータAを読み出そうとするが、当該データAのゲーム格納用ROM1内でのアドレスデータが不明であるので、まず、セキュリティチップ3に対してデータ読み出しコマンドを発行し、それを受けたコマンド解析部32が、データ読み出しコマンドであることを確認すると、データセレクタ33に対して読み出し指示を行う。
【0106】
データセレクタ33では、読み出し指示を受けると、そのときのアクセスポインタ331のポインタアドレスに従ってメモリ領域34から、継続ゲームデータ、例えばデータAが格納されたゲーム格納用ROM1内のアドレスデータを読み出す(ステップS14)。この場合は、ポインタアドレスを"0"にセットされているので、アドレスデータ"a"が読み出される。アドレスデータ"a"は、ゲーム格納用ROM1に与えられ、アドレスデータ"a"に従って、ゲーム格納用ROM1から継続ゲームデータ"A"が読み出される(ステップS15)。継続ゲームデータ"A"は、ゲームコンソール20に送信され、ゲームが進行する。
【0107】
次に、ゲームコンソール20は、さらに読み出すべき継続ゲームデータがある場合には、ステップS12以下の動作を繰り返し、継続ゲームデータが存在しない場合には、ゲーム終了するまで、ゲームプログラムを実行する。
【0108】
このように、継続ゲームデータを読み出すには、不可欠データであるアドレスデータをまず取得しなければならないが、アドレスデータを取得するにはフラッシュメモリ2へのトリガデータの書き込みが必要であるが、それを解析するには時間を要するので、ゲームプログラムの解読に困難を来すことになる。
【0109】
<変形例2>
なお、以上説明した実施の形態および変形例1においては、プログラムを実行するために必要な不可欠データの例として、暗号解読のための鍵データや、部分的にデータが欠落した継続ゲームデータを補完する補完データや、継続ゲームデータのアドレスを示すアドレスデータを挙げて説明したが、不可欠データとしてはこれらに限定されるものではない。
【0110】
例えば、プログラムデータのうち、暗号化された継続ゲームデータをセキュリティチップ3のメモリ領域34に入れておき、鍵データは暗号化された継続ゲームデータの代わりにゲーム格納用ROM1に格納すれば良い。暗号化された継続ゲームデータが内部メモリ34に格納され、鍵データがゲーム格納用ROM1に格納されていても、セキュリティ機能としては同じである。むしろ、プログラムデータの一部がゲーム格納用ROM1に存在しないことで、違法なコピー製品の製造者による複製を阻害する要因を増やすことができる。
【0111】
また、各種パラメータや、FAT(ファイル管理情報)を不可欠データとし、キュリティチップ3に格納する構成としても良い。
【図面の簡単な説明】
【0112】
【図1】本発明に係る半導体メモリ装置の実施の形態の構成を示すブロック図である。
【図2】セキュリティチップの構成を説明するブロック図である。
【図3】本発明に係る半導体メモリ装置のセキュリティ動作を説明するフローチャートである。
【図4】本発明に係る半導体メモリ装置の変形例のセキュリティ動作を説明するフローチャートである。

【特許請求の範囲】
【請求項1】
少なくともプログラムの実行のためのプログラムデータが格納された第1のメモリと、
前記プログラムの進行状況を示す情報を格納する第2のメモリと、
バスを介して前記第1および第2のメモリの少なくとも1つと情報の授受を行い、前記プログラムの実行に必要な不可欠データを格納し、その出力を制御するセキュリティチップとを備え、
前記セキュリティチップは、
前記第1および第2のメモリの何れかへの外部からのアクセスを監視して、監視対象への所定のアクセスをトリガとして前記不可欠データを準備し、前記セキュリティチップへの、前記外部からのデータ読み出し要求があった場合に、前記不可欠データを出力する、半導体メモリ装置。
【請求項2】
前記不可欠データは、
前記第1のメモリから読み出される前記プログラムデータを有意なデータとするための有意化データを含む、請求項1記載の半導体メモリ装置。
【請求項3】
前記不可欠データは、
前記第1のメモリから前記プログラムデータを読み出すためのアドレスデータを含む、請求項1記載の半導体メモリ装置。
【請求項4】
前記セキュリティチップの前記監視対象は、前記第1のメモリであって、
前記所定のアクセスは、前記第1のメモリからの予め定めたデータの読み出しである、請求項1記載の半導体メモリ装置。
【請求項5】
前記セキュリティチップの前記監視対象は、前記第2のメモリであって、
前記所定のアクセスは、前記第2のメモリへの予め定めたデータの書き込みである、請求項1記載の半導体メモリ装置。
【請求項6】
前記セキュリティチップの前記監視対象は、前記第2のメモリであって、
前記所定のアクセスは、前記第2のメモリからの予め定めたデータの読み出しである、請求項1記載の半導体メモリ装置。
【請求項7】
前記第1のメモリに格納された前記プログラムデータは、少なくとも一部が暗号化されたデータであって、
前記有意化データは、前記暗号化された前記プログラムデータを復号する鍵データである、請求項2記載の半導体メモリ装置。
【請求項8】
前記プログラムデータは、読み出し単位ごとに暗号化され、
前記鍵データは、前記読み出し単位ごとに設定される、請求項7記載の半導体メモリ装置。
【請求項9】
前記第1のメモリに格納された前記プログラムデータは、部分的にデータが欠落した不完全なデータであって、
前記有意化データは、不完全なデータを補完する補完データである、請求項2記載の半導体メモリ装置。
【請求項10】
前記プログラムデータは、読み出し単位ごとに部分的にデータが欠落し、
前記補完データは、前記読み出し単位ごとに設定される、請求項9記載の半導体メモリ装置。
【請求項11】
前記セキュリティチップは、
前記監視対象への前記所定のアクセスを監視するアクセスモニタと、
前記有意化データを格納する記憶部と、
前記アクセスモニタが、前記監視対象への前記所定のアクセスを確認した後に、前記記憶部に格納された前記有意化データのアドレスに対応するポインタアドレスをセットするアクセスポインタと、を有し、
前記外部からの前記データ読み出し要求があった場合に、前記アクセスポインタにセットされた前記ポインタアドレスに対応する前記記憶部の領域から前記有意化データを読み出して出力する、請求項7または請求項9記載の半導体メモリ装置。
【請求項12】
前記セキュリティチップは、
前記監視対象への前記所定のアクセスを監視するアクセスモニタと、
前記アクセスモニタが、前記監視対象への前記所定のアクセスを確認した後に、前記鍵データを関数に基づいて生成する鍵データ生成部と、を有し、
前記外部からの前記データ読み出し要求があった場合に、前記鍵データ生成部で生成した前記鍵データを出力する、請求項7記載の半導体メモリ装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


【公開番号】特開2009−258850(P2009−258850A)
【公開日】平成21年11月5日(2009.11.5)
【国際特許分類】
【出願番号】特願2008−104797(P2008−104797)
【出願日】平成20年4月14日(2008.4.14)
【出願人】(591128453)株式会社メガチップス (322)
【Fターム(参考)】