(57)【特許請求の範囲】
【請求項１】
パブリックメモリ領域内の仮想ファイルを使用して、プライベートメモリ領域内の複数の保護ファイルにアクセスする方法であって、
前記方法は、
パブリックメモリ領域およびプライベートメモリ領域を有する記憶装置のコントローラに以下のステップを実行させる、方法。
（ａ）前記パブリックメモリ領域内の仮想ファイルにアクセスするために、ホストからのリクエストを受信するステップ。
ここで前記仮想ファイルは、前記プライベートメモリ領域内に記憶された複数の保護ファイルに関連している。
（ｂ）前記プライベートメモリ領域内に記憶された前記複数の保護ファイルの１つへのアクセスを選択して前記ホストに提供することによって、前記仮想ファイルへのアクセスについての前記リクエストに対して応答するステップ。
（ｃ）前記仮想ファイルへのアクセスのための追加リクエストを前記ホストから受信するステップ。
ここで前記コントローラは、前記プライベートメモリ領域内に記憶された前記複数の保護ファイルの別の１つへのアクセスを選択して前記ホストに提供することによって、前記追加リクエストに応答する。
【請求項２】
前記コントローラがどのようにして前記プライベートメモリ領域内の前記複数の保護ファイルを管理するかを判断するルールの集合を記憶しているアプリケーションを実行するステップの後に、前記コントローラが（ａ）〜（ｃ）を実行する、請求項１に記載の方法。
【請求項３】
前記ホストが前記記憶装置に対して認証されている場合に、（ｂ）〜（ｃ）が実行され、
前記ホストが前記記憶装置に対して認証されていない場合に、専用のコマーシャル（a dedicated commercial）を供給することによって、前記コントローラが前記リクエストに応答する、請求項１または２に記載の方法。
【請求項４】
前記仮想ファイルのサイズが、最大の保護ファイルのサイズと少なくとも同じである、請求項１〜３の何れか１項に記載の方法。
【請求項５】
選択された前記保護ファイルのサイズを、前記ホストへ供給するステップをさらに備える、請求項４に記載の方法。
【請求項６】
前記選択された保護ファイルの前記サイズは、前記仮想ファイルの前記サイズよりも小さく、
前記方法は、サイズの差に対応するために、前記保護ファイルをデータでパディングするステップをさらに備える、請求項４または５に記載の方法。
【請求項７】
前記仮想ファイルは、前記パブリックメモリ領域内の物理領域に割り当てられる、請求項１〜６の何れか１項に記載の方法。
【請求項８】
前記仮想ファイルは、前記パブリックメモリ領域内の物理領域に割り当てられない、請求項１〜６の何れか１項に記載の方法。
【請求項９】
前記保護ファイルは、専用のファイルシステムを用いてアクセスされる、請求項１〜８の何れか１項に記載の方法。
【請求項１０】
前記ホストからの前記リクエストは、２つ以上のコマンドの複合コマンドを備えている、請求項１〜９の何れか１項に記載の方法。
【請求項１１】
以下のステップのうちの少なくとも１つを実行するステップをさらに備える、請求項１〜１０の何れか１項に記載の方法。
修正データを前記仮想ファイルに書き込むことによって、前記プライベートメモリ領域に記憶された保護ファイルを修正するステップ。
新しい保護ファイルを前記仮想ファイルに書き込むことによって、前記プライベートメモリ領域へ前記新しい保護ファイルを追加するステップ。
【請求項１２】
前記保護ファイルは暗号化されている、請求項１〜１１の何れか１項に記載の方法。
【請求項１３】
前記仮想ファイルがコピーされることを防止するために、カウンタを使用するステップをさらに備える、請求項１〜１２の何れか１項に記載の方法。
【請求項１４】
前記仮想ファイルがコピーされることを防止するために、データレートコントロール機構を使用するステップをさらに備える、請求項１〜１３の何れか１項に記載の方法。
【請求項１５】
前記仮想ファイルがコピーされることを防止するために、スライドウインドウを使用するステップをさらに備える、請求項１〜１４の何れか１項に記載の方法。
【請求項１６】
パブリックメモリ領域と、
プライベートメモリ領域と、
前記パブリックメモリ領域および前記プライベートメモリ領域と通信するコントローラと、を備え、
前記コントローラが、以下の動作を行うように構成されている、記憶装置。
（ａ）前記パブリックメモリ領域内の仮想ファイルにアクセスするために、ホストからのリクエストを受信する。
ここで前記仮想ファイルは、前記プライベートメモリ領域内に記憶された複数の保護ファイルに関連している。
（ｂ）前記プライベートメモリ領域内に記憶された前記複数の保護ファイルの１つへのアクセスを選択して前記ホストに提供することによって、前記仮想ファイルへのアクセスについての前記リクエストに対して応答する。
（ｃ）前記仮想ファイルへのアクセスのための追加リクエストを前記ホストから受信する。
ここで前記コントローラは、前記プライベートメモリ領域内に記憶された前記複数の保護ファイルの別の１つへのアクセスを選択して前記ホストに提供することによって、前記追加リクエストに応答するように構成されている。
【請求項１７】
前記コントローラがどのようにして前記プライベートメモリ領域内の前記複数の保護ファイルを管理するかを判断するルールの集合を記憶しているアプリケーションを実行するステップの後に、前記コントローラが（ａ）〜（ｃ）を実行するように動作する、請求項１６に記載の記憶装置。
【請求項１８】
前記ホストが前記記憶装置に対して認証されている場合に、（ｂ）〜（ｃ）が実行され、
前記ホストが前記記憶装置に対して認証されていない場合に、専用のコマーシャル（a dedicated commercial）を供給することによって、前記コントローラが前記リクエストに応答するように動作する、請求項１６または１７に記載の記憶装置。
【請求項１９】
前記仮想ファイルのサイズが、最大の保護ファイルのサイズと少なくとも同じである、請求項１６〜１８の何れか１項に記載の記憶装置。
【請求項２０】
選択された前記保護ファイルのサイズを前記ホストへ供給するように、前記コントローラがさらに動作する、請求項１９に記載の記憶装置。
【請求項２１】
前記選択された保護ファイルの前記サイズは、前記仮想ファイルの前記サイズよりも小さく、
前記コントローラは、サイズの差に対応するために、前記保護ファイルをデータで膨らませるようにさらに動作する、請求項１９または２０に記載の記憶装置。
【請求項２２】
前記仮想ファイルは、前記パブリックメモリ領域内の物理領域に割り当てられる、請求項１６〜２１の何れか１項に記載の記憶装置。
【請求項２３】
前記仮想ファイルは、前記パブリックメモリ領域内の物理領域に割り当てられない、請求項１６〜２１の何れか１項に記載の記憶装置。
【請求項２４】
前記保護ファイルは、専用のファイルシステムを用いてアクセスされる、請求項１６〜２３の何れか１項に記載の記憶装置。
【請求項２５】
前記ホストからの前記リクエストは、２つ以上のコマンドの複合コマンドを備えている、請求項１６〜２４の何れか１項に記載の記憶装置。
【請求項２６】
前記コントローラが、以下の動作のうちの少なくとも１つを実行するようにさらに動作する、請求項１６〜２５の何れか１項に記載の記憶装置。
修正データを前記仮想ファイルに書き込むことによって、前記プライベートメモリ領域に記憶された保護ファイルを修正する。
新しい保護ファイルを前記仮想ファイルに書き込むことによって、前記プライベートメモリ領域へ前記新しい保護ファイルを追加する。
【請求項２７】
前記保護ファイルは暗号化されている、請求項１６〜２６の何れか１項に記載の記憶装置。
【請求項２８】
前記仮想ファイルがコピーされることを防止するために、カウンタを使用するように前記コントローラがさらに動作する、請求項１６〜２７の何れか１項に記載の記憶装置。
【請求項２９】
前記仮想ファイルがコピーされることを防止するために、データレートコントロール機構を使用するように前記コントローラがさらに動作する、請求項１６〜２８の何れか１項に記載の記憶装置。
【請求項３０】
前記仮想ファイルがコピーされることを防止するために、スライドウインドウを使用するように前記コントローラがさらに動作する、請求項１６〜２９の何れか１項に記載の記憶装置。
【発明の詳細な説明】
【背景技術】
【０００１】
メモリカードのような記憶装置は、デジタルオーディオ（例：音楽）および／またはビデオ（例：映画）などのコンテンツを記憶するために、しばしば用いられる。コンテンツを不正アクセスから守るために、認証されたホストのみがアクセスできる、記憶装置内のプライベートメモリ領域に、コンテンツを記憶することができる。一般的には、認証のために、ホストは自己の認証情報を記憶装置に示す。ホストが認証されると、記憶装置はホストに対して、プライベートメモリ領域内に記憶されたコンテンツにアクセスすることを許可する。このセキュリティシステムは、認証されていないホストが、プライベートメモリ領域内に記憶されたコンテンツにアクセスすることを防止するが、認証されたホストが、ウイルスや他の悪質なソフトウェアを有している場合には、問題が発生しうる。このような状況において、認証されたホストがプライベートメモリ領域へのアクセスを一たび許可されると、ホスト上の悪質なソフトウェアは、プライベートメモリ領域内に記憶されたデータに対して不正行為を実行するために、そのアクセスを利用することができる。
【発明の概要】
【課題を解決するための手段】
【０００２】
本発明の形態は特許請求の範囲によって規定されるものであり、このセクションの何れの記載も特許請求の範囲の限定事項と解釈すべきではない。
【０００３】
例として、以下に記載された実施形態は、プライベート領域内の複数の保護ファイルにアクセスするためにパブリックメモリ領域内の仮想ファイルを使用する、記憶装置および方法に広く関連する。一実施形態では、記憶装置は、パブリックメモリ領域内の仮想ファイルにアクセスするためのリクエストを、ホストから受信する。仮想ファイルは、プライベートメモリ領域内に記憶された複数の保護ファイルに関連している。記憶装置は、プライベートメモリ領域内に記憶された複数の保護ファイルの１つへのアクセスを選択してホストに提供することによって、リクエストに対して応答する。記憶装置は、仮想ファイルへのアクセスのための追加リクエストをホストから受信する。記憶装置は、プライベートメモリ領域内に記憶された複数の保護ファイルの別の１つへのアクセスを選択してホストに提供することによって、追加リクエストに応答する。
【０００４】
他の実施形態も提供される。各実施形態は、単独または組み合わせて一緒に用いることができる。添付した図を参照して、様々な実施形態について説明する。
【図面の簡単な説明】
【０００５】
【図１】一実施形態のホストおよび記憶装置のブロック図である。
【０００６】
【図２】一実施形態のホストおよび記憶装置のブロック図である。
【０００７】
【図３Ａ】一実施形態のホストのブロック図である。
【０００８】
【図３Ｂ】一実施形態の記憶装置のブロック図である。
【０００９】
【図４Ａ】一実施形態のログイン処理のフロー図である。
【図４Ｂ】一実施形態のログイン処理のフロー図である。
【００１０】
【図５Ａ】一実施形態のログイン後の読み出し処理のフロー図である。
【図５Ｂ】一実施形態のログイン後の読み出し処理のフロー図である。
【００１１】
【図６Ａ】一実施形態のログインなしの読み出し処理のフロー図である。
【図６Ｂ】一実施形態のログインなしの読み出し処理のフロー図である。
【００１２】
【図７】一実施形態の通常ファイルにアクセスするための処理のフロー図である。
【００１３】
【図８Ａ】範囲外のデータにアクセスするとともに追加データでファイルをパディングするための、一実施形態の処理のフロー図である。
【図８Ｂ】範囲外のデータにアクセスするとともに追加データでファイルをパディングするための、一実施形態の処理のフロー図である。
【００１４】
【図９Ａ】一実施形態のファイルの実際の長さを判断する処理のフロー図である。
【図９Ｂ】一実施形態のファイルの実際の長さを判断する処理のフロー図である。
【００１５】
【図１０Ａ】暗号化を用いた一実施形態の保護処理のフロー図である。
【図１０Ｂ】暗号化を用いた一実施形態の保護処理のフロー図である。
【００１６】
【図１１Ａ】カウンタを用いた一実施形態の保護処理のフロー図である。
【図１１Ｂ】カウンタを用いた一実施形態の保護処理のフロー図である。
【００１７】
【図１２Ａ】スライドウインドウを用いた一実施形態の保護処理のフロー図である。
【図１２Ｂ】スライドウインドウを用いた一実施形態の保護処理のフロー図である。
【００１８】
【図１３Ａ】データレートコントロールのための一実施形態の処理のフロー図である。
【図１３Ｂ】データレートコントロールのための一実施形態の処理のフロー図である。
【００１９】
【図１４Ａ】コンテンツを追加する一実施形態の処理のフロー図である。
【図１４Ｂ】コンテンツを追加する一実施形態の処理のフロー図である。
【発明を実施するための形態】
【００２０】
序論
【００２１】
以下の実施形態は、プライベート領域内の複数の保護ファイルにアクセスするためにパブリックメモリ領域内の仮想ファイルを使用する、記憶装置および方法に広く関連する。これらの実施形態では、パブリックメモリ領域は、プライベートメモリ領域内の複数の保護ファイルへのゲートウェイとしての役割を果たす、仮想ファイルを含んでいる。（例えば、仮想ファイルの論理ブロックアドレスへのアクセスの試行から、）ホストが仮想ファイルにアクセスを試行していることを記憶装置内のコントローラが検出した場合、コントローラは複数の保護ファイルがあれば、何れがホストへ供給されるべきかを判断する。
【００２２】
これらの実施形態に関連する、幾つかの利点が存在する。例えば、（多くの携帯機器および携帯電話で用いられるような）Ｊａｖａ（登録商標）および他の定義済みのアプリケーション・プログラミング・インターフェース（ＡＰＩｓ）は、ファイルベース・コマンド（file-based commands）のみを許可し、記憶装置を制御してプライベートメモリ領域内の特定の保護ファイルへアクセスするために使用することができるローレベル・コマンド（low-level commands）を使用しない。一部の記憶装置は、プライベートメモリ領域の全体へのホストアクセスを許可することができるため、ホスト上の悪質なソフトウェアがプライベート記憶領域への当該オープンアクセスを利用した場合には、不正なアクションにつながることがある。プライベート記憶領域外への保護ファイルのストリーミングをサポートする独自仕様のＡＰＩが書き込まれることがあるが、比較的少ないモバイル機器がそのようなＡＰＩを許可していた。適切な保護ファイルへのアクセスの選択及びホストへの提供を記憶装置内のコントローラが管理する状態において、Ｊａｖａ（登録商標）で用いられるファイルベース・コマンド、および、他の定義済みのＡＰＩｓは、仮想ファイルにアクセスするために用いることができるため、プライベートメモリ領域内の保護ファイルに対して、パブリックメモリ領域内の仮想ファイルをゲートウェイとして使用することで、この問題を克服できる。このようにして、これらの実施形態は、保護された方法で記憶装置に対するデータのストリーミング入力及び出力をコントロールすることができる記憶装置を可能としながら、多数のホスト上や異なるオペレーティングシステム上で用いることができる、一般的な解決方法を提供する。
【００２３】
典型的な仮想ファイルの実施形態
【００２４】
図面を参照する。図１は、実施形態の記憶装置１００と通信する、ホスト５０のブロック図である。ここでは、「通信する」の文言は、本明細書に図示・記述された（または図示・記述されていない）１つ以上の要素と、直接にまたは間接に通信することを意味する。ホスト５０は、例えば、専用のコンテンツプレーヤ、携帯電話、パーソナルコンピュータ（ＰＣ）、ゲーム機器、パーソナル・デジタル・アシスタント（ＰＤＡ）、キオスク（a kiosk）、およびテレビシステムなどの好適な形態をとることができるが、これらの形態に限られない。記憶装置１００も、例えば、携帯式、かつ着脱式のメモリカード（例：フラッシュ記憶カード）、ユニバーサル・シリアル・バス（ＵＳＢ）デバイス、および半導体ドライブなどの好適な形態をとることができるが、これらの形態に限られない。記憶装置１００が取り外し可能にホスト５０に接続されることで、ユーザが記憶装置１００を様々なホストに使用することができることが好ましい。
【００２５】
図１に示されるように、記憶装置１００は、コントローラ１１０とメモリ１２０とを備えている。コントローラ１１０は、何らかの適切な方法によって実装されていてもよい。例えば、コントローラ１１０は、マイクロプロセッサまたはプロセッサ、および、コンピュータで読み取り可能な媒体の形態をとることができる。コンピュータで読み取り可能な媒体は、例えば、（マイクロ）プロセッサ、論理ゲート、スイッチ、特定用途向け集積回路（ＡＳＩＣ）、プログラマブル論理制御装置、および埋め込みマイクロコントローラによって実行可能な、コンピュータで読み取り可能なプログラムコード（例：ソフトウェアまたはファームウェア）を記憶している。コントローラの例としては、以下のマイクロコントローラが挙げられるが、これらに限定されない：ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20、およびSilicon Labs C8051F320。コントローラで使用することができる多数の要素の例は、以下の実施形態で記述されるとともに、関連する図面に図示される。コントローラ１１０は、メモリ制御論理の一部として実装することもできる。
【００２６】
また図１に図示されるように、記憶装置１００は、何らかの好適な形態をとることができるメモリ１２０を備えている。一実施形態では、メモリ１２０は半導体（例：フラッシュ）メモリの形態をとっている。メモリ１２０は、１回のみプログラム可能、複数回プログラム可能、または多数回プログラム可能、とすることができる。しかしながら、光メモリや磁気メモリなどの、他のメモリ形態を用いることもできる。図１において単一要素として記載されているが、コントローラ１１０および／またはメモリ１２０は、幾つかの要素で構成されていても良い。図１では、メモリ１２０は、パブリックメモリ領域１３０およびプライベートメモリ領域１４０を備えている。この実施形態では、パブリックメモリ領域１３０およびプライベートメモリ領域１４０は、１つのメモリ装置の異なるパーティションである。しかしながら他の実施形態では、パブリックメモリ領域１３０およびプライベートメモリ領域１４０は、異なるメモリ装置である。パブリックメモリ領域１３０は、制限なく広くアクセス可能である。一方、プライベートメモリ領域１４０は、認証されたエンティティによってのみアクセス可能とされ、一般にはホストには見えない（例：隠しパーティション）。従って、プライベートメモリ領域１４０は、認証されたエンティティのみにアクセスされるべき複数のコンテンツファイル（ここでは、ファイル１〜Ｎ）を記憶するために、用いられることができる。「コンテンツファイル」は、デジタルビデオ（音声が付随するか否かに関わらない）（例：映画、テレビ番組の一話、ニュースプログラム、など）、オーディオ（例：歌、ポッドキャスト、一つのまたは一連のサウンド、オーディオブック、など）、静止画または動画（例：写真、コンピュータで生成された表示、など）、テキスト（図が付随するか否かに関わらない）（例：記事、テキストファイル、など）、ビデオゲームまたは他のソフトウェア、および、これらの２つ以上の形態が組み合わされたマルチメディアによる態様などの、何らかの好適な形態をとることができる。しかし、これらの形態に限定されない。「コンテンツ、」「コンテンツファイル、」および「ファイル」の文言は、この明細書では区別せずに用いられることがある。プライベートメモリ領域１４０に記憶されたファイルは、「保護ファイル」と呼ばれることがある。
【００２７】
この実施形態では、パブリックメモリ領域１３０は仮想ファイル１５０を収容している。仮想ファイル１５０は、パブリックメモリ領域１３０についてのファイル・アロケーション・テーブル（ＦＡＴ）内に割り当て論理ブロックアドレスとして存在するが、何れのデータも含んでおらず、実際にアクセス可能ではないという意味で、「仮想」である。仮想ファイル１５０に対して、何れの物理記憶ロケーションもパブリックメモリ領域１３０内に割り当てられないことがある。（しかしながら、以下に記述するように一部の実施形態では、仮想ファイル１５０に対して、比較的小さな量の物理記憶ロケーション（例：１５ＭＢ）が、パブリックメモリ領域１３０内に割り当てられることがある。）しかしながら仮想ファイル１５０は、パブリックメモリ領域１３０内のＦＡＴテーブルに仮想ファイル１５０が割り当てられた論理ブロックアドレスを有するため、仮想ファイル１５０はホスト５０に対して通常ファイルとして現れることができる。
【００２８】
この実施形態では、仮想ファイル１５０は、プライベートメモリ領域１４０内の複数の保護ファイル１〜Ｎに対するゲートウェイとしての機能を果たす。すなわち、（例えば、読み出しコマンドで定められた論理ブロックアドレスから、）仮想ファイル１５０へのアクセス試行が行われたことをコントローラ１１０が認識した場合、コントローラ１１０は、仮想ファイル１５０自身へのアクセスをホスト５０に提供することに代えて、特別な動作を行う。例えば、仮想ファイル１５０にアクセスするためのリクエストをコントローラ１１０がホスト５０から受信した場合に、コントローラ１１０は、プライベートメモリ領域１４０内に記憶された複数の保護ファイル１〜Ｎのうちの１つを選択することができるとともに、選択された保護ファイルへのアクセスをホスト５０に提供することによってリクエストに応答することができる。同一の仮想ファイル１５０が後にアクセスされた場合、コントローラ１１０は、複数の保護ファイル１−Ｎのうちの異なる１つへのアクセスを選択して提供することができる。例えば、仮想ファイル１５０が「audio.MP3」と名付けられており、プライベートメモリ領域１４０に記憶された２０曲のプレイリストに関連付けられている場合には、ホスト５０が「audio.MP3」へのアクセスを要求するたびに、コントローラ１１０はプレイリスト上の他の曲へのアクセスを選択して提供することができる。
【００２９】
仮想ファイル１５０に対するホストリクエストをコントローラ１１０に取り扱わせることができるための、何れの好適な実装態様を用いることができる。例えば、図２の一実施形態では、プライベートメモリ領域１４０内の保護コンテンツをコントローラ１１０が取り扱う方法（例：何の保護コンテンツにいつアクセスするか）を決定するルールの集合を、アプリケーション（またはカプレット（caplet）１６０）が記憶する。当該実施形態では、ハッカーによってルールの集合が改ざんされることを防止するために、カプレット１６０はプライベートメモリ領域１４０内に記憶される。コントローラ１１０は、仮想ファイル１５０にアクセスするためのホスト５０からのリクエストにどのように反応するかを決定するために、カプレット１６０内のルールの集合を使用する。プライベートメモリ領域１４０は、複数の保護ファイル１〜Ｎと仮想ファイル１５０とを関連付ける、データベース１７０も記憶している。このようにして、データベース１７０は、複数の保護ファイル１〜Ｎのプレイリストとして機能する。一実施形態では、データベース１７０は、複数の保護ファイル１〜Ｎとともに記憶装置１００に予め組み込まれている。データベース１７０が暗号化される場合、カプレット１６０にデータベース１７０の暗号を解読するためのキーを保持することができる。
【００３０】
作動中、記憶装置１００の電源が投入されると、ホスト５０による仮想ファイル１５０へのアクセス試行を制御するために、データベース１７０に従って、カプレット１６０はコントローラ１１０をプログラムする。例えばコントローラ１１０は、仮想ファイル１５０にアクセスするリクエストに応答して、データベース１７０に基づいて、複数の保護ファイル１〜Ｎのうちの１つへのアクセスを選択して提供することができる。他の例として、コントローラ１１０は、ホスト５０が認証されるか認証されないかを判断することができるとともに、その結果に応じてコンテンツの異なるタイプへのアクセスを提供することができる。記憶装置１００が、認証されるかどうか分からない多様なホストで使用することができる携帯メモリカードである場合に、このような形態が好ましい。従って、ホスト５０が認証されたプレイヤである場合には、コントローラ１１０は、保護コンテンツへのアクセスを提供することによって、仮想ファイル１５０にアクセスするためのホスト５０からのリクエストに応答することができる。さもなければコントローラ１１０は、代替ファイルへのアクセスを提供することによって、ホストリクエストに応答することができる。このように、ルールの集合は、ホスト５０上のアプリケーションが認証された場合に、コントローラ１１０が保護ファイル（例：映画）へのアクセスを提供すべきことを規定することができる。さもなければコントローラ１１０は、パブリックメモリ領域１３０またはプライベートメモリ領域１４０に記憶された、代替ファイル（例：映画についての予告）へのアクセスを提供することができる。このように、仮想ファイル１５０にアクセスするための類似したホストリクエストは、ホスト５０が認証されたエンティティであるか否かに基づいて、コントローラ１１０によって異なった取り扱いを受けることができる。
（例：ユーザがログインしていない場合、または、ユーザが記憶装置１００に認証されていない場合に、記憶装置１００が専用のコマーシャル（a dedicated commercial）を返信することができる）。もちろん、これは単なる一例であり、他のルールおよび条件を用いることもできる。例えば、時間、ユーザについての情報、ホストが記憶装置１００にログインしているか、およびどのようにログインしているか、または、他の何らかの好適な条件、に基づいて、ファイルの選択を行うことができる。これらの例に見られるように、仮想ファイル１５０を異なる状況下においては異なるように取り扱うことができる。そして、パブリックメモリ領域１３０内の１つの仮想ファイル１５０を、プライベートメモリ領域１４０内の１つ以上の保護ファイルへのアクセスを提供するために用いることができる。
【００３１】
図２へ戻り、この実施形態において、ホスト５０は、ホストアプリケーション６０およびメディアプレイヤ（ここでは、Ｊａｖａ（登録商標）プレイヤ７０）を動作させる。以下に記述するように、ホストアプリケーション６０は、Ｊａｖａ（登録商標）プレイヤ７０を制御するとともに、記憶装置１００のコントローラ１１０へ追加の指令も送信する。上述したように、本実施形態では、（例えば「audio.MP3」という名前の）仮想ファイル１５０が、プライベートメモリ領域１４０内に記憶された複数の保護ファイル１〜Ｎに関連付けられている。ホスト５０が「audio.MP3」へのアクセスをリクエストするたびに、コントローラ１１０は、複数の保護ファイル１〜Ｎの異なる１つへのアクセスを選択して提供することができる。本実施形態では、仮想ファイル１５０のサイズは、プライベートメモリ領域１４０内の最大の保護ファイルのサイズと少なくとも同じである。選択された保護コンテンツが仮想ファイル１５０のサイズよりも小さい場合には、５０内のＪａｖａ（登録商標）プレイヤ７０が誤動作しないように、コントローラ１１０はコンテンツを有効データでパディングすることができる。例えば、保護ファイルがオーディオファイルである場合には、コントローラ１１０は、無音のＭＰ３フレームまたは予期されるヘッダ情報などの有効データで、オーディオファイルを急いでパディングすることができる。これは、異なるホスト・キャッシュ・アヘッド機構（host cache-ahead mechanisms）をサポートすることができるように実行される。コントローラ１１０がパディングされたデータを再生することを防止するために、コントローラ１１０は、ファイルの実際の再生長さをホスト５０へ報知することができる。ホスト５０は、パディングされたデータに到達する前に、ファイルの再生を停止することができる。
【００３２】
Ｊａｖａ（登録商標）プレイヤ７０が、オーディオファイルであるとみなした仮想ファイル１５０を読み出すために、ＪＳＲ−１３５プロトコルを用いてリクエストをコントローラ１１０へ送信する例を考える。記憶装置１００内のコントローラ１１０は、（例えば、リクエストで特定された論理ブロックアドレスから、）仮想ファイル１５０にアクセスするために試行が行われたことを検出する。そして、カプレット１６０内のルールに基づいて、コントローラ１１０は、Ｊａｖａ（登録商標）プレイヤ７０に曲Ａへのアクセスを選択して提供する。コントローラ１１０はまた、ホストアプリケーション６０に曲Ａの実際のサイズを報知する。上述したように、曲Ａの実際のサイズは、仮想ファイル１５０のサイズよりも小さくてもよい。ホストアプリケーション６０は再生を監視し、曲Ａが完了したときに、データのストリーミングを停止して次の曲へスキップするために、ＪＳＲ−７５プロトコルを用いてコントローラ１１０へコマンドを送信する。（ＪＳＲ−１３５プロトコルは、この種類のコマンドをサポートしていない。）このコマンドに応答して、次の曲（曲Ｂ）を指し示すために、コントローラ１１０はデータベース１７０をアップデートする。ホストアプリケーション６０は、仮想ファイル１５０へのアクセスを再びリクエストするように、Ｊａｖａ（登録商標）プレイヤ７０へ指示する。しかしながら今度は、コントローラ１１０は、Ｊａｖａ（登録商標）プレイヤ７０へ曲Ｂ（曲Ａではない）へのアクセスを選択して提供する。上述したプロセスは、Ｊａｖａ（登録商標）プレイヤ７０が追加の曲の再生をリクエストし続けるように、繰り返される。
【００３３】
これらの実施形態で用いることができる、多くの代替手段が存在する。例えば、一実施形態では、記憶装置１００が予め組み込まれた保護ファイルを探してアクセスするためにかかる時間を最小化するために、および、予め組み込まれた保護ファイルの詳細（例：トラック名、アーティスト名、アルバム名、トラック時間、など）を展開するためにかかる時間を最小化するために、記憶装置１００は、予め組み込まれた保護ファイルを再生するための「専用のファイルシステム」を使用する。このようにして、コントローラ１１０のオーバーヘッドに保護ファイルへのゲートウェイ機能の提供が含まれているにもかかわらず、仮想ファイル１５０にアクセスするための時間は、他の種類のファイルにアクセスするための時間と略同一となるはずである。この専用のファイルシステムを実行するために、連続する論理ブロックアドレス（ＬＢＡ）順で、プライベートメモリ領域１４０内に保護ファイルを予め組み込むことができる。続いて、ファイル時間などの他の関連するデータとともに、保護ファイルの各々についての正確な開始ＬＢＡを規定するための作業の間に、テーブルを生成することができる。そのようなテーブルを読み出すことは、必要な情報を集めるためにファイルを開くことよりも速いため、この専用のファイルシステムを使用することで、応答時間がより早くなる。
【００３４】
上記の記述から理解されるように、「専用のファイルシステム」は、予め組み込まれた異なるコンテンツを探索してアクセスするために要求される時間を減少させるために使用することができる。これは、独特な方法である、再生に必要なデータのみを保存するための専用の構造（例：テーブル）を規定することによって、実行することができる。このデータは、製品固有の要件に従って、異なる製品の間で変化させることができる（例：トラック名、アーティスト名、アルバム名、トラック時間、など）。このデータ構造は、前に特定された他のデータと一緒の各ファイルに対する正確な開始ＬＢＡに位置するデータを格納するテーブルとともに、連続するＬＢＡ順で、記憶装置１００内の保護された場所に予め組み込むことができる。テーブル内の全ての項目は、テーブル内のエントリーキーを用いて識別することができる特定のファイルを、表すことができる。特定のファイルにアクセスするリクエストによって、テーブル内でファイルが探索され、関連するデータが読み出される。例えば、仮想ファイル１５０を用いて曲を最初から再生するには、ファイルの開始ＬＢＡの情報、曲の実際の時間、および表示されるアルバム名を必要とすることがある。ファイルを取り扱うこのような方法は、ＦＡＴテーブルを取り扱ってコンテンツを解析するために必要な時間に比して、ファイルの探索および再生のために要求される時間を、著しく減少させることができる。
【００３５】
より速い応答時間を提供するための他の代替手段として、記憶装置１００は、「合成コマンド」の使用をサポートすることもできる。合成コマンドは、例えば、仮想ファイルの状態および再生される曲の両方を変更するような、再生システムの異なる側面を制御する２つ以上のコマンドを包含する１つのコマンドである。合成コマンドの使用は、高速な応答時間が要求されるオーディオストリーミングのような環境において、特に望ましい。例えば、合成コマンドは、「チャンネルのスキップ」、および、「２曲先へスキップ」または「曲をスキップして一時停止」を指定することができる。多くの状況において、同時に複数のモード変更を発生させる必要がある場合がある。例えば、「曲の再生、一時停止モードへ移行、その後次の曲へスキップ」のシーケンスは、スキップが起きた後に、次の曲をすぐに開始することを要求することがある。このケースでは、この変更を行うために、バスを介して２つのコマンドが送信されることが必要とされる。他の例では、仮想ファイルの状態および再生される曲の両方を変更するなど、システムの異なる側面が同時に制御されることが必要とされる場合がある。この場合も同様に、本着想は、記憶装置１００の状態変化を取り扱うための必要時間、および、コマンドをホスト５０から記憶装置１００へ送信して返信されるためにかかる時間を、減少させることにある。
【００３６】
他の代替手段では、パブリックメモリ領域１３０内の実際のメモリを仮想ファイル１５０に割り当てる代わりに、拡張された記憶領域としてホスト５０に対して自身をエミュレートするパブリックメモリ領域１３０を有することで、メモリ消費を減少させることができる。これにより、記憶装置のプライベートメモリ領域１４０に対するホストリクエストであるかのように、拡張された（エミュレートされた）記憶領域に対するホストリクエストが、コントローラ１１０で処理される。その結果、仮想ファイル１５０は、パブリックメモリ領域１３０内の実メモリを消費しない。これにより、貴重なメモリを消費することなく、大きなファイル（例：映画）を記憶することが可能となる。例えば、仮想ファイル１５０が１５ＭＢであり、パブリックメモリ領域１３０が３０ＭＢである状況を考える。上述の技術を用いることにより、記憶装置１００は、自身が４５ＭＢのパブリックメモリ領域１３０を有していると認識することができる。ここで、３０ＭＢは物理アドレスにマッピングされ、１５ＭＢはマッピングされない。
【００３７】
上述した例は、記憶装置外への保護ファイルの読み出しに関連するものである。しかし別の実施形態では、ホスト５０がコンテンツ追加のために認証された場合には、プライベートメモリ領域１４０に新しいコンテンツを追加するために、仮想ファイル１５０が用いられる。例えばユーザが曲を購入する場合、新しいコンテンツを空き領域に追加し、その後、プライベートメモリ領域１４０に新しい曲データを書き込むために仮想ファイル１５０を使用するために、ホストアプリケーション７０はプライベートメモリ領域１４０を制御することができる。他の例では、記憶されているコマーシャルを、新しいコマーシャルにアップデートすることができる。これは、仮想ファイル１５０をこのプライベートファイルにリンクさせ、その後、仮想ファイルに書き込むことでそのコンテンツを変更することで、実現することができる。記憶装置１００は書き込みコマンド（write command）を傍受することができ、書き込み処理をプライベートメモリ領域１４０上の正しい位置へ導くことができる。これにより、アップデートされたコンテンツおよび購入されたコンテンツを保持するように、安全な方法で、プライベートメモリ領域１４０をアップデートすることができる。
【００３８】
さらに、追加の代替手段は、コピー防止機能に関する。仮想ファイル１５０はパブリックメモリ領域１３０内でアクセス可能であるため、任意のホストからの単純なコピーコマンドによって、仮想ファイル１５０は容易にコピーすることができる。以下の代替手段は、仮想ファイル１５０のコピー防止に用いることができる。従って、プライベートメモリ領域１４０内に記憶された保護コンテンツへのアクセスが、コンテンツへのアクセスが許可された認証済みのエンティティのみに与えられることが、保証される。もしくはホスト５０は、仮想ファイル１５０を、パブリックメモリ領域１３０内の他のアドレスレンジへ単純にコピーすることができ、保護されたコンテンツに自由にアクセスすることができる。
【００３９】
コピー防止機構のある一例では、仮想ファイル１５０の読み出し処理によって記憶装置１００から送出される保護コンテンツを暗号化する、暗号化方式を使用する。ホストアプリケーション６０と記憶装置１００との間に認証処理が適用されるたびに（例：ログイン中）アップデートされるセッションキー（a session key）用いることで、暗号化を行うことができる。セッションキーは、ホスト５０および記憶装置１００の両方に知られている。そのため、記憶装置１００は、保護コンテンツを暗号化するためにセッションキーを用いることができる。そして、ホスト５０は、保護コンテンツを復号化するためにセッションキーを用いることができる。このようなセッションキーの使用方法は、記憶装置１００とホストアプリケーション６０との間の安全な通信路を形成する。
【００４０】
コピー防止機構の他の例では、ホスト５０によって読み出されたセクタをカウントするために、記憶装置１００内のカウンタを使用する。カウンタが０に到達すると、記憶装置１００はサイレントオーディオのバッファの送信を開始することができる。適切な認証の後、ホスト５０は、カウンタを増加させるように、再生時間中に記憶装置１００へ指示することができる。カウンタを設定するこの処理は、ファイルの読み出しの間（例：曲の再生の間）に行うことができる。ファイルをコピーする試行が行われた場合、記憶装置１００はその試行を検知し、ホスト５０へ不正データの返送を開始することができる。ハッカーは、カウンタが増加することなしには曲のある程度（例：５ＭＢの曲のうちの、１ＭＢのオーディオ）しか読み出せないため、曲のコピーが防止される。
【００４１】
コピー防止機構の他の例では、ホスト５０から仮想ファイル１５０への読み出し処理のパターンを検査した後に、記憶装置１００によってデータレートコントロール（「ＤＲＣ」）が実行される。これらの読み出し処理が期待したように発生しない場合（例：高速ファイルアクセスによって、仮想ファイル１５０のコピーが行われていることを、記憶装置１００が検出する場合）には、記憶装置１００は不正データを返送することや、読み出し処理を実行させないことができる。このように、記憶装置１００は、記憶装置１００から読み出される保護ファイルに、データレートコントロールを実行することができる。記憶装置１００への適正な認証があった後に、現在のホスト５０の特定の特性を適合させるように、ホスト５０は記憶装置ＤＲＣ機構を構成することができる。
【００４２】
コピー防止方法の一例として、「スライドウインドウ（sliding window）」も使用することができる。この機構では、記憶装置１００は、特定のＬＢＡ範囲内のみの実データを読み出すことを、ホスト５０に許可する。このＬＢＡ範囲の外のデータへアクセスすると、サイレントオーディオのバッファが返送される。ホスト５０は、適正な認証の後に、許可された範囲を再設定することができる。許可された範囲が移動するため、この機構はここでは「スライドウインドウ」と呼ばれる。上記のカウンタの概念は、スライドウインドウ（例：現在のところ、１から５００までコピー）として用いることができる。または、仮想ファイル１５０内の特定の位置からのみのデータの再生が、許可されるとすることができる。
【００４３】
他の実施形態では、ネイティブ・メディア・プレイヤ（native media players）からの再生に対して、仮想ファイル１５０を用いることができる。これは、コンテンツのプレイリストの各々に対して比較的大きい仮想ファイルを用いることによって、行うことができる。この仮想ファイルは、オンザフライ方式でソング・アフター・ソング（song-after-song）を連結することができる。記憶装置１００は、ホスト・ネイティブ・プレイヤ（host native player）に表示されるコンテンツの各チャンネルに対して、ＩＤ３タグ（an ID3 tag）を供給することもできる。このようにして、ホスト（例：ハンドセット）の各々や、利用可能なオペレーティングシステムで、記憶装置１００を用いることができる。この解決方法は、（例えば、早送り／巻き戻し／プログレスバーのドラッグ、の操作をユーザが試行した場合を検出することで）曲をスキップする操作を検知する手段を記憶装置に持たせることで、強化することができる。
【００４４】
記憶装置および処理フローの例
【００４５】
上述したように、これらの実施形態の記憶装置は、何らかの適切な方法で実現することができる。以下の段落および参照図面は、実施態様の一例を示している。この実施態様は単なる一例であり、この明細書に図示および記載されている詳細は、そうであると明示されていない限り、請求項の解釈ではないことを理解されたい。
【００４６】
図面に戻り、図３Ａおよび図３Ｂは、ある実施形態の記憶装置３００およびホスト３５０のブロック図である。まず図３Ｂについて説明すると、記憶装置３００は、コントローラ３１０およびメモリ３２０を備える。コントローラ３１０は、メモリ３２０と接続するためのメモリインタフェース３１１と、ホスト３５０と接続するためのホストインターフェース３１２を備える。コントローラ３１０は、中央演算装置（ＣＰＵ）３１３、暗号化および／または復号化処理を行うために作動する暗号エンジン３１４、リードアクセスメモリ（ＲＡＭ）３１５、記憶装置３００の基本操作のためのファームウェア（ロジック）を記憶する読み取り専用メモリ（ＲＯＭ）３１６、および、暗号化／復号化処理のために用いられるデバイスに特有なキーを記憶する不揮発性メモリ（ＮＶＭ）３１７、をさらに備えている。デバイスに特有のキーの記憶は、記憶装置内の他のメモリ領域に記憶することができることに留意されたい。図３Ｂに図示される複数の要素は、他の好適な態様で実現することができる。
【００４７】
この実施形態では、メモリ３２０は、ホスト３５０上のファイルシステムによって管理されるパブリックパーティション３２５と、コントローラ３１０によって内部で管理される隠し保護システム領域３３５を備えている。隠し保護システム領域３３５は、上述したように、コンテンツ暗号キー（ＣＥＫｓ）３４０、コンテンツ、データベース、およびカプレット３４２を記憶している。隠し保護システム領域３３５は、（ホストコントローラ３６０ではなく）コントローラ３１０によって内部で管理されるため、「隠されて」いる。また隠し保護システム領域３３５は、その領域３３５に記憶されたオブジェクトが、コントローラ３１０の不揮発性メモリ３１７に記憶された固有のキーで暗号化されているため、「保護されて」いる。（記憶装置ハードウェア固有キーは、コントローラ３１０の不揮発性メモリ３１７内、または、記憶装置３００内の他の領域に記憶することができる。）従って、その領域３３５に記憶されたオブジェクトにアクセスするために、コントローラ３１０は、暗号エンジン３１４および不揮発性メモリ３１７に記憶されたキーを用いて暗号化されたオブジェクトを復号化することができる。記憶装置３００は、サンディスク・コーポレーションによるＴｒｕｓｔｅｄＦｌａｓｈ（登録商標）プラットフォームで製造された製品ファミリーのうちの、安全な製品形式であることが好ましい。パブリックパーティション３２５は、仮想ファイル３３０を備えている。
【００４８】
図３Ａのホスト３５０へ戻り、ホスト３５０は、記憶装置３００と接続するための記憶装置インターフェース３６１を有するコントローラ３６０を備えている。コントローラ３６０はまた、中央演算装置（ＣＰＵ）３６３、暗号化および／または復号化処理を行うために作動する暗号エンジン３６４、リードアクセスメモリ（ＲＡＭ）３６５、および、読み取り専用メモリ（ＲＯＭ）３６６を備えている。ボックス３６０内の各要素は、ホストシステムの全体の中で、個別の複数のチップとして実現されてもよいことに留意されたい。
ホスト３５０は、コンテンツエンジン３７１、ファイルシステムＡＰＩ３７２、コンテンツデコーダＡＰＩ３７３、およびホスト証明書３７４を備えるアプリケーション３７０も備えている。
【００４９】
記憶装置３００およびホスト３５０は、記憶装置インターフェース３６１およびホストインターフェース３１２を介して、互いに通信する。データの安全な転送を含んだ処理のために、記憶装置３００内の暗号エンジン３１４およびホスト３５０内の暗号エンジン３６４は、互いに相互認証をするために用いられ、キー交換を行うことが好ましい。相互認証処理は、ホスト３５０および記憶装置３００に、固有の証明書ＩＤの交換を要求する。相互認証が完了した後、記憶装置３５０とホスト３００の間の通信のための安全な通信路を確立するために、セッションキーが用いられることが好ましい。
【００５０】
図４Ａから図１４Ｂは、図３Ａおよび図３Ｂ内のメモリデバイス３００およびホスト３５０を用いた実施形態の、幾つかの例示的なプロセスフローのフロー図である。具体的には、図４Ａおよび図４Ｂは、一実施形態のログイン処理のフロー図である。図５Ａおよび図５Ｂは、一実施形態の、ログイン後の読み出し処理（reading-after-log-in process）のフロー図である。図６Ａおよび図６Ｂは、一実施形態の、ログインなしの読み出し処理（reading-without-log-in process）のフロー図である。図７は、一実施形態の通常ファイルにアクセスするための処理のフロー図である。図８Ａおよび図８Ｂは、範囲外のデータにアクセスするとともに追加データでファイルをパディングするための、一実施形態の処理のフロー図である。図９Ａおよび図９Ｂは、一実施形態のファイルの実際の長さを判断する処理のフロー図である。図１０Ａおよび図１０Ｂは、暗号化を用いた一実施形態の保護処理のフロー図である。図１１Ａおよび図１１Ｂは、カウンタを用いた一実施形態の保護処理のフロー図である。図１２Ａおよび図１２Ｂは、スライドウインドウを用いた一実施形態の保護処理のフロー図である。図１３Ａおよび図１３Ｂは、データレートコントロールのための一実施形態の処理のフロー図である。図１４Ａおよび図１４Ｂは、コンテンツを追加する一実施形態の処理のフロー図である。
【００５１】
結論
【００５２】
前述の詳細な説明は、発明の定義としてではなく、本発明がとりうる選択された形態の例として理解されることを意図している。以下の請求項およびその等価物のみが、クレームされた発明の範囲を定義することを目的としている。最後に、本明細書で記載された望ましい実施形態の何れの側面も、単独または組み合わせて使用できることに留意されたい。
【図１】
0005579274.tif 000002
【図２】
0005579274.tif 000003
【図３Ａ】
0005579274.tif 000004
【図３Ｂ】
0005579274.tif 000005
【図４Ａ】
0005579274.tif 000006
【図４Ｂ】
0005579274.tif 000007
【図５Ａ】
0005579274.tif 000008
【図５Ｂ】
0005579274.tif 000009
【図６Ａ】
0005579274.tif 000010
【図６Ｂ】
0005579274.tif 000011
【図７】
0005579274.tif 000012
【図８Ａ】
0005579274.tif 000013
【図８Ｂ】
0005579274.tif 000014
【図９Ａ】
0005579274.tif 000015
【図９Ｂ】
0005579274.tif 000016
【図１０Ａ】
0005579274.tif 000017
【図１０Ｂ】
0005579274.tif 000018
【図１１Ａ】
0005579274.tif 000019
【図１１Ｂ】
0005579274.tif 000020
【図１２Ａ】
0005579274.tif 000021
【図１２Ｂ】
0005579274.tif 000022
【図１３Ａ】
0005579274.tif 000023
【図１３Ｂ】
0005579274.tif 000024
【図１４Ａ】
0005579274.tif 000025
【図１４Ｂ】
0005579274.tif 000026