(57)【要約】  【課題】  削除ファイルの内容を知得するという不正行為の根を断つことができる半導体メモリカードを提供する。【解決手段】  削除イベントが発生した際、削除ハンドラ１６は、TRM内にクリア処理管理テーブルを生成する。そしてファイルのうちファイルエントリー、FATのヌルクリアを優先して行う。ファイル実体部に対するヌルクリアは、削除イベント１６を含め、複数のイベントハンドラ１２、１３、１４で分散して行う。この分散処理にあたって、TRM内のクリア処理管理テーブルが参照される。  【選択図】  図１３
2004259265.tif 000002
【特許請求の範囲】
【請求項１】
半導体メモリカードであって、
ファイルが格納された不揮発メモリと、
処理部と、内部メモリとを含む耐タンパモジュールとを備え、
ファイルは、ファイル実体部と、ファイル管理情報とからなり、
前記処理部は、
ファイルについての削除イベントが発生した際、所在表を耐タンパモジュールの内部メモリ上に生成し、不揮発メモリにおけるファイルの管理情報に対する上書きを行う削除部を備え、
耐タンパモジュール内の所在表とは、ファイル実体部の所在を示すテーブルであり、ファイル実体部の上書きを実行するにあたって、削除部により参照される
ことを特徴とする半導体メモリカード。
【請求項２】
前記処理部は、半導体メモリカードと接続した機器が発行したコマンドに従って処理を行い、
前記処理部は、機器からのコマンド発行を解析し、その解析結果に応じたイベントを発生する解析部を備え、
前記削除部には、メイン削除部と、サブ削除部とがあり、
メイン削除部は、
削除イベントが発生した際、所在表の生成及びファイル管理情報に対する上書きを行い、
サブ削除部は、
他のイベントが発生した際、前記所在表を参照して、ファイル実体部に対する上書きを行う
ことを特徴とする請求項１記載の半導体メモリカード。
【請求項３】
前記処理部は、削除イベントが発生した際、計時を開始するタイマを備え、
前記メイン削除部は、当該タイマがタイムアウトするまでの間、ファイル管理情報に対する上書きに加え、ファイル実体部の一部分に対する上書きを行い、
前記サブ削除部による上書きの対象は、メイン削除部により上書きがなされた部分の残りである
ことを特徴とする請求項２記載の半導体メモリカード。
【請求項４】
前記所在表は、ファイル実体部において上書きが完了した位置を示すクリア済みアドレスと、
複数の上書き手法のうち何れの手法で、実体部に対する上書きを行うかを示す指示情報とを含み、
前記サブ削除部は、
所在表に示される指示情報に従って実体部に対する上書きを行い、その度に、所在表におけるクリア済みアドレスを更新する
ことを特徴とする請求項３記載の半導体メモリカード。
【請求項５】
前記削除イベントとは、半導体メモリカードと接続した機器が前記ファイルの削除コマンドを発行した際、解析部が発生するイベントであり、
前記他のイベントとは、何等かのコマンドについての処理を、処理部が終了した際、解析部が発生するコマンド終了イベントである
ことを特徴とする請求項２記載の半導体メモリカード。
【請求項６】
前記処理部は、削除イベントで駆動される削除ハンドラ、コマンド終了イベントで駆動されるコマンド非実行中ハンドラを備え、
前記メイン削除部とは、削除ハンドラであり、
前記サブ削除部とは、コマンド非実行中ハンドラである
ことを特徴とする請求項５記載の半導体メモリカード。
【請求項７】
前記削除イベントとは、半導体メモリカードと接続した機器が前記ファイルの削除コマンドを発行した際、解析部が発生するイベントであり、
前記他のイベントとは、半導体メモリカード内の別のファイルに対する読出コマンドを機器が発行した際、解析部が発生する読出イベント、又は、
半導体メモリカード内の別のファイルに対する書込コマンドを機器が発行した際、解析部が発生する書込イベントである、
ことを特徴とする請求項２記載の半導体メモリカード。
【請求項８】
前記処理部は、削除イベントで駆動される削除ハンドラ、読出イベント又は書込イベントで駆動される読み書きハンドラを備え、
前記メイン削除部とは、削除ハンドラであり、
前記サブ削除ハンドラは、読み書きハンドラの一構成要素である
ことを特徴とする請求項７記載の半導体メモリカード。
【請求項９】
前記内部メモリには、所定の暗号鍵が記録されており、
前記ファイルの実体部は当該暗号鍵を用いて暗号化されており、
前記メイン削除部は更に、
削除イベントが発生した際、前記暗号鍵を上書きする処理を行い
前記メイン削除部による管理情報上書きは、暗号鍵に対する上書きより後に行われる
ことを特徴とする請求項２記載の半導体メモリカード。
【請求項１０】
前記ファイルの管理情報は、前記暗号鍵とは別の暗号鍵で暗号化されており、
前記内部メモリには、前記管理情報用の暗号鍵も記録されており、
前記メイン削除部は更に、
削除イベントが発生した際、前記管理情報用の暗号鍵を上書きする処理を行い
前記メイン削除部によるファイル実体部用暗号鍵の上書きは、管理情報用暗号鍵に対する上書きより後に行われる
ことを特徴とする請求項９記載の半導体メモリカード。
【請求項１１】
前記ファイルの実体部は、フラグメント化されており、
前記所在表は、
実体部を構成する各フラグメントの開始アドレスと、
各フラグメントの上書きが未完である場合、オフに設定され、フラグメントが全て上書きされた場合、オンに設定されるフラグとを含む
ことを特徴とする請求項９記載の半導体メモリカード。
【請求項１２】
前記半導体メモリカードは、機器からの接触式の電力供給又は機器からの非接触式の電力供給により駆動するものであり、
前記処理部による上書きは、
機器からの接触式の電力供給がなされている場合に行われるものであり、
機器からの非接触式の電力供給がなされている場合行われない
ことを特徴とする請求項１記載の半導体メモリカード。
【請求項１３】
不揮発メモリは、第１のメモリモジュールと、第２のメモリモジュールとからなり、
第２メモリモジュールは、書き込み単位が第１メモリモジュールより小さく、  ファイルの管理情報は、第２メモリモジュールに記録されている
ことを特徴とする請求項１記載の半導体メモリカード。
【請求項１４】
前記第２メモリモジュールは、強誘電体メモリ(Ferro Electric Random Access Memory)又は磁気共鳴メモリ(Magnetoresitive Random Access Memory)である
ことを特徴とする請求項１３記載の半導体メモリカード。
【請求項１５】
耐タンパモジュールの内部メモリは、第１のメモリモジュールと、第２のメモリモジュールとからなり、
第２メモリモジュールは、書き込み単位が第１メモリモジュールより小さく、  前記所在表は、第２メモリモジュールに記録されている。
ことを特徴とする請求項１記載の半導体メモリカード。
【請求項１６】
前記第２メモリモジュールは、Ferro Electric Random Access Memory又はMagnetoresitive Random Access Memoryである
ことを特徴とする請求項１５記載の半導体メモリカード。
【請求項１７】
不揮発メモリと、耐タンパモジュールとを備える半導体メモリカードにおいて、耐タンパモジュール内のＣＰＵにより実行される制御プログラムであって、
不揮発メモリには、ファイルが格納されており、
ファイルは、ファイル実体部と、ファイル管理情報とならなり、
耐タンパモジュールは、内部メモリを含み、
制御プログラムは、
ファイルについての削除イベントが発生した際、所在表を耐タンパモジュールの内部メモリ上に生成し、不揮発メモリにおけるファイルの管理情報に対する上書きを行い、
耐タンパモジュール内の所在表とは、ファイル実体部の所在を示すテーブルであり、ファイル実体部の上書きを実行するにあたって、制御プログラムにより参照される
ことを特徴とする制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データをファイルに格納して記録することができる半導体メモリカードに関し、特に、そのファイルを削除する技術に関する。
【背景技術】
【０００２】
ICカードやSDメモリカードといった半導体メモリカードは、放送・出版等のマスメディアから金融機関、国、自治体等様々な産業に先駆的に投入されており、半導体メモリカードの利便性の高さは、これらの産業界で大きな反響を呼んでいる。半導体メモリカードは、物理層・ファイルシステム層・応用層からなるレイヤモデルにて、データ管理を行っている。そのためユーザは、パソコンのファイルを削除するのと同じ手順で、半導体メモリカード上にファイルを生成したり、生成したファイルを削除することができる。
【０００３】
従来の半導体メモリカードにおいて、ファイルを削除する場合、ファイルフラグメントのリンク関係を示すファイルアロケーションテーブル(File Allocation Table(FAT))やファイルエントリー等の管理情報を上書きすることて事足りるとしていた。何故なら、管理情報の上書きにより、半導体メモリカード上の実体部の所在や、半導体メモリカード上に離散的に存在するフラグメント間の関係が断たれ、ファイルの解読が不能になるからである。
【０００４】
尚、半導体メモリカードにおけるファイルシステム管理については、以下の特許文献1,2,3に開示された先行技術がある。
【特許文献１】特開2001-188701号公報
【特許文献２】米国特許5,479,638号公報
【特許文献３】特許3389186号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところが上述したファイル削除では、FATやファイルエントリーが上書きされたとはいえ、半導体メモリカードにはファイルの実体データや、それを構成するフラグメントは分断した状態であるが、依然として存在している。このファイルが金銭決済に関するものである場合、この断片的なフラグメントから、口座番号やキャッシュカードの番号等が読み取られる恐れがある。
【０００６】
更に半導体メモリカード上にて、分断した状態で存在するフラグメントを辿ってゆき、ファイルを復元するという操作を第３者が行えば、削除された筈のファイルの内容が知得されてしまう。
FAT、ファイルエントリー等の管理情報を上書きして事足りるとしたのは理由がある。それは上書きに費やする処理時間との問題である。試算によると、512バイトの上書きには2m秒、1Mバイトで4秒が必要であり、10Mバイトの上書きならば40秒もの時間が必要であるといわれる。このことから、ファイル実体部を上書きして、読み取りが完全に不可能な状態にする削除(完全削除)は、時間がかかることがわかる。そしてこの完全削除を行う場合、削除ファイルのフラグメントの所在を示すデータを何処に配置するかが問題になる。フラグメント同様、所在を示すデータを不揮発メモリに配するとすれば、完全削除がなされるまでの間、フラグメントの所在は、第３者に読み取られる恐れがある。それでは、完全削除がなされるまでの間、削除ファイルについての情報は、充分に秘匿されているとはいえない。
【０００７】
本発明の目的は、ファイルの削除が命じられてから、完全削除がなされるまで、ファイル実体を秘匿することができる半導体メモリカードを提供することである。
【課題を解決するための手段】
【０００８】
上記目的を達成するため、本発明に係る半導体メモリカードは、ファイルが格納された不揮発メモリと、処理部と、内部メモリとを含む耐タンパモジュールとを備え、ファイルは、ファイル実体部と、ファイル管理情報とからなり、前記処理部は、ファイルについての削除イベントが発生した際、所在表を耐タンパモジュールの内部メモリ上に生成し、不揮発メモリにおけるファイルの管理情報に対する上書きを行う削除部を備え、耐タンパモジュール内の所在表とは、ファイル実体部の所在を示すテーブルであり、ファイル実体部の上書きを実行するにあたって、削除部により参照されることを特徴としている。
【発明の効果】
【０００９】
本発明に係る半導体メモリカードは、上述した構成を有しているので、ファイル実体部に対する上書きは、耐タンパモジュール内部メモリに配置されている所在表を参照して行われる。ファイル削除のイベントが発生してから、ファイルの完全削除がなされるまでの間、フラグメントに関する情報は充分に秘匿されることになる。
所在表を参照したファイル実体部の上書きを、削除イベントが発生した後の処理の空き時間に実行すれば、ファイル実体部を上書きするための処理負荷は、複数の空き時間に分散されることになる。かかる分散により、処理待ち状態への復帰期間を短くすることができるので、処理の遅さをユーザに感じさせることなく、ファイル実体部に対する上書き処理を完遂させることができる。
【００１０】
また、実体部に対する上書きより、ファイル管理情報に対する上書きを優先することにより、ファイルはフラグメント間のリンク関係を失うことになる。ファイルに対する上書きに、かかる優先順位を持たせることで、時間の経過と共に、フラグメントをリバース解析するという行為は一層困難になる。
ここで前記処理部は、半導体メモリカードと接続した機器が発行したコマンドに従って処理を行い、前記処理部は、機器からのコマンド発行を解析し、その解析結果に応じたイベントを発生する解析部を備え、前記削除部には、メイン削除部と、サブ削除部とがあり、メイン削除部は、削除イベントが発生した際、所在表の生成及びファイル管理情報に対する上書きを行い、サブ削除部は、他のイベントが発生した際、前記所在表を参照して、ファイル実体部に対する上書きを行ってもよい(2)。
【００１１】
ここで前記処理部は、削除イベントが発生した際、計時を開始するタイマを備え、前記メイン削除部は、当該タイマがタイムアウトするまでの間、ファイル管理情報に対する上書きに加え、ファイル実体部の一部分に対する上書きを行い、前記サブ削除部による上書きの対象は、メイン削除部により上書きがなされた部分の残りであってもよい(3)。削除が命じられた際の上書きは、タイマがタイムアウトするまでの間継続してなされる。不揮発メモリに対する上書きにどれだけ時間を要するか等を考慮して、タイムアウト時間を調整することにより、処理待ち時間を最適な時間にすることができる。
【００１２】
前記内部メモリには、所定の暗号鍵が記録されており、前記ファイルの実体部は当該暗号鍵を用いて暗号化されており、前記メイン削除部は更に、
削除イベントが発生した際、前記暗号鍵を上書きする処理を行い前記メイン削除部による管理情報上書きは、暗号鍵に対する上書きより後に行ってもよい(9)。
暗号鍵に対する上書きを、ファイル実体部に対する上書きよりも優先することにより、ファイルは先ず初めに、復号が不可能になる。ファイルに対する上書きに、かかる優先順位を持たせることで、時間の経過と共に、フラグメントをリバース解析するという行為は一層困難になる。
【００１３】
ここで前記半導体メモリカードは、機器からの接触式の電力供給又は機器からの非接触式の電力供給により駆動するものであり、前記処理部による上書きは、機器からの接触式の電力供給がなされている場合に行われるものであり、機器からの非接触式の電力供給がなされている場合行われないようにしてもよい(12)。機器からの非接触式の電力供給時には、実体部に対する上書きを行わないので、安定動作を実現することができる。
【発明を実施するための最良の形態】
【００１４】
(第１実施形態)
以降、本発明に係る半導体メモリカードの実施形態について説明する。本実施形態に係る半導体メモリカードは、ICカードの耐タンパモジュールを内蔵したSDeXメモリカードである。SDeXメモリカードは、SDメモリカード同様、SDポータブルデバイスの記録媒体に用いられながらも、ICカードの耐タンパモジュールを内蔵している。また本SDexメモリカード４００は、外部機器との通信方式として、接触型通信方式、非接触通信方式の両方を備えている。
【００１５】
先ず始めに、本発明に係る半導体メモリカード(SDeXメモリカード)の実施行為のうち、使用行為の形態について説明する。SDeXメモリカード４００は、携帯電話などのSDポータブルデバイスと接続され、図１に示すような環境で、ユーザの利用に供される。図１は、SDeXメモリカード４００の使用環境を示す図である。
図１における使用環境は、ECサーバ１００、カードリーダライタ２００、無線基地局２１０、SDポータブルデバイス３００から構成される。
【００１６】
ECサーバ１００は、カードリーダライタ２００及び無線基地局２１０、ネットワークを介して、SDexメモリカード４００にECサービスを提供する。ECサーバ１００には複数のECアプリケーションプログラムが動作しており、これらのそれぞれは、固有のECサービスをSDexメモリカード４００に提供する。ECサーバ１００上で動作するECアプリケーションは、サーバアプリケーションであり、ECサービスの種類毎にそれぞれ違うものが存在する。図１では、n種のECサービス毎のECサーバアプリをS_APL1,2,3・・・・nと略記している。これらは、n種のサーバアプリケーションである。ECサーバ１００によるECサービス提供は、ネットワーク、カードリーダライタ２００及び無線基地局２１０を介してECコマンドをSDexメモリカード４００に発行することによりなされる。
【００１７】
カードリーダライタ(図中のカードR/W)２００は、クレジット会社・金融機関のキャッシュデスペンサー、店舗のレジ機に備え付けの機器であり、SDexメモリカード４００への電力供給、SDexメモリカード４００との非接触型の入出力を行う。カードリーダライタ２００は、ネットワークと接続されており、このカードリーダライタ２００を介することで、SDexメモリカード４００はECサーバ１００のECサービスを受けることができる。
【００１８】
無線基地局２１０は、建造物や電柱の屋上に備え付けの機器であり、携帯電話型のSDポータブルデバイス３００と無線によるデータの入出力を行う。無線基地局２１０は、ネットワークと接続されており、この無線基地局２１０を介することでも、SDポータブルデバイス３００はECサーバ１００のECサービスを受けることができる。
SDポータブルデバイス３００は、SDeXメモリカード４００を接続して、SDeXメモリカード４００をアクセスする機器である。SDポータブルデバイス３００には、ブラウザソフト等がインストールされており、ユーザはこのブラウザのユーザインターフェイスを介して、SDeXメモリカード４００におけるファイルシステム(File System(以下、FSと略す場合がある))をアクセスすることができる。このファイルシステムアクセスは、SDメモリカードで規定されているSDコマンドをSDeXメモリカード４００に発行し、そのレスポンスをSDeXメモリカード４００から受信することでなされる。また、SDポータブルデバイス３００がSDeXメモリカード４００からブートストラップを行って起動する場合、SDポータブルデバイス３００はSDeXメモリカード４００と一体になってICカードとして機能する。SDポータブルデバイス３００の背面には、螺旋アンテナが埋設されており、ICカードとしての機能時において、この螺旋アンテナが、カードリーダライタ２００から発せられる電力をSDeXメモリカード４００に供給する。またSDポータブルデバイス３００は、SDeXメモリカード４００に対するコマンド・レスポンスと、ECサーバ１００とのコマンド・レスポンスとの相互変換を行う。SDポータブルデバイス３００による相互変換とは、ECサーバ１００からのECコマンドをカプセル化した拡張SDコマンドを生成してSDeXメモリカード４００に出力し、SDeXメモリカード４００からのSDレスポンスよりECレスポンスを取り出して、ECサーバ１００に出力する処理である。SDポータブルデバイス３００がSDeXメモリカード４００にてブートストラップを行い、ICカードとして機能することを『ECモード』という。また、SDポータブルデバイス３００がSDeXメモリカード４００を記録媒体として用いることを『SDモード』という。
【００１９】
SDモードでのSDeXメモリカード４００の利用は、SDメモリカードとしての用途である。この用途においてSDeXメモリカード４００のホスト装置となるのは、SDポータブルデバイス３００であり、ホスト装置であるSDポータブルデバイス３００が配信サーバからダウンロードしたオーディオデータ、ビデオデータの受け皿として、SDeXメモリカード４００は用いられる。こうしてSDeXメモリカード４００に記録されたオーディオデータ、ビデオデータをホスト装置は再生させることができる。
【００２０】
ECモードでのSDeXメモリカード４００の利用は、ICカードとしての用途である。このECモードにおいてもSDeXメモリカード４００はSDポータブルデバイス３００と接続される。しかしSDeXメモリカード４００のホスト装置となるのはこのSDポータブルデバイス３００ではなく、ネットワーク上のECサーバ１００である。SDeXメモリカード４００と接続されたSDポータブルデバイス３００を、カードリーダライタ２００、無線基地局２１０と用いることにより、SDeXメモリカード４００はECサーバ１００と通信を行う。この通信により、ECサーバ１００と金銭決済を行うことができる。
【００２１】
本実施形態のSDeXメモリカード４００は、配信されたオーディオデータ、ビデオデータの受け皿としても用途に加え、ICカードとしても用途が存在するので、ユーザにとっての利便性が増している。
尚図１においてSDeXメモリカード４００は、ECモードにおいてカードリーダライタ２００を介して、ECサーバ１００をアクセスしたが、無線基地局２１０を介してSDポータブルデバイス３００がネットワークを介してECサーバ１００をアクセスしてもよい。
【００２２】
続いて本発明にかかる半導体メモリカードの生産行為の形態について説明する。本発明に係る半導体メモリカードは、図２、図３の内部構成に基づいて工業的に生産することができる。
図２に示すように、本発明にかかる半導体メモリカードの内部には、コネクタ、耐タンパ性を有する耐タンパモジュールチップ(Tamper Resist Module(TRM))１、256Mバイトもの容量をもつフラッシュメモリチップが実装されている。
【００２３】
耐タンパ性には、諸説があるが、概して以下のことを意味するとされている。
1)チップを物理的に開梱しても、内部構成は判読不可能である。
2)電磁波を照射しても内部構成は判読不可能である。
3)入力データのデータ長と、処理時間との関係がノンリニアである。
4)入力データによりエラーが発生した際の処理結果により、出力データが逆算されない。
【００２４】
これら1)〜4)の性質をもつため、TRM１は多くのリバース行為に耐性をもつ。以降、TRM１内のハードウェア要素について説明する。
図３は、TRM１内のハードウェア構成を示す図である。図３に示すようにTRM１には、内部EEPROM３、外部メモリ制御部４、HIM５、マスクROM６、CPU７が実装されており、マイコンシステムを形成している。
【００２５】
内部EEPROM３は、読み出し／書き込みが可能な内部メモリである。TRM１として実装されたマイコンシステムは、単位面積当たりの製造コストが高く、TRM１内の内部EEPROM３の規模は、32Kバイトになっている。この内部EEPROM３と区別するため、図２に示したフラッシュメモリ２を、以降外部メモリと呼ぶ場合もある。
外部メモリ制御部４は、外部フラッシュメモリ２のアクセスのために設けられた専用回路である。外部フラッシュメモリ２のアクセスは、SDポータブルデバイス３００が発するSDコマンドに基づき行われる。
【００２６】
HIM(Host Interface Module)５は、SDポータブルデバイス３００から発行されるSDコマンドのコマンド番号を参照し、そのコマンド番号によりSDコマンドの振り分けを行う。SDコマンドの番号には、1〜mの数値と、m+1以上の拡張番号とがある。番号が1〜mなら外部メモリ制御部４にSDコマンドを出力し、m+1以上ならSDコマンドにカプセル化されたECコマンドを取り出して、CPU７側へと出力する。
【００２７】
マスクROM６は、Java（登録商標）仮想マシン、アプリケーションプログラムが予め格納されている読出専用メモリである。SDポータブルデバイス３００は、このマスクROM６の固定番地からブートストラップを行うことにより、ECモードとして起動する。
CPU７は、マスクROM６に格納されているプログラムを実行する。
図４は、図３のTRM１内のマスクROM６とCPU７とからなる部分を、ソフトウェア構成に置き換えて描いた図である。破線枠wk1内は、ICカードと互換性があるモジュールである。一方TRM１において破線枠外の部分は、SDメモリカードと互換性があるモジュールである。
【００２８】
SDメモリカードとの互換部分は、外部メモリ制御部４と、HIM５とからなる。この中でHIM５は、SDメモリカードにおける機能を踏襲しつつも、ICカードの互換モジュールとの窓口としての機能を果たす。
ICカード互換モジュールは、レイヤ構造をもつ。このレイヤ構造では、最下位層(物理層)に内部EEPROM３があり、この内部EEPROM３の上位層にAPI１０が、更に上位層にはJava（登録商標）仮想マシン９が、最上位層にはECクライアントアプリ８がある。SDメモリカードとの互換部分である外部メモリ制御部４は、内部EEPROM３と同じく物理層にあることは注意されたい。
【００２９】
以降、図４に示したソフトウェア構成(ECクライアントアプリ８、Java（登録商標）仮想マシン９、API１０)について説明する。
ECクライアントアプリ８は、Java（登録商標）言語で記述されたECアプリの一種であり、ユーザの操作に基づきECサーバ１００をアクセスする。ECサーバ１００におけるECサーバアプリは、ECサービス毎の複数種類のものが存在するので、SDeXメモリカード４００におけるECクライアントアプリも、ECサービス毎の複数のものが存在する。図中のC_APL1,2,3・・・・nは、ECサーバ１００におけるECサーバアプリS_APL1,2,3・・・・nのそれぞれについて、ECクライアントアプリが存在することを示す。ECクライアントアプリ８がカードリーダライタ２００、無線基地局２１０やネットワークを介して、ECサーバ１００上のECサーバアプリとコマンドの送受信を行うことにより、ECにおける様々なECサービスを享受する。ECサーバアプリから受信したECコマンドがデータの書き込みコマンドである場合、ECクライアントアプリ８は、そのECコマンドをJava（登録商標）仮想マシンを介してAPI１０に出力する。
【００３０】
ECクライアントアプリ８は他に、ユーザ操作に基づく外部フラッシュメモリ２及び内部EEPROM３のアクセスをECモードにおいて実行する。このアクセスにはファイルをクリエイトしたり、そのファイルを読み書きしたりするというファイルアクセスが含まれる。
Java（登録商標）仮想マシン９(図中のJava(登録商標)Card VM)は、Java（登録商標）言語で記述されたECクライアントアプリ８を、CPU７のネィティブコードに変換して、CPU７に実行させる。
【００３１】
API(APplication Interface)１０は、ECクライアントアプリ８が発行したコマンドに基づく外部フラッシュメモリ２及び内部EEPROM３の読み書きを実行する。以上が、SDeXメモリカード４００のソフトウェア構成である。
続いて外部フラッシュメモリ２及び内部EEPROM３における論理フォーマットについて説明する。図５は、外部フラッシュメモリ２及び内部EEPROM３の論理フォーマットを示す図である。外部フラッシュメモリ２及び内部EEPROM３は、2つのメモリ空間sm1,sm2を構成している。メモリ空間sm1は、TRM１内のCPU７からアクセス可能なメモリ空間であり、ECクライアントアプリの使用領域２１、ECクライアントアプリの拡張領域２２からなる。メモリ空間sm2は、TRM１内CPU７を介することなく、SDポータブルデバイス３００がアクセスすることができるメモリ空間であり、認証領域２３と、非認証領域２４とがある。認証領域２３、非認証領域２４とは、SDメモリカードがもつメモリ領域であり、その意味合いについては特許3389186号公報を参照されたい。
【００３２】
図６は、ECクライアントアプリの拡張領域２２、認証領域２３、非認証領域２４の内部を示す図である。ECクライアントアプリの拡張領域２２、認証領域２３、非認証領域２４は、ISO/IEC 9293に準拠したファイルシステム構造を有する。ISO/IEC 9293は、説明の便宜のために選んだファイルシステム構造の一例に過ぎず、UDF(Universal Disk Format)等、他のファイルシステム構造を有していてもよい。具体的には、フラグメントが可変長であり、先頭アドレスやデータ長をエントリー情報で示している形式であってもよい。
【００３３】
ECクライアントアプリの拡張領域２２は、内部EEPROM３上の領域２２aと、外部フラッシュメモリ２上のセキュアフラッシュ領域２２bとからなる。セキュアフラッシュ領域２２bには、ファイルシステム領域であるパーティション1,2,3・・・・nが存在する。一方マスタブートレコードやパーティションへの参照テーブル(パーティションテーブル1,2,3・・・・n)は、内部EEPROM３内の領域２２a上にある。
【００３４】
ECクライアントアプリの拡張領域２２内のパーティションや、認証領域２３のパーティション、非認証領域２４のパーティションは、共通の内部構成を有する。図７は、パーティションの共通構成を示す図である。
パーティションは、『パーティションブートセクタ』、『二重化ファイルアロケーションテーブル(FAT)』、『ルートディレクトリエントリ』、『ユーザ領域』からなる。
【００３５】
『パーティションブートセクタ』は、パーティションに関する情報が記述されたテーブルである。
『二重化ファイルアロケーションテーブル(FAT)』は、ISO/IEC 9293に準拠した2つのFATからなる。各FATは、各クラスタに対応づけられた複数のFATエントリーからなる。各FATエントリーは、対応するクラスタが使用中であるか、未使用であるかを示すものであり、対応するクラスタが未使用であれば、そのファイルエントリーには、"0"が設定され、対応するクラスタが使用中であれば、クラスタ番号が設定される。このクラスタ番号は、対応するクラスタが読み出された場合、次にどのクラスタを読み出せばよいかといったクラスタ間のリンク関係を示す。図８（ａ）の破線の引き出し線ff1は、FATに含まれる複数のFATエントリー002,003,004,005・・を示す。このFATエントリーに付与された数値『002,003,004,005・・』は、各FATエントリーがどのクラスタに対応づけられているか、つまり、各FATエントリーが対応づけられているクラスタのクラスタ番号を示す。
【００３６】
『ルートディレクトリエントリ』は、ルートディレクトリに存在する複数ファイルについてのファイルエントリーを複数含む。各ファイルエントリーは、存在するファイルの「ファイル名」と、そのファイルの「ファイル拡張子」と、ファイルの先頭部が格納されている「ファイル最初のクラスタ番号」と、そのファイルについての「ファイル属性」と、ファイルが記録された「記録時刻」と、ファイルの「記録日付」と、ファイルのデータ長である「ファイル長」とを含む。
【００３７】
『ユーザ領域』は、クラスタを最小単位にして、ファイルが格納される領域である。図８（ｃ）における破線の引き出し線ff2は、ユーザ領域に含まれる複数のクラスタ002,003,004,005・・・・・を示す。図中の番号002,003,004,005,006,007,008・・・・・・・は、各クラスタを識別するために付与された3桁の16進数表記のクラスタ番号を示す。データ領域に対するアクセスは、クラスタを最小単位として行われるので、データ領域の内部位置は、これらのクラスタ番号を用いて、指示される。
【００３８】
ここで、ルートディレクトリにEOB001.SE1というファイルを格納する場合、EOB001.SE1がどのように格納されるか、即ち、ファイル格納方式の一例を図９を参照しながら説明する。『EOB001.SE1』の『EOB』とは、EC OBjectの略であり、『SE』は、『Secure EC』にちなんだ拡張子である。上述したようにデータ領域の最小アクセス単位はクラスタであるので、EOB001.SE1は、クラスタサイズを最小単位にしてデータ領域に格納せねばならない。EOB001.SE1は、先ずクラスタサイズにフラグメント化されて、各クラスタに書き込まれる。図９は、EOB001.SE1をクラスタサイズに合わせて5つにフラグメント化し、各フラグメントを、クラスタ003,004,005,00A,00Cに格納する状態を想定した図である。
【００３９】
EOB001.SE1がフラグメント化されると、ディレクトリエントリー及びFATは、図１０のように設定されねばならない。
図１０は、EOB001.SE1が複数のクラスタに記録されている場合のディレクトリエントリー及びFATについての設定例を示す図である。本図においてEOB001.SE1の先頭フラグメントがクラスタ003に記録されている場合、ルートディレクトリエントリーにおける『最初のクラスタ番号』には、その先頭フラグメントが格納されているクラスタについてのクラスタ番号003が記載される。以降、EOB001.SE1の後続するフラグメントは、クラスタ004、クラスタ005に格納されていることがわかる。EOB001.SE1の先頭フラグメントを格納しているクラスタ003には、FATエントリー003(004)が対応しているが、このFATエントリーは、EOBファイルの後続するフラグメントを格納しているクラスタ004を示すものである。またこれに後続しているフラグメントを格納しているクラスタ004,005には、FATエントリー004(005),FATエントリー005(00A)が対応しているが、これらのFATエントリーは、後続するフラグメントを格納しているクラスタ005,00Aを示す。
【００４０】
これらFATエントリーに記載されたクラスタ番号を矢印fk1,fk2,fk3,fk4,fk5・・・・・に示すように順次読みとってゆけば、EOB001.SE1のフラグメントを全て読み取ることができる。以上の説明により、SDeXメモリカード４００のユーザ領域は、クラスタを最小単位としてアクセスされ、また各クラスタにはそれぞれFATエントリーが対応づけられていることがわかる。EOBファイルの末尾のフラグメントを格納したクラスタ(図９の一例では、クラスタ00C)と対応するFATエントリーには、そのクラスタがファイルの最終フラグメントを格納していることを示すクラスタ番号『FFF』が記述される。
【００４１】
続いてAPI１０の内部について説明する。ECコマンドを始め、ハードウェアでの割り込み発生や通信データの到来等、API１０への何等かの入力は、”イベント”と総称される。API１０は、API内外で発生したイベントにより駆動されるプログラムにより構成される。かかるプログラムを『イベントハンドラ』といい、図１１に示す。図１１は、API１０の内部を示す図である。図１１に示すようにAPI１０の内部には、イベント解析ハンドラ１１、非コマンド実行中ハンドラ１２、タイマハンドラ１３、読み書きハンドラ１４、暗号鍵テーブル１５、削除ハンドラ１６といったイベントハンドラが存在する。
【００４２】
イベント解析ハンドラ１１は、API１０内外で発生したイベントの解析を行い、その解析結果に応じて内部イベントを発生する。API１０外部で発生するイベントの代表的なものは、ECクライアントアプリ８により発行されるECコマンドである。イベント解析ハンドラ１１は、そのECコマンドの内容の解析を行い、もしECコマンドの内容がファイル読み書きであるなら、「ファイル読み書き」という内部イベントと、「コマンド開始イベント」という内部イベントとを生成する。またECコマンドの内容がファイル削除であるなら、「ファイル削除」という内部イベントと、「コマンド開始イベント」という内部イベントとを生成する。こうした内部イベントの生成により、ファイル読み書きを行うイベントハンドラやファイル削除を行うイベントハンドラが駆動される。
【００４３】
またAPI１０内部で発生するイベントには、他のイベントハンドラでの処理完了を示すイベント(完了イベント)がある。ECコマンドを実行するイベントハンドラが完了イベントを発生したなら、イベント解析ハンドラ１１はECコマンドの発行元たるECクライアントアプリ８に、ECレスポンスを出力する。
非コマンド実行中ハンドラ１２は、API１０内の何れかのイベントハンドラがコマンドを実行していない状態(非コマンド実行中)に駆動されるイベントハンドラである。非コマンド実行中ハンドラ１２の駆動期間は、ECコマンドを実行する他のイベントハンドラの駆動期間と排他的な関係にあり、何れのイベントハンドラも駆動していない空き期間に、非コマンド実行中ハンドラ１２は駆動される。
【００４４】
タイマハンドラ１３は、コマンド開始イベントの発生により計時を開始し、予めセットされた時間が経過すればタイムアウトする。このタイマハンドラ１３のタイムアウトを監視することで、イベント解析ハンドラ１１は処理に時間がかかり過ぎるイベントハンドラの動作を強制的に止めることができる。この強制的な動作停止は、イベント解析ハンドラ１１による停止イベントの発生でなされる。
【００４５】
読み書きハンドラ１４は、読み書きイベントが発生した際、外部フラッシュメモリ２及び内部EEPROM３上のファイル読み書きを行う。図１２（ａ）は、読み書きハンドラ１４によるファイル書き込みがどのように行われるかを示す図である。
ファイル書き込みにあたって読み書きハンドラ１４は、書込先ファイルのファイル名と、書き込もうとするデータをC_APL1,2,3・・・・nから受け取って(図中の(1)(2))、書込先ファイルに割り当てられた暗号鍵を暗号鍵テーブル１５から取り出す(3)。そして、C_APL1,2,3・・・・nから受け取ったデータを暗号鍵テーブル１５から取り出された暗号鍵で暗号化した上で(4)、ファイルに書き込む(5)。図１２（ｂ）は、読み書きハンドラ１４によるファイル読み出しがどのように行われるかを示す図である。
【００４６】
ファイル読み出しにあたって読み書きハンドラ１４は、読出先ファイルのファイル名をC_APL1,2,3・・・・nから受け取って、ファイル読み出しを行う。暗号化データが外部フラッシュメモリ２から読み出されれば(1)、読出先ファイルに割り当てられた暗号鍵を暗号鍵テーブル１５から取り出し(2)、読み出されたデータを取り出された暗号鍵で復号化した上で(3)、C_APL1,2,3・・・・nに引き渡す(4)(5)。
【００４７】
暗号鍵テーブル１５は、各ファイルについての暗号鍵を、ファイル名と対応づけて示すテーブルである。暗号鍵テーブル１５における暗号鍵は、ECクライアントアプリ８によりファイルクリエイトがなされた場合、読み書きハンドラ１４により生成されて暗号鍵テーブル１５に登録される。登録された暗号鍵は、ファイルオープンがなされた場合、ファイルの読み書きがなされた場合に、参照される。
【００４８】
削除ハンドラ１６は、削除イベントが発生した際、駆動されるイベントハンドラである。削除イベントが発生した際、削除ハンドラ１６は、クリア処理管理テーブルを生成した後、ファイルを構成するファイルエントリー、FAT、実体部を、ヌルコードを用いて上書きしてゆく。本実施形態にいうファイル削除は、ファイルについての暗号鍵、ファイルエントリー、FATを上書きすること、ファイルの実体部を上書きすることの双方を含む。この上書きには、ヌルコードでの上書きである「ヌルクリア」や、所定のパターンによる上書きを含む。削除ハンドラ１６は、これらの処理のうち、前者を優先して行う。後者のものは、多大な処理時間を費やするので、他のイベントハンドラに委ねることがある。この多大な処理時間を費やするファイル実体部の上書きを、複数の空き時間に守秘的にかつ分散して行うことこそ、本発明の特徴である。
【００４９】
この特徴部分を強調して、API１０の内部構成を描いたのが図１３である。図１３において、削除イベントが発生した際、削除ハンドラ１６は矢印cw1に示すようにクリア処理管理テーブルを生成してTRM内メモリ３に書き込む。クリア処理管理テーブルは、上書きをどのように進めるかを示す進捗表である。ファイルエントリーやFATの上書きに先立ち、かかるクリア処理管理テーブルを生成するのは、クリアすべきフラグメントが存在するという事実、クリア処理がどこまで進捗しているかという事実を他のイベントハンドラに伝えるためである。非コマンド実行中ハンドラ１２、読み書きハンドラ１４、削除ハンドラ１６は、クリア処理管理テーブルが生成済みである場合、クリア処理管理テーブルに従って、フラグメントを、矢印nc1,2に示すように単位長Xだけ上書きして、その後クリア処理管理テーブルを更新する。この矢印nc1,2に示すように、本実施形態における上書きは、外部フラッシュメモリ２、内部EEPROM３の何れに格納されているファイルも対象となる。しかし、これら双方について説明を行うと煩雑になるので外部フラッシュメモリ２に格納されているファイルを対象にして説明を行う。また本実施形態における上書きは、ファイルの実体部がフラグメント化されていても、フラグメント化されていなくてもなされる。この双方について上書きの説明を行うのは煩雑なのでファイル実体部がフラグメント化されているケースのみについて説明を行う(そのため、実体部と表記すべきところは全て、フラグメントと統一して表記している。)。
【００５０】
図１４は、クリア処理管理テーブルの一例を示す図である。クリア処理管理テーブルは複数のレコードからなり、各レコードは、フラグメントのそれぞれに対応する。レコードは、対応するフラグメントがクリア中か、クリア済みであるかを示す『有効フラグ(図中の有効Flag)』、対応するフラグメントの『開始アドレス(図中の開始ADR)』、フラグメントがクリアの途中である場合、どこまでクリアされたかを示す『クリア済みアドレス(図中のクリア済みADR)』、フラグメントの『終了アドレス(図中の終了ADR)』という4つの項目からなる。対応するフラグメントの開始アドレス及び終了アドレスは、上述したFATやファイルエントリーに明記されているので、削除ハンドラ１６はこれらに基づき、開始アドレス及び終了アドレスを生成する。
【００５１】
API１０におけるイベント解析ハンドラ１１、非コマンド実行中ハンドラ１２、読み書きハンドラ１４、削除ハンドラ１６の特徴は、図１５、図１６〜図１７、図１８、図１９の処理手順を行うプログラムをコンピュータ記述言語で記述することにより生成される。図１５は、イベント解析ハンドラ１１の処理手順、図１６は、非コマンド実行中ハンドラ１２の処理手順、図１７は、読み書きハンドラ１４の処理手順、図１８は、削除ハンドラ１６の処理手順を示すフローチャートである。図１９は、ヌルクリア処理の処理手順を示すフローチャートである。ヌルクリアとは、フラグメントをXバイトだけ、ヌルコードを用いて上書きする処理である。このヌルクリア処理は、非コマンド実行中ハンドラ１２、読み書きハンドラ１４や削除ハンドラ１６からも実行されるので、ヌルクリア処理はサブルーチン化される。
【００５２】
図１５は、イベント解析ハンドラ１１の処理手順を示すフローチャートである。
本フローチャートのステップＳ１０１〜ステップＳ１０３は、イベントスキャンを行うループ処理である。このループ処理は、外部イベントが発生したか(ステップＳ１０１)、読み書きハンドラ１４、削除ハンドラ１６における処理が完了したか(ステップＳ１０２)、タイマハンドラ１３における処理が完了したか(ステップＳ１０３)を監視している。
【００５３】
ステップＳ１０４〜ステップＳ１０９は、ステップＳ１０１において外部イベント発生を検出した際に行うべき、一連の処理である。
ステップＳ１０４においてイベント解析を行う。この解析より、外部イベントがECコマンドであるか、そのECコマンドはどのような内容であるかが明らかになる。外部イベントがECコマンドであり、そのECコマンドの内容が外部フラッシュメモリ２上のファイル読み書きを命じるものなら、つまりECコマンドが読み書きコマンドであるなら、読み書きイベント及びコマンド開始イベントを発生して(ステップＳ１０６)、ステップＳ１０１〜ステップＳ１０３に戻る。
【００５４】
外部イベントがECコマンドであり、そのECコマンドの内容がフラッシュメモリ２上のファイル削除を命じるものなら、つまりECコマンドが削除コマンドであるなら、削除イベント及びコマンド開始イベントを発生して(ステップＳ１０８)、ステップＳ１０１〜ステップＳ１０３に戻る。
外部イベントが、これら以外のイベントであるなら、そのイベントに応じた処理を行い(ステップＳ１０９)、ステップＳ１０１〜ステップＳ１０３のループ処理に戻る。
【００５５】
ステップＳ１１０〜ステップＳ１１１は、読み書きハンドラ１４、削除ハンドラ１６における処理が完了した場合に行うべき処理を規定する。この処理とは、コマンド発行元であるECクライアントアプリ８にECレスポンスを出力し、API１０内部でコマンド終了イベントを発生するというものである。
ステップＳ１１２は、タイマハンドラ１３のタイムアウトが発生した場合に行うべき処理を規定する。この処理とは、停止イベントを発生するというものである(ステップＳ１１２)。
【００５６】
図１６は、非コマンド実行中ハンドラ１２の処理手順を示すフローチャートである。ステップＳ１〜ステップＳ２は、コマンド開始イベントが発生したか(ステップＳ１)、クリア処理管理テーブルが存在するか(ステップＳ２)の監視を行うループ処理である。このステップＳ１、ステップＳ２を一巡する度に、ステップＳ３でクリア処理管理テーブルの存否が判定され、クリア処理管理テーブルが存在すれば、ヌルクリアサブルーチンがコールされる(ステップＳ４)。非コマンド実行中ハンドラ１２によるフラグメントの上書きは、どのイベントハンドラも処理を行っていない空き時間になされるので、半導体メモリカードの物性により上書きに長い時間がかかったとしても、ユーザに、遅さを意識させることはない。  
【００５７】
図１７は、読出/書込ハンドラの処理手順を示すフローチャートである。ステップＳ２０において、読み書きの対象となるファイルに対応する暗号鍵を暗号鍵テーブル１５から取得する。ステップＳ２１では、書込処理かどうかの判定を行う。書込処理ならば、ECクライアントアプリ８からのデータを、ステップＳ２０で取得した暗号鍵を用いて暗号化し(ステップＳ２２)、暗号化データをセキュアフラッシュメモリ２に書き込む(ステップＳ２３)。
【００５８】
一方、ステップＳ２１で読出処理と判定されたなら、ECクライアントアプリ８から要求された暗号化データをセキュアフラッシュメモリ２から読み出し(ステップＳ２４)、セキュアフラッシュメモリ２から読み出されたデータを取得した暗号鍵で復号して、ECクライアントアプリ８に引き渡す(ステップＳ２５)。
ステップＳ２６はクリア処理管理テーブルが存在するかどうかの判定である。存在しなければ、処理を完了するが、存在すれば、ステップＳ２７においてヌルクリア処理を実行する。
【００５９】
図１８は、削除ハンドラの処理手順を示すフローチャートである。ステップＳ１１においてファイルフラグメントの数のレコード生成し、ステップＳ１２において各レコードの開始アドレス、終了アドレスにファイルフラグメントの開始アドレス、終了アドレスを設定する。ステップＳ１３では、各レコードの有効フラグをクリア中「1」に設定し、ステップＳ１４では、各レコードのクリア済みアドレスをファイルフラグメントの開始アドレスに設定する。
【００６０】
ステップＳ１５では、暗号鍵テーブル１５における複数暗号鍵のうち、削除すべきファイルに対応する暗号鍵を削除する。かかる暗号鍵の削除により、ファイルが復号不能な状態になる。
ステップＳ１６では、ファイルエントリーのヌルクリアを行い、その後ステップＳ１７で停止イベントが発生したかの判定を行う。もし停止イベントが発生すれば、その時点で削除ハンドラ１６の処理を終える。
【００６１】
停止イベントの発生がなければ、ステップＳ１８でFATのヌルクリアを行う。ファイルエントリー及びFATがヌルクリアされたので、ファイル実体部を構成するフラグメントはリンク関係を失い、バラバラの状態になる。
その後ステップＳ１９で停止イベントが発生したかの判定を行う。もし停止イベントが発生すれば、その時点で削除ハンドラ１６の処理を終える。停止イベントの発生がなければ、ステップＳ２０でファイルのフラグメントに対するヌルクリアを行う。
【００６２】
以降、このステップＳ１９〜ステップＳ２０の処理は、繰り返しなされる。これにより、タイマハンドラ１３のタイムアウトが発生するまで、削除ハンドラ１６によるフラグメントに対する上書きは継続してなされる。
図１９は、サブルーチン化されたヌルクリア処理の処理手順を示すフローチャートである。ステップＳ３１では、有効フラグが「1」のレコードであって、最先のものをレコードsに設定する。以降のステップＳ３３〜ステップＳ４０は、クリア済みアドレスから終了アドレスまでのデータ長が、単位長Xより長いか短いかによって場合分けを行う。ステップＳ３２は、この長短の判定であり、クリア済みアドレスに上書き長Xを加算したアドレスがレコードsの終了アドレスより小さいかどうかを判定する。ステップＳ３３〜ステップＳ３５は、クリア済みアドレスから終了アドレスまでのデータ長が単位長Xより短い場合の処理である。つまり、クリア済みアドレスからXバイトだけフラグメント上書きを外部メモリ制御部４に命じる(ステップＳ３３)。外部メモリ制御部４による上書き完了するのを待ち(ステップＳ３４)、完了すれば。クリア済みアドレスをクリア済みアドレス+Xのアドレスに更新する(ステップＳ３５)。
【００６３】
ステップＳ３６〜ステップＳ３９は、クリア済みアドレスから終了アドレスまでの長さが単位長Xより短い場合の端数処理である。この端数処理は、単位長Xを終了アドレスからクリア済みアドレスを引いた値に更新してから(ステップＳ３６)、クリア済みアドレスからXバイトだけヌルコード上書きする(ステップＳ３７)よう外部メモリ制御部４に命じ、上書き完が完了するのを待って、完了すればレコードsの有効フラグを「0」に設定する(ステップＳ３９)というものである。ステップＳ４０では、全てのレコードの有効フラグが「0」に設定されたかどうかを判定し、もしオール「0」なら、ステップＳ４１においてクリア処理管理テーブルを削除する。
【００６４】
ここで、ルートディレクトリに格納されたEOB001.SE1というファイルを削除する場合の非コマンド実行中ハンドラ１２、読み書きハンドラ１４、削除ハンドラ１６の動作の一例を図２０、図２１を参照しながら説明する。図２０は、図１０のように記憶されているファイルに対し、削除イベントが発生した際の削除ハンドラ１６の動作を示す図である。ファイルに対する削除イベントが発生したため、ファイル「EOB001.SE1」のフラグメントについてのクリア処理管理テーブルが生成され、ファイルエントリーの「ファイル名」「ファイル拡張子」「ファイル最初のクラスタ番号」及びFATEntry003,004,005,00A,00Cがヌルコードで上書きされる。かかる箇所の上書き後、削除ハンドラ１６は非コマンド実行中ハンドラ１２に処理を移す。
【００６５】
図２１は、非コマンド実行中ハンドラ１２、削除ハンドラ１６による上書きがなされた後の処理を示す図である。削除ハンドラ１６により、ファイルフラグメントについてのクリア処理管理テーブルが生成されたため、フラグメントが格納されているクラスタ003,004,005,00A,00Cがヌルコードにて上書きされていることがわかる。
以上のように本実施形態によれば、ECクライアントアプリ８により発行されたECコマンドがファイル削除に関するものなら、削除ハンドラ１６はタイマハンドラ１３がタイムアウトするまでヌルクリアを行い、タイマハンドラ１３のタイムアウトで削除ハンドラ１６は自身の処理を完了する。ECクライアントアプリ８によるECコマンド発行から、イベント解析ハンドラ１１によるECレスポンス発行までの期間を短く設定できるので、ECクライアントアプリ８における処理待ち時間を短縮化することができる。この短縮化により、ECクライアントアプリ８を操作するユーザを苛立たせることはない。
【００６６】
残りの上書き処理は、非コマンド実行中ハンドラ１２、読み書きハンドラ１４を始め、削除ハンドラ１６以外のイベントハンドラが、複数の空き時間に分散して行うので、EEPROMへの書き込みに時間がかかり、またフラグメントのデータサイズがたとえ大きくても、ユーザに処理の遅さを感じさせることなく、実体部に対する上書きを完遂することができる。
【００６７】
また暗号化ファイルのかなめとなる暗号鍵が真っ先にヌルクリアされるので、削除ハンドラ１６による削除の途中でSDポータブルデバイス３００からSDeXメモリカード４００を引き抜くという荒っぽい行為がユーザにより行われたとしても、暗号化ファイルの守秘レベルを高めることができる。
(第２実施形態)
第１実施形態は、開始アドレスから終了アドレスまで、つまり順方向にフラグメントをヌルコードで上書きするものであった。これに対し第２実施形態は、順方向の上書きに限られず様々な上書き手法を提案する。
【００６８】
第２実施形態にかかるクリア処理管理テーブルの一例を図２２に示す。本図に示すように、クリア処理管理テーブルのレコードには「クリア方法」という項目が追加されている。
項目「クリア方法」には、「順方向」「逆方向」「偶数・奇数」「奇数・偶数」という内容の設定が可能であり、クリア方法が順方向に設定されていると、ヌルコードによる上書きは、第１実施形態同様、クリア済みアドレスから終了アドレスまで順に行われる。一方クリア方法が逆方向に設定されていると、上書きはクリア済みアドレスから開始アドレスに向けて行われる。
【００６９】
クリア方法「偶数・奇数」とは、クリア済みアドレスから終了アドレスまでのうち、偶数アドレスを先にヌルクリアし、その後クリア済みアドレスから終了アドレスまでの奇数アドレスをヌルクリアするというものである。
クリア方法「奇数・偶数」とは、クリア済みアドレスから終了アドレスまでのうち、奇数アドレスを先にヌルクリアし、その後クリア済みアドレスから終了アドレスまでの偶数アドレスをヌルクリアするというものである。
【００７０】
クリア方法の何れを使うかは、フラグメントの個々について削除ハンドラ１６がサイクリックに決めてもよい。つまり、1つ目のフラグメントは「順方向」、2つ目のフラグメントは「逆方向」、3つ目、4つ目のフラグメントは「偶数・奇数方向」、「奇数・偶数方向」、5つ目以降のフラグメントは、「順方向」「逆方向」「偶数・奇数方向」、「奇数・偶数方向」というように決定していってもよい。
【００７１】
また、ランダムに決めてもよい。つまり削除ハンドラ１６が1から4までの乱数を生成し、この乱数に応じたクリア方法でヌルクリアを実行するのである。
更にECクライアントアプリ８から何等かのパラメーターを受け取り、このパラメータに応じてクリア方法を決めてもよい。
図２３は、第２実施形態に係るヌルクリアサブルーチンの処理手順を示す図である。ステップＳ３１では、有効フラグが「1」のレコードであって、最先のものをレコードsに設定し、ステップＳ５１では、レコードsのクリア方法を参照する。クリア方法が順方向なら、ステップＳ５０でヌルクリアを行う。このヌルクリアの手順は、図１９のフローチャートのステップＳ３２〜Ｓ４０と同様である。
【００７２】
クリア方法が逆方向なら(ステップＳ５３)、図２４のフローチャートでヌルクリアを行う(ステップＳ６０)。
クリア方法が偶数・奇数なら(ステップＳ５４)、クリア済みアドレス以降の偶数アドレスを、ヌルクリアする(ステップＳ５５)。このヌルクリアの手順は、図１９のフローチャートのステップＳ３２〜Ｓ４０と同様である。その後、偶数アドレスのヌルクリアが完了したなら(ステップＳ５６)、クリア済みアドレス以降の奇数アドレスを、ステップＳ５７でヌルクリアする(ステップＳ５７)。このヌルクリアの手順は、図１９のフローチャートのステップＳ３２〜Ｓ４０と同様である。
【００７３】
クリア方法が奇数・偶数なら(ステップＳ５８)、クリア済みアドレス以降の奇数アドレスを、ステップＳ５７でヌルクリアする。このヌルクリアの手順は、図１９のフローチャートのステップＳ３２〜Ｓ４０と同様である。その後、奇数アドレスのヌルクリアが完了したなら(ステップＳ５９)、クリア済みアドレス以降の偶数アドレスを、ステップＳ５５でヌルクリアする。このヌルクリアの手順は、図１９のフローチャートのステップＳ３２〜Ｓ４０と同様である。
【００７４】
図２４は、逆方向でのヌルクリアの処理手順を示すフローチャートである。図１９のヌルクリアサブルーチンとの違いは、開始アドレスと、終了アドレスとの関係が逆になっている点である。ステップＳ６１では、クリア済みアドレスから上書き長Xを差し引いたアドレスがレコードsの開始アドレスより大きいかどうかを判定する。もし大きければ、クリア済みアドレス-XからXバイトだけフラグメント上書きを外部メモリ制御部４に命じる(ステップＳ６２)。外部メモリ制御部４による上書き完了するのを待ち(ステップＳ６３)、完了すれば、クリア済みアドレスをクリア済みアドレス−Xのアドレスに更新する(ステップＳ６４)。
【００７５】
クリア済みアドレスから上書き長Xを減じたアドレスがレコードsの開始アドレスより小さければ、クリア済みアドレス−開始アドレスの値を変数Xに設定して(ステップＳ６５)、ステップＳ６６において開始アドレスからXバイトだけヌルコード上書きするよう外部メモリ制御部４に命じる。ステップＳ６７では、上書き完が完了するのを待ち、完了すれば、ステップＳ６８において、レコードsの有効フラグを「1」に設定する。ステップＳ６９では、全てのレコードの有効フラグが「0」に設定されたかどうかを判定し、もしオール「0」なら、ステップＳ７０においてクリア処理管理テーブルを削除する。
【００７６】
以上のように本実施形態によれば、クリア方法をフラグメント毎に設定することが可能なので、様々なクリア方法の組み合わせにより削除前のフラグメント内容の漏洩を避けることができる。
(第３実施形態)
第３実施形態は、第１実施形態におけるヌルコード上書きに一種の歯止めをかける実施形態である。どのようなケースで歯止めをかけるかというと、半導体メモリカードがカードリーダライタ２００から、電力供給を受けている際、上書きは行わないというものである。カードリーダライタ２００を介してECサーバ１００をアクセスする際、SDeXメモリカード４００はSDポータブルデバイス３００背面の螺旋アンテナから電力供給を受けることは第１実施形態で示した通りである。電波による電力供給は、不安定かつ小電力であり、余計な処理負荷を発生させない方が望ましい。
【００７７】
そこで第３実施形態においてSDポータブルデバイス３００及び削除ハンドラ１６は、以下の処理を行う。
SDポータブルデバイス３００は、カードリーダライタ２００に接近した際、非接触式の電力供給を受けていることを通知する拡張SDコマンドを、SDeXメモリカード４００に出力する。一方、カードリーダライタ２００から離反した際、非接触式の電力供給が解除された旨を通知する拡張SDコマンドを、SDeXメモリカード４００に出力する。カードリーダライタ２００への接近・離反は、カードリーダライタ２００からのポーリングコマンドを受信したかどうかの判定で検出できる。
【００７８】
削除ハンドラ１６は、非接触式電力供給を通知する拡張SDコマンドをSDポータブルデバイス３００から受信することで、非接触式電力供給モードに移行する。このモードは、削除イベントが発生した際、ファイルエントリー・FATのバックアップをとって、ファイルエントリー・FATの上書きのみ行うというものである。ファイルエントリー・FATのバックアップをとるだけでクリア処理管理テーブルは生成しない。そのため、他のイベントハンドラは、ヌルクリアを行うことはない。
【００７９】
以降、非接触式電力供給の解除を通知する拡張SDコマンドがSDポータブルデバイス３００から発行されれば、削除ハンドラ１６はこの非接触式電力供給モードを終了して、ファイルエントリー・FATのバックアップに基づきクリア処理管理テーブルの生成を行う。クリア処理管理テーブルの生成により、他のイベントハンドラは、ヌルクリアを開始する。
以上のように本実施形態によれば、カードリーダライタ２００からの電力供給での動作時において、実体部に対するヌルクリアを行わないので、余計な処理負荷を生じさせないで済む。このため、SDeXメモリカード４００の安定動作を実現することができる。
【００８０】
(第４実施形態)
第１実施形態〜第３実施形態において耐タンパモジュールの内部メモリ３及び外部メモリ２は、それぞれEEPROM及びフラッシュメモリで構成していた。これに対し第４実施形態では、耐タンパモジュールの内部メモリ３及び外部メモリ２を、2つのメモリモジュールで構成する。図２５は、第４実施形態に係るメモリモジュールの構成を示す図である。本図において、EEPROM３a、フラッシュメモリ２aは、主たるメモリモジュールであり、第１実施形態〜第６実施形態に示したものと同じである。第４実施形態では、このメモリモジュールに加え、予備のメモリモジュール２b,３bが内部メモリ３及び外部メモリ２に追加されている。この予備のメモリモジュール２b,３bは強誘電体メモリ(Ferro Electric Random Access Memory(FeRAM))で構成されており、その性能はフラッシュメモリと大きく異なる。図２６は、フラッシュメモリ、FeRAMの性能比較を示す図である。本図を参照すると、フラッシュメモリは価格面では低廉であり、大容量化には向いているが(図中の○)、ブロック単位の書き込みしか行えない(※1)。このブロックのサイズは、フラッシュメモリが大容量になればそれにつれ大きくなるので、小サイズのデータを書き込む場合、ロスが大きくなる。また書き込み時間は長く(10000ns)、書き込み回数も少ない(1,000,000回)。そして書込時には、既に格納されているデータを一旦消去して書き込みを行うため、書き込み性能は不安定となる(※2)。
【００８１】
一方、FeRAMは価格が高く大容量化には不向きであるが(△)、書き込み単位が1バイトであり、また書込時間は高速である(30〜100ns)。また書き換え回数も多い。
かかる性能差があることから、予備のメモリモジュールをFeRAMで構成し、ファイルエントリーやFAT等、更新頻度が高いデータをメモリモジュールに配せば、フラッシュメモリにおける書込性能を補うことができる。図２７は、ファイルエントリーやFAT、クリア処理管理テーブルというような、更新頻度が高いデータが配されたFeRAMを示す図である。
【００８２】
以上のように本実施形態によれば、FeRAMで構成された予備のメモリモジュールにファイルエントリー、FAT等サイズが小さく更新頻度が高いデータを格納するので、ファイルエントリーやFATの高速書き換えを実現することができる。
FeRAMには、他にワンスタイムリードという特性がある。これは、格納されているデータを一度読み出せば、その格納内容は破壊されるという特性である(図の※4)。これは守秘性を徹底する意味では好ましいが、データの読み出し時には、再度データを書き込む必要があり、結局書込回数が増えてしまう。この読出時のデータ破壊という特性を補うなら、磁気共鳴メモリ(Magnetoresitive RAM(MRAM))を採用することが望ましい。
【００８３】
(第５実施形態)
第４実施形態では予備のメモリモジュールをFeRAMで構成していたが、第５実施形態は耐タンパモジュールの内部メモリ３をFeRAMで構成するという態様に関する。図２８は、第５実施形態に係るTRM内メモリ３の内部を示す図である。耐タンパモジュールの内部メモリ３は小サイズなので、FeRAMで構成しても、大きなコストアップにならない。尚、第５実施形態ではTRM内メモリ３をFeRAMのみで構成するとしたが、MRAMのみで構成してもよい。
【００８４】
(第６実施形態)
本実施形態は、ファイルの管理情報を、ファイル実体部用の暗号鍵とは別の暗号鍵で暗号化しておく実施形態である。TRM１におけるTRM内メモリ３には、この管理情報用の暗号鍵も記録されている。そして、ファイル削除が命じられた際、削除ハンドラ１６は、第１実施形態の処理に加え、前記管理情報用の暗号鍵を上書きする処理を行う。この上書きは、実体部用の暗号鍵の上書きより早くなされる。
【００８５】
管理情報を専用の暗号鍵で暗号化しておくことにより、たとえ管理情報のサイズが大きくても、当該ファイルの削除が命じられた場合、即座にファイルを読み出し不可能な状態にすることができる。
(備考)
以上の説明は、本発明の全ての実施行為の形態を示している訳ではない。下記(A)(B)(C)(D)・・・・・の変更を施した実施行為の形態によっても、本発明の実施は可能となる。但し、請求項に係る発明に含まれる他の具体例であって、本明細書及び図面、及び、出願時の技術常識をもって当業者が実施できる程度のものは、その記載を省略している。
【００８６】
(A)尚、ECクライアントアプリをアプリケーションプログラムの一例として説明したが、他のEアプリケーションプログラムでもよい。鉄道、航空、バス、高速道路等の交通機関が運営するサーバ装置上のサーバアプリケーション、これに対応するクライアントアプリケーションであってもよい。これにより、改札業務や搭乗手続きといった用途でもSDeXメモリカード４００を利用することができる。
【００８７】
また、官公庁や地方公共団体が運営するサーバ装置上のサーバアプリケーション、これに対応するクライアントアプリケーションであってもよい。これにより、住民表や各種証明、登記等の用途にSDeXメモリカード４００を利用することができる。
(B)図１５〜図１９、図２３、図２４に示したプログラムによる情報処理は、CPU、EEPROMといったハードウェア資源を用いて具体的に実現されている。つまり、プログラムと、ハードウェアとが協働した具体的手段が、使用目的に応じた情報処理を行うことにより、第１実施形態〜第６実施形態に示したSDeXメモリカード４００は構築される。
【００８８】
プログラムによる情報処理が、ハードウェア資源を用いて具体的に実現されていることから、上記フローチャートに処理手順を示したプログラムは、自然法則を利用した技術的思想の創作と捉えることができ、プログラム単体で発明として成立する。つまり図１５〜図１９、図２３、図２４に示した処理手順は、本発明に係るプログラムの実施行為の形態を開示するものである。尚、第１実施形態〜第６実施形態は、SDeXメモリカード４００に組み込まれた態様で、本発明に係るプログラムの実施行為についての実施形態を示したが、SDeXメモリカード４００から分離して、第１実施形態〜第６実施形態に示したプログラム単体を実施してもよい。プログラム単体の実施行為には、これらのプログラムを生産する行為(1)や、有償・無償によりプログラムを譲渡する行為(2)、貸与する行為(3)、輸入する行為(4)、双方向の電子通信回線を介して公衆に提供する行為(5)、店頭展示、カタログ勧誘、パンフレット配布により、プログラムの譲渡や貸渡を、一般ユーザに申し出る行為(6)がある。
【００８９】
双方向の電子通信回線を介した提供行為(5)の類型には、提供者が、プログラムをユーザに送り、ユーザに使用させる行為や(プログラムダウンロードサービス)、プログラムを提供者の手元に残したまま、そのプログラムの機能のみを電子通信回線を通じて、ユーザに提供する行為(機能提供型ASPサービス)がある。
(C)図１５〜図１９、図２３、図２４のフロ−チャ−トにおいて時系列に実行される各ステップの「時」の要素を、発明を特定するための必須の事項と考える。そうすると、これらのフロ−チャ−トによる処理手順は、制御方法の使用形態を開示していることがわかる。これらのフロ−チャ−トこそ、本発明に係る制御方法の使用行為についての実施形態である。各ステップの処理を、時系列に行うことで、本発明の本来の目的を達成し、作用及び効果を奏するよう、これらのフロ−チャ−トの処理を行うのであれば、本発明に係る半導体メモリカードの制御方法の実施行為に該当することはいうまでもない。
【００９０】
(D)第１実施形態〜第６実施形態において耐タンパモジュール内外の不揮発メモリをEEPROMとして説明したが、不揮発メモリであればFe-RAM等他のものを採用してもよい。
(E)SDポータブルデバイス３００は、携帯電話タイプのものを一例にして説明したが、民生用の携帯オーディオ機器やSTB(Set Top Box)や携帯電話であってもよい。
本願の請求項に係る各発明は、以上に記載した複数の実施形態及びそれらの変形形態を拡張した記載、ないし、一般化した記載としている。拡張ないし一般化の程度は、本発明の技術分野の、出願当時の技術水準の特性に基づく。
【００９１】
しかし請求項に係る各発明は、従来技術の技術的課題を解決するための手段を反映したものであるから、請求項に係る各発明の技術範囲は、従来技術の技術的課題解決が当業者により認識される技術範囲を超えることはない。故に、本願の請求項に係る各発明は、詳細説明の記載と、実質的な対応関係を有する。
【産業上の利用可能性】
【００９２】
本発明に係る半導体メモリカードは、削除されたファイルの守秘性を高度に保つことができるので、守秘が求められる様々なデータの格納に最適であり、民生機器業界を初め産業界の様々な分野で利用される可能性を有する。
【図面の簡単な説明】
【００９３】
【図１】SDeXメモリカードの使用環境を示す図。
【図２】本発明にかかる半導体メモリカードの内部構成を示す図。
【図３】TRM１内のハードウェア構成を示す図。
【図４】図３のTRM１内のマスクROM６とCPU７とからなる部分を、ソフトウェア構成に置き換えて描いた図。
【図５】外部フラッシュメモリ２及び内部EEPROM３の論理フォーマットを示す図。
【図６】ECクライアントアプリの拡張領域２２、認証領域２３、非認証領域２４の内部構成を示す図。
【図７】パーティションの共通構成を示す図。
【図８】（ａ）二重化FATの構成を示す図。
【００９４】
（ｂ）ルートディレクトリィエントリーの構成を示す図。
（ｃ）ユーザ領域の構成を示す図。
【図９】EOB001.SE1をクラスタサイズに合わせて5つにフラグメント化し、各フラグメントを、クラスタ003,004,005,00A,00Cに格納する状態を想定した図。
【図１０】EOB001.SE1が複数のクラスタに記録されている場合のディレクトリエントリー及びFATについての設定例を示す図。
【図１１】API１０の内部を示す図。
【図１２】（ａ）読み書きハンドラ１４によるファイル書き込みがどのように行われるかを示す図。
【００９５】
（ｂ）読み書きハンドラ１４によるファイル読み出しがどのように行われるかを示す図。
【図１３】削除ハンドラ１６の特徴を中心にて、API１０の内部構成を描いた図。
【図１４】クリア処理管理テーブルの一例を示す図。
【図１５】イベント解析ハンドラ１１の処理手順を示すフローチャート。
【図１６】非コマンド実行中ハンドラの処理手順を示すフローチャート。
【図１７】読出/書込イベントハンドラの処理手順を示すフローチャート。
【図１８】削除ハンドラの処理手順を示すフローチャート。
【図１９】サブルーチン化されたヌルクリア処理の処理手順を示すフローチャート。
【図２０】図１０のように記憶されているファイルに対し、削除イベントが発生した際の削除ハンドラ１６の動作を示す図。
【図２１】非コマンド実行中ハンドラ１２、削除ハンドラ１６による上書きがなされた後の処理を示す図。
【図２２】第２実施形態にかかるクリア処理管理テーブルの一例を示す図。
【図２３】第２実施形態に係るヌルクリアサブルーチンの処理手順を示す図。
【図２４】逆方向でのヌルクリアの処理手順を示すフローチャート。
【図２５】第４実施形態に係るメモリモジュールの構成を示す図。
【図２６】フラッシュメモリ、FeRAMの性能比較を示す図。
【図２７】ファイルエントリーやFAT、クリア処理管理テーブルというような、更新頻度が高いデータが配されたFeRAMを示す図。
【図２８】第５実施形態に係るTRM内メモリ３の内部を示す図。
【符号の説明】
【００９６】
１    TRM
２    外部EEPROM
３    内部EEPROM
４    外部メモリアクセス部
５    HIM
６    マスクROM
７    CPU
８    クライアントアプリ
９    仮想マシン
１０    API
１１    イベント解析ハンドラ
１２    非コマンド実行中ハンドラ
１３    タイマハンドラ
１４    読み書きハンドラ
１５    削除ハンドラ
２１    アプリケーションプログラムの使用領域
２２    セキュア領域
２３    認証領域
２４    非認証領域
１００    ECサーバ
２００    カードリーダライタ
２１０    無線基地局
３００    ポータブルデバイス
【図１】
2004259265.tif 000003
【図２】
2004259265.tif 000004
【図３】
2004259265.tif 000005
【図４】
2004259265.tif 000006
【図５】
2004259265.tif 000007
【図６】
2004259265.tif 000008
【図７】
2004259265.tif 000009
【図８】
2004259265.tif 000010
【図９】
2004259265.tif 000011
【図１０】
2004259265.tif 000012
【図１１】
2004259265.tif 000013
【図１２】
2004259265.tif 000014
【図１３】
2004259265.tif 000015
【図１４】
2004259265.tif 000016
【図１５】
2004259265.tif 000017
【図１６】
2004259265.tif 000018
【図１７】
2004259265.tif 000019
【図１８】
2004259265.tif 000020
【図１９】
2004259265.tif 000021
【図２０】
2004259265.tif 000022
【図２１】
2004259265.tif 000023
【図２２】
2004259265.tif 000024
【図２３】
2004259265.tif 000025
【図２４】
2004259265.tif 000026
【図２５】
2004259265.tif 000027
【図２６】
2004259265.tif 000028
【図２７】
2004259265.tif 000029
【図２８】
2004259265.tif 000030