(57)【要約】【課題】利便性を向上出来るデバイスを提供すること。【解決手段】実施形態のデバイスは、半導体メモリ31と、コントローラ32とを備える。半導体メモリ31は、外部からアクセス可能な第１、第２領域を備える。コントローラ32は、半導体メモリを制御する。デバイスは、第１領域と第２領域からの読み出しが許可されるアンロック状態と、第１領域からの読み出しが許可され、第２領域からの読み出しが禁止されるロック状態とを有する。第１領域はファイルシステム情報(FAT and DIR entry)の少なくとも一部を格納する領域である。ファイルシステム情報の少なくとも一部は、ロック状態において外部から読み出し可能とされる。【選択図】図３
2015026358.tif 000002
【特許請求の範囲】
【請求項１】
外部からアクセス可能な第１、第２領域を有する半導体メモリと、
前記半導体メモリを制御するコントローラと
を具備するデバイスであって、前記デバイスは、前記第１領域と第２領域からの読み出しが許可されるアンロック状態と、前記第１領域からの読み出しが許可され、前記第２領域からの読み出しが禁止されるロック状態とを有し、
前記第１領域は、ファイルシステム情報の少なくとも一部を格納する領域であり、
前記ロック状態において、前記ファイルシステム情報の少なくとも一部は、外部から読み出し可能とされる、デバイス。
【請求項２】
前記半導体メモリは、該デバイスに登録されたユーザ・キーが第１暗号関数によって暗号化されて生成された少なくとも１つの暗号化ユーザ・キーを保持可能とされ、
前記ユーザ・キーが登録されている場合、前記コントローラは、電源投入直後において前記ロック状態で初期化を行い、
前記ユーザ・キーが登録されていない場合、前記コントローラは、電源投入直後において前記アンロック状態で初期化を行い、
前記初期化は、前記ユーザ・キーが登録されている場合とされていない場合とで、同一のシーケンスにより実行され、
前記初期化は、ホストとカードを接続する複数のバス転送モードの任意のひとつを選択し、
前記ロック状態において前記ファイルシステム情報の少なくとも一部は、前記デバイスの初期化の後に、外部からアクセス可能とされる、請求項１のデバイス。
【請求項３】
前記アンロック状態では、コンフィギュレーション動作により、ユーザ・キーの登録、変更、及び消去が可能とされ、且つ前記第１、第２領域の両方への読み出しが許可され、
前記ロック状態は第１モードと第２モードとを備え、前記第１モードではコンフィギュレーション動作により、前記ユーザ・キーの登録、変更、及び消去が許可され、前記アンロック状態への移行は禁止され、前記第２モードでは、前記ユーザ・キーの登録、変更、及び消去が禁止され、前記アンロック状態への移行が可能となる、請求項１のデバイス。
【請求項４】
前記コントローラは、外部から受信したキーと、該デバイスに登録されたユーザ・キーとを比較し、
前記比較結果が一致した際に、前記デバイスは前記ロック状態から前記アンロック状態に移行する、請求項１のデバイス。
【請求項５】
前記半導体メモリは、予め登録されると共に前記コンフィギュレーション動作では変更されないマスター・キーを保持し、
前記コントローラは、前記外部から受信したキーと、前記マスター・キーとを比較し、前記比較結果が一致した際に、前記ユーザ・データ領域を消去することなく、前記登録されたユーザ・キーを消去し、前記デバイスは前記ロック状態から前記アンロック状態に移行する、請求項４のデバイス。
【請求項６】
前記デバイスには、前記ロック状態と前記アンロック状態との間を遷移する際に用いられるユーザ・キーが登録可能とされ、
前記ユーザ・キーが登録されていない場合、前記コントローラは、キー暗号化の有効／無効を設定する機能を有し、前記ユーザ・キーが登録されると、前記設定が固定され、
前記コントローラは、前記キー暗号化に使用可能な第２暗号関数と第３暗号関数とを有し、
前記第２暗号関数は前記ユーザ・キーの登録に使用され、前記第３暗号関数は前記ユーザ・キーの認証に使用され、
前記ユーザ・キーは、前記第２または第３暗号関数で暗号化されて、外部から前記デバイスに送信される、請求項１のデバイス。
【請求項７】
前記デバイスには、前記ユーザ・キーを消去する際に認識に用いられるマスター・キーが登録可能とされ、
前記キー暗号化が有効に設定されている場合であっても、前記マスター・キーは暗号化されることなく前記デバイスに送信される、請求項６のデバイス。
【請求項８】
ロック状態とアンロック状態を有するデバイスにアクセス可能なホスト装置であって、
ユーザ・キーを保持可能なホストメモリと、
前記デバイスを制御するホストコントローラと
を具備し、前記ホストコントローラは、前記デバイスを初期化した後、前記デバイスが前記ロック状態であるか前記アンロック状態であるかに関わらず、前記デバイスからファイルシステム情報の少なくとも一部を読み出すことにより、該デバイスがフォーマット済みのメモリデバイスであることを認識し、
前記ホストコントローラは、前記デバイスを初期化した後、前記デバイスが前記ロック状態であるかアンロック状態であるかを確認し、
前記ロック状態である場合、前記ユーザ・キーを前記デバイスに送信することにより、前記デバイスを前記アンロック状態に遷移させる、ホスト装置。
【請求項９】
前記ファイルシステム情報の少なくとも一部が読み出され、且つ前記デバイスがフォーマットされたメモリデバイスとして認識された場合、
前記デバイスに対して、ドライブとしてドライブ番号が割り当られることにより、ドライブとして前記デバイスをアクセスするアプリケーションからのアクセスが可能とされる、請求項８のホスト装置。
【請求項１０】
前記ホストコントローラは、前記ユーザ・キーを前記デバイスに送信する際、前記デバイスがサポートする第３暗号関数のいずれかを選択し、該暗号関数を用いて暗号化して送信する、請求項８のホスト装置。
【請求項１１】
前記ホストコントローラは、前記ユーザ・キーを生成し、該生成したユーザ・キーを変換関数により暗号化することにより得られた暗号化ユーザ・キーを、前記ホストメモリに不揮発に保持させ、
前記暗号化ユーザ・キーを前記ホストメモリに保持させた後、前記ユーザ・キーを前記デバイスに送信する、請求項１０のホスト装置。
【請求項１２】
前記コントローラは、前記第１及び第２領域を、複数の単位領域の集合として管理し、且つ前記第１領域における先頭アドレス領域を除く領域と前記第２領域とを、前記単位領域毎にフラグによって領域管理し、
外部からデータの消去命令を受信した際、前記コントローラは、前記第２領域内のデータを消去することなく、前記フラグを、データが消去されたことを示す旨の値にセットする、請求項１のデバイス。
【請求項１３】
前記コントローラは、前記消去命令を受信した際、前記外部に対してマスター・キーの認証を要求し、
前記マスター・キーが認証された場合に、前記フラグをセットする、請求項１２のデバイス。
【請求項１４】
前記コントローラは、外部からデータの書き込み命令を受信した際、前記フラグを確認し、前記フラグがセットされている場合には、前記第２領域において、対応する領域内のデータを消去した後に、データを該領域に書き込む、請求項１２のデバイス。
【請求項１５】
前記コントローラは、外部からデータ読み出し命令を受信した際、前記フラグを確認し、前記フラグがセットされている場合には、固定データを外部に出力する、請求項１２のデバイス。
【請求項１６】
請求項８のホスト装置を含む第１ホスト装置と、
請求項８のホスト装置を含む第２ホスト装置と
を具備するホストシステムであって、
前記第１ホスト装置は、前記デバイスに第１ユーザ・キーを設定すると共に、前記ロック状態でも前記ユーザ・キーを登録可能なモードをイネーブルに設定し、
前記第２ホスト装置は、前記第１ホスト装置によって前記モードをイネーブルとされた前記デバイスを初期化すると共に、第２ユーザ・キーを設定し、更に前記モードをディセーブルとし、
前記デバイスは、前記モードがディセーブルとされることで、前記ロック状態から前記アンロック状態への遷移が可能とされる、ホストシステム。
【請求項１７】
前記第１、第２ユーザ・キーが設定されたデバイスは、該第１、第２ユーザ・キーを用いた認証動作によって、それぞれ前記第１、第２ホスト装置によって使用可能とされる、請求項１６のホストシステム。
【請求項１８】
請求項１のデバイスと、
請求項８のホスト装置と
を具備するシステムであって、前記ユーザ・キーが登録される際、
前記ホスト装置は、前記ユーザ・キーを生成し、該ホスト装置の第１暗号関数で暗号化して前記ホスト装置の前記ホストメモリに保存し、且つ前記ユーザ・キーを、第２暗号関数と公開鍵とを用いて暗号化し、
前記デバイスは、前記第２暗号関数と公開鍵とを用いて暗号化されたユーザ・キーを、復号関数と秘密鍵を用いて復号し、前記復号化されたユーザ・キーを、前記デバイスの第１暗号関数で暗号化して、前記半導体メモリに保存する、メモリシステム。
【請求項１９】
前記ホスト装置は、該ホスト装置の前記ホストメモリに保持された暗号化ユーザ・キーを、変換関数を用いて復号することにより前記ユーザ・キーを得、
前記デバイスは、該デバイスの前記半導体メモリに保持された暗号化ユーザ・キーを、該デバイスの第１暗号関数を用いて復号することによりユーザ・キーを得る、請求項１８のメモリシステム。
【請求項２０】
請求項１のデバイスと、
請求項８のホスト装置と
を具備するシステムであって、前記ユーザ・キーが認証される際、
前記ホスト装置は、前記ユーザ・キーを、第３暗号関数と、前記デバイスが提供する乱数とを用いて暗号化し、
前記デバイスは、前記第３暗号関数と、前記乱数と、前記半導体メモリに保持された暗号化ユーザ・キーとを用いて、前記ホスト装置によって暗号化されたユーザ・キーを認証し、
前記認証に成功した場合に、前記デバイスは前記ロック状態から前記アンロック状態に遷移する、メモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、デバイス、ホスト装置、ホストシステム、及びメモリシステムに関する。
【背景技術】
【０００２】
記録メディアとして、ＮＡＮＤ型フラッシュメモリを用いたメモリデバイスが広く普及している。
【０００３】
このようなメモリデバイスとして、メモリカードが知られている。そしてメモリカードには、該カードへのアクセスを禁止するロック機能を有するものが知られている。しかし、従来のロック機能は、ロック状態でメモリ領域がまったく読み出せないため、ロック機能をサポートしないホスト機器からは、メモリカードとして認識されない、という問題があった。また、ロック機能をサポートしたホスト機器であっても、ロック状態を解除するまでメモリカードにアクセスができないため、ロック状態のためにメモリがアクセスできないのか、エラーによりアクセスできないのか区別がつかなかった。ロック状態を管理するためには、特別なユーティリティが必要となる。そのためホスト装置では、ロック状態にあるカードの取り扱いを管理するのが難しかった。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】SD Specifications part 1 Physical layer Simplified Specification Ver.2.00, Sep. 25, 2006, SD Card Association, インターネット＜https://www.sdcard.org/downloads/pls/simplified_specs/archive＞
【発明の概要】
【発明が解決しようとする課題】
【０００５】
利便性を向上出来るデバイス、ホスト装置、ホストシステム、及びメモリシステムを提供する。
【課題を解決するための手段】
【０００６】
実施形態に係るデバイスは、半導体メモリとコントローラとを備える。半導体メモリは、外部からアクセス可能な第１、第２領域を有する。コントローラは、半導体メモリを制御する。デバイスは、第１領域と第２領域からの読み出しが許可されるアンロック状態と、第１領域からの読み出しが許可され、第２領域からの読み出しが禁止されるロック状態とを有する。第１領域は、ファイルシステム情報の少なくとも一部を格納する領域である。ロック状態において、ファイルシステム情報の少なくとも一部は、外部から読み出し可能とされる。
【図面の簡単な説明】
【０００７】
【図１】図１は、一実施形態に係るメモリシステムのブロック図。
【図２】図２は、一実施形態に係るメモリシステムのメモリ空間の概念図。
【図３】図３は、一実施形態に係るメモリカードの状態遷移図。
【図４】図４は、一実施形態に係るメモリカードの状態遷移図。
【図５】図５は、一実施形態に係るメモリシステムのブロック図。
【図６】図６は、一実施形態に係るメモリカードの動作を示すフローチャート。
【図７】図７は、一実施形態に係るコンフィギュレーション・モードの機能を示すダイアグラム。
【図８】図８は、一実施形態に係る“Set User Key”機能実行時のホスト装置の動作を示すフローチャート。
【図９】図９は、一実施形態に係る“Set User Key”機能実行時のメモリカードの動作を示すフローチャート。
【図１０】図１０は、一実施形態に係る“Set User Key”機能実行時の動作を示すフローチャート。
【図１１】図１１は、一実施形態に係る“Set User Key”機能実行時の動作を示すフローチャート。
【図１２】図１２は、一実施形態に係る“Clear/Verify User Key”機能及び“Enable/Disable Key Ciphering”実行時のホスト装置の動作を示すフローチャート。
【図１３】図１３は、一実施形態に係る“Clear/Verify User Key”機能実行時のメモリカードの動作を示すフローチャート。
【図１４】図１４は、一実施形態に係る“Clear User Key”機能実行時の動作を示すフローチャート。
【図１５】図１５は、一実施形態に係る“Clear User Key”機能実行時の動作を示すフローチャート。
【図１６】図１６は、一実施形態に係る“Enable/Disable Key Ciphering”実行時のメモリカードの動作を示すフローチャート。
【図１７】図１７は、一実施形態に係る“Enable/Disable Config.Mode”実行時のメモリカードの動作を示すフローチャート。
【図１８】図１８は、一実施形態に係るアンロック動作のフローチャート。
【図１９】図１９は、一実施形態に係るホスト装置におけるアンロック動作のフローチャート。
【図２０】図２０は、一実施形態に係るメモリカードにおけるアンロック動作のフローチャート。
【図２１】図２１は、一実施形態に係るアンロック動作のフローチャート。
【図２２】図２２は、一実施形態に係るアンロック動作のフローチャート。
【図２３】図２３は、一実施形態に係るアンロック動作のフローチャート。
【図２４】図２４は、一実施形態に係るアンロック動作のフローチャート。
【図２５】図２５は、一実施形態に係るホスト装置におけるロック動作のフローチャート。
【図２６】図２６は、一実施形態に係るメモリカードにおけるロック動作のフローチャート。
【図２７】図２７は、一実施形態に係るメモリシステムの模式図。
【図２８】図２８は、一実施形態に係るメモリシステムの模式図。
【図２９】図２９は、一実施形態に係るメモリシステムの模式図。
【図３０】図３０は、一実施形態に係るメモリシステムの模式図。
【図３１】図３１は、一実施形態に係るメモリシステムの模式図。
【図３２】図３２は、一実施形態に係るメモリシステムの模式図。
【図３３】図３３は、一実施形態に係るメモリシステムの模式図。
【図３４】図３４は、一実施形態の変形例に係るメモリシステムのブロック図。
【図３５】図３５は、一実施形態の変形例に係るメモリカードの一部領域のブロック図。
【図３６】図３６は、一実施形態の変形例に係るメモリカードの動作を示すフローチャート。
【発明を実施するための形態】
【０００８】
以下、実施形態につき図面を参照して説明する。この説明に際し、全図にわたり、共通する部分には共通する参照符号を付す。
【０００９】
一実施形態に係るデバイス、ホスト装置、ホストシステム、及びメモリシステムについて説明する。以下では、メモリカードと、このメモリカードにアクセスするホスト装置とを含むメモリシステムを例に挙げて説明する。また本明細書では、メモリカードがＳＤメモリカードである場合を例に説明する。
【００１０】
１．構成について  
まず、ホスト装置及びメモリカードの構成について、図１を用いて説明する。図１は、本実施形態に係るメモリシステムのハードウェア構成を示すブロック図である。
【００１１】
１．１  ホスト装置の構成について  
まず、図１を参照してホスト装置の構成について説明する。図示するようにホスト装置１は、ＭＰＵ（micro processing unit）１１、ホストインターフェース（例えばＳＤTMインターフェース）回路１２、ＲＯＭ（read only memory）１４、及びＲＡＭ（random access memory）１３等を備えている。ＲＯＭ１４は、ハードディスクのような一般的な書き込みが可能なストーレジデバイスも含み、特にハードウェアの種類で限定はされるものではない。
【００１２】
ＭＰＵ１１は、ホスト装置１全体の動作を司る。ホスト装置１が電源供給を受けた際、ＲＯＭ１４に格納されているファームウェア（制御プログラム（命令））がＲＡＭ１３上に読み出される。そしてＭＰＵ１１は、このファームウェア（命令）に従って所定の処理を実行する。またＭＰＵ１１は、ＲＡＭ１３及びＲＯＭ１４に保持されるプログラム１５を実行することにより、種々の機能を実現する。このプログラム１５には、種々のアプリケーションソフトウェア、オペレーティングシステム、ファイルシステム等が含まれる。またこのプログラム１５には、後述するユーザ・キー（user key）を生成するための管理ユーティリティが含まれる。
【００１３】
ホストインターフェース回路１２は、メモリカード２との間の通信プロトコルを司る。ホストインターフェース回路１２は、ホスト装置１とメモリカード２とが通信するのに必要な様々な取り決めに従って動作し、後述のメモリカード２のホストインターフェース４１と相互に通信可能な各種のコマンドの組を備えている。
【００１４】
１．２  メモリカードの構成について  
次に、引き続き図１を用いてメモリカード２の構成について説明する。図示するようにメモリカード２は、ＮＡＮＤ型フラッシュメモリ３１及びコントローラ３２を備える。
【００１５】
ＮＡＮＤ型フラッシュメモリ３１は、データを不揮発に記憶する。ＮＡＮＤ型フラッシュメモリ３１は、複数のメモリセルを含むページと呼ばれる単位でデータを書き込み、また読み出す。各ページには、固有の物理アドレスが割り当てられている。更にＮＡＮＤ型フラッシュメモリ３１は、複数のページを含むブロックと呼ばれる単位でデータを消去する。なお、ブロック単位で物理アドレスが割り当てられていても良い。
【００１６】
コントローラ３２は、ホスト装置１からの要求に応じて、ＮＡＮＤ型フラッシュメモリ３１に対してデータの書き込み、読み出し、及び消去を命令する。またコントローラ３２は、ＮＡＮＤ型フラッシュメモリ３１によるデータの記憶状態を管理する。記憶状態の管理とは、どの物理アドレスのページ（またはブロック）が、どの論理アドレスのデータを保持しているかの関係、およびどの物理アドレスのページ（またはブロック）が消去状態（何も書き込まれていない、または無効なデータを保持している状態）であるかを管理することを含んでいる。
【００１７】
図１に示すようにコントローラ３２は、ホストインターフェース回路４１、ＭＰＵ４２、ＲＡＭ４４、ＲＯＭ４３、及びＮＡＮＤインターフェース回路４５を備えている。
【００１８】
ホストインターフェース回路４１は、メモリカード２とホスト装置１との間の通信を司る。より具体的には、ホストインターフェース回路４１は、ホスト装置１のホストインターフェース回路１２との間で、種々のコマンドやデータの授受を制御する。またホストインターフェース回路４１はレジスタ４６を備える。レジスタ４６は、種々の情報を格納することにより、ホスト装置１に対してメモリカード２の状態を通知出来る。この情報は、例えばＭＰＵ４２によってセットされる。またレジスタ４６は、ホスト装置１から受信した種々の情報を格納する。
【００１９】
ＭＰＵ４２は、メモリカード２全体の動作を司る。メモリカード２が電源供給を受けた際、ＲＯＭ４３に格納されているファームウェア（制御プログラム（命令））がＲＡＭ４４上に読み出される。そして、ＭＰＵ４２は、このファームウェア（命令）に従って所定の処理を実行する。ＭＰＵ４２は、制御プログラムに従って各種のテーブルをＲＡＭ４４上で作成したり、ホスト装置１から受けたコマンドに従ってＮＡＮＤ型フラッシュメモリ３１に対する所定の処理を実行したりする。
【００２０】
ＲＯＭ４３は、ＭＰＵ４２により制御される制御プログラムなどを格納する。ＲＡＭ４４は、ＭＰＵ４２の作業エリアとして使用され、制御プログラムや各種のテーブルを一時的に記憶する。このようなテーブルとして、データに割り当てられた論理アドレスと、当該データを格納しているページの物理アドレスとの変換テーブル（論理アドレス／物理アドレス変換テーブル）が含まれる。ＮＡＮＤインターフェース回路４５は、コントローラ３２とＮＡＮＤ型フラッシュメモリ３１との間のインターフェース処理を行う。
【００２１】
１．３  メモリシステムのメモリ空間について  
次に、上記構成のメモリシステムのメモリ空間について説明する。図２は、メモリカード２の外部からアクセス可能なメモリ空間を示すメモリマップであり、ＦＡＴ（file allocation table）ファイルシステムによりメモリ空間が管理される例について示している。
【００２２】
図示するようにメモリ空間は、大まかにはファイルシステム管理領域５０とファイルシステムデータ領域５１とに分けられる。各領域は、クラスタという単位に分割されて管理される。このファイルシステム管理領域５０とファイルシステムデータ領域５１とをあわせて、データ領域と呼ぶ。
【００２３】
管理領域５０は、ＮＡＮＤ型フラッシュメモリ３１に記録されているファイル（データ）を管理するために設けられており、ファイルの管理情報を保持する。このように、メモリに記録されているファイル（データ）を管理する方式をファイルシステムと呼ぶ。ファイルシステムにおいては、ファイルやフォルダなどのディレクトリ情報の作成方法、ファイルやフォルダなどの移動方法や削除方法、データの記録方式、管理領域の場所や利用方法などが定められる。
【００２４】
管理領域５０は、例えばブートセクタ、ＦＡＴ１、ＦＡＴ２、及びルートディレクトリエントリを含んでいる。ブートセクタは、ブート情報を記憶する領域である。ブートセクタは、例えばマスターブートレコード（ＭＢＲ：Master Boot Record）及びＢＩＯＳパラメータブロック（ＢＰＢ：BIOS Parameter Block）を含む。ＭＢＲ及びＢＰＢは、例えばそれぞれ５１２バイトの領域である。ＦＡＴ１及びＦＡＴ２は、データがいずれのクラスタに記憶されているかを記憶する。メモリ空間は、クラスタと呼ばれるある一定のサイズの空間の集合である。そして、書き込まれるデータがクラスタサイズより大きい場合、クラスタ単位に分割されて記憶される。この際ＦＡＴは、データがどのクラスタに分割されて書き込まれたかを示すクラスタチェーン（cluster chain）を作成し、これによってデータを管理する。なお、ＦＡＴ１及びＦＡＴ２の両者が同じ値を保持しておくことで、一方が壊れた場合でもＦＡＴの復旧を可能にしている。以下ではＦＡＴ１、ＦＡＴ２をまとめてＦＡＴと呼ぶ。ルートディレクトリエントリは、ルートディレクトリ上にあるファイルの情報を記憶する。より具体的には、ファイル名又はフォルダ名、ファイルサイズ、属性及びファイルの更新日時などとともに、どのクラスタがファイルの先頭クラスタであるかを記憶する。先頭クラスタが分かれば、ＦＡＴチェーンから、全データがアクセス可能となる。
【００２５】
ファイルシステムデータ領域５１は管理領域５０以外の領域であり、メモリカードに格納することができるデータ容量は、この領域の大きさで決まる。そして、正味のユーザ・データやディレクトリエントリを保持する。
【００２６】
１．４  ロック状態とアンロック状態について  
次に、本実施形態に係るメモリカード２の取り得るロック状態とアンロック状態とについて、図３を用いて説明する。図３は、メモリカード２の状態遷移図であり、特に電源投入直後の状態と、ロック状態とアンロック状態との間の遷移とについて示している。
【００２７】
ユーザ・キーは、メモリカードがロック状態になるためには登録されている必要があり、ロック状態からアンロック状態の間を遷移するために必要な鍵である。キーは、ホスト装置１からユーザが直接入力する「パスワード」として使用する場合と、ユーザが入力するには適さないほど長い鍵を扱うことも対象としているため、ユーザの入力によらずにホスト装置１の管理ユーティリティによって管理される場合とがある。
【００２８】
図３に示すように、メモリカード２がホスト装置１に接続されてホスト装置１からメモリカード２に電源が供給されると、ユーザ・キーの設定の有無によって、メモリカード２はロック状態（locked state）とアンロック状態（unlocked state）とのいずれかの状態を取る。ユーザ・キーが設定されていなければ、メモリカード２はアンロック状態となる。アンロック状態では、メモリカード２のメモリ空間に対する書き込みアクセス及び読み出しアクセスは制限なく行うことが出来る（ただし、ＲＯＭカードなどの用途によってライトは制限される場合がある）。メモリカードの制御は、コマンドで行われ、メモリアクセスコマンドとしては、書き込みコマンド、読み出しコマンドがあり、また本提案のロック機能を制御する制御コマンドがある。ホスト装置１は、制御コマンドを用いてメモリカード２にユーザ・キーを登録することが出来る。制御コマンドは、ロック状態、アンロック状態に関わらず実行可能なコマンドとして制御される。
【００２９】
他方で、メモリカード２にユーザ・キーが設定されていれば、メモリカード２はロック状態となる。ロック状態では、メモリカード２に対する書き込みアクセスは禁止され、読み出しアクセスは制限される。例えば、図２で説明した管理領域５０、より具体的にはファイルシステムに関する情報（例えば図２におけるＦＡＴ１、ＦＡＴ２、及びルートディレクトリエントリ、以下、これをファイルシステム情報と呼ぶ）の読み出しは可能とされるが、管理領域５０以外の領域への読み出しコマンドを受信した際には、そのコマンドの実行を拒絶する。書き込みコマンドを受信した際は、領域によらず、そのコマンドの実行を拒絶する。
【００３０】
ホスト装置１は、メモリカード２がロック状態であってもファイルシステム情報の少なくとも一部の読み出しが可能であるため、この情報を読み出すことによって、メモリカード２がフォーマット済みのメモリデバイスであることを認識出来、更にこのメモリカード２にドライブレターを割り当てることが出来る。
【００３１】
例えばホスト装置１は、後述する図３５に示すＭＢＲ(Master Boot Record)に記載された情報を読み出すだけでも、メモリカード２をマウントすることは可能である。この場合、ホスト装置１は、カードがロック状態の場合は、マウント先(ドライブなど)からはメモリカード２を空のドライブとして見せておき、ロックが解除されると、ディレクトリやファイル名が見えるようになる。
【００３２】
ファイルシステム管理領域５０とファイルシステムデータ領域５１の境界はファイルシステムのフォーマットパラメータで決定されるため、メモリカード２としては、境界を厳密に区別する必要はない。メモリ容量から、おおよそ必要な管理領域５０の大きさが予測できるので、ロック状態においては、例えばＭＢＲやＢＰＢぐらいまでを読み出せるようにしても良いし、管理領域５０を含む少し大きめの領域に対して読めるようにしても良い。したがってメモリカード２が、ファイルシステムのフォーマットを認識する必要はない。
【００３３】
一般的に、デバイスをマウントする場合、デバイスの識別とパーティション情報が必要となる。従って、ロック状態において最低限、ＭＢＲを読み出すことが出来れば、メモリード２をマウントすることは可能な場合が多い。デバイス情報は、メモリカード２を初期化した後、ＭＩＤを読み出すことで識別出来る。ＭＩＤとは、メモリカード２内に含まれるＣＩＤ（Card Identification）レジスタに保持される、カード識別情報の一種である。また、ＭＢＲは、メモリカード２のパーティション情報を得るためにも必要な情報である。しかし、メモリカード２が第１パーティションのみ有効である、というルールを予め定めておけば、ＭＢＲを読み出すことなくマウントが可能となる。マウント処理のためにロック状態のメモリカード２から読み出し可能なホスト装置１の実装としては、一例として、図３５のメモリ空間の場合に以下のようなケースが考えられる。すなわちホスト装置１は、  
(a) ＭＢＲだけ読み出せる、  
(b) ＭＢＲとＢＰＢだけ読み出せる、  
(c) ＭＢＲからＦＡＴまでを読み出せる、または  
(d) ＭＢＲからルートディレクトリエントリまでを読み出せる。
【００３４】
アンロック状態にあるメモリカード２は、制御コマンドを用いてロック動作を実行すると、ユーザ・キーが登録されていればロック状態に遷移出来る。またロック状態にあるメモリカード２は、制御コマンドを用いてアンロック動作を実行し、指定したキーと登録済みのキーが一致すればアンロック状態に遷移出来る。アンロック動作には、ユーザ・キーを用いたアンロック動作と、後述するマスター・キーを用いたアンロック動作とがある。またロック状態からアンロック状態への遷移は、ユーザ・キーを含む一部のデータを制御コマンドで消去することによっても可能である。これらの動作の詳細も後述する。
【００３５】
またメモリカード２は、制御コマンドを用いてユーザ・キーに関する種々の設定（コンフィギュレーション動作）を実行可能である。通常このコンフィギュレーション動作は、アンロック状態において実行可能であるが、ロック状態でもコンフィギュレーション動作を許可することができるコンフィギュレーション・モード（Config.Mode）を有している。すなわち、コンフィギュレーション・モードがオンされているメモリカード２は、ロック状態であってもコンフィギュレーション動作を実行出来る。他方、コンフィギュレーション・モードがオフされていれば、ロック状態のメモリカード２はコンフィギュレーション動作を実行出来ない。コンフィギュレーション動作の詳細については、後述する。
【００３６】
図４は、ロック状態とアンロック状態の更に詳細な内部状態を示す図である。前述のように、電源オン時にユーザ・キーが登録されていなければ、メモリカード２はアンロック状態にある。アンロック状態では(図４右側)、コンフィギュレーション・モードはデフォルトでオンされている。そして、ホスト装置１は制御コマンドを用いてコンフィギュレーション動作を実行してユーザ・キーを登録することが出来る。一方、電源オン時にユーザ・キーが登録されていれば、メモリカード２はロック状態にある(図４左側)。コンフィギュレーション・モードがオンかオフかの２状態がある。コンフィギュレーション・モードをオフにしないと、アンロック動作を実行することができない。
【００３７】
例えば、あるホスト装置１（ホスト装置１−１）によってユーザ・キーが登録されたメモリカード２が、別のホスト装置１（ホスト装置１−２）に接続された際には、メモリカード２はロック状態となる。但し、ホスト装置１−１でコンフィギュレーション・モードがオンに設定されていた場合には、ロック状態のメモリカード２に対してホスト装置１−２はユーザ・キーを設定出来る。その後、ホスト装置１−２がコンフィギュレーション・モードをオフに設定すると、コンフィギュレーション動作は実行出来なくなる。ユーザ・キーは複数登録することができ、最大登録可能数まで複数のホスト装置のユーザ・キーを登録することができる。アンロック動作で、どれか１つのユーザ・キーが一致すればロック状態を解除することができる。
【００３８】
１．５  メモリカードの機能ブロック構成について  
次に、メモリカード２の特にコンフィギュレーション動作に着目した機能ブロック構成について、図５を用いて説明する。図５は、メモリシステムの機能ブロック図である。
【００３９】
１．５．１  シンボル定義について  
機能ブロック構成について説明する前に、本明細書で使用するシンボルについて以下のように定義する。
【００４０】
（ｉ）一般的なキーシンボルの定義  
・Ku (User Key) : ユーザによって設定されるキー  
・Km (Master Key) : 出荷時に設定されている優先度が高いキー  
・Kcp（Card Public Key）：カードＲＳＡ暗号の公開鍵  
・Kcs（Card Secret Key）：カードＲＳＡ暗号の秘密鍵  
・Ccx（Cipher Code, x=g or h）：使用する暗号方式とアルゴリズムを示すコード  
・Nr：乱数。
【００４１】
（ii）変換関数の種類と表記  
・F()：フラッシュメモリに保存しておくための暗号関数  
エンコード：Kuf＝F(Ku, “Enc”)   
デコード：Ku=F(Kuf, “Dec”)  
なお、変換関数Ｆ()は、変換を行わないという場合も含む（Kuf=Ku）。ホストとカードで共通の表記とするが、関数自体は同一である必要はなく個別の関数を実装してもよい。
【００４２】
・Gh()、Gc()：ＲＳＡ暗号を用いた暗号関数と復号関数  
Kcpホストエンコード：Kut=Gh(Kcp, Ku)  
Kcsカードデコード：Ku=Gc(Kcs, Kut)  
Gh()、Gc()が複数ある場合、Ccgにより、使用するGh()及びGc()の種類が示される。  
・H()：ユーザ・キー登録用の変換関数  
圧縮関数を用いて長いキーを短いキーに変換することで、キーの比較を容易にすることもできる。  
Nt=H(Nr, Ku)。
【００４３】
(iii)キーの種類と表記  
・Kx or Kxy：キーの表記  
x=m：マスター・キー、x=u：ユーザ・キー  
y=f：フラッシュメモリに保持するためにF()で暗号化されている、  
y=t：ホストカード間の送受信時、y=v：検証（verification）時  
マスター・キーの種類：Km, Kmf  
ユーザ・キーの種類：Ku, Kut, Kuf, Kuv  
・Nx：チャレンジに用いる乱数表記  
x=r：乱数シード、  
x=t：ホストカード間の送受信時に用いるキーを埋め込んだ乱数、  
x=e：カードが計算した期待値  
チャレンジ番号の種類：Nr, Nt, Ne。
【００４４】
１．５．２  ホスト装置１について
図５に示すように、ホスト装置１は、ＣＰＵ６０、変換関数Ｇｃ（）、Ｈ（）、Ｆ（）ファームウェア６１、レジスタ６２、キー保存領域６３、ワークメモリ６４。並びにホストコントローラ６５を備えている。
【００４５】
ＣＰＵ６０は、ホスト装置１全体の制御を行い、図１で説明したＭＰＵ１１に相当する。そして、変換関数Ｇｈ（）、Ｈ（）、ファームウェア６１、レジスタ６２、キー保存領域６３、ワークメモリ６４、並びにホストコントローラ６５にアクセス可能とされている。
【００４６】
変換関数Ｇｈ（）は、ユーザ・キー登録時に用いる暗号関数である。変換関数Ｇｈ（）には、例えばメモリカード２から読み出した公開鍵によってユーザ・キーを暗号化するＲＳＡ暗号方式が用いられる。変換関数Ｇｈ（）は、ソフトウェアにより構成しても良いが (例えば図１で説明したＲＯＭ１４に格納される)、高速化を図るために、ハードウェアで構成しても良い。この変換関数Ｇｈ（）が複数ある場合は、メモリカード２のステータス情報に含まれるＧｈ（）リストから選ばれる（図５のレジスタ７２に保持される）。すなわち、Ｇｈ（）リストは、メモリカード２がサポートしている、ユーザ・キー登録用の変換関数の一覧である。ホスト装置１は、ホスト装置１がサポートしている関数を、このＧｈ（）リストから選択する。選択された関数を示すコードＣｃｇは、ワークメモリ６４に保持される。Ｇｈ（）が１種類しかない場合は、Ｇｈ（）リストの実装は必須ではない。
【００４７】
変換関数Ｈ（）は、ユーザ・キー認証時に用いる暗号関数である。ユーザ・キーは、メモリカード２から読み出された乱数を用いて、変換関数Ｈ（）により暗号化される。変換関数Ｈ（）もまた、ソフトウェアにより構成しても良いが(例えば図１で説明したＲＯＭ１４に格納される)、高速化の観点ではハードウェアで構成することが好ましい。この変換関数Ｈ（）は、メモリカード２のステータス情報のＨ（）リストから選ばれる（図５のレジスタ７２に保持される）。すなわち、Ｈ（）リストは、メモリカード２がサポートしている、ユーザ・キー認証用の変換関数の一覧である。ホスト装置１は、ホスト装置１がサポートしている関数を、このＨ（）リストから選択する。選択された関数を示すコードＣｃｈは、ワークメモリ６４に保持される。Ｈ（）が１種類しかない場合は、Ｈ（）リストの実装は必須ではない。変換関数Ｈ（）にはハッシュ関数を用いることが出来、これによりキー長を短いキーに変換することで、キーの比較を容易にすることができる。Ｈ（）の一例は、MD5(Nr||Ku)である。Ｈ（）は逆関数を持っても良いが、本提案においてはＨ（）は逆関数を持たない実装例を示している（(F()は、"Dec", "Enc")で逆関数が定義されている）。
【００４８】
ホストコントローラ６５は、メモリカード２との間でインターフェース処理を行う。ホストコントローラ６５は、図１におけるホストインターフェース回路１２に相当する。各種コマンドをカードに発行し、その応答によってコマンド実行を制御する。
【００４９】
ＣＰＵ６０は、ファームウェア６１を実行することで動作し、ホスト装置１を制御する。またファームウェア６１は、先述の管理ユーティリティを含む。管理ユーティリティは、乱数または、ホスト装置１固有の情報に基づいて、ユーザからの例えばパスワード入力を受け付けることなくユーザ・キーを生成する。ユーザ・キーの生成方法は、公知の種々の方法を用いることが出来、ホスト装置１固有の情報としては、例えば乱数発生、ホスト装置１の製造番号やシリアル番号等が挙げられる。あるいはユーザ・キーは、ホスト装置１固有の情報と、メモリカード２固有の情報とを用いて演算した結果に基づいても良い。ファームウェア６１は、図１における例えばＲＯＭ１４に格納される。
【００５０】
レジスタ６２は、メモリカード２から読み出したステータス情報を保持する。このステータス情報の一例は、乱数Ｎｒ及びＲＳＡ暗号の秘密鍵Ｋｃｐ等である。レジスタ６２としては、例えば揮発性メモリを使用でき、図１における例えばＲＡＭ１３が相当する。
【００５１】
キー保存領域６３は、管理ユーティリティによって生成されたユーザ・キーＫｕ、またはユーザからの入力を受け付けたユーザ・キーＫｕをＦ（）で暗号化してＫｕfとして保持する。キー保存領域６３は、例えば図１では図示せぬ不揮発性半導体メモリ（ホストメモリと呼ぶことがある）に相当する。キー保存領域６３内の情報は、外部からは容易に読み出せないように管理されている。
【００５２】
ワークメモリ６４は、ＣＰＵ６０がユーザ・キーに関する処理等、種々の処理を実行する際のワークエリアとして使用され、図１における例えばＲＡＭ１３に相当する。そしてワークメモリ６４は、使用するコードＣｃｇ、Ｃｃｈや、ＣＰＵ６０で計算されたキーＫｕｔ、Ｎｔ等を保持する。
【００５３】
１．５．３  メモリカード２について
ＣＰＵ７０は、メモリカード２全体の制御を行い、図１で説明したＭＰＵ４２に相当する。そして、変換関数Ｇｃ（）、Ｈ（）、Ｆ（）、ファームウェア７１、レジスタ７２及び７３、ワークメモリ７４、並びに不揮発性メモリ７５にアクセス可能とされている。
【００５４】
変換関数Ｇｃ（）は、ユーザ・キー登録時に用いる暗号関数である。そして変換関数Ｇｃ（）には、例えば秘密鍵によってユーザ・キーを復号するＲＳＡ暗号方式が用いられる。変換関数Ｇｃ（）は、ソフトウェアにより構成しても良いが（例えば図１で説明したＲＯＭ１４に格納される）、高速化を図るためにハードウェアで構成しても良い。この変換関数Ｇｃ（）は、ホスト装置１の変換関数Ｇｈ（）と対応している。そして変換関数Ｇｃ（）は、メモリカード２がサポートしている、ユーザ・キー登録用の関数の一覧であるＧｈ（）リストに含まれるいずれかの関数である。
【００５５】
変換関数Ｈ（）は、ユーザ・キー認証時に用いる暗号関数である。ユーザ・キーは、不揮発性メモリ７５から読み出された乱数を用いて、変換関数Ｈ（）により暗号化される。変換関数Ｈ（）もまた、ソフトウェアにより構成しても良いが（例えば図１で説明したＲＯＭ１４に格納される）、高速化の観点ではハードウェアで構成することが好ましい。この変換関数Ｈ（）は、ホスト装置１の変換関数Ｈ（）と対応している。そして変換関数Ｈ（）は、メモリカード２がサポートしている、ユーザ・キー認証用の関数の一覧であるＨ（）リストに含まれるいずれかの関数である。前述の通り、変換関数Ｈ（）にはハッシュ関数を用いることが出来、これによりキー長を短くして比較を容易にすることが出来る。
【００５６】
ホストインターフェース７６は、ホスト装置１との間でインターフェース処理を行う。ホストインターフェース７６は、図１におけるホストインターフェース４１に相当する。
【００５７】
ファームウェア７１は、ＣＰＵ７０によって実行される。そしてＣＰＵ７０は、ファームウェア７１を実行することで動作し、メモリカード２を制御する。ファームウェア７１は、図１における例えばＲＯＭ４３に格納され、またホスト装置１からは見えずアクセスすることはできない。
【００５８】
レジスタ７２は、メモリカード２の状態を示すステータス情報を保持可能である。ホスト装置１は、制御コマンドを用いてレジスタ７２からステータス情報を読み出し、メモリカード２の状態を把握出来る。乱数Ｎｒは、アンロック動作、並びにユーザ・キーの消去動作及び確認動作が行われる度に、例えばＣＰＵ７０によって異なる値に更新される。秘密鍵Ｋｃｓは、ホストには見せないのでレジスタ７２には保持されない。
【００５９】
レジスタ７３は、ホスト装置１によって書き込み可能なレジスタである。そしてレジスタ７３は、ホスト装置１から送信される各種のキー情報（例えばＫｕ、Ｋｕｔ、Ｋｍ、Ｃｃｇ、Ｃｃｈ、及びＮｔなど）を保持する。
【００６０】
レジスタ７２およびレジスタ７３をハードウェアで構成する場合は、これらは図１における例えばレジスタ４６に相当するが、ＲＡＭ４４上に仮想的なレジスタをファームウェア７１で作ることが可能である。ステータスの初期値はメモリカード２が初期化される際、ＣＰＵ７０は不揮発性メモリ７５から必要な情報をレジスタ７２にコピーする。この情報の一例としては、Ｇｈ（）リスト、Ｈ（）リスト、乱数Ｎｒ、及び公開鍵Ｋｃｐが挙げられる。
【００６１】
ワークメモリ７４は、ＣＰＵ７０がユーザ・キーに関する処理等、種々の処理を実行する際のワークエリアとして使用され、図１における例えばＲＡＭ４４に相当する。そしてワークメモリ７４は、計算された比較値Ｋｕｖ、Ｋｍｖや期待値Ｎｅ等を保持する。ワークメモリ７４は、ホスト装置１によって直接アクセスすることは出来ない。
【００６２】
不揮発性メモリ７５は、図１におけるＮＡＮＤ型フラッシュメモリ３１に相当する。ホスト装置１は、不揮発性メモリ７５に対して直接にはアクセス出来ず、ホストインターフェース７６やＣＰＵ７０（図１におけるコントローラ３２）を介してアクセスする。不揮発性メモリ７５は、メモリカード２に記録しておくべき種々の情報（例えば、Ｋｕｆ、Ｋｍｆ、Ｎｒ、Ｋｃｐ、Ｋｃｓ、Ｇｈ（）リスト、及びＨ（）リストなど）を不揮発に保持する。これらの情報は、ホスト装置１からは見えない領域に保持され、ホスト装置１によって直接アクセスすることは出来ない。すなわち、これらの情報は、図２に図示しない領域に保持される。そして、これらの情報は基本的には固定値である。しかし前述の通り、乱数のシード（seed）であるＮｒは、ＣＰＵ７０によって更新される。この際ＣＰＵ７０は、更新後のＮｒが過去の値と同一とならないようにする。また不揮発性メモリ７５は、メモリカード２の固有情報、例えばシリアルナンバーを不揮発に保持する。シリアルナンバーは、ホスト装置１によって読み出されることが出来る。
【００６３】
２．動作について  
次に、上記構成のメモリシステムの動作について説明する。以下では、コンフィギュレーション動作と、ロック／アンロック動作につき、順次説明する。
【００６４】
２．１  電源投入直後のメモリカードの動作について  
まず、メモリカード２がホスト装置１に接続されて電源が投入された直後の動作につき、図６を用いて説明する。図６は、メモリカード２の動作を示すフローチャートである。なお、図６における処理は、ＣＰＵ７０が主体となって実行される。
【００６５】
メモリカード２がホスト装置１に接続されると、ホスト装置１はメモリカード２に電源を供給する。そして、ホスト装置１のＣＰＵ６０は初期化コマンドを発行して、メモリカード２を初期化する。このコマンドに応答して、メモリカード２のＣＰＵ７０は初期化動作を実行する（ステップＳ１１）。初期化とは、メモリカード２のメモリ空間がホスト装置１からアクセス可能な状態にする処理であり、より具体的にはホスト装置１からリードコマンドを受け付け可能な状態とされる処理である。この状態を、トランスファー状態（ “tran” state）と呼ぶ。また初期化処理の過程では、必要な情報が不揮発性メモリ７５からレジスタ７３に読み出される。更に初期化処理の過程において、ホスト装置１とメモリカード２との間のバスの転送モードが選択される。例えば、バスには複数の転送モードが用意され、転送モードによってデータの転送速度が異なる。この複数の転送モードのうちの任意のいずれかが、初期化処理において選択される。
【００６６】
トランスファー状態に遷移したメモリカード２のＣＰＵ７０は、当該メモリカード２に少なくとも１つのユーザ・キーが設定されているか否かを判断する（ステップＳ１２）。この判断は、ＣＰＵ７０が不揮発性メモリ７５を参照することによって実行可能である。より具体的には、ＣＰＵ７０は、暗号化されたユーザ・キーＫｕｆが不揮発性メモリ７５に保持されているか否かによって判断出来る。あるいは、ユーザ・キーが設定されているかの情報が、ステータス情報の一部としてレジスタ７２に保持されていても良い。
【００６７】
ユーザ・キーが設定されていなければ（ステップＳ１２、ＮＯ）、ＣＰＵ７０は、メモリカードをアンロック状態とする（ステップＳ１３）。すなわちホスト装置１は、メモリカードのファイルシステム管理領域５０及びファイルシステムデータ領域５１の双方に読み出しアクセス及び書き込みアクセスを実行出来る。
【００６８】
アンロック状態では、コンフィギュレーション動作の全てが実行可能とされている（ステップＳ１４）。ユーザ・キーの登録・消去・確認などを行うことができる。またメモリカード２は、デフォルトではコンフィギュレーション・モードをオフされている。従って、例えば別のホスト装置１（第２のホスト装置１）についてユーザ・キーを設定する際には、コンフィギュレーション動作を実行することにより、コンフィギュレーション・モードがオンされる。この場合の処理の流れを次に説明する。
【００６９】
第１のホスト装置１により、ステップＳ１４でユーザ・キーが設定され、コンフィギュレーション・モードをオンにしたメモリカード２が、第２のホスト装置１に接続された際、メモリカード２のＣＰＵ７０は、不揮発性メモリ７５に暗号化されたユーザ・キーＫｕｆが保持されていること等に基づき、何らかのユーザ・キーが登録されていることを認識する（ステップＳ１２、ＹＥＳ）。
【００７０】
引き続きＣＰＵ７０は、コンフィギュレーション・モードがオンされているか否かを判断する（ステップＳ１５）。この判断は、例えばメモリカード２内の例えばレジスタ７２に設定されたステータス情報を参照することによって実行可能である。
【００７１】
コンフィギュレーション・モードがオンされていれば（ステップＳ１５、ＯＮ）、メモリカード２はロック状態で、且つコンフィギュレーション動作が実行可能な状態である（ステップＳ１６）。第２ホスト装置１はユーザ・キーの設定を行う（ステップＳ１７）。そして、コンフィギュレーション・モードをオフしない限り、ステップＳ１６にとどまる。
【００７２】
ステップＳ１６において、第２のホスト装置１がコンフィギュレーション・モードをオフすると（ステップＳ１８）、メモリカード２はロック状態を維持したまま、コンフィギュレーション動作の実行が禁止される（ステップＳ１９）。
【００７３】
ステップＳ１９では、ホスト装置はアンロック動作を実行出来る（ステップＳ２０）。アンロック動作では、第２ホスト装置１が登録したユーザ・キーを用いてメモリカード２が認証されれば、メモリカード２はアンロック状態に遷移する（ステップＳ１３）。この結果、ホスト装置１はメモリカード２のファイルシステムデータ領域５１へのアクセスが可能となる。ファイルシステム管理領域５０からのデータの読み出しを禁止するかどうかは実装による。
【００７４】
またアンロック状態では、ホスト装置１はロック動作を実行することにより、メモリカード２をロック状態に遷移させることが出来る。このときユーザ・キーで一致を確認して一致した場合にロック状態にしても良いし、ユーザ・キーの登録があるかどうかだけでロック状態にしても良い。
【００７５】
２．２  コンフィギュレーション動作について  
上記コンフィギュレーション動作の詳細について、図７を用いて説明する。図７は、コンフィギュレーション動作の内容を示す表である。
【００７６】
コンフィギュレーション動作は、以下の７つの機能を含む。  
（１）“Set User Key”：ユーザ・キーを設定（登録）する機能  
（２）“Clear User Key”：登録済みのユーザ・キーを消去する機能  
（３）“Verify User Key”：登録済みのユーザ・キーを確認する機能  
（４）“Enable Key Ciphering”：キーの暗号化を有効化する機能  
（５）“Disable Key Ciphering”：キーの暗号化を無効化する機能  
（６）“Enable Config.Mode”：ロック状態でコンフィギュレーション・モードをオンさせるための機能  
（７）“Disable Config.Mode”：ロック状態でコンフィギュレーション・モードをオフさせるための機能  
ここでは、７つの基本機能を挙げているが、コンフィギュレーション機能の拡張は可能であり、例えば特定のユーザ・キーでアンロック状態にした場合は、メモリ空間のリードのみ許可し、ライトは許可しないというような特別な動作を行う設定を追加することができる。機能の種類について制限はされない。
【００７７】
以下、コンフィギュレーション動作の詳細につき順次説明する。
【００７８】
２．３  “Set User Key”機能について  
まず、“Set User Key”機能について説明する。前述の通り、ユーザ・キーはホスト装置毎に固有のユーザ・キーが設定可能である。そして複数のユーザ・キーが設定された後は、何れかの登録されたユーザ・キーを入力することによって、メモリカードを使用可能な状態（アンロック状態）とすることが出来る。長いキーを用いることで、異なるホスト装置で同一キーになる確率はかなり低くなる。
【００７９】
２．３．１  ホスト装置１の動作について  
はじめに、“Set User Key機能”実行時におけるホスト装置１の動作につき、図８を用いて説明する。図８はホスト装置１の処理の流れを示すフローチャートであり、これらの処理は、例えばＣＰＵ６０が主体となって行われる。
【００８０】
図示するように、ホスト装置１のＣＰＵ６０は、メモリカード２のレジスタ７２に対する読み出し命令を発行し、メモリカード２のステータス情報を読み出す（ステップＳ３１）。引き続きＣＰＵ６０は、キー暗号化が有効か無効かを確認する（ステップＳ３２）。キー暗号化が有効であるか無効であるかの情報は、ステップＳ３１においてステータス情報の一部として読み出される。またキー暗号化の有効化及び無効化は、ユーザ・キーが全く登録されていない状態で設定出来、いったんユーザ・キーが登録されると変更出来ない。但し、ユーザ・キーを全て消去すれば、再び設定可能となる。なお、デフォルトでは無効とされている。
【００８１】
キー暗号化を使用する場合（ステップＳ３３、ＹＥＳ）、ホスト装置１は“Enable Key Ciphering”機能を実行して、キー暗号化を有効にする（ステップＳ３４）。
【００８２】
キー暗号化を使用しない場合（ステップＳ３３、ＮＯ）、ホスト装置１は、ユーザ・キーＫｕを平文のまま、ホストコントローラ６５からメモリカード２へ送信する（ステップＳ３５）。このユーザ・キーＫｕは、管理ユーティリティによってＣＰＵ６０によって自動的に生成されたものであっても良いし、あるいはユーザからの入力を受け付けたものであっても良い。送信されたユーザ・キーＫｕは、メモリカード２のレジスタ７３にＦ（）で暗号化して保持される（Ｋｕｆ）。
【００８３】
キー暗号化を使用する場合（ステップＳ３２、ＹＥＳ、ステップＳ３４）、ステップＳ３１で読み出したステータス情報に基づき、使用する変換関数Ｇｈ（）を決定し、またそれに対応するコードＣｃｇを決定する。カードがサポートする複数のＧｃ（）、Ｇｈ（）対の中からホストが使用可能なものをひとつ選ぶ。そして、変換関数Ｇｈ（）を用いてユーザ・キーＫｕを暗号化する（ステップＳ３６）。暗号化ユーザ・キーＫｕｔは、Kut = Gh(Kcp, Ku)によって算出される。
【００８４】
引き続きホスト装置１は、決定されたコードＣｃｇと、暗号化ユーザ・キーＫｕｔとを、ホストコントローラ６５からメモリカード２へ送信する（ステップＳ３７）。これらの情報は、メモリカード２のレジスタ７３に保持される。
【００８５】
その後、ホスト装置１は、“Set User Key”機能の実行命令をメモリカード２に発行する。これに応答して、メモリカード２において“Set User Key”機能が実行される（ステップＳ３８）。メモリカード２における処理については、図９を用いて後述する。
【００８６】
その後、メモリカード２のビジー状態が解除されると、ホスト装置１はメモリカード２における処理が完了したことを認識する。ビジー状態とは、メモリカード２がコマンドを受け付け不可能な状態であり、ビジー状態が解除されてレディ状態になると、メモリカード２はコマンドを受け付け可能となる。この情報は、レディ／ビジー信号（またはカードからホストに送られるパケット情報）として、メモリカード２からホスト装置１へ送られる。
【００８７】
引き続きホスト装置１は、メモリカード２の例えばレジスタ７２からステータス情報を読み出す（ステップＳ３９）。そしてホスト装置１は、メモリカード２での実行結果を確認する（ステップＳ４０）。その結果、メモリカード２におけるコンフィギュレーション動作が成功していれば（ステップＳ４０、Success）、ホスト装置１は、“Set User Key”機能が正常に完了したことを認識する。他方、失敗していれば（ステップＳ４０、Fail）、ホスト装置１は、“Set User Key”機能が失敗したことを認識する。
【００８８】
２．３．２  メモリカード２の動作について  
次に、上記ステップＳ３８におけるメモリカード２の動作につき図９を用いて説明する。図９は、メモリカードの処理を示すフローチャートである。
【００８９】
図示するように、ホスト装置１から“Set User Key”機能の実行命令を受信すると、メモリカード２の例えばＣＰＵ７０は、キー暗号化が有効か否かを判断する（ステップＳ５１）。キー暗号化が有効であれば（ステップＳ５１、ＹＥＳ）、ＣＰＵ７０は、レジスタ７３に設定されている情報を読みだして処理する。ホスト装置１から受信したコードＣｃｇに対応する変換関数Ｇｃ（）を決定し、更に変換関数Ｆ（）を用いて、受信した暗号化ユーザ・キーＫｕｔから、不揮発性メモリ７５に記憶するための暗号化ユーザ・キーＫｕｆを算出する（ステップＳ５２）。より具体的には、暗号化ユーザ・キーＫｕｆは、Kuf = F(Gc(Kcs, Kut), “Enc”)によって算出される。Ｋｕｔは、ＲＳＡ暗号Ｇｃの秘密鍵であるＫｃｓによってＫｕに復号される。従って、Gc(Kcs, Kut) = Kuである。フラッシュメモリにキーを保存する場合に平文で見えないようにしておく。Ｋｕを変換関数Ｆ（）により暗号化したＫｕｆを算出する。
【００９０】
他方で、キー暗号化が無効であれば（ステップＳ５１、ＮＯ）、ＣＰＵ７０は、変換関数Ｆ（）を用いて、受信した平文のユーザ・キーＫｕを暗号化してＫｕｆを算出する（ステップＳ５３）。より具体的には、暗号化ユーザ・キーＫｕｆは、Kuf = F(Ku, “Enc”)によって算出される。
【００９１】
ステップＳ５２またはＳ５３の後、ＣＰＵ７０は、算出した暗号化ユーザ・キーＫｕｆを、不揮発性メモリ７５に書き込む（ステップＳ５４）。そしてＣＰＵ７０は、暗号化ユーザ・キーＫｕｆの不揮発性メモリ７５への書き込みが成功したか否かを確認する（ステップＳ５５）。
【００９２】
成功していれば（ステップＳ５５、ＹＥＳ）、ＣＰＵ７０は、コンフィギュレーション動作が成功したことを示すステータス情報を、例えばレジスタ７２に格納する（ステップＳ５６）。他方で失敗していれば（ステップＳ５５、ＮＯ）、ＣＰＵ７０は、コンフィギュレーション動作が失敗したことを示すステータス情報をレジスタ７２に格納する（ステップＳ５７）。
【００９３】
その後、ＣＰＵ７０はビジー状態を解除して、コンフィギュレーション動作を終了する。
【００９４】
２．３．３  “Set User Key”シーケンスについて  
次に、上記“Set User Key”機能実行時のシーケンスについて説明する。本説明は、上記２．３．１及び２．３．２の説明を簡略化してまとめたものである。
【００９５】
図１０は、キー暗号化が有効とされている場合の“Set User key”シーケンスを示す。
【００９６】
図示するように、まずホスト装置１がユーザ・キーＫｕを決定する。前述の通り、ユーザ・キーＫｕは管理ユーティリティによって生成されるか、あるいはユーザからの入力を受け付けたものである。そしてホスト装置１は、ユーザ・キーＫｕを変換関数Ｆ（）で暗号化することにより、暗号化ユーザ・キーＫｕｆを生成し、これをキー保存領域６３に保持させる。なおホスト装置１は、キー保存領域６３から暗号化ユーザ・キーを読み出し、これを変換関数Ｆ（）で復号すれば、平文のユーザ・キーＫｕを得ることが出来る。
【００９７】
引き続きホスト装置１は、カード情報（暗号化のプロトコル／アルゴリズム（Ｇｈ（）リスト）や公開鍵Ｋｃｐ）をメモリカード２から読み出す。そしてホスト装置１は、利用可能な変換関数Ｇｈ（）をＧｈ（）リストから選択し、ユーザ・キーＫｕを暗号化して、暗号化ユーザ・キーＫｕｔ（＝Gh(Kcp, Ku)）を算出する。更にホスト機器１は、選択したＧｈ（）を示すコードＣｃｇと暗号化ユーザ・キーＫｕｔとをメモリカード２に送信すると共に（レジスタ７３に設定する）、生成したユーザ・キーＫｕの登録をメモリカード２に命令する。
【００９８】
メモリカード２は、レジスタ７３に受信したコードＣｃｇに基づいて変換関数Ｇｃ（）を選択し、対応する秘密鍵Ｋｃｓで暗号化ユーザ・キーＫｕｔを解読（復号）して、平文のユーザ・キーＫｕを得る。引き続きメモリカード２は、キー変換関数Ｆ()を用いて、暗号化ユーザ・キーＫｕｆ（＝F(Ku, “Enc”)）を生成し、不揮発性メモリ７５に記憶する。そしてメモリカード２は、登録完了または登録失敗をホスト装置１に通知する。
【００９９】
以上によって、ホスト装置１とメモリカード２との間で、ユーザ・キーＫｕが登録される。なお、暗号関数Ｇｈとしては例えばＲＳＡ２０４８の暗号化が使用され、Ｇｃとしては例えばＲＳＡ２０４８の復号化が使用される。
【０１００】
図１１は、キー暗号化が無効とされている場合の“Set User key”シーケンスを示す。暗号化が無効であるというステータス情報は、ステータスレジスタ７２にあるが、すでにホスト装置1はこのレジスタを読んでいると想定しているため、図１１では省略されている。
【０１０１】
図示するように、まずホスト装置１がユーザ・キーＫｕを決定する。前述の通り、ユーザ・キーＫｕは、管理ユーティリティによって生成されるか、あるいはユーザからの入力を受け付けたものである。そしてホスト装置１は、ユーザ・キーＫｕを変換関数Ｆ（）で暗号化することにより、暗号化ユーザ・キーＫｕｆを生成し、これをキー保存領域６３に保持させる。
【０１０２】
引き続きホスト装置１は、平文のユーザ・キーＫｕをメモリカード２に送信すると共に、生成したユーザ・キーＫｕの登録をメモリカード２に命令する。
【０１０３】
メモリカード２は、キー変換関数Ｆ()を用いて、暗号化ユーザ・キーＫｕｆ（＝F(Ku, “Enc”)）を生成し、不揮発性メモリ７５に記憶する。そしてメモリカード２は、登録完了または登録失敗をホスト装置１に通知する。
【０１０４】
２．４  “Clear/Verify User Key”、“Enable/Disable Key Ciphering”、及び“Enable/Disable Config.Mode”機能について  
次に、“Clear User Key”機能、“Verify User Key”機能、“Enable Key Ciphering”機能、“Disable Key Ciphering”機能、“Enable Key Config.Mode”機能、及び“Disable Config.Mode”機能について説明する。“Clear User Key”機能は、登録されたユーザ・キーをメモリカード２から消去する機能である。“Verify User Key”機能は、登録されたユーザ・キーが有効か否か（正しいか否か）を確認する機能である。“Enable Key Ciphering”及び“Disable Key Ciphering”機能はそれぞれ、キー暗号化を有効及び無効にする機能である。“Enable Config.Mode”及び“Disable Config.Mode”機能はそれぞれ、コンフィギュレーション・モードをオン及びオフする機能である。
【０１０５】
２．４．１  ホスト装置１の動作について  
上記“Clear/Verify User Key”、“Enable/Disable Key Ciphering”機能、及び“Enable/Disable Config.Mode”機能実行時におけるホスト装置１の動作につき、図１２を用いて説明する。図１２はホスト装置１の処理の流れを示すフローチャートであり、これらの処理は、例えばＣＰＵ６０が主体となって行われる。
【０１０６】
図示するように、ホスト装置１のＣＰＵ６０は、メモリカード２のレジスタ７２に対する読み出し命令を発行し、メモリカード２のステータス情報を読み出す（ステップＳ６１）。実行すべき機能が“Clear User Key”または“Verify User Key”である場合（ステップＳ６２、“Clear User Key” or “Verify User Key”）、ステップＳ６３の処理に進む。そしてＣＰＵ６０は、キー暗号化が有効か無効かを確認する（ステップＳ６３）。キー暗号化が無効であれば（ステップＳ６３、ＮＯ）、ホスト装置１は、ユーザ・キーＫｕを平文のまま、ホストコントローラ６５からメモリカード２へ送信する（ステップＳ６４）。送信されたユーザ・キーＫｕは、メモリカード２のレジスタ７３に保持される。
【０１０７】
キー暗号化が有効であれば（ステップＳ６３、ＮＯ）、ステップＳ６１で読み出したステータス情報（Ｈ（）リスト）に基づき、使用する変換関数Ｈ（）を決定し、またそれに対応するコードＣｃｈを決定する。そして、変換関数Ｈ（）を用いてユーザ・キーＫｕを暗号化して、チャレンジ番号Ｎｔを算出する（ステップＳ６５）。チャレンジ番号Ｎｔは、Nt = H(Nr, Ku)によって算出される。乱数Ｎｒもまた、ステータス情報としてメモリカード２から読み出された情報である。そしてホスト装置１は、決定されたコードＣｃｈと、チャレンジ番号Ｎｔとを、ホストコントローラ６５からメモリカード２へ送信する（ステップＳ６６）。これらの情報は、メモリカード２のレジスタ７３に保持される。
【０１０８】
その後、ホスト装置１は、“Clear User Key”機能または“Verify User Key”機能の実行命令をメモリカード２に発行する。これに応答して、メモリカード２において“Clear User Key”機能または“Verify User Key”機能が実行される（ステップＳ７０）。メモリカード２における処理については、図１３を用いて後述する。
【０１０９】
メモリカード２のビジー状態が解除されると、ホスト装置１はメモリカード２における処理が完了したことを認識する。そしてホスト装置１は、メモリカード２の例えばレジスタ７２からステータス情報を読み出す（ステップＳ７１）。そしてホスト装置１は、メモリカード２での実行結果を確認する（ステップＳ７２）。その結果、メモリカード２におけるコンフィギュレーション動作が成功していれば（ステップＳ７２、Success）、ホスト装置１は、“Clear User Key”または“Verify User Key”が正常に完了したことを認識する。すなわち、“Clear User Key”機能実行時であれば、ステップＳ６４で送信されたユーザ・キーＫｕが消去されたことを認識する。他方で、“Verify User Key”機能実行時であれば、ステップＳ６４またはステップＳ６６で送信されたユーザ・キーＫｕは正しいユーザ・キーであることを認識する。
【０１１０】
他方で、ステップＳ７０においてコンフィギュレーション動作が失敗していれば（ステップＳ７２、Fail）、ホスト装置１は、“Clear User Key”または“Verify User Key”が失敗したことを認識する。すなわち、“Clear User Key”機能実行時であれば、ステップＳ６４で送信されたユーザ・キーＫｕは消去されなかったことを認識する。他方で、“Verify User Key”機能実行時であれば、ステップＳ６４またはステップＳ６６で送信されたユーザ・キーＫｕは誤ったユーザ・キーであることを認識する。
【０１１１】
実行すべき機能が“Enable Key Ciphering”、“Disable Key Ciphering”、“Enable Config.Mode”、または“Disable Config.Mode”である場合（ステップＳ６２、Others）、ユーザ・キーＫｕは不要であるので、ステップＳ６４〜Ｓ６６の処理は省略される。そして、“Enable Key Ciphering”機能または“Disable Key Ciphering”機能が実行される場合には、ＣＰＵ６０は、キー暗号化のイネーブル命令またはディセーブル命令を発行し、メモリカード２に送信する（ステップＳ６８）。他方で、“Enable Config.Mode”機能または“Disable Config.Mode”機能が実行される場合には、ＣＰＵ６０は、Config.Modeのイネーブル命令またはディセーブル命令を発行し、メモリカード２に送信する（ステップＳ６９）。
【０１１２】
これらの命令に応答してメモリカード２では、“Enable Key Ciphering”、“Disable Key Ciphering”、“Enable Config.Mode”、または“Disable Config.Mode”動作が実行される（ステップＳ７０）。これらの詳細は、図１６及び図１７で後述する。
【０１１３】
その後はステップＳ７１に進む。なお、前述の通り、キー暗号化の設定が可能なのはユーザ・キーが登録されていない場合である。よって、ユーザ・キーが登録されている場合に“Enable/Disable Key Ciphering”機能を実行しようとした場合には、その動作は失敗したものとしてメモリカード２からホスト装置１に通知される。
【０１１４】
２．４．２  “Clear/Verify User Key”のカードの動作について  
次に、上記ステップＳ７０における、“Clear/Verify User Key”機能実行時のカードの動作につき、図１３を用いて説明する。図１３は、メモリカード２の処理を示すフローチャートである。
【０１１５】
図示するように、ホスト装置１から“Clear/Verify User Key”機能の実行命令を受信すると、メモリカード２の例えばＣＰＵ７０は、キー暗号化が有効か否かを判断する（ステップＳ８１）。キー暗号化が有効であれば（ステップＳ８１、ＹＥＳ）、ＣＰＵ７０は、ホスト装置１から受信したコードＣｃｈに対応する変換関数Ｈ（）を決定し、更に変換関数Ｆ（）、不揮発性メモリ７５に保持されている暗号化ユーザ・キーＫｕｆ、及びレジスタ７２にステータス情報として保持されている乱数Ｎｒを用いて、期待値Ｎｅを算出する（ステップＳ８２）。より具体的には、期待値Ｎｅは、Ne = H(Nr, F(Kuf, “Dec”))によって算出される。引き続きＣＰＵ７０は、ホスト装置１から受信したチャレンジ番号Ｎｔと、算出した期待値Ｎｅとを比較する（ステップＳ８３）。
【０１１６】
キー暗号化が無効であれば（ステップＳ８１、ＮＯ）、ＣＰＵ７０は、変換関数Ｆ（）を用いて、受信した平文のユーザ・キーＫｕを暗号化して比較値Ｋｕｖを算出する（ステップＳ８４）。より具体的には、比較値Ｋｕｖは、Kuv = F(Ku, “Enc”)によって算出される。引き続きＣＰＵ７０は、不揮発性メモリ７５から読み出した暗号化ユーザ・キーＫｕｆと、算出した比較値Ｋｕｖとを比較する（ステップＳ８５）。
【０１１７】
比較の結果、両者が不一致であった場合（ステップＳ８６、ＮＯ）、ＣＰＵ７０は、コンフィギュレーション動作が失敗したことを示すステータス情報を、例えばレジスタ７２に格納する（ステップＳ９１）。
【０１１８】
比較の結果、両者が一致した場合（ステップＳ８６、ＹＥＳ）、ステップＳ８７の処理に進む。すなわち、実行すべき機能が“Clear User Key”であった場合（ステップＳ８７、Clear）、ステップＳ８３またはＳ８５で一致した暗号化ユーザ・キーＫｕｆを、不揮発性メモリ７５から消去する（ステップＳ８８）。消去に失敗した場合には（ステップＳ８９、ＹＥＳ）、ステップＳ９１に進む。消去に成功した場合には（ステップＳ８９、ＮＯ）、ＣＰＵ７０は、コンフィギュレーション動作が成功したことを示すステータス情報をレジスタ７２に格納する（ステップＳ９０）。実行すべき機能が“Verify User Key”であった場合には（ステップＳ８７、Verify）、ステップＳ９０に進む。
【０１１９】
その後、ＣＰＵ７０はビジー状態を解除して、コンフィギュレーション動作を終了する。
【０１２０】
２．４．３  “Clear User Key”シーケンスについて  
次に、上記“Clear User Key”機能実行時のシーケンスについて説明する。本説明は、上記２．４．１及び２．４．２における“Clear User Key”機能の説明を簡略化してまとめたものである。
【０１２１】
図１４は、キー暗号化が有効とされている場合の“Clear User key”シーケンスを示す。
【０１２２】
図示するように、まずホスト装置１は、カード情報（暗号化のプロトコル／アルゴリズム（Ｈ（）リスト）や乱数Ｎｒ）をメモリカード２から読み出す。そしてホスト装置１は、利用可能な変換関数Ｈ（）をＨ（）リストから選択し、乱数Ｎｒを用いてユーザ・キーＫｕを暗号化して、チャレンジ番号Ｎｔ（＝H(Nr, Ku)）を算出する。ここで、暗号化されるユーザ・キーＫｕは、ホスト装置１が消去を望むユーザ・キーである。更にホスト装置１は、選択したＨ（）を示すコードＣｃｇと、算出したチャレンジ番号Ｎｔとをメモリカード２に送信すると共に、ユーザ・キーＫｕの消去をメモリカード２に命令する。
【０１２３】
メモリカード２は、不揮発性メモリ７５に記憶されている暗号化ユーザ・キーＫｕｆを読み出し、変換関数Ｆ()によって解読（復号）して、平文のユーザ・キーＫｕを得る。引き続きメモリカード２は、受信したコードＣｃｇに基づいて変換関数Ｈ（）を選択し、期待値Ｎｅ（=H(Nr, F(Kuf, “Dec”))）を算出する。
【０１２４】
引き続きメモリカード２は、チャレンジ番号Ｎｔと期待値Ｎｅとを比較し、対応する暗号化ユーザ・キーＫｕｆを不揮発性メモリ７５から消去する。なお、不揮発性メモリ７５に複数の暗号化ユーザ・キーＫｕｆが記憶されている場合には、それぞれにつき期待値Ｎｅを算出し、各期待値Ｎｅとチャレンジ番号Ｎｔとを比較する。そして、複数の期待値Ｎｅのうちで、チャレンジ番号Ｎｔと一致したものに対応する暗号化ユーザ・キーＫｕｆを消去する。そしてメモリカード２は、ユーザ・キーの消去完了または消去失敗をホスト装置１に通知する。
【０１２５】
以上によって、ホスト装置１はメモリカード２に登録されているユーザ・キーを消去出来る。
【０１２６】
図１５は、キー暗号化が無効とされている場合の“Clear User key”シーケンスを示す。暗号化が無効であるというステータス情報は、ステータスレジスタ７２にあるが、すでにホスト装置１はこのレジスタを読んでいると想定しているため、図１５では省略されている。
【０１２７】
図示するように、まずホスト装置１は、平文のユーザ・キーＫｕをメモリカード２に送信すると共に、ユーザ・キーＫｕの消去をメモリカード２に命令する。
【０１２８】
するとメモリカード２は、受信した平文のユーザ・キーＫｕを、変換関数Ｆ（）を用いて暗号化して、比較値Ｋｕｖを得る。引き続きメモリカード２は、比較値Ｋｕｖと、不揮発性メモリ７５に保持される暗号化ユーザ・キーＫｕｆとを比較し、暗号化ユーザ・キーＫｕｆを不揮発性メモリ７５から消去する。そしてメモリカード２は、ユーザ・キーの消去完了または消去失敗をホスト装置１に通知する。
【０１２９】
なお、図示はしていないが、Kuv=F(Kuf, "Dec")として計算して、ＫｕｖとＫｕとを比較する方法もある。
【０１３０】
なお、“Verify User Key”機能実行の際のシーケンスは、図１４及び図１５においてＫｕｆの消去処理を省略したものに相当するので、詳細な説明は省略する。
【０１３１】
２．４．４  “Enable/Disable Key Ciphering”のカードの動作について  
次に、図１２のステップＳ７０における“Enable/Disable Key Ciphering”機能実行時のカードの動作につき、図１６を用いて説明する。図１６はメモリカード２の処理を示すフローチャートである。
【０１３２】
図示するように、ホスト装置１から“Enable Key Ciphering”機能または“Disable Key Ciphering”機能の実行命令を受信すると、メモリカード２の例えばＣＰＵ７０は、ユーザ・キーが登録されているか否かを判断する（ステップＳ１０１）。既にいずれかのホスト装置１によってユーザ・キーが登録されている場合（ステップＳ１０１、ＮＯ）、キー暗号化のオン／オフは変更出来ないため、処理はステップＳ１０６に進み、当該機能の実行は不成功となる。すなわちＣＰＵ７０は、コンフィギュレーション動作が失敗したことを示すステータス情報を、例えばレジスタ７２に格納する。
【０１３３】
ユーザ・キーが登録されていない場合（ステップＳ１０１、ＹＥＳ）、“Enable/Disable Key Ciphering”機能が実行可能である。“Enable Key Ciphering”機能の実行命令を受信した場合（ステップＳ１０２、Set Enable mode）、ＣＰＵ７０はキー暗号化を有効に設定し、その旨の情報をレジスタ７２にステータス情報として格納する（ステップＳ１０３）。“Disable Key Ciphering”機能の実行命令を受信した場合（ステップＳ１０２、Set Disable mode）、ＣＰＵ７０はキー暗号化を無効に設定し、その旨の情報をレジスタ７２にステータス情報として格納する（ステップＳ１０４）。
【０１３４】
引き続きＣＰＵ７０は、コンフィギュレーション動作が成功したことを示すステータス情報を、例えばレジスタ７２に格納する（ステップＳ１０５）。その後、ＣＰＵ７０はビジー状態を解除して、コンフィギュレーション動作を終了する。
【０１３５】
２．４．５  “Enable/Disable Config.Mode”のカードの動作について  
次に、図１２のステップＳ７０における“Enable/Disable Config.Mode”機能実行時のカードの動作につき、図１７を用いて説明する。図１７はメモリカード２の処理を示すフローチャートである。
【０１３６】
図示するように、ホスト装置１から“Enable Config.Mode”機能または“Disable Config.Mode”機能の実行命令を受信すると、メモリカード２の例えばＣＰＵ７０は、ユーザ・キーが登録されているか否かを判断する（ステップＳ１１１）。ユーザ・キーが登録されていない場合（ステップＳ１１１、ＮＯ）、メモリカード２はアンロック状態にある。従ってホスト装置１は、当該メモリカード２との間で自由にコンフィギュレーション動作を実行出来る。よって、コンフィギュレーション・モードを設定する必要が無いため、処理はステップＳ１１６に進み、当該機能の実行は不成功となる。すなわちＣＰＵ７０は、コンフィギュレーション動作が失敗したことを示すステータス情報を、例えばレジスタ７２に格納する。
【０１３７】
ユーザ・キーが登録されている場合（ステップＳ１１１、ＹＥＳ）、“Enable/Disable Config.Mode”機能が実行可能である。“Enable Config.Mode”機能の実行命令を受信した場合（ステップＳ１１２、Set Enable mode）、ＣＰＵ７０は、コンフィギュレーション・モードをオンに設定する（ステップＳ１１３）。“Disable Config.Mode”機能の実行命令を受信した場合（ステップＳ１１２、Set Disable mode）、ＣＰＵ７０は、コンフィギュレーション・モードをオフに設定する（ステップＳ１１４）。
【０１３８】
ステップＳ１１３またはＳ１１４の後、ＣＰＵ７０は、コンフィギュレーション動作が成功したことを示すステータス情報を、例えばレジスタ７２に格納する（ステップＳ１１５）。その後、ＣＰＵ７０はビジー状態を解除して、コンフィギュレーション動作を終了する。
【０１３９】
２．５  アンロック動作について  
次に、本実施形態に係るメモリシステムにおいて、ロック状態のメモリカード２をアンロック状態に遷移させるためのアンロック動作について説明する。
【０１４０】
２．５．１  アンロック動作の種類について  
本実施形態では、３種類のアンロック動作が用意されている。この点につき、図１８を用いて説明する。図１８は、３種類のアンロック動作が如何にして選択されるかを示すフローチャートである。
【０１４１】
図示するように、ユーザ・キーを知っている場合には（ステップＳ１２１、ＹＥＳ）、ユーザ・キーを用いたアンロック動作（UNLOCK(U)動作）が実行される（ステップＳ１２３）。ユーザ・キーを知っている場合とは、管理ユーティリティによって生成されたユーザ・キーＫｕがホスト装置１に正しく保持されている場合、またはユーザによって入力された正しいユーザ・キーを受け付けた場合等である。
【０１４２】
ユーザ・キーを忘れた場合であっても（ステップＳ１２１、ＮＯ）、ユーザがマスター・キーを知っていれば（ステップＳ１２２、ＮＯ）、それを用いたアンロック動作（UNLOCK(M)動作）が可能である（ステップＳ１２４）。すなわち、ユーザから正しいマスター・キーの入力を受け付けることで、UNLOCK(M)動作が実行され、メモリカード２をアンロック状態に遷移させることが出来る。但し、UNLOCK(M)動作を実行した場合には、UNLOCK(U)動作と異なり、メモリカード２に登録された全てのユーザ・キーが消去される。但し、ファイルシステム管理領域５０とファイルシステムデータ領域５１は消去されない。
【０１４３】
マスター・キーを紛失した場合（ステップＳ１２２、ＹＥＳ）、消去動作を行うことで、メモリカード２をロック状態からアンロック状態に遷移させることが可能である（ステップＳ１２５）。この場合、全てのユーザ・キーが消去されるだけでなく、管理領域５０の少なくとも一部の情報も消去される。メモリ領域５１のすべてを消去するとかなりの時間がかかってしまうため、ユーザ・データ領域の一部を消去するか、コントローラ３２が例えば論理アドレスから物理アドレスを変換するテーブルをシャッフルする方法で、データを読み出したとしても意味のないデータにすることで、データ無効化の時間を短縮する。
【０１４４】
２．５．２  ホスト装置１の動作について  
次に、上記アンロック動作の詳細につき説明する。図１９は、ユーザ・キーまたはマスター・キーを用いたアンロック動作時（UNLOCK(U)及びUNLOCK(M)動作時）におけるホスト装置１の処理を示すフローチャートである。このアンロック動作は、メモリカード２がロック状態にあり、且つコンフィギュレーション・モードがオフされている場合に実行可能である。
【０１４５】
図示するように、ホスト装置１のＣＰＵ６０は、メモリカード２のレジスタ７２に対する読み出し命令を発行し、メモリカード２のステータス情報を読み出す（ステップＳ１３１）。ステータス情報は、キー暗号化が有効か否か、また有効な場合には使用可能な暗号方式の種類を示す情報（Ｈ（）リスト）、公開鍵（Ｋｃｐ）、及び乱数（Ｎｒ）を含む。引き続きＣＰＵ６０は、読み出したステータス情報に基づいて、キー暗号化が有効か無効かを確認する（ステップＳ１３２）。
【０１４６】
キー暗号化が無効な場合（ステップＳ１３２、Not Used）、ホスト装置１は、ユーザ・キーＫｕまたはマスター・キーＫｍを平文のまま、ホストコントローラ６５からメモリカード２へ送信する（ステップＳ１３３）。
【０１４７】
キー暗号化が有効な場合（ステップＳ１３２、Used）、ホスト装置１のＣＰＵ６０は、ステップＳ１３１で読み出したＨ（）リストに基づき、使用する変換関数Ｈ（）を決定し、またそれに対応するコードＣｃｈを決定する。そして、変換関数Ｈ（）を用いて、ユーザ・キーＫｕを乱数Ｎｒで暗号化して、チャレンジ番号Ｎｔを算出する（ステップＳ１３４）。すなわち、チャレンジ番号Ｎｔは、Nt = H(Nr, Ku)によって算出される。
【０１４８】
引き続きホスト装置１は、決定されたコードＣｃｈと、算出されたチャレンジ番号Ｎｔとを、ホストコントローラ６５からメモリカード２へ送信する（ステップＳ１３３）。これらの情報は、メモリカード２のレジスタ７３に保持される。
【０１４９】
なお、使用可能な暗号方式が１種類で確定している場合には、それを識別する必要が無いので、コードＣｃｈを必ずしも送る必要は無い。また、キー暗号化が有効な場合であっても、マスター・キーの暗号化は行わないようにすることも出来る。この場合には、マスター・キーは暗号化しないことを、例えばホスト装置１とメモリカード２との間で予め取り決めをしておけば良い。この場合、実装を容易に出来るメリットがある。
【０１５０】
その後、ホスト装置１は、アンロック動作（UNLOCK(U), UNLOCK(M)）の実行命令をメモリカード２に発行する。これに応答して、メモリカード２においてアンロック動作が実行される（ステップＳ１３６）。メモリカード２における処理については、図２０を用いて後述する。
【０１５１】
メモリカード２のビジー状態が解除されると、ホスト装置１はメモリカード２における処理が完了したことを認識する。そしてホスト装置１は、メモリカード２のレジスタ７２からステータス情報を読み出す（ステップＳ１３７）。ステータス情報に含まれるステート情報が、メモリカード２はアンロック状態にあることを示していれば（ステップＳ１３８、Unlocked）、ホスト装置１はアンロック動作に成功したことを認識する。他方で、ステート情報が、メモリカード２はロック状態にあることを示していれば（ステップＳ１３８、Locked）、ホスト装置１はアンロック動作に失敗したことを認識する。
【０１５２】
２．５．３  メモリカード２の動作について  
次に、上記ステップＳ１３６におけるメモリカード２の動作につき図２０を用いて説明する。図２０は、メモリカード２における処理を示すフローチャートである。
【０１５３】
図示するように、ホスト装置１からアンロック動作（UNLOCK(U), UNLOCK(M)）の実行命令を受信すると、メモリカード２の例えばＣＰＵ７０は、当該アンロック動作がユーザ・キーを用いたアンロック動作であるか、それともマスター・キーを用いたアンロック動作であるかを判断する（ステップＳ１４１）。
【０１５４】
ユーザ・キーを用いたアンロック動作の場合（ステップＳ１４１、No: Ku or Nt）、ＣＰＵ７０は、キー暗号化が有効か否かを判断する（ステップＳ１４２）。キー暗号化が有効であれば（ステップＳ１４２、Enabled: Nt）、ＣＰＵ７０は、ホスト装置１から受信したコードＣｃｈに対応する変換関数Ｈ（）を決定し、更に変換関数Ｆ（）、不揮発性メモリ７５に保持されている暗号化ユーザ・キーＫｕｆ、及びレジスタ７２にステータス情報として保持されている乱数Ｎｒを用いて、期待値Ｎｅを算出する（ステップＳ１４３）。より具体的には、期待値Ｎｅは、Ne = H(Nr, F(Kuf, “Dec”))によって算出される。引き続きＣＰＵ７０は、ホスト装置１から受信したチャレンジ番号Ｎｔと、算出した期待値Ｎｅとを比較する（ステップＳ１４４）。
【０１５５】
比較の結果、両者が一致した場合（ステップＳ１４７、ＹＥＳ）、ＣＰＵ７０は、メモリカード２のロック状態を解除してアンロック状態にする（ステップＳ１４８）。そしてＣＰＵ７０は、その旨の情報をレジスタ７２にステータス情報として格納すると共に、ビジー状態を解除してアンロック動作を終了する。複数のユーザ・キーが登録されている場合、複数のＫｕｆがあるので、複数のＮｅを計算する必要がある。この場合、Ｎｔと一致したＮｅが対象のユーザ・キーとなる。あるキーの一致を検出したら、残りのキーについては計算・比較は省略しても良い。
【０１５６】
ステップＳ１４４の比較の結果、（すべてのＮｅについて）両者が不一致であった場合（ステップＳ１４７、ＮＯ）、ＣＰＵ７０は、メモリカード２をロック状態のまま維持させる（ステップＳ１４９）。そしてＣＰＵ７０は、ビジー状態を解除してアンロック動作を終了する。
【０１５７】
ステップＳ１４２においてキー暗号化が無効であれば（ステップＳ１４２、Disabled: Ku）、ＣＰＵ７０は、変換関数Ｆ（）を用いて、受信した平文のユーザ・キーＫｕを暗号化して期待値Ｋｕｖを算出する（ステップＳ１４５）。より具体的には、期待値Ｋｕｖは、Kuv = F(Ku, “Enc”)によって算出される。引き続きＣＰＵ７０は、不揮発性メモリ７５から読み出した暗号化ユーザ・キーＫｕｆと、算出した期待値Ｋｕｖとを比較する（ステップＳ１４６）。両者が一致すれば（ステップＳ１４７、ＹＥＳ）、ステップＳ１４８に進み、不一致であれば（ステップＳ１４７、ＮＯ）、ステップＳ１４９に進む。複数のユーザ・キーが登録されている場合、複数のＫｕｆが存在するため、これらの複数のＫｕｆと、算出したＫｕｖとが比較される。いずれかのＫｕｆがＫｕｖと一致したら、残りのキー（Ｋｕｆ）については計算・比較は省略しても良い。
【０１５８】
ステップＳ１４１において、受信したキーがマスター・キーであった場合（ステップＳ１４１、ＹＥＳ：Ｋｍ）、ＣＰＵ７０は、変換関数Ｆ（）を用いて、受信した平文のマスター・キーＫｍを変換して比較値Ｋｍｖを算出する（ステップＳ１５０）。より具体的には、比較値Ｋｍｖは、Kmv = F(Km, “Enc”)によって算出される。引き続きＣＰＵ７０は、不揮発性メモリ７５から読み出したマスター・キーの期待値Ｋｍｆと、算出した比較値Ｋｍｖとを比較する（ステップＳ１５１）。両者が一致すれば（ステップＳ１５２、ＹＥＳ）、ＣＰＵ７０は、不揮発性メモリ７５に記録されている全てのユーザ・キーＫｕｆを消去して（ステップＳ１５３）、ステップＳ１４８に進む。不一致であれば（ステップＳ１５２、ＮＯ）、ステップＳ１４９に進む。
【０１５９】
２．５．４  “UNLOCK(U)”及び“UNLOCK(M)”シーケンスについて  
次に、上記“UNLOCK(U)”及び“UNLOCK(M)”動作実行時のシーケンスについて説明する。
【０１６０】
図２１は、キー暗号化が有効とされている場合の“UNLOCK(U)”シーケンスを示す。
【０１６１】
図示するように、まずホスト装置１は、カード情報（暗号化のプロトコル／アルゴリズム（Ｈ（）リスト）や乱数Ｎｒ）をメモリカード２の例えばレジスタ７２から読み出す。そしてホスト装置１は、利用可能な変換関数Ｈ（）をＨ（）リストから選択し、乱数Ｎｒを用いてユーザ・キーＫｕを暗号化して、チャレンジ番号Ｎｔ（＝H(Nr, Ku)）を算出する。更にホスト機器１は、UNLOCK(U)コマンドを発行する。そしてホスト機器１は、選択したＨ（）を示すコードＣｃｇとチャレンジ番号Ｎｔとをメモリカード２に送信すると共に、UNLOCK(U)コマンドをメモリカード２に送信する。
【０１６２】
メモリカード２は、不揮発性メモリ７５に記憶されている暗号化ユーザ・キーＫｕｆを読み出し、変換関数Ｆによって解読（復号）して、平文のユーザ・キーＫｕを得る。引き続きメモリカード２は、受信したコードＣｃｈに基づいて変換関数Ｈ（）を選択し、期待値Ｎｅ（=H(Nr, F(Kuf, “Dec”))）を算出する。
【０１６３】
引き続きメモリカード２は、チャレンジ番号Ｎｔと期待値Ｎｅとを比較する。“Clear User Key”シーケンスの際にも説明した通り、不揮発性メモリ７５に複数の暗号化ユーザ・キーＫｕｆが記憶されている場合には、それぞれにつき期待値Ｎｅを算出し、各期待値Ｎｅとチャレンジ番号Ｎｔとを比較する。そして、いずれかの期待値Ｎｅがチャレンジ番号Ｎｔと一致すれば、メモリカード２は当該ホスト装置１を認証する。そしてメモリカード２は、ロック状態からアンロック状態に遷移する。そしてメモリカード２は、アンロック状態への遷移完了をホスト装置１に通知する。
【０１６４】
図２２は、キー暗号化が無効とされている場合の“UNLOCK(U)”シーケンスを示す。
【０１６５】
暗号化が無効であるというステータス情報は、ステータスレジスタ７２にあるが、すでにホスト装置１はこのレジスタを読んでいると想定しているため、図２２では省略されている。図示するように、まずホスト装置１はUNLOCK(U)コマンドを発行する。そして平文のユーザ・キーＫｕと共に、UNLOCK(U)コマンドをメモリカード２に送信する。
【０１６６】
するとメモリカード２は、受信した平文のユーザ・キーＫｕを、変換関数Ｆ（）を用いて暗号化して、比較値Ｋｕｖを得る。引き続きメモリカード２は、比較値Ｋｕｖと、不揮発性メモリ７５に保持される暗号化ユーザ・キーＫｕｆとを比較する。そして、いずれかのＫｕｆがＫｕｖと一致すれば、メモリカード２は当該ホスト装置１を認証する。そしてメモリカード２は、ロック状態からアンロック状態に遷移する。そしてメモリカード２は、アンロック状態への遷移完了をホスト装置１に通知する。
【０１６７】
なお、図示はしていないが、Kuv=F(Kuf, "Dec")として計算して、ＫｕｖとＫｕとを比較する方法もある。
【０１６８】
図２３は、“UNLOCK(M)”シーケンスであり、特にマスター・キーＫｍが暗号化されない場合について示している。
【０１６９】
図示するように、まずホスト装置１はUNLOCK(M)コマンドを発行する。そして平文のマスター・キーＫｍと共に、UNLOCK(M)コマンドをメモリカード２に送信する。
【０１７０】
するとメモリカード２は、受信したマスター・キーＫｍを変換関数Ｆ（）により変換して、比較値Ｋｍｖを得る。引き続きメモリカード２は、不揮発性メモリ７５に記憶されている期待値Ｋｍｆと、算出した比較値Ｋｍｖとを比較する。そして、期待値ＫｍｆがＫｍｖと一致すれば、メモリカード２は当該ホスト装置１を認証する。そしてメモリカード２は、不揮発性メモリ７５内に保持されている全てのユーザ・キーＫｕｆを消去すると共に、ロック状態からアンロック状態に遷移する。そしてメモリカード２は、アンロック状態への遷移完了をホスト装置１に通知する。
【０１７１】
なお、図示はしていないが、Kmv=F(Kmf, "Dec")として計算して、ＫｍｖとＫｍとを比較する方法もある。
【０１７２】
２．５．５  マスター・キーを紛失した場合のアンロック動作について  
次に、図１８のステップＳ１２５、すなわちマスター・キーＫｍを紛失した場合のアンロック動作について説明する。
【０１７３】
前述の通り、ユーザ・キーＫｕ及びマスター・キーＫｍの両方を紛失した場合、ユーザは、メモリカード２におけるデータの初期化を行うことで、メモリカード２をアンロック状態に遷移させることが出来る。図２４は、その際のホスト装置１及びメモリカード２における処理のシーケンスを示している。
【０１７４】
データの初期化と共にメモリカード２をアンロックする命令をユーザから受け付けたホスト装置１は、消去コマンドをメモリカード２に対して発行する。この消去コマンドは、通常のメモリデータ消去コマンドとは別に用意された、アンロックコマンドの一種である。
【０１７５】
するとメモリカード２は、不揮発性メモリ７５に記憶されている全てのユーザ・キーＫｕｆを消去する。更に、管理領域５０内のファイルシステム情報の一部を消去する。ユーザ・データ領域は、一部を消去するかデータをシャッフルするなどしてデータ無効化の時間を短縮する。重要なデータはホストがファイルを個別に暗号化しておくことで、データの漏洩は回避できる。そして、メモリカード２は、ロック状態からアンロック状態に遷移する。その後メモリカード２は、アンロック状態への遷移完了をホスト装置１に通知する。
【０１７６】
消去コマンドを受信したメモリカードは、図２のＦＡＴ１、ＦＡＴ２付近のデータを消去することで、ホスト装置１からメモリカード２のデータを読めなくする。ホスト装置１は通常このカードを「未フォーマットカード」とし識別し、カードは再フォーマットすると再び使用可能になる。メモリカード２は、あまり厳密にファイルシステム領域５０の消去を行う必要はなく、メモリ容量から、おおよそ必要な管理領域５０の大きさが予測できるので、少なくともＦＡＴ１、ＦＡＴ２を含む領域のデータを消去するか、未使用を示すＦＡＴコードを上書きすれば良い。したがってメモリカード２が、ファイルシステムのフォーマットを認識する必要はない。ファイルシステムは、ＦＡＴだけでなくビットマップで構成される場合もある。
【０１７７】
２．６  ロック動作について  
次に、本実施形態に係るメモリシステムにおいて、アンロック状態のメモリカード２をロック状態に遷移させるためのロック動作について説明する。
【０１７８】
２．６．１  ホスト装置１の動作について  
本実施形態に係るロック動作につき、まずホスト装置１における処理につき図２５を用いて説明する。図２５は、ロック動作時におけるホスト装置１の処理を示すフローチャートである。なおロック動作は、メモリカード２がアンロック状態にある際に実行可能である。
【０１７９】
まず、ホスト装置１のＣＰＵ６０は、メモリカード２のレジスタ７２のステータス情報を読み出し、メモリカード２がアンロック状態であることを確認する。その後、ＣＰＵ６０はロック命令を発行し、このロック命令をホストコントローラ６５からメモリカード２へ送信する。
【０１８０】
すると、メモリカード２においてロック動作が実行される（ステップＳ１６１）。そして、ビジー信号が解除されて、メモリカード２でのロック動作の終了が通知されると、ホスト装置１のＣＰＵ６０は、メモリカード２からステータス情報を再度読み出し（ステップＳ１６２）、ロック動作が成功したか否かを確認する（ステップＳ１６３）。
【０１８１】
ステータス情報に含まれるステート情報が、メモリカード２がロック状態にあることを示していれば、ロック動作は成功であり、そうでなければロック動作は失敗となる。
【０１８２】
２．６．２  メモリカード２の動作について  
次に、メモリカード２の動作につき説明する。図２６はメモリカード２における処理を示すフローチャートであり、図２５におけるステップＳ１６１で実行される処理内容に相当する。
【０１８３】
図示するように、メモリカード２のＣＰＵ７０は、まずユーザ・キーが登録されているか否かを判断する（ステップＳ１７１）。この判断は、不揮発性メモリ７５にユーザ・キーＫｕｆが保持されているか否かを確認することによって実行しても良いし、あるいはレジスタ７２のステータス情報から確認することによって実行しても良い。
【０１８４】
ユーザ・キーが登録されていれば（ステップＳ１７１、ＹＥＳ）、ＣＰＵ７０はメモリカード２をロック状態に遷移させる（ステップＳ１７２）。ユーザ・キーが登録されていなければ（ステップＳ１７１、ＮＯ）、ＣＰＵ７０はメモリカード２をアンロック状態に維持させる（ステップＳ１７３）。
【０１８５】
その後、レジスタ７２のステータス情報を更新すると共に、ビジー状態を解除して、ロック動作の終了をホスト装置１に通知する。
【０１８６】
３．動作の具体例について  
上記メモリシステムのユーザ・キーの登録動作の具体例につき、図２７乃至図３２を用いて説明する。図２７乃至図３２はメモリシステムの模式図であり、２つのホスト装置１−１及び１−２でユーザ・キーを登録し、その後ホスト装置１−１でアンロック動作が行われるまでの様子を順次示している。
【０１８７】
図２７に示すように、ユーザ・キーの登録されていない第１メモリカード２−１が、第１ホスト装置１−１に接続される。すると図２８に示すように、メモリカード２−１はアンロック状態にある。よってメモリカード２−１は、アンロック状態で初期化を実行し、トランスファー状態に遷移する。次に第１ホスト装置１−１は、コンフィギュレーション動作の“Set User Key”機能を実行して、第１ユーザ・キーＫｕ１を登録する。第１ホスト装置１−１は登録した第１ユーザ・キーＫｕ１を暗号化し、暗号化第１ユーザ・キーＫｕf１（=F(Ku1, "Enc")）を第１ホスト装置１−１のレジスタ６３に保持し、またメモリカード２−１が暗号化した暗号化第１ユーザ・キーＫｕｆ１が、メモリカード２−１の不揮発性メモリ７５に保持される。引き続き第１ホスト装置１−１は、第２ホスト装置１−２でユーザ・キーを登録するため、コンフィギュレーション動作の“Enable Config.Mode”機能を実行して、コンフィギュレーション・モードをオンにする。
【０１８８】
次に図２９に示すように、メモリカード２−１が第２ホスト装置１−２に接続される。すると図３０に示すように、メモリカード２−１にはユーザ・キーＫｕ１が登録されているので、メモリカード２−１はロック状態にある。よってメモリカード２−１は、ロック状態で初期化を実行し、トランスファー状態に遷移する。メモリカード２−１がトランスファー状態に遷移することで、ロック状態にあるにも関わらず、第２ホスト装置１−２はファイルシステム情報の少なくとも一部を読み出すことが出来る。そのため、第２ホスト装置１−２はメモリカード２−１を認識することができ、ドライブとしてドライブレターを割り当てることが出来る。またメモリカード２−１はコンフィギュレーション・モードがオンとされているので、第２ホスト装置１−２はコンフィギュレーション動作を実行することが出来る。従って第２ホスト装置１−２は、コンフィギュレーション動作の“Set User Key”機能を実行して、第２ユーザ・キーＫｕ２を登録する。第２ホスト装置１−２は、登録した第２ユーザ・キーＫｕ２を暗号化し、暗号化第２ユーザ・キーＫｕｆ２（=F (Ku2, "Enc")）を第２ホスト装置１−２のレジスタ６３に保持し、またメモリカード２−１によって暗号化した暗号化第２ユーザ・キーＫｕｆ２が、メモリカード２−１の不揮発性メモリ７５に保持される。第２ユーザ・キーＫｕ２は、第１ユーザ・キーＫｕ１と同じでも異なっていても良い。通常第１ホスト装置１−１と第２ホスト装置１−２の間で情報交換ができない場合、異なるキーが用いられる(同じキーにするのが難しい)。引き続き第２ホスト装置１−２は、コンフィギュレーション動作の“Disable Config.Mode”機能を実行して、コンフィギュレーション・モードをオフにする。
【０１８９】
次に図３１に示すように、メモリカード２−１が第１ホスト装置１−１に接続される。すると図３２に示すように、ユーザ・キーＫｕ１及びＫｕ２が登録されているので、メモリカード２−１はロック状態にある。但し、第２ホスト装置１−２と同様に、第１ホスト装置１−１は、ロック状態にあるメモリカード２−１をドライブとして認識することが出来る。そして第１ホスト装置１−１は、レジスタ６３に保持したユーザ・キーＫｕ１を用いてアンロック動作を行い、メモリカード２−１をロック状態からアンロック状態に遷移させる。メモリカード２−１は、登録されている２つのユーザ・キーと比較し、どちらか一方が一致した場合(この場合はＫｕ１)にアンロック状態にする。この結果、ユーザはメモリカード２−１に自由にアクセス出来るようになる。
【０１９０】
図３２において、もしユーザ・キーＫｕ１がレジスタ６３から失われており、ユーザ・キーＫｕ１を用いたアンロック動作が実行できない場合には、マスター・キーＫｍを用いたアンロック動作が実行可能である。この場合、メモリカード２−１に保持されている２つのユーザ・キーＫｕｆ１及びＫｕｆ２は、いずれも消去される。
【０１９１】
図３３は、第２のメモリカード２−２を第１ホスト装置１−１で登録する場合を示す。第１ホスト装置１−１は、メモリカード２−２の固有情報を用いて（例えばシリアルナンバーなどを用いる。メモリカードにはシリアルナンバーを読むコマンドが用意されている）、カードを識別することができる。したがって第１ホスト装置１−１は、第１のメモリカード２−１と、第２のメモリカード２−２の識別が可能であり、それぞれに対して異なるユーザ・キーＫｕを割り当てることができる。またホスト装置は、メモリカードの固有情報で識別すれば、どちらのキーを使ってアンロック状態にすれば良いかが識別できる。
【０１９２】
４  本実施形態に係る効果  
本実施形態に係るメモリシステムであると、メモリカードの利便性を向上させ、またセキュリティレベルを向上させることが出来る。本効果につき、以下に詳細に説明する。
【０１９３】
４．１  ロック状態でもメモリカードをドライブとしてマウント出来る。  
本実施形態に係るメモリカードであると、上記１．４の項で説明したように、ロック状態であっても、ファイルシステム情報の読み出しが可能とされている。従ってホスト装置１は、ロック状態のメモリカード２を認識することができ、ドライブとしてドライブレターを割り当てることが出来る。すなわち、ドライブとして認識するためにわざわざアンロック動作を実行する必要が無い。よって、メモリカード２をドライブとしてマウントする手順を簡略化出来、ユーザの利便性を向上出来る。
【０１９４】
４．２  初期化シーケンスの共通化  
また本実施形態に係るメモリシステムであると、上記２．１の項で述べたように、メモリカード２の初期化シーケンスが完了して、メモリカード２がトランスファー状態に遷移した後に、ロック動作またはアンロック動作が実行される。つまり、初期化シーケンスと、ロック／アンロック動作とが完全に分離され、先に初期化シーケンスが実行される。例えば、従来はロック状態でバス幅を1-bitから4-bitに切り替えることができないため、アンロック状態になるまで転送モードを設定できないという問題があったが、このような問題が解決される。さらに本実施形態では、制御コマンドはロック状態かアンロック状態にあるかに関わらず実行可能にしておく。
【０１９５】
従って、ロック／アンロック機能を備えたメモリシステムと、そうでないメモリシステムとで、初期化シーケンスを共通化することが出来る。従って、メモリシステムの設計が容易となる。更に、ユーザは、メモリカード２がロック／アンロック機能を備えているか否かを考慮することなく、あらゆるホスト装置１でメモリカード２を使用出来るようになり、ユーザの利便性を向上出来る。
【０１９６】
また、図１０を用いて説明したように、ユーザ・キーの登録処理は、大まかには３ステップで完了する。すなわち、メモリカード２から各種情報を読み出すこと、メモリカード２にユーザ・キーを送信すること、及び登録完了をホスト装置１に通知すること、の３ステップである。よって、処理を非常に簡便にすることが出来る。
【０１９７】
４．３  セキュリティレベルの高度化  
更に本実施形態に係るメモリシステムであると、ユーザ・キーは、暗号化された状態でホスト装置１とメモリカード２との間で送受信されることが出来る。更に、使用される関数に関する情報は、関数そのものを示す情報では無く、いずれの関数が選択されたかを示すコードＣｃｈ及びＣｃｇである。従って、これらの情報が漏洩したとしても、不正なホスト装置によるなりすましを防止し、耐タンパー性を向上してセキュリティレベルを向上出来る。
【０１９８】
また、ユーザ・キーＫｕは、上記１．５．２の項で説明したように、管理ユーティリティによって生成出来る。管理ユーティリティは、ＣＰＵ６０によって実行されることで、ユーザ・キー生成手段として機能する。そして管理ユーティリティは、ホスト装置１に固有であり且つ人間が手入力では入力不可能なレベルのパスワード長で、ユーザ・キーを生成出来る。基本的に、パスワードのセキュリティレベルは、そのパスワード長に大きく依存する。従って、管理ユーティリティを用いることで、従来に比べて格段にセキュリティレベルを向上出来る。
【０１９９】
更に、ユーザ・キーは、ホスト装置毎、及びメモリカード毎に個別に設定することが出来る。この点も、セキュリティレベルの向上に資する。
【０２００】
また、管理ユーティリティを用いることで、メモリカード２がホスト装置１に接続される度にユーザにパスワード入力を求める必要が無い。すなわち、ホスト装置１とメモリカード２との間で自動認証が行われ、ロック状態のメモリカード２は、それが認証されれば自動的にアンロック状態となる。よって、ユーザは、メモリカード２がロック状態であったことを認識することなく、メモリカード２をホスト装置１に接続した直後から、自由にメモリカード２にアクセスすることが出来る。この点でも、ユーザの利便性は向上出来る。また、ひとつのホスト装置で複数のカードのユーザ・キーを管理することもできる。この場合、メモリカードの固有情報、例えばシリアルナンバーを読みだしてカードを識別し、シリアルナンバーとユーザ・キーを対応させて管理する。
【０２０１】
４．４  パスワード喪失対策  
本実施形態に係るメモリシステムによれば、まずユーザ・キーＫｕが用意されている。そしてユーザ・キーを登録することで、メモリカード２のロック動作が可能となる。更に、複数のユーザ・キーの登録を可能とすることで、複数のホスト装置１に使用権を設定出来る。そして、ロック状態のメモリカード２をアンロック状態に遷移させるためにも、ユーザ・キーは使用される。
【０２０２】
そして、ユーザ・キーが失われてしまった場合に備えて、本実施形態では、マスター・キーＫｍが用意されている。マスター・キーＫｍは、例えばメモリカード２の出荷時に設定され、ユーザによって変更することが禁止されている。そしてマスター・キーを用いることで、それまでに登録されていた全てのユーザ・キーを消去しつつ、メモリカード２をアンロック状態に遷移させることが出来る。例えば、メモリ出荷時にマスター・キーはプログラムされ、印刷された状態で販売される。ユーザは、マスター・キーは持ち歩かずに家に保管しておけば、通常の使用環境においてセキュリティ的な問題はない。
【０２０３】
４．５  フォースイレーズ期間の短縮  
更に、上記２．５．５の項で説明したように、ユーザ・キーもマスター・キーも失われてしまった場合には、消去動作を実行することによって、メモリカード２をアンロック状態に遷移させることが出来る。
【０２０４】
この際メモリカード２は、ユーザ・キーの全てと、ファイルシステム情報の一部とを不揮発性メモリ７５から消去する。ユーザ・データ領域の一部を消去するか、データをシャッフルすることにより、ユーザ・データ領域の無効化時間を短縮化し、ホスト装置１が長時間にわたってフリーズ状態となることを防止出来る。なお、この場合にメモリカード２を利用可能とするにはフォーマットが必要である。ユーザ・データ領域は完全に消去されない状態で残っているが、個々のデータは、例えばユーザによる個別の暗号化によって保護され得る。
【０２０５】
４．６  コンフィギュレーション動作の拡張
コンフィギュレーション動作コマンドを拡張することで、例えば特定のユーザ・キーでアンロック状態にした場合は、リードのみ許可し、ライトはできないという設定を追加することができる。
【０２０６】
５．変形例等  
以上のように、上記実施形態に係るデバイス、ホスト装置、ホストシステム、及びメモリシステムによれば、ユーザの利便性を向上出来る。
【０２０７】
なお、上記実施形態は唯一の実施形態では無く、種々の変形が可能である。すなわち、上記一実施形態は複数の態様を含んでおり、その一部のみが実施されても良い。
【０２０８】
５．１  第１の変形例  
まず、第１の変形例について説明する。図３４は、本変形例に従ったメモリシステムのブロック図である。図示するように、本変形例に係る構成は、図５に対して、ファームウェアが有効フラグ（Valid flag）を備える。有効フラグとは、不揮発性メモリ７５の中のユーザ・データ領域(外部からアクセス可能な領域)のデータが有効であるか無効であるかを示す情報である。
【０２０９】
有効フラグについて、図３５を用いて説明する。図３５は、メモリカード２におけるファームウェア７１及び不揮発性メモリ７５の中のユーザ・データ領域の模式図である。図３５では、ブートセクタとして、前述したＭＢＲ及びＢＰＢを図示している。
【０２１０】
図示するように、不揮発性メモリ７５において、外部からアクセス可能なユーザ・データ領域（ファイルシステム管理領域５０及びファイルシステムデータ領域５１）は、複数の管理ユニット（management unit）ＭＵ（ＭＵ１〜ＭＵｎ）に分割されて管理される。ｎは２以上の自然数である。データの読み出し及び書き込みは、この管理ユニット単位で行われる。１つの管理ユニットは、１つまたは複数の物理ユニットに対応する。
【０２１１】
そしてメモリカード２は、管理ユニットＭＵ毎に有効フラグＶＦ（ＶＦ１〜ＶＦｎ）を備える。有効フラグＶＦは、例えば不揮発性メモリ等、電源が切断されてもデータが保持される領域に保存される。そして有効フラグＶＦは、対応する管理ユニットＭＵが、有効な値を保持しているか否か、換言すれば、対応する管理ユニットＭＵに保持されているデータが、ホスト装置１によって消去対象とされたか否かを示す。
【０２１２】
図３６は、ホスト装置１から消去、書き込み、または読み出しアクセスを受信した際のメモリカード２の動作を示すフローチャートである。これらの動作は、主としてＣＰＵ７０の制御によって実行される。
【０２１３】
図示するように、ホスト装置１からのアクセスがデータの消去命令であった場合（ステップＳ１８０、ＹＥＳ）、ＣＰＵ７０は、マスター・キーの認証動作を実行する（ステップＳ１８１）。この認証処理は、例えば図２３で説明した処理と同様である。すなわち、例えばメモリカード２はホスト装置１に対してマスター・キーの入力を求める。これに応答してホスト装置１は、平文のマスター・キーＫｍをメモリカード２に送信する。するとメモリカード２は、受信したマスター・キーＫｍを変換関数Ｆ（）により変換して、比較値Ｋｍｖを得る。引き続きメモリカード２は、不揮発性メモリ７５に記憶されている期待値Ｋｍｆと、算出した比較値Ｋｍｖとを比較する。そして、期待値ＫｍｆがＫｍｖと一致すれば、メモリカード２は当該マスター・キーＫｍを認証する。
【０２１４】
マスター・キーが認証されれば（ステップＳ１８２、ＹＥＳ）、ＣＰＵ７０は、有効フラグＶＦの全てを“０”にセットする（ステップＳ１８３）。但し、不揮発性メモリ７５の管理ユニットＭＵに保持されている実際のデータそのものは消去されない。なお、ここで述べられる「消去」は、以前に記録されたユーザ・データの消去に対するものであり、不揮発性メモリの消去コマンドを実行するかどうかにつき述べているわけではない。
【０２１５】
マスター・キーの認証に失敗すれば（ステップＳ１８２、ＮＯ）、消去は行われず（ステップＳ１８４）、例えばステータスエラーがホスト装置１に送信される。
【０２１６】
次に、ホスト装置１からのアクセスが書き込み命令であった場合について説明する（ステップＳ１８０、ＮＯ、ステップＳ１８５、ＹＥＳ）。この場合、ＣＰＵ７０は、アクセス対象とされた管理ユニットＭＵに対応する有効フラグＶＦを確認する（ステップＳ１８６）。有効フラグＶＦが“０”であれば、当該管理ユニットＭＵは、ホスト装置１から見た場合、データが消去済みであることを意味する（実際には、管理ユニットＭＵ内にデータは残っている）。従ってＣＰＵ７０は、この管理ユニットＭＵ内のデータを実際に消去する（ステップＳ１８７）。そしてＣＰＵ７０は、ホスト装置１から受信した書き込みデータを、当該管理ユニットＭＵに書き込み（ステップＳ１８８）、対応する有効フラグＶＦを“１”に設定する（ステップＳ１８９）。
【０２１７】
ステップＳ１８６において、有効フラグＶＦが“１”であれば、消去は不要であり、対応する管理ユニットＭＵ内にデータを書き込む（ステップＳ１９０）。有効フラグＶＦは“１”のままである。
【０２１８】
次に、ホスト装置１からのアクセスが読み出し命令であった場合について説明する（ステップＳ１８０、ＮＯ、ステップＳ１８５、ＮＯ）。この場合、ＣＰＵ７０は、アクセス対象とされた管理ユニットＭＵに対応する有効フラグＶＦを確認する（ステップＳ１９１）。有効フラグＶＦが“０”であれば（ステップＳ１９１、ＹＥＳ）、ＣＰＵ７０は不揮発性メモリ７５からデータを読み出すことなく、所定の固定データ（全ビットが“１”であるデータ、または全ビットが“０”であるデータ）をホスト装置１に出力する（ステップＳ１９２）。
【０２１９】
他方、有効フラグＶＦが“１”であれば（ステップＳ１９１、ＮＯ）、ＣＰＵ７０は不揮発性メモリ７５の対応する管理ユニットＭＵからデータを読み出し、これをホスト装置１へ出力する（ステップＳ１９３）。
【０２２０】
以上の構成によれば、消去動作を行うには、マスター・キーの認証にパスしなければならない。これにより、メモリカード２の所有者では無い人間によってメモリカード２が初期化されることを防止出来る。(図１８のフローチャートでは、マスター・キーを忘れた場合に、Erase Operationにより、消去できるという実施形態であるが、本変形例は、消去の許可にマスター・キーを使っているところが異なる。)
また本変形例によれば、データの消去命令を受信した場合、不揮発性メモリ７５内に保持されている実際のデータを消去しない。その代わりＣＰＵ７０は、有効フラグＶＦによって、消去対象とされたデータを管理する。このように、実際のデータの消去動作が不要となるため、メモリカード２の動作速度を向上出来る。また、データの読み出し要求を受けた際には、ＣＰＵ７０はまず有効フラグＶＦを参照する。そして、ＶＦ＝“０”であった場合には、不揮発性メモリ７５からデータを読み出すことなく、固定データを出力する。従って、実際のデータが不揮発性メモリ７５に残っていたとしても、このデータが誤って読み出されることを防止出来る。
【０２２１】
また例外的に、ＭＢＲやＢＰＢは有効フラグＶＦの値に関わらず、データが読める実装とすることが好ましい。この場合、ファイルシステム管理領域５０の先頭部分あるいは一部領域についての有効フラグは、常に“１”とするか、または有効フラグによる管理対象外とする。
【０２２２】
５．２  その他の変形例  
変形例は、上記に限られるものでも無い。例えば、ロック状態でファイルシステム情報の一部を読みだし可能な態様のみが実施されても良い。また、コンフィギュレーション動作には７つの機能が含まれる場合を例に説明したが、それらのうちの一部のみが実施される場合であっても良い。
【０２２３】
また、ホスト装置１とメモリカード２との間で、使用される暗号化方式が１種類に予め決められていれば、コードＣｃｈやＣｃｇを送信する必要は無く、またメモリカードがＧｈ（）リスト及びＨ（）リストを保持する必要も無い。更に、暗号化方式は上記実施形態で説明したものに限らず、その他の種々の方式を適用することが出来る。
【０２２４】
更に、メモリカード２が各種動作の終了をホスト装置１に通知する手段はビジー信号に限られず、その他の信号を用いても良い。ビジーが完了したタイミングで、カードからホストにパケットを送ることで通知することもできる。
【０２２５】
また、コンフィギュレーション動作におけるユーザ・キーの扱いに関しては、登録・消去・確認の３種類を例に挙げたが、ユーザ・キーの変更機能が含まれても良い。この場合、ホスト装置１が、変更対象となるユーザ・キーを用いて認証動作を行った後、ホスト装置１が新たなユーザ・キーと共に変更命令を発行すれば良い。新たなユーザ・キーは、管理ユーティリティによって生成されても良いし、ユーザによって入力されても良く、また暗号化される場合であっても良いし、暗号化されない場合であっても良い。
【０２２６】
また、上記実施形態ではメモリデバイスとしてＳＤメモリカードを例に挙げて説明した。しかし、メモリデバイスはＳＤメモリカードに限らず、あらゆる記憶媒体であって良い。そして、ホスト装置１に接続されるデバイスは１つでは無く、同時に２つ以上のデバイスが接続可能な場合であっても良い。この場合、ホスト装置１は、各デバイスと個別にユーザ・キーの登録動作を行う。更に、ファイルシステムもＦＡＴファイルシステムに限定されるものでは無い。メモリカード２は、ファイルシステムを識別する必要はなく、ロック状態で限定的に読み出せる領域や、消去コマンドで消去する領域は、メモリ容量から予測した領域を用いることができる。領域の決定にあまり厳密さは要求されない。
【０２２７】
更に、上記実施形態で説明したフローチャート及びシーケンス図は、可能な限り順番を入れ替えることが出来、また複数の処理を同時に実行することが出来る。また、ホスト装置１及びメモリカード２の取りうる構成は、図１及び図５の構成に限らず、上記実施形態で説明した機能を実現出来る構成であれば、ハードウェアとソフトウェアとを限らず、限定されるものでは無い。
【０２２８】
上記実施形態は、以下の態様を含む。  
[1]外部からアクセス可能な第１、第２領域を有する半導体メモリ(31 in 図1)と、  
前記半導体メモリを制御するコントローラ(32 in 図1)と  
を具備し、前記第１領域と第２領域からの読み出しが許可されるアンロック状態と、前記第１領域からの読み出しが許可され、第２領域からの読み出しが禁止されるロック状態とを有するデバイスであって、  
前記第１領域は、ファイルシステム情報(FAT and DIR entry in 図2)の少なくとも一部を格納する領域であり、  
前記ロック状態において、前記ファイルシステム情報の少なくとも一部は、外部から読み出し可能とされる(図3)デバイス。  
[2]前記半導体メモリは、該デバイスに登録されたユーザ・キーが第１暗号関数(F() in図9)によって暗号化されて生成された少なくとも１つの暗号化ユーザ・キー(Kuf in 図5, 9)を保持可能とされ、  
前記ユーザ・キーが登録されている場合、前記コントローラは、電源投入直後において前記ロック状態で初期化を行い(図30)、  
前記ユーザ・キーが登録されていない場合、前記コントローラは、電源投入直後において前記アンロック状態で初期化を行い(図28)、  
前記初期化は、前記ユーザ・キーが登録されている場合とされていない場合とで、同一のシーケンスにより実行され(図6)、  
前記初期化は、ホストとカードを接続する複数のバス転送モードの任意のひとつを選択し、  
前記ロック状態において前記ファイルシステム情報の少なくとも一部は、前記デバイスの初期化の後に、外部からアクセス可能とされる(図3)[1]記載のデバイス。  
[3]前記アンロック状態では、コンフィギュレーション動作により、ユーザ・キーの登録、変更、及び消去が可能とされ、且つ前記第１、第２領域の両方への読み出しが許可され (図3)、  
前記ロック状態は第１モード(Config.Mode On)と第２モード(Config.Mode Off)とを備え、前記第１モードではコンフィギュレーション動作により、前記ユーザ・キーの登録、変更、及び消去が許可され、前記アンロック状態への移行は禁止され、前記第２モードでは、前記ユーザ・キーの登録、変更、及び消去が禁止され、前記アンロック状態への移行が可能となる(図4)[1]または[2]記載のデバイス。  
[4]前記コントローラは、外部から受信したキーと、該デバイスに登録されたユーザ・キーとを比較し(S144, S146 in 図20)、  
前記比較結果が一致した際に、前記デバイスは前記ロック状態から前記アンロック状態に移行する(S148 in 図20)[1]乃至[3]記載のデバイス。  
[5]前記半導体メモリは、予め登録されると共に前記コンフィギュレーション動作では変更されないマスター・キー(Kmf in 図5)を保持し、  
前記コントローラは、外部から受信したキーと、前記マスター・キーとを比較し(S151 in 図20)、前記比較結果が一致した際に、前記ユーザ・データ領域を消去することなく、前記登録されたユーザ・キーを消去し(S153 in 図20)、前記デバイスは前記ロック状態から前記アンロック状態に移行する(S148 in 図20)[4]記載のデバイス。  
[6]前記デバイスには、前記ロック状態と前記アンロック状態との間を遷移する際に用いられるユーザ・キーが登録可能とされ、  
前記ユーザ・キーが登録されていない場合、前記コントローラは、キー暗号化の有効／無効を設定する機能を有し、前記ユーザ・キーが登録されると、前記設定が固定され(図16)、  
前記コントローラは、前記キー暗号化に使用可能な第２暗号関数(Gc()in 図8)と第３暗号関数(H() in 図20)とを有し、  
前記第２暗号関数(Gc()in 図8)は前記ユーザ・キーの登録に使用され、前記第３暗号関数(H() in 図20)は前記ユーザ・キーの認証に使用され、  
前記ユーザ・キーは、前記第２または第３暗号関数で暗号化されて、外部から前記デバイスに送信される(図10, 14)[1]または[2]記載のデバイス。  
[7]前記デバイスには、前記ユーザ・キーを消去する際に認識に用いられるマスター・キーが登録可能とされ、  
前記キー暗号化が有効に設定されている場合であっても、前記マスター・キーは暗号化されることなく前記デバイスに送信される(図23)[6]記載のデバイス。  
[8]ロック状態とアンロック状態を有するデバイスにアクセス可能なホスト装置であって、  
ユーザ・キーを保持可能なホストメモリ(63 in 図5)と、  
前記デバイスを制御するホストコントローラ(60, 65 in 図5)と  
を具備し、前記ホストコントローラは、前記デバイスを初期化した後、前記デバイスがロック状態であるかアンロック状態であるかに関わらず、前記デバイスからファイルシステム情報の少なくとも一部を読み出すことにより、該デバイスがフォーマット済みのメモリデバイスであることを認識し、  
前記ホストコントローラは、前記デバイスを初期化した後、前記デバイスが前記ロック状態であるかアンロック状態であるかを確認し、  
前記ロック状態である場合、前記ユーザ・キーを前記デバイスに送信することにより、前記デバイスを前記アンロック状態に遷移させるホスト装置。  
[9]前記ファイルシステム情報の少なくとも一部が読み出され、且つ前記デバイスがフォーマットされたメモリデバイスとして認識された場合、  
前記デバイスに対して、ドライブとしてドライブ番号が割り当られることにより、ドライブとして前記デバイスをアクセスするアプリケーションからのアクセスが可能とされる [8]記載のホスト装置。  
[10]前記ホストコントローラは、前記ユーザ・キーを前記デバイスに送信する際、前記デバイスがサポートする第３暗号関数のいずれかを選択し、該暗号関数(H() in 図19)を用いて暗号化して送信する(S134-135 in 図19)[8]または[9]記載のホスト装置。  
[11]前記ホストコントローラは、前記ユーザ・キーを生成し、該生成したユーザ・キーを変換関数(F() in 図10)により暗号化することにより得られた暗号化ユーザ・キー(Kuf in 図5)を、前記ホストメモリ(63 in 図5)に不揮発に保持させ、  
前記暗号化ユーザ・キーを前記ホストメモリに保持させた後、前記ユーザ・キーを前記デバイスに送信する(図6)[10]記載のホスト装置。  
[12]前記ホストコントローラは、前記第１及び第２領域を、複数の単位領域の集合として管理し、前記単位領域毎にフラグによって領域管理し、  
外部からデータの消去命令を受信した際、前記コントローラは、前記第２領域内のデータを消去することなく、前記フラグを、データが消去されたことを示す旨の値にセットする[1]のデバイス。  
[13]前記コントローラは、前記消去命令を受信した際、前記外部に対してマスター・キーの認証を要求し、  
前記マスター・キーが認証された場合に、前記フラグをセットする[12]のデバイス。  
[14]前記コントローラは、外部からデータの書き込み命令を受信した際、前記フラグを確認し、前記フラグがセットされている場合には、前記第２領域において、対応する領域内のデータを消去した後に、データを該領域に書き込む[12]のデバイス。  
[15]前記コントローラは、外部からデータ読み出し命令を受信した際、前記フラグを確認し、前記フラグがセットされている場合には、固定データを外部に出力する[12]のデバイス。  
[16]上記[8]記載のホスト装置を含む第１ホスト装置(1-1 in 図27)と、  
上記[8]記載のホスト装置を含む第２ホスト装置(1-2 in 図27)と  
を具備するホストシステムであって、  
前記第１ホスト装置は、前記デバイスに第１ユーザ・キーを設定すると共に、前記ロック状態でも前記ユーザ・キーを登録可能なモード(Config.Mode in 図27)をイネーブルに設定し(図28)、  
前記第２ホスト装置は、前記第１ホスト装置によって前記モードをイネーブルとされた前記デバイスを初期化すると共に、第２ユーザ・キーを設定し、更に前記モードをディセーブルとし(図30)、  
前記デバイスは、前記モードがディセーブルとされることで、前記ロック状態から前記アンロック状態への遷移が可能とされる(図32)ホストシステム。  
[17]前記第１、第２ユーザ・キーが設定されたデバイスは、該第１、第２ユーザ・キーを用いた認証動作によって、それぞれ前記第１、第２ホスト装置によって使用可能とされる[16]記載のホストシステム。  
[18]上記[1]記載のデバイス(2 in 図5)と、  
上記[8]記載のホスト装置(1 in 図5)と  
を具備するシステムであって、前記ユーザ・キーが登録される際、  
前記ホスト装置は、前記ユーザ・キーを生成し、該ホスト装置の第１暗号関数F()で暗号化して前記ホスト装置の前記ホストメモリに保存し、且つ前記ユーザ・キーを、第２暗号関数(Gh() in 図10)と公開鍵(Kcp in 図10)とを用いて暗号化し、  
前記デバイスは、前記第２暗号関数と公開鍵とを用いて暗号化されたユーザ・キーを、復号関数(Gc in 図10)と秘密鍵(Kcs in 図10)を用いて復号し、前記復号化されたユーザ・キーを、前記デバイスの第１暗号関数(F() in 図10)で暗号化して、前記半導体メモリに保存するメモリシステム。  
[19]前記ホスト装置は、該ホスト装置の前記ホストメモリに保持された暗号化ユーザ・キー(Kuf in 図5)を、変換関数(F() in 図5)を用いて復号することにより前記ユーザ・キーを得、  
前記デバイスは、該デバイスの前記半導体メモリに保持された暗号化ユーザ・キー(Kuf in 図5)を、該デバイスの第１暗号関数F()を用いて復号することによりユーザ・キーを得る(Ku=F(Kuf, Dec” in 図21)[18]記載のメモリシステム。  
[20]上記[1]記載のデバイス(2 in 図5)と、  
上記[8]記載のホスト装置(1 in 図5)と  
を具備するシステムであって、前記ユーザ・キーが認証される際、  
前記ホスト装置は、前記ユーザ・キーを、第３暗号関数(H() in 図21)と、前記デバイスが提供する(Nr in 図21)乱数とを用いて暗号化し、  
前記デバイスは、前記第３暗号関数(H() in 図21)と、前記乱数(Nr in 図21)と、前記半導体メモリに保持された暗号化ユーザ・キー(Kuf in 図21)とを用いて、前記ホスト装置によって暗号化されたユーザ・キー(Nt in 図21)を認証し、  
前記認証に成功した場合に、前記デバイスは前記ロック状態から前記アンロック状態に遷移する(図21)メモリシステム。
【０２２９】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【０２３０】
１、１−１、１−２…ホスト装置、２…メモリカード、１１…ＭＰＵ、１２、４１、７６…ホストインターフェース回路、１３…ＲＡＭ、１４…ＲＯＭ、３１、７５…ＮＡＮＤ型フラッシュメモリ、３２…コントローラ、４２…ＭＰＵ、４３…ＲＯＭ、４４…ＲＡＭ、４５…ＮＡＮＤインターフェース回路、４６、６３、７２、７３…レジスタ、５０…ファイルシステム管理領域、５１…ファイルシステムユーザ領域、６０、７０…ＣＰＵ、６１、７１…ファームウェア、６２、６４、７４…ワークエリア、６５…ホストコントローラ
【図１】
2015026358.tif 000003
【図２】
2015026358.tif 000004
【図３】
2015026358.tif 000005
【図４】
2015026358.tif 000006
【図５】
2015026358.tif 000007
【図６】
2015026358.tif 000008
【図７】
2015026358.tif 000009
【図８】
2015026358.tif 000010
【図９】
2015026358.tif 000011
【図１０】
2015026358.tif 000012
【図１１】
2015026358.tif 000013
【図１２】
2015026358.tif 000014
【図１３】
2015026358.tif 000015
【図１４】
2015026358.tif 000016
【図１５】
2015026358.tif 000017
【図１６】
2015026358.tif 000018
【図１７】
2015026358.tif 000019
【図１８】
2015026358.tif 000020
【図１９】
2015026358.tif 000021
【図２０】
2015026358.tif 000022
【図２１】
2015026358.tif 000023
【図２２】
2015026358.tif 000024
【図２３】
2015026358.tif 000025
【図２４】
2015026358.tif 000026
【図２５】
2015026358.tif 000027
【図２６】
2015026358.tif 000028
【図２７】
2015026358.tif 000029
【図２９】
2015026358.tif 000030
【図３１】
2015026358.tif 000031
【図３３】
2015026358.tif 000032
【図３４】
2015026358.tif 000033
【図３５】
2015026358.tif 000034
【図３６】
2015026358.tif 000035
【図２８】
2015026358.tif 000036
【図３０】
2015026358.tif 000037
【図３２】
2015026358.tif 000038