(57)【要約】【課題】フラッシュメモリや強誘電体メモリなどの不揮発性メモリにおける秘密保持を確実に行う。【解決手段】本不揮発性メモリ・ドライバは、コンピュータに、不揮発性メモリに記録されている秘密情報に対するデータ書き換え又はデータ削除の命令を受け付ける命令受け付けステップと、秘密情報に対するデータ書き換え又はデータ削除の後にデータ書き換え前の秘密情報又はデータ削除の対象である秘密情報が不揮発性メモリ上に残されないようにするための無効化処理を、データ書き換え後の秘密情報にアクセス可能になる前又はデータ削除の対象である秘密情報にアクセスできなくなる前に実施する無効化実施ステップとを実行させるものである。【選択図】図１
2010108315.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリに記録されている秘密情報に対するデータ書き換え又はデータ削除の命令を受け付ける命令受け付けステップと、
前記秘密情報に対するデータ書き換え又はデータ削除の後に前記データ書き換え前の秘密情報又は前記データ削除の対象である前記秘密情報が前記不揮発性メモリ上に残されないようにするための無効化処理を、前記データ書き換え後の秘密情報にアクセス可能になる前又は前記データ削除の対象である前記秘密情報にアクセスできなくなる前に実施する無効化実施ステップと、
を、コンピュータに実行させるための不揮発性メモリ・ドライバ。
【請求項２】
前記データ書き換え後の秘密情報にアクセス可能になる前又は前記データ削除の対象である前記秘密情報にアクセスできなくなる前が、前記命令受け付けステップにおいて受け付けた論理アドレスから、前記データ書き換え後の秘密情報の物理アドレスが取得可能になる前又は前記データ削除の対象である前記秘密情報の物理アドレスが取得不能になる前である
請求項１記載の不揮発性メモリ・ドライバ。
【請求項３】
前記不揮発性メモリが、フラッシュメモリである場合には、
前記無効化処理が、前記データ書き換え前の秘密情報又は前記データ削除の対象である前記秘密情報に対する、消去処理で行われるビット反転とは異なるビット反転処理である
請求項１記載の不揮発性メモリ・ドライバ。
【請求項４】
前記不揮発性メモリが、強誘電体メモリである場合には、
前記無効化処理が、前記データ書き換え前の秘密情報又は前記データ削除の対象である前記秘密情報に対する読み出し処理である
請求項１記載の不揮発性メモリ・ドライバ。
【請求項５】
前記無効化実施ステップが、前記データ書き換え前の秘密情報又は前記データ削除の対象である前記秘密情報に対する管理フラグが、有効から無効に変更される前に実施される
請求項１記載の不揮発性メモリ・ドライバ。
【請求項６】
前記無効化実施ステップを、前記命令受け付けステップ以降の一連の処理の中で実施する
請求項１記載の不揮発性メモリ・ドライバ。
【請求項７】
前記不揮発性メモリが、セキュリティ領域と非セキュリティ領域とに分かれており、
前記無効化実施ステップが、前記命令にセキュリティ指定がある場合、若しくは前記命令で指定される論理アドレス又は当該論理アドレスから特定される物理アドレスがセキュリティ領域を示している場合に実施される
請求項１記載の不揮発性メモリ・ドライバ。
【請求項８】
前記命令で指定される論理アドレス又は当該論理アドレスから特定される物理アドレスがセキュリティ領域であるか否かを表すセキュリティフラグを、前記不揮発性メモリ・ドライバを実行する装置側又は前記不揮発性メモリ側で管理する
請求項７記載の不揮発性メモリ・ドライバ。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、フラッシュメモリや強誘電体メモリ（ＦｅＲＡＭ（Ferroelectric Random Access Memory））などの不揮発性メモリにおける秘密保持技術に関する。
【背景技術】
【０００２】
ＵＳＢ（Universal Serial Bus）メモリや携帯電話機など、フラッシュメモリなどの不揮発性メモリを用いた記憶装置（以下、メモリ装置とも呼ぶ）を搭載した製品が広く利用されている。不揮発性メモリを用いた記憶装置では、メモリの劣化の進行度合いを低下させ、また各エリアが均等に劣化するようなメモリ管理が行われている。
【０００３】
フラッシュメモリなどの不揮発性メモリには、データアクセスに関して揮発性メモリにはない特徴を有している。例えばフラッシュメモリの場合、以下の特徴を有している。
（ａ）フラッシュメモリに格納されたデータを「１」から「０」に変化させることは可能だが、「０」から「１」に変更することはできない。
（ｂ）「０」から「１」に変更するには「消去」という処理を行う必要がある。「消去」はリード／ライトに比べて大きな単位（「ユニット」と呼ぶ）でのみ行うことができる。これは、ＮＡＮＤ型フラッシュメモリとＮＯＲ型のフラッシュメモリとではサイズは異なるが、その傾向は同じである。消去を行うとユニット内の全ビットが「１」になる。
（ｃ）「消去」を実行するとそのユニットは劣化する。劣化が進むとレイテンシが極端に遅くなるなど、実用上使用不可能となる。
【０００４】
このような特徴のために、通常は、例えばホストＯＳ（Operating System）がアクセスする際に用いるデータ単位毎（すなわち論理上の区切り（ブロックと呼ぶ）毎）に、有効なデータが記録されていることを表す「有効」フラグと、不要なデータ（すなわち、ホストＯＳ管理の論理アドレスと対応付けられていないデータ）が格納されており、書き込み不可能な状態にあることを表す「無効」フラグと、消去済み（すなわち、全て「１」）であり、書き込み可能な状態にあることを表す「消去済み」フラグとを用いて、状態を管理する。
【０００５】
なお、本願では「１」から「０」に変化させるタイプについてのみ記述するが、フラッシュメモリには「０」と「１」の関係が逆のものも存在する。このような逆方向のタイプについては、以下の説明については「１」と「０」を読み替えればよい。
【０００６】
一方、強誘電体メモリについても、フラッシュメモリとは異なる特徴を有している。
（ａ）フラッシュメモリとは異なり、「１」から「０」にすることもでき、かつ「０」から「１」にすることもできる。従って、フラッシュメモリとは異なり、消去処理を行う必要はない。
（ｂ）一般的に、強誘電体メモリからデータを読み出すと、強誘電体メモリに格納されていたデータは消えてしまい、全て「０」になってしまう。従って、読み出しを行う場合には、読み出したデータを再書き込みする必要がある。
（ｃ）読み出し、書き込み、書き換え、削除処理を行うと、徐々に劣化し、最終的にはアクセス速度が低下して実用的な使用ができなくなる。
【０００７】
強誘電体メモリの場合には、消去処理を行う必要はないので、ブロック毎に、「有効」フラグと「無効」フラグとを用いて状態を管理すればよい。ただし、２Ｔ２Ｃ型などの強誘電体メモリでは、（ｂ）の性質はない。
【０００８】
一方、セキュリティ用途のメモリ装置では、セキュリティの観点から、不要となった秘密情報は消去し、メモリ装置内に残しておいてはいけない。この要件を満たす方法として、ある秘密情報が不要になった場合、その時点で当該データを消去する方法が考えられる。しかしこのような単純な方法では、セキュリティ用途のメモリ装置をフラッシュメモリで実現した場合には、大きな問題を生じる。具体的には、フラッシュメモリではデータの消去は書き込みよりも大きな単位で行わなければない。このため、ある秘密情報が不要となった時点で消去を行った場合、同一消去単位に含まれる、消去対象ではない別のデータも消去しなければならない。また、消去処理によってフラッシュメモリが劣化するという別の問題も生ずる。これらの要因により、秘密情報が不要になった時点で消去処理を行うという単純な方法は、フラッシュメモリにおいてはうまくいかない。また、ファイルシステムを構成した場合において、ファイルシステムにおける、不要な情報の「削除」や別データの書き込み（上書きとも呼ぶ）を実行すると、論理的には削除されるが、物理的には消去されずに残されたままとなる。すなわち、秘密情報が記録されているブロックのフラグが「無効」となって、論理アドレスから当該秘密情報が記録されている物理アドレスが特定できないようになるが、実際の秘密情報自体についてはフラッシュメモリ上元の物理アドレスに残ってしまっている。
【０００９】
また、セキュリティ用途のメモリ装置であっても、必ずしも全ての不要データを物理的に消去する必要はない。例えば、使用済みの暗号秘密鍵や個人情報はフラッシュメモリに残してはならず物理的に消去する必要があるが、インターネット等で公開されている一般的な資料などは物理的に残されていても問題ない。セキュリティ用途のフラッシュメモリにおいても、データの性質に応じて物理的な消去の実行又は不実行の使い分けができると好ましい。
【００１０】
これに対して、「ゼロ書込指示」と「ゼロ書込指示受付手段」をフラッシュメモリ装置に準備し、「有効」、「無効」、「ゼロクリア済」、「消去済」の４ステータスがフラグ等によって管理される方式が提案されている。処理の際には、フラッシュメモリ装置の外部にあるＣＰＵ（Central Processing Unit）にて各物理アドレスのステータスをチェックし、「無効」となっている物理領域が存在するか検索を行う。そして「無効」となっている領域について「ゼロ書込指示」を行う。フラッシュメモリ装置は「ゼロ書込指示受付手段」にて指示を受け付けると、「１」となっているビットに「０」を書き込む。
【００１１】
通常、ホストＯＳは自身が管理する論理アドレスのみを扱うことが可能であり、フラッシュメモリ上の物理アドレスをそのまま扱うことができない。従って物理アドレスをＣＰＵが取り扱う本方式は、そのままではファイルシステムに適用できない。
【００１２】
また、「無効」となっている物理領域が存在するか検索する処理を、どのようなタイミングで実施するか明示しておらず、他の処理の合間に実行するとすると、データが「無効」となってから、「無効」と検出され、ゼロ書込処理が実行されるまでの間に電源切断等が発生した場合、秘密情報がフラッシュメモリ上に残されたままとなり、セキュリティ上大きな問題を生じる。そのようなタイミングで実施するわけでなくとも、「無効」なデータの探索を全物理アドレスに対して行うため、処理時間が膨大となる。さらに、セキュリティ領域と非セキュリティ領域の使い分けについては考察されていない。
【００１３】
さらに、「クリーンアップ処理」を実施するような方式もある。すなわち、処理の際には、フラッシュメモリ装置の外部にあるＣＰＵにて各物理アドレスのステータスをチェックし、「無効」となっている物理領域が存在するか検索を行う。そして「無効」となっている領域について「クリーンアップ処理」をする。「クリーンアップ処理」では対象領域に対して、まずフラッシュメモリの「消去処理」の実行を試みる。上で述べたように、消去処理は大きなデータ単位に対してのみ実行可能であるため、ここでの消去処理は失敗することがある。消去処理に失敗した場合には、対象データの「１」となっているビットに「０」を書き込む。本方式でも、「クリーンアップ処理」をどのようなタイミングで実施するか明示しておらず、他の処理の合間に実行するとすると、データが「無効」となってから、「無効」と検出され、クリーンアップ処理が実行されるまでの間に電源切断等が発生した場合、秘密情報がフラッシュメモリ上に残されたままとなり、セキュリティ上大きな問題を生じる。そのようなタイミングで実施するわけでなくとも、「無効」なデータの検索を全物理アドレスに対して行う必要があるため、処理時間が膨大となる。さらに、セキュリティ領域と非セキュリティ領域の使い分けについては考察されていない。
【００１４】
なお、強誘電体メモリを用いたメモリ装置についても、同様の問題があり、これに対処した従来技術は存在していない。
【特許文献１】特開２００４−３１０２２０号公報
【特許文献２】特開２００７−２８０３３０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１５】
以上のように、従来技術では、必ずしも秘密情報の消去が確実に行われるわけではなく、場合によっては秘密漏洩に繋がるという問題があった。
【００１６】
従って、本技術の目的は、フラッシュメモリや強誘電体メモリなどの不揮発性メモリにおける秘密保持を確実に行うことである。
【課題を解決するための手段】
【００１７】
本不揮発性メモリ・ドライバは、コンピュータに、不揮発性メモリに記録されている秘密情報に対するデータ書き換え又はデータ削除の命令を受け付ける命令受け付けステップと、秘密情報に対するデータ書き換え又はデータ削除の後にデータ書き換え前の秘密情報又はデータ削除の対象である秘密情報が不揮発性メモリ上に残されないようにするための無効化処理を、データ書き換え後の秘密情報にアクセス可能になる前又はデータ削除の対象である秘密情報にアクセスできなくなる前に実施する無効化実施ステップとを実行させるものである。
【発明の効果】
【００１８】
フラッシュメモリや強誘電体メモリなどの不揮発性メモリにおける秘密保持を確実に行うことができる。
【発明を実施するための最良の形態】
【００１９】
［実施の形態１］
１．第１の書き込み処理例
第１の実施の形態では、フラッシュメモリにおいて全てのメモリ領域がセキュリティを保持すべきセキュリティ領域である場合の例を説明する。
【００２０】
図１に第１の実施の形態における書き込み処理についてのシステム構成図を示す。パーソナルコンピュータ（ＰＣ）１００では、ＯＳ上アプリケーション・プログラム１０が実行され、さらにＯＳの一部としてフラッシュメモリデバイス２００のためのドライバ２０も実行されている。ドライバ２０は、フラッシュメモリデバイス２００がＰＣ１００に例えばＵＳＢインターフェースを介して接続された時に読み込まれ、且つＯＳ上の論理アドレスとフラッシュメモリ上の物理アドレスとの対応関係を格納する論理／物理アドレス変換テーブル４０を用いて、以下に述べるような処理を実施する。論理／物理アドレス変換テーブル４０は、様々な構成が可能であるが、ここではＯＳ上の論理アドレスから、フラッシュメモリ上の物理アドレスを特定して出力する機能を実現するものとする。なお、本実施の形態における論理／物理アドレス変換テーブル４０の生成については、従来と同じであるから、既に用意されているものとして以下説明する。
【００２１】
フラッシュメモリデバイス２００では、所定のサイズのブロック毎に、当該ブロックの状態がフラグ（存在フラグとも呼ぶ）によって管理されており、当該ブロックに記録されているデータが有効である場合には有効を表す値が、当該ブロックに記録されているデータが無効である場合には無効を表す値が、消去処理が実施され全てのビットが「１」になっている消去済を表す値が登録されるようになっている。図１では、説明をしやすくするために、ブロック毎にその先頭物理アドレスを示しており、さらに対応する存在フラグの状態を表している。
【００２２】
次に、図２及び図３を用いて第１の書き込み処理例を説明する。まず、ドライバ２０は、アプリケーション・プログラム１０から書き込み先論理アドレスＡ及び書き込みデータＤを含むライト（ｗｒｉｔｅ）命令を受け付ける（ステップＳ１）。このｗｒｉｔｅ命令に応答して、ドライバ２０は、論理／物理アドレス変換テーブル４０から、ｗｒｉｔｅ命令に含まれる書き込み先論理アドレスＡに対応する、フラッシュメモリ上の物理アドレスＢを取得するための処理を実施する（ステップＳ３）。ここで、物理アドレスＢを論理／物理アドレス変換テーブル４０から得られなかった場合には（ステップＳ５：Ｎｏルート）、新たなデータ書き込みであるので、ステップＳ１１に移行する。
【００２３】
一方、物理アドレスＢを論理／物理アドレス変換テーブル４０から得られた場合には（ステップＳ５：Ｙｅｓルート）、ドライバ２０は、物理アドレスＢのブロックの全てのビットに「０」を書き込む（ステップＳ７）。図１の例では、物理アドレスＢ「０ｘ１０００００００」が得られて、旧データが全ビット「０」に変更されたことを表している。これによって、旧データは全て消去されているので、旧データの情報漏洩はない。なお、このようなビット反転処理ではなく、可能であれば消去処理を実施するようにしても良い。さらに、ドライバ２０は、物理アドレスＢの存在フラグを「有効」から「無効」に変更する（ステップＳ９）。図１でも、物理アドレスＢ「０ｘ１０００００００」の存在フラグを、「有効」から「無効」に変更している。ステップＳ７を実行することによって仮に読み出し処理が実行されても既に旧データは物理的に読み出し不可能であるが、ステップＳ９を実施することによって論理的にも無効で存在しないデータとなって、通常の処理では読み出し不可能となる。そしてステップＳ１１に移行する。
【００２４】
次に、ドライバ２０は、フラッシュメモリ上における空き領域（存在フラグが「消去済み」を示している消去済み領域）をシークする（ステップＳ１１）。ここで、書き込みデータＤを書き込むのに十分な消去済み空き領域が存在しない場合には（ステップＳ１３：Ｎｏルート）、ドライバ２０は、存在フラグが無効を表している無効領域の消去処理を実施する（ステップＳ１５）。消去処理は、背景技術の欄で述べたようにある程度まとまった領域についてビット「０」を「１」に反転させる処理である。その後、ステップＳ１１における消去済み空き領域のシークに戻る。なお、このような処理を実施しても書き込みデータＤを書き込むのに十分な消去済み空き領域が得られない場合（すなわち容量不足の場合）には、エラーで処理を終了する。
【００２５】
一方、書き込みデータＤを書き込むのに十分な消去済み空き領域が存在する場合には（ステップＳ１３：Ｙｅｓルート）、ドライバ２０は、任意の消去済み空き領域Ｍを特定して、当該消去済み空き領域Ｍに書き込みデータＤを書き込む（ステップＳ１７）。図１の例では「＊」のマーク付きの領域Ｍ（物理アドレス「０ｘ１００００４００」）を特定して、書き込みデータＤを書き込む。処理は、端子Ａを介して図３の処理に移行する。
【００２６】
図３の処理の説明に移行して、ドライバ２０は、書き込みデータＤを書き込んだ領域Ｍの存在フラグを「消去済み」から「有効」に変更する（ステップＳ１９）。図１の例でも、物理アドレス「０ｘ１００００４００」の存在フラグを、「消去済み」から「有効」に変更している。その後、ドライバ２０は、論理アドレスＡに対応する物理アドレスＭ（図１の例では「０ｘ１００００４００」）を用いて、論理アドレスＡから物理アドレスＭが取得できるように論理／物理アドレス変換テーブル４０を更新する（ステップＳ２１）。
【００２７】
ステップＳ２１を実施することによって、新たにデータＤを読み出したりする場合に、論理／物理アドレス変換テーブル４０によってフラッシュメモリ上の物理アドレスＭを得ることができるので、正しいデータを得られるようになる。また、フラッシュメモリ上、旧データは存在せず且つどこにあったのかも分からなくなる。
【００２８】
２．第２の書き込み処理例
第２の書き込み処理例を、図４及び図５を用いて説明する。なお、システム構成は図１に示したものと同様である。
【００２９】
まず、ドライバ２０は、アプリケーション・プログラム１０から書き込み先論理アドレスＡ及び書き込みデータＤを含むライト（ｗｒｉｔｅ）命令を受け付ける（ステップＳ３１）。このｗｒｉｔｅ命令に応答して、ドライバ２０は、フラッシュメモリ上における空き領域（存在フラグが「消去済み」を示している消去済み領域）をシークする（ステップＳ３３）。ここで、書き込みデータＤを書き込むのに十分な消去済み空き領域が存在しない場合には（ステップＳ３５：Ｎｏルート）、ドライバ２０は、存在フラグが無効を表している無効領域の消去処理を実施する（ステップＳ３７）。その後、ステップＳ３３における消去済み空き領域のシークに戻る。なお、このような処理を実施しても書き込みデータＤを書き込むのに十分な消去済み空き領域が得られない場合（すなわち容量不足の場合）には、エラーで処理を終了する。
【００３０】
一方、書き込みデータＤを書き込むのに十分な消去済み空き領域が存在する場合には（ステップＳ３５：Ｙｅｓルート）、ドライバ２０は、任意の消去済み空き領域Ｍを特定して、当該消去済み空き領域Ｍに書き込みデータＤを書き込む（ステップＳ３９）。さらに、ドライバ２０は、書き込みデータＤを書き込んだ領域Ｍの存在フラグを「消去済み」から「有効」に変更する（ステップＳ４１）。
【００３１】
次に、ドライバ２０は、論理／物理アドレス変換テーブル４０から、ｗｒｉｔｅ命令に含まれる書き込み先論理アドレスＡに対応する、フラッシュメモリ上の物理アドレスＢを取得するための処理を実施する（ステップＳ４３）。ここで、物理アドレスＢを論理／物理アドレス変換テーブル４０から得られなかった場合には（ステップＳ４５：Ｎｏルート）、新たなデータ書き込みであるので、端子Ｂを介してステップＳ５１に移行する。
【００３２】
一方、物理アドレスＢを論理／物理アドレス変換テーブル４０から得られた場合には（ステップＳ４５：Ｙｅｓルート)、ドライバ２０は、物理アドレスＢのブロックの全てのビットに「０」を書き込む（ステップＳ４７）。これによって、旧データは全て消去されているので、旧データの情報漏洩はない。なお、このようなビット反転処理ではなく、可能であれば消去処理を実施するようにしても良い。さらに、ドライバ２０は、物理アドレスＢの存在フラグを「有効」から「無効」に変更する（ステップＳ４９）。処理は端子Ｂを介して図５の処理に移行する。
【００３３】
図５の処理の説明に移行して、ドライバ２０は、論理アドレスＡに対応する物理アドレスＭを用いて、論理アドレスＡから物理アドレスＭが取得できるように論理／物理アドレス変換テーブル４０を更新する（ステップＳ５１）。
【００３４】
以上の処理を実施することによって、第１の書き込み処理例と同様の効果を得ることができる。なお、第２の書き込み処理例は、第１の書き込み処理例における（ａ）ステップＳ３乃至Ｓ９と（ｂ）ステップＳ１１乃至Ｓ１９の順番を入れ替えた形になっている。いずれにせよ論理／物理アドレス変換テーブル４０の更新の前に、情報漏洩に最も重要なステップＳ７やＳ４７を行っている。すなわち、ｗｒｉｔｅ命令の受け付けから論理／物理アドレス変換テーブル４０の更新までの一連のデータ書き込み処理に、秘密情報に対するデータ書き換えの後にデータ書き換え前の秘密情報がフラッシュメモリ上に残されないようにするための無効化処理が一体化されている。よって、論理／物理アドレス変換テーブル４０の更新まで終了していれば、情報漏洩はあり得ないことが保証できる。
【００３５】
３．削除処理例
第１の実施の形態における削除処理例を図６及び図７を用いて説明する。図６に削除処理についてのシステム構成図を示す。なお、ＰＣ１００については図１と同じである。フラッシュメモリデバイス２００においては、以下で述べる処理フローにおいて関係する部分が図１とは異なるように示されている。
【００３６】
まず、ドライバ２０は、アプリケーション・プログラム１０から、削除先論理アドレスＡを含む削除命令を受け付ける（ステップＳ６１）。そして、ドライバ２０は、論理／物理アドレス変換テーブル４０から、論理アドレスＡに対応する、フラッシュメモリ上の物理アドレスＢを取得する処理を実施する（ステップＳ６３）。ここで取得された物理アドレスＢのブロックに全ビット「０」を書き込む（ステップＳ６５）。これによって、旧データは読み出せなくなる。例えば、物理アドレスＢが「０ｘ１０００００００」であれば、図６に示すように、旧データを全ビット「０」に変更する。なお、可能であれば消去処理を実施するようにしても良い。さらに、ドライバ２０は、物理アドレスＢの存在フラグを「有効」から「無効」に変更する（ステップＳ６７）。ステップＳ６５及びＳ６７のセットは、ｗｒｉｔｅ命令におけるものと同様である。
【００３７】
その後、ドライバ２０は、論理アドレスＡについてのエントリを、論理／物理アドレス変換テーブル４０から削除することによって更新する（ステップＳ６９）。
【００３８】
このように、削除命令についても、論理／物理アドレス変換テーブル４０の更新の前に、情報漏洩に最も重要なステップＳ６５を行っている。すなわち、削除命令の受け付けから論理／物理アドレス変換テーブル４０の更新までの一連の削除処理に、削除対象の秘密情報がフラッシュメモリ上に残されないようにするための無効化処理が一体化されている。よって、論理／物理アドレス変換テーブル４０の更新まで終了していれば、情報漏洩はあり得ないことが保証できる。
【００３９】
図１及び図６において、論理／物理アドレス変換テーブル４０は、ＰＣ１００側のＲＡＭに設けられているが、フラッシュメモリデバイス２００に設けるようにしても良い。
【００４０】
４．第３の書き込み処理例
第１及び第２の書き込み処理例をさらに変更することも可能である。第３の書き込み処理例を図８及び図９を用いて説明する。
【００４１】
まず、ドライバ２０は、アプリケーション・プログラム１０から書き込み先論理アドレスＡ及び書き込みデータＤを含むライト（ｗｒｉｔｅ）命令を受け付ける（ステップＳ７１）。このｗｒｉｔｅ命令に応答して、ドライバ２０は、論理／物理アドレス変換テーブル４０から、ｗｒｉｔｅ命令に含まれる書き込み先論理アドレスＡに対応する、フラッシュメモリ上の物理アドレスＢを取得するための処理を実施する（ステップＳ７３）。ここで、物理アドレスＢを論理／物理アドレス変換テーブル４０から得られなかった場合には（ステップＳ７５：Ｎｏルート)、新たなデータ書き込みであるので、ステップＳ７９に移行する。
【００４２】
一方、物理アドレスＢを論理／物理アドレス変換テーブル４０から得られた場合には（ステップＳ７５：Ｙｅｓルート）、ドライバ２０は、物理アドレスＢの存在フラグを「有効」から「無効」に変更する（ステップＳ７７）。これによって旧データは論理的に無効で存在しないデータとなって、通常の処理では読み出し不可能となる。そしてステップＳ７９に移行する。
【００４３】
次に、ドライバ２０は、フラッシュメモリ上における空き領域（存在フラグが「消去済み」を示している消去済み領域）をシークする（ステップＳ７９）。ここで、書き込みデータＤを書き込むのに十分な消去済み空き領域が存在しない場合には（ステップＳ８１：Ｎｏルート）、ドライバ２０は、存在フラグが無効を表している無効領域の消去処理を実施する（ステップＳ８３）。その後、ステップＳ７９における消去済み空き領域のシークに戻る。なお、このような処理を実施しても書き込みデータＤを書き込むのに十分な消去済み空き領域が得られない場合（すなわち容量不足の場合）には、エラーで処理を終了する。
【００４４】
一方、書き込みデータＤを書き込むのに十分な消去済み空き領域が存在する場合には（ステップＳ８１：Ｙｅｓルート）、ドライバ２０は、任意の消去済み空き領域Ｍを特定して、当該消去済み空き領域Ｍに書き込みデータＤを書き込む（ステップＳ８５）。処理は、端子Ｃを介して図９の処理に移行する。
【００４５】
図９の処理の説明に移行して、ドライバ２０は、物理アドレスＢのブロックの全てのビットに「０」を書き込む（ステップＳ８７）。これによって、旧データは全て消去されているので、旧データの情報漏洩はない。なお、このようなビット反転処理ではなく、可能であれば消去処理を実施するようにしても良い。本例では、ステップＳ８７とＳ７７とが分離しても、以下で述べる論理／物理アドレス変換テーブル４０の更新までに実施していれば、問題がないことを示している。
【００４６】
さらに、ドライバ２０は、書き込みデータＤを書き込んだ領域Ｍの存在フラグを「消去済み」から「有効」に変更する（ステップＳ８９）。その後、ドライバ２０は、論理アドレスＡに対応する物理アドレスＭを用いて、論理アドレスＡから物理アドレスＭが取得できるように論理／物理アドレス変換テーブル４０を更新する（ステップＳ９１）。
【００４７】
ステップＳ９１を実施することによって、新たにデータＤを読み出したりする場合に、論理／物理アドレス変換テーブル４０によってフラッシュメモリ上の物理アドレスＭを得ることができるので、正しいデータを得られるようになる。また、フラッシュメモリ上、旧データがどこにあったのかも分からなくなる。
【００４８】
以上の処理を実施することによって、第１及び第２の書き込み処理例と同様の効果を得ることができる。なお、第３の書き込み処理例は、第１の書き込み処理例における（ａ）ステップＳ３乃至Ｓ９のグループと（ｂ）ステップＳ１１乃至Ｓ１９のグループを一部交互に行うようになっている。しかしながら、論理／物理アドレス変換テーブル４０の更新の前に、情報漏洩に最も重要なステップＳ８７を行っている。すなわち、ｗｒｉｔｅ命令の受け付けから論理／物理アドレス変換テーブル４０の更新までの一連のデータ書き込み処理に、秘密情報に対するデータ書き換えの後にデータ書き換え前の秘密情報がフラッシュメモリ上に残されないようにするための無効化処理が一体化されている。よって、論理／物理アドレス変換テーブル４０の更新まで終了していれば、情報漏洩はあり得ないことが保証できる。
【００４９】
［実施の形態２］
１．第１の書き込み処理例
第２の実施の形態では、フラッシュメモリにおいてセキュリティ領域と非セキュリティ領域とが設けられている第１のケースを説明する。
【００５０】
図１０に第２の実施の形態における書き込み処理についてのシステム構成図を示す。ＰＣ１００では、ＯＳ上アプリケーション・プログラム１０が実行され、さらにＯＳの一部としてフラッシュメモリデバイス２００のためのドライバ２１も実行されている。ドライバ２１は、フラッシュメモリデバイス２００がＰＣ１００に例えばＵＳＢインターフェースを介して接続された時に読み込まれ、生成され且つＯＳ上の論理アドレスとフラッシュメモリ上の物理アドレスとの対応関係を格納する論理／物理アドレス変換テーブル４０を用いて、以下で述べるような処理を実施する。本実施の形態では、ドライバ２１が、アクセス先がフラッシュメモリ上のセキュリティ領域であるか否かを特定するためのセキュリティ領域データ２２を保持している。セキュリティ領域データ２２は、例えばセキュリティ領域の論理アドレスの範囲データ、又はセキュリティ領域の物理アドレスの範囲データである。
【００５１】
論理／物理アドレス変換テーブル４０は、様々な構成が可能であるが、ここではＯＳ上の論理アドレスから、フラッシュメモリ上の物理アドレスを特定して出力する機能を実現するものとする。
【００５２】
フラッシュメモリデバイス２００は、セキュリティ領域２１０と非セキュリティ領域２２０とを含む。さらに、フラッシュメモリ上のセキュリティ領域の範囲を特定するためのデータであるセキュリティ領域データ２３０も格納している。セキュリティ領域２１０及び非セキュリティ領域２２０では、所定のサイズのブロック毎に、当該ブロックの状態が存在フラグによって管理されている。図１０では、説明をしやすくするために、ブロック毎にその先頭物理アドレスを示しており、さらに対応する存在フラグの状態を表している。
【００５３】
次に、図１１を用いて、本実施の形態における第１の書き込み処理例の前提となる処理を説明する。フラッシュメモリデバイス２００が、例えばＵＳＢなどを介してＰＣ１００に接続されると、ドライバ２１が起動され、ドライバ２１は、論理／物理アドレス変換テーブル４０を周知の方法を用いて生成し、例えばＰＣ１００のＲＡＭに格納する（ステップＳ１０１）。そして、当該フラッシュメモリ上のセキュリティ領域を特定するためのセキュリティ領域データ２３０が保持されているか否かでフラッシュメモリ上に領域区分が存在しているか判断する（ステップＳ１０３）。領域区分がなければ、本処理を終了する。一方、領域区分が存在すると判断されると、セキュリティ領域データ２３０を読み出し、当該セキュリティ領域２３０を用いて、ドライバ２１用のセキュリティ領域データ２２を生成し、例えばＲＡＭに格納する（ステップＳ１０５）。セキュリティ領域データ２２は、例えば特定の論理アドレスがセキュリティ領域２１０内であるか否かを判断する、又は論理／物理アドレス変換テーブル４０から得られた物理アドレスがセキュリティ領域２１０内であるか否かを判断するためのデータである。
【００５４】
次に、図１２及び図１３を用いて本実施の形態における第１の書き込み処理例を説明する。まず、ドライバ２１は、アプリケーション・プログラム１０から書き込み先論理アドレスＡ、書き込みデータＤ及びセキュリティフラグＦを含むライト（ｗｒｉｔｅ）命令を受け付ける（ステップＳ１１１）。セキュリティフラグＦは、書き込みデータＤがセキュリティ扱いが必要か否かを表す。このｗｒｉｔｅ命令に応答して、ドライバ２１は、論理／物理アドレス変換テーブル４０から、ｗｒｉｔｅ命令に含まれる書き込み先論理アドレスＡに対応する、フラッシュメモリ上の物理アドレスＢを取得するための処理を実施する（ステップＳ１１３）。ここで、物理アドレスＢを論理／物理アドレス変換テーブル４０から得られなかった場合には（ステップＳ１１５：Ｎｏルート）、新たなデータ書き込みであるので、ステップＳ１２３に移行する。
【００５５】
一方、物理アドレスＢを論理／物理アドレス変換テーブル４０から得られた場合には（ステップＳ１１５：Ｙｅｓルート)、ドライバ２１は、ｗｒｉｔｅ命令に含まれるセキュリティフラグＦがセキュリティ扱いであることを示しているか、及びｗｒｉｔｅ命令に含まれる論理アドレスＡ等及びセキュリティ領域データ２２に基づきセキュリティ領域２１０へのアクセスであるかを判断する（ステップＳ１１７）。いずれの条件も満たされない場合には、ステップＳ１２１に移行する。一方、いずれかの条件が満たされている場合には、ドライバ２１は、物理アドレスＢのブロックの全てのビットに「０」を書き込む（ステップＳ１１９）。図１０の例では、物理アドレスＢ「０ｘ１０００００００」が得られて、旧データが全ビット「０」に変更されたことを表している。これによって、旧データは全て消去されているので、旧データの情報漏洩はない。なお、このようなビット反転処理ではなく、可能であれば消去処理を実施するようにしても良い。さらに、ドライバ２１は、物理アドレスＢの存在フラグを「有効」から「無効」に変更する（ステップＳ１２１）。本例でも、ステップＳ１１９とステップＳ１２１は連続して行われる。また、図１０でも、物理アドレスＢ「０ｘ１０００００００」の存在フラグを、「有効」から「無効」に変更している。ステップＳ１１９を実行することによって仮に読み出し処理が実行されても既に旧データは物理的に読み出し不可能であるが、ステップＳ１２１を実施することによって論理的にも無効で存在しないデータとなって、通常の処理では読み出し不可能となる。そしてステップＳ１２３に移行する。
【００５６】
次に、ドライバ２１は、セキュリティフラグＦがセキュリティ扱いであることを示している場合又は論理アドレスＡ等及びセキュリティ領域データ２２からセキュリティ領域２１０へのアクセスであることが分かった場合には、フラッシュメモリのセキュリティ領域２１０において、セキュリティフラグＦが非セキュリティ扱いであることを示している場合又は論理アドレスＡ等及びセキュリティ領域データ２２から非セキュリティ領域２２０へのアクセスであることが分かった場合には、フラッシュメモリの非セキュリティ領域２２０において、空き領域（存在フラグが「消去済み」を示している消去済み領域）をシークする（ステップＳ１２３）。ここで、書き込みデータＤを書き込むのに十分な消去済み空き領域が存在しない場合には（ステップＳ１２５：Ｎｏルート）、ドライバ２１は、存在フラグが無効を表している無効領域の消去処理を実施する（ステップＳ１２７）。その後、ステップＳ１２３における消去済み空き領域のシークに戻る。なお、このような処理を実施しても書き込みデータＤを書き込むのに十分な消去済み空き領域が得られない場合（すなわち容量不足の場合）には、エラーで処理を終了する。一方、書き込みデータＤを書き込むのに十分な消去済み空き領域が存在する場合には（ステップＳ１２５：Ｙｅｓルート）、端子Ｄを介して図１３の処理に移行する。
【００５７】
図１３の処理の説明に移行して、ドライバ２１は、任意の消去済み空き領域Ｍを特定して、当該消去済み空き領域Ｍに書き込みデータＤを書き込む（ステップＳ１２９）。図１０の例では「＊」のマーク付きの領域Ｍ（物理アドレス「０ｘ１００００４００」）を特定して、書き込みデータＤを書き込む。
【００５８】
そして、ドライバ２１は、書き込みデータＤを書き込んだ領域Ｍの存在フラグを「消去済み」から「有効」に変更する（ステップＳ１３１）。図１０の例でも、物理アドレス「０ｘ１００００４００」の存在フラグを、「消去済み」から「有効」に変更している。その後、ドライバ２０は、論理アドレスＡに対応する物理アドレスＭ（図１０の例では「０ｘ１００００４００」）を用いて、論理アドレスＡから物理アドレスＭが取得できるように論理／物理アドレス変換テーブル４０を更新する（ステップＳ１３３）。
【００５９】
このような処理を実施することによって、フラッシュメモリ上にセキュリティ領域２１０と非セキュリティ領域２２０とが設けられている場合においても、セキュリティ領域２１０へのデータ書き込みにおいては、情報漏洩を防止することができるようになる。
【００６０】
なお、本実施の形態においても、論理／物理アドレス変換テーブル４０の更新の前に、情報漏洩に最も重要なステップＳ１１９を行っている。すなわち、ｗｒｉｔｅ命令の受け付けから論理／物理アドレス変換テーブル４０の更新までの一連のデータ書き込み処理に、秘密情報に対するデータ書き換えの後にデータ書き換え前の秘密情報がフラッシュメモリ上に残されないようにするための無効化処理が一体化されている。よって、論理／物理アドレス変換テーブル４０の更新まで終了していれば、情報漏洩はあり得ないことが保証できる。
【００６１】
２．第２の書き込み処理例
第２の書き込み処理例を、図１４及び図１５を用いて説明する。なお、システム構成は図１０に示したものと同様である。
【００６２】
まず、ドライバ２１は、アプリケーション・プログラム１０から書き込み先論理アドレスＡ、書き込みデータＤ及びセキュリティフラグＦを含むライト（ｗｒｉｔｅ）命令を受け付ける（ステップＳ１４１）。このｗｒｉｔｅ命令に応答して、ドライバ２１は、ｗｒｉｔｅ命令に含まれるセキュリティフラグＦがセキュリティ扱いであることを示している場合又はｗｒｉｔｅ命令に含まれる論理アドレスＡ等及びセキュリティ領域データ２２からセキュリティ領域２１０へのアクセスであることが分かった場合には、フラッシュメモリのセキュリティ領域２１０において、セキュリティフラグＦが非セキュリティ扱いであることを示している場合又は論理アドレスＡ等及びセキュリティ領域データ２２から非セキュリティ領域２２０へのアクセスであることが分かった場合には、フラッシュメモリの非セキュリティ領域２２０において、空き領域（存在フラグが「消去済み」を示している消去済み領域）をシークする（ステップＳ１４３）。ここで、書き込みデータＤを書き込むのに十分な消去済み空き領域が存在しない場合には（ステップＳ１４５：Ｎｏルート）、ドライバ２１は、存在フラグが無効を表している無効領域の消去処理を実施する（ステップＳ１４７）。その後、ステップＳ１４３における消去済み空き領域のシークに戻る。なお、このような処理を実施しても書き込みデータＤを書き込むのに十分な消去済み空き領域が得られない場合（すなわち容量不足の場合）には、エラーで処理を終了する。
【００６３】
一方、書き込みデータＤを書き込むのに十分な消去済み空き領域が存在する場合には（ステップＳ１４５：Ｙｅｓルート）、ドライバ２１は、シークされた領域における任意の消去済み空き領域Ｍを特定して、当該消去済み空き領域Ｍに書き込みデータＤを書き込む（ステップＳ１４９）。そして、ドライバ２１は、書き込みデータＤを書き込んだ領域Ｍの存在フラグを「消去済み」から「有効」に変更する（ステップＳ１５１）。
【００６４】
また、ドライバ２１は、論理／物理アドレス変換テーブル４０から、ｗｒｉｔｅ命令に含まれる書き込み先論理アドレスＡに対応する、フラッシュメモリ上の物理アドレスＢを取得するための処理を実施する（ステップＳ１５３）。ここで、物理アドレスＢを論理／物理アドレス変換テーブル４０から得られなかった場合には（ステップＳ１５５：Ｎｏルート）、新たなデータ書き込みであるので、端子Ｆを介してステップＳ１６３に移行する。
【００６５】
一方、物理アドレスＢを論理／物理アドレス変換テーブル４０から得られた場合には（ステップＳ１５５：Ｙｅｓルート）、端子Ｅを介して図１５のステップＳ１５７に移行する。
【００６６】
図１５の処理の説明に移行して、ドライバ２１は、ｗｒｉｔｅ命令に含まれるセキュリティフラグＦがセキュリティ扱いであることを示しているか、及びｗｒｉｔｅ命令に含まれる論理アドレスＡ等及びセキュリティ領域データ２２に基づきセキュリティ領域２１０へのアクセスであるかを判断する（ステップＳ１５７）。いずれの条件も満たされない場合には、ステップＳ１６１に移行する。一方、いずれかの条件が満たされている場合には、ドライバ２１は、物理アドレスＢのブロックの全てのビットに「０」を書き込む（ステップＳ１５９）。これによって、旧データは全て消去されているので、旧データの情報漏洩はない。なお、このようなビット反転処理ではなく、可能であれば消去処理を実施するようにしても良い。さらに、ドライバ２１は、物理アドレスＢの存在フラグを「有効」から「無効」に変更する（ステップＳ１６１）。本例でも、ステップＳ１５９とステップＳ１６１は連続して行われる。ステップＳ１５９を実行することによって仮に読み出し処理が実行されても既に旧データは物理的に読み出し不可能であるが、ステップＳ１６１を実施することによって論理的にも無効で存在しないデータとなって、通常の処理では読み出し不可能となる。
【００６７】
その後、ドライバ２１は、論理アドレスＡに対応する物理アドレスＭを用いて、論理アドレスＡから物理アドレスＭが取得できるように論理／物理アドレス変換テーブル４０を更新する（ステップＳ１６３）。
【００６８】
このような処理を実施することによって、フラッシュメモリ上にセキュリティ領域２１０と非セキュリティ領域２２０とが設けられている場合においても、セキュリティ領域２１０へ書き込まれたデータについては、情報漏洩を防止することができるようになる。
【００６９】
以上の処理を実施することによって、第１の書き込み処理例と同様の効果を得ることができる。なお、第２の書き込み処理例は、第１の書き込み処理例における（ａ）ステップＳ１１３乃至Ｓ１２１と（ｂ）ステップＳ１２３乃至Ｓ１３１の順番を入れ替えた形になっている。いずれにせよ論理／物理アドレス変換テーブル４０の更新の前に、情報漏洩に最も重要なステップＳ１１９やＳ１５９を行っている。すなわち、ｗｒｉｔｅ命令の受け付けから論理／物理アドレス変換テーブル４０の更新までの一連のデータ書き込み処理に、秘密情報に対するデータ書き換えの後にデータ書き換え前の秘密情報がフラッシュメモリ上に残されないようにするための無効化処理が一体化されている。よって、論理／物理アドレス変換テーブル４０の更新まで終了していれば、情報漏洩はあり得ないことが保証できる。
【００７０】
３．削除処理例
第２の実施の形態における削除処理例を図１６Ａ及び図１６Ｂを用いて説明する。図１６Ａに削除処理についてのシステム構成図を示す。なお、ＰＣ１００については図１０と同じである。フラッシュメモリデバイス２００においては、以下で述べる処理フローにおいて関係する部分が図１０とは異なるように示されている。
【００７１】
まず、ドライバ２１は、アプリケーション・プログラム１０から、削除先論理アドレスＡを含む削除命令を受け付ける（図１６Ｂ：ステップＳ１７１）。そして、ドライバ２１は、論理／物理アドレス変換テーブル４０から、論理アドレスＡに対応する、フラッシュメモリ上の物理アドレスＢを取得する処理を実施する（ステップＳ１７３）。
【００７２】
ドライバ２１は、論理アドレスＡ又は物理アドレスＢでセキュリティ領域データ２２を探索して、セキュリティ領域２１０についてのアドレスであるか判断する（ステップＳ１７５）。論理アドレスＡ又は物理アドレスＢがセキュリティ領域２１０についてのアドレスではない場合にはステップＳ１７９に移行する。
【００７３】
一方、論理ドレスＡ又は物理アドレスＢがセキュリティ領域２１０についてのアドレスである場合には、ステップＳ１７３で取得された物理アドレスＢのブロックに全ビット「０」を書き込む（ステップＳ１７７）。これによって、旧データは読み出せなくなる。例えば、物理アドレスＢが「０ｘ１０００００００」であれば、図１６Ａに示すように、旧データを全ビット「０」に変更する。なお、可能であれば消去処理を実施するようにしても良い。さらに、ドライバ２１は、物理アドレスＢの存在フラグを「有効」から「無効」に変更する（ステップＳ１７９）。ステップＳ１７７及びＳ１７９のセットは、ｗｒｉｔｅ命令におけるものと同様である。
【００７４】
その後、ドライバ２１は、論理アドレスＡについてのエントリを、論理／物理アドレス変換テーブル４０から削除することによって更新する（ステップＳ１８１）。
【００７５】
このように、削除命令についても、論理／物理アドレス変換テーブル４０の更新の前に、情報漏洩に最も重要なステップＳ１７７を行っている。すなわち、削除命令の受け付けから論理／物理アドレス変換テーブル４０の更新までの一連の削除処理に、削除対象の秘密情報がフラッシュメモリ上に残されないようにするための無効化処理が一体化されている。よって、論理／物理アドレス変換テーブル４０の更新まで終了していれば、情報漏洩はあり得ないことが保証できる。
【００７６】
図１０及び図１６Ａにおいて、論理／物理アドレス変換テーブル４０は、ＰＣ１００側のＲＡＭに設けられているが、フラッシュメモリデバイス２００に設けるようにしても良い。
【００７７】
また、第２の実施の形態においては、書き込み処理と書き換え処理を同じ命令で取り扱うようにしているが、書き込み処理と書き換え処理を異なる命令として取り扱うようにしても良い。また、例えばドライブでセキュリティ領域２１０と非セキュリティ領域２２０とを区別するようにすればドライブ名でセキュリティ扱い又は非セキュリティ扱いを区別できるので、ｗｒｉｔｅ命令においてセキュリティフラグＦを含めずに、ドライブ指定で処理を区別できる。削除命令が存在せず、書き換え命令で代用することもある。さらに、書き込み、書き換え、削除を一つの命令で行うこともある。
【００７８】
［実施の形態３］
１．第１の書き込み処理例
第３の実施の形態では、フラッシュメモリにおいてセキュリティ領域と非セキュリティ領域とが設けられている第２のケースを説明する。
【００７９】
図１７に第３の実施の形態における書き込み処理についてのシステム構成図を示す。ＰＣ１００では、ＯＳ上アプリケーション・プログラム１０が実行され、さらにＯＳの一部としてフラッシュメモリデバイス２００のためのドライバ２３も実行されている。ドライバ２３は、フラッシュメモリデバイス２００がＰＣ１００に例えばＵＳＢインターフェースを介して接続された時に読み込まれ、且つＯＳ上の論理アドレスとフラッシュメモリ上の物理アドレスとの対応関係を格納する論理／物理アドレス変換テーブル４１を用いて、以下で述べるような処理を実施する。
【００８０】
論理／物理アドレス変換テーブル４１は、様々な構成が可能であるが、ここではＯＳ上の論理アドレスから、フラッシュメモリ上の物理アドレスを特定して出力する機能を実現するものとする。さらに、本実施の形態では、論理／物理アドレス変換テーブル４１において、論理アドレスと物理アドレスとのうち少なくともいずれかに対応して、セキュリティ領域であるか否かを表すセキュリティフラグ４２も保持している。
【００８１】
フラッシュメモリデバイス２００は、セキュリティ領域２１０と非セキュリティ領域２２０とを含む。さらに、フラッシュメモリ上のセキュリティ領域の範囲を特定するためのデータであるセキュリティ領域データ２３０も格納している。セキュリティ領域２１０及び非セキュリティ領域２２０では、所定のサイズのブロック毎に、当該ブロックの状態が存在フラグによって管理されている。図１７では、説明をしやすくするために、ブロック毎にその先頭物理アドレスを示しており、さらに対応する存在フラグの状態を表している。
【００８２】
次に、図１１で示した前提処理について、本実施の形態との差について説明する。図１１の説明では、ステップＳ１０５において、領域区分が存在すると判断されると、セキュリティ領域データ２２を生成するように説明したが、本実施の形態では、セキュリティ領域データ２３０から、論理アドレスと物理アドレスとのうち少なくともいずれかに対応して、セキュリティ領域であるか否かを表すセキュリティフラグ４２を生成して、論理／物理アドレス変換テーブル４１に設定する処理を実施する。以下、このセキュリティフラグ４２を用いた処理について説明する。
【００８３】
次に、図１８及び図１９を用いて本実施の形態における第１の書き込み処理例を説明する。まず、ドライバ２３は、アプリケーション・プログラム１０から書き込み先論理アドレスＡ、書き込みデータＤ及びセキュリティフラグＦを含むライト（ｗｒｉｔｅ）命令を受け付ける（ステップＳ１９１）。セキュリティフラグＦは、書き込みデータＤがセキュリティ扱いが必要か否かを表す。このｗｒｉｔｅ命令に応答して、ドライバ２３は、論理／物理アドレス変換テーブル４１から、ｗｒｉｔｅ命令に含まれる書き込み先論理アドレスＡに対応する、フラッシュメモリ上の物理アドレスＢ及びセキュリティフラグＳを取得するための処理を実施する（ステップＳ１９３）。ここで、物理アドレスＢを論理／物理アドレス変換テーブル４１から得られなかった場合には（ステップＳ１９５：Ｎｏルート）、新たなデータ書き込みであるので、ステップＳ２０３に移行する。
【００８４】
一方、物理アドレスＢを論理／物理アドレス変換テーブル４１から得られた場合には（ステップＳ１９５：Ｙｅｓルート）、ドライバ２３は、ｗｒｉｔｅ命令に含まれるセキュリティフラグＦがセキュリティ扱いであることを示しているか、及び論理／物理アドレス変換テーブル４１から得られたセキュリティフラグＳがセキュリティ扱いであることを示しているかを判断する（ステップＳ１９７）。いずれの条件も満たされない場合には、ステップＳ２０１に移行する。一方、いずれかの条件が満たされている場合には、ドライバ２３は、物理アドレスＢのブロックの全てのビットに「０」を書き込む（ステップＳ１９９）。図１７の例では、物理アドレスＢ「０ｘ１０００００００」が得られて、旧データが全ビット「０」に変更されたことを表している。これによって、旧データは全て消去されているので、旧データの情報漏洩はない。なお、このようなビット反転処理ではなく、可能であれば消去処理を実施するようにしても良い。さらに、ドライバ２３は、物理アドレスＢの存在フラグを「有効」から「無効」に変更する（ステップＳ２０１）。本例でも、ステップＳ１９９とステップＳ２０１は連続して行われる。また、図１７でも、物理アドレスＢ「０ｘ１０００００００」の存在フラグを、「有効」から「無効」に変更している。ステップＳ１９９を実行することによって仮に読み出し処理が実行されても既に旧データは物理的に読み出し不可能であるが、ステップＳ２０１を実施することによって論理的にも無効で存在しないデータとなって、通常の処理では読み出し不可能となる。そしてステップＳ２０３に移行する。
【００８５】
次に、ドライバ２３は、セキュリティフラグＦ又はセキュリティフラグＳがセキュリティ扱いであることを示している場合には、フラッシュメモリのセキュリティ領域２１０において、セキュリティフラグＦ又はセキュリティフラグＳが非セキュリティ扱いであることを示している場合には、フラッシュメモリの非セキュリティ領域２２０において、空き領域（存在フラグが「消去済み」を示している消去済み領域）をシークする（ステップＳ２０３）。ここで、書き込みデータＤを書き込むのに十分な消去済み空き領域が存在しない場合には（ステップＳ２０５：Ｎｏルート)、ドライバ２３は、存在フラグが無効を表している無効領域の消去処理を実施する（ステップＳ２０７）。その後、ステップＳ２０３における消去済み空き領域のシークに戻る。なお、このような処理を実施しても書き込みデータＤを書き込むのに十分な消去済み空き領域が得られない場合（すなわち容量不足の場合）には、エラーで処理を終了する。一方、書き込みデータＤを書き込むのに十分な消去済み空き領域が存在する場合には（ステップＳ２０５：Ｙｅｓルート)、端子Ｇを介して図１９の処理に移行する。
【００８６】
図１９の処理の説明に移行して、ドライバ２３は、セキュリティフラグＦ又はセキュリティフラグＳに応じた領域における任意の消去済み空き領域Ｍを特定して、当該消去済み空き領域Ｍに書き込みデータＤを書き込む（ステップＳ２０９）。図１７の例では「＊」のマーク付きの領域Ｍ（物理アドレス「０ｘ１００００４００」）を特定して、書き込みデータＤを書き込む。
【００８７】
そして、ドライバ２３は、書き込みデータＤを書き込んだ領域Ｍの存在フラグを「消去済み」から「有効」に変更する（ステップＳ２１１）。図１７の例でも、物理アドレス「０ｘ１００００４００」の存在フラグを、「消去済み」から「有効」に変更している。その後、ドライバ２３は、セキュリティフラグＦ又はＳ（いずれかがセキュリティ扱いであるか否か）及び論理アドレスＡに対応する物理アドレスＭ（図１７の例では「０ｘ１００００４００」）を用いて、論理アドレスＡから物理アドレスＭ及びセキュリティフラグＳが取得できるように論理／物理アドレス変換テーブル４１を更新する（ステップＳ２１３）。セキュリティフラグＳについては、いずれかがセキュリティ扱いを表している場合には、セキュリティ扱いを表すように設定し、そうでない場合には非セキュリティ扱いを表すように設定する。
【００８８】
このような処理を実施することによって、フラッシュメモリ上にセキュリティ領域２１０と非セキュリティ領域２２０とが設けられている場合においても、セキュリティ領域２１０へ書き込まれたデータについては、情報漏洩を防止することができるようになる。
【００８９】
なお、本実施の形態においても、論理／物理アドレス変換テーブル４１の更新の前に、情報漏洩に最も重要なステップＳ１９９を行っている。すなわち、ｗｒｉｔｅ命令の受け付けから論理／物理アドレス変換テーブル４１の更新までの一連のデータ書き込み処理に、秘密情報に対するデータ書き換えの後にデータ書き換え前の秘密情報がフラッシュメモリ上に残されないようにするための無効化処理が一体化されている。よって、論理／物理アドレス変換テーブル４１の更新まで終了していれば、情報漏洩はあり得ないことが保証できる。
【００９０】
２．第２の書き込み処理例
第２の書き込み処理例を、図２０及び図２１を用いて説明する。なお、システム構成は図１７に示したものと同様である。
【００９１】
まず、ドライバ２３は、アプリケーション・プログラム１０から書き込み先論理アドレスＡ、書き込みデータＤ及びセキュリティフラグＦを含むライト（ｗｒｉｔｅ）命令を受け付ける（ステップＳ２２１）。このｗｒｉｔｅ命令に応答して、ドライバ２３は、ｗｒｉｔｅ命令に含まれるセキュリティフラグＦがセキュリティ扱いであることを示している場合には、フラッシュメモリのセキュリティ領域２１０において、セキュリティフラグＦが非セキュリティ扱いであることを示している場合には、フラッシュメモリの非セキュリティ領域２２０において、空き領域（存在フラグが「消去済み」を示している消去済み領域）をシークする（ステップＳ２２３）。ここで、書き込みデータＤを書き込むのに十分な消去済み空き領域が存在しない場合には(ステップＳ２２５：Ｎｏルート）、ドライバ２３は、存在フラグが無効を表している無効領域の消去処理を実施する（ステップＳ２２７）。その後、ステップＳ２２３における消去済み空き領域のシークに戻る。なお、このような処理を実施しても書き込みデータＤを書き込むのに十分な消去済み空き領域が得られない場合（すなわち容量不足の場合）には、エラーで処理を終了する。
【００９２】
一方、書き込みデータＤを書き込むのに十分な消去済み空き領域が存在する場合には（ステップＳ２２５：Ｙｅｓルート）、ドライバ２３は、シークされた領域における任意の消去済み空き領域Ｍを特定して、当該消去済み空き領域Ｍに書き込みデータＤを書き込む（ステップＳ２２９）。そして、ドライバ２３は、書き込みデータＤを書き込んだ領域Ｍの存在フラグを「消去済み」から「有効」に変更する（ステップＳ２３１）。
【００９３】
また、ドライバ２３は、論理／物理アドレス変換テーブル４１から、ｗｒｉｔｅ命令に含まれる書き込み先論理アドレスＡに対応する、フラッシュメモリ上の物理アドレスＢ及びセキュリティフラグＳを取得するための処理を実施する（ステップＳ２３３）。ここで、物理アドレスＢを論理／物理アドレス変換テーブル４１から得られなかった場合には（ステップＳ２３５：Ｎｏルート）、新たなデータ書き込みであるので、端子Ｈを介して図２１のステップＳ２４３に移行する。
【００９４】
一方、物理アドレスＢを論理／物理アドレス変換テーブル４１から得られた場合には（ステップＳ２３５：Ｙｅｓルート）、端子Ｊを介して図２１のステップＳ２３７に移行する。
【００９５】
図２１の処理の説明に移行して、ドライバ２３は、ｗｒｉｔｅ命令に含まれるセキュリティフラグＦがセキュリティ扱いであることを示しているか、及び論理／物理アドレス変換テーブル４１から読み出したセキュリティフラグＳがセキュリティ扱いであることを示しているかを判断する（ステップＳ２３７）。いずれの条件も満たされない場合には、ステップＳ２４１に移行する。一方、いずれかの条件が満たされている場合には、ドライバ２３は、物理アドレスＢのブロックの全てのビットに「０」を書き込む（ステップＳ２３９）。これによって、旧データは全て消去されているので、旧データの情報漏洩はない。なお、このようなビット反転処理ではなく、可能であれば消去処理を実施するようにしても良い。さらに、ドライバ２３は、物理アドレスＢの存在フラグを「有効」から「無効」に変更する（ステップＳ２４１）。本例でも、ステップＳ２３９とステップＳ２４１は連続して行われる。ステップＳ２３９を実行することによって仮に読み出し処理が実行されても既に旧データは物理的に読み出し不可能であるが、ステップＳ２４１を実施することによって論理的にも無効で存在しないデータとなって、通常の処理では読み出し不可能となる。
【００９６】
その後、ドライバ２３は、セキュリティフラグＦ又はＳ及び論理アドレスＡに対応する物理アドレスＭを用いて、論理アドレスＡから物理アドレスＭ及びセキュリティフラグＳが取得できるように論理／物理アドレス変換テーブル４１を更新する（ステップＳ２４３）。今回設定するセキュリティフラグＳは、処理で用いたセキュリティフラグＦ又はＳのいずれかがセキュリティ扱いを示している場合には、セキュリティ扱いを表すように設定され、そうでない場合には、非セキュリティ扱いを表すように設定される。
【００９７】
このような処理を実施することによって、フラッシュメモリ上にセキュリティ領域２１０と非セキュリティ領域２２０とが設けられている場合においても、セキュリティ領域２１０へ書き込まれたデータについては、情報漏洩を防止することができるようになる。
【００９８】
以上の処理を実施することによって、第１の書き込み処理例と同様の効果を得ることができる。なお、第２の書き込み処理例は、第１の書き込み処理例における（ａ）ステップＳ１９３乃至Ｓ２０１と（ｂ）ステップＳ２０３乃至Ｓ２１１の順番を入れ替えた形になっている。いずれにせよ論理／物理アドレス変換テーブル４１の更新の前に、情報漏洩に最も重要なステップＳ１９９やＳ２３９を行っている。すなわち、ｗｒｉｔｅ命令の受け付けから論理／物理アドレス変換テーブル４１の更新までの一連のデータ書き込み処理に、秘密情報に対するデータ書き換えの後にデータ書き換え前の秘密情報がフラッシュメモリ上に残されないようにするための無効化処理が一体化されている。よって、論理／物理アドレス変換テーブル４１の更新まで終了していれば、情報漏洩はあり得ないことが保証できる。
【００９９】
なお、本書き込み処理例では、ステップＳ２３３をステップＳ２２３の前に行うようにしても良い。そうすれば、セキュリティフラグＳの確認をステップＳ２２３でも行うことができるようになる。
【０１００】
３．削除処理例
第３の実施の形態における削除処理例を図２２及び図２３を用いて説明する。図２２に削除処理についてのシステム構成図を示す。なお、ＰＣ１００については図１７と同じである。フラッシュメモリデバイス２００においては、以下で述べる処理フローにおいて関係する部分が図１７とは異なるように示されている。
【０１０１】
まず、ドライバ２３は、アプリケーション・プログラム１０から、削除先論理アドレスＡを含む削除命令を受け付ける（ステップＳ２５１）。そして、ドライバ２３は、論理／物理アドレス変換テーブル４１から、論理アドレスＡに対応する、フラッシュメモリ上の物理アドレスＢ及びセキュリティフラグＳを取得する処理を実施する（ステップＳ２５３）。
【０１０２】
ドライバ２３は、セキュリティフラグＳがセキュリティ扱いであることを示しているか判断する（ステップＳ２５５）。セキュリティフラグＳが非セキュリティ扱いであることを示している場合には、ステップＳ２５９に移行する。
【０１０３】
一方、セキュリティフラグＳがセキュリティ扱いであることを表している場合には、ドライバ２３は、ステップＳ２５３で取得された物理アドレスＢのブロックに全ビット「０」を書き込む（ステップＳ２５７）。これによって、旧データは読み出せなくなる。例えば、物理アドレスＢが「０ｘ１０００００００」であれば、図２２に示すように、旧データを全ビット「０」に変更する。なお、可能であれば消去処理を実施するようにしても良い。さらに、ドライバ２３は、物理アドレスＢの存在フラグを「有効」から「無効」に変更する（ステップＳ２５９）。ステップＳ２５７及びＳ２５９のセットは、ｗｒｉｔｅ命令におけるものと同様である。
【０１０４】
その後、ドライバ２３は、論理アドレスＡについてのエントリを、論理／物理アドレス変換テーブル４１から削除することによって更新する（ステップＳ２６１）。なお、該当するセキュリティフラグＳについても削除する。
【０１０５】
このように、削除命令についても、論理／物理アドレス変換テーブル４１の更新の前に、情報漏洩に最も重要なステップＳ２５７を行っている。すなわち、削除命令の受け付けから論理／物理アドレス変換テーブル４１の更新までの一連の削除処理に、削除対象の秘密情報がフラッシュメモリ上に残されないようにするための無効化処理が一体化されている。よって、論理／物理アドレス変換テーブル４１の更新まで終了していれば、情報漏洩はあり得ないことが保証できる。
【０１０６】
図１７及び図２２において、論理／物理アドレス変換テーブル４１は、ＰＣ１００側のＲＡＭに設けられているが、フラッシュメモリデバイス２００に設けるようにしても良い。
【０１０７】
また、第３の実施の形態においては、書き込み処理と書き換え処理を同じ命令で取り扱うようにしているが、書き込み処理と書き換え処理を異なる命令として取り扱うようにしても良い。削除命令が存在せず、書き換え命令で代用することもある。さらに、書き込み、書き換え、削除を一つの命令で行うこともある。
【０１０８】
さらに、ドライバが、アプリケーションプログラムから必要なデータを全て含むようなライト命令を１回受け取るような例を示しているが、アプリケーションプログラムが、例えば書き込みデータＤを含むライト命令と、書き込み先論理アドレスＡ及びセキュリティフラグＦの指定を含む別の命令とを分けて出力するようにしても良い。この点については他の実施の形態でも同じである。
【０１０９】
さらに、アプリケーションプログラムが、セキュリティフラグＦがＯＮの指定の時のみ、セキュリティフラグＦを含むライト命令を出力し、セキュリティフラグＦがＯＦＦの指定の時には従前のライト命令を出力するように変形しても良い。
【０１１０】
［実施の形態４］
本実施の形態では、具体的にセキュリティ対応の携帯型フラッシュメモリデバイスを、ＵＳＢでＰＣに接続する場合について説明する。図２４に本実施の形態における書き換え処理及び削除処理についてのシステム構成図を示す。ＰＣ３００は、ホストＯＳ３２０及び当該ホストＯＳ３２０上でアプリケーション・プログラム３１０を実行している。ホストＯＳ３２０は、フラッシュメモリデバイス用のドライバ３２１と、当該ドライバ３２１が参照する論理／論理アドレス変換テーブル３２２とを含む。
【０１１１】
また、ＰＣ３００は、ＵＳＢインタフェース３３０を有しており、ドライバ３２１は、当該ＵＳＢインタフェース３３０を介して携帯型フラッシュメモリデバイス４００とのやりとりを行う。ＵＳＢインタフェース３３０については従来と変わらないのでこれ以上述べない。
【０１１２】
携帯型フラッシュメモリデバイス４００では、例えばＨドライブがセキュリティ領域４２０であり、Ｉドライブが非セキュリティ領域４３０となっている。ＰＣ３００は、ＵＳＢインタフェース４１０を介してフラッシュメモリのセキュリティ領域４２０及び非セキュリティ領域４３０にアクセスできるようになっている。また、本実施の形態では、セキュリティ領域４２０に、論理／物理アドレス変換テーブル４２１を保持するようになっている。また、フラッシュメモリにおいては、所定のサイズのブロック毎に、当該ブロックの状態が存在フラグによって管理されており、当該ブロックに記録されているデータが有効である場合には有効を表す値が、当該ブロックに記録されているデータが無効である場合には無効を表す値が、消去処理が実施され全てのビットが「１」になっている消去済を表す値が登録されるようになっている。図２４では、説明をしやすくするために、ブロック毎にその先頭物理アドレスを示しており、さらに対応する存在フラグの状態を表している。
【０１１３】
本実施の形態では、携帯型フラッシュメモリデバイス４００を接続した際に、携帯型フラッシュメモリデバイス４００のフラッシュメモリ上に、フラッシュメモリにおける論理アドレスと物理アドレスの変換テーブルである論理／物理アドレス変換テーブル４２１を読み込み、読み込んだ情報を基に、ホストＯＳ３２０上における論理アドレスとフラッシュメモリ上の論理アドレスとの変換テーブルである論理／論理アドレス変換テーブル３２２を生成して、ＰＣ３００のＲＡＭ等に格納する。この際、論理／物理アドレス変換テーブル４２１の、フラッシュメモリ上の物理アドレス（図２４の例では、「０ｘ１００１０８００」）を特定しておき、例えばホストＯＳ３２０上における論理アドレスを割り当てて、両者を論理／論理アドレス変換テーブル３２２に登録すると共に、ドライバ３２１にもホストＯＳ３２０上における論理アドレスを登録しておく。これによって、必要な時にドライバ３２１は、論理／物理アドレス変換テーブル４２１の物理アドレスを特定することができるようになる。また、ドライバ３２１は、携帯型フラッシュメモリデバイス４００のフラッシュメモリ上に複数のドライブ（図２４ではＨ及びＩ）が規定されており、特定のドライブ（ここではＨドライブ）がセキュリティ領域であることを特定しておく。
【０１１４】
次に、書き換え処理を実施する際の処理フローを図２５及び図２６を用いて説明する。まず、ホストＯＳ３２０は、アプリケーション・プログラム３１０から書き込み先ドライブ名（例えばＨドライブ）及びホストＯＳ３２０上の書き込み先論理アドレスＡ（例えばホストＯＳ３２０の論理アドレス「０ｘ３０００００００」）、並びに書き込みデータＤ（例えば「０ｘ１２３４５６７８」）を含む書き換え命令を受け付ける（ステップＳ２７１）。この書き換え命令に応答して、ホストＯＳ３２０は、書き込み先ドライブがフラッシュメモリであることを特定し、ドライバ３２１に、書き換え命令を出力する（ステップＳ２７３）。これに対して、ドライバ３２１は、書き込み先ドライブ名により、書き込み先ドライブがセキュリティ領域４２０と非セキュリティ領域４３０のいずれかであるかを特定する（ステップＳ２７５）。図２４の例では、Ｈドライブがセキュリティ領域であることを事前に特定しているので、今回の書き込み先ドライブがＨドライブであれば、セキュリティ領域への書き込みであることを特定する。
【０１１５】
次に、ドライバ３２１は、論理／論理アドレス変換テーブル３２２から、フラッシュメモリ上の論理／物理アドレス変換テーブル４２１の物理アドレスを取得する（ステップＳ２７７）。これによって論理／物理アドレス変換テーブル４２１を利用することができるようになる。
【０１１６】
そして、ドライバ３２１は、論理／論理アドレス変換テーブル３２２及び論理／物理アドレス変換テーブル４２１から、ホストＯＳ３２０上の論理アドレスＡ（例えば「０ｘ３０００００００」）に対応する、フラッシュメモリ上の物理アドレスＢ（例えば「０ｘ１０００００００」）を特定する（ステップＳ２７９）。これによって書き換え前の旧データの格納先が分かることになる。処理は端子Ｋを介して図２６の処理に移行する。
【０１１７】
図２６の処理の説明に移行して、書き込み先がセキュリティドライブであれば（ステップＳ２８１：Ｙｅｓルート）、ドライバ３２１は、物理アドレスＢ（図２４の例では「０ｘ１０００００００」）に全ビット「０」を書き込む（ステップＳ２８３）。一方、書き込み先がセキュリティドライブでなければ（ステップＳ２８１：Ｎｏルート）、ステップＳ２８５に移行する。そして、ドライバ３２１は、物理アドレスＢの存在フラグを「有効」から「無効」に変更する（ステップＳ２８５）。
【０１１８】
さらに、ドライバ３２１は、書き込み先ドライブに応じて、当該書き込み先ドライブにおける消去済み空き領域をシークする（ステップＳ２８７）。書き込みデータＤを書き込むのに十分な消去済み空き領域が存在しない場合には（ステップＳ２８９：Ｎｏルート）、ドライバ３２１は、存在フラグが無効を表している無効領域の消去処理を実施する（ステップＳ２９０）。消去処理の方法や、実施のタイミングは各種手法が存在しており、本技術において、どのような方式を使用しても問題ない。その後、ステップＳ２８７における消去済み空き領域のシークに戻る。なお、このような処理を実施しても書き込みデータＤを書き込むのに十分な消去済み空き領域が得られない場合（すなわち容量不足の場合）には、エラーで処理を終了する。一方、書き込みデータＤを書き込むのに十分な消去済み空き領域が存在する場合には（ステップＳ２８９：Ｙｅｓルート）、任意の消去済み空き領域Ｍ（例えば「０ｘ１００００４００」）を特定し、当該領域Ｍに書き込みデータＤ（「０ｘ１２３４５６７８」）を書き込む（ステップＳ２９１）。さらに、ドライバ３２１は、書き込みを行った領域Ｍ（「０ｘ１００００４００」）の存在フラグを「消去済み」から「有効」に変更する（ステップＳ２９３）。なお、ステップＳ２８１乃至Ｓ２８５と、ステップＳ２８７乃至Ｓ２９３については、順番を入れ替え可能である。
【０１１９】
そして、ドライバ３２１は、論理／物理アドレス変換テーブル４２１において、ホストＯＳ３２０上の論理アドレスＡ（「０ｘ３０００００００」）に対応する、フラッシュメモリ上の論理アドレスＸに対応する物理アドレスを、物理アドレスＢ（「０ｘ１０００００００」）から書き込み先領域Ｍの物理アドレス（「０ｘ１００００４００」）に変更する（ステップＳ２９５）。ホストＯＳ３２０上の論理アドレスＡ（「０ｘ３０００００００」）は、論理／論理アドレス変換テーブル３２２によって、フラッシュメモリ上の論理アドレスＸに変換されるが、論理／物理アドレス変換テーブル４２１において論理アドレスＸが書き込み先領域Ｍの物理アドレス（「０ｘ１００００４００」）に対応付けられていれば、問題なくアクセス可能となる。
【０１２０】
以上のように、携帯型フラッシュメモリデバイス４００においてドライブによってセキュリティ領域と非セキュリティ領域とが分けられている場合においても、書き換え命令の受け付けから論理／物理アドレス変換テーブル４２１の更新までの一連のデータ書き換え処理に、秘密情報に対するデータ書き換えの後にデータ書き換え前の秘密情報がフラッシュメモリ上に残されないようにするための無効化処理が一体化されて実施される。よって、論理／物理アドレス変換テーブル４２１の更新まで終了していれば、情報漏洩はあり得ないことが保証できる。
【０１２１】
なお、上で述べた例では、論理／物理アドレス変換テーブル４２１をセキュリティ領域４２０に格納していたが、非セキュリティ領域４３０に一部、または全体を格納するようにしても良いし、ＰＣ３００のＲＡＭ上に一部、または全体を保持するようにしても良い。同様に、論理／論理アドレス変換テーブル３２２についてもフラッシュメモリ上に一部、または全体を保持するようにしても良い。さらに、論理／論理アドレス変換テーブル３２２と論理／物理アドレス変換テーブル４２１をマージしたようなテーブルを用意するようにしても良い。このようなテーブルについても、一部、または全体をＰＣ３００のＲＡＭ上に保持しても、フラッシュメモリ上に保持しても良い。さらに、Ｉドライブが無いような構成も可能である。
【０１２２】
削除処理の場合には、図２７及び図２８に示すような処理を実施する。まず、ホストＯＳ３２０は、アプリケーション・プログラム３１０から削除対象ドライブ名（例えばＨドライブ）及びホストＯＳ３２０上の削除対象論理アドレスＡ（例えばホストＯＳ３２０の論理アドレス「０ｘ３０００００００」）を含む削除命令を受け付ける（ステップＳ３０１）。この削除命令に応答して、ホストＯＳ３２０は、削除対象ドライブがフラッシュメモリであることを特定し、ドライバ３２１に、削除命令を出力する（ステップＳ３０３）。これに対して、ドライバ３２１は、指定された削除対象ドライブ名により、削除対象ドライブがセキュリティ領域４２０と非セキュリティ領域４３０のいずれかであるかを特定する（ステップＳ３０５）。図２４の例では、Ｈドライブがセキュリティ領域であることを事前に特定しているので、今回の書き込み先ドライブがＨドライブであれば、セキュリティ領域への書き込みであることを特定する。
【０１２３】
次に、ドライバ３２１は、論理／論理アドレス変換テーブル３２２から、フラッシュメモリ上の論理／物理アドレス変換テーブル４２１の物理アドレス（例えば「０ｘ１００１０８００」）を取得する（ステップＳ３０７）。これによって論理／物理アドレス変換テーブル４２１を利用することができるようになる。
【０１２４】
そして、ドライバ３２１は、論理／論理アドレス変換テーブル３２２及び論理／物理アドレス変換テーブル４２１から、ホストＯＳ３２０上の論理アドレスＡ（例えば「０ｘ３０００００００」）に対応する、フラッシュメモリ上の物理アドレスＢ（例えば「０ｘ１０００００００」）を特定する（ステップＳ３０９）。
【０１２５】
削除されるデータがセキュリティドライブに格納されていれば（ステップＳ３１１：Ｙｅｓルート）、ドライバ３２１は、物理アドレスＢ（図２４の例では「０ｘ１０００００００」）に全ビット「０」を書き込む（ステップＳ３１３）。一方、削除されるデータがセキュリティドライブに格納されていなければステップＳ３１５に移行する。そして、ドライバ３２１は、物理アドレスＢの存在フラグを「有効」から「無効」に変更する（ステップＳ３１５）。処理は端子Ｌを介して図２８の処理に移行する。
【０１２６】
図２８の処理の説明に移行して、ドライバ３２１は、ホストＯＳ３２０上の論理アドレスＡ（「０ｘ３０００００００」）に対応する、フラッシュメモリ上の論理アドレスＸのエントリを削除することによって、論理／物理アドレス変換テーブル４２１を更新する（ステップＳ３１７）。
【０１２７】
このような削除処理を実施することによって、セキュリティ・ドライブのデータを削除する場合には、旧データを消し去るので、情報漏洩を防止することができる。
【０１２８】
［実施の形態５］
本実施の形態では、実施の形態４と同様にセキュリティ対応の携帯型フラッシュメモリデバイスを、ＵＳＢでＰＣに接続する場合について説明する。但し、実施の形態４とは異なり、ドライブでセキュリティ領域か非セキュリティ領域かを分けるようにはなっていない。図２９に本実施の形態における書き換え処理及び削除処理についてのシステム構成図を示す。図２４との差は、ドライブの区分けが無くなったので、セキュリティ領域４５０と、非セキュリティ領域４６０とが導入された点である。セキュリティ領域４５０には、論理／物理アドレス変換テーブル４５１が格納されている。また、ドライバ３２１は、ＰＣ３００のメモリ上に、セキュリティ領域をカバーする、ホストＯＳ３２０上の論理アドレスの範囲データを保持しておく。
【０１２９】
次に、書き換え処理を実施する際の処理フローを図３０及び図３１を用いて説明する。まず、ドライバ３２１は、アプリケーション・プログラム３１０からホストＯＳ３２０上の書き込み先論理アドレスＡ（例えばホストＯＳ３２０の論理アドレス「０ｘ３０００００００」）、セキュリティフラグ及び書き込みデータＤ（例えば「０ｘ１２３４５６７８」）を含む書き換え命令を受け付ける（ステップＳ３２１）。この書き換え命令に応答して、ドライバ３２１は、論理／論理アドレス変換テーブル３２２から、フラッシュメモリ上の論理／物理アドレス変換テーブル４５１の物理アドレスを取得する（ステップＳ３２３）。これによって論理／物理アドレス変換テーブル４５１を利用することができるようになる。
【０１３０】
本実施の形態でも、携帯型フラッシュメモリデバイス４００を接続した際に、携帯型フラッシュメモリデバイス４００のフラッシュメモリ上に、フラッシュメモリにおける論理アドレスと物理アドレスの変換テーブルである論理／物理アドレス変換テーブル４５１を読み込むと共に、読み込んだ情報を基に、ホストＯＳ３２０上における論理アドレスとフラッシュメモリ上の論理アドレスとの変換テーブルである論理／論理アドレス変換テーブル３２２を生成して、ＰＣ３００のＲＡＭ等に格納しておく。この際、論理／物理アドレス変換テーブル４５１の、フラッシュメモリ上の物理アドレス（図２９の例では、「０ｘ１００１０８００」）を特定しておき、例えばホストＯＳ３２０上における論理アドレスを割り当てて、両者を論理／論理アドレス変換テーブル３２２に登録すると共に、ドライバ３２１にもホストＯＳ３２０上における論理アドレスを登録しておく。これによって、必要な時にドライバ３２１は、論理／物理アドレス変換テーブル４５１の物理アドレスを特定することができるようになる。
【０１３１】
そして、ドライバ３２１は、論理／論理アドレス変換テーブル３２２及び論理／物理アドレス変換テーブル４５１から、ホストＯＳ３２０上の論理アドレスＡ（例えば「０ｘ３０００００００」）に対応する、フラッシュメモリ上の物理アドレスＢ（例えば「０ｘ１０００００００」）を特定する（ステップＳ３２５）。これによって書き換え前の旧データの格納先が分かることになる。
【０１３２】
その後、ドライバ３２１は、アプリケーション・プログラム３１０から受信したセキュリティフラグＦから、又はアプリケーション・プログラム３１０から指定された、ホストＯＳ３２０上の論理アドレスＡが自ら保持しているセキュリティ領域のアドレス範囲に含まれているか否かに基づき、セキュリティ領域４５０での書き換え処理であるか判断する（ステップＳ３２９）。いずれかが該当すればセキュリティ領域４５０での書き換え処理であると判断する。非セキュリティ領域４６０での書き換え処理である場合にはステップＳ３３３に移行する。一方、セキュリティ領域４５０での書き換え処理である場合には、ドライバ３２１は、物理アドレスＢ（図２９の例では「０ｘ１０００００００」）に全ビット「０」を書き込む（ステップＳ３３１）。
【０１３３】
そして、ドライバ３２１は、物理アドレスＢの存在フラグを「有効」から「無効」に変更する（ステップＳ３３３）。さらに、ドライバ３２１は、ステップＳ３２９の判断結果に応じてた領域における消去済み空き領域をシークする（ステップＳ３３５）。処理は端子Ｍを介して図３１の処理に移行する。
【０１３４】
そして、書き込みデータＤを書き込むのに十分な消去済み空き領域が存在しない場合には（ステップＳ３３７：Ｎｏルート）、ドライバ３２１は、存在フラグが無効を表している無効領域の消去処理を実施する（ステップＳ３３９）。その後、端子ＭＡを介してステップＳ３３５における消去済み空き領域のシークに戻る。なお、このような処理を実施しても書き込みデータＤを書き込むのに十分な消去済み空き領域が得られない場合（すなわち容量不足の場合）には、エラーで処理を終了する。一方、書き込みデータＤを書き込むのに十分な消去済み空き領域が存在する場合には（ステップＳ３３７：Ｙｅｓルート）、任意の消去済み空き領域Ｍ（例えば「０ｘ１００００４００」）を特定し、当該領域Ｍに書き込みデータＤ（「０ｘ１２３４５６７８」）を書き込む（ステップＳ３４１）。さらに、ドライバ３２１は、書き込みを行った領域Ｍ（「０ｘ１００００４００」）の存在フラグを「消去済み」から「有効」に変更する（ステップＳ３４３）。
【０１３５】
そして、ドライバ３２１は、論理／物理アドレス変換テーブル４５１において、ホストＯＳ３２０上の論理アドレスＡ（「０ｘ３０００００００」）に対応する、フラッシュメモリ上の論理アドレスＸに対応する物理アドレスを、物理アドレスＢ（「０ｘ１０００００００」）から書き込み先領域Ｍの物理アドレスＭ（「０ｘ１００００４００」）に変更する（ステップＳ３４５）。ホストＯＳ３２０上の論理アドレスＡ（「０ｘ３０００００００」）は、論理／論理アドレス変換テーブル３２２によって、フラッシュメモリ上の論理アドレスＸに変換されるが、論理／物理アドレス変換テーブル４５１において論理アドレスＸが書き込み先領域Ｍの物理アドレスＭ（「０ｘ１００００４００」）に対応付けられていれば、問題なくアクセス可能となる。
【０１３６】
以上のように、携帯型フラッシュメモリデバイス４００において単にセキュリティ領域と非セキュリティ領域とが分けられている場合においても、書き換え命令の受け付けから論理／物理アドレス変換テーブル４５１の更新までの一連のデータ書き換え処理に、秘密情報に対するデータ書き換えの後にデータ書き換え前の秘密情報がフラッシュメモリ上に残されないようにするための無効化処理が一体化されて実施される。よって、論理／物理アドレス変換テーブル４５１の更新まで終了していれば、情報漏洩はあり得ないことが保証できる。
【０１３７】
なお、上で述べた例では、論理／物理アドレス変換テーブル４５１をセキュリティ領域４５０に格納していたが、一部、または全体を非セキュリティ領域４６０に格納するようにしても良いし、一部、または全体をＰＣ３００のＲＡＭ上に保持するようにしても良い。同様に、論理／論理アドレス変換テーブル３２２についても一部、または全体をフラッシュメモリ上に保持するようにしても良い。さらに、論理／論理アドレス変換テーブル３２２と論理／物理アドレス変換テーブル４２１をマージしたようなテーブルを用意するようにしても良い。このようなテーブルについても、一部、または全体をＰＣ３００のＲＡＭ上に保持しても、フラッシュメモリ上に保持しても良い。非セキュリティ領域４６０がないような構成も可能である。
【０１３８】
削除処理の場合には、図３２に示すような処理を実施する。まず、ドライバ３２１は、アプリケーション・プログラム３１０からホストＯＳ３２０上の削除対象論理アドレスＡ（例えばホストＯＳ３２０の論理アドレス「０ｘ３０００００００」）を含む削除命令を受け付ける（ステップＳ３６１）。この削除命令に応答して、ドライバ３２１は、論理／論理アドレス変換テーブル３２２から、フラッシュメモリ上の論理／物理アドレス変換テーブル４５１の物理アドレス（例えば「０ｘ１００１０８００」）を取得する（ステップＳ３６３）。これによって論理／物理アドレス変換テーブル４５１を利用することができるようになる。
【０１３９】
そして、ドライバ３２１は、論理／論理アドレス変換テーブル３２２及び論理／物理アドレス変換テーブル４５１から、ホストＯＳ３２０上の論理アドレスＡ（例えば「０ｘ３０００００００」）に対応する、フラッシュメモリ上の物理アドレスＢ（例えば「０ｘ１０００００００」）を特定する（ステップＳ３６５）。
【０１４０】
その後、ドライバ３２１は、指定された削除対象論理アドレスＡが、自ら保持しているセキュリティ領域のアドレス範囲に含まれているか否かによってセキュリティ領域４５０内における削除処理であるか判断する（ステップＳ３６７）。削除対象データがセキュリティ領域４５０に格納されていれば（ステップＳ３６７：Ｙｅｓルート）、ドライバ３２１は、物理アドレスＢ（図２９の例では「０ｘ１０００００００」）に全ビット「０」を書き込む（ステップＳ３６９）。一方、削除対象データがセキュリティ領域４５０に格納されていなければステップＳ３７１に移行する。そして、ドライバ３２１は、物理アドレスＢの存在フラグを「有効」から「無効」に変更する（ステップＳ３７１）。
【０１４１】
そして、ドライバ３２１は、ホストＯＳ３２０上の論理アドレスＡ（「０ｘ３０００００００」）に対応する、フラッシュメモリ上の論理アドレスＸのエントリを削除することによって、論理／物理アドレス変換テーブル４５１を更新する（ステップＳ３７３）。
【０１４２】
このような削除処理を実施することによって、セキュリティ領４５０域に格納されているデータを削除する場合には、旧データを消し去るので、情報漏洩を防止することができる。
【０１４３】
［実施の形態６］
本実施の形態では、セキュリティ対応の携帯型フラッシュメモリデバイスを、ＵＳＢでＰＣに接続する場合の他の例を説明する。図３３に本実施の形態における書き換え処理及び削除処理についてのシステム構成図を示す。ＰＣ５００は、ホストＯＳ５２０及び当該ホストＯＳ５２０上でアプリケーション・プログラム５１０を実行している。ホストＯＳ５２０は、フラッシュメモリデバイス用のドライバ５２１と、当該ドライバ５２１が参照する論理／論理アドレス変換テーブル５２２とを含む。
【０１４４】
また、ＰＣ５００は、ＵＳＢインタフェース５３０を有しており、ドライバ５２１は、当該ＵＳＢインタフェース５３０を介して携帯型フラッシュメモリデバイス６００とのやりとりを行う。ＵＳＢインタフェース５３０については従来と変わらないのでこれ以上述べない。
【０１４５】
携帯型フラッシュメモリデバイス６００では、フラッシュメモリ領域６２０を有する。ＰＣ５００は、ＵＳＢインタフェース６１０を介してフラッシュメモリ領域６２０にアクセスできるようになっている。また、本実施の形態では、フラッシュメモリ領域６２０に、論理／物理アドレス変換テーブル６２１を保持するようになっている。さらに、フラッシュメモリ領域６２０においては、所定のサイズのブロック毎に、当該ブロックの状態が存在フラグによって管理されており、当該ブロックに記録されているデータが有効である場合には有効を表す値が、当該ブロックに記録されているデータが無効である場合には無効を表す値が、消去処理が実施され全てのビットが「１」になっている消去済を表す値が登録されるようになっている。さらに、本実施の形態ではセキュリティ領域と非セキュリティ領域が連続して確保されてはおらず、ブロック毎にセキュリティ領域（「対象」）か非セキュリティ領域（「非対象」）であるかを表すセキュリティフラグが設定されるようになっている。図３３では、説明をしやすくするために、ブロック毎にその先頭物理アドレスを示しており、さらに対応する存在フラグの状態及びセキュリティフラグの状態を表している。
【０１４６】
本実施の形態では、携帯型フラッシュメモリデバイス６００を接続した際に、携帯型フラッシュメモリデバイス６００のフラッシュメモリ上に、フラッシュメモリにおける論理アドレスと物理アドレスの変換テーブルである論理／物理アドレス変換テーブル６２１を読み込むと共に、読み込んだ情報を基に、ホストＯＳ５２０上における論理アドレスとフラッシュメモリ上の論理アドレスとの変換テーブルである論理／論理アドレス変換テーブル５２２を生成して、ＰＣ５００のＲＡＭ等に格納する。この際、論理／物理アドレス変換テーブル６２１の、フラッシュメモリ上の物理アドレス（図３３の例では、「０ｘ１００１０８００」）を特定しておき、例えばホストＯＳ５２０上における論理アドレスを割り当てて、両者を論理／論理アドレス変換テーブル５２２に登録すると共に、ドライバ５２１にもホストＯＳ５２０上における論理アドレスを登録しておく。これによって、必要な時にドライバ５２１は、論理／物理アドレス変換テーブル６２１の物理アドレスを特定することができるようになる。また、ホストＯＳ５２０は、携帯型フラッシュメモリデバイス６００のフラッシュメモリ領域に割り当てられたホストＯＳ５２０上の論理アドレス範囲を例えばＲＡＭ等に保持しておくものとする。
【０１４７】
次に、書き換え処理を実施する際の処理フローを図３４及び図３５を用いて説明する。まず、ホストＯＳ５２０は、アプリケーション・プログラム５１０からホストＯＳ５２０上の書き込み先論理アドレスＡ（例えばホストＯＳ５２０の論理アドレス「０ｘ３０００００００」）及び書き込みデータＤ（例えば「０ｘ１２３４５６７８」）を含む書き換え命令を受け付ける（ステップＳ４０１）。この書き換え命令に応答して、ホストＯＳ５２０は、フラッシュメモリ領域６２０に割り当てられたホストＯＳ５２０上の論理アドレス範囲から、書き込み先論理アドレスＡが、フラッシュメモリ領域６２０内のアドレスであると特定すると、ドライバ５２１に、書き換え命令を出力する（ステップＳ４０３）。これに対して、ドライバ５２１は、論理／論理アドレス変換テーブル５２２から、フラッシュメモリ領域６２０に格納されている論理／物理アドレス変換テーブル６２１の物理アドレスを取得する（ステップＳ４０５）。これによって論理／物理アドレス変換テーブル６２１を利用することができるようになる。
【０１４８】
そして、ドライバ５２１は、論理／論理アドレス変換テーブル５２２及び論理／物理アドレス変換テーブル６２１から、ホストＯＳ５２０上の論理アドレスＡ（例えば「０ｘ３０００００００」）に対応する、フラッシュメモリ上の物理アドレスＢ（例えば「０ｘ１０００００００」）を特定する（ステップＳ４０７）。これによって書き換え前の旧データの格納先が分かることになる。
【０１４９】
そして、ドライバ５２１は、フラッシュメモリ領域６２０における消去済み空き領域をシークする（ステップＳ４０９）。書き込みデータＤを書き込むのに十分な消去済み空き領域が存在しない場合には（ステップＳ４１１：Ｎｏルート）、ドライバ５２１は、存在フラグが無効を表している無効領域の消去処理を実施する（ステップＳ４１３）。その後、ステップＳ４０９における消去済み空き領域のシークに戻る。なお、このような処理を実施しても書き込みデータＤを書き込むのに十分な消去済み空き領域が得られない場合（すなわち容量不足の場合）には、エラーで処理を終了する。一方、書き込みデータＤを書き込むのに十分な消去済み空き領域が存在する場合には（ステップＳ４１１：Ｙｅｓルート）、端子Ｎを介して図３５の処理に移行する。
【０１５０】
図３５の処理の説明に移って、ドライバ５２１は、任意の消去済み空き領域Ｍ（例えば「０ｘ１００００４００」）を特定し、当該領域Ｍに書き込みデータＤ（「０ｘ１２３４５６７８」）を書き込む（ステップＳ４１５）。さらに、ドライバ５２１は、書き込みを行った領域Ｍ（「０ｘ１００００４００」）の存在フラグを「消去済み」から「有効」に変更する（ステップＳ４１７）。
【０１５１】
さらに、物理アドレスＢのセキュリティフラグがＯＮである場合には（ステップＳ４１９：Ｙｅｓルート）、ドライバ５２１は、新たな書き込み先領域Ｍ（例えば「０ｘ１００００４００」）のセキュリティフラグをＯＮにセットし（ステップＳ４２１）、物理アドレスＢ（図３３の例では「０ｘ１０００００００」）に全ビット「０」を書き込む（ステップＳ４２３）。物理アドレスＢについてのセキュリティフラグをＯＦＦにセットするようにしてもよい。そして、ドライバ５２１は、物理アドレスＢの存在フラグを「有効」から「無効」に変更する（ステップＳ４２５）。一方、物理アドレスＢのセキュリティフラグがＯＦＦである場合には（ステップＳ４１９：Ｎｏルート）、ステップＳ４２５に移行する。
【０１５２】
そして、ドライバ５２１は、論理／物理アドレス変換テーブル６２１において、ホストＯＳ５２０上の論理アドレスＡ（「０ｘ３０００００００」）に対応する、フラッシュメモリ上の論理アドレスＸに対応する物理アドレスを、物理アドレスＢ（「０ｘ１０００００００」）から書き込み先領域Ｍの物理アドレスＭ（「０ｘ１００００４００」）に変更する（ステップＳ４２７）。ホストＯＳ５２０上の論理アドレスＡ（「０ｘ３０００００００」）は、論理／論理アドレス変換テーブル５２２によって、フラッシュメモリ上の論理アドレスＸに変換されるが、論理／物理アドレス変換テーブル６２１において論理アドレスＸが書き込み先領域Ｍの物理アドレスＭ（「０ｘ１００００４００」）に対応付けられていれば、問題なくアクセス可能となる。
【０１５３】
以上のように、携帯型フラッシュメモリデバイス６００においてセキュリティ領域と非セキュリティ領域とが連続的に区分されていない場合においても、書き換え命令の受け付けから論理／物理アドレス変換テーブル６２１の更新までの一連のデータ書き換え処理に、秘密情報に対するデータ書き換えの後にデータ書き換え前の秘密情報がフラッシュメモリ上に残されないようにするための無効化処理が一体化されて実施される。よって、論理／物理アドレス変換テーブル６２１の更新まで終了していれば、情報漏洩はあり得ないことが保証できる。
【０１５４】
なお、上で述べた例では、論理／物理アドレス変換テーブル６２１をセキュリティフラグがＯＮの領域に格納していたが、一部、または全体をセキュリティフラグがＯＦＦの領域に格納するようにしても良い。ＰＣ５００のＲＡＭ上に一部、または全体を保持するようにしても良い。同様に、論理／論理アドレス変換テーブル５２２についても一部、または全体をフラッシュメモリ領域６２０上に保持するようにしても良い。さらに、論理／論理アドレス変換テーブル５２２と論理／物理アドレス変換テーブル６２１をマージしたようなテーブルを用意するようにしても良い。このようなテーブルについても、一部、または全体をＰＣ５００のＲＡＭ上に保持しても、フラッシュメモリ領域６２０上に保持しても良い。なお、新規データの書き込みの場合には、セキュリティフラグをＯＮにセットする必要がある。
【０１５５】
削除処理の場合には、図３６に示すような処理を実施する。まず、ホストＯＳ５２０は、アプリケーション・プログラム５１０からホストＯＳ５２０上の削除対象論理アドレスＡ（例えばホストＯＳ５２０の論理アドレス「０ｘ３０００００００」）を含む削除命令を受け付ける（ステップＳ４４１）。この削除命令に応答して、ホストＯＳ３２０は、フラッシュメモリ領域６２０に割り当てられたホストＯＳ５２０上の論理アドレス範囲から、削除対象論理アドレスＡがフラッシュメモリ領域６２０内であることを特定し、ドライバ５２１に、削除命令を出力する（ステップＳ４４３）。さらに、ドライバ５２１は、論理／論理アドレス変換テーブル５２２から、フラッシュメモリ領域６２０上の論理／物理アドレス変換テーブル６２１の物理アドレス（例えば「０ｘ１００１０８００」）を取得する（ステップＳ４４５）。これによって論理／物理アドレス変換テーブル６２１を利用することができるようになる。
【０１５６】
そして、ドライバ５２１は、論理／論理アドレス変換テーブル５２２及び論理／物理アドレス変換テーブル６２１から、ホストＯＳ５２０上の論理アドレスＡ（例えば「０ｘ３０００００００」）に対応する、フラッシュメモリ上の物理アドレスＢ（例えば「０ｘ１０００００００」）を特定する（ステップＳ４４７）。
【０１５７】
物理アドレスＢについてのセキュリティフラグがＯＮにセットされていれば（ステップＳ４４９：Ｙｅｓルート）、ドライバ５２１は、物理アドレスＢ（図３３の例では「０ｘ１０００００００」）に全ビット「０」を書き込む（ステップＳ４５１）。さらに、ドライバ５２１は、物理アドレスＢの存在フラグを「有効」から「無効」に変更する（ステップＳ４５３）。なお、物理アドレスＢについてのセキュリティフラグをＯＦＦにセットしてもよい。一方、物理アドレスＢについてのセキュリティフラグがＯＦＦにセットされていれば（ステップＳ４４９：Ｎｏルート）、ステップＳ４５５に移行する。
【０１５８】
その後、ドライバ５２１は、ホストＯＳ５２０上の論理アドレスＡ（「０ｘ３０００００００」）に対応する、フラッシュメモリ上の論理アドレスＸのエントリを削除することによって、論理／物理アドレス変換テーブル６２１を更新する（ステップＳ４５５）。
【０１５９】
このような削除処理を実施することによって、秘密情報を削除する場合には、旧データを消し去るので、情報漏洩を防止することができる。
【０１６０】
［実施の形態７］
本実施の形態では、セキュリティ対応の携帯型フラッシュメモリデバイスを、ＵＳＢでＰＣに接続する場合の他の例を説明する。図３７に本実施の形態における書き換え処理及び削除処理についてのシステム構成図を示す。図３３とほぼ同じ構成であるが、アプリケーション・プログラム５１０が、フラッシュメモリ領域６２０に割り当てられている、ホストＯＳ５２０上の論理アドレス範囲を把握しており、ホストＯＳ５２０の介在なしに、直接ドライバ５２１に、フラッシュメモリ６２０の書き込み、書き換え、削除を命じることができるものとする。なお、前提についても第６の実施の形態と同じである。
【０１６１】
次に、書き換え処理を実施する際の処理フローを図３８及び図３９を用いて説明する。まず、ドライバ５２１は、アプリケーション・プログラム５１０からホストＯＳ５２０上の書き込み先論理アドレスＡ（例えばホストＯＳ５２０の論理アドレス「０ｘ３０００００００」）及び書き込みデータＤ（例えば「０ｘ１２３４５６７８」）を含む書き換え命令を受け付ける（ステップＳ４７１）。この書き換え命令に応答して、ドライバ５２１は、論理／論理アドレス変換テーブル５２２から、フラッシュメモリ領域６２０に格納されている論理／物理アドレス変換テーブル６２１の物理アドレスを取得する（ステップＳ４７３）。これによって論理／物理アドレス変換テーブル６２１を利用することができるようになる。
【０１６２】
そして、ドライバ５２１は、論理／論理アドレス変換テーブル５２２及び論理／物理アドレス変換テーブル６２１から、ホストＯＳ５２０上の論理アドレスＡ（例えば「０ｘ３０００００００」）に対応する、フラッシュメモリ上の物理アドレスＢ（例えば「０ｘ１０００００００」）を特定する（ステップＳ４７５）。これによって書き換え前の旧データの格納先が分かることになる。
【０１６３】
そして、ドライバ５２１は、フラッシュメモリ領域６２０における消去済み空き領域をシークする（ステップＳ４７７）。書き込みデータＤを書き込むのに十分な消去済み空き領域が存在しない場合には（ステップＳ４７９：Ｎｏルート）、ドライバ５２１は、存在フラグが無効を表している無効領域の消去処理を実施する（ステップＳ４８１）。その後、ステップＳ４７７における消去済み空き領域のシークに戻る。なお、このような処理を実施しても書き込みデータＤを書き込むのに十分な消去済み空き領域が得られない場合（すなわち容量不足の場合）には、エラーで処理を終了する。一方、書き込みデータＤを書き込むのに十分な消去済み空き領域が存在する場合には（ステップＳ４７９：Ｙｅｓルート）、ドライバ５２１は、任意の消去済み空き領域Ｍ（例えば「０ｘ１００００４００」）を特定し、当該領域Ｍに書き込みデータＤ（「０ｘ１２３４５６７８」）を書き込む（ステップＳ４８３）。さらに、ドライバ５２１は、書き込みを行った領域Ｍ（「０ｘ１００００４００」）の存在フラグを「消去済み」から「有効」に変更する（ステップＳ４８５）。処理は端子Ｐを介して図３９の処理に移行する。
【０１６４】
図３９の処理の説明に移行して、物理アドレスＢのセキュリティフラグがＯＮである場合には（ステップＳ４８７：Ｙｅｓルート）、ドライバ５２１は、物理アドレスＢ（図３７の例では「０ｘ１０００００００」）に全ビット「０」を書き込む（ステップＳ４８９）。そして、ドライバ５２１は、物理アドレスＢの存在フラグを「有効」から「無効」に変更する（ステップＳ４９１）。さらに、ドライバ５２１は、新たな書き込み先領域Ｍ（例えば「０ｘ１００００４００」）のセキュリティフラグをＯＮにセットする（ステップＳ４９３）。なお、物理アドレスＢについてのセキュリティフラグをＯＦＦにセットするようにしても良い。一方、物理アドレスＢのセキュリティフラグがＯＦＦである場合には（ステップＳ４８７：Ｎｏルート）、ステップＳ４９５に移行する。
【０１６５】
そして、ドライバ５２１は、論理／物理アドレス変換テーブル６２１において、ホストＯＳ５２０上の論理アドレスＡ（「０ｘ３０００００００」）に対応する、フラッシュメモリ上の論理アドレスＸに対応する物理アドレスを、物理アドレスＢ（「０ｘ１０００００００」）から書き込み先領域Ｍの物理アドレスＭ（「０ｘ１００００４００」）に変更する（ステップＳ４９５）。ホストＯＳ５２０上の論理アドレスＡ（「０ｘ３０００００００」）は、論理／論理アドレス変換テーブル５２２によって、フラッシュメモリ上の論理アドレスＸに変換されるが、論理／物理アドレス変換テーブル６２１において論理アドレスＸが書き込み先領域Ｍの物理アドレスＭ（「０ｘ１００００４００」）に対応付けられていれば、問題なくアクセス可能となる。
【０１６６】
以上のように、携帯型フラッシュメモリデバイス６００においてセキュリティ領域と非セキュリティ領域とが連続的に区分されていない場合においても、書き換え命令の受け付けから論理／物理アドレス変換テーブル６２１の更新までの一連のデータ書き換え処理に、秘密情報に対するデータ書き換えの後にデータ書き換え前の秘密情報がフラッシュメモリ上に残されないようにするための無効化処理が一体化されて実施される。よって、論理／物理アドレス変換テーブル６２１の更新まで終了していれば、情報漏洩はあり得ないことが保証できる。
【０１６７】
なお、上で述べた例では、論理／物理アドレス変換テーブル６２１をセキュリティフラグがＯＮの領域に格納していたが、一部、または全体をセキュリティフラグがＯＦＦの領域に格納するようにしても良い。一部、または全体をＰＣ５００のＲＡＭ上に保持するようにしても良い。同様に、論理／論理アドレス変換テーブル５２２についても一部、または全体をフラッシュメモリ領域６２０上に保持するようにしても良い。さらに、論理／論理アドレス変換テーブル５２２と論理／物理アドレス変換テーブル６２１をマージしたようなテーブルを用意するようにしても良い。このようなテーブルについても、一部、または全体をＰＣ５００のＲＡＭ上に保持しても、フラッシュメモリ領域６２０上に保持しても良い。また、新規データの書き込みの場合には、セキュリティフラグをＯＮに設定する処理が必要である。
【０１６８】
削除処理の場合には、図４０に示すような処理を実施する。まず、ドライバ５２１は、アプリケーション・プログラム５１０からホストＯＳ５２０上の削除対象論理アドレスＡ（例えばホストＯＳ５２０の論理アドレス「０ｘ３０００００００」）を含む削除命令を受け付ける（ステップＳ５０１）。また、ドライバ５２１は、論理／論理アドレス変換テーブル５２２から、フラッシュメモリ領域６２０上の論理／物理アドレス変換テーブル６２１の物理アドレス（例えば「０ｘ１００１０８００」）を取得する（ステップＳ５０３）。これによって論理／物理アドレス変換テーブル６２１を利用することができるようになる。
【０１６９】
そして、ドライバ５２１は、論理／論理アドレス変換テーブル５２２及び論理／物理アドレス変換テーブル６２１から、ホストＯＳ５２０上の論理アドレスＡ（例えば「０ｘ３０００００００」）に対応する、フラッシュメモリ上の物理アドレスＢ（例えば「０ｘ１０００００００」）を特定する（ステップＳ５０５）。
【０１７０】
物理アドレスＢについてのセキュリティフラグがＯＮにセットされていれば（ステップＳ５０７：Ｙｅｓルート）、ドライバ５２１は、物理アドレスＢ（図３７の例では「０ｘ１０００００００」）に全ビット「０」を書き込む（ステップＳ５０９）。さらに、ドライバ５２１は、物理アドレスＢの存在フラグを「有効」から「無効」に変更する（ステップＳ５１１）。なお、物理アドレスＢについてのセキュリティフラグをＯＦＦにセットしてもよい。一方、物理アドレスＢについてのセキュリティフラグがＯＦＦにセットされていれば（ステップＳ５０７：Ｎｏルート）、ステップＳ５１３に移行する。
【０１７１】
その後、ドライバ５２１は、ホストＯＳ５２０上の論理アドレスＡ（「０ｘ３０００００００」）に対応する、フラッシュメモリ上の論理アドレスＸのエントリを削除することによって、論理／物理アドレス変換テーブル６２１を更新する（ステップＳ５１３）。
【０１７２】
このような削除処理を実施することによって、秘密情報を削除する場合には、旧データを消し去るので、情報漏洩を防止することができる。
【０１７３】
なお、実施の形態７のように、アプリケーション・プログラム５１０がフラッシュメモリ領域６２０についての論理アドレスを把握しているのは、主に組み込み型機器の場合が多い。しかし、図３７で示したようにＰＣで実施する場合にもこのような処理を行う場合もある。
【０１７４】
［実施の形態８］
本実施の形態では、フラッシュメモリをセキュリティ領域として用いる携帯電話機を取り扱う。携帯電話機７００の構成図を図４１に示す。携帯電話機７００においては、ＣＰＵ７０１、ＲＡＭ７０２、ホストＯＳ７２０のコード及び制御コードが格納されているＲＯＭ７０３と、ボタン７０４と、スピーカ７０５と、マイク７０６と、画像処理装置７０７と、フラッシュメモリ７２０のためのドライバ７１０とが接続されており、それらはホストＯＳ７２０によって制御される。また、画像処理装置７０７は、表示装置７０８に接続されており、画像処理装置７０７の処理結果を表示する。
【０１７５】
ＲＡＭ７０２には、ホストＯＳ上の論理アドレスとフラッシュメモリ上の対応論理アドレスが登録されている論理／論理アドレス変換テーブル７１２が格納されている。
【０１７６】
フラッシュメモリ７２０は、全領域セキュリティ領域となっており、フラッシュメモリ上の論理アドレスと物理アドレスが登録されている論理／物理アドレス変換テーブル７２１を格納している。また、フラッシュメモリにおいては、所定のサイズのブロック毎に、当該ブロックの状態が存在フラグによって管理されており、当該ブロックに記録されているデータが有効である場合には有効を表す値が、当該ブロックに記録されているデータが無効である場合には無効を表す値が、消去処理が実施され全てのビットが「１」になっている消去済を表す値が登録されるようになっている。図４１では、説明をしやすくするために、ブロック毎にその先頭物理アドレスを示しており、さらに対応する存在フラグの状態を表している。
【０１７７】
本実施の形態でも、例えば電源オン時に、フラッシュメモリ７２０上に、フラッシュメモリ７２０における論理アドレスと物理アドレスの変換テーブルである論理／物理アドレス変換テーブル７２１を読み込むと共に、読み込んだ情報を基に、ホストＯＳ７２０上における論理アドレスとフラッシュメモリ上の論理アドレスとの変換テーブルである論理／論理アドレス変換テーブル７１２を生成して、携帯電話機７００のＲＡＭ７０２に格納する。この際、論理／物理アドレス変換テーブル７２１の、フラッシュメモリ上の物理アドレス（図４１の例では、「０ｘ１００１０８００」）を特定しておき、例えばホストＯＳ７２０上における論理アドレスを割り当てて、両者を論理／論理アドレス変換テーブル７１２に登録すると共に、ドライバ７１０にもホストＯＳ７２０上における論理アドレスを登録しておく。これによって、必要な時にドライバ７１０は、論理／物理アドレス変換テーブル７２１の物理アドレスを特定することができるようになる。
【０１７８】
次に、本実施の形態におけるデータ書き換え処理について図４２及び図４３を用いて説明する。まず、制御コード７０３をＣＰＵ７０１で実行して、ホストＯＳ７２０上の論理アドレスＡ（例えば「０ｘ３０００００００」）についてデータＤ（例えば「０ｘ１２３４５６７８」）に書き換える書き換え命令を出力する（ステップＳ５６１）。ホストＯＳ７２０は、書き換え命令を受け取り、ホストＯＳ７２０上の論理アドレスＡがフラッシュメモリ上のアドレスであると特定し、ドライバ７１０にホストＯＳ７２０上の論理アドレスＡについてデータＤに書き換える書き換え命令を出力する（ステップＳ５６３）。
【０１７９】
ホストＯＳ７２０から書き換え命令を受け取ると、ドライバ７１０は、論理／論理アドレス変換テーブル７１２から、フラッシュメモリ７２０上の論理／物理アドレス変換テーブル７２１の物理アドレスを取得する（ステップＳ５６５）。これによって論理／物理アドレス変換テーブル７２１を利用することができるようになる。
【０１８０】
そして、ドライバ７１０は、論理／論理アドレス変換テーブル７２２及び論理／物理アドレス変換テーブル７２１から、ホストＯＳ７２０上の論理アドレスＡ（例えば「０ｘ３０００００００」）に対応する、フラッシュメモリ上の物理アドレスＢ（例えば「０ｘ１０００００００」）を特定する（ステップＳ５６７）。これによって書き換え前の旧データの格納先が分かることになる。
【０１８１】
さらに、ドライバ７１０は、フラッシュメモリ７２０において消去済み空き領域をシークする（ステップＳ５６９）。書き込みデータＤを書き込むのに十分な消去済み空き領域が存在しない場合には（ステップＳ５７１：Ｎｏルート）、ドライバ７１０は、存在フラグが無効を表している無効領域の消去処理を実施する（ステップＳ５７３）。その後、ステップＳ５６９における消去済み空き領域のシークに戻る。なお、このような処理を実施しても書き込みデータＤを書き込むのに十分な消去済み空き領域が得られない場合（すなわち容量不足の場合）には、エラーで処理を終了する。
【０１８２】
一方、書き込みデータＤを書き込むのに十分な消去済み空き領域が存在する場合には（ステップＳ５７１：Ｙｅｓルート）、端子Ｑを介して図４３の処理に移行する。
【０１８３】
図４３の処理の説明に移行して、任意の消去済み空き領域Ｍ（例えば「０ｘ１００００４００」）を特定し、当該領域ＭにデータＤ（「０ｘ１２３４５６７８」）を書き込み、当該領域Ｍの存在フラグを、「消去済み」から「有効」に変更する（ステップＳ５７５）。
【０１８４】
さらに、ドライバ７１０は、ステップＳ５６７で特定された物理アドレスＢ（図４１の例では「０ｘ１０００００００」）に全ビット「０」を書き込み、物理アドレスＢの存在フラグを「有効」から「無効」に変更する（ステップＳ５７７）。
【０１８５】
そして、ドライバ７１０は、論理／物理アドレス変換テーブル７２１において、ホストＯＳ７２０上の論理アドレスＡ（「０ｘ３０００００００」）に対応する、フラッシュメモリ上の論理アドレスＸに対応する物理アドレスを、物理アドレスＢ（「０ｘ１０００００００」）から書き込み先領域Ｍの物理アドレス（「０ｘ１００００４００」）に変更する（ステップＳ５７９）。ホストＯＳ７２０上の論理アドレスＡ（「０ｘ３０００００００」）は、論理／論理アドレス変換テーブル７１２によって、フラッシュメモリ上の論理アドレスＸに変換されるが、論理／物理アドレス変換テーブル７２１において論理アドレスＸが書き込み先領域Ｍの物理アドレス（「０ｘ１００００４００」）に対応付けられていれば、問題なくアクセス可能となる。
【０１８６】
以上のように、携帯電話機７００にフラッシュメモリをセキュリティ領域として実装する場合においても、書き換え命令の受け付けから論理／物理アドレス変換テーブル７２１の更新までの一連のデータ書き換え処理に、秘密情報に対するデータ書き換えの後にデータ書き換え前の秘密情報がフラッシュメモリ上に残されないようにするための無効化処理が一体化されて実施される。よって、論理／物理アドレス変換テーブル７２１の更新まで終了していれば、情報漏洩はあり得ないことが保証できる。
【０１８７】
次に、図４４を用いて本実施の形態における削除処理について説明する。まず、制御コード７０３をＣＰＵ７０１で実行して、ホストＯＳ７２０上の論理アドレスＡ（例えば「０ｘ３０００００００」）について削除命令を出力する（ステップＳ５８１）。ホストＯＳ７２０は、削除命令を受け取り、ホストＯＳ７２０上の論理アドレスＡがフラッシュメモリ上のアドレスであると特定し、ドライバ７１０にホストＯＳ７２０上の論理アドレスＡについて削除命令を出力する（ステップＳ５８３）。
【０１８８】
ホストＯＳ７２０から削除命令を受け取ると、ドライバ７１０は、論理／論理アドレス変換テーブル７１２から、フラッシュメモリ７２０上の論理／物理アドレス変換テーブル７２１の物理アドレスを取得する（ステップＳ５８５）。これによって論理／物理アドレス変換テーブル７２１を利用することができるようになる。
【０１８９】
そして、ドライバ７１０は、論理／論理アドレス変換テーブル７１２及び論理／物理アドレス変換テーブル７２１から、ホストＯＳ３２０上の論理アドレスＡ（例えば「０ｘ３０００００００」）に対応する、フラッシュメモリ上の物理アドレスＢ（例えば「０ｘ１０００００００」）を特定する（ステップＳ５８７）。これによって削除対象データの格納先が分かることになる。
【０１９０】
その後、ドライバ７１０は、ステップＳ５８７で特定された物理アドレスＢの領域に全ビット「０」を書き込み、当該領域の存在フラグを有効から無効に変更する（ステップＳ５８９）。さらに、ドライバ７１０は、論理／物理アドレス変換テーブル７２１において、ホストＯＳ７２０上の論理アドレスＡ（「０ｘ３０００００００」）に対応する、フラッシュメモリ上の論理アドレスＸについてのエントリを削除することによって、論理／物理アドレス変換テーブル７２１を更新する（ステップＳ５９１）。
【０１９１】
このような処理を実施すれば、削除されたデータにアクセスできないだけではなく、完全に読み出し不能になっているため、情報漏洩はあり得ない。
【０１９２】
具体的には、削除命令の受け付けから論理／物理アドレス変換テーブル７２１の更新までの一連のデータ削除処理に、削除対象の秘密情報がフラッシュメモリ上に残されないようにするための無効化処理が一体化されて実施される。よって、論理／物理アドレス変換テーブル７２１の更新まで終了していれば、情報漏洩はあり得ないことが保証できる。
【０１９３】
上では、ＲＡＭ７０２に、論理／論理アドレス変換テーブル７１２を格納する例を示したが、一部、または全体をフラッシュメモリ７２０に格納するようにしても良い。論理／物理アドレス変換テーブル７２１についても、一部、または全体をＲＡＭ７０２に格納するようにしても良い。さらに、論理／物理アドレス変換テーブル７２１と論理／論理アドレス変換テーブル７１２とを統合したようなテーブルを用意するようにしても良い。
【０１９４】
さらに、フラッシュメモリ７２０において一部の領域を非セキュリティ領域にするようにしてもよい。また、ドライバ７１０は、その全部をハードウエアで構成する場合もあれば、一部をハードウエアで構成する場合もある。
【０１９５】
［実施の形態９］
第８の実施の形態では、携帯電話機７００においてセキュリティ領域を含むフラッシュメモリ７２０を実装する例を示したが、他の装置に同様な構成でフラッシュメモリを実装するようにしても良い。例えば、図４５に示すようなコピー機（コピー及びＦＡＸ機能などを有する装置を含む）や携帯型音楽プレーヤなどにおいてセキュリティ保持を必要とするデータを取り扱う場合には、第８の実施の形態において述べたような処理を実施すればよい。なお、これらの機器では、携帯電話機７００とは主たる機能は異なるので構成部品は異なるが、フラッシュメモリに係る機能構成は同様である。
【０１９６】
［実施の形態１０］
実施の形態１乃至９においては不揮発性メモリとしてフラッシュメモリを用いる例を示したが、以下では強誘電体メモリ（ＦｅＲＡＭ）を用いる場合を説明する。なお、強誘電体メモリであっても２Ｔ２Ｃ型などのような、読み込み処理を行っても情報が喪失せずに保持されたままになるタイプの場合には、実施の形態１及至９の方法で行えばよい。この場合、強誘電体メモリであるため、「消去処理」に関する処理は不要となる。
１．第１の書き込み処理例
第１０の実施の形態では、ＦｅＲＡＭにおいて全てのメモリ領域がセキュリティを保持すべきセキュリティ領域である場合の例を説明する。
【０１９７】
図４６に第１０の実施の形態における書き込み処理についてのシステム構成図を示す。パーソナルコンピュータ（ＰＣ）１１００では、ＯＳ上アプリケーション・プログラム１１１０が実行され、さらにＯＳの一部としてＦｅＲＡＭデバイス１２００のためのドライバ１１２０も実行されている。ドライバ１１２０は、ＦｅＲＡＭデバイス１２００がＰＣ１１００に例えばＵＳＢインターフェースを介して接続された時に読み込まれ、且つＯＳ上の論理アドレスとＦｅＲＡＭ上の物理アドレスとの対応関係を格納する論理／物理アドレス変換テーブル１１４０を用いて、以下で述べるような処理を実施する。論理／物理アドレス変換テーブル１１４０は、様々な構成が可能であるが、ここではＯＳ上の論理アドレスから、ＦｅＲＡＭ上の物理アドレスを特定して出力する機能を実現するものとする。なお、本実施の形態における論理／物理アドレス変換テーブル１１４０の生成については、従来と同じであるから、既に用意されているものとして以下説明する。
【０１９８】
ＦｅＲＡＭデバイス１２００では、所定のサイズのブロック毎に、当該ブロックの状態がフラグ（存在フラグとも呼ぶ）によって管理されており、当該ブロックに記録されているデータが有効である場合には有効を表す値が、当該ブロックに記録されているデータが無効である場合には無効を表す値が、登録されるようになっている。図４６では、説明をしやすくするために、ブロック毎にその先頭物理アドレスを示しており、さらに対応する存在フラグの状態を表している。
【０１９９】
次に、図４７及び図４８を用いて第１の書き込み処理例を説明する。まず、ドライバ１１２０は、アプリケーション・プログラム１１１０から書き込み先論理アドレスＡ及び書き込みデータＤを含むライト（ｗｒｉｔｅ）命令を受け付ける（ステップＳ７０１）。このｗｒｉｔｅ命令に応答して、論理／物理アドレス変換テーブル１１４０から、ｗｒｉｔｅ命令に含まれる書き込み先論理アドレスＡに対応する、ＦｅＲＡＭ上の物理アドレスＢを取得するための処理を実施する（ステップＳ７０３）。ここで、物理アドレスＢを論理／物理アドレス変換テーブル１１４０から得られなかった場合には（ステップＳ７０５：Ｎｏルート）、新たなデータ書き込みであるので、ステップＳ７１１に移行する。
【０２００】
一方、物理アドレスＢを論理／物理アドレス変換テーブル１１４０から得られた場合には（ステップＳ７０５：Ｙｅｓルート）、ドライバ１１２０は、物理アドレスＢからデータを読み出す（ステップＳ７０７）。図４６の例では、物理アドレスＢ「０ｘ１０００００００」が得られて、当該物理アドレスＢから旧データを読み出すことによって、旧データが全ビット「０」に変更されたことを表している。これによって、旧データは全て消去されているので、旧データの情報漏洩はない。なお、データの読み出しではなく、「０」書き込みを行うようにしても良い。さらに、ドライバ１１２０は、物理アドレスＢの存在フラグを「有効」から「無効」に変更する（ステップＳ７０９）。図４６でも、物理アドレスＢ「０ｘ１０００００００」の存在フラグを、「有効」から「無効」に変更している。ステップＳ７０７を実行することによって仮に読み出し処理が実行されても既に旧データは物理的に読み出し不可能であるが、ステップＳ７０９を実施することによって論理的にも無効で存在しないデータとなって、通常の処理では読み出し不可能となる。そしてステップＳ７１１に移行する。
【０２０１】
次に、ドライバ１１２０は、ＦｅＲＡＭ上における空き領域（存在フラグが「無効」を示している領域）をシークする（ステップＳ７１１）。ここで、書き込みデータＤを書き込むのに十分な空き領域が存在しない場合には（ステップＳ７１３：Ｎｏルート）、ドライバ１１２０は、エラーを出力して、処理を終了する（ステップＳ７１５）。ＦｅＲＡＭの場合には、フラッシュメモリとは異なり、存在フラグは「有効」と「無効」だけであり、「消去済み」はないので、存在フラグが「無効」の領域で容量不足の場合には、使用可能な領域はそれ以上に増加することはない。
【０２０２】
一方、書き込みデータＤを書き込むのに十分な空き領域が存在する場合には（ステップＳ７１３：Ｙｅｓルート）、ドライバ１１２０は、任意の空き領域Ｍを特定して、当該空き領域Ｍに書き込みデータＤを書き込む（ステップＳ７１７）。図４６の例では「＊」のマーク付きの領域Ｍ（物理アドレス「０ｘ１００００４００」）を特定して、書き込みデータＤを書き込む。処理は、端子Ｒを介して図４８の処理に移行する。
【０２０３】
図４８の処理の説明に移行して、ドライバ１１２０は、書き込みデータＤを書き込んだ領域Ｍの存在フラグを「無効」から「有効」に変更する（ステップＳ７１９）。図４６の例でも、物理アドレスＢ「０ｘ１００００４００」の存在フラグを、「無効」から「有効」に変更している。その後、ドライバ１１２０は、論理アドレスＡに対応する物理アドレスＭ（図１の例では「０ｘ１００００４００」）を用いて、論理アドレスＡから物理アドレスＭが取得できるように論理／物理アドレス変換テーブル１１４０を更新する（ステップＳ７２１）。
【０２０４】
ステップＳ７２１を実施することによって、新たにデータＤを読み出したりする場合に、論理／物理アドレス変換テーブル１１４０によってＦｅＲＡＭ上の物理アドレスＭを得ることができるので、正しいデータを得られるようになる。また、ＦｅＲＡＭ上、旧データがどこにあったのかも分からなくなる。
【０２０５】
２．第２の書き込み処理例
第２の書き込み処理例を、図４９及び図５０を用いて説明する。なお、システム構成は図４６に示したものと同様である。
【０２０６】
まず、ドライバ１１２０は、アプリケーション・プログラム１１１０から書き込み先論理アドレスＡ及び書き込みデータＤを含むライト（ｗｒｉｔｅ）命令を受け付ける（ステップＳ７３１）。このｗｒｉｔｅ命令に応答して、ドライバ１１２０は、ＦｅＲＡＭ上における空き領域（存在フラグが「無効」を示している領域）をシークする（ステップＳ７３３）。ここで、書き込みデータＤを書き込むのに十分な空き領域が存在しない場合には（ステップＳ７３５：Ｎｏルート）、ドライバ１１２０は、エラーを出力して、処理を終了する（ステップＳ７３７）。
【０２０７】
一方、書き込みデータＤを書き込むのに十分な空き領域が存在する場合には（ステップＳ７３５：Ｙｅｓルート）、ドライバ１１２０は、任意の空き領域Ｍを特定して、当該空き領域Ｍに書き込みデータＤを書き込む（ステップＳ７３９）。さらに、ドライバ１１２０は、書き込みデータＤを書き込んだ領域Ｍの存在フラグを「無効」から「有効」に変更する（ステップＳ７４１）。
【０２０８】
次に、ドライバ１１２０は、論理／物理アドレス変換テーブル１１４０から、ｗｒｉｔｅ命令に含まれる書き込み先論理アドレスＡに対応する、ＦｅＲＡＭ上の物理アドレスＢを取得するための処理を実施する（ステップＳ７４３）。ここで、物理アドレスＢを論理／物理アドレス変換テーブル１１４０から得られなかった場合には（ステップＳ７４５：Ｎｏルート）、新たなデータ書き込みであるので、端子Ｓを介して図５０のステップＳ７５１に移行する。
【０２０９】
一方、物理アドレスＢを論理／物理アドレス変換テーブル１１４０から得られた場合には（ステップＳ７４５：Ｙｅｓルート）、ドライバ１１２０は、物理アドレスＢからデータを読み出す（ステップＳ７４７）。これによって、旧データは全て消去されているので、旧データの情報漏洩はない。なお、データ読み込みではなく、「０」を書き込むようにしても良い。さらに、ドライバ１１２０は、物理アドレスＢの存在フラグを「有効」から「無効」に変更する（ステップＳ７４９）。処理は端子Ｓを介して図５０の処理に移行する。
【０２１０】
図５０の処理の説明に移行して、ドライバ１１２０は、論理アドレスＡに対応する物理アドレスＭを用いて、論理アドレスＡから物理アドレスＭが取得できるように論理／物理アドレス変換テーブル１１４０を更新する（ステップＳ７５１）。
【０２１１】
以上の処理を実施することによって、第１の書き込み処理例と同様の効果を得ることができる。なお、第２の書き込み処理例は、第１の書き込み処理例における（ａ）ステップＳ７０３乃至Ｓ７０９と（ｂ）ステップＳ７１１乃至Ｓ７１９の順番を入れ替えた形になっている。いずれにせよ論理／物理アドレス変換テーブル１１４０の更新の前に、情報漏洩に最も重要なステップＳ７０７やＳ７４７を行っている。すなわち、ｗｒｉｔｅ命令の受け付けから論理／物理アドレス変換テーブル１１４０の更新までの一連のデータ書き込み処理に、秘密情報に対するデータ書き換えの後にデータ書き換え前の秘密情報がＦｅＲＡＭ上に残されないようにするための無効化処理が一体化されている。よって、論理／物理アドレス変換テーブル１１４０の更新まで終了していれば、情報漏洩はあり得ないことが保証できる。
【０２１２】
３．削除処理例
第１の実施の形態における削除処理例を図５１及び図５２を用いて説明する。図５１に削除処理についてのシステム構成図を示す。なお、ＰＣ１１００については図４６と同じである。ＦｅＲＡＭデバイス１２００においては、以下で述べる処理フローにおいて関係する部分が図４６とは異なるように示されている。
【０２１３】
まず、ドライバ１１２０は、アプリケーション・プログラム１１１０から、削除先論理アドレスＡを含む削除命令を受け付ける（ステップＳ７６１）。そして、ドライバ１１２０は、論理／物理アドレス変換テーブル１１４０から、論理アドレスＡに対応する、ＦｅＲＡＭ上の物理アドレスＢを取得する処理を実施する（ステップＳ７６３）。ここで取得された物理アドレスＢのブロックからデータを読み出す（ステップＳ７６５）。これによって、旧データは読み出せなくなる。例えば、物理アドレスＢが「０ｘ１０００００００」であれば、図５１に示すように、旧データを読み出すことによって全ビットを「０」に変更する。なお、「０」を書き込むようにしても良い。さらに、ドライバ１１２０は、物理アドレスＢの存在フラグを「有効」から「無効」に変更する（ステップＳ７６７）。ステップＳ７６５及びＳ７６７のセットは、ｗｒｉｔｅ命令におけるものと同様である。
【０２１４】
その後、ドライバ１１２０は、論理アドレスＡについてのエントリを、論理／物理アドレス変換テーブル１１４０から削除することによって更新する（ステップＳ７６９）。
【０２１５】
このように、削除命令についても、論理／物理アドレス変換テーブル１１４０の更新の前に、情報漏洩に最も重要なステップＳ７６５を行っている。すなわち、削除命令の受け付けから論理／物理アドレス変換テーブル１１４０の更新までの一連の削除処理に、削除対象の秘密情報がＦｅＲＡＭ上に残されないようにするための無効化処理が一体化されている。よって、論理／物理アドレス変換テーブル１１４０の更新まで終了していれば、情報漏洩はあり得ないことが保証できる。
【０２１６】
図４６及び図５１において、論理／物理アドレス変換テーブル１１４０は、ＰＣ１１００側のＲＡＭに設けられているが、一部、または全体をＦｅＲＡＭデバイス１２００に設けるようにしても良い。
【０２１７】
［実施の形態１１］
１．第１の書き込み処理例
第１１の実施の形態では、ＦｅＲＡＭにおいてセキュリティ領域と非セキュリティ領域とが設けられている第１のケースを説明する。
【０２１８】
図５３に第１１の実施の形態における書き込み処理についてのシステム構成図を示す。ＰＣ１１００では、ＯＳ上アプリケーション・プログラム１１１０が実行され、さらにＯＳの一部としてＦｅＲＡＭデバイス１２００のためのドライバ１１２１も実行されている。ドライバ１１２１は、ＦｅＲＡＭデバイス１２００がＰＣ１１００に例えばＵＳＢインターフェースを介して接続された時に生成され且つＯＳ上の論理アドレスとＦｅＲＡＭ上の物理アドレスとの対応関係を格納する論理／物理アドレス変換テーブル１１４０を用いて、以下で述べるような処理を実施する。本実施の形態では、アクセス先がＦｅＲＡＭ上のセキュリティ領域であるか否かを特定するためのセキュリティ領域データ１１２２を保持している。セキュリティ領域データ１１２２は、例えばセキュリティ領域の論理アドレスの範囲データ、又はセキュリティ領域の物理アドレスの範囲データである。
【０２１９】
論理／物理アドレス変換テーブル１１４０は、様々な構成が可能であるが、ここではＯＳ上の論理アドレスから、ＦｅＲＡＭ上の物理アドレスを特定して出力する機能を実現するものとする。
【０２２０】
ＦｅＲＡＭデバイス１２００は、セキュリティ領域１２１０と非セキュリティ領域１２２０とを含む。さらに、ＦｅＲＡＭ上のセキュリティ領域の範囲を特定するためのデータであるセキュリティ領域データ１２３０も格納している。セキュリティ領域１２１０及び非セキュリティ領域１２２０では、所定のサイズのブロック毎に、当該ブロックの状態が存在フラグによって管理されている。図５３では、説明をしやすくするために、ブロック毎にその先頭物理アドレスを示しており、さらに対応する存在フラグの状態を表している。
【０２２１】
次に、図５４を用いて、第１の書き込み処理例の前提となる処理を説明する。ＦｅＲＡＭデバイス１２００が、例えばＵＳＢなどを介してＰＣ１１００に接続されると、ドライバ１１２１が起動され、ドライバ１１２１は、周知の方法を用いて生成された論理／物理アドレス変換テーブル１１４０を、例えばＰＣ１１００のＲＡＭに格納する（ステップＳ７７１）。そして、当該ＦｅＲＡＭ上のセキュリティ領域を特定するためのセキュリティ領域データ１２３０が保持されているか否かでＦｅＲＡＭ上に領域区分が存在しているか判断する（ステップＳ７７３）。領域区分がなければ、本処理を終了する。一方、領域区分が存在すると判断されると、セキュリティ領域データ１２３０を読み出し、当該セキュリティ領域１２３０を用いて、ドライバ１１２１用のセキュリティ領域データ１１２２を生成し、例えばＲＡＭに格納する（ステップＳ７７５）。セキュリティ領域データ１１２２は、例えば特定の論理アドレスがセキュリティ領域１２１０内であるか否かを判断する、又は論理／物理アドレス変換テーブル１１４０から得られた物理アドレスがセキュリティ領域１２１０内であるか否かを判断するためのデータである。
【０２２２】
次に、図５５及び図５６を用いて本実施の形態における第１の書き込み処理例を説明する。まず、ドライバ１１２１は、アプリケーション・プログラム１１１０から書き込み先論理アドレスＡ、書き込みデータＤ及びセキュリティフラグＦを含むライト（ｗｒｉｔｅ）命令を受け付ける（ステップＳ７８１）。セキュリティフラグＦは、書き込みデータＤがセキュリティ保持が必要か否かを表す。このｗｒｉｔｅ命令に応答して、ドライバ１１２１は、論理／物理アドレス変換テーブル１１４０から、ｗｒｉｔｅ命令に含まれる書き込み先論理アドレスＡに対応する、ＦｅＲＡＭ上の物理アドレスＢを取得するための処理を実施する（ステップＳ７８３）。ここで、物理アドレスＢを論理／物理アドレス変換テーブル１１４０から得られなかった場合には（ステップＳ７８５：Ｎｏルート）、新たなデータ書き込みであるので、ステップＳ７９３に移行する。
【０２２３】
一方、物理アドレスＢを論理／物理アドレス変換テーブル１１４０から得られた場合には（ステップＳ７８５：Ｙｅｓルート）、ドライバ１１２１は、ｗｒｉｔｅ命令に含まれるセキュリティフラグＦがセキュリティ扱いであることを示しているか、及びｗｒｉｔｅ命令に含まれる論理アドレスＡ等及びセキュリティ領域データ１１２２に基づきセキュリティ領域１２１０へのアクセスであるかを判断する（ステップＳ７８７）。いずれの条件も満たされない場合には、ステップＳ７９１に移行する。一方、いずれかの条件が満たされている場合には、ドライバ１１２１は、物理アドレスＢのブロックからデータを読み出す（ステップＳ７８９）。図５３の例では、物理アドレスＢ「０ｘ１０００００００」が得られて、旧データを読み出すことによって、全ビットを「０」に変更することを表している。これによって、旧データは全て消去されているので、旧データの情報漏洩はない。なお、このようなデータ読み込みではなく、「０」を書き込むようにしてもよい。さらに、ドライバ１１２１は、物理アドレスＢの存在フラグを「有効」から「無効」に変更する（ステップＳ７９１）。本例でも、ステップＳ７８９とステップＳ７９１は連続して行われる。また、図５３でも、物理アドレスＢ「０ｘ１０００００００」の存在フラグを、「有効」から「無効」に変更している。ステップＳ７８９を実行することによって仮に読み出し処理が実行されても既に旧データは物理的に読み出し不可能であるが、ステップＳ７９１を実施することによって論理的にも無効で存在しないデータとなって、通常の処理では読み出し不可能となる。そしてステップＳ７９３に移行する。
【０２２４】
次に、ドライバ１１２１は、セキュリティフラグＦがセキュリティ扱いであることを示している場合又はセキュリティ領域データ１１２２からセキュリティ領域１２１０へのアクセスであることが分かった場合には、ＦｅＲＡＭのセキュリティ領域１２１０において、セキュリティフラグＦが非セキュリティ扱いであることを示している場合又はセキュリティ領域データ１１２２から非セキュリティ領域１２２０へのアクセスであることが分かった場合には、ＦｅＲＡＭの非セキュリティ領域１２２０において、空き領域（存在フラグが「無効」を示している領域）をシークする（ステップＳ７９３）。ここで、書き込みデータＤを書き込むのに十分な空き領域が存在しない場合には（ステップＳ７９５：Ｎｏルート）、ドライバ１１２１は、エラーを出力して、処理を終了する（ステップＳ７９７）。一方、書き込みデータＤを書き込むのに十分な空き領域が存在する場合には（ステップＳ７９５：Ｙｅｓルート）、端子Ｔを介して図５６の処理に移行する。
【０２２５】
図５６の処理の説明に移行して、ドライバ１１２１は、任意の空き領域Ｍを特定して、当該空き領域Ｍに書き込みデータＤを書き込む（ステップＳ７９９）。図５３の例では「＊」のマーク付きの領域（物理アドレス「０ｘ１００００４００」）を特定して、書き込みデータＤを書き込む。
【０２２６】
そして、ドライバ１１２１は、書き込みデータＤを書き込んだ領域Ｍの存在フラグを「無効」から「有効」に変更する（ステップＳ８０１）。図５３の例でも、物理アドレス「０ｘ１００００４００」の存在フラグを、「無効」から「有効」に変更している。その後、ドライバ１１２１は、論理アドレスＡに対応する物理アドレスＭ（図５３の例では「０ｘ１００００４００」）を用いて、論理アドレスＡから物理アドレスＭが取得できるように論理／物理アドレス変換テーブル１１４０を更新する（ステップＳ８０３）。
【０２２７】
このような処理を実施することによって、ＦｅＲＡＭ上にセキュリティ領域１２１０と非セキュリティ領域１２２０とが設けられている場合においても、セキュリティ領域１２１０へのデータ書き込みにおいては、情報漏洩を防止することができるようになる。
【０２２８】
なお、本実施の形態においても、論理／物理アドレス変換テーブル１１４０の更新の前に、情報漏洩に最も重要なステップＳ７８９を行っている。すなわち、ｗｒｉｔｅ命令の受け付けから論理／物理アドレス変換テーブル１１４０の更新までの一連のデータ書き込み処理に、秘密情報に対するデータ書き換えの後にデータ書き換え前の秘密情報がＦｅＲＡＭ上に残されないようにするための無効化処理が一体化されている。よって、論理／物理アドレス変換テーブル１１４０の更新まで終了していれば、情報漏洩はあり得ないことが保証できる。
【０２２９】
２．第２の書き込み処理例
第２の書き込み処理例を、図５７及び図５８を用いて説明する。なお、システム構成は図５３に示したものと同様である。
【０２３０】
まず、ドライバ１１２１は、アプリケーション・プログラム１１１０から書き込み先論理アドレスＡ、書き込みデータＤ及びセキュリティフラグＦを含むライト（ｗｒｉｔｅ）命令を受け付ける（ステップＳ８１１）。このｗｒｉｔｅ命令に応答して、ドライバ１１２１は、ｗｒｉｔｅ命令に含まれるセキュリティフラグＦがセキュリティ扱いであることを示している場合又はｗｒｉｔｅ命令に含まれる論理アドレスＡ等及びセキュリティ領域データ１１２２からセキュリティ領域１２１０へのアクセスであることが分かった場合には、ＦｅＲＡＭのセキュリティ領域１２１０において、セキュリティフラグＦが非セキュリティ扱いであることを示している場合又は論理アドレスＡ等及びセキュリティ領域データ１１２２から非セキュリティ領域１２２０へのアクセスであることが分かった場合には、ＦｅＲＡＭの非セキュリティ領域１２２０において、空き領域（存在フラグが「無効」を示している領域）をシークする（ステップＳ８１３）。ここで、書き込みデータＤを書き込むのに十分な空き領域が存在しない場合には（ステップＳ８１５：Ｎｏルート）、ドライバ１１２１は、エラーを出力して、処理を終了する（ステップＳ８１７）。
【０２３１】
一方、書き込みデータＤを書き込むのに十分な空き領域が存在する場合には（ステップＳ８１５：Ｙｅｓルート）、ドライバ１１２１は、シークされた領域における任意の空き領域Ｍを特定して、当該空き領域Ｍに書き込みデータＤを書き込む（ステップＳ８１９）。そして、ドライバ１１２１は、書き込みデータＤを書き込んだ領域Ｍの存在フラグを「無効」から「有効」に変更する（ステップＳ８２１）。
【０２３２】
また、ドライバ１１２１は、論理／物理アドレス変換テーブル１１４０から、ｗｒｉｔｅ命令に含まれる書き込み先論理アドレスＡに対応する、ＦｅＲＡＭ上の物理アドレスＢを取得するための処理を実施する（ステップＳ８２３）。ここで、物理アドレスＢを論理／物理アドレス変換テーブル１１４０から得られなかった場合には（ステップＳ８２５：Ｎｏルート）、新たなデータ書き込みであるので、端子Ｖを介して図５８のステップＳ８３３に移行する。
【０２３３】
一方、物理アドレスＢを論理／物理アドレス変換テーブル１１４０から得られた場合には（ステップＳ８２５：Ｙｅｓルート）、端子Ｕを介して図５８のステップＳ８２７に移行する。
【０２３４】
図５８の処理の説明に移行して、ドライバ１１２１は、ｗｒｉｔｅ命令に含まれるセキュリティフラグＦがセキュリティ扱いであることを示しているか、及びｗｒｉｔｅ命令に含まれる論理アドレスＡ等及びセキュリティ領域データ１１２２に基づきセキュリティ領域１２１０へのアクセスであるかを判断する（ステップＳ８２７）。いずれの条件も満たされない場合には、ステップＳ８３１に移行する。一方、いずれかの条件が満たされている場合には、ドライバ１１２１は、物理アドレスＢのブロックからデータを読み出す（ステップＳ８２９）。これによって、旧データは全て消去されるので、旧データの情報漏洩はない。なお、このようなデータ読み込みではなく、「０」を書き込むようにしてもよい。さらに、ドライバ１１２１は、物理アドレスＢの存在フラグを「有効」から「無効」に変更する（ステップＳ８３１）。本例でも、ステップＳ８２９とステップＳ８３１は連続して行われる。ステップＳ８２９を実行することによって仮に読み出し処理が実行されても既に旧データは物理的に読み出し不可能であるが、ステップＳ８３１を実施することによって論理的にも無効で存在しないデータとなって、通常の処理では読み出し不可能となる。
【０２３５】
その後、ドライバ１１２１は、論理アドレスＡに対応する物理アドレスＭを用いて、論理アドレスＡから物理アドレスＭが取得できるように論理／物理アドレス変換テーブル１１４０を更新する（ステップＳ８３３）。
【０２３６】
このような処理を実施することによって、ＦｅＲＡＭ上にセキュリティ領域１２１０と非セキュリティ領域１２２０とが設けられている場合においても、セキュリティ領域１２１０へ書き込まれたデータについては、情報漏洩を防止することができるようになる。
【０２３７】
以上の処理を実施することによって、第１の書き込み処理例と同様の効果を得ることができる。なお、第２の書き込み処理例は、第１の書き込み処理例における（ａ）ステップＳ７８３乃至Ｓ７９１と（ｂ）ステップＳ７９３乃至Ｓ８０１の順番を入れ替えた形になっている。いずれにせよ論理／物理アドレス変換テーブル１１４０の更新の前に、情報漏洩に最も重要なステップＳ７８９やＳ８２９を行っている。すなわち、ｗｒｉｔｅ命令の受け付けから論理／物理アドレス変換テーブル１１４０の更新までの一連のデータ書き込み処理に、秘密情報に対するデータ書き換えの後にデータ書き換え前の秘密情報がＦｅＲＡＭ上に残されないようにするための無効化処理が一体化されている。よって、論理／物理アドレス変換テーブル１１４０の更新まで終了していれば、情報漏洩はあり得ないことが保証できる。
【０２３８】
３．削除処理例
第２の実施の形態における削除処理例を図５９及び図６０を用いて説明する。図５９に削除処理についてのシステム構成図を示す。なお、ＰＣ１１００については図５３と同じである。ＦｅＲＡＭデバイス１２００においては、以下で述べる処理フローにおいて関係する部分が図５３とは異なるように示されている。
【０２３９】
まず、ドライバ１１２１は、アプリケーション・プログラム１１１０から、削除先論理アドレスＡを含む削除命令を受け付ける（ステップＳ８４１）。そして、ドライバ１１２１は、論理／物理アドレス変換テーブル１１４０から、論理アドレスＡに対応する、ＦｅＲＡＭ上の物理アドレスＢを取得する処理を実施する（ステップＳ８４３）。
【０２４０】
ドライバ１１２１は、論理アドレスＡ又は物理アドレスＢでセキュリティ領域データ１１２２を探索して、セキュリティ領域１２１０についてのアドレスであるか判断する（ステップＳ８４５）。論理アドレスＡ又は物理アドレスＢがセキュリティ領域１２１０についてのアドレスではない場合にはステップＳ８４９に移行する。
【０２４１】
一方、論理ドレスＡ又は物理アドレスＢがセキュリティ領域１２１０についてのアドレスである場合には、ステップＳ８４３で取得された物理アドレスＢのブロックからデータを読み出す（ステップＳ８４７）。これによって、旧データは読み出せなくなる。例えば、物理アドレスＢが「０ｘ１０００００００」であれば、図５９に示すように、旧データは全ビット「０」に変更される。なお、「０」を書き込むようにしてもよい。さらに、ドライバ１１２１は、物理アドレスＢの存在フラグを「有効」から「無効」に変更する（ステップＳ８４９）。ステップＳ８４７及びＳ８４９のセットは、ｗｒｉｔｅ命令におけるものと同様である。
【０２４２】
その後、ドライバ１１２１は、論理アドレスＡについてのエントリを、論理／物理アドレス変換テーブル１１４０から削除することによって更新する（ステップＳ８５１）。
【０２４３】
このように、削除命令についても、論理／物理アドレス変換テーブル１１４０の更新の前に、情報漏洩に最も重要なステップＳ８４７を行っている。すなわち、削除命令の受け付けから論理／物理アドレス変換テーブル１１４０の更新までの一連の削除処理において、削除対象の秘密情報がＦｅＲＡＭ上に残されないようにするための無効化処理が一体化されている。よって、論理／物理アドレス変換テーブル１１４０の更新まで終了していれば、情報漏洩はあり得ないことが保証できる。
【０２４４】
図５３及び図５９において、論理／物理アドレス変換テーブル１１４０は、ＰＣ１１００側のＲＡＭに設けられているが、一部、または全体をＦｅＲＡＭデバイス１２００に設けるようにしても良い。
【０２４５】
また、第２の実施の形態においては、書き込み処理と書き換え処理を同じ命令で取り扱うようにしているが、書き込み処理と書き換え処理を異なる命令として取り扱うようにしても良い。また、例えばドライブでセキュリティ領域１２１０と非セキュリティ領域１２２０とを区別するようにすればドライブ名でセキュリティ扱い又は非セキュリティ扱いを区別できるので、ｗｒｉｔｅ命令においてセキュリティフラグＦを含めずに、ドライブ指定で処理を区別できる。
【０２４６】
［実施の形態１２］
１．第１の書き込み処理例
第１２の実施の形態では、ＦｅＲＡＭにおいてセキュリティ領域と非セキュリティ領域とが設けられている第２のケースを説明する。
【０２４７】
図６１に第１２の実施の形態における書き込み処理についてのシステム構成図を示す。ＰＣ１１００では、ＯＳ上アプリケーション・プログラム１１１０が実行され、さらにＯＳの一部としてＦｅＲＡＭデバイス１２００のためのドライバ１１２３も実行されている。ドライバ１１２３は、ＦｅＲＡＭデバイス１２００がＰＣ１１００に例えばＵＳＢインターフェースを介して接続された時に生成され且つＯＳ上の論理アドレスとＦｅＲＡＭ上の物理アドレスとの対応関係を格納する論理／物理アドレス変換テーブル１１４１を用いて、以下で述べるような処理を実施する。
【０２４８】
論理／物理アドレス変換テーブル１１４１は、様々な構成が可能であるが、ここではＯＳ上の論理アドレスから、ＦｅＲＡＭ上の物理アドレスを特定して出力する機能を実現するものとする。さらに、本実施の形態では、論理／物理アドレス変換テーブル１１４１において、論理アドレスと物理アドレスとのうち少なくともいずれかに対応して、セキュリティ領域であるか否かを表すセキュリティフラグ１１４２も保持している。
【０２４９】
ＦｅＲＡＭデバイス１２００は、セキュリティ領域１２１０と非セキュリティ領域１２２０とを含む。さらに、ＦｅＲＡＭ上のセキュリティ領域の範囲を特定するためのデータであるセキュリティ領域データ１２３０も格納している。セキュリティ領域１２１０及び非セキュリティ領域１２２０では、所定のサイズのブロック毎に、当該ブロックの状態が存在フラグによって管理されている。図６１では、説明をしやすくするために、ブロック毎にその先頭物理アドレスを示しており、さらに対応する存在フラグの状態を表している。
【０２５０】
次に、図５４で示した前提処理について、本実施の形態との差について説明する。図５４の説明では、領域区分が存在すると判断されると、セキュリティ領域データ１１２２を生成するように説明したが、本実施の形態では、セキュリティ領域データ１２３０から、論理アドレスと物理アドレスとのうち少なくともいずれかに対応して、セキュリティ領域であるか否かを表すセキュリティフラグ１１４２を生成して、論理／物理アドレス変換テーブル１１４１に設定する処理を実施する。以下、このセキュリティフラグ１１４２を用いた処理について説明する。
【０２５１】
次に、図６２及び図６３を用いて本実施の形態における第１の書き込み処理例を説明する。まず、ドライバ１１２３は、アプリケーション・プログラム１１１０から書き込み先論理アドレスＡ、書き込みデータＤ及びセキュリティフラグＦを含むライト（ｗｒｉｔｅ）命令を受け付ける（ステップＳ８６１）。セキュリティフラグＦは、書き込みデータＤがセキュリティ保持が必要か否かを表す。このｗｒｉｔｅ命令に応答して、ドライバ１１２３は、論理／物理アドレス変換テーブル１１４１から、ｗｒｉｔｅ命令に含まれる書き込み先論理アドレスＡに対応する、ＦｅＲＡＭ上の物理アドレスＢ及びセキュリティフラグＳを取得するための処理を実施する（ステップＳ８６３）。ここで、物理アドレスＢを論理／物理アドレス変換テーブル１１４１から得られなかった場合には（ステップＳ８６５：Ｎｏルート）、新たなデータ書き込みであるので、ステップＳ８７３に移行する。
【０２５２】
一方、物理アドレスＢを論理／物理アドレス変換テーブル１１４１から得られた場合には（ステップＳ８６５：Ｙｅｓルート）、ドライバ１１２３は、ｗｒｉｔｅ命令に含まれるセキュリティフラグＦがセキュリティ扱いであることを示しているか、及び論理／物理アドレス変換テーブル１１４１から得られたセキュリティフラグＳがセキュリティ扱いであることを示しているかを判断する（ステップＳ８６７）。いずれの条件も満たされない場合には、ステップＳ８７１に移行する。一方、いずれかの条件が満たされている場合には、ドライバ１１２３は、物理アドレスＢのブロックからデータを読み出す（ステップＳ８６９）。図６１の例では、物理アドレスＢ「０ｘ１０００００００」が得られて、旧データが全ビット「０」に変更されたことを表している。これによって、旧データは全て消去されているので、旧データの情報漏洩はない。なお、このようなデータ読み込みではなく、「０」を書き込むようにしても良い。さらに、ドライバ１１２３は、物理アドレスＢの存在フラグを「有効」から「無効」に変更する（ステップＳ８７１）。本例でも、ステップＳ８６９とステップＳ８７１は連続して行われる。また、図６１でも、物理アドレスＢ「０ｘ１０００００００」の存在フラグを、「有効」から「無効」に変更している。ステップＳ８６９を実行することによって仮に読み出し処理が実行されても既に旧データは物理的に読み出し不可能であるが、ステップＳ８７１を実施することによって論理的にも無効で存在しないデータとなって、通常の処理では読み出し不可能となる。そしてステップＳ８７３に移行する。
【０２５３】
次に、ドライバ１１２３は、セキュリティフラグＦ又はセキュリティフラグＳがセキュリティ扱いであることを示している場合には、ＦｅＲＡＭのセキュリティ領域１２１０において、セキュリティフラグＦ又はセキュリティフラグＳが非セキュリティ扱いであることを示している場合には、ＦｅＲＡＭの非セキュリティ領域１２２０において、空き領域（存在フラグが「無効」を示している領域）をシークする（ステップＳ８７３）。ここで、書き込みデータＤを書き込むのに十分な空き領域が存在しない場合には（ステップＳ８７５：Ｎｏルート）、ドライバ１１２３は、エラーを出力して処理を終了する（ステップＳ８７７）。一方、書き込みデータＤを書き込むのに十分な空き領域が存在する場合には（ステップＳ８７５：Ｙｅｓルート）、端子Ｘを介して図６３の処理に移行する。
【０２５４】
図６３の処理の説明に移行して、ドライバ１１２３は、セキュリティフラグＦ又はセキュリティフラグＳに応じた領域における任意の空き領域Ｍを特定して、当該空き領域Ｍに書き込みデータＤを書き込む（ステップＳ８７９）。図６１の例では「＊」のマーク付きの領域Ｍ（物理アドレス「０ｘ１００００４００」）を特定して、書き込みデータＤを書き込む。
【０２５５】
そして、ドライバ１１２３は、書き込みデータＤを書き込んだ領域Ｍの存在フラグを「無効」から「有効」に変更する（ステップＳ８８１）。図６１の例でも、物理アドレス「０ｘ１００００４００」の存在フラグを、「無効」から「有効」に変更している。その後、ドライバ１１２３は、セキュリティフラグＦ又はＳ（いずれかがセキュリティ扱いであるか否か）及び論理アドレスＡに対応する物理アドレスＭ（図６１の例では「０ｘ１００００４００」）を用いて、論理アドレスＡから物理アドレスＭ及びセキュリティフラグＳが取得できるように論理／物理アドレス変換テーブル１１４１を更新する（ステップＳ８８３）。セキュリティフラグＳについては、いずれかがセキュリティ扱いを表している場合には、セキュリティ扱いを表すように設定し、そうでない場合には非セキュリティ扱いを表すように設定する。
【０２５６】
このような処理を実施することによって、ＦｅＲＡＭ上にセキュリティ領域１２１０と非セキュリティ領域１２２０とが設けられている場合においても、セキュリティ領域１２１０へ書き込まれたデータについては、情報漏洩を防止することができるようになる。
【０２５７】
なお、本実施の形態においても、論理／物理アドレス変換テーブル１１４１の更新の前に、情報漏洩に最も重要なステップＳ８６９を行っている。すなわち、ｗｒｉｔｅ命令の受け付けから論理／物理アドレス変換テーブル１１４１の更新までの一連のデータ書き込み処理に、秘密情報に対するデータ書き換えの後にデータ書き換え前の秘密情報がＦｅＲＡＭ上に残されないようにするための無効化処理が一体化されている。よって、論理／物理アドレス変換テーブル１１４１の更新まで終了していれば、情報漏洩はあり得ないことが保証できる。
【０２５８】
２．第２の書き込み処理例
第２の書き込み処理例を、図６４及び図６５を用いて説明する。なお、システム構成は図６１に示したものと同様である。
【０２５９】
まず、ドライバ１１２３は、アプリケーション・プログラム１１１０から書き込み先論理アドレスＡ、書き込みデータＤ及びセキュリティフラグＦを含むライト（ｗｒｉｔｅ）命令を受け付ける（ステップＳ８９１）。このｗｒｉｔｅ命令に応答して、ドライバ１１２３は、ｗｒｉｔｅ命令に含まれるセキュリティフラグＦがセキュリティ扱いであることを示している場合には、ＦｅＲＡＭのセキュリティ領域１２１０において、セキュリティフラグＦが非セキュリティ扱いであることを示している場合には、ＦｅＲＡＭの非セキュリティ領域１２２０において、空き領域（存在フラグが「無効」を示している領域）をシークする（ステップＳ８９３）。ここで、書き込みデータＤを書き込むのに十分な空き領域が存在しない場合には（ステップＳ８９５：Ｎｏルート）、ドライバ１１２３は、エラーを出力して処理を終了する（ステップＳ８９７）。
【０２６０】
一方、書き込みデータＤを書き込むのに十分な空き領域が存在する場合には（ステップＳ８９５：Ｙｅｓルート）、ドライバ１１２３は、シークされた領域における任意の空き領域Ｍを特定して、当該空き領域Ｍに書き込みデータＤを書き込む（ステップＳ８９９）。そして、ドライバ１１２３は、書き込みデータＤを書き込んだ領域Ｍの存在フラグを「無効」から「有効」に変更する（ステップＳ９０１）。
【０２６１】
また、ドライバ１１２３は、論理／物理アドレス変換テーブル１１４１から、ｗｒｉｔｅ命令に含まれる書き込み先論理アドレスＡに対応する、ＦｅＲＡＭ上の物理アドレスＢ及びセキュリティフラグＳを取得するための処理を実施する（ステップＳ９０３）。ここで、物理アドレスＢを論理／物理アドレス変換テーブル１１４１から得られなかった場合には（ステップＳ９０５：Ｎｏルート）、新たなデータ書き込みであるので、端子Ｙを介して図６５のステップＳ９１１に移行する。
【０２６２】
一方、物理アドレスＢを論理／物理アドレス変換テーブル１１４１から得られた場合には（ステップＳ９０５：Ｙｅｓルート）、端子Ｚを介して図６５のステップＳ９０６に移行する。
【０２６３】
図６５の処理の説明に移行して、ドライバ１１２３は、ｗｒｉｔｅ命令に含まれるセキュリティフラグＦがセキュリティ扱いであることを示しているか、及び論理／物理アドレス変換テーブル１１４１から読み出したセキュリティフラグＳがセキュリティ扱いであることを示しているかを判断する（ステップＳ９０６）。いずれの条件も満たされない場合には、ステップＳ９０９に移行する。一方、いずれかの条件が満たされている場合には、ドライバ１１２３は、物理アドレスＢのブロックからデータを読み出す（ステップＳ９０７）。これによって、旧データは全て消去されているので、旧データの情報漏洩はない。なお、このようなデータ読み込みではなく、「０」の書き込みであっても良い。さらに、ドライバ１１２３は、物理アドレスＢの存在フラグを「有効」から「無効」に変更する（ステップＳ９０９）。本例でも、ステップＳ９０７とステップＳ９０９は連続して行われる。ステップＳ９０７を実行することによって仮に読み出し処理が実行されても既に旧データは物理的に読み出し不可能であるが、ステップＳ９０９を実施することによって論理的にも無効で存在しないデータとなって、通常の処理では読み出し不可能となる。
【０２６４】
その後、ドライバ１１２３は、セキュリティフラグＦ又はＳ及び論理アドレスＡに対応する物理アドレスＭを用いて、論理アドレスＡから物理アドレスＭ及びセキュリティフラグＳが取得できるように論理／物理アドレス変換テーブル１１４１を更新する（ステップＳ９１１）。今回設定するセキュリティフラグＳは、処理で用いたセキュリティフラグＦ又はＳのいずれかがセキュリティ扱いを示している場合には、セキュリティ扱いを表すように設定され、そうでない場合には、非セキュリティ扱いを表すように設定される。
【０２６５】
このような処理を実施することによって、ＦｅＲＡＭ上にセキュリティ領域１２１０と非セキュリティ領域１２２０とが設けられている場合においても、セキュリティ領域１２１０へ書き込まれたデータについては、情報漏洩を防止することができるようになる。
【０２６６】
以上の処理を実施することによって、第１の書き込み処理例と同様の効果を得ることができる。なお、第２の書き込み処理例は、第１の書き込み処理例における（ａ）ステップＳ８６３乃至Ｓ８７１と（ｂ）ステップＳ８７３乃至Ｓ８８１の順番を入れ替えた形になっている。いずれにせよ論理／物理アドレス変換テーブル１１４１の更新の前に、情報漏洩に最も重要なステップＳ８６９やＳ９０７を行っている。すなわち、ｗｒｉｔｅ命令の受け付けから論理／物理アドレス変換テーブル１１４１の更新までの一連のデータ書き込み処理に、秘密情報に対するデータ書き換えの後にデータ書き換え前の秘密情報がＦｅＲＡＭ上に残されないようにするための無効化処理が一体化されている。よって、論理／物理アドレス変換テーブル１１４１の更新まで終了していれば、情報漏洩はあり得ないことが保証できる。
【０２６７】
３．削除処理例
第１２の実施の形態における削除処理例を図６６及び図６７を用いて説明する。図６６に削除処理についてのシステム構成図を示す。なお、ＰＣ１１００については図６１と同じである。フラッシュメモリデバイス１２００においては、以下で述べる処理フローにおいて関係する部分が図６１とは異なるように示されている。
【０２６８】
まず、ドライバ１１２３は、アプリケーション・プログラム１１１０から、削除先論理アドレスＡを含む削除命令を受け付ける（ステップＳ９２１）。そして、ドライバ１１２３は、論理／物理アドレス変換テーブル１１４１から、論理アドレスＡに対応する、ＦｅＲＡＭ上の物理アドレスＢ及びセキュリティフラグＳを取得する処理を実施する（ステップＳ９２３）。
【０２６９】
ドライバ１１２３は、セキュリティフラグＳがセキュリティ扱いであることを示しているか判断する（ステップＳ９２５）。セキュリティフラグＳが非セキュリティ扱いであることを示している場合には、ステップＳ９２９に移行する。
【０２７０】
一方、セキュリティフラグＳがセキュリティ扱いであることを表している場合には、ドライバ１１２３は、ステップＳ９２３で取得された物理アドレスＢのブロックからデータを読み出す（ステップＳ９２７）。これによって、旧データは読み出せなくなる。例えば、物理アドレスＢが「０ｘ１０００００００」であれば、図６６に示すように、旧データを全ビット「０」に変更する。なお、「０」を書き込むようにしてもよい。さらに、ドライバ１１２３は、物理アドレスＢの存在フラグを「有効」から「無効」に変更する（ステップＳ９２９）。ステップＳ９２７及びＳ９２９のセットは、ｗｒｉｔｅ命令におけるものと同様である。
【０２７１】
その後、ドライバ１１２３は、論理アドレスＡについてのエントリを、論理／物理アドレス変換テーブル１１４１から削除することによって更新する（ステップＳ９３１）。なお、該当するセキュリティフラグＳについても削除する。
【０２７２】
このように、削除命令についても、論理／物理アドレス変換テーブル１１４１の更新の前に、情報漏洩に最も重要なステップＳ９２７を行っている。すなわち、削除命令の受け付けから論理／物理アドレス変換テーブル１１４１の更新までの一連の削除処理に、削除対象の秘密情報がＦｅＲＡＭ上に残されないようにするための無効化処理が一体化されている。よって、論理／物理アドレス変換テーブル１１４１の更新まで終了していれば、情報漏洩はあり得ないことが保証できる。
【０２７３】
図６１及び図６６において、論理／物理アドレス変換テーブル１１４１は、ＰＣ１１００側のＲＡＭに設けられているが、一部、または全体をＦｅＲＡＭデバイス１２００に設けるようにしても良い。
【０２７４】
また、第１２の実施の形態においては、書き込み処理と書き換え処理を同じ命令で取り扱うようにしているが、書き込み処理と書き換え処理を異なる命令として取り扱うようにしても良い。
【０２７５】
［実施の形態１３］
本実施の形態では、ＦｅＲＡＭをセキュリティ領域として用いる携帯電話機を取り扱う。携帯電話機１３００の構成例を図６８に示す。携帯電話機１３００においては、ＣＰＵ１３０１、ＲＡＭ１３０２、ホストＯＳ１３２０のコード及び制御コードが格納されているＲＯＭ１３０３と、ボタン１３０４と、スピーカ１３０５と、マイク１３０６と、画像処理装置１３０７と、ＦｅＲＡＭ１３２０のためのドライバ１３１０とが接続されており、それらはホストＯＳ１３２０によって制御される。また、画像処理装置１３０７は、表示装置１３０８に接続されており、画像処理装置１３０７の処理結果を表示する。
【０２７６】
ＲＡＭ１３０２には、ホストＯＳ上の論理アドレスとＦｅＲＡＭ上の論理アドレスが登録されている論理／論理アドレス変換テーブル１３１２が格納されている。
【０２７７】
ＦｅＲＡＭ１３２０は、全領域セキュリティ領域となっており、ＦｅＲＡＭ上の論理アドレスと物理アドレスが登録されている論理／物理アドレス変換テーブル１３２１を格納している。また、ＦｅＲＡＭにおいては、所定のサイズのブロック毎に、当該ブロックの状態が存在フラグによって管理されており、当該ブロックに記録されているデータが有効である場合には有効を表す値が、当該ブロックに記録されているデータが無効である場合には無効を表す値が登録されるようになっている。図６８では、説明をしやすくするために、ブロック毎にその先頭物理アドレスを示しており、さらに対応する存在フラグの状態を表している。
【０２７８】
本実施の形態でも、例えば電源オン時に、ＦｅＲＡＭ１３２０上に、ＦｅＲＡＭ１３２０における論理アドレスと物理アドレスの変換テーブルである論理／物理アドレス変換テーブル１３２１を読み込むと共に、読み込んだ情報を基に、ホストＯＳ１３２０上における論理アドレスとＦｅＲＡＭ上の論理アドレスとの変換テーブルである論理／論理アドレス変換テーブル１３１２を生成して、ＲＡＭ１３０２に格納する。この際、論理／物理アドレス変換テーブル１３２１の、ＦｅＲＡＭ上の物理アドレス（図６８の例では、「０ｘ１００１０８００」）を特定しておき、例えばホストＯＳ１３２０上における論理アドレスを割り当てて、両者を論理／論理アドレス変換テーブル１３１２に登録すると共に、ドライバ１３１０にもホストＯＳ１３２０上における論理アドレスを登録しておく。これによって、必要な時にドライバ１３１０は、論理／物理アドレス変換テーブル１３２１の物理アドレスを特定することができるようになる。
【０２７９】
次に、本実施の形態におけるデータ書き換え処理について図６９及び図７０を用いて説明する。まず、制御コード１３０３をＣＰＵ１３０１で実行して、ホストＯＳ１３２０上の論理アドレスＡ（例えば「０ｘ３０００００００」）についてデータＤ（例えば「０ｘ１２３４５６７８」）に書き換える書き換え命令を出力する（ステップＳ９４１）。ホストＯＳ１３２０は、書き換え命令を受け取り、ホストＯＳ１３２０上の論理アドレスＡがＦｅＲＡＭ上のアドレスであると特定し、ドライバ１３１０にホストＯＳ１３２０上の論理アドレスＡについてデータＤに書き換える書き換え命令を出力する（ステップＳ９４３）。なお、予めＦｅＲＡＭに割り当てられた論理アドレスの範囲が予め決まっており且つ制御コード側でもそのような範囲に応じてアクセスすることが保証される場合には、ステップＳ９４３はスキップされる。
【０２８０】
ホストＯＳ１３２０から書き換え命令を受け取ると、ドライバ１３１０は、論理／論理アドレス変換テーブル１３１２から、ＦｅＲＡＭ１３２０上の論理／物理アドレス変換テーブル１３２１の物理アドレスを取得する（ステップＳ９４５）。これによって論理／物理アドレス変換テーブル１３２１を利用することができるようになる。
【０２８１】
そして、ドライバ１３１０は、論理／論理アドレス変換テーブル１３１２及び論理／物理アドレス変換テーブル１３２１から、ホストＯＳ１３２０上の論理アドレスＡ（例えば「０ｘ３０００００００」）に対応する、ＦｅＲＡＭ上の物理アドレスＢ（例えば「０ｘ１０００００００」）を特定する（ステップＳ９４７）。これによって書き換え前の旧データの格納先が分かることになる。
【０２８２】
さらに、ドライバ１３１０は、ＦｅＲＡＭ１３２０において空き領域をシークする（ステップＳ９４９）。書き込みデータＤを書き込むのに十分な空き領域が存在しない場合には（ステップＳ９５１：Ｎｏルート）、ドライバ１３１０は、エラーを出力して処理を終了する（ステップＳ９５３）。
【０２８３】
一方、書き込みデータＤを書き込むのに十分な空き領域が存在する場合には（ステップＳ９５１：Ｙｅｓルート）、端子ＺＡを介して図７０の処理に移行する。
【０２８４】
図７０の処理の説明に移行して、任意の空き領域Ｍ（例えば「０ｘ１００００４００」）を特定し、当該領域ＭにデータＤ（「０ｘ１２３４５６７８」）を書き込み、当該領域Ｍの存在フラグを、「無効」から「有効」に変更する（ステップＳ９５５）。
【０２８５】
さらに、ドライバ１３１０は、ステップＳ９４７で特定された物理アドレスＢ（図６８の例では「０ｘ１０００００００」）のデータを読み出し、物理アドレスＢの存在フラグを「有効」から「無効」に変更する（ステップＳ９５７）。なお、「０」を書き込むような処理を実施しても良い。
【０２８６】
そして、ドライバ１３１０は、論理／物理アドレス変換テーブル１３２１において、ホストＯＳ１３２０上の論理アドレスＡ（「０ｘ３０００００００」）に対応する、ＦｅＲＡＭ上の論理アドレスＸに対応する物理アドレスを、物理アドレスＢ（「０ｘ１０００００００」）から書き込み先領域Ｍの物理アドレス（「０ｘ１００００４００」）に変更する（ステップＳ９５９）。ホストＯＳ１３２０上の論理アドレスＡ（「０ｘ３０００００００」）は、論理／論理アドレス変換テーブル１３１２によって、ＦｅＲＡＭ上の論理アドレスＸに変換されるが、論理／物理アドレス変換テーブル１３２１において論理アドレスＸが書き込み先領域Ｍの物理アドレス（「０ｘ１００００４００」）に対応付けられていれば、問題なくアクセス可能となる。
【０２８７】
以上のように、携帯電話機１３００にＦｅＲＡＭをセキュリティ領域として実装する場合においても、データを書き換える場合には、書き換え命令の受け付けから論理／物理アドレス変換テーブル１３２１の更新までの一連のデータ書き換え処理に、秘密情報に対するデータ書き換えの後にデータ書き換え前の秘密情報がＦｅＲＡＭ上に残されないようにするための無効化処理が一体化されて実施される。よって、論理／物理アドレス変換テーブル１３２１の更新まで終了していれば、情報漏洩はあり得ないことが保証できる。
【０２８８】
次に、図７１を用いて本実施の形態における削除処理について説明する。まず、制御コード１３０３をＣＰＵ１３０１で実行して、ホストＯＳ１３２０上の論理アドレスＡ（例えば「０ｘ３０００００００」）について削除命令を出力する（ステップＳ９７１）。ホストＯＳ１３２０は、削除命令を受け取り、ホストＯＳ１３２０上の論理アドレスＡがＦｅＲＡＭ上のアドレスであると特定し、ドライバ１３１０にホストＯＳ１３２０上の論理アドレスＡについて削除命令を出力する（ステップＳ９７３）。
【０２８９】
ホストＯＳ１３２０から削除命令を受け取ると、ドライバ１３１０は、論理／論理アドレス変換テーブル１３１２から、ＦｅＲＡＭ１３２０上の論理／物理アドレス変換テーブル１３２１の物理アドレスを取得する（ステップＳ９７５）。これによって論理／物理アドレス変換テーブル１３２１を利用することができるようになる。
【０２９０】
そして、ドライバ１３１０は、論理／論理アドレス変換テーブル１３１２及び論理／物理アドレス変換テーブル１３２１から、ホストＯＳ１３２０上の論理アドレスＡ（例えば「０ｘ３０００００００」）に対応する、ＦｅＲＡＭ上の物理アドレスＢ（例えば「０ｘ１０００００００」）を特定する（ステップＳ９７７）。これによって削除対象データの格納先が分かることになる。
【０２９１】
その後、ドライバ１３１０は、ステップＳ９７７で特定された物理アドレスＢのデータを読み出し、当該領域の存在フラグを有効から無効に変更する（ステップＳ９７９）。さらに、ドライバ１３１０は、論理／物理アドレス変換テーブル１３２１において、ホストＯＳ１３２０上の論理アドレスＡ（「０ｘ３０００００００」）に対応する、ＦｅＲＡＭ上の論理アドレスＸについてのエントリを削除することによって、論理／物理アドレス変換テーブル１３２１を更新する（ステップＳ９８１）。
【０２９２】
このような処理を実施すれば、削除されたデータにアクセスできないだけではなく、完全に読み出し不能になっているため、情報漏洩はあり得ない。
【０２９３】
具体的には、削除命令の受け付けから論理／物理アドレス変換テーブル１３２１の更新までの一連のデータ削除処理に、削除対象の秘密情報がＦｅＲＡＭ上に残されないようにするための無効化処理が一体化されて実施される。よって、論理／物理アドレス変換テーブル１３２１の更新まで終了していれば、情報漏洩はあり得ないことが保証できる。
【０２９４】
上では、ＲＡＭ１３０２に、論理／論理アドレス変換テーブル１３１２を格納する例を示したが、一部、または全体をＦｅＲＡＭ１３２０に格納するようにしても良い。論理／物理アドレス変換テーブル１３２１についても、一部、または全体をＲＡＭ１３０２に格納するようにしても良い。さらに、論理／物理アドレス変換テーブル１３２１と論理／論理アドレス変換テーブル１３１２とを統合したようなテーブルを用意するようにしても良い。
【０２９５】
さらに、ＦｅＲＡＭ１３２０において一部の領域を非セキュリティ領域にするようにしてもよい。
【０２９６】
さらに、第９の実施の形態のフラッシュメモリのように、ＦｅＲＡＭについてもコピー機において用いるようにしても良い。さらに、他の機器に用いるようにしても良い。
【０２９７】
以上本技術の実施の形態を説明したが、本技術はこれに限定されるものではない。例えば、上で述べた実施の形態の要素を、組み合わせて実施するようにしても良い。
【０２９８】
また、セキュリティ領域を設ける必要があるフラッシュメモリやＦｅＲＡＭを用いる機器であれば、本技術は適用可能である。また、フラッシュメモリやＦｅＲＡＭと同様の特性を有する他の不揮発性メモリについても、本技術を適用可能である。
【０２９９】
以上述べた本技術の実施の形態をまとめると以下のとおりになる。
【０３００】
本技術に係る不揮発性メモリ・ドライバは、コンピュータに、不揮発性メモリに記録されている秘密情報に対するデータ書き換え又はデータ削除の命令を受け付ける命令受け付けステップと、秘密情報に対するデータ書き換え又はデータ削除の後にデータ書き換え前の秘密情報又はデータ削除の対象である秘密情報が不揮発性メモリ上に残されないようにするための無効化処理を、データ書き換え後の秘密情報にアクセス可能になる前又はデータ削除の対象である秘密情報にアクセスできなくなる前に実施する無効化実施ステップとを実行させるものである。
【０３０１】
上で述べたようなタイミングにて無効化処理を実施することによって、不正に秘密情報を読み出すことができなくなる。
【０３０２】
なお、データ書き換え後の秘密情報にアクセス可能になる前又はデータ削除の対象である秘密情報にアクセスできなくなる前が、上で述べた命令受け付けステップにおいて受け付けた論理アドレスから、データ書き換え後の秘密情報の物理アドレスが取得可能になる前又はデータ削除の対象である秘密情報の物理アドレスが取得不能になる前である場合もある。より具体的には論理／物理アドレス変換テーブル等の物理アドレス取得手段が更新される前ということである。
【０３０３】
また、上で述べた不揮発性メモリが、フラッシュメモリである場合には、上記無効化処理が、データ書き換え前の秘密情報又はデータ削除の対象である秘密情報に対する、消去処理で行われるビット反転とは異なるビット反転処理である場合もある。例えば消去処理が、「０」から「１」にビット反転させる処理である場合には、無効化処理は、「１」から「０」にビット反転させる処理である。
【０３０４】
さらに、不揮発性メモリが、強誘電体メモリである場合には、上記無効化処理が、データ書き換え前の秘密情報又はデータ削除の対象である秘密情報に対する読み出し処理である場合もある。また、明示的に「０」を書き込むようにしてもよい。
【０３０５】
また、上で述べた無効化実施ステップが、データ書き換え前の秘密情報又はデータ削除の対象である秘密情報に対する管理フラグ（例えば存在フラグ）が、有効から無効に変更される前に実施されるようにしてもよい。
【０３０６】
また、上で述べた無効化実施ステップを、命令受け付けステップ以降の一連の処理の中で実施するようにしてもよい。無効化処理をデータ書き換え又はデータ削除とは非同期（又は別スレッド）で行う場合より安全であり且つ処理負荷を下げることができる。
【０３０７】
さらに、不揮発性メモリが、セキュリティ領域と非セキュリティ領域とに分かれている場合には、無効化実施ステップが、命令にセキュリティ指定がある場合、若しくは命令で指定される論理アドレス又は当該論理アドレスから特定される物理アドレスがセキュリティ領域を示している場合に実施されるようにしてもよい。セキュリティ領域と非セキュリティ領域とが設けられる場合においても、問題なく対処できる。
【０３０８】
また、命令で指定される論理アドレス又は当該論理アドレスから特定される物理アドレスがセキュリティ領域であるか否かを表すセキュリティフラグを、不揮発性メモリ・ドライバを実行する装置側又は不揮発性メモリ側で管理するようにしてもよい。セキュリティフラグを管理する方式だけではなく、アドレス範囲を管理する方式も可能である。
【０３０９】
なお、上記のような不揮発性メモリ・ドライバは、例えばフレキシブルディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。また、ネットワークなどを介してデジタル信号として配信される場合もある。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
【０３１０】
（付記１）
不揮発性メモリに記録されている秘密情報に対するデータ書き換え又はデータ削除の命令を受け付ける命令受け付けステップと、
前記秘密情報に対するデータ書き換え又はデータ削除の後に前記データ書き換え前の秘密情報又は前記データ削除の対象である前記秘密情報が前記不揮発性メモリ上に残されないようにするための無効化処理を、前記データ書き換え後の秘密情報にアクセス可能になる前又は前記データ削除の対象である前記秘密情報にアクセスできなくなる前に実施する無効化実施ステップと、
を、コンピュータに実行させるための不揮発性メモリ・ドライバ。
【０３１１】
（付記２）
前記データ書き換え後の秘密情報にアクセス可能になる前又は前記データ削除の対象である前記秘密情報にアクセスできなくなる前が、前記命令受け付けステップにおいて受け付けた論理アドレスから、前記データ書き換え後の秘密情報の物理アドレスが取得可能になる前又は前記データ削除の対象である前記秘密情報の物理アドレスが取得不能になる前である
付記１記載の不揮発性メモリ・ドライバ。
【０３１２】
（付記３）
前記不揮発性メモリが、フラッシュメモリである場合には、
前記無効化処理が、前記データ書き換え前の秘密情報又は前記データ削除の対象である前記秘密情報に対する、消去処理で行われるビット反転とは異なるビット反転処理である
付記１記載の不揮発性メモリ・ドライバ。
【０３１３】
（付記４）
前記不揮発性メモリが、強誘電体メモリである場合には、
前記無効化処理が、前記データ書き換え前の秘密情報又は前記データ削除の対象である前記秘密情報に対する読み出し処理である
付記１記載の不揮発性メモリ・ドライバ。
【０３１４】
（付記５）
前記無効化実施ステップが、前記データ書き換え前の秘密情報又は前記データ削除の対象である前記秘密情報に対する管理フラグが、有効から無効に変更される前に実施される
付記１記載の不揮発性メモリ・ドライバ。
【０３１５】
（付記６）
前記無効化実施ステップを、前記命令受け付けステップ以降の一連の処理の中で実施する
付記１記載の不揮発性メモリ・ドライバ。
【０３１６】
（付記７）
前記不揮発性メモリが、セキュリティ領域と非セキュリティ領域とに分かれており、
前記無効化実施ステップが、前記命令にセキュリティ指定がある場合、若しくは前記命令で指定される論理アドレス又は当該論理アドレスから特定される物理アドレスがセキュリティ領域を示している場合に実施される
付記１記載の不揮発性メモリ・ドライバ。
【０３１７】
（付記８）
前記命令で指定される論理アドレス又は当該論理アドレスから特定される物理アドレスがセキュリティ領域であるか否かを表すセキュリティフラグを、前記不揮発性メモリ・ドライバを実行する装置側又は前記不揮発性メモリ側で管理する
付記７記載の不揮発性メモリ・ドライバ。
【０３１８】
（付記９）
付記１乃至８のいずれか１つ記載の不揮発性メモリ・ドライバを有する装置。
【０３１９】
（付記１０）
不揮発性メモリに記録されている秘密情報に対するデータ書き換え又はデータ削除の命令を受け付ける命令受け付け手段と、
前記秘密情報に対するデータ書き換え又はデータ削除の後に前記データ書き換え前の秘密情報又は前記データ削除の対象である前記秘密情報が前記不揮発性メモリ上に残されないようにするための無効化処理を、前記データ書き換え後の秘密情報にアクセス可能になる前又は前記データ削除の対象である前記秘密情報にアクセスできなくなる前に実施する無効化実施手段と、
を有する不揮発性メモリドライバ装置。
【図面の簡単な説明】
【０３２０】
【図１】本技術の第１の実施の形態における書き込み処理のためのシステム構成図である。
【図２】本技術の第１の実施の形態における第１の書き込み処理の処理フローを示す図である。
【図３】本技術の第１の実施の形態における第１の書き込み処理の処理フローを示す図である。
【図４】本技術の第１の実施の形態における第２の書き込み処理の処理フローを示す図である。
【図５】本技術の第１の実施の形態における第２の書き込み処理の処理フローを示す図である。
【図６】本技術の第１の実施の形態における削除処理のためのシステム構成図である。
【図７】本技術の第１の実施の形態における削除処理の処理フローを示す図である。
【図８】本技術の第１の実施の形態における第３の書き込み処理の処理フローを示す図である。
【図９】本技術の第１の実施の形態における第３の書き込み処理の処理フローを示す図である。
【図１０】本技術の第２の実施の形態における書き込み処理のためのシステム構成図である。
【図１１】本技術の第２の実施の形態における前提処理の処理フローを示す図である。
【図１２】本技術の第２の実施の形態における第１の書き込み処理の処理フローを示す図である。
【図１３】本技術の第２の実施の形態における第１の書き込み処理の処理フローを示す図である。
【図１４】本技術の第２の実施の形態における第２の書き込み処理の処理フローを示す図である。
【図１５】本技術の第２の実施の形態における第２の書き込み処理の処理フローを示す図である。
【図１６Ａ】本技術の第２の実施の形態における削除処理のためのシステム構成図である。
【図１６Ｂ】本技術の第２の実施の形態における削除処理の処理フローを示す図である。
【図１７】本技術の第３の実施の形態における書き込み処理のためのシステム構成図である。
【図１８】本技術の第３の実施の形態における第１の書き込み処理の処理フローを示す図である。
【図１９】本技術の第３の実施の形態における第１の書き込み処理の処理フローを示す図である。
【図２０】本技術の第３の実施の形態における第２の書き込み処理の処理フローを示す図である。
【図２１】本技術の第３の実施の形態における第２の書き込み処理の処理フローを示す図である。
【図２２】本技術の第３の実施の形態における削除処理のためのシステム構成図である。
【図２３】本技術の第３の実施の形態における削除処理の処理フローを示す図である。
【図２４】本技術の第４の実施の形態におけるシステム構成図である。
【図２５】本技術の第４の実施の形態における書き換え処理の処理フローを示す図である。
【図２６】本技術の第４の実施の形態における書き換え処理の処理フローを示す図である。
【図２７】本技術の第４の実施の形態における削除処理の処理フローを示す図である。
【図２８】本技術の第４の実施の形態における削除処理の処理フローを示す図である。
【図２９】本技術の第５の実施の形態におけるシステム構成図である。
【図３０】本技術の第５の実施の形態における書き換え処理の処理フローを示す図である。
【図３１】本技術の第５の実施の形態における書き換え処理の処理フローを示す図である。
【図３２】本技術の第５の実施の形態における削除処理の処理フローを示す図である。
【図３３】本技術の第６の実施の形態におけるシステム構成図である。
【図３４】本技術の第６の実施の形態における書き換え処理の処理フローを示す図である。
【図３５】本技術の第６の実施の形態における書き換え処理の処理フローを示す図である。
【図３６】本技術の第６の実施の形態における削除処理の処理フローを示す図である。
【図３７】本技術の第７の実施の形態におけるシステム構成図である。
【図３８】本技術の第７の実施の形態における書き換え処理の処理フローを示す図である。
【図３９】本技術の第７の実施の形態における書き換え処理の処理フローを示す図である。
【図４０】本技術の第７の実施の形態における削除処理の処理フローを示す図である。
【図４１】本技術の第８の実施の形態におけるシステム構成図を示す図である。
【図４２】本技術の第８の実施の形態における書き換え処理の処理フローを示す図である。
【図４３】本技術の第８の実施の形態における書き換え処理の処理フローを示す図である。
【図４４】本技術の第８の実施の形態における削除処理の処理フローを示す図である。
【図４５】本技術の第９の実施の形態における機器を示す図である。
【図４６】本技術の第１０の実施の形態における書き込み処理のためのシステム構成図である。
【図４７】本技術の第１０の実施の形態における第１の書き込み処理の処理フローを示す図である。
【図４８】本技術の第１０の実施の形態における第１の書き込み処理の処理フローを示す図である。
【図４９】本技術の第１０の実施の形態における第２の書き込み処理の処理フローを示す図である。
【図５０】本技術の第１０の実施の形態における第２の書き込み処理の処理フローを示す図である。
【図５１】本技術の第１０の実施の形態における削除処理のためのシステム構成図である。
【図５２】本技術の第１０の実施の形態における削除処理の処理フローを示す図である。
【図５３】本技術の第１１の実施の形態における書き込み処理のシステム構成図である。
【図５４】本技術の第１１の実施の形態における書き込み処理の前提処理の処理フローを示す図である。
【図５５】本技術の第１１の実施の形態における第１の書き込み処理の処理フローを示す図である。
【図５６】本技術の第１１の実施の形態における第１の書き込み処理の処理フローを示す図である。
【図５７】本技術の第１１の実施の形態における第２の書き込み処理の処理フローを示す図である。
【図５８】本技術の第１１の実施の形態における第２の書き込み処理の処理フローを示す図である。
【図５９】本技術の第１１の実施の形態における削除処理のためのシステム構成図である。
【図６０】本技術の第１１の実施の形態における削除処理の処理フローを示す図である。
【図６１】本技術の第１２の実施の形態における書き込み処理のためのシステム構成図である。
【図６２】本技術の第１２の実施の形態における第１の書き込み換え処理の処理フローを示す図である。
【図６３】本技術の第１２の実施の形態における第１の書き込み処理の処理フローを示す図である。
【図６４】本技術の第１２の実施の形態における第２の書き込み処理の処理フローを示す図である。
【図６５】本技術の第１２の実施の形態における第２の書き込み処理の処理フローを示す図である。
【図６６】本技術の第１２の実施の形態における削除処理のためのシステム構成図である。
【図６７】本技術の第１２の実施の形態における削除処理の処理フローを示す図である。
【図６８】本技術の第１３の実施の形態におけるシステム構成図である。
【図６９】本技術の第１３の実施の形態における書き換え処理の処理フローを示す図である。
【図７０】本技術の第１３の実施の形態における書き換え処理の処理フローを示す図である。
【図７１】本技術の第１３の実施の形態における削除処理の処理フローを示す図である。
【符号の説明】
【０３２１】
１００  ＰＣ    １０  アプリケーション・プログラム
２０  ドライバ    ４０  論理／物理アドレス変換テーブル
２００  フラッシュメモリデバイス
【図１】
2010108315.tif 000003
【図２】
2010108315.tif 000004
【図３】
2010108315.tif 000005
【図４】
2010108315.tif 000006
【図５】
2010108315.tif 000007
【図６】
2010108315.tif 000008
【図７】
2010108315.tif 000009
【図８】
2010108315.tif 000010
【図９】
2010108315.tif 000011
【図１０】
2010108315.tif 000012
【図１１】
2010108315.tif 000013
【図１２】
2010108315.tif 000014
【図１３】
2010108315.tif 000015
【図１４】
2010108315.tif 000016
【図１５】
2010108315.tif 000017
【図１６Ａ】
2010108315.tif 000018
【図１６Ｂ】
2010108315.tif 000019
【図１７】
2010108315.tif 000020
【図１８】
2010108315.tif 000021
【図１９】
2010108315.tif 000022
【図２０】
2010108315.tif 000023
【図２１】
2010108315.tif 000024
【図２２】
2010108315.tif 000025
【図２３】
2010108315.tif 000026
【図２４】
2010108315.tif 000027
【図２５】
2010108315.tif 000028
【図２６】
2010108315.tif 000029
【図２７】
2010108315.tif 000030
【図２８】
2010108315.tif 000031
【図２９】
2010108315.tif 000032
【図３０】
2010108315.tif 000033
【図３１】
2010108315.tif 000034
【図３２】
2010108315.tif 000035
【図３３】
2010108315.tif 000036
【図３４】
2010108315.tif 000037
【図３５】
2010108315.tif 000038
【図３６】
2010108315.tif 000039
【図３７】
2010108315.tif 000040
【図３８】
2010108315.tif 000041
【図３９】
2010108315.tif 000042
【図４０】
2010108315.tif 000043
【図４１】
2010108315.tif 000044
【図４２】
2010108315.tif 000045
【図４３】
2010108315.tif 000046
【図４４】
2010108315.tif 000047
【図４５】
2010108315.tif 000048
【図４６】
2010108315.tif 000049
【図４７】
2010108315.tif 000050
【図４８】
2010108315.tif 000051
【図４９】
2010108315.tif 000052
【図５０】
2010108315.tif 000053
【図５１】
2010108315.tif 000054
【図５２】
2010108315.tif 000055
【図５３】
2010108315.tif 000056
【図５４】
2010108315.tif 000057
【図５５】
2010108315.tif 000058
【図５６】
2010108315.tif 000059
【図５７】
2010108315.tif 000060
【図５８】
2010108315.tif 000061
【図５９】
2010108315.tif 000062
【図６０】
2010108315.tif 000063
【図６１】
2010108315.tif 000064
【図６２】
2010108315.tif 000065
【図６３】
2010108315.tif 000066
【図６４】
2010108315.tif 000067
【図６５】
2010108315.tif 000068
【図６６】
2010108315.tif 000069
【図６７】
2010108315.tif 000070
【図６８】
2010108315.tif 000071
【図６９】
2010108315.tif 000072
【図７０】
2010108315.tif 000073
【図７１】
2010108315.tif 000074