[実施の形態1]
1.第1の書き込み処理例
第1の実施の形態では、フラッシュメモリにおいて全てのメモリ領域がセキュリティを保持すべきセキュリティ領域である場合の例を説明する。
図1に第1の実施の形態における書き込み処理についてのシステム構成図を示す。パーソナルコンピュータ(PC)100では、OS上アプリケーション・プログラム10が実行され、さらにOSの一部としてフラッシュメモリデバイス200のためのドライバ20も実行されている。ドライバ20は、フラッシュメモリデバイス200がPC100に例えばUSBインターフェースを介して接続された時に読み込まれ、且つOS上の論理アドレスとフラッシュメモリ上の物理アドレスとの対応関係を格納する論理/物理アドレス変換テーブル40を用いて、以下に述べるような処理を実施する。論理/物理アドレス変換テーブル40は、様々な構成が可能であるが、ここではOS上の論理アドレスから、フラッシュメモリ上の物理アドレスを特定して出力する機能を実現するものとする。なお、本実施の形態における論理/物理アドレス変換テーブル40の生成については、従来と同じであるから、既に用意されているものとして以下説明する。
フラッシュメモリデバイス200では、所定のサイズのブロック毎に、当該ブロックの状態がフラグ(存在フラグとも呼ぶ)によって管理されており、当該ブロックに記録されているデータが有効である場合には有効を表す値が、当該ブロックに記録されているデータが無効である場合には無効を表す値が、消去処理が実施され全てのビットが「1」になっている消去済を表す値が登録されるようになっている。図1では、説明をしやすくするために、ブロック毎にその先頭物理アドレスを示しており、さらに対応する存在フラグの状態を表している。
次に、図2及び図3を用いて第1の書き込み処理例を説明する。まず、ドライバ20は、アプリケーション・プログラム10から書き込み先論理アドレスA及び書き込みデータDを含むライト(write)命令を受け付ける(ステップS1)。このwrite命令に応答して、ドライバ20は、論理/物理アドレス変換テーブル40から、write命令に含まれる書き込み先論理アドレスAに対応する、フラッシュメモリ上の物理アドレスBを取得するための処理を実施する(ステップS3)。ここで、物理アドレスBを論理/物理アドレス変換テーブル40から得られなかった場合には(ステップS5:Noルート)、新たなデータ書き込みであるので、ステップS11に移行する。
一方、物理アドレスBを論理/物理アドレス変換テーブル40から得られた場合には(ステップS5:Yesルート)、ドライバ20は、物理アドレスBのブロックの全てのビットに「0」を書き込む(ステップS7)。図1の例では、物理アドレスB「0x10000000」が得られて、旧データが全ビット「0」に変更されたことを表している。これによって、旧データは全て消去されているので、旧データの情報漏洩はない。なお、このようなビット反転処理ではなく、可能であれば消去処理を実施するようにしても良い。さらに、ドライバ20は、物理アドレスBの存在フラグを「有効」から「無効」に変更する(ステップS9)。図1でも、物理アドレスB「0x10000000」の存在フラグを、「有効」から「無効」に変更している。ステップS7を実行することによって仮に読み出し処理が実行されても既に旧データは物理的に読み出し不可能であるが、ステップS9を実施することによって論理的にも無効で存在しないデータとなって、通常の処理では読み出し不可能となる。そしてステップS11に移行する。
次に、ドライバ20は、フラッシュメモリ上における空き領域(存在フラグが「消去済み」を示している消去済み領域)をシークする(ステップS11)。ここで、書き込みデータDを書き込むのに十分な消去済み空き領域が存在しない場合には(ステップS13:Noルート)、ドライバ20は、存在フラグが無効を表している無効領域の消去処理を実施する(ステップS15)。消去処理は、背景技術の欄で述べたようにある程度まとまった領域についてビット「0」を「1」に反転させる処理である。その後、ステップS11における消去済み空き領域のシークに戻る。なお、このような処理を実施しても書き込みデータDを書き込むのに十分な消去済み空き領域が得られない場合(すなわち容量不足の場合)には、エラーで処理を終了する。
一方、書き込みデータDを書き込むのに十分な消去済み空き領域が存在する場合には(ステップS13:Yesルート)、ドライバ20は、任意の消去済み空き領域Mを特定して、当該消去済み空き領域Mに書き込みデータDを書き込む(ステップS17)。図1の例では「*」のマーク付きの領域M(物理アドレス「0x10000400」)を特定して、書き込みデータDを書き込む。処理は、端子Aを介して図3の処理に移行する。
図3の処理の説明に移行して、ドライバ20は、書き込みデータDを書き込んだ領域Mの存在フラグを「消去済み」から「有効」に変更する(ステップS19)。図1の例でも、物理アドレス「0x10000400」の存在フラグを、「消去済み」から「有効」に変更している。その後、ドライバ20は、論理アドレスAに対応する物理アドレスM(図1の例では「0x10000400」)を用いて、論理アドレスAから物理アドレスMが取得できるように論理/物理アドレス変換テーブル40を更新する(ステップS21)。
ステップS21を実施することによって、新たにデータDを読み出したりする場合に、論理/物理アドレス変換テーブル40によってフラッシュメモリ上の物理アドレスMを得ることができるので、正しいデータを得られるようになる。また、フラッシュメモリ上、旧データは存在せず且つどこにあったのかも分からなくなる。
2.第2の書き込み処理例
第2の書き込み処理例を、図4及び図5を用いて説明する。なお、システム構成は図1に示したものと同様である。
まず、ドライバ20は、アプリケーション・プログラム10から書き込み先論理アドレスA及び書き込みデータDを含むライト(write)命令を受け付ける(ステップS31)。このwrite命令に応答して、ドライバ20は、フラッシュメモリ上における空き領域(存在フラグが「消去済み」を示している消去済み領域)をシークする(ステップS33)。ここで、書き込みデータDを書き込むのに十分な消去済み空き領域が存在しない場合には(ステップS35:Noルート)、ドライバ20は、存在フラグが無効を表している無効領域の消去処理を実施する(ステップS37)。その後、ステップS33における消去済み空き領域のシークに戻る。なお、このような処理を実施しても書き込みデータDを書き込むのに十分な消去済み空き領域が得られない場合(すなわち容量不足の場合)には、エラーで処理を終了する。
一方、書き込みデータDを書き込むのに十分な消去済み空き領域が存在する場合には(ステップS35:Yesルート)、ドライバ20は、任意の消去済み空き領域Mを特定して、当該消去済み空き領域Mに書き込みデータDを書き込む(ステップS39)。さらに、ドライバ20は、書き込みデータDを書き込んだ領域Mの存在フラグを「消去済み」から「有効」に変更する(ステップS41)。
次に、ドライバ20は、論理/物理アドレス変換テーブル40から、write命令に含まれる書き込み先論理アドレスAに対応する、フラッシュメモリ上の物理アドレスBを取得するための処理を実施する(ステップS43)。ここで、物理アドレスBを論理/物理アドレス変換テーブル40から得られなかった場合には(ステップS45:Noルート)、新たなデータ書き込みであるので、端子Bを介してステップS51に移行する。
一方、物理アドレスBを論理/物理アドレス変換テーブル40から得られた場合には(ステップS45:Yesルート)、ドライバ20は、物理アドレスBのブロックの全てのビットに「0」を書き込む(ステップS47)。これによって、旧データは全て消去されているので、旧データの情報漏洩はない。なお、このようなビット反転処理ではなく、可能であれば消去処理を実施するようにしても良い。さらに、ドライバ20は、物理アドレスBの存在フラグを「有効」から「無効」に変更する(ステップS49)。処理は端子Bを介して図5の処理に移行する。
図5の処理の説明に移行して、ドライバ20は、論理アドレスAに対応する物理アドレスMを用いて、論理アドレスAから物理アドレスMが取得できるように論理/物理アドレス変換テーブル40を更新する(ステップS51)。
以上の処理を実施することによって、第1の書き込み処理例と同様の効果を得ることができる。なお、第2の書き込み処理例は、第1の書き込み処理例における(a)ステップS3乃至S9と(b)ステップS11乃至S19の順番を入れ替えた形になっている。いずれにせよ論理/物理アドレス変換テーブル40の更新の前に、情報漏洩に最も重要なステップS7やS47を行っている。すなわち、write命令の受け付けから論理/物理アドレス変換テーブル40の更新までの一連のデータ書き込み処理に、秘密情報に対するデータ書き換えの後にデータ書き換え前の秘密情報がフラッシュメモリ上に残されないようにするための無効化処理が一体化されている。よって、論理/物理アドレス変換テーブル40の更新まで終了していれば、情報漏洩はあり得ないことが保証できる。
3.削除処理例
第1の実施の形態における削除処理例を図6及び図7を用いて説明する。図6に削除処理についてのシステム構成図を示す。なお、PC100については図1と同じである。フラッシュメモリデバイス200においては、以下で述べる処理フローにおいて関係する部分が図1とは異なるように示されている。
まず、ドライバ20は、アプリケーション・プログラム10から、削除先論理アドレスAを含む削除命令を受け付ける(ステップS61)。そして、ドライバ20は、論理/物理アドレス変換テーブル40から、論理アドレスAに対応する、フラッシュメモリ上の物理アドレスBを取得する処理を実施する(ステップS63)。ここで取得された物理アドレスBのブロックに全ビット「0」を書き込む(ステップS65)。これによって、旧データは読み出せなくなる。例えば、物理アドレスBが「0x10000000」であれば、図6に示すように、旧データを全ビット「0」に変更する。なお、可能であれば消去処理を実施するようにしても良い。さらに、ドライバ20は、物理アドレスBの存在フラグを「有効」から「無効」に変更する(ステップS67)。ステップS65及びS67のセットは、write命令におけるものと同様である。
その後、ドライバ20は、論理アドレスAについてのエントリを、論理/物理アドレス変換テーブル40から削除することによって更新する(ステップS69)。
このように、削除命令についても、論理/物理アドレス変換テーブル40の更新の前に、情報漏洩に最も重要なステップS65を行っている。すなわち、削除命令の受け付けから論理/物理アドレス変換テーブル40の更新までの一連の削除処理に、削除対象の秘密情報がフラッシュメモリ上に残されないようにするための無効化処理が一体化されている。よって、論理/物理アドレス変換テーブル40の更新まで終了していれば、情報漏洩はあり得ないことが保証できる。
図1及び図6において、論理/物理アドレス変換テーブル40は、PC100側のRAMに設けられているが、フラッシュメモリデバイス200に設けるようにしても良い。
4.第3の書き込み処理例
第1及び第2の書き込み処理例をさらに変更することも可能である。第3の書き込み処理例を図8及び図9を用いて説明する。
まず、ドライバ20は、アプリケーション・プログラム10から書き込み先論理アドレスA及び書き込みデータDを含むライト(write)命令を受け付ける(ステップS71)。このwrite命令に応答して、ドライバ20は、論理/物理アドレス変換テーブル40から、write命令に含まれる書き込み先論理アドレスAに対応する、フラッシュメモリ上の物理アドレスBを取得するための処理を実施する(ステップS73)。ここで、物理アドレスBを論理/物理アドレス変換テーブル40から得られなかった場合には(ステップS75:Noルート)、新たなデータ書き込みであるので、ステップS79に移行する。
一方、物理アドレスBを論理/物理アドレス変換テーブル40から得られた場合には(ステップS75:Yesルート)、ドライバ20は、物理アドレスBの存在フラグを「有効」から「無効」に変更する(ステップS77)。これによって旧データは論理的に無効で存在しないデータとなって、通常の処理では読み出し不可能となる。そしてステップS79に移行する。
次に、ドライバ20は、フラッシュメモリ上における空き領域(存在フラグが「消去済み」を示している消去済み領域)をシークする(ステップS79)。ここで、書き込みデータDを書き込むのに十分な消去済み空き領域が存在しない場合には(ステップS81:Noルート)、ドライバ20は、存在フラグが無効を表している無効領域の消去処理を実施する(ステップS83)。その後、ステップS79における消去済み空き領域のシークに戻る。なお、このような処理を実施しても書き込みデータDを書き込むのに十分な消去済み空き領域が得られない場合(すなわち容量不足の場合)には、エラーで処理を終了する。
一方、書き込みデータDを書き込むのに十分な消去済み空き領域が存在する場合には(ステップS81:Yesルート)、ドライバ20は、任意の消去済み空き領域Mを特定して、当該消去済み空き領域Mに書き込みデータDを書き込む(ステップS85)。処理は、端子Cを介して図9の処理に移行する。
図9の処理の説明に移行して、ドライバ20は、物理アドレスBのブロックの全てのビットに「0」を書き込む(ステップS87)。これによって、旧データは全て消去されているので、旧データの情報漏洩はない。なお、このようなビット反転処理ではなく、可能であれば消去処理を実施するようにしても良い。本例では、ステップS87とS77とが分離しても、以下で述べる論理/物理アドレス変換テーブル40の更新までに実施していれば、問題がないことを示している。
さらに、ドライバ20は、書き込みデータDを書き込んだ領域Mの存在フラグを「消去済み」から「有効」に変更する(ステップS89)。その後、ドライバ20は、論理アドレスAに対応する物理アドレスMを用いて、論理アドレスAから物理アドレスMが取得できるように論理/物理アドレス変換テーブル40を更新する(ステップS91)。
ステップS91を実施することによって、新たにデータDを読み出したりする場合に、論理/物理アドレス変換テーブル40によってフラッシュメモリ上の物理アドレスMを得ることができるので、正しいデータを得られるようになる。また、フラッシュメモリ上、旧データがどこにあったのかも分からなくなる。
以上の処理を実施することによって、第1及び第2の書き込み処理例と同様の効果を得ることができる。なお、第3の書き込み処理例は、第1の書き込み処理例における(a)ステップS3乃至S9のグループと(b)ステップS11乃至S19のグループを一部交互に行うようになっている。しかしながら、論理/物理アドレス変換テーブル40の更新の前に、情報漏洩に最も重要なステップS87を行っている。すなわち、write命令の受け付けから論理/物理アドレス変換テーブル40の更新までの一連のデータ書き込み処理に、秘密情報に対するデータ書き換えの後にデータ書き換え前の秘密情報がフラッシュメモリ上に残されないようにするための無効化処理が一体化されている。よって、論理/物理アドレス変換テーブル40の更新まで終了していれば、情報漏洩はあり得ないことが保証できる。
[実施の形態2]
1.第1の書き込み処理例
第2の実施の形態では、フラッシュメモリにおいてセキュリティ領域と非セキュリティ領域とが設けられている第1のケースを説明する。
図10に第2の実施の形態における書き込み処理についてのシステム構成図を示す。PC100では、OS上アプリケーション・プログラム10が実行され、さらにOSの一部としてフラッシュメモリデバイス200のためのドライバ21も実行されている。ドライバ21は、フラッシュメモリデバイス200がPC100に例えばUSBインターフェースを介して接続された時に読み込まれ、生成され且つOS上の論理アドレスとフラッシュメモリ上の物理アドレスとの対応関係を格納する論理/物理アドレス変換テーブル40を用いて、以下で述べるような処理を実施する。本実施の形態では、ドライバ21が、アクセス先がフラッシュメモリ上のセキュリティ領域であるか否かを特定するためのセキュリティ領域データ22を保持している。セキュリティ領域データ22は、例えばセキュリティ領域の論理アドレスの範囲データ、又はセキュリティ領域の物理アドレスの範囲データである。
論理/物理アドレス変換テーブル40は、様々な構成が可能であるが、ここではOS上の論理アドレスから、フラッシュメモリ上の物理アドレスを特定して出力する機能を実現するものとする。
フラッシュメモリデバイス200は、セキュリティ領域210と非セキュリティ領域220とを含む。さらに、フラッシュメモリ上のセキュリティ領域の範囲を特定するためのデータであるセキュリティ領域データ230も格納している。セキュリティ領域210及び非セキュリティ領域220では、所定のサイズのブロック毎に、当該ブロックの状態が存在フラグによって管理されている。図10では、説明をしやすくするために、ブロック毎にその先頭物理アドレスを示しており、さらに対応する存在フラグの状態を表している。
次に、図11を用いて、本実施の形態における第1の書き込み処理例の前提となる処理を説明する。フラッシュメモリデバイス200が、例えばUSBなどを介してPC100に接続されると、ドライバ21が起動され、ドライバ21は、論理/物理アドレス変換テーブル40を周知の方法を用いて生成し、例えばPC100のRAMに格納する(ステップS101)。そして、当該フラッシュメモリ上のセキュリティ領域を特定するためのセキュリティ領域データ230が保持されているか否かでフラッシュメモリ上に領域区分が存在しているか判断する(ステップS103)。領域区分がなければ、本処理を終了する。一方、領域区分が存在すると判断されると、セキュリティ領域データ230を読み出し、当該セキュリティ領域230を用いて、ドライバ21用のセキュリティ領域データ22を生成し、例えばRAMに格納する(ステップS105)。セキュリティ領域データ22は、例えば特定の論理アドレスがセキュリティ領域210内であるか否かを判断する、又は論理/物理アドレス変換テーブル40から得られた物理アドレスがセキュリティ領域210内であるか否かを判断するためのデータである。
次に、図12及び図13を用いて本実施の形態における第1の書き込み処理例を説明する。まず、ドライバ21は、アプリケーション・プログラム10から書き込み先論理アドレスA、書き込みデータD及びセキュリティフラグFを含むライト(write)命令を受け付ける(ステップS111)。セキュリティフラグFは、書き込みデータDがセキュリティ扱いが必要か否かを表す。このwrite命令に応答して、ドライバ21は、論理/物理アドレス変換テーブル40から、write命令に含まれる書き込み先論理アドレスAに対応する、フラッシュメモリ上の物理アドレスBを取得するための処理を実施する(ステップS113)。ここで、物理アドレスBを論理/物理アドレス変換テーブル40から得られなかった場合には(ステップS115:Noルート)、新たなデータ書き込みであるので、ステップS123に移行する。
一方、物理アドレスBを論理/物理アドレス変換テーブル40から得られた場合には(ステップS115:Yesルート)、ドライバ21は、write命令に含まれるセキュリティフラグFがセキュリティ扱いであることを示しているか、及びwrite命令に含まれる論理アドレスA等及びセキュリティ領域データ22に基づきセキュリティ領域210へのアクセスであるかを判断する(ステップS117)。いずれの条件も満たされない場合には、ステップS121に移行する。一方、いずれかの条件が満たされている場合には、ドライバ21は、物理アドレスBのブロックの全てのビットに「0」を書き込む(ステップS119)。図10の例では、物理アドレスB「0x10000000」が得られて、旧データが全ビット「0」に変更されたことを表している。これによって、旧データは全て消去されているので、旧データの情報漏洩はない。なお、このようなビット反転処理ではなく、可能であれば消去処理を実施するようにしても良い。さらに、ドライバ21は、物理アドレスBの存在フラグを「有効」から「無効」に変更する(ステップS121)。本例でも、ステップS119とステップS121は連続して行われる。また、図10でも、物理アドレスB「0x10000000」の存在フラグを、「有効」から「無効」に変更している。ステップS119を実行することによって仮に読み出し処理が実行されても既に旧データは物理的に読み出し不可能であるが、ステップS121を実施することによって論理的にも無効で存在しないデータとなって、通常の処理では読み出し不可能となる。そしてステップS123に移行する。
次に、ドライバ21は、セキュリティフラグFがセキュリティ扱いであることを示している場合又は論理アドレスA等及びセキュリティ領域データ22からセキュリティ領域210へのアクセスであることが分かった場合には、フラッシュメモリのセキュリティ領域210において、セキュリティフラグFが非セキュリティ扱いであることを示している場合又は論理アドレスA等及びセキュリティ領域データ22から非セキュリティ領域220へのアクセスであることが分かった場合には、フラッシュメモリの非セキュリティ領域220において、空き領域(存在フラグが「消去済み」を示している消去済み領域)をシークする(ステップS123)。ここで、書き込みデータDを書き込むのに十分な消去済み空き領域が存在しない場合には(ステップS125:Noルート)、ドライバ21は、存在フラグが無効を表している無効領域の消去処理を実施する(ステップS127)。その後、ステップS123における消去済み空き領域のシークに戻る。なお、このような処理を実施しても書き込みデータDを書き込むのに十分な消去済み空き領域が得られない場合(すなわち容量不足の場合)には、エラーで処理を終了する。一方、書き込みデータDを書き込むのに十分な消去済み空き領域が存在する場合には(ステップS125:Yesルート)、端子Dを介して図13の処理に移行する。
図13の処理の説明に移行して、ドライバ21は、任意の消去済み空き領域Mを特定して、当該消去済み空き領域Mに書き込みデータDを書き込む(ステップS129)。図10の例では「*」のマーク付きの領域M(物理アドレス「0x10000400」)を特定して、書き込みデータDを書き込む。
そして、ドライバ21は、書き込みデータDを書き込んだ領域Mの存在フラグを「消去済み」から「有効」に変更する(ステップS131)。図10の例でも、物理アドレス「0x10000400」の存在フラグを、「消去済み」から「有効」に変更している。その後、ドライバ20は、論理アドレスAに対応する物理アドレスM(図10の例では「0x10000400」)を用いて、論理アドレスAから物理アドレスMが取得できるように論理/物理アドレス変換テーブル40を更新する(ステップS133)。
このような処理を実施することによって、フラッシュメモリ上にセキュリティ領域210と非セキュリティ領域220とが設けられている場合においても、セキュリティ領域210へのデータ書き込みにおいては、情報漏洩を防止することができるようになる。
なお、本実施の形態においても、論理/物理アドレス変換テーブル40の更新の前に、情報漏洩に最も重要なステップS119を行っている。すなわち、write命令の受け付けから論理/物理アドレス変換テーブル40の更新までの一連のデータ書き込み処理に、秘密情報に対するデータ書き換えの後にデータ書き換え前の秘密情報がフラッシュメモリ上に残されないようにするための無効化処理が一体化されている。よって、論理/物理アドレス変換テーブル40の更新まで終了していれば、情報漏洩はあり得ないことが保証できる。
2.第2の書き込み処理例
第2の書き込み処理例を、図14及び図15を用いて説明する。なお、システム構成は図10に示したものと同様である。
まず、ドライバ21は、アプリケーション・プログラム10から書き込み先論理アドレスA、書き込みデータD及びセキュリティフラグFを含むライト(write)命令を受け付ける(ステップS141)。このwrite命令に応答して、ドライバ21は、write命令に含まれるセキュリティフラグFがセキュリティ扱いであることを示している場合又はwrite命令に含まれる論理アドレスA等及びセキュリティ領域データ22からセキュリティ領域210へのアクセスであることが分かった場合には、フラッシュメモリのセキュリティ領域210において、セキュリティフラグFが非セキュリティ扱いであることを示している場合又は論理アドレスA等及びセキュリティ領域データ22から非セキュリティ領域220へのアクセスであることが分かった場合には、フラッシュメモリの非セキュリティ領域220において、空き領域(存在フラグが「消去済み」を示している消去済み領域)をシークする(ステップS143)。ここで、書き込みデータDを書き込むのに十分な消去済み空き領域が存在しない場合には(ステップS145:Noルート)、ドライバ21は、存在フラグが無効を表している無効領域の消去処理を実施する(ステップS147)。その後、ステップS143における消去済み空き領域のシークに戻る。なお、このような処理を実施しても書き込みデータDを書き込むのに十分な消去済み空き領域が得られない場合(すなわち容量不足の場合)には、エラーで処理を終了する。
一方、書き込みデータDを書き込むのに十分な消去済み空き領域が存在する場合には(ステップS145:Yesルート)、ドライバ21は、シークされた領域における任意の消去済み空き領域Mを特定して、当該消去済み空き領域Mに書き込みデータDを書き込む(ステップS149)。そして、ドライバ21は、書き込みデータDを書き込んだ領域Mの存在フラグを「消去済み」から「有効」に変更する(ステップS151)。
また、ドライバ21は、論理/物理アドレス変換テーブル40から、write命令に含まれる書き込み先論理アドレスAに対応する、フラッシュメモリ上の物理アドレスBを取得するための処理を実施する(ステップS153)。ここで、物理アドレスBを論理/物理アドレス変換テーブル40から得られなかった場合には(ステップS155:Noルート)、新たなデータ書き込みであるので、端子Fを介してステップS163に移行する。
一方、物理アドレスBを論理/物理アドレス変換テーブル40から得られた場合には(ステップS155:Yesルート)、端子Eを介して図15のステップS157に移行する。
図15の処理の説明に移行して、ドライバ21は、write命令に含まれるセキュリティフラグFがセキュリティ扱いであることを示しているか、及びwrite命令に含まれる論理アドレスA等及びセキュリティ領域データ22に基づきセキュリティ領域210へのアクセスであるかを判断する(ステップS157)。いずれの条件も満たされない場合には、ステップS161に移行する。一方、いずれかの条件が満たされている場合には、ドライバ21は、物理アドレスBのブロックの全てのビットに「0」を書き込む(ステップS159)。これによって、旧データは全て消去されているので、旧データの情報漏洩はない。なお、このようなビット反転処理ではなく、可能であれば消去処理を実施するようにしても良い。さらに、ドライバ21は、物理アドレスBの存在フラグを「有効」から「無効」に変更する(ステップS161)。本例でも、ステップS159とステップS161は連続して行われる。ステップS159を実行することによって仮に読み出し処理が実行されても既に旧データは物理的に読み出し不可能であるが、ステップS161を実施することによって論理的にも無効で存在しないデータとなって、通常の処理では読み出し不可能となる。
その後、ドライバ21は、論理アドレスAに対応する物理アドレスMを用いて、論理アドレスAから物理アドレスMが取得できるように論理/物理アドレス変換テーブル40を更新する(ステップS163)。
このような処理を実施することによって、フラッシュメモリ上にセキュリティ領域210と非セキュリティ領域220とが設けられている場合においても、セキュリティ領域210へ書き込まれたデータについては、情報漏洩を防止することができるようになる。
以上の処理を実施することによって、第1の書き込み処理例と同様の効果を得ることができる。なお、第2の書き込み処理例は、第1の書き込み処理例における(a)ステップS113乃至S121と(b)ステップS123乃至S131の順番を入れ替えた形になっている。いずれにせよ論理/物理アドレス変換テーブル40の更新の前に、情報漏洩に最も重要なステップS119やS159を行っている。すなわち、write命令の受け付けから論理/物理アドレス変換テーブル40の更新までの一連のデータ書き込み処理に、秘密情報に対するデータ書き換えの後にデータ書き換え前の秘密情報がフラッシュメモリ上に残されないようにするための無効化処理が一体化されている。よって、論理/物理アドレス変換テーブル40の更新まで終了していれば、情報漏洩はあり得ないことが保証できる。
3.削除処理例
第2の実施の形態における削除処理例を図16A及び図16Bを用いて説明する。図16Aに削除処理についてのシステム構成図を示す。なお、PC100については図10と同じである。フラッシュメモリデバイス200においては、以下で述べる処理フローにおいて関係する部分が図10とは異なるように示されている。
まず、ドライバ21は、アプリケーション・プログラム10から、削除先論理アドレスAを含む削除命令を受け付ける(図16B:ステップS171)。そして、ドライバ21は、論理/物理アドレス変換テーブル40から、論理アドレスAに対応する、フラッシュメモリ上の物理アドレスBを取得する処理を実施する(ステップS173)。
ドライバ21は、論理アドレスA又は物理アドレスBでセキュリティ領域データ22を探索して、セキュリティ領域210についてのアドレスであるか判断する(ステップS175)。論理アドレスA又は物理アドレスBがセキュリティ領域210についてのアドレスではない場合にはステップS179に移行する。
一方、論理ドレスA又は物理アドレスBがセキュリティ領域210についてのアドレスである場合には、ステップS173で取得された物理アドレスBのブロックに全ビット「0」を書き込む(ステップS177)。これによって、旧データは読み出せなくなる。例えば、物理アドレスBが「0x10000000」であれば、図16Aに示すように、旧データを全ビット「0」に変更する。なお、可能であれば消去処理を実施するようにしても良い。さらに、ドライバ21は、物理アドレスBの存在フラグを「有効」から「無効」に変更する(ステップS179)。ステップS177及びS179のセットは、write命令におけるものと同様である。
その後、ドライバ21は、論理アドレスAについてのエントリを、論理/物理アドレス変換テーブル40から削除することによって更新する(ステップS181)。
このように、削除命令についても、論理/物理アドレス変換テーブル40の更新の前に、情報漏洩に最も重要なステップS177を行っている。すなわち、削除命令の受け付けから論理/物理アドレス変換テーブル40の更新までの一連の削除処理に、削除対象の秘密情報がフラッシュメモリ上に残されないようにするための無効化処理が一体化されている。よって、論理/物理アドレス変換テーブル40の更新まで終了していれば、情報漏洩はあり得ないことが保証できる。
図10及び図16Aにおいて、論理/物理アドレス変換テーブル40は、PC100側のRAMに設けられているが、フラッシュメモリデバイス200に設けるようにしても良い。
また、第2の実施の形態においては、書き込み処理と書き換え処理を同じ命令で取り扱うようにしているが、書き込み処理と書き換え処理を異なる命令として取り扱うようにしても良い。また、例えばドライブでセキュリティ領域210と非セキュリティ領域220とを区別するようにすればドライブ名でセキュリティ扱い又は非セキュリティ扱いを区別できるので、write命令においてセキュリティフラグFを含めずに、ドライブ指定で処理を区別できる。削除命令が存在せず、書き換え命令で代用することもある。さらに、書き込み、書き換え、削除を一つの命令で行うこともある。
[実施の形態3]
1.第1の書き込み処理例
第3の実施の形態では、フラッシュメモリにおいてセキュリティ領域と非セキュリティ領域とが設けられている第2のケースを説明する。
図17に第3の実施の形態における書き込み処理についてのシステム構成図を示す。PC100では、OS上アプリケーション・プログラム10が実行され、さらにOSの一部としてフラッシュメモリデバイス200のためのドライバ23も実行されている。ドライバ23は、フラッシュメモリデバイス200がPC100に例えばUSBインターフェースを介して接続された時に読み込まれ、且つOS上の論理アドレスとフラッシュメモリ上の物理アドレスとの対応関係を格納する論理/物理アドレス変換テーブル41を用いて、以下で述べるような処理を実施する。
論理/物理アドレス変換テーブル41は、様々な構成が可能であるが、ここではOS上の論理アドレスから、フラッシュメモリ上の物理アドレスを特定して出力する機能を実現するものとする。さらに、本実施の形態では、論理/物理アドレス変換テーブル41において、論理アドレスと物理アドレスとのうち少なくともいずれかに対応して、セキュリティ領域であるか否かを表すセキュリティフラグ42も保持している。
フラッシュメモリデバイス200は、セキュリティ領域210と非セキュリティ領域220とを含む。さらに、フラッシュメモリ上のセキュリティ領域の範囲を特定するためのデータであるセキュリティ領域データ230も格納している。セキュリティ領域210及び非セキュリティ領域220では、所定のサイズのブロック毎に、当該ブロックの状態が存在フラグによって管理されている。図17では、説明をしやすくするために、ブロック毎にその先頭物理アドレスを示しており、さらに対応する存在フラグの状態を表している。
次に、図11で示した前提処理について、本実施の形態との差について説明する。図11の説明では、ステップS105において、領域区分が存在すると判断されると、セキュリティ領域データ22を生成するように説明したが、本実施の形態では、セキュリティ領域データ230から、論理アドレスと物理アドレスとのうち少なくともいずれかに対応して、セキュリティ領域であるか否かを表すセキュリティフラグ42を生成して、論理/物理アドレス変換テーブル41に設定する処理を実施する。以下、このセキュリティフラグ42を用いた処理について説明する。
次に、図18及び図19を用いて本実施の形態における第1の書き込み処理例を説明する。まず、ドライバ23は、アプリケーション・プログラム10から書き込み先論理アドレスA、書き込みデータD及びセキュリティフラグFを含むライト(write)命令を受け付ける(ステップS191)。セキュリティフラグFは、書き込みデータDがセキュリティ扱いが必要か否かを表す。このwrite命令に応答して、ドライバ23は、論理/物理アドレス変換テーブル41から、write命令に含まれる書き込み先論理アドレスAに対応する、フラッシュメモリ上の物理アドレスB及びセキュリティフラグSを取得するための処理を実施する(ステップS193)。ここで、物理アドレスBを論理/物理アドレス変換テーブル41から得られなかった場合には(ステップS195:Noルート)、新たなデータ書き込みであるので、ステップS203に移行する。
一方、物理アドレスBを論理/物理アドレス変換テーブル41から得られた場合には(ステップS195:Yesルート)、ドライバ23は、write命令に含まれるセキュリティフラグFがセキュリティ扱いであることを示しているか、及び論理/物理アドレス変換テーブル41から得られたセキュリティフラグSがセキュリティ扱いであることを示しているかを判断する(ステップS197)。いずれの条件も満たされない場合には、ステップS201に移行する。一方、いずれかの条件が満たされている場合には、ドライバ23は、物理アドレスBのブロックの全てのビットに「0」を書き込む(ステップS199)。図17の例では、物理アドレスB「0x10000000」が得られて、旧データが全ビット「0」に変更されたことを表している。これによって、旧データは全て消去されているので、旧データの情報漏洩はない。なお、このようなビット反転処理ではなく、可能であれば消去処理を実施するようにしても良い。さらに、ドライバ23は、物理アドレスBの存在フラグを「有効」から「無効」に変更する(ステップS201)。本例でも、ステップS199とステップS201は連続して行われる。また、図17でも、物理アドレスB「0x10000000」の存在フラグを、「有効」から「無効」に変更している。ステップS199を実行することによって仮に読み出し処理が実行されても既に旧データは物理的に読み出し不可能であるが、ステップS201を実施することによって論理的にも無効で存在しないデータとなって、通常の処理では読み出し不可能となる。そしてステップS203に移行する。
次に、ドライバ23は、セキュリティフラグF又はセキュリティフラグSがセキュリティ扱いであることを示している場合には、フラッシュメモリのセキュリティ領域210において、セキュリティフラグF又はセキュリティフラグSが非セキュリティ扱いであることを示している場合には、フラッシュメモリの非セキュリティ領域220において、空き領域(存在フラグが「消去済み」を示している消去済み領域)をシークする(ステップS203)。ここで、書き込みデータDを書き込むのに十分な消去済み空き領域が存在しない場合には(ステップS205:Noルート)、ドライバ23は、存在フラグが無効を表している無効領域の消去処理を実施する(ステップS207)。その後、ステップS203における消去済み空き領域のシークに戻る。なお、このような処理を実施しても書き込みデータDを書き込むのに十分な消去済み空き領域が得られない場合(すなわち容量不足の場合)には、エラーで処理を終了する。一方、書き込みデータDを書き込むのに十分な消去済み空き領域が存在する場合には(ステップS205:Yesルート)、端子Gを介して図19の処理に移行する。
図19の処理の説明に移行して、ドライバ23は、セキュリティフラグF又はセキュリティフラグSに応じた領域における任意の消去済み空き領域Mを特定して、当該消去済み空き領域Mに書き込みデータDを書き込む(ステップS209)。図17の例では「*」のマーク付きの領域M(物理アドレス「0x10000400」)を特定して、書き込みデータDを書き込む。
そして、ドライバ23は、書き込みデータDを書き込んだ領域Mの存在フラグを「消去済み」から「有効」に変更する(ステップS211)。図17の例でも、物理アドレス「0x10000400」の存在フラグを、「消去済み」から「有効」に変更している。その後、ドライバ23は、セキュリティフラグF又はS(いずれかがセキュリティ扱いであるか否か)及び論理アドレスAに対応する物理アドレスM(図17の例では「0x10000400」)を用いて、論理アドレスAから物理アドレスM及びセキュリティフラグSが取得できるように論理/物理アドレス変換テーブル41を更新する(ステップS213)。セキュリティフラグSについては、いずれかがセキュリティ扱いを表している場合には、セキュリティ扱いを表すように設定し、そうでない場合には非セキュリティ扱いを表すように設定する。
このような処理を実施することによって、フラッシュメモリ上にセキュリティ領域210と非セキュリティ領域220とが設けられている場合においても、セキュリティ領域210へ書き込まれたデータについては、情報漏洩を防止することができるようになる。
なお、本実施の形態においても、論理/物理アドレス変換テーブル41の更新の前に、情報漏洩に最も重要なステップS199を行っている。すなわち、write命令の受け付けから論理/物理アドレス変換テーブル41の更新までの一連のデータ書き込み処理に、秘密情報に対するデータ書き換えの後にデータ書き換え前の秘密情報がフラッシュメモリ上に残されないようにするための無効化処理が一体化されている。よって、論理/物理アドレス変換テーブル41の更新まで終了していれば、情報漏洩はあり得ないことが保証できる。
2.第2の書き込み処理例
第2の書き込み処理例を、図20及び図21を用いて説明する。なお、システム構成は図17に示したものと同様である。
まず、ドライバ23は、アプリケーション・プログラム10から書き込み先論理アドレスA、書き込みデータD及びセキュリティフラグFを含むライト(write)命令を受け付ける(ステップS221)。このwrite命令に応答して、ドライバ23は、write命令に含まれるセキュリティフラグFがセキュリティ扱いであることを示している場合には、フラッシュメモリのセキュリティ領域210において、セキュリティフラグFが非セキュリティ扱いであることを示している場合には、フラッシュメモリの非セキュリティ領域220において、空き領域(存在フラグが「消去済み」を示している消去済み領域)をシークする(ステップS223)。ここで、書き込みデータDを書き込むのに十分な消去済み空き領域が存在しない場合には(ステップS225:Noルート)、ドライバ23は、存在フラグが無効を表している無効領域の消去処理を実施する(ステップS227)。その後、ステップS223における消去済み空き領域のシークに戻る。なお、このような処理を実施しても書き込みデータDを書き込むのに十分な消去済み空き領域が得られない場合(すなわち容量不足の場合)には、エラーで処理を終了する。
一方、書き込みデータDを書き込むのに十分な消去済み空き領域が存在する場合には(ステップS225:Yesルート)、ドライバ23は、シークされた領域における任意の消去済み空き領域Mを特定して、当該消去済み空き領域Mに書き込みデータDを書き込む(ステップS229)。そして、ドライバ23は、書き込みデータDを書き込んだ領域Mの存在フラグを「消去済み」から「有効」に変更する(ステップS231)。
また、ドライバ23は、論理/物理アドレス変換テーブル41から、write命令に含まれる書き込み先論理アドレスAに対応する、フラッシュメモリ上の物理アドレスB及びセキュリティフラグSを取得するための処理を実施する(ステップS233)。ここで、物理アドレスBを論理/物理アドレス変換テーブル41から得られなかった場合には(ステップS235:Noルート)、新たなデータ書き込みであるので、端子Hを介して図21のステップS243に移行する。
一方、物理アドレスBを論理/物理アドレス変換テーブル41から得られた場合には(ステップS235:Yesルート)、端子Jを介して図21のステップS237に移行する。
図21の処理の説明に移行して、ドライバ23は、write命令に含まれるセキュリティフラグFがセキュリティ扱いであることを示しているか、及び論理/物理アドレス変換テーブル41から読み出したセキュリティフラグSがセキュリティ扱いであることを示しているかを判断する(ステップS237)。いずれの条件も満たされない場合には、ステップS241に移行する。一方、いずれかの条件が満たされている場合には、ドライバ23は、物理アドレスBのブロックの全てのビットに「0」を書き込む(ステップS239)。これによって、旧データは全て消去されているので、旧データの情報漏洩はない。なお、このようなビット反転処理ではなく、可能であれば消去処理を実施するようにしても良い。さらに、ドライバ23は、物理アドレスBの存在フラグを「有効」から「無効」に変更する(ステップS241)。本例でも、ステップS239とステップS241は連続して行われる。ステップS239を実行することによって仮に読み出し処理が実行されても既に旧データは物理的に読み出し不可能であるが、ステップS241を実施することによって論理的にも無効で存在しないデータとなって、通常の処理では読み出し不可能となる。
その後、ドライバ23は、セキュリティフラグF又はS及び論理アドレスAに対応する物理アドレスMを用いて、論理アドレスAから物理アドレスM及びセキュリティフラグSが取得できるように論理/物理アドレス変換テーブル41を更新する(ステップS243)。今回設定するセキュリティフラグSは、処理で用いたセキュリティフラグF又はSのいずれかがセキュリティ扱いを示している場合には、セキュリティ扱いを表すように設定され、そうでない場合には、非セキュリティ扱いを表すように設定される。
このような処理を実施することによって、フラッシュメモリ上にセキュリティ領域210と非セキュリティ領域220とが設けられている場合においても、セキュリティ領域210へ書き込まれたデータについては、情報漏洩を防止することができるようになる。
以上の処理を実施することによって、第1の書き込み処理例と同様の効果を得ることができる。なお、第2の書き込み処理例は、第1の書き込み処理例における(a)ステップS193乃至S201と(b)ステップS203乃至S211の順番を入れ替えた形になっている。いずれにせよ論理/物理アドレス変換テーブル41の更新の前に、情報漏洩に最も重要なステップS199やS239を行っている。すなわち、write命令の受け付けから論理/物理アドレス変換テーブル41の更新までの一連のデータ書き込み処理に、秘密情報に対するデータ書き換えの後にデータ書き換え前の秘密情報がフラッシュメモリ上に残されないようにするための無効化処理が一体化されている。よって、論理/物理アドレス変換テーブル41の更新まで終了していれば、情報漏洩はあり得ないことが保証できる。
なお、本書き込み処理例では、ステップS233をステップS223の前に行うようにしても良い。そうすれば、セキュリティフラグSの確認をステップS223でも行うことができるようになる。
3.削除処理例
第3の実施の形態における削除処理例を図22及び図23を用いて説明する。図22に削除処理についてのシステム構成図を示す。なお、PC100については図17と同じである。フラッシュメモリデバイス200においては、以下で述べる処理フローにおいて関係する部分が図17とは異なるように示されている。
まず、ドライバ23は、アプリケーション・プログラム10から、削除先論理アドレスAを含む削除命令を受け付ける(ステップS251)。そして、ドライバ23は、論理/物理アドレス変換テーブル41から、論理アドレスAに対応する、フラッシュメモリ上の物理アドレスB及びセキュリティフラグSを取得する処理を実施する(ステップS253)。
ドライバ23は、セキュリティフラグSがセキュリティ扱いであることを示しているか判断する(ステップS255)。セキュリティフラグSが非セキュリティ扱いであることを示している場合には、ステップS259に移行する。
一方、セキュリティフラグSがセキュリティ扱いであることを表している場合には、ドライバ23は、ステップS253で取得された物理アドレスBのブロックに全ビット「0」を書き込む(ステップS257)。これによって、旧データは読み出せなくなる。例えば、物理アドレスBが「0x10000000」であれば、図22に示すように、旧データを全ビット「0」に変更する。なお、可能であれば消去処理を実施するようにしても良い。さらに、ドライバ23は、物理アドレスBの存在フラグを「有効」から「無効」に変更する(ステップS259)。ステップS257及びS259のセットは、write命令におけるものと同様である。
その後、ドライバ23は、論理アドレスAについてのエントリを、論理/物理アドレス変換テーブル41から削除することによって更新する(ステップS261)。なお、該当するセキュリティフラグSについても削除する。
このように、削除命令についても、論理/物理アドレス変換テーブル41の更新の前に、情報漏洩に最も重要なステップS257を行っている。すなわち、削除命令の受け付けから論理/物理アドレス変換テーブル41の更新までの一連の削除処理に、削除対象の秘密情報がフラッシュメモリ上に残されないようにするための無効化処理が一体化されている。よって、論理/物理アドレス変換テーブル41の更新まで終了していれば、情報漏洩はあり得ないことが保証できる。
図17及び図22において、論理/物理アドレス変換テーブル41は、PC100側のRAMに設けられているが、フラッシュメモリデバイス200に設けるようにしても良い。
また、第3の実施の形態においては、書き込み処理と書き換え処理を同じ命令で取り扱うようにしているが、書き込み処理と書き換え処理を異なる命令として取り扱うようにしても良い。削除命令が存在せず、書き換え命令で代用することもある。さらに、書き込み、書き換え、削除を一つの命令で行うこともある。
さらに、ドライバが、アプリケーションプログラムから必要なデータを全て含むようなライト命令を1回受け取るような例を示しているが、アプリケーションプログラムが、例えば書き込みデータDを含むライト命令と、書き込み先論理アドレスA及びセキュリティフラグFの指定を含む別の命令とを分けて出力するようにしても良い。この点については他の実施の形態でも同じである。
さらに、アプリケーションプログラムが、セキュリティフラグFがONの指定の時のみ、セキュリティフラグFを含むライト命令を出力し、セキュリティフラグFがOFFの指定の時には従前のライト命令を出力するように変形しても良い。
[実施の形態4]
本実施の形態では、具体的にセキュリティ対応の携帯型フラッシュメモリデバイスを、USBでPCに接続する場合について説明する。図24に本実施の形態における書き換え処理及び削除処理についてのシステム構成図を示す。PC300は、ホストOS320及び当該ホストOS320上でアプリケーション・プログラム310を実行している。ホストOS320は、フラッシュメモリデバイス用のドライバ321と、当該ドライバ321が参照する論理/論理アドレス変換テーブル322とを含む。
また、PC300は、USBインタフェース330を有しており、ドライバ321は、当該USBインタフェース330を介して携帯型フラッシュメモリデバイス400とのやりとりを行う。USBインタフェース330については従来と変わらないのでこれ以上述べない。
携帯型フラッシュメモリデバイス400では、例えばHドライブがセキュリティ領域420であり、Iドライブが非セキュリティ領域430となっている。PC300は、USBインタフェース410を介してフラッシュメモリのセキュリティ領域420及び非セキュリティ領域430にアクセスできるようになっている。また、本実施の形態では、セキュリティ領域420に、論理/物理アドレス変換テーブル421を保持するようになっている。また、フラッシュメモリにおいては、所定のサイズのブロック毎に、当該ブロックの状態が存在フラグによって管理されており、当該ブロックに記録されているデータが有効である場合には有効を表す値が、当該ブロックに記録されているデータが無効である場合には無効を表す値が、消去処理が実施され全てのビットが「1」になっている消去済を表す値が登録されるようになっている。図24では、説明をしやすくするために、ブロック毎にその先頭物理アドレスを示しており、さらに対応する存在フラグの状態を表している。
本実施の形態では、携帯型フラッシュメモリデバイス400を接続した際に、携帯型フラッシュメモリデバイス400のフラッシュメモリ上に、フラッシュメモリにおける論理アドレスと物理アドレスの変換テーブルである論理/物理アドレス変換テーブル421を読み込み、読み込んだ情報を基に、ホストOS320上における論理アドレスとフラッシュメモリ上の論理アドレスとの変換テーブルである論理/論理アドレス変換テーブル322を生成して、PC300のRAM等に格納する。この際、論理/物理アドレス変換テーブル421の、フラッシュメモリ上の物理アドレス(図24の例では、「0x10010800」)を特定しておき、例えばホストOS320上における論理アドレスを割り当てて、両者を論理/論理アドレス変換テーブル322に登録すると共に、ドライバ321にもホストOS320上における論理アドレスを登録しておく。これによって、必要な時にドライバ321は、論理/物理アドレス変換テーブル421の物理アドレスを特定することができるようになる。また、ドライバ321は、携帯型フラッシュメモリデバイス400のフラッシュメモリ上に複数のドライブ(図24ではH及びI)が規定されており、特定のドライブ(ここではHドライブ)がセキュリティ領域であることを特定しておく。
次に、書き換え処理を実施する際の処理フローを図25及び図26を用いて説明する。まず、ホストOS320は、アプリケーション・プログラム310から書き込み先ドライブ名(例えばHドライブ)及びホストOS320上の書き込み先論理アドレスA(例えばホストOS320の論理アドレス「0x30000000」)、並びに書き込みデータD(例えば「0x12345678」)を含む書き換え命令を受け付ける(ステップS271)。この書き換え命令に応答して、ホストOS320は、書き込み先ドライブがフラッシュメモリであることを特定し、ドライバ321に、書き換え命令を出力する(ステップS273)。これに対して、ドライバ321は、書き込み先ドライブ名により、書き込み先ドライブがセキュリティ領域420と非セキュリティ領域430のいずれかであるかを特定する(ステップS275)。図24の例では、Hドライブがセキュリティ領域であることを事前に特定しているので、今回の書き込み先ドライブがHドライブであれば、セキュリティ領域への書き込みであることを特定する。
次に、ドライバ321は、論理/論理アドレス変換テーブル322から、フラッシュメモリ上の論理/物理アドレス変換テーブル421の物理アドレスを取得する(ステップS277)。これによって論理/物理アドレス変換テーブル421を利用することができるようになる。
そして、ドライバ321は、論理/論理アドレス変換テーブル322及び論理/物理アドレス変換テーブル421から、ホストOS320上の論理アドレスA(例えば「0x30000000」)に対応する、フラッシュメモリ上の物理アドレスB(例えば「0x10000000」)を特定する(ステップS279)。これによって書き換え前の旧データの格納先が分かることになる。処理は端子Kを介して図26の処理に移行する。
図26の処理の説明に移行して、書き込み先がセキュリティドライブであれば(ステップS281:Yesルート)、ドライバ321は、物理アドレスB(図24の例では「0x10000000」)に全ビット「0」を書き込む(ステップS283)。一方、書き込み先がセキュリティドライブでなければ(ステップS281:Noルート)、ステップS285に移行する。そして、ドライバ321は、物理アドレスBの存在フラグを「有効」から「無効」に変更する(ステップS285)。
さらに、ドライバ321は、書き込み先ドライブに応じて、当該書き込み先ドライブにおける消去済み空き領域をシークする(ステップS287)。書き込みデータDを書き込むのに十分な消去済み空き領域が存在しない場合には(ステップS289:Noルート)、ドライバ321は、存在フラグが無効を表している無効領域の消去処理を実施する(ステップS290)。消去処理の方法や、実施のタイミングは各種手法が存在しており、本技術において、どのような方式を使用しても問題ない。その後、ステップS287における消去済み空き領域のシークに戻る。なお、このような処理を実施しても書き込みデータDを書き込むのに十分な消去済み空き領域が得られない場合(すなわち容量不足の場合)には、エラーで処理を終了する。一方、書き込みデータDを書き込むのに十分な消去済み空き領域が存在する場合には(ステップS289:Yesルート)、任意の消去済み空き領域M(例えば「0x10000400」)を特定し、当該領域Mに書き込みデータD(「0x12345678」)を書き込む(ステップS291)。さらに、ドライバ321は、書き込みを行った領域M(「0x10000400」)の存在フラグを「消去済み」から「有効」に変更する(ステップS293)。なお、ステップS281乃至S285と、ステップS287乃至S293については、順番を入れ替え可能である。
そして、ドライバ321は、論理/物理アドレス変換テーブル421において、ホストOS320上の論理アドレスA(「0x30000000」)に対応する、フラッシュメモリ上の論理アドレスXに対応する物理アドレスを、物理アドレスB(「0x10000000」)から書き込み先領域Mの物理アドレス(「0x10000400」)に変更する(ステップS295)。ホストOS320上の論理アドレスA(「0x30000000」)は、論理/論理アドレス変換テーブル322によって、フラッシュメモリ上の論理アドレスXに変換されるが、論理/物理アドレス変換テーブル421において論理アドレスXが書き込み先領域Mの物理アドレス(「0x10000400」)に対応付けられていれば、問題なくアクセス可能となる。
以上のように、携帯型フラッシュメモリデバイス400においてドライブによってセキュリティ領域と非セキュリティ領域とが分けられている場合においても、書き換え命令の受け付けから論理/物理アドレス変換テーブル421の更新までの一連のデータ書き換え処理に、秘密情報に対するデータ書き換えの後にデータ書き換え前の秘密情報がフラッシュメモリ上に残されないようにするための無効化処理が一体化されて実施される。よって、論理/物理アドレス変換テーブル421の更新まで終了していれば、情報漏洩はあり得ないことが保証できる。
なお、上で述べた例では、論理/物理アドレス変換テーブル421をセキュリティ領域420に格納していたが、非セキュリティ領域430に一部、または全体を格納するようにしても良いし、PC300のRAM上に一部、または全体を保持するようにしても良い。同様に、論理/論理アドレス変換テーブル322についてもフラッシュメモリ上に一部、または全体を保持するようにしても良い。さらに、論理/論理アドレス変換テーブル322と論理/物理アドレス変換テーブル421をマージしたようなテーブルを用意するようにしても良い。このようなテーブルについても、一部、または全体をPC300のRAM上に保持しても、フラッシュメモリ上に保持しても良い。さらに、Iドライブが無いような構成も可能である。
削除処理の場合には、図27及び図28に示すような処理を実施する。まず、ホストOS320は、アプリケーション・プログラム310から削除対象ドライブ名(例えばHドライブ)及びホストOS320上の削除対象論理アドレスA(例えばホストOS320の論理アドレス「0x30000000」)を含む削除命令を受け付ける(ステップS301)。この削除命令に応答して、ホストOS320は、削除対象ドライブがフラッシュメモリであることを特定し、ドライバ321に、削除命令を出力する(ステップS303)。これに対して、ドライバ321は、指定された削除対象ドライブ名により、削除対象ドライブがセキュリティ領域420と非セキュリティ領域430のいずれかであるかを特定する(ステップS305)。図24の例では、Hドライブがセキュリティ領域であることを事前に特定しているので、今回の書き込み先ドライブがHドライブであれば、セキュリティ領域への書き込みであることを特定する。
次に、ドライバ321は、論理/論理アドレス変換テーブル322から、フラッシュメモリ上の論理/物理アドレス変換テーブル421の物理アドレス(例えば「0x10010800」)を取得する(ステップS307)。これによって論理/物理アドレス変換テーブル421を利用することができるようになる。
そして、ドライバ321は、論理/論理アドレス変換テーブル322及び論理/物理アドレス変換テーブル421から、ホストOS320上の論理アドレスA(例えば「0x30000000」)に対応する、フラッシュメモリ上の物理アドレスB(例えば「0x10000000」)を特定する(ステップS309)。
削除されるデータがセキュリティドライブに格納されていれば(ステップS311:Yesルート)、ドライバ321は、物理アドレスB(図24の例では「0x10000000」)に全ビット「0」を書き込む(ステップS313)。一方、削除されるデータがセキュリティドライブに格納されていなければステップS315に移行する。そして、ドライバ321は、物理アドレスBの存在フラグを「有効」から「無効」に変更する(ステップS315)。処理は端子Lを介して図28の処理に移行する。
図28の処理の説明に移行して、ドライバ321は、ホストOS320上の論理アドレスA(「0x30000000」)に対応する、フラッシュメモリ上の論理アドレスXのエントリを削除することによって、論理/物理アドレス変換テーブル421を更新する(ステップS317)。
このような削除処理を実施することによって、セキュリティ・ドライブのデータを削除する場合には、旧データを消し去るので、情報漏洩を防止することができる。
[実施の形態5]
本実施の形態では、実施の形態4と同様にセキュリティ対応の携帯型フラッシュメモリデバイスを、USBでPCに接続する場合について説明する。但し、実施の形態4とは異なり、ドライブでセキュリティ領域か非セキュリティ領域かを分けるようにはなっていない。図29に本実施の形態における書き換え処理及び削除処理についてのシステム構成図を示す。図24との差は、ドライブの区分けが無くなったので、セキュリティ領域450と、非セキュリティ領域460とが導入された点である。セキュリティ領域450には、論理/物理アドレス変換テーブル451が格納されている。また、ドライバ321は、PC300のメモリ上に、セキュリティ領域をカバーする、ホストOS320上の論理アドレスの範囲データを保持しておく。
次に、書き換え処理を実施する際の処理フローを図30及び図31を用いて説明する。まず、ドライバ321は、アプリケーション・プログラム310からホストOS320上の書き込み先論理アドレスA(例えばホストOS320の論理アドレス「0x30000000」)、セキュリティフラグ及び書き込みデータD(例えば「0x12345678」)を含む書き換え命令を受け付ける(ステップS321)。この書き換え命令に応答して、ドライバ321は、論理/論理アドレス変換テーブル322から、フラッシュメモリ上の論理/物理アドレス変換テーブル451の物理アドレスを取得する(ステップS323)。これによって論理/物理アドレス変換テーブル451を利用することができるようになる。
本実施の形態でも、携帯型フラッシュメモリデバイス400を接続した際に、携帯型フラッシュメモリデバイス400のフラッシュメモリ上に、フラッシュメモリにおける論理アドレスと物理アドレスの変換テーブルである論理/物理アドレス変換テーブル451を読み込むと共に、読み込んだ情報を基に、ホストOS320上における論理アドレスとフラッシュメモリ上の論理アドレスとの変換テーブルである論理/論理アドレス変換テーブル322を生成して、PC300のRAM等に格納しておく。この際、論理/物理アドレス変換テーブル451の、フラッシュメモリ上の物理アドレス(図29の例では、「0x10010800」)を特定しておき、例えばホストOS320上における論理アドレスを割り当てて、両者を論理/論理アドレス変換テーブル322に登録すると共に、ドライバ321にもホストOS320上における論理アドレスを登録しておく。これによって、必要な時にドライバ321は、論理/物理アドレス変換テーブル451の物理アドレスを特定することができるようになる。
そして、ドライバ321は、論理/論理アドレス変換テーブル322及び論理/物理アドレス変換テーブル451から、ホストOS320上の論理アドレスA(例えば「0x30000000」)に対応する、フラッシュメモリ上の物理アドレスB(例えば「0x10000000」)を特定する(ステップS325)。これによって書き換え前の旧データの格納先が分かることになる。
その後、ドライバ321は、アプリケーション・プログラム310から受信したセキュリティフラグFから、又はアプリケーション・プログラム310から指定された、ホストOS320上の論理アドレスAが自ら保持しているセキュリティ領域のアドレス範囲に含まれているか否かに基づき、セキュリティ領域450での書き換え処理であるか判断する(ステップS329)。いずれかが該当すればセキュリティ領域450での書き換え処理であると判断する。非セキュリティ領域460での書き換え処理である場合にはステップS333に移行する。一方、セキュリティ領域450での書き換え処理である場合には、ドライバ321は、物理アドレスB(図29の例では「0x10000000」)に全ビット「0」を書き込む(ステップS331)。
そして、ドライバ321は、物理アドレスBの存在フラグを「有効」から「無効」に変更する(ステップS333)。さらに、ドライバ321は、ステップS329の判断結果に応じてた領域における消去済み空き領域をシークする(ステップS335)。処理は端子Mを介して図31の処理に移行する。
そして、書き込みデータDを書き込むのに十分な消去済み空き領域が存在しない場合には(ステップS337:Noルート)、ドライバ321は、存在フラグが無効を表している無効領域の消去処理を実施する(ステップS339)。その後、端子MAを介してステップS335における消去済み空き領域のシークに戻る。なお、このような処理を実施しても書き込みデータDを書き込むのに十分な消去済み空き領域が得られない場合(すなわち容量不足の場合)には、エラーで処理を終了する。一方、書き込みデータDを書き込むのに十分な消去済み空き領域が存在する場合には(ステップS337:Yesルート)、任意の消去済み空き領域M(例えば「0x10000400」)を特定し、当該領域Mに書き込みデータD(「0x12345678」)を書き込む(ステップS341)。さらに、ドライバ321は、書き込みを行った領域M(「0x10000400」)の存在フラグを「消去済み」から「有効」に変更する(ステップS343)。
そして、ドライバ321は、論理/物理アドレス変換テーブル451において、ホストOS320上の論理アドレスA(「0x30000000」)に対応する、フラッシュメモリ上の論理アドレスXに対応する物理アドレスを、物理アドレスB(「0x10000000」)から書き込み先領域Mの物理アドレスM(「0x10000400」)に変更する(ステップS345)。ホストOS320上の論理アドレスA(「0x30000000」)は、論理/論理アドレス変換テーブル322によって、フラッシュメモリ上の論理アドレスXに変換されるが、論理/物理アドレス変換テーブル451において論理アドレスXが書き込み先領域Mの物理アドレスM(「0x10000400」)に対応付けられていれば、問題なくアクセス可能となる。
以上のように、携帯型フラッシュメモリデバイス400において単にセキュリティ領域と非セキュリティ領域とが分けられている場合においても、書き換え命令の受け付けから論理/物理アドレス変換テーブル451の更新までの一連のデータ書き換え処理に、秘密情報に対するデータ書き換えの後にデータ書き換え前の秘密情報がフラッシュメモリ上に残されないようにするための無効化処理が一体化されて実施される。よって、論理/物理アドレス変換テーブル451の更新まで終了していれば、情報漏洩はあり得ないことが保証できる。
なお、上で述べた例では、論理/物理アドレス変換テーブル451をセキュリティ領域450に格納していたが、一部、または全体を非セキュリティ領域460に格納するようにしても良いし、一部、または全体をPC300のRAM上に保持するようにしても良い。同様に、論理/論理アドレス変換テーブル322についても一部、または全体をフラッシュメモリ上に保持するようにしても良い。さらに、論理/論理アドレス変換テーブル322と論理/物理アドレス変換テーブル421をマージしたようなテーブルを用意するようにしても良い。このようなテーブルについても、一部、または全体をPC300のRAM上に保持しても、フラッシュメモリ上に保持しても良い。非セキュリティ領域460がないような構成も可能である。
削除処理の場合には、図32に示すような処理を実施する。まず、ドライバ321は、アプリケーション・プログラム310からホストOS320上の削除対象論理アドレスA(例えばホストOS320の論理アドレス「0x30000000」)を含む削除命令を受け付ける(ステップS361)。この削除命令に応答して、ドライバ321は、論理/論理アドレス変換テーブル322から、フラッシュメモリ上の論理/物理アドレス変換テーブル451の物理アドレス(例えば「0x10010800」)を取得する(ステップS363)。これによって論理/物理アドレス変換テーブル451を利用することができるようになる。
そして、ドライバ321は、論理/論理アドレス変換テーブル322及び論理/物理アドレス変換テーブル451から、ホストOS320上の論理アドレスA(例えば「0x30000000」)に対応する、フラッシュメモリ上の物理アドレスB(例えば「0x10000000」)を特定する(ステップS365)。
その後、ドライバ321は、指定された削除対象論理アドレスAが、自ら保持しているセキュリティ領域のアドレス範囲に含まれているか否かによってセキュリティ領域450内における削除処理であるか判断する(ステップS367)。削除対象データがセキュリティ領域450に格納されていれば(ステップS367:Yesルート)、ドライバ321は、物理アドレスB(図29の例では「0x10000000」)に全ビット「0」を書き込む(ステップS369)。一方、削除対象データがセキュリティ領域450に格納されていなければステップS371に移行する。そして、ドライバ321は、物理アドレスBの存在フラグを「有効」から「無効」に変更する(ステップS371)。
そして、ドライバ321は、ホストOS320上の論理アドレスA(「0x30000000」)に対応する、フラッシュメモリ上の論理アドレスXのエントリを削除することによって、論理/物理アドレス変換テーブル451を更新する(ステップS373)。
このような削除処理を実施することによって、セキュリティ領450域に格納されているデータを削除する場合には、旧データを消し去るので、情報漏洩を防止することができる。
[実施の形態6]
本実施の形態では、セキュリティ対応の携帯型フラッシュメモリデバイスを、USBでPCに接続する場合の他の例を説明する。図33に本実施の形態における書き換え処理及び削除処理についてのシステム構成図を示す。PC500は、ホストOS520及び当該ホストOS520上でアプリケーション・プログラム510を実行している。ホストOS520は、フラッシュメモリデバイス用のドライバ521と、当該ドライバ521が参照する論理/論理アドレス変換テーブル522とを含む。
また、PC500は、USBインタフェース530を有しており、ドライバ521は、当該USBインタフェース530を介して携帯型フラッシュメモリデバイス600とのやりとりを行う。USBインタフェース530については従来と変わらないのでこれ以上述べない。
携帯型フラッシュメモリデバイス600では、フラッシュメモリ領域620を有する。PC500は、USBインタフェース610を介してフラッシュメモリ領域620にアクセスできるようになっている。また、本実施の形態では、フラッシュメモリ領域620に、論理/物理アドレス変換テーブル621を保持するようになっている。さらに、フラッシュメモリ領域620においては、所定のサイズのブロック毎に、当該ブロックの状態が存在フラグによって管理されており、当該ブロックに記録されているデータが有効である場合には有効を表す値が、当該ブロックに記録されているデータが無効である場合には無効を表す値が、消去処理が実施され全てのビットが「1」になっている消去済を表す値が登録されるようになっている。さらに、本実施の形態ではセキュリティ領域と非セキュリティ領域が連続して確保されてはおらず、ブロック毎にセキュリティ領域(「対象」)か非セキュリティ領域(「非対象」)であるかを表すセキュリティフラグが設定されるようになっている。図33では、説明をしやすくするために、ブロック毎にその先頭物理アドレスを示しており、さらに対応する存在フラグの状態及びセキュリティフラグの状態を表している。
本実施の形態では、携帯型フラッシュメモリデバイス600を接続した際に、携帯型フラッシュメモリデバイス600のフラッシュメモリ上に、フラッシュメモリにおける論理アドレスと物理アドレスの変換テーブルである論理/物理アドレス変換テーブル621を読み込むと共に、読み込んだ情報を基に、ホストOS520上における論理アドレスとフラッシュメモリ上の論理アドレスとの変換テーブルである論理/論理アドレス変換テーブル522を生成して、PC500のRAM等に格納する。この際、論理/物理アドレス変換テーブル621の、フラッシュメモリ上の物理アドレス(図33の例では、「0x10010800」)を特定しておき、例えばホストOS520上における論理アドレスを割り当てて、両者を論理/論理アドレス変換テーブル522に登録すると共に、ドライバ521にもホストOS520上における論理アドレスを登録しておく。これによって、必要な時にドライバ521は、論理/物理アドレス変換テーブル621の物理アドレスを特定することができるようになる。また、ホストOS520は、携帯型フラッシュメモリデバイス600のフラッシュメモリ領域に割り当てられたホストOS520上の論理アドレス範囲を例えばRAM等に保持しておくものとする。
次に、書き換え処理を実施する際の処理フローを図34及び図35を用いて説明する。まず、ホストOS520は、アプリケーション・プログラム510からホストOS520上の書き込み先論理アドレスA(例えばホストOS520の論理アドレス「0x30000000」)及び書き込みデータD(例えば「0x12345678」)を含む書き換え命令を受け付ける(ステップS401)。この書き換え命令に応答して、ホストOS520は、フラッシュメモリ領域620に割り当てられたホストOS520上の論理アドレス範囲から、書き込み先論理アドレスAが、フラッシュメモリ領域620内のアドレスであると特定すると、ドライバ521に、書き換え命令を出力する(ステップS403)。これに対して、ドライバ521は、論理/論理アドレス変換テーブル522から、フラッシュメモリ領域620に格納されている論理/物理アドレス変換テーブル621の物理アドレスを取得する(ステップS405)。これによって論理/物理アドレス変換テーブル621を利用することができるようになる。
そして、ドライバ521は、論理/論理アドレス変換テーブル522及び論理/物理アドレス変換テーブル621から、ホストOS520上の論理アドレスA(例えば「0x30000000」)に対応する、フラッシュメモリ上の物理アドレスB(例えば「0x10000000」)を特定する(ステップS407)。これによって書き換え前の旧データの格納先が分かることになる。
そして、ドライバ521は、フラッシュメモリ領域620における消去済み空き領域をシークする(ステップS409)。書き込みデータDを書き込むのに十分な消去済み空き領域が存在しない場合には(ステップS411:Noルート)、ドライバ521は、存在フラグが無効を表している無効領域の消去処理を実施する(ステップS413)。その後、ステップS409における消去済み空き領域のシークに戻る。なお、このような処理を実施しても書き込みデータDを書き込むのに十分な消去済み空き領域が得られない場合(すなわち容量不足の場合)には、エラーで処理を終了する。一方、書き込みデータDを書き込むのに十分な消去済み空き領域が存在する場合には(ステップS411:Yesルート)、端子Nを介して図35の処理に移行する。
図35の処理の説明に移って、ドライバ521は、任意の消去済み空き領域M(例えば「0x10000400」)を特定し、当該領域Mに書き込みデータD(「0x12345678」)を書き込む(ステップS415)。さらに、ドライバ521は、書き込みを行った領域M(「0x10000400」)の存在フラグを「消去済み」から「有効」に変更する(ステップS417)。
さらに、物理アドレスBのセキュリティフラグがONである場合には(ステップS419:Yesルート)、ドライバ521は、新たな書き込み先領域M(例えば「0x10000400」)のセキュリティフラグをONにセットし(ステップS421)、物理アドレスB(図33の例では「0x10000000」)に全ビット「0」を書き込む(ステップS423)。物理アドレスBについてのセキュリティフラグをOFFにセットするようにしてもよい。そして、ドライバ521は、物理アドレスBの存在フラグを「有効」から「無効」に変更する(ステップS425)。一方、物理アドレスBのセキュリティフラグがOFFである場合には(ステップS419:Noルート)、ステップS425に移行する。
そして、ドライバ521は、論理/物理アドレス変換テーブル621において、ホストOS520上の論理アドレスA(「0x30000000」)に対応する、フラッシュメモリ上の論理アドレスXに対応する物理アドレスを、物理アドレスB(「0x10000000」)から書き込み先領域Mの物理アドレスM(「0x10000400」)に変更する(ステップS427)。ホストOS520上の論理アドレスA(「0x30000000」)は、論理/論理アドレス変換テーブル522によって、フラッシュメモリ上の論理アドレスXに変換されるが、論理/物理アドレス変換テーブル621において論理アドレスXが書き込み先領域Mの物理アドレスM(「0x10000400」)に対応付けられていれば、問題なくアクセス可能となる。
以上のように、携帯型フラッシュメモリデバイス600においてセキュリティ領域と非セキュリティ領域とが連続的に区分されていない場合においても、書き換え命令の受け付けから論理/物理アドレス変換テーブル621の更新までの一連のデータ書き換え処理に、秘密情報に対するデータ書き換えの後にデータ書き換え前の秘密情報がフラッシュメモリ上に残されないようにするための無効化処理が一体化されて実施される。よって、論理/物理アドレス変換テーブル621の更新まで終了していれば、情報漏洩はあり得ないことが保証できる。
なお、上で述べた例では、論理/物理アドレス変換テーブル621をセキュリティフラグがONの領域に格納していたが、一部、または全体をセキュリティフラグがOFFの領域に格納するようにしても良い。PC500のRAM上に一部、または全体を保持するようにしても良い。同様に、論理/論理アドレス変換テーブル522についても一部、または全体をフラッシュメモリ領域620上に保持するようにしても良い。さらに、論理/論理アドレス変換テーブル522と論理/物理アドレス変換テーブル621をマージしたようなテーブルを用意するようにしても良い。このようなテーブルについても、一部、または全体をPC500のRAM上に保持しても、フラッシュメモリ領域620上に保持しても良い。なお、新規データの書き込みの場合には、セキュリティフラグをONにセットする必要がある。
削除処理の場合には、図36に示すような処理を実施する。まず、ホストOS520は、アプリケーション・プログラム510からホストOS520上の削除対象論理アドレスA(例えばホストOS520の論理アドレス「0x30000000」)を含む削除命令を受け付ける(ステップS441)。この削除命令に応答して、ホストOS320は、フラッシュメモリ領域620に割り当てられたホストOS520上の論理アドレス範囲から、削除対象論理アドレスAがフラッシュメモリ領域620内であることを特定し、ドライバ521に、削除命令を出力する(ステップS443)。さらに、ドライバ521は、論理/論理アドレス変換テーブル522から、フラッシュメモリ領域620上の論理/物理アドレス変換テーブル621の物理アドレス(例えば「0x10010800」)を取得する(ステップS445)。これによって論理/物理アドレス変換テーブル621を利用することができるようになる。
そして、ドライバ521は、論理/論理アドレス変換テーブル522及び論理/物理アドレス変換テーブル621から、ホストOS520上の論理アドレスA(例えば「0x30000000」)に対応する、フラッシュメモリ上の物理アドレスB(例えば「0x10000000」)を特定する(ステップS447)。
物理アドレスBについてのセキュリティフラグがONにセットされていれば(ステップS449:Yesルート)、ドライバ521は、物理アドレスB(図33の例では「0x10000000」)に全ビット「0」を書き込む(ステップS451)。さらに、ドライバ521は、物理アドレスBの存在フラグを「有効」から「無効」に変更する(ステップS453)。なお、物理アドレスBについてのセキュリティフラグをOFFにセットしてもよい。一方、物理アドレスBについてのセキュリティフラグがOFFにセットされていれば(ステップS449:Noルート)、ステップS455に移行する。
その後、ドライバ521は、ホストOS520上の論理アドレスA(「0x30000000」)に対応する、フラッシュメモリ上の論理アドレスXのエントリを削除することによって、論理/物理アドレス変換テーブル621を更新する(ステップS455)。
このような削除処理を実施することによって、秘密情報を削除する場合には、旧データを消し去るので、情報漏洩を防止することができる。
[実施の形態7]
本実施の形態では、セキュリティ対応の携帯型フラッシュメモリデバイスを、USBでPCに接続する場合の他の例を説明する。図37に本実施の形態における書き換え処理及び削除処理についてのシステム構成図を示す。図33とほぼ同じ構成であるが、アプリケーション・プログラム510が、フラッシュメモリ領域620に割り当てられている、ホストOS520上の論理アドレス範囲を把握しており、ホストOS520の介在なしに、直接ドライバ521に、フラッシュメモリ620の書き込み、書き換え、削除を命じることができるものとする。なお、前提についても第6の実施の形態と同じである。
次に、書き換え処理を実施する際の処理フローを図38及び図39を用いて説明する。まず、ドライバ521は、アプリケーション・プログラム510からホストOS520上の書き込み先論理アドレスA(例えばホストOS520の論理アドレス「0x30000000」)及び書き込みデータD(例えば「0x12345678」)を含む書き換え命令を受け付ける(ステップS471)。この書き換え命令に応答して、ドライバ521は、論理/論理アドレス変換テーブル522から、フラッシュメモリ領域620に格納されている論理/物理アドレス変換テーブル621の物理アドレスを取得する(ステップS473)。これによって論理/物理アドレス変換テーブル621を利用することができるようになる。
そして、ドライバ521は、論理/論理アドレス変換テーブル522及び論理/物理アドレス変換テーブル621から、ホストOS520上の論理アドレスA(例えば「0x30000000」)に対応する、フラッシュメモリ上の物理アドレスB(例えば「0x10000000」)を特定する(ステップS475)。これによって書き換え前の旧データの格納先が分かることになる。
そして、ドライバ521は、フラッシュメモリ領域620における消去済み空き領域をシークする(ステップS477)。書き込みデータDを書き込むのに十分な消去済み空き領域が存在しない場合には(ステップS479:Noルート)、ドライバ521は、存在フラグが無効を表している無効領域の消去処理を実施する(ステップS481)。その後、ステップS477における消去済み空き領域のシークに戻る。なお、このような処理を実施しても書き込みデータDを書き込むのに十分な消去済み空き領域が得られない場合(すなわち容量不足の場合)には、エラーで処理を終了する。一方、書き込みデータDを書き込むのに十分な消去済み空き領域が存在する場合には(ステップS479:Yesルート)、ドライバ521は、任意の消去済み空き領域M(例えば「0x10000400」)を特定し、当該領域Mに書き込みデータD(「0x12345678」)を書き込む(ステップS483)。さらに、ドライバ521は、書き込みを行った領域M(「0x10000400」)の存在フラグを「消去済み」から「有効」に変更する(ステップS485)。処理は端子Pを介して図39の処理に移行する。
図39の処理の説明に移行して、物理アドレスBのセキュリティフラグがONである場合には(ステップS487:Yesルート)、ドライバ521は、物理アドレスB(図37の例では「0x10000000」)に全ビット「0」を書き込む(ステップS489)。そして、ドライバ521は、物理アドレスBの存在フラグを「有効」から「無効」に変更する(ステップS491)。さらに、ドライバ521は、新たな書き込み先領域M(例えば「0x10000400」)のセキュリティフラグをONにセットする(ステップS493)。なお、物理アドレスBについてのセキュリティフラグをOFFにセットするようにしても良い。一方、物理アドレスBのセキュリティフラグがOFFである場合には(ステップS487:Noルート)、ステップS495に移行する。
そして、ドライバ521は、論理/物理アドレス変換テーブル621において、ホストOS520上の論理アドレスA(「0x30000000」)に対応する、フラッシュメモリ上の論理アドレスXに対応する物理アドレスを、物理アドレスB(「0x10000000」)から書き込み先領域Mの物理アドレスM(「0x10000400」)に変更する(ステップS495)。ホストOS520上の論理アドレスA(「0x30000000」)は、論理/論理アドレス変換テーブル522によって、フラッシュメモリ上の論理アドレスXに変換されるが、論理/物理アドレス変換テーブル621において論理アドレスXが書き込み先領域Mの物理アドレスM(「0x10000400」)に対応付けられていれば、問題なくアクセス可能となる。
以上のように、携帯型フラッシュメモリデバイス600においてセキュリティ領域と非セキュリティ領域とが連続的に区分されていない場合においても、書き換え命令の受け付けから論理/物理アドレス変換テーブル621の更新までの一連のデータ書き換え処理に、秘密情報に対するデータ書き換えの後にデータ書き換え前の秘密情報がフラッシュメモリ上に残されないようにするための無効化処理が一体化されて実施される。よって、論理/物理アドレス変換テーブル621の更新まで終了していれば、情報漏洩はあり得ないことが保証できる。
なお、上で述べた例では、論理/物理アドレス変換テーブル621をセキュリティフラグがONの領域に格納していたが、一部、または全体をセキュリティフラグがOFFの領域に格納するようにしても良い。一部、または全体をPC500のRAM上に保持するようにしても良い。同様に、論理/論理アドレス変換テーブル522についても一部、または全体をフラッシュメモリ領域620上に保持するようにしても良い。さらに、論理/論理アドレス変換テーブル522と論理/物理アドレス変換テーブル621をマージしたようなテーブルを用意するようにしても良い。このようなテーブルについても、一部、または全体をPC500のRAM上に保持しても、フラッシュメモリ領域620上に保持しても良い。また、新規データの書き込みの場合には、セキュリティフラグをONに設定する処理が必要である。
削除処理の場合には、図40に示すような処理を実施する。まず、ドライバ521は、アプリケーション・プログラム510からホストOS520上の削除対象論理アドレスA(例えばホストOS520の論理アドレス「0x30000000」)を含む削除命令を受け付ける(ステップS501)。また、ドライバ521は、論理/論理アドレス変換テーブル522から、フラッシュメモリ領域620上の論理/物理アドレス変換テーブル621の物理アドレス(例えば「0x10010800」)を取得する(ステップS503)。これによって論理/物理アドレス変換テーブル621を利用することができるようになる。
そして、ドライバ521は、論理/論理アドレス変換テーブル522及び論理/物理アドレス変換テーブル621から、ホストOS520上の論理アドレスA(例えば「0x30000000」)に対応する、フラッシュメモリ上の物理アドレスB(例えば「0x10000000」)を特定する(ステップS505)。
物理アドレスBについてのセキュリティフラグがONにセットされていれば(ステップS507:Yesルート)、ドライバ521は、物理アドレスB(図37の例では「0x10000000」)に全ビット「0」を書き込む(ステップS509)。さらに、ドライバ521は、物理アドレスBの存在フラグを「有効」から「無効」に変更する(ステップS511)。なお、物理アドレスBについてのセキュリティフラグをOFFにセットしてもよい。一方、物理アドレスBについてのセキュリティフラグがOFFにセットされていれば(ステップS507:Noルート)、ステップS513に移行する。
その後、ドライバ521は、ホストOS520上の論理アドレスA(「0x30000000」)に対応する、フラッシュメモリ上の論理アドレスXのエントリを削除することによって、論理/物理アドレス変換テーブル621を更新する(ステップS513)。
このような削除処理を実施することによって、秘密情報を削除する場合には、旧データを消し去るので、情報漏洩を防止することができる。
なお、実施の形態7のように、アプリケーション・プログラム510がフラッシュメモリ領域620についての論理アドレスを把握しているのは、主に組み込み型機器の場合が多い。しかし、図37で示したようにPCで実施する場合にもこのような処理を行う場合もある。
[実施の形態8]
本実施の形態では、フラッシュメモリをセキュリティ領域として用いる携帯電話機を取り扱う。携帯電話機700の構成図を図41に示す。携帯電話機700においては、CPU701、RAM702、ホストOS720のコード及び制御コードが格納されているROM703と、ボタン704と、スピーカ705と、マイク706と、画像処理装置707と、フラッシュメモリ720のためのドライバ710とが接続されており、それらはホストOS720によって制御される。また、画像処理装置707は、表示装置708に接続されており、画像処理装置707の処理結果を表示する。
RAM702には、ホストOS上の論理アドレスとフラッシュメモリ上の対応論理アドレスが登録されている論理/論理アドレス変換テーブル712が格納されている。
フラッシュメモリ720は、全領域セキュリティ領域となっており、フラッシュメモリ上の論理アドレスと物理アドレスが登録されている論理/物理アドレス変換テーブル721を格納している。また、フラッシュメモリにおいては、所定のサイズのブロック毎に、当該ブロックの状態が存在フラグによって管理されており、当該ブロックに記録されているデータが有効である場合には有効を表す値が、当該ブロックに記録されているデータが無効である場合には無効を表す値が、消去処理が実施され全てのビットが「1」になっている消去済を表す値が登録されるようになっている。図41では、説明をしやすくするために、ブロック毎にその先頭物理アドレスを示しており、さらに対応する存在フラグの状態を表している。
本実施の形態でも、例えば電源オン時に、フラッシュメモリ720上に、フラッシュメモリ720における論理アドレスと物理アドレスの変換テーブルである論理/物理アドレス変換テーブル721を読み込むと共に、読み込んだ情報を基に、ホストOS720上における論理アドレスとフラッシュメモリ上の論理アドレスとの変換テーブルである論理/論理アドレス変換テーブル712を生成して、携帯電話機700のRAM702に格納する。この際、論理/物理アドレス変換テーブル721の、フラッシュメモリ上の物理アドレス(図41の例では、「0x10010800」)を特定しておき、例えばホストOS720上における論理アドレスを割り当てて、両者を論理/論理アドレス変換テーブル712に登録すると共に、ドライバ710にもホストOS720上における論理アドレスを登録しておく。これによって、必要な時にドライバ710は、論理/物理アドレス変換テーブル721の物理アドレスを特定することができるようになる。
次に、本実施の形態におけるデータ書き換え処理について図42及び図43を用いて説明する。まず、制御コード703をCPU701で実行して、ホストOS720上の論理アドレスA(例えば「0x30000000」)についてデータD(例えば「0x12345678」)に書き換える書き換え命令を出力する(ステップS561)。ホストOS720は、書き換え命令を受け取り、ホストOS720上の論理アドレスAがフラッシュメモリ上のアドレスであると特定し、ドライバ710にホストOS720上の論理アドレスAについてデータDに書き換える書き換え命令を出力する(ステップS563)。
ホストOS720から書き換え命令を受け取ると、ドライバ710は、論理/論理アドレス変換テーブル712から、フラッシュメモリ720上の論理/物理アドレス変換テーブル721の物理アドレスを取得する(ステップS565)。これによって論理/物理アドレス変換テーブル721を利用することができるようになる。
そして、ドライバ710は、論理/論理アドレス変換テーブル722及び論理/物理アドレス変換テーブル721から、ホストOS720上の論理アドレスA(例えば「0x30000000」)に対応する、フラッシュメモリ上の物理アドレスB(例えば「0x10000000」)を特定する(ステップS567)。これによって書き換え前の旧データの格納先が分かることになる。
さらに、ドライバ710は、フラッシュメモリ720において消去済み空き領域をシークする(ステップS569)。書き込みデータDを書き込むのに十分な消去済み空き領域が存在しない場合には(ステップS571:Noルート)、ドライバ710は、存在フラグが無効を表している無効領域の消去処理を実施する(ステップS573)。その後、ステップS569における消去済み空き領域のシークに戻る。なお、このような処理を実施しても書き込みデータDを書き込むのに十分な消去済み空き領域が得られない場合(すなわち容量不足の場合)には、エラーで処理を終了する。
一方、書き込みデータDを書き込むのに十分な消去済み空き領域が存在する場合には(ステップS571:Yesルート)、端子Qを介して図43の処理に移行する。
図43の処理の説明に移行して、任意の消去済み空き領域M(例えば「0x10000400」)を特定し、当該領域MにデータD(「0x12345678」)を書き込み、当該領域Mの存在フラグを、「消去済み」から「有効」に変更する(ステップS575)。
さらに、ドライバ710は、ステップS567で特定された物理アドレスB(図41の例では「0x10000000」)に全ビット「0」を書き込み、物理アドレスBの存在フラグを「有効」から「無効」に変更する(ステップS577)。
そして、ドライバ710は、論理/物理アドレス変換テーブル721において、ホストOS720上の論理アドレスA(「0x30000000」)に対応する、フラッシュメモリ上の論理アドレスXに対応する物理アドレスを、物理アドレスB(「0x10000000」)から書き込み先領域Mの物理アドレス(「0x10000400」)に変更する(ステップS579)。ホストOS720上の論理アドレスA(「0x30000000」)は、論理/論理アドレス変換テーブル712によって、フラッシュメモリ上の論理アドレスXに変換されるが、論理/物理アドレス変換テーブル721において論理アドレスXが書き込み先領域Mの物理アドレス(「0x10000400」)に対応付けられていれば、問題なくアクセス可能となる。
以上のように、携帯電話機700にフラッシュメモリをセキュリティ領域として実装する場合においても、書き換え命令の受け付けから論理/物理アドレス変換テーブル721の更新までの一連のデータ書き換え処理に、秘密情報に対するデータ書き換えの後にデータ書き換え前の秘密情報がフラッシュメモリ上に残されないようにするための無効化処理が一体化されて実施される。よって、論理/物理アドレス変換テーブル721の更新まで終了していれば、情報漏洩はあり得ないことが保証できる。
次に、図44を用いて本実施の形態における削除処理について説明する。まず、制御コード703をCPU701で実行して、ホストOS720上の論理アドレスA(例えば「0x30000000」)について削除命令を出力する(ステップS581)。ホストOS720は、削除命令を受け取り、ホストOS720上の論理アドレスAがフラッシュメモリ上のアドレスであると特定し、ドライバ710にホストOS720上の論理アドレスAについて削除命令を出力する(ステップS583)。
ホストOS720から削除命令を受け取ると、ドライバ710は、論理/論理アドレス変換テーブル712から、フラッシュメモリ720上の論理/物理アドレス変換テーブル721の物理アドレスを取得する(ステップS585)。これによって論理/物理アドレス変換テーブル721を利用することができるようになる。
そして、ドライバ710は、論理/論理アドレス変換テーブル712及び論理/物理アドレス変換テーブル721から、ホストOS320上の論理アドレスA(例えば「0x30000000」)に対応する、フラッシュメモリ上の物理アドレスB(例えば「0x10000000」)を特定する(ステップS587)。これによって削除対象データの格納先が分かることになる。
その後、ドライバ710は、ステップS587で特定された物理アドレスBの領域に全ビット「0」を書き込み、当該領域の存在フラグを有効から無効に変更する(ステップS589)。さらに、ドライバ710は、論理/物理アドレス変換テーブル721において、ホストOS720上の論理アドレスA(「0x30000000」)に対応する、フラッシュメモリ上の論理アドレスXについてのエントリを削除することによって、論理/物理アドレス変換テーブル721を更新する(ステップS591)。
このような処理を実施すれば、削除されたデータにアクセスできないだけではなく、完全に読み出し不能になっているため、情報漏洩はあり得ない。
具体的には、削除命令の受け付けから論理/物理アドレス変換テーブル721の更新までの一連のデータ削除処理に、削除対象の秘密情報がフラッシュメモリ上に残されないようにするための無効化処理が一体化されて実施される。よって、論理/物理アドレス変換テーブル721の更新まで終了していれば、情報漏洩はあり得ないことが保証できる。
上では、RAM702に、論理/論理アドレス変換テーブル712を格納する例を示したが、一部、または全体をフラッシュメモリ720に格納するようにしても良い。論理/物理アドレス変換テーブル721についても、一部、または全体をRAM702に格納するようにしても良い。さらに、論理/物理アドレス変換テーブル721と論理/論理アドレス変換テーブル712とを統合したようなテーブルを用意するようにしても良い。
さらに、フラッシュメモリ720において一部の領域を非セキュリティ領域にするようにしてもよい。また、ドライバ710は、その全部をハードウエアで構成する場合もあれば、一部をハードウエアで構成する場合もある。
[実施の形態9]
第8の実施の形態では、携帯電話機700においてセキュリティ領域を含むフラッシュメモリ720を実装する例を示したが、他の装置に同様な構成でフラッシュメモリを実装するようにしても良い。例えば、図45に示すようなコピー機(コピー及びFAX機能などを有する装置を含む)や携帯型音楽プレーヤなどにおいてセキュリティ保持を必要とするデータを取り扱う場合には、第8の実施の形態において述べたような処理を実施すればよい。なお、これらの機器では、携帯電話機700とは主たる機能は異なるので構成部品は異なるが、フラッシュメモリに係る機能構成は同様である。
[実施の形態10]
実施の形態1乃至9においては不揮発性メモリとしてフラッシュメモリを用いる例を示したが、以下では強誘電体メモリ(FeRAM)を用いる場合を説明する。なお、強誘電体メモリであっても2T2C型などのような、読み込み処理を行っても情報が喪失せずに保持されたままになるタイプの場合には、実施の形態1及至9の方法で行えばよい。この場合、強誘電体メモリであるため、「消去処理」に関する処理は不要となる。
1.第1の書き込み処理例
第10の実施の形態では、FeRAMにおいて全てのメモリ領域がセキュリティを保持すべきセキュリティ領域である場合の例を説明する。
図46に第10の実施の形態における書き込み処理についてのシステム構成図を示す。パーソナルコンピュータ(PC)1100では、OS上アプリケーション・プログラム1110が実行され、さらにOSの一部としてFeRAMデバイス1200のためのドライバ1120も実行されている。ドライバ1120は、FeRAMデバイス1200がPC1100に例えばUSBインターフェースを介して接続された時に読み込まれ、且つOS上の論理アドレスとFeRAM上の物理アドレスとの対応関係を格納する論理/物理アドレス変換テーブル1140を用いて、以下で述べるような処理を実施する。論理/物理アドレス変換テーブル1140は、様々な構成が可能であるが、ここではOS上の論理アドレスから、FeRAM上の物理アドレスを特定して出力する機能を実現するものとする。なお、本実施の形態における論理/物理アドレス変換テーブル1140の生成については、従来と同じであるから、既に用意されているものとして以下説明する。
FeRAMデバイス1200では、所定のサイズのブロック毎に、当該ブロックの状態がフラグ(存在フラグとも呼ぶ)によって管理されており、当該ブロックに記録されているデータが有効である場合には有効を表す値が、当該ブロックに記録されているデータが無効である場合には無効を表す値が、登録されるようになっている。図46では、説明をしやすくするために、ブロック毎にその先頭物理アドレスを示しており、さらに対応する存在フラグの状態を表している。
次に、図47及び図48を用いて第1の書き込み処理例を説明する。まず、ドライバ1120は、アプリケーション・プログラム1110から書き込み先論理アドレスA及び書き込みデータDを含むライト(write)命令を受け付ける(ステップS701)。このwrite命令に応答して、論理/物理アドレス変換テーブル1140から、write命令に含まれる書き込み先論理アドレスAに対応する、FeRAM上の物理アドレスBを取得するための処理を実施する(ステップS703)。ここで、物理アドレスBを論理/物理アドレス変換テーブル1140から得られなかった場合には(ステップS705:Noルート)、新たなデータ書き込みであるので、ステップS711に移行する。
一方、物理アドレスBを論理/物理アドレス変換テーブル1140から得られた場合には(ステップS705:Yesルート)、ドライバ1120は、物理アドレスBからデータを読み出す(ステップS707)。図46の例では、物理アドレスB「0x10000000」が得られて、当該物理アドレスBから旧データを読み出すことによって、旧データが全ビット「0」に変更されたことを表している。これによって、旧データは全て消去されているので、旧データの情報漏洩はない。なお、データの読み出しではなく、「0」書き込みを行うようにしても良い。さらに、ドライバ1120は、物理アドレスBの存在フラグを「有効」から「無効」に変更する(ステップS709)。図46でも、物理アドレスB「0x10000000」の存在フラグを、「有効」から「無効」に変更している。ステップS707を実行することによって仮に読み出し処理が実行されても既に旧データは物理的に読み出し不可能であるが、ステップS709を実施することによって論理的にも無効で存在しないデータとなって、通常の処理では読み出し不可能となる。そしてステップS711に移行する。
次に、ドライバ1120は、FeRAM上における空き領域(存在フラグが「無効」を示している領域)をシークする(ステップS711)。ここで、書き込みデータDを書き込むのに十分な空き領域が存在しない場合には(ステップS713:Noルート)、ドライバ1120は、エラーを出力して、処理を終了する(ステップS715)。FeRAMの場合には、フラッシュメモリとは異なり、存在フラグは「有効」と「無効」だけであり、「消去済み」はないので、存在フラグが「無効」の領域で容量不足の場合には、使用可能な領域はそれ以上に増加することはない。
一方、書き込みデータDを書き込むのに十分な空き領域が存在する場合には(ステップS713:Yesルート)、ドライバ1120は、任意の空き領域Mを特定して、当該空き領域Mに書き込みデータDを書き込む(ステップS717)。図46の例では「*」のマーク付きの領域M(物理アドレス「0x10000400」)を特定して、書き込みデータDを書き込む。処理は、端子Rを介して図48の処理に移行する。
図48の処理の説明に移行して、ドライバ1120は、書き込みデータDを書き込んだ領域Mの存在フラグを「無効」から「有効」に変更する(ステップS719)。図46の例でも、物理アドレスB「0x10000400」の存在フラグを、「無効」から「有効」に変更している。その後、ドライバ1120は、論理アドレスAに対応する物理アドレスM(図1の例では「0x10000400」)を用いて、論理アドレスAから物理アドレスMが取得できるように論理/物理アドレス変換テーブル1140を更新する(ステップS721)。
ステップS721を実施することによって、新たにデータDを読み出したりする場合に、論理/物理アドレス変換テーブル1140によってFeRAM上の物理アドレスMを得ることができるので、正しいデータを得られるようになる。また、FeRAM上、旧データがどこにあったのかも分からなくなる。
2.第2の書き込み処理例
第2の書き込み処理例を、図49及び図50を用いて説明する。なお、システム構成は図46に示したものと同様である。
まず、ドライバ1120は、アプリケーション・プログラム1110から書き込み先論理アドレスA及び書き込みデータDを含むライト(write)命令を受け付ける(ステップS731)。このwrite命令に応答して、ドライバ1120は、FeRAM上における空き領域(存在フラグが「無効」を示している領域)をシークする(ステップS733)。ここで、書き込みデータDを書き込むのに十分な空き領域が存在しない場合には(ステップS735:Noルート)、ドライバ1120は、エラーを出力して、処理を終了する(ステップS737)。
一方、書き込みデータDを書き込むのに十分な空き領域が存在する場合には(ステップS735:Yesルート)、ドライバ1120は、任意の空き領域Mを特定して、当該空き領域Mに書き込みデータDを書き込む(ステップS739)。さらに、ドライバ1120は、書き込みデータDを書き込んだ領域Mの存在フラグを「無効」から「有効」に変更する(ステップS741)。
次に、ドライバ1120は、論理/物理アドレス変換テーブル1140から、write命令に含まれる書き込み先論理アドレスAに対応する、FeRAM上の物理アドレスBを取得するための処理を実施する(ステップS743)。ここで、物理アドレスBを論理/物理アドレス変換テーブル1140から得られなかった場合には(ステップS745:Noルート)、新たなデータ書き込みであるので、端子Sを介して図50のステップS751に移行する。
一方、物理アドレスBを論理/物理アドレス変換テーブル1140から得られた場合には(ステップS745:Yesルート)、ドライバ1120は、物理アドレスBからデータを読み出す(ステップS747)。これによって、旧データは全て消去されているので、旧データの情報漏洩はない。なお、データ読み込みではなく、「0」を書き込むようにしても良い。さらに、ドライバ1120は、物理アドレスBの存在フラグを「有効」から「無効」に変更する(ステップS749)。処理は端子Sを介して図50の処理に移行する。
図50の処理の説明に移行して、ドライバ1120は、論理アドレスAに対応する物理アドレスMを用いて、論理アドレスAから物理アドレスMが取得できるように論理/物理アドレス変換テーブル1140を更新する(ステップS751)。
以上の処理を実施することによって、第1の書き込み処理例と同様の効果を得ることができる。なお、第2の書き込み処理例は、第1の書き込み処理例における(a)ステップS703乃至S709と(b)ステップS711乃至S719の順番を入れ替えた形になっている。いずれにせよ論理/物理アドレス変換テーブル1140の更新の前に、情報漏洩に最も重要なステップS707やS747を行っている。すなわち、write命令の受け付けから論理/物理アドレス変換テーブル1140の更新までの一連のデータ書き込み処理に、秘密情報に対するデータ書き換えの後にデータ書き換え前の秘密情報がFeRAM上に残されないようにするための無効化処理が一体化されている。よって、論理/物理アドレス変換テーブル1140の更新まで終了していれば、情報漏洩はあり得ないことが保証できる。
3.削除処理例
第1の実施の形態における削除処理例を図51及び図52を用いて説明する。図51に削除処理についてのシステム構成図を示す。なお、PC1100については図46と同じである。FeRAMデバイス1200においては、以下で述べる処理フローにおいて関係する部分が図46とは異なるように示されている。
まず、ドライバ1120は、アプリケーション・プログラム1110から、削除先論理アドレスAを含む削除命令を受け付ける(ステップS761)。そして、ドライバ1120は、論理/物理アドレス変換テーブル1140から、論理アドレスAに対応する、FeRAM上の物理アドレスBを取得する処理を実施する(ステップS763)。ここで取得された物理アドレスBのブロックからデータを読み出す(ステップS765)。これによって、旧データは読み出せなくなる。例えば、物理アドレスBが「0x10000000」であれば、図51に示すように、旧データを読み出すことによって全ビットを「0」に変更する。なお、「0」を書き込むようにしても良い。さらに、ドライバ1120は、物理アドレスBの存在フラグを「有効」から「無効」に変更する(ステップS767)。ステップS765及びS767のセットは、write命令におけるものと同様である。
その後、ドライバ1120は、論理アドレスAについてのエントリを、論理/物理アドレス変換テーブル1140から削除することによって更新する(ステップS769)。
このように、削除命令についても、論理/物理アドレス変換テーブル1140の更新の前に、情報漏洩に最も重要なステップS765を行っている。すなわち、削除命令の受け付けから論理/物理アドレス変換テーブル1140の更新までの一連の削除処理に、削除対象の秘密情報がFeRAM上に残されないようにするための無効化処理が一体化されている。よって、論理/物理アドレス変換テーブル1140の更新まで終了していれば、情報漏洩はあり得ないことが保証できる。
図46及び図51において、論理/物理アドレス変換テーブル1140は、PC1100側のRAMに設けられているが、一部、または全体をFeRAMデバイス1200に設けるようにしても良い。
[実施の形態11]
1.第1の書き込み処理例
第11の実施の形態では、FeRAMにおいてセキュリティ領域と非セキュリティ領域とが設けられている第1のケースを説明する。
図53に第11の実施の形態における書き込み処理についてのシステム構成図を示す。PC1100では、OS上アプリケーション・プログラム1110が実行され、さらにOSの一部としてFeRAMデバイス1200のためのドライバ1121も実行されている。ドライバ1121は、FeRAMデバイス1200がPC1100に例えばUSBインターフェースを介して接続された時に生成され且つOS上の論理アドレスとFeRAM上の物理アドレスとの対応関係を格納する論理/物理アドレス変換テーブル1140を用いて、以下で述べるような処理を実施する。本実施の形態では、アクセス先がFeRAM上のセキュリティ領域であるか否かを特定するためのセキュリティ領域データ1122を保持している。セキュリティ領域データ1122は、例えばセキュリティ領域の論理アドレスの範囲データ、又はセキュリティ領域の物理アドレスの範囲データである。
論理/物理アドレス変換テーブル1140は、様々な構成が可能であるが、ここではOS上の論理アドレスから、FeRAM上の物理アドレスを特定して出力する機能を実現するものとする。
FeRAMデバイス1200は、セキュリティ領域1210と非セキュリティ領域1220とを含む。さらに、FeRAM上のセキュリティ領域の範囲を特定するためのデータであるセキュリティ領域データ1230も格納している。セキュリティ領域1210及び非セキュリティ領域1220では、所定のサイズのブロック毎に、当該ブロックの状態が存在フラグによって管理されている。図53では、説明をしやすくするために、ブロック毎にその先頭物理アドレスを示しており、さらに対応する存在フラグの状態を表している。
次に、図54を用いて、第1の書き込み処理例の前提となる処理を説明する。FeRAMデバイス1200が、例えばUSBなどを介してPC1100に接続されると、ドライバ1121が起動され、ドライバ1121は、周知の方法を用いて生成された論理/物理アドレス変換テーブル1140を、例えばPC1100のRAMに格納する(ステップS771)。そして、当該FeRAM上のセキュリティ領域を特定するためのセキュリティ領域データ1230が保持されているか否かでFeRAM上に領域区分が存在しているか判断する(ステップS773)。領域区分がなければ、本処理を終了する。一方、領域区分が存在すると判断されると、セキュリティ領域データ1230を読み出し、当該セキュリティ領域1230を用いて、ドライバ1121用のセキュリティ領域データ1122を生成し、例えばRAMに格納する(ステップS775)。セキュリティ領域データ1122は、例えば特定の論理アドレスがセキュリティ領域1210内であるか否かを判断する、又は論理/物理アドレス変換テーブル1140から得られた物理アドレスがセキュリティ領域1210内であるか否かを判断するためのデータである。
次に、図55及び図56を用いて本実施の形態における第1の書き込み処理例を説明する。まず、ドライバ1121は、アプリケーション・プログラム1110から書き込み先論理アドレスA、書き込みデータD及びセキュリティフラグFを含むライト(write)命令を受け付ける(ステップS781)。セキュリティフラグFは、書き込みデータDがセキュリティ保持が必要か否かを表す。このwrite命令に応答して、ドライバ1121は、論理/物理アドレス変換テーブル1140から、write命令に含まれる書き込み先論理アドレスAに対応する、FeRAM上の物理アドレスBを取得するための処理を実施する(ステップS783)。ここで、物理アドレスBを論理/物理アドレス変換テーブル1140から得られなかった場合には(ステップS785:Noルート)、新たなデータ書き込みであるので、ステップS793に移行する。
一方、物理アドレスBを論理/物理アドレス変換テーブル1140から得られた場合には(ステップS785:Yesルート)、ドライバ1121は、write命令に含まれるセキュリティフラグFがセキュリティ扱いであることを示しているか、及びwrite命令に含まれる論理アドレスA等及びセキュリティ領域データ1122に基づきセキュリティ領域1210へのアクセスであるかを判断する(ステップS787)。いずれの条件も満たされない場合には、ステップS791に移行する。一方、いずれかの条件が満たされている場合には、ドライバ1121は、物理アドレスBのブロックからデータを読み出す(ステップS789)。図53の例では、物理アドレスB「0x10000000」が得られて、旧データを読み出すことによって、全ビットを「0」に変更することを表している。これによって、旧データは全て消去されているので、旧データの情報漏洩はない。なお、このようなデータ読み込みではなく、「0」を書き込むようにしてもよい。さらに、ドライバ1121は、物理アドレスBの存在フラグを「有効」から「無効」に変更する(ステップS791)。本例でも、ステップS789とステップS791は連続して行われる。また、図53でも、物理アドレスB「0x10000000」の存在フラグを、「有効」から「無効」に変更している。ステップS789を実行することによって仮に読み出し処理が実行されても既に旧データは物理的に読み出し不可能であるが、ステップS791を実施することによって論理的にも無効で存在しないデータとなって、通常の処理では読み出し不可能となる。そしてステップS793に移行する。
次に、ドライバ1121は、セキュリティフラグFがセキュリティ扱いであることを示している場合又はセキュリティ領域データ1122からセキュリティ領域1210へのアクセスであることが分かった場合には、FeRAMのセキュリティ領域1210において、セキュリティフラグFが非セキュリティ扱いであることを示している場合又はセキュリティ領域データ1122から非セキュリティ領域1220へのアクセスであることが分かった場合には、FeRAMの非セキュリティ領域1220において、空き領域(存在フラグが「無効」を示している領域)をシークする(ステップS793)。ここで、書き込みデータDを書き込むのに十分な空き領域が存在しない場合には(ステップS795:Noルート)、ドライバ1121は、エラーを出力して、処理を終了する(ステップS797)。一方、書き込みデータDを書き込むのに十分な空き領域が存在する場合には(ステップS795:Yesルート)、端子Tを介して図56の処理に移行する。
図56の処理の説明に移行して、ドライバ1121は、任意の空き領域Mを特定して、当該空き領域Mに書き込みデータDを書き込む(ステップS799)。図53の例では「*」のマーク付きの領域(物理アドレス「0x10000400」)を特定して、書き込みデータDを書き込む。
そして、ドライバ1121は、書き込みデータDを書き込んだ領域Mの存在フラグを「無効」から「有効」に変更する(ステップS801)。図53の例でも、物理アドレス「0x10000400」の存在フラグを、「無効」から「有効」に変更している。その後、ドライバ1121は、論理アドレスAに対応する物理アドレスM(図53の例では「0x10000400」)を用いて、論理アドレスAから物理アドレスMが取得できるように論理/物理アドレス変換テーブル1140を更新する(ステップS803)。
このような処理を実施することによって、FeRAM上にセキュリティ領域1210と非セキュリティ領域1220とが設けられている場合においても、セキュリティ領域1210へのデータ書き込みにおいては、情報漏洩を防止することができるようになる。
なお、本実施の形態においても、論理/物理アドレス変換テーブル1140の更新の前に、情報漏洩に最も重要なステップS789を行っている。すなわち、write命令の受け付けから論理/物理アドレス変換テーブル1140の更新までの一連のデータ書き込み処理に、秘密情報に対するデータ書き換えの後にデータ書き換え前の秘密情報がFeRAM上に残されないようにするための無効化処理が一体化されている。よって、論理/物理アドレス変換テーブル1140の更新まで終了していれば、情報漏洩はあり得ないことが保証できる。
2.第2の書き込み処理例
第2の書き込み処理例を、図57及び図58を用いて説明する。なお、システム構成は図53に示したものと同様である。
まず、ドライバ1121は、アプリケーション・プログラム1110から書き込み先論理アドレスA、書き込みデータD及びセキュリティフラグFを含むライト(write)命令を受け付ける(ステップS811)。このwrite命令に応答して、ドライバ1121は、write命令に含まれるセキュリティフラグFがセキュリティ扱いであることを示している場合又はwrite命令に含まれる論理アドレスA等及びセキュリティ領域データ1122からセキュリティ領域1210へのアクセスであることが分かった場合には、FeRAMのセキュリティ領域1210において、セキュリティフラグFが非セキュリティ扱いであることを示している場合又は論理アドレスA等及びセキュリティ領域データ1122から非セキュリティ領域1220へのアクセスであることが分かった場合には、FeRAMの非セキュリティ領域1220において、空き領域(存在フラグが「無効」を示している領域)をシークする(ステップS813)。ここで、書き込みデータDを書き込むのに十分な空き領域が存在しない場合には(ステップS815:Noルート)、ドライバ1121は、エラーを出力して、処理を終了する(ステップS817)。
一方、書き込みデータDを書き込むのに十分な空き領域が存在する場合には(ステップS815:Yesルート)、ドライバ1121は、シークされた領域における任意の空き領域Mを特定して、当該空き領域Mに書き込みデータDを書き込む(ステップS819)。そして、ドライバ1121は、書き込みデータDを書き込んだ領域Mの存在フラグを「無効」から「有効」に変更する(ステップS821)。
また、ドライバ1121は、論理/物理アドレス変換テーブル1140から、write命令に含まれる書き込み先論理アドレスAに対応する、FeRAM上の物理アドレスBを取得するための処理を実施する(ステップS823)。ここで、物理アドレスBを論理/物理アドレス変換テーブル1140から得られなかった場合には(ステップS825:Noルート)、新たなデータ書き込みであるので、端子Vを介して図58のステップS833に移行する。
一方、物理アドレスBを論理/物理アドレス変換テーブル1140から得られた場合には(ステップS825:Yesルート)、端子Uを介して図58のステップS827に移行する。
図58の処理の説明に移行して、ドライバ1121は、write命令に含まれるセキュリティフラグFがセキュリティ扱いであることを示しているか、及びwrite命令に含まれる論理アドレスA等及びセキュリティ領域データ1122に基づきセキュリティ領域1210へのアクセスであるかを判断する(ステップS827)。いずれの条件も満たされない場合には、ステップS831に移行する。一方、いずれかの条件が満たされている場合には、ドライバ1121は、物理アドレスBのブロックからデータを読み出す(ステップS829)。これによって、旧データは全て消去されるので、旧データの情報漏洩はない。なお、このようなデータ読み込みではなく、「0」を書き込むようにしてもよい。さらに、ドライバ1121は、物理アドレスBの存在フラグを「有効」から「無効」に変更する(ステップS831)。本例でも、ステップS829とステップS831は連続して行われる。ステップS829を実行することによって仮に読み出し処理が実行されても既に旧データは物理的に読み出し不可能であるが、ステップS831を実施することによって論理的にも無効で存在しないデータとなって、通常の処理では読み出し不可能となる。
その後、ドライバ1121は、論理アドレスAに対応する物理アドレスMを用いて、論理アドレスAから物理アドレスMが取得できるように論理/物理アドレス変換テーブル1140を更新する(ステップS833)。
このような処理を実施することによって、FeRAM上にセキュリティ領域1210と非セキュリティ領域1220とが設けられている場合においても、セキュリティ領域1210へ書き込まれたデータについては、情報漏洩を防止することができるようになる。
以上の処理を実施することによって、第1の書き込み処理例と同様の効果を得ることができる。なお、第2の書き込み処理例は、第1の書き込み処理例における(a)ステップS783乃至S791と(b)ステップS793乃至S801の順番を入れ替えた形になっている。いずれにせよ論理/物理アドレス変換テーブル1140の更新の前に、情報漏洩に最も重要なステップS789やS829を行っている。すなわち、write命令の受け付けから論理/物理アドレス変換テーブル1140の更新までの一連のデータ書き込み処理に、秘密情報に対するデータ書き換えの後にデータ書き換え前の秘密情報がFeRAM上に残されないようにするための無効化処理が一体化されている。よって、論理/物理アドレス変換テーブル1140の更新まで終了していれば、情報漏洩はあり得ないことが保証できる。
3.削除処理例
第2の実施の形態における削除処理例を図59及び図60を用いて説明する。図59に削除処理についてのシステム構成図を示す。なお、PC1100については図53と同じである。FeRAMデバイス1200においては、以下で述べる処理フローにおいて関係する部分が図53とは異なるように示されている。
まず、ドライバ1121は、アプリケーション・プログラム1110から、削除先論理アドレスAを含む削除命令を受け付ける(ステップS841)。そして、ドライバ1121は、論理/物理アドレス変換テーブル1140から、論理アドレスAに対応する、FeRAM上の物理アドレスBを取得する処理を実施する(ステップS843)。
ドライバ1121は、論理アドレスA又は物理アドレスBでセキュリティ領域データ1122を探索して、セキュリティ領域1210についてのアドレスであるか判断する(ステップS845)。論理アドレスA又は物理アドレスBがセキュリティ領域1210についてのアドレスではない場合にはステップS849に移行する。
一方、論理ドレスA又は物理アドレスBがセキュリティ領域1210についてのアドレスである場合には、ステップS843で取得された物理アドレスBのブロックからデータを読み出す(ステップS847)。これによって、旧データは読み出せなくなる。例えば、物理アドレスBが「0x10000000」であれば、図59に示すように、旧データは全ビット「0」に変更される。なお、「0」を書き込むようにしてもよい。さらに、ドライバ1121は、物理アドレスBの存在フラグを「有効」から「無効」に変更する(ステップS849)。ステップS847及びS849のセットは、write命令におけるものと同様である。
その後、ドライバ1121は、論理アドレスAについてのエントリを、論理/物理アドレス変換テーブル1140から削除することによって更新する(ステップS851)。
このように、削除命令についても、論理/物理アドレス変換テーブル1140の更新の前に、情報漏洩に最も重要なステップS847を行っている。すなわち、削除命令の受け付けから論理/物理アドレス変換テーブル1140の更新までの一連の削除処理において、削除対象の秘密情報がFeRAM上に残されないようにするための無効化処理が一体化されている。よって、論理/物理アドレス変換テーブル1140の更新まで終了していれば、情報漏洩はあり得ないことが保証できる。
図53及び図59において、論理/物理アドレス変換テーブル1140は、PC1100側のRAMに設けられているが、一部、または全体をFeRAMデバイス1200に設けるようにしても良い。
また、第2の実施の形態においては、書き込み処理と書き換え処理を同じ命令で取り扱うようにしているが、書き込み処理と書き換え処理を異なる命令として取り扱うようにしても良い。また、例えばドライブでセキュリティ領域1210と非セキュリティ領域1220とを区別するようにすればドライブ名でセキュリティ扱い又は非セキュリティ扱いを区別できるので、write命令においてセキュリティフラグFを含めずに、ドライブ指定で処理を区別できる。
[実施の形態12]
1.第1の書き込み処理例
第12の実施の形態では、FeRAMにおいてセキュリティ領域と非セキュリティ領域とが設けられている第2のケースを説明する。
図61に第12の実施の形態における書き込み処理についてのシステム構成図を示す。PC1100では、OS上アプリケーション・プログラム1110が実行され、さらにOSの一部としてFeRAMデバイス1200のためのドライバ1123も実行されている。ドライバ1123は、FeRAMデバイス1200がPC1100に例えばUSBインターフェースを介して接続された時に生成され且つOS上の論理アドレスとFeRAM上の物理アドレスとの対応関係を格納する論理/物理アドレス変換テーブル1141を用いて、以下で述べるような処理を実施する。
論理/物理アドレス変換テーブル1141は、様々な構成が可能であるが、ここではOS上の論理アドレスから、FeRAM上の物理アドレスを特定して出力する機能を実現するものとする。さらに、本実施の形態では、論理/物理アドレス変換テーブル1141において、論理アドレスと物理アドレスとのうち少なくともいずれかに対応して、セキュリティ領域であるか否かを表すセキュリティフラグ1142も保持している。
FeRAMデバイス1200は、セキュリティ領域1210と非セキュリティ領域1220とを含む。さらに、FeRAM上のセキュリティ領域の範囲を特定するためのデータであるセキュリティ領域データ1230も格納している。セキュリティ領域1210及び非セキュリティ領域1220では、所定のサイズのブロック毎に、当該ブロックの状態が存在フラグによって管理されている。図61では、説明をしやすくするために、ブロック毎にその先頭物理アドレスを示しており、さらに対応する存在フラグの状態を表している。
次に、図54で示した前提処理について、本実施の形態との差について説明する。図54の説明では、領域区分が存在すると判断されると、セキュリティ領域データ1122を生成するように説明したが、本実施の形態では、セキュリティ領域データ1230から、論理アドレスと物理アドレスとのうち少なくともいずれかに対応して、セキュリティ領域であるか否かを表すセキュリティフラグ1142を生成して、論理/物理アドレス変換テーブル1141に設定する処理を実施する。以下、このセキュリティフラグ1142を用いた処理について説明する。
次に、図62及び図63を用いて本実施の形態における第1の書き込み処理例を説明する。まず、ドライバ1123は、アプリケーション・プログラム1110から書き込み先論理アドレスA、書き込みデータD及びセキュリティフラグFを含むライト(write)命令を受け付ける(ステップS861)。セキュリティフラグFは、書き込みデータDがセキュリティ保持が必要か否かを表す。このwrite命令に応答して、ドライバ1123は、論理/物理アドレス変換テーブル1141から、write命令に含まれる書き込み先論理アドレスAに対応する、FeRAM上の物理アドレスB及びセキュリティフラグSを取得するための処理を実施する(ステップS863)。ここで、物理アドレスBを論理/物理アドレス変換テーブル1141から得られなかった場合には(ステップS865:Noルート)、新たなデータ書き込みであるので、ステップS873に移行する。
一方、物理アドレスBを論理/物理アドレス変換テーブル1141から得られた場合には(ステップS865:Yesルート)、ドライバ1123は、write命令に含まれるセキュリティフラグFがセキュリティ扱いであることを示しているか、及び論理/物理アドレス変換テーブル1141から得られたセキュリティフラグSがセキュリティ扱いであることを示しているかを判断する(ステップS867)。いずれの条件も満たされない場合には、ステップS871に移行する。一方、いずれかの条件が満たされている場合には、ドライバ1123は、物理アドレスBのブロックからデータを読み出す(ステップS869)。図61の例では、物理アドレスB「0x10000000」が得られて、旧データが全ビット「0」に変更されたことを表している。これによって、旧データは全て消去されているので、旧データの情報漏洩はない。なお、このようなデータ読み込みではなく、「0」を書き込むようにしても良い。さらに、ドライバ1123は、物理アドレスBの存在フラグを「有効」から「無効」に変更する(ステップS871)。本例でも、ステップS869とステップS871は連続して行われる。また、図61でも、物理アドレスB「0x10000000」の存在フラグを、「有効」から「無効」に変更している。ステップS869を実行することによって仮に読み出し処理が実行されても既に旧データは物理的に読み出し不可能であるが、ステップS871を実施することによって論理的にも無効で存在しないデータとなって、通常の処理では読み出し不可能となる。そしてステップS873に移行する。
次に、ドライバ1123は、セキュリティフラグF又はセキュリティフラグSがセキュリティ扱いであることを示している場合には、FeRAMのセキュリティ領域1210において、セキュリティフラグF又はセキュリティフラグSが非セキュリティ扱いであることを示している場合には、FeRAMの非セキュリティ領域1220において、空き領域(存在フラグが「無効」を示している領域)をシークする(ステップS873)。ここで、書き込みデータDを書き込むのに十分な空き領域が存在しない場合には(ステップS875:Noルート)、ドライバ1123は、エラーを出力して処理を終了する(ステップS877)。一方、書き込みデータDを書き込むのに十分な空き領域が存在する場合には(ステップS875:Yesルート)、端子Xを介して図63の処理に移行する。
図63の処理の説明に移行して、ドライバ1123は、セキュリティフラグF又はセキュリティフラグSに応じた領域における任意の空き領域Mを特定して、当該空き領域Mに書き込みデータDを書き込む(ステップS879)。図61の例では「*」のマーク付きの領域M(物理アドレス「0x10000400」)を特定して、書き込みデータDを書き込む。
そして、ドライバ1123は、書き込みデータDを書き込んだ領域Mの存在フラグを「無効」から「有効」に変更する(ステップS881)。図61の例でも、物理アドレス「0x10000400」の存在フラグを、「無効」から「有効」に変更している。その後、ドライバ1123は、セキュリティフラグF又はS(いずれかがセキュリティ扱いであるか否か)及び論理アドレスAに対応する物理アドレスM(図61の例では「0x10000400」)を用いて、論理アドレスAから物理アドレスM及びセキュリティフラグSが取得できるように論理/物理アドレス変換テーブル1141を更新する(ステップS883)。セキュリティフラグSについては、いずれかがセキュリティ扱いを表している場合には、セキュリティ扱いを表すように設定し、そうでない場合には非セキュリティ扱いを表すように設定する。
このような処理を実施することによって、FeRAM上にセキュリティ領域1210と非セキュリティ領域1220とが設けられている場合においても、セキュリティ領域1210へ書き込まれたデータについては、情報漏洩を防止することができるようになる。
なお、本実施の形態においても、論理/物理アドレス変換テーブル1141の更新の前に、情報漏洩に最も重要なステップS869を行っている。すなわち、write命令の受け付けから論理/物理アドレス変換テーブル1141の更新までの一連のデータ書き込み処理に、秘密情報に対するデータ書き換えの後にデータ書き換え前の秘密情報がFeRAM上に残されないようにするための無効化処理が一体化されている。よって、論理/物理アドレス変換テーブル1141の更新まで終了していれば、情報漏洩はあり得ないことが保証できる。
2.第2の書き込み処理例
第2の書き込み処理例を、図64及び図65を用いて説明する。なお、システム構成は図61に示したものと同様である。
まず、ドライバ1123は、アプリケーション・プログラム1110から書き込み先論理アドレスA、書き込みデータD及びセキュリティフラグFを含むライト(write)命令を受け付ける(ステップS891)。このwrite命令に応答して、ドライバ1123は、write命令に含まれるセキュリティフラグFがセキュリティ扱いであることを示している場合には、FeRAMのセキュリティ領域1210において、セキュリティフラグFが非セキュリティ扱いであることを示している場合には、FeRAMの非セキュリティ領域1220において、空き領域(存在フラグが「無効」を示している領域)をシークする(ステップS893)。ここで、書き込みデータDを書き込むのに十分な空き領域が存在しない場合には(ステップS895:Noルート)、ドライバ1123は、エラーを出力して処理を終了する(ステップS897)。
一方、書き込みデータDを書き込むのに十分な空き領域が存在する場合には(ステップS895:Yesルート)、ドライバ1123は、シークされた領域における任意の空き領域Mを特定して、当該空き領域Mに書き込みデータDを書き込む(ステップS899)。そして、ドライバ1123は、書き込みデータDを書き込んだ領域Mの存在フラグを「無効」から「有効」に変更する(ステップS901)。
また、ドライバ1123は、論理/物理アドレス変換テーブル1141から、write命令に含まれる書き込み先論理アドレスAに対応する、FeRAM上の物理アドレスB及びセキュリティフラグSを取得するための処理を実施する(ステップS903)。ここで、物理アドレスBを論理/物理アドレス変換テーブル1141から得られなかった場合には(ステップS905:Noルート)、新たなデータ書き込みであるので、端子Yを介して図65のステップS911に移行する。
一方、物理アドレスBを論理/物理アドレス変換テーブル1141から得られた場合には(ステップS905:Yesルート)、端子Zを介して図65のステップS906に移行する。
図65の処理の説明に移行して、ドライバ1123は、write命令に含まれるセキュリティフラグFがセキュリティ扱いであることを示しているか、及び論理/物理アドレス変換テーブル1141から読み出したセキュリティフラグSがセキュリティ扱いであることを示しているかを判断する(ステップS906)。いずれの条件も満たされない場合には、ステップS909に移行する。一方、いずれかの条件が満たされている場合には、ドライバ1123は、物理アドレスBのブロックからデータを読み出す(ステップS907)。これによって、旧データは全て消去されているので、旧データの情報漏洩はない。なお、このようなデータ読み込みではなく、「0」の書き込みであっても良い。さらに、ドライバ1123は、物理アドレスBの存在フラグを「有効」から「無効」に変更する(ステップS909)。本例でも、ステップS907とステップS909は連続して行われる。ステップS907を実行することによって仮に読み出し処理が実行されても既に旧データは物理的に読み出し不可能であるが、ステップS909を実施することによって論理的にも無効で存在しないデータとなって、通常の処理では読み出し不可能となる。
その後、ドライバ1123は、セキュリティフラグF又はS及び論理アドレスAに対応する物理アドレスMを用いて、論理アドレスAから物理アドレスM及びセキュリティフラグSが取得できるように論理/物理アドレス変換テーブル1141を更新する(ステップS911)。今回設定するセキュリティフラグSは、処理で用いたセキュリティフラグF又はSのいずれかがセキュリティ扱いを示している場合には、セキュリティ扱いを表すように設定され、そうでない場合には、非セキュリティ扱いを表すように設定される。
このような処理を実施することによって、FeRAM上にセキュリティ領域1210と非セキュリティ領域1220とが設けられている場合においても、セキュリティ領域1210へ書き込まれたデータについては、情報漏洩を防止することができるようになる。
以上の処理を実施することによって、第1の書き込み処理例と同様の効果を得ることができる。なお、第2の書き込み処理例は、第1の書き込み処理例における(a)ステップS863乃至S871と(b)ステップS873乃至S881の順番を入れ替えた形になっている。いずれにせよ論理/物理アドレス変換テーブル1141の更新の前に、情報漏洩に最も重要なステップS869やS907を行っている。すなわち、write命令の受け付けから論理/物理アドレス変換テーブル1141の更新までの一連のデータ書き込み処理に、秘密情報に対するデータ書き換えの後にデータ書き換え前の秘密情報がFeRAM上に残されないようにするための無効化処理が一体化されている。よって、論理/物理アドレス変換テーブル1141の更新まで終了していれば、情報漏洩はあり得ないことが保証できる。
3.削除処理例
第12の実施の形態における削除処理例を図66及び図67を用いて説明する。図66に削除処理についてのシステム構成図を示す。なお、PC1100については図61と同じである。フラッシュメモリデバイス1200においては、以下で述べる処理フローにおいて関係する部分が図61とは異なるように示されている。
まず、ドライバ1123は、アプリケーション・プログラム1110から、削除先論理アドレスAを含む削除命令を受け付ける(ステップS921)。そして、ドライバ1123は、論理/物理アドレス変換テーブル1141から、論理アドレスAに対応する、FeRAM上の物理アドレスB及びセキュリティフラグSを取得する処理を実施する(ステップS923)。
ドライバ1123は、セキュリティフラグSがセキュリティ扱いであることを示しているか判断する(ステップS925)。セキュリティフラグSが非セキュリティ扱いであることを示している場合には、ステップS929に移行する。
一方、セキュリティフラグSがセキュリティ扱いであることを表している場合には、ドライバ1123は、ステップS923で取得された物理アドレスBのブロックからデータを読み出す(ステップS927)。これによって、旧データは読み出せなくなる。例えば、物理アドレスBが「0x10000000」であれば、図66に示すように、旧データを全ビット「0」に変更する。なお、「0」を書き込むようにしてもよい。さらに、ドライバ1123は、物理アドレスBの存在フラグを「有効」から「無効」に変更する(ステップS929)。ステップS927及びS929のセットは、write命令におけるものと同様である。
その後、ドライバ1123は、論理アドレスAについてのエントリを、論理/物理アドレス変換テーブル1141から削除することによって更新する(ステップS931)。なお、該当するセキュリティフラグSについても削除する。
このように、削除命令についても、論理/物理アドレス変換テーブル1141の更新の前に、情報漏洩に最も重要なステップS927を行っている。すなわち、削除命令の受け付けから論理/物理アドレス変換テーブル1141の更新までの一連の削除処理に、削除対象の秘密情報がFeRAM上に残されないようにするための無効化処理が一体化されている。よって、論理/物理アドレス変換テーブル1141の更新まで終了していれば、情報漏洩はあり得ないことが保証できる。
図61及び図66において、論理/物理アドレス変換テーブル1141は、PC1100側のRAMに設けられているが、一部、または全体をFeRAMデバイス1200に設けるようにしても良い。
また、第12の実施の形態においては、書き込み処理と書き換え処理を同じ命令で取り扱うようにしているが、書き込み処理と書き換え処理を異なる命令として取り扱うようにしても良い。
[実施の形態13]
本実施の形態では、FeRAMをセキュリティ領域として用いる携帯電話機を取り扱う。携帯電話機1300の構成例を図68に示す。携帯電話機1300においては、CPU1301、RAM1302、ホストOS1320のコード及び制御コードが格納されているROM1303と、ボタン1304と、スピーカ1305と、マイク1306と、画像処理装置1307と、FeRAM1320のためのドライバ1310とが接続されており、それらはホストOS1320によって制御される。また、画像処理装置1307は、表示装置1308に接続されており、画像処理装置1307の処理結果を表示する。
RAM1302には、ホストOS上の論理アドレスとFeRAM上の論理アドレスが登録されている論理/論理アドレス変換テーブル1312が格納されている。
FeRAM1320は、全領域セキュリティ領域となっており、FeRAM上の論理アドレスと物理アドレスが登録されている論理/物理アドレス変換テーブル1321を格納している。また、FeRAMにおいては、所定のサイズのブロック毎に、当該ブロックの状態が存在フラグによって管理されており、当該ブロックに記録されているデータが有効である場合には有効を表す値が、当該ブロックに記録されているデータが無効である場合には無効を表す値が登録されるようになっている。図68では、説明をしやすくするために、ブロック毎にその先頭物理アドレスを示しており、さらに対応する存在フラグの状態を表している。
本実施の形態でも、例えば電源オン時に、FeRAM1320上に、FeRAM1320における論理アドレスと物理アドレスの変換テーブルである論理/物理アドレス変換テーブル1321を読み込むと共に、読み込んだ情報を基に、ホストOS1320上における論理アドレスとFeRAM上の論理アドレスとの変換テーブルである論理/論理アドレス変換テーブル1312を生成して、RAM1302に格納する。この際、論理/物理アドレス変換テーブル1321の、FeRAM上の物理アドレス(図68の例では、「0x10010800」)を特定しておき、例えばホストOS1320上における論理アドレスを割り当てて、両者を論理/論理アドレス変換テーブル1312に登録すると共に、ドライバ1310にもホストOS1320上における論理アドレスを登録しておく。これによって、必要な時にドライバ1310は、論理/物理アドレス変換テーブル1321の物理アドレスを特定することができるようになる。
次に、本実施の形態におけるデータ書き換え処理について図69及び図70を用いて説明する。まず、制御コード1303をCPU1301で実行して、ホストOS1320上の論理アドレスA(例えば「0x30000000」)についてデータD(例えば「0x12345678」)に書き換える書き換え命令を出力する(ステップS941)。ホストOS1320は、書き換え命令を受け取り、ホストOS1320上の論理アドレスAがFeRAM上のアドレスであると特定し、ドライバ1310にホストOS1320上の論理アドレスAについてデータDに書き換える書き換え命令を出力する(ステップS943)。なお、予めFeRAMに割り当てられた論理アドレスの範囲が予め決まっており且つ制御コード側でもそのような範囲に応じてアクセスすることが保証される場合には、ステップS943はスキップされる。
ホストOS1320から書き換え命令を受け取ると、ドライバ1310は、論理/論理アドレス変換テーブル1312から、FeRAM1320上の論理/物理アドレス変換テーブル1321の物理アドレスを取得する(ステップS945)。これによって論理/物理アドレス変換テーブル1321を利用することができるようになる。
そして、ドライバ1310は、論理/論理アドレス変換テーブル1312及び論理/物理アドレス変換テーブル1321から、ホストOS1320上の論理アドレスA(例えば「0x30000000」)に対応する、FeRAM上の物理アドレスB(例えば「0x10000000」)を特定する(ステップS947)。これによって書き換え前の旧データの格納先が分かることになる。
さらに、ドライバ1310は、FeRAM1320において空き領域をシークする(ステップS949)。書き込みデータDを書き込むのに十分な空き領域が存在しない場合には(ステップS951:Noルート)、ドライバ1310は、エラーを出力して処理を終了する(ステップS953)。
一方、書き込みデータDを書き込むのに十分な空き領域が存在する場合には(ステップS951:Yesルート)、端子ZAを介して図70の処理に移行する。
図70の処理の説明に移行して、任意の空き領域M(例えば「0x10000400」)を特定し、当該領域MにデータD(「0x12345678」)を書き込み、当該領域Mの存在フラグを、「無効」から「有効」に変更する(ステップS955)。
さらに、ドライバ1310は、ステップS947で特定された物理アドレスB(図68の例では「0x10000000」)のデータを読み出し、物理アドレスBの存在フラグを「有効」から「無効」に変更する(ステップS957)。なお、「0」を書き込むような処理を実施しても良い。
そして、ドライバ1310は、論理/物理アドレス変換テーブル1321において、ホストOS1320上の論理アドレスA(「0x30000000」)に対応する、FeRAM上の論理アドレスXに対応する物理アドレスを、物理アドレスB(「0x10000000」)から書き込み先領域Mの物理アドレス(「0x10000400」)に変更する(ステップS959)。ホストOS1320上の論理アドレスA(「0x30000000」)は、論理/論理アドレス変換テーブル1312によって、FeRAM上の論理アドレスXに変換されるが、論理/物理アドレス変換テーブル1321において論理アドレスXが書き込み先領域Mの物理アドレス(「0x10000400」)に対応付けられていれば、問題なくアクセス可能となる。
以上のように、携帯電話機1300にFeRAMをセキュリティ領域として実装する場合においても、データを書き換える場合には、書き換え命令の受け付けから論理/物理アドレス変換テーブル1321の更新までの一連のデータ書き換え処理に、秘密情報に対するデータ書き換えの後にデータ書き換え前の秘密情報がFeRAM上に残されないようにするための無効化処理が一体化されて実施される。よって、論理/物理アドレス変換テーブル1321の更新まで終了していれば、情報漏洩はあり得ないことが保証できる。
次に、図71を用いて本実施の形態における削除処理について説明する。まず、制御コード1303をCPU1301で実行して、ホストOS1320上の論理アドレスA(例えば「0x30000000」)について削除命令を出力する(ステップS971)。ホストOS1320は、削除命令を受け取り、ホストOS1320上の論理アドレスAがFeRAM上のアドレスであると特定し、ドライバ1310にホストOS1320上の論理アドレスAについて削除命令を出力する(ステップS973)。
ホストOS1320から削除命令を受け取ると、ドライバ1310は、論理/論理アドレス変換テーブル1312から、FeRAM1320上の論理/物理アドレス変換テーブル1321の物理アドレスを取得する(ステップS975)。これによって論理/物理アドレス変換テーブル1321を利用することができるようになる。
そして、ドライバ1310は、論理/論理アドレス変換テーブル1312及び論理/物理アドレス変換テーブル1321から、ホストOS1320上の論理アドレスA(例えば「0x30000000」)に対応する、FeRAM上の物理アドレスB(例えば「0x10000000」)を特定する(ステップS977)。これによって削除対象データの格納先が分かることになる。
その後、ドライバ1310は、ステップS977で特定された物理アドレスBのデータを読み出し、当該領域の存在フラグを有効から無効に変更する(ステップS979)。さらに、ドライバ1310は、論理/物理アドレス変換テーブル1321において、ホストOS1320上の論理アドレスA(「0x30000000」)に対応する、FeRAM上の論理アドレスXについてのエントリを削除することによって、論理/物理アドレス変換テーブル1321を更新する(ステップS981)。
このような処理を実施すれば、削除されたデータにアクセスできないだけではなく、完全に読み出し不能になっているため、情報漏洩はあり得ない。
具体的には、削除命令の受け付けから論理/物理アドレス変換テーブル1321の更新までの一連のデータ削除処理に、削除対象の秘密情報がFeRAM上に残されないようにするための無効化処理が一体化されて実施される。よって、論理/物理アドレス変換テーブル1321の更新まで終了していれば、情報漏洩はあり得ないことが保証できる。
上では、RAM1302に、論理/論理アドレス変換テーブル1312を格納する例を示したが、一部、または全体をFeRAM1320に格納するようにしても良い。論理/物理アドレス変換テーブル1321についても、一部、または全体をRAM1302に格納するようにしても良い。さらに、論理/物理アドレス変換テーブル1321と論理/論理アドレス変換テーブル1312とを統合したようなテーブルを用意するようにしても良い。
さらに、FeRAM1320において一部の領域を非セキュリティ領域にするようにしてもよい。
さらに、第9の実施の形態のフラッシュメモリのように、FeRAMについてもコピー機において用いるようにしても良い。さらに、他の機器に用いるようにしても良い。
以上本技術の実施の形態を説明したが、本技術はこれに限定されるものではない。例えば、上で述べた実施の形態の要素を、組み合わせて実施するようにしても良い。
また、セキュリティ領域を設ける必要があるフラッシュメモリやFeRAMを用いる機器であれば、本技術は適用可能である。また、フラッシュメモリやFeRAMと同様の特性を有する他の不揮発性メモリについても、本技術を適用可能である。
以上述べた本技術の実施の形態をまとめると以下のとおりになる。
本技術に係る不揮発性メモリ・ドライバは、コンピュータに、不揮発性メモリに記録されている秘密情報に対するデータ書き換え又はデータ削除の命令を受け付ける命令受け付けステップと、秘密情報に対するデータ書き換え又はデータ削除の後にデータ書き換え前の秘密情報又はデータ削除の対象である秘密情報が不揮発性メモリ上に残されないようにするための無効化処理を、データ書き換え後の秘密情報にアクセス可能になる前又はデータ削除の対象である秘密情報にアクセスできなくなる前に実施する無効化実施ステップとを実行させるものである。
上で述べたようなタイミングにて無効化処理を実施することによって、不正に秘密情報を読み出すことができなくなる。
なお、データ書き換え後の秘密情報にアクセス可能になる前又はデータ削除の対象である秘密情報にアクセスできなくなる前が、上で述べた命令受け付けステップにおいて受け付けた論理アドレスから、データ書き換え後の秘密情報の物理アドレスが取得可能になる前又はデータ削除の対象である秘密情報の物理アドレスが取得不能になる前である場合もある。より具体的には論理/物理アドレス変換テーブル等の物理アドレス取得手段が更新される前ということである。
また、上で述べた不揮発性メモリが、フラッシュメモリである場合には、上記無効化処理が、データ書き換え前の秘密情報又はデータ削除の対象である秘密情報に対する、消去処理で行われるビット反転とは異なるビット反転処理である場合もある。例えば消去処理が、「0」から「1」にビット反転させる処理である場合には、無効化処理は、「1」から「0」にビット反転させる処理である。
さらに、不揮発性メモリが、強誘電体メモリである場合には、上記無効化処理が、データ書き換え前の秘密情報又はデータ削除の対象である秘密情報に対する読み出し処理である場合もある。また、明示的に「0」を書き込むようにしてもよい。
また、上で述べた無効化実施ステップが、データ書き換え前の秘密情報又はデータ削除の対象である秘密情報に対する管理フラグ(例えば存在フラグ)が、有効から無効に変更される前に実施されるようにしてもよい。
また、上で述べた無効化実施ステップを、命令受け付けステップ以降の一連の処理の中で実施するようにしてもよい。無効化処理をデータ書き換え又はデータ削除とは非同期(又は別スレッド)で行う場合より安全であり且つ処理負荷を下げることができる。
さらに、不揮発性メモリが、セキュリティ領域と非セキュリティ領域とに分かれている場合には、無効化実施ステップが、命令にセキュリティ指定がある場合、若しくは命令で指定される論理アドレス又は当該論理アドレスから特定される物理アドレスがセキュリティ領域を示している場合に実施されるようにしてもよい。セキュリティ領域と非セキュリティ領域とが設けられる場合においても、問題なく対処できる。
また、命令で指定される論理アドレス又は当該論理アドレスから特定される物理アドレスがセキュリティ領域であるか否かを表すセキュリティフラグを、不揮発性メモリ・ドライバを実行する装置側又は不揮発性メモリ側で管理するようにしてもよい。セキュリティフラグを管理する方式だけではなく、アドレス範囲を管理する方式も可能である。
なお、上記のような不揮発性メモリ・ドライバは、例えばフレキシブルディスク、CD−ROM、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。また、ネットワークなどを介してデジタル信号として配信される場合もある。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
(付記1)
不揮発性メモリに記録されている秘密情報に対するデータ書き換え又はデータ削除の命令を受け付ける命令受け付けステップと、
前記秘密情報に対するデータ書き換え又はデータ削除の後に前記データ書き換え前の秘密情報又は前記データ削除の対象である前記秘密情報が前記不揮発性メモリ上に残されないようにするための無効化処理を、前記データ書き換え後の秘密情報にアクセス可能になる前又は前記データ削除の対象である前記秘密情報にアクセスできなくなる前に実施する無効化実施ステップと、
を、コンピュータに実行させるための不揮発性メモリ・ドライバ。
(付記2)
前記データ書き換え後の秘密情報にアクセス可能になる前又は前記データ削除の対象である前記秘密情報にアクセスできなくなる前が、前記命令受け付けステップにおいて受け付けた論理アドレスから、前記データ書き換え後の秘密情報の物理アドレスが取得可能になる前又は前記データ削除の対象である前記秘密情報の物理アドレスが取得不能になる前である
付記1記載の不揮発性メモリ・ドライバ。
(付記3)
前記不揮発性メモリが、フラッシュメモリである場合には、
前記無効化処理が、前記データ書き換え前の秘密情報又は前記データ削除の対象である前記秘密情報に対する、消去処理で行われるビット反転とは異なるビット反転処理である
付記1記載の不揮発性メモリ・ドライバ。
(付記4)
前記不揮発性メモリが、強誘電体メモリである場合には、
前記無効化処理が、前記データ書き換え前の秘密情報又は前記データ削除の対象である前記秘密情報に対する読み出し処理である
付記1記載の不揮発性メモリ・ドライバ。
(付記5)
前記無効化実施ステップが、前記データ書き換え前の秘密情報又は前記データ削除の対象である前記秘密情報に対する管理フラグが、有効から無効に変更される前に実施される
付記1記載の不揮発性メモリ・ドライバ。
(付記6)
前記無効化実施ステップを、前記命令受け付けステップ以降の一連の処理の中で実施する
付記1記載の不揮発性メモリ・ドライバ。
(付記7)
前記不揮発性メモリが、セキュリティ領域と非セキュリティ領域とに分かれており、
前記無効化実施ステップが、前記命令にセキュリティ指定がある場合、若しくは前記命令で指定される論理アドレス又は当該論理アドレスから特定される物理アドレスがセキュリティ領域を示している場合に実施される
付記1記載の不揮発性メモリ・ドライバ。
(付記8)
前記命令で指定される論理アドレス又は当該論理アドレスから特定される物理アドレスがセキュリティ領域であるか否かを表すセキュリティフラグを、前記不揮発性メモリ・ドライバを実行する装置側又は前記不揮発性メモリ側で管理する
付記7記載の不揮発性メモリ・ドライバ。
(付記9)
付記1乃至8のいずれか1つ記載の不揮発性メモリ・ドライバを有する装置。
(付記10)
不揮発性メモリに記録されている秘密情報に対するデータ書き換え又はデータ削除の命令を受け付ける命令受け付け手段と、
前記秘密情報に対するデータ書き換え又はデータ削除の後に前記データ書き換え前の秘密情報又は前記データ削除の対象である前記秘密情報が前記不揮発性メモリ上に残されないようにするための無効化処理を、前記データ書き換え後の秘密情報にアクセス可能になる前又は前記データ削除の対象である前記秘密情報にアクセスできなくなる前に実施する無効化実施手段と、
を有する不揮発性メモリドライバ装置。