(57)【特許請求の範囲】
【請求項１】
データを記憶する記憶領域を有する記憶装置を制御する制御装置であって、
メインプロセッサと、
サブプロセッサと
を備え、
前記メインプロセッサは、前記サブプロセッサを介してのみ前記記憶装置にアクセス可能であり、
前記サブプロセッサは、前記メインプロセッサからの指示なく、前記記憶装置との間で第１認証処理を実行し、
前記第１認証処理において、
前記サブプロセッサは、第１コマンド発行条件が成立するか否かを判定し、
前記記憶装置は、前記第１コマンド発行条件と同じ第２コマンド発行条件が成立するか否かを判定し、
前記サブプロセッサは、前記第１コマンド発行条件が成立したとき、第１コマンドを前記記憶装置に出力し、
前記記憶装置は、前記第２コマンド発行条件が成立したとき、前記第１コマンドを受け取るか否かを判定し、その判定結果に基づいて、前記制御装置が正しいものであるか否かを判定する、制御装置。
【請求項２】
請求項１に記載の制御装置であって、
前記第１認証処理において、
前記記憶装置は、前記第２コマンド発行条件が成立したとき、前記第１コマンドを受け取るか否かを判定し、応答が必要な前記第１コマンドを受け取ったときには、第１データを出力し、
前記サブプロセッサは、応答が必要な前記第１コマンドの出力に応じて前記第１データを受け取ったとき、前記記憶装置が正しいものであると判定する、制御装置。
【請求項３】
請求項１及び請求項２のいずれか一つに記載の制御装置であって、
前記第１及び第２コマンド発行条件は変化する、制御装置。
【請求項４】
請求項１乃至請求項３のいずれか一つに記載の制御装置であって、
前記第１コマンドは変化する、制御装置。
【請求項５】
請求項１乃至請求項４のいずれか一つに記載の制御装置であって、
前記サブプロセッサは、前記第１コマンド発行条件が成立する前に、前記メインプロセッサからの指示なく、前記第１コマンドと同じ第３コマンドを出力する、制御装置。
【請求項６】
請求項１乃至請求項５のいずれか一つに記載の制御装置であって、
前記第１コマンドは、前記メインプロセッサが前記サブプロセッサを介して前記記憶装置に出力する第２コマンドと一致する、制御装置。
【請求項７】
請求項２に記載の制御装置であって、
前記第１コマンドは、前記メインプロセッサが前記サブプロセッサを介して前記記憶装置に出力する第２コマンドと一致し、
前記記憶装置は、
前記第２コマンドとして、前記記憶領域に対するデータの読み出し処理を指示するリードコマンドを受け取ったとき、前記記憶領域からデータを読み出して前記制御装置に出力し、
前記第１コマンドとして前記リードコマンドを受け取ったとき、前記記憶領域からデータを読み出し、読み出したデータを破棄するとともに、前記第１データを前記制御装置に出力する、制御装置。
【請求項８】
請求項６及び請求項７のいずれか一つに記載の制御装置であって、
前記記憶装置は、
前記第２コマンドとして、前記記憶領域に対するデータの書き込み処理を指示するライトコマンドを受け取ったとき、前記記憶領域に対してデータを書き込み、
前記第１コマンドとして前記ライトコマンドを受け取ったとき、前記記憶領域に対してデータを書き込まない、制御装置。
【請求項９】
請求項１乃至請求項８のいずれか一つに記載の制御装置であって、
前記制御装置は、複数種類の第１コマンド発行条件を記憶し、
前記記憶装置は、複数種類の第２コマンド発行条件を記憶し、
前記サブプロセッサは、前記記憶装置との間で乱数交換を行い、
前記サブプロセッサは、自身が生成した第１乱数と、前記記憶装置からの第２乱数とに基づいて、前記複数種類の第１コマンド発行条件から前記第１認証処理で使用する前記第１コマンド発行条件を決定し、
前記記憶装置は、前記第１及び第２乱数に基づいて、前記複数種類の第２コマンド発行条件から前記第１認証処理で使用する前記第２コマンド発行条件を決定する、制御装置。
【請求項１０】
請求項９に記載の制御装置であって、
前記制御装置は、前記複数種類の第１コマンド発行条件のそれぞれについて、当該第１コマンド発行条件と前記第１コマンドとの組み合わせを記憶し、
前記記憶装置は、前記複数種類の第２コマンド発行条件のそれぞれについて、当該第２コマンド発行条件と前記第１コマンドとの組み合わせを記憶し、
前記サブプロセッサは、前記第１及び第２乱数に基づいて、前記第１認証処理で使用する、前記第１コマンド発行条件と前記第１コマンドとの組み合わせを決定し、
前記記憶装置は、前記第１及び第２乱数に基づいて、前記第１認証処理で使用する、前記第２コマンド発行条件と前記第１コマンドとの組み合わせを決定する、制御装置。
【請求項１１】
請求項２に記載の制御装置であって、
前記制御装置は、複数種類の第１コマンド発行条件を記憶し、
前記記憶装置は、複数種類の第２コマンド発行条件を記憶し、
前記記憶装置は、応答が必要な前記第１コマンドを受け取ったときに出力する前記第１データに基づいて、前記複数種類の第２コマンド発行条件から、次の前記第１認証処理で使用する前記第２コマンド発行条件を決定し、
前記サブプロセッサは、前記記憶装置からの前記第１データに基づいて、前記複数種類の第１コマンド発行条件から、次の前記第１認証処理で使用する前記第１コマンド発行条件を決定する、制御装置。
【請求項１２】
請求項１１に記載の制御装置であって、
前記制御装置は、前記複数種類の第１コマンド発行条件のそれぞれについて、当該第１コマンド発行条件と前記第１コマンドとの組み合わせを記憶し、
前記記憶装置は、前記複数種類の第２コマンド発行条件のそれぞれについて、当該第２コマンド発行条件と前記第１コマンドとの組み合わせを記憶し、
前記記憶装置は、応答が必要な前記第１コマンドを受け取ったときに出力する前記第１データに基づいて、次の前記第１認証処理で使用する、前記第２コマンド発行条件と前記第１コマンドの組み合わせを決定し、
前記サブプロセッサは、前記記憶装置からの前記第１データに基づいて、次の前記第１認証処理で使用する、前記第１コマンド発行条件と前記第１コマンドの組み合わせを決定する、制御装置。
【請求項１３】
データを記憶する記憶領域を有する記憶装置を制御する制御装置であって、
メインプロセッサと、
サブプロセッサと
を備え、
前記メインプロセッサは、前記サブプロセッサを介してのみ前記記憶装置にアクセス可能であり、
前記サブプロセッサは、前記メインプロセッサからの指示なく、前記記憶装置との間で第１認証処理を実行し、
前記メインプロセッサと前記サブプロセッサとの間で第２認証処理が行われ、
前記第２認証処理において、
前記メインプロセッサ及び前記サブプロセッサの一方のプロセッサは、第１コマンド発行条件が成立するか否かを判定し、
前記メインプロセッサ及び前記サブプロセッサの他のプロセッサは、前記第１コマンド発行条件と同じ第２コマンド発行条件が成立するか否かを判定し、
前記一方のプロセッサは、前記第１コマンド発行条件が成立したとき、コマンドを前記サブプロセッサに出力し、
前記他方のプロセッサは、前記第２コマンド発行条件が成立したとき、前記コマンドを受け取るか否かを判定し、その判定結果に基づいて、前記一方のプロセッサが正しいものであるか否かを判定する、制御装置。
【請求項１４】
請求項１乃至請求項１２のいずれか一つに記載の制御装置によって制御され、当該制御装置との間で前記第１認証処理を行う記憶装置。
【請求項１５】
請求項１４に記載の記憶装置であって、
前記記憶領域を有する半導体メモリと、
前記半導体メモリを制御し、前記サブプロセッサとの間で前記第１認証処理を行うメモリコントローラと
を備える、記憶装置。
【請求項１６】
請求項１５に記載の記憶装置が備えるメモリコントローラ。
【請求項１７】
請求項１乃至請求項１３のいずれか一つに記載の制御装置が備えるサブプロセッサ。
【請求項１８】
請求項１３に記載の制御装置が備えるメインプロセッサ。
【請求項１９】
コンピュータを、請求項１４に記載の記憶装置として動作させるための制御プログラム。
【請求項２０】
コンピュータを、請求項１７に記載のサブプロセッサとして動作させるための制御プログラム。
【請求項２１】
コンピュータを、請求項１８に記載のメインプロセッサとして動作させるための制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、認証技術に関する。
【背景技術】
【０００２】
特許文献１には、記憶装置と、当該記憶装置を制御する制御装置とを備えるシステムが開示されている。
【０００３】
また、特許文献２及び３には認証技術が記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−２５２０７９号公報
【特許文献２】特開２０００−２５０８１６号公報
【特許文献３】特開平９−１５３００４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に記載されているシステムのように、記憶装置と、当該記憶装置を制御する制御装置とを備えるシステムにおいては、セキュリティ性能の向上が望まれる。
【０００６】
そこで、本発明は上述の点に鑑みて成されたものであり、セキュリティ性能を向上することが可能な技術を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するため、本発明に係る制御装置の一態様は、データを記憶する記憶領域を有する記憶装置を制御する制御装置であって、メインプロセッサと、サブプロセッサとを備え、前記メインプロセッサは、前記サブプロセッサを介してのみ前記記憶装置にアクセス可能であり、前記サブプロセッサは、前記メインプロセッサからの指示なく、前記記憶装置との間で第１認証処理を実行する。
【０００８】
また、本発明に係る制御装置の一態様では、前記第１認証処理において、前記サブプロセッサは、第１コマンド発行条件が成立するか否かを判定し、前記記憶装置は、前記第１コマンド発行条件と同じ第２コマンド発行条件が成立するか否かを判定し、前記サブプロセッサは、前記第１コマンド発行条件が成立したとき、第１コマンドを前記記憶装置に出力し、前記記憶装置は、前記第２コマンド発行条件が成立したとき、前記第１コマンドを受け取るか否かを判定し、その判定結果に基づいて、前記制御装置が正しいものであるか否かを判定する。
【０００９】
また、本発明に係る制御装置の一態様では、前記第１認証処理において、前記記憶装置は、前記第２コマンド発行条件が成立したとき、前記第１コマンドを受け取るか否かを判定し、応答が必要な前記第１コマンドを受け取ったときには、第１データを出力し、前記サブプロセッサは、応答が必要な前記第１コマンドの出力に応じて前記第１データを受け取ったとき、前記記憶装置が正しいものであると判定する。
【００１０】
また、本発明に係る制御装置の一態様では、前記第１及び第２コマンド発行条件は変化する。
【００１１】
また、本発明に係る制御装置の一態様では、前記第１コマンドは変化する。
【００１２】
また、本発明に係る制御装置の一態様では、前記サブプロセッサは、前記第１コマンド発行条件が成立する前に、前記メインプロセッサからの指示なく、前記第１コマンドと同じ第３コマンドを出力する。
【００１３】
また、本発明に係る制御装置の一態様では、前記第１コマンドは、前記メインプロセッサが前記サブプロセッサを介して前記記憶装置に出力する第２コマンドと一致する。
【００１４】
また、本発明に係る制御装置の一態様では、前記第１コマンドは、前記メインプロセッサが前記サブプロセッサを介して前記記憶装置に出力する第２コマンドと一致し、前記記憶装置は、前記第２コマンドとして、前記記憶領域に対するデータの読み出し処理を指示するリードコマンドを受け取ったとき、前記記憶領域からデータを読み出して前記制御装置に出力し、前記第１コマンドとして前記リードコマンドを受け取ったとき、前記記憶領域からデータを読み出し、読み出したデータを破棄するとともに、前記第１データを前記制御装置に出力する。
【００１５】
また、本発明に係る制御装置の一態様では、前記記憶装置は、前記第２コマンドとして、前記記憶領域に対するデータの書き込み処理を指示するライトコマンドを受け取ったとき、前記記憶領域に対してデータを書き込み、前記第１コマンドとして前記ライトコマンドを受け取ったとき、前記記憶領域に対してデータを書き込まない。
【００１６】
また、本発明に係る制御装置の一態様では、前記制御装置は、複数種類の第１コマンド発行条件を記憶し、前記記憶装置は、複数種類の第２コマンド発行条件を記憶し、前記サブプロセッサは、前記記憶装置との間で乱数交換を行い、前記サブプロセッサは、自身が生成した第１乱数と、前記記憶装置からの第２乱数とに基づいて、前記複数種類の第１コマンド発行条件から前記第１認証処理で使用する前記第１コマンド発行条件を決定し、前記記憶装置は、前記第１及び第２乱数に基づいて、前記複数種類の第２コマンド発行条件から前記第１認証処理で使用する前記第２コマンド発行条件を決定する。
【００１７】
また、本発明に係る制御装置の一態様では、前記制御装置は、前記複数種類の第１コマンド発行条件のそれぞれについて、当該第１コマンド発行条件と前記第１コマンドとの組み合わせを記憶し、前記記憶装置は、前記複数種類の第２コマンド発行条件のそれぞれについて、当該第２コマンド発行条件と前記第１コマンドとの組み合わせを記憶し、前記サブプロセッサは、前記第１及び第２乱数に基づいて、前記第１認証処理で使用する、前記第１コマンド発行条件と前記第１コマンドとの組み合わせを決定し、前記記憶装置は、前記第１及び第２乱数に基づいて、前記第１認証処理で使用する、前記第２コマンド発行条件と前記第１コマンドとの組み合わせを決定する。
【００１８】
また、本発明に係る制御装置の一態様では、前記制御装置は、複数種類の第１コマンド発行条件を記憶し、前記記憶装置は、複数種類の第２コマンド発行条件を記憶し、前記記憶装置は、応答が必要な前記第１コマンドを受け取ったときに出力する前記第１データに基づいて、前記複数種類の第２コマンド発行条件から、次の前記第１認証処理で使用する前記第２コマンド発行条件を決定し、前記サブプロセッサは、前記記憶装置からの前記第１データに基づいて、前記複数種類の第１コマンド発行条件から、次の前記第１認証処理で使用する前記第１コマンド発行条件を決定する。
【００１９】
また、本発明に係る制御装置の一態様では、前記制御装置は、前記複数種類の第１コマンド発行条件のそれぞれについて、当該第１コマンド発行条件と前記第１コマンドとの組み合わせを記憶し、前記記憶装置は、前記複数種類の第２コマンド発行条件のそれぞれについて、当該第２コマンド発行条件と前記第１コマンドとの組み合わせを記憶し、前記記憶装置は、応答が必要な前記第１コマンドを受け取ったときに出力する前記第１データに基づいて、次の前記第１認証処理で使用する、前記第２コマンド発行条件と前記第１コマンドの組み合わせを決定し、前記サブプロセッサは、前記記憶装置からの前記第１データに基づいて、次の前記第１認証処理で使用する、前記第１コマンド発行条件と前記第１コマンドの組み合わせを決定する。
【００２０】
また、本発明に係る制御装置の一態様では、前記メインプロセッサと前記サブプロセッサとの間で第２認証処理が行われ、前記第２認証処理において、前記メインプロセッサ及び前記サブプロセッサの一方のプロセッサは、第３コマンド発行条件が成立するか否かを判定し、前記メインプロセッサ及び前記サブプロセッサの他のプロセッサは、前記第３コマンド発行条件と同じ第４コマンド発行条件が成立するか否かを判定し、前記一方のプロセッサは、前記第３コマンド発行条件が成立したとき、第４コマンドを前記サブプロセッサに出力し、前記他方のプロセッサは、前記第４コマンド発行条件が成立したとき、前記第４コマンドを受け取るか否かを判定し、その判定結果に基づいて、前記一方のプロセッサが正しいものであるか否かを判定する。
【００２１】
また、本発明に係る記憶装置の一態様は、上記の制御装置によって制御され、当該制御装置との間で前記第１認証処理を行う。
【００２２】
また、本発明に係る記憶装置の一態様では、前記記憶領域を有する半導体メモリと、前記半導体メモリを制御し、前記サブプロセッサとの間で前記第１認証処理を行うメモリコントローラとが設けられる。
【００２３】
また、本発明に係るメモリコントローラの一態様は、上記の記憶装置が備えるメモリコントローラである。
【００２４】
また、本発明に係るサブプロセッサの一態様は、上記の制御装置が備えるサブプロセッサである。
【００２５】
また、本発明に係るメインプロセッサの一態様は、上記の制御装置が備えるメインプロセッサである。
【００２６】
また、本発明に係る制御プログラムの一態様は、コンピュータを、上記の記憶装置として動作させるための制御プログラムである。
【００２７】
また、本発明に係る制御プログラムの一態様は、コンピュータを、上記のサブプロセッサとして動作させるための制御プログラムである。
【００２８】
また、本発明に係る制御プログラムの一態様は、コンピュータを、上記のメインプロセッサとして動作させるための制御プログラムである。
【発明の効果】
【００２９】
セキュリティ性能が向上する。
【図面の簡単な説明】
【００３０】
【図１】データ処理システムの構成の一例を示す図である。
【図２】サブ用セキュリティパターンテーブル及びメモリ用セキュリティパターンテーブルの一例を示す図である。
【図３】サブプロセッサの動作を示すフローチャートである。
【図４】メモリコントローラの動作を示すフローチャートである。
【図５】メモリコントローラの動作を示すフローチャートである。
【図６】サブプロセッサ及びメモリコントローラの動作を示すフローチャートである。
【図７】サブ用セキュリティパターンテーブル及びメモリ用セキュリティパターンテーブルの一例を示す図である。
【図８】ホスト装置の構成の一例を示す図である。
【発明を実施するための形態】
【００３１】
＜データ処理システムの全体構成＞
図１はデータ処理システム１の構成を示す図である。データ処理システム１は、ホスト装置２及び記憶装置３を備えている。ホスト装置２は、記憶装置３を制御する制御装置である。記憶装置３は半導体メモリ５を有する。半導体メモリ５は、例えばＮＡＮＤ型フラッシュメモリである。半導体メモリ５はＮＡＮＤ型フラッシュメモリ以外であっても良い。
【００３２】
ホスト装置２は、データ処理システム１全体の動作を統括的に管理する。ホスト装置２は、データ処理システム１の本体装置であると言える。ホスト装置２は、記憶装置３からデータを読み出したり、記憶装置３にデータを書き込んだりする。ホスト装置２が記憶装置３に対して読み出し要求を出力すると、それを受け取った記憶装置３は、半導体メモリ５内のデータを読み出してホスト装置２に出力する。また、ホスト装置２が記憶装置３に対して書き込み要求を出力すると、それを受け取った記憶装置３は、ホスト装置２からのデータを半導体メモリ５内に書き込む。
【００３３】
記憶装置３の形状は、例えば、カード型となっている。カード型の記憶装置３がホスト装置２に対して装着されることによって、記憶装置３とホスト装置２とが接続される。記憶装置３はホスト装置２に対して着脱可能となっている。なお、記憶装置３とホスト装置２との接続方法はこれに限られない。また、記憶装置３の形状はカード型に限られない。
【００３４】
半導体メモリ５は、記憶領域５０にアプリケーションデータ５００を記憶している。記憶領域５０はメモリセルアレイと呼ばれる。ホスト装置２は、半導体メモリ５内のアプリケーションデータ５００を記憶装置３から読み出し、読み出したアプリケーションデータ５００を処理する。
【００３５】
ここで、アプリケーションデータは、アプリケーションプログラム（アプリケーションソフトウェア）と、当該アプリケーションプログラムの実行で使用される各種データ（当該アプリケーションプログラムに付随する各種データ）とを含む。言い換えれば、アプリケーションデータは、アプリケーションプログラムと、当該アプリケーションプログラムの実行によって実現される所定の処理の進行で用いられる各種データとを含んでいる。アプリケーションデータ５００が、例えばゲームデータである場合には、アプリケーションデータ５００には、ゲームプログラムと、当該ゲームプログラムの実行によって実現されるゲームの進行で用いられる、キャラクタデータ及びイメージデータ等の各種データとが含まれる。アプリケーションデータ５００が、ゲームデータである場合には、記憶装置３が例えばゲームカートリッジとして機能する。そして、ホスト装置２がゲーム機本体として機能する。ホスト装置２が、記憶装置３から読み出したゲームプログラムを実行することによって、データ処理システム１ではゲームが進行する。
【００３６】
なお、記憶領域５０には、アプリケーションデータ５００に加えて、あるいはアプリケーションデータ５００の代わりに、動画像データ及び音楽データなどの各種コンテンツデータが記憶されても良い。
【００３７】
＜ホスト装置の構成＞
ホスト装置２は、メインプロセッサ２０、サブプロセッサ２１、ＲＯＭ（Read Only Memory）２２、ＲＡＭ（Random Access Memory）２３、ＲＴＣ（Real Time Clock）２４、周辺回路２５及びメモリＩ／Ｆ回路２６を備えている。メインプロセッサ２０及びサブプロセッサ２１のそれぞれは、コンピュータであるＣＰＵ（Central Processing Unit）で構成されている。
【００３８】
メインプロセッサ２０、サブプロセッサ２１、ＲＯＭ２２、ＲＡＭ２３及びＲＴＣ２４は、バス２５０によって互いに接続されている。サブプロセッサ２１、周辺回路２５及びメモリＩ／Ｆ回路２６は、バス２５０とは独立したバス２６０によって互いに接続されている。ＲＯＭ２２は、コンピュータが読み取り可能な非一時的な記録媒体であると言える。
【００３９】
ＲＴＣ２４は、現在時刻を計測し、現在時刻を示す時刻情報を出力する。周辺回路２５は、例えば、マイク及びスピーカが接続されたサウンドコントローラ、ＵＳＢ (Universal Serial Bus) コントローラ、無線ＬＡＮ（Local Area Network）コントローラ等を含んでいる。ＲＡＭ２３は、メインプロセッサ２０及びサブプロセッサ２１がデータ処理する際のワークメモリとして機能する。
【００４０】
メインプロセッサ２０は、ホスト装置２の動作を統括的に管理する。メインプロセッサ２０は、サブプロセッサ２１を介して記憶装置３にアクセスする。したがって、メインプロセッサ２０は記憶装置３に直接アクセスできない。ＲＯＭ２２には、メインプロセッサ２０用のファームウェア２２０（メイン用ファームウェア２２０）が記憶されている。メインプロセッサ２０がメイン用ファームウェア２２０を実行することによって、メインプロセッサ２０の各種機能が実現される。メイン用ファームウェア２２０は一種の制御プログラムである。
【００４１】
サブプロセッサ２１は、周辺回路２５及びメモリＩ／Ｆ回路２６を制御する。メモリＩ／Ｆ回路２６は、ホスト装置２と記憶装置３とを接続するためのＩ／Ｆ回路である。サブプロセッサ２１は、メモリＩ／Ｆ回路２６を通じて記憶装置３にアクセスする。ＲＯＭ２２には、サブプロセッサ２１用のファームウェア２２１（サブ用ファームウェア２２１）が記憶されている。サブプロセッサ２１がサブ用ファームウェア２２１を実行することによって、サブプロセッサ２１の各種機能が実現される。サブ用ファームウェア２２１は一種の制御プログラムである。サブ用ファームウェア２２１には、後述するサブ用セキュリティパターンテーブル２２１ａが記述されている。以後、メイン用ファームウェア２２０及びサブ用ファームウェア２２１を、それぞれ「メイン用ＦＷ２２０」及び「サブ用ＦＷ２２１」と呼ぶ。また、サブ用セキュリティパターンテーブル２２１ａを「サブ用テーブル２２１ａ」と呼ぶ。
【００４２】
＜記憶装置の構成＞
記憶装置３は、メモリコントローラ４及び半導体メモリ５を備えている。メモリコントローラ４は、ホスト装置２からの指示に応じて半導体メモリ５を制御する。記憶装置３及びメモリコントローラ４のそれぞれは、一種のコンピュータである。
【００４３】
メモリコントローラ４は、制御部４０、ホストＩ／Ｆ回路４１、記憶部４２、メモリＩ／Ｆ回路４３及びＲＴＣ４４を備えている。ホストＩ／Ｆ回路４１は、記憶装置３とホスト装置２とを接続するためのＩ／Ｆ回路である。メモリＩ／Ｆ回路４３は、メモリコントローラ４と半導体メモリ５とを接続するためのＩ／Ｆ回路である。ＲＴＣ４４は、現在時刻を計測し、現在時刻を示す時刻情報を出力する。
【００４４】
制御部４０は、例えばＣＰＵ等で構成されており、記憶装置３の動作を統括的に管理する。制御部４０は、メモリＩ／Ｆ回路４３を通じて、半導体メモリ５にアクセスする。記憶部４２には、制御部４０のためのファームウェア（メモリ用ファームウェア）４２１が記憶されている。制御部４０（詳細には制御部４０のＣＰＵ）が記憶部４２内のメモリ用ファームウェア４２１を実行することによって、制御部４０の各種機能が実現される。
【００４５】
記憶部４２は、ＲＯＭ及びＲＡＭ等で構成されている。記憶部４２のＲＯＭには、メモリ用ファームウェア４２１が記憶されている。メモリ用ファームウェア４２１には、後述するメモリ用セキュリティパターンテーブル４２１ａが記述されている。さらに、記憶部４２のＲＯＭには、記憶装置３を識別するための記憶装置識別情報が記憶されている。記憶装置識別情報には、例えば、メモリコントローラ４の種別を示す情報、半導体メモリ５のメモリサイズを示す情報及び半導体メモリ５のメーカを示す情報などが含まれている。以後、メモリ用ファームウェア４２１を「メモリ用ＦＷ４２１」と呼ぶ。またメモリ用セキュリティパターンテーブル４２１ａを「メモリ用テーブル４２１ａ」と呼ぶ。
【００４６】
＜データ処理システムの基本動作＞
以上のような構成を有するデータ処理システム１では、メインプロセッサ２０から様々なコマンドが記憶装置３に向けて発行（出力）される。メインプロセッサ２０が発行するコマンドとしては、例えば、リードコマンド、リードＩＤコマンド、ライトコマンド、ステータスセットコマンド、リフレッシュコマンドなどがある。
【００４７】
リードコマンドは、半導体メモリ５の記憶領域５０内のデータの読み出し処理を指示するコマンドである。リードＩＤコマンドは、メモリコントローラ４の記憶部４２内の記憶装置識別情報の読み出し処理を指示するコマンドである。ライトコマンドは、記憶領域５０に対するデータの書き込み処理を指示するコマンドである。ステータスセットコマンドは、ステータスの設定を指示するコマンドである。リフレッシュコマンドは、リフレッシュ処理を指示するコマンドである。半導体メモリ５では、リードディスターブ等によって、記憶領域（メモリセルアレイ）５０内のデータが本来の値から変化することがある。これを防止するために、メモリコントローラ４は、記憶領域５０内のデータを一旦読み出して、読み出したデータを再度記憶領域５０に書き直すリフレッシュ処理を実行する。リフレッシュコマンドは、このリフレッシュ処理を指示するコマンドである。
【００４８】
リードコマンド及びリードＩＤコマンドは、そのコマンドの発行に応じて記憶装置３からの応答が発生する応答ありコマンドであると言える。言い換えれば、リードコマンド及びリードＩＤコマンドは、記憶装置３にとっては、応答が必要なコマンド（応答を返す必要があるコマンド）であると言える。一方で、ライトコマンド、ステータスセットコマンド及びリフレッシュコマンドのそれぞれは、そのコマンドの発行に応じて記憶装置３からの応答が発生しない応答なしコマンドであると言える。言い換えれば、ライトコマンド、ステータスセットコマンド及びリフレッシュコマンドは、記憶装置３にとっては、応答が不要なコマンド（応答を返す必要がないコマンド）であると言える。
【００４９】
メインプロセッサ２０からコマンドが出力されると、サブプロセッサ２１は、メインプロセッサ２０からのコマンドを、メモリＩ／Ｆ回路２６を通じて記憶装置３に出力する。記憶装置３では、制御部４０は、ホスト装置２からのコマンドをホストＩ／Ｆ回路４１を通じて受け取ると、受け取ったコマンドで指示される処理を実行する。
【００５０】
例えば、制御部４０は、ホスト装置２からのコマンドがリードコマンドである場合には、メモリＩ／Ｆ回路４３を通じて半導体メモリ５の記憶領域５０からデータを読み出す。そして、制御部４０は、読み出したデータをホストＩ／Ｆ回路４１を通じてホスト装置２に出力する。ホスト装置２では、サブプロセッサ２１がメモリコントローラ４からのデータをメモリＩ／Ｆ回路２６を通じて受け取ると、受け取ったデータをメインプロセッサ２０に出力する。これにより、メインプロセッサ２０は、半導体メモリ５からデータを読み出すことができる。
【００５１】
また制御部４０は、ホスト装置２からのコマンドがリードＩＤコマンドである場合には、記憶部４２内の記憶装置識別情報を読み出す。そして、制御部４０は、読み出した記憶装置識別情報をホストＩ／Ｆ回路４１を通じてホスト装置２に出力する。ホスト装置２では、サブプロセッサ２１は、メモリコントローラ４からの記憶装置識別情報をメモリＩ／Ｆ回路２６を通じて受け取ると、受け取った記憶装置識別情報をメインプロセッサ２０に出力する。これにより、メインプロセッサ２０は、記憶装置３から記憶装置識別情報を読み出すことができる。
【００５２】
また制御部４０は、ホスト装置２からのコマンドがライトコマンドである場合には、メモリＩ／Ｆ回路４３を通じて、半導体メモリ５の記憶領域５０に対して、ホスト装置２からのライトデータを書き込む。また制御部４０は、ホスト装置２からのコマンドがリフレッシュコマンドである場合には、メモリＩ／Ｆ回路４３を通じて、半導体メモリ５に対してリフレッシュ処理を実行する。
【００５３】
このように、メインプロセッサ２０は、サブプロセッサ２１を通じて、記憶装置３を制御することができる。このときには、サブプロセッサ２１は、メインプロセッサ２０のスレーブとして機能する。メインプロセッサ２０は、ホスト装置２が起動したときと、ホスト装置２に記憶装置３が接続されたとき、サブプロセッサ２１を通じて記憶装置３のメモリコントローラ４と通信することによって、記憶装置３の認証を実行する。つまり、メインプロセッサ２０は、ホスト装置２が起動したときと、ホスト装置２に記憶装置３が接続されたとき、記憶装置３が正しいものであるか否かを判断する。そして、メインプロセッサ２０は、記憶装置３の認証に成功すると、つまり記憶装置３が不正なものではなく正しいものであると判断すると、サブプロセッサ２１を通じて、記憶領域５０内のアプリケーションデータ５００の読み出しを開始し、読み出したアプリケーションデータ５００を処理する。
【００５４】
＜サブプロセッサとメモリコントローラとの間の認証処理＞
本実施の形態では、サブプロセッサ２１は、メインプロセッサ２０からの指示なく、記憶装置３との間で認証処理を実行することが可能である。以後、特に断らない限り、認証処理と言えば、サブプロセッサ２１が、メインプロセッサ２０からの指示なく、記憶装置３との間で行う認証処理を意味する。
【００５５】
＜認証処理でのサブプロセッサ及びメモリコントローラの基本動作＞
認証処理では、サブプロセッサ２１及びメモリコントローラ４のそれぞれは、互いに独立して、共通のコマンド発行条件が成立するか否かを判定する。サブプロセッサ２１は、コマンド発行条件が成立すると、コマンドをメモリコントローラ４に発行（出力）する。以後、認証処理において、コマンド発行条件が成立したときにサブプロセッサ２１が出力するコマンドを「セキュアコマンド」と呼ぶ。一方で、メモリコントローラ４は、コマンド発行条件が成立した後、サブプロセッサ２１からセキュアコマンドを受け取るか否かを判定し、その判定結果に基づいてホスト装置２が正しいものであるか否かを判定する。メモリコントローラ４は、コマンド発行条件が成立した後、ホスト装置２からセキュアコマンドを受け取った場合には、ホスト装置２は正しいものであると判定し、ホスト装置２からセキュアコマンドを受け取らない場合には、ホスト装置２は異常なもの（不正なもの）であると判定する。これにより、サブプロセッサ２１とメモリコントローラ４との間では、メインプロセッサ２０が関与することなく、ホスト装置２の認証が行われる。
【００５６】
またメモリコントローラ４は、ホスト装置２からのセキュアコマンドが、応答を必要とするコマンドである場合には、所定の応答データをサブプロセッサ２１に出力する。サブプロセッサ２１は、セキュアコマンドの出力に応じて、メモリコントローラ４から所定の応答データを受け取るか否かを判定し、その判定結果に基づいて、記憶装置３が正しいものであるか否かを判定する。サブプロセッサ２１は、所定の応答データを受け取った場合、記憶装置３は正しいものであると判定し、所定の応答データを受け取らない場合、記憶装置３は異常なもの（不正なもの）であると判定する。これにより、サブプロセッサ２１とメモリコントローラ４との間では、メインプロセッサ２０の動きとは独立して、記憶装置３の認証が行われる。
【００５７】
本実施の形態では、このような認証処理が、認証が不成立となるまで繰り返し実行される。サブプロセッサ２１と記憶装置３との間の相互認証は、メインプロセッサ２０が通常に動作している中で実行される。つまり、メインプロセッサ２０は、サブプロセッサ２１と記憶装置３との間の相互認証を意識することなく、記憶装置３に対する制御等を行う。
【００５８】
＜コマンド発行条件及びセキュアコマンドの詳細＞
本実施の形態では、複数種類のコマンド発行条件と、複数種類のセキュアコマンドとが用意されている。認証処理では、複数種類のコマンド発行条件の一つと、複数種類のセキュアコマンドの一つとが組み合わされて使用される。
【００５９】
ホスト装置２内のサブ用ＦＷ２２１に記述されているサブ用テーブル２２１ａには、複数種類のコマンド発行条件のそれぞれについて、コマンド発行条件とセキュアコマンドとの組み合わせが記述されている。サブプロセッサ２１は、サブ用テーブル２２１ａを参照して、認証処理で使用するコマンド発行条件及びセキュアコマンドの組み合わせを決定する。
【００６０】
同様に、メモリコントローラ４内のメモリ用ＦＷ４２１に記述されているメモリ用テーブル４２１ａには、複数種類のコマンド発行条件のそれぞれについて、コマンド発行条件とセキュアコマンドとの組み合わせが記述されている。メモリコントローラ４は、メモリ用テーブル４２１ａを参照して、認証処理で使用するコマンド発行条件及びセキュアコマンドの組み合わせを決定する。
【００６１】
また本実施の形態では、セキュアコマンドは、認証用の特殊なコマンドではなく、メインプロセッサ２０が発行するコマンド（以後、「通常コマンド」と呼ぶ）と同じコマンドがセキュアコマンドとして使用される。ただし、本実施の形態では、メモリコントローラ４は、ホスト装置２からセキュアコマンドを受け取ったとき、当該セキュアコマンドと同じ通常コマンドを受け取ったときとは異なる認証用の処理を行う。
【００６２】
以後、メインプロセッサ２０が発行するリードＩＤコマンド、リフレッシュコマンド及びライトコマンドを、それぞれ、「通常リードコマンド」、「通常リードＩＤコマンド」、「通常リフレッシュコマンド」及び「通常ライトコマンド」と呼ぶことがある。
【００６３】
図２はサブ用テーブル２２１ａ及びメモリ用テーブル４２１ａの一例を示す図である。図２に示されるように、サブ用テーブル２２１ａ及びメモリ用テーブル４２１ａのそれぞれでは、（Ｎ＋１）種類（Ｎ≧１）のセキュリティパターンと、当該Ｎ種類のセキュリティパターンをそれぞれ識別するための０〜Ｎまでのインデックス番号とが対応付けられている。各セキュリティパターンには、コマンド発行条件及びセキュアコマンドの組み合わせが規定されている。
【００６４】
複数種類のセキュリティパターンには、セキュアコマンドの発行時の時間的条件（単に「時間的条件」と呼ぶ）が規定されたセキュリティパターンが含まれている。また、複数種類のセキュリティパターンのうち、セキュアコマンドとして応答ありコマンドが規定されたセキュリティパターンには、当該応答ありコマンドに応じてメモリコントローラ４が出力する応答データが規定されている。
【００６５】
図２の例では、０番のセキュリティパターンでは、コマンド発行条件として「リードコマンド１００回」、セキュアコマンドとして「リードＩＤコマンド」、応答データとして「データＡ」が規定されている。したがって、認証処理で０番のセキュリティパターンが使用される場合には、サブプロセッサ２１及びメモリコントローラ４のそれぞれは、ホスト装置２から通常リードコマンドが１００回発行されると、コマンド発行条件が成立したと判定する。そして、サブプロセッサ２１は、コマンド発行条件が成立すると、１００回目の通常リードコマンドに対するメモリコントローラ４からの応答データ（半導体メモリ５から読み出されたリードデータ）をメインプロセッサ２０に出力した後直ちに、リードＩＤコマンドをセキュアコマンドとして発行する。メモリコントローラ４は、リードＩＤコマンドを受け取ると、ホスト装置２に応答データＡを出力する。
【００６６】
１番のセキュリティパターンでは、コマンド発行条件として「リードコマンド２００回」、セキュアコマンドとして「ライトコマンド」が規定されている。したがって、認証処理で１番のセキュリティパターンが使用される場合には、サブプロセッサ２１及びメモリコントローラ４のそれぞれは、ホスト装置２から通常リードコマンドが２００回発行されると、コマンド発行条件が成立したと判定する。そして、サブプロセッサ２１は、コマンド発行条件が成立すると、２００回目の通常リードコマンドに対するメモリコントローラ４からの応答データ（半導体メモリ５から読み出されたリードデータ）をメインプロセッサ２０に出力した後直ちに、ライトコマンドをセキュアコマンドとして発行する。
【００６７】
２番のセキュリティパターンでは、コマンド発行条件として「リフレッシュコマンド１回」、セキュアコマンドとして「リードＩＤコマンド」、時間的条件として「１０秒以内」、応答データとして「データＢ」が規定されている。したがって、認証処理で２番のセキュリティパターンが使用される場合には、サブプロセッサ２１及びメモリコントローラ４のそれぞれは、ホスト装置２から通常リフレッシュコマンドが１回発行されると、コマンド発行条件が成立したと判定する。そして、サブプロセッサ２１は、コマンド発行条件が成立すると、その時点から１０秒以内にリードＩＤコマンドをセキュアコマンドとして発行する。サブプロセッサ２１は、ＲＴＣ２４からの時刻情報に基づいて１０秒以内をカウントすることできる。メモリコントローラ４は、リードＩＤコマンドを受け取ると、ホスト装置２に応答データＢを出力する。
【００６８】
Ｎ番のセキュリティパターンでは、コマンド発行条件として「リードＩＤコマンド１回」、セキュアコマンドとして「リフレッシュコマンド」が規定されている。したがって、認証処理でＮ番のセキュリティパターンが使用される場合には、サブプロセッサ２１及びメモリコントローラ４のそれぞれは、ホスト装置２から通常リードＩＤコマンドが１回発行されると、コマンド発行条件が成立したと判定する。そして、サブプロセッサ２１は、コマンド発行条件が成立すると、通常リードＩＤコマンドに対するメモリコントローラ４からの応答データ（記憶部４２から読み出された記憶装置識別情報）をメインプロセッサ２０に出力した後直ちに、リフレッシュコマンドをセキュアコマンドとして発行する。
【００６９】
以後、時間的条件が規定されたセキュリティパターンに規定されるセキュアコマンドを「時間的条件付きセキュアコマンド」と呼ぶことがある。
【００７０】
＜認証処理でのサブプロセッサ及びメモリコントローラの詳細動作＞
図３は認証処理でのサブプロセッサ２１の動作を示すフローチャートである。図４及び図５は認証処理でのメモリコントローラ４の動作を示すフローチャートである。メインプロセッサ２０は、サブプロセッサ２１及びメモリコントローラ４の間での図３〜５に示される認証処理の実行を意識せずに動作する。
【００７１】
図３に示されるように、ステップｓ１において、サブ用ＦＷ２２０を実行するサブプロセッサ２１は、サブ用テーブル２２１ａを参照して、認証処理で使用するセキュリティパターン（以後、「使用セキュリティパターン」と呼ぶ）を決定する。そして、サブプロセッサ２１は、使用セキュリティパターンでのコマンド発行条件が成立するか否かを継続的に監視する。例えば、使用セキュリティパターンでのコマンド発行条件が「リードコマンド１００回」である場合には、サブプロセッサ２１は、自身が発行する通常リードコマンドの発行回数をカウントし、その発行回数が１００回になったかどうかを監視する。以後、使用セキュリティパターンでのコマンド発行条件及びセキュアコマンドを、それぞれ、「使用コマンド発行条件」及び「使用セキュアコマンド」と呼ぶ。
【００７２】
同様に、メモリコントローラ４での、メモリ用ＦＷ４２１を実行する制御部４０は、図４に示されるように、ステップｓ２１において、メモリ用テーブル４２１ａを参照して、使用セキュリティパターンを決定する。そして、制御部４０は、使用コマンド発行条件が成立するか否かを継続的に監視する。例えば、使用コマンド発行条件が「リードコマンド１００回」である場合には、制御部４０は、ホスト装置２から受け取る通常リードコマンドの受け取り回数をカウントし、その受け取り回数が１００回になったかどうかを監視する。
【００７３】
本実施の形態では、例えば、サブプロセッサ２１及びメモリコントローラ４は、０番のセキュリティパターンからＮ番のセキュリティパターンを順番に使用する。またステップｓ１及びステップｓ２１は同じタイミングで実行される。例えば、サブプロセッサ２１がＲＣＴ２４からの時刻情報に基づいてステップｓ１を実行するタイミングを決定し、メモリコントローラ４の制御部４０がＲＴＣ４４からの時刻情報に基づいてステップｓ２１を実行するタイミングを決定することによって、ステップｓ１及びステップｓ２１は同じタイミング（厳密に言えば、ほぼ同じタイミング）で実行される。
【００７４】
ステップｓ１の後、サブプロセッサ２１は、ステップｓ２において使用コマンド発行条件が成立したと判定すると、ステップｓ３においてセキュアコマンド発行状態となる。そして、サブプロセッサ２１は、ステップｓ４において使用セキュアコマンドを発行した後、ステップｓ５においてセキュアコマンド発行状態を解除する。サブプロセッサ２１は、使用セキュアコマンドが時間的条件付きセキュアコマンドである場合には、使用セキュアコマンドを発行する直前にセキュアコマンド発行状態となる。一方で、メモリコントローラ４では、図４に示されるように、ステップｓ２１の後、制御部４０は、ステップｓ２２において使用コマンド発行条件が成立したと判定すると、ステップｓ２３においてセキュアコマンド待ち状態となる。
【００７５】
サブプロセッサ２１は、ステップｓ１からステップｓ２の間において、メインプロセッサ２０から通常コマンドを受け取ると、受け取った通常コマンドをメモリコントローラ４に出力する。メモリコントローラ４は、ステップｓ２１からステップｓ２２の間において、ホスト装置２から通常コマンドを受け取ると、受け取った通常コマンドが指示する処理（半導体メモリ５に対するデータの読み出し処理、書き込み処理など）を実行する。
【００７６】
セキュアコマンド待ち状態の制御部４０は、ステップｓ２４において、使用セキュアコマンドが時間的条件付きセキュアコマンドであるか否かを判定する。制御部４０は、使用セキュアコマンドが時間的条件付きセキュアコマンドでないと判定すると、ステップｓ２５において、ホスト装置２から使用セキュアコマンドを受け取ったか否かを判定する。ステップｓ２５では、制御部４０は、使用コマンド発行条件が成立したと判定してから所定時間（例えば数十〜数百ｍｓ）以内に、使用セキュアコマンドを受け取ったか否かを判定する。制御部４０は、ＲＴＣ４４からの時刻情報に基づいて所定時間をカウントすることできる。
【００７７】
ステップｓ２５において、制御部４０は、使用セキュアコマンドを受け取ったと判定すると、ステップｓ２６において、記憶装置３に接続されているホスト装置２は正しいものであると判定する。その後、ステップｓ２７において、制御部４０はセキュアコマンド待ち状態を解除する。一方で、制御部４０は、ステップｓ２５において、使用セキュアコマンドを受け取っていないと判定すると、ステップｓ３０において、記憶装置３に接続されているホスト装置２は異常なものであると判定する。
【００７８】
ステップｓ３０の後、制御部４０は、ステップｓ３１において、メモリコントローラ４の動作モードを異常モードに設定する。この異常モードでは、制御部４０は、例えば、ホスト装置２が異常なものであると判定した後しばらくの間（例えば１分間）は正常に動作し、その後、正常に動作しない。これにより、ホスト装置２が異常なものである場合には、データ処理システム１は正常に動作しなくなり、セキュリティ性能が向上する。なお、制御部４０は、ホスト装置２が異常なものであると判定してから、正常に動作しなくなるまでの時間を、例えば３０秒から６０秒の間で、ＲＣＴ４４の出力信号に基づいて生成した乱数を用いて決定しても良い。
【００７９】
メモリコントローラ４では、ステップｓ２７の後、ステップｓ２８において、制御部４０は、使用セキュアコマンドが、リードＩＤコマンド等の応答ありコマンドであるか否かを判定する。制御部４０は、使用セキュアコマンドが応答ありコマンドである場合には、ステップｓ２９において、使用セキュリティパターンに規定される所定の応答データをホスト装置２に出力する。例えば、使用セキュアコマンドがリードＩＤコマンドである場合には、制御部４０は、記憶部４２内の記憶装置識別情報を読み出さずに、使用セキュリティパターンに規定される所定の応答データを出力する。この所定の応答データは、記憶装置識別情報とは異なるデータとなっている。また、使用セキュアコマンドがリードコマンドである場合には、制御部４０は、半導体メモリ５の記憶領域５０からデータを読み出さずに、使用セキュリティパターンに規定される所定の応答データを出力する。
【００８０】
一方で、制御部４０は、使用セキュアコマンドが応答なしコマンドである場合には、当該応答なしコマンドが指示する処理を実行しない。例えば使用セキュアコマンドがライトコマンドである場合には、制御部４０は、当該ライトコマンドを無視して、半導体メモリ５の記憶領域５０に対するデータ書き込み処理は行わない。セキュアコマンドは、メインプロセッサ２０が発行したものではなく、認証処理のためのコマンドであることから、使用セキュアコマンドがライトコマンドの場合に、記憶領域５０に対してデータ書き込み処理が行われると、データ処理システム１が誤動作する可能性がある。なお、使用セキュアコマンドがリフレッシュコマンドである場合には、制御部４０は、リフレッシュコマンドを無視せずに、半導体メモリ５に対するリフレッシュ処理を行っても良い。ただし、このリフレッシュ処理は、不要な処理であることから、制御部４０は、リフレッシュコマンドを無視する方が望ましい。
【００８１】
図３に戻って、ホスト装置２では、ステップｓ５の後、サブプロセッサ２１は、ステップｓ６において、使用セキュアコマンドが応答ありコマンドであるか否かを判定する。サブプロセッサ２１は、使用セキュアコマンドが応答ありコマンドであると判定すると、ステップｓ７において、メモリコントローラ４から所定の応答データを受け取ったか否かを判定する。ステップｓ７では、サブプロセッサ２１は、ステップｓ４において使用セキュアコマンドを発行してから所定時間（例えば数十〜数百ｍｓ）以内に、使用セキュリティパターンに規定される所定の応答データを受け取ったか否かを判定する。サブプロセッサ２１は、ステップｓ７において、所定時間内に所定の応答データを受け取ったと判定すると、ステップｓ８において、ホスト装置２に接続されている記憶装置３（メモリコントローラ４）は正しいものであると判定する。一方で、サブプロセッサ２１は、所定時間内に所定の応答データを受け取っていないと判定すると、ステップｓ９において、ホスト装置２に接続されている記憶装置３は異常なものであると判定する。サブプロセッサ２１は、ＲＴＣ２４からの時刻情報に基づいて所定時間をカウントすることできる。
【００８２】
ステップｓ９の後、サブプロセッサ２１は、自身の動作モードを異常モードに設定する。この異常モードでは、サブプロセッサ２１は、例えば、記憶装置３が異常なものであると判定した後しばらくの間（例えば１分間）は正常に動作し、その後、正常に動作しない。これにより、記憶装置３が異常なものである場合には、データ処理システム１は正常に動作しなくなり、セキュリティ性能が向上する。なお、サブプロセッサ２１は、記憶装置３が異常なものであると判定してから、正常に動作しなくなるまでの時間を、例えば３０秒から６０秒の間で、ＲＣＴ２４の出力信号に基づいて生成した乱数を用いて決定しても良い。
【００８３】
サブプロセッサ２１は、ステップｓ８の後、ステップｓ１を実行して、次の使用セキュリティパターンを決定する。またサブプロセッサ２１は、ステップｓ６において使用セキュアコマンドが応答なしコマンドであると判定すると、ステップｓ１を実行して、次の使用セキュリティパターンを決定する。サブプロセッサ２１は以後同様に動作する。サブプロセッサ２１は、ステップｓ９が実行されない限り、つまり、記憶装置３が異常であると判定しない限り、ステップｓ１〜ｓ８までの認証処理を使用セキュリティパターンを変えながら繰り返し実行する。
【００８４】
サブプロセッサ２１は、セキュアコマンド発行状態のとき以外において、メインプロセッサ２０から通常コマンドを受け取った場合には、通常通り、受け取った通常コマンドをすぐにメモリコントローラ４に出力する。一方で、サブプロセッサ２１は、セキュアコマンド発行状態のときに、メインプロセッサ２０から通常コマンドを受け取った場合には、受け取った通常コマンドの出力を一旦保留し、使用セキュアコマンドを発行してセキュアコマンド発行状態を解除した後に、受け取った通常コマンドをメモリコントローラ４に出力する。使用セキュアコマンドが時間的条件付きセキュアコマンドである場合には、サブプロセッサ２１は、コマンド発行条件が成立してから、セキュアコマンド発行状態となるまでに受け取った通常コマンドをメモリコントローラ４に出力する。
【００８５】
メモリコントローラ４では、制御部４０は、ステップｓ２９の後、ステップｓ２１を実行して、次の使用セキュリティパターンを決定する。また制御部４０は、ステップｓ２８において使用セキュアコマンドが応答なしコマンドであると判定すると、ステップｓ２１を実行して、次の使用セキュリティパターンを決定する。制御部４０は以後同様に動作する。メモリコントローラ４は、セキュアコマンド待ち状態以外において、ホスト装置２から受け取るコマンドは、通常コマンドとして扱い、受け取ったコマンドが指示する処理を実行する。
【００８６】
メモリコントローラ４では、ステップｓ２４において、使用セキュアコマンドが時間的条件付きセキュアコマンドであると判定されると、図５のステップｓ３２が実行される。ステップｓ３２では、制御部４０は、ホスト装置２からコマンドを受け取ったか否かを判定する。制御部４０は、ステップｓ３２において、コマンドを受け取っていないと判定すると、ステップｓ３３において、使用コマンド発行条件が成立したと判定してから（ステップｓ２２）、使用セキュリティパターンに規定される時間的条件で指定される所定時間が経過しているか否かを判定する。制御部４０は、所定時間が経過していると判定すると、ステップｓ３０を実行して、ホスト装置２が異常なものであると判定する。つまり、制御部４０は、所定時間内に全くコマンドを受け取らなかった場合には、ホスト装置２が異常なものであると判定する。その後、ステップｓ３１が実行される。一方で、制御部４０は、ステップｓ３３において、所定時間が経過していないと判定すると、ステップｓ３２を再度実行して、ホスト装置２からコマンドを受け取ったか否かを判定する。
【００８７】
制御部４０は、ステップｓ３２において、ホスト装置２からコマンドを受け取ったと判定すると、ステップｓ３４において、使用コマンド発行条件が成立したと判定してから（ステップｓ２２）、使用セキュリティパターンに規定される時間的条件で指定される所定時間が経過しているか否かを判定する。制御部４０は、所定時間が経過していると判定すると、ステップｓ３０を実行して、ホスト装置２が異常なものであると判定する。つまり、制御部４０は、所定時間が経過した後にコマンドを受け取った場合には、ホスト装置２が異常なものであると判定する。一方で、制御部４０は、ステップｓ３４において、所定時間が経過していないと判定すると、ステップｓ３５において、受け取ったコマンドが使用セキュアコマンドであるか否かを判定する。制御部４０は、受け取ったコマンドが使用セキュアコマンドであると判定すると、ステップｓ２６を実行して、ホスト装置２が正しいものであると判定する。つまり、制御部４０は、使用コマンド発行条件が成立してから所定時間内に使用セキュアコマンドを受け取ると、ホスト装置２が正しいものであると判定する。その後、ステップｓ２７が実行され、以後、制御部４０は同様に動作する。
【００８８】
制御部４０は、ステップｓ３５において、受け取ったコマンドが使用セキュアコマンドでないと判定すると、ステップｓ３６において、受け取ったコマンドを通常コマンドとして扱い、受け取ったコマンドで指示される処理を実行する。その後、制御部４０はステップｓ３２を実行して、ホスト装置２からコマンドを受け取ったか否かを判定する。以後、制御部４０は同様に動作する。
【００８９】
制御部４０は、ステップｓ３０が実行されない限り、つまり、ホスト装置２が異常であると判定しない限り、図４，５に示される認証処理を、使用セキュリティパターンを変えながら繰り返し実行する。
【００９０】
このように、サブプロセッサ２１と記憶装置３との間では、メインプロセッサ２０の動作とは独立して認証処理が行われる。認証処理において、セキュアコマンドとして応答なしコマンドが使用される場合には、ホスト装置２の認証だけが行われる。これにより、不正なホスト装置２を検出することができる。一方で、認証処理において、セキュアコマンドとして応答ありコマンドが使用される場合には、ホスト装置２の認証と記憶装置３の認証とが行われる。つまり、この場合には、ホスト装置２と記憶装置３との間で相互認証が行われる。これにより、不正なホスト装置２だけではなく、不正な記憶装置３を検出することができる。
【００９１】
なお上記の例では、セキュアコマンドは変化していたが、１種類のセキュアコマンドだけが使用されても良い。また上記の例では、コマンド発行条件は変化していたが、１種類のコマンド発行条件だけが使用されても良い。
【００９２】
以上のように、本実施の形態では、サブプロセッサ２１は、メインプロセッサ２０からの指示なく、記憶装置３との間で認証処理を実行することから、メイン用ＦＷ２２０が不正に書き換えられてメインプロセッサ２０が不正に支配されたとしても、サブプロセッサ２１は、記憶装置３との間で認証処理を実行することができる。よって、セキュリティ性能が向上する。
【００９３】
また、サブ用ＦＷ２２１及びメモリ用ＦＷ４２１を設計するだけで、サブプロセッサ２１と記憶装置３との間での認証処理を実現することが可能であることから、認証処理のためにハードウェアを追加する必要はない。よって、簡単に認証処理を実現することができる。
【００９４】
また、認証処理は、メインプロセッサ２０の動きとは独立して行われることから、認証処理を考慮することなくメイン用ＦＷ２２０を設計することができる。よって、メイン用ＦＷ２２０の設計が簡単になる。
【００９５】
また本実施の形態では、認証処理の実行中に、メインプロセッサ２０から通常コマンドが発行された場合であっても、メモリコントローラ４は当該通常コマンドに応じた処理を実行することができるため、データ処理システム１の性能の低下の抑制と認証処理とを両立することができる。
【００９６】
また本実施の形態では、コマンド発行条件が成立したときにセキュアコマンドが発行されることから、突発的にセキュリティが発動し、ホスト装置２及び記憶装置３の異常が検出される。
【００９７】
また本実施の形態のように、認証処理で使用されるコマンド発行条件が変化する場合には、サブプロセッサ２１からセキュアコマンドが出力されるタイミングが変化する。したがって、データ処理システム１において、記憶装置３が正しいものであるのか否かの判定が実行されるタイミング及びホスト装置２が正しいものであるのか否かの判定が実行されるタイミングが特定しにくくなる。よって、認証処理の内容が悪意のある第三者によって解析されにくくなる。その結果、サブ側ＦＷ２２１及びメモリ用ＦＷ４２１が不正に書き換えられて、不正な記憶装置３あるいは不正なホスト装置２が使用されることを抑制することができる。
【００９８】
また本実施の形態のように、認証処理で使用されるセキュアコマンドが変化する場合には、認証処理の内容が悪意のある第三者によって解析されにくくなる。その結果、サブ側ＦＷ２２１及びメモリ用ＦＷ４２１が不正に書き換えられて、不正な記憶装置３あるいは不正なホスト装置２が使用されることを抑制することができる。
【００９９】
また本実施の形態では、セキュアコマンドとして、特殊なコマンドが採用されているのではなく、メインプロセッサ２０が発行するコマンドと同じコマンドが採用されているため、認証処理の内容が悪意のある第三者によって解析されにくくなる。
【０１００】
また本実施の形態では、メモリコントローラ４は、受け取った使用セキュアコマンドがライトコマンドの場合に、半導体メモリ５の記憶領域５０に対してデータの書き込み処理を行わない。一方で、不正な記憶装置３がホスト装置２に接続された場合には、不正な記憶装置３は、セキュアコマンドと通常コマンドとの区別ができないことから、セキュアコマンドとしてのライトコマンドを受け取ったときには、半導体メモリ５の記憶領域５０に対してデータの書き込み処理を行う。これにより、記憶領域５０では、本来ではデータが書き込まれることがない領域にデータが書き込まれてしまう。つまり、ホスト装置２が知らないうちに、記憶領域５０に対してデータが書き込まれてしまう。よって、ホスト装置２に不正な記憶装置３が接続された場合には、データ処理システム１は正常に動作しなくなり、セキュリティ性能が向上する。
【０１０１】
また、悪意のある第三者は、サブプロセッサ２１と記憶装置３との間の信号線、例えば、ホスト装置２内のバス２６０に流れる信号を解析して、サブプロセッサ２１と記憶装置３の間の認証処理の内容を特定しようとする可能性がある。セキュアコマンドとして、リードＩＤコマンドのような応答ありコマンドを使用すると、メモリコントローラ４からの応答データが、バス２６０等の、サブプロセッサ２１と記憶装置３との間の信号線に流れることから、悪意のある第三者によって認証処理の内容が特定されやすくなる。よって、認証処理の内容を特定しにくくするという観点からは、本実施の形態のように、セキュアコマンドとして、ライトコマンドのような応答なしコマンドが使用されることが望ましい。
【０１０２】
なお、上記の例では、メモリコントローラ４の制御部４０は、受け取った使用セキュアコマンドがリードコマンドの場合には、半導体メモリ５に対して読み出し処理を行っていなかったが、当該読み出し処理を行っても良い。この場合には、制御部４０は、半導体メモリ５の記憶領域５０から読み出したデータを破棄するとともに、所定の応答データを出力する。これにより、不正な目的でデータ処理システム１の動きを解析する者は、メモリコントローラ４が受け取るコマンドが、セキュアコマンドであるのか、通常リードコマンドであるのか特定しにくくなる。よって、認証処理の内容が悪意のある第三者によって特定されにくくなる。その結果、セキュリティ性能が向上する。
【０１０３】
また、メモリコントローラ４が、セキュアコマンドとして、リードＩＤコマンドを受け取った場合に出力する応答データのビット数は、記憶部４２内の記憶装置識別情報のビット数と一致することが望ましい。これにより、メモリコントローラ４が、リードＩＤコマンドを受け取ったときに、認証処理での応答データを出力しているのか、記憶装置識別情報を出力しているのか、特定しにくくなる。よって、認証処理の内容が悪意のある第三者によって特定されにくくなる。
【０１０４】
また、サブ用テーブル２２１ａに含まれる複数種類のセキュリティパターンと、メモリ用テーブル４２１ａに含まれる複数種類のセキュリティパターンとは、必ず一致する必要はない。ホスト装置２に接続される記憶装置３が複数種類存在する場合には、記憶装置３の種類によって、メモリ用テーブル４２１ａに含まれるセキュリティパターンが異なることがある。このような場合には、サブ用テーブル２２１ａには、ホスト装置２に接続可能な複数種類の記憶装置３のメモリ用テーブル４２１ａに含まれるセキュリティパターンのすべての種類を記述しておいても良い。そして、サブプロセッサ２１は、メインプロセッサ２０が記憶装置３から読み出した記憶装置識別情報に基づいて、ホスト装置２に接続されている記憶装置３の種類を特定し、サブ用テーブル２２１ａに含まれる複数種類のセキュリティパターンのうち、特定した種類に応じたセキュリティパターンだけを使用して認証処理を行う。これにより、サブプロセッサ２１は、ホスト装置２に接続可能な複数種類の記憶装置３のどの種類の記憶装置３がホスト装置２に接続された場合であっても、ホスト装置２に接続された記憶装置３との間で認証処理を行うことが可能となる。
【０１０５】
また、サブ用テーブル２２１ａは、ホスト装置２が出荷された後に更新されても良い。サブ用テーブル２２１ａは、サブ用ＦＷ２２１に記述されていることから、サブ用ＦＷ２２１を更新する際に、サブ用テーブル２２１ａを更新することができる。例えば、新しい種類の記憶装置３が開発された場合には、新しい種類の記憶装置３に対応するために、ホスト装置２内のメイン用ＦＷ２２０及びサブ用ＦＷ２２１が更新されることがある。そして、新しい種類の記憶装置３では、メモリ用テーブル４２１ａに対して新しいセキュリティパターンが追加されることがある。このような場合には、新しい種類の記憶装置３に合わせてメイン用ＦＷ２２０及びサブ用ＦＷ２２１を更新する際に、サブ用ＦＷ２２１に記述されるサブ用テーブル２２１ａも更新して、当該サブ用テーブル２２１ａに対して、新しい種類の記憶装置３のメモリ用テーブル４２１に追加されたセキュリティパターンを追加する。これにより、サブプロセッサ２１は、ホスト装置２の出荷後に開発された新しい種類の記憶装置３との間でも認証処理を行うことが可能となる。ホスト装置２がインターネット等のネットワークに接続されている場合には、当該ネットワークが利用されてメイン用ＦＷ２２０及びサブ用ＦＷ２２１が更新される。
【０１０６】
＜各種変形例＞
＜第１変形例＞
サブプロセッサ２１は、使用コマンド発生条件が成立する前に、メインプロセッサ２０からの指示なく、使用セキュアコマンドと同じコマンドを出力しても良い。以下に本変形例について詳細に説明する。
【０１０７】
本変形例では、サブプロセッサ２１は、ステップｓ１において使用セキュリティパターンを決定してから、ステップｓ３において使用コマンド発生条件が成立すると判定するまでに、メインプロセッサ２０からの指示なく、使用セキュアコマンドと同じコマンドをダミーコマンドとしてメモリコントローラ４に出力する。これにより、不正な目的で認証処理の内容を特定しようとする者は、サブプロセッサ２１から、セキュアコマンドが出力されているのか、ダミーコマンドが出力されているのか特定しにくくなる。よって、認証処理の内容が悪意のある第三者によって特定されにくくなる。サブプロセッサ２１は、ダミーコマンドを出力する際には、ランダムな時間の経過ごとに（不定期に）、ダミーコマンドを繰り返し出力することが望ましい。これより、認証処理の内容が悪意のある第三者によってさらに特定されにくくなる。また、サブプロセッサ２１は、メインプロセッサ２０から通常コマンドを受け取らない期間に、ダミーコマンドを出力することが望ましい。これにより、サブプロセッサ２１によるダミーコマンドの出力が、ホスト装置２の性能に影響を与えることを抑制することができる。
【０１０８】
メモリコントローラ４では、制御部４０は、ホスト装置２からのダミーコマンドを、ステップｓ２１とステップｓ２２の間に受け取る。このときの制御部４０は、ホスト装置２からのダミーコマンドを通常コマンドとして処理する。ダミーコマンドが、ライトコマンドである場合には、制御部４０は記憶領域５０に対してデータの書き込み処理を行うことから、データ処理システム１が正常に動作できなくなる可能性がある。したがって、サブプロセッサ２１は、使用セキュアコマンドがライトコマンドの場合には、ダミーコマンドを出力しない。一方で、サブプロセッサ２１は、使用セキュアコマンドが例えばリードＩＤコマンドの場合には、ダミーコマンドを出力する。この場合、ダミーコマンドであるリードＩＤコマンドを受け取った制御部４０は、記憶部４２内の記憶装置識別情報を出力する。サブプロセッサ２１は、受け取った記憶装置識別情報をメインプロセッサ２０に出力せずに破棄する。これにより、データ処理システム１が異常動作することはない。
【０１０９】
このように、サブプロセッサ２１は、使用セキュアコマンドが、それと同一のダミーコマンドがメモリコントローラ４で通常コマンドとして処理された場合にデータ処理システム１が異常動作することがないようなコマンド（例えば、リードＩＤコマンド、リードコマンド、リフレッシュコマンド）のときにだけ、当該使用セキュアコマンドと同一のダミーコマンドを出力する。サブプロセッサ２１は、使用セキュアコマンドが応答ありコマンドの場合には、ダミーコマンドに応じてメモリコントローラ４が出力する応答データをメインプロセッサ２０には伝えずに破棄する。
【０１１０】
＜第２変形例＞
認証処理で最初に使用されるセキュリティパターンは、サブプロセッサ２１とメモリコントローラ４との乱数交換によって決定されても良い。以下に本変形例について図６を用いて詳細に説明する。
【０１１１】
ホスト装置２が起動したときと、ホスト装置２に記憶装置３が接続されたとき、サブプロセッサ２１は、ステップｓ５１においてサブ側乱数を生成し、ステップｓ５２において生成したサブ側乱数をメモリコントローラ４に出力する。サブプロセッサ２１は、例えば、ＲＴＣ２４の出力信号に基づいてサブ側乱数を生成する。メモリコントローラ４では、制御部４０は、サブ側乱数を受け取ると、ステップｓ６１においてメモリ側乱数を生成し、ステップｓ６２において、生成したメモリ側乱数をサブプロセッサ２１に出力する。制御部４０は、例えば、ＲＴＣ４４の出力信号に基づいてメモリ側乱数を生成する。サブプロセッサ２１及びメモリコントローラ４の制御部４０のそれぞれは、サブ側乱数及びメモリ側乱数に基づいて、最初に使用するセキュリティパターンのインデックス番号（「初期インデックス番号」と呼ぶ）を決定する（ステップｓ５３，ｓ６３）。例えば、サブプロセッサ２１は、サブ側乱数及びメモリ側乱数を用いて所定の演算を行い、その演算結果を初期インデックス番号とする。具体的には、サブプロセッサ２１は、例えば、サブ側乱数とメモリ側乱数とのＸＯＲ（排他的論理和）を演算し、それによって得られた値を初期インデックス番号とする。同様に、メモリコントローラ４の制御部４０は、サブ側乱数及びメモリ側乱数を用いて、サブプロセッサ２１と同じ演算を行い、その演算結果を初期インデックス番号とする。つまり、制御部４０は、サブ側乱数とメモリ側乱数とのＸＯＲを演算し、それによって得られた値を初期インデックス番号とする。
【０１１２】
このように、本変形例では、最初に使用されるセキュリティパターンが、サブプロセッサ２１とメモリコントローラ４との乱数交換によって決定されることから、認証処理の内容が悪意のある第三者によってさらに特定されにくくなる。よって、セキュリティ性能がさらに向上する。
【０１１３】
なお、上記の例では、最初に使用されるセキュリティパターンが、サブプロセッサ２１とメモリコントローラ４との乱数交換によって決定されているが、使用セキュリティパターンが、常に、サブプロセッサ２１とメモリコントローラ４との間の乱数交換によって決定されても良い。
【０１１４】
＜第３変形例＞
使用セキュリティパターンでのセキュアコマンドが応答ありコマンドである場合には、次回の使用セキュリティパターンが、メモリコントローラ４が出力する応答データに基づいて決定されても良い。以下に本変形例について説明する。
【０１１５】
メモリコントローラ４では、上述ステップｓ２８において、制御部４０は、使用セキュアコマンドが応答ありコマンドであると判定すると、ステップｓ２９において所定の応答データを出力する。そして、制御部４０は、その後のステップｓ２１において、その前のステップｓ２９で出力した応答データに基づいて、使用セキュリティパターンを決定する。例えば、制御部４０は、応答データのうちの、特定のビット位置での複数のビットを十進数表記して得られる値と一致するインデックス番号のセキュリティパターンを使用セキュリティパターンとする。
【０１１６】
一方で、サブプロセッサ２１は、ステップｓ７において、所定の応答データを受け取り、その後、ステップｓ８を実行すると、その後のステップｓ１において、メモリコントローラ４と同様に、当該応答データに基づいて使用セキュリティパターンを決定する。つまり、サブプロセッサ２１は、応答データのうちの、特定のビット位置での複数のビットを十進数表記して得られる値と一致するインデックス番号のセキュリティパターンを使用セキュリティパターンとする。以後、応答データのうち、使用セキュリティパターンの決定に使用される、特定のビット位置での複数のビットを「パターン決定ビット」と呼ぶ。
【０１１７】
本変形例に係るサブ用テーブル２２１ａ及びメモリ用テーブル４２１ａでは、図７に示されるように、セキュアコマンドとして応答ありコマンドが規定されるセキュリティパターンには、当該応答ありコマンドが使用セキュアコマンドとして使用される場合の応答データでのパターン決定ビットを特定するためのビット特定情報が規定されている。
【０１１８】
サブプロセッサ２１は、使用セキュアコマンドが応答ありコマンドである場合には、サブ用テーブル２２１ａを参照し、使用セキュリティパターンに規定されるビット特定情報を取得し、取得したビット特定情報に基づいて、応答データでのパターン決定ビットを特定する。使用セキュリティパターンが、例えば図７の０番のセキュリティパターンである場合には、パターン決定ビットは、応答データの最上位２ビットとなる。また、使用セキュリティパターンが、図７の２番のセキュリティパターンである場合には、パターン決定ビットは、応答データの最下位２ビットとなる。そして、サブプロセッサ２１は、特定したパターン決定ビットを十進数表記して得られる値と一致するインデックス番号のセキュリティパターンを次の使用セキュリティパターンとする。
【０１１９】
同様に、メモリコントローラ４の制御部４０は、使用セキュアコマンドが応答ありコマンドである場合には、メモリ用テーブル４２１ａを参照し、使用セキュリティパターンに規定されるビット特定情報を取得し、取得したビット特定情報に基づいて、応答データでのパターン決定ビットを特定する。そして、制御部４０は、特定したパターン決定ビットを十進数表記して得られる値と一致するインデックス番号のセキュリティパターンを次の使用セキュリティパターンとする。
【０１２０】
このように、本変形例では、サブプロセッサ２１及びメモリコントローラ４のそれぞれは、使用セキュアコマンドが応答ありコマンドである場合には、当該使用セキュアコマンドに応じた応答データに基づいて、次の使用セキュリティパターンを決定する。そのため、認証処理の内容が悪意のある第三者によってさらに特定されにくくなる。よって、セキュリティ性能がさらに向上する。
【０１２１】
＜第４変形例＞
メインプロセッサ２０とサブプロセッサ２１との間では、サブプロセッサ２１とメモリコントローラ４との間の認証処理と同様の認証処理が行われても良い。以後、サブプロセッサ２１とメモリコントローラ４との間の認証処理を「サブ−メモリ間の認証処理」と呼ぶ。また、メインプロセッサ２０とサブプロセッサ２１との間の認証処理を「メイン−サブ間の認証処理」と呼ぶ。
【０１２２】
メイン−サブ間の認証処理は、サブ−メモリ間の認証処理に加えて行われても良いし、サブ−メモリ間の認証処理の代わりに行われても良い。メイン−サブ間の認証処理を行う際には、図８に示されるように、ホスト装置２内のメイン用ＦＷ２２０には、サブ用セキュリティパターンテーブル２２１ａと同様のメイン用セキュリティパターンテーブル２２０ａ（以後、「メイン用テーブル２２０ａ」と呼ぶ）が記述される。
【０１２３】
メイン−サブ間の認証処理では、メインプロセッサ２０及びサブプロセッサ２１のそれぞれは、互いに独立して、共通のコマンド発行条件が成立するか否かを判定する。コマンド発行条件が例えば「リードコマンド１００回」であれば、メインプロセッサ２０は、自身が発行する通常リードコマンドの発行回数をカウントし、発行回数が１００回になったとき、コマンド発行条件が成立したと判定する。また、サブプロセッサ２１は、メインプロセッサ２０が発行する通常リードコマンドの発行回数をカウントし、発行回数が１００回になったとき、コマンド発行条件が成立したと判定する。
【０１２４】
メイン−サブ間の認証処理では、例えば、メインプロセッサ２０は、サブ−メモリ間の認証処理でのサブプロセッサ２１と同様に動作し、サブプロセッサ２１は、サブ−メモリ間の認証処理でのメモリコントローラ４と同様に動作する。つまり、メインプロセッサ２０は、上述の図３に示される処理と同様の処理を実行し、サブプロセッサ２１は、上述の図４及び図５に示される処理と同様の処理を実行する。メインプロセッサ２０は、コマンド発行条件が成立すると、セキュアコマンドをサブプロセッサ２１に発行（出力）する。一方で、サブプロセッサ２１は、コマンド発行条件が成立した後、メインプロセッサ２０からセキュアコマンドを受け取るか否かを判定し、その判定結果に基づいてメインプロセッサ２０が正しいものであるか否か、言い換えればメイン用ＦＷ２２０が正しいものであるか否かを判定する。サブプロセッサ２１は、コマンド発行条件が成立した後、メインプロセッサ２０からセキュアコマンドを受け取った場合には、メインプロセッサ２０は正しいものであると判定し、メインプロセッサ２０からセキュアコマンドを受け取らない場合には、メインプロセッサ２０は異常なものであると判定する。これにより、メインプロセッサ２０とサブプロセッサ２１との間では、メインプロセッサ２０の認証が行われる。よって、メイン用ＦＷ２２０が不正に書き換えられてメインプロセッサ２０が不正に支配されているか否かを判定することができる。
【０１２５】
またサブプロセッサ２１は、メインプロセッサ２０からのセキュアコマンドが、応答ありコマンドである場合には、所定の応答データをメインプロセッサ２０に出力する。メインプロセッサ２０は、セキュアコマンドの出力に応じて、サブプロセッサ２１から所定の応答データを受け取るか否かを判定し、その判定結果に基づいて、サブプロセッサ２１が正しいものであるか否か、言い換えれば、サブ用ＦＷ２２１が正しいものであるか否かを判定する。メインプロセッサ２０は、所定の応答データを受け取った場合、サブプロセッサ２１は正しいものであると判定し、所定の応答データを受け取らない場合、サブプロセッサ２１は異常なものであると判定する。これにより、メインプロセッサ２０とサブプロセッサ２１との間では、サブプロセッサ２１の認証が行われる。よって、サブ用ＦＷ２２１が不正に書き換えられてサブプロセッサ２１が不正に支配されているか否かを判定することができる。
【０１２６】
なお、メイン−サブ間の認証処理でのメインプロセッサ２０及びサブプロセッサ２１の役割は互いに入れて変えても良い。つまり、メイン−サブ間の認証処理では、メインプロセッサ２０は、サブ−メモリ間の認証処理でのメモリコントローラ４と同様に動作し、サブプロセッサ２１は、サブ−メモリ間の認証処理での動作と同様の動作を行っても良い。
【０１２７】
以上のように、データ処理システム１は詳細に説明されたが、上記した説明は、全ての局面において例示であって、この発明がそれに限定されるものではない。また、上述した各種変形例は、相互に矛盾しない限り組み合わせて適用可能である。そして、例示されていない無数の変形例が、この発明の範囲から外れることなく想定され得るものと解される。
【符号の説明】
【０１２８】
１  データ処理システム
２  ホスト装置
３  記憶装置
４  メモリコントローラ
５  半導体メモリ
２０  メインプロセッサ
２１  サブプロセッサ
５０  記憶領域
２２０  メイン用ファームウェア
２２１  サブ用ファームウェア
４２１  メモリ用ファームウェア
【図１】
0006471018.tif 000002
【図２】
0006471018.tif 000003
【図３】
0006471018.tif 000004
【図４】
0006471018.tif 000005
【図５】
0006471018.tif 000006
【図６】
0006471018.tif 000007
【図７】
0006471018.tif 000008
【図８】
0006471018.tif 000009