(57)【特許請求の範囲】
【請求項１】
データの暗号化又は復号化に要する鍵と該鍵から一意に求められ、難読化された鍵特定値とが関連付けて記憶される揮発性記憶部と、暗号化対象のデータを特定する暗号化情報と前記鍵特定値とが関連付けて記憶される不揮発性記憶部と、を備えるデータベース暗号化装置であって、
前記鍵と前記暗号化情報とを受信する受信手段と、
前記受信手段が受信した前記鍵を基に、前記鍵特定値を求める鍵特定値計数手段と、
前記受信手段が受信した前記暗号化情報が既に前記不揮発性記憶部に記憶されているか否かを判別する暗号化情報判別手段と、
前記暗号化情報判別手段が、前記暗号化情報が既に前記不揮発性記憶部に記憶されていると判別した場合に、前記鍵特定値計数手段が求めた前記鍵特定値と、前記受信手段が受信した前記暗号化情報に関連付けて前記不揮発性記憶部に既に記憶されている前記鍵特定値と、を比較する鍵特定値比較手段と、
前記暗号化情報判別手段の判別結果に基づいて、前記受信手段が受信した前記暗号化情報と前記鍵特定値計数手段が求めた前記鍵特定値とを関連付けて前記不揮発性記憶部に記憶するか否かを判別する暗号化情報記憶手段と、
前記鍵特定値比較手段が、前記比較により二つの鍵特定値が等しいと判別した場合に、前記受信手段が受信した前記鍵と前記鍵特定値計数手段が求めた前記鍵特定値とを前記揮発性記憶部に関連付けて記憶する鍵記憶手段と、
前記不揮発性記憶部に記憶された前記暗号化情報と前記鍵特定値、及び前記揮発性記憶部に記憶された前記鍵と前記鍵特定値を基に、データを暗号化又は復号化するデータ暗号化手段と、を備える、
ことを特徴とするデータベース暗号化装置。
【請求項２】
前記鍵特定値比較手段が、前記比較により二つの鍵特定値が等しくないと判別した場合に、該二つの鍵特定値が等しくない旨のエラーを報知する、
ことを特徴とする請求項１に記載のデータベース暗号化装置。
【請求項３】
前記鍵特定値計数手段は、ハッシュ関数を基に、前記鍵特定値を求める、
ことを特徴とする請求項１又は２に記載のデータベース暗号化装置。
【請求項４】
ネットワークを介して相互に接続される複数のクライアント装置とデータベース暗号化装置とを備えるデータベース暗号化システムであって、
前記クライアント装置は、
データの暗号化又は復号化に要する鍵を生成する鍵生成手段と、
暗号化対象のデータを特定する暗号化情報を生成する暗号化情報生成手段と、
前記鍵生成手段に生成された前記鍵と、前記暗号化情報生成手段に生成された前記暗号化情報とを、ネットワークを介して相互に接続された暗号化システムに送信する送信手段と、を備え、
前記データベース暗号化装置は、
データの暗号化又は復号化に要する鍵と該鍵から一意に求められ、難読化された鍵特定値とが関連付けて記憶される揮発性記憶部と、暗号化対象のデータを特定する暗号化情報と前記鍵特定値とが関連付けて記憶される不揮発性記憶部と、を備えるデータベース暗号化装置であって、
前記鍵と前記暗号化情報とを受信する受信手段と、
前記受信手段が受信した前記鍵を基に、前記鍵特定値を求める鍵特定値計数手段と、
前記受信手段が受信した前記暗号化情報が既に前記不揮発性記憶部に記憶されているか否かを判別する暗号化情報判別手段と、
前記暗号化情報判別手段が、前記暗号化情報が既に前記不揮発性記憶部に記憶されていると判別した場合に、前記鍵特定値計数手段が求めた前記鍵特定値と、前記受信手段が受信した前記暗号化情報に関連付けて前記不揮発性記憶部に既に記憶されている前記鍵特定値と、を比較する鍵特定値比較手段と、
前記暗号化情報判別手段の判別結果に基づいて、前記受信手段が受信した前記暗号化情報と前記鍵特定値計数手段が求めた前記鍵特定値とを関連付けて前記不揮発性記憶部に記憶するか否かを判別する暗号化情報記憶手段と、
前記鍵特定値比較手段が、前記比較により二つの鍵特定値が等しいと判別した場合に、前記受信手段が受信した前記鍵と前記鍵特定値計数手段が求めた前記鍵特定値とを前記揮発性記憶部に関連付けて記憶する鍵記憶手段と、
前記不揮発性記憶部に記憶された前記暗号化情報と前記鍵特定値、及び前記揮発性記憶部に記憶された前記鍵と前記鍵特定値を基に、データを暗号化又は復号化するデータ暗号化手段と、を備える、
ことを特徴とするデータベース暗号化システム。
【請求項５】
データの暗号化又は復号化に要する鍵と該鍵から一意に求められ、難読化された鍵特定値とが関連付けて記憶される揮発性記憶部と、暗号化対象のデータを特定する暗号化情報と前記鍵特定値とが関連付けて記憶される不揮発性記憶部と、を備えるデータベース暗号化装置でデータベースを暗号化する方法であって、
前記鍵と前記暗号化情報とを受信する受信ステップと、
前記受信ステップが受信した前記鍵を基に、前記鍵特定値を求める鍵特定値計数ステップと、
前記受信ステップが受信した前記暗号化情報が既に前記不揮発性記憶部に記憶されているか否かを判別する暗号化情報判別ステップと、
前記暗号化情報判別ステップが、前記暗号化情報が既に前記不揮発性記憶部に記憶されていると判別した場合に、前記鍵特定値計数ステップが求めた前記鍵特定値と、前記受信ステップが受信した前記暗号化情報に関連付けて前記不揮発性記憶部に既に記憶されている前記鍵特定値と、を比較する鍵特定値比較ステップと、
前記暗号化情報判別ステップの判別結果に基づいて、前記受信ステップが受信した前記暗号化情報と前記鍵特定値計数ステップが求めた前記鍵特定値とを関連付けて前記不揮発性記憶部に記憶するか否かを判別する暗号化情報記憶ステップと、
前記鍵特定値比較ステップが、前記比較により二つの鍵特定値が等しいと判別した場合に、前記受信ステップが受信した前記鍵と前記鍵特定値計数ステップが求めた前記鍵特定値とを前記揮発性記憶部に関連付けて記憶する鍵記憶ステップと、
前記不揮発性記憶部に記憶された前記暗号化情報と前記鍵特定値、及び前記揮発性記憶部に記憶された前記鍵と前記鍵特定値を基に、データを暗号化又は復号化するデータ暗号化ステップと、を備える、
ことを特徴とするデータベース暗号化方法。
【請求項６】
データの暗号化又は復号化に要する鍵と該鍵から一意に求められ、難読化された鍵特定値とが関連付けて記憶される揮発性記憶部と、暗号化対象のデータを特定する暗号化情報と前記鍵特定値とが関連付けて記憶される不揮発性記憶部と、を備えるコンピュータを、
前記鍵と前記暗号化情報とを受信する受信手段、
前記受信手段が受信した前記鍵を基に、前記鍵特定値を求める鍵特定値計数手段、
前記受信手段が受信した前記暗号化情報が既に前記不揮発性記憶部に記憶されているか否かを判別する暗号化情報判別手段、
前記暗号化情報判別手段が、前記暗号化情報が既に前記不揮発性記憶部に記憶されていると判別した場合に、前記鍵特定値計数手段が求めた前記鍵特定値と、前記受信手段が受信した前記暗号化情報に関連付けて前記不揮発性記憶部に既に記憶されている前記鍵特定値と、を比較する鍵特定値比較手段、
前記暗号化情報判別手段の判別結果に基づいて、前記受信手段が受信した前記暗号化情報と前記鍵特定値計数手段が求めた前記鍵特定値とを関連付けて前記不揮発性記憶部に記憶するか否かを判別する暗号化情報記憶手段、
前記鍵特定値比較手段が、前記比較により二つの鍵特定値が等しいと判別した場合に、前記受信手段が受信した前記鍵と前記鍵特定値計数手段が求めた前記鍵特定値とを前記揮発性記憶部に関連付けて記憶する鍵記憶手段、
前記不揮発性記憶部に記憶された前記暗号化情報と前記鍵特定値、及び前記揮発性記憶部に記憶された前記鍵と前記鍵特定値を基に、データを暗号化又は復号化するデータ暗号化手段、として機能させる、
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベース暗号化装置、データベース暗号化システム、データベース暗号化方法及びプログラムに関する。
【背景技術】
【０００２】
データを格納するシステムには、システム内のデータベースを参照することによる情報漏洩を防ぐため、データベース内の情報（データ）を難読化するデータベース暗号化システムがある。
【０００３】
データベース暗号化システムとは、データ格納時に「暗号鍵」を基にデータを暗号化し、暗号化したデータをデータベースに格納し、データ参照時に「復号鍵」を基に暗号化したデータを復号化するシステムである。
【０００４】
特許文献１は、データを暗号化してデータベースに記憶し、暗号化または復号化に要する鍵をデータベース所有者のシステムで管理する分散型データベースシステムを開示している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開昭６１−８０４３３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１が開示する分散型データベースシステムは、不揮発性ディスクに鍵を格納しているため、サーバ管理者は、そのディスクを引き抜くことで鍵を参照することができる。すなわち、悪意のあるサーバ管理者が、鍵を格納している不揮発性ディスクを引く抜くことにより、データベースの情報が漏洩する可能性がある。
【０００７】
この問題に対する解決策として、耐タンパ性を有しているＨＳＭ（Ｈａｒｄｗａｒｅ  Ｓｅｃｕｒｉｔｙ  Ｍｏｄｕｌｅ）に暗号化した鍵を格納し、ＨＳＭ内で鍵を復号化して鍵を取得する方法が考えられるが、ＨＳＭは特殊なハードウェアであり高価であるため、システム導入コストも高価になってしまう。
【０００８】
また、ＨＳＭを使用しなくても、揮発性メモリを使用することでメモリを引き抜いた際に鍵が消滅する安価な方法が考えられるが、システム障害等の何かしらの理由で揮発性メモリへの電力供給が停止した場合、揮発性メモリ内の鍵のデータは全て消去されてしまうため、再度揮発性メモリに鍵を格納する必要がある。
【０００９】
この時、本来システム停止前と同じ鍵を登録する必要があるが、仮にシステム停止前と異なる鍵が格納された場合、電力供給の停止前後で、異なる鍵で暗号化されたデータが同一データベース上に格納され、データベース内で矛盾が生じることとなる。
【００１０】
本発明は、上記事情に鑑みてなされたものであり、サーバ管理者による鍵の漏洩を防ぐとともに、安価に情報漏洩を防止できるデータベース暗号化装置、データベース暗号化システム、データベース暗号化方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記目的を達成するため、本発明の第１の観点に係るデータベース暗号化装置は、
データの暗号化又は復号化に要する鍵と該鍵から一意に求められ、難読化された鍵特定値とが関連付けて記憶される揮発性記憶部と、暗号化対象のデータを特定する暗号化情報と前記鍵特定値とが関連付けて記憶される不揮発性記憶部と、を備えるデータベース暗号化装置であって、
前記鍵と前記暗号化情報とを受信する受信手段と、
前記受信手段が受信した前記鍵を基に、前記鍵特定値を求める鍵特定値計数手段と、
前記受信手段が受信した前記暗号化情報が既に前記不揮発性記憶部に記憶されているか否かを判別する暗号化情報判別手段と、
前記暗号化情報判別手段が、前記暗号化情報が既に前記不揮発性記憶部に記憶されていると判別した場合に、前記鍵特定値計数手段が求めた前記鍵特定値と、前記受信手段が受信した前記暗号化情報に関連付けて前記不揮発性記憶部に既に記憶されている前記鍵特定値と、を比較する鍵特定値比較手段と、
前記暗号化情報判別手段の判別結果に基づいて、前記受信手段が受信した前記暗号化情報と前記鍵特定値計数手段が求めた前記鍵特定値とを関連付けて前記不揮発性記憶部に記憶するか否かを判別する暗号化情報記憶手段と、
前記鍵特定値比較手段が、前記比較により二つの鍵特定値が等しいと判別した場合に、前記受信手段が受信した前記鍵と前記鍵特定値計数手段が求めた前記鍵特定値とを前記揮発性記憶部に関連付けて記憶する鍵記憶手段と、
前記不揮発性記憶部に記憶された前記暗号化情報と前記鍵特定値、及び前記揮発性記憶部に記憶された前記鍵と前記鍵特定値を基に、データを暗号化又は復号化するデータ暗号化手段と、を備える、
ことを特徴とする。
【００１２】
また、前記鍵特定値比較手段が、前記比較により二つの鍵特定値が等しくないと判別した場合に、該二つの鍵特定値が等しくない旨のエラーを報知しても良い。
【００１３】
また、前記鍵特定値計数手段は、ハッシュ関数を基に、前記鍵特定値を求めても良い。
【００１４】
上記目的を達成するため、本発明の第２の観点に係るデータベース暗号化システムは、
ネットワークを介して相互に接続される複数のクライアント装置とデータベース暗号化装置とを備えるデータベース暗号化システムであって、
前記クライアント装置は、
データの暗号化又は復号化に要する鍵を生成する鍵生成手段と、
暗号化対象のデータを特定する暗号化情報を生成する暗号化情報生成手段と、
前記鍵生成手段に生成された前記鍵と、前記暗号化情報生成手段に生成された前記暗号化情報とを、ネットワークを介して相互に接続された暗号化システムに送信する送信手段と、を備え、
前記データベース暗号化装置は、
データの暗号化又は復号化に要する鍵と該鍵から一意に求められ、難読化された鍵特定値とが関連付けて記憶される揮発性記憶部と、暗号化対象のデータを特定する暗号化情報と前記鍵特定値とが関連付けて記憶される不揮発性記憶部と、を備えるデータベース暗号化装置であって、
前記鍵と前記暗号化情報とを受信する受信手段と、
前記受信手段が受信した前記鍵を基に、前記鍵特定値を求める鍵特定値計数手段と、
前記受信手段が受信した前記暗号化情報が既に前記不揮発性記憶部に記憶されているか否かを判別する暗号化情報判別手段と、
前記暗号化情報判別手段が、前記暗号化情報が既に前記不揮発性記憶部に記憶されていると判別した場合に、前記鍵特定値計数手段が求めた前記鍵特定値と、前記受信手段が受信した前記暗号化情報に関連付けて前記不揮発性記憶部に既に記憶されている前記鍵特定値と、を比較する鍵特定値比較手段と、
前記暗号化情報判別手段の判別結果に基づいて、前記受信手段が受信した前記暗号化情報と前記鍵特定値計数手段が求めた前記鍵特定値とを関連付けて前記不揮発性記憶部に記憶するか否かを判別する暗号化情報記憶手段と、
前記鍵特定値比較手段が、前記比較により二つの鍵特定値が等しいと判別した場合に、前記受信手段が受信した前記鍵と前記鍵特定値計数手段が求めた前記鍵特定値とを前記揮発性記憶部に関連付けて記憶する鍵記憶手段と、
前記不揮発性記憶部に記憶された前記暗号化情報と前記鍵特定値、及び前記揮発性記憶部に記憶された前記鍵と前記鍵特定値を基に、データを暗号化又は復号化するデータ暗号化手段と、を備える、
ことを特徴とする。
【００１５】
上記目的を達成するため、本発明の第３の観点に係るデータベース暗号化方法は、
データの暗号化又は復号化に要する鍵と該鍵から一意に求められ、難読化された鍵特定値とが関連付けて記憶される揮発性記憶部と、暗号化対象のデータを特定する暗号化情報と前記鍵特定値とが関連付けて記憶される不揮発性記憶部と、を備えるデータベース暗号化装置でデータベースを暗号化する方法であって、
前記鍵と前記暗号化情報とを受信する受信ステップと、
前記受信ステップが受信した前記鍵を基に、前記鍵特定値を求める鍵特定値計数ステップと、
前記受信ステップが受信した前記暗号化情報が既に前記不揮発性記憶部に記憶されているか否かを判別する暗号化情報判別ステップと、
前記暗号化情報判別ステップが、前記暗号化情報が既に前記不揮発性記憶部に記憶されていると判別した場合に、前記鍵特定値計数ステップが求めた前記鍵特定値と、前記受信ステップが受信した前記暗号化情報に関連付けて前記不揮発性記憶部に既に記憶されている前記鍵特定値と、を比較する鍵特定値比較ステップと、
前記暗号化情報判別ステップの判別結果に基づいて、前記受信ステップが受信した前記暗号化情報と前記鍵特定値計数ステップが求めた前記鍵特定値とを関連付けて前記不揮発性記憶部に記憶するか否かを判別する暗号化情報記憶ステップと、
前記鍵特定値比較ステップが、前記比較により二つの鍵特定値が等しいと判別した場合に、前記受信ステップが受信した前記鍵と前記鍵特定値計数ステップが求めた前記鍵特定値とを前記揮発性記憶部に関連付けて記憶する鍵記憶ステップと、
前記不揮発性記憶部に記憶された前記暗号化情報と前記鍵特定値、及び前記揮発性記憶部に記憶された前記鍵と前記鍵特定値を基に、データを暗号化又は復号化するデータ暗号化ステップと、を備える、
ことを特徴とする。
【００１６】
上記目的を達成するため、本発明の第４の観点に係るプログラムは、
データの暗号化又は復号化に要する鍵と該鍵から一意に求められ、難読化された鍵特定値とが関連付けて記憶される揮発性記憶部と、暗号化対象のデータを特定する暗号化情報と前記鍵特定値とが関連付けて記憶される不揮発性記憶部と、を備えるコンピュータを、
前記鍵と前記暗号化情報とを受信する受信手段、
前記受信手段が受信した前記鍵を基に、前記鍵特定値を求める鍵特定値計数手段、
前記受信手段が受信した前記暗号化情報が既に前記不揮発性記憶部に記憶されているか否かを判別する暗号化情報判別手段、
前記暗号化情報判別手段が、前記暗号化情報が既に前記不揮発性記憶部に記憶されていると判別した場合に、前記鍵特定値計数手段が求めた前記鍵特定値と、前記受信手段が受信した前記暗号化情報に関連付けて前記不揮発性記憶部に既に記憶されている前記鍵特定値と、を比較する鍵特定値比較手段、
前記暗号化情報判別手段の判別結果に基づいて、前記受信手段が受信した前記暗号化情報と前記鍵特定値計数手段が求めた前記鍵特定値とを関連付けて前記不揮発性記憶部に記憶するか否かを判別する暗号化情報記憶手段、
前記鍵特定値比較手段が、前記比較により二つの鍵特定値が等しいと判別した場合に、前記受信手段が受信した前記鍵と前記鍵特定値計数手段が求めた前記鍵特定値とを前記揮発性記憶部に関連付けて記憶する鍵記憶手段、
前記不揮発性記憶部に記憶された前記暗号化情報と前記鍵特定値、及び前記揮発性記憶部に記憶された前記鍵と前記鍵特定値を基に、データを暗号化又は復号化するデータ暗号化手段、として機能させる、
ことを特徴とする。
【発明の効果】
【００１７】
本発明によれば、サーバ管理者による鍵の漏洩を防ぐとともに、安価に情報漏洩を防止できる。
【図面の簡単な説明】
【００１８】
【図１】本発明の実施形態に係るＤＢ暗号化システムの構成例を示すブロック図である。
【図２】本発明の実施形態に係る各装置のハードウェア構成例を示すブロック図である。
【図３】本発明の実施形態に係るＤＢ暗号化システムの構成例を示すブロック図である。
【図４】本発明の実施形態に係るＤＢ暗号化システムにおける各ＤＢに記憶されているデータの一例を示す図である。
【図５】本発明の実施形態に係るＤＢ暗号化システムにおける鍵登録処理の一例を示すフロー図である。
【図６】本発明の実施形態に係るＤＢ暗号化システムにおけるデータ格納処理の一例を示すフロー図である。
【図７】本発明の実施形態に係るＤＢ暗号化システムにおけるデータ参照処理の一例を示すフロー図である。
【図８】本発明の実施形態に係るＤＢ暗号化システムにおける処理の具体例を説明するための図である。
【図９】本発明の実施形態に係るＤＢ暗号化システムの変形例の一例を示す図である。
【発明を実施するための形態】
【００１９】
以下、本発明に係る実施形態では、共通鍵暗号方式を使用してデータの暗号化を実施する。共通鍵暗号方式とは、暗号化に使用する鍵と、復号化に使用する鍵が共通である方式のことである。
【００２０】
本発明の実施形態に係るデータベース暗号化システム１００（以下、ＤＢ暗号化システムとする）について、図面を参照して説明する。ＤＢ暗号化システム１００は、図１に示すように、暗号化システム１０と、クライアント装置５と、鍵クライアント装置６と、ネットワーク７と、から構成される。暗号化システム１０は、暗号化制御装置１と、データベース暗号化装置２（以下、ＤＢ暗号化装置とする）と、データベース制御装置３（以下、ＤＢ制御装置とする）と、アプリ制御装置４と、から構成されるクラスタシステムである。
【００２１】
暗号化システム１０を構成する暗号化制御装置１、ＤＢ暗号化装置２、ＤＢ制御装置３、アプリ制御装置４は、それぞれ図２に示すように、制御部８１と、主記憶部８２と、外部記憶部８３と、操作部８４と、表示部８５と、送受信部８６から構成されている。主記憶部８２と、外部記憶部８３と、操作部８４と、表示部８５と、送受信部８６は、いずれも内部バス８０を介して制御部８１に接続されている。
【００２２】
送受信部８６は、ネットワーク７に接続する網終端装置または無線通信装置と、それらと接続するシリアルインタフェースまたはＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）インタフェースから構成されている。送受信部８６は、図１に示す各装置からネットワーク７を介して送信された要求や結果通知等を受信する。また、送受信部８６は、受信した要求や情報等を、制御部８１に供給する。
【００２３】
外部記憶部８３は、フラッシュメモリ、ハードディスク、ＤＶＤ−ＲＡＭ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ  Ｒａｎｄｏｍ−Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＤＶＤ−ＲＷ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ  ＲｅＷｒｉｔａｂｌｅ）等の不揮発性メモリから構成され、後述する各処理を制御部８１に行わせるためのプログラム８９を予め記憶し、また、制御部８１の指示に従って、外部記憶部８３が記憶するデータを制御部８１に供給し、制御部８１から供給されたデータを記憶する。
【００２４】
主記憶部８２は、ＲＡＭ（Ｒａｎｄｏｍ−Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等から構成され、外部記憶部８３に記憶されているプログラム８９を読み込み、さらに制御部８１の作業領域としても使用される。
【００２５】
制御部８１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等から構成され、外部記憶部８３に記憶されているプログラム８９に従って、後述する各処理を実行する。
【００２６】
操作部８４は、キーボードやマウス、操作キーやタッチパネルなどの入力デバイス等と、入力デバイス等を内部バス８０に接続するインタフェース装置から構成されている。操作部８４は、ユーザの指示を入力させる機能を備える。
【００２７】
表示部８５は、ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）または有機ＥＬ（Ｅｌｅｃｔｒｏ  Ｌｕｍｉｎｅｓｃｅｎｃｅ）等から構成されている。表示部８５は、各データや情報等を表示する。
【００２８】
続いて、図１に示す各装置の機能ブロックについて説明する。暗号化制御装置１は、図３に示すように、鍵特定値判別部１１０と、暗号化判別部１２０と、復号化判別部１３０と、鍵特定値ＤＢ１４０と、を備え、データを暗号化または復号化するか否かを判別する。
【００２９】
鍵特定値ＤＢ１４０は、外部記憶部８３に備えられ、図４（Ａ）に示すように、暗号化対象データの情報や、暗号化または復号化する際に用いられる鍵を一意に特定する鍵特定値が記憶される。鍵特定値とは、例えば、鍵の値そのものではなく、鍵の値から求められる難読な値であり、鍵を特定することができる値である。また、暗号化対象データの情報とは、格納するデータのうちで暗号化するデータを特定する情報であり、例えば、データの種類や格納領域等である。
【００３０】
鍵特定値判別部１１０、暗号化判別部１２０、復号化判別部１３０は、プログラム８９により提供され、制御部８１及び主記憶部８２が協働して動作することで実現される機能部である。
【００３１】
鍵特定値判別部１１０は、ＤＢ暗号化装置２から送信される後述する鍵登録判別要求に従って、鍵特定値が登録済みか否かを判別し、未登録の場合は、鍵登録判別要求を基に、鍵特定値を鍵特定値ＤＢ１４０に記憶する。
【００３２】
暗号化判別部１２０は、鍵特定値ＤＢ１４０に記憶されている暗号化対象データの情報を参照し、データを格納する際に、データを暗号化するか否かを判別し、暗号化する場合はＤＢ暗号化装置２にデータの暗号化を依頼し、暗号化が不要な場合はＤＢ制御装置３にデータの格納を依頼する。
【００３３】
復号化判別部１３０は、鍵特定値ＤＢ１４０に記憶されている暗号化対象データの情報を参照し、参照するデータを復号化する必要があるか否かを判別し、復号化する必要がある場合はＤＢ暗号化装置２にデータの復号化を依頼し、復号化が不要な場合はアプリ制御装置４を介してクライアント装置５に参照したデータを送信する。
【００３４】
ＤＢ暗号化装置２は、鍵登録部２１０、暗号化部２２０、復号化部２３０、鍵保管ＤＢ２４０から構成され、鍵の保管や、データの暗号化または復号化を行う。
【００３５】
鍵保管ＤＢ２４０は、ＤＩＭＭ（Ｄｕａｌ  Ｉｎｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）やＳＩＭＭ（Ｓｉｎｇｌｅ  Ｉｎｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）等の揮発性メモリから構成され、図４（Ｂ）に示すように、暗号化、復号化に必要な鍵値とその鍵値から一意に求められた鍵特定値を関連付けて記憶する。鍵保管ＤＢ２４０に記憶されているデータは、揮発性メモリへの電力供給の停止によって全て消去される。
【００３６】
鍵登録部２１０、暗号化部２２０、復号化部２３０は、プログラム８９により提供され、制御部８１及び主記憶部８２が協働して動作することで実現される機能部である。
【００３７】
鍵登録部２１０は、鍵を特定する鍵特定値を生成し、鍵の値と、鍵特定値を関連付けて鍵保管ＤＢ２４０に記憶する。本実施形態では、鍵特定値には、ハッシュ値を使用する。ハッシュ値は、ＳＨＡ１（Ｓｅｃｕｒｅ  Ｈａｓｈ  Ａｌｇｏｒｉｔｈｍ）等の一方向ハッシュ関数を使用して求めるが、これに限られず、ＭＤ５（Ｍｅｓｓａｇｅ  Ｄｉｇｅｓｔ  Ａｌｇｏｒｉｔｈｍ）を使用しても良く、ＨＭＡＣ（Ｋｅｙｅｄ−Ｈａｓｈｉｎｇ  ｆｏｒ  Ｍｅｓｓａｇｅ  Ａｕｔｈｅｎｔｉｃａｔｉｏｎ  ｃｏｄｅ）と組み合わせて使用しても良い。
【００３８】
暗号化部２２０は、暗号化制御装置１から受信した暗号化要求に従い、鍵保管ＤＢ２４０を参照して鍵特定値から暗号鍵を取得し、データの暗号化を行う。
【００３９】
復号化部２３０は、暗号化制御装置１から受信した復号化要求に従い、鍵保管ＤＢ２４０を参照して鍵特定値から復号鍵を取得し、データの復号化を行う。
【００４０】
ＤＢ制御装置３は、データ格納部３１０、データ抽出部３２０、データ保管ＤＢ３３０から構成され、各データを記憶する。
【００４１】
データ保管ＤＢ３３０は、外部記憶部８３に備えられ、図４（Ｃ）に示すように、各データを記憶する。データ保管ＤＢ３３０は、暗号化されたデータに限られず、暗号化されていない、または暗号化する必要のないデータも記憶する。
【００４２】
データ格納部３１０とデータ抽出部３２０は、プログラム８９により提供され、制御部８１及び主記憶部８２が協働して動作することで実現される機能部である。
【００４３】
データ格納部３１０は、暗号化制御装置１から送信された後述するデータ格納要求に従ってデータを格納する。
【００４４】
データ抽出部３２０は、暗号化制御装置１から送信された後述するデータ参照要求に従ってデータを抽出し、抽出したデータを暗号化制御装置１に返却する。
【００４５】
アプリ制御装置４は、ネットワーク７を介してユーザにサービスを提供するプログラムを有する装置であり、クライアント装置５から暗号化システム１０に対して送信される要求や情報を受信する。また、アプリ制御装置４は、外部記憶部８３にデータ識別子記憶部４１０を備え、データ識別子記憶部４１０は、データにデータ集合の識別子（例えば、テーブル名やその列名等）を記憶している。アプリ制御装置４は、クライアント装置５との接続を確立し、クライアント装置５から送信された各要求を処理する。
【００４６】
クライアント装置５は、ユーザが操作するサーバであり、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）や、携帯電話、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）、キオスク端末、固定電話等である。
【００４７】
鍵クライアント装置６は、ユーザが操作することで鍵の生成、保存、暗号化システム１０への鍵の配送を行うための装置であり、ＰＣや、携帯電話、ＰＤＡ、キオスク端末、固定電話等である。
【００４８】
以上が、ＤＢ暗号化システム１００の構成である。
【００４９】
続いて、ＤＢ暗号化システム１００の動作について図５乃至７に示すフローチャートを参照して説明する。初めに、ユーザがデータ格納の事前準備として、暗号化システム１０に鍵を保管する際の動作について説明する。
【００５０】
ユーザは、鍵クライアント装置６を操作して鍵を生成し、生成した鍵と、どのデータを暗号化して保存しておくか、等の暗号化対象情報を作成する。暗号化対象情報は、データ集合の識別子、データ集合の特定の領域等であり、例えば、データ保管ＤＢ３３０に記憶しているテーブル名Ａ、そのテーブルの列名Ｂ等であり、これらの暗号化対象情報の場合、Ａテーブルの列名Ｂに該当するデータは暗号化して格納されることとなる。
【００５１】
次に、鍵クライアント装置６は、ＤＢ暗号化装置２との接続を確立する。ＤＢ暗号化装置２の鍵登録部２１０は、鍵クライアント装置６との接続が確立すると、図５に示す鍵登録処理を開始する。
【００５２】
鍵登録部２１０は、鍵クライアント装置６との接続を確立すると、クライアントが正当なユーザであることを判別するために、クライアント認証処理を行う（Ｓ１００）。クライアント認証処理は、例えば、ＩＤ／Ｐａｓｓｗｏｒｄ認証によって行われるが、これに限られず、鍵クライアント装置６に格納された機器ＩＤや、認証鍵を使用した機器認証等で行っても良い。なお、クライアント認証処理の結果、不当なユーザであると判別した場合、ＤＢ暗号化装置２は、鍵クライアント装置６との接続を切断する（図示せず）。
【００５３】
鍵クライアント装置６は、ＤＢ暗号化装置２に認証されると、鍵登録要求を送信する。鍵登録要求は、生成した鍵と、暗号化対象情報と共に送信される。
【００５４】
ＤＢ暗号化装置２の鍵登録部２１０は、鍵登録要求を受信すると（Ｓ１０１）、受信した鍵を基に鍵特定値を求める（Ｓ１０２）。鍵特定値は、鍵値をＳＨＡ１の一方向ハッシュ関数に適用することで求められる。
【００５５】
次に、鍵登録部２１０は、鍵登録判別要求を暗号化制御装置１に対して送信する（Ｓ１０３）。鍵登録判別要求は、求めた鍵特定値と、暗号化対象情報と共に送信される。
【００５６】
暗号化制御装置１の鍵特定値判別部１１０は、上述の鍵登録判別要求を受信すると、鍵特定値判別処理を開始する。
【００５７】
鍵特定値判別部１１０は、ＤＢ暗号化装置２から鍵登録判別要求を受信すると（Ｓ１０４）、鍵登録判別要求に従って、暗号化対象情報が鍵特定値ＤＢ１４０に記憶されているか否かを判別する（Ｓ１０５）。例えば、暗号化対象情報がテーブル名Ａ、列名Ｂである場合、鍵特定値判別部１１０は、テーブル名Ａ、列名Ｂ、これらに関連付けられている鍵特定値が鍵特定値ＤＢ１４０に記憶されているか否かを判別する。
【００５８】
記憶されていない場合、鍵特定値判別部１１０は、鍵特定値ＤＢ１４０に、暗号化対象情報と鍵特定値を関連付けて記憶し（Ｓ１０６）、登録完了として鍵登録要求に対する結果をＤＢ暗号化装置２に送信し（Ｓ１１０）、処理を終了する。
【００５９】
記憶されている場合、鍵特定値判別部１１０は、記憶されている鍵特定値が、鍵登録要求に含まれる鍵特定値と一致しているか否かを判別する（Ｓ１０７）。
【００６０】
鍵特定値が一致している場合、鍵特定値判別部１１０は、登録済みとして鍵登録要求に対する結果をＤＢ暗号化装置２に送信し（Ｓ１０８）、処理を終了する。鍵特定値が不一致である場合、鍵特定値判別部１１０は、不一致として鍵登録要求に対する結果をＤＢ暗号化装置２に送信し（Ｓ１０９）、処理を終了する。
【００６１】
次に、ＤＢ暗号化装置２の鍵登録部２１０は、暗号化制御装置１から鍵登録要求に対する結果を受信すると（Ｓ１１１）、その結果を判別する（Ｓ１１２）。
【００６２】
結果が不一致である場合、鍵登録部２１０は、鍵クライアント装置６にエラーを通知し（Ｓ１１４）、不一致以外（登録済み、登録完了）である場合、鍵登録部２１０は、鍵保管ＤＢ２４０に、鍵と鍵特定値を関連付けて記憶し（Ｓ１１３）、鍵クライアント装置６から受信した鍵登録要求に対する結果を送信し（Ｓ１１５）、処理を終了する。
【００６３】
以上が、ユーザが事前に暗号化システム１０に鍵を保管する際の動作である。
【００６４】
続いて、ユーザが暗号化システム１０にデータを格納する際の動作について説明する。
【００６５】
クライアント装置５を操作するユーザは、暗号化システム１０に対して、ネットワーク７を介してデータ格納要求を送信する。データ格納要求は、格納するデータと共に送信される。例えば、氏名Ａ、住所Ｂ、電話番号Ｃ等のデータである。
【００６６】
アプリ制御装置４は、クライアント装置５からデータ格納要求を受信すると、アプリケーション処理を実行し、格納するデータに対応するデータ集合の識別子を特定し、データ格納要求を求めたデータ集合の識別子と共に、暗号化制御装置１に送信する。アプリケーション処理とは、例えば、氏名Ａ、住所Ｂ、電話番号Ｃのデータを格納する場合、データ識別子記憶部４１０を参照し、格納に最適なテーブル名Ｄを求める処理である。
【００６７】
暗号化制御装置１の暗号化判別部１２０は、アプリ制御装置４からデータ格納要求を受信すると、図６に示す暗号化判別処理を開始する。
【００６８】
暗号化判別部１２０は、アプリ制御装置４からデータ格納要求を受信し（Ｓ２００）、データ格納要求と共に受信したデータ集合の識別子が鍵特定値ＤＢ１４０に記憶されているか否かを判別する（Ｓ２０１）。
【００６９】
鍵特定値ＤＢ１４０に該当するデータ集合の識別子が記憶されていない場合、暗号化判別部１２０は、アプリ制御装置４にデータ格納要求に対する結果としてエラーを送信する（Ｓ２０２）。また、この時の動作はこれに限られず、エラーを送信せずに新規にデータ集合の識別子（例えば、新規のテーブル）を生成するようにしても良い。
【００７０】
鍵特定値ＤＢ１４０にデータ集合の識別子が記憶されている場合、暗号化判別部１２０は、その識別子に対応する暗号化対象情報と格納するデータとを比較し、暗号化が必要か否かを判別する（Ｓ２０３）。例えば、格納するデータが、テーブル名Ｄ、氏名Ａ、住所Ｂ、電話番号Ｃであり、鍵特定値ＤＢ１４０にテーブル名Ｄ、列名「住所」に関連付けられた鍵特定値Ｅが記憶されている場合、住所Ｂの暗号化が必要であると判別する。
【００７１】
暗号化が必要であると判別した場合、暗号化判別部１２０は、該当した暗号化対象情報に関連付けられている鍵特定値を取得し、ＤＢ暗号化装置２に暗号化要求を送信する（Ｓ２０４）。なお、暗号化要求は、鍵特定値、暗号化対象データと共に送信される。
【００７２】
暗号化が不要であると判別した場合、暗号化判別部１２０は、ＤＢ制御装置３にデータ格納要求を送信する（Ｓ２１０）。
【００７３】
ＤＢ暗号化装置２の暗号化部２２０は、上述の暗号化要求を受信すると暗号化処理を開始する。
【００７４】
暗号化部２２０は、暗号化要求を受信すると（Ｓ２０５）、暗号化要求に含まれる鍵特定値を基に、鍵保管ＤＢ２４０から暗号鍵を取得する（Ｓ２０６）
【００７５】
次に、暗号化部２２０は、暗号化処理を行う（Ｓ２０７）。暗号化処理とは、暗号化要求に含まれる暗号化対象データを、鍵保管ＤＢ２４０から取得した暗号鍵を使用して暗号化する処理である。本実施形態では、暗号化部２２０は、ＡＥＳ（Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）アルゴリズムを使用して暗号化処理を行うが、これに限られず、ＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）やＴ−ＤＥＳ（Ｔｒｉｐｌｅ  Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）、Ｃａｍｅｌｌｉａアルゴリズムを使用しても良い。
【００７６】
暗号化部２２０は、暗号化処理が終了すると、暗号化制御装置１に対して、暗号化の結果、すなわち、暗号化後のデータを送信し（Ｓ２０８）、処理を終了する。
【００７７】
次に、暗号化制御装置１の暗号化判別部１２０は、ＤＢ暗号化装置２から暗号化結果を受信すると（Ｓ２０９）、ＤＢ制御装置３にデータ格納要求を送信する（Ｓ２１０）。データ格納要求は、テーブル名と、格納するデータと共に送信され、暗号化した場合は暗号化データも共に送信される。
【００７８】
ＤＢ制御装置３のデータ格納部３１０は、上述のデータ格納要求を暗号化制御装置１から受信するとデータ格納処理を開始する。
【００７９】
データ格納部３１０は、データ格納要求を受信すると（Ｓ２１１）、データ格納要求を基に、データ保管ＤＢ３３０に各データを記憶する（Ｓ２１２）。例えば、格納するデータが、テーブル名Ｄ、氏名Ａ、住所Ｘ、電話番号Ｃである場合、データ格納部３１０は、データ保管ＤＢ３３０のＤテーブルに、氏名Ａ、住所Ｘ、電話番号Ｃ、を記憶する。
【００８０】
データ格納部３１０は、データを格納すると、暗号化制御装置１にデータ格納要求の結果を送信し（Ｓ２１３）、処理を終了する。
【００８１】
次に、暗号化制御装置１の暗号化判別部１２０は、ＤＢ制御装置３からデータ格納要求に対する結果を受信すると（Ｓ２１４）、そのデータ格納要求に従って、アプリ制御装置４に、データ格納要求に対する結果を送信し（Ｓ２１５）、処理を終了する。
【００８２】
以上が、ユーザが暗号化システム１０にデータを格納する際の動作である。
【００８３】
続いて、ユーザが暗号化システム１０に格納しているデータを参照する際の動作について説明する。
【００８４】
クライアント装置５を操作するユーザは、暗号化システム１０に対して、ネットワーク７を介してデータ参照要求を送信する。データ参照要求は、参照するデータの情報と共に送信される。例えば、電話番号Ｃ等のデータである。
【００８５】
アプリ制御装置４は、クライアント装置５からデータ参照要求を受信すると、アプリケーション処理を実行し、参照するデータに対応するデータ集合の識別子を特定し、データ参照要求を求めたデータ集合の識別子と共に、暗号化制御装置１に送信する。アプリケーション処理とは、例えば、電話番号Ｃのデータを参照する場合、データ識別子記憶部４１０を参照し、参照に最適なテーブル名Ｄを求める処理である。
【００８６】
暗号化制御装置１の復号化判別部１３０は、アプリ制御装置４からデータ参照要求を受信すると、図７に示す復号化判別処理を開始する。
【００８７】
復号化判別部１３０は、アプリ制御装置４からデータ参照要求を受信し（Ｓ３００）、ＤＢ制御装置３にデータ参照要求を送信する（Ｓ３０１）。このデータ参照要求は、アプリ制御装置４から受信したデータ参照要求とデータ集合の識別子及び参照するデータと共に送信される。例えば、テーブル名Ｄ、電話番号Ｃ等である。
【００８８】
ＤＢ制御装置３のデータ抽出部３２０は、上述のデータ参照要求を暗号化制御装置１から受信するとデータ抽出処理を開始する。
【００８９】
データ抽出部３２０は、データ参照要求を受信すると（Ｓ３０２）、データ参照要求を基に、データ保管ＤＢ３３０に記憶されているデータを取得する（Ｓ３０３）。例えば、テーブル名Ｄ、電話番号Ｃのデータを参照する場合、Ｄテーブルから、電話番号Ｃのデータを含むデータ群、氏名Ａ、住所Ｘ、電話番号Ｃを取得する。
【００９０】
データ抽出部３２０は、データを取得すると、暗号化制御装置１にデータ参照要求の結果、すなわち、取得した各データを送信し（Ｓ３０４）、処理を終了する。
【００９１】
次に、暗号化制御装置１の復号化判別部１３０は、ＤＢ制御装置３からデータ参照要求に対する結果を受信すると（Ｓ３０５）、データ参照要求と共に送信された各データと、鍵特定値ＤＢ１４０に記憶されている暗号化対象情報とを比較し、復号化が必要か否かを判別する（Ｓ３０６）。例えば、参照結果のデータが、Ｄテーブル、氏名Ａ、住所Ｘ、電話番号Ｃ、である場合、暗号化されている住所Ｘの復号化が必要であると判別する。
【００９２】
復号化が必要であると判別した場合、復号化判別部１３０は、ＤＢ暗号化装置２に復号化要求を送信し（Ｓ３０７）、復号化が不要であると判別した場合、復号化判別部１３０は、アプリ制御装置４に参照結果のデータを送信し（Ｓ３１３）、処理を終了する。なお、復号化要求は、参照結果のデータ（暗号化データ）と、そのデータに対応する鍵特定値と共に送信される。
【００９３】
ＤＢ暗号化装置２の復号化部２３０は、上述の復号化要求を受信すると復号化処理を開始する。
【００９４】
復号化部２３０は、復号化要求を受信すると（Ｓ３０８）、復号化要求と共に送信された鍵特定値を基に、鍵保管ＤＢ２４０から復号鍵を取得する（Ｓ３０９）
【００９５】
次に、復号化部２３０は、復号化処理を行う（Ｓ３１０）。復号化処理とは、復号化要求と共に送信された復号化対象データを、鍵保管ＤＢ２４０から取得した復号鍵を使用して復号化する処理である。
【００９６】
復号化部２３０は、復号化処理が終了すると、暗号化制御装置１に対して、復号化の結果、すなわち、復号化後のデータ（平文）を送信し（Ｓ３１１）、処理を終了する。
【００９７】
次に、暗号化制御装置１の復号化判別部１３０は、ＤＢ暗号化装置２から復号化結果を受信すると（Ｓ３１２）、アプリ制御装置４に、データ参照要求に対する結果、すなわち参照データを送信し（Ｓ３１３）、処理を終了する。アプリ制御装置４に送信する参照データは、例えば、氏名Ａ、住所Ｂ、電話番号Ｃ、である。
【００９８】
以上が、ユーザが暗号化システム１０に格納しているデータを参照する際の動作である。
【００９９】
続いて、理解を容易にするため、ＤＢ暗号化システム１００の具体的な動作について説明する。本具体例では、ＤＢ暗号化装置２がシステム障害による電力供給停止により鍵が消去された場合について、図８を参照して説明する。
【０１００】
暗号化制御装置１は、図８（Ａ）に示すように、鍵特定値ＤＢ１４０に鍵特定値Ｄ２と暗号化対象情報Ａを関連付けて記憶し、ＤＢ暗号化装置２は、図８（Ｂ）に示すように、鍵保管ＤＢ２４０に鍵Ｋ２と鍵特定値Ｄ２とを関連付けて記憶している。
【０１０１】
ＤＢ暗号化装置２においてシステム障害が発生し、電力供給が停止すると、鍵保管ＤＢ２４０は揮発性メモリで構成されているため、鍵保管ＤＢ２４０に記憶されていた各データは、図８（Ｃ）に示すように、全て消去される
【０１０２】
ユーザは、システム障害によって鍵が未登録状態となってしまったため、鍵クライアント装置６を操作して改めて鍵を登録する必要がある。ここで、まず、ユーザが鍵Ｋ２’（システム障害前と異なる鍵）を生成した場合について説明する。
【０１０３】
ユーザは鍵クライアント装置６を操作し、システム障害前の鍵Ｋ２と異なる鍵Ｋ２’を生成し、鍵登録要求を、鍵Ｋ２’と暗号化対象情報Ａと共にＤＢ暗号化装置２に送信する。
【０１０４】
ＤＢ暗号化装置２は鍵登録要求を受信すると、鍵Ｋ２’から鍵特定値Ｄ２’を求め、鍵登録判別要求を、暗号化対象情報Ａと鍵特定値Ｄ２’と共に暗号化制御装置１に送信する。
【０１０５】
暗号化制御装置１は、鍵登録判別要求を受信すると、共に受信した暗号化対象情報Ａが、鍵特定値ＤＢ１４０に記憶されているか否かを判別する。図８（Ａ）に示すように、暗号化対象情報Ａは登録されているため、暗号化対象情報Ａに関連付けられている鍵特定値Ｄ２と、鍵登録判別要求と共に受信した鍵特定値Ｄ２’との比較をする。
【０１０６】
鍵特定値Ｄ２と鍵特定値Ｄ２’は異なる値であるため、暗号化制御装置１は、結果を不一致としてＤＢ暗号化装置２を介して鍵クライアント装置６に送信する。すなわち、システム障害前と異なる鍵は登録されないこととなる。
【０１０７】
次に、ユーザが鍵Ｋ２（システム障害前と等しい鍵）を生成した場合について説明する。
【０１０８】
ユーザは鍵クライアント装置６を操作し、システム障害前の鍵Ｋ２と等しい鍵Ｋ２を生成し、鍵登録要求を、鍵Ｋ２と暗号化対象情報Ａと共にＤＢ暗号化装置２に送信する。
【０１０９】
ＤＢ暗号化装置２は鍵登録要求を受信すると、鍵Ｋ２から鍵特定値Ｄ２を求め、鍵登録判別要求を、暗号化対象情報Ａと鍵特定値Ｄ２と共に暗号化制御装置１に送信する。
【０１１０】
暗号化制御装置１は、鍵登録判別要求を受信すると、共に受信した暗号化対象情報Ａが、鍵特定値ＤＢ１４０に記憶されているか否かを判別する。図８（Ａ）に示すように、暗号化対象情報Ａは登録されているため、暗号化対象情報Ａに関連付けられている鍵特定値Ｄ２と、鍵登録判別要求と共に受信した鍵特定値Ｄ２との比較をする。
【０１１１】
鍵特定値Ｄ２はどちらの値も等しいため、暗号化制御装置１は、結果を一致としてＤＢ暗号化装置２に送信する。
【０１１２】
ＤＢ暗号化装置２は、一致の結果を受信すると、図８（Ｄ）に示すように、鍵保管ＤＢ２４０に鍵Ｋ２と鍵特定値Ｄ２を関連付けて記憶する。すなわち、鍵保管ＤＢ２４０に記憶されるデータは、システム障害前と同じデータとなる。
【０１１３】
以上説明したように、本実施形態に係るＤＢ暗号化システム１００は、暗号化または復号化に使用する鍵を揮発性メモリに記憶しているため、メモリを引き抜かれても電力供給停止に伴いデータが削除されることとなり、鍵の漏洩を防ぐことができる。
【０１１４】
また、システム障害等の電力供給停止により揮発性メモリに記憶された鍵が消去された場合でも、鍵登録時に、鍵値から求めた鍵特定値と、既に記憶されている鍵特定値との比較を行うため、鍵の消去前後での鍵の整合を取ることができる。
【０１１５】
［変形例］
本発明は、上記実施形態に限定されず、種々の変形例及び応用が可能である。上記実施形態は、クラウドコンピューティングにより実現するシステムによって説明したが、これに限られず、暗号化制御装置１、ＤＢ暗号化装置２、ＤＢ制御装置３、アプリ制御装置４の各機能を、物理的に一つのシステムで実現させても良い。
【０１１６】
また、本実施形態では、鍵クライアント装置６が鍵を生成したが、これに限られず、図９に示すように、鍵クライアント装置６を通信可能なＨＳＭ９を使用して鍵を生成しても良い。この場合、ＤＢ暗号化装置２とＨＳＭ９は、事前に共通鍵を有している必要がある。
【０１１７】
上述の構成の場合、鍵クライアント装置６は、ＨＳＭ９に鍵生成要求を送信し、ＨＳＭ９は、鍵生成要求を受信すると鍵Ｋ２を生成する。さらにＨＳＭ９は、生成した鍵Ｋ２を、ＤＢ暗号化装置２との共通鍵Ｋｍを使用して暗号化し、暗号化した鍵Ｋｓを鍵クライアント装置６に送信する。
【０１１８】
鍵クライアント装置６は、ＤＢ暗号化装置２に、暗号化された鍵Ｋｓと共に鍵登録要求を送信する。ＤＢ暗号化装置２は、鍵登録要求を受信すると、暗号化された鍵ＫｓをＨＳＭ９との共通鍵Ｋｍで復号化し、ＨＳＭ９が生成した鍵Ｋ２を取得する。その後の動作は、上述までで説明した動作と同等となる。
【０１１９】
このような構成にすることで、ＨＳＭ９が鍵自体を暗号化して生成するため、鍵クライアント装置６での鍵の漏洩を防ぐことができる。
【０１２０】
また、本実施形態では、共通暗号鍵方式を使用してデータの暗号化を実施したが、これに限られず、公開暗号鍵方式を使用してデータを暗号化しても良い。この場合、鍵保管ＤＢ２４０には、公開鍵、秘密鍵、の二つの鍵値が記憶される。
【０１２１】
また、本実施形態では、鍵クライアント装置６が鍵を生成し、クライアント装置５がデータの格納、参照を要求する構成で説明したが、これに限られず、一つのクライアント装置５で鍵の生成、保管を実施しても良い。
【０１２２】
また、本実施形態では、暗号化対象データを鍵クライアント装置６によって事前に登録したが、これに限られず、予め暗号化対象のデータを記憶しても良い。例えば、予め暗号化制御装置１が「住所」「顧客番号」等のデータを記憶し、「住所」「顧客番号」のデータを格納する際は、暗号化するようにしても良い。
【０１２３】
また、本実施形態では、ハッシュ関数から鍵特定値を求めたが、これに限られず、新規の鍵を記憶する毎に識別子を１ずつ増加させ、この識別子を鍵特定値としても良く、ユーザ識別子を鍵特定値としても良い。
【０１２４】
また、本実施形態に係るＤＢ暗号化システム１００を構成する暗号化制御装置１、ＤＢ暗号化装置２、ＤＢ制御装置３、アプリ制御装置４は、専用のシステムによらず、通常のコンピュータシステムを用いて実現可能である。たとえば、上述の動作を実行するためのプログラム８９を、コンピュータが読み取り可能な記録媒体（フレキシブルディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ等）に格納して配布し、このプログラム８９をコンピュータにインストールすることにより、上述の処理を実行する暗号化制御装置１、ＤＢ暗号化装置２、ＤＢ制御装置３、アプリ制御装置４を構成してもよい。また、インターネット等の通信ネットワーク上のサーバ装置が有する記憶装置にこのプログラム８９を格納しておき、通常のコンピュータシステムがダウンロード等することで暗号化制御装置１、ＤＢ暗号化装置２、ＤＢ制御装置３、アプリ制御装置４を構成してもよい。
【０１２５】
また、暗号化制御装置１、ＤＢ暗号化装置２、ＤＢ制御装置３、アプリ制御装置４の機能を、ＯＳ（オペレーティングシステム）とアプリケーションプログラムの分担、またはＯＳとアプリケーションプログラムとの協働により実現する場合などには、アプリケーションプログラム部分のみを記録媒体や記憶装置に格納してもよい。
【０１２６】
また、搬送波にプログラム８９を重畳し、通信ネットワークを介して配信することも可能である。たとえば、通信ネットワーク上の掲示板（ＢＢＳ：Ｂｕｌｌｅｔｉｎ  Ｂｏａｒｄ  Ｓｙｓｔｅｍ）にこのプログラム８９を掲示し、ネットワークを介してプログラム８９を配信してもよい。そして、このプログラム８９を起動し、ＯＳの制御下で、他のアプリケーションプログラムと同様に実行することにより、上述の処理を実行できるように構成してもよい。
【０１２７】
なお、クライアント装置５、鍵クライアント装置６についても、図２に示すハードウェア構成を採用することが可能であり、上述の説明と同様に、専用のシステムによらず、通常のコンピュータシステムを用いて実現可能である。
【符号の説明】
【０１２８】
１００    ＤＢ暗号化システム
１０      暗号化システム
１        暗号化制御装置
１１０    鍵特定値判別部
１２０    暗号化判別部
１３０    復号化判別部
１４０    鍵特定値ＤＢ
２        ＤＢ暗号化装置
２１０    鍵登録部
２２０    暗号化部
２３０    復号化部
２４０    鍵保管ＤＢ
３        ＤＢ制御装置
３１０    データ格納部
３２０    データ抽出部
３３０    データ保管ＤＢ
４        アプリ制御装置
４１０    データ識別子記憶部
５        クライアント装置
６        鍵クライアント装置
７        ネットワーク
８０      内部バス
８１      制御部
８２      主記憶部
８３      外部記憶部
８４      操作部
８５      表示部
８６      送受信部
８９      プログラム
９        ＨＳＭ
【図１】
0005620805.tif 000002
【図２】
0005620805.tif 000003
【図３】
0005620805.tif 000004
【図４】
0005620805.tif 000005
【図５】
0005620805.tif 000006
【図６】
0005620805.tif 000007
【図７】
0005620805.tif 000008
【図８】
0005620805.tif 000009
【図９】
0005620805.tif 000010