(57)【要約】      （修正有）【課題】データストレージデバイスおよびデータプロテクション方法を提供する。【解決手段】フラッシュメモリ２１０およびコントローラー２２０を含むデータストレージデバイス２００において、フラッシュメモリは複数のブロックを含み、コントローラーは、キー生成モジュール２２２、暗号化/復号モジュール２２４、および、キー消去モジュール２２６を含む。キー生成モジュールは、ホスト装置の第一書き込みコマンドに従って、第一キーを生成し、複数のブロックの第一ブロック中に保存される。暗号化/復号モジュールは、第一キーに従って、第一ファイルを暗号化して、第一暗号化ファイルを生成し、第一暗号化ファイルは複数のブロックの少なくともひとつの第二ブロック中に保存される。キー消去モジュールは、第一消去コマンドに従って、第一ブロック中に保存される第一キーを削除し、第二ブロック中に保存される第一暗号化ファイルを無効にする。【選択図】図２
2014194734.tif 000002
【特許請求の範囲】
【請求項１】
データストレージデバイスであって、
複数のブロックを含むフラッシュメモリ、および、
第一ファイルを暗号化して、第一暗号化ファイルを生成し、前記第一暗号化ファイルを前記フラッシュメモリに保存するコントローラー、
を含み、前記コントローラーは、さらに、
ホスト装置の第一書き込みコマンドに従って、第一キーを生成し、前記第一キーが前記複数のブロックの第一ブロック中に保存されるキー生成モジュールと、
前記第一キーに従って、前記第一ファイルを暗号化して、第一暗号化ファイルを生成し、前記第一暗号化ファイルが前記複数のブロックの少なくともひとつの第二ブロック中に保存される暗号化/復号モジュール、および、
第一消去コマンドに従って、前記第一ブロック中に保存される前記第一キーを削除し、前記第二ブロック中に保存される前記第一暗号化ファイルを無効にするキー消去モジュール、
を含むことを特徴とするデータストレージデバイス。
【請求項２】
前記コントローラーは、さらに、第二ファイルを暗号化し、前記暗号化された第二ファイルを前記フラッシュメモリ中に保存し、前記キー生成モジュールは、さらに、前記ホスト装置の第二書き込みコマンドに従って、第二キーを生成し、前記第二キーは、前記複数のブロックの前記第一ブロックまたは第三ブロック中に保存され、前記暗号化/復号モジュールは、さらに、前記第二キーに従って、前記第二ファイルを暗号化して、第二暗号化ファイルを生成し、前記第二暗号化ファイルを、前記複数のブロックの少なくともひとつの第四ブロック中に保存し、前記キー消去モジュールは、さらに、前記第一ブロックまたは前記第三ブロック中に保存される前記第二キーを削除することを特徴とする請求項１に記載のデータストレージデバイス。
【請求項３】
前記暗号化/復号モジュールは、前記第一ブロック中に保存される前記第一キーに従って、前記第一暗号化ファイルを復号して、前記第一ファイルを得て、前記第一ブロックまたは前記第三ブロック中に保存される前記第二キーに従って、前記第二暗号化ファイルを復号して、第二ファイルを得て、前記第一ファイルおよび前記第二ファイルを、それぞれ、前記ホスト装置に伝送することを特徴とする請求項２に記載のデータストレージデバイス。
【請求項４】
前記第一キーは、前記少なくともひとつの第二ブロック中に保存されるデータを暗号化、および、復号し、前記第二キーは、前記少なくともひとつの第四ブロック中に保存されるデータを暗号化、および、復号し、前記少なくともひとつの第二ブロックおよび前記少なくともひとつの第四ブロックの前記数量は、前記第一書き込みコマンドおよび前記第二書き込みコマンドにより決定されることを特徴とする請求項３に記載のデータストレージデバイス。
【請求項５】
前記第一書き込みコマンドおよび前記第二書き込みコマンドは、所定長さに従って、前記少なくともひとつの第二ブロックおよび前記少なくともひとつの第四ブロックの前記数量を決定することを特徴とする請求項４に記載のデータストレージデバイス。
【請求項６】
前記第一書き込みコマンドは、前記第一ファイルの前記長さに従って、前記少なくともひとつの第二ブロックの前記数量を決定し、前記第二書き込みコマンドは、前記第二ファイルの前記長さに従って、前記少なくともひとつの第四ブロックの前記数量を決定することを特徴とする請求項４に記載のデータストレージデバイス。
【請求項７】
前記キー消去モジュールは、前記第一消去コマンドに従って、前記第一ブロックを消去して、前記第一キーを削除することを特徴とする請求項１に記載のデータストレージデバイス。
【請求項８】
データプロテクション方法であって、
ホスト装置の第一書き込みコマンドに従って、第一キーを生成し、前記第一キーを第一ブロックに保存する工程と、
前記第一キーに従って、第一ファイルを暗号化して、第一暗号化ファイルを生成し、前記第一暗号化ファイルを少なくともひとつの第二ブロックに保存する工程、および、
第一消去コマンドに従って、前記第一ブロックを消去して、前記第一キーを削除し、前記第二ブロック中に保存される前記第一暗号化ファイルを無効にする工程、
を含むことを特徴とする方法。
【請求項９】
前記ホスト装置の第二書き込みコマンドに従って、第二キーを生成し、前記第二キーを、前記第一ブロックまたは第三ブロックに保存する工程と、
前記第二キーに従って、前記第二ファイルを暗号化して、第二暗号化ファイルを生成し、前記第二暗号化ファイルを少なくとも第四ブロックで保存する工程、および、
第二消去コマンドに従って、前記第一ブロックまたは前記第三ブロック中に保存される前記第二キーを削除する工程、
を含むことを特徴とする請求項８に記載のデータプロテクション方法。
【請求項１０】
さらに、
前記第一ブロック中に保存される前記第一キーに従って、前記少なくともひとつの第二ブロック中に保存される前記第一暗号化ファイルを復号して、前記第一ファイルを得る工程、
前記第一ブロックまたは前記第三ブロック中に保存される前記第二キーに従って、第四ブロック中に保存される前記第二暗号化ファイルを復号して、前記第二ファイルを得る工程、および、
前記第一ファイルおよび前記第二ファイルを、前記ホスト装置に伝送する工程、
を含むことを特徴とする請求項９に記載のデータプロテクション方法。
【請求項１１】
前記第一キーは、前記少なくともひとつの第二ブロック中に保存されるデータを暗号化、および、復号し、前記第二キーは、前記少なくともひとつの第四ブロック中に保存されるデータを暗号化、および、復号し、前記少なくともひとつの第二ブロックおよび前記少なくともひとつの第四ブロックの前記数量は、前記第一書き込みコマンドおよび前記第二書き込みコマンドにより決定されることを特徴とする請求項１０に記載のデータプロテクション方法。
【請求項１２】
前記第一書き込みコマンドおよび前記第二書き込みコマンドは、所定長さに従って、前記少なくともひとつの第二ブロックおよび前記少なくともひとつの第四ブロックの前記数量を決定することを特徴とする請求項１１に記載のデータプロテクション方法。
【請求項１３】
前記第一書き込みコマンドは、前記第一ファイルの前記長さに従って、前記少なくともひとつの第二ブロックの前記数量を決定し、前記第二書き込みコマンドは、前記第二ファイルの前記長さに従って、前記少なくともひとつの第四ブロックの前記数量を決定することを特徴とする請求項１１に記載のデータプロテクション方法。
【請求項１４】
データプロテクション方法であって、
第一書き込みコマンドおよび第一ファイルを受信する工程と、
前記第一書き込みコマンドに従って、第一キーを生成する工程と、
前記第一キーに従って、前記第一ファイルを暗号化して、第一暗号化ファイルを生成する工程と、
前記第一キーを第一ブロック中に保存し、前記第一暗号化ファイルを少なくともひとつの第二ブロック中に保存する工程、および、
第一消去コマンドが受信された時、前記第一キーを削除して、前記第一暗号化ファイルを保持する工程、
を含むことを特徴とする方法。
【請求項１５】
さらに、
第一読み込みコマンドがホスト装置から受信された時、前記第一キーおよび前記第一暗号化ファイルを回収する工程と、
前記第一キーに従って、前記第一暗号化ファイルを復号して、前記第一ファイルを得る工程、および、
前記第一ファイルを前記ホスト装置に伝送する工程、
を含むことを特徴とする請求項１４に記載のデータプロテクション方法。
【請求項１６】
前記第一キーを削除する前記工程は、前記第一ブロックを消去することを特徴とする請求項１４に記載のデータプロテクション方法。
【請求項１７】
前記第一キーを削除する前記工程は、無効データを前記第一ブロックに書き込むことを特徴とする請求項１４に記載のデータプロテクション方法。
【請求項１８】
フラッシュメモリのアクセス方法であって、
ホストから、書き込みコマンドおよび第一データを受信する工程と、
第一プログラムコマンドを伝送して、前記第一データを、前記フラッシュメモリのブロックの複数の第一ページに書き込む工程と、
削除コマンドを受信して、前記ホストから前記第一データを削除する工程、および、
第二プログラムコマンドを伝送して、所定データを前記第一ページに書き込む工程、
を含むことを特徴とする方法。
【請求項１９】
フラッシュメモリのアクセス方法であって、
ホストから、書き込みコマンドおよび第一データを受信する工程と、
第一プログラムコマンドを伝送して、前記第一データを、前記フラッシュメモリのブロックの複数の第一ページに書き込む工程と、
削除コマンドを受信して、前記ホストから前記第一データを削除する工程、および、
第二プログラムコマンドを伝送して、前記第一ページをオーバープログラミングする工程、
を含むことを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データストレージデバイスに関するものであって、特に、データを暗号化するデータストレージデバイスに関するものである。
【背景技術】
【０００２】
フラッシュメモリは、電気的に消去できると共に、再プログラムできる一種の不揮発性メモリで、主に、メモリカード、ＵＳＢフラッシュドライブ、eMMCs、または、ソリッドステートディスク中に組み入れられ、コンピュータシステムとデジタル製品間のデータ保存、および、データ伝送を行う。
【０００３】
フラッシュメモリは、複数のメモリブロックを含み、各メモリブロックは、複数のデータを保存する保存ページを有する。フラッシュメモリは、メモリブロックをユニットとしてデータを消去し、保存ページをユニットとしてプログラムデータを書き込む。しかし、フラッシュメモリ中に保存されるデータは、ユーザーがデータを削除後、消去されない。これにより、削除されたデータは無許可のユーザーによりアクセスされ、情報セキュリティを妨げる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明は、データストレージデバイスおよびデータプロテクション方法を提供することを目的とする。
【課題を解決するための手段】
【０００５】
本発明は、フラッシュメモリおよびコントローラーを含むデータストレージデバイスを開示する。フラッシュメモリは複数のブロックを含む。コントローラーは第一ファイルを暗号化して、第一暗号化ファイルを生成し、暗号化された第一ファイルをフラッシュメモリに保存し、コントローラーは、さらに、キー生成モジュール、暗号化/復号モジュールおよびキー消去モジュールを含む。キー生成モジュールは、ホスト装置の第一書き込みコマンドに従って、第一キーを生成し、第一キーは複数のブロックの第一ブロック中に保存される。暗号化/復号モジュールは、第一キーに従って、第一ファイルを暗号化し、第一暗号化ファイルを生成し、第一暗号化ファイルは複数のブロックの少なくともひとつの第二ブロック中に保存される。キー消去モジュールは、第一消去コマンドに従って、第一ブロック中に保存される第一キーを削除し、第二ブロック中に保存される第一暗号化ファイルを無効にする。
【０００６】
本発明は、さらに、データプロテクション方法を開示し、ホスト装置の第一書き込みコマンドに従って、第一キーを生成し、第一ブロック中の第一キーに保存する工程と、第一キーに従って、第一ファイルを暗号化し、第一暗号化ファイルを生成して、第一暗号化ファイルを少なくともひとつの第二ブロックに保存する工程、および、第一消去コマンドに従って、第一ブロックを消去して、第一キーを削除し、第二ブロックに保存される第一暗号化ファイルを無効にする工程、を含む。
【０００７】
本発明は、さらに、データプロテクション方法を開示し、第一書き込みコマンドおよび第一ファイルを受信する工程と、第一書き込みコマンドに従って、第一キーを生成する工程と、第一キーに従って、第一ファイルを暗号化し、第一暗号化ファイルを生成する工程と、第一ブロック中に第一キーを保存し、および、少なくともひとつの第二ブロック中に第一暗号化ファイルを保存する工程、および、第一消去コマンドが受信された時、第一キーを削除して、第一暗号化ファイルを保持する工程、を含む。
【０００８】
本発明は、さらに、フラッシュメモリのアクセス方法を開示し、ホストから、書き込みコマンドおよび第一データを受信する工程と、第一プログラムコマンドを伝送し、第一データをフラッシュメモリのブロックの複数の第一ページに書き込む工程と、削除コマンドを受信して、ホストから第一データを削除する工程、および、第二プログラムコマンドを伝送して、所定データを第一ページに書き込む工程、を含む。
【０００９】
本発明は、さらに、フラッシュメモリのアクセス方法を開示し、ホストから、書き込みコマンドおよび第一データを受信する工程と、第一プログラムコマンドを伝送して、第一データをフラッシュメモリのブロックの複数の第一ページに書き込む工程と、削除コマンドを受信して、ホストから第一データ を削除する工程、および、第二プログラムコマンドを伝送して、第一ページをオーバープログラミング(over-programming)する工程、を含む。
【発明の効果】
【００１０】
本発明により開示されるデータストレージデバイスおよびデータプロテクション方法は、暗号化キーを消去、または、破壊することにより、保存されたファイルを無効にすることができる。
【図面の簡単な説明】
【００１１】
【図１】本発明のストレージシステムの具体例を示す図である。
【図２】本発明のデータストレージデバイスの具体例を示す図である。
【図３】本発明の具体例によるデータプロテクション方法のフローチャートである。
【図４】本発明のデータストレージデバイスの別の具体例を示す図である。
【発明を実施するための形態】
【００１２】
図１は、本発明のストレージシステムの具体例を示す図である。ストレージシステム１００は、ホスト装置１０２および、たとえば半導体ドライブ (ＳＳＤ)のようなデータストレージデバイス２００、ＳＤカードまたはフラッシュドライブを含む。ホスト装置１０２は、少なくともひとつのファイルＦ１-ＦＮ、少なくともひとつの書き込みコマンドＣ１１-Ｃ１Ｎ、少なくともひとつの消去コマンドＣ２１-Ｃ２Ｎ、および、少なくともひとつの 読み込みコマンドＲ１-ＲＮを伝送する。データストレージデバイス２００は、対応する書き込みコマンドＣ１１-Ｃ１Ｎに従って、ファイルＦ１-ＦＮを暗号化し、保存する。データストレージデバイス２００は、さらに、対応する消去コマンドＣ２１-Ｃ２Ｎに従って、ファイルＦ１-ＦＮの対応するキーを削除し、対応する読み込みコマンドＲ１-ＲＮに従って、保存されたファイルＦ１-ＦＮをホスト装置１０２に伝送する。
【００１３】
図２は、本発明のデータストレージデバイスの具体例を示す図である。データストレージデバイス２００は、フラッシュメモリ２１０およびコントローラー２２０を含む。フラッシュメモリ２１０は、ファイルＦ１-ＦＮおよび／または少なくともひとつの暗号化ファイルＦ１’-ＦＮ’を保存する。注意すべきことは、フラッシュメモリ２１０は複数のメモリユニット (図示しない)を含み、各メモリユニットは複数のブロック (図示しない)を含み、各ブロックは複数のページ (図示しない)を含むことである。コントローラー２２０は、書き込みコマンドＣ１１-Ｃ１Ｎに従って、ファイルＦ１-ＦＮを暗号化して、それぞれ、暗号化ファイルＦ１’-ＦＮ’を生成し、暗号化ファイルＦ１’-ＦＮ’ をフラッシュメモリ２１０中に保存する。コントローラー２２０は、さらに、消去コマンド Ｃ２１-Ｃ２Ｎに従って、フラッシュメモリ２１０に保存される暗号化ファイルＦ１’-ＦＮ’を無効にし、読み込みコマンドＲ１-ＲＮに従って、暗号化ファイルＦ１’-ＦＮ’を暗号化し、復号されたファイルＦ１-ＦＮをホスト装置１０２に伝送する。さらに、コントローラー２２０は、さらに、キー生成モジュール２２２、暗号化/復号モジュール２２４およびキー消去モジュール２２６を含む。
【００１４】
キー生成モジュール２２２は、ホスト装置１０２から受信される書き込みコマンド Ｃ１１-Ｃ１Ｎに従って、それぞれ、キーＫ１-ＫＮを生成する。キー生成モジュール２２２は、さらに、キーＫ１-ＫＮを暗号化/復号モジュール２２４に伝送し、キーＫ１-ＫＮをフラッシュメモリ２１０のブロック中に保存する。注意すべきことは、各キーＫ１-ＫＮは、それぞれ、異なるブロック中に保存されるデータを暗号化、および、復号し、異なるキーＫ１-ＫＮに対応するブロック数量は、それぞれ、書き込みコマンドＣ１１-Ｃ１Ｎにより決定されるが、これに限定されない。たとえば、キー生成モジュール２２２は、書き込みコマンドＣ１１に従って、キーＫ１を生成し、キーＫ１はデータの第一所定量を暗号化し、データの第一所定量を保存するために３ブロックが必要である。これにより、キー１はフラッシュメモリの３ブロックに対応する。すなわち、キーＫ１は、フラッシュメモリ２１０の第五ブロック、第六ブロックと第七ブロック中に保存されるデータを暗号化、および、復号する。本発明の一具体例において、書き込みコマンド Ｃ１１-Ｃ１Ｎは、所定長さに従って、少なくともひとつのキーＫ１-ＫＮに対応するブロックの数量を判断する。本発明の別の具体例において、書き込みコマンドＣ１１-Ｃ１Ｎは、ファイルＦ１-ＦＮの長さに従って、それぞれ、キーＫ１-ＫＮが対応するブロックの数量を判断する。
【００１５】
注意すべきことは、キー生成モジュール２２２は、キーＫ１-ＫＮを、異なるブロックまたは一部ロック中に保存するが、この限りではない。たとえば、キー生成モジュール２２２は、ホスト装置１０２から受信される書き込みコマンドＣ１１に従って、キーＫ１を生成し、キーＫ１をフラッシュメモリ２１０の第一ブロックに保存する。次に、キー生成モジュール２２２は、ホスト装置１０２から受信された書き込みコマンドＣ１２に従って、キーＫ２を生成し、キーＫ２をフラッシュメモリ２１０の第一ブロックに保存する。これにより、コントローラー２２０が消去コマンドＣ２１を受信する場合、コントローラー２２０により、第一ブロックを消去することにより、キーＫ１およびキーＫ２が削除される。すなわち、消去コマンドＣ２１を受信する時、コントローラー２２０は、第一ブロックを消去して、キーＫ１-ＫＮを削除する。本発明の別の具体例において、キー生成モジュール２２２は、ホスト装置１０２から受信される書き込みコマンドＣ１１に従って、キーＫ１を生成し、キーＫ１をフラッシュメモリ２１０の第一ブロック中に保存する。次に、キー生成モジュール２２２は、ホスト装置１０２から受信される書き込みコマンドＣ１２に従って、キーＫ２を生成し、キーＫ２をフラッシュメモリ２１０の第三ブロック中に保存する。この例において、ユーザーは、それぞれ、第一ブロックまたは第三ブロックを消去することにより、キーＫ１またはキーＫ２を削除する。
【００１６】
暗号化/復号モジュール２２４は、対応するキーＫ１-ＫＮに従って、ファイルＦ１-ＦＮを暗号化して、それぞれ、暗号化ファイルＦ１’-ＦＮ’を生成し、暗号化ファイルＦ１’-ＦＮ’はフラッシュメモリのブロック中に保存される。たとえば、暗号化/復号モジュール２２４は、高度暗号化標準 (ＡＥＳ)により、キーＫ１-ＫＮに従って、ファイルＦ１-ＦＮを暗号化するが、この限りではない。別の例において、暗号化/復号モジュール２２４は、さらに、データ暗号化標準 (ＤＥＳ)またはトリプルデータ暗号化標準(３ＤＥＳ)により、ファイルＦ１-ＦＮを暗号化する。注意すべきことは、暗号化ファイルＦ１’-ＦＮ’ はキーＫ１-ＫＮと同じブロック中に保存される、または、異なるブロック中に保存され、この限りではない。本発明の好ましい具体例において、暗号化ファイルＦ１’-ＦＮ’およびキーＫ１-ＫＮは、異なるブロック中に保存される。さらに、暗号化ファイルＦ１’-ＦＮ’ は、ページユニットまたはブロックユニットにより、フラッシュメモリ２１０中に書き込まれるが、この限りではない。暗号化/復号モジュール２２４は、さらに、ブロック中に保存される対応するキーＫ１-ＫＮに従って、それぞれ、フラッシュメモリ２１０に保存される暗号化ファイルＦ１’-ＦＮ’を復号して、ファイルＦ１-ＦＮを得て、ファイルＦ１-ＦＮをホスト装置１０２に伝送する。たとえば、コントローラー２２０が読み込みコマンドＲ１を受信する時、暗号化/復号モジュール２２４は、読み込みコマンドＲ１に従って、暗号化ファイル Ｆ１’を設置し、暗号化ファイル Ｆ１’のアドレスに従って、または、直接、暗号化ファイルＦ１’に従って、対応するキーＫ１を回収する。たとえば、フラッシュメモリ２１０は、さらに、暗号化ファイルＦ１’-ＦＮ’とキーＫ１-ＫＮのアドレスのマッピング関係、または、暗号化ファイルＦ１’-ＦＮ’とキーＫ１-ＫＮのマッピング関係を記録するのに用いられるマッピングテーブルを含むことができる。次に、暗号化/復号モジュール２２４は、キーＫ１に従って、暗号化ファイル Ｆ１’ を暗号化して、ファイルＦ１を得て、ファイルＦ１をホスト装置１０２に伝送する。
【００１７】
キー消去モジュール２２６は、対応する消去コマンド Ｃ２１-Ｃ２Ｎに従って、ブロックに保存されるキーＫ１-ＫＮを削除し、暗号化ファイルＦ１’-ＦＮ’を無効にする。すなわち、キー消去モジュール２２６は、対応する消去コマンド Ｃ２１-Ｃ２Ｎに従って、キーＫ１-ＫＮを有するブロックを消去し、このような無許可のユーザーは、キーＫ１-ＫＮにより暗号化ファイルＦ１’-ＦＮ’を暗号化することができない。これにより、暗号化ファイルＦ１’-ＦＮ’は無効になる。別の例において、キー消去モジュール２２６は、対応する消去コマンドＣ２１-Ｃ２Ｎに従って、無効データを有するキーＫ１-ＫＮを有するブロックを上書きする。ブロックが上書きした時、対応するキーＫ１-ＫＮが壊れ、よって、無許可のユーザーは、キーＫ１-ＫＮにより暗号化ファイルＦ１’-ＦＮ’ を暗号化することができない。
【００１８】
図３は、本発明の具体例によるデータプロテクション方法のフローチャートである。データプロテクション方法は図２のデータストレージデバイス２００に応用される。プロセスはＳ３００から開始される。
【００１９】
ステップＳ３００において、データストレージデバイス２００は書き込みコマンドが受信されたか判断する。書き込みコマンドが受信された場合、プロセスはＳ３０２に進み、そうでなければ、プロセスはステップＳ３０６に進む。
【００２０】
Ｓ３０２において、キー生成モジュール２２２は、ホスト装置１０２から受信される書き込みコマンドに従って、キーを生成し、キーを暗号化/復号モジュール２２４に伝送して、フラッシュメモリのブロックに保存する。注意すべきことは、各キーＫ１-ＫＮは、それぞれ、異なるブロック中に保存されたデータを暗号化、および、復号し、異なるキーＫ１-ＫＮに対応するブロックの数量は、それぞれ、書き込みコマンドＣ１１-Ｃ１Ｎにより決定されるが、この限りではないことである。たとえば、キー生成モジュール２２２は、書き込みコマンドＣ１１に従って、キーＫ１を生成し、キーＫ１は第一所定量のデータを暗号化し、第一所定量を保存するために３ブロックが必要である。これにより、キーＫ１は、フラッシュメモリ２１０中の第五ブロック、第六ブロックと第七ブロック中に保存されるデータを暗号化、および、復号する。本発明の一具体例において、書き込みコマンドＣ１１-Ｃ１Ｎは、所定長さに従って、少なくともひとつのキーＫ１-ＫＮに対応するブロックの数量を決定する。本発明の別の具体例において、書き込みコマンドＣ１１-Ｃ１Ｎは、それぞれ、ファイルＦ１-ＦＮの長さに従って、キーＫ１-ＫＮに対応するブロックの数量を決定する。さらに、キー生成モジュール２２２は、キーＫ１-ＫＮを異なるブロック、または、同じブロック中に保存するが、この限りではない。たとえば、キー生成モジュール２２２は、ホスト装置１０２から受信される書き込みコマンドＣ１１に従って、キーＫ１を生成し、キーＫ１をフラッシュメモリ２１０の第一ブロック中に保存する。次に、ホスト装置１０２から受信される書き込みコマンドＣ１２に従って、キー生成モジュール２２２がキーＫ２を生成し、キーＫ２をフラッシュメモリ２１０の第一ブロックに保存する。注意すべきことは、この例において、フラッシュメモリがブロック消去モードにあるため、同じブロック中に保存されるキーが同時に削除されることである。本発明の別の具体例において、ホスト装置１０２から受信される書き込みコマンドＣ１１に従って、キー生成モジュール２２２がキーＫ１を生成し、キーＫ１をフラッシュメモリ２１０の第一ブロックに保存する。次に、ホスト装置１０２から受信される書き込みコマンドＣ１２に従って、キー生成モジュール２２２がキーＫ２を生成し、キーＫ２を、フラッシュメモリ２１０の第三ブロックに保存する。この例において、ユーザーは、それぞれ、第一ブロックまたは第三ブロックを消去することにより、キーＫ１またはキーＫ２を削除することができる。
【００２１】
次に、Ｓ３０４において、暗号化/復号モジュール２２４は、キーに従って、対応するファイルを暗号化して、暗号化ファイルを生成し、コントローラー２２０は、暗号化ファイルをフラッシュメモリのブロック中に保存する。注意すべきことは、暗号化ファイルＦ１’-ＦＮ’は、キーＫ１-ＫＮと同じブロックに保存される、または、異なるブロック中に保存され、この限りではない。本発明の好ましい具体例において、暗号化ファイルＦ１’-ＦＮ’およびキーＫ１-ＫＮは異なるブロック中に保存される。さらに、暗号化ファイルＦ１’-ＦＮ’は、ページモードまたはブロックモードにより、フラッシュメモリ２１０中に書き込まれるが、この限りではない。
【００２２】
次に、Ｓ３０６において、データストレージデバイス２００は、消去コマンドが受信されたか判断する。消去コマンドが受信された時、プロセスは、プロセスはステップＳ３０８に進み、そうでなければ、プロセスはステップＳ３１０に進む。
【００２３】
Ｓ３０８において、キー消去モジュール２２６は、消去コマンドに従って、ブロック中に保存されるキーを削除して、暗号化ファイルを無効にする。すなわち、キー消去モジュール２２６は、対応する消去コマンド Ｃ２１-Ｃ２Ｎに従って、キーＫ１-ＫＮを有するブロックを消去し、無許可のユーザーは、キーＫ１-ＫＮにより、暗号化ファイルＦ１’-ＦＮ’を暗号化することができない。これにより、暗号化ファイルＦ１’-ＦＮ’は無効になる。次に、プロセスは、ステップＳ３００に戻り、データストレージデバイス２００は、書き込みコマンドが受信されたかの判断を継続する。
【００２４】
Ｓ３１０において、データストレージデバイス２００は、読み込みコマンドが受信されたか判断する。読み込みコマンドが受信された時、プロセスはＳ３１２に進み、そうでなければ、プロセスはステップＳ３００に進み、データストレージデバイス２００は、書き込みコマンドが受信されたかの判断を継続する。
【００２５】
Ｓ３１２において、暗号化/復号モジュール２２４は、ブロック中に保存される対応するキーＫ１-ＫＮに従って、フラッシュメモリ２１０に保存される暗号化ファイルＦ１’-ＦＮ’を復号して、それぞれ、ファイルＦ１-ＦＮを得て、ファイルＦ１-ＦＮをホスト装置１０２に伝送する。たとえば、コントローラー２２０が読み込みコマンドＲ１を受信する時、暗号化/復号モジュール２２４ は、読み込みコマンドＲ１に従って、暗号化ファイル Ｆ１’のアドレスを設置し、暗号化ファイル Ｆ１’ のアドレスに従って、または、直接、暗号化ファイルＦ１’に従って、対応するキーＫ１を回収する。たとえば、フラッシュメモリ２１０は、さらに、暗号化ファイルＦ１’-ＦＮ’およびキーＫ１-ＫＮのアドレスのマッピング関係、または、暗号化ファイルＦ１’-ＦＮ’およびキーＫ１-ＫＮのマッピング関係を記録するのに用いられるマッピングテーブルを含むことができる。次に、暗号化/復号モジュール２２４は、キーＫ１に従って、暗号化ファイル Ｆ１’ を復号して、ファイルＦ１を得て、ファイルＦ１をホスト装置１０２に伝送する。
【００２６】
本発明により開示されるデータストレージデバイス２００およびデータプロテクション方法は、暗号化キーを消去、または、破壊することにより、保存されたファイルを無効にすることができる。
【００２７】
図４は、本発明のデータストレージデバイスの別の具体例を示す図である。データストレージデバイス４００は、フラッシュメモリ４１０およびコントローラー４２０を含む。コントローラー４２０が設置されて、ホスト (図示しない) 、たとえば、ＰＣ、ラップトップ、ノートブック等から、書き込みコマンドＣ１とデータを受信する。コントローラー４２０は、仕様フラッシュメモリ４１０に対応するプログラムコマンドＰＣ１を伝送する。フラッシュメモリ４１０は、東芝ＮＡＮＤフラッシュまたはサムソンＮＡＮＤフラッシュ等で、フラッシュメモリ４１０は複数のブロック４１０１-４１０Ｎを含み、各ブロック４１０１-４１０Ｎは複数のページ(図示しない)を含む。プログラムコマンドの例は“0x80 ALE Data 0x10”で、フラッシュメモリ４１０が設定されて、仕様フラッシュメモリ４１０に対応するプログラムコマンドＰＣに従って、データを、ブロック４１０２のページの複数の第一ページ中に書き込む、または、プログラムする。ある状況において、ユーザーがある種のセキュリティのために、データを削除したい時、ホストは、削除コマンドＤＣ１をコントローラー４２０に伝送することができ、削除コマンドＤＣ１は正常でないが、特別である (例えば、ベンダーコマンド)。削除コマンドＤＣ１が受信される時、コントローラー４２０は別のプログラムコマンドＰＣ２をフラッシュメモリ４１０に伝送して、フラッシュメモリ４１０が、プログラムコマンドＰＣ１に応答してプログラムされた第一ページを、再プログラム、オーバープログラム、上書き、再書き込みできるようにする。これで、第一ページ中に保存されるデータが永遠に破壊される。すなわち、コントローラー４２０が設定されて、ＯＳのファイル割り当て表、または、コントローラー４２０のリンキング表を削除／更新するだけでなく、フラッシュメモリ４１０を上書き、または、オーバープログラムすることにより、データを破壊する。 
【００２８】
データ伝送方法、または、ある態様、または、それらの一部は、有形的表現媒体、たとえば、フレキシブルディスク、CD-ROMS、ハードドライバ、または、別の機械読み取り可能ストレージ媒体等で具体化されるプログラムコード (実行可能な命令)の形式を取り、プログラムコードがロードされ、コンピュータなどの機械により実行される時、機械は、方法を実施する装置になる。方法は、ある伝送媒体、たとえば、電気配線またはケーブル敷設で伝送されるプログラムコードの形式、または、別の形式の伝送で具体化され、プログラムコードが受信され、機械、たとえば、コンピュータによりロードおよび実行される時、機械は装置となって、開示方法を実施する。汎用プロセッサで実施される時、プログラムコードはプロセッサと結合して、特定応用向け論理回路に類似して操作する固有の装置を提供する。
【００２９】
本発明では好ましい実施例を前述の通り開示したが、これらは決して本発明に限定するものではない。当該技術を熟知する者なら誰でも、本発明の精神と領域を脱しない範囲内で各種の変動や潤色を加えることができる。従って本発明の保護範囲は、特許請求の範囲で指定した内容を基準とする。
【符号の説明】
【００３０】
１００  ストレージシステム 
１０２  ホスト
２００  データストレージデバイス
２１０  フラッシュメモリ
２２０  コントローラー
２２２  キー生成モジュール
２２４  暗号化/復号モジュール
２２６  キー消去モジュール
Ｒ１-ＲＮ  読み込みコマンド
Ｆ１-ＦＮ  ファイル
Ｆ１’-ＦＮ’暗号化ファイル
Ｃ１１-Ｃ１Ｎ  書き込みコマンド
Ｃ２１-Ｃ２Ｎ  消去コマンド
Ｋ１-ＫＮ  キー
４００  データストレージデバイス
４１０  フラッシュメモリ
４２０  コントローラー
４１０１-４１０Ｎ  ブロック
【図１】
2014194734.tif 000003
【図２】
2014194734.tif 000004
【図３】
2014194734.tif 000005
【図４】
2014194734.tif 000006
【外国語明細書】
[TITLE]
DATA STORAGE DEVICE AND DATA PROTECTION METHOD
[CROSS REFERENCE TO RELATED APPLICATIONS]
[0001]        This application claims the benefit of U.S. Provisional Application No. 61/645,977, filed May. 11, 2012, the entirety of which is/are incorporated by reference herein.
[BACKGROUND OF THE INVENTION]
[Field of the Invention]
[0002]        The present invention relates to a data storage device, and in particular, relates to a data storage device for encrypting data.
Description of the Related Art
[0003]        The flash memory is one kind of non-volatile memory that can be erased electrically and can be re-programmed, and it is mainly implemented in memory cards, USB flash drives, eMMCs, or solid-state disks for storing data and transmitting data between computer systems and the digital products.
[0004]        A flash memory may comprise multiple memory blocks and each memory block has multiple storing pages for storing data. Flash memories erase data in one memory block unit and program data in one storing page unit. However, the data stored in the flash memory may not be erased after users delete the data. Therefore, the deleted data may be accessed by unauthorized users, hindering information security.
[BRIEF SUMMARY OF THE INVENTION]
[0005]        A detailed description is given in the following embodiments with reference to the accompanying drawings.
[0006]        The present invention discloses a data storage device including a flash memory and a controller. The flash memory includes a plurality of blocks. The controller encrypts a first file to produce a first encrypted file and stores the encrypted first file to the flash memory, wherein the controller further comprises a key generation module, an encryption/decryption module and a key eliminating module. The key generation module is arranged to produce a first key according to a first write command of a host device, wherein the first key is arranged to be stored in a first block of the blocks. The encryption/decryption module is arranged to encrypt the first file according to the first key to produce a first encrypted file, wherein the first encrypted file is arranged to be stored in at least one second block of the blocks. The key eliminating module is arranged to delete the first key stored in the first block according to a first eliminating command in order to invalidate the first encrypted file stored in the second block.
[0007]        The present invention further discloses a data protection method including: producing a first key according to a first write command of a host device and storing the first key in a first block; encrypting a first file according to the first key to produce a first encrypted file and storing the first encrypted file in at least one second block; and erasing the first block to delete the first key according to a first eliminating command for invalidating the first encrypted file stored in the second block.
[0008]        The present invention further discloses a data protection method including: receiving a first write command and a first file; producing a first key according to the first write command; encrypting a first file according to the first key to produce a first encrypted file; storing the first key in a first block, and storing the first encrypted file in at least one second block; and deleting the first key and retaining the first encrypted file when a first eliminating command has been received.
[0009]        The present invention further discloses a method for accessing a flash memory, comprising: receiving a write command and a first data from a host; transmitting a first program command for writing the first data into a plurality of first pages of a block of the flash memory; receiving a delete command for deleting the first data from the host; and transmitting a second program command for writing a predetermined data into the first pages.
[0010]        The present invention further discloses a method for accessing a flash memory, comprising: receiving a write command and a first data from a host; transmitting a first program command for writing the first data into a plurality of first pages of a block of the flash memory; receiving a delete command for deleting the first data from the host; and transmitting a second program command for over-programming the first pages.
[BRIEF DESCRIPTION OF THE DRAWINGS]
[0011]        The present invention can be more fully understood by reading the subsequent detailed description and examples with references made to the accompanying drawings, wherein:
[Figure1]    FIG. 1 is a schematic diagram illustrating an embodiment of a storage system of the present invention;
[Figure2]    FIG. 2 is a schematic diagram illustrating an embodiment of a data storage device of the present invention;
[Figure3]    FIG. 3 is a flowchart of a data protection method according to an embodiment of the present invention.
[Figure4]    FIG. 4 is a schematic diagram illustrating another embodiment of a data storage device of the present invention.
[DETAILED DESCRIPTION OF THE INVENTION]
[0012]        The following description is of the best-contemplated mode of carrying out the invention. This description is made for the purpose of illustrating the general principles of the invention and should not be taken in a limiting sense. The scope of the invention is best determined by reference to the appended claims.
[0013]        FIG. 1 is a schematic diagram illustrating an embodiment of a storage system of the present invention. The storage system 100 includes a host device 102 and a data storage device 200, such as a solid state drive (SSD), SD card or flash drive. The host device 102 is arranged to transmit at least one files F1-FN, at least one write commands C11-C1N, at least one eliminating commands C21-C2N and at least one read commands R1-RN. The data storage device 200 is arranged to encrypt and store the file(s) F1-FN according to the corresponding write command(s) C11-C1N. The data storage device 200 is further arranged to delete the corresponding key of the file(s) F1-FN according to the corresponding eliminating command(s) C21-C2N, and transmit the stored file(s) F1-FN to the host device 102 according to the corresponding read command(s) R1-RN.
[0014]        FIG. 2 is a schematic diagram illustrating an embodiment of a data storage device of the present invention. The data storage device 200 includes a flash memory 210 and a controller 220. The flash memory 210 is arranged to store the file(s) F1-FN and/or the at least one encrypted file(s) F1' -FN' . It should be noted that the flash memory 210 includes a plurality of memory units (not shown), each of the memory unit includes a plurality of blocks (not shown), and each of the blocks includes a plurality of pages (not shown). The controller 220 is arranged to encrypt the file(s) F1-FN according to the write command(s) C11-C1N to produce the encrypted file(s) F1' -FN' , respectively, and store the encrypted file(s) F1' -FN'  in the flash memory 210. The controller 220 is further arranged to invalidate the encrypted file(s) F1' -FN'  stored in the flash memory 210 according to the eliminating command(s) C21-C2N, decrypt the encrypted file(s) F1' -FN'  according to the read command(s) R1-RN, and transmit the decrypted file(s) F1-FN to the host device 102. Moreover, the controller 220 further includes a key generation module 222, an encryption/decryption module 224 and a key eliminating module 226.
[0015]        The key generation module 222 is arranged to produce the key(s) K1-KN according to the write command(s) C11-C1N received form the host device 102, respectively. The key generation module 222 is further arranged to transmit the key(s) K1-KN to the encryption/decryption module 224, and store the key(s) K1-KN in the blocks of the flash memory 210. It should be noted that each of the key(s) K1-KN is arranged to encrypt and decrypt the data stored in the different blocks, respectively, wherein the number of the block(s) corresponding to the different key(s) K1-KN is determined by the write command(s) C11-C1N, respectively, but it is not limited thereto. For example, the key generation module 222 produces the key K1 according to the write command C11, wherein the key K1 is arranged to encrypt a first predetermined quantity of data, and the first predetermined quantity of data requires 3 blocks to be stored. Therefore, the key 1 corresponds to three blocks of the flash memory. Namely, the key K1 is arranged to encrypt and decrypt the data stored in the fifth block, the sixth block and the seventh block of the flash memory 210. In one of the embodiments of the present invention, the write command(s) C11-C1N is arranged to determine the number of block(s) corresponding to the at least one key(s) K1-KN according to a predetermined length. In another embodiment of the present invention, the write command(s) C11-C1N is arranged to determine the number of the block(s) corresponding to the key(s) K1-KN according to the length of the file(s) F1-FN, respectively.
[0016]        It should be noted that the key generation module 222 is arranged to store the key(s) K1-KN into different blocks or into one block, but it is not limited thereto. For example, the key generation module 222 produces a key K1 according to the write command C11 received from the host device 102, and stores the key K1 in a first block of the flash memory 210. Next, the key generation module 222 produces a key K2 according to the write command C12 received from the host device 102, and stores the key K2 in the first block of the flash memory 210. Therefore, the key K1 and Key K2 will be deleted by erasing the first block by the controller 220 if the controller 220 receives the eliminating command C21. Namely, the controller 220 erases the first block to delete the key(s) K1-KN when receiving the eliminating command C21. In another embodiment of the present invention, the key generation module 222 produces a key K1 according to a write command C11 received from the host device 102, and stores the key K1 in a first block of the flash memory 210. Next, the key generation module 222 produces a key K2 according to a write command C12 received from the host device 102, and stores the key K2 in a third block of the flash memory 210. In this embodiment, users can delete the key K1 or the key K2 by erasing the first block or the third block, respectively.
[0017]        The encryption/decryption module 224 is arranged to encrypt the file(s) F1-FN according to the corresponding key(s) K1-KN to produce the encrypted file(s) F1' -FN' , respectively, wherein the encrypted file(s) F1' -FN'  is arranged to be stored in the block(s) of the flash memory 210. For example, the encryption/decryption module 224 can encrypt the file(s) F1-FN according to the key(s) K1-KN by Advanced Encryption Standard (AES), but it is not limited thereto. In other embodiments, the encryption/decryption module 224 is further arranged to encrypt the file(s) F1-FN by the Data Encryption Standard (DES) or the Triple Data Encryption Standard (3DES). It should be noted that the encrypted file(s) F1' -FN'  can be stored with the key(s) K1-KN in the same block(s), or stored in the block different from the block(s) with the key(s) K1-KN, but it is not limited thereto. In a better embodiment of the present invention, the encrypted file(s) F1' -FN'  and the key(s) K1-KN are arranged to be stored in different blocks. Moreover, the encrypted file(s) F1' -FN'  can be written into the flash memory 210 by page unit or block unit, but is not limited thereto. The encryption/decryption module 224 is further arranged to decrypt the encrypted file(s) F1' -FN'  stored in the flash memory 210 according to the corresponding key(s) K1-KN stored in the block(s) to obtain the file(s) F1-FN, respectively, and transmit the file(s) F1-FN to the host device 102. For example, the encryption/decryption module 224 locates the encrypted file F1'  according to a read command R1 when the controller 220 receives the read command R1, and retrieves the corresponding key K1 according to the address of the encrypted file F1'  or directly according to the encrypted file F1' . For example, the flash memory 210 can further include a mapping table used to record the mapping relation of the address(es) of the encrypted file(s) F1' -FN'  and the key(s) K1-KN or the mapping relation of the encrypted file(s) F1' -FN'  and the key(s) K1-KN. Next, the encryption/decryption module 224 can decrypt the encrypted file F1'  according to the key K1 to obtain the file F1, and transmit the file F1 to the host device 102.
[0018]        The key eliminating module 226 deletes the key(s) K1-KN stored in the block(s) according to the corresponding eliminating command(s) C21-C2N in order to invalidate the encrypted file(s) F1' -FN' . Namely, the key eliminating module 226 is arranged to erase the block(s) having the key(s) K1-KN according to the corresponding eliminating command(s) C21-C2N, such unauthorized users will not be able to encrypt the encrypted file(s) F1' -FN'  by the key(s) K1-KN. Therefore, the encrypted file(s) F1' -FN'  will be invalid. In another embodiment, the key eliminating module 226 is arranged to overwrite the block(s) having the key(s) K1-KN with invalid data according to the corresponding eliminating command(s) C21-C2N. When the block(s) has(have) been overwritten, the corresponding key(s) K1-KN will be destroyed, such that unauthorized users will not be able to encrypt the encrypted file(s) F1' -FN'  by the key(s) K1-KN.
[0019]        FIG. 3 is a flowchart of a data protection method according to an embodiment of the present invention. The data protection method is applied to the storage device 200 of FIG. 2. The process starts at step S300.
[0020]        In step S300, the data storage device 200 determines whether a write command has been received. If the write command has been received, the process goes to step S302, otherwise, the process goes to step S306.
[0021]        In step S302, the key generation module 222 is arranged to produce a key according to the write command received form the host device 102, and transmit the key to the encryption/decryption module 224 to store in the block(s) of the flash memory 210. It should be noted that each of the key(s) K1-KN is arranged to encrypt and decrypt the data stored in the different blocks, respectively, wherein the number of the block(s) corresponding to the different key(s) K1-KN is determined by the write command(s) C11-C1N, respectively, but it is not limited thereto. For example, the key generation module 222 produces the key K1 according to the write command C11, wherein the key K1 is arranged to encrypt the data with a first predetermined quantity, and the first predetermined quantity requires 3 blocks to be stored. Therefore, the key K1 is arranged to encrypt and decrypt the data stored in the fifth block, the sixth block and the seventh block of the flash memory 210. In one of the embodiments of the present invention, the write command(s) C11-C1N is arranged to determine the number of block(s) corresponding to the at least one key(s) K1-KN according to a predetermined length. In another embodiment of the present invention, the write command(s) C11-C1N is arranged to determine the number of the block(s) corresponding to the key(s) K1-KN according to the length of the file(s) F1-FN, respectively. Moreover, the key generation module 222 is arranged to store the key(s) K1-KN into different blocks or into the same block, but it is not limited thereto. For example, the key generation module 222 produces a key K1 according to the write command C11 received from the host device 102, and stores the key K1 in a first block of the flash memory 210. Next, the key generation module 222 produces a key K2 according to the write command C12 received from the host device 102, and stores the key K2 in the first block of the flash memory 210. It should be noted that, in this embodiment, the key(s) stored in the same block will be deleted, simultaneously, due to the flash memory being in the block erasing mode. In another embodiment of the present invention, the key generation module 222 produces a key K1 according to a write command C11 received from the host device 102, and stores the key K1 in a first block of the flash memory 210. Next, the key generation module 222 produces a key K2 according to a write command C12 received from the host device 102, and stores the key K2 in a third block of the flash memory 210. In this embodiment, users can delete the key K1 or the key K2 by erasing the first block or the third block, respectively.
[0022]        Next, in step S304, the encryption/decryption module 224 is arranged to encrypt a corresponding file according to the key to produce an encrypted file, and the controller 220 is arranged to store the encrypted file in the block(s) of the flash memory 210. It should be noted that the encrypted file(s) F1' -FN'  can be stored with the key(s) K1-KN in the same block(s), or stored in the block(s) different from the block(s) with the key(s) K1-KN, but it is not limited thereto. In a better embodiment of the present invention, the encrypted file(s) F1' -FN'  and the key(s) K1-KN are arranged to be stored in different blocks. Moreover, the encrypted file(s) F1' -FN'  can be written into the flash memory 210 by page mode or block mode, but is not limited thereto.
[0023]        Next, in step S306, the data storage device 200 determines whether an eliminating command has been received. When the eliminating command has been received, the process goes to step S308, otherwise, the process goes to step S310.
[0024]        In step S308, the key eliminating module 226 deletes the key stored in the block(s) according to the eliminating command in order to invalidate the encrypted file. Namely, the key eliminating module 226 is arranged to erase the block(s) having the key(s) K1-KN according to the corresponding eliminating command(s) C21-C2N, such that unauthorized users will not be able to encrypt the encrypted file(s) F1' -FN'  by the key(s) K1-KN. Therefore, the encrypted file(s) F1' -FN'  will be invalid. Next, the process backs to step S300, wherein the data storage device 200 continues to determine whether a write command has been received.
[0025]        In step S310, the data storage device 200 determines whether a read command has been received. When the read command has been received, the process goes to step S312, otherwise, the process goes to step S300, wherein the data storage device 200 continues to determine whether a write command has been received.
[0026]        In step S312, the encryption/decryption module 224 is arranged to decrypt the encrypted file(s) F1' -FN'  stored in the flash memory 210 according to the corresponding key(s) K1-KN stored in the block(s) to obtain the file(s) F1-FN, respectively, and transmit the file(s) F1-FN to the host device 102. For example, the encryption/decryption module 224 locates the address of the encrypted file F1'  according to a read command R1 when the controller 220 receives the read command R1, and retrieves the corresponding key K1 according to the address of the encrypted file F1'  or directly according to the encrypted file F1' . For example, the flash memory 210 can further include a mapping table used to record the mapping relation of the address(es) of the encrypted file(s) F1' -FN'  and the key(s) K1-KN or the mapping relation of the encrypted file(s) F1' -FN'  and the key(s) K1-KN. Next, the encryption/decryption module 224 can decrypt the encrypted file F1'  according to the key K1 to obtain the file F1, and transmit the file F1 to the host device 102.
[0027]        The data storage device 200 and the data protection method disclosed by the present invention can invalidate the stored file(s) by deleting or destroying the encryption key.
[0028]        FIG. 4 is a schematic diagram illustrating another embodiment of a data storage device of the present invention. The data storage device 400 includes a flash memory 410 and a controller 420. The controller 420 is configured to receive a write command C1 and data from a host (not shown) ex. PC, laptop, notebook and etc. The controller 420 transmits a program command PC1 corresponding to the specification the flash memory 410. The flash memory 410 can be a Toshiba NAND flash or Samsung NAND flash or others, and the flash memory 410 includes a plurality of blocks 4101-410N, and each of the blocks 4101-410N includes a plurality of pages (not shown). An example of the program command is "0x80 ALE Data 0x10" and the flash memory 410 is configured to write or program the data into a plurality of first pages of the pages of the block 4102 according to the program command PC1 corresponding to the specification the flash memory 410. In some situation, when users want to delete the data for some kind of security reason, the host can transmit a delete command DC1 to the controller 420, the delete command DC1 is not normal but special (ex. a vendor command). When the delete command DC1 is received, the controller 420 transmits another program command PC2 to the flash memory 410 to enable the flash memory 410 to re-program, over-program, overwrite or rewrite the first pages that have/had been programmed in response to the program command PC1. That causes the data stored in the first pages is destroyed forever. Namely, the controller 420 is configured to destroy the data by overwrite or overprogram the flash memory 410, not just deleting/updating the file allocation table of OS or linking table of the controller 420. 
[0029]        Data transmission methods, or certain aspects or portions thereof, may take the form of a program code (i.e., executable instructions) embodied in tangible media, such as floppy diskettes, CD-ROMS, hard drives, or any other machine-readable storage medium, wherein, when the program code is loaded into and executed by a machine, such as a computer, the machine thereby becomes an apparatus for practicing the methods. The methods may also be embodied in the form of a program code transmitted over some transmission medium, such as electrical wiring or cabling, through fiber optics, or via any other form of transmission, wherein, when the program code is received and loaded into and executed by a machine, such as a computer, the machine becomes an apparatus for practicing the disclosed methods. When implemented on a general-purpose processor, the program code combines with the processor to provide a unique apparatus that operates analogously to application-specific logic circuits.
[0030]        While the invention has been described by way of example and in terms of the preferred embodiments, it is to be understood that the invention is not limited to the disclosed embodiments. To the contrary, it is intended to cover various modifications and similar arrangements (as would be apparent to those skilled in the art). Therefore, the scope of the appended claims should be accorded the broadest interpretation so as to encompass all such modifications and similar arrangements.
1. A data storage device, comprising:
a flash memory, comprising a plurality of blocks; and
a controller, arranged to encrypt a first file to produce a first encrypted file and store the first encrypted file to the flash memory, wherein the controller further comprises:
a key generation module, arranged to produce a first key according to a first write command of a host device, wherein the first key is arranged to be stored in a first block of the blocks;
an encryption/decryption module, arranged to encrypt the first file according to the first key to produce a first encrypted file, wherein the first encrypted file is arranged to be stored in at least one second block of the blocks; and
a key eliminating module, arranged to delete the first key stored in the first block according to a first eliminating command in order to invalidate the first encrypted file stored in the second block.
2. The data storage device as claimed in claim 1, wherein the controller is further arranged to encrypt a second file and store the encrypted second file in the flash memory, and the key generation module is further arranged to  produce a second key according to a second write command of the host device, wherein the second key is arranged to be stored in the first block or a third block of the blocks, the encryption/decryption module is further arranged to encrypt the second file according to the second key to produce a second encrypted file and store the second encrypted file in at least one fourth block of the blocks, and the key eliminating module is further arranged to delete the second key stored in the first block or the third block.
3. The data storage device as claimed in claim 2, wherein the encryption/decryption module is arranged to decrypt the first encrypted file according to the first key stored in the first block to obtain the first file, decrypt the second encrypted file according to the second key stored in the first block or the third block to obtain a second file, and transmit the first file and the second file to the host device, respectively.
4. The data storage device as claimed in claim 3, wherein the first key is arranged to encrypt and decrypt data stored in the at least one second block, and the second key is arranged to encrypt and decrypt data stored in the at least one fourth block, wherein the number of the at least one second block and the at least one fourth block is determined by the first write command and the second write command.
5. The data storage device as claimed in claim 4, wherein the first write command and the second write command is arranged to determine the number of the at least one second block and the at least one fourth block according to a predetermined length.
6. The data storage device as claimed in claim 4, wherein the first write command is arranged to determine the number of the at least one second block according to the length of the first file, and the second write command is arranged to determine the number of the at least one fourth block according to the length of the second file.
7. The data storage device as claimed in claim 1, wherein the key eliminating module is arranged to erase the first block according to the first eliminating command in order to delete the first key.
8. A data protection method, comprising:
producing a first key according to a first write command of a host device, and storing the first key in a first block;
encrypting a first file according to the first key to produce a first encrypted file, and storing the first encrypted file in at least one second block; and
erasing the first block to delete the first key according to a first eliminating command for invalidating the first encrypted file stored in the second block.
9. As the data protection method as claimed in the claim 8, comprising:
producing a second key according to a second write command of the host device, and storing the second key in the first block or a third block;
encrypting the second file according to the second key to produce a second encrypted file, and storing the second encrypted file in at least on fourth block; and
deleting the second key stored in the first block or the third block according to a second eliminating command.
10. As the data protection method as claimed in the claim 9, further comprising decrypting the first encrypted file stored in the least one second block according to the first key stored in the first block to obtain the first file, decrypting the second encrypted file stored in the fourth block according to the second key stored in the first block or the third block to obtain the second file, and transmitting the first file and the second file to the host device.
11. As the data protection method as claimed in the claim 10, wherein the first key is arranged to encrypt and decrypt data stored in the at least one second block, and the second key is arranged to encrypt and decrypt data stored in the at least one fourth block, wherein the number of the at least one second block and the at least one fourth block is determined by the first write command and the second write command.
12. As the data protection method as claimed in the claim 11, wherein the first write command and the second write command is arranged to determine the number of the at least one second block and the at least one fourth block according to a predetermined length.
13. As the data protection method as claimed in the claim 11, wherein the first write command is arranged to determine the number of the at least one second block according to the length of the first file, and the second write command is arranged to determine the number of the at least one fourth block according to the length of the second file.
14. A data protection method, comprising:
receiving a first write command and a first file;
producing a first key according to the first write command;
encrypting the first file according to the first key to produce a first encrypted file;
storing the first key in a first block, and storing the first encrypted file in at least one second block; and
deleting the first key and retaining the first encrypted file when a first eliminating command has been received.
15. As the data protection method as claimed in the claim 14, further comprising:
retrieving the first key and the first encrypted file when a first read command has been received from a host device;
decrypting the first encrypted file according to the first key to obtain the first file; and
transmitting the first file to the host device.
16. As the data protection method as claimed in the claim 14, wherein the step of deleting the first key, is erasing the first block.
17. As the data protection method as claimed in the claim 14, wherein the step of deleting the first key, is writing invalid data into the first block.
18. A method for accessing a flash memory, comprising:
receiving a write command and a first data from a host;
transmitting a first program command for writing the first data into a plurality of first pages of a block of the flash memory;
receiving a delete command for deleting the first data from the host; and
transmitting a second program command for writing a predetermined data into the first pages.
19. A method for accessing a flash memory, comprising:
receiving a write command and a first data from a host;
transmitting a first program command for writing the first data into a plurality of first pages of a block of the flash memory;
receiving a delete command for deleting the first data from the host; and
transmitting a second program command for over-programming the first pages.
１．Abstract
The encryption/decryption module is arranged to encrypt the first file according to the first key to produce a first encrypted file, wherein the first encrypted file is arranged to be stored in at least one second block of the blocks. The key eliminating module is arranged to delete the first key stored in the first block according to a first eliminating command in order to invalidate the first encrypted file stored in the second block.
2. Representative Drawing
Fig.3
【図１】
2014194734.tif 000007
【図２】
2014194734.tif 000008
【図３】
2014194734.tif 000009
【図４】
2014194734.tif 000010