データ保護システム、データ保護方法、及びメモリカード
【課題】インターオペラビリティ性を確保しつつ、個人情報の保護を図ると共に、ホスト装置側の実装負担も軽減する。
【解決手段】データ鍵Dk、ユーザ鍵Ukを用いた二重暗号鍵方式によりデータを暗号化して記憶するSDカード10から特定のホスト装置20にデータを提供しそれ以外のホスト装置へのデータの提供を制限するデータ保護システムである。ホスト装置20は、データの書き込み及び読み出しに関する制御を司るDPS(Data Protection System)プログラムを備える。SDカード10は、DPSプログラムからの命令に従いデータを暗復号化すると共に、ユーザ鍵を利用したデータの復号を実行可能なユーザを特定するユーザID情報を管理するDPSA(Data Protection System Agent)プログラムを備える。
ことを特徴とする。
【解決手段】データ鍵Dk、ユーザ鍵Ukを用いた二重暗号鍵方式によりデータを暗号化して記憶するSDカード10から特定のホスト装置20にデータを提供しそれ以外のホスト装置へのデータの提供を制限するデータ保護システムである。ホスト装置20は、データの書き込み及び読み出しに関する制御を司るDPS(Data Protection System)プログラムを備える。SDカード10は、DPSプログラムからの命令に従いデータを暗復号化すると共に、ユーザ鍵を利用したデータの復号を実行可能なユーザを特定するユーザID情報を管理するDPSA(Data Protection System Agent)プログラムを備える。
ことを特徴とする。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、記憶媒体において暗号化して記憶されたデータを保護しつつ、特定人の間で容易に利用することを可能としたデータ保護システム、データ保護方法、及びメモリカードに関する。
【背景技術】
【0002】
SDカード等の記憶媒体は、例えば複数のコンピュータ等の間でデータの共有を行うための、いわゆるブリッジメディアとして広く利用されている。たとえば、デジタルカメラ等において、デジタルスチルカメラ用の規格に準拠した形式で画像データをSDカードに記録すると、規格に準拠する他のデジタルスチルカメラやパーソナルコンピュータにおいてもこれら画像データを利用することが可能である(インターオペラビリティ)。
【0003】
しかし、このインターオペラビリティは、個人情報保護の観点からすれば、逆効果となる場合がある。すなわち、他人には見せたくない画像データがSDカードに記憶されている場合であっても、インターオペラビリティ性のため、当該他人に対する閲覧制限を行うことができない。さらに、画像データが記録されたSDカードを紛失し、これを第三者が拾得した場合、第三者に対して、閲覧を抑制することができない。同様に、企業情報や企業内文書をSDカードに記録した場合において、複数の特定の人物だけで共有することはできない。
【0004】
複数の特定人間でデータを共有しようとした場合、SDカード全体をパスワードでロックする方法はあるが、この場合、特定のデータだけを選択的に保護することができないし、パスワードの管理等が問題となる。
【0005】
また、特定のデータだけを選択的に保護する方法としては、データファイル毎にパスワードをかけて暗号化することは知られている。しかし、データを暗号化する際に使用した暗号鍵が端末側で保護されるため、上述の複数の特定人でのデータ共有の用途には不向きである。
【0006】
このように、インターオペラビリティ性を確保しつつ、個人情報の保護を図ると共に、ホスト装置側の実装負担も軽減したデータ保護システムが望まれている。
【特許文献1】特開2006−5557号公報
【発明の開示】
【発明が解決しようとする課題】
【0007】
本発明は、インターオペラビリティ性を確保しつつ、個人情報の保護を図ると共に、ホスト装置側の実装負担も軽減することを目的とする。
【課題を解決するための手段】
【0008】
本発明の一態様に係るデータ保護システムは、
データをデータ鍵で暗号化し更にこのデータ鍵をユーザ鍵で暗号化する二重暗号鍵方式により前記データを暗号化して記憶するメモリカードから特定のホスト装置に前記データを提供しそれ以外のホスト装置への前記データの提供を制限するデータ保護システムにおいて、
前記ホスト装置は、
前記メモリカードにおけるデータの書き込み及び読み出しに関する制御を司るDPS(Data Protection System)プログラムを備え、
前記メモリカードは、
主記憶装置としての第1の不揮発性メモリと、
この第1の不揮発性メモリを制御して前記データの暗号化、復号化、及び読み出し、書き込みを司ると共に第2の不揮発性メモリを備えたメモリコントローラと、
前記メモリコントローラに搭載され、前記DPSプログラムからの命令に従い前記データ鍵を用いて前記データを、前記ユーザ鍵を用いて前記データ鍵を暗号化して前記第1の不揮発性メモリに記憶させる一方、前記DPSプログラムからの命令に従い前記ユーザ鍵および前記データ鍵を用いて前記データを復号化して読み出すと共に、前記ユーザ鍵を利用した前記データの復号を実行可能なユーザを特定するID情報を管理するDPSA(Data Protection System Agent)プログラムと
を備え、
前記データの書き込みの際、
前記DPSプログラムは、前記データを格納すべき前記第1の不揮発性メモリ中の格納場所を前記DPSAプログラムに指示し、
前記DPSAプログラムは、前記DPSプログラムからの書き込み命令に従い前記データ鍵を用いて前記データを暗号化して暗号化データを取得し、更に前記データ鍵を前記ユーザ鍵で暗号化して暗号化データ鍵を得て、前記暗号化データを前記第1の不揮発性メモリ中の前記格納場所に記憶させ、前記暗号化データ鍵を前記第1又は第2の不揮発性メモリに記憶させ、
前記データの読み出しの際、
前記DPSプログラムは、前記ユーザを特定するユーザ情報を提示して前記DPSAプログラムに所望の前記データの読み出しを要求し、
前記DPSAプログラムは、前記ID情報を参照して、提示された前記ユーザ情報に対応する前記ユーザ鍵を用いて前記暗号化データ鍵を復号化して前記データ鍵を得て、更にこのデータ鍵を用いて前記データを復号化して前記ホスト装置に向けて読み出す
ことを特徴とする。
【0009】
また、本発明の一態様に係るデータ保護方法は、
主記憶装置としての第1の不揮発性メモリと、この第1の不揮発性メモリを制御してデータの暗号化、復号化、及び読み出し、書き込みを司ると共に第2の不揮発性メモリを備えたメモリコントローラを備えたメモリカードに、データ鍵及びユーザ鍵を用いた二重暗号鍵方式によりデータを暗号化して記憶し、このメモリカードから特定のホスト装置に前記データを提供しそれ以外のホスト装置への前記データの提供を制限するデータ保護方法であって、
前記メモリカードにおけるデータの書き込み及び読み出しに関する制御を司るDPS(Data Protection System)プログラムを前記ホスト装置に搭載し、
前記DPSプログラムからの命令に従い前記データ鍵を用いて前記データを、前記ユーザ鍵を用いて前記データ鍵を暗号化して前記第1の不揮発性メモリに記憶させる一方、前記DPSプログラムからの命令に従い前記ユーザ鍵及び前記データ鍵を用いて前記データを復号化して読み出すと共に、前記ユーザ鍵を利用して前記データを復号可能なユーザを特定するID情報を管理するDPSA(Data Protection System Agent)プログラムを前記メモリコントローラに搭載し、
前記データの書き込みの際には、
前記DPSプログラムから前記DPSAプログラムに対し、前記データを格納すべき前記第1の不揮発性メモリ中の格納場所を指示するステップと、
前記DPSAプログラムが、前記DPSプログラムからの書き込み命令に従い前記データ鍵を用いて前記データを暗号化して暗号化データを取得し、更に前記データ鍵を前記ユーザ鍵で暗号化して暗号化データ鍵を得て、前記暗号化データを前記第1の不揮発性メモリに記憶させ、前記暗号化データ鍵を前記第1又は第2の不揮発性メモリに記憶させるステップと
を実行し、
前記データの読み出しの際には、
前記DPSプログラムが前記ユーザを特定するユーザ情報を提示して前記DPSAプログラムに所望の前記データの読み出しを要求するステップと、
前記DPSAプログラムが、前記ID情報を参照して、定時された前記ユーザ情報に対応する前記ユーザ鍵を用いて前記暗号化データ鍵を復号化して前記データ鍵を得て、更にこのデータ鍵を用いて前記データを復号化して前記ホスト装置に向けて読み出すステップと
を実行することを特徴とする。
【0010】
また、本発明の一態様に係るメモリカードは、
データをデータ鍵で暗号化し更にこのデータ鍵をユーザ鍵で暗号化する二重暗号鍵方式により前記データを暗号化して記憶し、特定のホスト装置に前記データを提供しそれ以外のホスト装置への前記データの提供を制限する機能を有するメモリカードであって、
主記憶装置としての第1の不揮発性メモリと、
この第1の不揮発性メモリを制御して前記データの暗号化、復号化、及び読み出し、書き込みを司ると共に第2の不揮発性メモリを備えたメモリコントローラと、
前記メモリコントローラに搭載され、
前記ホスト装置に搭載され前記メモリカードにおけるデータの書き込み及び読み出しに関する制御を司るDPS(Data Protection System)プログラムからの命令に従い前記データ鍵を用いて前記データを、前記ユーザ鍵を用いて前記データ鍵を暗号化して前記第1の不揮発性メモリに記憶させる一方、前記DPSプログラムからの命令に従い前記ユーザ鍵および前記データ鍵を用いて前記データを復号化して読み出すと共に、前記ユーザ鍵を利用した前記データの復号を実行可能なユーザを特定するID情報を管理するDPSA(Data Protection System Agent)プログラムと
を備え、
前記DPSAプログラムは、
前記DPSプログラムから、前記データを格納すべき前記第1の不揮発性メモリ中の格納場所の指定を伴うデータの書き込み命令を受けた場合、この書き込み命令に従い前記データ鍵を用いて前記データを暗号化して暗号化データを取得し、更に前記データ鍵を前記ユーザ鍵で暗号化して暗号化データ鍵を得て、前記暗号化データを前記第1の不揮発性メモリに記憶させ、前記暗号化データ鍵を前記第1又は第2の不揮発性メモリに記憶させ、
前記DPSプログラムから、前記ユーザを特定するユーザ情報を提示を伴う所望の前記データの読み出し命令を受けた場合、前記ID情報を参照して、提示された前記ユーザ情報に対応する前記ユーザ鍵を用いて前記暗号化データ鍵を復号化して前記データ鍵を得て、更にこのデータ鍵を用いて前記データを復号化して前記ホスト装置に向けて読み出す
ことを特徴とする。
【発明の効果】
【0011】
この発明によれば、インターオペラビリティ性を確保しつつ、個人情報の保護を図ると共に、ホスト装置側の実装負担も軽減することができる。
【発明を実施するための最良の形態】
【0012】
次に、本発明の実施の形態に係るデータ保護システムを、図面を参照して詳細に説明する。
【0013】
最初に、本発明が適用され得る利用形態(利用シーン)を、図1及び図2を参照して説明する。
【0014】
このデータ保護システムは、二重暗号化鍵方式によりセキュアに暗号化データを記憶した記憶媒体(メモリカード)の一例としてのSDカード10と、この暗号化データを利用するホスト装置20とにより構成され得る。
【0015】
SDカード10は、例えば図1に示すように、同一のユーザにより所有される複数のホスト装置20(例えばデジタルカメラ20A、パーソナルコンピュータ20B)に対し、自身が格納している暗号化データを復号化した上で平文データを提供する(利用シーンA)。
【0016】
すなわち、このデータ保護システムでは、SDカード10に、データ毎に用意されたデータ鍵Dk、及びユーザ固有のユーザ鍵Ukを用いた二重暗号化方式により暗号化されたデータDataが格納されている。具体的には、SDカード10は、平文データDataをデータ鍵Dkで暗号化した暗号化データEnc(Dk:Data)と、データ鍵Dkをユーザ鍵Ukで暗号化した暗号化データ鍵Enc(Uk:Dk)とを格納している。ユーザ鍵Ukは、暗号化され、又は外部からは自由にアクセスできない保護領域に格納されることにより、SDカード10内にセキュアに格納されている。
【0017】
ホスト装置20からの命令に従い、このデータ鍵Dk、ユーザ鍵Ukが復号され、暗号化データ鍵Enc(Uk:Dk)、及び暗号化データEnc(Dk:Data)が復号化されて平文データDataが得られると、この平文データDataがホスト装置20に向けて読み出される。
【0018】
また、ホスト装置20は、自身が有する平文データを二重暗号化鍵方式により暗号化してSDカード10に書き込むこともできる。SDカード10は、ホスト装置20からの書き込み命令に従い、データ鍵Dk、及びユーザ鍵Ukを生成又は割り当てて、暗号化データEnc(Dk:Data)と、暗号化データ鍵Enc(Uk:Dk)とを生成し格納する。
【0019】
このように、暗号化、復号化はSDカード10側で行い、ホスト装置20には暗号化又は復号化のための構成が不要であり、ホスト装置の実装負担が軽減されている。また、ホスト装置20は、データ鍵Dk、ユーザ鍵Uk自体は保有しない。
【0020】
代わりに、このデータ鍵Dkをユーザ鍵Ukで暗号化した暗号化データ鍵Enc(Uk:Dk)、ユーザ鍵Ukに対応するユーザ鍵識別データUkID、及び平文データを格納したSDカード10内の格納場所に関する格納情報を有している(又は外部から必要に応じて当該格納情報を受領する)。ホスト装置20は、データの書き込みを行った場合において、書き込み完了後これらのデータをSDカード10から受領する。
【0021】
また、データ読み出しを行う場合には、ユーザを特定するためのユーザ情報、格納情報等のデータをSDカード10側に提供して、所望の平文データDataの提供を受ける。データの書き込み先(格納場所)等は、ホスト装置20側に設けられたファイルシステムにより制御され得る。
【0022】
通常、デジタルカメラ、パーソナルコンピュータ等はファイルシステムを有しているため、SDカード10に別途ファイルシステムを搭載するよりも、ホスト装置20側にもとより設けられたファイルシステムを利用することが好適である。もちろん、SDカード10に別途ファイルシステムを搭載し、このファイルシステムを用いた制御を行うことも可能である。
【0023】
図2は、別の利用形態(利用シーンB)を示している。これは、ユーザAがSDカード10に書き込んだデータDataを、別のユーザ、例えばユーザBにも提供することを選択的に許可する形態である。選択的に特定人に許可をするものであるので、個人情報の保護は図られており、特定人の間においてはデータのインターオペラビリティ性が確保される。この許可を行う場合、ユーザAは、SDカード10内に格納されたIDテーブルTABを書き換えて、ユーザBに対し、自己のユーザ鍵UkAで暗号化されたデータの提供を許可する。
【0024】
IDテーブルTABがこのようにして書き換えられた後、当該ユーザBがユーザID等を提示してSDカード10にアクセスすると、ユーザ鍵UkAで暗号化されたデータDataを復号化して読み出すことが可能になる。
【0025】
他方、ユーザAによりデータの利用を許可されていない別のユーザ、例えばユーザC、D・・・が、このSDカード10にアクセスしたとしても、ユーザ鍵UkAは読み出されず、平文のデータdataはそれら未承認のユーザには提供されない。
【0026】
次に、本システムにおけるSDカード10、及びホスト装置20の具体的な構成を、図3を参照して説明する。
【0027】
SDカード10は、メモリコントローラ30と、不揮発性メモリであるフラッシュメモリ40とを備えている。SDカード10は、データをセキュアに記憶したセキュア記憶媒体の一例であり、フラッシュメモリ40内に、システム領域(System Area)41、秘匿領域(Hidden Area)42、保護領域(Protected Area)43、ユーザデータ領域(User Data Area)44を備えており、各領域41〜44に適宜データが記憶される。
【0028】
システム領域41は、読取専用でSDカード10の外部からアクセス可能な領域である。秘匿領域42は、読取専用でSDカード10自身が参照する領域であり、外部からのアクセスが一切不可となっている。保護領域43は、認証に成功した場合にSDカード10の外部から読出/書込可能な領域である。ユーザデータ領域44は、SDカード10の外部から自由に読出/書込可能な領域である。
【0029】
ホスト装置20は、一例として、一般的にコンピュータに備えられているCPU(Central Processing Unit)21、ROM(Read Only Memory)22、RAM(Random Access Memory)23、画像メモリ24、表示制御部25、インターフェース(I/F)26、及びハードディスクドライブ(HDD)27を備えている。ホスト装置20は、SDカード10に対するデータの書き込み、及びデータの読み出しを実行するため、ファイルシステム、DPS(Data Protection System)プログラムをHDD27に格納している。
【0030】
ファイルシステムは、通常のパーソナルコンピュータ等に備えられている一般的なものが利用可能である。また、DPSプログラムは、後述するDPSAプログラムを起動させて二重暗号化鍵方式を用いたデータの書き込み、読み出し動作をDPSAプログラムに実行させるためのプログラムである。このDPSプログラムは、DPSAプログラムとの間で、SDカード10の認証を行うカード認証手続、及びユーザ自身を認証するユーザ認証等も担当する。
【0031】
メモリコントローラ30は、メモリコントローラ30の動作の全体を司るCPU31、バッファメモリ32、ROM33、フラッシュメモリ34、ホスト装置20との間のデータのやり取りを担当するホスト側インタフェース35、及びメモリ40とのメモリ側インタフェース36を備えている。バッファメモリ32は、ホスト装置20からフラッシュメモリ40に送信されるデータ或いはホスト装置20に送信するためにフラッシュメモリ40から読み出したデータを一時保持する役割を有する。なお、フラッシュメモリ34はメモリコントローラ30に内蔵される。 ROM33に格納されるDPSAプログラムは、メモリコントローラ30内にて実行され、データの暗号化・復号化、暗号化に用いられるユーザ鍵及びデータ鍵の生成、及びユーザ鍵識別データの生成及び管理等を担当する。図4に示すように、DPSAプログラムは、データの暗号化を担当する暗号化部331、データの復号化を担当する復号化部332、暗号化のためのユーザ鍵及びデータ鍵を生成する鍵生成部333、及びユーザ鍵に対応するユーザ鍵識別データ(ユーザ鍵ID)を生成し管理するユーザ鍵生成・管理部334をメモリコントローラ30の内部に実現する。或いはバッファメモリ32にデータの暗号化・復号化の機能を追加してCPU31を介して、暗号化・復号化のためのデータ鍵を供給して、前記暗号化部331、復号化部332の機能を実現することもできる。
【0032】
フラッシュメモリ34は、メモリコントローラ30内に設けられ、DPSAプログラムの実行時に実行される各種認証手続やデータの暗復号化等に必要なデータをセキュアに格納する役割を有する。本実施の形態では、フラッシュメモリ34は、フラッシュメモリ40と同様に、システム領域(System Area)341、秘匿領域(Hidden Area)342、保護領域(Protected Area)343を備えており、各領域341〜343に適宜データが記憶される。
【0033】
この実施の形態では、データDataをデータ鍵Dkで暗号化した暗号化データEnc(Dk:Data)、及びデータ鍵Dkをユーザ鍵Ukで暗号化した暗号化データ鍵Enc(Uk:Dk)が、主記憶装置であるフラッシュメモリ40のユーザデータ領域44に格納される。主記憶装置であるNANDフラッシュメモリ40は、記憶容量も大きく、また、ホスト装置20のファイルシステムによってアクセス操作可能である。暗号化データEnc(Dk:Data)は、データの種類が増えれば大容量となり、暗号化データ鍵Enc(Uk:Dk)もデータの種類の増大に応じてデータ量が増大するので、大容量を有するユーザデータ領域44に記憶するのが好適である。
【0034】
また、ユーザ鍵Ukは、フラッシュメモリ34の秘匿領域342に格納されたメディア固有鍵Kmuで暗号化されて、フラッシュメモリ34の保護領域343に格納される。ユーザ鍵Ukはユーザ毎に設定され、複数のデータに対し共通に用いられ得るので、データ量はデータDataやデータ鍵Dkに比べて少ない。従って、フラッシュメモリ34は小さな容量であっても十分である。
フラッシュメモリ34がホスト装置20からアクセスできない実装であれば、フラッシュメモリ34は保護領域343と見なすことができるため、メディア固有鍵Kmuは無くても構わない。つまり、ユーザ鍵Ukをそのまま格納することも可能である。
別の形態として、NANDフラッシュメモリ40を用いて、フラッシュメモリ34を省略することもできる。この場合は、秘匿領域42或いは保護領域43を使用する。この場合、メディア固有鍵Kmuはフラッシュメモリ40の秘匿領域42に格納されたものを使用する。また、保護領域はフラッシュメモリ40の保護領域43を使用する。
【0035】
次に、DPSAプログラムにより実現される各部の機能を、図5及び図6を参照して説明する。図5は、ホスト装置20からSDカード10にデータを書き込む場合に動作する部分を抜粋して記述したものであり、また、図6は、SDカード10からホスト装置20へとデータを復号化後に読み出す場合に動作する部分を抜粋して記述したものである。
【0036】
まず、図5において、データの書き込み動作の場合に動作する構成を説明する。ホスト装置20内のDPSプログラムは、SDカード10に暗号化して書き込もうとするデータDataを、フラッシュメモリ40内のユーザデータ領域44のアドレスAddressと共にSDカード10に向けて送信する。暗号化部331は、鍵生成部333で生成されたデータ鍵Dkを用いてこのデータDataを暗号化して暗号化データEnc(Dk:Data)を生成してユーザデータ領域44の指定されたアドレスに格納する。
【0037】
また、鍵生成部333は、ユーザ毎に異なり複数種類のデータ鍵に対し共通に用いられるユーザ鍵Ukを生成する。暗号化部331は、このユーザ鍵Ukを用いてデータ鍵Dkを暗号化して暗号化データ鍵Enc(Uk、Dk)を生成してユーザデータ領域44に格納する。さらに、このユーザ鍵Ukは、メディア固有鍵Kmuにより暗号化されて保護領域343に格納される。メディア固有鍵Kmuは、秘匿領域342に格納されている。
【0038】
ユーザ鍵ID生成・管理部334は、鍵生成部333が新たにユーザ鍵Ukを生成した場合、そのユーザ鍵Ukに対応するユーザ鍵識別データUkIDを生成すると共に、そのユーザ鍵識別データUkIDを、ユーザ鍵Ukと対応付けて管理する。生成されたユーザ鍵識別データUkIDは、暗号化データ鍵Enc(Uk:Dk)と共にホスト装置20に送信される。
【0039】
ホスト装置20内のDPSプログラムは、受信されたユーザ鍵識別データUkID、及び暗号化データ鍵Enc(Uk:Dk)に基づきデータ鍵管理ファイルMngFileを更新して、再びSDカード10に返信して、ユーザデータ領域44に格納させる。データ鍵管理ファイルMngFileは、ユーザ鍵識別データUkID、暗号化データ鍵Enc(Uk:Dk)、データDataを格納したユーザデータ領域44のアドレス、データの使用ルール(共有可/不可、読み取り専用/編集可能、印刷可/不可、コピー又は移動可/不可等)を規定したユーザルールファイルURule、及び、暗号化されたデータに関するメタデータ等を含む。これらのメタデータはデータ鍵DkとともにUkで暗号化される。
【0040】
次に、データの読み出しを行う場合における各部の機能を図6を参照して説明する。読み出しを行う場合、ホスト装置20のDPSプログラムは、ユーザデータ領域44に格納されたデータ鍵管理ファイルMngFileを読み出してRAM23に一時保持する。DPSプログラムは、このデータ鍵管理ファイルMngFileに基づき、読み出すべきデータDataを特定し、このデータに対応する暗号化データ鍵Enc(Uk:Dk)を、ユーザ鍵識別データUkIDとユーザデータ領域44内のアドレス共にSDカード10に送信する。
【0041】
ユーザ鍵ID生成部・管理部334は、受信されたユーザ鍵識別データUkIDに基づきユーザ鍵Ukを特定する。復号化部332は、受信された暗号化データ鍵Enc(Uk:Dk)を、特定されたユーザ鍵Ukを用いて復号化してデータ鍵Dkを得る。さらに復号化部332は、このデータ鍵Dkを用いて、ユーザデータ領域44に格納されている暗号化データEnc(Dk:Data)を復号化してデータDataを得る。DPSAプログラムは、この得られたデータをホスト装置20に供給する。
【0042】
次に、本システムにおけるデータの書き込み動作、及び読み出し動作を、図7及び図8に示すタイミングチャートを参照して説明する。
【0043】
まず、図7を参照してデータの書き込み動作を説明する。データの書き込みを行う場合、まず、ホスト装置20のDPSプログラムは、DPSAプログラムを起動するためのAwakeコマンドを発行する(S1)。
【0044】
次に、DPSプログラムとDPSAプログラムとは、ユーザID、パスワード等に基づいてユーザ認証手続を行うと共に、カード認証手続を実行する(S2)。
【0045】
ユーザ認証はDPSプログラムがDPSAプログラムにユーザID、パスワードを送信するとDPSAプログラムはユーザ鍵生成・管理部334を動作させ、ユーザIDとパスワードの一致、不一致を確認し、一致しておれば、認証とみなし次のステップに移行する。カード認証はカード自体の正当性を確認するための処理であり、省略した実装も可能である。カード認証に用いる手法は具体的な手法には限定されず、PKI(Public Key Infrastructure)であってもよいし、共有秘密鍵方式であってもよい。後者が実装負担も少なくて済み好適である。
【0046】
ユーザ認証が完了した後、DPSプログラムは、SDカード10に暗号化して書きこもうとするデータDataの書き込み命令を、書きこもうとする格納場所のアドレスAddressと共にSDカード10に送信する(S3)。なお、ユーザ認証が不成功であった場合、DPSAプログラムはステップ(S3)に対して、エラーとして受け付けを拒否する。
【0047】
この書き込み命令を受けたDPSAプログラムは、そのユーザについてのユーザ鍵が未発行である場合には、鍵生成部333にユーザ鍵Ukを発行させ、更にこのユーザ鍵Ukに対応するユーザ鍵識別データUkIDをユーザ鍵ID生成・管理部334に決定させる(S4)。ユーザ鍵識別データUkIDとユーザ鍵とは、ユーザ鍵ID生成・管理部334により対応付けて管理される。なお、そのユーザについてのユーザ鍵が発行済みである場合には、その発行済みのユーザ鍵を割り当てる。
【0048】
続いて、DPSプログラムが書き込み対象のデータDataとユーザデータ領域44中の書き込むべきアドレスをSDカード10に向けて送信する(S5)。
【0049】
DPSAプログラムは、このデータDataを受信すると、これを暗号化するためのデータ鍵Dkを鍵生成部333に生成させる(S6)。そして、暗号化部331において、このデータ鍵Dkを用いてデータDataを暗号化して暗号化データEnc(Dk:Data)を生成し、ユーザデータ領域44中の指定されたアドレスに書き込む(S7)。 データの書き込み動作が完了すると、DPSAプログラムは、その旨をDPSプログラムに報告する(S8)。DPSプログラムは、これに対応して、DPSAプログラムに対し、暗号化データ鍵Enc(Uk:Dk)の送信を要求する(S9)。DPSAプログラムは、この要求を受けて、暗号化データ鍵Enc(Uk:Dk)とユーザ鍵識別データUkIDとをDPSプログラムに向けて送信する(S10)。
【0050】
DPSプログラムは、暗号化データ鍵Enc(Uk:Dk)とユーザ鍵識別データUkIDとを確認すると、ユーザデータ領域44に格納されているデータ鍵管理ファイルMngFileにアクセスし(S11)、受信した暗号化データ鍵Enc(Uk:Dk)とユーザ鍵識別データUkIDに基づき、このデータ鍵管理ファイルMngFileを更新する(S12)。以上の動作により、ホスト装置20からSDカード10への書き込みが完了する。ホスト装置20においては、暗号化等の動作は行われず、DPSプログラムを介したファイルシステムによる書き込み先のアドレス指定等が行われるだけである。従って、ホスト装置側の実装負担を重くすることなくデータ保護を行うことができる。
【0051】
次に、図8を参照してデータの読み出し動作を説明する。データの読み出しを行う場合、ホスト装置20のDPSプログラムは、書き込み動作の場合と同様に、DPSAプログラムを起動するためのAwakeコマンドを発行する(S21)。
【0052】
次に、DPSプログラムとDPSAプログラムとは、ユーザID、パスワード等に基づいてユーザ認証手続・カード認証手続を実行する(S22)。この認証手続が完了すると、DPSプログラムは、ユーザデータ領域44に格納されたデータ鍵管理ファイルMngFileにアクセスして、読み出したいデータDataに関するファイルを決定する(S23)。
【0053】
続いて、DPSプログラムは、この読み出したいデータDataに対応する暗号化データ鍵Enc(Uk:Dk)とユーザ鍵識別データUkIDをDPSAプログラムに向けて送信する(S24)。さらに、読み出したいデータDataが格納されているユーザデータ領域44のアドレスを指定してデータDataの読み出しを指示する(S25)。
【0054】
DPSAプログラムは、受信されたユーザ鍵識別データUkIDに基づきユーザ鍵ID生成・管理部334を参照して対応するユーザ鍵Ukを取得する。そして、このユーザ鍵Ukを用いて暗号化データ鍵Enc(Uk:Dk)を復号化してデータ鍵Dkを得る(S26)。
【0055】
そして、指定されたアドレスから、対象のデータDataに関する暗号化データEnc(Dk:Data)を読み出し、データ鍵Dkを用いて復号化してデータDataを得る(S27)。得られたデータは、ホスト装置20に送信される(S28)。以上により、データの読み出し動作が完了する。
【0056】
図9は、本実施の形態におけるSDカード10でのユーザデータ領域44のディレクトリ構造を示している。図9に示すように、SDカード10内では、DPSプログラムが管理するディレクトリDPSが形成され、更に、このディレクトリDPSの中に、異なるユーザA,B,C,D・・・毎に別々のユーザ・ディレクトリUserA、UserB・・・が形成されている。
【0057】
ユーザ・ディレクトリUserには、前述のデータ鍵管理ファイルMngFile、複数の暗号化データファイルEnc(Dki、Datai)が格納されている。
【0058】
また、ユーザ・ディレクトリUserと並列に、ユーザ・ディレクトリを管理するためのユーザ・ディレクトリ管理ファイルと、ユーザIDを管理するユーザID情報ファイルが格納されている。後述するように、ユーザID情報ファイルは、前述のデータ鍵管理ファイルMngFile、及びIDテーブルTABと関連付けられている。
【0059】
前述のIDテーブルTABは、各ユーザが、他の特定のユーザとデータを共有しようとする場合に書き換えるものであり、例えば、自身が有するあるユーザ鍵UkAを、他のユーザBにも使用を許可する旨の情報を書き込むためのものである。IDテーブルTABにこのような情報が書き込まれると、ユーザBがユーザAの情報を共有することが可能になる(前述の利用シーンB(図2))。IDテーブルTABはフラッシュメモリ34の保護領域343に格納される。
【0060】
次に、図10を参照して、IDテーブルTABの内部構成と、データ鍵管理ファイルMngfile、およびユーザID情報ファイルとの対応関係について説明する。
【0061】
ユーザAとユーザB、それぞれのユーザID、ユーザ鍵識別データUkID、ユーザ鍵Uk、及びパスワードPWは、IDテーブルTAB、データ鍵管理ファイルMngfile、およびユーザID情報ファイルに格納され、図10に示すように関連付けられている。
【0062】
ユーザIDは前述のユーザID情報ファイルで管理される。ユーザ鍵識別データUkIDはデータ鍵管理ファイルMngFileで管理される。ユーザ鍵UkとパスワードはIDテーブルTABでセキュアに管理される。
【0063】
図10に示す通り、ユーザは複数のユーザIDを持つことも許される。ユーザID、ユーザ鍵識別データUkID、ユーザ鍵Uk、パスワードは1つのセットとして見なされる。ユーザIDA0はユーザ鍵識別データUkIDA0、ユーザ鍵UkA0、パスワードPWA0と対応する。図10のユーザAは2つのユーザID(A0、A1)を持つている場合に相当し、ユーザBは1つのユーザID(B0)を持っている。
【0064】
図10の2人のユーザA,Bと3つのユーザID(A0,A1,B0)が存在する場合のIDテーブルTABの構成例を図11に示す。このIDテーブルTABは、あるユーザIDに関連づけられたユーザ鍵Ukの使用が、どのユーザ鍵識別データに対し許可されているかを示している。
【0065】
初期状態では、異なるユーザID間でのユーザ鍵の共用は許可されていない。例えば、ユーザAがユーザIDA0でユーザ認証を受ければ、自身がユーザIDA0の下で使用できるのはユーザ鍵UkA0のみである。ユーザAは2つのユーザID(A0,A1)を保持しているが、ユーザIDA0の下では、ユーザIDA1と対応するユーザ鍵UkA1の共用はできない。同様に、ユーザBは自身で使用を許可されているのは、ユーザ鍵UkB0のみである。
【0066】
図12はユーザ鍵及びデータの共有の許可がなされたときのIDテーブルTABの内部の状態を模式的に示している。ここで、ユーザAがユーザIDA0でユーザ認証を受けた後、ユーザB(ユーザ鍵UkB0、ユーザ鍵識別データUkIDB0を有する者)にユーザ鍵UkA0の共用を許可したと仮定する。この結果、IDテーブルTABのユーザIDA0のユーザ鍵識別データUkIDB0に対する許可フラグは「不許可」の状態から「許可」状態となる。この結果、ユーザBはユーザIDB0でユーザ認証を受けた状態であれば、ユーザ鍵UkA0の共用が認められる。従って、ユーザ鍵UkA0で暗号化されたテータ鍵の復号が可能となるので、このユーザ鍵UkA0で暗号化されているデータ鍵Dkを用いて暗号化されたデータDataの復号が可能となり、ユーザAとユーザBでデータの共有が可能となる。
ユーザが複数のユーザIDを持つことの利点として、データ共有をしたいデータと共有したくないデータを異なるユーザ鍵で管理することで、管理が非常に簡単になる。ユーザに一つのユーザ鍵しか認めないとデータの共有、非共有が簡単に実現できない。非共有データは、許可対象でないユーザ鍵UkA1により暗号化すれば良い。
【0067】
図12のIDテーブルTABの状態では、ユーザBはユーザAに対して、UkB0の共用を許可していないので、データの共有は一方向のユーザAからユーザBのみである。
【0068】
次に、ユーザBがユーザAの情報を共有する場合における読み出し動作(利用シーンB)を図13を参照して説明する。簡単のために、ユーザはそれぞれ1個のユーザ鍵UkAとUkBを持っていたとする。
【0069】
まず、ユーザBが有するホスト装置20のDPSプログラムは、DPSAプログラムを起動するためのAwakeコマンドを発行する(S31)。
【0070】
次に、DPSプログラムとDPSAプログラムとは、ユーザID、パスワード等に基づいてユーザ認証手続・カード認証手続を実行する(S32)。このときDPSAプログラムは、得られたユーザIDに基づき前述のIDテーブルTABを参照し、このユーザが他人のユーザ鍵の使用を許可されているか否かを判断する。この場合は、ユーザAは1つのユーザ鍵UkAを所有し、ユーザBへの使用が許可されていると判断したものとする。
【0071】
前述の認証手続(S32)が完了すると、DPSプログラムは、ユーザデータ領域44に格納されたデータ鍵管理ファイルMngFileにアクセスして、読み出したいデータDataに関するファイルを決定する(S33)。
【0072】
さらに、読み出したいデータDataが格納されているユーザデータ領域44のアドレスを指定してデータDataの読み出しを指示する(S35)。
【0073】
DPSAプログラムは、読み出し指示の対象とされたデータDataがユーザ鍵UkAで暗号化されている場合、前述のようにユーザ鍵UkAの使用が許可する旨の判断がなされているので、この判断に従い、ユーザ鍵UkAを用いて暗号化データ鍵Enc(UkA:Dk)を復号化してデータ鍵Dkを得る(S36)。そして、指定されたアドレスから、対象のデータDataに関する暗号化データEnc(Dk:Data)を読み出し、データ鍵Dkを用いて復号化してデータDataを得る(S37)。得られたデータは、ホスト装置20に送信される(S38)。以上により、データの読み出し動作が完了する。
【0074】
一方、ユーザAによりデータの共有が許可されていない他のユーザによる読み出し要求があった場合には、IDテーブルTABに基づいて、この要求を拒否する。従って、データのインターオペラビリティ性と、情報の保護とが両立されている。
【0075】
以上、発明の実施の形態を説明したが、本発明はこれらに限定されるものではなく、発明の趣旨を逸脱しない範囲内において、種々の変更、追加等が可能である。たとえば、上記の実施の形態では、ユーザ鍵Ukはメモリコントローラ30にて生成するものとして説明したが、図13に示すように、外部サーバ50からユーザ鍵を取得するような構成とすることも可能である。また、上記の実施の形態では、DPSAプログラム支配下にあるフラッシュメモリ34の保護領域343内にユーザ鍵Kuを格納したが、これに代えて、フラッシュメモリ40内の保護領域43に格納するようにしてもよい。
【0076】
また、上記の実施の形態では、説明の簡単のため、ユーザ毎に1つのユーザ鍵が発行される前提で説明したが、ユーザ毎に複数のユーザ鍵を発行することも可能である。この場合、各ユーザは、複数のユーザ鍵を目的別、データ別等によって使い分け、その複数のユーザ鍵のうちの一部のみを他人に利用することを許可することが可能である。
【0077】
また、ユーザ鍵だけでなく、データ鍵に関しても共有する範囲を具体的にIDテーブルTABに記憶させ、この情報に基づいて、1つのユーザ鍵で暗号化される複数のデータ鍵のうちの一部のみを利用可能とすることも可能である。
【図面の簡単な説明】
【0078】
【図1】本発明が適用され得る利用形態(利用シーン)を説明する概念図である。
【図2】本発明が適用され得る利用形態(利用シーン)を説明する概念図である。
【図3】本発明の実施の形態に係るデータ保護システムにおけるSDカード10、及びホスト装置20の具体的な構成を示すブロック図である。
【図4】DPSAプログラムにより実現されるメモリコントローラ30の機能を示すブロック図である。
【図5】DPSAプログラムにより実現される各部の機能を説明する機能ブロック図である。
【図6】DPSAプログラムにより実現される各部の機能を説明する機能ブロック図である。
【図7】本実施の形態に係るデータ保護システムの動作を示すタイミングチャートである。
【図8】本実施の形態に係るデータ保護システムの動作を示すタイミングチャートである。
【図9】本実施の形態におけるSDカード10でのディレクトリ構造を示している。
【図10】本実施の形態に係るユーザとユーザID、UkID、ユーザ鍵、パスワードの関係図である。
【図11】本実施の形態に係るIDテーブルの初期状態を表す図である。
【図12】本実施の形態に係るIDテーブルの共有状態を表す図である。
【図13】本実施の形態に係るデータ保護システムの動作を示すタイミングチャートである。
【図14】本発明の実施の形態の変形例を示す。
【符号の説明】
【0079】
10・・・SDカード、 20、20A、20B、20C、20D・・・ホスト装置、 30・・・メモリコントローラ、 40・・・フラッシュメモリ、 21・・・CPU(Central Processing Unit)、 22・・・ROM(Read Only Memory)、 23・・・RAM(Random Access Memory)、 24・・・画像メモリ、 25・・・表示制御部、 26・・・インターフェース(I/F)、 27・・・ハードディスクドライブ(HDD)、 31・・・CPU、 32・・・バッファメモリ、 33・・・ROM、 34・・・フラッシュメモリ、 35・・・ホスト側インタフェース、 36・・・メモリ側インタフェース、 331・・・暗号化部、 332・・・復号化部、 333・・・鍵生成部、 334・・・ユーザ鍵生成・管理部。
【技術分野】
【0001】
本発明は、記憶媒体において暗号化して記憶されたデータを保護しつつ、特定人の間で容易に利用することを可能としたデータ保護システム、データ保護方法、及びメモリカードに関する。
【背景技術】
【0002】
SDカード等の記憶媒体は、例えば複数のコンピュータ等の間でデータの共有を行うための、いわゆるブリッジメディアとして広く利用されている。たとえば、デジタルカメラ等において、デジタルスチルカメラ用の規格に準拠した形式で画像データをSDカードに記録すると、規格に準拠する他のデジタルスチルカメラやパーソナルコンピュータにおいてもこれら画像データを利用することが可能である(インターオペラビリティ)。
【0003】
しかし、このインターオペラビリティは、個人情報保護の観点からすれば、逆効果となる場合がある。すなわち、他人には見せたくない画像データがSDカードに記憶されている場合であっても、インターオペラビリティ性のため、当該他人に対する閲覧制限を行うことができない。さらに、画像データが記録されたSDカードを紛失し、これを第三者が拾得した場合、第三者に対して、閲覧を抑制することができない。同様に、企業情報や企業内文書をSDカードに記録した場合において、複数の特定の人物だけで共有することはできない。
【0004】
複数の特定人間でデータを共有しようとした場合、SDカード全体をパスワードでロックする方法はあるが、この場合、特定のデータだけを選択的に保護することができないし、パスワードの管理等が問題となる。
【0005】
また、特定のデータだけを選択的に保護する方法としては、データファイル毎にパスワードをかけて暗号化することは知られている。しかし、データを暗号化する際に使用した暗号鍵が端末側で保護されるため、上述の複数の特定人でのデータ共有の用途には不向きである。
【0006】
このように、インターオペラビリティ性を確保しつつ、個人情報の保護を図ると共に、ホスト装置側の実装負担も軽減したデータ保護システムが望まれている。
【特許文献1】特開2006−5557号公報
【発明の開示】
【発明が解決しようとする課題】
【0007】
本発明は、インターオペラビリティ性を確保しつつ、個人情報の保護を図ると共に、ホスト装置側の実装負担も軽減することを目的とする。
【課題を解決するための手段】
【0008】
本発明の一態様に係るデータ保護システムは、
データをデータ鍵で暗号化し更にこのデータ鍵をユーザ鍵で暗号化する二重暗号鍵方式により前記データを暗号化して記憶するメモリカードから特定のホスト装置に前記データを提供しそれ以外のホスト装置への前記データの提供を制限するデータ保護システムにおいて、
前記ホスト装置は、
前記メモリカードにおけるデータの書き込み及び読み出しに関する制御を司るDPS(Data Protection System)プログラムを備え、
前記メモリカードは、
主記憶装置としての第1の不揮発性メモリと、
この第1の不揮発性メモリを制御して前記データの暗号化、復号化、及び読み出し、書き込みを司ると共に第2の不揮発性メモリを備えたメモリコントローラと、
前記メモリコントローラに搭載され、前記DPSプログラムからの命令に従い前記データ鍵を用いて前記データを、前記ユーザ鍵を用いて前記データ鍵を暗号化して前記第1の不揮発性メモリに記憶させる一方、前記DPSプログラムからの命令に従い前記ユーザ鍵および前記データ鍵を用いて前記データを復号化して読み出すと共に、前記ユーザ鍵を利用した前記データの復号を実行可能なユーザを特定するID情報を管理するDPSA(Data Protection System Agent)プログラムと
を備え、
前記データの書き込みの際、
前記DPSプログラムは、前記データを格納すべき前記第1の不揮発性メモリ中の格納場所を前記DPSAプログラムに指示し、
前記DPSAプログラムは、前記DPSプログラムからの書き込み命令に従い前記データ鍵を用いて前記データを暗号化して暗号化データを取得し、更に前記データ鍵を前記ユーザ鍵で暗号化して暗号化データ鍵を得て、前記暗号化データを前記第1の不揮発性メモリ中の前記格納場所に記憶させ、前記暗号化データ鍵を前記第1又は第2の不揮発性メモリに記憶させ、
前記データの読み出しの際、
前記DPSプログラムは、前記ユーザを特定するユーザ情報を提示して前記DPSAプログラムに所望の前記データの読み出しを要求し、
前記DPSAプログラムは、前記ID情報を参照して、提示された前記ユーザ情報に対応する前記ユーザ鍵を用いて前記暗号化データ鍵を復号化して前記データ鍵を得て、更にこのデータ鍵を用いて前記データを復号化して前記ホスト装置に向けて読み出す
ことを特徴とする。
【0009】
また、本発明の一態様に係るデータ保護方法は、
主記憶装置としての第1の不揮発性メモリと、この第1の不揮発性メモリを制御してデータの暗号化、復号化、及び読み出し、書き込みを司ると共に第2の不揮発性メモリを備えたメモリコントローラを備えたメモリカードに、データ鍵及びユーザ鍵を用いた二重暗号鍵方式によりデータを暗号化して記憶し、このメモリカードから特定のホスト装置に前記データを提供しそれ以外のホスト装置への前記データの提供を制限するデータ保護方法であって、
前記メモリカードにおけるデータの書き込み及び読み出しに関する制御を司るDPS(Data Protection System)プログラムを前記ホスト装置に搭載し、
前記DPSプログラムからの命令に従い前記データ鍵を用いて前記データを、前記ユーザ鍵を用いて前記データ鍵を暗号化して前記第1の不揮発性メモリに記憶させる一方、前記DPSプログラムからの命令に従い前記ユーザ鍵及び前記データ鍵を用いて前記データを復号化して読み出すと共に、前記ユーザ鍵を利用して前記データを復号可能なユーザを特定するID情報を管理するDPSA(Data Protection System Agent)プログラムを前記メモリコントローラに搭載し、
前記データの書き込みの際には、
前記DPSプログラムから前記DPSAプログラムに対し、前記データを格納すべき前記第1の不揮発性メモリ中の格納場所を指示するステップと、
前記DPSAプログラムが、前記DPSプログラムからの書き込み命令に従い前記データ鍵を用いて前記データを暗号化して暗号化データを取得し、更に前記データ鍵を前記ユーザ鍵で暗号化して暗号化データ鍵を得て、前記暗号化データを前記第1の不揮発性メモリに記憶させ、前記暗号化データ鍵を前記第1又は第2の不揮発性メモリに記憶させるステップと
を実行し、
前記データの読み出しの際には、
前記DPSプログラムが前記ユーザを特定するユーザ情報を提示して前記DPSAプログラムに所望の前記データの読み出しを要求するステップと、
前記DPSAプログラムが、前記ID情報を参照して、定時された前記ユーザ情報に対応する前記ユーザ鍵を用いて前記暗号化データ鍵を復号化して前記データ鍵を得て、更にこのデータ鍵を用いて前記データを復号化して前記ホスト装置に向けて読み出すステップと
を実行することを特徴とする。
【0010】
また、本発明の一態様に係るメモリカードは、
データをデータ鍵で暗号化し更にこのデータ鍵をユーザ鍵で暗号化する二重暗号鍵方式により前記データを暗号化して記憶し、特定のホスト装置に前記データを提供しそれ以外のホスト装置への前記データの提供を制限する機能を有するメモリカードであって、
主記憶装置としての第1の不揮発性メモリと、
この第1の不揮発性メモリを制御して前記データの暗号化、復号化、及び読み出し、書き込みを司ると共に第2の不揮発性メモリを備えたメモリコントローラと、
前記メモリコントローラに搭載され、
前記ホスト装置に搭載され前記メモリカードにおけるデータの書き込み及び読み出しに関する制御を司るDPS(Data Protection System)プログラムからの命令に従い前記データ鍵を用いて前記データを、前記ユーザ鍵を用いて前記データ鍵を暗号化して前記第1の不揮発性メモリに記憶させる一方、前記DPSプログラムからの命令に従い前記ユーザ鍵および前記データ鍵を用いて前記データを復号化して読み出すと共に、前記ユーザ鍵を利用した前記データの復号を実行可能なユーザを特定するID情報を管理するDPSA(Data Protection System Agent)プログラムと
を備え、
前記DPSAプログラムは、
前記DPSプログラムから、前記データを格納すべき前記第1の不揮発性メモリ中の格納場所の指定を伴うデータの書き込み命令を受けた場合、この書き込み命令に従い前記データ鍵を用いて前記データを暗号化して暗号化データを取得し、更に前記データ鍵を前記ユーザ鍵で暗号化して暗号化データ鍵を得て、前記暗号化データを前記第1の不揮発性メモリに記憶させ、前記暗号化データ鍵を前記第1又は第2の不揮発性メモリに記憶させ、
前記DPSプログラムから、前記ユーザを特定するユーザ情報を提示を伴う所望の前記データの読み出し命令を受けた場合、前記ID情報を参照して、提示された前記ユーザ情報に対応する前記ユーザ鍵を用いて前記暗号化データ鍵を復号化して前記データ鍵を得て、更にこのデータ鍵を用いて前記データを復号化して前記ホスト装置に向けて読み出す
ことを特徴とする。
【発明の効果】
【0011】
この発明によれば、インターオペラビリティ性を確保しつつ、個人情報の保護を図ると共に、ホスト装置側の実装負担も軽減することができる。
【発明を実施するための最良の形態】
【0012】
次に、本発明の実施の形態に係るデータ保護システムを、図面を参照して詳細に説明する。
【0013】
最初に、本発明が適用され得る利用形態(利用シーン)を、図1及び図2を参照して説明する。
【0014】
このデータ保護システムは、二重暗号化鍵方式によりセキュアに暗号化データを記憶した記憶媒体(メモリカード)の一例としてのSDカード10と、この暗号化データを利用するホスト装置20とにより構成され得る。
【0015】
SDカード10は、例えば図1に示すように、同一のユーザにより所有される複数のホスト装置20(例えばデジタルカメラ20A、パーソナルコンピュータ20B)に対し、自身が格納している暗号化データを復号化した上で平文データを提供する(利用シーンA)。
【0016】
すなわち、このデータ保護システムでは、SDカード10に、データ毎に用意されたデータ鍵Dk、及びユーザ固有のユーザ鍵Ukを用いた二重暗号化方式により暗号化されたデータDataが格納されている。具体的には、SDカード10は、平文データDataをデータ鍵Dkで暗号化した暗号化データEnc(Dk:Data)と、データ鍵Dkをユーザ鍵Ukで暗号化した暗号化データ鍵Enc(Uk:Dk)とを格納している。ユーザ鍵Ukは、暗号化され、又は外部からは自由にアクセスできない保護領域に格納されることにより、SDカード10内にセキュアに格納されている。
【0017】
ホスト装置20からの命令に従い、このデータ鍵Dk、ユーザ鍵Ukが復号され、暗号化データ鍵Enc(Uk:Dk)、及び暗号化データEnc(Dk:Data)が復号化されて平文データDataが得られると、この平文データDataがホスト装置20に向けて読み出される。
【0018】
また、ホスト装置20は、自身が有する平文データを二重暗号化鍵方式により暗号化してSDカード10に書き込むこともできる。SDカード10は、ホスト装置20からの書き込み命令に従い、データ鍵Dk、及びユーザ鍵Ukを生成又は割り当てて、暗号化データEnc(Dk:Data)と、暗号化データ鍵Enc(Uk:Dk)とを生成し格納する。
【0019】
このように、暗号化、復号化はSDカード10側で行い、ホスト装置20には暗号化又は復号化のための構成が不要であり、ホスト装置の実装負担が軽減されている。また、ホスト装置20は、データ鍵Dk、ユーザ鍵Uk自体は保有しない。
【0020】
代わりに、このデータ鍵Dkをユーザ鍵Ukで暗号化した暗号化データ鍵Enc(Uk:Dk)、ユーザ鍵Ukに対応するユーザ鍵識別データUkID、及び平文データを格納したSDカード10内の格納場所に関する格納情報を有している(又は外部から必要に応じて当該格納情報を受領する)。ホスト装置20は、データの書き込みを行った場合において、書き込み完了後これらのデータをSDカード10から受領する。
【0021】
また、データ読み出しを行う場合には、ユーザを特定するためのユーザ情報、格納情報等のデータをSDカード10側に提供して、所望の平文データDataの提供を受ける。データの書き込み先(格納場所)等は、ホスト装置20側に設けられたファイルシステムにより制御され得る。
【0022】
通常、デジタルカメラ、パーソナルコンピュータ等はファイルシステムを有しているため、SDカード10に別途ファイルシステムを搭載するよりも、ホスト装置20側にもとより設けられたファイルシステムを利用することが好適である。もちろん、SDカード10に別途ファイルシステムを搭載し、このファイルシステムを用いた制御を行うことも可能である。
【0023】
図2は、別の利用形態(利用シーンB)を示している。これは、ユーザAがSDカード10に書き込んだデータDataを、別のユーザ、例えばユーザBにも提供することを選択的に許可する形態である。選択的に特定人に許可をするものであるので、個人情報の保護は図られており、特定人の間においてはデータのインターオペラビリティ性が確保される。この許可を行う場合、ユーザAは、SDカード10内に格納されたIDテーブルTABを書き換えて、ユーザBに対し、自己のユーザ鍵UkAで暗号化されたデータの提供を許可する。
【0024】
IDテーブルTABがこのようにして書き換えられた後、当該ユーザBがユーザID等を提示してSDカード10にアクセスすると、ユーザ鍵UkAで暗号化されたデータDataを復号化して読み出すことが可能になる。
【0025】
他方、ユーザAによりデータの利用を許可されていない別のユーザ、例えばユーザC、D・・・が、このSDカード10にアクセスしたとしても、ユーザ鍵UkAは読み出されず、平文のデータdataはそれら未承認のユーザには提供されない。
【0026】
次に、本システムにおけるSDカード10、及びホスト装置20の具体的な構成を、図3を参照して説明する。
【0027】
SDカード10は、メモリコントローラ30と、不揮発性メモリであるフラッシュメモリ40とを備えている。SDカード10は、データをセキュアに記憶したセキュア記憶媒体の一例であり、フラッシュメモリ40内に、システム領域(System Area)41、秘匿領域(Hidden Area)42、保護領域(Protected Area)43、ユーザデータ領域(User Data Area)44を備えており、各領域41〜44に適宜データが記憶される。
【0028】
システム領域41は、読取専用でSDカード10の外部からアクセス可能な領域である。秘匿領域42は、読取専用でSDカード10自身が参照する領域であり、外部からのアクセスが一切不可となっている。保護領域43は、認証に成功した場合にSDカード10の外部から読出/書込可能な領域である。ユーザデータ領域44は、SDカード10の外部から自由に読出/書込可能な領域である。
【0029】
ホスト装置20は、一例として、一般的にコンピュータに備えられているCPU(Central Processing Unit)21、ROM(Read Only Memory)22、RAM(Random Access Memory)23、画像メモリ24、表示制御部25、インターフェース(I/F)26、及びハードディスクドライブ(HDD)27を備えている。ホスト装置20は、SDカード10に対するデータの書き込み、及びデータの読み出しを実行するため、ファイルシステム、DPS(Data Protection System)プログラムをHDD27に格納している。
【0030】
ファイルシステムは、通常のパーソナルコンピュータ等に備えられている一般的なものが利用可能である。また、DPSプログラムは、後述するDPSAプログラムを起動させて二重暗号化鍵方式を用いたデータの書き込み、読み出し動作をDPSAプログラムに実行させるためのプログラムである。このDPSプログラムは、DPSAプログラムとの間で、SDカード10の認証を行うカード認証手続、及びユーザ自身を認証するユーザ認証等も担当する。
【0031】
メモリコントローラ30は、メモリコントローラ30の動作の全体を司るCPU31、バッファメモリ32、ROM33、フラッシュメモリ34、ホスト装置20との間のデータのやり取りを担当するホスト側インタフェース35、及びメモリ40とのメモリ側インタフェース36を備えている。バッファメモリ32は、ホスト装置20からフラッシュメモリ40に送信されるデータ或いはホスト装置20に送信するためにフラッシュメモリ40から読み出したデータを一時保持する役割を有する。なお、フラッシュメモリ34はメモリコントローラ30に内蔵される。 ROM33に格納されるDPSAプログラムは、メモリコントローラ30内にて実行され、データの暗号化・復号化、暗号化に用いられるユーザ鍵及びデータ鍵の生成、及びユーザ鍵識別データの生成及び管理等を担当する。図4に示すように、DPSAプログラムは、データの暗号化を担当する暗号化部331、データの復号化を担当する復号化部332、暗号化のためのユーザ鍵及びデータ鍵を生成する鍵生成部333、及びユーザ鍵に対応するユーザ鍵識別データ(ユーザ鍵ID)を生成し管理するユーザ鍵生成・管理部334をメモリコントローラ30の内部に実現する。或いはバッファメモリ32にデータの暗号化・復号化の機能を追加してCPU31を介して、暗号化・復号化のためのデータ鍵を供給して、前記暗号化部331、復号化部332の機能を実現することもできる。
【0032】
フラッシュメモリ34は、メモリコントローラ30内に設けられ、DPSAプログラムの実行時に実行される各種認証手続やデータの暗復号化等に必要なデータをセキュアに格納する役割を有する。本実施の形態では、フラッシュメモリ34は、フラッシュメモリ40と同様に、システム領域(System Area)341、秘匿領域(Hidden Area)342、保護領域(Protected Area)343を備えており、各領域341〜343に適宜データが記憶される。
【0033】
この実施の形態では、データDataをデータ鍵Dkで暗号化した暗号化データEnc(Dk:Data)、及びデータ鍵Dkをユーザ鍵Ukで暗号化した暗号化データ鍵Enc(Uk:Dk)が、主記憶装置であるフラッシュメモリ40のユーザデータ領域44に格納される。主記憶装置であるNANDフラッシュメモリ40は、記憶容量も大きく、また、ホスト装置20のファイルシステムによってアクセス操作可能である。暗号化データEnc(Dk:Data)は、データの種類が増えれば大容量となり、暗号化データ鍵Enc(Uk:Dk)もデータの種類の増大に応じてデータ量が増大するので、大容量を有するユーザデータ領域44に記憶するのが好適である。
【0034】
また、ユーザ鍵Ukは、フラッシュメモリ34の秘匿領域342に格納されたメディア固有鍵Kmuで暗号化されて、フラッシュメモリ34の保護領域343に格納される。ユーザ鍵Ukはユーザ毎に設定され、複数のデータに対し共通に用いられ得るので、データ量はデータDataやデータ鍵Dkに比べて少ない。従って、フラッシュメモリ34は小さな容量であっても十分である。
フラッシュメモリ34がホスト装置20からアクセスできない実装であれば、フラッシュメモリ34は保護領域343と見なすことができるため、メディア固有鍵Kmuは無くても構わない。つまり、ユーザ鍵Ukをそのまま格納することも可能である。
別の形態として、NANDフラッシュメモリ40を用いて、フラッシュメモリ34を省略することもできる。この場合は、秘匿領域42或いは保護領域43を使用する。この場合、メディア固有鍵Kmuはフラッシュメモリ40の秘匿領域42に格納されたものを使用する。また、保護領域はフラッシュメモリ40の保護領域43を使用する。
【0035】
次に、DPSAプログラムにより実現される各部の機能を、図5及び図6を参照して説明する。図5は、ホスト装置20からSDカード10にデータを書き込む場合に動作する部分を抜粋して記述したものであり、また、図6は、SDカード10からホスト装置20へとデータを復号化後に読み出す場合に動作する部分を抜粋して記述したものである。
【0036】
まず、図5において、データの書き込み動作の場合に動作する構成を説明する。ホスト装置20内のDPSプログラムは、SDカード10に暗号化して書き込もうとするデータDataを、フラッシュメモリ40内のユーザデータ領域44のアドレスAddressと共にSDカード10に向けて送信する。暗号化部331は、鍵生成部333で生成されたデータ鍵Dkを用いてこのデータDataを暗号化して暗号化データEnc(Dk:Data)を生成してユーザデータ領域44の指定されたアドレスに格納する。
【0037】
また、鍵生成部333は、ユーザ毎に異なり複数種類のデータ鍵に対し共通に用いられるユーザ鍵Ukを生成する。暗号化部331は、このユーザ鍵Ukを用いてデータ鍵Dkを暗号化して暗号化データ鍵Enc(Uk、Dk)を生成してユーザデータ領域44に格納する。さらに、このユーザ鍵Ukは、メディア固有鍵Kmuにより暗号化されて保護領域343に格納される。メディア固有鍵Kmuは、秘匿領域342に格納されている。
【0038】
ユーザ鍵ID生成・管理部334は、鍵生成部333が新たにユーザ鍵Ukを生成した場合、そのユーザ鍵Ukに対応するユーザ鍵識別データUkIDを生成すると共に、そのユーザ鍵識別データUkIDを、ユーザ鍵Ukと対応付けて管理する。生成されたユーザ鍵識別データUkIDは、暗号化データ鍵Enc(Uk:Dk)と共にホスト装置20に送信される。
【0039】
ホスト装置20内のDPSプログラムは、受信されたユーザ鍵識別データUkID、及び暗号化データ鍵Enc(Uk:Dk)に基づきデータ鍵管理ファイルMngFileを更新して、再びSDカード10に返信して、ユーザデータ領域44に格納させる。データ鍵管理ファイルMngFileは、ユーザ鍵識別データUkID、暗号化データ鍵Enc(Uk:Dk)、データDataを格納したユーザデータ領域44のアドレス、データの使用ルール(共有可/不可、読み取り専用/編集可能、印刷可/不可、コピー又は移動可/不可等)を規定したユーザルールファイルURule、及び、暗号化されたデータに関するメタデータ等を含む。これらのメタデータはデータ鍵DkとともにUkで暗号化される。
【0040】
次に、データの読み出しを行う場合における各部の機能を図6を参照して説明する。読み出しを行う場合、ホスト装置20のDPSプログラムは、ユーザデータ領域44に格納されたデータ鍵管理ファイルMngFileを読み出してRAM23に一時保持する。DPSプログラムは、このデータ鍵管理ファイルMngFileに基づき、読み出すべきデータDataを特定し、このデータに対応する暗号化データ鍵Enc(Uk:Dk)を、ユーザ鍵識別データUkIDとユーザデータ領域44内のアドレス共にSDカード10に送信する。
【0041】
ユーザ鍵ID生成部・管理部334は、受信されたユーザ鍵識別データUkIDに基づきユーザ鍵Ukを特定する。復号化部332は、受信された暗号化データ鍵Enc(Uk:Dk)を、特定されたユーザ鍵Ukを用いて復号化してデータ鍵Dkを得る。さらに復号化部332は、このデータ鍵Dkを用いて、ユーザデータ領域44に格納されている暗号化データEnc(Dk:Data)を復号化してデータDataを得る。DPSAプログラムは、この得られたデータをホスト装置20に供給する。
【0042】
次に、本システムにおけるデータの書き込み動作、及び読み出し動作を、図7及び図8に示すタイミングチャートを参照して説明する。
【0043】
まず、図7を参照してデータの書き込み動作を説明する。データの書き込みを行う場合、まず、ホスト装置20のDPSプログラムは、DPSAプログラムを起動するためのAwakeコマンドを発行する(S1)。
【0044】
次に、DPSプログラムとDPSAプログラムとは、ユーザID、パスワード等に基づいてユーザ認証手続を行うと共に、カード認証手続を実行する(S2)。
【0045】
ユーザ認証はDPSプログラムがDPSAプログラムにユーザID、パスワードを送信するとDPSAプログラムはユーザ鍵生成・管理部334を動作させ、ユーザIDとパスワードの一致、不一致を確認し、一致しておれば、認証とみなし次のステップに移行する。カード認証はカード自体の正当性を確認するための処理であり、省略した実装も可能である。カード認証に用いる手法は具体的な手法には限定されず、PKI(Public Key Infrastructure)であってもよいし、共有秘密鍵方式であってもよい。後者が実装負担も少なくて済み好適である。
【0046】
ユーザ認証が完了した後、DPSプログラムは、SDカード10に暗号化して書きこもうとするデータDataの書き込み命令を、書きこもうとする格納場所のアドレスAddressと共にSDカード10に送信する(S3)。なお、ユーザ認証が不成功であった場合、DPSAプログラムはステップ(S3)に対して、エラーとして受け付けを拒否する。
【0047】
この書き込み命令を受けたDPSAプログラムは、そのユーザについてのユーザ鍵が未発行である場合には、鍵生成部333にユーザ鍵Ukを発行させ、更にこのユーザ鍵Ukに対応するユーザ鍵識別データUkIDをユーザ鍵ID生成・管理部334に決定させる(S4)。ユーザ鍵識別データUkIDとユーザ鍵とは、ユーザ鍵ID生成・管理部334により対応付けて管理される。なお、そのユーザについてのユーザ鍵が発行済みである場合には、その発行済みのユーザ鍵を割り当てる。
【0048】
続いて、DPSプログラムが書き込み対象のデータDataとユーザデータ領域44中の書き込むべきアドレスをSDカード10に向けて送信する(S5)。
【0049】
DPSAプログラムは、このデータDataを受信すると、これを暗号化するためのデータ鍵Dkを鍵生成部333に生成させる(S6)。そして、暗号化部331において、このデータ鍵Dkを用いてデータDataを暗号化して暗号化データEnc(Dk:Data)を生成し、ユーザデータ領域44中の指定されたアドレスに書き込む(S7)。 データの書き込み動作が完了すると、DPSAプログラムは、その旨をDPSプログラムに報告する(S8)。DPSプログラムは、これに対応して、DPSAプログラムに対し、暗号化データ鍵Enc(Uk:Dk)の送信を要求する(S9)。DPSAプログラムは、この要求を受けて、暗号化データ鍵Enc(Uk:Dk)とユーザ鍵識別データUkIDとをDPSプログラムに向けて送信する(S10)。
【0050】
DPSプログラムは、暗号化データ鍵Enc(Uk:Dk)とユーザ鍵識別データUkIDとを確認すると、ユーザデータ領域44に格納されているデータ鍵管理ファイルMngFileにアクセスし(S11)、受信した暗号化データ鍵Enc(Uk:Dk)とユーザ鍵識別データUkIDに基づき、このデータ鍵管理ファイルMngFileを更新する(S12)。以上の動作により、ホスト装置20からSDカード10への書き込みが完了する。ホスト装置20においては、暗号化等の動作は行われず、DPSプログラムを介したファイルシステムによる書き込み先のアドレス指定等が行われるだけである。従って、ホスト装置側の実装負担を重くすることなくデータ保護を行うことができる。
【0051】
次に、図8を参照してデータの読み出し動作を説明する。データの読み出しを行う場合、ホスト装置20のDPSプログラムは、書き込み動作の場合と同様に、DPSAプログラムを起動するためのAwakeコマンドを発行する(S21)。
【0052】
次に、DPSプログラムとDPSAプログラムとは、ユーザID、パスワード等に基づいてユーザ認証手続・カード認証手続を実行する(S22)。この認証手続が完了すると、DPSプログラムは、ユーザデータ領域44に格納されたデータ鍵管理ファイルMngFileにアクセスして、読み出したいデータDataに関するファイルを決定する(S23)。
【0053】
続いて、DPSプログラムは、この読み出したいデータDataに対応する暗号化データ鍵Enc(Uk:Dk)とユーザ鍵識別データUkIDをDPSAプログラムに向けて送信する(S24)。さらに、読み出したいデータDataが格納されているユーザデータ領域44のアドレスを指定してデータDataの読み出しを指示する(S25)。
【0054】
DPSAプログラムは、受信されたユーザ鍵識別データUkIDに基づきユーザ鍵ID生成・管理部334を参照して対応するユーザ鍵Ukを取得する。そして、このユーザ鍵Ukを用いて暗号化データ鍵Enc(Uk:Dk)を復号化してデータ鍵Dkを得る(S26)。
【0055】
そして、指定されたアドレスから、対象のデータDataに関する暗号化データEnc(Dk:Data)を読み出し、データ鍵Dkを用いて復号化してデータDataを得る(S27)。得られたデータは、ホスト装置20に送信される(S28)。以上により、データの読み出し動作が完了する。
【0056】
図9は、本実施の形態におけるSDカード10でのユーザデータ領域44のディレクトリ構造を示している。図9に示すように、SDカード10内では、DPSプログラムが管理するディレクトリDPSが形成され、更に、このディレクトリDPSの中に、異なるユーザA,B,C,D・・・毎に別々のユーザ・ディレクトリUserA、UserB・・・が形成されている。
【0057】
ユーザ・ディレクトリUserには、前述のデータ鍵管理ファイルMngFile、複数の暗号化データファイルEnc(Dki、Datai)が格納されている。
【0058】
また、ユーザ・ディレクトリUserと並列に、ユーザ・ディレクトリを管理するためのユーザ・ディレクトリ管理ファイルと、ユーザIDを管理するユーザID情報ファイルが格納されている。後述するように、ユーザID情報ファイルは、前述のデータ鍵管理ファイルMngFile、及びIDテーブルTABと関連付けられている。
【0059】
前述のIDテーブルTABは、各ユーザが、他の特定のユーザとデータを共有しようとする場合に書き換えるものであり、例えば、自身が有するあるユーザ鍵UkAを、他のユーザBにも使用を許可する旨の情報を書き込むためのものである。IDテーブルTABにこのような情報が書き込まれると、ユーザBがユーザAの情報を共有することが可能になる(前述の利用シーンB(図2))。IDテーブルTABはフラッシュメモリ34の保護領域343に格納される。
【0060】
次に、図10を参照して、IDテーブルTABの内部構成と、データ鍵管理ファイルMngfile、およびユーザID情報ファイルとの対応関係について説明する。
【0061】
ユーザAとユーザB、それぞれのユーザID、ユーザ鍵識別データUkID、ユーザ鍵Uk、及びパスワードPWは、IDテーブルTAB、データ鍵管理ファイルMngfile、およびユーザID情報ファイルに格納され、図10に示すように関連付けられている。
【0062】
ユーザIDは前述のユーザID情報ファイルで管理される。ユーザ鍵識別データUkIDはデータ鍵管理ファイルMngFileで管理される。ユーザ鍵UkとパスワードはIDテーブルTABでセキュアに管理される。
【0063】
図10に示す通り、ユーザは複数のユーザIDを持つことも許される。ユーザID、ユーザ鍵識別データUkID、ユーザ鍵Uk、パスワードは1つのセットとして見なされる。ユーザIDA0はユーザ鍵識別データUkIDA0、ユーザ鍵UkA0、パスワードPWA0と対応する。図10のユーザAは2つのユーザID(A0、A1)を持つている場合に相当し、ユーザBは1つのユーザID(B0)を持っている。
【0064】
図10の2人のユーザA,Bと3つのユーザID(A0,A1,B0)が存在する場合のIDテーブルTABの構成例を図11に示す。このIDテーブルTABは、あるユーザIDに関連づけられたユーザ鍵Ukの使用が、どのユーザ鍵識別データに対し許可されているかを示している。
【0065】
初期状態では、異なるユーザID間でのユーザ鍵の共用は許可されていない。例えば、ユーザAがユーザIDA0でユーザ認証を受ければ、自身がユーザIDA0の下で使用できるのはユーザ鍵UkA0のみである。ユーザAは2つのユーザID(A0,A1)を保持しているが、ユーザIDA0の下では、ユーザIDA1と対応するユーザ鍵UkA1の共用はできない。同様に、ユーザBは自身で使用を許可されているのは、ユーザ鍵UkB0のみである。
【0066】
図12はユーザ鍵及びデータの共有の許可がなされたときのIDテーブルTABの内部の状態を模式的に示している。ここで、ユーザAがユーザIDA0でユーザ認証を受けた後、ユーザB(ユーザ鍵UkB0、ユーザ鍵識別データUkIDB0を有する者)にユーザ鍵UkA0の共用を許可したと仮定する。この結果、IDテーブルTABのユーザIDA0のユーザ鍵識別データUkIDB0に対する許可フラグは「不許可」の状態から「許可」状態となる。この結果、ユーザBはユーザIDB0でユーザ認証を受けた状態であれば、ユーザ鍵UkA0の共用が認められる。従って、ユーザ鍵UkA0で暗号化されたテータ鍵の復号が可能となるので、このユーザ鍵UkA0で暗号化されているデータ鍵Dkを用いて暗号化されたデータDataの復号が可能となり、ユーザAとユーザBでデータの共有が可能となる。
ユーザが複数のユーザIDを持つことの利点として、データ共有をしたいデータと共有したくないデータを異なるユーザ鍵で管理することで、管理が非常に簡単になる。ユーザに一つのユーザ鍵しか認めないとデータの共有、非共有が簡単に実現できない。非共有データは、許可対象でないユーザ鍵UkA1により暗号化すれば良い。
【0067】
図12のIDテーブルTABの状態では、ユーザBはユーザAに対して、UkB0の共用を許可していないので、データの共有は一方向のユーザAからユーザBのみである。
【0068】
次に、ユーザBがユーザAの情報を共有する場合における読み出し動作(利用シーンB)を図13を参照して説明する。簡単のために、ユーザはそれぞれ1個のユーザ鍵UkAとUkBを持っていたとする。
【0069】
まず、ユーザBが有するホスト装置20のDPSプログラムは、DPSAプログラムを起動するためのAwakeコマンドを発行する(S31)。
【0070】
次に、DPSプログラムとDPSAプログラムとは、ユーザID、パスワード等に基づいてユーザ認証手続・カード認証手続を実行する(S32)。このときDPSAプログラムは、得られたユーザIDに基づき前述のIDテーブルTABを参照し、このユーザが他人のユーザ鍵の使用を許可されているか否かを判断する。この場合は、ユーザAは1つのユーザ鍵UkAを所有し、ユーザBへの使用が許可されていると判断したものとする。
【0071】
前述の認証手続(S32)が完了すると、DPSプログラムは、ユーザデータ領域44に格納されたデータ鍵管理ファイルMngFileにアクセスして、読み出したいデータDataに関するファイルを決定する(S33)。
【0072】
さらに、読み出したいデータDataが格納されているユーザデータ領域44のアドレスを指定してデータDataの読み出しを指示する(S35)。
【0073】
DPSAプログラムは、読み出し指示の対象とされたデータDataがユーザ鍵UkAで暗号化されている場合、前述のようにユーザ鍵UkAの使用が許可する旨の判断がなされているので、この判断に従い、ユーザ鍵UkAを用いて暗号化データ鍵Enc(UkA:Dk)を復号化してデータ鍵Dkを得る(S36)。そして、指定されたアドレスから、対象のデータDataに関する暗号化データEnc(Dk:Data)を読み出し、データ鍵Dkを用いて復号化してデータDataを得る(S37)。得られたデータは、ホスト装置20に送信される(S38)。以上により、データの読み出し動作が完了する。
【0074】
一方、ユーザAによりデータの共有が許可されていない他のユーザによる読み出し要求があった場合には、IDテーブルTABに基づいて、この要求を拒否する。従って、データのインターオペラビリティ性と、情報の保護とが両立されている。
【0075】
以上、発明の実施の形態を説明したが、本発明はこれらに限定されるものではなく、発明の趣旨を逸脱しない範囲内において、種々の変更、追加等が可能である。たとえば、上記の実施の形態では、ユーザ鍵Ukはメモリコントローラ30にて生成するものとして説明したが、図13に示すように、外部サーバ50からユーザ鍵を取得するような構成とすることも可能である。また、上記の実施の形態では、DPSAプログラム支配下にあるフラッシュメモリ34の保護領域343内にユーザ鍵Kuを格納したが、これに代えて、フラッシュメモリ40内の保護領域43に格納するようにしてもよい。
【0076】
また、上記の実施の形態では、説明の簡単のため、ユーザ毎に1つのユーザ鍵が発行される前提で説明したが、ユーザ毎に複数のユーザ鍵を発行することも可能である。この場合、各ユーザは、複数のユーザ鍵を目的別、データ別等によって使い分け、その複数のユーザ鍵のうちの一部のみを他人に利用することを許可することが可能である。
【0077】
また、ユーザ鍵だけでなく、データ鍵に関しても共有する範囲を具体的にIDテーブルTABに記憶させ、この情報に基づいて、1つのユーザ鍵で暗号化される複数のデータ鍵のうちの一部のみを利用可能とすることも可能である。
【図面の簡単な説明】
【0078】
【図1】本発明が適用され得る利用形態(利用シーン)を説明する概念図である。
【図2】本発明が適用され得る利用形態(利用シーン)を説明する概念図である。
【図3】本発明の実施の形態に係るデータ保護システムにおけるSDカード10、及びホスト装置20の具体的な構成を示すブロック図である。
【図4】DPSAプログラムにより実現されるメモリコントローラ30の機能を示すブロック図である。
【図5】DPSAプログラムにより実現される各部の機能を説明する機能ブロック図である。
【図6】DPSAプログラムにより実現される各部の機能を説明する機能ブロック図である。
【図7】本実施の形態に係るデータ保護システムの動作を示すタイミングチャートである。
【図8】本実施の形態に係るデータ保護システムの動作を示すタイミングチャートである。
【図9】本実施の形態におけるSDカード10でのディレクトリ構造を示している。
【図10】本実施の形態に係るユーザとユーザID、UkID、ユーザ鍵、パスワードの関係図である。
【図11】本実施の形態に係るIDテーブルの初期状態を表す図である。
【図12】本実施の形態に係るIDテーブルの共有状態を表す図である。
【図13】本実施の形態に係るデータ保護システムの動作を示すタイミングチャートである。
【図14】本発明の実施の形態の変形例を示す。
【符号の説明】
【0079】
10・・・SDカード、 20、20A、20B、20C、20D・・・ホスト装置、 30・・・メモリコントローラ、 40・・・フラッシュメモリ、 21・・・CPU(Central Processing Unit)、 22・・・ROM(Read Only Memory)、 23・・・RAM(Random Access Memory)、 24・・・画像メモリ、 25・・・表示制御部、 26・・・インターフェース(I/F)、 27・・・ハードディスクドライブ(HDD)、 31・・・CPU、 32・・・バッファメモリ、 33・・・ROM、 34・・・フラッシュメモリ、 35・・・ホスト側インタフェース、 36・・・メモリ側インタフェース、 331・・・暗号化部、 332・・・復号化部、 333・・・鍵生成部、 334・・・ユーザ鍵生成・管理部。
【特許請求の範囲】
【請求項1】
データをデータ鍵で暗号化し更にこのデータ鍵をユーザ鍵で暗号化する二重暗号鍵方式により前記データを暗号化して記憶するメモリカードから特定のホスト装置に前記データを提供しそれ以外のホスト装置への前記データの提供を制限するデータ保護システムにおいて、
前記ホスト装置は、
前記メモリカードにおけるデータの書き込み及び読み出しに関する制御を司るDPS(Data Protection System)プログラムを備え、
前記メモリカードは、
主記憶装置としての第1の不揮発性メモリと、
この第1の不揮発性メモリを制御して前記データの暗号化、復号化、及び読み出し、書き込みを司ると共に第2の不揮発性メモリを備えたメモリコントローラと、
前記メモリコントローラに搭載され、前記DPSプログラムからの命令に従い前記データ鍵を用いて前記データを暗号化し、更に前記ユーザ鍵を用いて前記データ鍵を暗号化して前記第1の不揮発性メモリに記憶させる一方、前記DPSプログラムからの命令に従い前記ユーザ鍵および前記データ鍵を用いて前記データを復号化して読み出すと共に、前記ユーザ鍵を利用した前記データの復号を実行可能なユーザを特定するID情報を管理するDPSA(Data Protection System Agent)プログラムと
を備え、
前記データの書き込みの際、
前記DPSプログラムは、前記データを格納すべき前記第1の不揮発性メモリ中の格納場所を前記DPSAプログラムに指示し、
前記DPSAプログラムは、前記DPSプログラムからの書き込み命令に従い前記データ鍵を用いて前記データを暗号化して暗号化データを取得し、更に前記データ鍵を前記ユーザ鍵で暗号化して暗号化データ鍵を得て、前記暗号化データを前記第1の不揮発性メモリ中の前記格納場所に記憶させ、前記暗号化データ鍵を前記第1又は第2の不揮発性メモリに記憶させ、
前記データの読み出しの際、
前記DPSプログラムは、前記ユーザを特定するユーザ情報を提示して前記DPSAプログラムに所望の前記データの読み出しを要求し、
前記DPSAプログラムは、前記ID情報を参照して、提示された前記ユーザ情報に対応する前記ユーザ鍵を用いて前記暗号化データ鍵を復号化して前記データ鍵を得て、更にこのデータ鍵を用いて前記データを復号化して前記ホスト装置に向けて読み出す
ことを特徴とするデータ保護システム。
【請求項2】
前記DPSAプログラムは、前記データの書き込みの際、前記暗号化データ及び前記暗号化データ鍵を前記第1の不揮発性メモリに書き込んだ後、前記暗号化データ鍵、及び前記ユーザ鍵に対応するユーザ鍵識別データを前記ホスト装置に送信することを特徴とする請求項1記載のデータ保護システム。
【請求項3】
前記DPSプログラムからの要求に応じて前記ユーザ鍵を生成する鍵生成部を備えたことを特徴とする請求項1記載のデータ保護システム。
【請求項4】
前記ユーザ鍵は、前記ホスト装置と接続された外部サーバから供給されることを特徴とする請求項1記載のデータ保護システム。
【請求項5】
主記憶装置としての第1の不揮発性メモリと、この第1の不揮発性メモリを制御してデータの暗号化、復号化、及び読み出し、書き込みを司ると共に第2の不揮発性メモリを備えたメモリコントローラを備えたメモリカードに、データ鍵及びユーザ鍵を用いた二重暗号鍵方式によりデータを暗号化して記憶し、このメモリカードから特定のホスト装置に前記データを提供しそれ以外のホスト装置への前記データの提供を制限するデータ保護方法であって、
前記メモリカードにおけるデータの書き込み及び読み出しに関する制御を司るDPS(Data Protection System)プログラムを前記ホスト装置に搭載し、
前記DPSプログラムからの命令に従い前記データ鍵を用いて前記データを、前記ユーザ鍵を用いて前記データ鍵を暗号化して前記第1の不揮発性メモリに記憶させる一方、前記DPSプログラムからの命令に従い前記ユーザ鍵及び前記データ鍵を用いて前記データを復号化して読み出すと共に、前記ユーザ鍵を利用して前記データを復号可能なユーザを特定するID情報を管理するDPSA(Data Protection System Agent)プログラムを前記メモリコントローラに搭載し、
前記データの書き込みの際には、
前記DPSプログラムから前記DPSAプログラムに対し、前記データを格納すべき前記第1の不揮発性メモリ中の格納場所を指示するステップと、
前記DPSAプログラムが、前記DPSプログラムからの書き込み命令に従い前記データ鍵を用いて前記データを暗号化して暗号化データを取得し、更に前記データ鍵を前記ユーザ鍵で暗号化して暗号化データ鍵を得て、前記暗号化データを前記第1の不揮発性メモリに記憶させ、前記暗号化データ鍵を前記第1又は第2の不揮発性メモリに記憶させるステップと
を実行し、
前記データの読み出しの際には、
前記DPSプログラムが前記ユーザを特定するユーザ情報を提示して前記DPSAプログラムに所望の前記データの読み出しを要求するステップと、
前記DPSAプログラムが、前記ID情報を参照して、定時された前記ユーザ情報に対応する前記ユーザ鍵を用いて前記暗号化データ鍵を復号化して前記データ鍵を得て、更にこのデータ鍵を用いて前記データを復号化して前記ホスト装置に向けて読み出すステップと
を実行することを特徴とするデータ保護方法。
【請求項6】
前記DPSAプログラムは、前記データの書き込みの際、前記暗号化データ及び前記暗号化データ鍵を前記第1の不揮発性メモリに書き込んだ後、前記暗号化データ鍵、及び前記ユーザ鍵に対応するユーザ鍵識別データを前記ホスト装置に送信することを特徴とする請求項5記載のデータ保護方法。
【請求項7】
前記ユーザ鍵は、前記ホスト装置と接続された外部サーバから供給されることを特徴とする請求項5記載のデータ保護方法。
【請求項8】
データをデータ鍵で暗号化し更にこのデータ鍵をユーザ鍵で暗号化する二重暗号鍵方式により前記データを暗号化して記憶し、特定のホスト装置に前記データを提供しそれ以外のホスト装置への前記データの提供を制限する機能を有するメモリカードであって、
主記憶装置としての第1の不揮発性メモリと、
この第1の不揮発性メモリを制御して前記データの暗号化、復号化、及び読み出し、書き込みを司ると共に第2の不揮発性メモリを備えたメモリコントローラと、
前記メモリコントローラに搭載され、
前記ホスト装置に搭載され前記メモリカードにおけるデータの書き込み及び読み出しに関する制御を司るDPS(Data Protection System)プログラムからの命令に従い前記データ鍵を用いて前記データを、前記ユーザ鍵を用いて前記データ鍵を暗号化して前記第1の不揮発性メモリに記憶させる一方、前記DPSプログラムからの命令に従い前記ユーザ鍵および前記データ鍵を用いて前記データを復号化して読み出すと共に、前記ユーザ鍵を利用した前記データの復号を実行可能なユーザを特定するID情報を管理するDPSA(Data Protection System Agent)プログラムと
を備え、
前記DPSAプログラムは、
前記DPSプログラムから、前記データを格納すべき前記第1の不揮発性メモリ中の格納場所の指定を伴うデータの書き込み命令を受けた場合、この書き込み命令に従い前記データ鍵を用いて前記データを暗号化して暗号化データを取得し、更に前記データ鍵を前記ユーザ鍵で暗号化して暗号化データ鍵を得て、前記暗号化データを前記第1の不揮発性メモリに記憶させ、前記暗号化データ鍵を前記第1又は第2の不揮発性メモリに記憶させ、
前記DPSプログラムから、前記ユーザを特定するユーザ情報を提示を伴う所望の前記データの読み出し命令を受けた場合、前記ID情報を参照して、提示された前記ユーザ情報に対応する前記ユーザ鍵を用いて前記暗号化データ鍵を復号化して前記データ鍵を得て、更にこのデータ鍵を用いて前記データを復号化して前記ホスト装置に向けて読み出す
ことを特徴とするメモリカード。
【請求項9】
前記DPSAプログラムは、前記データの書き込みの際、前記暗号化データ及び前記暗号化データ鍵を前記第1の不揮発性メモリに書き込んだ後、前記暗号化データ鍵、及び前記ユーザ鍵に対応するユーザ鍵識別データを前記ホスト装置に送信することを特徴とする請求項8記載のメモリカード。
【請求項1】
データをデータ鍵で暗号化し更にこのデータ鍵をユーザ鍵で暗号化する二重暗号鍵方式により前記データを暗号化して記憶するメモリカードから特定のホスト装置に前記データを提供しそれ以外のホスト装置への前記データの提供を制限するデータ保護システムにおいて、
前記ホスト装置は、
前記メモリカードにおけるデータの書き込み及び読み出しに関する制御を司るDPS(Data Protection System)プログラムを備え、
前記メモリカードは、
主記憶装置としての第1の不揮発性メモリと、
この第1の不揮発性メモリを制御して前記データの暗号化、復号化、及び読み出し、書き込みを司ると共に第2の不揮発性メモリを備えたメモリコントローラと、
前記メモリコントローラに搭載され、前記DPSプログラムからの命令に従い前記データ鍵を用いて前記データを暗号化し、更に前記ユーザ鍵を用いて前記データ鍵を暗号化して前記第1の不揮発性メモリに記憶させる一方、前記DPSプログラムからの命令に従い前記ユーザ鍵および前記データ鍵を用いて前記データを復号化して読み出すと共に、前記ユーザ鍵を利用した前記データの復号を実行可能なユーザを特定するID情報を管理するDPSA(Data Protection System Agent)プログラムと
を備え、
前記データの書き込みの際、
前記DPSプログラムは、前記データを格納すべき前記第1の不揮発性メモリ中の格納場所を前記DPSAプログラムに指示し、
前記DPSAプログラムは、前記DPSプログラムからの書き込み命令に従い前記データ鍵を用いて前記データを暗号化して暗号化データを取得し、更に前記データ鍵を前記ユーザ鍵で暗号化して暗号化データ鍵を得て、前記暗号化データを前記第1の不揮発性メモリ中の前記格納場所に記憶させ、前記暗号化データ鍵を前記第1又は第2の不揮発性メモリに記憶させ、
前記データの読み出しの際、
前記DPSプログラムは、前記ユーザを特定するユーザ情報を提示して前記DPSAプログラムに所望の前記データの読み出しを要求し、
前記DPSAプログラムは、前記ID情報を参照して、提示された前記ユーザ情報に対応する前記ユーザ鍵を用いて前記暗号化データ鍵を復号化して前記データ鍵を得て、更にこのデータ鍵を用いて前記データを復号化して前記ホスト装置に向けて読み出す
ことを特徴とするデータ保護システム。
【請求項2】
前記DPSAプログラムは、前記データの書き込みの際、前記暗号化データ及び前記暗号化データ鍵を前記第1の不揮発性メモリに書き込んだ後、前記暗号化データ鍵、及び前記ユーザ鍵に対応するユーザ鍵識別データを前記ホスト装置に送信することを特徴とする請求項1記載のデータ保護システム。
【請求項3】
前記DPSプログラムからの要求に応じて前記ユーザ鍵を生成する鍵生成部を備えたことを特徴とする請求項1記載のデータ保護システム。
【請求項4】
前記ユーザ鍵は、前記ホスト装置と接続された外部サーバから供給されることを特徴とする請求項1記載のデータ保護システム。
【請求項5】
主記憶装置としての第1の不揮発性メモリと、この第1の不揮発性メモリを制御してデータの暗号化、復号化、及び読み出し、書き込みを司ると共に第2の不揮発性メモリを備えたメモリコントローラを備えたメモリカードに、データ鍵及びユーザ鍵を用いた二重暗号鍵方式によりデータを暗号化して記憶し、このメモリカードから特定のホスト装置に前記データを提供しそれ以外のホスト装置への前記データの提供を制限するデータ保護方法であって、
前記メモリカードにおけるデータの書き込み及び読み出しに関する制御を司るDPS(Data Protection System)プログラムを前記ホスト装置に搭載し、
前記DPSプログラムからの命令に従い前記データ鍵を用いて前記データを、前記ユーザ鍵を用いて前記データ鍵を暗号化して前記第1の不揮発性メモリに記憶させる一方、前記DPSプログラムからの命令に従い前記ユーザ鍵及び前記データ鍵を用いて前記データを復号化して読み出すと共に、前記ユーザ鍵を利用して前記データを復号可能なユーザを特定するID情報を管理するDPSA(Data Protection System Agent)プログラムを前記メモリコントローラに搭載し、
前記データの書き込みの際には、
前記DPSプログラムから前記DPSAプログラムに対し、前記データを格納すべき前記第1の不揮発性メモリ中の格納場所を指示するステップと、
前記DPSAプログラムが、前記DPSプログラムからの書き込み命令に従い前記データ鍵を用いて前記データを暗号化して暗号化データを取得し、更に前記データ鍵を前記ユーザ鍵で暗号化して暗号化データ鍵を得て、前記暗号化データを前記第1の不揮発性メモリに記憶させ、前記暗号化データ鍵を前記第1又は第2の不揮発性メモリに記憶させるステップと
を実行し、
前記データの読み出しの際には、
前記DPSプログラムが前記ユーザを特定するユーザ情報を提示して前記DPSAプログラムに所望の前記データの読み出しを要求するステップと、
前記DPSAプログラムが、前記ID情報を参照して、定時された前記ユーザ情報に対応する前記ユーザ鍵を用いて前記暗号化データ鍵を復号化して前記データ鍵を得て、更にこのデータ鍵を用いて前記データを復号化して前記ホスト装置に向けて読み出すステップと
を実行することを特徴とするデータ保護方法。
【請求項6】
前記DPSAプログラムは、前記データの書き込みの際、前記暗号化データ及び前記暗号化データ鍵を前記第1の不揮発性メモリに書き込んだ後、前記暗号化データ鍵、及び前記ユーザ鍵に対応するユーザ鍵識別データを前記ホスト装置に送信することを特徴とする請求項5記載のデータ保護方法。
【請求項7】
前記ユーザ鍵は、前記ホスト装置と接続された外部サーバから供給されることを特徴とする請求項5記載のデータ保護方法。
【請求項8】
データをデータ鍵で暗号化し更にこのデータ鍵をユーザ鍵で暗号化する二重暗号鍵方式により前記データを暗号化して記憶し、特定のホスト装置に前記データを提供しそれ以外のホスト装置への前記データの提供を制限する機能を有するメモリカードであって、
主記憶装置としての第1の不揮発性メモリと、
この第1の不揮発性メモリを制御して前記データの暗号化、復号化、及び読み出し、書き込みを司ると共に第2の不揮発性メモリを備えたメモリコントローラと、
前記メモリコントローラに搭載され、
前記ホスト装置に搭載され前記メモリカードにおけるデータの書き込み及び読み出しに関する制御を司るDPS(Data Protection System)プログラムからの命令に従い前記データ鍵を用いて前記データを、前記ユーザ鍵を用いて前記データ鍵を暗号化して前記第1の不揮発性メモリに記憶させる一方、前記DPSプログラムからの命令に従い前記ユーザ鍵および前記データ鍵を用いて前記データを復号化して読み出すと共に、前記ユーザ鍵を利用した前記データの復号を実行可能なユーザを特定するID情報を管理するDPSA(Data Protection System Agent)プログラムと
を備え、
前記DPSAプログラムは、
前記DPSプログラムから、前記データを格納すべき前記第1の不揮発性メモリ中の格納場所の指定を伴うデータの書き込み命令を受けた場合、この書き込み命令に従い前記データ鍵を用いて前記データを暗号化して暗号化データを取得し、更に前記データ鍵を前記ユーザ鍵で暗号化して暗号化データ鍵を得て、前記暗号化データを前記第1の不揮発性メモリに記憶させ、前記暗号化データ鍵を前記第1又は第2の不揮発性メモリに記憶させ、
前記DPSプログラムから、前記ユーザを特定するユーザ情報を提示を伴う所望の前記データの読み出し命令を受けた場合、前記ID情報を参照して、提示された前記ユーザ情報に対応する前記ユーザ鍵を用いて前記暗号化データ鍵を復号化して前記データ鍵を得て、更にこのデータ鍵を用いて前記データを復号化して前記ホスト装置に向けて読み出す
ことを特徴とするメモリカード。
【請求項9】
前記DPSAプログラムは、前記データの書き込みの際、前記暗号化データ及び前記暗号化データ鍵を前記第1の不揮発性メモリに書き込んだ後、前記暗号化データ鍵、及び前記ユーザ鍵に対応するユーザ鍵識別データを前記ホスト装置に送信することを特徴とする請求項8記載のメモリカード。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【公開番号】特開2009−290331(P2009−290331A)
【公開日】平成21年12月10日(2009.12.10)
【国際特許分類】
【出願番号】特願2008−138428(P2008−138428)
【出願日】平成20年5月27日(2008.5.27)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
【公開日】平成21年12月10日(2009.12.10)
【国際特許分類】
【出願日】平成20年5月27日(2008.5.27)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
[ Back to top ]