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