(57)【特許請求の範囲】
【請求項１】
少なくともプログラムの実行のためのプログラムデータが格納された第１のメモリと、
前記プログラムの進行状況を示す情報を格納する第２のメモリと、
バスを介して前記第１および第２のメモリの少なくとも１つと情報の授受を行い、前記プログラムの実行に必要な不可欠データを格納し、その出力を制御するセキュリティチップとを備え、
前記セキュリティチップは、
前記第１および第２のメモリの何れかへの外部からのアクセスを監視して、監視対象への所定のアクセスをトリガとして前記不可欠データを準備し、前記セキュリティチップへの、前記外部からのデータ読み出し要求があった場合に、前記不可欠データを出力する、半導体メモリ装置。
【請求項２】
前記不可欠データは、
前記第１のメモリから読み出される前記プログラムデータを有意なデータとするための有意化データを含む、請求項１記載の半導体メモリ装置。
【請求項３】
前記不可欠データは、
前記第１のメモリから前記プログラムデータを読み出すためのアドレスデータを含む、請求項１記載の半導体メモリ装置。
【請求項４】
前記セキュリティチップの前記監視対象は、前記第１のメモリであって、
前記所定のアクセスは、前記第１のメモリからの予め定めたデータの読み出しである、請求項１記載の半導体メモリ装置。
【請求項５】
前記セキュリティチップの前記監視対象は、前記第２のメモリであって、
前記所定のアクセスは、前記第２のメモリへの予め定めたデータの書き込みである、請求項１記載の半導体メモリ装置。
【請求項６】
前記セキュリティチップの前記監視対象は、前記第２のメモリであって、
前記所定のアクセスは、前記第２のメモリからの予め定めたデータの読み出しである、請求項１記載の半導体メモリ装置。
【請求項７】
前記第１のメモリに格納された前記プログラムデータは、少なくとも一部が暗号化されたデータであって、
前記有意化データは、前記暗号化された前記プログラムデータを復号する鍵データである、請求項２記載の半導体メモリ装置。
【請求項８】
前記プログラムデータは、読み出し単位ごとに暗号化され、
前記鍵データは、前記読み出し単位ごとに設定される、請求項７記載の半導体メモリ装置。
【請求項９】
前記第１のメモリに格納された前記プログラムデータは、部分的にデータが欠落した不完全なデータであって、
前記有意化データは、不完全なデータを補完する補完データである、請求項２記載の半導体メモリ装置。
【請求項１０】
前記プログラムデータは、読み出し単位ごとに部分的にデータが欠落し、
前記補完データは、前記読み出し単位ごとに設定される、請求項９記載の半導体メモリ装置。
【請求項１１】
前記セキュリティチップは、
前記監視対象への前記所定のアクセスを監視するアクセスモニタと、
前記有意化データを格納する記憶部と、
前記アクセスモニタが、前記監視対象への前記所定のアクセスを確認した後に、前記記憶部に格納された前記有意化データのアドレスに対応するポインタアドレスをセットするアクセスポインタと、を有し、
前記外部からの前記データ読み出し要求があった場合に、前記アクセスポインタにセットされた前記ポインタアドレスに対応する前記記憶部の領域から前記有意化データを読み出して出力する、請求項７または請求項９記載の半導体メモリ装置。
【請求項１２】
前記セキュリティチップは、
前記監視対象への前記所定のアクセスを監視するアクセスモニタと、
前記アクセスモニタが、前記監視対象への前記所定のアクセスを確認した後に、前記鍵データを関数に基づいて生成する鍵データ生成部と、を有し、
前記外部からの前記データ読み出し要求があった場合に、前記鍵データ生成部で生成した前記鍵データを出力する、請求項７記載の半導体メモリ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体メモリ装置に関し、特に、携帯ゲーム機にゲームの供給媒体として使用される半導体メモリ装置に関する。
【背景技術】
【０００２】
携帯ゲーム機では、ゲームの供給媒体としてセキュリティ機能付きの半導体メモリが格納されたカートリッジが用いられているが、セキュリティが破られて違法なコピー製品が横行しており、関連会社の収益を圧迫している。
【０００３】
この行為への対策として、セキュリティシステムを改変することが最も効果的であるが、既にゲーム機本体が相当数普及してしまっている場合は改変は容易でない。
【０００４】
また、セキュリティ機能付き半導体メモリも、製造プロセスの微細化が進行している現在にあっては、機能の改変には巨額の投資と開発期間がかかるという問題があり、違法なコピー製品は野放しにされている現状である。
【０００５】
例えば、特許文献１においては、使用時間がセキュリティ処理の発動時間より長くなるとセキュリティ処理を発動するように制御される半導体メモリカードの構成が開示されているが、これを携帯ゲーム機に適用すると、適正なユーザが使用している場合にも所定の時間が経過するとセキュリティ処理が発動してしまうので、当該ユーザにとって不快となってしまう。
【０００６】
また、特許文献１のセキュリティ処理では、所定の時間が経過するまでは半導体メモリへのアクセスが可能なので、その間にゲームソフトが読み出されてしまい、ゲームの供給媒体への適用は不向きである。
【０００７】
【特許文献１】特開２００５−１８２６２７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明は、上記のような問題点を解決するためになされたものであり、現行のセキュリティシステムを改変せずに、低コストかつ短期間で違法なコピー製品を排除可能な半導体メモリ装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明に係る請求項１記載の半導体メモリ装置は、少なくともプログラムの実行のためのプログラムデータが格納された第１のメモリと、前記プログラムの進行状況を示す情報を格納する第２のメモリと、バスを介して前記第１および第２のメモリの少なくとも１つと情報の授受を行い、前記プログラムの実行に必要な不可欠データを格納し、その出力を制御するセキュリティチップとを備え、前記セキュリティチップは、前記第１および第２のメモリの何れかへの外部からのアクセスを監視して、監視対象への所定のアクセスをトリガとして前記不可欠データを準備し、前記セキュリティチップへの、前記外部からのデータ読み出し要求があった場合に、前記不可欠データを出力する。
【００１０】
本発明に係る請求項２記載の半導体メモリ装置は、前記不可欠データが、前記第１のメモリから読み出される前記プログラムデータを有意なデータとするための有意化データを含んでいる。
【００１１】
本発明に係る請求項３記載の半導体メモリ装置は、前記不可欠データが、前記第１のメモリから前記プログラムデータを読み出すためのアドレスデータを含んでいる。
【００１２】
本発明に係る請求項４記載の半導体メモリ装置は、前記セキュリティチップの前記監視対象が、前記第１のメモリであって、前記所定のアクセスは、前記第１のメモリからの予め定めたデータの読み出しである。
【００１３】
本発明に係る請求項５記載の半導体メモリ装置は、前記セキュリティチップの前記監視対象は、前記第２のメモリであって、前記所定のアクセスは、前記第２のメモリへの予め定めたデータの書き込みである。
【００１４】
本発明に係る請求項６記載の半導体メモリ装置は、前記セキュリティチップの前記監視対象は、前記第２のメモリであって、前記所定のアクセスは、前記第２のメモリからの予め定めたデータの読み出しである。
【００１５】
本発明に係る請求項７記載の半導体メモリ装置は、前記第１のメモリに格納された前記プログラムデータが、少なくとも一部が暗号化されたデータであって、前記有意化データは、前記暗号化された前記プログラムデータを復号する鍵データである。
【００１６】
本発明に係る請求項８記載の半導体メモリ装置は、前記プログラムデータが、読み出し単位ごとに暗号化され、前記鍵データは、前記読み出し単位ごとに設定される。
【００１７】
本発明に係る請求項９記載の半導体メモリ装置は、前記第１のメモリに格納された前記プログラムデータが、部分的にデータが欠落した不完全なデータであって、前記有意化データは、不完全なデータを補完する補完データである。
【００１８】
本発明に係る請求項１０記載の半導体メモリ装置は、前記プログラムデータが、読み出し単位ごとに部分的にデータが欠落し、前記補完データは、前記読み出し単位ごとに設定される。
【００１９】
本発明に係る請求項１１記載の半導体メモリ装置は、前記セキュリティチップが、前記監視対象への前記所定のアクセスを監視するアクセスモニタと、前記有意化データを格納する記憶部と、前記アクセスモニタが、前記監視対象への前記所定のアクセスを確認した後に、前記記憶部に格納された前記有意化データのアドレスに対応するポインタアドレスをセットするアクセスポインタとを有し、外部からの前記データ読み出し要求があった場合に、前記アクセスポインタにセットされた前記ポインタアドレスに対応する前記記憶部の領域から前記有意化データを読み出して出力する。
【００２０】
本発明に係る請求項１２記載の半導体メモリ装置は、前記セキュリティチップが、前記監視対象への前記所定のアクセスを監視するアクセスモニタと、前記アクセスモニタが、前記監視対象への前記所定のアクセスを確認した後に、前記鍵データを関数に基づいて生成する鍵データ生成部とを有し、外部からの前記データ読み出し要求があった場合に、前記鍵データ生成部で生成した前記鍵データを出力する。
【発明の効果】
【００２１】
本発明に係る請求項１記載の半導体メモリ装置によれば、セキュリティチップは、監視対象への所定のアクセスがあった場合に、第１のメモリから読み出されるプログラムの実行に必要な不可欠データを準備し、セキュリティチップへの、外部からのデータ読み出し要求があった場合に、不可欠データを出力する構成を採るので、プログラムの実行時にセキュリティチップによるセキュリティ動作が実行されることとなる。違法なコピー製品の製造者は、セキュリティチップへの、外部からの不可欠データの読み出し要求の後にフリーズが発生することを突き止めても、監視対象への所定のアクセスが何であるかが判らないと不可欠データを読み出すことができず、プログラムを実行させることができない。監視対象への所定のアクセスが何であるかを突き止めるには時間を要し、プログラムの複製に要する時間を飛躍的に増大させ、プログラムデータの違法なコピー製品が出るまでの時間を遅らせることができる。このような効果を奏する構成としては、半導体メモリ装置にセキュリティチップを搭載し、プログラムデータ作成の際に、セキュリティに関するソフトウエアを追加する程度で済むので、現行のセキュリティシステムを改変せずに、低コストかつ短期間で違法なコピー製品の排除が可能となる。
【００２２】
本発明に係る請求項２記載の半導体メモリ装置によれば、不可欠データが、第１のメモリから読み出されるプログラムデータを有意なデータとするための有意化データを含んでいるので、有意化データを得ない限りはプログラムデータを有意にすることができず、プログラムを実行させることができず、違法なコピー製品の製造者によるセキュリティチップの解析を阻害することができる。
【００２３】
本発明に係る請求項３記載の半導体メモリ装置によれば、セキュリティチップは、監視対象への所定のアクセスをトリガとしてアドレスデータを準備し、セキュリティチップへの、外部からのデータ読み出し要求があった場合に、アドレスデータを出力することになるので、違法なコピー製品の製造者は、何がトリガとなってアドレスデータが準備されるかを容易に知ることはできず、違法なコピー製品の製造者によるセキュリティチップの解析を阻害することができる。
【００２４】
本発明に係る請求項４記載の半導体メモリ装置によれば、セキュリティチップの監視対象が第１のメモリであって、第１のメモリからの予め定めたデータの読み出をトリガとして、セキュリティチップにおいて不可欠データを準備するので、違法なコピー製品の製造者は、何がトリガとなって不可欠データが準備されるかを容易に知ることはできず、違法なコピー製品の製造者によるセキュリティチップの解析を阻害することができる。
【００２５】
本発明に係る請求項５記載の半導体メモリ装置によれば、セキュリティチップの監視対象が第２のメモリであって、第２のメモリへの予め定めたデータの書き込みをトリガとして、セキュリティチップにおいて不可欠データを準備するので、違法なコピー製品の製造者は、何がトリガとなって不可欠データが準備されるかを容易に知ることはできず、違法なコピー製品の製造者によるセキュリティチップの解析を阻害することができる。
【００２６】
本発明に係る請求項６記載の半導体メモリ装置によれば、セキュリティチップの監視対象はが第２のメモリであって、第２のメモリからの予め定めたデータの読み出しをトリガとして、セキュリティチップにおいて不可欠データを準備するので、違法なコピー製品の製造者は、何がトリガとなって不可欠データが準備されるかを容易に知ることはできず、違法なコピー製品の製造者によるセキュリティチップの解析を阻害することができる。
【００２７】
本発明に係る請求項７記載の半導体メモリ装置によれば、第１のメモリに格納されたプログラムデータは、少なくとも一部が暗号化されており、有意化データは、暗号化されたプログラムデータを復号する鍵データであるので、違法なコピー製品の製造者は暗号化されていない部分を実行することができても、暗号化された部分を解読するまでは実行できないので、違法なコピー製品の製造を阻害することができる。
【００２８】
本発明に係る請求項８記載の半導体メモリ装置によれば、プログラムデータが読み出し単位ごとに暗号化され、鍵データは読み出し単位ごとに設定されるので、プログラムデータを全て複製するには、プログラムの進行に従って複数の暗号を解除しなくてはならず、違法なコピー製品の製造をより効果的に阻害をすることができる。
【００２９】
本発明に係る請求項９記載の半導体メモリ装置によれば、第１のメモリに格納されたプログラムデータは、部分的にデータが欠落した不完全なデータであるので、違法なコピー製品の製造者はデータが欠落していない部分を実行することができても、欠落した部分を補完するまでは実行できないので、違法なコピー製品の製造を阻害することができる。
【００３０】
本発明に係る請求項１０記載の半導体メモリ装置によれば、プログラムデータが読み出し単位ごとに部分的にデータが欠落し、補完データは、読み出し単位ごとに設定されるのでプログラムデータを全て複製するには、プログラムの進行に従って、複数の補完データで補完しなくてはならず、違法なコピー製品の製造をより効果的に阻害をすることができる。
【００３１】
本発明に係る請求項１１記載の半導体メモリ装置によれば、外部からのデータ読み出し要求があった場合に、アクセスポインタにセットされたポインタアドレスに対応する記憶部の領域から有意化データを読み出して出力するので、違法なコピー製品の製造者は、どのようにして有意化データを読み出しているかを容易に解明することができず、違法なコピー製品の製造を阻害することができる。
【００３２】
本発明に係る請求項１２記載の半導体メモリ装置によれば、外部からのデータ読み出し要求があった場合に、鍵データ生成部で生成した鍵データを出力するので、違法なコピー製品の製造者は、どのようにして有意化データを読み出しているか、また有意化データが保存されているわけではないので、有意化データを見つけることができず、セキュリティチップの解析がより困難なものとなる。
【発明を実施するための最良の形態】
【００３３】
＜はじめに＞
発明の説明に先立って、携帯ゲーム機で採用されている半導体メモリ装置のセキュリティ機能の一例について説明する。
【００３４】
携帯ゲーム機では、ゲームコンソールと呼称されるゲーム機本体に、ゲームカートリッジと呼称されるゲームソフトが格納された部品を挿入する構成を採用している。
【００３５】
ゲームカートリッジには、ゲームソフト（プログラムデータ）の格納用ＲＯＭ（read only memory）と、プログラムの進行状況を示す情報（バックアップデータ）を格納する書き込み、読み出し動作が可能な半導体メモリ（例えばフラッシュメモリ）とを備えている。ゲーム格納用ＲＯＭにはセキュリティ機能が付与されており、また、ゲームコンソール自体にもセキュリティ機能が付与されており、両者は対となってセキュリティ機能を発揮している。従って、ゲーム格納用ＲＯＭからデータを取り出してもセキュリティを解除できなければ、ゲームソフトを実行することができないが、このセキュリティプログラムが解読され、セキュリティを解除した製品が違法なコピー製品として横行している。
【００３６】
違法なコピー製品の構成としては、ゲームカートリッジを模擬したカードに、解読したセキュリティプログラムを格納したmicroＳＤカード（登録商標）を取り付けることで、ゲームコンソール側のセキュリティを突破して、ゲームを実行させる構成などが採用されている。
【００３７】
このように、極めて厳重に施されたセキュリティであっても、一旦、破られてしまうと、ゲームプログラム自体は簡単に複製できるので、違法なコピー製品が横行することとなる。
【００３８】
そこで、発明者は、ゲーム格納用ＲＯＭに付与されたセキュリティ機能が破られた場合でも、ゲームプログラムの実行時にセキュリティ動作が実行されるように新たなセキュリティ機能を付与することで、ゲームプログラムの複製に要する時間を飛躍的に増大させ、違法なコピー製品が出るまでの時間を遅らせるという技術思想に到達した。
【００３９】
＜実施の形態＞
＜装置構成＞
図１は、本発明に係る半導体メモリ装置の実施の形態の、ゲームカートリッジ１０の構成を示すブロック図である。
【００４０】
図１に示すように、ゲームカートリッジ１０は、ゲームソフト（プログラム）が格納されたゲーム格納用ＲＯＭ１（第１のメモリ）と、プログラムの進行状況を示す情報（バックアップデータ）を格納する書き込み、読み出し動作が可能なメモリとしてのフラッシュメモリ２（第２のメモリ）と、セキュリティチップ３とを備えている。
【００４１】
ゲームカートリッジ１０は、ゲーム機本体であるゲームコンソール２０に接続され、ゲームコンソール２０は、ゲーム格納用ＲＯＭ１からゲームソフトを読み出して実行し、ゲームの実行中、必要に応じてフラッシュメモリ２への所定のデータの書き込みなどを行う。
【００４２】
ゲーム格納用ＲＯＭ１にはセキュリティ機能が付与されており、また、ゲームコンソール２０自体にもセキュリティ機能が付与されており、両者は対となってセキュリティ動作を実行している。
【００４３】
ここで、ゲームコンソール２０、ゲーム格納用ＲＯＭ１およびフラッシュメモリ２は従来品であり、ゲーム格納用ＲＯＭ１およびゲームコンソール２０に付与されたセキュリティ機能にも改変は加えられておらず、セキュリティチップ３のみが新規な構成である。
【００４４】
次に、セキュリティチップ３の構成について、図２に示すブロック図を用いて説明する。図２に示すように、セキュリティチップ３は、外部との通信を行うインターフェース（Ｉ／Ｆ）部３１と、インターフェース部３１に接続されたコマンド解析部３２と、コマンド解析部３２からの指示に基づいて、メモリ領域３４からプログラムの実行に必要な不可欠データである暗号解読のための鍵データ（有意化データ）を読み出してコマンド解析部３２に与えるデータセレクタ３３と、複数の領域に論理的に分割されて、複数の鍵データが格納されるメモリ領域３４と、インターフェース部３１を介して、ゲームカートリッジ１０内の他のデバイスへのゲームコンソール２０からのアクセスをモニタするアクセスモニタ３５とを備えている。
【００４５】
コマンド解析部３２は、インターフェース部３１を介して外部から受けたコマンドを解析し、データ読み出しコマンドを受けた場合は、データセレクタ３３を介してメモリ領域３４から所定のデータを読み出してチップ外部に送信する機能を有している。
【００４６】
また、アクセスモニタ３５は、ゲームカートリッジ１０内の予め定めた他のデバイスへのゲームコンソール２０からのアクセスを確認すると、データセレクタ３３内のアクセスポインタ３３１のポインタアドレスを所定値にセットする。アクセスポインタ３３１がセットするポインタアドレスは、メモリ領域３４の所定の領域に格納された鍵データにアクセスするためのアドレス情報であり、図２の例では、例えば、０番のアドレスに対応する領域には鍵データ"ａ"が格納されている。従って、アクセスポインタ３３１のポインタアドレスが"０"に設定されている場合にのみ鍵データ"ａ"を読み出すことができる。
【００４７】
なお、アクセスモニタ３５は、ゲームカートリッジ１０内の予め定めた他のデバイスへのゲームコンソール２０からのアクセスを確認するごとにアクセスポインタ３３１のポインタアドレスを変更し、例えば、ポインタアドレス"０"の次は"１"  に、その次は"２"というように変更し、ポインタアドレスが"１"に設定されている場合は鍵データ"ｂ"を、ポインタアドレスが"２"に設定されている場合は鍵データ"ｃ"を読み出すことができる。
【００４８】
データセレクタ３３は、コマンド解析部３２が、データ読み出しコマンドを受けた場合に、コマンド解析部３２からの読み出し指示に従い、そのときのアクセスポインタ３３１のポインタアドレスに従ってメモリ領域３４から鍵データを読み出す。例えば、コマンド解析部３２からの読み出し指示を受けたときに、アクセスポインタ３３１のポインタアドレスが"０"であれば鍵データ"ａ"が読み出されることになる。
【００４９】
＜セキュリティ動作＞
次に、図１および図２を参照しつつ、図３に示すフローチャートを用いて、ゲームカートリッジ１０によるセキュリティ動作について説明する。
【００５０】
ユーザがゲームコンソール２０にゲームカートリッジ１０を接続して、所定のゲーム開始手続きを行うと、まず、ゲームコンソール２０がゲーム格納用ＲＯＭ１からゲームの初期プログラムを読み出し、ゲームが実行される（ステップＳ１）。この時点で、ゲームの初期プログラムの読み出しには、ゲーム格納用ＲＯＭ１に付与されたセキュリティ機能と、ゲームコンソール２０に付与されたセキュリティ機能とによる対になったセキュリティが働くが、セキュリティチップ３によるセキュリティは働いていない。
【００５１】
ゲームの初期プログラムは暗号化されていないので、ゲームが進行し、予め定めた段階に達すると、ゲームコンソール２０は、セキュリティチップ３のセキュリティ動作のトリガとなるトリガデータ、例えばデータＡ’を、フラッシュメモリ２に書き込む（ステップＳ２）。
【００５２】
セキュリティチップ３内のアクセスモニタ３５は、フラッシュメモリ２にトリガデータＡ’の書き込みが行われたことを確認すると、データセレクタ３３内のアクセスポインタ３３１のポインタアドレスを所定値にセットする。この場合、ゲーム開始後最初のトリガデータの書き込みであるので、ポインタアドレスを"０"にセットする（ステップＳ３）。
【００５３】
次に、ゲームコンソール２０は、ゲーム格納用ＲＯＭ１から初期プログラムに続く継続ゲームデータ、例えばデータＡを読み出す（ステップＳ４）。このデータＡは、ゲームを引き続いて進行させるためのデータであるが、データＡは暗号化されており、そのままでは実行できず、対になる鍵データで有意なデータにする必要がある。これが、セキュリティチップ３内のメモリ領域３４の０番のアドレスに対応する領域に格納された鍵データ"ａ"である。ここで、継続ゲームデータは、一まとまりのデータとして読み出され、これを読み出し単位１つ分のデータと呼称し、読み出し単位ごとに暗号化されており、鍵データは読み出し単位ごとに設定される。
【００５４】
なお、ステップＳ４でのデータの読み出しは、ステップＳ２のトリガデータのフラッシュメモリ２への書き込みに先立って行っても良い。
【００５５】
ここで、トリガデータをどのようなものにするかの設定は、ゲームプログラムの作成時に決定してゲームプログラムに組み込めば良い。また、継続ゲームデータＡが必要となる事象が発生する前には、フラッシュメモリ２の特定の領域にトリガデータＡ’が書き込まれているような設定をゲームプログラムに組み込み、また、セキュリティチップ３から鍵データが読み出されるまでは、フラッシュメモリ２の特定の領域には、次のトリガデータを書き込まないなどの規則をゲームプログラムに組み込むようにする。
【００５６】
次に、ゲームコンソール２０はセキュリティチップ３に対してデータ読み出しコマンドを発行し、それを受けたコマンド解析部３２が、データ読み出しコマンドであることを確認すると、データセレクタ３３に対して読み出し指示を行う。データセレクタ３３では、読み出し指示を受けると、そのときのアクセスポインタ３３１のポインタアドレスに従ってメモリ領域３４から鍵データを読み出す（ステップＳ５）。この場合は、ポインタアドレスを"０"にセットされているので、鍵データ"ａ"が読み出される。
【００５７】
読み出された鍵データ"ａ"は、インターフェース部３１を介してゲームコンソール２０に送信され、継続ゲームデータＡを復号して有意なデータとし、ゲームが進行する（ステップＳ６）。
【００５８】
次に、ゲームコンソール２０は、さらに読み出すべき継続ゲームデータがある場合には、ステップＳ２以下の動作を繰り返し、継続ゲームデータが存在しない場合には、ゲーム終了するまで、ゲームプログラムを実行する。なお、ステップＳ２以下の動作を繰り返す際には、トリガデータＡ’がトリガデータＢ’に変わり、ポインタアドレスが"１"にセットされ、鍵データ"ｂ"が読み出されるなどの変更が行われることは言うまでもない。
【００５９】
＜セキュリティ動作の具体例＞
次に、以上説明したセキュリティ動作の具体例について冒険ゲームを例に採って説明する。
【００６０】
冒険ゲームが進行し、ボスキャラのダンジョンに入る前には、ゲームコンソール２０は必ずデータのセーブを行う。この動作で、フラッシュメモリ２にトリガデータＡ’が書き込まれ、セキュリティチップ３では、アクセスポインタ３３１のポインタアドレスに"０"にセットされる。
【００６１】
さらにゲームが進行すると、ボスキャラに出会うことになるが、これ以降のデータは継続ゲームデータＡとして暗号化されているので、ゲームコンソール２０は、継続ゲームデータＡをゲーム格納用ＲＯＭ１から読み出すとともに、その暗号を解読するために、セキュリティチップ３に対してデータ読み出しコマンドを発行し、セキュリティチップ３から鍵データ"ａ"を読み出す。
【００６２】
鍵データ"ａ"を取得したゲームコンソール２０は、継続ゲームデータＡを解読して、ボスキャラと出会った後のゲームを進行させる。
【００６３】
＜効果＞
以上説明したゲームカートリッジ１０を用いた場合、ゲーム格納用ＲＯＭ１に付与されたセキュリティ機能が破られた場合でも、ゲームプログラムの実行時にセキュリティチップ３によるセキュリティ動作が実行されるので、ゲームプログラムの複製に要する時間を飛躍的に増大させ、違法なコピー製品が出るまでの時間を遅らせることができる。
【００６４】
すなわち、違法なコピー製品の製造者は、ゲーム格納用ＲＯＭ１に付与されたセキュリティ機能を破ってゲーム格納用ＲＯＭ１からゲームプログラムを読み出し、ソフトエミュレータを起動してゲームを進行させる。
【００６５】
しかし、ゲームの初期プログラムは実行できても、継続ゲームデータＡを実行する段階に来ると途中でフリーズしてしまう。
【００６６】
違法なコピー製品の製造者は、このフリーズが、セキュリティチップ３に対して、データ読み出しコマンドを発行した後に発生することを突き止め、セキュリティチップ３を検査して、データ読み出しコマンドに応答して、何らかのデータ（鍵データ"ａ"）が読み出されていることを突き止める。
【００６７】
そして、試行錯誤し、同じ状況では、いつも同じデータが読み出されることを確認すると、ＦＰＧＡ（Field Programmable Gate Array）等を用いて当該データをエミュレートする。
【００６８】
これにより、継続ゲームデータＡが実行可能となりゲームが進行するが、次の継続ゲームデータも暗号化されている場合は、そこでまたフリーズする。
【００６９】
再び、セキュリティチップ３を検査して、データ読み出しコマンドに応答して、何らかのデータ（鍵データ）が読み出されていることを突き止めるが、先のデータとは異なるため、ＦＰＧＡ等を用いて当該データをエミュレートする。
【００７０】
このように、違法なコピー製品の製造者は、ゲームの進行に応じてたびたびフリーズに見舞われ、その都度、フリーズの原因を追及して、鍵データをエミュレートする必要が生じ、最終的には、セキュリティチップ３に格納される全ての鍵データを取得するまでは、ゲームを終了することができない。
【００７１】
通常、ゲームの複製は、エミュレータの動作に必要な極めて短時間で行うことができるが、ゲームデータが暗号化されているので、複製したゲームを実行可能とするには、ゲームの進行に応じて鍵データを取得する必要があり、そのためには人間による試行錯誤が必要となり、違法なコピー製品の製造には、ゲームデータが暗号化されていない場合に比べて、飛躍的に長い時間が必要となる。従って、違法なコピー製品の製造者は、新しいゲームの販売開始直後に違法なコピー製品を売り出すことができず、正規の製造者は、販売開始直後の最も売り上げに寄与する期間を違法なコピー製品に邪魔されることなく販売を続けることができ、違法なコピー製品による売り上げ減退を抑制することができる。
【００７２】
このように、本発明に係る半導体メモリ装置によれば、現行のセキュリティシステムを改変せずに、低コストかつ短期間で違法なコピー製品の排除が可能となる。
【００７３】
＜実装例１＞
以上説明した実施の形態においては、セキュリティチップ３内のアクセスモニタ３５が、フラッシュメモリ２へのアクセスを常時監視しており、フラッシュメモリ２にトリガデータの書き込みが行われたことを確認してアクセスポインタ３３１のポインタアドレスを所定値にセットする動作を説明した。
【００７４】
フラッシュメモリ２へのアクセスは、トリガデータの書き込み以外にも頻繁に行われており、また、トリガデータの書き込みも、通常の動作の１つに過ぎないので、違法なコピー製品の製造者は、鍵データ"ａ"が鍵データ"ｂ"に変わることは検出することができても、何がトリガとなっているかを容易に知ることはできず、セキュリティチップ３内のメモリ領域３４に格納されている鍵データを、ゲームが進行しなければ読み出すことができない。
【００７５】
このように、アクセスポインタ３３１の制御を、フラッシュメモリ２への通常のアクセスを利用して行うことで、セキュリティをより高めることができる。
【００７６】
なお、アクセスポインタ３３１の制御は、フラッシュメモリ２へのデータの書き込みに限定されるものではなく、フラッシュメモリ２からのデータの読み出しをトリガとして使用しても良く、また、フラッシュメモリ２へのアクセスに限定されるものでなく、ゲーム格納用ＲＯＭ１からのデータの読み出しをトリガとして使用しても良い。この場合も、違法なコピー製品の製造者は、何がトリガとなっているかを容易に知ることはできない。
【００７７】
もちろん、よりシンプルに、ゲームコンソール２０からセキュリティチップ３へのアクセスをアクセスポインタ３３１の制御に使用しても良い。この場合、プログラムを開発する上では、よりシンプルになるという利点がある。
【００７８】
＜実装例２＞
実施の形態においては、トリガデータＡ’を、フラッシュメモリ２に書き込むことで、セキュリティチップ３内のアクセスモニタ３５がアクセスポインタ３３１のポインタアドレスを"０"にセットし、ゲームコンソール２０からのセキュリティチップ３に対するデータ読み出しコマンドが発行された場合には、データセレクタ３３は、セキュリティチップ３内のメモリ領域３４の０番のアドレスに対応する領域に格納された鍵データ"ａ"を読み出してゲームコンソール２０に与え、ゲームコンソール２０では、鍵データ"ａ"を用いて継続ゲームデータＡを解読するという動作を説明した。
【００７９】
実際には、図２にも示したが、鍵データは１つに限定されるものではなく、継続ゲームデータＢに対する鍵データ"ｂ"は、トリガデータＢ’によってアクセスモニタ３５がアクセスポインタ３３１のポインタアドレスを"１"にセットし、ゲームコンソール２０からのデータ読み出しコマンドに応答して、メモリ領域３４の１番のアドレスに対応する領域に格納された鍵データ"ｂ"を読み出す構成とする。同様に、トリガデータＣ’と、継続ゲームデータＣと、鍵データ"ｃ"の組み合わせ、トリガデータＤ’と、継続ゲームデータＤと、鍵データ"ｄ"の組み合わせなど、複数の組み合わせが存在していることが望ましい。これにより、ゲームを進行させるには、複数の鍵データが必要となり、ゲームプログラムを完全に解読するには多大な時間を要することとなる。
【００８０】
なお、トリガデータＡ’、Ｂ’、Ｃ’のようにフラッシュメモリ２に異なるデータを書き込む場合、これらのデータは重複することはないので、フラッシュメモリ２の特定の領域に、次々と上書きするという方式を採れば良い。このように、トリガデータの書き込みを、特定の領域に限定することで、ハードウエア的にもソフトウエア的にも作りやすくなるという利点がある。もちろん、フラッシュメモリ２の異なる領域に次々にトリガデータを書き込む構成としても良いことは言うまでもない。
【００８１】
また、トリガデータが書き込まれるフラッシュメモリ２の特定の領域には、初期状態ではデータが書き込まれていない、もしくは無意味なデータを書き込むようにしておく。これにより、違法なコピー製品の製造者は、フラッシュメモリ２を解析しても、有用な情報を得ることができず、ゲームプログラムの解読に困難を来すことになる。
【００８２】
＜実装例３＞
実施の形態においては、セキュリティチップ３内のアクセスモニタ３５が、フラッシュメモリ２へのアクセスを常時監視しており、フラッシュメモリ２にトリガデータの書き込みが行われたことを確認してアクセスポインタ３３１のポインタアドレスを所定値にセットするという動作を説明したが、アクセスモニタ３５は、アクセスポインタ３３１制御のトリガとなる特定のアクセスを検出しなかった場合は、以下の処理をするように構成すれば良い。
【００８３】
最も簡単なのは、特に反応しないという処理である。特定のアクセスを検出するまでは何の動作もせず、待機するという処理がこれに該当する。
【００８４】
次に、アクセスポインタ３３１のポインタアドレスを未定義値に変更するという処理をさせても良い。これにより、定期的にポインタアドレスが未定義状態となるので、違法なコピー製品の製造者によるセキュリティチップ３の解析作業を混乱させることができる。
【００８５】
最後に、最も望ましい処理としては、特定のアクセスを検出しなかった場合は、データセレクタ３３からランダム値を出力させるという処理が挙げられる。これにより、カットアンドトライによるセキュリティチップ３の解析をより困難なものにすることができる。
【００８６】
＜実装例４＞
実施の形態においては、例えば、ゲームコンソール２０が行うセーブデータをトリガデータとして使用する例を示し、ゲーム格納用ＲＯＭ１に格納されるゲームプログラムに含まれるデータをトリガデータとして使用していた。ゲームプログラムのデータを使用することで、ソフトウエア作成の点では作りやすいという利点があった。
【００８７】
しかし、ゲームプログラムのデータそのものをトリガデータとして使用するよりも、ゲームプログラムによって生成されるデータを使用する方が、解析されにくく、セキュリティの点から望ましい。
【００８８】
より具体的には、図３を用いて説明したフローにおいて、ステップＳ２でデータＡ’をフラッシュメモリ２に書き込むのに先だって、進行中のゲームの初期プログラムによってデータＡ’を生成するようにする。生成方法は、ゲームが所定の段階に達するごとに、何らかのデータを生成した出力するように、予めゲームプログラムの中に、生成プログラムを含ませておけば良い。
【００８９】
＜実装例５＞
実施の形態においては、ゲームコンソール２０からのセキュリティチップ３に対するデータ読み出しコマンドが発行された場合に、データセレクタ３３が、セキュリティチップ３内のメモリ領域３４の０番のアドレスに対応する領域に格納された鍵データ"ａ"を読み出すという例を説明したが、データセレクタ３３にアクセスポインタ３３１を設けず、アクセスモニタ３５が、トリガとなる特定のアクセスを検出した段階で、メモリ領域３４から鍵データを読み出しておき、セキュリティチップ３内に設けたバッファメモリ等（図示せず）に格納しておくという構成を採っても良い。そして、ゲームコンソール２０からのセキュリティチップ３に対するデータ読み出しコマンドが発行された段階で、上記バッファメモリ等に格納された鍵データを読み出して出力すれば良い。
【００９０】
鍵データは、順番に読み出されるものなので、アクセスモニタ３５が、トリガとなる特定のアクセスを検出するごとに読み出してバッファリングする構成であっても、何ら問題はない。
【００９１】
このような構成を採ることで、アクセスポインタ３３１が不要となり、ハードウエア的にもソフトウエア的にも作りやすくなるという利点がある。
【００９２】
＜実装例６＞
実施の形態においては、暗号化された継続ゲームデータを鍵データを用いて解読することで有意化するという構成を説明したが、継続ゲームデータは部分的にデータが欠落した不完全なデータとし、それを補完することで有意化する補完データ（有意化データ）をプログラムを実行するために必要な不可欠データとして、セキュリティチップ３内のメモリ領域３４に格納されているという構成を採っても良い。すなわち、メモリ領域３４には、鍵データ"ａ"、"ｂ"・・・の代わりに、継続ゲームデータ"Ａ"、"Ｂ"・・・を補完する補完データ"ａ"、"ｂ"・・・が格納されているという構成を採っても良い。
【００９３】
なお、この場合も、継続ゲームデータは、読み出し単位ごとに部分的にデータが欠落しており、補完データは読み出し単位ごとに設定される。
【００９４】
この場合、ゲームコンソール２０では、ゲーム格納用ＲＯＭ１から読み出した不完全な継続ゲームデータを、セキュリティチップ３から読み出した補完データで補完することで、完全な継続ゲームデータ（有意なデータ）を得ることができる。
【００９５】
なお、セキュリティチップ３内のメモリ領域３４はできるだけ小さくしたいので、補完データは不完全な継続ゲームデータよりも十分小さいことが望ましい。
【００９６】
＜実装例７＞
以上説明した実施の形態においては、鍵データはセキュリティチップ３内のメモリ領域３４に予め準備されているものとして説明したが、鍵データを生成する関数によってセキュリティチップ３内で生成する鍵データ生成部を有する構成としても良い。
【００９７】
この場合、アクセスモニタ３５が、トリガとなる特定のアクセスを検出するごとに鍵データ生成部で関数に基づいて鍵データを生成し、生成した鍵データをセキュリティチップ３内のバッファメモリ等（図示せず）に一旦蓄積しておき、ゲームコンソール２０からのデータ読み出しコマンドが発行された場合に鍵データを出力するという構成を採れば良い。この構成により、データセレクタ３３もメモリ領域３４も不要になって構成が簡単になるという利点がある。
【００９８】
また、鍵データはトリガとなる特定のアクセスを検出するごとに生成されるので、違法なコピー製品の製造者は鍵データを見つけることができず、セキュリティチップ３の解析をより困難なものにすることができる。
【００９９】
また、トリガとなる特定のアクセスを検出するごとに鍵データを生成するのではなく、トリガとなる特定のアクセスを検出したという情報（アクセスの種類の情報も含む）をセキュリティチップ３内のバッファメモリ等（図示せず）に一旦蓄積しておき、ゲームコンソール２０からのデータ読み出しコマンドが発行された場合に、蓄積した情報に基づいて鍵データを生成して出力するという構成を採っても良い。
【０１００】
＜変形例１＞
以上説明した実施の形態においては、鍵データを用いて暗号化された継続ゲームデータを解読するという構成を説明したが、継続ゲームデータは暗号化されておらず、ゲーム格納用ＲＯＭ１内でのアドレスが不明な状態となっており、セキュリティチップ３内のメモリ領域３４には、プログラムを実行するために必要な不可欠データとして、当該継続ゲームデータのアドレスデータが格納されているという構成を採っても良い。すなわち、鍵データ"ａ"、"ｂ"・・・の代わりに、継続ゲームデータ"Ａ"、"Ｂ"・・・のアドレスデータ"ａ"、"ｂ"・・・が格納されているという構成を採っても良い。この動作について、図４に示すフローチャートを用いて説明する。
【０１０１】
ユーザがゲームコンソール２０にゲームカートリッジ１０を接続して、所定のゲーム開始手続きを行うと、まず、ゲームコンソール２０がゲーム格納用ＲＯＭ１からゲームの初期プログラムを読み出し、ゲームが実行される（ステップＳ１１）。なお、ゲームの初期プログラムについては、ゲーム格納用ＲＯＭ１内でのアドレスは予め判明しているので、ゲームコンソール２０が読み出すことができる。
【０１０２】
この時点で、ゲームの初期プログラムの読み出しには、ゲーム格納用ＲＯＭ１に付与されたセキュリティ機能と、ゲームコンソール２０に付与されたセキュリティ機能とによる対になったセキュリティが働くが、セキュリティチップ３によるセキュリティは働いていない。
【０１０３】
ゲームの初期プログラムが進行し、予め定めた段階に達すると、ゲームコンソール２０は、セキュリティチップ３のセキュリティ動作のトリガとなるトリガデータ、例えばデータＡ’を、フラッシュメモリ２に書き込む（ステップＳ１２）。
【０１０４】
セキュリティチップ３内のアクセスモニタ３５は、フラッシュメモリ２にトリガデータＡ’の書き込みが行われたことを確認すると、データセレクタ３３内のアクセスポインタ３３１のポインタアドレスを所定値にセットする。この場合、ゲーム開始後最初のトリガデータの書き込みであるので、ポインタアドレスを"０"にセットする（ステップＳ１３）。
【０１０５】
次に、ゲームコンソール２０は、ゲーム格納用ＲＯＭ１から初期プログラムに続く、継続ゲームデータ、例えばデータＡを読み出そうとするが、当該データＡのゲーム格納用ＲＯＭ１内でのアドレスデータが不明であるので、まず、セキュリティチップ３に対してデータ読み出しコマンドを発行し、それを受けたコマンド解析部３２が、データ読み出しコマンドであることを確認すると、データセレクタ３３に対して読み出し指示を行う。
【０１０６】
データセレクタ３３では、読み出し指示を受けると、そのときのアクセスポインタ３３１のポインタアドレスに従ってメモリ領域３４から、継続ゲームデータ、例えばデータＡが格納されたゲーム格納用ＲＯＭ１内のアドレスデータを読み出す（ステップＳ１４）。この場合は、ポインタアドレスを"０"にセットされているので、アドレスデータ"ａ"が読み出される。アドレスデータ"ａ"は、ゲーム格納用ＲＯＭ１に与えられ、アドレスデータ"ａ"に従って、ゲーム格納用ＲＯＭ１から継続ゲームデータ"Ａ"が読み出される（ステップＳ１５）。継続ゲームデータ"Ａ"は、ゲームコンソール２０に送信され、ゲームが進行する。
【０１０７】
次に、ゲームコンソール２０は、さらに読み出すべき継続ゲームデータがある場合には、ステップＳ１２以下の動作を繰り返し、継続ゲームデータが存在しない場合には、ゲーム終了するまで、ゲームプログラムを実行する。
【０１０８】
このように、継続ゲームデータを読み出すには、不可欠データであるアドレスデータをまず取得しなければならないが、アドレスデータを取得するにはフラッシュメモリ２へのトリガデータの書き込みが必要であるが、それを解析するには時間を要するので、ゲームプログラムの解読に困難を来すことになる。
【０１０９】
＜変形例２＞
なお、以上説明した実施の形態および変形例１においては、プログラムを実行するために必要な不可欠データの例として、暗号解読のための鍵データや、部分的にデータが欠落した継続ゲームデータを補完する補完データや、継続ゲームデータのアドレスを示すアドレスデータを挙げて説明したが、不可欠データとしてはこれらに限定されるものではない。
【０１１０】
例えば、プログラムデータのうち、暗号化された継続ゲームデータをセキュリティチップ３のメモリ領域３４に入れておき、鍵データは暗号化された継続ゲームデータの代わりにゲーム格納用ＲＯＭ１に格納すれば良い。暗号化された継続ゲームデータが内部メモリ３４に格納され、鍵データがゲーム格納用ＲＯＭ１に格納されていても、セキュリティ機能としては同じである。むしろ、プログラムデータの一部がゲーム格納用ＲＯＭ１に存在しないことで、違法なコピー製品の製造者による複製を阻害する要因を増やすことができる。
【０１１１】
また、各種パラメータや、ＦＡＴ（ファイル管理情報）を不可欠データとし、キュリティチップ３に格納する構成としても良い。
【図面の簡単な説明】
【０１１２】
【図１】本発明に係る半導体メモリ装置の実施の形態の構成を示すブロック図である。
【図２】セキュリティチップの構成を説明するブロック図である。
【図３】本発明に係る半導体メモリ装置のセキュリティ動作を説明するフローチャートである。
【図４】本発明に係る半導体メモリ装置の変形例のセキュリティ動作を説明するフローチャートである。
【図１】
0005055490.tif 000002
【図２】
0005055490.tif 000003
【図３】
0005055490.tif 000004
【図４】
0005055490.tif 000005