(57)【特許請求の範囲】
【請求項１】
読み書き可能なメモリと；
前記メモリから読み出されたデータに含まれるコードを解析するコード解析部と；
前記メモリに対するアドレス動作を解析するアドレス解析部と；
前記コード解析部と前記アドレス解析部の解析結果を参照し、コードに合致したアドレス動作が行われているか否かを判定するエラー検出部と；
前記エラー検出部の判定結果に基づいて、前記メモリに格納されたデータの出力を禁止する出力制御部と；
前記メモリの特定領域に書き込まれたプロテクトイネーブルコードに基づいて、前記出力制御部の動作可否を制御するプロテクトイネーブル制御部と；
を有して成ることを特徴とする記憶装置。
【請求項２】
前記出力制御部は、前記エラー検出部の判定結果に基づいて、前記メモリから読み出されたデータと所定のダミーデータのいずれか一を選択して出力するセレクタを有して成ることを特徴とする請求項１に記載の記憶装置。
【請求項３】
前記ダミーデータは、固定値または乱数値であることを特徴とする請求項２に記載の記憶装置。
【請求項４】
前記メモリは、データを暗号化して格納するものであり、
前記出力制御部は、前記メモリから読み出されたデータを出力する際に、前記エラー検出部の判定結果に基づいて、所定の鍵情報を用いて正しい暗号解読処理を行うか、ダミーの鍵情報を用いて前記正しい暗号解読処理とは異なる暗号解読処理を行うかを決定するデコーダを有して成ることを特徴とする請求項１に記載の記憶装置。
【請求項５】
前記デコーダは、前記正しい暗号解読処理とは異なる暗号解読処理を行う場合、前記ダミーの鍵情報を複数切り替えながら暗号解読処理を行うことを特徴とする請求項４に記載の記憶装置。
【請求項６】
前記出力制御部は、前記メモリから読み出されたデータを出力する際に、前記エラー検出部の判定結果に基づいて、所定の鍵情報を用いて正しい暗号化処理を行うか、ダミーの鍵情報を用いて前記正しい暗号化処理とは異なる暗号化処理を行うかを決定するエンコーダを有して成ることを特徴とする請求項１に記載の記憶装置。
【請求項７】
前記エンコーダは、前記正しい暗号化処理とは異なる暗号化処理を行う場合、前記ダミーの鍵情報を複数切り替えながら暗号化処理を行うことを特徴とする請求項６に記載の記憶装置。
【請求項８】
前記出力制御部は、前記エラー検出部の判定結果に基づいて、前記メモリに対するアドレス動作を禁止するアドレス制御部を有して成ることを特徴とする請求項１に記載の記憶装置。
【請求項９】
前記コード解析部は、実行時にアドレスのジャンプ動作を伴う所定の監視対象コードを検出するものであり、
前記アドレス解析部は、アドレスのインクリメント動作を検出するものであり、
前記エラー検出部は、前記監視対象コードの実行時にアドレスのインクリメント動作が検出された場合にエラーフラグを立てるものであることを特徴とする請求項１〜請求項８のいずれかに記載の記憶装置。
【請求項１０】
前記コード解析部は、前記監視対象コードのうち、実行時の条件に応じてアドレスのジャンプ動作を伴うか否かが不明であるものを検出した場合、前記エラー検出部に対して、その監視対象コードの実行時に得られるエラーフラグをマスクするように指示することを特徴とする請求項９に記載の記憶装置。
【請求項１１】
前記コード解析部は、前記エラー検出部に対するマスク指示が所定回数に達した場合、以後のマスク指示を中止することを特徴とする請求項１０に記載の記憶装置。
【請求項１２】
前記メモリの読み出し開始時における初期アドレスが予め設定された所定値と一致しているか否かを判定する初期アドレスチェック部を有して成り、
前記出力制御部は、前記エラー検出部と前記初期アドレスチェック部双方の判定結果に基づいて、前記メモリに格納されたデータの出力を禁止することを特徴とする請求項１〜請求項１１のいずれかに記載の記憶装置。
【請求項１３】
請求項１〜請求項１２のいずれかに記載の記憶装置に対して所望のデータを書き込むためのデータ書込装置であって、
前記データの書き込みに際して、
前記メモリの格納内容を全消去するステップと；
前記メモリの特定領域以外に前記データを書き込むステップと；
前記データのベリファイを行うステップと；
前記ベリファイでエラーがないことを確認して前記メモリの特定領域に前記プロテクトイネーブルコードを書き込むステップと；
を実行することを特徴とするデータ書込装置。
【請求項１４】
前記一連のフローを実行する前に、
前記メモリの格納内容を全消去するステップと；
前記メモリの特定領域以外にテストデータを書き込むステップと；
前記テストデータのベリファイを行うステップと；
前記ベリファイでエラーがないことを確認して前記メモリの特定領域に前記プロテクトイネーブルコードを書き込むステップと；
前記テストデータの再ベリファイを行うステップと；
前記再ベリファイでエラーとなることを確認して前記一連のフローに移行するステップと；
を実行することを特徴とする請求項１３に記載のデータ書込装置。
【請求項１５】
サーバ装置との通信を行う通信機能部を有して成り、前記サーバ装置に格納されているデータを前記記憶装置に書き込むことを特徴とする請求項１４に記載のデータ書込装置。
【請求項１６】
前記テストデータを格納する記憶部を有して成ることを特徴とする請求項１５に記載のデータ書込装置。
【請求項１７】
コンピュータによって実行され、前記コンピュータを請求項１３〜請求項１６いずれかに記載のデータ書込装置として機能させるためのプログラム。
【請求項１８】
請求項１〜請求項１２のいずれかに記載の記憶装置に対して所望のデータを書き込むためのデータ書込方法であって、
前記メモリの格納内容を全消去するステップと；
前記メモリの特定領域以外に前記データを書き込むステップと；
前記データのベリファイを行うステップと；
前記ベリファイでエラーがないことを確認して前記メモリの特定領域に前記プロテクトイネーブルコードを書き込むステップと；
を有して成ることを特徴とするデータ書込方法。
【請求項１９】
前記一連のフローに先立ち、
前記メモリの格納内容を全消去するステップと；
前記メモリの特定領域以外にテストデータを書き込むステップと；
前記テストデータのベリファイを行うステップと；
前記ベリファイでエラーがないことを確認して前記メモリの特定領域に前記プロテクトイネーブルコードを書き込むステップと；
前記テストデータの再ベリファイを行うステップと；
前記再ベリファイでエラーとなることを確認して前記一連のフローに移行するステップと；
を有して成ることを特徴とする請求項１８に記載のデータ書込方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不正コピー防止機能を備えた記憶装置、及び、これにデータを書き込むデータ書込装置に関するものである。
【背景技術】
【０００２】
従来より、不正コピー防止機能を備えた記憶装置が種々開示・提案されている（例えば特許文献１や特許文献２を参照）。なお、従来の記憶装置の多くは、所定の鍵情報を用いて暗号化されたデータを格納する構成とされていた。
【特許文献１】特開２００３−５９１７８号公報
【特許文献２】特開２００２−３７３３２０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
確かに、上記従来の記憶装置であれば、格納されたデータが不正コピーされた場合であっても、所定の鍵情報を用いた暗号解読処理が行われない限り、その内容は不明なものとなるため、不正コピーされたデータの利用は困難であった。
【０００４】
しかしながら、上記従来の記憶装置は、あくまで、不正コピーされたデータの利用を困難とするものであって、格納されたデータの読み出しは自由であった。そのため、高速なコンピュータを用いて不正コピーされたデータが解析され、その暗号が解読されてしまった場合には、以後、その内容を自由にコピーされてしまうという問題があった。
【０００５】
本発明は、上記の問題点に鑑み、不正コピーを適切に防止するとともに、データ書込時におけるベリファイを支障なく実行することが可能な記憶装置、及び、これにデータを書き込むデータ書込装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、本発明に係る記憶装置は、読み書き可能なメモリと；前記メモリから読み出されたデータに含まれるコードを解析するコード解析部と；前記メモリに対するアドレス動作を解析するアドレス解析部と；前記コード解析部と前記アドレス解析部の解析結果を参照し、コードに合致したアドレス動作が行われているか否かを判定するエラー検出部と；前記エラー検出部の判定結果に基づいて、前記メモリに格納されたデータの出力を禁止する出力制御部と；前記メモリの特定領域に書き込まれたプロテクトイネーブルコードに基づいて、前記出力制御部の動作可否を制御するプロテクトイネーブル制御部と；を有して成る構成（第１の構成）とされている。
【０００７】
なお、上記第１の構成から成る記憶装置において、前記出力制御部は、前記エラー検出部の判定結果に基づいて、前記メモリから読み出されたデータと所定のダミーデータのいずれか一を選択して出力するセレクタを有して成る構成（第２の構成）にするとよい。
【０００８】
また、上記第２の構成から成る記憶装置において、前記ダミーデータは、固定値または乱数値である構成（第３の構成）にするとよい。
【０００９】
また、上記第１の構成から成る記憶装置において、前記メモリは、データを暗号化して格納するものであり、前記出力制御部は、前記メモリから読み出されたデータを出力する際に、前記エラー検出部の判定結果に基づいて、所定の鍵情報を用いて正しい暗号解読処理を行うか、ダミーの鍵情報を用いて前記正しい暗号解読処理とは異なる暗号解読処理を行うかを決定するデコーダを有して成る構成（第４の構成）にするとよい。
【００１０】
また、上記第４の構成から成る記憶装置において、前記デコーダは、前記正しい暗号解読処理とは異なる暗号解読処理を行う場合、前記ダミーの鍵情報を複数切り替えながら暗号解読処理を行う構成（第５の構成）にするとよい。
【００１１】
また、上記第１の構成から成る記憶装置において、前記出力制御部は、前記メモリから読み出されたデータを出力する際に、前記エラー検出部の判定結果に基づいて、所定の鍵情報を用いて正しい暗号化処理を行うか、ダミーの鍵情報を用いて前記正しい暗号化処理とは異なる暗号化処理を行うかを決定するエンコーダを有して成る構成（第６の構成）にするとよい。
【００１２】
また、上記第６の構成から成る記憶装置において、前記エンコーダは、前記正しい暗号化処理とは異なる暗号化処理を行う場合、前記ダミーの鍵情報を複数切り替えながら暗号化処理を行う構成（第７の構成）にするとよい。
【００１３】
また、上記第１の構成から成る記憶装置において、前記出力制御部は、前記エラー検出部の判定結果に基づいて、前記メモリに対するアドレス動作を禁止するアドレス制御部を有して成る構成（第８の構成）にするとよい。
【００１４】
また、上記第１〜第８いずれかの構成から成る記憶装置にて、前記コード解析部は、実行時にアドレスのジャンプ動作を伴う所定の監視対象コードを検出するものであり、前記アドレス解析部は、アドレスのインクリメント動作を検出するものであり、前記エラー検出部は、前記監視対象コードの実行時にアドレスのインクリメント動作が検出された場合にエラーフラグを立てるものである構成（第９の構成）にするとよい。
【００１５】
また、上記第９の構成から成る記憶装置において、前記コード解析部は、前記監視対象コードのうち、実行時の条件に応じてアドレスのジャンプ動作を伴うか否かが不明であるものを検出した場合、前記エラー検出部に対して、その監視対象コードの実行時に得られるエラーフラグをマスクするように指示する構成（第１０の構成）にするとよい。
【００１６】
また、上記第１０の構成から成る記憶装置にて、前記コード解析部は、前記エラー検出部に対するマスク指示が所定回数に達した場合、以後のマスク指示を中止する構成（第１１の構成）にするとよい。
【００１７】
また、上記第１１の構成から成る記憶装置は、前記メモリの読み出し開始時における初期アドレスが予め設定された所定値と一致しているか否かを判定する初期アドレスチェック部を有して成り、前記出力制御部は、前記エラー検出部と前記初期アドレスチェック部双方の判定結果に基づいて、前記メモリに格納されたデータの出力を禁止する構成（第１２の構成）にするとよい。
【００１８】
また、本発明に係るデータ書込装置は、上記第１〜第１２いずれかの構成から成る記憶装置に対して所望のデータを書き込むためのデータ書込装置であって、前記データの書き込みに際して、前記メモリの格納内容を全消去するステップと；前記メモリの特定領域以外に前記データを書き込むステップと；前記データのベリファイを行うステップと；前記ベリファイでエラーがないことを確認して前記メモリの特定領域に前記プロテクトイネーブルコードを書き込むステップと；を実行する構成（第１３の構成）とされている。
【００１９】
また、上記第１３の構成から成るデータ書込装置については、前記一連のフローを実行する前に、前記メモリの格納内容を全消去するステップと；前記メモリの特定領域以外にテストデータを書き込むステップと；前記テストデータのベリファイを行うステップと；前記ベリファイでエラーがないことを確認して前記メモリの特定領域に前記プロテクトイネーブルコードを書き込むステップと；前記テストデータの再ベリファイを行うステップと；前記再ベリファイでエラーとなることを確認して前記一連のフローに移行するステップと；を実行する構成（第１４の構成）にするとよい。
【００２０】
また、上記第１４の構成から成るデータ書込装置は、サーバ装置との通信を行う通信機能部を有して成り、前記サーバ装置に格納されているデータを前記記憶装置に書き込む構成（第１５の構成）にするとよい。
【００２１】
また、上記第１５の構成から成るデータ書込装置は、前記テストデータを格納する記憶部を有して成る構成（第１６の構成）にするとよい。
【００２２】
また、本発明に係るデータ書込プログラムは、コンピュータによって実行され、前記コンピュータを上記第１３〜第１６いずれかの構成から成るデータ書込装置として機能させるため構成（第１７の構成）とされている。
【００２３】
また、本発明に係るデータ書込方法は、上記第１〜第１２のいずれかに記載の記憶装置に対して所望のデータを書き込むためのデータ書込方法であって、前記メモリの格納内容を全て消去するステップと；前記メモリの特定領域以外に前記データを書き込むステップと；前記データのベリファイを行うステップと；前記ベリファイでエラーがないことを確認して前記メモリの特定領域に前記プロテクトイネーブルコードを書き込むステップと；を有して成る構成（第１８の構成）とされている。
【００２４】
また、上記第１８の構成から成るデータ書込方法は、前記一連のフローに先立ち、前記メモリの格納内容を全消去するステップと；前記メモリの特定領域以外にテストデータを書き込むステップと；前記テストデータのベリファイを行うステップと；前記ベリファイでエラーがないことを確認して前記メモリの特定領域に前記プロテクトイネーブルコードを書き込むステップと；前記テストデータの再ベリファイを行うステップと；前記再ベリファイでエラーとなることを確認して前記一連のフローに移行するステップと；を有して成る構成（第１９の構成）にするとよい。
【発明の効果】
【００２５】
本発明に係る記憶装置及びデータ書込装置であれば、不正コピーを適切に防止するとともに、データ書込時におけるベリファイを支障なく実行することが可能となる。
【発明を実施するための最良の形態】
【００２６】
まず、本発明に係る記憶装置の第１実施形態について、図１を参照しながら詳細に説明する。図１は、本発明に係る記憶装置の第１実施形態を示すブロック図である。
【００２７】
図１に示すように、本実施形態の記憶装置は、読み書き可能なメモリ１００と、不正コピー防止回路２００と、ライト制御部３００と、セレクタ４００と、バッファ５００と、を有して成る。また、不正コピー防止回路２００は、コードチェック部２０１と、タイミング制御部２０２と、インクリメントチェック部２０３と、エラー検出部２０４と、初期アドレスチェック部２０５と、論理和演算器２０６と、プロテクトイネーブル制御部２０７と、論理積演算器２０８と、セレクタ２０９と、を有して成る。
【００２８】
メモリ１００は、データＤ（ＣＰＵ［Central Processing Unit］に読み出されて実行されるプログラムなど）を不揮発的に格納する手段であり、フラッシュメモリやＥＥＰＲＯＭ［Electrically Erasable and Programmable Read Only Memory］などを用いることができる。なお、メモリ１００に対する書き込み動作及び追記動作は常に可能とされているが、格納内容の消去については、全消去のみ可能（一部消去は不可能）とされている。
【００２９】
コードチェック部２０１は、メモリ１００から読み出されたデータＤに含まれるコードを解析するコード解析部である。より具体的に述べると、コードチェック部２０１は、メモリ１００から読み出されたデータＤをモニタして、実行時にアドレスのジャンプ動作を伴う所定の監視対象コード（ジャンプ命令のほか、コール命令やアドレス指定付きのロード命令などを含む）を検出し、その解析結果をタイミング制御部２０２やエラー検出部２０４に伝達する。なお、メモリ１００に格納されたデータＤに対して暗号化処理や圧縮処理が施されている場合、コードチェック部２０１は、上記したコード解析機能に加えて、データＤの暗号解読処理機能や伸長処理機能を具備する必要がある。
【００３０】
タイミング制御部２０２は、データＤの読み出しを指示するリード信号ＲＤの入力を受けて動作し、コードチェック部２０１で得られた解析結果に基づいて、上記した監視対象コードの実行タイミングをインクリメントチェック部２０３やエラー検出部２０４に伝達する手段である。
【００３１】
インクリメントチェック部２０３は、メモリ１００に対するアドレス動作を解析するアドレス解析部である。より具体的に述べると、インクリメントチェック部２０３は、メモリ１００に与えられるアドレス信号ＡＤＤをモニタして、前のアドレスと現在のアドレスを比較し、アドレスのインクリメント動作（ここでは、アドレスを１つだけインクリメントする動作を指すものとする）が行われたか否かを検出する。
【００３２】
エラー検出部２０４は、コードチェック部２０１とインクリメントチェック部２０３の解析結果を参照し、コードに合致したアドレス動作が行われているか否かを判定する手段である。より具体的に述べると、エラー検出部２０４は、前記監視対象コードの実行時にアドレスのインクリメント動作が検出された場合にエラーフラグを立てる。すなわち、エラー検出部２０４は、アドレスのジャンプ動作が行われるべきタイミングでアドレスのインクリメント動作が行われたことを検出したときに、不正コピーのおそれがあると判断して、論理和演算器２０６への出力信号をローレベルからハイレベルに変遷する。
【００３３】
初期アドレスチェック部２０５は、メモリ１００に与えられるアドレス信号ＡＤＤをモニタして、メモリ１００の読み出し開始時における初期アドレスが予め設定された所定値と一致しているか否かを判定し、その不一致が検出された場合にエラーフラグを立てる手段である。すなわち、初期アドレスチェック部２０５は、所定値以外のアドレスからデータＤの読み出しが開始されたことを検出したときに、不正コピーのおそれがあると判断して、論理和演算器２０６への出力信号をローレベルからハイレベルに変遷する。
【００３４】
論理和演算器２０６は、エラー検出部２０４の出力信号と初期アドレスチェック部２０５の出力信号の論理和演算を行い、その演算結果を論理積演算器２０８に出力する手段である。すなわち、論理和演算器２０６の出力信号は、エラー検出部２０４の出力信号と初期アドレスチェック部２０５の出力信号の両方がローレベルであるときにのみローレベルとなり、その余の場合にはハイレベルとなる。
【００３５】
プロテクトイネーブル制御部２０７は、メモリ１００の特定領域に書き込まれたプロテクトイネーブルコードに基づいて、不正コピー防止回路２００によるプロテクト動作の可否（本実施形態ではセレクタ２０９の動作可否）を制御するためのイネーブル信号を論理積演算器２０８に出力する手段である。なお、上記のイネーブル信号は、プロテクト動作許可時にはハイレベルとされ、プロテクト動作禁止時にはローレベルとされる。
【００３６】
また、プロテクトイネーブルコードの読み出しについては、メモリ１００に対するデータの書込動作時や、記憶装置の起動時（リセット解除時）に行えばよい。その際、プロテクトイネーブル制御部２０７は、メモリ１００の特定領域にアクセスするためのアドレス信号を独自に生成し、これを外部入力されるアドレス信号ＡＤＤに代えてメモリ１００に出力することで、プロテクトイネーブルコードの読み出しを行う。
【００３７】
論理積演算器２０８は、論理和演算器２０６の出力信号とプロテクトイネーブル制御部２０７の出力信号の論理積演算を行い、その演算結果をセレクタ２０９の制御信号として出力する手段である。すなわち、セレクタ２０９の制御信号は、プロテクトイネーブル制御部２０７から出力されるイネーブル信号がハイレベルであるとき（すなわち、プロテクト動作許可時）には、論理和演算器２０６の出力信号と同一の論理となり、イネーブル信号がローレベルであるとき（すなわち、プロテクト動作禁止時）には、論理和演算器２０６の出力信号に依ることなくローレベルとなる。
【００３８】
セレクタ２０９は、論理積演算器２０８の出力信号に基づいて、メモリ１００に格納されたデータＤの出力を禁止する出力制御部である。より具体的に述べると、セレクタ２０９は、論理積演算器２０８の出力信号がローレベルであるときには、メモリ１００から読み出されたデータＤを選択して出力する一方、論理積演算器２０８の出力信号がハイレベルであるときには、所定のダミーデータＤＤを選択して出力する。なお、ダミーデータＤＤは、固定値としてもよいし、乱数値としてもよい。
【００３９】
ライト制御部３００は、データＤの書き込みを指示するライト信号ＷＲに基づいて、セレクタ４００の制御信号を出力する手段である。より具体的に述べると、ライト制御部３００は、データＤの書き込みが指示されているときには、メモリ１００の入出力ポートとバッファ５００の出力端との間を導通するように、セレクタ４００の制御信号を生成する一方、データＤの書き込みが指示されていないとき（言い換えれば、データＤの読み出しが指示されているとき）には、メモリ１００の入出力ポートとセレクタ２０９の一入力端との間を導通するように、セレクタ４００の制御信号を生成する。
【００４０】
セレクタ４００は、ライト制御部３００の出力信号に応じて、メモリ１００の入出力ポートをセレクタ２０９の一入力端とバッファ５００の出力端のいずれか一方に接続する手段である。ただし、メモリ１００が入力ポートと出力ポートを別個に有する場合には、セレクタ４００を省略することも可能である。
【００４１】
バッファ５００は、メモリ１００に対して書き込むべきデータを安定して伝達する手段であり、データの書込経路上に設けられている。
【００４２】
次に、上記構成から成る記憶装置のデータ読み出し時における不正コピー防止回路２００のプロテクト動作について詳細な説明を行う。なお、以下の説明では、プロテクトイネーブル制御部２０７で生成されるイネーブル信号がハイレベルとされ、不正コピー防止回路２００のプロテクト動作が許可されているものとする。
【００４３】
メモリ１００に対して正当なアクセスが行われている場合には、予め設定された所定値を初期アドレスとしてデータＤの読み出しが開始され、メモリ１００に対するアドレス動作についても、データＤに含まれるコードに合致したものとなる。従って、エラー検出部２０４と初期アドレスチェック部２０５の出力信号は、いずれもローレベルに維持されるので、論理和演算器２０６の出力信号はローレベルとなり、セレクタ２０９は、メモリ１００から読み出されたデータＤを選択して出力する状態（すなわち、データＤの出力許可状態）となる。
【００４４】
一方、メモリ１００に格納されたデータＤの不正コピーが行われている場合には、データＤに含まれるコードの内容とは何ら関係なく、アドレスのインクリメント動作が行われて、メモリ１００に格納されたデータＤがそのアドレス順に連続して読み出されていく。すなわち、データＤの不正コピー時には、先述の監視対象コードに基づいてアドレスのジャンプ動作が行われるべきタイミングであっても、これを無視してアドレスのインクリメント動作が行われるので、メモリ１００に対するアドレス動作がコードに合致したものではなくなる。このような場合、エラー検出部２０４の出力信号は、ローレベルからハイレベルに遷移されるので、論理和演算器２０６の出力信号はハイレベルとなり、セレクタ２０９は、メモリ１００から読み出されたデータＤではなく、所定のダミーデータＤＤを選択して出力する状態（データＤの出力禁止状態）となる。
【００４５】
また、メモリ１００に格納されたデータＤの不正コピーが行われる場合、予め設定された所定値以外のアドレスからデータＤの読み出しが開始されることもあり得る。このような場合、初期アドレスチェック部２０５の出力信号は、ローレベルからハイレベルに遷移されるので、論理和演算器２０６の出力信号はハイレベルとなり、セレクタ２０９は、エラー検出部２０４の検出結果を待つことなく、所定のダミーデータＤＤを選択して出力する状態となる。
【００４６】
このように、本実施形態の記憶装置であれば、データＤの不正コピーが疑われる状況下において、メモリ１００に格納されたデータＤの出力自体を禁止することができるので、従来構成に比べて、データＤの不正コピーをより適切に防止することが可能となる。
【００４７】
なお、上記構成から成る記憶装置において、コードチェック部２０１は、前記監視対象コードのうち、実行時の条件に応じてアドレスのジャンプ動作を伴うか否かが不明であるものを検出した場合、エラー検出部２０４に対して、その監視対象コードの実行時に得られるエラーフラグをマスクするように指示する構成にするとよい。
【００４８】
このような構成とすることにより、メモリ１００に対して正当なアクセスが行われているにも関わらず、監視対象コードが実行時の条件に応じてアドレスのジャンプ動作を伴わなかった場合であっても、これを誤ってエラーと判断することがなくなるので、データＤの不必要な出力禁止を回避することが可能となる。
【００４９】
ただし、コードチェック部２０１は、エラー検出部２０４に対するマスク指示が所定値に達した場合、以後のマスク指示を中止する構成にするとよい。このような構成とすることにより、例えば、実行時の条件に応じてアドレスのジャンプ動作を伴うか否かが不明であるコードの記述回数に上限値が定められているにも関わらず、その上限値を超えてエラー検出部２０４のエラーフラグが過度にマスクされることを回避することができるので、エラーの誤検出を低減しつつ、データＤの不正コピーを防止することが可能となる。
【００５０】
次に、上記構成から成る記憶装置のデータ書き込み動作について、図２のフローチャートを参照しながら詳細に説明する。図２は、記憶装置のデータ書き込み動作を説明するためのフローチャートである。
【００５１】
所望のデータの書き込みに先立ち、ステップＳ１では、メモリ１００の格納内容が全消去される。このような動作により、メモリ１００に格納されていたデータやプロテクトイネーブルコードは一旦全て消去される。その後、ステップＳ２では、メモリ１００の特定領域以外にテストデータが書き込まれ、ステップＳ３では、そのベリファイが行われる。
【００５２】
上記のベリファイ時には、テストデータに含まれるコードの内容とは何ら関係なく、アドレスのインクリメント動作が行われて、メモリ１００に格納されたテストデータがそのアドレス順に連続して読み出されていくため、メモリ１００に対するアドレス動作がコードに合致したものではなくなる。しかし、メモリ１００の特定領域には、プロテクトイネーブルコードが書き込まれておらず、不正コピー防止回路２００のプロテクト動作は、プロテクトイネーブル制御部２０７によって禁止されるため、テストデータのベリファイに支障が生じることはない。
【００５３】
その後、ステップＳ４では、テストデータのベリファイでエラーが検出されなかったか否かの判定が行われる。ここで、エラーが検出されなかった場合には、フローがステップＳ５に進められるが、エラーが検出された場合には、メモリ１００に異常があるという判断の下、データ書き込み動作が異常終了される。
【００５４】
テストデータのベリファイでエラーが検出されなかった場合、ステップＳ５では、メモリ１００の特定領域にプロテクトイネーブルコードが書き込まれ、続くステップＳ６ではテストデータの再ベリファイが行われる。
【００５５】
上記の再ベリファイ時にも、一度目のベリファイ時と同様、メモリ１００に対するアドレス動作は、コードに合致したものではなくなる。また、メモリ１００の特定領域には、ステップＳ５でプロテクトイネーブルコードが書き込まれているため、不正コピー防止回路２００のプロテクト動作は、プロテクトイネーブル制御部２０７によって許可された状態となっている。従って、不正コピー防止回路２００に異常がなければ、テストデータの再ベリファイ時にエラーが検出されるはずである。
【００５６】
ステップＳ７では、上記の考察に基づき、テストデータの再ベリファイでエラーが検出されたか否かの判定が行われる。ここで、エラーが検出された場合には、フローがステップＳ８に進められるが、エラーが検出されなかった場合には、不正コピー防止回路２００に異常があるという判断の下、データ書き込み動作が異常終了される。
【００５７】
テストデータの再ベリファイでエラーが検出された場合、ステップＳ８では、メモリ１００の格納内容が再び全消去される。その後、ステップＳ９では、メモリ１００の特定領域以外に所望のデータが書き込まれ、ステップＳ１０では、そのベリファイが行われる。
【００５８】
上記のベリファイ時には、データに含まれるコードの内容とは何ら関係なく、アドレスのインクリメント動作が行われて、メモリ１００に格納されたデータがそのアドレス順に連続して読み出されていくため、メモリ１００に対するアドレス動作がコードに合致したものではなくなる。しかし、メモリ１００の特定領域には、プロテクトイネーブルコードが書き込まれておらず、不正コピー防止回路２００のプロテクト動作は、プロテクトイネーブル制御部２０７によって禁止されるため、データのベリファイに支障は生じない。
【００５９】
その後、ステップＳ１１では、データのベリファイでエラーが検出されなかったか否かの判定が行われる。ここで、エラーが検出されなかった場合には、フローがステップＳ１２に進められるが、エラーが検出された場合には、データの書き込みに失敗しているという判断の下、データ書き込み動作が異常終了される。
【００６０】
一方、データのベリファイでエラーが検出されなかった場合、ステップＳ１２では、メモリ１００の特定領域にプロテクトイネーブルコードが書き込まれ、データの書き込み動作が正常終了される。
【００６１】
このように、本実施形態の記憶装置に対してデータを書き込む方法として、上記一連のフローを実行すれば、データの書き込み中には、不正コピー防止回路２００のプロテクト動作を禁止して、データのベリファイを可能とする一方、データの書き込み動作が完了した後には、上記のプロテクト動作を許可して、不正コピーを防止することが可能となる。
【００６２】
次に、本発明に係る記憶装置の第２実施形態について、図３を参照しながら詳細に説明する。図３は、本発明に係る記憶装置の第２実施形態を示すブロック図である。
【００６３】
図３に示すように、本実施形態の記憶装置は、先出の第１実施形態とほぼ同様の構成から成り、セレクタ２０９に代えて、デコーダ２１０を有する点に特徴を有している。そこで、第１実施形態と同様の構成要素については、図１と同一の符号を付すことで重複した説明を省略し、以下では、本実施形態の特徴部分であるデコーダ２１０を中心に詳細な説明を行うことにする。
【００６４】
本実施形態の記憶装置において、メモリ１００には、暗号化されたデータＤが格納されている。なお、データＤに施される暗号化処理については、１重であっても、２重以上であっても構わない。
【００６５】
デコーダ２１０は、論理積演算器２０８の出力信号に基づいて、メモリ１００に格納されたデータＤの出力を禁止する出力制御部である。より具体的に述べると、デコーダ２１０は、メモリ１００から読み出されたデータＤを出力する際に、論理積演算器２０８の出力信号に基づいて、所定の鍵情報を用いて正しい暗号解読処理を行うか、ダミーの鍵情報を用いて意図的にでたらめな暗号解読処理を行うかを決定する。
【００６６】
このような構成とすることにより、データＤの不正コピーが疑われる状況下において、デコーダ２１０は、メモリ１００から読み出されたデータＤに対して、全くでたらめな暗号解読処理を施して出力する。従って、記憶装置から不正に出力されたデータ（ここでは第１実施形態に倣ってダミーデータＤＤと称する）の内容は不明なものとなるため、これを利用することは不可能となる。
【００６７】
また、ダミーデータＤＤは、デコーダ２１０によるでたらめな暗号解読処理を経て作成されたものであるため、メモリ１００に格納されたデータＤとは全く別物となっており、データＤの暗号化処理に用いた鍵情報では、もはやその暗号解読処理を行うことができなくなっている。そのため、ダミーデータＤＤを高速なコンピュータで解析したとしても、データＤの内容を読み取ることは非常に困難となっている。特に、デコーダ２１０でダミーの鍵情報を複数切り替えながらでたらめな暗号解読処理を行う構成とすれば、事実上、ダミーデータＤＤの解析処理は不可能なものとなる。
【００６８】
このように、本実施形態の記憶装置であれば、メモリ１００に格納されたデータＤの出力自体を禁止することができるので、従来構成に比べて、データＤの不正コピーをより適切に防止することが可能となる。
【００６９】
なお、上記では、意図的にでたらめな暗号解読処理を行う構成を例に挙げて説明を行ったが、本発明の構成はこれに限定されるものではなく、正しい暗号解読処理とは異なる暗号解読処理を行う構成であれば、いかなる構成であっても構わない。
【００７０】
次に、本発明に係る記憶装置の第３実施形態について、図４を参照しながら詳細に説明する。図４は、本発明に係る記憶装置の第３実施形態を示すブロック図である。
【００７１】
図４に示すように、本実施形態の記憶装置は、先出の第１実施形態とほぼ同様の構成から成り、セレクタ２０９に代えて、エンコーダ２１１を有する点に特徴を有している。そこで、第１実施形態と同様の構成要素については、図１と同一の符号を付すことで重複した説明を省略し、以下では、本実施形態の特徴部分であるエンコーダ２１１を中心に詳細な説明を行うことにする。
【００７２】
エンコーダ２１１は、論理積演算器２０８の出力信号に基づいて、メモリ１００に格納されたデータＤの出力を禁止する出力制御部である。より具体的に述べると、エンコーダ２１１は、メモリ１００から読み出されたデータＤを出力する際に、論理積演算器２０８の出力信号に基づいて、所定の鍵情報を用いて正しい暗号化処理を行うか、ダミーの鍵情報を用いて意図的にでたらめな暗号化処理を行うかを決定する。
【００７３】
このような構成とすることにより、データＤの不正コピーが疑われる状況下において、エンコーダ２１１は、メモリ１００から読み出されたデータＤに対して、全くでたらめな暗号化処理（言い換えればその可逆性を前提としない暗号化処理）を施して出力する。従って、記憶装置から不正に出力されたデータ（ここでは第１実施形態に倣ってダミーデータＤＤと称する）の内容は不明なものとなるため、これを利用することは不可能となる。特に、エンコーダ２１１でダミーの鍵情報を複数切り替えながらでたらめな暗号化処理を行う構成とすれば、事実上、ダミーデータＤＤの暗号解読処理は不可能なものとなる。
【００７４】
このように、本実施形態の記憶装置であれば、メモリ１００に格納されたデータＤの出力自体を禁止することができるので、従来構成に比べて、データＤの不正コピーをより適切に防止することが可能となる。
【００７５】
なお、上記では、意図的にでたらめな暗号化処理を行う構成を例に挙げて説明を行ったが、本発明の構成はこれに限定されるものではなく、正しい暗号化処理とは異なる暗号化処理を行う構成であれば、いかなる構成であっても構わない。
【００７６】
次に、本発明に係る記憶装置の第４実施形態について、図５を参照しながら詳細に説明する。図５は、本発明に係る記憶装置の第４実施形態を示すブロック図である。
【００７７】
図５に示すように、本実施形態の記憶装置は、先出の第１実施形態とほぼ同様の構成から成り、セレクタ２０９に代えてアドレス制御部２１２を有する点に特徴を有している。そこで、第１実施形態と同様の構成要素については、図１と同一の符号を付すことで重複した説明を省略し、以下では、本実施形態の特徴部分であるアドレス制御部２１２を中心に詳細な説明を行うことにする。
【００７８】
アドレス制御部２１２は、論理和演算器２０６の出力信号に基づいて、メモリ１００に格納されたデータＤの出力を禁止する出力制御部である。より具体的に述べると、アドレス制御部２１２は、論理和演算器２０６の出力信号がローレベルであるときには、メモリ１００に対するアドレス動作を許可する一方、論理和演算器２０６の出力信号がハイレベルであるときには、メモリ１００に対するアドレス動作を禁止する。
【００７９】
このような構成とすることにより、データＤの不正コピーが疑われる状況下において、アドレス制御部２１２は、メモリ１００に対するアドレス動作を禁止して、メモリ１００に格納されたデータＤの読み出し自体を禁止することができるので、従来構成に比べて、データＤの不正コピーをより適切に防止することが可能となる。
【００８０】
なお、本実施形態の記憶装置は、アドレス制御部２１２をプロテクトイネーブル制御部２０７に内蔵し、先述のイネーブル信号に基づくプロテクト動作の可否制御をプロテクトイネーブル制御部２０７の内部処理とした構成が例に挙げられているが、本発明の構成はこれに限定されるものではなく、プロテクトイネーブル制御部２０７とアドレス制御部２１２を別途独立に設けても構わない。
【００８１】
次に、本発明に係る記憶装置を適用したアプリケーションについて、図６を参照しながら詳細に説明する。図６は、本発明に係る記憶装置を適用したアプリケーションの一例を示すシステムブロック図である。
【００８２】
図６に示すアプリケーションは、記憶装置１のデータ書換サービスに供されるものであり、記憶装置１と、データ書込装置２と、ネットワーク３と、サーバ装置４と、を有して成る。記憶装置１は、本発明に係る記憶装置であり、その構成や動作は既に説明済みである。データ書込装置２は、ネットワーク３（インターネットやローカルエリアネットワーク）を介してサーバ装置４との通信を行う通信機能部を有して成り、ユーザの操作に応じてサーバ装置４にアクセスし、これに格納されている所望のデータをダウンロードして、記憶装置１への書き込み（書き換え）を行う手段である。
【００８３】
なお、データ書込装置２のデータ書き込み動作は、先出の図２で示したフローと同様であり、ハードウェアで実現してもよいし、コンピュータにデータ書込プログラムを実行させることでソフトウェア的に実現してもよい。
【００８４】
また、図２で示したフローの実行時に用いられるテストデータは、サーバ装置４ではなく、データ書込装置２の記憶部に格納しておくとよい。このような構成であれば、ネットワーク３を介したデータトラフィックを軽減することが可能となる。
【００８５】
ただし、データやテストデータの格納場所は、図６の例に限定されるものではなく、データ書込装置２にローカル接続される大容量記憶デバイス（ハードディスクドライブ装置など）にデータを格納しても構わない。
【００８６】
なお、本発明の構成は、上記実施形態のほか、発明の主旨を逸脱しない範囲で種々の変更を加えることが可能である。
【００８７】
例えば、上記実施形態では、コードに合致したアドレス動作が行われているか否かを判定する手法として、アドレスのジャンプ動作を伴うコードの実行時に、アドレスのインクリメント動作が行われたか否かを検出する構成を例に挙げて説明を行ったが、本発明の構成はこれに限定されるものではなく、その余の手法を用いても構わない。
【産業上の利用可能性】
【００８８】
本発明は、ゲームカートリッジ、ＩＣカード、セキュリティ機器などに用いられる記憶装置の不正コピーを防止する技術として利用することが可能である。
【図面の簡単な説明】
【００８９】
【図１】は、本発明に係る記憶装置の第１実施形態を示すブロック図である。
【図２】は、データ書き込み動作を説明するためのフローチャートである。
【図３】は、本発明に係る記憶装置の第２実施形態を示すブロック図である。
【図４】は、本発明に係る記憶装置の第３実施形態を示すブロック図である。
【図５】は、本発明に係る記憶装置の第４実施形態を示すブロック図である。
【図６】は、本発明に係る記憶装置を適用したアプリケーションの一例を示すシステムブロック図である。
【符号の説明】
【００９０】
１    記憶装置
２    データ書込装置
３    ネットワーク
４    サーバ装置
１００    メモリ（フラッシュメモリなど）
２００    不正コピー防止回路
２０１    コードチェック部（コード解析部）
２０２    タイミング制御部
２０３    インクリメントチェック部（アドレス解析部）
２０４    エラー検出部
２０５    初期アドレスチェック部
２０６    論理和演算器
２０７    プロテクトイネーブル制御部
２０８    論理積演算器
２０９    セレクタ
２１０    デコーダ
２１１    エンコーダ
２１２    アドレス制御部
３００    ライト制御部
４００    セレクタ
５００    バッファ
【図１】
0005070137.tif 000002
【図２】
0005070137.tif 000003
【図３】
0005070137.tif 000004
【図４】
0005070137.tif 000005
【図５】
0005070137.tif 000006
【図６】
0005070137.tif 000007