説明

メモリカード、プロセッサモジュールおよびホスト機器の制御方法

【課題】 暗号キーの管理などの煩雑な作業を伴わずに、データの漏えいや改ざんに対して保護することが可能なメモリカードを提供することを目的とする。
【解決手段】 ユーザデータを格納するユーザデータ領域110と、データ重要度を格納するデータ重要度格納領域114と、データIDを格納するデータID格納領域115とを有する不揮発性半導体メモリ108と、ホスト機器101からユーザデータ領域110へのアクセスが発生した場合に、そのアクセス対象のデータに対応するデータ重要度およびデータIDを取得し、ホスト機器101からホストレベルおよびホストIDを取得する管理手段116と、データ重要度、データID、ホストレベルおよびホストIDに基づいて、ホスト機器101からのアクセスの許否を判断する比較手段117とを具備することを特徴としている。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、メモリカードに関し、特にプロセッサモジュールを搭載したメモリカードに関する。また、本発明は、上記メモリカードにアクセスするホスト機器の制御方法に関する。
【背景技術】
【0002】
近年、携帯電話やモバイル機器などの市場が急速に拡大しており、それに伴って様々なサービスが提供されて電子化データがやりとりされている。また、従来は紙に記録して伝えられていた手紙や報告書などが電子化され、病院のカルテといった重要かつ個人的な情報も病院内といったクローズなシステムでは電子化が進んでいる。今後は、このような内部データも電子化データのまま外部のシステムとやりとりする方向に進んでゆくと考えられる。例えば、病院が発行する処方薬を電子化することで、紙の処方箋で発生していた文字の読みとりミスによる薬品の取り違えや投薬量の間違いなどを減少させることができ、より正確な投薬管理ができるようになる。
【0003】
これらの電子化データを保存し、持ち運ぶためのストレージデバイスとして、コンパクトで大容量なメモリカードは適当なツールである。
【0004】
なお、特許文献1には、半導体メモリカードとホスト機器にIDを設けることで、共通のIDを持つ半導体メモリカードとホスト機器との間でのみでデータ操作が可能となるようにしたものが記載されている。
【特許文献1】特開平6−139422号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
このようにメモリカードの応用例が拡大してくると、データの漏えいや改ざんに対する防護が必要となる。例えば、メモリカード内の個人情報を他人に読まれてしまったり、搾取目的で投薬の内容を改ざんしたり、投薬情報を誤って消してしまったりする危険性がある。これらの危険性に対しては、現時点ではあまり有効な手だてがなされていない。例えば、特許文献1に記載された技術では、共通のIDを持つ半導体メモリカードとホスト機器との間でのみでデータ操作が可能としているため、不特定多数のホスト機器でも読み出し可能な条件を満足することは困難である。
【0006】
また、データを暗号化して管理することもデータの漏えいや改ざんに対して効果的ではあるが、鍵の管理や復号化ソフトウエアが必要になることなどからあまり一般化しておらず、どこでも通用するとは言い難い。また、上述の例で言えば、PGPに代表されるような公開暗号鍵方式では、病院や薬局別に暗号化キーを管理する必要があり、数多くの薬局や病院に対して別々な暗号化キーを用意することは現実的には困難である。
【0007】
本発明は、以上のことを鑑みてなされたものであり、暗号キーの管理などの煩雑な作業を伴わずに、データの漏えいや改ざんに対して保護することが可能なメモリカードを提供することを目的とする。また、本発明は、上記メモリカードに搭載されるプロセッサモジュールを提供することを目的とする。更に、本発明は、上記メモリカードにアクセスするホスト機器の制御方法を提供することを目的とする。
【課題を解決するための手段】
【0008】
上記目的を達成するために、本発明に係るメモリカードは、ホスト機器に装着され、前記ホスト機器からアクセスされるメモリカードにおいて、ユーザデータを格納するユーザデータ領域と、前記ユーザデータ領域における所定の単位ごとに対して設定されたデータ重要度を格納するデータ重要度格納領域と、前記ユーザデータ領域における所定の単位ごとに対して設定されたデータIDを格納するデータID格納領域とを有する不揮発性半導体メモリと、前記ホスト機器から前記ユーザデータ領域へのアクセスが発生した場合に、そのアクセス対象のデータに対応するデータ重要度およびデータIDを取得し、前記ホスト機器からホストレベルおよびホストIDを取得する管理手段と、前記管理手段が取得したデータ重要度、データID、ホストレベルおよびホストIDに基づいて、前記ホスト機器からのアクセスの許否を判断する比較手段とを具備することを特徴としている。
【0009】
また、本発明に係るプロセッサモジュールは、ホスト機器に装着して使用するメモリカードに搭載され、不揮発性半導体メモリを制御するプロセッサモジュールにおいて、前記ホスト機器から前記不揮発半導体メモリへのアクセスが発生した場合に、そのアクセス対象のデータに対応するデータ重要度およびデータIDを取得し、前記ホスト機器からホストレベルおよびホストIDを取得する管理手段と、前記管理手段が取得したデータ重要度、データID、ホストレベルおよびホストIDに基づいて、前記ホスト機器からのアクセスの許否を判断する比較手段とを具備することを特徴としている。
【0010】
更に、本発明に係るホスト機器の制御方法は、メモリカードが装着され、前記メモリカードにアクセスするホスト機器の制御方法において、前記メモリカードにアクセスする場合に、当該ホスト機器のアクセス能力を示すホストレベルと、アクセス対象のデータの管理者を示すユーザIDを前記メモリカードに送信する第1のステップと、前記メモリカードへのアクセスの許否を前記メモリカードからレスポンスとして受信する第2のステップとを具備することを特徴としている。
【発明の効果】
【0011】
本発明によれば、暗号キーの管理などの煩雑な作業を伴わずに、データの漏えいや改ざんに対して保護することが可能なメモリカードを提供することができる。また、本発明によれば、上記メモリカードに搭載されるプロセッサモジュールを提供することができる。更に、本発明によれば、上記メモリカードにアクセスするホスト機器の制御方法を提供することができる。
【発明を実施するための最良の形態】
【0012】
以下に、本発明に係るメモリカード、プロセッサモジュールおよびホスト機器の制御方法についての実施例を図1乃至16を参照して説明する。
【0013】
(第1の実施の形態)
図1は、第1の実施の形態に係るホスト機器とメモリカードの概略構成を示す図面である。ホスト機器101は、メモリカード102が複数装着可能なカードインタフェース103と、ホスト機器101の制御中枢をなすCPU104と、RAM(Random access memory)などで構成されるシステムメモリ105と、ホスト機器101の動作などを表示する表示装置106と、ホスト機器101のデータ読み出し能力を表すホストレベルを格納したROM(Read only memory)107とを備えている。ホスト機器101の例としては、パーソナルコンピュータ(以下、PCと称す)などの電子機器が挙げられる。
【0014】
ホストレベルは、メモリカード102内のデータにホスト機器101がアクセスするための能力を示す値であり、ホスト機器101の製造時に付加される固有の値である。ここで、ホスト機器101のホストレベルについて説明する。ホストレベルは、ホスト機器101からメモリカード102に通知され、メモリカード102のユーザデータに対する読み出しや書き込み、消去操作といったアクセス許可の可否の判定に使用される。ホストレベルが高いほど、重要度が高く設定されたメモリカード102内のユーザデータにホスト機器101がアクセスすることが可能となる。以下では、ホストレベルのサイズとして1Byteが割り当てられ、最も低いホストレベルが0x00に、最も高いホストレベルが0xFEに設定されているとする。また、0xFFの値は特別に使用できないものとする。
【0015】
ホストレベルはホスト機器101のユーザ区分により異なる設定値が定められている。ここでは公共性を勘案して、例えば一般ユーザのPC等の個人で使用するホスト機器では0x40以下、官公庁や病院等の公共性の高いところのホスト機器では一般ユーザよりもレベルの高い0x90以上といった区分がなされているものとする。また、ホスト機器101は、メモリカード102にデータを書き込む際には、データの秘匿レベルを表すデータレベルとデータの管理者を示すユーザIDをデータに付与する。このデータレベルとユーザIDは、ホスト機器101のユーザにより任意に指定される。
【0016】
データレベルは、メモリカード102にデータを書き込む際に、データの重要度を設定するためにホスト機器101から通知される値である。以下では、データレベルのサイズとして1Byteが割り当てられ、最も低いデータレベルが0x00に、最も高いデータレベルが0xFEに設定されているとする。また、0xFFの値は特別に使用できないものとする。
【0017】
ユーザIDは、ホスト機器101がメモリカード102内のユーザデータにアクセスする際に、ユーザデータの管理者を表す値としてホスト機器101からメモリカード102に通知される値である。以下では、データレベルのサイズとして8Byteが割り当てられ、0xFFFFFFFFFFFFFFFFの値は特別に指定できないものとする。また、ユーザID=0x0000000000000000はユーザIDが指定されていない場合を示す。更に、データレベル=0x00の場合はユーザID=0x0000000000000000に設定され、ユーザIDが指定されないものとする。すなわち、メモリカード102に書き込むユーザデータに対して、読み出し・書込みの制限を付けないことを示す。
【0018】
メモリカード102は、ホスト機器101のカードインタフェース103に装着されることにより電源の供給を受けて動作し、ホスト機器101からのアクセスに応じた処理を行う。このメモリカード102は、NAND型フラッシュメモリ108とプロセッサモジュール109を有している。
【0019】
NAND型フラッシュメモリ108は、例えば、通常の消去がブロック(複数ページ)単位で行われる不揮発性の半導体メモリである。このブロック単位は、例えば16kByteである。また、NAND型フラッシュメモリ108は、例えば、ページと称する単位で、データの書き込みおよび読み出しが行われるようになっている。このNAND型フラッシュメモリ108は、例えば0.09μmプロセス技術を用いて製作される。即ち、NAND型フラッシュメモリ108のデザインルールは、0.1μm未満となっている。なお、NAND型フラッシュメモリ108は、一つのメモリセルに1ビットの情報を記憶する2値メモリであってもよいし、一つのメモリセルに2ビット以上の情報を記憶する多値メモリであってもよい。また、メモリカード102を実用上有効な製品とするためには、NAND型フラッシュメモリ108の記憶容量は1Gbyte以上であることが望ましい。
【0020】
NAND型フラッシュメモリ108のデータが書き込まれる領域(データ記憶領域)は、図1に示すように、保存されるデータに応じて複数の領域に区分けされている。NAND型フラッシュメモリ108は、データ記憶領域として、ユーザデータを格納するユーザデータ領域110と、メモリカード102に関する管理情報を主に格納するための管理データ領域111と、機密データを格納する機密データ領域112と、重要なデータを格納するための保護データ領域113とを備えている。
【0021】
ユーザデータ領域110は、メモリカード102を使用するユーザが自由にアクセスおよび使用することが可能な領域である。保護データ領域113は、メモリカード102に接続されたホスト機器101との相互認証によりホスト機器101の正当性が証明された場合にのみアクセスが可能となる領域である。
【0022】
管理データ領域111は、メモリカード101のセキュリティ情報やメディアIDなどのカード情報が格納されている領域である。機密データ領域112は、暗号化に用いる鍵情報や認証時に使用する機密データが保存されており、ホスト機器101からはアクセス不可能な領域である。
【0023】
また、NAND型フラッシュメモリ108は、データ重要度(データレベル)を格納するデータ重要度格納領域114と、データIDを格納するデータID格納領域115とを備えている。データ重要度とデータIDは、ユーザデータ領域110のセクター(例えば、512Byte)や消去ブロックといった任意の単位ごとに対して付与される。以下では、便宜上、データ重要度とデータIDが消去ブロック単位ごとに対して付与される場合を例に挙げて説明する。
【0024】
データ重要度は、データ重要度格納領域114に格納されたデータレベルをメモリカード102が取得したものであり、ホスト機器101がアクセスしようとするユーザデータの重要度を示す値である。本実施形態においては、データ重要度とホストレベルとの大小が、ユーザデータに対する読み出し・書込み動作の許可・不許可の判断材料の1つとなっている。データ重要度のサイズや数値範囲はデータレベルと同一である。ただし、データ重要度=0xFFが当該ユーザデータ領域110のブロックが消去済みであることを示す点においてデータ重要度はデータレベルと異なっている。また、データ重要度=0x00の場合は、当該ブロックのユーザデータに対して読み出し・書込みの制限がないことを示している。すなわち、データ重要度=0x00の場合は、ホストレベルを持たない従来のホスト機器を含むすべてのホスト機器から読み出しと書込みが可能となる。
【0025】
データIDは、データID格納領域115に格納されたユーザIDをメモリカード102が取得したものであり、ホスト機器101がアクセスしようとするユーザデータの管理者のIDを示す値である。本実施形態においては、データIDとユーザIDとの一致・不一致が、ユーザデータに対する読み出し・書込み動作の許可・不許可の判断材料の1つとなっている。データIDのサイズや制限条件はユーザIDと同一である。ただし、データID=0xFFFFFFFFFFFFFFFFが当該ユーザデータ領域110のブロックが消去済みであることを示す点においてデータIDはユーザIDと異なっている。また、データID=0x0000000000000000は当該ブロックのユーザデータにユーザIDが指定されていなかったことを示す。すなわち、データID=0x0000000000000000またはデータID=0xFFFFFFFFFFFFFFFFの場合は、当該ブロックのユーザデータに対して読み出し・書込みの制限がないことを示している。
【0026】
プロセッサモジュール109は、NAND型フラッシュメモリ108内の物理状態を管理するものとして構築されている。プロセッサモジュール109は、NAND型フラッシュメモリ108のデータ重要度格納領域114とデータID格納領域115を管理する重要度・ID管理手段116と、重要度・ID管理手段116が通知するユーザIDとデータIDとの一致とホストレベルとデータ重要度とを比較する重要度・ID比較手段117と、メモリカード102の主制御部をなすコントローラ118と、制御プログラムが格納されているROM119と、コントローラ118のワーク・バッファメモリとして使用されるSRAM(Static random access memory)120と、メモリカード102のインタフェース用端子121と接続されメモリカード102とホスト機器101とのインタフェースをなすIOインタフェース122と、NAND型フラッシュメモリ108との間でデータの授受を行うメモリインタフェース123とを備えている。
【0027】
重要度・ID管理手段116は、ホスト機器101から送信されてくるコマンドに付与されているホストレベルとデータレベルとユーザIDを取得する。重要度・ID管理手段116は、ホスト機器101から取得したデータレベルをデータ重要度格納領域114に格納し、ユーザIDをデータID格納領域115に格納する。また、重要度・ID管理手段116は、ホスト機器101から送信されてくるホストレベルとユーザIDを重要度・ID比較手段117に通知する。ここで、ホスト機器101からホストレベルとユーザIDが通知されなかった場合は、ホストレベル=0x00、データレベル=0x00、ユーザID=0x0000000000000000として処理を行う。更に、重要度・ID管理手段116は、データ重要度格納領域114からデータ重要度を取得し、データID格納領域115からデータIDを取得して、重要度・ID比較手段117に通知する。
【0028】
重要度・ID比較手段117は、重要度・ID管理手段116が取得したデータIDとユーザIDとを比較する。また、重要度・ID比較手段117は、重要度・ID管理手段116が取得したデータ重要度とホストレベルとの大小を比較する。重要度・ID比較手段117は、これらの比較結果に基づいてデータ書き込みと読み出しの許否を判断し、その判断結果をコントローラ118に通知する。
【0029】
重要度・ID比較手段117の比較・判断方法は以下の通りである。ユーザIDとデータIDとが一致している場合は、ホストレベルとデータ重要度とを比較する。ホストレベルがデータ重要度以上である場合(ホストレベル≧データ重要度)は、データ書き込みと読み出しの両方が許可される。一方、ホストレベルがデータ重要度未満である場合(ホストレベル<データ重要度)は、データ読み出しのみが許可され、データ書き込みは禁止される。
【0030】
ユーザIDとデータIDとが不一致の場合も、ユーザIDとデータIDとが一致している場合と同様に、ホストレベルとデータ重要度とを比較する。ホストレベルがデータ重要度以上である場合は、データ読み出しのみが許可され、データ書き込みは禁止される。一方、ホストレベルがデータ重要度未満である場合は、データ書き込みと読み出しの両方が禁止される。
【0031】
また、データID=0xFFFFFFFFFFFFFFFFの場合は、データ書込みと読み出しの両方が許可される。ただし、データID=0xFFFFFFFFFFFFFFFFは当該ブロックが消去済みであることを示すため、データを読み出す場合は、読み出されたデータは消去済みのデータとなる。データID=0x0000000000000000の場合も、データ書込みと読み出しの両方が許可される。ユーザID=0x0000000000000000は、ユーザデータに対して読み出し・書込みの制限を付けないことを示すからである。
【0032】
コントローラ118は、メモリカード102全体の動作を制御するものである。コントローラ118は、例えばメモリカード102が電源供給を受けたときに、ROM119に格納されているファームウェア(制御プログラム)に基づいて所定の処理を実行することにより、各種のテーブルをSRAM120上に作成する。コントローラ118は、またホスト機器101から書き込みコマンド、読み出しコマンド、消去コマンドを受け取り、NAND型フラッシュメモリ108に対して所定の処理を実行したり、SRAM120を通じたデータ転送処理を制御したりする。
【0033】
ROM119は、コントローラ118により制御される制御プログラムなどを格納するメモリである。SRAM120は、コントローラ118の作業エリアとして使用され、制御プログラムや各種のテーブルを記憶するメモリである。メモリインタフェース123は、プロセッサモジュール109とNAND型フラッシュメモリ108との間のインタフェース処理を行うものである。
【0034】
インタフェース用端子121は、メモリカード102がカードインタフェース103に挿入されたときにホスト機器101のコネクタピンと電気的に接続される。ピンP1,P7,P8,P9は、データ信号(DAT0〜DAT3)に割り当てられている。また、ピンP1はカード検出信号に対しても割り当てられている。ピンP2はコマンド(CMD)に、ピン5はクロックに割り当てられている。ピンP3,P6には接地電位(Vss)が供給され、ピンP4には電源電位(Vdd)が供給される。
【0035】
このような構成において、メモリカード102は、ホスト機器101のカードインタフェース103に装着されることにより、インタフェース用端子121を介して、ホスト機器101との間の通信を行う。例えば、メモリカード102のNAND型フラッシュメモリ108にデータを書き込む場合、プロセッサモジュール109は、ホスト機器101からピンP5に与えられるクロック信号に同期させて、ピンP2に与えられる書き込みコマンドをシリアルな信号として取り込む。
【0036】
図2は、データ重要度格納領域114とデータID格納領域115の一例を示す図面である。ユーザデータ領域110を16kBごとのブロックに分割し、その分割したブロックに対してブロック単位のアドレスをユーザデータ領域110の先頭から順に0x0001(0xは16進数であること示す),0x0002,0x0003,・・・と2Byte長で割り付ける。図2中の列201は、このブロック単位のアドレスを表している。
【0037】
データ重要度格納領域114は、ユーザデータ領域110を分割したブロック単位のアドレス数と同数のアドレスを有し、アドレス0x0001,0x0002,0x0003,・・・がブロック単位のアドレス0x0001,0x0002,0x0003,・・・と1対1に対応してデータ重要度を格納している。データ重要度のサイズとしては、例えば1Byteが割り当てられる。図2中の列202は、このデータ重要度を表している。
【0038】
また、データID格納領域115も、データ重要度格納領域114と同様に、ユーザデータ領域110を分割したブロック単位のアドレス数と同数のアドレスを有し、ブロック単位のアドレスと1対1に対応してデータIDを格納している。データIDのサイズとしては、例えば8Byteが割り当てられる。図2中の列203は、このデータIDを表している。
【0039】
ここで、具体的な例として行204について説明する。ユーザデータ領域110の先頭から3番目のブロック単位のアドレス=0x0003に対して発生したデータ書き込みの結果、書き込み時にデータに付与されてきたデータレベル=0x20がデータ重要度格納領域114のブロック単位のアドレス=0x0003に格納される。また、書き込み時にデータに付与されてきたユーザID=0x1234567890ABCDEFも、データレベルと同様に、データID格納領域115のブロック単位のアドレス=0x0003に格納される。なお、ブロック単位のアドレスは、データID格納領域115およびデータ重要度格納領域114のアドレスから算出可能なので、それぞれの領域には格納しなくても良い。
【0040】
次に、ホスト機器101がメモリカード102にデータを書き込むためのライトコマンドについて図3を参照して説明する。ライトコマンドには、指定されたアドレスから512アドレス分(512Byte分)のデータを書き込む重要度付シングルライトコマンドと、512Byteを1単位としてデータの書き込みを連続的に行う重要度付マルチライトコマンドの2通りがある。
【0041】
重要度付シングルライトコマンドおよび重要度付マルチライトコマンド(CMDxx)は、引数1(Arg.1)として書き込みスタートアドレスと、引数2(Arg.2)としてデータレベルと、引数3(Arg.3)としてユーザIDの値を与えられる。メモリカード102内の重要度・ID管理手段116は、書き込みアドレスが指定するブロックに対するデータIDと重要度を取得する。また、重要度・ID管理手段116は、ホスト機器101から送信されるライトコマンドに付与されているデータレベルとユーザIDを取得する。重要度・ID比較手段117は、重要度・ID管理手段116が取得したデータIDとユーザIDとが一致しているか否かを判定する。また、重要度・ID比較手段117は、ID管理手段117が取得したデータ重要度とホストレベルとの大小を比較する。重要度・ID比較手段117は、これらの比較判定結果に基づいてデータ書き込みの許否を決定し、その書き込み許可の有無をレスポンスとしてホスト機器101に通知する。ホスト機器101は書き込み許可レスポンスを受信すると、メモリカード102に対して書き込みデータを送出し、メモリカード102はユーザデータ領域110の指定されたアドレスに書き込みデータを格納する。また、重要度・ID管理手段116は、データ重要度格納領域114の書き込みアドレスが指定するブロックにデータレベルを格納し、データID重要度格納領域115の書き込みアドレスが指定するブロックにユーザIDを格納する。
【0042】
図3中の重要度付シングルライトコマンド301においては、ホスト機器101からCMDxxの後にアドレス=0x00002000とデータレベル=0x20とユーザID=0x90EC94A9906D0000を付けてコマンドが送信されると、メモリカード102はユーザデータ領域110のアドレス=0x00002000から512Byteの範囲が含まれるブロック(0x0001番目)への書き込み許可の有無をレスポンスでホスト機器101に通知する。ホスト機器101はレスポンスを判断して書き込み許可であれば512Byteのデータを送出し、メモリカード102はユーザデータ領域110のアドレス=0x00002000から512Byteの受信データを格納する。このとき、メモリカード102は、データ重要度格納領域114のアドレス=0x0001のデータとしてデータレベル=0x20と、データID格納領域115のアドレス=0x0001のデータとしてユーザID=0x90EC94A9906D0000を格納する。ホスト機器101は、書き込み許可がなければデータを送出せず、メモリカード102もデータ受信を行わない。
【0043】
重要度付マルチライト302においては、ホスト機器101からCMDxxの後にアドレス=0x00004000と重要度=0x01とID=0x90EC94A9906D0000を付けてコマンドが送信されると、メモリカード102はユーザデータ領域114のアドレス=0x00004000から512Byteの範囲が含まれるアドレスへの書き込み許可の有無を判断してレスポンスをホスト機器101に返送する。ホスト機器101はレスポンスを判断して書き込み許可があれば512Byteのデータを連続して送出し、メモリカード102はユーザデータ領域110のアドレス=0x00004000から受信したデータを順次格納し、同時にデータ重要度格納領域114のアドレス=0x0002のデータとしてデータレベル=0x20と、データID格納領域115のアドレス=0x0002のデータとしてユーザID=0x90EC94A9906D0000を格納する。このとき、書き込みアドレスのブロック境界では次のブロックの書き込み許可の有無を確認し、書き込み不許可となった場合にはユーザデータ領域110への書き込みを停止してホスト機器101に対して書き込み拒否レスポンスで通知する。
【0044】
次に、ホスト機器101がメモリカード102からデータを読み出すためのリードコマンドについて図4を参照して説明する。リードコマンドには、指定されたアドレスから512アドレス分(512Byte分)のデータを読み出す重要度付シングルリードコマンドと、512Byteを1単位として連続的にデータを読み出す重要度付マルチリードコマンドの2通りがある。
【0045】
重要度付シングルリードコマンドおよび重要度付マルチリードコマンド(CMDyy)は、引数1(Arg.1)として読み出しスタートアドレスと、引数2(Arg.2)としてホストレベルと、引数3(Arg.3)としてユーザIDの値を付与される。メモリカード102内の重要度・ID管理手段116は、読み出しアドレスが指定するブロックに対するデータIDと重要度を取得する。また、重要度・ID管理手段116は、ホスト機器101から送信されるリードコマンドに付与されているホストレベルとユーザIDを取得する。重要度・ID比較手段117は、重要度・ID管理手段116が取得したデータIDとユーザIDとが一致しているか否かを判定する。また、重要度・ID比較手段117は、重要度・ID管理手段116が取得したデータ重要度とホストレベルとの大小を比較する。重要度・ID比較手段117は、これらの比較判定結果に基づいてデータ読み出しの許否を決定する。メモリカード102は、コマンドと引数を解釈して指定されたユーザデータが読み出し許可であれば、ホスト機器101に対してユーザデータを返送する。一方、メモリカード102は、指定されたユーザデータが読み出し不許可であれば、ホスト機器101に対して読み出し不許可レスポンスを返送する。
【0046】
図4中の重要度付シングルリード401においては、ホスト機器101からCMDyyの後にアドレス=0x00002000とホストレベル0x20とユーザID=0x90EC94A9906D0000を付けてコマンドが送信されると、メモリカード102はユーザデータ領域110のアドレス=0x00002000から512Byteの範囲が含まれるブロックへの読み出し許可の有無を判断する。読み出し許可があればユーザデータ領域110のアドレス=0x00002000から512Byteのデータを読み出してホスト機器101に送出する。読み出し不許可であれば、読み出し拒否レスポンスでホスト機器101に通知する。
【0047】
重要度付マルチリード402においては、ホスト機器101からCMDyyの後にアドレス=0x00004000と重要度=0x01とID=0x90EC94A9906D0000を付けてコマンドが送信されると、メモリカード102はユーザデータ領域110のアドレス=0x00004000から512Byteの範囲が含まれるブロック単位の読み出し許可の有無を判断し、読み出し許可があれば512Byte単位でデータを連続的に読み出してホスト機器101へ送出する。読み出しアドレスのブロック境界では次のブロックの読み出し許可の有無を確認し、読み出し不許可の場合にはユーザデータ領域110からの読み出しを停止してホスト機器101に対して読み出し拒否レスポンスで通知する。
【0048】
次に、ホスト機器101がメモリカード102内のデータを消去するためのイレースコマンドについて図5を参照して説明する。重要度付イレースコマンド501(CMDxy)は、引数1(Arg.1)として32ビットのスタッフィングビットと、引数2(Arg.2)としてホストレベルと、引数3(Arg.3)としてユーザIDを付与される。ここでは、イレースライトブロックスタートコマンドとイレースライトブロックエンドコマンドが既に発行されてユーザデータ領域110の消去開始アドレスと消去終了アドレスが確認されているものとする。メモリカード102は、ホストレベルとユーザIDとからユーザデータ領域110の消去開始アドレスが含まれるブロックの書き込み許可を確認し、許可があれば当該ブロックを消去したのちデータ重要度格納領域114とデータID格納領域115に0xFFと0xFFFFFFFFFFFFを書き込む。この動作を消去終了アドレスの含まれるブロックまで実行するが、ブロック境界では次のブロックの書き込み許可を確認し、書き込み不許可の場合はそのブロックは消去せずに拒否レスポンスをホスト機器101に返送する。
【0049】
次に、ホスト機器101からメモリカード102にホストレベルを送信するためのホストレベル通知コマンドについて図6を参照して説明する。ホストレベル通知コマンド601(CMDxz)は、引数1(Arg.1)として3byteのスタッフィングビットと、引数2(Arg.2)として1Byteのホストレベル0x20を付与してメモリカード102に送信される。メモリカード102はホストレベル通知コマンド601を受信し、ホストレベルを取得する。
【0050】
続いて、本実施の形態に係るホスト機器101とメモリカード102の動作について説明する。なお、ID(ユーザIDとデータID)はユーザが任意に設定可能な8Byteのデータであるが、特別に0x0000000000000000はユーザIDやデータIDが指定されていないことを示す。また、0xFFFFFFFFFFFFFFFFは消去済みブロックであることを示し、ユーザはこのIDを指定できない。重要度(ホストレベルとデータ重要度とデータレベル)は0x00〜0xFEの値をとり、0x00が最小重要度で0xFEが最高重要度とする。0xFFの値は消去済みブロックであることを示す。重要度0x00の場合にはIDが指定されない。すなわち、IDは0x0000000000000000に設定される。また、ホスト機器101が送信する書き込みコマンドがデータレベルやユーザIDが付与されない書き込みコマンドだった場合には、重要度・ID管理手段116はデータ重要度=0x00かつデータID=0x0000000000000000として処理する。
【0051】
まず、ホスト機器101に対するメモリカード102の初期化手順について図7を参照して説明する。ホスト機器101にメモリカード102が挿入されると(ステップS701)、ホスト機器101はメモリカード102を認識し(ステップS702)、メモリカード102の初期化を行う(ステップS703)。次に、ホスト機器101はメモリカード102にホストレベル通知コマンドを送信する(ステップS704)。メモリカード102は、ホストレベル通知コマンドを受信し(ステップS705)、ホストレベルを取得する(ステップS706)。なお、以下の説明では、メモリカード102は、図7で説明した初期化手順を終了しているものとする。
【0052】
次に、メモリカード102へのユーザデータの書き込み手順について図8を参照して説明する。図8では、書込みスタートアドレス=0x00004000から512Byteのユーザデータをメモリカード102に書き込む場合を例に挙げて説明する。ここで、ホストレベル=0x32、データレベル=0x20、ユーザID=0x1234567890ABCDEFであるとする。また、メモリカード102のアドレス=0x00004000〜0x00004200には既にユーザデータが保存されており、データ重要度格納領域114とデータID格納領域115のブロック単位のアドレス=0x0002には、データ重要度=0x20、データID=0x1234567890ABCDEFが格納されているものとする。ホスト機器101は、書き込みスタートアドレス=0x00004000、データレベル=0x032、ユーザID=0x1234567890ABCDEFとして、ユーザデータ領域110に対して512Byte のユーザデータを書き込む重要度付シングルライトコマンドを送信する(ステップS801)。メモリカード102のIOインタフェース122は、重要度付シングルライトコマンドを受信する(ステップS802)。コントローラ118は、IOインタフェース122が受信した重要度付シングルライトコマンドを解析し、NAND型フラッシュメモリ108のユーザデータ領域110に書き込むべきユーザデータのアドレスを確認する(ステップS803)。
【0053】
次に、重要度・ID管理手段116は、ステップS803で確認したアドレスをブロック単位のアドレスに変換したのち、データ重要度格納領域114からデータ重要度=0x20とデータID格納領域115からデータID=0x1234567890ABCDEFを取得する。また、重要度・ID管理手段116は、重要度付シングルライトコマンドからデータレベル=0x32とユーザID=0x1234567890ABCDEFを取得する(ステップS804)。重要度・ID比較手段117は、取得したデータIDとユーザIDを比較する(ステップS805)。データIDとユーザIDが一致した場合、またはデータID=0xFFFFFFFFFFFFFFFFもしくはデータID=0x0000000000000000であれば、次にデータ重要度とホストレベルを比較する(ステップS806)。
【0054】
ステップS806で比較した結果が、ホストレベル≧データ重要度のとき、またはデータ重要度=0xFFもしくはデータ重要度=0x00のときは書き込み許可となる。ここでは、データIDがユーザIDに等しく、かつデータ重要度がホストレベル未満なので書き込み許可となり、メモリカード102はホスト機器101にデータ送信許可のレスポンスを返送する(ステップS807)。ホスト機器101はデータ送信許可のレスポンスを受信すると(ステップS808)、512Byteのユーザデータをメモリカード102に送信する(ステップS809)。
【0055】
メモリカード102はホスト機器101からのユーザデータを受信し(ステップS810)、ステップS803で確認したユーザデータ領域110のアドレスから512Byte分のユーザデータを書き込む(ステップS811)。次に、重要度・ID管理手段116は、データ重要度格納領域114にデータレベル=0x20と、データID格納領域115にユーザID=0x1234567890ABCDEFを書き込む(ステップS812)。
【0056】
ここで、ホスト機器101の書き込みデータの設定が、ホストレベル=0x32、データレベル=0x20、ユーザID=0x1234567890ABCDE0の場合は、データIDとユーザIDが異なるため、ステップS805での比較結果が書き込み不許可となり、メモリカード102はホスト機器101に書き込み拒否レスポンスを返送する(ステップS813)。また、ホスト機器101の書き込みデータの設定が、ホストレベル=0x10、データレベル=0x20、ユーザID=0x1234567890ABCDEFの場合は、データ重要度がホストレベルよりも大きいため、ステップS806での比較結果が書き込み不許可となり、メモリカード102はホスト機器101に書き込み拒否レスポンスを返送する(ステップS813)。ホスト機器101は、書き込み拒否レスポンスを受け取ると(ステップS814)、メモリカード102に対してデータ送出を行わず、メモリカード102はホスト機器101がデータ送出してきても受け付けない。
【0057】
図8では重要度付シングルライトコマンドについて説明したが、重要度付マルチライトコマンドの場合はホスト機器101から512Byte単位で連続してデータ送信が行われる。このため、メモリカード102は、ユーザデータ領域110のブロックごとに書き込み許可を確認して動作する。メモリカード102は、書き込み不許可のブロックにはデータ書き込みを行わず、ホスト機器101に書き込み拒否レスポンスを返送する。
【0058】
次に、メモリカード102からのユーザデータの読み出し手順について図9を参照して説明する。図9では、読み出しスタートアドレス=0x00004000から512Byteのユーザデータをメモリカード102から読み出す場合を例に挙げて説明する。ここで、ホスト機器101がホストレベル=0x32、ユーザID=0x1234567890ABCDEFであるとする。また、メモリカード102のアドレス=0x00004000〜0x00004200には既にユーザデータが保存されており、データ重要度格納領域114とデータID格納領域115のブロック単位のアドレス=0x0002には、データ重要度=0x20、データID=0x1234567890ABCDEFが格納されているものとする。ホスト機器101は、読み出しスタートアドレス=0x00004000、ホストレベル=0x032、ユーザID=0x1234567890ABCDEFとして、ユーザデータ領域110から512Byteのユーザデータを読み出す重要度付シングルリードコマンドを送信する(ステップS901)。メモリカード102のIOインタフェース122は、重要度付シングルリードコマンドを受信する(ステップS902)。コントローラ118はIOインタフェース122が受信した重要度付シングルリードコマンドを解析し、NAND型フラッシュメモリ108のユーザデータ領域110から読み出すべきユーザデータのアドレスを確認する(ステップS903)。
【0059】
次に、重要度・ID管理手段116は、ステップS903で確認したアドレスをブロック単位のアドレスに変換したのち、データ重要度格納領域114からデータ重要度=0x20、データID格納領域115からデータID=0x1234567890ABCDEFを取得する。また、重要度・ID管理手段116は、重要度付シングルリードコマンドからホストレベル=0x32とユーザID=0x1234567890ABCDEFを取得する(ステップS904)。
【0060】
重要度・ID比較手段117は、取得したデータIDとユーザIDを比較する(ステップS905)。ステップS905での比較結果がデータIDとユーザIDが一致、または、データID=0xFFFFFFFFFFFFFFFFもしくはデータID=0x0000000000000000であればデータの読み出しを行う(ステップS907)。ここでは、データIDがユーザIDに等しいので、メモリカード102は、ステップS903で確認したユーザデータ領域110のアドレスから512Byteのデータを読み出す。メモリカード102は、ユーザデータ領域110から読み出したデータをホスト機器101に送信する(ステップS908)。ホスト機器101は、このメモリカード102から送信されたデータを受信する(ステップS909)。
【0061】
ホスト機器101がホストレベル=0x32、ユーザID=0x1234567890ABCDE0の場合は、ステップS905での比較結果が不一致なのでデータ重要度とホストレベルを比較する(ステップS906)。その結果、データ重要度がホストレベル以下なのでデータの読み出しを行う(ステップS907)。また、ホスト機器101がホストレベル=0x10、ユーザID=0x1234567890ABCDEFの場合は、ステップS906で比較した結果、データ重要度がホストレベルより大きいため読み出し拒否となり、メモリカード102は読み出し拒否レスポンスをホスト機器101に返送する(ステップS910)。ホスト機器101はレスポンスを受信する(ステップS911)。
【0062】
次に、ユーザデータを消去する手順について図10を参照して説明する。ここで、ホスト機器101の設定がホストレベル=0x32、ユーザID=0x1234567890ABCDEFであり、既にホスト機器101からイレースライトブロックスタートコマンドで消去開始アドレス0x00000100が指定され、イレースライトブロックエンドコマンドで消去終了アドレス0x00004200が指定されているものとする。また、メモリカード102のアドレス=0x00004000〜0x00004200には既にユーザデータが保存されており、データ重要度格納領域114とデータID格納領域115のブロック単位のアドレス=0x0002には、データ重要度=0x20、データID=0x1234567890ABCDEFが格納されているものとする。
【0063】
まず、ホスト機器101が、ホストレベル=0x032、ユーザID=0x1234567890ABCDEFとして、アドレス指定した範囲の消去開始を指示する重要度付イレースコマンドを送信する(ステップS1001)。次に、メモリカード102のIOインタフェース122は重要度付イレースコマンドを受信する(ステップS1002)。コントローラ118は、IOインタフェース122が受信した重要度付イレースコマンドを解析し、NAND型フラッシュメモリ108のユーザデータ領域110から消去すべきユーザデータのアドレスを確認する(ステップS1003)。次に、重要度・ID管理手段116は、ステップS1003で確認したアドレスからブロック単位のアドレスに変換したのち、データ重要度格納領域114からデータ重要度=0x20とデータID格納領域115からデータID=0x1234567890ABCDEFを取得する。また、重要度・ID管理手段116は、重要度付イレースコマンドからホストレベル=0x32とユーザID=0x1234567890ABCDEFを取得する(ステップS1004)。
【0064】
重要度・ID比較手段117は、取得したデータIDとユーザIDを比較する(ステップS1005)。ここでは、ステップS1005の比較した結果がデータIDとユーザIDが一致するので次にデータ重要度とホストレベルを比較する(ステップS1006)。ステップS1006での比較結果がデータ重要度≦ホストレベルなので、メモリカード102は指定されたアドレスを含むブロックのデータ消去を行う(ステップS1007)。続いて、重要度・ID管理手段116はデータ重要度格納領域114に0xFFとデータID格納領域115に0xFFFFFFFFFFFFを書き込み、ブロックの初期化を行う(ステップS1008)。以上のステップを順次繰り返し、アドレス0x00004200が含まれるブロックまで消去する。ステップS1005およびステップS1006で比較した結果、データ消去許可がなければ、メモリカード102は消去拒否レスポンスをホスト機器101に返送する(ステップS1009)。ホスト機器101はレスポンスを受信する(ステップS1010)。
【0065】
次に、ユーザの使用例として、病院が発行する院外処方箋を本実施の形態に係るメモリカードに保存した場合の動作について図11を参照して説明する。ここでは、ユーザAが病院Bで受診した結果、処方箋をメモリカード102で受け取り、薬局Cで薬を購入するケースを例に挙げて説明する。このメモリカード102は1GByteの容量を持ち、ユーザデータ領域110はセクターサイズが512byte、クラスタサイズ16KbyteのFAT16形式でフォーマットされており、多数のファイルが記録されているものとする。また、ブロック単位はユーザデータ領域110におけるFATのユーザデータエリアのクラスタサイズと同じく16Kbyteとし、ブロック単位のアドレスの値がユーザデータエリアのクラスタ番号と一致しているものとする。
【0066】
まず、病院Bが処方箋をユーザAのメモリカード102に記録する場合について図11(a)を参照して説明する。病院BのPCには投薬処方箋データshohousen.xlsが準備されており、ホスト機器のホストレベルが0x90、ユーザIDが0x00001234ABCD0000、データレベルが0x70に設定されているものとする。
【0067】
この条件でメモリカード102に記録された処方箋データshohousen.xlsが、ユーザデータ領域110のアドレス=0x00040000 乃至 0x000482FFにかけて記録された場合には、ブロック単位のアドレス0x0010,0x0011,0x0012で示されるデータ重要度格納領域114にデータレベル0x70が格納される。また、データレベルと同じく、ブロック単位のアドレス0x0010,0x0011,0x0012で示されるデータID格納領域115にはユーザID0x00001234ABCD0000が格納される。
【0068】
次に、ユーザAのメモリカード102に記録された処方箋を薬局Cが読み出す場合について図11(b)を参照して説明する。ユーザAは、処方箋データが書き込まれたメモリカード102を受け取り、薬を購入するために薬局Cにメモリカード102を提出する。薬局Cではホスト機器101のホストレベル=0x80、ユーザID=0x0000AA55AA550000、データレベル=0x00に設定されているものとする。
【0069】
薬局Cのホスト機器101がメモリカード102にアクセスして処方箋データがユーザデータ領域110のアドレス=0x00040000 乃至 0x000482FFにかけて記録されていることを確認すると、重要度・ID管理手段116はブロック単位のアドレス=0x0010で示されるデータ重要度格納領域114からデータ重要度=0x70を取得する。また、重要度・ID管理手段116は、データ重要度と同じく、ブロック単位のアドレス=0x0010で示されるデータID格納領域115からデータID=0x00001234ABCD0000を取得する。
【0070】
次に、重要度・ID比較手段117がデータID=0x00001234ABCD0000と薬局CのユーザID=0x0000AA55AA550000とを比較する。ここでは、データID≠ユーザIDなので、重要度・ID比較手段117は続いてデータレベルとホストレベルを比較する。すると、ホストレベル≧データ重要度なので、ブロック単位のアドレス0x0010で示されるユーザデータ領域110のアドレス=0x00040000 乃至 0x00043FFに書き込むことはできないが読み出すことができる。続いて、次のブロックの読み出し許可を確認とデータ読み出しを繰り返し実行することで、処方箋データに付与されたデータIDとユーザIDが合致しなくても、薬局Cはユーザデータ領域のアドレス=0x00040000 乃至 0x000482FF の全ての処方箋データを取得することができる。
【0071】
次に、メモリカード102に記録された処方箋をユーザAが読み出す場合について図11(c)を参照して説明する。ユーザAは自宅に帰り、処方内容を確認するために自宅のPCでメモリカード102の操作を行う。自宅のホスト機器はホストレベル=0x20に設定されているとする。ユーザIDは既に病院から通知されているID=0x00001234ABCD0000に設定する。
【0072】
ユーザAのホスト機器101がメモリカード102にアクセスして処方箋データがユーザデータ領域110のアドレス=0x00040000 乃至 0x000482FFにかけて記録されていることを確認すると、重要度・ID管理手段124はブロック単位のアドレス=0x0010で示されるデータ重要度格納領域114からデータ重要度=0x70を取得する。また、重要度・ID管理手段116は、データ重要度と同じく、ブロック単位のアドレス=0x0010で示されるデータID格納領域115からデータID=0x00001234ABCD0000を取得する。
【0073】
次に、重要度・ID比較手段117がデータID=0x00001234ABCD0000とホスト機器101のユーザID=0x00001234ABCD0000とを比較したところ一致するので、続いてデータレベルとホストレベルを比較する。すると、ホストレベル<データ重要度なので、読み出しのみ許可される。すなわち処方箋データに付与されたデータレベルが高くても処方箋データを読み出すことができる。しかし、このホスト機器101からユーザデータ領域110のアドレス=0x00040000 乃至 0x000482FFF に記録されたデータを消去したり書き込んで改ざんすることはできない。
【0074】
以上に説明した本実施の形態においては、データの管理者がユーザIDとデータレベルを設定するだけで、他のホスト機器や他のユーザからのメモリカードへのアクセスを制限することができる。このため、データ管理者が管理するIDや暗号化キーを極めて少なくすることができる。
【0075】
(第2の実施の形態)
第1の実施の形態では、データに対するアクセス権の判断をデータIDとユーザIDとの一致・不一致およびデータの重要度とホスト機器の重要度の大小関係のみで行う場合について説明した。本実施の形態は、データIDとユーザIDとが一致しない場合に、第1の実施の形態に比較してホストレベルがより高いホスト機器でないと読み出しできないようにするため、重要度の判断にオフセットを持たせたものである。なお、以下では、第1の実施の形態と同一又は類似の構成については、図面において同一又は類似の符号を付し、その説明を省略する。
【0076】
図12は、第2の実施の形態に係るホスト機器とメモリカードの概略構成を示す図面である。NAND型フラッシュメモリ108は、データ重要度格納領域114とデータID格納領域115とデータの読み出し許可レベルを変更するオフセットレベルを格納するデータオフセット格納領域124とを備えている。プロセッサモジュール109は、NAND型フラッシュメモリ108のデータ重要度格納領域114とデータID格納領域115とデータの読み出し許可レベルを変更するオフセットレベルを格納するデータオフセット格納領域124の管理を行う重要度・ID・オフセット管理手段125と、重要度・ID・オフセット管理手段125が通知するユーザIDとデータIDとホストレベルとデータ重要度とデータオフセットとを比較する重要度・ID・オフセット比較手段126とを備えている。
【0077】
重要度・ID・オフセット管理手段125は、ホスト機器101から送信される書き込みコマンドに付与されているデータレベルとユーザIDとオフセットレベル(データオフセット)を取得して、データ重要度格納領域114にデータレベルを、データID格納領域115にユーザIDを、データオフセット格納領域124にオフセットレベルを格納する。また、重要度・ID・オフセット管理手段125は、データ重要度格納領域114からデータ重要度と、データID格納領域115からデータIDと、データオフセット格納領域124からデータオフセットを取得する。また、重要度・ID・オフセット管理手段125は、ホスト機器101から送信される読み出しコマンドに付与されているホストレベルとユーザIDとオフセットレベルを取得する。ここで、ホスト機器101からホストレベルとユーザIDが通知されなかった場合は、ホストレベル=0x00、データレベル=0x00、ユーザID=0x0000000000000000、オフセットレベル=0x00として処理を行う。
【0078】
重要度・ID・オフセット比較手段126は、重要度・ID・オフセット管理手段125が取得したデータIDとユーザIDの比較と、データ重要度とホストレベルおよびオフセットレベルとを比較し、その比較結果をコントローラ118に通知する。コントローラ118は、重要度・ID・オフセット比較手段126の比較結果に基づいてデータの書き込み・読み出し処理に制限を与える。
【0079】
重要度・ID・オフセット比較手段126の比較・判断方法は以下の通りである。ユーザIDとデータIDとが一致している場合は、ホストレベルとデータ重要度とを比較する。ホストレベルがデータ重要度以上である場合(ホストレベル≧データ重要度)は、データ書き込みと読み出しの両方が許可される。一方、ホストレベルがデータ重要度未満である場合(ホストレベル<データ重要度)は、データ読み出しのみが許可され、データ書き込みは禁止される。
【0080】
ユーザIDとデータIDとが不一致の場合も、ユーザIDとデータIDとが一致している場合と同様に、ホストレベルとデータ重要度とを比較する。ホストレベルがデータ重要度とデータオフセットを足し合わせた値以上である場合(ホストレベル≧データ重要度+データオフセット)は、データ読み出しのみが許可され、データ書き込みは禁止される。一方、ホストレベルがデータ重要度とデータオフセットを足し合わせた値未満である場合(ホストレベル<データ重要度+データオフセット)は、データ書き込みと読み出しの両方が禁止される。
【0081】
また、データID=0xFFFFFFFFFFFFFFFFの場合は、データ書込みと読み出しの両方が許可される。ただし、データID=0xFFFFFFFFFFFFFFFFは当該ブロックが消去済みであることを示すため、データを読み出す場合は、読み出されたデータは消去済みのデータとなる。データID=0x0000000000000000の場合も、データ書込みと読み出しの両方が許可される。ユーザID=0x0000000000000000は、ユーザデータに対して読み出し・書込みの制限を付けないことを示すからである。
【0082】
次に、データオフセット格納領域124について図13を参照して説明する。本実施の形態においても、第1の実施の形態と同様に、ブロック単位を16Kbyteとする。まずユーザデータ領域110を16Kbyte毎のブロックに分割し、ブロックの番号をユーザデータ領域110の先頭から順に0x0001,0x0002,0x0003,・・・と2Byte長で割り付けている。これを表したものが列1301である。データオフセット格納領域124もブロックの番号の数と同数のアドレスを持ち、アドレスもブロックの番号と1対1に対応している。ここで各アドレスに格納するデータオフセットのサイズとして1Byteを割り当てたものが列1302である。
【0083】
このようにデータ重要度格納領域114とデータID格納領域115およびデータオフセット格納領域124が構成されている。ここで、具体的な例として行1303について説明する。行1303には、ユーザデータ領域110の先頭から3番目のブロック単位のアドレス0x0003に対して、データレベル=0x20がデータ重要度格納領域114に格納され、ユーザID=0x1234567890ABCDEFがデータID格納領域115に格納され、オフセットレベル=0x50がデータオフセット格納領域124に格納されている。なお、ブロック単位のアドレスはデータ重要度格納領域114とデータID格納領域115およびデータオフセット格納領域124のアドレスから算出可能なのでそれぞれの領域には格納しなくても良い。
【0084】
次に、ホスト機器101がメモリカード102にデータを書き込む為のライトコマンドについて図14を参照して説明する。データを書き込む為のコマンドには、指定されたアドレスから512アドレス分(512Byte)のデータを書き込む重要度・オフセット付シングルライトコマンドと、512Byteを1単位としてデータの書き込みを連続的に行う重要度・オフセット付マルチライトコマンドの2通りがある。
【0085】
重要度・オフセット付シングルライトコマンドおよび重要度・オフセット付マルチライトコマンド(CMDxx)は、引数1(Arg.1)として書き込みスタートアドレスと、引数2(Arg.2)としてデータレベルと、引数3(Arg.3)としてユーザIDと、引数4(Arg.4)としてオフセットレベルの値を付与する。メモリカード102は、書き込みアドレスとデータレベルとユーザIDの一致不一致とホストレベルとデータ重要度とオフセットレベルの大小を比較・判断し、書き込みの許可・不許可の結果をコントローラ118からレスポンスでホスト機器101に通知する。
【0086】
重要度・オフセット付シングルライト1401においては、ホスト機器101からCMDxzの後にアドレス=0x00002000とデータレベル=0x20とユーザID=0x90EC94A9906D0000とオフセットレベル=0x50を付けてコマンドが送信されると、メモリカード102はユーザデータ領域1214のアドレス0x00002000から512Byteの範囲が含まれるブロックへの書き込み許可不許可を判断してレスポンスをホスト機器101に返送する。ホスト機器101はレスポンスを判断して書き込み許可であれば512Byteのデータを送出し、メモリカード102はユーザデータ領域110のアドレス=0x00002000から512Byteのデータを格納する。このとき、データ重要度格納領域114とデータID格納領域115とデータオフセット格納領域124のアドレス=0x0001のデータとして、データレベル=0x20とユーザID=0x90EC94A9906D0000とデータオフセット=0x50を格納する。ホスト機器101は書き込み許可がなければデータを送出せず、メモリカード1202もデータ受信を行わない。
【0087】
重要度・オフセット付マルチライト1402においてはホスト機器101からCMDxzの後にアドレス=0x00004000と重要度=0x01とID=0x90EC94A9906D0000とオフセット=0x50を付けてコマンドが送信されると、メモリカード102はユーザデータ領域110のアドレス=0x00004000から512Byteの範囲が含まれるアドレスへの書き込み許可不許可を判断してレスポンスをホスト機器101に返送する。ホスト機器101はレスポンスを判断して書き込み許可であれば512Byte単位のデータを連続して送出し、メモリカード102はユーザデータ領域110のアドレス=0x00004000から受信したデータを順次格納する。また、メモリカード102は、データ重要度格納領域114とデータID格納領域115とデータオフセット格納領域124のデータとして、データレベル=0x01とユーザID=0x90EC94A9906D0000とデータオフセット=0x50を格納する。このとき、書き込みアドレスのブロック境界では次のブロックの書き込み許可不許可を確認し、書き込み不許可の場合にはユーザデータ領域1214への書き込みを停止してホスト機器101に対して書き込み拒否レスポンスで通知する。
【0088】
ここで、ホスト機器101が送信する書き込みコマンドがデータレベルやユーザIDやオフセットレベルが付与されない書き込みコマンドだった場合には、重要度・オフセット付シングルライトコマンドおよび重要度・オフセット付マルチライトコマンド共に、重要度・ID・オフセット管理手段125がデータ重要度=0x00、データID=0x0000000000000000かつデータオフセット=0x00として処理する。
【0089】
ホスト機器101がメモリカード102のデータを読み出すためのリードコマンドおよびデータを消去するためのイレースコマンドについては、第1の実施の形態と同様であるので説明を省略する。
【0090】
続いて、ホスト機器101がユーザデータを読み込む手順について図15を参照して説明する。なお、メモリカード102は、既に初期化ステップを終了しているものとする。また、ユーザデータを書き込む手順、ユーザデータを消去する手順については、第1の実施の形態と同様のため説明を省略する。
【0091】
ホスト機器101がホストレベル=0x32、ユーザID=0x1234567890ABCDEFであるとする。ホスト機器101は、ユーザデータ領域110から512Byteのユーザデータを読み出す重要度付シングルリードコマンドを送信する(ステップS1501)。メモリカード102のIOインタフェース122が、重要度付シングルセクターリードコマンドを受信する(ステップS1502)。コントローラ118はIOインタフェース122が受信した重要度付シングルセクターリードコマンドを解析し、NAND型フラッシュメモリ108のユーザデータ領域110から読み出すべきユーザデータのアドレスを確認する(ステップS1503)。次に、重要度・ID・オフセット管理手段125は、ステップS1503で確認したアドレスからブロック単位のアドレスに変換したのち、データ重要度格納領域114からデータ重要度=0x20、データID格納領域115からデータID=0x1234567890ABCDEF、データオフセット格納領域124からデータオフセット=0x50を取得する。(ステップS1504)。
【0092】
重要度・ID・オフセット比較手段126は、取得したデータIDとユーザIDを比較する(ステップS1505)。ステップS1505での比較結果がデータIDとユーザIDが一致、またはデータID=0xFFFFFFFFFFFFFFFFもしくはデータID=0x0000000000000000であればデータの読み出しを行う(ステップS1508)。ここでは、データID=ユーザIDなので、ステップS1503で確認したユーザデータ領域110のアドレスから512Byteのデータを読み出す。読み出したデータはメモリカード102からホスト機器101に送信される(ステップS1509)。ホスト機器101は、このデータを受信する(ステップS1510)。
【0093】
ここで、ホスト機器101がホストレベル=0x32、ユーザID=0x1234567890ABCDE0の場合は、ステップS1506での比較結果が不一致なので、データ重要度にオフセットを加算し(ステップS1506)、ホストレベルと比較する(ステップS1507)。ステップS1507で比較した結果がホストレベル≦(データ重要度+オフセット)であれば読み出し許可となりデータの読み出しを行う(ステップS1508)。また、ホスト機器101がホストレベル=0x10、ユーザID=0x1234567890ABCDEFの場合は、ステップS1507で比較した結果は、ホストレベル<(データ重要度+オフセット)で読み出し不許可となり、メモリカード102は読み出し拒否レスポンスをホスト機器101に返送する(ステップS1511)。ホスト機器101はレスポンスを受信する(ステップS1512)。
【0094】
次に、ユーザの使用例として、病院に提出する問診表を本発明のメモリカードに保存した場合の動作について図16を参照して説明する。ここで使用するメモリカードの容量、セクターサイズ、クラスタサイズは、第1の実施の形態と同様の構成であるものとし、詳細な説明は省略する。
【0095】
まず、病院に提出する問診表をユーザAがメモリカード102に記録する場合について図16(a)を参照して説明する。ユーザAは病院Cの問診票データをダウンロードし、自宅のPCに記入済みデータmonshin.xlsを作成した。このとき、ユーザAのホスト機器101はホストレベル=0x20、データレベル=0x20、ユーザID=0x00001234ABCD0000、オフセットレベル=0x50に設定されているものとする。
【0096】
メモリカード102に保存された問診票データmonshin.xlsは、データ重要度格納領域114にデータレベル=0x20、同じくデータID格納領域115にはユーザID=0x00001234ABCD0000、データオフセット格納領域124にはオフセットレベル=0x50が格納される。ここでユーザAは、問診票への記入内容が誤っていることに気が付き、メモリカード102から問診票データmonshin.xlsを読み出す。すると、データID=ユーザIDかつデータ重要度=ホストレベルなのでメモリカード102はデータの読み出しを許可する。データを修正後、再びメモリカード102に問診票データを書き戻す場合も、データID=ユーザIDかつデータ重要度=ホストレベルなので書き込みは許可される。
【0097】
次に、この問診票データを病院Cに提出して診療予約をする際に、友人Bに病院Cへのメモリカード1202の提出をお願いした。途中で友人Bは自分のPCに接続されたホスト機器でユーザAのメモリカード102を読み出そうとした。図16(b)は、友人Bがメモリカード102を読み出そうとした場合の説明図である。このとき、友人Bのホスト機器はホストレベル=が0x40、データレベル=0x20、ユーザID=0xFFFF1234ABCDFFFF、オフセットレベル=0x30に設定されていたとする。この条件ではメモリカード1202と友人Bのホスト機器間ではデータID≠ユーザIDかつホストレベル<(データ重要度+データオフセット)なのでデータの読み出し許可も書き込み許可も与えられず、ユーザAの問診票データが見られたり改ざんされたりすることはない。
【0098】
次に、メモリカード102に記録された問診表を病院Cが読み出す場合について図16(c)を参照して説明する。病院Cではホスト機器がホストレベル=0x70、データレベル=0x01、ユーザID=0x0000AA55AA550000、オフセットレベル=0x00に設定されていたとする。友人Bにより提出されたユーザAのメモリカード1202に記録された問診票データと病院Cのホスト機器との間ではデータID≠ユーザIDではあるが、ホストレベル≧(データ重要度+データオフセット)なので、問診票データを読み出す事が可能となる。
【0099】
第1の実施の形態では、データレベルをより高く設定すると、他のユーザからメモリカード内のデータが読み取られる可能性は下がるが、当該データを自分自身も書き換えられなくなる問題がある。しかしながら、以上に説明した本実施の形態では、データレベルをホストレベルと同等に設定していてもオフセットレベルを設定することで特別にホストレベルの高いホスト機器でないと読み出し不許可とすることが可能であり、第1の実施の形態よりも確実なデータ秘匿効果およびデータ改ざん防止効果がある。
【0100】
なお、第1および第2の実施形態においては、重要度が高いデータを重要度の値が大きいと説明しているが、重要度が高いデータを重要度の値が小さいと設定しても構わない。また、ホスト機器101のホストレベルは製造時に固有の値に定められるだけでなく、書き換えが可能であっても構わない。
【0101】
このように、本発明は、実施段階ではその要旨を変更しない範囲で種々に変形することが可能である。
【0102】
以上、詳述したように、本発明に係るメモリカード、プロセッサモジュールおよびホスト機器の制御方法の特徴をまとめると以下の通りになる。
【0103】
本発明に係るメモリカードは、ホスト機器に装着され、前記ホスト機器からアクセスされるメモリカードにおいて、ユーザデータを格納するユーザデータ領域と、前記ユーザデータ領域における所定の単位ごとに対して設定されたデータ重要度を格納するデータ重要度格納領域と、前記ユーザデータ領域における所定の単位ごとに対して設定されたデータIDを格納するデータID格納領域とを有する不揮発性半導体メモリと、前記ホスト機器から前記ユーザデータ領域へのアクセスが発生した場合に、そのアクセス対象のデータに対応するデータ重要度およびデータIDを取得し、前記ホスト機器からホストレベルおよびホストIDを取得する管理手段と、前記管理手段が取得したデータ重要度、データID、ホストレベルおよびホストIDに基づいて、前記ホスト機器からのアクセスの許否を判断する比較手段とを具備することを特徴としている。
【0104】
また、本発明に係るメモリカードは、前記不揮発性半導体メモリは、前記ユーザデータ領域における所定の単位ごとに対して設定されたデータオフセットを格納するオフセット格納領域を更に具備し、前記管理手段は、前記ホスト機器から前記ユーザデータ領域へのアクセスが発生した場合に、そのアクセス対象のデータに対応する前記データオフセットを取得し、前記比較手段は、前記データ重要度と前記データオフセットとを足し合わせた値と前記ホストレベルとを比較し、前記ホスト機器からのアクセスの許否を判断することを特徴としている。
【0105】
更に、本発明に係るプロセッサモジュールは、ホスト機器に装着して使用するメモリカードに搭載され、不揮発性半導体メモリを制御するプロセッサモジュールにおいて、前記ホスト機器から前記不揮発半導体メモリへのアクセスが発生した場合に、そのアクセス対象のデータに対応するデータ重要度およびデータIDを取得し、前記ホスト機器からホストレベルおよびホストIDを取得する管理手段と、前記管理手段が取得したデータ重要度、データID、ホストレベルおよびホストIDに基づいて、前記ホスト機器からのアクセスの許否を判断する比較手段とを具備することを特徴としている。
【0106】
更に、本発明に係るプロセッサモジュールは、前記管理手段は、前記ホスト機器から前記ユーザデータ領域へのアクセスが発生した場合に、そのアクセス対象のデータに対応するデータオフセットを取得し、前記比較手段は、前記データ重要度と前記データオフセットとを足し合わせた値と前記ホストレベルとを比較し、前記ホスト機器からのアクセスの許否を判断することを特徴としている。
【0107】
更に、本発明に係るホスト機器の制御方法は、メモリカードが装着され、前記メモリカードにアクセスするホスト機器の制御方法において、前記メモリカードにアクセスする場合に、当該ホスト機器のアクセス能力を示すホストレベルと、アクセス対象のデータの管理者を示すユーザIDを前記メモリカードに送信する第1のステップと、前記メモリカードへのアクセスの許否を前記メモリカードからレスポンスとして受信する第2のステップとを具備することを特徴としている。
【図面の簡単な説明】
【0108】
【図1】第1の実施の形態に係るホスト機器とメモリカードの概略構成を示すブロック図。
【図2】データ重要度格納領域とデータID格納領域の一例を示す図。
【図3】第1の実施の形態においてホスト機器がメモリカードにデータを書き込むライトコマンドを説明するための図。
【図4】第1の実施の形態においてホスト機器がメモリカードからデータを読み出すリードコマンドを説明するための図。
【図5】第1の実施の形態においてホスト機器がメモリカード内のデータを消去するためのイレースコマンドを説明するための図。
【図6】第1の実施の形態においてホスト機器からメモリカードにホストレベルを送信するホストレベル通知コマンドを説明するための図。
【図7】第1の実施の形態におけるメモリカードの初期化手順を示すフローチャート。
【図8】第1の実施の形態におけるメモリカードへのユーザデータの書き込み手順を示すフローチャート。
【図9】第1の実施の形態におけるメモリカードからのユーザデータの読み出し手順を示すフローチャート。
【図10】第1の実施の形態においてユーザデータを消去する手順を示すフローチャート。
【図11】ユーザの使用例として、病院が発行する院外処方箋を本実施の形態に係るメモリカードに保存した場合の動作を示す説明図。
【図12】第2の実施の形態に係るホスト機器とメモリカードの概略構成を示すブロック図。
【図13】データ重要度格納領域とデータID格納領域とデータオフセット格納領域の一例を示す図。
【図14】第2の実施の形態においてホスト機器がメモリカードからデータを読み出すリードコマンドを説明するための図。
【図15】第2の実施の形態におけるメモリカードからのユーザデータの読み出し手順を示すフローチャート。
【図16】ユーザの使用例として、病院に提出する問診表を本発明のメモリカードに保存した場合の動作を示す説明図。
【符号の説明】
【0109】
101…ホスト機器
102…メモリカード
103…カードインタフェース
104…CPU
105…システムメモリ
106…表示装置
107…ROM
108…NAND型フラッシュメモリ
109…プロセッサモジュール
110…ユーザデータ領域
111…管理データ領域
112…機密データ領域
113…保護データ領域
114…データ重要度格納領域
115…データID格納領域
116…重要度・ID管理手段
117…重要度・ID比較手段
118…コントローラ
119…ROM
120…SRAM
121…インタフェース用端子
122…IOインタフェース
123…メモリインタフェース
124…データオフセット格納領域
125…重要度・ID・オフセット管理手段
126…重要度・ID・オフセット比較手段

