(57)【特許請求の範囲】
【請求項１】
データをブロックごとに暗号化するブロック暗号方式で当該データを暗号化する装置であって、
暗号化対象のデータである第１のデータを取得する第１の取得部と、
前記ブロック暗号方式で用いる暗号化鍵を取得する第２の取得部と、
前記ブロック暗号方式で用いる初期化ベクトルを生成する第１の生成部と、
前記第１の取得部により取得された前記第１のデータを、前記第２の取得部により取得された前記暗号化鍵と、前記第１の生成部により生成された前記初期化ベクトルとを用いて、前記ブロック暗号方式で暗号化することにより、第２のデータを生成する第２の生成部と、
前記第１の生成部により生成された前記初期化ベクトルを、埋め込み規則に従って、前記第２の生成部により生成された前記第２のデータに埋め込む埋め込み部と、
前記第１の取得部が前記第１のデータを取得するごとに前記埋め込み規則を決定する決定部と、
前記第１の取得部により取得された前記第１のデータと、前記決定部により決定された前記埋め込み規則及び当該埋め込み規則の決定方法の何れか一方との対応関係を記憶する記憶部と
を含む、装置。
【請求項２】
前記決定部は、前記第２の生成部により生成された前記第２のデータの特定の部分に基づいて、当該第２のデータの当該特定の部分以外の他の部分に対する前記埋め込み規則を決定する、請求項１の装置。
【請求項３】
データをブロックごとに暗号化するブロック暗号方式で当該データを暗号化した状態で格納するデータベースを保持する装置であって、
前記ブロック暗号方式で用いる暗号化鍵を記憶する第１の記憶部と、
前記データベースへの第１のデータの格納要求を行う格納要求装置から、当該第１のデータを受信する受信部と、
前記ブロック暗号方式で用いる初期化ベクトルを生成する第１の生成部と、
前記受信部により受信された前記第１のデータを、前記第１の記憶部に記憶された前記暗号化鍵と、前記第１の生成部により生成された前記初期化ベクトルとを用いて、前記ブロック暗号方式で暗号化することにより、第２のデータを生成する第２の生成部と、
前記第１の生成部により生成された前記初期化ベクトルを、埋め込み規則に従って、前記第２の生成部により生成された前記第２のデータに埋め込むことにより、第３のデータを生成する第３の生成部と、
前記第３の生成部により生成された前記第３のデータを前記データベースに格納する格納部と、
前記データベースからの前記第１のデータの検索要求を行う検索要求装置からの当該検索要求に応じて、前記データベースから前記第３のデータを取得する取得部と、
前記取得部により取得された前記第３のデータを、前記埋め込み規則に従って、前記初期化ベクトルと前記第２のデータとに分離する分離部と、
前記第１の記憶部に記憶された前記暗号化鍵と、前記分離部による分離で得られた前記初期化ベクトルとを用いて、前記分離部による分離で得られた前記第２のデータを復号することにより、前記第１のデータを復元する復元部と、
前記復元部により復元された前記第１のデータを前記検索要求装置に送信する送信部と、
前記受信部が前記第１のデータを受信するごとに前記埋め込み規則を決定する決定部と、
前記受信部により受信された前記第１のデータと、前記決定部により決定された前記埋め込み規則及び当該埋め込み規則の決定方法の何れか一方との対応関係を記憶する第２の記憶部と
を含む、装置。
【請求項４】
データをブロックごとに暗号化するブロック暗号方式でコンピュータが当該データを暗号化する方法であって、
前記コンピュータの第１の取得部が、暗号化対象のデータである第１のデータを取得するステップと、
前記コンピュータの第２の取得部が、前記ブロック暗号方式で用いる暗号化鍵を取得するステップと、
前記コンピュータの第１の生成部が、前記ブロック暗号方式で用いる初期化ベクトルを生成するステップと、
前記コンピュータの第２の生成部が、前記第１のデータを前記暗号化鍵と前記初期化ベクトルとを用いて前記ブロック暗号方式で暗号化することにより、第２のデータを生成するステップと、
前記コンピュータの第２の埋め込み部が、前記初期化ベクトルを埋め込み規則に従って前記第２のデータに埋め込むステップと、
前記コンピュータの決定部が、前記第１の取得部が前記第１のデータを取得するごとに前記埋め込み規則を決定するステップと、
前記コンピュータの記憶部が、前記第１の取得部により取得された前記第１のデータと、前記決定部により決定された前記埋め込み規則及び当該埋め込み規則の決定方法の何れか一方との対応関係を記憶するステップと
を含む、方法。
【請求項５】
データをブロックごとに暗号化するブロック暗号方式で当該データを暗号化する装置として、コンピュータを機能させるプログラムであって、
前記コンピュータを、
暗号化対象のデータである第１のデータを取得する第１の取得部と、
前記ブロック暗号方式で用いる暗号化鍵を取得する第２の取得部と、
前記ブロック暗号方式で用いる初期化ベクトルを生成する第１の生成部と、
前記第１の取得部により取得された前記第１のデータを、前記第２の取得部により取得された前記暗号化鍵と、前記第１の生成部により生成された前記初期化ベクトルとを用いて、前記ブロック暗号方式で暗号化することにより、第２のデータを生成する第２の生成部と、
前記第１の生成部により生成された前記初期化ベクトルを、埋め込み規則に従って、前記第２の生成部により生成された前記第２のデータに埋め込む埋め込み部と、
前記第１の取得部が前記第１のデータを取得するごとに前記埋め込み規則を決定する決定部と、
前記第１の取得部により取得された前記第１のデータと、前記決定部により決定された前記埋め込み規則及び当該埋め込み規則の決定方法の何れか一方との対応関係を記憶する記憶部と
して機能させる、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを暗号化する装置及び方法に関する。特に、本発明は、データをブロックごとに暗号化するブロック暗号方式でデータを暗号化する装置及び方法に関する。
【背景技術】
【０００２】
データの暗号化は、平文を暗号化処理して判読不能な暗号文にすることにより行われる。
例えば、共通鍵暗号化方式でデータを暗号化する場合を想定すると、暗号化のアルゴリズムにも依存するが、平文の他に、暗号化鍵及び初期化ベクトル（Initialization Vector；以下、「ＩＶ」という）を入力として、暗号化処理は行われる。尚、ＩＶには擬似乱数が用いられる。
特に、共通鍵暗号化方式のうちのブロック暗号方式では、平文を一定の長さのブロックに分割し、あるブロックの暗号化を、前段のブロックの暗号化結果を利用して行う。但し、１つ目のブロックには前段のブロックが存在していないため、前段のブロックの暗号化結果の代わりに、上記ＩＶは利用される。
【０００３】
ここで、ＩＶを用いてデータを暗号化する技術は、公報記載の技術としても知られている（例えば、特許文献１〜４参照）。
特許文献１は、現在の番組のストリーム暗号データを復号するための鍵の識別子を、ストリーム暗号アルゴリズムを初期化させるための初期化パケットに格納し、該初期化パケットをストリームに挿入すると共に、初期化パケットのうち所定の初期化パケットに次の番組以降のストリーム暗号データを復号するための鍵の識別子を格納する技術を開示する。ここで、初期化パケットは、ストリーム暗号アルゴリズムの初期化に用いられる初期値（ＩＶ：初期化ベクター）を格納するものとされている。
【０００４】
特許文献２は、第１の端末が、暗号化処理部において、配信データ生成部で作成した配信データと、鍵情報と初期値から生成した鍵ストリームのそれぞれのデータを先頭から固定長に分割し、分割したデータと対応する分割した鍵ストリームで排他的論理和を算出して第２の端末に送出し、第２の端末が、復号化処理部において、受信したデータと、復号化するための鍵情報と初期値から生成した鍵ストリームのそれぞれのデータを先頭から固定長に分割し、分割した受信データと対応する分割した鍵ストリームで排他的論理和を算出して配信データを得る技術を開示する。
【０００５】
特許文献３は、初期化ベクトルを生成する初期化ベクトル生成部と、生成された初期化ベクトルを用いて、ストリーム暗号モジュールを初期化し、該初期化されたストリーム暗号モジュールを用いて、ストリームデータに対してストリーム暗号化を施す暗号化部と、暗号化されたストリーム暗号データを格納している暗号化パケットを生成する暗号化パケット生成部と、初期化ベクトルと、該初期化ベクトルの次の初期化ベクトルが送出される時間情報と、を格納している初期化パケットを生成する初期化パケット生成部と、初期化パケットおよび暗号化パケットをブロードキャスト／マルチキャストにより送信する送信部とを備える送信装置を開示する。
【０００６】
特許文献４は、情報の部分を指定する情報と、これら各部分において、各部分を所定のデータ量で分割した記録単位の番号を指定する情報を含むライセンスと、記録単位の番号から生成した暗号化用情報で暗号化した情報とを記録する技術を開示する。この特許文献４では、暗号化用情報として、暗号鍵とイニシャルベクターが必要とされ、暗号化用情報の作成方法としては、例えば、（Ａ）イニシャルベクター生成用情報と暗号鍵をライセンスに格納しておき、番号とイニシャルベクター生成用情報からイニシャルベクターを生成する、（Ｂ）暗号鍵生成用情報とイニシャルベクターをライセンスに格納しておき、番号と暗号鍵生成用情報から暗号鍵を生成する、が考えられている。
【０００７】
また、ＩＶを用いる技術としては、特許文献５〜１１の技術もある。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００７−３１１９３６号公報
【特許文献２】特開２０１１−１１４５９４号公報
【特許文献３】特開２００８−１１１８１号公報
【特許文献４】特開２００６−３１８５８９号公報
【特許文献５】特開２０１０−２３１７７８号公報
【特許文献６】特表２００９−５１８９３２号公報
【特許文献７】特表２００９−５１０６０６号公報
【特許文献８】特表２００９−５０５５０６号公報
【特許文献９】特表２００９−５００９４４号公報
【特許文献１０】特表２００５−５３７７６３号公報
【特許文献１１】特表２００２−５１０１６４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
ここで、データベース内のあるテーブルのあるカラムの各データを暗号化することを考える。このとき、異なる行におけるそのカラムのデータが同じである場合は十分考えられる。この場合、同じ暗号化鍵と同じＩＶを使用してそのデータを暗号化した結果は同じ暗号文となる。但し、このことは、暗号文を解読するためのヒントを与えてしまう。
【００１０】
例えば、データベースに暗証番号を暗号化して格納する場合を考える。この場合、同じ暗号化鍵と同じＩＶを使用すると、同じ暗証番号を暗号化した結果は同じになる。
従って、暗号化鍵とＩＶの値を知らなくても、あるユーザの平文の暗証番号が分かれば、そのユーザの暗号文と他のユーザの暗号文とを照合することにより、そのユーザと同じ暗証番号を使用しているユーザが分かってしまう。また、平文と暗号文の幾つもの組を参照できるので、辞書攻撃で暗証番号が分かってしまう。
【００１１】
このような状況を回避するためには、行ごとにＩＶの値を変えることが望ましい。ＩＶが異なれば、同じ平文から異なる暗号文を得ることができるからである。
しかしながら、このことは別のジレンマを呼ぶ。各行に適用したＩＶをどのように管理するのかという問題である。
【００１２】
この問題を解決するための対策の１つとして、データベースの各行に適用したＩＶをそのデータベース内に保管する方法が考えられる。その際、複数のカラムが暗号化対象であれば、カラムごとに異なるＩＶで暗号化し、各カラムに対するＩＶとして保管することが望ましい。
この方法を採用した場合、暗号化対象のカラムを有するテーブル又はそのテーブルに結合できる別のテーブルにカラムを追加し、このカラムに行ごとにＩＶを保存するのが、運用上容易である。しかし、このことは、ＩＶを公開してしまうことを意味する。
或いは、そのテーブルに結合できない別のテーブルで管理することもできるが、結局、ＩＶを保管するテーブルをどのように保護するか、オリジナルのテーブルで行削除等が行われた場合に同期をどのように取るか等の困難に直面する。
【００１３】
一方で、ＩＶは暗号化鍵ではないので、暗号化アルゴリズムが十分に強固であれば、公開しても構わない、という考え方もある。実際にストリーム暗号方式ではＩＶは平文で送信される。
但し、暗号化アルゴリズムの強度は、システムの高速化に伴って低下していくものである。従って、ある暗号化アルゴリズムを利用してデータを暗号化し保管する場合に、その暗号化アルゴリズムが「今は安全」であるということに頼るべきではない。データベース上のデータは、個人のディスク上であれ、外部バックアップサービス上であれ、長期間保存されるため、将来にわたる安全のためにＩＶも秘匿されることが望ましい。
【００１４】
尚、特許文献１〜１１の技術は、何れも、ＩＶの管理に関するものではないので、このような課題を解決する手段を何ら提供しない。
【００１５】
本発明の目的は、データをブロックごとに暗号化するブロック暗号方式における初期化ベクトルを、その秘匿性及び管理負担に影響を与えることなく、データごとに適用可能にすることにある。
本発明の他の目的は、データをブロックごとに暗号化するブロック暗号方式における初期化ベクトルを、特別な管理手段を用いて管理する必要をなくすことにある。
【課題を解決するための手段】
【００１６】
かかる目的のもと、本発明は、データをブロックごとに暗号化するブロック暗号方式でデータを暗号化する装置であって、暗号化対象のデータである第１のデータを取得する第１の取得部と、ブロック暗号方式で用いる暗号化鍵を取得する第２の取得部と、ブロック暗号方式で用いる初期化ベクトルを生成する第１の生成部と、第１の取得部により取得された第１のデータを、第２の取得部により取得された暗号化鍵と、第１の生成部により生成された初期化ベクトルとを用いて、ブロック暗号方式で暗号化することにより、第２のデータを生成する第２の生成部と、第１の生成部により生成された初期化ベクトルを、埋め込み規則に従って、第２の生成部により生成された第２のデータに埋め込む埋め込み部とを含む、装置を提供する。
【００１７】
ここで、この装置は、第１の取得部が第１のデータを取得するごとに埋め込み規則を決定する決定部と、第１の取得部により取得された第１のデータと、決定部により決定された埋め込み規則及び埋め込み規則の決定方法の何れか一方との対応関係を記憶する記憶部とを更に含む、ものであってよい。
その場合、決定部は、第２の生成部により生成された第２のデータの特定の部分に基づいて、第２のデータの特定の部分以外の他の部分に対する埋め込み規則を決定する、ものであってもよい。
また、この装置は、埋め込み部が初期化ベクトルを第２のデータに埋め込むことによって生成された第３のデータを取得する第３の取得部と、第３の取得部により取得された第３のデータを、埋め込み規則に従って、初期化ベクトルと第２のデータとに分離する分離部と、第２の取得部により取得された暗号化鍵と、分離部による分離で得られた初期化ベクトルとを用いて、分離部による分離で得られた第２のデータを復号することにより、第１のデータを復元する復元部とを更に含む、ものであってよい。
【００１８】
更に、本発明は、データをブロックごとに暗号化するブロック暗号方式でデータを暗号化した状態で格納するデータベースを保持する装置であって、ブロック暗号方式で用いる暗号化鍵を記憶する記憶部と、データベースへの第１のデータの格納要求を行う格納要求装置から、第１のデータを受信する受信部と、ブロック暗号方式で用いる初期化ベクトルを生成する第１の生成部と、受信部により受信された第１のデータを、記憶部に記憶された暗号化鍵と、第１の生成部により生成された初期化ベクトルとを用いて、ブロック暗号方式で暗号化することにより、第２のデータを生成する第２の生成部と、第１の生成部により生成された初期化ベクトルを、埋め込み規則に従って、第２の生成部により生成された第２のデータに埋め込むことにより、第３のデータを生成する第３の生成部と、第３の生成部により生成された第３のデータをデータベースに格納する格納部と、データベースからの第１のデータの検索要求を行う検索要求装置からの検索要求に応じて、データベースから第３のデータを取得する取得部と、取得部により取得された第３のデータを、埋め込み規則に従って、初期化ベクトルと第２のデータとに分離する分離部と、記憶部に記憶された暗号化鍵と、分離部による分離で得られた初期化ベクトルとを用いて、分離部による分離で得られた第２のデータを復号することにより、第１のデータを復元する復元部と、復元部により復元された第１のデータを検索要求装置に送信する送信部とを含む、装置も提供する。
【００１９】
また、本発明は、データをブロックごとに暗号化するブロック暗号方式でデータを暗号化する方法であって、暗号化対象のデータである第１のデータを取得するステップと、ブロック暗号方式で用いる暗号化鍵を取得するステップと、ブロック暗号方式で用いる初期化ベクトルを生成するステップと、第１のデータを暗号化鍵と初期化ベクトルとを用いてブロック暗号方式で暗号化することにより、第２のデータを生成するステップと、初期化ベクトルを埋め込み規則に従って第２のデータに埋め込むステップとを含む、方法も提供する。
【００２０】
更に、本発明は、データをブロックごとに暗号化するブロック暗号方式でデータを暗号化する装置として、コンピュータを機能させるプログラムであって、コンピュータを、暗号化対象のデータである第１のデータを取得する第１の取得部と、ブロック暗号方式で用いる暗号化鍵を取得する第２の取得部と、ブロック暗号方式で用いる初期化ベクトルを生成する第１の生成部と、第１の取得部により取得された第１のデータを、第２の取得部により取得された暗号化鍵と、第１の生成部により生成された初期化ベクトルとを用いて、ブロック暗号方式で暗号化することにより、第２のデータを生成する第２の生成部と、第１の生成部により生成された初期化ベクトルを、埋め込み規則に従って、第２の生成部により生成された第２のデータに埋め込む埋め込み部として機能させる、プログラムも提供する。
【００２１】
更にまた、本発明は、データをブロックごとに暗号化するブロック暗号方式による復号を行う装置として、コンピュータを機能させるプログラムであって、コンピュータを、第１のデータを暗号化鍵と初期化ベクトルとを用いてブロック暗号方式で暗号化することにより生成された第２のデータに、初期化ベクトルを埋め込み規則に従って埋め込むことにより生成された第３のデータを取得する取得部と、取得部により取得された第３のデータを、埋め込み規則に従って、初期化ベクトルと第２のデータとに分離する分離部と、暗号化鍵と、分離部による分離で得られた初期化ベクトルとを用いて、分離部による分離で得られた第２のデータを復号することにより、第１のデータを復元する復元部として機能させる、プログラムも提供する。
【発明の効果】
【００２２】
本発明によれば、データをブロックごとに暗号化するブロック暗号方式における初期化ベクトルを、その秘匿性及び管理負担に影響を与えることなく、データごとに適用することができる。
【図面の簡単な説明】
【００２３】
【図１】本発明の実施の形態におけるデータベース装置の構成例を示したブロック図である。
【図２】本発明の実施の形態におけるＩＶの暗号文への埋め込みの概要を示した図である。
【図３】本発明の実施の形態における暗号化部の機能構成例を示した図である。
【図４】本発明の実施の形態における暗号化部の動作例を示したフローチャートである。
【図５】本発明の実施の形態における復号部の機能構成例を示した図である。
【図６】本発明の実施の形態における復号部の動作例を示したフローチャートである。
【図７】本発明の実施の形態を適用可能なコンピュータのハードウェア構成例を示した図である。
【発明を実施するための形態】
【００２４】
以下、添付図面を参照して、本発明の実施の形態について詳細に説明する。
図１は、本実施の形態が適用されるデータベース（ＤＢ）装置１０の構成例を示したブロック図である。
図示するように、ＤＢ装置１０は、ＤＢ１１と、ＤＢ管理部１２と、受信部１３と、送信部１４と、暗号化部１５と、復号部１６と、記憶部１７とを備えている。
【００２５】
ＤＢ１１は、ＤＢ装置１０に例えばネットワーク経由で接続された複数のクライアント端末（図示せず）によって共有されるデータの集合である。これらのデータは、例えば、リレーショナルデータベースの複数のテーブルに格納される。
【００２６】
ＤＢ管理部１２は、ＤＢ１１のテーブルへのデータの格納、ＤＢ１１のテーブルからのデータの検索、暗号化部１５に対するデータの暗号化の指示、復号部１６に対する暗号化されたデータの復号の指示等の処理を行う。具体的には、ＤＢ１１のテーブルへのデータの格納要求を受信部１３が受信すると、格納要求と共に受信部１３が受信したデータの中に暗号化すべきデータが含まれているかどうかを判断する。そして、暗号化すべきデータについては、暗号化部１５にその暗号化を指示して暗号化されたデータを取得し、この暗号化されたデータを、暗号化が不要なデータと共にＤＢ１１に格納する。また、ＤＢ１１のテーブルからのデータの検索要求を受信部１３が受信すると、検索要求と共に受信部１３が受信したキー情報（データを一意に特定可能な検索キーとなる情報）を用いてＤＢ１１を検索し、検索されたデータの中に暗号化されたデータが含まれているかどうかを判断する。そして、暗号化されたデータについては、復号部１６にその復号を指示して暗号化されていない元のデータを取得し、このデータを、初めから暗号化されていないデータと共に送信部１４に出力する。本実施の形態では、データをデータベースに格納する格納部の一例として、ＤＢ管理部１２を設けている。
【００２７】
受信部１３は、ＤＢ１１のテーブルへのデータの格納要求を格納要求装置の一例としてのクライアント端末（図示せず）から受信して、格納要求をデータと共にＤＢ管理部１２に受け渡す。また、ＤＢ１１のテーブルからのデータの検索要求を検索要求装置の一例としてのクライアント端末（図示せず）から受信して、検索要求をキー情報と共にＤＢ管理部１２に受け渡す。
【００２８】
送信部１４は、ＤＢ１１から検索されたデータ（復号部１６により復号されたデータを含む）をＤＢ管理部１２から受け取り、これを検索要求装置の一例としてのクライアント端末（図示せず）に送信する。
【００２９】
暗号化部１５は、ＤＢ管理部１２から暗号化すべきデータを受け取り、これを暗号化鍵とＩＶとを用いてブロック暗号方式で暗号化し、暗号化結果をＤＢ管理部１２に返す。ここで、ブロック暗号方式としては、ＡＥＳ（Advanced Encryption Standard）、ＤＥＳ（Data Encryption Standard）等を用いるとよい。
【００３０】
復号部１６は、ＤＢ管理部１２から暗号化されたデータを受け取り、これを、暗号化部１５で用いられたのと同じ暗号化鍵とＩＶを用いて、暗号化部１５で用いられたブロック暗号方式に対応する復号方式で復号し、暗号化されていない元のデータをＤＢ管理部１２に返す。
【００３１】
記憶部１７は、暗号化部１５でのデータの暗号化、及び、復号部１６での暗号化されたデータの復号に用いられる暗号化鍵等を記憶する。本実施の形態では、暗号化鍵を記憶する記憶部の一例として、記憶部１７の暗号化鍵用の記憶領域を用いている。
【００３２】
尚、これらの機能部は、ソフトウェアとハードウェア資源とが協働することにより実現される。具体的には、ＣＰＵが、ＤＢ管理部１２、受信部１３、送信部１４、暗号化部１５、復号部１６を実現するプログラムを例えば磁気ディスク装置からメインメモリに読み込んで実行することにより、これらの機能部は実現される。特に、ＤＢ管理部１２は、例えば、ＤＢＭＳ（DataBase Management System）のプログラムが実行されることにより実現される。暗号化部１５は、例えば、特定のブロック暗号方式に対応する暗号化関数のプログラムが実行されることによって実現され、復号部１６は、例えば、暗号化部１５で用いられる特定のブロック暗号方式に対応する復号関数のプログラムが実行されることによって実現される。ここで、暗号化関数及び復号関数としては、ＤＢＭＳが提供するものを用いるとよい。
また、ＤＢ１１及び記憶部１７は、例えば磁気ディスク装置により実現される。
【００３３】
かかる構成を有するＤＢ装置１０において、本実施の形態では、テーブルの各行について発生させた擬似乱数のＩＶを、暗号文と別に管理するのではなく、暗号文に埋め込む。
図２は、このようなＩＶの暗号文への埋め込みの概要を示した図である。
図示するように、平文１０１は、まず、ブロックに分割され、平文ブロック＃１，＃２，・・・，＃ｎが生成される。
次に、暗号化処理＃１で、平文ブロック＃１が暗号化鍵１０２とＩＶ１０３とを用いて暗号化され、暗号ブロック＃１が生成される。また、暗号化処理＃２で、平文ブロック＃２が、暗号化鍵１０２と、前段のブロックの暗号化結果である暗号ブロック＃１とを用いて暗号化され、暗号ブロック＃２が生成される。以下、同様に、平文ブロックが、暗号化鍵１０２と、前段の暗号ブロックとを用いて、暗号化され、暗号ブロック＃ｎまでの暗号ブロックが生成される。
次いで、暗号ブロック＃１，＃２，・・・，＃ｎは合成され、暗号文１０４が生成される。
この状態で、本実施の形態では、暗号文１０４をそのまま暗号化結果として返すのではなく、埋め込み規則に従い、例えば、ＩＶ１０３を分割し、その断片を暗号文１０４に埋め込んで得られる暗号化データ１０５を返す。
【００３４】
また、図示しないが、この暗号化データ１０５を復号する際は、まず、暗号化時に用いた埋め込み規則に従い、暗号化データ１０５をＩＶ１０３と本来の暗号化結果である暗号文１０４とに分離する。そして、暗号文１０４を、暗号化鍵１０２とＩＶ１０３とを用いて、暗号化時に用いたブロック暗号方式に対応する復号方式で復号する。
【００３５】
次に、ＤＢ装置１０のうちこのような動作を行う機能部について詳細に説明する。
まず、データを暗号化する暗号化部１５の構成及び動作について説明する。
図３は、本実施の形態における暗号化部１５の機能構成例を示したブロック図である。
図示するように、暗号化部１５は、暗号化鍵取得部２１と、平文取得部２２と、ＩＶ生成部２３と、暗号文生成部２４と、埋め込み規則決定部２５と、ＩＶ埋め込み部２６と、暗号化データ出力部２７とを備える。
【００３６】
暗号化鍵取得部２１は、暗号化に用いる暗号化鍵を記憶部１７（図１参照）から取得する。本実施の形態では、暗号化に用いる暗号化鍵を取得する第２の取得部の一例として、暗号化鍵取得部２１を設けている。
【００３７】
平文取得部２２は、ＤＢ１１（図１参照）のテーブルへ格納するデータのうち暗号化すべきデータである平文をＤＢ管理部１２（図１参照）から取得する。本実施の形態では、暗号化対象のデータである第１のデータの一例として、平文を用いており、第１のデータを取得する第１の取得部の一例として、平文取得部２２を設けている。
【００３８】
ＩＶ生成部２３は、擬似乱数を発生させることにより、ＩＶを生成する。本実施の形態では、初期化ベクトルを生成する第１の生成部の一例として、ＩＶ生成部２３を設けている。
【００３９】
暗号文生成部２４は、暗号化鍵取得部２１が取得した暗号化鍵と、ＩＶ生成部２３が生成したＩＶとを用いて、平文取得部２２が取得した平文を暗号化することにより、暗号文を生成する。本実施の形態では、第２のデータの一例として、暗号文を用いており、第２のデータを生成する第２の生成部の一例として、暗号文生成部２４を設けている。
【００４０】
埋め込み規則決定部２５は、ＩＶを暗号文に埋め込むときの埋め込み規則を決定し、暗号化対象となっているデータ内のキー情報と埋め込み規則とを対応付けて記憶部１７（図１参照）の埋め込み規則用の記憶領域に記憶する。尚、埋め込み規則及びその決定方法については、後述する。本実施の形態では、埋め込み規則を決定する決定部の一例として、埋め込み規則決定部２５を設けており、第１のデータと埋め込み規則との対応関係を記憶する記憶部の一例として、記憶部１７の埋め込み規則用の記憶領域を用いている。
【００４１】
ＩＶ埋め込み部２６は、ＩＶ生成部２３が生成したＩＶを、埋め込み規則決定部２５が決定した埋め込み規則に従い、暗号文生成部２４が生成した暗号文に埋め込むことにより、暗号化データを生成する。本実施の形態では、初期化ベクトルを第２のデータに埋め込む埋め込み部の一例として、ＩＶ埋め込み部２６を設けている。また、第３のデータの一例として、暗号化データを用いており、第３のデータを生成する第３の生成部の一例として、ＩＶ埋め込み部２６を設けている。
【００４２】
暗号化データ出力部２７は、ＩＶ埋め込み部２６が生成した暗号化データをＤＢ管理部１２（図１参照）に出力する。
【００４３】
図４は、本実施の形態における暗号化部１５の動作例を示したフローチャートである。このフローチャートの動作は、例えば、特定のブロック暗号方式に対応する暗号化関数がＤＢ管理部１２から呼び出されることにより開始する。
動作が開始すると、図示するように、暗号化部１５では、まず、暗号化鍵取得部２１が、記憶部１７に記憶された暗号化鍵を取得する（ステップ２０１）。
また、平文取得部２２が、ＤＢ管理部１２から平文を取得する（ステップ２０２）。
更に、ＩＶ生成部２３が、ＩＶを擬似乱数として発生させる（ステップ２０３）。
このようにステップ２０１〜２０３で暗号化鍵と平文とＩＶとが揃うと、暗号文生成部２４は、暗号化鍵とＩＶとを用いて、特定のブロック暗号方式で平文を暗号化することにより、暗号文を生成する（ステップ２０４）。
その後、埋め込み規則決定部２５が、ＩＶを暗号文に埋め込むときの埋め込み規則を決定する（ステップ２０５）。ここで、埋め込み規則決定部２５は、平文内のキー情報と埋め込み規則とを対応付けて記憶部１７に記憶しておく。尚、埋め込み規則及びその決定方法の詳細については、後述する。
すると、ＩＶ埋め込み部２６が、ステップ２０３で発生させたＩＶを、ステップ２０５で決定された埋め込み規則に従い、ステップ２０４で生成された暗号文に埋め込むことにより、暗号化データを生成する（ステップ２０６）。
そして最後に、暗号化データ出力部２７が、ステップ２０６で生成された暗号化データをＤＢ管理部１２（図１参照）に出力する（ステップ２０７）。
【００４４】
次に、暗号化データを復号する復号部１６の構成及び動作について説明する。
図５は、本実施の形態における復号部１６の機能構成例を示したブロック図である。
図示するように、復号部１６は、暗号化鍵取得部３１と、暗号化データ取得部３２と、埋め込み規則取得部３３と、ＩＶ分離部３４と、平文生成部３５と、平文出力部３６とを備える。
【００４５】
暗号化鍵取得部３１は、復号に用いる暗号化鍵を記憶部１７（図１参照）から取得する。本実施の形態では、復号に用いる暗号化鍵を取得する第２の取得部の一例として、暗号化鍵取得部３１を設けている。
【００４６】
暗号化データ取得部３２は、ＤＢ１１（図１参照）のテーブルから検索されたデータのうち暗号化データをＤＢ管理部１２（図１参照）から取得する。本実施の形態では、第３のデータを取得する第３の取得部の一例として、また、第３のデータを取得する取得部の一例として、暗号化データ取得部３２を設けている。
【００４７】
埋め込み規則取得部３３は、ＩＶ埋め込み部２６がＩＶを暗号文に埋め込んだときの埋め込み規則を、ＤＢ管理部１２から渡されたキー情報で検索することにより、記憶部１７（図１参照）の埋め込み規則用の記憶領域から取得する。
【００４８】
ＩＶ分離部３４は、暗号化データ取得部３２が取得した暗号化データを、埋め込み規則取得部３３が取得した埋め込み規則に従い、ＩＶと本来の暗号化結果である暗号文とに分離する。本実施の形態では、第３のデータを初期化ベクトルと第２のデータとに分離する分離部の一例として、ＩＶ分離部３４を設けている。
【００４９】
平文生成部３５は、暗号化鍵取得部３１が取得した暗号化鍵と、ＩＶ分離部３４による分離で得られたＩＶとを用いて、ＩＶ分離部３４による分離で得られた暗号文を復号することにより、平文を生成する。本実施の形態では、第１のデータを復元する復元部の一例として、平文生成部３５を設けている。
【００５０】
平文出力部３６は、平文生成部３５が生成した平文をＤＢ管理部１２（図１参照）に出力する。
【００５１】
図６は、本実施の形態における復号部１６の動作例を示したフローチャートである。このフローチャートの動作は、例えば、特定のブロック暗号方式に対応する復号関数がＤＢ管理部１２から呼び出されることにより開始する。
動作が開始すると、図示するように、復号部１６では、まず、暗号化鍵取得部３１が、記憶部１７に記憶された暗号化鍵を取得する（ステップ３０１）。
また、暗号化データ取得部３２が、ＤＢ管理部１２から、ＩＶが埋め込まれた暗号化データを取得する（ステップ３０２）。
すると、埋め込み規則取得部３３が、ＤＢ管理部１２から渡されたキー情報に対応付けて記憶部１７に記憶された埋め込み規則を、この暗号化データを生成したときの埋め込み規則として取得する（ステップ３０３）。
そして、ＩＶ分離部３４が、ステップ３０２で取得された暗号化データを、ステップ３０３で取得された埋め込み規則に従い、ＩＶと本来の暗号化結果である暗号文とに分離する（ステップ３０４）。
このようにステップ３０１〜３０４で暗号化鍵とＩＶと暗号文とが揃うと、平文生成部３５は、暗号化鍵とＩＶとを用いて、特定のブロック暗号方式に対応する復号方式で暗号文を復号することにより、平文を生成する（ステップ３０５）。
そして最後に、平文出力部３６が、ステップ３０５で生成された平文をＤＢ管理部１２に出力する（ステップ３０６）。
【００５２】
ところで、本実施の形態では、図４のステップ２０５でどのような埋め込み規則をどのように決定するかについては言及しなかった。
ここで、埋め込み規則としては、例えば、次のような規則が考えられる。
第１の規則は、ＩＶを暗号文の先頭又は末尾に単純に結合するという規則である。
第２の規則は、予め決められたビット数でＩＶを分割してＩＶの断片を取得すると共に、予め決められたビット数で暗号文を分割して暗号文の断片を取得し、ＩＶの断片を、ＩＶにおける順番通りに、暗号文の断片の間に挿入する、という規則である。
第３の規則は、ＩＶを固定ではない位置で分割して互いに異なる長さのＩＶの断片を取得すると共に、暗号文を固定ではない位置で分割して互いに異なる長さの暗号文の断片を取得し、ＩＶの断片を、ＩＶにおける順番とは関係なく、暗号文の断片の間に挿入する、という規則である。
【００５３】
尚、これらの規則はあくまで例示であり、他にも様々な規則が考えられる。例えば、第２の規則及び第３の規則の変形例として、ＩＶは分割せずに、暗号文を２つに分割して暗号文の２つの断片を取得し、ＩＶをこの２つの断片の間に挿入する、といった規則を採用してもよい。
即ち、第２の規則及び第３の規則は、一般化して、暗号文を分割して暗号文の断片を取得し、ＩＶ又はその断片を暗号文の断片の間に挿入する、という規則であると言うことができる。本明細書では、このように断片の間に挿入することを「埋め込む」と称している。
【００５４】
また、埋め込み規則の決定方法としては、例えば、次のような方法が考えられる。
第１の方法は、図４のステップ２０４で生成された暗号文を参照することにより、埋め込み規則を決定する方法である。例えば、暗号文の先頭数バイトにはＩＶを埋め込まない規則とし、暗号文が生成される都度、その先頭数バイトの値から埋め込み規則を決定することが考えられる。但し、暗号文のうちの参照する部分は、先頭数バイトには限らない。即ち、これを一般化すると、暗号文の特定の部分に基づいて、暗号文のその特定の部分以外の他の部分に対する埋め込み規則を決定する、ということができる。
第２の方法は、図４のステップ２０４で生成された暗号文から得られない情報に基づいて、埋め込み規則を決定する方法である。暗号文から得られない情報としては、例えば、暗号化が行われた日時の情報がある。
【００５５】
ここで重要なのは、暗号化部１５で用いた埋め込み規則を復号部１６が認識できることである。本実施の形態では、単一の装置であるＤＢ装置１０が暗号化及び復号の両方を行うので、埋め込み規則の暗号化側と復号側での共有を、秘密裡に行うことができる。具体的には、暗号化部１５がデータを暗号化する際、埋め込み規則決定部２５は埋め込み規則を決定し、データのキー情報と埋め込み規則とを対応付けて記憶部１７の埋め込み規則用の記憶領域に記憶する。また、復号部１６が暗号化データを復号する際、埋め込み規則取得部３３はデータのキー情報に基づいて記憶部１７の埋め込み規則用の記憶領域から埋め込み規則を取得する。
【００５６】
但し、第１の方法のように、復号部１６が暗号化データを参照することで埋め込み規則を特定できるような場合は、埋め込み規則ではなく、埋め込み規則の決定方法を記憶部１７の埋め込み規則用の記憶領域に記憶してもよい。例えば、埋め込み規則の決定方法が、暗号文の先頭２ビットを参照し、「００」ならば第１の埋め込み規則に、「０１」ならば第２の埋め込み規則に、「１０」ならば第３の埋め込み規則に、「１１」ならば第４の埋め込み規則に決定する、というものである場合は、その決定方法を示す情報をデータのキー情報に対応付けて記憶部１７の埋め込み規則用の記憶領域に記憶しておけばよい。この意味で、記憶部１７の埋め込み規則用の記憶領域は、第１のデータと埋め込み規則の決定方法との対応関係を記憶する記憶部の一例でもある。
【００５７】
以上述べたように、本実施の形態では、暗号化を行うごとにＩＶを発生させることを前提とし、暗号化結果の一部にＩＶを保存するようにした。これにより、同じ平文に同じ暗号化鍵を適用しても異なる暗号化結果を得ることができ、かつ、ＩＶを特別な管理手段で管理する必要がなくなった。
また、暗号化結果におけるＩＶの埋め込み規則が分からないように構成した。これにより、ＩＶを取り出すことはできないので、ＩＶを秘匿することも可能となった。
【００５８】
最後に、本実施の形態を適用するのに好適なコンピュータのハードウェア構成について説明する。
図７は、このようなコンピュータのハードウェア構成例を示した図である。図示するように、コンピュータは、演算手段であるＣＰＵ（Central Processing Unit）９０ａと、Ｍ／Ｂ（マザーボード）チップセット９０ｂを介してＣＰＵ９０ａに接続されたメインメモリ９０ｃと、同じくＭ／Ｂチップセット９０ｂを介してＣＰＵ９０ａに接続された表示機構９０ｄとを備える。また、Ｍ／Ｂチップセット９０ｂには、ブリッジ回路９０ｅを介して、ネットワークインターフェイス９０ｆと、磁気ディスク装置（ＨＤＤ）９０ｇと、音声機構９０ｈと、キーボード／マウス９０ｉと、フレキシブルディスクドライブ９０ｊとが接続されている。
【００５９】
尚、図７において、各構成要素は、バスを介して接続される。例えば、ＣＰＵ９０ａとＭ／Ｂチップセット９０ｂの間や、Ｍ／Ｂチップセット９０ｂとメインメモリ９０ｃの間は、ＣＰＵバスを介して接続される。また、Ｍ／Ｂチップセット９０ｂと表示機構９０ｄとの間は、ＡＧＰ（Accelerated Graphics Port）を介して接続されてもよいが、表示機構９０ｄがＰＣＩ Ｅｘｐｒｅｓｓ対応のビデオカードを含む場合、Ｍ／Ｂチップセット９０ｂとこのビデオカードの間は、ＰＣＩ Ｅｘｐｒｅｓｓ（ＰＣＩｅ）バスを介して接続される。また、ブリッジ回路９０ｅと接続する場合、ネットワークインターフェイス９０ｆについては、例えば、ＰＣＩ Ｅｘｐｒｅｓｓを用いることができる。また、磁気ディスク装置９０ｇについては、例えば、シリアルＡＴＡ（AT Attachment）、パラレル転送のＡＴＡ、ＰＣＩ（Peripheral Components Interconnect）を用いることができる。更に、キーボード／マウス９０ｉ、及び、フレキシブルディスクドライブ９０ｊについては、ＵＳＢ（Universal Serial Bus）を用いることができる。
【００６０】
ここで、本発明は、全てハードウェアで実現してもよいし、全てソフトウェアで実現してもよい。また、ハードウェア及びソフトウェアの両方により実現することも可能である。また、本発明は、コンピュータ、データ処理システム、コンピュータプログラムとして実現することができる。このコンピュータプログラムは、コンピュータにより読取り可能な媒体に記憶され、提供され得る。ここで、媒体としては、電子的、磁気的、光学的、電磁的、赤外線又は半導体システム（装置又は機器）、或いは、伝搬媒体が考えられる。また、コンピュータにより読取り可能な媒体としては、半導体、ソリッドステート記憶装置、磁気テープ、取り外し可能なコンピュータディスケット、ランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）、リジッド磁気ディスク、及び光ディスクが例示される。現時点における光ディスクの例には、コンパクトディスク−リードオンリーメモリ（ＣＤ−ＲＯＭ）、コンパクトディスク−リード／ライト（ＣＤ−Ｒ／Ｗ）及びＤＶＤが含まれる。
【００６１】
尚、本発明のコンピュータプログラムを、コンピュータにより読取り可能な媒体で提供する場合、図４の処理を実行させるコンピュータプログラムと、図６の処理を実行させるコンピュータプログラムとは、同じ媒体に記憶してもよいし、別々の媒体に記憶してもよい。
【００６２】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態には限定されない。本発明の精神及び範囲から逸脱することなく様々に変更したり代替態様を採用したりすることが可能なことは、当業者に明らかである。
【符号の説明】
【００６３】
１０…ＤＢ装置、１１…ＤＢ、１２…ＤＢ管理部、１３…受信部、１４…送信部、１５…暗号化部、１６…復号部、１７…記憶部、２１，３１…暗号化鍵取得部、２２…平文取得部、２３…ＩＶ生成部、２４…暗号文生成部、２５…埋め込み規則決定部、２６…ＩＶ埋め込み部、２７…暗号化データ出力部、３２…暗号化データ取得部、３３…埋め込み規則取得部、３４…ＩＶ分離部、３５…平文生成部、３６…平文出力部
【図１】
0005875441.tif 000002
【図２】
0005875441.tif 000003
【図３】
0005875441.tif 000004
【図４】
0005875441.tif 000005
【図５】
0005875441.tif 000006
【図６】
0005875441.tif 000007
【図７】
0005875441.tif 000008