(57)【要約】【課題】有効期間が終了した秘密データを読み出し不可能とし、タンパによる秘密データの漏洩を防止するデータ管理システムを提供する。【解決手段】データ管理システム１００は、暗号化された秘密データを記憶するデータ記憶部１０５と、秘密データの管理単位であるデータ群を識別する値と、前記データ群の有効期間の値とを対応付けて保持するデータ群記述子を記憶するメタデータ記憶部１０４と、有効期間に現在時刻が含まれる場合、有効期間に対応した鍵を生成する時限鍵生成部２００と、時限鍵生成部２００によって生成された鍵を用いて、暗号化された秘密データを復号化する復号化部１０３とを備える。【選択図】図１
2006120089.tif 000002
【特許請求の範囲】
【請求項１】
暗号化された秘密データを記憶するデータ記憶部と、
前記秘密データの管理単位であるデータ群を識別する値と、前記データ群の有効期間の値とを対応付けて保持するデータ群記述子を記憶するメタデータ記憶部と、
前記有効期間に現在時刻が含まれる場合、前記有効期間に対応した鍵を生成する時限鍵生成部と、
前記時限鍵生成部によって生成された鍵を用いて、前記暗号化された秘密データを復号化する復号化部と
を備えることを特徴とするデータ管理システム。
【請求項２】
前記時限鍵生成部は、
秘密鍵を記憶する秘密鍵記憶部と、
前記秘密鍵に基づいて、前記有効期間に依存する値の鍵付きハッシュ値を、前記有効期間に対応した鍵として出力する鍵付きハッシュ出力部と
を備えることを特徴とする請求項１に記載のデータ管理システム。
【請求項３】
前記時限鍵生成部は、外部からの要求に応じて、あるいは、時間の経過に応じて単調増加する値を出力する時計部に異常が発生した可能性がある場合に、新たな前記秘密鍵を生成する乱数発生部を更に備えることを特徴とする請求項２に記載のデータ管理システム。
【請求項４】
前記データ群記述子は、前記データ群を識別する値に対応付けて、前記データ群が依存する親データ群を識別する値を更に保持することを特徴とする請求項１〜３のいずれか１項に記載のデータ管理システム。
【請求項５】
前記データ群記述子は、秘密データの暗号化及び復号化を行う際に用いる暗号鍵であるデータ群鍵を暗号化した値を更に保持することを特徴とする請求項１〜４のいずれか１項に記載のデータ管理システム。
【請求項６】
前記データ群鍵を、該データ群の有効期間に対応して生成された鍵に依存する暗号鍵にて暗号化する暗号化部を更に備えることを特徴とする請求項５に記載のデータ管理システム。
【請求項７】
前記データ群鍵を、該データ群が依存する親データ群を暗号化するデータ群鍵に依存する暗号鍵にて暗号化する暗号化部を更に備えることを特徴とする請求項５に記載のデータ管理システム。
【請求項８】
秘密データの削除が要求された場合、前記秘密データの管理単位であるデータ群を識別する値、あるいは、当該データ群を識別する値を、前記親データ群を識別する値として保持するデータ群記述子を特定し、当該データ群記述子に保持される前記データ群鍵を暗号化した値を上書き消去する制御部を更に備えることを特徴とする請求項５〜７のいずれか１項に記載のデータ管理システム。
【請求項９】
データ群の有効期間の変更が要求された場合、
前記復号化部は、前記データ群鍵を現在の有効期間に対応して生成された鍵に依存する暗号鍵にて復号化し、
前記暗号化部は、新たな有効期間に対応して生成された鍵に依存する暗号鍵にて、前記復号化されたデータ群鍵を再び暗号化することを特徴とする請求項６〜８のいずれか１項に記載のデータ管理システム。
【請求項１０】
暗号化された秘密データを記憶するステップと、
前記秘密データの管理単位であるデータ群を識別する値と、前記データ群の有効期間の値とを対応付けて保持するデータ群記述子を記憶するステップと、
前記有効期間に現在時刻が含まれる場合、前記有効期間に対応した鍵を生成するステップと、
前記生成された鍵を用いて、前記暗号化された秘密データを復号化するステップと
を含むことを特徴とするデータ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、秘密データを管理するデータ管理システム及びデータ管理方法に関する。
【背景技術】
【０００２】
データ管理システムは、電子計算機や通信端末において用いられるサブシステムであり、正当な外部システムからのデータ記憶要求や読み出し要求に応じて秘密データを記憶し、記憶している秘密データを提供する。又、一方で、不正な外部システムからの要求には従わず、ハードウェア的な信号解析（タンパ）によっても秘密データが漏洩しにくいような仕組みを持つシステムである。
【０００３】
このようなデータ管理システムとして、図１３に示すデータ管理システムが開示されている（例えば、特許文献１参照。）。データ管理システム９００は、耐タンパ性を有する機密保護部９１０と、作成された暗号化データを記憶する暗号化データ記憶部９０２とを備える。機密保護部９１０は、乱数を用いて暗号鍵を生成する制御部９１３と、乱数発生部９１４と、生成された暗号鍵を記憶する暗号鍵記憶部９１６と、記憶要求されたデータに暗号処理を施して暗号化データを作成する暗号／復号部９１２とを備える。
【０００４】
データ管理システム９００は、外部システムより秘密データの記憶を要求されると、乱数発生部９１４で生成した暗号鍵を用いて暗号／復号部９１２がその秘密データを暗号化し、暗号化データ記憶部９０２に記憶するとともに、暗号鍵を暗号鍵記憶部９１６に記憶する。一方、データ管理システム９００は、外部システムより秘密データの読み出しを要求されると、暗号化データ記憶部９０２に記憶されている暗号化された秘密データを暗号鍵記憶部９１６に記憶されている暗号鍵を用いて暗号／復号部９１２が復号し、外部システムに渡す。このように暗号鍵は一連の処理において機密保護部９１０を出ることは無く、又、機密保護部９１０は前述のように耐タンパ性を有するため、仮にデータ管理システム９００がタンパされても暗号化された秘密データが漏洩することはあり得るが、それを復号化する暗号鍵を入手することはできないため安全である。
【特許文献１】特開平１０−２７１１０７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、秘密データの管理単位（以下において、「データ群」という。）には、有効期間が設定される場合がある。例えば、データ管理システムがサービス契約に基づいて秘密データを記憶する場合、サービス契約に基づいて記憶したデータ群は、サービス契約の期間満了や、契約解除に伴い、データ管理システムがそれ以上保持する合理性や適法性が失われることになる。この場合、サービス契約の期間を実質的にデータ群の有効期間であるとみなすことができる。
【０００６】
しかしながら、上述した従来のデータ管理システム９００では、データ群の有効期間を考慮した暗号鍵の管理がなされていない。
【０００７】
このため、あるデータ群に属する秘密データ及びそれを暗号化した暗号鍵は、そのデータ群の有効期間が終了した後においても秘密データを復号可能な形態でデータ管理システム９００に記憶され続け、又、読み出し要求により秘密データが外部システムに提供されるという課題がある。
【０００８】
そこで、本発明は、上記の課題に鑑み、有効期間が終了した秘密データを読み出し不可能とし、タンパによる秘密データの漏洩を防止するデータ管理システム及びデータ管理方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するため、本発明の第１の特徴は、（ａ）暗号化された秘密データを記憶するデータ記憶部と、（ｂ）秘密データの管理単位であるデータ群を識別する値と、データ群の有効期間の値とを対応付けて保持するデータ群記述子を記憶するメタデータ記憶部と、（ｃ）有効期間に現在時刻が含まれる場合、有効期間に対応した鍵を生成する時限鍵生成部と、（ｄ）時限鍵生成部によって生成された鍵を用いて、暗号化された秘密データを復号化する復号化部とを備えるデータ管理システムであることを要旨とする。
【００１０】
第１の特徴に係るデータ管理システムによると、当該データ群の有効期間に対応した鍵によって秘密データを復号化するため、有効期間が終了した秘密データを読み出し不可能とし、タンパによる秘密データの漏洩を防止することができる。
【００１１】
又、第１の特徴に係るデータ管理システムにおける時限鍵生成部は、秘密鍵を記憶する秘密鍵記憶部と、秘密鍵に基づいて、有効期間に依存する値の鍵付きハッシュ値を、有効期間に対応した鍵として出力する鍵付きハッシュ出力部とを備えてもよい。
【００１２】
このデータ管理システムによると、有効期間に対応した鍵付きハッシュ値を出力することができる。
【００１３】
又、第１の特徴に係るデータ管理システムにおいて、時限鍵生成部は、外部からの要求に応じて、あるいは、時間の経過に応じて単調増加する値を出力する時計部に異常が発生した可能性がある場合に、新たな秘密鍵を生成する乱数発生部を更に備えてもよい。
【００１４】
このデータ管理システムによると、秘密鍵が更新されるため、時限鍵生成部に対し鍵取得操作を要求したときの返却値はリセット処理以前に全く同じ要求を行った時の返却値とは異なるものになる。この性質を用いると、記憶した全ての秘密データの実効的な一括消去を行うことができる。
【００１５】
又、第１の特徴に係るデータ管理システムにおいて、データ群記述子は、データ群を識別する値に対応付けて、データ群が依存する親データ群を識別する値を更に保持してもよい。
【００１６】
このデータ管理システムによると、データ群間の関係を認識することができる。
【００１７】
又、第１の特徴に係るデータ管理システムにおいて、データ群記述子は、秘密データの暗号化及び復号化を行う際に用いる暗号鍵であるデータ群鍵を暗号化した値を更に保持してもよい。
【００１８】
このデータ管理システムによると、秘密データをその属するデータ群に固有のデータ群鍵により暗号化して保存することができる。
【００１９】
又、第１の特徴に係るデータ管理システムは、データ群鍵を、該データ群の有効期間に対応して生成された鍵に依存する暗号鍵にて暗号化する暗号化部を更に備えてもよい。
【００２０】
又、第１の特徴に係るデータ管理システムは、データ群鍵を、該データ群が依存する親データ群を暗号化するデータ群鍵に依存する暗号鍵にて暗号化する暗号化部を更に備えてもよい。
【００２１】
又、第１の特徴に係るデータ管理システムにおいて、秘密データの削除が要求された場合、秘密データの管理単位であるデータ群を識別する値、あるいは、当該データ群を識別する値を、親データ群を識別する値として保持するデータ群記述子を特定し、当該データ群記述子に保持されるデータ群鍵を暗号化した値を上書き消去してもよい。
【００２２】
このデータ管理システムによると、データ群が削除された時には当該データ群に固有のデータ群鍵を消去することができる。
【００２３】
又、第１の特徴に係るデータ管理システムにおいて、データ群の有効期間の変更が要求された場合、復号化部は、データ群鍵を現在の有効期間に対応して生成された鍵に依存する暗号鍵にて復号化し、暗号化部は、新たな有効期間に対応して生成された鍵に依存する暗号鍵にて、復号化されたデータ群鍵を再び暗号化してもよい。
【００２４】
このデータ管理システムによると、有効期間が変更された場合、有効期間に対応した鍵を新たに生成し直すことができる。
【００２５】
本発明の第２の特徴は、（ａ）暗号化された秘密データを記憶するステップと、（ｂ）秘密データの管理単位であるデータ群を識別する値と、データ群の有効期間の値とを対応付けて保持するデータ群記述子を記憶するステップと、（ｃ）有効期間に現在時刻が含まれる場合、有効期間に対応した鍵を生成するステップと、（ｄ）生成された鍵を用いて、暗号化された秘密データを復号化するステップとを含むデータ管理方法であることを要旨とする。
【００２６】
第２の特徴に係るデータ管理方法によると、当該データ群の有効期間に対応した鍵によって秘密データを復号化するため、有効期間が終了した秘密データを読み出し不可能とし、タンパによる秘密データの漏洩を防止することができる。
【発明の効果】
【００２７】
本発明によると、有効期間が終了した秘密データを読み出し不可能とし、タンパによる秘密データの漏洩を防止するデータ管理システム及びデータ管理方法を提供することができる。
【発明を実施するための最良の形態】
【００２８】
次に、図面を参照して、本発明の実施の形態を説明する。以下の図面の記載において、同一又は類似の部分には、同一又は類似の符号を付している。ただし、図面は模式的なものであることに留意すべきである。
【００２９】
（データ管理システム）
本発明の実施の形態では、秘密データを暗号化して記憶し、その復号鍵は、秘密データの有効期間以外では得られないようにするデータ管理システムについて説明する。より具体的には、データ管理システムでは、秘密データの復号鍵は、後述する時限鍵生成部２００が生成する時限鍵により暗号化しておき、その時限鍵は、現在時刻が秘密データの有効期間外である場合は、提供されない。このため、時限鍵生成部２００のみを耐タンパとしておけば、それ以外の部分がタンパされても秘密データは漏洩しない。
【００３０】
本発明の実施形態に係るデータ管理システム１００は、図１に示すように、乱数発生部１０１と、暗号化部１０２と、復号化部１０３と、メタデータ記憶部１０４と、データ記憶部１０５と、時限鍵生成部２００と、制御部１１０とを備える。
【００３１】
乱数発生部１０１は、暗号鍵として用いる乱数を生成する。
【００３２】
暗号化部１０２は、秘密データの暗号化及び復号化を行う際に用いる暗号鍵であるデータ群鍵を、データ群の有効期間に対応して生成された鍵に依存する暗号鍵にて暗号化する。又、暗号化部１０２は、データ群鍵を、該データ群が依存する親データ群を暗号化するデータ群鍵に依存する暗号鍵にて暗号化する。又、暗号化部１０２は、データ群の有効期間の変更が要求された場合、新たな有効期間に対応して生成された鍵に依存する暗号鍵にて、復号化されたデータ群鍵を再び暗号化する。
【００３３】
復号化部１０３は、時限鍵生成部２００によって生成された鍵を用いて、暗号化された秘密データを復号化する。又、復号化部１０３は、データ群の有効期間の変更が要求された場合、データ群鍵を現在の有効期間に対応して生成された鍵に依存する暗号鍵にて復号化する。
【００３４】
メタデータ記憶部１０４は、後述するデータ群記述子を記憶する。
【００３５】
データ記憶部１０５は、暗号化された秘密データを記憶する。
【００３６】
時限鍵生成部２００は、有効期間に現在時刻が含まれる場合、有効期間に対応した時限付き鍵を生成する。時限鍵生成部２００については、後に詳述する。
【００３７】
制御部１１０は、乱数発生部１０１、暗号化部１０２、復号化部１０３、メタデータ記憶部１０４、データ記憶部１０５、時限鍵生成部２００を制御する。又、制御部１１０は、外部システム１２０とのデータ入出力を行う。又、制御部１１０は、秘密データの削除が要求された場合、秘密データの管理単位であるデータ群を識別する値、あるいは、当該データ群を識別する値を、親データ群を識別する値として保持するデータ群記述子を特定し、当該データ群記述子に保持されるデータ群鍵を暗号化した値を上書き消去する。
【００３８】
次に、時限鍵生成部２００の詳細について、説明する。時限鍵生成部２００は、図２に示すように、乱数発生部２０１と、秘密鍵記憶部２０２と、鍵付きハッシュ出力部２０３と、時計部２０４と、時限鍵制御部２１０とを備える。
【００３９】
乱数発生部２０１は、秘密鍵として用いる乱数を生成する。又、乱数発生部２０１は、外部からの要求に応じて、あるいは、時計部２０４に異常が発生した可能性がある場合に、新たな秘密鍵を生成する。
【００４０】
秘密鍵記憶部２０２は、秘密鍵を記憶する。
【００４１】
鍵付きハッシュ出力部２０３は、秘密鍵記憶部２０２が記憶する秘密鍵に基づいて、有効期間に依存する値の鍵付きハッシュ値を、有効期間に対応した鍵として出力する。
【００４２】
時計部２０４は、時間の経過に応じ単調増加する値を出力する。
【００４３】
時限鍵制御部２１０は、乱数発生部２０１、秘密鍵記憶部２０２、鍵付きハッシュ出力部２０３、時計部２０４を制御する。又、時限鍵制御部２１０は、後述する、制御部１１０からの鍵取得処理や、リセット要求が行われたときの処理など、必要に応じて所定の処理を行う。
【００４４】
時限鍵生成部２００は、例えばワンチップ構成で実装するなどの耐タンパ実装を行うものとし、その内部状態を外部から直接的に観察すること及び操作することは著しく困難であるものとする。
【００４５】
（データ構造）
次に、メタデータ記憶部１０４が記憶するデータ群記述子について説明する。
【００４６】
データ群記述子は、図３に示すように、データ群ＩＤ欄と有効期間欄と親データ群欄とデータ群鍵欄とを備える。例えば、データ群記述子３０３は、データ群ＩＤ欄にＵ１２２、有効期間欄に259200と604800、親データ群欄にＵ１０１、データ群鍵欄Oxa308da05833a57ec204e74bd63d1de2a（図中では略）という値が記載されている。データ群ＩＤ欄には、当該データ群記述子が対応するデータ群のデータ群ＩＤ、即ちデータ群を識別する値が記載される。有効期間欄には、時限鍵生成部２００の時計部２０４が用いる時刻表現による有効期間の開始時刻と終了時刻の計２つの時刻値を要素とする２次元ベクタ値が記載される。又、親データ群欄には、当該データ群記述子が対応するデータ群が依存するデータ群（以下において、「親データ群」という。）のデータ群ＩＤが記載される。親データ群欄に記載される値はベクタ値であり、複数のデータ群ＩＤ値が記載され得る。又、データ群鍵欄には、秘密データの暗号化および復号を行う際に用いる暗号鍵であるデータ群鍵を暗号化した値が記載される。
【００４７】
データ群記述子３０４は、親データ群欄にデータ群ＩＤとしてＵ１０１とＵ１０２の２つが記載されている例である。又、依存するデータ群が無いデータ群に対応するデータ群記述子の親データ群欄は空欄となる。データ群記述子３０１および３０２はその例である。尚、図３は、各データ記述子の親データ群との関係を示す階層図となっており、データ群間の依存関係を反映させた矢印をデータ群記述子間に付しているが、これは直観的な理解を助けるためのものであり、そのような関係を記述するデータが（データ群記述子の親データ群欄の他に）メタデータ記憶部１０４に記憶されることを意味しない。
【００４８】
尚、本実施形態においては「時刻」という語を、日付を含むいわゆる日時と等価の意味で主に用いており、即ち、同じ時刻は２度やってこない事を主に想定しているが、それ以外に、同じ時刻が繰り返してやってくるようなものを「時刻」であるとしてもよい。例えば「２３時４６分６秒」のように、日付のない時刻、その他、年、月、日、曜日、時、分、秒のいずれか、又は複数を省略した時刻表現によるものを「時刻」としても良い。
【００４９】
（データ管理方法）
次に、本実施形態に係るデータ管理方法について、図４〜１０を用いて説明する。
【００５０】
＝データ群追加処理＝
まず、図４を用いて、外部システム１２０から、データ群ＩＤと有効期間と親データ群をパラメタとして、データ群の追加を要求された場合のデータ管理システム１００の動作について説明する。
【００５１】
まず、ステップＳ１０１において、制御部１１０は、パラメタのデータ群ＩＤ値を変数Ｓに、有効期間値を変数Ｔに、親データ群値を変数ＳＰにそれぞれ代入する。ここで有効期間値及び変数Ｔはベクタであり、有効期間開示時刻と終了時刻を要素として持つ。又、親データ群値及び変数ＳＰもベクタであり、親データ群が複数の場合に対応する。
【００５２】
次に、ステップＳ１０２において、制御部１１０は、Ｔの時刻を時限鍵生成部２００の時計部２０４の時刻表現に変換（即ち、Ｔの各要素の時刻表現を変換）して変数ＴＬに代入し、乱数発生部２０１を用いて新たな乱数を生成して変数ＫＳに代入する。
【００５３】
次に、ステップＳ１０３において、制御部１１０は、後述するデータ群鍵暗号化プロシジャをパラメタとして有効期間値にＴＬの値、親データ群ＩＤ値にＳＰの値、データ群鍵値にＫＳの値をそれぞれ指定して呼び出し、その返却値を変数Ｋに代入する。
【００５４】
次に、ステップＳ１０４において、制御部１１０は、メタデータ記憶部１０４に新たなデータ群記述子を作成し、そのデータ群ＩＤ欄にＳの値、親データ群欄にＳＰの値、有効期間欄にＴＬの値、データ群鍵欄にＫの値をそれぞれ記憶し、処理を終了する。
【００５５】
ここで、ステップＳ１０２の時刻表現の変換について、補足説明する。例として、時計部２０４が日本標準時平成１０年２月１日午前０時ちょうどからの経過秒数を１秒単位で数え上げた整数値を時刻表現するような時計であったとする。その時に変数Ｔの持つ有効期間の開始時刻要素の表現及び意味が「日本標準時平成１０年２月２日午前０時０分０秒」であったとすると、時計部２０４の時刻表現に変換して変数ＴＬに代入されるベクタ値の開始時刻要素は整数値で86400となる。終了時刻要素についても同様の変換を行う。
【００５６】
＝データ群鍵暗号化プロシジャの呼び出し処理＝
次に、図５を用いて、有効期間、親データ群ＩＤ、データ群鍵をパラメタとしてデータ群鍵暗号化プロシジャの呼び出しを受けた場合のデータ管理システム１００の動作について説明する。
【００５７】
まず、ステップＳ２０１において、制御部１１０は、パラメタの有効期間値を変数ＴＬに、親データ群ＩＤ値を変数ＳＰに、データ群鍵値を変数ＫＳにそれぞれ代入する。
【００５８】
次に、ステップＳ２０２において、制御部１１０は、期間値としてＴＬの値をパラメタとして指定し、時限鍵生成部２００に鍵取得操作を要求する。そして、制御部１１０は、その返却値を変数ＫＴに代入し、後述のデータ群鍵復号化プロシジャを、ＳＰの値をパラメタとして呼び出す。更に、制御部１１０は、その返却値を変数ＫＰに代入する。但し、ＳＰの値が空の場合はデータ群鍵復号化プロシジャを呼び出さず変数ＫＰの値は空とする。又、ＳＰの値が複数のデータ群ＩＤから成る時にはデータ群ＩＤそれぞれにつきデータ群鍵復号化プロシジャを呼び出し、変数ＫＰにはそれぞれ対応する返却値を要素として持つベクタ値を代入する。
【００５９】
次に、ステップＳ２０３において、制御部１１０は、ＫＴとＫＰのそれぞれの値に依存した値を変数ＫＴＰに代入する。
【００６０】
次に、ステップＳ２０４において、制御部１１０は、ＫＴＰの値を暗号鍵として指定し、暗号化部１０２を用いてＫＳの値を暗号化し、それを変数Ｋに代入する。
【００６１】
次に、ステップＳ２０５において、制御部１１０は、Ｋの値をプロシジャの返却値とし、処理を終了する。
【００６２】
ここで、ステップＳ２０３における変数ＫＴＰに代入する値について補足説明する。変数ＫＴとＫＰそれぞれの値に依存した値を求める手段としては、例えば、算術和や積などの算術演算や、論理和や積、排他的論理和などの論理演算、又、ビット列としての連結や、それらの組み合わせ、更にそれを関数に通した出力などのさまざまな手段を用いることが可能であるが、要件としてはＫＴとＫＰの値のいずれもがＫＴＰの値に影響を与えるような手段である必要がある。
【００６３】
＝データ群鍵復号化プロシジャの呼び出し処理＝
次に、図６を用いて、データ群ＩＤをパラメタとしてデータ群鍵復号化プロシジャの呼び出しを受けた場合のデータ管理システム１００の動作について説明する。
【００６４】
まず、ステップＳ３０１において、制御部１１０は、パラメタのデータ群ＩＤ値をデータ群ＩＤ欄に持つデータ群記述子を、メタデータ記憶部１０４の記憶するデータ群記述子の中で特定する。そして、制御部１１０は、そのデータ群記述子の有効期間欄の値を変数ＴＬに、親データ群欄の値を変数ＳＰに、データ群鍵欄の値を変数Ｋにそれぞれ代入する。
【００６５】
次に、ステップＳ３０２において、制御部１１０は、期間値としてＴＬの値をパラメタとして指定し、時限鍵生成部２００に鍵取得操作を要求する。そして、制御部１１０は、その返却値を変数ＫＴに代入し、データ群鍵復号化プロシジャをＳＰの値をパラメタとして呼び出す。更に、制御部１１０は、その返却値を変数ＫＰに代入する。但し、ＳＰの値が空の場合はデータ群鍵復号化プロシジャを呼び出さず変数ＫＰの値は空とする。又、ＳＰの値が複数のデータ群ＩＤから成る時にはデータ群ＩＤそれぞれにつきデータ群鍵復号化プロシジャを呼び出し、変数ＫＰにはそれぞれ対応する返却値を要素として持つベクタ値を代入する。
【００６６】
次に、ステップＳ３０３において、制御部１１０は、ＫＴとＫＰのそれぞれの値に依存した値を変数ＫＴＰに代入する。ステップＳ３０３の処理は、図５におけるステップＳ２０３の処理と同様であり、重ねての補足説明は省略する。
【００６７】
次に、ステップＳ３０４において、制御部１１０は、ＫＴＰの値を暗号鍵として指定し、復号化部１０３を用いてＫの値を復号し、それを変数ＫＳに代入する。
【００６８】
次に、ステップＳ３０５において、ＫＳの値をプロシジャの返却値とし、処理を終了する。
【００６９】
＝秘密データ書き込み処理＝
次に、図７を用いて、外部システム１２０から秘密データとデータ群ＩＤをパラメタとして秘密データの書き込みを要求された場合のデータ管理システム１００の動作について説明する。
【００７０】
まず、ステップＳ４０１において、制御部１１０は、パラメタの秘密データ値を変数Ｄに、データ群ＩＤ値を変数Ｓにそれぞれ代入する。
【００７１】
次に、ステップＳ４０２において、制御部１１０は、データ群鍵復号化プロシジャをパラメタとしてデータ群ＩＤ値としてＳの値を指定して呼び出し、その返却値を変数ＫＳに代入する。
【００７２】
次に、ステップＳ４０３において、制御部１１０は、ＫＳの値を暗号鍵として指定し、暗号化部１０２を用いてＤの値を暗号化し、それを変数ＤＥに代入する。
【００７３】
次に、ステップＳ４０４において、制御部１１０は、ＤＥの値をＳの値と関連付けてデータ記憶部１０５に記憶し、処理を終了する。
【００７４】
ここで、ステップＳ４０４の処理において、暗号化された秘密データ（ＤＥの値）にデータ群ＩＤ（Ｓの値）を関連付ける手段について補足説明する。この関連付けの手段としては、暗号化秘密データとデータ群ＩＤを隣接してデータ記憶部１０５に記憶する方法や、暗号化秘密データ又はその記憶アドレスをハッシュ関数などで変換したアドレスにデータ群ＩＤを記憶するなどの方法が例として考えられる。それ以外の方法であっても、次に説明する秘密データ読み出し要求に対する処理において暗号化秘密データが特定されたときに、それと関連づけられたデータ群ＩＤが特定できるようになっていれば良い。
【００７５】
＝秘密データ読み出し処理＝
次に、図８を用いて、外部システム１２０から秘密データを指定してその読み出しを要求された場合のデータ管理システム１００の動作について説明する。
【００７６】
まず、ステップＳ５０１において、制御部１１０は、指定された秘密データ（暗号化済み）と、それと関連付けられたデータ群ＩＤをデータ記憶部１０５から読み出す。そして、制御部１１０は、秘密データとデータ群ＩＤを、変数ＤＥと変数Ｓにそれぞれ代入する。
【００７７】
次に、ステップＳ５０２において、制御部１１０は、データ群鍵復号化プロシジャをパラメタとして、データ群ＩＤ値としてＳの値を指定して呼び出し、その返却値を変数ＫＳに代入する。
【００７８】
次に、ステップＳ５０３において、制御部１１０は、ＫＳの値を暗号鍵として指定し、復号化部１０３を用いてＤＥの値を復号し、それを変数Ｄに代入する。
【００７９】
次に、ステップＳ５０４において、制御部１１０は、外部システム１２０にＤの値を返却値として返し、処理を終了する。
【００８０】
ここで、外部システム１２０が暗号化済みの秘密データを指定する方法について補足説明する。秘密データを指定する方法としては、暗号化秘密データがデータ記憶部１０５において記憶されているアドレスを指定する方法や、秘密データに固有の名前を関連付けて、それを用いて指定する方法が例として考えられる。いずれの方法をとるにあたっても、前述の秘密データ書き込み処理および読み出し処理に追加の処理（例えば、記憶アドレスを外部システム１２０に通知するなど）が必要となるが、これらの処理を考案し実施することはかかる分野に携わる人にとり容易であるので詳細は割愛する。
【００８１】
＝データ群削除処理＝
次に、外部システム１２０からデータ群ＩＤをパラメタとしてデータ群の削除を要求された場合のデータ管理システム１００の動作について説明する。
【００８２】
制御部１１０は、パラメタのデータ群ＩＤ値をデータ群ＩＤ欄に持つデータ群記述子を、メタデータ記憶部１０４の記憶するデータ群記述子の中で特定し、そのデータ群記述子のデータ群鍵欄を無効値で上書きし、処理を終了する。この無効値としてはデータ群鍵欄にそれまで記載されていた値と異なるもの、例えば乱数や数値０などを用いる。
【００８３】
又、制御部１１０は、パラメタのデータ群ＩＤ値を親データ群欄に持つデータ群記述子を、メタデータ記憶部１０４の記憶するデータ群記述子の中で特定し、そのデータ群記述子のデータ群鍵欄を無効値で上書きしてもよい。
【００８４】
＝有効期間変更処理＝
次に、図９を用いて、外部システム１２０からデータ群ＩＤと有効期間をパラメタとしてデータ群の有効期間変更を要求された場合のデータ管理システム１００の動作について説明する。
【００８５】
まず、ステップＳ６０１において、制御部１１０は、パラメタのデータ群ＩＤ値を変数Ｓに、有効期間値を変数ＴＮに、それぞれ代入する。
【００８６】
次に、ステップＳ６０２において、制御部１１０は、ＴＮの時刻を時限鍵生成部２００の時計部２０４の時刻表現に変換して変数ＴＮＬに代入する。そして、制御部１１０は、データ群鍵復号化プロシジャをパラメタとして、データ群ＩＤ値としてＳの値を指定して読み出し、その返却値を変数ＫＳに代入する。
【００８７】
次に、ステップＳ６０３において、制御部１１０は、データ群鍵復号化プロシジャをパラメタとして有効期間値にＴＮＬの値、親データ群ＩＤ値としてＳの値をデータ群ＩＤ欄に持つデータ群記述子（メタデータ記憶部１０４が記憶するもの）の親データ群欄の値、データ群鍵値にＫＳの値をそれぞれ指定して呼び出し、その返却値を変数Ｋに代入する。
【００８８】
次に、ステップＳ６０４において、制御部１１０は、Ｓの値をデータ群ＩＤ欄に持つデータ群記述子（メタデータ記憶部１０４が記憶するもの）の有効期間欄にＴＮＬの値、データ群鍵欄にＫの値をそれぞれ記憶し、処理を終了する。
【００８９】
＝時限鍵生成処理＝
次に、図１０を用いて、データ管理システム１００の時限鍵生成部２００の動作について説明する。図１０は、期間値をパラメタとして鍵取得操作を要求された場合の動作である。
【００９０】
まず、ステップＳ７０１において、時限鍵制御部２１０は、期間値の開始時刻要素の値を変数Ｓに、終了時刻要素の値を変数Ｅにそれぞれ代入する。
【００９１】
次に、ステップＳ７０２において、時限鍵制御部２１０は、ＳとＥのそれぞれの値を時計部２０４の示す現在時刻の値と比較し、Ｓの値が現在時刻値より同じか小さく（現在または過去の時刻を示している）かつＥの値が現在時刻値より大きい（将来の時刻を示している）場合にはステップＳ７０３へ進み、それ以外の場合はステップＳ７０４へ進む。
【００９２】
ステップＳ７０３へ進んだ場合は、時限鍵制御部２１０は、鍵付きハッシュ出力部２０３を用いて、ＳとＥのそれぞれの値に依存する値の鍵付きハッシュ値を求め、それを変数Ｈに代入する。ＳとＥに依存する値を求める手段については、前述のデータ群鍵暗号化プロシジャにおけるステップＳ２０３についての説明に準ずることとする。又、時鍵付きハッシュ値に指定する鍵としては秘密鍵記憶部２０２の記憶する秘密鍵を用いる。
【００９３】
ステップＳ７０４へ進んだ場合は、時限鍵制御部２１０は、変数Ｈに無効値を代入する。この無効値としては仮にステップＳ７０３の処理を行ったとしてその時Ｈに代入されたであろう値とは異なる値、例えば乱数や数値０などを用いる。
【００９４】
次に、ステップＳ７０５において、時限鍵制御部２１０は、Ｈの値を鍵取得操作の要求者（制御部１１０）に返却し、処理を終了する。
【００９５】
次に、時限鍵生成部２００の時限鍵制御部２１０が外部の要求に基づいて、もしくは自発的に行うリセット処理について説明する。
【００９６】
時限鍵制御部２１０は、乱数発生部２０１を用いて秘密鍵となる新たな乱数を発生し、それを秘密鍵記憶部２０２に記憶する。又、時限鍵制御部２１０は、時計部２０４を初期化し、処理を終了する。初期化を行うと、時計部２０４はその時刻表現の範囲内の時刻値を示すようになり、その時刻値から時を刻み始める。それまで示していた時刻値と無関係に時刻を固定的な時刻値に設定してから時刻の更新を開始する操作として実施することが考えられるが、それまで示していた時刻値が（例えば「２５時」のようなものでなく）時刻表現の範囲内の値であるときにはその時刻値から時刻の更新を開始する操作として実施するのでも良い。
【００９７】
このリセット処理の利用機会について補足説明する。リセット処理を行うと、秘密鍵記憶部２０２の記憶する秘密鍵が更新されるため、時限鍵生成部２００に対し鍵取得操作を要求したときの返却値はリセット処理以前に全く同じ要求を行った時の返却値とは異なるものになる。従ってデータ管理システム１００においては、前述のデータ群鍵復号化プロシジャのステップＳ３０２が正常に行われず、データ群鍵が正常に復号できなくなるため、それまでに暗号化してデータ記憶部１０５に記憶した秘密データはリセット処理後には復号できなくなる。この性質を用いると、記憶した全ての秘密データの実効的な一括消去を行うことができる。これは外部の要求に基づき時限鍵制御部２１０がリセット処理を行う場合であったが、時限鍵制御部２１０が自発的にリセット処理を行う場合も考えられる。その場合としては、時限鍵生成部２００に対し電力供給が開始された時や、電力供給が不安定になった後に安定した時など、直前まで時計部２０４における時刻の更新が行われていなかったか、リセット処理以外で時刻値が異常に変化した、またはそのいずれかの可能性がある場合がある。時限鍵生成部２００のセキュリティ機能上の要件として、時計部２０４の時刻が過去に戻ったか、実際の過去時間より大きな変化をした、もしくは小さな変化をしたようなことがあったときには、秘密鍵記憶部２０２に記憶される秘密鍵は更新されなければならない。よって、そのような条件が起こりうる前述の電力供給の不安定などを検知した場合には時限鍵制御部２１０はリセット処理を行わなければならない。但し、電力供給の不安定などを検知し、所定の処理を実行するような実施手段はかかる分野に携わる人に広く知られているので詳細は割愛する。
【００９８】
（作用及び効果）
本実施形態に係るデータ管理システム１００及びデータ管理方法によると、有効期間に現在時刻が含まれる場合にのみ、鍵付きハッシュ値を出力し、この出力した値に依存する値を復号鍵として、秘密データを復号化することができる。このため、有効期間外ではハッシュ値が得られないため、秘密データの復号は不可能となり、秘密データを読み出すことができない。従って、タンパによる秘密データの漏洩を防止することができる。
【００９９】
又、本実施形態に係るデータ管理システム１００によると、時限鍵生成部２００は、外部からの要求に応じて、あるいは、時計部２０４に異常が発生した可能性がある場合に、新たな秘密鍵を生成する乱数発生部２０１を備えることができる。このように、秘密鍵が更新されるため、時限鍵生成部に対し鍵取得操作を要求したときの返却値はリセット処理以前に全く同じ要求を行った時の返却値とは異なるものになる。この性質を用いると、記憶した全ての秘密データの実効的な一括消去を行うことができる。
【０１００】
又、本実施形態に係るデータ管理システム１００によると、秘密データの削除が要求された場合、秘密データの管理単位であるデータ群を識別する値、あるいは、当該データ群を識別する値を、親データ群を識別する値として保持するデータ群記述子を特定し、当該データ群記述子に保持されるデータ群鍵を暗号化した値を上書き消去することができる。このため、データ群が削除された時には当該データ群に固有のデータ群鍵を消去することができる。
【０１０１】
又、本実施形態に係るデータ管理システム１００によると、データ群の有効期間の変更が要求された場合、復号化部１０３は、データ群鍵を現在の有効期間に対応して生成された鍵に依存する暗号鍵にて復号化し、暗号化部１０２は、新たな有効期間に対応して生成された鍵に依存する暗号鍵にて、復号化されたデータ群鍵を再び暗号化することができる。このため、有効期間が変更された場合、有効期間に対応した鍵を新たに生成し直すことができる。
【０１０２】
又、従来のデータ管理システム９００では、秘密データとデータ群との所属関係やデータ群間の依存関係を考慮した暗号鍵の管理がなされていない。このため、あるデータ群Ａに属する、もしくはＡに依存するデータ群Ｂに属する秘密データおよびそれを暗号化した暗号鍵は、データ群Ａが削除または有効期間が終了してその秘密データをデータ管理システムが記憶することの合理性や適法性が失われた後においても秘密データを復号可能な形態でデータ管理システムに記憶され続け、又、読み出し要求により秘密データが外部システムに提供されるという問題があった。
【０１０３】
例えば、包括的サービス契約に基づいて記憶したデータ群Ａと、当該包括的サービス契約に依存して成立する個別のサービス契約に基づいて記憶したデータ群Ｂがあるとき、包括的サービス契約が解除となった時にはデータ群ＡだけでなくＢについてもそれを保持する合理性や適法性が失われることになる。この場合は個別契約が包括契約に依存しているのであるが、データ管理上はデータ群Ｂがデータ群Ａに依存しているとモデル化することができる。これらのようにデータ群を保持する合理性や適法性が失われた場合には記憶しているデータ群もしくは暗号鍵の消去などを行わなければならないが、従来技術では行われていなかったのである。
【０１０４】
本実施形態に係るデータ管理システム１００によると、データ記述子に、当該データ群が依存する親データ群に関する情報が含まれるため、従来技術における問題点を解決することができる。
【０１０５】
（適用例）
次に、本実施形態に係るデータ管理システムの具体的な適用例について、説明する。
【０１０６】
図１１は、本適用例に係るデータ管理システムのハードウェア構成を説明するブロック図である。図１１に示すように、本発明のデータ管理システムの適用例であるコンピュータ端末４００は、コンピュータプログラム（以下において、「プログラム」という。）に従い、データの処理を行うＣＰＵ（中央処理装置）４０１と、時限鍵生成部２００をワンチップのハードウェアで実装した時限鍵チップ４０２と、制御部１１０、乱数発生部１０１、暗号化部１０２、復号化部１０３を実施するプログラムであるデータ管理プログラム５２１及び後述する仮想マシンモニタ５０１や外部システム１２０を実施するプログラムを記憶し、メタデータ記憶部１０４とデータ記憶部１０５の役割を果たすメモリ４０３とから構成される。ＣＰＵ４０１と時限鍵チップ４０２とメモリ４０３はデータバスやアドレスバス、その他の信号線を含むバス４０４で接続されており、更に、ＣＰＵ４０１が後述のセキュアモードであることを時限鍵チップ４０２およびメモリ４０３に通知するセキュア信号４０５がＣＰＵ４０１からそれらに送信できるようになっている。このセキュア信号４０５は独自の信号線として実施しても良いが、バス４０４に含まれる信号線の特殊な組み合わせによる信号、あるいはデータバスやアドレスバスに特殊な符号系列を送信することによる信号として実施しても良い。
【０１０７】
本適用例においては、本実施形態において説明したデータ管理システム１００の機能の多くの部分をデータ管理プログラム５２１により実施するが、そのプログラムは図１２に示すように、仮想マシンモニタ５０１により構築ならびに管理される仮想的な計算機環境である仮想マシン５１１の上で実行される。
【０１０８】
仮想マシンモニタ５０１は一般にそのような仮想的計算機環境を単一の計算機上に複数構築することを目的とするプログラムであり、図１２では、仮想マシンモニタ５０１上には、仮想マシン５１１の他に、仮想マシン５１２、仮想マシン５１３が構築されており、それぞれの仮想マシンの上では外部システム１２０を実施するプログラムである外部システムプログラム５２２、５２３が実行されている例を示している。
【０１０９】
これらのプログラムのうち、データ管理プログラム５１２のみがセキュアモードで実行される。セキュアモードとはＣＰＵ４０１の動作モードであり、セキュアモードではない動作モードである非セキュアモードとの切り替えは仮想マシンモニタ５０１により行われ、それ以外のプログラムではこれらのモード切り替えは行うことはできない。ＣＰＵ４０１がセキュアモードであるかどうかはセキュア信号４０５により周辺装置に通知される。即ち、セキュア信号４０５を受信する時限鍵チップ４０２やメモリ４０３は、ＣＰＵ４０１がセキュアモードであるかどうかを知ることができる。そして、時限鍵チップ４０２はＣＰＵ４０１がセキュアモードである場合にのみ鍵取得操作の要求に対する処理を行い、メモリ４０３はＣＰＵ４０１がセキュアモードである場合にのみアクセス可能となるセキュアメモリ空間４０６を持つ。
【０１１０】
以上のようなハードウェア及びソフトウェア構成において、本適用例のコンピュータ端末４００では、データ管理プログラム５２１の記憶及び同プログラムの実行で一時的に用いるデータ（一時データ）の記憶をセキュアメモリ空間４０６において行う。
【０１１１】
次に、このように実施することにより得られる効果について説明する。非セキュアモードで動作する外部システムプログラム５２２、５２３からはデータ記憶部１０５に記憶される暗号化された秘密データや、メタデータ記憶部１０４に記憶されるデータ群記述子をアクセスすることは可能であるが、時限鍵チップ４０２は非セキュアモードでの鍵取得操作要求は処理しないため、これら外部システムプログラムはデータ群記述子の記憶するデータ群鍵を復号化することができず、よってデータ群鍵で暗号化された秘密データを復号化することができない。メモリ４０３にはデータ管理プログラム５２１が実施するデータ群鍵復号化プロシジャのステップＳ３０４において現れる変数ＫＳ、即ち、復号され平文となったデータ群鍵が存在する瞬間があり得るが、このように平文となったデータ群鍵は一時データであり、セキュアメモリ空間４０６に置かれるため、これら外部システムプログラムからはアクセスすることができない。以上のことから、これらの外部システムプログラムは秘密データを勝手に復号化することはできず、秘密データの安全が保証される。
【０１１２】
更に、コンピュータ端末４００をタンパすることで攻撃者が有効期間外となった秘密データにアクセスすることを考える。この場合、セキュア信号線は攻撃者に自由に操作されうると考えられるので、攻撃者は時限鍵チップ４０２の機能を利用でき、かつ、セキュアメモリ空間４０６のデータも含めメモリ４０３の記憶するデータを全て読み書き可能であると考えられる。この場合、攻撃者は暗号化された秘密データ及びデータ群記述子を入手することができるが、時限鍵チップ４０２に対し鍵取得操作要求を行っても有効期間外の場合には無効値が返却されるため、攻撃者はデータ群鍵を復号化することができず、秘密データを復号化することができない。よって攻撃者は復号された秘密データを入手することができないため、安全である。ただし、セキュアメモリ空間４０６において、データ群鍵復号化プロシジャのステップＳ３０４において現れる変数ＫＳや、その他の処理において平文となったデータ群鍵が消し忘れて残っていると、攻撃者がそれを入手して秘密データを復号できてしまう。よって、データ管理プログラム５２１はデータ群鍵を平文でメモリ４０３に記憶した場合は速やかに上書き消去するように処理を行う必要がある。
【０１１３】
（その他の実施形態）
本発明は上記の実施形態によって記載したが、この開示の一部をなす論述及び図面はこの発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施形態、実施例及び運用技術が明らかとなろう。
【０１１４】
例えば、本実施形態に係るデータ管理システム１００において、秘密データの有効期間として開始時刻と終了時刻の２つで定められる期間を用いるように説明しているが、有効期間が開始時刻のみで終了時刻が指定されない場合（開始時刻以降は常に有効期間）、又は、終了時刻のみで開始時刻が指定されない場合（終了時刻以前は常に有効期間）も考えられる。そのように開始または終了のいずれかの時刻のみでシステムで必要とする有効期間を十分に表現しうる場合には、データ管理システム１００におけるデータ構造の一部や処理の一部を単純化できる。例えば、データ群記述子において有効期間欄を開始と終了の時刻からなるベクタ値の代わりにそのいずれかの時刻値のみを記述する、又、時限鍵制御部２１０のステップＳ７０２の処理において現在時刻と比較する対象を変数ＳまたはＴのいずれかのみとすることができる。これらの他にも単純化できる部分はあるが、それらを考慮し実施することはかかる分野に携わる人にとり容易であるので詳細は略する。
【０１１５】
このように、本発明はここでは記載していない様々な実施形態等を含むことは勿論である。従って、本発明の技術的範囲は上記の説明から妥当な特許請求の範囲に係る発明特定事項によってのみ定められるものである。
【図面の簡単な説明】
【０１１６】
【図１】本実施形態に係るデータ管理システムの構成ブロック図である。
【図２】本実施形態に係るデータ管理システムの時限鍵生成部の構成ブロック図である。
【図３】本実施形態に係るデータ群記述子の一例を説明する図である。
【図４】本実施形態に係るデータ管理方法（データ群追加処理）を示すフローチャートである。
【図５】本実施形態に係るデータ管理方法（データ群鍵暗号化プロシジャの呼び出し処理）を示すフローチャートである。
【図６】本実施形態に係るデータ管理方法（データ群鍵復号化プロシジャの呼び出し処理）を示すフローチャートである。
【図７】本実施形態に係るデータ管理方法（秘密データの書き込み処理）を示すフローチャートである。
【図８】本実施形態に係るデータ管理方法（秘密データの読み出し処理）を示すフローチャートである。
【図９】本実施形態に係るデータ管理方法（有効期間変更処理）を示すフローチャートである。
【図１０】本実施形態に係るデータ管理方法（時限鍵生成処理）を示すフローチャートである。
【図１１】適用例に係るデータ管理システムのハードウェア構成を示すブロック図である。
【図１２】適用例に係るデータ管理システムのソフトウェアを説明する図である。
【図１３】従来のデータ管理システムの構成ブロック図である。
【符号の説明】
【０１１７】
１００…データ管理システム
１０１…乱数発生部
１０２…暗号化部
１０３…復号化部
１０４…メタデータ記憶部
１０５…データ記憶部
１１０…制御部
１２０…外部システム
２００…時限鍵生成部
２０１…乱数発生部
２０２…秘密鍵記憶部
２０３…ハッシュ出力部
２０４…時計部
２１０…時限鍵制御部
３０１、３０２、３０３、３０４…データ群記述子
４００…コンピュータ端末
４０１…ＣＰＵ
４０２…時限鍵チップ
４０３…メモリ
４０４…バス
４０５…セキュア信号
４０６…セキュアメモリ空間
５０１…仮想マシンモニタ
５１１…仮想マシン
５１２…データ管理プログラム
５１２…仮想マシン
５１３…仮想マシン
５２１…データ管理プログラム
５２２…外部システムプログラム
９００…データ管理システム
９０２…暗号化データ記憶部
９１０…機密保護部
９１２…暗号／復号部
９１３…制御部
９１４…乱数発生部
９１６…暗号鍵記憶部
【図１】
2006120089.tif 000003
【図２】
2006120089.tif 000004
【図３】
2006120089.tif 000005
【図４】
2006120089.tif 000006
【図５】
2006120089.tif 000007
【図６】
2006120089.tif 000008
【図７】
2006120089.tif 000009
【図８】
2006120089.tif 000010
【図９】
2006120089.tif 000011
【図１０】
2006120089.tif 000012
【図１１】
2006120089.tif 000013
【図１２】
2006120089.tif 000014
【図１３】
2006120089.tif 000015