説明

コピープロテクトされたソフトウエア・カートリッジ

本発明は、好ましくはゲーム機(1)用として使用されるカートリッジ(2)に関する。このカートリッジ(2)は、ROM(21)、不揮発性メモリ(22)、プロセッサ(20)およびディスパッチャ(23)を有している。コンソール(1)上で動作しているアプリケーション(3)は、所定のアドレスを使用して、ディスパッチャ(23)と通信する。これによって、ディスパッチャ(23)は、必要に応じて、ROM(21)、不揮発性メモリ(22)またはプロセッサ(20)にアクセスすることを可能にする。カートリッジと別カートリッジとで、アドレスが変更される場合、一般的なコピー方法を見出すことができない。このため、本発明は従来技術のコピープロテクトを改善する。加えて、ソフトウェアを複製するために、プロセッサ(20)をエミュレートしなければならない。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、コンピュータソフトウェアに関し、より詳細には、カートリッジ内のソフトウェアのためのコピープロテクトに関する。
【背景技術】
【0002】
このセクションにおいて、技術のさまざまな態様を例示する。これらは、以下に記載され、クレームされている本願発明のさまざまな態様に関連している。ここでの説明は、背景情報を提供し、本願発明の様々な態様をより良く理解するための参考になると考えられる。したがって、ここでの記載は、上記目的のためのものであり、従来技術であることを認めるためのものではないことを理解すべきである。
【0003】
コンピュータ・プログラムおよび、特にコンピュータゲーム(それは、非制限的な実施例として、以下に使用される)は使いやすさのため、いわゆるカートリッジに記憶されたかたちで長いあいだ使用されている。他の有利な点としては、容易にソフトウェアにアクセスでき、パッケージが頑丈であるということである。この種のカートリッジは、コンソールとのインターラクション(対話)のためのインターフェース、ソフトウェアアプリケーションを記憶するROM、および、ゲーム・パラメータを記憶するための(好ましくは不揮発性の)更なるメモリを有している。
【0004】
しかしながら、これらのカートリッジ内のソフトウェアは、『通常の』ソフトウェアとほぼ同程度、コピーに対して脆弱である。当然、ソフトウェア提供者は、コピーすることに対する防御のため、例えば専用インターフェースおよびチップセットの使用、およびソフトウェアアプリケーションの暗号化を行っている。残念なことに、ハッカーは従来技術の防御をクラッキングすることが可能であり、実際、全ての現在のプログラムはインターネット上で見つけることができる。たとえば、ハッキングのために用意されたサイトにおいて、見つけることができる。
【0005】
特許文献1は、予め記録してあるメディアの保護のシステムを開示している。メディアは、情報を記憶するセキュアーなプロセッサおよびプレーヤ(再生装置)が完全にコンテンツにアクセスするために必要とするソフトウェアに関連づけられている。プレーヤがこの情報またはソフトウェアの結果を必要とするときはいつでも、それはセキュアーなプロセッサとコンタクトを取り、そのレスポンスを待つことになる。この解決策の不利な点は、セキュアーなプロセッサとインターラクト(対話)するように構成されていないプレーヤは、コンテンツを利用することができないということである。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】欧州特許出願EP07300965号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
したがって、カートリッジ内のソフトウェアのコピープロテクトを改良するための解決策が必要とされる。好ましくは、既存のコンソールを使い続けることができることが望まれる。本発明は、この種の解決策を提供するものである。
【課題を解決するための手段】
【0008】
[発明の開示]
第1の態様において、本発明は、コンソールに使用されるカートリッジを対象とする。 コンソールの用途に使用されるカートリッジは、前記コンソールと通信するためのインターフェースユニットと、少なくともアプリケーションの部分を記憶するための第1のメモリと、少なくとも1つのファンクションを実行するためのプロセッサとを有する。当該カートリッジは更に、前記インターフェースユニットより、前記アプリケーションを実行する前記コンソールから来るデータを受信するディスパッチャを有する。前記データは少なくとも2つのブロックのアドレスを含むメモリ空間のアドレスを有し、各々のブロックは前記第1のメモリおよび前記プロセッサのうちの1つとユニークに関連している。前記受信されたアドレスが、前記第1のメモリに関連したブロック内にある場合、前記受信されたアドレスを前記第1のメモリの物理アドレスに変換し、前記第1のメモリの前記物理アドレスによって通信する。前記受信されたアドレスが、前記プロセッサに関連したブロック内にある場合、前記受信されたアドレスを変換し、前記変換されたアドレスを前記プロセッサに送信する。
【0009】
第1の好ましい実施例において、第1のメモリは、読取り専用メモリである。
【0010】
第2の好ましい実施例において、カートリッジは、アプリケーション・パラメータを記憶する第2のメモリを有し、前記メモリ空間は、前記第2のメモリにユニークに関連づけられた少なくとも1つの更に別個のブロックを含む。前記ディスパッチャは、前記アドレスが前記第2のメモリに関連づけられたブロック内にある場合、更に前記アドレスを前記第2のメモリの物理アドレスに変換し、かつ、前記第2のメモリの前記物理アドレスと通信する。
【0011】
第2のメモリが不揮発性メモリであることは、有利である。
【0012】
第3の好ましい実施例において、前記プロセッサは、更に、前記ディスパッチャに値を返し、かつ、前記ディスパッチャは、前記アプリケーションに前記値を返す。
【0013】
第4の好ましい実施例において、プロセッサは、セキュアーなプロセッサである。
【0014】
第5の好ましい実施例において、前記ディスパッチャは、前記プロセッサと通信するために使用するバッファを更に含む。
【0015】
第6の好ましい実施例において、前記ディスパッチャは、前記受信されたアドレスが前記第1のメモリの、または前記プロセッサの有効アドレスに対応しない場合、ランダムデータを返す。
【0016】
第7の好ましい実施例において、前記受信されたアドレスが前記第1のメモリまたは前記プロセッサに対応しない場合、 前記ディスパッチャは、前記プロセッサにロックすることを要求する。
【0017】
第2の態様において、本発明は、カートリッジとインターラクトするコンソール上でアプリケーションを実行する方法を目的とする。前記コンソールのプロセッサによって実行される前記アプリケーションは、前記カートリッジに少なくともアドレスを含むデータを送信し、前記アドレスは、少なくとも2つのブロックのアドレスを含むメモリ空間内にあり、各々のブロックは、前記カートリッジの第1のメモリおよびプロセッサのうちの1つとユニークに関連している。前記カートリッジのディスパッチャは、前記データを受信し、前記受信されたアドレスが、前記第1のメモリに関連したブロック内にある場合、前記受信されたアドレスを前記第1のメモリの物理アドレスに変換し、前記第1のメモリの前記物理アドレスによって通信する。前記受信されたアドレスが、前記プロセッサに関連したブロック内にある場合、前記受信されたアドレスを変換し、前記変換されたアドレスを前記プロセッサに送信する。
【0018】
添付の図面は、実施例を制限するものではなく、本発明の好適な特徴を開示するものである。
【図面の簡単な説明】
【0019】
【図1】本発明の好ましい実施例に従って、コンソールとカートリッジを例示する図である。
【図2】本発明の好ましい実施例に従って、仮想記憶空間を例示する図である。
【発明を実施するための形態】
【0020】
[本発明の好ましい実施例]
図1は、本発明の好ましい実施例に従って、コンソール1とカートリッジ2を例示している。説明において、「コンソール」という語は、カートリッジに記憶されたアプリケーションを実行するために、カートリッジとインターラクト(対話)することが可能であるデバイスを表現するために使用する。そして、「カートリッジ」という語は、アプリケーションを記憶するための固体メモリまたは他の永続的なメモリを使用する物理的な実体を意味するために使用する。
【実施例】
【0021】
コンソールは、ソフトウェアアプリケーションを実行する1つ以上のプロセッサ10(以下「プロセッサ」)および、カートリッジ2とのインターラクション(対話)のための、物理的および論理的インターフェースをインプリメントするインターフェースユニット14を有する。インターフェースユニット14は、典型的なアドレス/データ双方向バス、または、1つ以上のファンクションのコールによって通信し得る。コンソールは、更に、少なくとも1つのアプリケーション、ファームウェアおよび、ミドルウェアを記憶する読取り専用メモリ(ROM)11と、一時データおよび、カートリッジ2からロードされたゲーム・アプリケーション3を記憶するランダムアクセスメモリ(RAM)12と、例えばスクリーン、ラウドスピーカ、キー、ボタンおよび、タッチスクリーンを介して、一人以上のユーザとのインターラクションを行うためのユーザインタフェース13とを有するプロセッサ10は、ROM内の少なくとも1つのアプリケーションおよび、RAM12に記憶されているゲーム・アプリケーション3を実行するのに適している。
【0022】
インターフェースユニット14は、好ましくはカートリッジ2の存在を自動的に検出する。通常は、カートリッジ2がないときには、バスには電力が供給されず、パワーは提供されない。パワーオンされたコンソールに、カートリッジ2が接続されている場合には、パワーがカートリッジ2に供給され、かつデータバスにも電力が供給される。
【0023】
カートリッジ2は、コンソール1のインターフェースユニット14と通信するためのインターフェースユニット24を有する。カートリッジは、固定のアドレス(例えば0x00000)にゲーム・アプリケーションを記憶するROM21と、例えばゲームのプレーヤの現在のポジションなどのゲーム・パラメータを記憶する少なくとも1つの不揮発性メモリ(以下「不揮発性メモリ」)22とを更に有する。この不揮発性メモリ22は、EEPROM(Electrical Erasable PROgrammable Memory)またはFlashメモリであってもよい。この不揮発性メモリ22は、NVM ADDRESS STARTで始まり、NVM ADDRESS ENDで終わるアドレスを持つ。カートリッジ2は、1つ以上のファンクションを実行する保護プロセッサ20(好ましくは、セキュアーなプロセッサであり、複数のハードウェアコンポーネントでインプリメントされてもよい)と、ディスパッチャ23とを有する。ディスパッチャ23は望ましくは、保護プロセッサ20につながる通信リンク25を有する専用のチップであることが望ましい。
【0024】
ディスパッチャ23は、好ましくは以下のように機能する。インターフェースユニット24のデータバス上のアドレスがNVM ADDRESS STARTとNVM ADDRESS ENDとの間の範囲にある場合、これは、対応する不揮発性メモリ22のPROCESSOR_STARTとPROCESSOR_ENDとの間をアドレスする。そして、これは、内部バッファ230に対して読み出し・書き込みを行う。好適には、この受信したアドレスを変換してプロセッサに送信する(この場合、変換のためのファンクションが特定される点に留意)PROCESSOR_WRITE。そして、これは、通信リンク25を介して保護プロセッサ20に、内部バッファ230のコンテンツを送る。通信リンク25を介して保護プロセッサ20からデータを受信する場合、データを内部バッファ230に記憶し、かつ、内部フラグDATA_READYを1にする。さらに、インターフェースユニット24のデータバス上のアドレスがPROCESSOR_READ_FLAGであるときには、それは、コンソール1に、DATA_READYを返し、DATA_READYのフラグを0にセットする。他の全てのケースにおいて、ディスパッチャ23は、ROM21をアドレスする。また、ディスパッチャ23によって受信されるアドレスは、ファンクションまたは命令のパラメータ、宛先デバイスを特定する更なるパラメータであってもよいことはいうまでもない。重要なことは、ディスパッチャは、正しく要求を送ることを可能にするアドレス情報を受信するということである。
【0025】
保護プロセッサ20、ROM21、不揮発性メモリ22、ディスパッチャ23および、インターフェースユニット24は、シングルチップ(例えばSOC(System on chip)または2個以上の別々の回路) によってインプリメントされてもよい。
【0026】
ゲーム・アプリケーション3は、本発明を明らかにするために使用される仮想エンティティである。ゲーム・アプリケーション(ゲーム・アプリケーション3の一部分は他のソースから、例えばインターネットを介して受信されてもよい)は、少なくともROM21からのプロセッサ10によって実行されるソフトウェアプログラムである。適切な場合には、ソフトウェアは保護プロセッサ20に記憶され実行される。これに関する詳細は後述する。ゲーム・アプリケーション3は、カートリッジ2の内部を知っていてもよい。それがプロセッサ10によって実行されるときに、インターフェースユニット14および24を介して、少なくとも1つの動作を実行するために、ディスパッチャ23と通信してもよい。例えば、その動作としては、ROM21からのデータの読込み、不揮発性メモリ22に対するデータの書き込みまたは読み込み、保護プロセッサ20がファンクションを実行し、結果を返すよう要請するリクエストが挙げられる。
【0027】
本発明を更に説明するために、システムの振る舞いを単純化して以下説明する。スイッチオンされたコンソール1にカートリッジ2が挿入されると(あるいは、コンソール1と接続されると)、コンソール1は、ROM21に記憶されアプリケーションの予め定められたセクション(アドレス0x00000で)をロードすることによってゲーム・アプリケーション3を開始する。一旦、ゲーム・アプリケーション3が、プロセッサ10で実行されると、それは、ディスパッチャ23とインターラクトし、不揮発性メモリ22に対して、情報の読み出し・書き込みを行う。そして、保護プロセッサ20に、ファンクションを実行するよう要求し、適切な場合には、実行されたファンクションの結果を返すよう要求する。そして、ROM21からアプリケーションの更なるセクションを読み込む。保護プロセッサ20によって実行されるこのファンクションは、要求において抵抗された1つ以上のパラメータを使用する。なお、このファンクションは、カートリッジのメモリ21、22のうちの1つ以上から読み込まれたパラメータを使用してもよい。更に、保護プロセサ20は、結果を不揮発性メモリ22に出力してもよい。ゲーム・アプリケーション3は、好ましくは、保護プロセッサ20の存在なしで作動することができないよう設計される。なお、アプリケーションが、低機能のモードで作動するようにすることも可能である。
【0028】
開始の間、ゲーム・アプリケーション3は、したがって、NVM ADDRESS STARTと、NVM ADDRESS ENDとの間に記憶されたデータを読み込むことによって、不揮発性メモリ22に記憶されたデータを読み出してもよい。実行の間、および/または終わりにおいて、ゲーム・アプリケーション3は、不揮発性メモリ22にデータを記憶することによってこのデータを更新してもよい。必要に応じてNVM ADDRESS STARTおよび/またはNVM ADDRESS ENDを修正する。
【0029】
また、ゲーム・アプリケーション3は、保護プロセッサ20にファンクションを実行するように命じてもよい。これは、PROCESSOR_STARTからPROCESSOR_ENDのデータをアドレス空間に、まず、コマンドおよびコントロールデータを送ることによってなされる。ゲーム・アプリケーション3は、その後、アドレスPROCESSOR_WRITEに書き込みを行う。アドレスPROCESSOR_READ_FLAGを定期的にポーリングして、戻り値が1である場合、PROCESSOR_STARTからESSOR_ENDまでのアドレス空間におけるデータを読み出す。それは、したがって、そのアプリケーション3からは、例えば図2にて図示したように、仮想的な、平坦なメモリ空間が見えることとなる。メモリ空間において、(一番下から)第1の部分は、ROM20へのアドレッシングの部分である。次の部分は、保護プロセッサへの異なる方式によるアドレッシングの部分であり、三番目の部分は、ROM21へのアドレッシングの部分であり、第5の部分は、ROM21へのアドレッシングの部分である。図2は、他の多くの可能性の1つの例に過ぎず、他のアドレス空間の使用も可能であることはいうまでもない。勿論、異なるゲームに対する異なるアドレスの使用が推奨される。メモリ空間において、好ましくはメモリに対するアドレスは、同じメモリの物理アドレスに変換される。例えば、「仮想」NVM_ADDRESS_STARTは、不揮発性メモリの物理アドレス0x000000に対応してもよい。しかしながら、それがまた、論理的メモリーアドレスに変換されてもよいと理解される。
【0030】
さらに、使用されないアドレスを有することも可能である。ディスパッチャ23がこの種のアドレスを受信した場合、所定の振る舞い(例えば、ランダムなまたはガーベージデータを返したり、保護プロセッサ20をロックしたりすることが望まれる。
【0031】
上述したように、PROCESSOR_WRITE、PROCESSOR_READ_FLAG、PROCESSOR_START、PROCESSOR_END、NVM_ADDRESS_STARTおよび、NVM_ADDRESS_ENDのうちの少なくともいくつかの値は、各々の新規なゲームで変更されることが望ましい。これによって、アプリケーション毎に変更されるため、ハッカーが単純な一般的なバックアップシステムを構築することは不可能である。加えて、ハッカーは、各々の新規なカートリッジ用の保護プロセッサ20の振る舞いをエミュレートしなければならない。
【0032】
本発明の効果は、コンソールはカートリッジのアーキテクチュアについての知識を必要としないため、古いコンソールによって、新規な、保護されたカートリッジを使用することが可能であり、古いコンソールを変更する必要がないということである。
【0033】
したがって、本発明は、改良されたソフトウェアのコピープロテクト・システムを提供することが理解される。この説明は、ゲーム・アプリケーションを制限的に示すものではない。したがって、当業者は、適切ないかなる種類のアプリケーションに対しても適用できる。例えば、トレーニングアプリケーションや実用的なアプリケーションである。
【0034】
この説明および、(必要に応じて)請求項および、図面において開示される各々の特徴は、単独で、あるいは組み合わせて提供されてもよい。ハードウェアでインプリメントされるとして記載されている特徴は、また、ソフトウェアでインプリメントされてもよく、かつ、その逆であってもよい。接続は、ワイヤレス接続または線による接続としてインプリメントされてもよい。必ずしも、専用の、直接的な接続でなくてもよい。本発明に関連する特徴のみを記載した。本発明の説明のために必要でない特徴は、理解するのを容易にするために、意識的に説明を省略している。
【0035】
請求項に示す参照番号は、例示目的のためのものであり、請求項の範囲を制限するためのものではない。

【特許請求の範囲】
【請求項1】
コンソールの用途に使用されるカートリッジであって:
前記コンソールと通信するためのインターフェースユニットと;
少なくともアプリケーションの部分を記憶するための第1のメモリと;
少なくとも一つのファンクションを実行するためのプロセッサと;
を有し、当該カートリッジは更に、
前記インターフェースユニットより、前記アプリケーションを実行する前記コンソールから来るデータを受信するディスパッチャであって、前記データは少なくとも2つのブロックのアドレスを含むメモリ空間のアドレスを有し、各々のブロックは前記第1のメモリおよび前記プロセッサのうちの1つとユニークに関連しており、かつ、
前記受信されたアドレスが、前記第1のメモリに関連したブロック内にある場合:
前記受信されたアドレスを前記第1のメモリの物理アドレスに変換し;かつ、
前記第1のメモリの前記物理アドレスによって通信し;かつ、
前記受信されたアドレスが、前記プロセッサに関連したブロック内にある場合:
前記受信されたアドレスを変換し;かつ、
前記変換されたアドレスを前記プロセッサに送信する;
ところのディスパッチャと;
を有するカートリッジ。
【請求項2】
前記第1のメモリは、読取り専用メモリである、請求項1記載のカートリッジ。
【請求項3】
アプリケーション・パラメータを記憶する第2のメモリを有し、
前記メモリ空間は、前記第2のメモリにユニークに関連づけられた少なくとも一つの更に別個のブロックを含み、かつ、前記ディスパッチャは、前記アドレスが前記第2のメモリに関連づけられたブロック内にある場合、更に前記アドレスを前記第2のメモリの物理アドレスに変換し、かつ、前記第2のメモリの前記物理アドレスと通信する、請求項1記載のカートリッジ。
【請求項4】
前記第2のメモリは、不揮発性メモリである、請求項3記載のカートリッジ。
【請求項5】
前記プロセッサは、更に、前記ディスパッチャに値を返し、かつ、前記ディスパッチャは、前記アプリケーションに前記値を返す、請求項1記載のカートリッジ。
【請求項6】
前記プロセッサは、セキュアーなプロセッサである、請求項1記載のカートリッジ。
【請求項7】
前記ディスパッチャは、前記プロセッサと通信するために使用するバッファを更に含む、請求項1記載のカートリッジ。
【請求項8】
前記受信されたアドレスが前記第1のメモリまたは前記プロセッサに対応しない場合、前記ディスパッチャは、ランダムデータを返す、請求項1記載のカートリッジ。
【請求項9】
前記受信されたアドレスが前記第1のメモリの、または前記プロセッサの有効アドレスに対応しない場合、前記ディスパッチャは、前記プロセッサにロックすることを要求する、請求項1記載のカートリッジ。
【請求項10】
カートリッジとインターラクトするコンソール上でアプリケーションを実行する方法であって:
前記コンソールのプロセッサによって実行される前記アプリケーションによって、前記カートリッジに少なくともアドレスを含むデータを送信するステップであって、前記アドレスは、少なくとも2つのブロックのアドレスを含むメモリ空間内にあり、各々のブロックは、前記カートリッジの第1のメモリおよびプロセッサのうちの1つとユニークに関連しているところのステップと;
前記カートリッジのディスパッチャによって:
前記データを受信するステップと;
前記受信されたアドレスが、前記第1のメモリに関連したブロック内にある場合:
前記受信されたアドレスを前記第1のメモリの物理アドレスに変換するステップと;
前記第1のメモリの前記物理アドレスによって通信するステップと;
前記受信されたアドレスが、前記プロセッサに関連したブロック内にある場合:
前記受信されたアドレスを変換するステップと;
前記変換されたアドレスを前記プロセッサに送信するステップと;
を有する方法。

【図1】
image rotate

【図2】
image rotate


【公表番号】特表2011−507086(P2011−507086A)
【公表日】平成23年3月3日(2011.3.3)
【国際特許分類】
【出願番号】特願2010−537468(P2010−537468)
【出願日】平成20年12月12日(2008.12.12)
【国際出願番号】PCT/EP2008/067467
【国際公開番号】WO2009/074686
【国際公開日】平成21年6月18日(2009.6.18)
【出願人】(501263810)トムソン ライセンシング (2,848)
【氏名又は名称原語表記】Thomson Licensing 
【住所又は居所原語表記】1−5, rue Jeanne d’Arc, 92130 ISSY LES MOULINEAUX, France
【Fターム(参考)】