(57)【要約】【課題】  ストレージへのアクセスに対するセキュリティを強化できるメモリシステムを実現する。【解決手段】  実施形態によれば、メモリシステムは、不揮発性メモリと、前記不揮発性メモリと電気的に接続されるコントローラとを具備する。前記コントローラは、第１ホストから認証要求コマンドを受け付け、前記認証要求コマンドに含まれる認証情報を用いた前記第１ホストの認証が成功した場合、前記第１ホストに第１認証子を送信する。前記コントローラは、第２ホストから前記不揮発性メモリにアクセスするためのアクセスコマンドを受け付けた場合、前記アクセスコマンドに含まれる第２認証子が前記第１認証子と一致するならば、前記アクセスコマンドに応じた前記不揮発性メモリへのアクセスを許可し、前記第２認証子が前記第１認証子と一致しないならば、前記アクセスコマンドに応じた前記不揮発性メモリへのアクセスを禁止する。【選択図】図２
2020119298.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリと、
前記不揮発性メモリと電気的に接続され、複数のホストによってそれぞれ送信されるコマンドを受け付け、前記不揮発性メモリに書き込まれるデータを暗号化し、前記不揮発性メモリから読み出されたデータを復号するように構成されるコントローラとを具備し、
前記コントローラは、
第１ホストから認証要求コマンドを受け付け、前記認証要求コマンドに含まれる認証情報を用いた前記第１ホストの認証が成功した場合、前記第１ホストに第１認証子を送信し、
第２ホストから前記不揮発性メモリにアクセスするためのアクセスコマンドを受け付けた場合、前記アクセスコマンドに含まれる第２認証子が前記第１認証子と一致するならば、前記アクセスコマンドに応じた前記不揮発性メモリへのアクセスを許可し、前記第２認証子が前記第１認証子と一致しないならば、前記アクセスコマンドに応じた前記不揮発性メモリへのアクセスを禁止するように構成されるメモリシステム。
【請求項２】
前記アクセスコマンドはリードコマンドであり、
前記コントローラは、
前記リードコマンドに含まれる前記第２認証子が前記第１認証子と一致するならば、前記不揮発性メモリから前記リードコマンドに応じた第１データを読み出し、前記第１データを復号し、復号された前記第１データを前記第２ホストに送信し、
前記第２認証子が前記第１認証子と一致しないならば、前記第１データを前記不揮発性メモリから読み出さないように構成される請求項１記載のメモリシステム。
【請求項３】
前記コントローラは、
前記認証情報を用いた前記第１ホストの認証が成功した場合、前記認証情報に対応する暗号鍵を生成し、
前記第２認証子が前記第１認証子と一致するならば、前記暗号鍵を用いて前記第１データを復号する請求項２記載のメモリシステム。
【請求項４】
前記アクセスコマンドはライトコマンドであり、
前記コントローラは、
前記ライトコマンドを受け付けたことに伴って前記第２ホストによって送信された第２データを受信し、
前記ライトコマンドに含まれる前記第２認証子が前記第１認証子と一致するならば、前記第２データを暗号化し、暗号化された前記第２データを前記不揮発性メモリに書き込み、
前記第２認証子が前記第１認証子と一致しないならば、前記第２データを前記不揮発性メモリに書き込まないように構成される請求項１記載のメモリシステム。
【請求項５】
前記コントローラは、
前記認証情報を用いた前記第１ホストの認証が成功した場合、前記認証情報に対応する暗号鍵を生成し、
前記第２認証子が前記第１認証子と一致するならば、前記暗号鍵を用いて前記第２データを暗号化する請求項４記載のメモリシステム。
【請求項６】
前記第１認証子は、乱数を含む請求項１乃至請求項５のいずれか一項に記載のメモリシステム。
【請求項７】
前記第１認証子は、乱数と前記第１ホストの識別子とを含む請求項１乃至請求項５のいずれか一項に記載のメモリシステム。
【請求項８】
前記コントローラは、前記認証要求コマンドに含まれる前記認証情報を用いた前記第１ホストの認証が失敗した場合、前記第１ホストに前記第１認証子を送信しない請求項１記載のメモリシステム。
【請求項９】
前記認証要求コマンドは、暗号化された前記認証情報を含み、
前記コントローラは、暗号化された前記認証情報を復号し、復号された前記認証情報を用いた前記第１ホストの認証が成功した場合、前記第１ホストに前記第１認証子を送信する請求項１記載のメモリシステム。
【請求項１０】
前記コントローラは、前記第１ホストの認証が成功した場合、前記第１ホストに、暗号化された前記第１認証子を送信する請求項９記載のメモリシステム。
【請求項１１】
前記アクセスコマンドは、暗号化された前記第２認証子を含み、
前記コントローラは、暗号化された前記第２認証子を復号し、復号された前記第２認証子が前記第１認証子と一致するならば、前記不揮発性メモリへのアクセスを許可し、復号された前記第２認証子が前記第１認証子と一致しないならば、前記不揮発性メモリへのアクセスを禁止するように構成される請求項１記載のメモリシステム。
【請求項１２】
前記メモリシステムは、トラステッド・コンピューティング・グループ（ＴＣＧ）の規格に準拠する請求項１記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、不揮発性メモリを備えるメモリシステムに関する。
【背景技術】
【０００２】
近年、不揮発性メモリを備えるメモリシステムが広く普及している。  
このようなメモリシステムの１つとして、ＮＡＮＤ型フラッシュメモリを備えるソリッドステートドライブ（ＳＳＤ）が知られている。ＳＳＤは、様々なコンピューティングデバイスのメインストレージとして使用されている。
【０００３】
またデータの漏洩等を防止するために、メモリシステムは書き込み時にデータを自動的に暗号化する自己暗号化機能を有していることがある。この自己暗号化機能を有するメモリシステムは自己暗号化ドライブ（ｓｅｌｆ  ｅｎｃｒｙｐｔｉｎｇ  ｄｒｉｖｅ：ＳＥＤ）とも称される。
【０００４】
ＳＥＤが準拠すべきセキュリティ規格の１つとして、トラステッド・コンピューティング・グループ（ＴＣＧ）の規格がある。ＴＣＧの規格では、例えばデータ暗号化、ストレージの部分領域毎のアクセス制御が規定されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許第８４１７９６７号明細書
【特許文献２】特許第５６１３５９６号公報
【特許文献３】特開２００２−３５２１５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明が解決しようとする課題は、ストレージへのアクセスに対するセキュリティを強化できるメモリシステムを提供することである。
【課題を解決するための手段】
【０００７】
実施形態によれば、メモリシステムは、不揮発性メモリと、コントローラとを具備する。前記コントローラは、前記不揮発性メモリと電気的に接続され、複数のホストによってそれぞれ送信されるコマンドを受け付け、前記不揮発性メモリに書き込まれるデータを暗号化し、前記不揮発性メモリから読み出されたデータを復号するように構成される。前記コントローラは、第１ホストから認証要求コマンドを受け付け、前記認証要求コマンドに含まれる認証情報を用いた前記第１ホストの認証が成功した場合、前記第１ホストに第１認証子を送信するように構成される。前記コントローラは、第２ホストから前記不揮発性メモリにアクセスするためのアクセスコマンドを受け付けた場合、前記アクセスコマンドに含まれる第２認証子が前記第１認証子と一致するならば、前記アクセスコマンドに応じた前記不揮発性メモリへのアクセスを許可し、前記第２認証子が前記第１認証子と一致しないならば、前記アクセスコマンドに応じた前記不揮発性メモリへのアクセスを禁止するように構成される。
【図面の簡単な説明】
【０００８】
【図１】実施形態に係るメモリシステムの構成例を示すブロック図。
【図２】同実施形態のメモリシステムの機能構成を示すブロック図。
【図３】同実施形態のメモリシステムによるホストの認証が成功する場合の動作例を示すブロック図。
【図４】同実施形態のメモリシステムによるホストの認証が失敗する場合の動作例を示すブロック図。
【図５】同実施形態のメモリシステムがホストから受信する認証要求コマンドの一構成例を示す図。
【図６】同実施形態のメモリシステムからホストに送信される応答の一構成例を示す図。
【図７】同実施形態のメモリシステムによる、認証済みホストからのリードコマンドに応じた動作例を示すブロック図。
【図８】同実施形態のメモリシステムによる、未認証ホストからのリードコマンドに応じた動作例を示すブロック図。
【図９】同実施形態のメモリシステムによる、認証済みホストからのライトコマンドに応じた動作例を示すブロック図。
【図１０】同実施形態のメモリシステムによる、未認証ホストからのライトコマンドに応じた動作例を示すブロック図。
【図１１】比較例に係るメモリシステムによって実行されるリード制御処理の手順例を示すフローチャート。
【図１２】同実施形態のメモリシステムによって実行されるリード制御処理の手順例を示すフローチャート。
【図１３】比較例に係るメモリシステムによって実行されるライト制御処理の手順例を示すフローチャート。
【図１４】同実施形態のメモリシステムによって実行されるライト制御処理の手順例を示すフローチャート。
【発明を実施するための形態】
【０００９】
以下、実施の形態について図面を参照して説明する。
【００１０】
まず、図１を参照して、一実施形態に係るメモリシステムを含む情報処理システム１の構成を説明する。
【００１１】
このメモリシステムは、ＮＡＮＤ型フラッシュメモリ５のような不揮発性メモリにデータを書き込み、不揮発性メモリからデータを読み出すように構成された半導体ストレージデバイスであり、ストレージデバイスとも称される。このメモリシステムは、例えば、ＮＡＮＤ型フラッシュメモリ５を備えるソリッドステートドライブ（ＳＳＤ）３として実現されている。以下では、メモリシステム（すなわちストレージデバイス）がＳＳＤ３として実現される場合について例示するが、メモリシステムはハードディスクドライブ（ＨＤＤ）として実現されてもよい。
【００１２】
ＳＳＤ３は、データの漏洩等を防止するために、書き込み時にデータを自動的に暗号化する自己暗号化機能を有している。つまり、ＳＳＤ３は、自己暗号化機能を有する自己暗号化ドライブ（ＳＥＤ）である。ＳＳＤ３は、例えばトラステッド・コンピューティング・グループ（ＴＣＧ）の規格に準拠し、ＴＣＧの規格で定められた自己暗号化機能を有している。ＴＣＧの規格では、例えばデータ暗号化、ストレージの部分領域毎のアクセス制御が規定されている。
【００１３】
情報処理システム１は、１つ以上のホストデバイス２−１，２−２，……，２−Ｎ（以下、ホストとも称する）、ＳＳＤ３、および中継器７を含む。各ホスト２−１，２−２，……，２−Ｎは、中継器７を介してＳＳＤ３にアクセスする情報処理装置である。中継器７は、エキスパンダ、スイッチとも称される。各ホスト２−１，２−２，……，２−Ｎは、大量且つ多様なデータをＳＳＤ３に保存するストレージサーバであってもよいし、パーソナルコンピュータであってもよい。以下では、１つ以上のホスト２−１，２−２，……，２−Ｎを、あるいはその内の１つのホストを、ホスト２と称することがある。
【００１４】
ＳＳＤ３は、ホスト２として機能する情報処理装置のストレージとして使用され得る。ＳＳＤ３は、この情報処理装置に内蔵されてもよいし、この情報処理装置にケーブルまたはネットワークを介して接続されてもよい。
【００１５】
ホスト２とＳＳＤ３とを相互接続するためのインタフェースとしては、ＳＣＳＩ、Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ（ＳＡＳ）、ＡＴＡ、Ｓｅｒｉａｌ  ＡＴＡ（ＳＡＴＡ）、ＰＣＩ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）（登録商標）、Ｅｔｈｅｒｎｅｔ（登録商標）、Ｆｉｂｒｅ  ｃｈａｎｎｅｌ、ＮＶＭ  Ｅｘｐｒｅｓｓ（ＮＶＭｅ）（登録商標）等が使用され得る。
【００１６】
ＳＳＤ３は、コントローラ４およびＮＡＮＤ型フラッシュメモリ５を備える。コントローラ４は、Ｓｙｓｔｅｍ−ｏｎ−ａ−ｃｈｉｐ（ＳｏＣ）のような回路によって実現され得る。
【００１７】
また、ＳＳＤ３は、揮発性メモリであるランダムアクセスメモリ（ＲＡＭ）、例えばダイナミックランダムアクセスメモリ（ＤＲＡＭ）６を備えていてもよい。あるいは、スタティックランダムアクセスメモリ（ＳＲＡＭ）のようなＲＡＭがコントローラ４に内蔵されていてもよい。なお、ＤＲＡＭ６が、コントローラ４に内蔵されていてもよい。
【００１８】
ＤＲＡＭ６等のＲＡＭには、ＮＡＮＤ型フラッシュメモリ５に書き込まれるデータや、ＮＡＮＤ型フラッシュメモリ５から読み出されるデータを一時的に格納するためのバッファ領域２０が設けられる。
【００１９】
また、ＤＲＡＭ６等のＲＡＭには、論理物理アドレス変換テーブルとして機能するルックアップテーブル（ＬＵＴ）２１のキャッシュ領域が設けられている。ＬＵＴ２１は、論理アドレス（例えば論理ブロックアドレス（ＬＢＡ））それぞれとＮＡＮＤ型フラッシュメモリ５の物理アドレスそれぞれとの間のマッピングを管理する。さらに、ＤＲＡＭ６等のＲＡＭには、ホスト２から受け付けたコマンドの処理のために用いられる各種のデータ（例えば、暗号鍵２２、一時認証子２３）の格納領域が設けられていてもよい。
【００２０】
ＮＡＮＤ型フラッシュメモリ５は複数のブロックＢ０〜Ｂｍ−１を含む。ブロックＢ０〜Ｂｍ−１の各々は複数のページ（ここでは、ページＰ０〜Ｐｎ−１）を含む。ブロックＢ０〜Ｂｍ−１は最小の消去単位として機能する。ブロックは、「消去ブロック」、または「物理ブロック」と称されることもある。ページＰ０〜Ｐｎ−１の各々は、同一ワード線に接続された複数のメモリセルを含む。ページＰ０〜Ｐｎ−１は、データ書き込み動作およびデータ読み出し動作の単位である。なお、ワード線をデータ書き込み動作およびデータ読み出し動作の単位としてもよい。
【００２１】
ブロックＢ０〜Ｂｍ−１の各々に対して許容できる最大プログラム／イレーズサイクル数（最大Ｐ／Ｅサイクル数）には限界がある。あるブロックの１回のＰ／Ｅサイクルは、このブロック内のすべてのメモリセルを消去状態にするための消去動作と、このブロックのページそれぞれにデータを書き込む書き込み動作とを含む。
【００２２】
コントローラ４は、Ｔｏｇｇｌｅ  ＤＤＲ、Ｏｐｅｎ  ＮＡＮＤ  Ｆｌａｓｈ  Ｉｎｔｅｒｆａｃｅ（ＯＮＦＩ）等のインタフェース規格に対応するＮＡＮＤインタフェース１３を介して、ＮＡＮＤ型フラッシュメモリ５に電気的に接続されている。ＮＡＮＤインタフェース１３は、ＮＡＮＤ型フラッシュメモリ５を制御するように構成されたＮＡＮＤ制御回路として機能する。
【００２３】
ＮＡＮＤインタフェース１３は、複数のチャネル（Ｃｈ）を介して、ＮＡＮＤ型フラッシュメモリ５内の複数のＮＡＮＤ型フラッシュメモリチップにそれぞれ接続されていてもよい。複数のＮＡＮＤ型フラッシュメモリチップが並列に駆動されることにより、ＮＡＮＤ型フラッシュメモリ５に対するアクセスを広帯域化することができる。
【００２４】
コントローラ４は、ＮＡＮＤ型フラッシュメモリ５を制御するように構成されたメモリコントローラとして機能する。
【００２５】
コントローラ４は、ＮＡＮＤ型フラッシュメモリ５のデータ管理およびブロック管理を実行するように構成されたフラッシュトランスレーション層（ＦＴＬ）として機能してもよい。このＦＴＬによって実行されるデータ管理には、（１）論理アドレスそれぞれとＮＡＮＤ型フラッシュメモリ５の物理アドレスそれぞれとの間の対応関係を示すマッピング情報の管理、（２）ページ単位のリード／ライトとブロック単位の消去（イレーズ）動作とを隠蔽するための処理、等が含まれる。論理アドレスは、ＳＳＤ３をアドレス指定するためにホスト２によって使用されるアドレスである。以下では、この論理アドレスとして、論理ブロックアドレス（ＬＢＡ）が使用されることを想定する。
【００２６】
ＬＢＡそれぞれと物理アドレスそれぞれとの間のマッピングの管理は、論理物理アドレス変換テーブルとして機能するＬＵＴ２１を用いて実行される。コントローラ４は、ＬＵＴ２１を使用して、ＬＢＡそれぞれと物理アドレスそれぞれとの間のマッピングを特定の管理サイズ単位で管理する。あるＬＢＡに対応する物理アドレスは、このＬＢＡのデータが書き込まれたＮＡＮＤ型フラッシュメモリ５内の物理記憶位置を示す。ＬＵＴ２１は、ＳＳＤ３の電源オン時にＮＡＮＤ型フラッシュメモリ５からＤＲＡＭ６にロードされてもよい。
【００２７】
１つのページへのデータ書き込みは、１回のＰ／Ｅサイクル当たり１回のみ可能である。このため、コントローラ４は、あるＬＢＡに対応する更新データを、このＬＢＡに対応する以前のデータが格納されている物理記憶位置ではなく、別の物理記憶位置に書き込む。そして、コントローラ４は、このＬＢＡをこの別の物理記憶位置に関連付けるようにＬＵＴ２１を更新することにより、以前のデータを無効化する。
【００２８】
ブロック管理には、バッドブロックの管理、ウェアレベリング、ガベージコレクション、等が含まれる。
【００２９】
コントローラ４は、ホストインタフェース１１、ＣＰＵ１２、ＮＡＮＤインタフェース１３、ＤＲＡＭインタフェース１４、暗号回路１５等を含んでもよい。これらホストインタフェース１１、ＣＰＵ１２、ＮＡＮＤインタフェース１３、ＤＲＡＭインタフェース１４、および暗号回路１５は、バス１０を介して相互接続されていてもよい。
【００３０】
ホストインタフェース１１は、ホスト２から様々なコマンド、例えば、Ｉ／Ｏコマンド、各種制御コマンド、ＴＣＧ規格に準拠したＴＣＧコマンド等を受信する回路として機能する。Ｉ／Ｏコマンドには、ライトコマンド、リードコマンド、等が含まれ得る。制御コマンドには、アンマップコマンド（トリムコマンド）、フォーマットコマンド、ベリファイコマンド等が含まれ得る。フォーマットコマンドは、ＳＳＤ３全体をアンマップするためのコマンドである。ベリファイコマンドは、データやメタデータをホスト２に送信することなく、指定されたＬＢＡまたはＬＢＡ範囲のデータおよびメタデータをＮＡＮＤ型フラッシュメモリ５から読み出して、ＮＡＮＤ型フラッシュメモリ５に格納された情報の完全性を検証するためのコマンドである。ＮＡＮＤ型フラッシュメモリ５に格納された情報の完全性は、例えば、読み出されたデータおよびメタデータを用いたエラー訂正が可能であるか否かに基づいて検証される。またＴＣＧコマンドは、ＳＳＤ３に対して、認証、ＮＡＮＤ型フラッシュメモリ５へのアクセスに関する設定変更等を要求するためのコマンドである。
【００３１】
ＤＲＡＭインタフェース１４は、ＤＲＡＭ６のアクセスを制御するように構成されたＤＲＡＭ制御回路として機能する。ＤＲＡＭ６の記憶領域は、ＬＵＴ２１、暗号鍵２２、一時認証子２３等を格納するため領域や、リード／ライトバッファ等として利用されるバッファ領域２０に割り当てられる。
【００３２】
暗号回路１５はユーザデータの暗号化および復号を行う。暗号回路１５は、例えば、ＮＡＮＤインタフェース１３を介してＮＡＮＤ型フラッシュメモリ５に書き込まれるユーザデータを暗号化し、ＮＡＮＤインタフェース１３を介してＮＡＮＤ型フラッシュメモリ５から読み出されるユーザデータを復号する。暗号回路１５は、例えばＣＰＵ１２によって設定される暗号鍵２２を用いて、ユーザデータの暗号化および復号を行う。暗号鍵２２は、ＤＲＡＭ６等のＲＡＭに保存されていてもよい。
【００３３】
ＣＰＵ１２は、ホストインタフェース１１、ＮＡＮＤインタフェース１３、およびＤＲＡＭインタフェース１４を制御するように構成されたプロセッサである。ＣＰＵ１２は、図示しないＲＯＭ等に格納されている制御プログラムを実行することによって様々な処理を行う。この制御プログラムはファームウェアとも称される。ＣＰＵ１２は、上述のＦＴＬの処理に加え、ホスト２からの様々なコマンドを処理するためのコマンド処理等を実行することができる。ＣＰＵ１２の動作は、ＣＰＵ１２によって実行される上述のファームウェアによって制御される。なお、ＦＴＬ処理およびコマンド処理の一部または全部は、コントローラ４内の専用ハードウェアによって実行されてもよい。
【００３４】
コントローラ４はさらに、自己暗号化、ホスト２の認証、およびＮＡＮＤ型フラッシュメモリ５に対するアクセス制御のための機能も有している。
【００３５】
ところで、例えばＴＣＧ規格に準拠したＳＳＤ３に１つのホスト２が接続される場合、ＳＳＤ３では、ホスト２によって送信されたパーソナル・アイデンティフィケーション・ナンバー（ＰＩＮ）やパスワードのような認証情報を用いて、ホスト２が認証される。この認証が成功したならば、ホスト２によるＮＡＮＤ型フラッシュメモリ５に対するアクセスが、例えばＮＡＮＤ型フラッシュメモリ５へのデータの書き込みやＮＡＮＤ型フラッシュメモリ５からのデータの読み出しが、可能になる。また認証が失敗したならば、ホスト２によるＮＡＮＤ型フラッシュメモリ５へのデータの書き込みやＮＡＮＤ型フラッシュメモリ５からのデータの読み出しはできない。つまり、正当な認証情報を有していないホスト２がＮＡＮＤ型フラッシュメモリ５にアクセスできないように制御される。
【００３６】
しかし、例えばＴＣＧ規格に準拠したＳＳＤ３に複数のホスト２が接続され、その内の１つのホスト２の認証が成功した場合、このホスト２だけでなく、認証が成功していない別のホスト２もＮＡＮＤ型フラッシュメモリ５にアクセスできるようになる場合がある。あるいは、ＳＳＤ３に１つのホスト２が接続され、そのホスト２の認証が成功した後、ＳＳＤ３が電源オフされることなく、さらに別のホスト２がＳＳＤ３に接続された場合、その別のホスト２も、認証が成功していないにも関わらず、ＮＡＮＤ型フラッシュメモリ５にアクセスできるようになる場合がある。
【００３７】
このようにＴＣＧ規格に準拠したＳＳＤ３では、認証が成功していないホスト２がＮＡＮＤ型フラッシュメモリ５にアクセスできる可能性がある。認証が成功していないホスト２は、正当な認証情報を有していないホストであり得る。認証が成功していないホスト２によるアクセスは、ＮＡＮＤ型フラッシュメモリ５に格納されるデータの漏洩や改竄のようなセキュリティ上の欠陥となり得る。
【００３８】
そのため本実施形態では、ＴＣＧ規格のような自己暗号化に関する規格、および各種のインタフェース規格に準拠したＳＳＤ３において、認証が成功したホスト２だけがＮＡＮＤ型フラッシュメモリ５にアクセスでき、認証が成功していないホスト２はＮＡＮＤ型フラッシュメモリ５にアクセスできないように制御する。
【００３９】
より具体的には、ＳＳＤ３は、あるホスト２の認証が成功した場合に一時認証子を生成し、一時認証子をそのホスト２だけに送信する。そして、このホスト２は、一時認証子を含むアクセスコマンドをＳＳＤ３に送信する。アクセスコマンドはＮＡＮＤ型フラッシュメモリ５に対するアクセスのためのコマンドであり、例えばリードコマンド、ライトコマンド等である。
【００４０】
ＳＳＤ３は、生成した一時認証子と、アクセスコマンドに含まれる一時認証子とが一致する場合に、アクセスコマンドに応じたＮＡＮＤ型フラッシュメモリ５へのアクセスを許可し、一致しない場合には、アクセスコマンドに応じたＮＡＮＤ型フラッシュメモリ５へのアクセスを禁止する。これにより、認証が成功したことに応じて一時認証子を取得したホスト２だけがＮＡＮＤ型フラッシュメモリ５にアクセスできるように制御され、ＮＡＮＤ型フラッシュメモリ５へのアクセスに対するセキュリティを強化できる。
【００４１】
なお、ＮＡＮＤ型フラッシュメモリ５に対するアクセスには、ＮＡＮＤ型フラッシュメモリ５に書き込まれるべきユーザデータがキャッシュされるバッファ領域２０（すなわちライトバッファ）へのアクセスや、ＮＡＮＤ型フラッシュメモリ５から読み出されたユーザデータがキャッシュされたバッファ領域２０（すなわちリードバッファ）へのアクセスも含まれ得る。したがってＳＳＤ３は、ユーザデータがＮＡＮＤ型フラッシュメモリ５に格納されているか、バッファ領域２０にキャッシュされているかに関わらず、生成した一時認証子と、アクセスコマンドに含まれる一時認証子とが一致する場合に、アクセスコマンドに指定されたＬＢＡまたはＬＢＡ範囲のデータへのアクセスを許可し、一致しない場合には、アクセスコマンドに指定されたＬＢＡまたはＬＢＡ範囲のデータへのアクセスを禁止する。つまり、ＳＳＤ３は、ＮＡＮＤ型フラッシュメモリ５自体へのアクセスだけでなく、ＮＡＮＤ型フラッシュメモリ５に書き込まれるデータや、ＮＡＮＤ型フラッシュメモリ５から読み出されるデータを一時的に格納するためのバッファ領域２０へのアクセスも制御する。
【００４２】
ＣＰＵ１２は、上述のような動作を実現するために、例えば、リード／ライトコマンド処理部１２１、リード／ライトデータ処理部１２２、認証子処理部１２３、ＴＣＧコマンド処理部１２４、認証子管理部１２５、および暗号鍵生成部１２６として機能し得る。図２を参照して、これら各部の動作について説明する。
【００４３】
ＴＣＧコマンド処理部１２４、認証子管理部１２５、および暗号鍵生成部１２６は、ホスト２の認証を制御する。ＴＣＧコマンド処理部１２４、認証子管理部１２５、および暗号鍵生成部１２６は、ホスト２から認証を要求する認証要求コマンドを受け付け、認証要求コマンドに含まれる認証情報を用いたホスト２の認証が成功した場合、そのホスト２に一時認証子２３を送信する。一時認証子２３は、例えばＤＲＡＭ６に保存される。
【００４４】
また、リード／ライトコマンド処理部１２１、リード／ライトデータ処理部１２２、および認証子処理部１２３は、ホスト２によるＮＡＮＤ型フラッシュメモリ５に対するアクセスを制御する。リード／ライトコマンド処理部１２１、リード／ライトデータ処理部１２２、および認証子処理部１２３は、ホスト２からＮＡＮＤ型フラッシュメモリ５にアクセスするためのアクセスコマンドを受け付けた場合、アクセスコマンドに含まれる一時認証子がＤＲＡＭ６等に保存された一時認証子２３と一致するならば、アクセスコマンドに応じたＮＡＮＤ型フラッシュメモリ５へのアクセスを許可し、アクセスコマンドに含まれる一時認証子がＤＲＡＭ６等に保存された一時認証子２３と一致しないならば、アクセスコマンドに応じたＮＡＮＤ型フラッシュメモリ５へのアクセスを禁止する。
【００４５】
より具体的には、ＴＣＧコマンド処理部１２４は、あるホスト２からホストインタフェース１１を介して受信されるＴＣＧコマンドを処理する。上述したように、ＴＣＧコマンドはＴＣＧ規格に準拠したコマンドであり、例えばホスト２がＳＳＤ３に対して認証やセキュリティに関する設定の変更等を要求するために用いられる。ＴＣＧコマンド処理部１２４は、認証を要求するＴＣＧコマンド（すなわち認証要求コマンド）に応じた認証処理を行う。またＴＣＧコマンド処理部１２４は、設定変更を要求するＴＣＧコマンド（以下、設定変更コマンドとも称する）に応じた設定変更処理を行う。
【００４６】
認証要求コマンドは、ＰＩＮやパスワードのようなホスト２の認証情報を含む。認証要求コマンドは、認証情報が平文で送信されないように、例えばＴＣＧ  Ｓｅｃｕｒｅ  Ｍｅｓｓａｇｉｎｇ技術を用いて暗号化されてもよい。その場合、ＴＣＧコマンド処理部１２４は当該技術を用いて、認証要求コマンドに含まれる暗号化された認証情報を復号する。
【００４７】
設定変更コマンドは、設定変更を要求する属性の識別子と、その属性に新たに設定されるべき値とを含む。例えば設定変更を要求する属性として、ＮＡＮＤ型フラッシュメモリ５に対する、リードの可否、ライトの可否、並びにリードおよびライトの可否のいずれかが設定される場合、属性に新たに設定されるべき値には可能または不可が設定される。したがって例えば、ホスト２がＮＡＮＤ型フラッシュメモリ５に対するリードを可能にするように要求する場合、設定変更コマンドには「リードの可否」を示す属性の識別子と「可能」を示す値とが含まれる。
【００４８】
ＴＣＧコマンド処理部１２４は、認証要求コマンドに含まれる認証情報（あるいは復号された認証情報）と、ＮＡＮＤ型フラッシュメモリ５に格納されている認証情報３１とを用いて、ホスト２が正当な認証情報を有しているか否かを検証する。認証要求コマンドに含まれる認証情報と、ＮＡＮＤ型フラッシュメモリ５に格納されている認証情報３１とが一致するならば、ＴＣＧコマンド処理部１２４は、ホスト２が正当な認証情報を有しているので、ホスト２の認証が成功したと判断する。認証要求コマンドに含まれる認証情報が、ＮＡＮＤ型フラッシュメモリ５に格納されている認証情報３１とは異なるならば、ＴＣＧコマンド処理部１２４は、ホスト２が正当な認証情報を有していないので、ホスト２の認証が失敗したと判断する。なお、ＮＡＮＤ型フラッシュメモリ５に格納されている認証情報３１は、正当な認証情報そのものであってもよいし、特定の処理を施すことによって正当な認証情報を導出可能な情報であってもよい。
【００４９】
ＴＣＧコマンド処理部１２４は、ホスト２の認証が成功した場合、ＮＡＮＤ型フラッシュメモリ５をアクセス可能に設定する。ＴＣＧコマンド処理部１２４は、設定変更コマンドに含まれる設定変更を要求する属性の識別子およびその属性に新たに設定されるべき値に基づいて、ＮＡＮＤ型フラッシュメモリ５に対するリードアクセスとライトアクセスの少なくとも一方を可能にし得る。
【００５０】
暗号鍵生成部１２６は、ホスト２の認証が成功した場合、暗号鍵２２を生成し、暗号回路１５に設定する。暗号鍵２２は、ユーザデータの暗号化と暗号化されたユーザデータの復号とに用いられる。
【００５１】
認証子管理部１２５は、ホスト２の認証が成功した場合、一時認証子２３を生成し、ＤＲＡＭ６等のＲＡＭに保存する。一時認証子２３にはどのような情報が用いられてもよいが、例えば乱数が用いられる。あるいは、認証子管理部１２５は、乱数とホスト２の識別子とを組み合わせた情報を、一時認証子２３として生成してもよい。ホスト２の識別子は、例えばホスト２とＳＳＤ３とのインタフェース層の接続時（例えばＳＡＴＡやＳＡＳにおけるリンクアップ時）等に取得できる。
【００５２】
そして、ＴＣＧコマンド処理部１２４は認証の成功を示す情報と一時認証子２３とを含む応答を、ホストインタフェース１１を介して、認証要求コマンドを送信したホスト２に送信する。認証要求コマンドと同様に、応答もＴＣＧ  Ｓｅｃｕｒｅ  Ｍｅｓｓａｇｉｎｇ技術を用いて暗号化して送信されてもよい。すなわち、ＴＣＧコマンド処理部１２４は、暗号化された一時認証子２３をホスト２に送信し得る。
【００５３】
一方、ホスト２の認証が失敗した場合、ＴＣＧコマンド処理部１２４は認証の失敗を示す情報を含む応答を、ホストインタフェース１１を介してそのホスト２に送信する。この場合、一時認証子２３は、生成されず、ホスト２に送信されない。
【００５４】
リード／ライトコマンド処理部１２１は、ホスト２から受信したＮＡＮＤ型フラッシュメモリ５に対するアクセスのためのアクセスコマンドを処理する。アクセスコマンドは、例えばリードコマンドおよびライトコマンドであるが、アンマップコマンド、フォーマットコマンド、ベリファイコマンド等のＮＡＮＤ型フラッシュメモリ５へのアクセスが発生し得る他のコマンドであってもよい。
【００５５】
リード／ライトコマンド処理部１２１および認証子処理部１２３は、アクセスコマンドに含まれる一時認証子と、認証子管理部１２５によって生成された一時認証子２３（すなわちＤＲＡＭ６に保存された一時認証子２３）とが一致するか否かを判定する。アクセスコマンドに含まれる一時認証子は、ホスト２によってセッションキーを用いて暗号化されていてもよい。その場合、リード／ライトコマンド処理部１２１および認証子処理部１２３は、セッションキーを用いてアクセスコマンド内の暗号化された一時認証子を復号し、認証子処理部１２３は、この復号された一時認証子と認証子管理部１２５によって生成された一時認証子２３とが一致するか否かを判定する。セッションキーは、ホスト２とＳＳＤ３との間で交換された暗号鍵である。
【００５６】
アクセスコマンドに含まれる一時認証子（あるいは、アクセスコマンド内の暗号化された一時認証子を復号することによって得られた一時認証子）と認証子管理部１２５によって生成された一時認証子２３とが一致する場合、リード／ライトデータ処理部１２２は、アクセスコマンドに応じたＮＡＮＤ型フラッシュメモリ５へのアクセスを許可するように動作する。
【００５７】
例えばアクセスコマンドがリードコマンドである場合、リード／ライトデータ処理部１２２および暗号回路１５は、ＮＡＮＤ型フラッシュメモリ５からリードコマンドに応じたユーザデータを読み出し、そのユーザデータを復号し、復号されたユーザデータをホスト２に送信する。
【００５８】
より具体的には、リード／ライトデータ処理部１２２は、リードコマンドで指定されたＬＢＡに対応するＬＵＴ２１のエントリに基づいて、ＬＢＡに対応する物理アドレスを決定する。リード／ライトデータ処理部１２２は、ＮＡＮＤインタフェース１３を介して、この物理アドレスに書き込まれているユーザデータの読み出しをＮＡＮＤ型フラッシュメモリ５に要求する。
【００５９】
この要求に応じてＮＡＮＤ型フラッシュメモリ５から読み出されたユーザデータは、ＮＡＮＤインタフェース１３を介して暗号回路１５に送出される。暗号回路１５は、暗号鍵２２を用いてユーザデータを復号し、リード／ライトデータ処理部１２２に送出する。これにより、リード／ライトデータ処理部１２２はホストインタフェース１１を介して、リードコマンドに応じたユーザデータをホスト２に送信できる。
【００６０】
また例えばアクセスコマンドがライトコマンドである場合、リード／ライトデータ処理部１２２および暗号回路１５は、ライトコマンドを受け付けたことに伴ってホスト２により送信されたユーザデータを受信し、そのユーザデータを暗号化し、暗号化されたユーザデータをＮＡＮＤ型フラッシュメモリ５に書き込む。
【００６１】
より具体的には、リード／ライトデータ処理部１２２は、ホストインタフェース１１を介して、ライトコマンドが受け付けられたことに伴ってホスト２から送信されたユーザデータを受信する。リード／ライトデータ処理部１２２は受信したユーザデータを暗号回路１５に送出する。暗号回路１５は暗号鍵２２を用いてユーザデータを暗号化し、ＮＡＮＤインタフェース１３を介してＮＡＮＤ型フラッシュメモリ５に転送する。
【００６２】
またリード／ライトデータ処理部１２２は、ライトコマンドによってユーザデータをあるＬＢＡに書き込むことが要求されている場合、このユーザデータが書き込まれるべき物理アドレスを決定する。そして、リード／ライトデータ処理部１２２は、そのユーザデータを、決定された物理アドレスに対応するブロックおよびページに書き込むことをＮＡＮＤ型フラッシュメモリ５に要求する。したがってＮＡＮＤ型フラッシュメモリ５には、物理アドレスを示す情報（例えばブロックおよびページ）と暗号化されたユーザデータとが転送される。
【００６３】
次いで、リード／ライトデータ処理部１２２は、ＮＡＮＤ型フラッシュメモリ５にプログラムを指示する。すなわち、リード／ライトデータ処理部１２２は、ＮＡＮＤ型フラッシュメモリ５にプログラムコマンドを送ることにより、ＮＡＮＤ型フラッシュメモリ５に対して、暗号化されたユーザデータを書き込み先のブロックおよびページにプログラムさせる。そして、リード／ライトデータ処理部１２２は、ＬＢＡと物理アドレスとをマッピングする。このマッピングはＬＵＴ２１内のエントリとして記録される。
【００６４】
したがって、認証が成功したことに応じてホスト２に送信された一時認証子２３がアクセスコマンドに含まれているならば、ＳＳＤ３はそのアクセスコマンドに応じた処理を行うので、認証済みのホスト２によるＮＡＮＤ型フラッシュメモリ５へのアクセスを許可できる。
【００６５】
これに対して、アクセスコマンドに含まれる一時認証子と、認証子管理部１２５によって生成された一時認証子２３とが一致しない場合、リード／ライトコマンド処理部１２１は、エラーを含む応答をホスト２に送信する。例えばアクセスコマンドがリードコマンドである場合、リード／ライトデータ処理部１２２はＮＡＮＤ型フラッシュメモリ５からユーザデータを読み出さない。また例えばアクセスコマンドがライトコマンドである場合、リード／ライトデータ処理部１２２はＮＡＮＤ型フラッシュメモリ５にユーザデータを書き込まない。したがって、認証が成功したことに応じてホスト２に送信された一時認証子２３がアクセスコマンドに含まれていないならば、ＳＳＤ３はそのアクセスコマンドに応じた処理を行わないので、未認証のホスト２によるＮＡＮＤ型フラッシュメモリ５へのアクセスを禁止できる。
【００６６】
図３および図４を参照して、ＴＣＧコマンド処理部１２４、認証子管理部１２５、および暗号鍵生成部１２６による認証およびアクセス制御のための動作について、より具体的に説明する。図３および図４では、説明を分かりやすくするためにこの動作に関連する要素のみを示している。
【００６７】
図３は、ホスト２の認証が成功する場合の動作例を示す。  
まず、ホスト２はＴＣＧコマンドをＳＳＤ３に送信する。このＴＣＧコマンドは、認証情報４１を含む認証要求コマンドと設定変更コマンドである。また、このホスト２は正当な認証情報を有しているホストである。つまり、このホスト２が有する認証情報４１は正当な認証情報である。
【００６８】
ＴＣＧコマンド処理部１２４は、ホスト２から認証要求コマンドおよび設定変更コマンドを受信する。ＴＣＧコマンド処理部１２４は、認証要求コマンドに含まれる認証情報４１と、ＮＡＮＤ型フラッシュメモリ５に格納されている認証情報３１とが一致するか否かを判定する。ＮＡＮＤ型フラッシュメモリ５には、例えば、認証情報３１等が格納されるシステム領域５Ａと、ユーザデータが格納されるユーザ領域５Ｂとが設けられている。ユーザ領域５Ｂは、認証情報３１を用いてホスト２によるアクセスが制御される領域である。
【００６９】
認証要求コマンドに含まれる認証情報４１と、ＮＡＮＤ型フラッシュメモリ５に格納されている認証情報３１とが一致する場合、すなわち、ホスト２の認証が成功した場合、ＴＣＧコマンド処理部１２４は、設定変更コマンドに基づいてユーザ領域５Ｂへのアクセスを許可し、暗号鍵生成部１２６に暗号鍵の生成を要求し、認証子管理部１２５に一時認証子の生成を要求する。ＴＣＧコマンド処理部１２４は、設定変更コマンドで指定された情報に基づいて、例えばユーザ領域５Ｂに対するリードとライトの少なくとも一方を許可する。換言すると、ＴＣＧコマンド処理部１２４は、設定変更コマンドで指定された情報に基づいて、ユーザ領域５Ｂに対するリードとライトの少なくとも一方のロックを解除する。
【００７０】
暗号鍵生成部１２６は暗号鍵２２を生成し、暗号回路１５に設定する。また、認証子管理部１２５は一時認証子２３を生成し、ＤＲＡＭ６等のＲＡＭに格納する。
【００７１】
そして、ＴＣＧコマンド処理部１２４は、認証の成功を示す情報と生成された一時認証子２３とを含む応答をホスト２に送信する。ホスト２は、応答に含まれる一時認証子２３を保存する。以下では説明を分かりやすくするために、認証が成功したホスト２内に保存された一時認証子２３を一時認証子４２と記載する。
【００７２】
なお、あるホスト２の認証が成功したことに応じて一時認証子２３が生成された後に、別のホスト２の認証が成功した場合、ＴＣＧコマンド処理部１２４は、既に生成されている一時認証子２３をその別のホスト２に送信してもよい。あるいは、その別のホスト２に対して、別の一時認証子２３が新たに生成され、送信されてもよい。この場合、一時認証子２３と、当該一時認証子２３に関連付けられたホスト２の識別子とが、ＤＲＡＭ６等のＲＡＭに格納される。
【００７３】
以上のように、ホスト２の認証が成功した場合、ユーザ領域５Ｂへのアクセスが許可され、暗号回路１５に暗号鍵２２が設定され、一時認証子２３が生成される。また、認証が成功したホスト２は一時認証子２３を取得できる。
【００７４】
図４は、ホスト２の認証が失敗する場合の動作例を示す。  
まず、ホスト２はＴＣＧコマンドをＳＳＤ３に送信する。このＴＣＧコマンドは、認証情報４３を含む認証要求コマンドと設定変更コマンドである。また、このホスト２は正当な認証情報を有していないホストである。つまり、このホスト２が有する認証情報４３は不正な認証情報である。
【００７５】
ＴＣＧコマンド処理部１２４は、ホスト２から認証要求コマンドおよび設定変更コマンドを受信する。そして、ＴＣＧコマンド処理部１２４は、認証要求コマンドに含まれる認証情報４３と、ＮＡＮＤ型フラッシュメモリ５に格納されている認証情報３１とが一致するか否かを判定する。
【００７６】
認証要求コマンドに含まれる認証情報４３と、ＮＡＮＤ型フラッシュメモリ５に格納されている認証情報３１とが異なる場合、すなわち、ホスト２の認証が失敗した場合、ＴＣＧコマンド処理部１２４は、認証の失敗を示す情報を含む応答をホスト２に送信する。ＴＣＧコマンド処理部１２４は、設定変更コマンドに対して、認証の失敗により設定変更が不可であることを示す情報を含む応答をホスト２に送信する。つまり、ＴＣＧコマンド処理部１２４はユーザ領域５Ｂへのアクセス（例えばリードおよびライト）を許可しない。換言すると、ＴＣＧコマンド処理部１２４はユーザ領域５Ｂへのアクセスのロックを解除しない。また、暗号鍵生成部１２６による暗号鍵２２の生成や、認証子管理部１２５による一時認証子２３の生成も行われない。したがって、認証が失敗したホスト２は、一時認証子２３を取得できない。
【００７７】
図５は、ホスト２によって送信される認証要求コマンドの一構成例を示す。ＴＣＧコマンドは、例えば、８バイトのＭｅｔｈｏｄＵＩＤ、８バイトのＡｕｔｈｏｒｉｔｙ、および３２バイトのＰＩＮを含む。
【００７８】
「ＭｅｔｈｏｄＵＩＤ」は、このコマンドによって要求される処理の内容を示す。「ＭｅｔｈｏｄＵＩＤ」に、認証（Ａｕｔｈｅｎｔｉｃａｔｅ）を要求するための値“00 00 00 06 00 00 00 0C”が設定されているＴＣＧコマンドは、認証要求コマンドとして扱われる。
【００７９】
「Ａｕｔｈｏｒｉｔｙ」は、このＴＣＧコマンドの対象となる権限を示す。ＴＣＧコマンドが認証要求コマンドである場合、「Ａｕｔｈｏｒｉｔｙ」は、コマンドに含まれるＰＩＮやパスワードのような認証情報を用いて認証されるべき権限を示す。ここでは、ＢａｎｄＭａｓｔｅｒ０の権限に対応する値“00 00 00 09 00 00 80 01”が例示されている。
【００８０】
「ＰＩＮ」は、このＴＣＧコマンドを送信するホスト２が有する認証情報を示す。例えば、コマンド内の「ＰＩＮ」に設定された値“61 61 61 ... 61”が、ＳＳＤ３内に格納されているＢａｎｄＭａｓｔｅｒ０の権限に対応する認証情報３１と一致する場合に、ＳＳＤ３はＢａｎｄＭａｓｔｅｒ０の権限に関して、ホスト２の認証が成功したと判断する。
【００８１】
図６は、ＳＳＤ３によって送信される応答の一構成例を示す。応答は、例えば、１バイトの認証結果、３２バイトの一時認証子、および３バイトのＭｅｔｈｏｄ  Ｓｔａｔｕｓを含む。
【００８２】
「認証結果」は、ホスト２の認証結果である成功または失敗を示す。ホスト２の認証が成功した場合、「認証結果」には成功（Ｓｕｃｃｅｓｓ）を示す値が記述される。ホスト２の認証が失敗した場合、「認証結果」には失敗（Ｆａｉｌｕｒｅ）を示す値が記述される。
【００８３】
「一時認証子」には、ホスト２の認証が成功した場合に、ＮＡＮＤ型フラッシュメモリ５へのアクセスのための一時認証子が示される。ホスト２の認証が失敗した場合、「一時認証子」には、例えば何も値が記述されない。
【００８４】
「Ｍｅｔｈｏｄ  Ｓｔａｔｕｓ」は、この応答に対応するＴＣＧコマンドに関するエラー状態を示す。例えば、ＴＣＧコマンドに含まれるパラメータに不正がなく、ホスト２の認証を行うことができた場合に、「Ｍｅｔｈｏｄ  Ｓｔａｔｕｓ」には成功を示す値が記述される。また、ＴＣＧコマンドに含まれるパラメータに不正があり、ホスト２の認証が行えなかった場合に、「Ｍｅｔｈｏｄ  Ｓｔａｔｕｓ」には失敗を示す値が記述される。
【００８５】
図７および図８を参照して、ホスト２からＳＳＤ３にリードコマンドが送信される場合の動作例を示す。図７および図８では、説明を分かりやすくするためにこの動作に関連する要素のみを示している。
【００８６】
図７に示す例では、複数のホスト２の内の認証済みホスト２ＡからＳＳＤ３にリードコマンドが送信される。認証済みホスト２Ａは、図３を参照して上述した動作によって、ＳＳＤ３による認証が成功し、一時認証子４２を取得したホスト２である。
【００８７】
まず認証済みホスト２Ａは、当該ホスト２Ａの認証が成功したことに応じてＳＳＤ３から取得した一時認証子４２を含むリードコマンドを、ＳＳＤ３に送信する。このリードコマンドには、例えば読み出されるべきユーザデータのＬＢＡまたはＬＢＡ範囲が含まれている。
【００８８】
リード／ライトコマンド処理部１２１はこのリードコマンドを受け付ける。リード／ライトコマンド処理部１２１は、リードコマンド内の一時認証子４２を認証子処理部１２３に送出する。
【００８９】
認証子処理部１２３はリードコマンド内の一時認証子４２とＤＲＡＭ６内に保存されている一時認証子２３とを比較することによって、２つの一時認証子４２，２３が一致しているか否かを判定する。ここでは、２つの一時認証子４２，２３が一致するので、認証子処理部１２３は、２つの一時認証子４２，２３が一致したことをリード／ライトコマンド処理部１２１に通知する。
【００９０】
リード／ライトコマンド処理部１２１は、この通知に応じて、リード／ライトデータ処理部１２２に対して、リードコマンドに応じたユーザデータの読み出しを指示する。リード／ライトデータ処理部１２２は、ＬＵＴ２１を用いて、リードコマンドで指定されたＬＢＡまたはＬＢＡ範囲に対応する物理アドレスを決定し、この物理アドレスからのユーザデータの読み出しをＮＡＮＤインタフェース１３を介してＮＡＮＤ型フラッシュメモリ５に指示する。この指示に応じてＮＡＮＤ型フラッシュメモリ５から読み出されたユーザデータは、暗号化されたユーザデータであり、暗号回路１５に転送される。
【００９１】
暗号回路１５は、認証済みホスト２Ａの認証が成功した際に設定された暗号鍵２２を用いて、暗号化されたユーザデータを復号する。暗号回路１５は、復号されたユーザデータをリード／ライトデータ処理部１２２に送出する。
【００９２】
リード／ライトデータ処理部１２２は、復号されたユーザデータを含む応答を認証済みホスト２Ａに送信する。これにより、正しい一時認証子４２を有する認証済みホスト２Ａは、リードコマンドを用いてＮＡＮＤ型フラッシュメモリ５からユーザデータを読み出すことができる。
【００９３】
これに対して図８に示す例では、複数のホスト２の内の未認証ホスト２ＢからＳＳＤ３にリードコマンドが送信される。未認証ホスト２Ｂは、図４を参照して上述した動作によってＳＳＤ３による認証が失敗したホスト２であるか、あるいはＳＳＤ３に認証要求コマンドをまだ送信していないホスト２である。
【００９４】
まず未認証ホスト２Ｂは、一時認証子４５を含むリードコマンドをＳＳＤ３に送信する。この一時認証子４５は、ＳＳＤ３によるホスト２の認証が成功した場合に生成される一時認証子ではなく、不正な一時認証子である。あるいは、不正な一時認証子が含まれる代わりに、リードコマンド内の一時認証子が含まれているべきフィールドは空であってもよい。リードコマンドには、例えば読み出されるべきデータのＬＢＡまたはＬＢＡ範囲が含まれている。
【００９５】
リード／ライトコマンド処理部１２１はリードコマンドを受け付ける。リード／ライトコマンド処理部１２１は、リードコマンド内の一時認証子４５を認証子処理部１２３に送出する。
【００９６】
認証子処理部１２３は、リードコマンド内の一時認証子４５と、ＤＲＡＭ６内に保存されている一時認証子２３とを比較することによって、２つの一時認証子４５，２３が一致しているか否かを判定する。ここでは、２つの一時認証子４５，２３が一致しないので、認証子処理部１２３は、２つの一時認証子４５，２３が一致しなかったことをリード／ライトコマンド処理部１２１に通知する。
【００９７】
リード／ライトコマンド処理部１２１は、この通知に応じて、エラーを示す応答を未認証ホスト２Ｂに送信する。したがって、正しい一時認証子４２を有していない未認証ホスト２Ｂは、リードコマンドに応じたユーザデータをＮＡＮＤ型フラッシュメモリ５から読み出すことができない。
【００９８】
図９および図１０を参照して、ホスト２からＳＳＤ３にライトコマンドが送信される場合の動作例を示す。図９および図１０では、説明を分かりやすくするためにこの動作に関連する要素のみを示している。
【００９９】
図９に示す例では、複数のホスト２の内の認証済みホスト２ＡからＳＳＤ３にライトコマンドが送信される。上述したように、認証済みホスト２Ａは、例えば図３を参照して上述した動作によって、ＳＳＤ３による認証が成功し、一時認証子４２を取得したホスト２である。
【０１００】
まず認証済みホスト２Ａは、当該ホスト２Ａの認証が成功したことに応じてＳＳＤ３から取得した一時認証子４２を含むライトコマンドをＳＳＤ３に送信する。また認証済みホスト２Ａは、このライトコマンドに応じて書き込まれるべきユーザデータ４６をＳＳＤ３に送信する。ライトコマンドには、例えばユーザデータ４６が書き込まれるべきＬＢＡまたはＬＢＡ範囲が含まれている。
【０１０１】
リード／ライトコマンド処理部１２１はライトコマンドを受け付ける。リード／ライトコマンド処理部１２１は、ライトコマンド内の一時認証子４２を認証子処理部１２３に送出する。
【０１０２】
認証子処理部１２３は、ライトコマンド内の一時認証子４２と、ＤＲＡＭ６内に保存されている一時認証子２３とを比較することによって、２つの一時認証子４２，２３が一致しているか否かを判定する。ここでは、２つの一時認証子４２，２３が一致するので、認証子処理部１２３は、２つの一時認証子４２，２３が一致したことをリード／ライトコマンド処理部１２１に通知する。
【０１０３】
リード／ライトコマンド処理部１２１は、この通知に応じて、リード／ライトデータ処理部１２２に対して、ライトコマンドに応じたユーザデータの書き込みを指示する。
【０１０４】
リード／ライトデータ処理部１２２は、ライトコマンドが受け付けられたことに伴って認証済みホスト２Ａから受信したユーザデータ４６を、暗号回路１５に送出する。暗号回路１５は、認証済みホスト２Ａの認証が成功した際に設定された暗号鍵２２を用いて、ユーザデータ４６を暗号化する。暗号回路１５は、暗号化されたユーザデータ４６をＮＡＮＤインタフェース１３を介してＮＡＮＤ型フラッシュメモリ５に転送する。
【０１０５】
リード／ライトデータ処理部１２２は、転送されたユーザデータ４６の書き込み（より詳しくはプログラム）をＮＡＮＤ型フラッシュメモリ５に指示する。これにより、暗号化されたユーザデータ４６がＮＡＮＤ型フラッシュメモリ５内のユーザ領域５Ｂに書き込まれる。そして、リード／ライトデータ処理部１２２は、ユーザデータ４６が書き込まれた物理アドレスとＬＢＡとがマッピングされたエントリで、ＬＵＴ２１を更新する。
【０１０６】
以上により、正しい一時認証子４２を有する認証済みホスト２Ａは、ライトコマンドを用いてユーザデータ４６をＮＡＮＤ型フラッシュメモリ５に書き込むことができる。
【０１０７】
これに対して図１０に示す例では、複数のホスト２の内の未認証ホスト２ＢからＳＳＤ３にライトコマンドが送信される。上述したように、未認証ホスト２Ｂは、例えば図４を参照して上述した動作によってＳＳＤ３による認証が失敗したホスト２であるか、あるいはＳＳＤ３に認証要求コマンドをまだ送信していないホスト２である。
【０１０８】
まず未認証ホスト２Ｂは、一時認証子４５を含むライトコマンドをＳＳＤ３に送信する。この一時認証子４５は、ＳＳＤ３によるホスト２の認証が成功した場合に生成される一時認証子ではなく、不正な一時認証子である。あるいは、不正な一時認証子が含まれる代わりに、ライトコマンド内の一時認証子が含まれているべきフィールドは空であってもよい。また未認証ホスト２Ｂは、このライトコマンドに応じて書き込まれるべきユーザデータ４７をＳＳＤ３に送信する。ライトコマンドには、例えばユーザデータ４７が書き込まれるべきＬＢＡまたはＬＢＡ範囲が含まれている。
【０１０９】
リード／ライトコマンド処理部１２１はライトコマンドを受け付ける。リード／ライトコマンド処理部１２１は、ライトコマンド内の一時認証子４５を認証子処理部１２３に送出する。
【０１１０】
認証子処理部１２３は、ライトコマンド内の一時認証子４５と、ＤＲＡＭ６内に保存されている一時認証子２３とを比較することによって、２つの一時認証子４５，２３が一致しているか否かを判定する。ここでは、２つの一時認証子４５，２３が一致しないので、認証子処理部１２３は、２つの一時認証子４５，２３が一致しなかったことをリード／ライトコマンド処理部１２１に通知する。
【０１１１】
リード／ライトコマンド処理部１２１は、この通知に応じて、エラーを示す応答を未認証ホスト２Ｂに送信する。またリード／ライトコマンド処理部１２１は、この通知に応じて、未認証ホスト２Ｂから受信したユーザデータ４７の破棄をリード／ライトデータ処理部１２２に指示する。リード／ライトデータ処理部１２２は、この指示に応じてユーザデータ４７を破棄する。したがって、ユーザデータ４７はＮＡＮＤ型フラッシュメモリ５に書き込まれない。
【０１１２】
このように、正しい一時認証子４２を有していない未認証ホスト２Ｂは、ライトコマンドを用いてＮＡＮＤ型フラッシュメモリ５にユーザデータ４７を書き込むことができない。
【０１１３】
なお、上述した例では、ホスト２からＳＳＤ３にリードコマンドとライトコマンドが送信される場合についてそれぞれ説明したが、ホスト２からＳＳＤ３に送信されるアクセスコマンドは、アンマップコマンド、フォーマットコマンド、ベリファイコマンド等であってもよい。認証済みホスト２Ａは、いずれのアクセスコマンドにも一時認証子４２を含めてＳＳＤ３に送信する。ＳＳＤ３は、正しい一時認証子４２（すなわち、ＤＲＡＭ６内に保存された一時認証子２３と一致する一時認証子）を含むアクセスコマンドに応じた処理を行い、正しい一時認証子４２を含まないアクセスコマンドにはエラーを返す。これにより、ＳＳＤ３は、認証済みホスト２Ａによって送信されたアクセスコマンドに応じた処理のみを行い、未認証ホスト２Ｂによって送信されたアクセスコマンドに応じた処理を行わないように動作できる。
【０１１４】
図１１のフローチャートを参照して、比較例に係るメモリシステムにおいて一時認証子を用いないコントローラによって実行されるリード制御処理について説明すると共に、図１２のフローチャートを参照して、本実施形態の一時認証子を用いるコントローラ４によって実行されるリード制御処理について説明する。
【０１１５】
図１１は、一時認証子を用いないコントローラによるリード制御処理の手順の例を示す。このコントローラは、１つのホストの認証が成功した後に、接続される全てのホストからのアクセスコマンドに応じるように構成されている。ここでは、このコントローラを備えるＳＳＤに複数のホスト２が接続され、その内の１つのホスト２から認証要求コマンドとデータ読み出しを可能にすることを要求する設定変更コマンドとが送信される場合について例示する。
【０１１６】
まず、コントローラは、複数のホスト２のいずれかから、認証要求コマンドと設定変更コマンドとからなる２つのＴＣＧコマンドを受け付けたか否かを判定する（ステップＳ１０１）。いずれのホスト２からも２つのＴＣＧコマンドを受け付けていない場合（ステップＳ１０１のＮＯ）、ステップＳ１０１に戻り、２つのＴＣＧコマンドを受け付けたか否かが再度判定される。
【０１１７】
一方、あるホスト２（以下、第１ホストと称する）から２つのＴＣＧコマンドを受け付けた場合（ステップＳ１０１のＹＥＳ）、コントローラは、認証要求コマンドに含まれる第１ホスト２の認証情報を用いて、第１ホスト２の認証処理を行う（ステップＳ１０２）。そしてコントローラは、認証処理において第１ホスト２の認証が成功したか否かを判定する（ステップＳ１０３）。第１ホスト２の認証が失敗した場合（ステップＳ１０３のＮＯ）、コントローラは、認証失敗を示す認証結果を第１ホスト２に送信し（ステップＳ１０４）、ステップＳ１０１に戻る。
【０１１８】
第１ホスト２の認証が成功した場合（ステップＳ１０３のＹＥＳ）、コントローラは設定変更コマンドに基づいて、ＮＡＮＤ型フラッシュメモリからのデータ読み出しのロックを解除する（ステップＳ１０５）。コントローラは第１ホスト２の認証情報に対応する暗号鍵を生成し（ステップＳ１０６）、この暗号鍵を暗号回路に設定する（ステップＳ１０７）。設定された暗号鍵は、暗号回路によるユーザデータの暗号化および復号に用いられる。そしてコントローラは、認証成功を示す認証結果を第１ホスト２に送信する（ステップＳ１０８）。
【０１１９】
次いでコントローラは、複数のホスト２のいずれかからリードコマンドを受け付けたか否かを判定する（ステップＳ１０９）。いずれのホスト２からもリードコマンドを受け付けていない場合（ステップＳ１０９のＮＯ）、ステップＳ１０９に戻り、リードコマンドを受け付けたか否かが再度判定される。
【０１２０】
一方、あるホスト２（以下、第２ホストと称する）からリードコマンドを受け付けた場合（ステップＳ１０９のＹＥＳ）、このリードコマンドに応じて、コントローラは暗号化されたユーザデータをＮＡＮＤ型フラッシュメモリから読み出し（ステップＳ１１０）、暗号鍵が設定された暗号回路で、暗号化されたユーザデータを復号する（ステップＳ１１１）。そしてコントローラは、復号されたユーザデータを第２ホスト２に送信し（ステップＳ１１２）、ステップＳ１０９に戻る。この第２ホスト２は、ＳＳＤに接続されている複数のホスト２のいずれかであり、第１ホスト２と同一であってもよいし、第１ホスト２とは別のホストであってもよい。ステップＳ１０９からステップＳ１１２までの手順は、ＳＳＤが電源オフされるまで繰り返し行われ得る。
【０１２１】
以上のように、１つのホスト（ここでは第１ホスト２）の認証が成功した後、ＳＳＤに接続される全てのホスト２は、リードコマンドを送信することによりＳＳＤからユーザデータを読み出すことができる。したがって、リードコマンドを送信した第２ホスト２が、認証が成功した第１ホスト２とは異なるホストである場合には、認証処理が行われていない第２ホスト２によってＳＳＤからユーザデータが読み出されることになる。そのため、第２ホスト２が正当な認証情報を有していない未認証のホストであるならば、未認証の第２ホスト２によってＳＳＤ内のユーザデータが読み出され、ＳＳＤ内のユーザデータが漏洩する可能性がある。
【０１２２】
これに対して図１２は、本実施形態のコントローラ４によって実行されるリード制御処理の手順の例を示す。コントローラ４は、一時認証子を用いて、認証が成功したホスト２からのリードコマンドのみに応じてＮＡＮＤ型フラッシュメモリ５からデータを読み出す機能を有している。ここでは、このコントローラ４に、あるホスト２から認証要求コマンドとデータ読み出しを可能にすることを要求する設定変更コマンドとが送信される場合について例示する。
【０１２３】
まずコントローラ４は、ＳＳＤ３に接続されている複数のホスト２のいずれかから、認証要求コマンドと設定変更コマンドとからなる２つのＴＣＧコマンドを受け付けたか否かを判定する（ステップＳ２０１）。いずれのホスト２からも２つのＴＣＧコマンドを受け付けていない場合（ステップＳ２０１のＮＯ）、ステップＳ２０１に戻り、２つのＴＣＧコマンドを受け付けたか否かが再度判定される。
【０１２４】
一方、あるホスト２（以下、第１ホストと称する）から２つのＴＣＧコマンドを受け付けた場合（ステップＳ２０１のＹＥＳ）、コントローラ４は、認証要求コマンドに含まれる第１ホスト２の認証情報を用いて第１ホスト２の認証処理を行う（ステップＳ２０２）。そしてコントローラ４は、認証処理において第１ホスト２の認証が成功したか否かを判定する（ステップＳ２０３）。第１ホスト２の認証が失敗した場合（ステップＳ２０３のＮＯ）、コントローラ４は認証失敗を示す認証結果を第１ホスト２に送信し（ステップＳ２０４）、ステップＳ２０１に戻る。なお、認証の失敗が連続して発生した回数が特定の回数を超えた場合には、コントローラ４はさらなる認証要求コマンドを受け付けないように構成されてもよい。
【０１２５】
第１ホスト２の認証が成功した場合（ステップＳ２０３のＹＥＳ）、コントローラ４は設定変更コマンドに基づいて、ＮＡＮＤ型フラッシュメモリ５からのデータ読み出しのロックを解除する（ステップＳ２０５）。コントローラは、第１ホスト２の認証情報に対応する暗号鍵２２と、一時認証子２３とを生成する（ステップＳ２０６）。一時認証子２３は、例えば乱数を、あるいは乱数および第１ホスト２の識別子を含む。コントローラ４は、生成された暗号鍵２２を暗号回路１５に設定する（ステップＳ２０７）。設定された暗号鍵２２は、暗号回路１５によるユーザデータの暗号化および復号に用いられる。そしてコントローラ４は、認証成功を示す認証結果と生成された一時認証子２３とを第１ホスト２に送信する（ステップＳ２０８）。
【０１２６】
次いでコントローラ４は、複数のホスト２のいずれかからリードコマンドを受け付けたか否かを判定する（ステップＳ２０９）。いずれのホスト２からもリードコマンドを受け付けていない場合（ステップＳ２０９のＮＯ）、ステップＳ２０９に戻る。
【０１２７】
あるホスト２（以下、第２ホストと称する）からリードコマンドを受け付けた場合（ステップＳ２０９のＹＥＳ）、コントローラ４は、ステップＳ２０６で生成された一時認証子２３と、リードコマンドに含まれる一時認証子とが一致しているか否かを判定する（ステップＳ２１０）。この第２ホスト２は、ＳＳＤ３に接続されている複数のホスト２のいずれかである。
【０１２８】
生成された一時認証子２３とリードコマンドに含まれる一時認証子とが異なる場合（ステップＳ２１０のＮＯ）、コントローラ４は、第２ホスト２にエラーを通知し（ステップＳ２１１）、ステップＳ２０９に戻る。なお、一時認証子の不一致によるエラーが連続して発生した回数が特定の回数を超えた場合には、コントローラ４はさらなるリードコマンドを受け付けないように構成されてもよい。
【０１２９】
一方、生成された一時認証子２３とリードコマンドに含まれる一時認証子とが一致した場合（ステップＳ２１０のＹＥＳ）、このリードコマンドに応じて、コントローラ４は暗号化されたユーザデータをＮＡＮＤ型フラッシュメモリ５から読み出す（ステップＳ２１２）。コントローラ４は、暗号鍵２２が設定された暗号回路１５で、暗号化されたユーザデータを復号する（ステップＳ２１３）。そして、コントローラ４は、復号されたユーザデータを第２ホスト２に送信し（ステップＳ２１４）、ステップＳ２０９に戻る。ステップＳ２０９からステップＳ２１４までの手順は、ＳＳＤ３が電源オフされるまで繰り返し行われ得る。
【０１３０】
以上のように、認証が成功した１つのホスト（ここでは第１ホスト２）に一時認証子２３が送信され、この一時認証子２３を含むリードコマンドのみに応じて、ＮＡＮＤ型フラッシュメモリ５からユーザデータが読み出される。つまり、一時認証子２３を含まないリードコマンドが受け付けられた場合には、ＳＳＤ３からユーザデータが読み出されない。
【０１３１】
したがって、認証が成功した第１ホスト２に送信される一時認証子２３を用いて、一時認証子２３を有する第２ホスト２（すなわち、第１ホスト２と同一である第２ホスト２）のみがＳＳＤ３からユーザデータを読み出すことができるように制御される。一方、一時認証子２３を有さない第２ホスト２（すなわち、第１ホスト２とは異なる第２ホスト２）はＳＳＤ３からユーザデータを読み出すことができないように制御される。これにより、正当な認証情報を有していない未認証のホスト２によってＳＳＤ３内のユーザデータが読み出され、ＳＳＤ３内のユーザデータが漏洩することを防止できる。
【０１３２】
図１３のフローチャートを参照して、比較例に係るメモリシステム一時認証子を用いないコントローラによって実行されるライト制御処理について説明すると共に、図１４のフローチャートを参照して、本実施形態の一時認証子を用いるコントローラ４によって実行されるライト制御処理について説明する。
【０１３３】
図１３は、一時認証子を用いないコントローラによるライト制御処理の手順の例を示す。このコントローラは、１つのホストの認証が成功した後に、接続される全てのホストからのアクセスコマンドに応じるように構成されている。ここでは、このコントローラを備えるＳＳＤに複数のホスト２が接続され、その内の１つのホスト２から認証要求コマンドとデータ書き込みを可能にすることを要求する設定変更コマンドとが送信される場合について例示する。なお、ステップＳ３０１からステップＳ３０４までの手順は、図１１のフローチャートを参照して上述したステップＳ１０１からステップＳ１０４までの手順と同様である。
【０１３４】
第１ホスト２の認証が成功した場合（ステップＳ３０３のＹＥＳ）、コントローラは設定変更コマンドに基づいて、ＮＡＮＤ型フラッシュメモリへのデータ書き込みのロックを解除する（ステップＳ３０５）。コントローラは第１ホスト２の認証情報に対応する暗号鍵を生成し（ステップＳ３０６）、この暗号鍵を暗号回路に設定する（ステップＳ３０７）。設定された暗号鍵は、暗号回路によるユーザデータの暗号化および復号に用いられる。そしてコントローラは、認証成功を示す認証結果を第１ホスト２に送信する（ステップＳ３０８）。
【０１３５】
次いでコントローラは、複数のホスト２のいずれかからライトコマンドを受け付けたか否かを判定する（ステップＳ３０９）。いずれのホスト２からもライトコマンドを受け付けていない場合（ステップＳ３０９のＮＯ）、ステップＳ３０９に戻る。
【０１３６】
一方、あるホスト２（以下、第２ホストと称する）からライトコマンドを受け付けた場合（ステップＳ３０９のＹＥＳ）、コントローラは書き込み対象のユーザデータを第２ホスト２から受信する（ステップＳ３１０）。コントローラは暗号鍵が設定された暗号回路で、受信したユーザデータを暗号化する（ステップＳ３１１）。そして、コントローラは、暗号化されたユーザデータをＮＡＮＤ型フラッシュメモリに書き込み（ステップＳ３１２）、ステップＳ３０９に戻る。この第２ホスト２は、ＳＳＤに接続されている複数のホスト２のいずれかであり、第１ホスト２と同一であってもよいし、第１ホスト２とは別のホストであってもよい。また、ステップＳ３０９からステップＳ３１２までの手順は、ＳＳＤが電源オフされるまで繰り返し行われ得る。
【０１３７】
以上のように、１つのホスト（ここでは第１ホスト２）の認証が成功した後、ＳＳＤに接続される全てのホスト２は、ライトコマンドを送信することによりＳＳＤにデータを書き込むことができる。したがって、ライトコマンドを送信した第２ホスト２が、認証が成功した第１ホスト２とは異なるホストである場合には、認証処理が行われていない第２ホスト２によってＳＳＤにデータが書き込まれることになる。そのため、第２ホスト２が正当な認証情報を有していない未認証のホストであるならば、未認証の第２ホスト２によってＳＳＤにデータが書き込まれ、ＳＳＤ内のデータが改竄される可能性がある。
【０１３８】
これに対して図１４は、本実施形態のコントローラ４によって実行されるライト制御処理の手順の例を示す。コントローラ４は、認証が成功したホスト２からのライトコマンドのみに応じてＮＡＮＤ型フラッシュメモリ５にデータを書き込む機能を有している。ここでは、このコントローラ４に、あるホスト２から認証要求コマンドとデータ書き込みを可能にすることを要求する設定変更コマンドとが送信される場合について例示する。なお、ステップＳ４０１からステップＳ４０４までの手順は、図１２のフローチャートを参照して上述したステップＳ２０１からステップＳ２０４までの手順と同様である。
【０１３９】
第１ホスト２の認証が成功した場合（ステップＳ４０３のＹＥＳ）、コントローラ４は、設定変更コマンドに基づいて、ＮＡＮＤ型フラッシュメモリ５へのデータ書き込みのロックを解除する（ステップＳ４０５）。コントローラ４は、第１ホスト２の認証情報に対応する暗号鍵２２と、一時認証子２３とを生成する（ステップＳ４０６）。一時認証子２３は、例えば乱数を、あるいは乱数および第１ホスト２の識別子を含む。コントローラ４は、生成された暗号鍵２２を暗号回路１５に設定する（ステップ４０７）。設定された暗号鍵２２は、暗号回路１５によるユーザデータの暗号化および復号に用いられる。そしてコントローラ４は、認証成功を示す認証結果と生成された一時認証子２３とを第１ホスト２に送信する（ステップＳ４０８）。
【０１４０】
次いでコントローラ４は、複数のホスト２のいずれかからライトコマンドを受け付けたか否かを判定する（ステップＳ４０９）。いずれのホスト２からもライトコマンドを受け付けていない場合（ステップＳ４０９のＮＯ）、ステップＳ４０９に戻る。
【０１４１】
あるホスト２（以下、第２ホストと称する）からライトコマンドを受け付けた場合（ステップＳ４０９のＹＥＳ）、コントローラ４は、書き込み対象のユーザデータを第２ホスト２から受信する（ステップＳ４１０）。この第２ホスト２は、ＳＳＤ３に接続されている複数のホスト２のいずれかである。コントローラ４は、ステップＳ４０６で生成された一時認証子２３と、ライトコマンドに含まれる一時認証子とが一致しているか否かを判定する（ステップＳ４１１）。
【０１４２】
生成された一時認証子２３とライトコマンドに含まれる一時認証子とが異なる場合（ステップＳ４１１のＮＯ）、コントローラ４は第２ホスト２にエラーを通知し（ステップＳ４１２）、ステップＳ４０９に戻る。なお、一時認証子の不一致によるエラーが連続して発生した回数が特定の回数を超えた場合には、コントローラ４はさらなるライトコマンドを受け付けないように構成されてもよい。
【０１４３】
一方、生成された一時認証子２３とライトコマンドに含まれる一時認証子とが一致した場合（ステップＳ４１１のＹＥＳ）、コントローラ４は、暗号鍵２２が設定された暗号回路で、受信したユーザデータを暗号化する（ステップＳ４１３）。そして、コントローラ４は、暗号化されたユーザデータをＮＡＮＤ型フラッシュメモリ５に書き込み（ステップＳ４１４）、ステップＳ４０９に戻る。ステップＳ４０９からステップＳ４１４までの手順は、ＳＳＤ３が電源オフされるまで繰り返し行われ得る。
【０１４４】
以上のように、認証が成功した１つのホスト（ここでは第１ホスト２）に一時認証子２３が送信され、この一時認証子２３を含むライトコマンドのみに応じてＳＳＤ３にユーザデータが書き込まれる。つまり、一時認証子２３を含まないライトコマンドが受け付けられた場合には、ＳＳＤ３にデータが書き込まれない。
【０１４５】
したがって、認証が成功した第１ホスト２に送信される一時認証子２３を用いて、一時認証子２３を有する第２ホスト２（すなわち、第１ホスト２と同一である第２ホスト２）のみがＳＳＤ３にデータを書き込むことができるように制御される。一方、一時認証子２３を有さない第２ホスト２（すなわち、第１ホスト２とは異なる第２ホスト２）はＳＳＤ３にデータを書き込むことができないように制御される。これにより、正当な認証情報を有していない未認証のホストによってＳＳＤ３にデータが書き込まれ、ＳＳＤ３内のデータが改竄されることを防止できる。
【０１４６】
以上説明したように、本実施形態によれば、ストレージへのアクセスに対するセキュリティを強化できる。ＴＣＧコマンド処理部１２４は、第１ホスト２から認証要求コマンドを受け付け、認証要求コマンドに含まれる認証情報を用いた第１ホスト２の認証が成功した場合、第１ホスト２に第１認証子を送信する。リード／ライトコマンド処理部１２１は、第２ホスト２からＮＡＮＤ型フラッシュメモリ５にアクセスするためのアクセスコマンドを受け付けた場合、アクセスコマンドに含まれる第２認証子が第１認証子と一致するならば、アクセスコマンドに応じたＮＡＮＤ型フラッシュメモリ５へのアクセスを許可し、第２認証子が第１認証子と一致しないならば、アクセスコマンドに応じたＮＡＮＤ型フラッシュメモリ５へのアクセスを禁止するように構成される。
【０１４７】
これにより、正しい一時認証子を有するホスト２のみがアクセスコマンドを用いてＮＡＮＤ型フラッシュメモリ５にアクセスできるので、ＮＡＮＤ型フラッシュメモリ５へのアクセスに対するセキュリティを強化することができる。
【０１４８】
また、本実施形態に記載された様々な機能の各々は、回路（処理回路）によって実現されてもよい。処理回路の例には、中央処理装置（ＣＰＵ）のような、プログラムされたプロセッサが含まれる。このプロセッサは、メモリに格納されたコンピュータプログラム（命令群）を実行することによって、記載された機能それぞれを実行する。このプロセッサは、電気回路を含むマイクロプロセッサであってもよい。処理回路の例には、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、マイクロコントローラ、コントローラ、他の電気回路部品も含まれる。本実施形態に記載されたＣＰＵ以外の他のコンポーネントの各々もまた処理回路によって実現されてもよい。
【０１４９】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１５０】
１…情報処理システム、２…ホスト、３…ＳＳＤ、４…コントローラ、５…ＮＡＮＤ型フラッシュメモリ、６…ＤＲＡＭ、１０…バス、１１…ホストインタフェース、１２…ＣＰＵ、１３…ＮＡＮＤインタフェース、１４…ＤＲＡＭインタフェース、１５…暗号回路、１２１…リード／ライトコマンド処理部、１２２…リード／ライトデータ処理部、１２３…認証子処理部、１２４…ＴＣＧコマンド処理部、１２５…認証子管理部、１２６…暗号鍵生成部、２１…ＬＵＴ、２２…暗号鍵、２３…一時認証子、３１…認証情報。
【図１】
2020119298.tif 000003
【図２】
2020119298.tif 000004
【図３】
2020119298.tif 000005
【図４】
2020119298.tif 000006
【図５】
2020119298.tif 000007
【図６】
2020119298.tif 000008
【図７】
2020119298.tif 000009
【図８】
2020119298.tif 000010
【図９】
2020119298.tif 000011
【図１０】
2020119298.tif 000012
【図１１】
2020119298.tif 000013
【図１２】
2020119298.tif 000014
【図１３】
2020119298.tif 000015
【図１４】
2020119298.tif 000016