<データ処理システムの全体構成>
図1はデータ処理システム1の構成を示す図である。データ処理システム1は、ホスト装置2及び記憶装置3を備えている。ホスト装置2は、記憶装置3を制御する制御装置である。記憶装置3は半導体メモリ5を有する。半導体メモリ5は、例えばNAND型フラッシュメモリである。半導体メモリ5はNAND型フラッシュメモリ以外であっても良い。
ホスト装置2は、データ処理システム1全体の動作を統括的に管理する。ホスト装置2は、データ処理システム1の本体装置であると言える。ホスト装置2は、記憶装置3からデータを読み出したり、記憶装置3にデータを書き込んだりする。ホスト装置2が記憶装置3に対して読み出し要求を出力すると、それを受け取った記憶装置3は、半導体メモリ5内のデータを読み出してホスト装置2に出力する。また、ホスト装置2が記憶装置3に対して書き込み要求を出力すると、それを受け取った記憶装置3は、ホスト装置2からのデータを半導体メモリ5内に書き込む。
記憶装置3の形状は、例えば、カード型となっている。カード型の記憶装置3がホスト装置2に対して装着されることによって、記憶装置3とホスト装置2とが接続される。記憶装置3はホスト装置2に対して着脱可能となっている。なお、記憶装置3とホスト装置2との接続方法はこれに限られない。また、記憶装置3の形状はカード型に限られない。
半導体メモリ5は、記憶領域50にアプリケーションデータ500を記憶している。記憶領域50はメモリセルアレイと呼ばれる。ホスト装置2は、半導体メモリ5内のアプリケーションデータ500を記憶装置3から読み出し、読み出したアプリケーションデータ500を処理する。
ここで、アプリケーションデータは、アプリケーションプログラム(アプリケーションソフトウェア)と、当該アプリケーションプログラムの実行で使用される各種データ(当該アプリケーションプログラムに付随する各種データ)とを含む。言い換えれば、アプリケーションデータは、アプリケーションプログラムと、当該アプリケーションプログラムの実行によって実現される所定の処理の進行で用いられる各種データとを含んでいる。アプリケーションデータ500が、例えばゲームデータである場合には、アプリケーションデータ500には、ゲームプログラムと、当該ゲームプログラムの実行によって実現されるゲームの進行で用いられる、キャラクタデータ及びイメージデータ等の各種データとが含まれる。アプリケーションデータ500が、ゲームデータである場合には、記憶装置3が例えばゲームカートリッジとして機能する。そして、ホスト装置2がゲーム機本体として機能する。ホスト装置2が、記憶装置3から読み出したゲームプログラムを実行することによって、データ処理システム1ではゲームが進行する。
なお、記憶領域50には、アプリケーションデータ500に加えて、あるいはアプリケーションデータ500の代わりに、動画像データ及び音楽データなどの各種コンテンツデータが記憶されても良い。
<ホスト装置の構成>
ホスト装置2は、メインプロセッサ20、サブプロセッサ21、ROM(Read Only Memory)22、RAM(Random Access Memory)23、RTC(Real Time Clock)24、周辺回路25及びメモリI/F回路26を備えている。メインプロセッサ20及びサブプロセッサ21のそれぞれは、コンピュータであるCPU(Central Processing Unit)で構成されている。
メインプロセッサ20、サブプロセッサ21、ROM22、RAM23及びRTC24は、バス250によって互いに接続されている。サブプロセッサ21、周辺回路25及びメモリI/F回路26は、バス250とは独立したバス260によって互いに接続されている。ROM22は、コンピュータが読み取り可能な非一時的な記録媒体であると言える。
RTC24は、現在時刻を計測し、現在時刻を示す時刻情報を出力する。周辺回路25は、例えば、マイク及びスピーカが接続されたサウンドコントローラ、USB (Universal Serial Bus) コントローラ、無線LAN(Local Area Network)コントローラ等を含んでいる。RAM23は、メインプロセッサ20及びサブプロセッサ21がデータ処理する際のワークメモリとして機能する。
メインプロセッサ20は、ホスト装置2の動作を統括的に管理する。メインプロセッサ20は、サブプロセッサ21を介して記憶装置3にアクセスする。したがって、メインプロセッサ20は記憶装置3に直接アクセスできない。ROM22には、メインプロセッサ20用のファームウェア220(メイン用ファームウェア220)が記憶されている。メインプロセッサ20がメイン用ファームウェア220を実行することによって、メインプロセッサ20の各種機能が実現される。メイン用ファームウェア220は一種の制御プログラムである。
サブプロセッサ21は、周辺回路25及びメモリI/F回路26を制御する。メモリI/F回路26は、ホスト装置2と記憶装置3とを接続するためのI/F回路である。サブプロセッサ21は、メモリI/F回路26を通じて記憶装置3にアクセスする。ROM22には、サブプロセッサ21用のファームウェア221(サブ用ファームウェア221)が記憶されている。サブプロセッサ21がサブ用ファームウェア221を実行することによって、サブプロセッサ21の各種機能が実現される。サブ用ファームウェア221は一種の制御プログラムである。サブ用ファームウェア221には、後述するサブ用セキュリティパターンテーブル221aが記述されている。以後、メイン用ファームウェア220及びサブ用ファームウェア221を、それぞれ「メイン用FW220」及び「サブ用FW221」と呼ぶ。また、サブ用セキュリティパターンテーブル221aを「サブ用テーブル221a」と呼ぶ。
<記憶装置の構成>
記憶装置3は、メモリコントローラ4及び半導体メモリ5を備えている。メモリコントローラ4は、ホスト装置2からの指示に応じて半導体メモリ5を制御する。記憶装置3及びメモリコントローラ4のそれぞれは、一種のコンピュータである。
メモリコントローラ4は、制御部40、ホストI/F回路41、記憶部42、メモリI/F回路43及びRTC44を備えている。ホストI/F回路41は、記憶装置3とホスト装置2とを接続するためのI/F回路である。メモリI/F回路43は、メモリコントローラ4と半導体メモリ5とを接続するためのI/F回路である。RTC44は、現在時刻を計測し、現在時刻を示す時刻情報を出力する。
制御部40は、例えばCPU等で構成されており、記憶装置3の動作を統括的に管理する。制御部40は、メモリI/F回路43を通じて、半導体メモリ5にアクセスする。記憶部42には、制御部40のためのファームウェア(メモリ用ファームウェア)421が記憶されている。制御部40(詳細には制御部40のCPU)が記憶部42内のメモリ用ファームウェア421を実行することによって、制御部40の各種機能が実現される。
記憶部42は、ROM及びRAM等で構成されている。記憶部42のROMには、メモリ用ファームウェア421が記憶されている。メモリ用ファームウェア421には、後述するメモリ用セキュリティパターンテーブル421aが記述されている。さらに、記憶部42のROMには、記憶装置3を識別するための記憶装置識別情報が記憶されている。記憶装置識別情報には、例えば、メモリコントローラ4の種別を示す情報、半導体メモリ5のメモリサイズを示す情報及び半導体メモリ5のメーカを示す情報などが含まれている。以後、メモリ用ファームウェア421を「メモリ用FW421」と呼ぶ。またメモリ用セキュリティパターンテーブル421aを「メモリ用テーブル421a」と呼ぶ。
<データ処理システムの基本動作>
以上のような構成を有するデータ処理システム1では、メインプロセッサ20から様々なコマンドが記憶装置3に向けて発行(出力)される。メインプロセッサ20が発行するコマンドとしては、例えば、リードコマンド、リードIDコマンド、ライトコマンド、ステータスセットコマンド、リフレッシュコマンドなどがある。
リードコマンドは、半導体メモリ5の記憶領域50内のデータの読み出し処理を指示するコマンドである。リードIDコマンドは、メモリコントローラ4の記憶部42内の記憶装置識別情報の読み出し処理を指示するコマンドである。ライトコマンドは、記憶領域50に対するデータの書き込み処理を指示するコマンドである。ステータスセットコマンドは、ステータスの設定を指示するコマンドである。リフレッシュコマンドは、リフレッシュ処理を指示するコマンドである。半導体メモリ5では、リードディスターブ等によって、記憶領域(メモリセルアレイ)50内のデータが本来の値から変化することがある。これを防止するために、メモリコントローラ4は、記憶領域50内のデータを一旦読み出して、読み出したデータを再度記憶領域50に書き直すリフレッシュ処理を実行する。リフレッシュコマンドは、このリフレッシュ処理を指示するコマンドである。
リードコマンド及びリードIDコマンドは、そのコマンドの発行に応じて記憶装置3からの応答が発生する応答ありコマンドであると言える。言い換えれば、リードコマンド及びリードIDコマンドは、記憶装置3にとっては、応答が必要なコマンド(応答を返す必要があるコマンド)であると言える。一方で、ライトコマンド、ステータスセットコマンド及びリフレッシュコマンドのそれぞれは、そのコマンドの発行に応じて記憶装置3からの応答が発生しない応答なしコマンドであると言える。言い換えれば、ライトコマンド、ステータスセットコマンド及びリフレッシュコマンドは、記憶装置3にとっては、応答が不要なコマンド(応答を返す必要がないコマンド)であると言える。
メインプロセッサ20からコマンドが出力されると、サブプロセッサ21は、メインプロセッサ20からのコマンドを、メモリI/F回路26を通じて記憶装置3に出力する。記憶装置3では、制御部40は、ホスト装置2からのコマンドをホストI/F回路41を通じて受け取ると、受け取ったコマンドで指示される処理を実行する。
例えば、制御部40は、ホスト装置2からのコマンドがリードコマンドである場合には、メモリI/F回路43を通じて半導体メモリ5の記憶領域50からデータを読み出す。そして、制御部40は、読み出したデータをホストI/F回路41を通じてホスト装置2に出力する。ホスト装置2では、サブプロセッサ21がメモリコントローラ4からのデータをメモリI/F回路26を通じて受け取ると、受け取ったデータをメインプロセッサ20に出力する。これにより、メインプロセッサ20は、半導体メモリ5からデータを読み出すことができる。
また制御部40は、ホスト装置2からのコマンドがリードIDコマンドである場合には、記憶部42内の記憶装置識別情報を読み出す。そして、制御部40は、読み出した記憶装置識別情報をホストI/F回路41を通じてホスト装置2に出力する。ホスト装置2では、サブプロセッサ21は、メモリコントローラ4からの記憶装置識別情報をメモリI/F回路26を通じて受け取ると、受け取った記憶装置識別情報をメインプロセッサ20に出力する。これにより、メインプロセッサ20は、記憶装置3から記憶装置識別情報を読み出すことができる。
また制御部40は、ホスト装置2からのコマンドがライトコマンドである場合には、メモリI/F回路43を通じて、半導体メモリ5の記憶領域50に対して、ホスト装置2からのライトデータを書き込む。また制御部40は、ホスト装置2からのコマンドがリフレッシュコマンドである場合には、メモリI/F回路43を通じて、半導体メモリ5に対してリフレッシュ処理を実行する。
このように、メインプロセッサ20は、サブプロセッサ21を通じて、記憶装置3を制御することができる。このときには、サブプロセッサ21は、メインプロセッサ20のスレーブとして機能する。メインプロセッサ20は、ホスト装置2が起動したときと、ホスト装置2に記憶装置3が接続されたとき、サブプロセッサ21を通じて記憶装置3のメモリコントローラ4と通信することによって、記憶装置3の認証を実行する。つまり、メインプロセッサ20は、ホスト装置2が起動したときと、ホスト装置2に記憶装置3が接続されたとき、記憶装置3が正しいものであるか否かを判断する。そして、メインプロセッサ20は、記憶装置3の認証に成功すると、つまり記憶装置3が不正なものではなく正しいものであると判断すると、サブプロセッサ21を通じて、記憶領域50内のアプリケーションデータ500の読み出しを開始し、読み出したアプリケーションデータ500を処理する。
<サブプロセッサとメモリコントローラとの間の認証処理>
本実施の形態では、サブプロセッサ21は、メインプロセッサ20からの指示なく、記憶装置3との間で認証処理を実行することが可能である。以後、特に断らない限り、認証処理と言えば、サブプロセッサ21が、メインプロセッサ20からの指示なく、記憶装置3との間で行う認証処理を意味する。
<認証処理でのサブプロセッサ及びメモリコントローラの基本動作>
認証処理では、サブプロセッサ21及びメモリコントローラ4のそれぞれは、互いに独立して、共通のコマンド発行条件が成立するか否かを判定する。サブプロセッサ21は、コマンド発行条件が成立すると、コマンドをメモリコントローラ4に発行(出力)する。以後、認証処理において、コマンド発行条件が成立したときにサブプロセッサ21が出力するコマンドを「セキュアコマンド」と呼ぶ。一方で、メモリコントローラ4は、コマンド発行条件が成立した後、サブプロセッサ21からセキュアコマンドを受け取るか否かを判定し、その判定結果に基づいてホスト装置2が正しいものであるか否かを判定する。メモリコントローラ4は、コマンド発行条件が成立した後、ホスト装置2からセキュアコマンドを受け取った場合には、ホスト装置2は正しいものであると判定し、ホスト装置2からセキュアコマンドを受け取らない場合には、ホスト装置2は異常なもの(不正なもの)であると判定する。これにより、サブプロセッサ21とメモリコントローラ4との間では、メインプロセッサ20が関与することなく、ホスト装置2の認証が行われる。
またメモリコントローラ4は、ホスト装置2からのセキュアコマンドが、応答を必要とするコマンドである場合には、所定の応答データをサブプロセッサ21に出力する。サブプロセッサ21は、セキュアコマンドの出力に応じて、メモリコントローラ4から所定の応答データを受け取るか否かを判定し、その判定結果に基づいて、記憶装置3が正しいものであるか否かを判定する。サブプロセッサ21は、所定の応答データを受け取った場合、記憶装置3は正しいものであると判定し、所定の応答データを受け取らない場合、記憶装置3は異常なもの(不正なもの)であると判定する。これにより、サブプロセッサ21とメモリコントローラ4との間では、メインプロセッサ20の動きとは独立して、記憶装置3の認証が行われる。
本実施の形態では、このような認証処理が、認証が不成立となるまで繰り返し実行される。サブプロセッサ21と記憶装置3との間の相互認証は、メインプロセッサ20が通常に動作している中で実行される。つまり、メインプロセッサ20は、サブプロセッサ21と記憶装置3との間の相互認証を意識することなく、記憶装置3に対する制御等を行う。
<コマンド発行条件及びセキュアコマンドの詳細>
本実施の形態では、複数種類のコマンド発行条件と、複数種類のセキュアコマンドとが用意されている。認証処理では、複数種類のコマンド発行条件の一つと、複数種類のセキュアコマンドの一つとが組み合わされて使用される。
ホスト装置2内のサブ用FW221に記述されているサブ用テーブル221aには、複数種類のコマンド発行条件のそれぞれについて、コマンド発行条件とセキュアコマンドとの組み合わせが記述されている。サブプロセッサ21は、サブ用テーブル221aを参照して、認証処理で使用するコマンド発行条件及びセキュアコマンドの組み合わせを決定する。
同様に、メモリコントローラ4内のメモリ用FW421に記述されているメモリ用テーブル421aには、複数種類のコマンド発行条件のそれぞれについて、コマンド発行条件とセキュアコマンドとの組み合わせが記述されている。メモリコントローラ4は、メモリ用テーブル421aを参照して、認証処理で使用するコマンド発行条件及びセキュアコマンドの組み合わせを決定する。
また本実施の形態では、セキュアコマンドは、認証用の特殊なコマンドではなく、メインプロセッサ20が発行するコマンド(以後、「通常コマンド」と呼ぶ)と同じコマンドがセキュアコマンドとして使用される。ただし、本実施の形態では、メモリコントローラ4は、ホスト装置2からセキュアコマンドを受け取ったとき、当該セキュアコマンドと同じ通常コマンドを受け取ったときとは異なる認証用の処理を行う。
以後、メインプロセッサ20が発行するリードIDコマンド、リフレッシュコマンド及びライトコマンドを、それぞれ、「通常リードコマンド」、「通常リードIDコマンド」、「通常リフレッシュコマンド」及び「通常ライトコマンド」と呼ぶことがある。
図2はサブ用テーブル221a及びメモリ用テーブル421aの一例を示す図である。図2に示されるように、サブ用テーブル221a及びメモリ用テーブル421aのそれぞれでは、(N+1)種類(N≧1)のセキュリティパターンと、当該N種類のセキュリティパターンをそれぞれ識別するための0〜Nまでのインデックス番号とが対応付けられている。各セキュリティパターンには、コマンド発行条件及びセキュアコマンドの組み合わせが規定されている。
複数種類のセキュリティパターンには、セキュアコマンドの発行時の時間的条件(単に「時間的条件」と呼ぶ)が規定されたセキュリティパターンが含まれている。また、複数種類のセキュリティパターンのうち、セキュアコマンドとして応答ありコマンドが規定されたセキュリティパターンには、当該応答ありコマンドに応じてメモリコントローラ4が出力する応答データが規定されている。
図2の例では、0番のセキュリティパターンでは、コマンド発行条件として「リードコマンド100回」、セキュアコマンドとして「リードIDコマンド」、応答データとして「データA」が規定されている。したがって、認証処理で0番のセキュリティパターンが使用される場合には、サブプロセッサ21及びメモリコントローラ4のそれぞれは、ホスト装置2から通常リードコマンドが100回発行されると、コマンド発行条件が成立したと判定する。そして、サブプロセッサ21は、コマンド発行条件が成立すると、100回目の通常リードコマンドに対するメモリコントローラ4からの応答データ(半導体メモリ5から読み出されたリードデータ)をメインプロセッサ20に出力した後直ちに、リードIDコマンドをセキュアコマンドとして発行する。メモリコントローラ4は、リードIDコマンドを受け取ると、ホスト装置2に応答データAを出力する。
1番のセキュリティパターンでは、コマンド発行条件として「リードコマンド200回」、セキュアコマンドとして「ライトコマンド」が規定されている。したがって、認証処理で1番のセキュリティパターンが使用される場合には、サブプロセッサ21及びメモリコントローラ4のそれぞれは、ホスト装置2から通常リードコマンドが200回発行されると、コマンド発行条件が成立したと判定する。そして、サブプロセッサ21は、コマンド発行条件が成立すると、200回目の通常リードコマンドに対するメモリコントローラ4からの応答データ(半導体メモリ5から読み出されたリードデータ)をメインプロセッサ20に出力した後直ちに、ライトコマンドをセキュアコマンドとして発行する。
2番のセキュリティパターンでは、コマンド発行条件として「リフレッシュコマンド1回」、セキュアコマンドとして「リードIDコマンド」、時間的条件として「10秒以内」、応答データとして「データB」が規定されている。したがって、認証処理で2番のセキュリティパターンが使用される場合には、サブプロセッサ21及びメモリコントローラ4のそれぞれは、ホスト装置2から通常リフレッシュコマンドが1回発行されると、コマンド発行条件が成立したと判定する。そして、サブプロセッサ21は、コマンド発行条件が成立すると、その時点から10秒以内にリードIDコマンドをセキュアコマンドとして発行する。サブプロセッサ21は、RTC24からの時刻情報に基づいて10秒以内をカウントすることできる。メモリコントローラ4は、リードIDコマンドを受け取ると、ホスト装置2に応答データBを出力する。
N番のセキュリティパターンでは、コマンド発行条件として「リードIDコマンド1回」、セキュアコマンドとして「リフレッシュコマンド」が規定されている。したがって、認証処理でN番のセキュリティパターンが使用される場合には、サブプロセッサ21及びメモリコントローラ4のそれぞれは、ホスト装置2から通常リードIDコマンドが1回発行されると、コマンド発行条件が成立したと判定する。そして、サブプロセッサ21は、コマンド発行条件が成立すると、通常リードIDコマンドに対するメモリコントローラ4からの応答データ(記憶部42から読み出された記憶装置識別情報)をメインプロセッサ20に出力した後直ちに、リフレッシュコマンドをセキュアコマンドとして発行する。
以後、時間的条件が規定されたセキュリティパターンに規定されるセキュアコマンドを「時間的条件付きセキュアコマンド」と呼ぶことがある。
<認証処理でのサブプロセッサ及びメモリコントローラの詳細動作>
図3は認証処理でのサブプロセッサ21の動作を示すフローチャートである。図4及び図5は認証処理でのメモリコントローラ4の動作を示すフローチャートである。メインプロセッサ20は、サブプロセッサ21及びメモリコントローラ4の間での図3〜5に示される認証処理の実行を意識せずに動作する。
図3に示されるように、ステップs1において、サブ用FW220を実行するサブプロセッサ21は、サブ用テーブル221aを参照して、認証処理で使用するセキュリティパターン(以後、「使用セキュリティパターン」と呼ぶ)を決定する。そして、サブプロセッサ21は、使用セキュリティパターンでのコマンド発行条件が成立するか否かを継続的に監視する。例えば、使用セキュリティパターンでのコマンド発行条件が「リードコマンド100回」である場合には、サブプロセッサ21は、自身が発行する通常リードコマンドの発行回数をカウントし、その発行回数が100回になったかどうかを監視する。以後、使用セキュリティパターンでのコマンド発行条件及びセキュアコマンドを、それぞれ、「使用コマンド発行条件」及び「使用セキュアコマンド」と呼ぶ。
同様に、メモリコントローラ4での、メモリ用FW421を実行する制御部40は、図4に示されるように、ステップs21において、メモリ用テーブル421aを参照して、使用セキュリティパターンを決定する。そして、制御部40は、使用コマンド発行条件が成立するか否かを継続的に監視する。例えば、使用コマンド発行条件が「リードコマンド100回」である場合には、制御部40は、ホスト装置2から受け取る通常リードコマンドの受け取り回数をカウントし、その受け取り回数が100回になったかどうかを監視する。
本実施の形態では、例えば、サブプロセッサ21及びメモリコントローラ4は、0番のセキュリティパターンからN番のセキュリティパターンを順番に使用する。またステップs1及びステップs21は同じタイミングで実行される。例えば、サブプロセッサ21がRCT24からの時刻情報に基づいてステップs1を実行するタイミングを決定し、メモリコントローラ4の制御部40がRTC44からの時刻情報に基づいてステップs21を実行するタイミングを決定することによって、ステップs1及びステップs21は同じタイミング(厳密に言えば、ほぼ同じタイミング)で実行される。
ステップs1の後、サブプロセッサ21は、ステップs2において使用コマンド発行条件が成立したと判定すると、ステップs3においてセキュアコマンド発行状態となる。そして、サブプロセッサ21は、ステップs4において使用セキュアコマンドを発行した後、ステップs5においてセキュアコマンド発行状態を解除する。サブプロセッサ21は、使用セキュアコマンドが時間的条件付きセキュアコマンドである場合には、使用セキュアコマンドを発行する直前にセキュアコマンド発行状態となる。一方で、メモリコントローラ4では、図4に示されるように、ステップs21の後、制御部40は、ステップs22において使用コマンド発行条件が成立したと判定すると、ステップs23においてセキュアコマンド待ち状態となる。
サブプロセッサ21は、ステップs1からステップs2の間において、メインプロセッサ20から通常コマンドを受け取ると、受け取った通常コマンドをメモリコントローラ4に出力する。メモリコントローラ4は、ステップs21からステップs22の間において、ホスト装置2から通常コマンドを受け取ると、受け取った通常コマンドが指示する処理(半導体メモリ5に対するデータの読み出し処理、書き込み処理など)を実行する。
セキュアコマンド待ち状態の制御部40は、ステップs24において、使用セキュアコマンドが時間的条件付きセキュアコマンドであるか否かを判定する。制御部40は、使用セキュアコマンドが時間的条件付きセキュアコマンドでないと判定すると、ステップs25において、ホスト装置2から使用セキュアコマンドを受け取ったか否かを判定する。ステップs25では、制御部40は、使用コマンド発行条件が成立したと判定してから所定時間(例えば数十〜数百ms)以内に、使用セキュアコマンドを受け取ったか否かを判定する。制御部40は、RTC44からの時刻情報に基づいて所定時間をカウントすることできる。
ステップs25において、制御部40は、使用セキュアコマンドを受け取ったと判定すると、ステップs26において、記憶装置3に接続されているホスト装置2は正しいものであると判定する。その後、ステップs27において、制御部40はセキュアコマンド待ち状態を解除する。一方で、制御部40は、ステップs25において、使用セキュアコマンドを受け取っていないと判定すると、ステップs30において、記憶装置3に接続されているホスト装置2は異常なものであると判定する。
ステップs30の後、制御部40は、ステップs31において、メモリコントローラ4の動作モードを異常モードに設定する。この異常モードでは、制御部40は、例えば、ホスト装置2が異常なものであると判定した後しばらくの間(例えば1分間)は正常に動作し、その後、正常に動作しない。これにより、ホスト装置2が異常なものである場合には、データ処理システム1は正常に動作しなくなり、セキュリティ性能が向上する。なお、制御部40は、ホスト装置2が異常なものであると判定してから、正常に動作しなくなるまでの時間を、例えば30秒から60秒の間で、RCT44の出力信号に基づいて生成した乱数を用いて決定しても良い。
メモリコントローラ4では、ステップs27の後、ステップs28において、制御部40は、使用セキュアコマンドが、リードIDコマンド等の応答ありコマンドであるか否かを判定する。制御部40は、使用セキュアコマンドが応答ありコマンドである場合には、ステップs29において、使用セキュリティパターンに規定される所定の応答データをホスト装置2に出力する。例えば、使用セキュアコマンドがリードIDコマンドである場合には、制御部40は、記憶部42内の記憶装置識別情報を読み出さずに、使用セキュリティパターンに規定される所定の応答データを出力する。この所定の応答データは、記憶装置識別情報とは異なるデータとなっている。また、使用セキュアコマンドがリードコマンドである場合には、制御部40は、半導体メモリ5の記憶領域50からデータを読み出さずに、使用セキュリティパターンに規定される所定の応答データを出力する。
一方で、制御部40は、使用セキュアコマンドが応答なしコマンドである場合には、当該応答なしコマンドが指示する処理を実行しない。例えば使用セキュアコマンドがライトコマンドである場合には、制御部40は、当該ライトコマンドを無視して、半導体メモリ5の記憶領域50に対するデータ書き込み処理は行わない。セキュアコマンドは、メインプロセッサ20が発行したものではなく、認証処理のためのコマンドであることから、使用セキュアコマンドがライトコマンドの場合に、記憶領域50に対してデータ書き込み処理が行われると、データ処理システム1が誤動作する可能性がある。なお、使用セキュアコマンドがリフレッシュコマンドである場合には、制御部40は、リフレッシュコマンドを無視せずに、半導体メモリ5に対するリフレッシュ処理を行っても良い。ただし、このリフレッシュ処理は、不要な処理であることから、制御部40は、リフレッシュコマンドを無視する方が望ましい。
図3に戻って、ホスト装置2では、ステップs5の後、サブプロセッサ21は、ステップs6において、使用セキュアコマンドが応答ありコマンドであるか否かを判定する。サブプロセッサ21は、使用セキュアコマンドが応答ありコマンドであると判定すると、ステップs7において、メモリコントローラ4から所定の応答データを受け取ったか否かを判定する。ステップs7では、サブプロセッサ21は、ステップs4において使用セキュアコマンドを発行してから所定時間(例えば数十〜数百ms)以内に、使用セキュリティパターンに規定される所定の応答データを受け取ったか否かを判定する。サブプロセッサ21は、ステップs7において、所定時間内に所定の応答データを受け取ったと判定すると、ステップs8において、ホスト装置2に接続されている記憶装置3(メモリコントローラ4)は正しいものであると判定する。一方で、サブプロセッサ21は、所定時間内に所定の応答データを受け取っていないと判定すると、ステップs9において、ホスト装置2に接続されている記憶装置3は異常なものであると判定する。サブプロセッサ21は、RTC24からの時刻情報に基づいて所定時間をカウントすることできる。
ステップs9の後、サブプロセッサ21は、自身の動作モードを異常モードに設定する。この異常モードでは、サブプロセッサ21は、例えば、記憶装置3が異常なものであると判定した後しばらくの間(例えば1分間)は正常に動作し、その後、正常に動作しない。これにより、記憶装置3が異常なものである場合には、データ処理システム1は正常に動作しなくなり、セキュリティ性能が向上する。なお、サブプロセッサ21は、記憶装置3が異常なものであると判定してから、正常に動作しなくなるまでの時間を、例えば30秒から60秒の間で、RCT24の出力信号に基づいて生成した乱数を用いて決定しても良い。
サブプロセッサ21は、ステップs8の後、ステップs1を実行して、次の使用セキュリティパターンを決定する。またサブプロセッサ21は、ステップs6において使用セキュアコマンドが応答なしコマンドであると判定すると、ステップs1を実行して、次の使用セキュリティパターンを決定する。サブプロセッサ21は以後同様に動作する。サブプロセッサ21は、ステップs9が実行されない限り、つまり、記憶装置3が異常であると判定しない限り、ステップs1〜s8までの認証処理を使用セキュリティパターンを変えながら繰り返し実行する。
サブプロセッサ21は、セキュアコマンド発行状態のとき以外において、メインプロセッサ20から通常コマンドを受け取った場合には、通常通り、受け取った通常コマンドをすぐにメモリコントローラ4に出力する。一方で、サブプロセッサ21は、セキュアコマンド発行状態のときに、メインプロセッサ20から通常コマンドを受け取った場合には、受け取った通常コマンドの出力を一旦保留し、使用セキュアコマンドを発行してセキュアコマンド発行状態を解除した後に、受け取った通常コマンドをメモリコントローラ4に出力する。使用セキュアコマンドが時間的条件付きセキュアコマンドである場合には、サブプロセッサ21は、コマンド発行条件が成立してから、セキュアコマンド発行状態となるまでに受け取った通常コマンドをメモリコントローラ4に出力する。
メモリコントローラ4では、制御部40は、ステップs29の後、ステップs21を実行して、次の使用セキュリティパターンを決定する。また制御部40は、ステップs28において使用セキュアコマンドが応答なしコマンドであると判定すると、ステップs21を実行して、次の使用セキュリティパターンを決定する。制御部40は以後同様に動作する。メモリコントローラ4は、セキュアコマンド待ち状態以外において、ホスト装置2から受け取るコマンドは、通常コマンドとして扱い、受け取ったコマンドが指示する処理を実行する。
メモリコントローラ4では、ステップs24において、使用セキュアコマンドが時間的条件付きセキュアコマンドであると判定されると、図5のステップs32が実行される。ステップs32では、制御部40は、ホスト装置2からコマンドを受け取ったか否かを判定する。制御部40は、ステップs32において、コマンドを受け取っていないと判定すると、ステップs33において、使用コマンド発行条件が成立したと判定してから(ステップs22)、使用セキュリティパターンに規定される時間的条件で指定される所定時間が経過しているか否かを判定する。制御部40は、所定時間が経過していると判定すると、ステップs30を実行して、ホスト装置2が異常なものであると判定する。つまり、制御部40は、所定時間内に全くコマンドを受け取らなかった場合には、ホスト装置2が異常なものであると判定する。その後、ステップs31が実行される。一方で、制御部40は、ステップs33において、所定時間が経過していないと判定すると、ステップs32を再度実行して、ホスト装置2からコマンドを受け取ったか否かを判定する。
制御部40は、ステップs32において、ホスト装置2からコマンドを受け取ったと判定すると、ステップs34において、使用コマンド発行条件が成立したと判定してから(ステップs22)、使用セキュリティパターンに規定される時間的条件で指定される所定時間が経過しているか否かを判定する。制御部40は、所定時間が経過していると判定すると、ステップs30を実行して、ホスト装置2が異常なものであると判定する。つまり、制御部40は、所定時間が経過した後にコマンドを受け取った場合には、ホスト装置2が異常なものであると判定する。一方で、制御部40は、ステップs34において、所定時間が経過していないと判定すると、ステップs35において、受け取ったコマンドが使用セキュアコマンドであるか否かを判定する。制御部40は、受け取ったコマンドが使用セキュアコマンドであると判定すると、ステップs26を実行して、ホスト装置2が正しいものであると判定する。つまり、制御部40は、使用コマンド発行条件が成立してから所定時間内に使用セキュアコマンドを受け取ると、ホスト装置2が正しいものであると判定する。その後、ステップs27が実行され、以後、制御部40は同様に動作する。
制御部40は、ステップs35において、受け取ったコマンドが使用セキュアコマンドでないと判定すると、ステップs36において、受け取ったコマンドを通常コマンドとして扱い、受け取ったコマンドで指示される処理を実行する。その後、制御部40はステップs32を実行して、ホスト装置2からコマンドを受け取ったか否かを判定する。以後、制御部40は同様に動作する。
制御部40は、ステップs30が実行されない限り、つまり、ホスト装置2が異常であると判定しない限り、図4,5に示される認証処理を、使用セキュリティパターンを変えながら繰り返し実行する。
このように、サブプロセッサ21と記憶装置3との間では、メインプロセッサ20の動作とは独立して認証処理が行われる。認証処理において、セキュアコマンドとして応答なしコマンドが使用される場合には、ホスト装置2の認証だけが行われる。これにより、不正なホスト装置2を検出することができる。一方で、認証処理において、セキュアコマンドとして応答ありコマンドが使用される場合には、ホスト装置2の認証と記憶装置3の認証とが行われる。つまり、この場合には、ホスト装置2と記憶装置3との間で相互認証が行われる。これにより、不正なホスト装置2だけではなく、不正な記憶装置3を検出することができる。
なお上記の例では、セキュアコマンドは変化していたが、1種類のセキュアコマンドだけが使用されても良い。また上記の例では、コマンド発行条件は変化していたが、1種類のコマンド発行条件だけが使用されても良い。
以上のように、本実施の形態では、サブプロセッサ21は、メインプロセッサ20からの指示なく、記憶装置3との間で認証処理を実行することから、メイン用FW220が不正に書き換えられてメインプロセッサ20が不正に支配されたとしても、サブプロセッサ21は、記憶装置3との間で認証処理を実行することができる。よって、セキュリティ性能が向上する。
また、サブ用FW221及びメモリ用FW421を設計するだけで、サブプロセッサ21と記憶装置3との間での認証処理を実現することが可能であることから、認証処理のためにハードウェアを追加する必要はない。よって、簡単に認証処理を実現することができる。
また、認証処理は、メインプロセッサ20の動きとは独立して行われることから、認証処理を考慮することなくメイン用FW220を設計することができる。よって、メイン用FW220の設計が簡単になる。
また本実施の形態では、認証処理の実行中に、メインプロセッサ20から通常コマンドが発行された場合であっても、メモリコントローラ4は当該通常コマンドに応じた処理を実行することができるため、データ処理システム1の性能の低下の抑制と認証処理とを両立することができる。
また本実施の形態では、コマンド発行条件が成立したときにセキュアコマンドが発行されることから、突発的にセキュリティが発動し、ホスト装置2及び記憶装置3の異常が検出される。
また本実施の形態のように、認証処理で使用されるコマンド発行条件が変化する場合には、サブプロセッサ21からセキュアコマンドが出力されるタイミングが変化する。したがって、データ処理システム1において、記憶装置3が正しいものであるのか否かの判定が実行されるタイミング及びホスト装置2が正しいものであるのか否かの判定が実行されるタイミングが特定しにくくなる。よって、認証処理の内容が悪意のある第三者によって解析されにくくなる。その結果、サブ側FW221及びメモリ用FW421が不正に書き換えられて、不正な記憶装置3あるいは不正なホスト装置2が使用されることを抑制することができる。
また本実施の形態のように、認証処理で使用されるセキュアコマンドが変化する場合には、認証処理の内容が悪意のある第三者によって解析されにくくなる。その結果、サブ側FW221及びメモリ用FW421が不正に書き換えられて、不正な記憶装置3あるいは不正なホスト装置2が使用されることを抑制することができる。
また本実施の形態では、セキュアコマンドとして、特殊なコマンドが採用されているのではなく、メインプロセッサ20が発行するコマンドと同じコマンドが採用されているため、認証処理の内容が悪意のある第三者によって解析されにくくなる。
また本実施の形態では、メモリコントローラ4は、受け取った使用セキュアコマンドがライトコマンドの場合に、半導体メモリ5の記憶領域50に対してデータの書き込み処理を行わない。一方で、不正な記憶装置3がホスト装置2に接続された場合には、不正な記憶装置3は、セキュアコマンドと通常コマンドとの区別ができないことから、セキュアコマンドとしてのライトコマンドを受け取ったときには、半導体メモリ5の記憶領域50に対してデータの書き込み処理を行う。これにより、記憶領域50では、本来ではデータが書き込まれることがない領域にデータが書き込まれてしまう。つまり、ホスト装置2が知らないうちに、記憶領域50に対してデータが書き込まれてしまう。よって、ホスト装置2に不正な記憶装置3が接続された場合には、データ処理システム1は正常に動作しなくなり、セキュリティ性能が向上する。
また、悪意のある第三者は、サブプロセッサ21と記憶装置3との間の信号線、例えば、ホスト装置2内のバス260に流れる信号を解析して、サブプロセッサ21と記憶装置3の間の認証処理の内容を特定しようとする可能性がある。セキュアコマンドとして、リードIDコマンドのような応答ありコマンドを使用すると、メモリコントローラ4からの応答データが、バス260等の、サブプロセッサ21と記憶装置3との間の信号線に流れることから、悪意のある第三者によって認証処理の内容が特定されやすくなる。よって、認証処理の内容を特定しにくくするという観点からは、本実施の形態のように、セキュアコマンドとして、ライトコマンドのような応答なしコマンドが使用されることが望ましい。
なお、上記の例では、メモリコントローラ4の制御部40は、受け取った使用セキュアコマンドがリードコマンドの場合には、半導体メモリ5に対して読み出し処理を行っていなかったが、当該読み出し処理を行っても良い。この場合には、制御部40は、半導体メモリ5の記憶領域50から読み出したデータを破棄するとともに、所定の応答データを出力する。これにより、不正な目的でデータ処理システム1の動きを解析する者は、メモリコントローラ4が受け取るコマンドが、セキュアコマンドであるのか、通常リードコマンドであるのか特定しにくくなる。よって、認証処理の内容が悪意のある第三者によって特定されにくくなる。その結果、セキュリティ性能が向上する。
また、メモリコントローラ4が、セキュアコマンドとして、リードIDコマンドを受け取った場合に出力する応答データのビット数は、記憶部42内の記憶装置識別情報のビット数と一致することが望ましい。これにより、メモリコントローラ4が、リードIDコマンドを受け取ったときに、認証処理での応答データを出力しているのか、記憶装置識別情報を出力しているのか、特定しにくくなる。よって、認証処理の内容が悪意のある第三者によって特定されにくくなる。
また、サブ用テーブル221aに含まれる複数種類のセキュリティパターンと、メモリ用テーブル421aに含まれる複数種類のセキュリティパターンとは、必ず一致する必要はない。ホスト装置2に接続される記憶装置3が複数種類存在する場合には、記憶装置3の種類によって、メモリ用テーブル421aに含まれるセキュリティパターンが異なることがある。このような場合には、サブ用テーブル221aには、ホスト装置2に接続可能な複数種類の記憶装置3のメモリ用テーブル421aに含まれるセキュリティパターンのすべての種類を記述しておいても良い。そして、サブプロセッサ21は、メインプロセッサ20が記憶装置3から読み出した記憶装置識別情報に基づいて、ホスト装置2に接続されている記憶装置3の種類を特定し、サブ用テーブル221aに含まれる複数種類のセキュリティパターンのうち、特定した種類に応じたセキュリティパターンだけを使用して認証処理を行う。これにより、サブプロセッサ21は、ホスト装置2に接続可能な複数種類の記憶装置3のどの種類の記憶装置3がホスト装置2に接続された場合であっても、ホスト装置2に接続された記憶装置3との間で認証処理を行うことが可能となる。
また、サブ用テーブル221aは、ホスト装置2が出荷された後に更新されても良い。サブ用テーブル221aは、サブ用FW221に記述されていることから、サブ用FW221を更新する際に、サブ用テーブル221aを更新することができる。例えば、新しい種類の記憶装置3が開発された場合には、新しい種類の記憶装置3に対応するために、ホスト装置2内のメイン用FW220及びサブ用FW221が更新されることがある。そして、新しい種類の記憶装置3では、メモリ用テーブル421aに対して新しいセキュリティパターンが追加されることがある。このような場合には、新しい種類の記憶装置3に合わせてメイン用FW220及びサブ用FW221を更新する際に、サブ用FW221に記述されるサブ用テーブル221aも更新して、当該サブ用テーブル221aに対して、新しい種類の記憶装置3のメモリ用テーブル421に追加されたセキュリティパターンを追加する。これにより、サブプロセッサ21は、ホスト装置2の出荷後に開発された新しい種類の記憶装置3との間でも認証処理を行うことが可能となる。ホスト装置2がインターネット等のネットワークに接続されている場合には、当該ネットワークが利用されてメイン用FW220及びサブ用FW221が更新される。
<各種変形例>
<第1変形例>
サブプロセッサ21は、使用コマンド発生条件が成立する前に、メインプロセッサ20からの指示なく、使用セキュアコマンドと同じコマンドを出力しても良い。以下に本変形例について詳細に説明する。
本変形例では、サブプロセッサ21は、ステップs1において使用セキュリティパターンを決定してから、ステップs3において使用コマンド発生条件が成立すると判定するまでに、メインプロセッサ20からの指示なく、使用セキュアコマンドと同じコマンドをダミーコマンドとしてメモリコントローラ4に出力する。これにより、不正な目的で認証処理の内容を特定しようとする者は、サブプロセッサ21から、セキュアコマンドが出力されているのか、ダミーコマンドが出力されているのか特定しにくくなる。よって、認証処理の内容が悪意のある第三者によって特定されにくくなる。サブプロセッサ21は、ダミーコマンドを出力する際には、ランダムな時間の経過ごとに(不定期に)、ダミーコマンドを繰り返し出力することが望ましい。これより、認証処理の内容が悪意のある第三者によってさらに特定されにくくなる。また、サブプロセッサ21は、メインプロセッサ20から通常コマンドを受け取らない期間に、ダミーコマンドを出力することが望ましい。これにより、サブプロセッサ21によるダミーコマンドの出力が、ホスト装置2の性能に影響を与えることを抑制することができる。
メモリコントローラ4では、制御部40は、ホスト装置2からのダミーコマンドを、ステップs21とステップs22の間に受け取る。このときの制御部40は、ホスト装置2からのダミーコマンドを通常コマンドとして処理する。ダミーコマンドが、ライトコマンドである場合には、制御部40は記憶領域50に対してデータの書き込み処理を行うことから、データ処理システム1が正常に動作できなくなる可能性がある。したがって、サブプロセッサ21は、使用セキュアコマンドがライトコマンドの場合には、ダミーコマンドを出力しない。一方で、サブプロセッサ21は、使用セキュアコマンドが例えばリードIDコマンドの場合には、ダミーコマンドを出力する。この場合、ダミーコマンドであるリードIDコマンドを受け取った制御部40は、記憶部42内の記憶装置識別情報を出力する。サブプロセッサ21は、受け取った記憶装置識別情報をメインプロセッサ20に出力せずに破棄する。これにより、データ処理システム1が異常動作することはない。
このように、サブプロセッサ21は、使用セキュアコマンドが、それと同一のダミーコマンドがメモリコントローラ4で通常コマンドとして処理された場合にデータ処理システム1が異常動作することがないようなコマンド(例えば、リードIDコマンド、リードコマンド、リフレッシュコマンド)のときにだけ、当該使用セキュアコマンドと同一のダミーコマンドを出力する。サブプロセッサ21は、使用セキュアコマンドが応答ありコマンドの場合には、ダミーコマンドに応じてメモリコントローラ4が出力する応答データをメインプロセッサ20には伝えずに破棄する。
<第2変形例>
認証処理で最初に使用されるセキュリティパターンは、サブプロセッサ21とメモリコントローラ4との乱数交換によって決定されても良い。以下に本変形例について図6を用いて詳細に説明する。
ホスト装置2が起動したときと、ホスト装置2に記憶装置3が接続されたとき、サブプロセッサ21は、ステップs51においてサブ側乱数を生成し、ステップs52において生成したサブ側乱数をメモリコントローラ4に出力する。サブプロセッサ21は、例えば、RTC24の出力信号に基づいてサブ側乱数を生成する。メモリコントローラ4では、制御部40は、サブ側乱数を受け取ると、ステップs61においてメモリ側乱数を生成し、ステップs62において、生成したメモリ側乱数をサブプロセッサ21に出力する。制御部40は、例えば、RTC44の出力信号に基づいてメモリ側乱数を生成する。サブプロセッサ21及びメモリコントローラ4の制御部40のそれぞれは、サブ側乱数及びメモリ側乱数に基づいて、最初に使用するセキュリティパターンのインデックス番号(「初期インデックス番号」と呼ぶ)を決定する(ステップs53,s63)。例えば、サブプロセッサ21は、サブ側乱数及びメモリ側乱数を用いて所定の演算を行い、その演算結果を初期インデックス番号とする。具体的には、サブプロセッサ21は、例えば、サブ側乱数とメモリ側乱数とのXOR(排他的論理和)を演算し、それによって得られた値を初期インデックス番号とする。同様に、メモリコントローラ4の制御部40は、サブ側乱数及びメモリ側乱数を用いて、サブプロセッサ21と同じ演算を行い、その演算結果を初期インデックス番号とする。つまり、制御部40は、サブ側乱数とメモリ側乱数とのXORを演算し、それによって得られた値を初期インデックス番号とする。
このように、本変形例では、最初に使用されるセキュリティパターンが、サブプロセッサ21とメモリコントローラ4との乱数交換によって決定されることから、認証処理の内容が悪意のある第三者によってさらに特定されにくくなる。よって、セキュリティ性能がさらに向上する。
なお、上記の例では、最初に使用されるセキュリティパターンが、サブプロセッサ21とメモリコントローラ4との乱数交換によって決定されているが、使用セキュリティパターンが、常に、サブプロセッサ21とメモリコントローラ4との間の乱数交換によって決定されても良い。
<第3変形例>
使用セキュリティパターンでのセキュアコマンドが応答ありコマンドである場合には、次回の使用セキュリティパターンが、メモリコントローラ4が出力する応答データに基づいて決定されても良い。以下に本変形例について説明する。
メモリコントローラ4では、上述ステップs28において、制御部40は、使用セキュアコマンドが応答ありコマンドであると判定すると、ステップs29において所定の応答データを出力する。そして、制御部40は、その後のステップs21において、その前のステップs29で出力した応答データに基づいて、使用セキュリティパターンを決定する。例えば、制御部40は、応答データのうちの、特定のビット位置での複数のビットを十進数表記して得られる値と一致するインデックス番号のセキュリティパターンを使用セキュリティパターンとする。
一方で、サブプロセッサ21は、ステップs7において、所定の応答データを受け取り、その後、ステップs8を実行すると、その後のステップs1において、メモリコントローラ4と同様に、当該応答データに基づいて使用セキュリティパターンを決定する。つまり、サブプロセッサ21は、応答データのうちの、特定のビット位置での複数のビットを十進数表記して得られる値と一致するインデックス番号のセキュリティパターンを使用セキュリティパターンとする。以後、応答データのうち、使用セキュリティパターンの決定に使用される、特定のビット位置での複数のビットを「パターン決定ビット」と呼ぶ。
本変形例に係るサブ用テーブル221a及びメモリ用テーブル421aでは、図7に示されるように、セキュアコマンドとして応答ありコマンドが規定されるセキュリティパターンには、当該応答ありコマンドが使用セキュアコマンドとして使用される場合の応答データでのパターン決定ビットを特定するためのビット特定情報が規定されている。
サブプロセッサ21は、使用セキュアコマンドが応答ありコマンドである場合には、サブ用テーブル221aを参照し、使用セキュリティパターンに規定されるビット特定情報を取得し、取得したビット特定情報に基づいて、応答データでのパターン決定ビットを特定する。使用セキュリティパターンが、例えば図7の0番のセキュリティパターンである場合には、パターン決定ビットは、応答データの最上位2ビットとなる。また、使用セキュリティパターンが、図7の2番のセキュリティパターンである場合には、パターン決定ビットは、応答データの最下位2ビットとなる。そして、サブプロセッサ21は、特定したパターン決定ビットを十進数表記して得られる値と一致するインデックス番号のセキュリティパターンを次の使用セキュリティパターンとする。
同様に、メモリコントローラ4の制御部40は、使用セキュアコマンドが応答ありコマンドである場合には、メモリ用テーブル421aを参照し、使用セキュリティパターンに規定されるビット特定情報を取得し、取得したビット特定情報に基づいて、応答データでのパターン決定ビットを特定する。そして、制御部40は、特定したパターン決定ビットを十進数表記して得られる値と一致するインデックス番号のセキュリティパターンを次の使用セキュリティパターンとする。
このように、本変形例では、サブプロセッサ21及びメモリコントローラ4のそれぞれは、使用セキュアコマンドが応答ありコマンドである場合には、当該使用セキュアコマンドに応じた応答データに基づいて、次の使用セキュリティパターンを決定する。そのため、認証処理の内容が悪意のある第三者によってさらに特定されにくくなる。よって、セキュリティ性能がさらに向上する。
<第4変形例>
メインプロセッサ20とサブプロセッサ21との間では、サブプロセッサ21とメモリコントローラ4との間の認証処理と同様の認証処理が行われても良い。以後、サブプロセッサ21とメモリコントローラ4との間の認証処理を「サブ−メモリ間の認証処理」と呼ぶ。また、メインプロセッサ20とサブプロセッサ21との間の認証処理を「メイン−サブ間の認証処理」と呼ぶ。
メイン−サブ間の認証処理は、サブ−メモリ間の認証処理に加えて行われても良いし、サブ−メモリ間の認証処理の代わりに行われても良い。メイン−サブ間の認証処理を行う際には、図8に示されるように、ホスト装置2内のメイン用FW220には、サブ用セキュリティパターンテーブル221aと同様のメイン用セキュリティパターンテーブル220a(以後、「メイン用テーブル220a」と呼ぶ)が記述される。
メイン−サブ間の認証処理では、メインプロセッサ20及びサブプロセッサ21のそれぞれは、互いに独立して、共通のコマンド発行条件が成立するか否かを判定する。コマンド発行条件が例えば「リードコマンド100回」であれば、メインプロセッサ20は、自身が発行する通常リードコマンドの発行回数をカウントし、発行回数が100回になったとき、コマンド発行条件が成立したと判定する。また、サブプロセッサ21は、メインプロセッサ20が発行する通常リードコマンドの発行回数をカウントし、発行回数が100回になったとき、コマンド発行条件が成立したと判定する。
メイン−サブ間の認証処理では、例えば、メインプロセッサ20は、サブ−メモリ間の認証処理でのサブプロセッサ21と同様に動作し、サブプロセッサ21は、サブ−メモリ間の認証処理でのメモリコントローラ4と同様に動作する。つまり、メインプロセッサ20は、上述の図3に示される処理と同様の処理を実行し、サブプロセッサ21は、上述の図4及び図5に示される処理と同様の処理を実行する。メインプロセッサ20は、コマンド発行条件が成立すると、セキュアコマンドをサブプロセッサ21に発行(出力)する。一方で、サブプロセッサ21は、コマンド発行条件が成立した後、メインプロセッサ20からセキュアコマンドを受け取るか否かを判定し、その判定結果に基づいてメインプロセッサ20が正しいものであるか否か、言い換えればメイン用FW220が正しいものであるか否かを判定する。サブプロセッサ21は、コマンド発行条件が成立した後、メインプロセッサ20からセキュアコマンドを受け取った場合には、メインプロセッサ20は正しいものであると判定し、メインプロセッサ20からセキュアコマンドを受け取らない場合には、メインプロセッサ20は異常なものであると判定する。これにより、メインプロセッサ20とサブプロセッサ21との間では、メインプロセッサ20の認証が行われる。よって、メイン用FW220が不正に書き換えられてメインプロセッサ20が不正に支配されているか否かを判定することができる。
またサブプロセッサ21は、メインプロセッサ20からのセキュアコマンドが、応答ありコマンドである場合には、所定の応答データをメインプロセッサ20に出力する。メインプロセッサ20は、セキュアコマンドの出力に応じて、サブプロセッサ21から所定の応答データを受け取るか否かを判定し、その判定結果に基づいて、サブプロセッサ21が正しいものであるか否か、言い換えれば、サブ用FW221が正しいものであるか否かを判定する。メインプロセッサ20は、所定の応答データを受け取った場合、サブプロセッサ21は正しいものであると判定し、所定の応答データを受け取らない場合、サブプロセッサ21は異常なものであると判定する。これにより、メインプロセッサ20とサブプロセッサ21との間では、サブプロセッサ21の認証が行われる。よって、サブ用FW221が不正に書き換えられてサブプロセッサ21が不正に支配されているか否かを判定することができる。
なお、メイン−サブ間の認証処理でのメインプロセッサ20及びサブプロセッサ21の役割は互いに入れて変えても良い。つまり、メイン−サブ間の認証処理では、メインプロセッサ20は、サブ−メモリ間の認証処理でのメモリコントローラ4と同様に動作し、サブプロセッサ21は、サブ−メモリ間の認証処理での動作と同様の動作を行っても良い。
以上のように、データ処理システム1は詳細に説明されたが、上記した説明は、全ての局面において例示であって、この発明がそれに限定されるものではない。また、上述した各種変形例は、相互に矛盾しない限り組み合わせて適用可能である。そして、例示されていない無数の変形例が、この発明の範囲から外れることなく想定され得るものと解される。