【特許請求の範囲】
【請求項1】
ホスト機器に装着され、前記ホスト機器からアクセスされるメモリカードにおいて、
ユーザデータを格納するユーザデータ領域と、前記ユーザデータ領域における所定の単位ごとに対して設定されたデータ重要度を格納するデータ重要度格納領域と、前記ユーザデータ領域における所定の単位ごとに対して設定されたデータIDを格納するデータID格納領域とを有する不揮発性半導体メモリと、
前記ホスト機器から前記ユーザデータ領域へのアクセスが発生した場合に、そのアクセス対象のデータに対応するデータ重要度およびデータIDを取得し、前記ホスト機器からホストレベルおよびホストIDを取得する管理手段と、
前記管理手段が取得したデータ重要度、データID、ホストレベルおよびホストIDに基づいて、前記ホスト機器からのアクセスの許否を判断する比較手段とを具備することを特徴とするメモリカード。
【請求項2】
前記不揮発性半導体メモリは、前記ユーザデータ領域における所定の単位ごとに対して設定されたデータオフセットを格納するオフセット格納領域を更に具備し、
前記管理手段は、前記ホスト機器から前記ユーザデータ領域へのアクセスが発生した場合に、そのアクセス対象のデータに対応する前記データオフセットを取得し、
前記比較手段は、前記データ重要度と前記データオフセットとを足し合わせた値と前記ホストレベルとを比較し、前記ホスト機器からのアクセスの許否を判断することを特徴とする請求項1に記載のメモリカード。
【請求項3】
ホスト機器に装着して使用するメモリカードに搭載され、不揮発性半導体メモリを制御するプロセッサモジュールにおいて、
前記ホスト機器から前記不揮発半導体メモリへのアクセスが発生した場合に、そのアクセス対象のデータに対応するデータ重要度およびデータIDを取得し、前記ホスト機器からホストレベルおよびホストIDを取得する管理手段と、
前記管理手段が取得したデータ重要度、データID、ホストレベルおよびホストIDに基づいて、前記ホスト機器からのアクセスの許否を判断する比較手段とを具備することを特徴とするプロセッサモジュール。
【請求項4】
前記管理手段は、前記ホスト機器から前記ユーザデータ領域へのアクセスが発生した場合に、そのアクセス対象のデータに対応するデータオフセットを取得し、
前記比較手段は、前記データ重要度と前記データオフセットとを足し合わせた値と前記ホストレベルとを比較し、前記ホスト機器からのアクセスの許否を判断することを特徴とする請求項3に記載のプロセッサモジュール。
【請求項5】
メモリカードが装着され、前記メモリカードにアクセスするホスト機器の制御方法において、
前記メモリカードにアクセスする場合に、当該ホスト機器のアクセス能力を示すホストレベルと、アクセス対象のデータの管理者を示すユーザIDを前記メモリカードに送信する第1のステップと、
前記メモリカードへのアクセスの許否を前記メモリカードからレスポンスとして受信する第2のステップとを具備することを特徴とするホスト機器の制御方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate


【公開番号】特開2007−133770(P2007−133770A)
【公開日】平成19年5月31日(2007.5.31)
【国際特許分類】
【出願番号】特願2005−327813(P2005−327813)
【出願日】平成17年11月11日(2005.11.11)
【出願人】(000003078)株式会社東芝 (54,554)
【出願人】(390010308)東芝デジタルメディアエンジニアリング株式会社 (192)
【Fターム(参考)】