(57)【要約】書込み領域セキュリティシステム（１０）は、ＣＰＵ（３４）、フラッシュメモリ（６４）およびメモリコントローラ（６２）を含む。メモリコントローラ（６２）は、フラッシュメモリ（６４）の所定領域に記憶されたデータのリードコマンドをＣＰＵ（３４）から受けると、たとえば当該読み出したデータのパリティチェックを行う。メモリコントローラ（６２）は、当該読み出したデータのパリティが正しいときのみ、当該データをＣＰＵ（３４）に出力する。
2009031244.tif 000002
【特許請求の範囲】
【請求項１】
所定の書込み領域を有する記憶手段、前記記憶手段の書込みと読出しを制御する制御手段、および前記制御手段に接続されるホストを含む、書込み領域セキュリティシステムであって、
前記ホストは、前記所定の書込み領域に記憶されたデータの読出し命令を前記制御手段に送信する命令送信手段を含み、
前記制御手段は、
前記読出し命令に応じて前記所定の書込み領域から読み出したデータが所定のフォーマットであるか否かを判定するフォーマット判定手段、および
前記フォーマット判定手段によって前記データが前記所定のフォーマットであると判定されたときのみ、前記データを前記ホストに出力する出力手段を含む、書込み領域セキュリティシステム。
【請求項２】
前記記憶手段は、第１領域および第２領域を有していて、
前記制御手段は、第１遷移コマンドに応じて遷移された書込み可能なモードにおいてデータを前記第１領域に書き込む第１書込み手段をさらに含み、
前記フォーマット判定手段は、前記所定の書込み領域としての前記第２領域から読み出したデータに対してのみ、前記データが所定のフォーマットであるか否かを判定する、請求項１記載の書込み領域セキュリティシステム。
【請求項３】
前記制御手段は、前記ホストから指定された読出しアドレスが前記所定の書込み領域のうちのアクセス可能な領域内であるか否かを判定するアドレス判定手段をさらに含み、
前記アドレス判定手段によって前記読出しアドレスが前記領域内であると判定されるとき、前記フォーマット判定手段は、読み出したデータが所定のフォーマットであるか否かを判定する、請求項１記載の書込み領域セキュリティシステム。
【請求項４】
前記フォーマット判定手段は、前記読み出したデータのパリティチェックによって判定を行う、請求項１記載の書込み領域セキュリティシステム。
【請求項５】
前記制御手段は、前記読み出したデータが前記所定のフォーマットではないと前記フォーマット判定手段によって判定されるとき、イリーガルモードに遷移する、請求項１記載の書込み領域セキュリティシステム。
【請求項６】
前記ホストは、パリティビットの付加されたデータを生成する書込みデータ生成手段を含み、
前記制御手段は、前記書込みデータ生成手段によって生成されたデータを前記所定の書込み領域に書き込む第２書込み手段を含む、請求項１記載の書込み領域セキュリティシステム。
【請求項７】
前記記憶手段は、前記第１領域および前記第２領域の境界データを記憶する、請求項２記載の書込み領域セキュリティシステム。
【請求項８】
サーバおよび前記サーバからデータをダウンロードする情報処理装置を含んでいて、
前記情報処理装置は、前記記憶手段、前記制御手段および前記ホストを含み、
前記サーバは、
前記記憶手段の前記第１領域に書込み可能なモードに前記制御手段を遷移させるための前記第１遷移コマンドを前記情報処理装置に送信する遷移コマンド送信手段、および
ダウンロードするデータを前記情報処理装置に送信するデータ送信手段を含む、請求項２記載の書込み領域セキュリティシステム。
【請求項９】
前記サーバは、前記第１遷移コマンドを暗号化する暗号化手段をさらに含み、
前記遷移コマンド送信手段は、前記暗号化手段によって暗号化された前記第１遷移コマンドを送信し、
前記制御手段は、前記暗号化された第１遷移コマンドを復号化する復号化手段をさらに含む、請求項８記載の書込み領域セキュリティシステム。
【請求項１０】
前記第１遷移コマンドは、前記ダウンロードするデータを書き込むために指定されたアドレスを含み、
前記制御手段は、前記第１遷移コマンドに応じて前記第１領域に前記書込み可能なモードに遷移したとき、前記第１領域のうち前記指定されたアドレスのみ書込み可能にする書込み可能化手段をさらに含む、請求項８記載の書込み領域セキュリティシステム。
【請求項１１】
前記書込み可能化手段は、前記第１領域のうち前記指定されたアドレスから一定範囲を書込み可能にする、請求項１０記載の書込み領域セキュリティシステム。
【請求項１２】
前記制御手段は、前記第１領域に書込み可能なモードの１つ前の段階で遷移される通常よりセキュリティ度の高いセキュアモードにおいて、暗号化された前記第１遷移コマンドを前記復号化手段によって復号化する、請求項９記載の書込み領域セキュリティシステム。
【請求項１３】
前記サーバは、前記第１遷移コマンドの暗号のための第１キー、および前記第１キーと異なる前記ダウンロードするデータの暗号のための第２キーを記憶し、
前記暗号化手段は、前記第１キーを用いて前記第１遷移コマンドを暗号化し、
前記データ送信手段は、前記第２キーを用いて暗号化された前記ダウンロードするデータを送信し、
前記記憶手段は、前記第１キーおよび前記第２キーを記憶し、
前記復号化手段は、暗号化された前記第１遷移コマンドを前記第１キーを用いて復号化し、
前記第１書込み手段は、前記第１領域に書込み可能なモードにおいて、前記暗号化されたダウンロードするデータを前記第２キーを用いて復号化して前記第１領域に書き込む、請求項９記載の書込み領域セキュリティシステム。
【請求項１４】
前記サーバは、前記ダウンロードするデータのメッセージダイジェスト認証用の第３キーをさらに記憶し、
前記データ送信手段は、前記第３キーを用いて生成された認証記号を付加した前記ダウンロードするデータを、前記第２キーを用いて暗号化して、当該暗号化されたデータを送信し、
前記記憶手段は、前記第３キーをさらに記憶し、
前記制御手段は、前記第１領域に書込み可能なモードにおいて、前記暗号化されたデータを前記第２キーを用いて復号化し、
前記第１書込み手段は、前記復号化したデータが前記第３キーを用いて認証されたとき、当該データを前記第１領域に書き込む、請求項１３記載の書込み領域セキュリティシステム。
【請求項１５】
前記第３キーは、前記第２キーの一部を置き換えることによって得られるキーである、請求項１４記載の書込み領域セキュリティシステム。
【請求項１６】
前記記憶手段は、暗号化された前記第１キーおよび前記第２キーを記憶していて、
前記制御手段は、前記セキュアモードに遷移したとき、暗号化された前記第１キーを復号化してＲＡＭに展開し、前記第１領域に書込み可能なモードに遷移したとき、暗号化された前記第２キーを復号化してＲＡＭに展開する、請求項１２記載の書込み領域セキュリティシステム。
【請求項１７】
前記制御手段は、前記セキュアモードに遷移するための第２遷移コマンドに応じて前記第１キーを展開し、前記第１遷移コマンドに応じて前記第２キーを展開する、請求項１６記載の書込み領域セキュリティシステム。
【請求項１８】
前記ホストは、通常モードにおいて、前記制御手段に対するコマンドを、処理負担の比較的軽いアルゴリズムに従って暗号化する通常暗号化手段をさらに含む、請求項８記載の書込み領域セキュリティシステム。
【請求項１９】
前記ホストは、前記制御手段に書込みを指示するための書込みコマンドを発行する書込み発行手段をさらに含み、
前記制御手段は、前記第１領域に書込み可能なモードにおいて、前記書込みコマンドに応じて、前記ダウンロードするデータを前記第１領域に書き込む、請求項８記載の書込み領域セキュリティシステム。
【請求項２０】
前記記憶手段は、当該記憶手段の識別情報を記憶していて、
前記情報処理装置は、前記記憶手段に記憶された前記識別情報を前記サーバに送信する識別情報送信手段を含み、
前記サーバは、複数の前記識別情報に対応付けられた、前記第１遷移コマンドの暗号のための複数の第１キーを記憶していて、
前記暗号化手段は、前記記憶手段の識別情報に対応する前記第１キーを用いて、前記第１遷移コマンドを暗号化する、請求項９記載の書込み領域セキュリティシステム。
【請求項２１】
前記記憶手段は、当該記憶手段に記憶されるアプリケーションプログラムの識別情報を記憶し、
前記情報処理装置は、前記記憶手段に記憶された前記識別情報を前記サーバに送信する識別情報送信手段を含み、
前記サーバは、複数の前記識別情報に対応付けられた、前記第１遷移コマンドの暗号のための複数の第１キーを記憶していて、
前記暗号化手段は、受信した前記アプリケーションプログラムの識別情報に対応する前記第１キーを用いて、前記第１遷移コマンドを暗号化する、請求項９記載の書込み領域セキュリティシステム。
【請求項２２】
前記記憶手段および前記制御手段は、装着可能な記憶媒体に設けられた、請求項１記載の書込み領域セキュリティシステム。
【請求項２３】
所定の書込み領域を有する記憶手段とホストとを含む書込み領域セキュリティシステムにおいて用いられ、前記記憶手段に対する書込みと読出しを制御するメモリコントローラであって、
前記ホストからの読出し命令に応じて前記所定の書込み領域から読み出したデータが所定のフォーマットであるか否かを判定するフォーマット判定手段、および
前記フォーマット判定手段によって前記データが前記所定のフォーマットであると判定されたときのみ、前記データを前記ホストに出力する出力手段を備える、メモリコントローラ。
【請求項２４】
所定の書込み領域を有する記憶手段、前記記憶手段に対する書込みと読出しを制御する制御手段、および前記制御手段に接続されるホストを含む書込み領域セキュリティシステムにおけるセキュリティ方法であって、
前記制御手段が前記ホストからの読出し命令に応じて前記所定の書込み領域から読み出したデータは所定のフォーマットであるか否かを判定するステップ、および
前記データが所定のフォーマットであると判定されるときのみ、前記制御手段が前記ホストに前記データを出力するステップを含む、セキュリティ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、書込み領域セキュリティシステムに関し、特にたとえば書込み領域を不正利用から保護するための書込み領域セキュリティシステムに関する。また、この発明は、書込み領域セキュリティシステムに用いられるメモリコントローラおよびセキュリティ方法に関する。
【背景技術】
【０００２】
サーバからデータを携帯端末のＩＣカードにダウンロードする技術の一例が、たとえば２００２年９月２７日付けで出願公開された特開２００２−２８１１８１号公報（特許文献１）に開示されている。具体的には、特許文献１の技術では、ＩＣカードはファイル毎のアクセスキーで保護されたファイル構造を有しており、ＩＣカードにアクセスしてファイルの内容を読みかつ書き換える際のリード・アンド・ライト可能キーは、ホストサーバのみによって管理される。ＩＣカードに書かれている内容の追加・変更は、携帯端末を通してホストサーバとのオンライン接続後に、ホストサーバからの書き込み命令のみによって行うことが可能であり、つまり、命令に付加されて送られるリード・アンド・ライト可能キーがＩＣカード側で照合され、照合が一致する場合にのみ当該ファイルにアクセス可能にされる。また、携帯端末の有するリード可能キーによって、ＩＣカードに書き込んだデータが読み出される。
特許文献１の技術では、ＩＣカードに対する書き込みのセキュリティがファイルごとにリード・アンド・ライト可能キーによってかけられるだけであり、また、特許文献１には、リード・アンド・ライト可能キーによってセキュリティがかけられる領域と別の領域とに分けるというような発想がない。したがって、このセキュリティが破られてしまうと、ＩＣカードに大量のデータを書き込むことが可能になってしまう。また、書き込まれたデータが正規のデータであるかを確認する仕組みがないので、そのデータが不正に書き込まれたデータであっても、携帯端末で利用されてしまう。
発明の概要
それゆえに、この発明の主たる目的は、新規な、書込み領域セキュリティシステム、ならびにそれに用いられるメモリコントローラおよびセキュリティ方法を提供することである。
この発明の他の目的は、書き込み領域に意図しないデータが書き込まれても不正に利用されるのを防止することができる、書込み領域セキュリティシステム、ならびにそれに用いられるメモリコントローラおよびセキュリティ方法を提供することである。
この発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、この発明の理解を助けるために後述する実施形態との対応関係を示したものであって、この発明を何ら限定するものではない。
第１の発明は、所定の書込み領域を有する記憶手段、記憶手段の書込みと読出しを制御する制御手段、および制御手段に接続されるホストを含む、書込み領域セキュリティシステムである。ホストは、所定の書込み領域に記憶されたデータの読出し命令を制御手段に送信する命令送信手段を含む。制御手段は、読出し命令に応じて所定の書込み領域から読み出したデータが所定のフォーマットであるか否かを判定するフォーマット判定手段、およびフォーマット判定手段によってデータが所定のフォーマットであると判定されたときのみ、データをホストに出力する出力手段を含む。
第１の発明では、書込み領域セキュリティシステム（１０、１００）は、記憶手段（６４）、制御手段（６２）およびホスト（３４）を含む。記憶手段には、所定の書込み領域（２０６）が設けられる。制御手段は記憶手段に対する書込みおよび読出しを制御する。ホストは、このシステムを全体的に制御するホストコンピュータ、ホストＣＰＵまたはホストプロセッサ等であり、制御手段に接続され制御手段を制御することができる。ホストは、命令送信手段（Ｓ５０７）を含み、所定の書込み領域に記憶されたデータの読出し命令を制御手段に送信する。制御手段は、フォーマット判定手段（Ｓ６２１、Ｓ６２３）を含み、読出し命令に応じて所定の書込み領域から読み出したデータが、所定のフォーマットであるか否かを判定する。制御手段は、出力手段（Ｓ６２５）をさらに含み、フォーマット判定手段によって、読み出したデータが所定のフォーマットであると判定されたときのみ、当該読み出したデータをホストに出力する。
第１の発明によれば、所定の書込み領域から読み出したデータが所定のフォーマットであるか否かを判定し、所定のフォーマットを有するデータのみをホストに出力するようにした。したがって、所定のフォーマットを有しないデータが所定の書込み領域に書込まれていても、当該データはホストに出力されないので、意図しないデータが不正に使用されるのを防止できる。
第２の発明は、第１の発明に従属する書込み領域セキュリティシステムであって、記憶手段は、第１領域および第２領域を有していて、制御手段は、第１遷移コマンドに応じて遷移された書込み可能なモードにおいてデータを第１領域に書き込む第１書込み手段をさらに含み、フォーマット判定手段は、所定の書込み領域としての第２領域から読み出したデータに対してのみ、データが所定のフォーマットであるか否かを判定する。
第２の発明では、記憶手段には、第１領域（２０４）と第２領域（２０６）とが設けられる。制御手段は、第１書込み手段（Ｓ８３、Ｓ２６７）をさらに含み、第１遷移コマンドに応じて遷移された書込み可能なモードにおいて、データを第１領域に書き込む。また、フォーマット判定手段は、所定の書込み領域としての第２領域から読み出したデータに対してのみ、当該データが所定のフォーマットであるか否かを判定する。
第２の発明によれば、記憶手段のうちの所定の書込み領域に対してのみ、フォーマット判定によるセキュリティをかけることができるとともに、他の領域には書込み可能なモードへの遷移によってセキュリティのかけられる書込みを行うことができる。したがって、書込みの用途に応じて書込み領域を使い分けて、適切な書込みを行うことができる。
第３の発明は、第１の発明に従属する書込み領域セキュリティシステムであって、制御手段は、ホストから指定された読出しアドレスが所定の書込み領域のうちのアクセス可能な領域内であるか否かを判定するアドレス判定手段をさらに含み、アドレス判定手段によって読出しアドレスが領域内であると判定されるとき、フォーマット判定手段は、読み出したデータが所定のフォーマットであるか否かを判定する。
第３の発明では、制御手段は、アドレス判定手段（Ｓ６１９）をさらに含み、ホストから指定された読出しアドレスが所定の書込み領域のうちのアクセス可能な領域内であるか否かを判定する。読出しアドレスがアクセス可能な領域内であると判定されるときに、当該読み出したデータが所定のフォーマットであるか否かを判定する。
第３の発明によれば、適切な読出し指定が行われたデータに対してのみ、所定のフォーマットであるか否かを判定することができる。
第４の発明は、第１の発明に従属する書込み領域セキュリティシステムであって、フォーマット判定手段は、読み出したデータのパリティチェックによって判定を行う。
第４の発明では、読み出したデータのパリティチェックによって、所定のフォーマットであるか否かが判定される。したがって、正当なデータであるか否かを簡単にチェックすることができる。
第５の発明は、第１の発明に従属する書込み領域セキュリティシステムであって、制御手段は、読み出したデータが所定のフォーマットではないとフォーマット判定手段によって判定されるとき、イリーガルモードに遷移する。
第５の発明では、読み出したデータが所定のフォーマットではないと判定されるとき、制御手段がイリーガルモードに遷移する。したがって、所定の書込み領域からのデータの読出しが行われないようにすることができ、不正に書込まれたデータが使用されるのを防止できる。
第６の発明は、第１の発明に従属する書込み領域セキュリティシステムであって、ホストは、パリティビットの付加されたデータを生成する書込みデータ生成手段を含み、制御手段は、書込みデータ生成手段によって生成されたデータを所定の書込み領域に書き込む第２書込み手段を含む。
第６の発明では、ホストは、書込みデータ生成手段（Ｓ４０３）を含み、パリティビットの付加されたデータを生成する。たとえば、各バイトの先頭７ビットは、所定の書込み領域に書き込むために生成されたデータであり、最終ビットに先頭７ビットのパリティが追加される。制御手段は、第２書込み手段（Ｓ４０９）をさらに含み、生成されたパリティ付きデータを所定の書込み領域に書き込む。
第６の発明によれば、所定の書込み領域への書込みの際には、書込みデータをパリティビットの追加されたデータに変換してから、当該所定の領域に書き込むことができる。したがって、所定の書込み領域から読み出す際には、当該データは所定のフォーマットを有する正当なデータであると判定されて、ホストに出力されることとなる。
第７の発明は、第２の発明に従属する書込み領域セキュリティシステムであって、記憶手段は、第１領域および第２領域の境界データを記憶する。
第７の発明では、記憶手段には、第１領域および第２領域の境界データが記憶される。制御手段は、第１領域の境界データおよび第２領域の境界データをそれぞれ参照することによって、第１領域および第２領域のそれぞれを把握して、アクセスすることができる。
第８の発明は、第２の発明に従属する書込み領域セキュリティシステムであって、サーバおよびサーバからデータをダウンロードする情報処理装置を含んでいる。情報処理装置は、記憶手段、制御手段およびホストを含む。サーバは、記憶手段の第１領域に書込み可能なモードに制御手段を遷移させるための第１遷移コマンドを情報処理装置に送信する遷移コマンド送信手段、およびダウンロードするデータを情報処理装置に送信するデータ送信手段を含む。
第８の発明では、システム（１００）は、サーバ（１０２）および情報処理装置（１０）を含む。情報処理装置は、上述の記憶手段、制御手段およびホストを含んでいて、サーバからデータをダウンロードする。ダウンロードされたデータが書き込まれるのは、記憶手段の第１領域である。つまり、第１書込み手段が、第１遷移コマンドに応じて遷移された書込み可能なモードにおいて、データを第１領域に書き込む。サーバは、遷移コマンド送信手段（Ｓ３３、Ｓ３２３）を含み、第１領域に書込み可能なモードに制御手段を遷移させる第１遷移コマンドを情報処理装置に送信する。サーバは、データ送信手段（Ｓ６７、Ｓ３４１）をさらに含み、ダウンロードするデータを情報処理装置に送信する。
第８の発明によれば、第１領域に対して、サーバからの第１遷移コマンドに応じた書込み可能なモードへの遷移によって段階的なセキュリティのかけられるデータ書込みを行うことができ、一方、第２領域に対しては、フォーマット判定によるセキュリティをかけることができる。
第９の発明は、第８の発明に従属する書込み領域セキュリティシステムであって、サーバは、第１遷移コマンドを暗号化する暗号化手段をさらに含む。遷移コマンド送信手段は、暗号化手段によって暗号化された第１遷移コマンドを送信し、制御手段は、暗号化された第１遷移コマンドを復号化する復号化手段をさらに含む。
第９の発明では、サーバは暗号化手段（Ｓ３１）をさらに含み、第１遷移コマンドを暗号化する。この暗号化された第１遷移コマンドが遷移コマンド送信手段によって送信される。制御手段は復号化手段（Ｓ３７、Ｓ２２７）をさらに含み、暗号化された第１遷移コマンドを復号化する。
第９の発明によれば、第１領域に対する書込みについて、第１遷移コマンドを暗号化して送信することができるので、モード遷移に対するセキュリティ度を高めることができる。
第１０の発明は、第８の発明に従属する書込み領域セキュリティシステムであって、第１遷移コマンドは、ダウンロードするデータを書き込むために指定されたアドレスを含む。制御手段は、第１遷移コマンドに応じて第１領域に書込み可能なモードに遷移したとき、第１領域のうち指定されたアドレスのみ書込み可能にする書込み可能化手段をさらに含む。
第１０の発明では、第１遷移コマンドにおいて、データを書き込むためのアドレスを指定することができる。制御手段は書込み可能化手段（Ｓ４５、Ｓ２３７）をさらに含み、第１領域のうち指定されたアドレスのみ書込み可能にする。
第１０の発明によれば、第１遷移コマンドによって、書込み可能なモードに遷移させることができるとともに、当該コマンドで指定したアドレスのみを書込み可能にすることができる。
第１１の発明は、第１０の発明に従属する書込み領域セキュリティシステムであって、書込み可能化手段は、第１領域のうち指定されたアドレスから一定範囲を書込み可能にする。
第１１の発明では、第１遷移コマンドで書込み可能なモードに遷移させることができるとともに、第１領域のうち指定したアドレスから一定範囲を書込み可能にすることができる。
第１２の発明は、第９の発明に従属する書込み領域セキュリティシステムであって、制御手段は、第１領域に書込み可能なモードの１つ前の段階で遷移される通常よりセキュリティ度の高いセキュアモードにおいて、暗号化された第１遷移コマンドを復号化手段によって復号化する。
第１２の発明では、書込み可能なモードの１つ前に、通常よりもセキュリティ度の高いセキュアモードが設けられており、このセキュアモードにおいて、暗号化された第１遷移コマンドの復号化が行われる。
第１２の発明によれば、第１遷移コマンドの復号化をセキュアモードで行うことができるので、セキュリティ度をより高めることができる。
第１３の発明は、第９の発明に従属する書込み領域セキュリティシステムであって、サーバは、第１遷移コマンドの暗号のための第１キー、および第１キーと異なるダウンロードするデータの暗号のための第２キーを記憶する。暗号化手段は、第１キーを用いて第１遷移コマンドを暗号化する。データ送信手段は、第２キーを用いて暗号化されたダウンロードするデータを送信する。記憶手段は、第１キーおよび第２キーを記憶する。復号化手段は、暗号化された第１遷移コマンドを第１キーを用いて復号化する。第１書込み手段は、第１領域に書込み可能なモードにおいて、暗号化されたダウンロードするデータを第２キーを用いて復号化して第１領域に書き込む。
第１３の発明では、第１遷移コマンドの暗号のための第１キーと、第１キーとは異なり、ダウンロードするデータの暗号のための第２キーとが、サーバおよび記憶手段に記憶される。つまり、サーバと制御手段は、第１遷移コマンドのための共通キー（第１キー）と、ダウンロードするデータのための共通キー（第２キー）とを有している。サーバによって第１キーで暗号化されて送信された第１遷移コマンドは、制御手段によって第１キーで復号化され、制御手段は当該第１遷移コマンドによって書込み可能なモードに遷移する。また、サーバによって第２キーで暗号化されて送信されたダウンロードデータは、制御手段によって第２キーで復号化され、書込み可能モードにおいて第１領域に書込まれる。
第１３の発明によれば、モード遷移およびダウンロードデータに対して別々のセキュリティをかけることができ、セキュリティ度をより高めることができる。
第１４の発明は、第１３の発明に従属する書込み領域セキュリティシステムであって、サーバは、ダウンロードするデータのメッセージダイジェスト認証用の第３キーをさらに記憶する。データ送信手段は、第３キーを用いて生成された認証記号を付加したダウンロードするデータを、第２キーを用いて暗号化して、当該暗号化されたデータを送信する。記憶手段は、第３キーをさらに記憶する。制御手段は、第１領域に書込み可能なモードにおいて、暗号化されたデータを第２キーを用いて復号化する。第１書込み手段は、復号化したデータが第３キーを用いて認証されたとき、当該データを第１領域に書き込む。
第１４の発明では、ダウンロードするデータのメッセージダイジェスト認証用の第３キーが、サーバおよび記憶手段に記憶される。サーバは、第３キーを用いて生成された認証記号（ＭＩＣ）を付加したデータを、第２キーで暗号化して送信する。制御手段は、書込み可能モードにおいて、暗号化されたデータを第２キーで復号化する。そして、当該復号化したデータが第３キーを用いて認証されたときには、当該データが第１領域に書込まれる。
第１４の発明によれば、ダウンロードするデータについてメッセージダイジェスト認証を行うことができる。
第１５の発明は、第１４の発明に従属する書込み領域セキュリティシステムであって、第３キーは、第２キーの一部を置き換えることによって得られるキーである。
第１５の発明では、メッセージダイジェスト認証用の第３キーは、ダウンロードするデータの暗号のための第２キーの一部置換によって得られるキーである。したがって、第２キーと第３キーとで同一部分を共用するようにすれば、キーを記憶しておくための領域のサイズを抑制することができ、コストを低減することができる。
第１６の発明は、第１２の発明に従属する書込み領域セキュリティシステムであって、記憶手段は、暗号化された第１キーおよび第２キーを記憶している。制御手段は、セキュアモードに遷移したとき、暗号化された第１キーを復号化してＲＡＭに展開し、第１領域に書込み可能なモードに遷移したとき、暗号化された第２キーを復号化してＲＡＭに展開する。
第１６の発明では、記憶手段には、第１キーおよび第２キーが暗号化されて記憶されている。セキュアモードに遷移したときには、制御手段によって、第１キーが復号化されてＲＡＭに自動的に展開され、書込み可能なモードに遷移したときには、制御手段によって、第２キーが復号化されてＲＡＭに自動的に展開される。
第１６の発明によれば、モード遷移時に、当該モードに対応する第１キーまたは第２キーを復号化してＲＡＭに展開することができる。
第１７の発明は、第１６の発明に従属する書込み領域セキュリティシステムであって、制御手段は、セキュアモードに遷移するための第２遷移コマンドに応じて第１キーを展開し、第１遷移コマンドに応じて第２キーを展開する。
第１７の発明では、制御手段によって、遷移コマンドに応じてモードが遷移されるときに、第１キーまたは第２キーが復号化されて展開される。
第１７の発明によれば、遷移コマンドに応じて、モードに対応する第１キーまたは第２キーを復号化して展開することができる。
第１８の発明は、第８の発明に従属する書込み領域セキュリティシステムであって、ホストは、通常モードにおいて、制御手段に対するコマンドを、処理負担の比較的軽いアルゴリズムに従って暗号化する通常暗号化手段をさらに含む。
第１８の発明では、通常暗号化手段によって、通常モードにおいて制御手段に対して発行されるコマンドを処理負担の比較的軽いアルゴリズムに従って暗号化することができる。
第１９の発明は、第８の発明に従属する書込み領域セキュリティシステムであって、ホストは、制御手段に書込みを指示するための書込みコマンドを発行する書込み発行手段をさらに含み、制御手段は、第１領域に書込み可能なモードにおいて、書込みコマンドに応じて、ダウンロードするデータを第１領域に書き込む。
第１９の発明では、ホストは、書込み発行手段（Ｓ７３、Ｓ１４３）をさらに含み、書込みコマンドを制御手段に発行する。制御手段は、書込み可能なモードにおいて書込みコマンドに応じてデータの書込みを行う。
第１９の発明によれば、ホストからの書込み指示によって、サーバからダウンロードしたデータを第１領域に書き込むことができる。データの送信と書込みとを分けて処理するので、セキュリティ度を高めることができる。
第２０の発明は、第９の発明に従属する書込み領域セキュリティシステムであって、記憶手段は、当該記憶手段の識別情報を記憶している。情報処理装置は、記憶手段に記憶された識別情報をサーバに送信する識別情報送信手段を含む。サーバは、複数の識別情報に対応付けられた、第１遷移コマンドの暗号のための複数の第１キーを記憶している。暗号化手段は、記憶手段の識別情報に対応する第１キーを用いて、第１遷移コマンドを暗号化する。
第２０の発明では、記憶手段は、当該記憶手段の識別情報を記憶している。この識別情報は、識別情報送信手段（Ｓ５、Ｓ１０５）によってサーバに送信される。一方、サーバは、複数の識別情報に対応付けられた複数の第１キーを記憶している。つまり、第１遷移コマンドの暗号のための第１キーは、記憶手段ごとに準備されて、当該記憶手段およびサーバに記憶されている。暗号化手段によって、第１遷移コマンドは、受信した識別情報に対応する第１キーを用いて暗号化される。
第２０の発明によれば、記憶手段ごとの第１キーによって第１遷移コマンドを暗号化することができ、当該第１遷移コマンドによって制御手段を書込み可能なモードに遷移させることができるので、セキュリティ度を高めることができる。
第２１の発明は、第９の発明に従属する書込み領域セキュリティシステムであって、記憶手段は、当該記憶手段に記憶されるアプリケーションプログラムの識別情報を記憶する。情報処理装置は、記憶手段に記憶された識別情報をサーバに送信する識別情報送信手段を含む。サーバは、複数の識別情報に対応付けられた、第１遷移コマンドの暗号のための複数の第１キーを記憶している。暗号化手段は、受信したアプリケーションプログラムの識別情報に対応する第１キーを用いて、第１遷移コマンドを暗号化する。
第２１の発明では、記憶手段は、当該記憶手段に記憶されるアプリケーションプログラムの識別情報を記憶している。この識別情報は、識別情報送信手段（Ｓ１０５）によってサーバに送信される。一方、サーバは、複数の識別情報に対応付けられた複数の第１キーを記憶している。つまり、第１遷移コマンドの暗号のための第１キーは、アプリケーション（ゲーム）ごとに準備されて、記憶手段およびサーバに記憶されている。暗号化手段によって、第１遷移コマンドは、受信した識別情報に対応する第１キーを用いて暗号化される。
第２１の発明によれば、アプリケーションごとの第１キーによって第１遷移コマンドを暗号化することができ、当該第１遷移コマンドによって制御手段を書込み可能なモードに遷移させることができるので、セキュリティ度を高めることができる。
第２２の発明は、第１の発明に従属する書込み領域セキュリティシステムであって、記憶手段および制御手段は、装着可能な記憶媒体に設けられた。
第２２の発明では、記憶手段および制御手段が、当該システムに装着可能な記憶媒体（２８）に設けられる。したがって、記憶媒体に設けられた記憶手段の所定の書込み領域に対して、フォーマット判定によるセキュリティをかけることができる。
第２３の発明は、所定の書込み領域を有する記憶手段とホストとを含む書込み領域セキュリティシステムにおいて用いられ、記憶手段に対する書込みと読出しを制御するメモリコントローラである。メモリコントローラは、ホストからの読出し命令に応じて所定の書込み領域から読み出したデータが所定のフォーマットであるか否かを判定するフォーマット判定手段、およびフォーマット判定手段によってデータが所定のフォーマットであると判定されたときのみ、データをホストに出力する出力手段を備える。
第２３の発明では、メモリコントローラ（６２）は、記憶手段（６４）およびホスト（３４）を含む書込み領域セキュリティシステム（１０、１００）において使用される。メモリコントローラは、所定の書込み領域（２０６）を有する記憶手段に対する書込みと読出しを制御する。具体的には、メモリコントローラは、フォーマット判定手段（Ｓ６２１、Ｓ６２３）を含み、ホストからの読出し命令に応じて所定の書込み領域から読み出したデータが所定のフォーマットであるか否かを判定する。メモリコントローラは、出力手段（Ｓ６２５）をさらに含み、データが所定のフォーマットであると判定されたときのみ、当該データをホストに出力する。
第２３の発明によれば、上述の第１の発明のような、意図しないデータが書込まれても使用されない書込み領域セキュリティシステムを実現できる。
第２４の発明は、所定の書込み領域を有する記憶手段、記憶手段に対する書込みと読出しを制御する制御手段、および制御手段に接続されるホストを含む書込み領域セキュリティシステムにおけるセキュリティ方法である。セキュリティ方法は、制御手段がホストからの読出し命令に応じて所定の書込み領域から読み出したデータは所定のフォーマットであるか否かを判定するステップ、およびデータが所定のフォーマットであると判定されるときのみ、制御手段がホストにデータを出力するステップを含む。
第２４の発明では、セキュリティ方法は、記憶手段（６４）、制御手段（６２）およびホスト（３４）を含む書込み領域セキュリティシステム（１０、１００）において、所定の書込み領域（２０６）に対するセキュリティ方法である。この方法において、制御手段は、ホストからの読出し命令に応じて所定の書込み領域から読み出したデータが所定のフォーマットであるか否かを判定する（Ｓ６２１、Ｓ６２３）。そして、制御手段は、データが所定のフォーマットであると判定されるときのみ、当該データをホストに出力する（Ｓ６２５）。
第２４の発明によれば、上述の第１の発明のような書込み領域セキュリティシステムを実現できる。
この発明によれば、所定の書込み領域からデータを読み出す際に、当該データが所定のフォーマットであるか否かを判定して、当該データが所定のフォーマットであるときのみホストに出力するようにしたので、所定の書込み領域に意図しないデータが書き込まれた場合には、当該データはホストに出力されない。したがって、所定の書込み領域に意図しないデータが書込まれたとしても、当該データが不正に使用されるのを防止することができる。
この発明の上述の目的，その他の目的，特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【図面の簡単な説明】
【０００３】
図１はこの発明のセキュリティシステムの一実施例を示す図解図である。
図２は図１に示すゲーム装置を示す図解図である。
図３は図２に示すゲーム装置の電気的構成の一例を示すブロック図である。
図４は図３に示すフラッシュメモリのメモリマップの一例を示す図解図である。
図５は図３に示すメモリコントローラのモード遷移の概要を示す図解図である。
図６はダウンロードモードに遷移する場合のフラッシュメモリのメモリマップの変化を示す図解図である。
図７はバックアップモードに遷移する場合のフラッシュメモリのメモリマップの変化を示す図解図である。
図８は図４に示すインフォメーション領域のメモリマップの一例を示す図解図である。
図９はメモリコントローラの内部ＲＡＭのメモリマップの一例を示す図解図である。
図１０は図９に示すキー記憶領域のメモリマップの変化を示す図解図である。
図１１は図１に示すサーバのデータベースの一例を示す図解図である。
図１２はサーバのＲＡＭのメモリマップの一例を示す図解図である。
図１３はダウンロード処理時のゲーム装置のＲＡＭのメモリマップの一例を示す図解図である。
図１４はバックアップ処理時のゲーム装置のＲＡＭのメモリマップの一例を示す図解図である。
図１５はバックアップ領域に書き込まれるパリティ付きデータの一例を示す図解図である。
図１６はダウンロード処理時のシステムの動作の一例の一部を示すフロー図である。
図１７は図１６の続きの一部を示すフロー図である。
図１８は図１７の続きの一部を示すフロー図である。
図１９は図１８の続きを示すフロー図である。
図２０はダウンロード処理時のゲーム装置の動作の一例の一部を示すフロー図である。
図２１は図２０の続きの一部を示すフロー図である。
図２２は図２１の続きを示すフロー図である。
図２３はダウンロード処理時のメモリコントローラの動作の一例の一部を示すフロー図である。
図２４は図２３の続きの一部を示すフロー図である。
図２５は図２４の続きの一部を示すフロー図である。
図２６は図２５の続きを示すフロー図である。
図２７はダウンロード処理時のサーバの動作の一例の一部を示すフロー図である。
図２８は図２７の続きの一部を示すフロー図である。
図２９は図２８の続きを示すフロー図である。
図３０はバックアップ書込み時のゲーム装置の動作の一例を示すフロー図である。
図３１はバックアップ読出し時のゲーム装置の動作の一例を示すフロー図である。
図３２はバックアップモードのメモリコントローラの動作の一例の一部を示すフロー図である。
図３３は図３２の続きを示すフロー図である。
【発明を実施するための最良の形態】
【０００４】
図１を参照して、この発明の実施例のセキュリティシステム（以下、単に「システム」という。）１００は、情報処理装置１０およびサーバ１０２を含む。情報処理装置１０は、サーバ１０２からデータをダウンロードして、当該データを所定の記憶領域に保存する。この実施例のシステム１００は、ダウンロードセキュリティシステムであり、ダウンロードしたデータを書き込むための所定の記憶領域が不正なダウンロードによって利用されるのを防止しようとするものである。また、情報処理装置１０は、バックアップデータのための書込み領域セキュリティシステムとしても機能し、バックアップデータを書き込むための所定の記憶領域が不正利用されるのを防止するものでもある。なお、システム１００がバックアップデータのための書込み領域セキュリティシステムとして機能する場合もある。
なお、情報処理装置１０は、この実施例では携帯型ゲーム装置の形態で実現されるが、他の実施例では、携帯情報端末、携帯電話機、パーソナルコンピュータまたは据え置き型ゲーム装置等のような他の形態のコンピュータであってよい。また、サーバ１０２はコンピュータであり、図示は省略するが、ＣＰＵ、ＲＡＭ、ＲＯＭ、ＨＤＤ、通信装置等を備えている。
情報処理装置すなわちゲーム装置１０は、アクセスポイント１０４およびネットワーク１０６を介してサーバ１０２に接続可能である。ネットワーク１０６は、たとえば、ワイドエリアネットワーク（ＷＡＮ）やインターネット等であり、あるいはローカルエリアネットワーク（ＬＡＮ）であってもよい。ゲーム装置１０は、サーバ１０２からデータをダウンロードする際には、無線（または有線）によってアクセスポイント１０４に接続し、当該アクセスポイント１０４を介してネットワーク１０６上のサーバ１０２と通信する。なお、ゲーム装置１０は、ユーザの入力またはリスト選択等によってアクセスポイント１０４およびサーバ１０２のＩＰアドレスを取得する。
図２を参照して、ゲーム装置１０は、第１の液晶表示器（ＬＣＤ）１２および第２のＬＣＤ１４を含む。ＬＣＤ１２およびＬＣＤ１４は、所定の配置位置となるようにハウジング１６に収納される。この実施例では、ハウジング１６は、上側ハウジング１６ａと下側ハウジング１６ｂとによって構成され、ＬＣＤ１２は上側ハウジング１６ａに収納され、ＬＣＤ１４は下側ハウジング１６ｂに収納される。したがって、ＬＣＤ１２とＬＣＤ１４とは縦（上下）に並ぶように近接して配置される。
なお、この実施例では、表示器としてＬＣＤを用いるようにしてあるが、ＬＣＤに代えて、ＥＬ（Ｅｌｅｃｔｒｏｎｉｃ  Ｌｕｍｉｎｅｓｃｅｎｃｅ）ディスプレイやプラズマディスプレイを用いるようにしてもよい。
図２からも分かるように、上側ハウジング１６ａは、ＬＣＤ１２の平面形状よりも少し大きな平面形状を有し、一方主面からＬＣＤ１２の表示面を露出するように開口部が形成される。一方、下側ハウジング１６ｂの平面形状およびサイズも上側ハウジング１６ａと同等に選ばれ、横方向の略中央部にＬＣＤ１４の表示面を露出するように開口部が形成される。下側ハウジング１６ｂの右側面には電源スイッチ１８が設けられる。
また、上側ハウジング１６ａには、ＬＣＤ１２を挟んで左右に、スピーカ３６ａおよび３６ｂ（図３参照）のための音抜き孔２０ａおよび２０ｂが形成される。
上側ハウジング１６ａと下側ハウジング１６ｂとは、上側ハウジング１６ａの下辺（下端）と下側ハウジング１６ｂの上辺（上端）の一部とが回動可能に連結されている。したがって、たとえば、ゲームをプレイしない場合には、ＬＣＤ１２の表示面とＬＣＤ１４の表示面とが対面するように、上側ハウジング１６ａを回動させて折りたたんでおけば、ＬＣＤ１２の表示面およびＬＣＤ１４の表示面に傷がつくなどの破損を防止することができる。ただし、上側ハウジング１６ａと下側ハウジング１６ｂとは、回動可能に連結せずに、それらを一体的（固定的）に設けたハウジング１６を形成するようにしてもよい。
そして、上側ハウジング１６ａと下側ハウジング１６ｂとの連結部の中央には、マイク（図示せず）のためのマイク孔２０ｃが形成される。マイクから取り込んだ音、音声または息などによる音声信号に基づいてゲーム処理を行うことが可能である。
また、下側ハウジング１６ｂには、操作スイッチ２２（２２ａ，２２ｂ，２２ｃ，２２ｄ，２２ｅ，２２Ｌおよび２２Ｒ）が設けられる。操作スイッチ２２は、方向指示スイッチ（十字スイッチ）２２ａ，スタートスイッチ２２ｂ、セレクトスイッチ２２ｃ、動作スイッチ（Ａボタン）２２ｄ、動作スイッチ（Ｂボタン）２２ｅ、動作スイッチ（Ｘボタン）２２ｆ、動作スイッチ（Ｙボタン）２２ｇ、動作スイッチ（Ｌボタン）２２Ｌおよび動作スイッチ（Ｒボタン）２２Ｒを含む。
スイッチ２２ａは、下側ハウジング１６ｂの一方主面であり、ＬＣＤ１４の左側に配置される。その他のスイッチ２２ｂ−２２ｇは、下側ハウジング１６ｂの一方主面であり、ＬＣＤ１４の右側に配置される。さらに、動作スイッチ２２Ｌおよび２２Ｒは、それぞれ下側ハウジング１６ｂの上端面の左右角部に配置される。なお、動作スイッチ２２Ｌおよび２２Ｒは下側ハウジング１６ｂの背面に設けられており、図２のような正面視では連結部の背後に隠れているので破線で示されている。
方向指示スイッチ２２ａは、ディジタルジョイスティックとして機能し、４つの押圧部の１つを操作することによって、ユーザないしプレイヤによって操作可能なプレイヤオブジェクト（またはプレイヤキャラクタ）の進行方向（移動方向）を指示したり、カーソルの進行方向を指示したりする等のために用いられる。また、各押圧部には、特定の役割を割り当てることができ、４つの押圧部の１つを操作することによって、割り当てられた役割を指示（指定）することができる。
スタートスイッチ２２ｂは、プッシュボタンで構成され、ゲームを開始（再開）したり、一時停止（Ｐａｕｓｅ）したりする等に用いられる。また、セレクトスイッチ２２ｃは、プッシュボタンで構成され、ゲームモードの選択等に用いられる。
動作スイッチ２２ｄすなわちＡボタンは、プッシュボタンで構成され、方向指示以外の動作、すなわち、プレイヤオブジェクトに打つ（パンチ）、投げる、つかむ（取得）、乗る、ジャンプするなどの任意のアクションをさせることができる。たとえば、アクションゲームにおいては、ジャンプ、パンチ、武器を動かす等を指示することができる。また、ロールプレイングゲーム（ＲＰＧ）やシミュレーションＲＰＧにおいては、アイテムの取得、武器やコマンドの選択および決定等を指示することができる。動作スイッチ２２ｅすなわちＢボタンは、プッシュボタンで構成され、セレクトスイッチ２２ｃで選択したゲームモードの変更やＡボタン２２ｄで決定したアクションの取り消し等のために用いられる。
動作スイッチ２２ｆすなわちＸボタン、および動作スイッチ２２ｇすなわちＹボタンは、プッシュボタンで構成され、Ａボタン２２ｄとＢボタン２２ｅだけでは、ゲーム進行ができないときに、補助的な操作に用いられる。ただし、Ｘボタン２２ｆおよびＹボタン２２ｇは、Ａボタン２２ｄおよびＢボタン２２ｅと同様の操作に用いることも可能である。もちろん、ゲームプレイにおいてＸボタン２２ｆとＹボタン２２ｇとを必ずしも使用しなくてよい。
動作スイッチ２２Ｌ（左押しボタン）および動作スイッチ２２Ｒ（右押しボタン）は、プッシュボタンで構成され、左押しボタン（Ｌボタン）２２Ｌおよび右押しボタン（Ｒボタン）２２Ｒは、Ａボタン２２ｄおよびＢボタン２２ｅと同様の操作に用いることができ、また、Ａボタン２２ｄおよびＢボタン２２ｅの補助的な操作に用いることができる。さらに、Ｌボタン２２ＬおよびＲボタン２２Ｒは、方向スイッチ２２ａ，Ａボタン２２ｄ，Ｂボタン２２ｅ，Ｘボタン２２ｆ，Ｙボタン２２ｇに割り当てられた役割を、他の役割に変更することができる。
また、ＬＣＤ１４の上面には、タッチパネル２４が装着される。タッチパネル２４としては、たとえば、抵抗膜方式、光学式（赤外線方式）および静電容量結合式のいずれかの種類のものを用いることができる。また、タッチパネル２４は、その上面をスティック２６ないしはペン（スタイラスペン）或いは指（以下、これらを「スティック２６等」という場合がある。）で、押圧したり、撫でたり、触れたりすることにより操作（タッチ入力）すると、スティック２６等の操作位置の座標を検出して、当該検出座標に対応する座標データを出力する。
なお、この実施例では、ＬＣＤ１４（ＬＣＤ１２も同じ、または略同じ。）の表示面の解像度は２５６ｄｏｔ×１９２ｄｏｔである。タッチパネル２４の検出精度も表示画面に対応して２５６ｄｏｔ×１９２ｄｏｔとしてあるが、タッチパネル２４の検出精度は表示画面の解像度よりも低くてもよく、高くてもよい。
ＬＣＤ１２およびＬＣＤ１４には異なるゲーム画面を表示することができる。たとえば、レースゲームでは一方のＬＣＤに運転席からの視点による画面を表示し、他方のＬＣＤにレース（コース）全体の画面を表示することができる。また、ＲＰＧでは、一方のＬＣＤにマップやプレイヤオブジェクト等のキャラクタを表示し、他方のＬＣＤにプレイヤオブジェクトが所有するアイテムを表示することができる。さらに、一方のＬＣＤにプレイヤオブジェクトやノンプレイヤオブジェクトなどを含むゲーム画面を表示し、他方のＬＣＤに当該プレイヤオブジェクトやノンプレイヤオブジェクトに関する情報を含む他のゲーム画面または当該プレイヤオブジェクトを操作するための操作画面を表示することができる。さらには、２つのＬＣＤ１２およびＬＣＤ１４を合わせて１つの画面として用いることにより、プレイヤオブジェクトが倒さなければならない巨大な怪物（敵オブジェクト）を表示することもできる。
したがって、プレイヤはスティック２６等でタッチパネル２４を操作することにより、ＬＣＤ１４の画面に表示されるプレイヤオブジェクト、敵オブジェクト、アイテムオブジェクト、操作オブジェクトなどの画像を指示（操作）したり、コマンドを選択（入力）したりすることができる。また、仮想ゲーム空間（３次元ゲーム空間）に設けられる仮想カメラ（視点）の方向（視線の向き）を変化させたり、ゲーム画面（マップ）のスクロール（徐々に移動表示）方向を指示したりすることもできる。
なお、ゲームの種類によっては、タッチパネル２４を用いることにより、その他の入力指示も可能である。たとえば、ＬＣＤ１４上のタッチパネル２４において文字，数字，記号等を手書き入力することができる。
このように、ゲーム装置１０は、２画面分の表示部となるＬＣＤ１２およびＬＣＤ１４を有し、いずれか一方（この実施例では、ＬＣＤ１４）の上面にタッチパネル２４が設けられるので、２画面（１２，１４）と２系統の操作部（２２，２４）とを有する構成になっている。
なお、この実施例では、第１のＬＣＤ１２と第２のＬＣＤ１４とを縦方向に並べて配置するようにしているが、２つのＬＣＤの配置は適宜に変更され得る。他の実施例では、第１のＬＣＤ１２と第２のＬＣＤ１４とを横方向に並べて配置するようにしてもよい。
また、この実施例では、２つのＬＣＤを設けるようにしていたが、表示手段としてのＬＣＤの数は適宜変更され得る。他の実施例では、縦長形状の１つのＬＣＤを設けて、表示領域を上下に分けて、２つのゲーム画面をそれぞれの表示領域に表示するようにしてもよいし、あるいは、横長形状の１つのＬＣＤを設けて、表示領域を左右に分割し、２つゲーム画面をそれぞれの表示領域に表示するようにしてもよい。
また、スティック２６は、たとえば下側ハウジング１６ｂに設けられる収納部（図示せず）に収納することができ、必要に応じて取り出される。ただし、スティック２６を設けない場合には、その収納部も設ける必要はない。
さらに、ゲーム装置１０はメモリカード（またはカートリッジ）２８を含み、このメモリカード２８はゲーム装置１０に装着可能な記憶媒体であり、下側ハウジング１６ｂの上端面に設けられる挿入部３０（図２では点線で示す）に挿入される。挿入部３０の奥部には、メモリカード２８の挿入方向先端部に設けられるコネクタ６０と接合するためのコネクタ３２（図３参照）が設けられており、したがって、メモリカード２８が挿入部３０に挿入されると、コネクタ同士が接合され、ゲーム装置１０のＣＰＵ３４（図３参照）がメモリカード２８にアクセス可能となる。
なお、図１では省略するが、たとえば、下側ハウジング１６ｂにおいて、その裏面には電池収容ボックスが設けられ、下端面（底面）には、音量スイッチおよびイヤフォンジャックなどが設けられ、上端面（天面）には、外部拡張コネクタなどが設けられる。
図３はゲーム装置１０の電気的な構成を示すブロック図である。この図３を参照して、ゲーム装置１０は電子回路基板３８を含み、この電子回路基板３８には上述のＣＰＵ３４等の回路コンポーネントが実装される。ＣＰＵ３４は、バス４０を介して前述のコネクタ３２に接続されるととともに、ＲＡＭ４２、第１のグラフィック処理ユニット（ＧＰＵ）４４、第２のＧＰＵ４６、入出力インターフェース回路（以下、「Ｉ／Ｆ回路」という。）４８、ＬＣＤコントローラ５０および無線通信部５８に接続される。
コネクタ３２には、上述したように、メモリカード２８が着脱自在に接続される。メモリカード２８は、メモリコントローラ６２およびフラッシュメモリ６４を含み、メモリコントローラ６２はバスを介してフラッシュメモリ６４およびコネクタ６０と接続される。したがって、上述したように、ＣＰＵ３４は、メモリコントローラ６２を介してフラッシュメモリ６４にアクセスすることができる。
メモリコントローラ６２は、フラッシュメモリ６４の書込みおよび読出しを制御する制御装置である。メモリコントローラ６６は内部メモリとしてＲＡＭ６６を有する。
フラッシュメモリ６４は、ゲーム装置１０で実行すべきゲームのためのゲームプログラム、画像データ（文字やオブジェクトの画像、背景画像、アイテム画像、アイコン（ボタン）画像、メッセージ画像など）およびゲームに必要な音（音楽）のデータ（音データ）等を予め記憶する。また、後述するように、フラッシュメモリ６４には、ダウンロードしたデータを保存するための領域や、そのゲームの途中データやゲームの結果データなどのバックアップデータを記憶するための領域が設けられている。また、この実施例ではフラッシュメモリ６４としてＮＡＮＤ型フラッシュメモリが適用される。他の実施例では、他の不揮発性メモリが適用されてよい。
ゲーム装置１０のＲＡＭ４２は、バッファメモリやワーキングメモリとして使用される。つまり、ＣＰＵ３４は、メモリカード２８に記憶されたゲームプログラム、画像データおよび音データ等をＲＡＭ４２にロードし、ロードしたゲームプログラムを実行する。また、ＣＰＵ３４は、ゲームの進行に応じて一時的に生成するデータ（ゲームデータやフラグデータ）をＲＡＭ４２に記憶しつつゲーム処理を実行する。
なお、ゲームプログラム、画像データおよび音データ等は、メモリカード２８から一度に全部または部分的にかつ順次的に読み出され、ＲＡＭ４２に記憶される。
ただし、ゲーム装置１０ではゲーム以外の他のアプリケーションが実行されてよく、この場合、メモリカード２８のフラッシュメモリ６４には、当該アプリケーションについてのプログラムおよび画像データ等の必要なデータが記憶されてよい。また、必要に応じて、音（音楽）データが記憶されてもよい。
ＧＰＵ４４およびＧＰＵ４６は、それぞれ、描画手段の一部を形成し、たとえばシングルチップＡＳＩＣで構成され、ＣＰＵ３４からのグラフィックスコマンド（作画命令）を受け、そのグラフィックスコマンドに従って画像データを生成する。ただし、ＣＰＵ３４は、グラフィックスコマンドに加えて、画像データの生成に必要な画像生成プログラム（ゲームプログラムに含まれる。）をＧＰＵ４４およびＧＰＵ４６のそれぞれに与える。
また、ＧＰＵ４４には、第１のビデオＲＡＭ（以下、「ＶＲＡＭ」という。）５２が接続され、ＧＰＵ４６には、第２のＶＲＡＭ５４が接続される。ＧＰＵ４４およびＧＰＵ４６が作画コマンドを実行するにあたって必要なデータ（画像データ：ポリゴンやテクスチャ等のデータ）は、ＧＰＵ４４およびＧＰＵ４６が、それぞれ、第１のＶＲＡＭ５２および第２のＶＲＡＭ５４にアクセスして取得する。
なお、ＣＰＵ３４は、描画に必要な画像データをＧＰＵ４４およびＧＰＵ４６を介して第１のＶＲＡＭ５２および第２のＶＲＡＭ５４に書き込む。ＧＰＵ４４はＶＲＡＭ５２にアクセスして描画のための画像データを作成し、その画像データをＶＲＡＭ５２の描画バッファに記憶する。ＧＰＵ４６はＶＲＡＭ５４にアクセスして描画のための画像データを作成し、その画像データをＶＲＡＭ５４の描画バッファに記憶する。描画バッファとしてはフレームバッファまたはラインバッファ等が採用されてよい。
ＶＲＡＭ５２およびＶＲＡＭ５４は、ＬＣＤコントローラ５０に接続される。ＬＣＤコントローラ５０はレジスタ５６を含み、レジスタ５６はたとえば１ビットで構成され、ＣＰＵ３４の指示によって「０」または「１」の値（データ値）を記憶する。ＬＣＤコントローラ５０は、レジスタ５６のデータ値が「０」である場合には、ＧＰＵ４４によって作成された画像データをＬＣＤ１２に出力し、ＧＰＵ４６によって作成された画像データをＬＣＤ１４に出力する。また、ＬＣＤコントローラ５０は、レジスタ５６のデータ値が「１」である場合には、ＧＰＵ４４によって作成された画像データをＬＣＤ１４に出力し、ＧＰＵ４６によって作成された画像データをＬＣＤ１２に出力する。
なお、ＬＣＤコントローラ５０は、ＶＲＡＭ５２およびＶＲＡＭ５４から直接画像データを読み出したり、ＧＰＵ４４およびＧＰＵ４６を介してＶＲＡＭ５２およびＶＲＡＭ５４から画像データを読み出したりする。
また、ＶＲＡＭ５２およびＶＲＡＭ５４はＲＡＭ４２に設けられてもよいし、あるいはその描画バッファおよびＺバッファがＲＡＭ４２に設けられてもよい。
Ｉ／Ｆ回路４８には、操作スイッチ２２，タッチパネル２４およびスピーカ３６ａ，３６ｂが接続される。ここで、操作スイッチ２２は、上述したスイッチ２２ａ，２２ｂ，２２ｃ，２２ｄ，２２ｅ，２２ｇ，２２Ｌおよび２２Ｒであり、操作スイッチ２２が操作されると、対応する操作信号（操作データ）がＩ／Ｆ回路４８を介してＣＰＵ３４に入力される。また、タッチパネル２４からの座標データがＩ／Ｆ回路４８を介してＣＰＵ３４に入力される。さらに、ＣＰＵ３４は、ゲーム音楽（ＢＧＭ）、効果音またはゲームキャラクタの音声（擬制音）などのゲームに必要な音データをＲＡＭ４２から読み出し、Ｉ／Ｆ回路４８を介してスピーカ３６ａ，３６ｂから当該音を出力する。
無線通信部５８は他のゲーム装置１０や通信機器等との間で無線によってデータを送受信するための通信手段である。なお、ゲーム装置１０が送受信する微弱電波は、電波法による規制のかからない強度に設定されている。ＣＰＵ３４がゲームデータやコマンドなどのデータを無線通信部５８に与えると、無線通信部５８は、相手方へのデータを無線信号に変調してアンテナから送信する。また、無線通信部５８は、相手方からの無線信号を同じアンテナで受信してデータに復調し、当該データをＣＰＵ３４に与える。この無線通信部５８を用いて、ゲーム装置１０は、他のゲーム装置１０との間でデータを通信しつつ通信ゲームを実行することが可能である。また、ゲーム装置１０は、上述のように、無線通信部５８を介してアクセスポイント１０４およびネットワーク１０６に接続することができ、ネットワーク１０６上のサーバ１０２からプログラムやデータをダウンロードしたり、ネットワーク１０６を介して他のゲーム装置１０と通信したりすることが可能である。
このシステム１０では、サーバ１０２からダウンロードしたデータを書き込むための所定の領域がメモリカード２８のフラッシュメモリ６４に設けられる。また、ゲーム（アプリケーション）の実行中に生成されるバックアップデータを書き込むための所定の領域がフラッシュメモリ６４に設けられる。図４にフラッシュメモリ６４のメモリマップの一例が示される。フラッシュメモリ６４にはインフォメーション領域２００、ゲーム領域２０２、ダウンロード領域２０４およびバックアップ領域２０６等が設けられる。なお、図４はメモリマップの一部を示しており、他の領域が設けられ得る。
ダウンロード領域２０４がサーバ１０２からダウンロードしたデータを書き込むための領域であり、バックアップ領域２０６がバックアップデータを書き込むための領域である。なお、インフォメーション領域２００には、後述の図８のように、フラッシュメモリ６４のヘッダ情報や所定のデータが予め記憶される。また、ゲーム領域２０２には、ゲームプログラムやデータが予め記憶される。ゲームプログラムは、たとえば、ゲーム処理プログラム、ダウンロード処理プログラム、およびバックアップ処理プログラムなどを含んでいる。
このフラッシュメモリ６４に設けられた書込み領域に対して段階的なセキュリティをかけることができるように、メモリコントローラ６２の動作をモードに応じて制御するようにしている。各モードではメモリコントローラ６２の実行可能な動作が限られ、必要な動作を実行するためにはモードを切替える必要がある。メモリコントローラ６２のモード遷移の概要が図５に示されている。メモリコントローラ６２は、この実施例では、ゲームモード、ＤＬ（Ｄｏｗｎｌｏａｄ）セキュアモード、ダウンロードモードおよびバックアップモード等を有する。メモリコントローラ６２は、外部（ホストであるＣＰＵ３４、またはネットワーク１０６上のサーバ１０２）から与えられる各種の遷移コマンドに応じて、そのモードを遷移させるようになっている。なお、ＣＰＵ３４は、メモリカード２８に記憶されるアプリケーションプログラム（ゲーム装置１０内に記憶されるプログラムでもよい）を実行することにより遷移コマンドを発行する。
ゲームモードは、通常のモードである。メモリコントローラ６２は、たとえばゲーム装置１０の電源がオンされたときに、当該ゲーム装置１０から電力が供給されてメモリコントローラ６２が起動する。メモリコントローラ６２は、起動すると、このゲームモードに置かれ、ゲーム実行中も基本的には（より具体的には、フラッシュメモリにデータを書き込む必要がないときには）このゲームモードにある。ゲーム実行中はフラッシュメモリ６４からプログラムおよびデータを必要に応じて読み出す必要があるので、このゲームモードでは、フラッシュメモリ６４からの読出しが高速に行えるようにするのが望ましい。このため、このゲームモードでは、メモリコントローラ６２に与えられるコマンドは、暗号化されなくてもよいが、コマンドを暗号化する場合でも、処理負担の軽いアルゴリズムで暗号化する程度のセキュリティがかけられればよい。なお、ゲームモードでは、たとえホスト（ＣＰＵ３４）がフラッシュメモリ６４へのデータ書込みコマンドを発行したとしても、メモリコントローラ６２は当該コマンドを受け付けないため、フラッシュメモリ６４にデータを書き込むことはできない。
ゲーム実行中にプレイヤの選択またはプログラムに従ってサーバ１０２からデータをダウンロードする場合のために、フラッシュメモリ６４にはダウンロードしたデータを書き込むためのダウンロード領域２０４が設けられている。ダウンロードする場合、フラッシュメモリ６４を不正アクセスから保護するために、セキュリティ度を高める必要がある。そこで、メモリコントローラ６２を、フラッシュメモリ６４へのアクセスが容易なゲームモードから、セキュリティ度の高いモードに遷移させる。
また、ダウンロードデータを書き込むことのできるダウンロードモードにゲームモードからいきなり遷移させるのではなく、この実施例では、ダウンロードの際に２段階のセキュリティをかけることができるように、別のモード、すなわち、ＤＬセキュアモードを介在させるようにしている。
具体的には、ゲームモードにおいてｇＣＨＧ＿ＤＬ＿ＭＯＤＥコマンドがメモリコントローラ６２に与えられると、メモリコントローラ６２はゲームモードからＤＬセキュアモードに遷移する。なお、ｇＣＨＧ＿ＤＬ＿ＭＯＤＥコマンドは、ゲームモードからＤＬセキュアモードへ遷移させるための遷移コマンドであり、ゲーム装置１０のＣＰＵ３４によって発行される。
ＤＬセキュアモードは、ダウンロードの際のセキュリティ度を高めるために設けられたモードである。このＤＬセキュアモードで、メモリコントローラ６２に与えられるコマンドは暗号化される。具体的には、暗号化されたｄｓＣＨＧ＿ＭＯＤＥコマンドがメモリコントローラ６２に与えられる。なお、ｄｓＣＨＧ＿ＭＯＤＥコマンドは、ＤＬセキュアモードからダウンロードモードに遷移するための遷移コマンドである。このダウンロードモードへの遷移コマンドは、ゲーム装置１０のＣＰＵ３４から発行されるのではなく、サーバ１０２で暗号化されてサーバ１０２から送信される。なお、ゲーム装置１０のＣＰＵ３４はｄｓＣＨＧ＿ＭＯＤＥコマンドを生成することができない。なぜなら、ｄｓＣＨＧ＿ＭＯＤＥコマンドは暗号化された状態でメモリコントローラ６２に与えられるべきものであり、ゲーム装置１０のＣＰＵ３４は当該暗号化のための鍵データを有しないためである。メモリコントローラ６２は、ＤＬセキュアモードで受信したコマンドを復号化し、そのコマンドがｄｓＣＨＧ＿ＭＯＤＥコマンドであれば、ダウンロードモードに遷移する。この遷移コマンドの暗号のために、サーバ１０２およびメモリカード２８は共通キーを記憶している。
このように、ＤＬセキュアモードからダウンロードモードへの遷移に対してセキュリティをかけることができる。また、ＤＬセキュアモードへの遷移コマンドをホストであるＣＰＵ３４から発行し、ダウンロードモードへの遷移コマンドをサーバ１０２から発行するようにしており、つまり、ＣＰＵ３４とサーバ１０２の協働によってダウンロードモードへの遷移を可能にしているので、さらにセキュリティ度を高めることができる。
ダウンロードモードでは、サーバからダウンロードしたデータがダウンロード領域２０４に書き込まれることとなる。ダウンロードされるデータはサーバで暗号化されて送信され、受信したデータはメモリコントローラ６２によって復号化される。このように、ダウンロードするデータに対してセキュリティをかけることができる。また、ＤＬセキュアモードでの暗号のキーとダウンロードモードでの暗号のキーとを変えるので、２段階のセキュリティが存在することとなり、遷移コマンドとデータとに別々のセキュリティをかけることができる。
ダウンロードデータは、上述のようにサーバで暗号化されており、ＣＰＵ３４は、当該暗号化されたデータを受信するとメモリコントローラ６２に転送する。このデータの書込みのために、ＣＰＵ３４は、書込みコマンド（ｄＷＲ＿ＰＡＧＥコマンド）を発行する。当該書込みコマンドに応じて、メモリコントローラ６２は、データの復号化など、データを書き込むための処理を実行する。受信したデータが正当なデータであることが認証されれば、メモリコントローラ６２は、当該データをダウンロード領域２０４に書き込む。このダウンロード領域２０４への書込みは、ダウンロードモードにおいてのみ可能である。メモリコントローラ６２は、ＣＰＵ３４の発行する書込みコマンドをダウンロードモードにおいてのみ受け付けるようになっており、したがって、他のモードではダウンロード領域２０４への書込みは行えない。
所定のデータを書き込んだ後に、ｄｌＣＨＧ＿ＭＯＤＥコマンドに応じてメモリコントローラ６２はゲームモードに遷移する。なお、ｄｌＣＨＧ＿ＭＯＤＥコマンドは、タウンロードモードからゲームモードに遷移させるための遷移コマンドであり、ＣＰＵ３４から発行される。
このようなダウンロードの場合のモードの遷移において、フラッシュメモリ６４に対するアクセスの可否状態が変化される。図６には、ダウンロードモードに遷移する場合のフラッシュメモリ６４のメモリマップの変化が示されている。まず、ゲームモードにおいては、ゲーム領域２０２およびダウンロード領域２０４は読出しのみ可能にされている。そして、ｇＣＨＧ＿ＤＬ＿ＭＯＤＥコマンドに応じてＤＬセキュアモードに遷移したとき、全領域が読出しおよび書込みの不可能な状態にされる。このようなフラッシュメモリ６４の全領域へのアクセスが不可能にされた状態で、暗号化されたｄｓＣＨＧ＿ＭＯＤＥコマンドの処理が行われることとなる。そして、ｄｓＣＨＧ＿ＭＯＤＥコマンドに応じてダウンロードモードに遷移したときには、ダウンロード領域２０２がアクセス可能な状態にされる。しかも、この実施例では、ダウンロード領域２０２のうち、ｄｓＣＨＧ＿ＭＯＤＥコマンドで指定されたブロックのみがアクセス可能にされる。このように、モードの遷移に応じて、フラッシュメモリ６４の各領域に対して、読出しおよび書込み可能な状態を変化させ、つまり、モードごとにメモリマップを変化させるようにしたので、セキュリティ度を高めることができる。
一方、ゲーム実行中にはＣＰＵ３４はゲームのバックアップデータを生成する。このバックアップデータを書き込むためのバックアップ領域２０６がフラッシュメモリ６４に設けられている。バックアップ領域２０６への書込み自体は本来ローカルなものであるが、このバックアップ領域２０６に対して、たとえばネットワーク１０６上から不正に入手したプログラムデータが書き込まれてしまうおそれがある。このバックアップ領域２０６の不正利用を防止するために、バックアップ領域２０６のセキュリティ度を上げる。
図５に示すように、バックアップ領域２０６に対する書込みまたは読出しのために、メモリコントローラ６２は、ｇＣＨＧ＿ＢＫ＿ＭＯＤＥコマンドに応じて、ゲームモードからバックアップモードに遷移される。なお、このｇＣＨＧ＿ＢＫ＿ＭＯＤＥコマンドは、ゲームモードからバックアップモードに遷移させるための遷移コマンドであり、ホストであるＣＰＵ３４がメモリコントローラ６２に発行する。また、ｂＣＨＧ＿ＭＯＤＥコマンドに応じて、メモリコントローラ６２はゲームモードに遷移する。なお、このｂＣＨＧ＿ＭＯＤＥコマンドは、バックアップモードからゲームモードに遷移させるための遷移コマンドであり、ホストであるＣＰＵ３４がメモリコントローラ６２に発行する。
バックアップモードでは、データを書き込む際には、ＣＰＵ３４によって書込みデータが所定のフォーマットに変換され、当該所定のフォーマットのデータがメモリコントローラ６２によってバックアップ領域２０６に書き込まれる。一方、データを読み出す際には、メモリコントローラ６２によって、読み出したデータが所定のフォーマットであるか否かが判定される。データが所定のフォーマットであると判定される場合には当該データはＣＰＵ３４に出力される。
しかし、データが所定のフォーマットでないと判定される場合には、当該データはバックアップ領域に不正に書き込まれたデータであるとみなされ、メモリコントローラ６２はイリーガルモードに遷移する。イリーガルモードに遷移すると、当該データは出力されず、したがって、バックアップ領域の不正利用を防止することができる。
なお、この実施例では、書込まれていたデータが所定のフォーマットでないと判定されるとき、メモリコントローラ６２が何らデータを出力しないようにしているが、他の実施例では、メモリコントローラ６２が、不正データであることを示す所定のデータをＣＰＵ３４に出力するようにして、不正な書込みデータであることをＣＰＵ３４が認識できるようにしてもよい。この場合にも、書込まれていたデータが正常に出力されないので、バックアップ領域２０６を不正利用から保護することができる。
このようなバックアップの場合のモードの遷移においても、フラッシュメモリ６４に対するアクセスの可否状態が変化される。図７には、バックアップモードに遷移する場合のフラッシュメモリ６４のメモリマップの変化が示されている。ゲームモードでは、ゲーム領域２０２は読出しのみ可能な状態にされており、バックアップ領域２０６は、読出しおよび書込みともに不可能な状態にされている。そして、ｇＣＨＧ＿ＢＫ＿ＭＯＤＥコマンドに応じて、バックアップモードに遷移したとき、バックアップ領域２０６のみがアクセス可能な状態にされる。しかも、この実施例では、バックアップ領域２０６のうち、ｇＣＨＧ＿ＢＫ＿ＭＯＤＥコマンドで指定されたブロックのみがアクセス可能にされる。ダウンロードの場合と同様に、モードの遷移に応じて、フラッシュメモリ６４の各領域に対して、読出しおよび書込み可能な状態を変化させ、つまり、モードごとにメモリマップを変化させるようにしたので、セキュリティ度を高めることができる。
なお、本実施例においては、バックアップモードに遷移した後でないとバックアップ領域２０６に書込みできないようにした。これは、例えば工場出荷時などにおいて一度書き込んだデータを間違って上書きしてしまわないようにするためである。しかしながら、変形例としては、フラッシュメモリ６４のうちバックアップ領域２０６はゲームモードでも書き込み可能にしてもよい。
図８にはフラッシュメモリ６４のインフォメーション領域２００のメモリマップの一例が示される。なお、図８はインフォメーション領域２００の一部であり、ゲーム領域２０２の開始アドレスなど他の必要なデータも記憶されている。
記憶領域２１０にはダウンロード領域２０４の開始アドレスが予め記憶され、記憶領域２１２にはバックアップ領域２０６の開始アドレスが予め記憶されている。その他にダウンロード領域２０４およびバックアップ領域２０６のサイズまたは終了アドレスなどが記憶されてもよい。ヘッダ情報としては、ダウンロード領域２０４およびバックアップ領域２０６のそれぞれと他の領域とを区別することのできるデータ、すなわち、各領域の境界データが記憶されればよい。メモリコントローラ６２は、各領域の境界データを参照することによって、各領域を把握してアクセスすることができる。
記憶領域２１４には、暗号化されたキー１が予め記憶されている。キー１は、ＤＬセキュアモード用のキー（暗号鍵）、つまり、ＤＬセキュアモードにおいて使用されるキーである。このキー１によって、サーバ１０２で暗号化されたｄｓＣＨＧ＿ＭＯＤＥコマンドが復号化される。
なお、フラッシュメモリ６４には暗号化されたキーを記憶するようにしているので、メモリカード２８からフラッシュメモリ６４が抜き取られてデータが不正に読み出されても、キーの内容を読み取られないようにすることができる。
記憶領域２１６には、暗号化されたキー２が予め記憶されている。キー２はダウンロードモード用のキー（暗号鍵）、つまり、ダウンロードモードにおいて使用されるキーである。このキー２によって、サーバ１０２で暗号化されたダウンロード用データが復号化される。
記憶領域２１８には、暗号化されたキー３が予め記憶されている。キー３は、ダウンロード用データのメッセージダイジェスト認証用のキー（暗号鍵）であり、つまり、ダウンロード用データの認証記号としてのメッセージ完全性コード（ＭＩＣ：Ｍｅｓｓａｇｅ  Ｉｎｔｅｇｒｉｔｙ  Ｃｏｄｅ）を算出するためのキーである。ただし、この実施例では、キー３の一部がキー２の一部と同一になるような構成を採用している。つまり、キー３は、キー２の一部（同一部分を除いた部分）を置き換えることによって得られるキーである。そして、この記憶領域２１８には、上述のようなキー３の残りの部分（キー２との同一部分を除いた部分）だけを暗号化して記憶するようにしている。ＭＩＣ算出のために完全なキー３を必要とするときは、記憶領域２１８のキー３とキー２の同一部分とが使用されるようにしている。
記憶領域２２０には、メモリカード２８（フラッシュメモリ６４）の識別情報を示すユニークＩＤが記憶される。また、記憶領域２２２には、メモリカード２８のゲームないしアプリケーションの識別情報を示すゲームＩＤが記憶される。ゲームＩＤはゲームのタイトルや種類であってよい。
なお、この実施例では、フラッシュメモリ６４には、メモリカード２８に固有のキーが記憶される。つまり、ユニークＩＤに対応するキー１、２および３が記憶されている。他の実施例では、ゲームタイトルに固有のキー、すなわち、ゲームＩＤに対応するキー１、２および３が記憶されてもよい。
図９にはメモリコントローラ６２の内部ＲＡＭ６６のメモリマップの一例が示される。なお、図９は当該内部ＲＡＭ６６のメモリマップの一部である。
記憶領域３００には現在のモードが記憶される。このモードデータによってメモリコントローラ６２は現在のモードを把握することが可能である。コマンドを受信したときには、メモリコントローラ６２は、たとえば、当該コマンドの実行の前に、当該コマンドが現在のモードで発行されることを規定されたコマンドであるか否かを判定するようにしてよい。これによって、正規に発行されたコマンドを判別することができる。
記憶領域３０２はキー記憶領域である。現在のモードに応じたキーが記憶される。上述のように、この実施例では、各キーは暗号化されてフラッシュメモリ６４のインフォメーション領域２００に記憶されているので、メモリコントローラ６２は、内部ＲＡＭ６６のワークエリアにキーを読み出して復号化し、当該復号化したキーを記憶領域３０２に記憶する。また、各キーは、各遷移コマンドに応じて各モートに遷移したときに、この記憶領域３０２に展開されてよい。
具体的には、図１０に示すように、ＤＬセキュアモードにおいては、キー記憶領域３０２には、復号化済みのキー１および復号化済みのキー３（この実施例では、厳密にはキー３の一部）が記憶される。なお、キー１はＤＬセキュアモード用のキーであるが、この実施例では、ゲームモードにおいても、このキー１を使用して所定のデータ（乱数およびユニークＩＤもしくはゲームＩＤ）を暗号化するようにしているので、ゲームモードのときから既にキー１を記憶領域３０２に記憶するようにしている。また、キー３は電源オフまで常駐された状態になる。このキー３の一部は、キー２と共用される部分に比べて小さいので、予め展開されるようにしている。なお、ゲームモードからＤＬセキュアモードに遷移する際には、キー１を再度フラッシュメモリ６４から読み出して復号化して、その後記憶領域３０２に展開するようにしている。これは、何らかの事故で内部ＲＡＭ６６上のデータが書き換わってしまう場合を考慮し、念の為の再展開である。
ダウンロードモードに遷移すると、キー１がキー２に置き換えられる。つまり、キー１が記憶領域３０２から消去されるとともに、フラッシュメモリ６４からキー２をワークエリアに読み出して復号化し、当該復号化したキーを記憶領域３０２に記憶する。また、キー３はそのまま記憶される。上述のように、キー２は、ダウンロードモードにおけるダウンロード用のデータの暗号のために使用され、一方、キー３は、ダウンロード用のデータのＭＩＣ算出のために使用される。この実施例のように、キー２とキー３とで一部を共用することによって、キー記憶領域３０２のために確保すべき領域のサイズを抑えることができ、結果として内部ＲＡＭ６６の容量を抑制して、コストを低減することができる。
なお、他の実施例では、完全なキー３を予め記憶しておき、当該キー３をキー記憶領域３０２に展開するようにしてよい。
図９に戻って、記憶領域３０４には乱数が記憶される。乱数は疑似乱数であり、メモリコントローラ６２で所定の処理が実行されるときに発生される。また、記憶領域３０６にはライトプロテクトを示すフラグが記憶される。このライトプロテクトがオンされているときには、フラッシュメモリ６４のダウンロード領域２０４に対する書込みが禁止される。
図１１にはサーバ１０２のデータベースに記憶されるデータの一例を示す。なお、このデータベースは、サーバ１０２のＨＤＤまたはＲＯＭなどに記憶されている。
データベースには、ダウンロード用データが記憶されている。ダウンロード用データは、メモリカード２８のダウンロード領域２０４に記憶するためのデータである。たとえばゲームタイトルごとに、つまり、ゲームＩＤに対応付けられたダウンロード用のファイルが準備されてよい。
また、データベースにはキーデータが記憶される。この実施例では、上述のようにメモリカード２８ごとに固有のキーを準備しているので、ユニークＩＤに対応付けて、キー１、キー２およびキー３が記憶されている。なお、メモリカード２８と同様に、キー３としては、一部がキー２と共用のため、残りの一部のみが記憶されてもよいし、または、完全なキー３を記憶するようにしてもよい。
なお、他の実施例では、ゲームタイトルごとのキーが準備されてもよく、つまり、ゲームＩＤに対応付けてキー１、２および３が記憶されてもよい。
図１２にはサーバ１０２のＲＡＭのメモリマップの一例が示される。なお、このメモリマップは一部を示しており、他の必要なプログラムおよびデータも記憶される。
記憶領域４００はプログラム記憶領域であり、当該サーバ１０２のダウンロード処理を実行するためのプログラムが記憶される。プログラムはＲＯＭまたはＨＤＤ等から読み出される。
記憶領域４０２はデータ記憶領域であり、ＲＯＭまたはＨＤＤ等から読み出されたデータ、ＣＰＵによって生成されたデータ、ゲーム装置１０から受信したデータ等が記憶される。
記憶領域４０４には、最初に受信したユニークＩＤが記憶され、記憶領域４０６には、ゲームＩＤが記憶される。具体的には、ダウンロード処理が開始されると、最初にゲーム装置１０からユニークＩＤとゲームＩＤが送信されてくるので、当該ユニークＩＤおよびゲームＩＤが記憶領域４０４および４０６に記憶される。
記憶領域４０８には、データベースから読み出されたキーが記憶される。この実施例では、ユニークＩＤに対応するキー１、２および３が記憶される。
記憶領域４１０には乱数およびユニークＩＤが記憶される。具体的には、ゲーム装置１０から最初のユニークＩＤの後に、乱数およびユニークＩＤをキー１で暗号化したデータがゲーム装置１０から送信されてくるので、当該受信データをキー１で復号化して得られた乱数およびユニークＩＤがこの記憶領域４１０に記憶される。
記憶領域４１２にはブロックアドレスが記憶される。具体的には、上述の乱数およびユニークＩＤの後に、ゲーム装置１０から書込みを行うブロックアドレスが送信されてくるので、当該ブロックアドレスがこの記憶領域４１２に記憶される。この実施例では、サーバ１０２は、ブロックアドレスを指定した遷移コマンドをゲーム装置１０経由でメモリコントローラ６２に送信し、ダウンロードするファイルを書き込むブロックアドレスを指示する。
記憶領域４１４には書込みファイルが記憶される。具体的には、データベースから読み出されたダウンロード用データのファイルが記憶される。ゲームタイトルごとにダウンロードデータが準備される場合、ゲームＩＤに対応するデータが記憶される。なお、ユニークＩＤに対応するデータ、つまり、メモリカード２８ごとのデータが読み出されてもよいし、ゲームＩＤやユニークＩＤにかかわらず所定のデータが読み出されてもよい。この書込みファイルから所定量のデータが順に取り出されて、ゲーム装置１０に送信される。
図１３には、ダウンロード処理を実行する際のゲーム装置１０のＲＡＭ４２のメモリマップの一例が示される。なお、図１３はメモリマップの一部を示しており、他に必要なデータが記憶される。
記憶領域５００はプログラム記憶領域であり、ゲーム装置１０の処理を実行するためのプログラムがメモリカード２８から読み出されて記憶される。プログラムは、ゲーム処理プログラムやダウンロード処理プログラム等を含む。
記憶領域５０２はデータ記憶領域であり、メモリカード２８から取得されたデータ、ＣＰＵ３４によって生成されたデータ、サーバ１０２から受信したデータ等が記憶される。
記憶領域５０４はゲームＩＤが記憶される。ゲームＩＤは、たとえば電源オンの際にフラッシュメモリ６４のインフォメーション領域２００の記憶領域２２２からメモリコントローラ６２によって読み出されて出力され、コネクタ６０およびコネクタ３２等を介してＣＰＵ３４に与えられる。このゲームＩＤは、最初にユニークＩＤをサーバ１０２に送信する際に、一緒に送信される。
記憶領域５０６にはダウンロードしたデータを書き込むブロックアドレスが記憶される。ゲーム装置１０では、ダウンロード領域２０４の空き領域が確保され、当該空き領域から書き込むブロックアドレスが決定される。このブロックアドレスはサーバ１０２に送信される。
記憶領域５０８にはサーバ１０２からダウンロードされるファイルデータ量が記憶される。ダウンロードされるファイルのファイルデータ量はサーバ１０２から送信されてくるので、当該受信したファイルデータ量がこの記憶領域５０８に記憶される。このデータファイル量によって、ＣＰＵ３４は、書込みファイルのすべてを書き込んだか否かを判定することができる。
図１４には、バックアップ処理の際のゲーム装置１０のＲＡＭ４２のメモリマップの一例が示される。なお、この図１４も図１３と同様にメモリマップの一部のみを示す。
記憶領域５００はプログラム記憶領域であり、メモリカード２８から読み出されたゲーム処理プログラムおよびバックアップ処理プログラム等が記憶される。
データ記憶領域５０２の記憶領域５０４には、図１３のダウンロード処理の場合と同様に、メモリカード２８から読み出したゲームＩＤが記憶される。
記憶領域５１０には書き込むデータが記憶される。つまり、ＣＰＵ３４がゲーム（アプリケーション）実行中に生成したバックアップデータが記憶される。
記憶領域５１２にはパリティ付きデータが記憶される。書き込むデータは、ＣＰＵ３４によって所定のフォーマットに変換されてバックアップ領域２０６に書き込まれる。この実施例では、バックアップデータにはパリティビットが付加される。このパリティ付きデータがバックアップ領域２０６に書き込まれる。
図１５にパリティ付きデータの一例が示される。図１５は、バックアップ領域２０６のページデータ（５１２バイト）の構成例であり、この実施例では、各バイトのデータの構成が、「７ビットのデータ」＋「７ビットのデータのパリティ（１ビット）」にされる。つまり、書き込むデータについて、７ビットごとに１ビットのパリティビットを付加することによって、パリティ付きデータを生成する。たとえば、ビット０−６のビット列において「１」が偶数個あった場合、ビット７には「１」が書かれ、一方、ビット列において「１」が奇数個あった場合、ビット７には「０」が書かれる。
記憶領域５１４には書き込むブロックアドレスが記憶される。ゲーム装置１０のＣＰＵ３４は、バックアップ領域２０６の空き領域を確保し、パリティ付きデータを書き込むブロックアドレスを決定し、この記憶領域５１４に記憶する。この書き込むブロックアドレスは、バックアップモードに遷移させるための遷移コマンドにおいて指定される。
記憶領域５１６には読み出すブロックアドレスが記憶される。ＣＰＵ３４は、バックアップ領域２０６の読み出すデータの格納場所を確認して、読み出すブロックアドレスを決定し、この記憶領域５１６に記憶する。この読み出すブロックアドレスは、バックアップモードに遷移させるための遷移コマンドにおいて指定される。
記憶領域５１８には、メモリカード２８のバックアップ領域２０６から読み出したデータが記憶される。バックアップ領域２０６から読み出そうとしているデータがパリティ付きデータであるか否かは、読み出す際にメモリコントローラ６２によってチェックされる。バックアップ領域２０６からデータが読み出されれば、当該データは正規にバックアップ領域２０６に書き込まれたデータであるので、ＣＰＵ３４は、当該読み出したデータからパリティを除去して元のデータに変換して、当該データを利用することができる。一方、パリティチェックの結果、バックアップ領域２０６のデータが不正に書き込まれたデータと判断される場合、メモリコントローラ６２はイリーガルモードに遷移し、当該データを出力しない。したがって、バックアップデータの読出し処理が完了せず、正常な動作が行われなくなる。
ダウンロード処理の際のシステム１０の全体的な動作を図１６から図１９を参照しながら簡単に説明する。なお、ダウンロード処理の際の、ゲーム装置１０、メモリコントローラ６２およびサーバ１０２のそれぞれの動作は、個別のフロー図を用いて後に説明する。
ダウンロード処理は、メモリカード２８のメモリコントローラ６２がゲームモードにあるときに開始される。図１６を参照して、ダウンロード処理が開始されると、まずステップＳ１で、ゲーム装置１０のＣＰＵ３４は、ｇＲＤ＿ＵＩＤコマンドをメモリカード２８に発行する。このｇＲＤ＿ＵＩＤコマンドは、メモリカード２８からユニークＩＤを読むためのコマンドである。これに応じて、メモリコントローラ６２は、ステップＳ３でユニークＩＤをフラッシュメモリ６４から読み出してゲーム装置１０に出力する。ＣＰＵ３４は、受信したユニークＩＤを、ステップＳ５でサーバ１０２に転送し、サーバ１０２のＣＰＵは受信したユニークＩＤをＲＡＭに記憶する。このようにして、メモリカード２８のユニークＩＤがサーバ１０２に送信される。このユニークＩＤは、メモリカード２８の認証のために、後に受信されるユニークＩＤと比較される。
続いて、ゲーム装置１０のＣＰＵ３４は、ステップＳ９でｇＲＤ＿ＩＦコマンドをメモリカード２８に発行する。このｇＲＤ＿ＩＦコマンドは、メモリカード２８の乱数およびユニークＩＤを読むためのコマンドである。これに応じて、メモリコントローラ６２は、ステップＳ１１で、発生した乱数およびフラッシュメモリ６４から読み出したユニークＩＤをゲーム装置１０に出力する。ただし、乱数およびユニークＩＤは、内部ＲＡＭ６６に展開されているキー１で暗号化される。ＣＰＵ３４は、ステップＳ１３で、受信したデータをサーバ１０２に転送する。サーバ１０２のＣＰＵは、ステップＳ１５で、受信したデータをキー１で復号化する。使用されるキー１はユニークＩＤに対応するキー１である。そして、サーバ１０２のＣＰＵはステップＳ１７で、ステップＳ１５で復号化したユニークＩＤとステップＳ７で最初に受信したユニークＩＤとが一致するか否かを判定する。ステップＳ１７で“ＮＯ”の場合、つまり、ユニークＩＤが最初に受信したユニークＩＤと異なる場合には、メモリカード２８が正規のカードであるとは認められないので、サーバ１０２のＣＰＵはステップＳ１９でダウンロード書込み処理を終了する。
一方、ステップＳ１７で“ＹＥＳ”の場合、つまり、メモリカード２８が正規のカードであるとサーバ１０２で判定された場合には、ゲーム装置１０のＣＰＵ３４は、ステップＳ２１で、ダウンロード領域２０４のうち、ダウンロードするデータを書込むブロックアドレスを決定する。また、ＣＰＵ３４は、ステップＳ２３で、ｇＣＨＧ＿ＤＬ＿ＭＯＤＥコマンドをメモリカード２８に発行する。このｇＣＨＧ＿ＤＬ＿ＭＯＤＥコマンドは、ゲームモードからＤＬセキュアモードに遷移させるための遷移コマンドである。これに応じて、メモリコントローラ６２は、ステップＳ２５で、ＤＬセキュアモードに遷移する。
また、ステップＳ２７で、ゲーム装置１０のＣＰＵ３４は、ステップＳ２１で決定したブロックアドレスをサーバ１０２に送信する。これに応じて、サーバ１０２のＣＰＵは、ステップＳ２９で、ｄｓＣＨＧ＿ＭＯＤＥコマンドを生成する。このｄｓＣＨＧ＿ＭＯＤＥコマンドは、ＤＬセキュアモードからダウンロードモードの遷移させるための遷移コマンドである。この遷移コマンドは、ステップＳ１５で取得した乱数およびユニークＩＤと、このステップＳ２９で受信したブロックアドレスを用いて生成される。なお、乱数およびユニークＩＤはメモリコントローラ６２での認証のために使用され、また、ブロックアドレスによって、ダウンロードデータを書き込むブロックアドレスが指定される。
続いて、図１７のステップＳ３１で、サーバ１０２のＣＰＵは、生成したｄｓＣＨＧ＿ＭＯＤＥコマンドをキー１で暗号化する。そして、ステップＳ３３で、サーバ１０２のＣＰＵは、暗号化されたｄｓＣＨＧ＿ＭＯＤＥコマンドをゲーム装置１０に送信する。ゲーム装置１０のＣＰＵ３４は、ステップＳ３５で、受信したデータをメモリカード２８に転送する。メモリコントローラ６２は、データを受信し、ステップＳ３７で、受信したデータをキー１で復号化する。したがって、ｄｓＣＨＧ＿ＭＯＤＥコマンドから乱数およびユニークＩＤを取得することができ、また、指定されたブロックアドレスも取得できる。
メモリコントローラ６２は、ステップＳ３９で、コマンドから取得したユニークＩＤおよび乱数は、メモリカード２８内の乱数およびユニークＩＤと一致するか否かを判断する。ステップＳ３９で“ＮＯ”の場合、つまり、受信したコマンドが正当なコマンドでなかった場合には、メモリコントローラ６２は、ステップＳ４１でイリーガルモードに遷移する。これによって、ダウンロード処理が進まなくなり、不正なダウンロードが行われない。
一方、ステップＳ３９で“ＹＥＳ”の場合、つまり、受信したコマンドが正当なコマンドである場合には、メモリコントローラ６２は、ステップＳ４３でダウンロードモードに遷移し、ステップＳ４５で指定ブロックのみをアクセス可能にする。これによって、ダウンロードモードへの遷移コマンドで指定されたブロックへの書込みが可能になる。また、このとき、ダウンロードモード用のキー２が復号化されて内部ＲＡＭ６６に展開される。
また、ステップＳ４７で、ゲーム装置１０のＣＰＵ３４は、ｄｌＲＤ＿ＩＦコマンドをメモリカード２８に発行する。このｄｌＲＤ＿ＩＦコマンドは、乱数およびユニークＩＤを読むためのコマンドである。このコマンドに応じて、メモリコントローラ６２は、ステップＳ４９で、乱数およびユニークＩＤをキー２で暗号化してゲーム装置１０へ出力する。ゲーム装置１０のＣＰＵ３４は、このデータを受信し、ステップＳ５１で当該受信データをサーバ１０２に転送する。これに応じて、サーバ１０２のＣＰＵは、データを受信し、ステップＳ５３で当該データをキー２を用いて復号化する。これによって、サーバ１０２は、メモリカード２８からの乱数およびユニークＩＤを取得する。この乱数およびユニークＩＤは、この後、ダウンロードするデータのＭＩＣを算出する際の初期値として使用され、また、サーバ１０２から送信するデータの暗号化の初期値としても使用される。
さらに、図１８のステップＳ５５で、ゲーム装置１０のＣＰＵ３４は、ｄｌＰＲＴ＿ＯＦＦコマンドをメモリカード２８に発行する。ｄｌＰＲＴ＿ＯＦＦコマンドは、ライトプロテクトを解除するためのコマンドである。このコマンドに応じて、メモリコントローラ６２は、ライトプロテクトをオフにし、これによって、ダウンロード領域２０４の指定ブロックへの書込みを実行することが可能になる。
続いて、ステップＳ５９で、サーバ１０２のＣＰＵは、ダウンロードするデータ、つまり、書込みファイルを準備する。そして、ステップＳ６１で、サーバ１０２のＣＰＵは、書込みファイルから所定サイズ（この実施例では２ＫＢｙｔｅ）のデータを取り出す。サーバ１０２からゲーム装置１０（メモリカード２８）への書込みファイルの送信は、この所定のサイズごとに行われる。
そして、ステップＳ６３で、サーバ１０２のＣＰＵは、キー３を用いて２ＫＢｙｔｅのデータから所定サイズ（この実施例では８Ｂｙｔｅ）のＭＩＣを算出する。なお、ＭＩＣ算出の初期値として、ステップＳ５３で取得された乱数およびユニークＩＤが用いられる。さらに、サーバ１０２のＣＰＵは、ステップＳ６５で、２ＫＢｙｔｅのデータに８ＢｙｔｅのＭＩＣを追加したデータを生成し、当該生成したデータをキー２で暗号化する。なお、この暗号化の初期値として、ステップＳ５３で取得された乱数およびユニークＩＤが用いられる。そして、ステップＳ６７で、サーバ１０２のＣＰＵは、当該暗号化されたデータをゲーム装置１０に送信する。
これに応じて、ステップＳ６９で、ゲーム装置１０のＣＰＵ３４は、受信したデータとともに書き込むページアドレスをメモリカード２８に送信する。これに応じて、ステップＳ７１で、メモリコントローラ６２はデータを受信する。
続いて、ステップＳ７３で、ゲーム装置１０のＣＰＵ３４は、ｄＷＲ＿ＰＡＧＥコマンドをメモリカード２８に発行する。ｄＷＲ＿ＰＡＧＥコマンドは、メモリカード２８に送信したデータをダウンロード領域２０４に書き込むためのコマンドである。このコマンドに応じて、ステップＳ７５で、メモリコントローラ６２は、ステップＳ７１で受信したデータをキー２で復号化する。これによって、２ＫＢｙｔｅのデータに８ＢｙｔｅのＭＩＣを追加したデータを取得することができる。
さらに、ステップＳ７７で、メモリコントローラ６２は、取得した２ＫＢｙｔｅのアータに対してキー３で８ＢｙｔｅのＭＩＣを算出する。このＭＩＣの算出の際には、ステップＳ４９で送信した乱数およびユニークＩＤが初期値として使用される。
そして、ステップＳ７９で、メモリコントローラ６２は、算出したＭＩＣと復号化によって取得したＭＩＣとが一致するか否かを判断する。ステップＳ７９で“ＮＯ”の場合、つまり、正当なダウンロードデータを受信しなかった場合には、メモリコントローラ６２は、ステップＳ８１で、書込みを行わない。これによって、不正なデータがダウンロード領域２０４に書込まれない。
一方、ステップＳ７９で“ＹＥＳ”の場合、つまり、正当なデータを受信した場合には、メモリコントローラ６２は、ステップＳ８３で、受信した２Ｋｂｙｔｅのデータをダウンロード領域２０４の指定ブロックに書き込む。
続いて、ゲーム装置１０のＣＰＵ３４は、ステップＳ８５で、ファイルの書込みが終了したか、または、１ブロックの書込みが終了したかを判断する。この実施例のダウンロードモードでは、指定ブロックアドレスの一定範囲（この実施例では１ブロック）内であれば、サーバ１０２からの遷移コマンドなしに、データを書き込むことができる。したがって、１ブロックの書込みが終わるまで、または１ブロック未満のファイルの書込みが終わるまでは、サーバ１０２のＣＰＵが暗号化したデータを送信し、メモリコントローラ６２が当該データを復号化して書き込むという動作を繰返す。すなわち、ステップＳ８５で“ＮＯ”の場合には、図１８のステップＳ６１に戻って、処理が繰返される。このように、一定範囲内の書込みにおいてサーバ１０２からの遷移コマンドを不要にすることによって、サーバ１０２の負荷を軽減することができ、ゲーム装置１０側での処理も短くできるという利点がある。
一方、１ブロック以上のファイルの書込み行う必要がある場合には、一旦、ダウンロードモードを終了してゲームモードに遷移する。そして、再びサーバ１０２から遷移コマンドを送信して、メモリコントローラ６２のモードをダウンロードモードに遷移させて、データのダウンロードを行う。
すなわち、ステップＳ８５で“ＹＥＳ”の場合、ゲーム装置１０のＣＰＵ３４は、ステップＳ８７でｄｌＣＨＧ＿ＭＯＤＥコマンドをメモリカード２８に発行する。このｄｌＣＨＧ＿ＭＯＤＥコマンドは、ダウンロードモードからゲームモードに遷移させるための遷移コマンドである。これに応じて、メモリコントローラ６２は、ステップＳ８９でゲームモードに遷移する。
さらに、ゲーム装置１０のＣＰＵ３４は、ステップＳ９１で、ファイルの書込みが終了したか否かを判断する。ステップＳ９１で“ＮＯ”の場合、つまり、書込みファイルのうち未書込みのデータが残っている場合には、図１６のステップＳ９に戻って、ゲームモードからの処理が繰返される。一方、ステップＳ９１で“ＹＥＳ”の場合、つまり、書込みファイルのすべてのデータを書込んだ場合には、このダウンロード処理を終了する。
続いて、ダウンロード処理におけるゲーム装置１０、メモリコントローラ６２およびサーバ１０２の個別の動作を説明する。
図２０から図２２にはダウンロード処理におけるゲーム装置１０の動作の一例が示される。ダウンロード処理を開始すると、図２０のステップＳ１０１で、ＣＰＵ３４は、ｇＲＤ＿ＵＩＤコマンドをメモリカード２８に発行する。ｇＲＤ＿ＵＩＤコマンドは、ユニークＩＤを読むためのコマンドである。また、このｇＲＤ＿ＵＩＤコマンドは、メモリコントローラ６２がゲームモードにある場合に発行されるので、処理負担の比較的軽いアルゴリズム（たとえばスクランブル）で暗号化してメモリカード２８に出力するようにしてよい。
なお、ゲーム装置１０からメモリカード２８にコマンドやデータを送信する際には、ＣＰＵ３４は、当該コマンドやデータをコネクタ３２に与え、したがって、当該コマンドやデータはコネクタ６０を介してメモリコントローラ６２に与えられる。
次にステップＳ１０３で、ＣＰＵ３４はユニークＩＤをメモリカード２８から受信したか否かを判断する。ｇＲＤ＿ＵＩＤコマンドに応じてメモリコントローラ６２はユニークＩＤを返すので、コネクタ３２を介したメモリコントローラ６２からのデータの受信を待機する。
ステップＳ１０３で“ＹＥＳ”の場合、つまり、メモリコントローラ６２からのユニークＩＤを受信した場合には、ＣＰＵ３４は、ステップＳ１０５でユニークＩＤとゲームＩＤとをサーバ１０２に送信する。具体的には、受信したユニークＩＤをＲＡＭ４２のデータ記憶領域５０２に記憶し、記憶領域５０４に記憶されているゲームＩＤを読み出して、ユニークＩＤとゲームＩＤとを含むデータを送信する。
なお、ゲーム装置１０からサーバ１０２にデータを送信する際には、ＣＰＵ３４は、無線通信部５８に当該データを与え、したがって、当該データは、無線通信部５８からアクセスポイント１０４およびネットワーク１０６を介してサーバ１０２に与えられる。
続いて、ＣＰＵ３４は、ステップＳ１０７で、ｇＲＤ＿ＩＦコマンドをメモリカード２８に発行する。なお、このｇＲＤ＿ＩＦコマンドは乱数およびユニークＩＤを読むためのコマンドである。また、このｇＲＤ＿ＩＦコマンドも、スクランブルのような比較的処理負担の軽いアルゴリズムで暗号化されて送信されてよい。そして、ステップＳ１０９で、ＣＰＵ３４は、データ（暗号化された乱数およびユニークＩＤ）をメモリカード２８から受信したか否かを判断する。ｇＲＤ＿ＩＦコマンドに応じてメモリコントローラ６２が上記データを返すので、当該データの受信を待機する。
ステップＳ１０９で“ＹＥＳ”の場合、つまり、メモリコントローラ６２からのデータを受信した場合には、ＣＰＵ３４は、ステップＳ１１１で、当該受信したデータ（暗号化された乱数およびユニークＩＤ）をサーバ１０２に送信する。
続いて、ステップＳ１１３およびＳ１１５で、メモリカード２８が正当なカードか否かの結果を、無線通信部５８を介してサーバ１０２から受信したかどうかを判断する。ステップＳ１１１でのデータの送信に応じてサーバ１０２はメモリカード２８の認証の結果を返すので、サーバ１０２からの当該データの受信を待機する。具体的には、ステップＳ１１３で、ＣＰＵ３４はメモリカード２８が正規カードであることをサーバ１０２から受信したか否かを判断する。ステップＳ１１３で“ＮＯ”の場合、ＣＰＵ３４はステップＳ１１５でメモリカード２８が正規カードでないことを受信したか否かを判断する。ステップＳ１１５で“ＮＯ”の場合は、処理はステップＳ１１３に戻る。
ステップＳ１１５で“ＹＥＳ”の場合には、つまり、不正なメモリカード２８が装着されているとみなされる場合には、ダウンロード処理を終了する。したがって、不正なメモリカード２８へのダウンロードを回避できる。
一方、ステップＳ１１３で“ＹＥＳ”の場合、つまり、正規なメモリカード２８が装着されている場合には、ＣＰＵ３４は、ステップＳ１１７で、ダウンロード領域２０４の空き領域を確保し、書き込むブロックアドレスを決定する。なお、フラッシュメモリ６４の記憶領域のうち、どの領域が使用され、またはどの領域が空き領域であるかなどの情報は、たとえばインフォメーション領域２００にヘッダ情報として記憶されているので、ＣＰＵ３４は当該ヘッダ情報に基づいてフラッシュメモリ６４の管理データを生成し、当該管理データに基づいて、空き領域を確保して、書き込むブロックアドレスを決定する。決定したブロックアドレスは、記憶領域５０６に記憶される。ステップＳ１１７を終了すると、処理は図２１のステップＳ１１９に進む。
図２１のステップＳ１１９では、ＣＰＵ３４は、ｇＣＨＧ＿ＤＬ＿ＭＯＤＥコマンドをメモリカード２８に発行する。このｇＣＨＧ＿ＤＬ＿ＭＯＤＥコマンドは、ＤＬセキュアモードに遷移させるための遷移コマンドである。なお、このｇＣＨＧ＿ＤＬ＿ＭＯＤＥコマンドは、スクランブルなどの比較的処理負担の軽いアルゴリズムに従って暗号化されて送信されてよい。続いて、ステップＳ１２１で、ＣＰＵ３４は、ステップＳ１１７で決定したブロックアドレスをサーバ１０２に送信する。
そして、ステップＳ１２３で、ＣＰＵ３４は、データ（暗号化されたｄｓＣＨＧ＿ＭＯＤＥコマンド）をサーバ１０２から受信したか否かを判断する。ステップＳ１２１の送信に応じてサーバ１０２がデータを返すので、当該データの受信を待機する。
ステップＳ１２３で“ＹＥＳ”の場合、つまり、上記データを受信した場合には、ＣＰＵ３４は、ステップＳ１２５で、受信したデータ（暗号化されたｄｓＣＨＧ＿ＭＯＤＥコマンド）をメモリカード２８に送信する。これによって、メモリコントローラ６２はダウンロードモードに遷移することとなる。
さらに、ステップＳ１２７で、ＣＰＵ３４はｄｌＲＤ＿ＩＦコマンドをメモリカード２８に発行する。このｄｌＲＤ＿ＩＦコマンドは、乱数およびユニークＩＤを読むためのコマンドである。そして、ステップＳ１２９で、ＣＰＵ３４は、データ（暗号化された乱数およびユニークＩＤ）をメモリカード２８から受信したか否かを判断する。ｄｌＲＤ＿ＩＦコマンドに応じてメモリコントローラ６２は暗号化された乱数およびユニークＩＤを返すので、当該データの受信を待機する。
ステップＳ１２９で“ＹＥＳ”の場合、つまり、上記データを受信した場合には、ＣＰＵ３４は、ステップＳ１３１で当該受信したデータ（暗号化された乱数およびユニークＩＤ）をサーバ１０２に送信する。
続いて、ステップＳ１３３で、ＣＰＵ３４はｄｌＰＲＴ＿ＯＦＦコマンドをメモリカード２８に発行する。このｄｌＰＲＴ＿ＯＦＦコマンドは、ライトプロテクトを解除するためのコマンドである。ステップＳ１３３を終了すると、処理は図２２のステップＳ１３５に進む。
図２２のステップＳ１３５では、ＣＰＵ３４は、ファイルデータ量に関するデータをサーバ１０２から受信したか否かを判断する。ステップＳ１３１におけるデータ送信に応じて、サーバ１０２は、ダウンロードするデータ（書込みファイル）を準備し、まず当該ファイルデータ量を送信してくるので、このステップＳ１３５では当該ファイルデータ量の受信を待機する。ステップＳ１３５で“ＹＥＳ”の場合、ＣＰＵ３４はステップＳ１３７で受信したファイルデータ量を記憶領域５０８に記憶する。
続いて、ステップＳ１３９で、ＣＰＵ３４は、データ（暗号化された２ＫＢｙｔｅ＋８Ｂｙｔｅのデータ）をサーバ１０２から受信したか否かを判断する。なお、ファイルデータ量の送信の後、サーバ１０２は、書込みファイルから所定サイズずつデータを送信する。具体的には、サーバ１０２は、２ＫＢｙｔｅのデータに８ＢｙｔｅのＭＩＣを付加したデータを暗号化して送信するので、このステップＳ１３９では当該データの受信を待機する。
ステップＳ１３９で“ＹＥＳ”の場合、つまり、上記データを受信した場合には、ＣＰＵ３４は、ステップＳ１４１で、受信したデータとともに書き込むページアドレスをメモリカード２８に送信する。なお、サーバ１０２からは所定サイズごとのデータが送信されてくるので、ＣＰＵ３４は、フラッシュメモリ６４の管理データやブロックアドレス等に基づいて、データを受信するごとに、当該データを書き込むページアドレスを決定することができる。続くステップＳ１４３で、ＣＰＵ３４は、ｄＷＲ＿ＰＡＧＥコマンドをメモリカード２８に発行する。このｄＷＲ＿ＰＡＧＥコマンドは、ステップＳ１４１で送信したデータを指定ページアドレスに書き込むこと指示するコマンドである。
そして、ステップＳ１４５で、ＣＰＵ３４は、ファイルの書込みが終了したか、または、１ブロックの書込みが終了したかを判断する。上述のように所定サイズごとにデータがサーバ１０２から送信されてくるので、ＣＰＵ３４は、書き込んだデータ量（メモリカード２８に送信したデータ量）を算出することができる。したがって、ＣＰＵ３４は、当該書き込んだデータ量がファイルデータ量に達したか、または１ブロックに達したかを判断することができる。ステップＳ１４５で“ＮＯ”の場合、処理はステップＳ１３９に戻り、ファイルの書込みが終了し、または１ブロックの書込みが終了するまで、データの書込みが繰り返される。
一方、ステップＳ１４５で“ＹＥＳ”の場合には、ＣＰＵ３４は、ステップＳ１４７でｄｌＣＨＧ＿ＭＯＤＥコマンドをメモリカード２８に発行する。このｄｌＣＨＧ＿ＭＯＤＥコマンドは、ダウンロードモードからゲームモードに遷移させるための遷移コマンドである。そして、ステップＳ１４９で、ＣＰＵ３４はファイルの書込みが終了したか否かを判断する。ステップＳ１４９で“ＮＯ”の場合、つまり、１ブロックの書込みが終了したが、書込みファイルのすべてを書き終えていない場合には、処理は図２０のステップＳ１０７に戻り、残りのデータを書き込むために、ゲームモードにおけるステップＳ１０７からの処理が再び行われる。一方、ステップＳ１４９で“ＹＥＳ”の場合には、このダウンロード処理を終了する。
図２３から図２６には、ダウンロード処理におけるメモリコントローラ６２の動作の一例が示される。なお、上述のように、ダウンロード処理はゲームモードにおいて開始されるので、図２３では、電源がオンされてメモリコントローラ６２がゲームモードに置かれるまでの処理を、ステップＳ２０１からＳ２０５として記載している。
処理が開始されると、図２３のステップＳ２０１で、メモリコントローラ６２はモードをゲームモードにする。内部ＲＡＭ６６のモード記憶領域３００にはゲームモードを示すデータが記憶される。
次に、ステップＳ２０３で、メモリコントローラ６２は、ダウンロード領域２０４およびゲーム領域２０２を読み出しのみ可能な状態にする。たとえば、メモリコントローラ６２は、フラッシュメモリ６４の各領域に対するアクセスの状態を示すデータを内部ＲＡＭ６６に生成しておく。そして、当該データにおいて、ダウンロード領域２０４およびゲーム領域２０２について、読出しのみ可能な状態であることを示すデータを設定する。
続いて、ステップＳ２０５で、メモリコントローラ６２は、キー１およびキー３をフラッシュメモリ６４のインフォメーション領域２００から内部ＲＡＭ６６のワークエリアに読み出して復号化し、キー１およびキー３をキー記憶領域３０２に展開する。
続くステップＳ２０７以降の処理がメモリコントローラ６２のダウンロード処理に相当する。メモリコントローラ６２は、ステップＳ２０７で、ｇＲＤ＿ＵＩＤコマンドをコネクタ６０を介して受信したか否かを判断する。ステップＳ２０７で“ＹＥＳ”の場合、つまり、ユニークＩＤを読み取るためのコマンドを受信した場合には、メモリコントローラ６２は、ステップＳ２０９で、インフォメーション領域２００の記憶領域２２０からユニークＩＤを読み出して、当該ユニークＩＤをコネクタ６０に出力する。なお、ｇＲＤ＿ＵＩＤコマンドがスクランブルなどで暗号化して送信される場合には、受信したデータを復号化して、当該データがｇＲＤ＿ＵＩＤコマンドであるか否かを判断する。また、メモリコントローラ６２がコネクタ６０に出力したデータは、コネクタ３２等を介してＣＰＵ３４に与えられる。
ステップＳ２０９を終了し、またはステップＳ２０７で“ＮＯ”の場合、メモリコントローラ６２は、ステップＳ２１１でｇＲＤ＿ＩＦコマンドを受信したか否かを判断する。なお、ｇＲＤ＿ＩＦコマンドがスクランブルなどで暗号化される場合、受信したデータを復号化して、当該データがｇＲＤ＿ＩＦコマンドであるか否かを判断する。ステップＳ２１１で“ＮＯ”の場合、処理はステップＳ２０７へ戻る。
一方、ステップＳ２１１で“ＹＥＳ”の場合、つまり、乱数およびユニークＩＤを読み取るためのコマンドを受信した場合には、メモリコントローラ６２は、ステップＳ２１３で、乱数およびユニークＩＤをキー１で暗号化する。なお、メモリコントローラ６２は、記憶領域３０４に乱数を発生し、また、メモリコントローラ６２はインフォメーション領域２００の記憶領域２２０からユニークＩＤをワークエリアに読み出す。また、暗号化に使用されるキー１は、記憶領域３０２に既に展開されている。続くステップＳ２１５で、メモリコントローラ６２は、暗号化された乱数およびユニークＩＤを出力する。
続いて、ステップＳ２１７で、メモリコントローラ６２は、ｇＣＨＧ＿ＤＬ＿ＭＯＤＥコマンドを受信したか否かを判断する。このｇＣＨＧ＿ＤＬ＿ＭＯＤＥコマンドは、サーバ１０２でメモリカード２８が正規なカードであると判断された場合にＣＰＵ３４から発行されるので、ステップＳ２１７で当該コマンドの受信を待機する。なお、ｇＣＨＧ＿ＤＬ＿ＭＯＤＥコマンドがスクランブルなどで暗号化される場合、受信したデータを復号化して、当該データがｇＣＨＧ＿ＤＬ＿ＭＯＤＥコマンドであるか否かを判断する。
ステップＳ２１７で“ＹＥＳ”の場合、つまり、ＤＬセキュアモードに遷移するための遷移コマンドを受信した場合には、メモリコントローラ６２は、ステップＳ２１９でゲームモードからＤＬセキュアモードに遷移する。モード記憶領域３００にはＤＬセキュアモードを示すデータを記憶する。
続いて、図２４のステップＳ２２１で、メモリコントローラ６２は、インフォメーション領域２００の記憶領域２１４からキー１を読み出して復号化し、内部ＲＡＭ６６の記憶領域３０２に展開する。なお、キー記憶領域３０２には既にキー１が展開されているが、事故によるデータの置き換わり等を回避するために、このステップＳ２２１の処理でキー１を展開し直す。
また、ステップＳ２２４で、メモリコントローラ６２は、フラッシュメモリ６４の全領域をアクセス不可状態にする。たとえば、メモリコントローラ６２は、フラッシュメモリ６４の各領域に対するアクセスの状態を示すデータにおいて、全領域について、アクセス不可能な状態であることを示すデータを設定する。
そして、ステップＳ２２５で、メモリコントローラ６２はデータ（暗号化されたｄｓＣＨＧ＿ＭＯＤＥコマンド）を受信したか否かを判断する。ＤＬセキュアモードに遷移した後に、この暗号化されたｄｓＣＨＧ＿ＭＯＤＥコマンドがサーバ１０２から送信されるので、このステップＳ２２５で、当該データの受信を待機する。
ステップＳ２２５で“ＹＥＳ”の場合、つまり、データ（暗号化されたｄｓＣＨＧ＿ＭＯＤＥコマンド）を受信した場合には、メモリコントローラ６２は、ステップＳ２２７で、受信したデータをキー１で復号化する。ｄｓＣＨＧ＿ＭＯＤＥコマンドは、サーバ１０２において、このメモリカード２８のユニークＩＤに対応するキー１を用いて暗号化されているので、記憶領域３０２のキー１を用いて復号化を行う。
続いて、ステップＳ２２９で、メモリコントローラ６２は、ｄｓＣＨＧ＿ＭＯＤＥコマンドからブロックアドレスならびにユニークＩＤおよび乱数を取得する。ｄｓＣＨＧ＿ＭＯＤＥコマンドには、ダウンロードしたデータを書き込むブロックアドレスが指定されており、また、先にステップＳ２１５で出力した乱数およびユニークＩＤが埋め込まれている。
そして、ステップＳ２３１で、メモリコントローラ６２は、取得したユニークＩＤおよび乱数が、メモリカード２８内のユニークＩＤおよび乱数、つまり、内部ＲＡＭ６６に記憶されているユニークＩＤおよび記憶領域３０４に記憶されている乱数と一致するか否かを判断する。
ステップＳ２３１で“ＮＯ”の場合、つまり、ダウンロードモードへの遷移コマンドが正当なコマンドではない場合には、メモリコントローラ６２は、ステップＳ２３３でイリーガルモードに遷移する。モード記憶領域３００にはイリーガルモードを示すデータが記憶される。イリーガルモードに遷移すると、メモリコントローラ６２はダウンロード処理を行わないので、不正な書込みを防止できる。
一方、ステップＳ２３１で“ＹＥＳ”の場合、つまり、ダウンロードモードへの遷移コマンドが正当なコマンドである場合には、メモリコントローラ６２は、ステップＳ２３５で、ＤＬセキュアモードからダウンロードモードに遷移する。モード記憶領域３００にはダウンロードモードを示すデータが記憶される。
また、ステップＳ２３７で、メモリコントローラ６２は、ｄｓＣＨＧ＿ＭＯＤＥコマンドで指定されたブロックのみをアクセス可能状態にする。たとえば、メモリコントローラ６２は、フラッシュメモリ６４の各領域に対するアクセスの状態を示すデータにおいて、ダウンロード領域のメモリマップを指定ブロックのみに変更するとともに、当該ダウンロード領域のみについて、アクセス可能状態であることを示すデータを設定する。
さらに、ステップＳ２３９で、メモリコントローラ６２は、インフォメーション領域２００の記憶領域２１６からキー２を読み出して復号化し、キー１に代えて内部ＲＡＭ６６の記憶領域３０２に展開する。なお、キー２の展開前に、キー記憶領域３０２からキー１を消去しておく。
続いて、図２５のステップＳ２４１で、メモリコントローラ６２は、ｄｌＲＤ＿ＩＦコマンドを受信したか否かを判断する。このｄｌＲＤ＿ＩＦコマンドは、暗号化されたｄｓＣＨＧ＿ＭＯＤＥコマンドの転送後に、ＣＰＵ３４によって発行されるので、このステップＳ２４１で当該ｄｌＲＤ＿ＩＦコマンドの受信を待機する。
ステップＳ２４１で“ＹＥＳ”の場合、つまり、乱数およびユニークＩＤを読むためのコマンドを受信した場合には、メモリコントローラ６２は、ステップＳ２４３で、乱数およびユニークＩＤをキー２で暗号化する。なお、メモリコントローラ６２は、記憶領域３０４に乱数を発生し、インフォメーション領域２００の記憶領域２２０からユニークＩＤを読み出す。そして、乱数およびユニークＩＤを記憶領域３０２に展開されているキー２で暗号化する。ステップＳ２４５で、メモリコントローラ６２は、暗号化された乱数およびユニークＩＤを出力する。
続いて、ステップＳ２４７で、メモリコントローラ６２は、ｄｌＰＲＴ＿ＯＦＦコマンドを受信したか否かを判断する。ＣＰＵ３４は、ステップＳ２４５で出力された暗号化された乱数およびユニークＩＤをサーバ１０２に転送後に、このｄｌＰＲＴ＿ＯＦＦコマンドを発行するので、ステップＳ２４７で当該コマンドの受信を待機する。
ステップＳ２４７で“ＹＥＳ”の場合、つまり、ライトプロテクトを解除するためのコマンドを受信した場合には、メモリコントローラ６２は、ステップＳ２４９でフラッシュメモリ６４のダウンロード領域２０４に対するライトプロテクトをオフにする。具体的には、メモリコントローラ６２は、内部ＲＡＭ６６の記憶領域３０６に記憶されるライトプロテクトを示すフラグをオフにする。
続いて、ステップＳ２５１で、メモリコントローラ６２は、データ（暗号化された２ＫＢｙｔｅ＋８Ｂｙｔｅのデータ）を受信したか否かを判断する。このデータは、サーバ１０２から送信されたダウンロードデータである。また、受信データには、ゲーム装置１０のＣＰＵ３４によって、書き込むページアドレスが追加されている。
ステップＳ２５１で“ＹＥＳ”の場合、メモリコントローラ６２は、ステップＳ２５３で、受信したデータとページアドレスを内部ＲＡＭ６６のワークエリアに記憶する。一方、ステップＳ２５１で“ＮＯ”の場合、処理は図２６のステップＳ２６９に進む。
続いて、ステップＳ２５５では、メモリコントローラ６２は、ｄＷＲ＿ＰＡＧＥコマンドを受信したか否かを判断する。このｄＷＲ＿ＰＡＧＥコマンドは、ゲーム装置１０のＣＰＵ３４によって、ダウンロードデータの転送後に発行されるので、ステップＳ２５５で当該ｄＷＲ＿ＰＡＧＥコマンドの受信を待機する。
ステップＳ２５５で“ＹＥＳ”の場合、つまり、書込みコマンドを受信した場合には、処理は図２６のステップＳ２５７に進む。ステップＳ２５７では、メモリコントローラ６２は、記憶領域３０６のライトプロテクトがオフであるか否かを判断する。
ステップＳ２５７で“ＹＥＳ”の場合、つまり、ダウンロードしたデータの書込みが許可されている場合には、メモリコントローラ６２は、ステップＳ２５９で、受信したデータ（暗号化された２ＫＢｙｔｅ＋８Ｂｙｔｅのデータ）をキー２で復号化する。なお、受信したデータは、サーバ１０２において、メモリカード２８のユニークＩＤに対応するキー２で暗号化されている。この復号化によって、２ＫＢｙｔｅのダウンロード用データおよび８ＢｙｔｅのＭＩＣを取得できる。
続いて、ステップＳ２６１で、メモリコントローラ６２は、復号化した２ＫＢｙｔｅのデータに対して、キー３で８ＢｙｔｅのＭＩＣを算出する。なお、このＭＩＣ算出の際には、内部ＲＡＭ６６に記憶されているユニークＩＤおよび乱数を初期値として使用する。また、算出用のキー３は、記憶領域３０２に記憶されているキー２の一部（共用部分）とキー３とによって構成される。
そして、ステップＳ２６３で、メモリコントローラ６２は、算出したＭＩＣが復号化したＭＩＣと一致するか否かを判断する。ステップＳ２６３で“ＮＯ”の場合、つまり、ダウンロードしたデータが不正なデータと認められる場合には、処理はステップＳ２６５へ進む。ステップＳ２６５では、メモリコントローラ６２は、書込みを実行しない。したがって、不正なデータがダウンロード領域２０４に書込まれるのを防止できる。ステップＳ２６５を終了すると、このダウンロード処理を終了する。
一方、ステップＳ２６３で“ＹＥＳ”の場合、つまり、ダウンロードしたデータが正規なデータである場合には、メモリコントローラ６２は、ステップＳ２６７で、復号化した２ＫＢｙｔｅのデータを、指定されたページに書き込む。
続いて、ステップＳ２６９で、メモリコントローラ６２は、ｄｌＣＨＧ＿ＭＯＤＥコマンドを受信したか否かを判断する。このｄｌＣＨＧ＿ＭＯＤＥコマンドは、ファイルの書込みが終了したか、または、１ブロックの書込みが終了したときに、ＣＰＵ３４によって発行される。ステップＳ２６９で“ＮＯ”の場合、処理は図２５のステップＳ２５１に戻る。したがって、ファイルの書込みが終了するか、または１ブロックの書込みが終了するまでは、ダウンロードされた所定サイズ（２ＫＢｙｔｅ）のデータのダウンロード領域２０４への書込みが繰返される。
一方、ステップＳ２６９で“ＹＥＳ”の場合、つまり、ゲームモードに遷移させる遷移コマンドを受信した場合には、メモリコントローラ６２は、ステップＳ２７１で、ダウンロードモードからゲームモードに遷移する。モード記憶領域３００には、ゲームモードを示すデータが記憶される。また、ステップＳ２７３で、メモリコントローラ６２は、ステップＳ２０３と同様にして、ダウンロード領域２０４およびゲーム領域２０２を読出しのみ可能状態にする。なお、ダウンロード領域のメモリマップが指定ブロックに変更されているので、インフォメーション領域２００に規定された各領域の境界データ（開始アドレス）に基づいて、ダウンロード領域２０４を元に戻し、当該ダウンロード領域２０４に対して読出しのみ可能状態を示すデータを設定する。
さらに、ステップＳ２７５で、メモリコントローラ６２は、インフォメーション領域２００の記憶領域２１４から読み出したキー１を復号化して、キー２に代えて内部ＲＡＭ６６のキー記憶領域３０２にキー１を展開する。ステップＳ２７５を終了すると、処理はステップＳ２０７に戻る。ダウンロードするファイルの書込みが終了していない場合には、ダウンロード処理がゲームモードから再び実行されて、残りのデータの書込みが行われることとなる。
図２７から図２９には、ダウンロード処理におけるサーバ１０２の動作の一例が示される。ダウンロード処理を開始すると、サーバ１０２のＣＰＵは、ステップＳ３０１で、ユニークＩＤとゲームＩＤとを受信したか否かを判断する。ダウンロード処理では、最初にゲーム装置１０からメモリカード２８のユニークＩＤとゲームＩＤとがネットワーク１０６を介して送信されるので、このステップＳ３０１でその受信を待機する。
ステップＳ３０１で“ＹＥＳ”の場合、サーバ１０２のＣＰＵは、ステップＳ３０３で、受信したユニークＩＤおよびゲームＩＤをＲＡＭの記憶領域４０４および記憶領域４０６に記憶する。
続いて、ステップＳ３０５で、サーバ１０２のＣＰＵは、データ（暗号化された乱数およびユニークＩＤ）を受信したか否かを判断する。メモリカード２８の認証のために、最初のユニークＩＤの送信の後にゲーム装置１０から上記データが送信されるので、このステップＳ３０５でその受信を待機する。
ステップＳ３０５で“ＹＥＳ”の場合には、サーバ１０２のＣＰＵは、ステップＳ３０７で、受信したデータ（暗号化された乱数およびユニークＩＤ）を、ユニークＩＤに対応するキー１で復号化する。具体的には、受信データは、メモリカード２８のメモリコントローラ６２によってキー１で暗号化されているので、ＣＰＵは、記憶領域４０４の最初に受信したユニークＩＤに対応するキー１、２および３をデータベースから読み出して、記憶領域４０８に記憶する。そして、そのキー１で受信データを復号化する。これによって、乱数およびユニークＩＤを取得することができ、取得された乱数およびユニークＩＤは記憶領域４１０に記憶される。
そして、ステップＳ３０９で、サーバ１０２のＣＰＵは、記憶領域４１０に記憶された復号化されたユニークＩＤが、記憶領域４０４に記憶された初めのユニークＩＤと一致するか否かを判断する。
ステップＳ３０９で“ＹＥＳ”の場合、つまり、メモリカード２８が正規のカードであると認められる場合には、サーバ１０２のＣＰＵは、ステップＳ３１１でメモリカード２８が正規カードであることを示すデータをネットワーク１０６を介してゲーム装置１０に送信する。ステップＳ３１１を終了すると、処理は図２８のステップＳ３１５へ進む。
一方、ステップＳ３０９で“ＮＯ”の場合、つまり、メモリカード２８が正規のカードであるとは認められない場合には、サーバ１０２のＣＰＵは、ステップＳ３１３でメモリカード２８が正規カードではないことを示すデータをゲーム装置１０に送信する。そして、このダウンロード処理を終了する。
図２８のステップＳ３１５では、サーバ１０２のＣＰＵは、ステップＳ３１５でブロックアドレスを受信したか否かを判断する。ステップＳ３１１の送信に応じて、ゲーム装置１０からブロックアドレスが送信されるので、ステップＳ３１５でその受信を待機する。
ステップＳ３１５で“ＹＥＳ”の場合、サーバ１０２のＣＰＵは、ステップＳ３１７で受信したブロックアドレスを記憶領域４１２に記憶する。続いて、ステップＳ３１９で、サーバ１０２のＣＰＵは、ブロックアドレスならびにユニークＩＤおよび乱数を用いて、ｄｓＣＨＧ＿ＭＯＤＥコマンドを生成する。このｄｓＣＨＧ＿ＭＯＤＥコマンドは、ダウンロードモードに遷移させるための遷移コマンドである。ｄｓＣＨＧ＿ＭＯＤＥコマンドにおいてはブロックアドレスが指定され、ダウンロードモードでは、この指定されたブロックアドレスへの書込みが可能にされることとなる。また、ｄｓＣＨＧ＿ＭＯＤＥコマンドには、記憶領域４１０の乱数およびユニークＩＤが含められる。
また、ステップＳ３２１で、サーバ１０２のＣＰＵは、生成したｄｓＣＨＧ＿ＭＯＤＥコマンドを、ユニークＩＤに対応するキー１を用いて暗号化する。そして、ステップＳ３２３で、サーバ１０２のＣＰＵは、暗号化されたｄｓＣＨＧ＿ＭＯＤＥコマンドをゲーム装置１０に送信する。
続いて、ステップＳ３２５で、サーバ１０２のＣＰＵは、データ（暗号化された乱数およびユニークＩＤ）をゲーム装置１０から受信したか否かを判断する。メモリコントローラ６２はダウンロードモードに遷移すると、乱数およびユニークＩＤをキー２で暗号化してサーバ１０２に送信するので、このステップＳ３２５でその受信を待機する。
ステップＳ３２５で“ＹＥＳ”の場合、つまり、上記データ（暗号化された乱数およびユニークＩＤ）を受信した場合には、サーバ１０２のＣＰＵは、ステップＳ３２７で、受信したデータ（暗号化された乱数およびユニークＩＤ）を、ユニークＩＤに対応するキー２で復号化する。これによって取得された乱数およびユニークＩＤは、記憶領域４１０に記憶される。ステップＳ３２７を終了すると、処理は図２９のステップＳ３２９へ進む。
図２９のステップＳ３２９では、サーバ１０２のＣＰＵは、書込みファイルを準備する。具体的には、データベースに記憶されたダウンロード用データから所定のデータを読み出して、ＲＡＭの記憶領域４１４に記憶する。書込みファイルは、たとえば、ユニークＩＤに対応するファイルであってよいし、ゲームＩＤに対応するファイルであってよいし、あるいは、ユニークＩＤやゲームＩＤによらない所定のファイルであってよい。ステップＳ３３１では、サーバ１０２のＣＰＵは、書込みファイルのファイルデータ量をゲーム装置１０に送信する。
続いて、ステップＳ３３３で、サーバ１０２のＣＰＵは、書込みファイルから所定サイズ（この実施例では２ＫＢｙｔｅ）のデータを取り出す。書込みファイルのデータは所定サイズごとに分けて送信される。
ステップＳ３３５で、サーバ１０２のＣＰＵは、２ＫＢｙｔｅのデータについて、８ＢｙｔｅのＭＩＣを、ユニークＩＤに対応するキー３で算出する。なお、ＭＩＣ算出の初期値として、記憶領域４１０の乱数およびユニークＩＤが使用される。続くステップＳ３３７で、サーバ１０２のＣＰＵは、２ＫＢｙｔｅのデータに８ＢｙｔｅのＭＩＣを追加する。そして、ステップＳ３３９で、サーバ１０２のＣＰＵは、２ＫＢｙｔｅ＋８Ｂｙｔｅのデータを、ユニークＩＤに対応するキー２で暗号化する。なお、暗号化の初期値として、記憶領域４１０のユニークＩＤおよび乱数が使用される。ステップＳ３４１で、サーバ１０２のＣＰＵは、暗号化された２ＫＢｙｔｅ＋８Ｂｙｔｅのデータをゲーム装置１０に送信する。
続くステップＳ３４３で、サーバ１０２のＣＰＵは、ファイルの送信が終了したか、または、１ブロックの送信が終了したかを判断する。なお、ファイルの送信か終了したかは、書込みファイルのデータ量とデータ送信量の累積とに基づいて判断することができる。ステップＳ３４３で“ＮＯ”の場合には、つまり、１ブロックの送信が終了せず、または、ファイルの送信が終了していない場合には、処理はステップＳ３３３に戻って、所定サイズのデータの送信のための処理を繰返す。
一方、ステップＳ３４３で“ＹＥＳ”の場合には、サーバ１０２のＣＰＵは、ステップＳ３４５でファイルの送信が終了したか否かを判断する。ステップＳ３４５で“ＮＯ”の場合、つまり、１ブロック単位のデータの送信を終了したが書込みファイルのすべてのデータの送信を終えていない場合には、処理は図２７のステップＳ３０５に戻る。メモリコントローラ６２がゲームモードにある場合のダウンロード処理から繰返すことによって、次のブロックへのファイルの書込みを行う。一方、ステップＳ３４５で“ＹＥＳ”であれば、ファイルの書込みを終了したので、ダウンロード処理を終了する。
バックアップ領域２０６に対するセキュリティシステムとしてのゲーム装置１０のバックアップ処理の動作について図３０から図３３のフロー図を参照しながら説明する。
図３０はバックアップ書込み処理におけるゲーム装置１０の動作の一例を示す。バックアップ領域２０６への書込み処理を開始すると、ステップＳ４０１で、ＣＰＵ３４は、書き込むデータをＲＡＭ４２に準備する。この書き込むデータは、ＣＰＵ３４がゲーム処理で生成したバックアップデータであり、記憶領域５１０に記憶される。
次に、ステップＳ４０３で、ＣＰＵ３４は、書き込むデータにパリティを付ける。図１５に示したように、この実施例では、各バイトデータが「７ビットのデータ」＋「パリティビット（１ビット）」のフォーマットとなるようにして、パリティ付きデータが生成される。つまり、各バイトの先頭７ビットは、生成されたバックアップデータであり、最終ビットに先頭７ビットのパリティが追加される。生成されたパリティ付きデータは、記憶領域５１２に記憶される。
続いて、ステップＳ４０５で、ＣＰＵ３４は、バックアップ領域２０６の空き領域を確認し、書き込むブロックアドレスを決定する。なお、フラッシュメモリ６４の記憶領域のうち、どの領域が使用され、またはどの領域が空き領域であるかなどの情報は、たとえばインフォメーション領域２００にヘッダ情報として記憶されているので、ＣＰＵ３４は当該ヘッダ情報に基づいてフラッシュメモリ６４の管理データを生成し、当該管理データに基づいて、バックアップ領域２０６における空き領域を確保して、書き込むブロックアドレスを決定する。決定されたブロックアドレスは、記憶領域５１４に記憶される。
そして、ステップＳ４０７で、ＣＰＵ３４は、ｇＣＨＧ＿ＢＫ＿ＭＯＤＥコマンドをメモリカード２８に発行する。このｇＣＨＧ＿ＢＫ＿ＭＯＤＥコマンドは、バックアップモードに遷移させるための遷移コマンドである。この遷移コマンドにおいて、書き込むブロックアドレスが指定される。なお、メモリコントローラ６２は、この遷移コマンドに応じてバックアップモードに遷移し、バックアップ領域２０６のうち指定ブロックのみがアクセス可能にされる。
続くステップＳ４０９で、ＣＰＵ３４は、パリティ付きデータを書き込むためのライトコマンドをメモリカード２８に発行する。このライトコマンドは、書き込もうとしているパリティ付きデータを含む。上述のダウンロード領域２０４への書込みの場合と同様に所定サイズずつデータが書き込まれるように、たとえば、ライトコマンドには所定サイズのデータを添付する。このライトコマンドに応じて、メモリコントローラ６２は、データをバックアップ領域２０６の指定ブロックに書き込む。
そして、ステップＳ４１１で、ＣＰＵ３４は、用意したデータを全て書き終えたか、または、１ブロックのデータを書き終えたかを判断する。なお、用意したデータ（パリティ付きデータ）の書込みか終了したかは、記憶領域５１２に記憶したパリティ付きデータのデータ量とライトコマンドによるデータ送信量の累積とに基づいて判断することができる。ステップＳ４１１で“ＮＯ”の場合には、処理はステップＳ４０９に戻って、ライトコマンドによる書込みを繰返す。
一方、ステップＳ４１１で“ＹＥＳ”の場合には、ＣＰＵ３４は、ステップＳ４１３でｂＣＨＧ＿ＭＯＤＥコマンドをメモリカード２８に発行する。このｂＣＨＧ＿ＭＯＤＥコマンドは、バックアップモードからゲームモードに遷移するための遷移コマンドである。なお、この遷移コマンドに応じて、メモリコントローラ６２はゲームモードに遷移する。
そして、ステップＳ４１５で、ＣＰＵ３４は、用意したデータ（パリティ付きデータ）を全て書き終えたか否かを判断する。ステップＳ４５で“ＮＯ”の場合には、つまり、１ブロックのデータを書き終えたが書込みしていないパリティ付きデータが残っている場合には、処理はステップＳ４０５に戻って、次のブロックへの書込みのための処理を実行する。一方、ステップＳ４１５で“ＹＥＳ”であれば、このバックアップ書込み処理を終了する。
図３１はバックアップ読出し処理におけるゲーム装置１０の動作の一例を示す。バックアップ領域２０６からの読出し処理を開始すると、ステップＳ５０１で、ＣＰＵ３４は、読み出すバックアップデータの格納場所を確認する。なお、読み出すバックアップデータは、ユーザの操作またはプログラム等に従って選択される。各バックアップデータの格納場所に関する情報は、たとえばフラッシュメモリ６４のヘッダ情報に含まれる。
次に、ステップＳ５０３で、ＣＰＵ３４は、読み出すブロックアドレスを決定する。読み出すバックアップデータの格納場所から、読み出すブロックアドレスを決定し、記憶領域５１６に記憶する。
続いて、ステップＳ５０５で、ＣＰＵ３４はｇＣＨＧ＿ＢＫ＿ＭＯＤＥコマンドをメモリカード２８に発行する。このｇＣＨＧ＿ＢＫ＿ＭＯＤＥコマンドは、バックアップモードに遷移するための遷移コマンドである。この遷移コマンドではステップＳ５０３で決定された読み出すブロックアドレスが指定される。この遷移コマンドに応じて、メモリコントローラ６２はバックアップモードに遷移し、指定ブロックのみアクセス可能にされる。
ステップＳ５０７では、ＣＰＵ３４は、読み出すページアドレスを指定してリードコマンドをメモリカード２８に発行する。このリードコマンドは、データの読出しを指示するためのコマンドである。たとえば、指定されたページのデータの読出しを指示することができる。なお、このリードコマンドに応じて、メモリコントローラ６２は、指定ページのデータをバックアップ領域２０６から読み出す。そして、当該読み出したデータが正当なデータであれば、当該データがＣＰＵ３４に出力される。
ステップＳ５０９では、ＣＰＵ３４は、データをメモリカード２８から受信したか否かを判断する。上述のように、読み出したデータが正当であれば当該データが出力されるので、このステップＳ５０９では、その受信を待機する。なお、メモリコントローラ６２の読み出したデータが正当でないと判定される場合、イリーガルモードに遷移してデータが出力されないので、このバックアップ読出し処理は正常に動作しなくなる。
ステップＳ５０９で“ＹＥＳ”の場合には、ＣＰＵ３４は、ステップＳ５１１で、受信したデータ、すなわち読み出したデータをＲＡＭ４２の記憶領域５１８に記憶する。そして、ステップＳ５１３で、ＣＰＵ３４は、読み出すデータをすべて読み出したか、または、１ブロックの読出しが終了したかを判断する。なお、読み出すデータを全て読み出したかどうかは、読み出すデータのデータ量とリードコマンドによる読出しデータ量の累積とに基づいて判断することができる。ステップＳ５１３で“ＮＯ”の場合には、処理はステップＳ５０７に戻り、リードコマンドによる読出し処理を繰返す。
一方、ステップＳ５１３で“ＹＥＳ”の場合には、ＣＰＵ３４は、ステップＳ５１５で、ｂＣＨＧ＿ＭＯＤＥコマンドをメモリカード２８に発行する。このｂＣＨＧ＿ＭＯＤＥコマンドは、ゲームモードに遷移するための遷移コマンドである。この遷移コマンドに応じて、メモリコントローラ６２はゲームモードに遷移する。
そして、ステップＳ５１７で、ＣＰＵ３４は、読み出すデータを全て読み出したか否かを判断する。ステップＳ５１７で“ＮＯ”の場合、つまり、１ブロックの読出しを終了したが読み出すべきデータが残っている場合には、処理はステップＳ５０３に戻って、次のブロックの読出しのための処理を実行する。一方、ステップＳ５１７で“ＹＥＳ”であれば、このバックアップ読出し処理を終了する。
図３２および図３３はバックアップ処理におけるメモリコントローラ６２の動作の一例を示す。図３２のステップＳ６０１で、メモリコントローラ６２は、ｇＣＨＧ＿ＢＫ＿ＭＯＤＥコマンドを受信したか否かを判断する。このｇＣＨＧ＿ＢＫ＿ＭＯＤＥコマンドは、バックアップモードへの遷移コマンドである。ステップＳ６０１で“ＮＯ”の場合、このバックアップ処理を終了する。
一方、ステップＳ６０１で“ＹＥＳ”の場合、メモリコントローラ６２は、ステップＳ６０３でゲームモードからバックアップモードに遷移する。内部ＲＡＭ６６のモード記憶領域３００にはバックアップモードを示すデータが記憶される。続くステップＳ６０５で、メモリコントローラ６２は、バックアップ領域２０６のうち、ｇＣＨＧ＿ＢＫ＿ＭＯＤＥコマンドで指定されたブロックのみをアクセス可能状態にする。たとえば、メモリコントローラ６２は、フラッシュメモリ６４の各領域に対するアクセスの状態を示すデータを内部ＲＡＭ６６に記憶しておき、当該データにおいて、バックアップ領域２０６のメモリマップを指定ブロックのみに変更するとともに、当該バックアップ領域のみについて、アクセス可能状態であることを示すデータを設定する。
そして、メモリコントローラ６２は、バックアップモードで受信したコマンドに応じた処理を実行する。すなわち、ステップＳ６０７で、メモリコントローラ６２は、ライトコマンドを受信したか否かを判断する。ステップＳ６０７で“ＹＥＳ”の場合、メモリコントローラ６２は、ステップＳ６０９で、ライトコマンドとともに受信したデータを、遷移コマンドで指定されたバックアップ領域２０６のブロックに書き込む。
ステップＳ６０９を終了し、または、ステップＳ６０７で“ＮＯ”の場合、ステップＳ６１１で、メモリコントローラ６２は、ｂＣＨＧ＿ＭＯＤＥコマンドを受信したか否かを判断する。ステップＳ６１１で“ＹＥＳ”の場合、つまり、ゲームモードへの遷移コマンドを受信した場合には、メモリコントローラ６２は、ステップＳ６１３で、バックアップモードからゲームモードに遷移する。モード記憶領域３００には、ゲームモードを示すデータを記憶する。続いて、ステップＳ６１５で、メモリコントローラ６２は、バックアップ領域２０６をアクセス不可状態にする。たとえば、フラッシュメモリ６４の各領域に対するアクセスの状態を示すデータにおいて、バックアップ領域のメモリマップを元に戻すととともに、当該バックアップ領域２０６に対してアクセス不可能状態であることを示すデータを設定する。ステップＳ６１５を終了すると、このバックアップ処理を終了する。
一方、ステップＳ６１１で“ＮＯ”の場合、図３３のステップＳ６１７で、メモリコントローラ６２は、リードコマンドを受信したか否かを判断する。ステップＳ６１７で“ＹＥＳ”の場合、メモリコントローラ６２は、ステップＳ６１９で、リードコマンドで指定されたページがアクセス可能なブロック内であるか否かを判断する。アクセス可能なブロックは、バックアップモードへの遷移コマンドで指定されたバックアップ領域２０６内のブロックである。この判定によって、適切な読出し指定が行われたデータに対してのみ、パリティチェックを行うようにすることができ、不正な読出し命令を排除することができる。
ステップＳ６１９で“ＹＥＳ”の場合、メモリコントローラ６２は、ステップＳ６２１で、リードコマンドで指定されたページのパリティをチェックする。具体的には、メモリコントローラ６２は、指定されたページデータを内部ＲＡＭ６６のワークエリアに読出し、各バイトの先頭７ビットのパリティを算出し、当該計算結果を各バイトの最終ビットと比較する。
そして、ステップＳ６２３で、メモリコントローラ６２は、パリティチェックの結果が正しいか否かを判断する。ステップＳ６２３で“ＹＥＳ”の場合、つまり、全バイトについて、算出されたパリティビットと最終ビットとが等しい場合には、メモリコントローラ６２は、ステップＳ６２５で、指定されたページのデータをＣＰＵ３４に出力する。
一方、ステップＳ６２３で“ＮＯ”の場合、つまり、算出されたパリティビットと最終ビットとが等しくないバイトが１つでも検出された場合には、読み出そうとしているデータが不正であると認められるので、メモリコントローラ６２は、ステップＳ６２７でイリーガルモードに遷移する。モード記憶領域３００にはイリーガルモードを示すデータが記憶される。イリーガルモードに遷移すると、メモリコントローラ６２は、読み出したデータを出力しない。したがって、不正データが読み出されて利用されるのを防止できる。
なお、ステップＳ６１７で“ＮＯ”の場合、ステップＳ６１９で“ＮＯ”の場合、またはステップＳ６２５を終了すると、処理は図３２のステップＳ６０７に戻る。
なお、上述の実施例では、ゲーム装置１０に装着可能なメモリカード２８のフラッシュメモリ６４にダウンロード領域２０４を設けるようにしたが、他の実施例では、ゲーム装置１０のハウジング１６内にフラッシュメモリ６４を設けて、当該フラッシュメモリ６４にダウンロード領域２０４を設けるようにしてもよい。その場合、メモリコントローラ６２もハウジング１６内に設けられる。また、バックアップ領域２０６に関しても、同様に、ゲーム装置１０のハウジング１６内のフラッシュメモリ６４に設けるようにしてよい。なお、フラッシュメモリ６４をゲーム装置１０のハウジング１６に内蔵する場合、ユニークＩＤはゲーム装置１０の識別情報であってもよい。
また、上述の各実施例では、メモリカード２８ごとの暗号とするために、メモリカード２８のユニークＩＤに対応するキー１、２および３を準備して、フラッシュメモリ６４およびサーバ１２に予め記憶するようにした。しかし、他の実施例では、ゲームタイトル（ゲームプログラム）またはアプリケーションの種類（アプリケーションプログラム）ごとの暗号とするようにしてもよく、その場合には、ゲームＩＤ（アプリケーションＩＤ）に対応するキー１、２および３を準備して、フラッシュメモリ６４およびサーバ１２に予め記憶する。そして、暗号化および復号化の際には、ゲームＩＤに対応するキーを用いるようにする。
また、上述の各実施例では、フラッシュメモリ６４にダウンロード領域２０４とバックアップ領域２０６の２つの書込み領域を設けて、一方のダウンロード領域２０４に対してモード遷移と書込みデータの暗号化による段階的なセキュリティをかけ、他方のバックアップ領域２０６に対しては書込みデータのフォーマットによってセキュリティをかけるようにしていた。しかし、他の実施例では、フラッシュメモリ６４にはいずれか一方の書込み領域のみを設けるようにしてよい。
この発明が詳細に説明され図示されたが、それは単なる図解および一例として用いたものであり、限定であると解されるべきではないことは明らかであり、この発明の精神および範囲は添付されたクレームの文言によってのみ限定される。
【図１】
2009031244.tif 000003
【図２】
2009031244.tif 000004
【図３】
2009031244.tif 000005
【図４】
2009031244.tif 000006
【図５】
2009031244.tif 000007
【図６】
2009031244.tif 000008
【図７】
2009031244.tif 000009
【図８】
2009031244.tif 000010
【図９】
2009031244.tif 000011
【図１０】
2009031244.tif 000012
【図１１】
2009031244.tif 000013
【図１２】
2009031244.tif 000014
【図１３】
2009031244.tif 000015
【図１４】
2009031244.tif 000016
【図１５】
2009031244.tif 000017
【図１６】
2009031244.tif 000018
【図１７】
2009031244.tif 000019
【図１８】
2009031244.tif 000020
【図１９】
2009031244.tif 000021
【図２０】
2009031244.tif 000022
【図２１】
2009031244.tif 000023
【図２２】
2009031244.tif 000024
【図２３】
2009031244.tif 000025
【図２４】
2009031244.tif 000026
【図２５】
2009031244.tif 000027
【図２６】
2009031244.tif 000028
【図２７】
2009031244.tif 000029
【図２８】
2009031244.tif 000030
【図２９】
2009031244.tif 000031
【図３０】
2009031244.tif 000032
【図３１】
2009031244.tif 000033
【図３２】
2009031244.tif 000034
【図３３】
2009031244.tif 000035
【国際調査報告】
2009031244.tif 000036
2009031244.tif 000037
2009031244.tif 000038
2009031244.tif 000039
2009031244.tif 000040
2009031244.tif 000041
2009031244.tif 000042
2009031244.tif 000043