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