説明

データベース暗号化システム及び方法

【課題】 データを確率的暗号化したデータベースでも完全一致検索処理を高速に行なうことができ、またデータを暗号化したデータベースでも部分一致検索処理を高速に行なうことができるようにする。
【解決手段】 データを確率的暗号化したデータベースでも、完全一致検索処理を高速に行なうために、確率的暗号テーブルの他に、決定的暗号テーブルと、両テーブル間の関係を暗号化して保持する暗号文関係テーブルを設けて、決定的暗号テーブルで検索して、検索結果を暗号文関係テーブルで変換することで、確率的暗号テーブルでの検索結果を取得する。データを暗号化したデータベースでも、部分一致検索処理を高速に行なうためにインデックス値を保持する決定的暗号テーブルを設けて決定的暗号テーブルでインデックス値に基づいて決定的暗号文をバイナリサーチすることで部分一致検索範囲を絞り込む。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データベースのセキュリティを強化するデータベース暗号化システムに関する。
【背景技術】
【0002】
データベースに格納されているデータは、データベース管理者による不正持ち出しや外部不正者によるSQLインジェクション攻撃に晒されており、データ漏洩が問題になっている。
そこで、データベースのセキュリティ対策として、データを暗号化してデータベースに格納するデータベース暗号化システムがある。
【0003】
図10に、特許文献1などに記載されている、データを決定的暗号化したデータベースの一例を示す。
データを決定的暗号化した場合、同一データは同一暗号文として記憶されため、不正者はレコード間で同一データであることが分かるという問題点がある。
図11に、データを確率的暗号化したデータベースの一例を示す。
データを確率的暗号化した場合、同一データでも異なる暗号文として記憶されるため、不正者はレコード間で同一データであることが分からないという利点がある。
【0004】
なお、確率的暗号化はデータに対し乱数を付加して暗号化するものである。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2009−99151号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
データを決定的暗号化した場合、完全一致検索データを1回だけ暗号化して探せるため、完全一致検索処理を高速に行なうことができる。データを確率的暗号化した場合、完全一致検索データをレコード毎に暗号化して探すため、完全一致検索処理を高速に行なうことができない。
したがって、データを確率的暗号化したデータベースでは、完全一致検索処理を高速に行なうことができないという課題がある。
【0007】
データを暗号化した場合、部分一致検索データに対応する全ての完全一致検索データについて暗号化して探すことは、高速に行なうことができない。
例えば、部分一致検索文字列「AAA」から始まるデータを検索する場合、完全一致検索データ「AAAA...A」から「AAAZ...Z」までの莫大な数の完全一致検索データについて暗号化して探す必要があり、事実上不可能である。
したがって、データを暗号化したデータベースでは、部分一致検索処理を高速に行なうことができないという課題がある。
【0008】
本発明の目的は、データを確率的暗号化したデータベースでも完全一致検索処理を高速に行なうことができ、またデータを暗号化したデータベースでも、部分一致検索処理を高速に行なうことができるデータベース暗号化システム及び方法を提供することにある。
【課題を解決するための手段】
【0009】
上記目的を達成するために本発明に係るシステムは、データベースサーバとアプリケーションサーバがネットワークを介して接続して構成され、前記データベースサーバのデータベースが確率的暗号テーブルと決定的暗号テーブルと暗号文関係テーブルとを記憶し、前記アプリケーションサーバのデータベースが暗号鍵を記憶するデータベース暗号化システムであって、
前記データベースへのデータ登録処理を行うために、
前記アプリケーションサーバが、前記データベースへの登録対象データを確率的暗号化と決定的暗号化し、前記データベースサーバに確率的暗号文5と決定的暗号文とを送信する手段を備え、
前記データベースサーバが、前記確率的暗号テーブルに確率的暗号文と確率的暗号IDを含むレコードを挿入し、前記決定的暗号テーブルに決定的暗号文と決定的暗号IDを含むレコードを挿入した後、前記アプリケーションサーバに確率的暗号IDと決定的暗号IDを送信する手段を備え、
アプリケーションサーバが、前記決定的暗号文から取得した暗号鍵で確率的暗号IDと決定的暗号IDを決定的暗号化し、前記データベースサーバに確率的暗号ID暗号文と決定的暗号ID暗号文を送信する手段を備え、
前記データベースサーバが、前記暗号文関係テーブルに確率的暗号ID暗号文と決定的暗号ID暗号文を含むレコードを挿入する手段を備えることを特徴とする。
【0010】
また、前記データベースのデータ完全一致検索処理として、
前記アプリケーションサーバが、
データを決定的暗号化して前記データベースサーバに決定的暗号文を送信する手段を備え、
前記データベースサーバが、前記決定的暗号テーブルから決定的暗号文を含むレコードから決定的暗号IDを射影し、アプリケーションサーバに決定的暗号IDを送信する手段を備え、
前記アプリケーションサーバが、前記決定的暗号文から取得した暗号鍵で決定的暗号IDを決定的暗号化して前記データベースサーバに決定的暗号ID暗号文を送信する手段を備え、
前記データベースサーバが、前記暗号文関係テーブルから決定的暗号ID暗号文を含むレコードから確率的暗号ID暗号文を射影し、前記アプリケーションサーバに確率的暗号ID暗号文を送信する手段を備え、
前記アプリケーションサーバが、前記決定的暗号文から取得した暗号鍵で確率的暗号ID暗号文を決定的復号し、前記データベースサーバに確率的暗号IDを送信する手段を備え、
前記データベースサーバが、前記確率的暗号テーブルから確率的暗号IDを含むレコードを選択し、前記アプリケーションサーバに当該レコードを送信する手段を備え、
前記アプリケーションサーバが、前記データベースサーバから受信したレコードから確率的暗号文を射影し、確率的暗号文を確率的復号し、レコードの確率的暗号文を平文に置換し、検索結果としてレコードを取得する手段を備えることを特徴とする。
【0011】
また、データベースのデータ登録処理として、
前記データベースサーバが、前記データベースのインデックス値登録処理を決定的暗号IDと決定的暗号文を入力として実行する手段を備え、
データベースのデータ部分一致検索処理として、
前記アプリケーションサーバが、検索範囲開始データと検索範囲終端データを決定的暗号化し、前記データベースサーバに検索範囲開始データ暗号文と検索範囲終端データ暗号文を送信する手段を備え、
前記データベースサーバが、前記データベースのインデックス値取得処理を検索範囲開始データ暗号文を入力として実行し、前記データベースのインデックス値取得処理を検索範囲終端データ暗号文を入力として実行し、前記決定的暗号テーブルからインデックス値が検索範囲開始インデックス値以上かつ検索範囲終端インデックス値未満であるレコードから決定的暗号IDと決定的暗号文を射影し、前記アプリケーションサーバに決定的暗号IDと決定的暗号文を送信する手段を備え、
前記アプリケーションサーバが、前記決定的暗号文を決定的復号し、平文のソート順番が検索範囲開始データと検索範囲終端データの間ならば、前記決定的暗号文から取得した暗号鍵で決定的暗号IDを決定的暗号化し、前記データベースサーバに決定的暗号ID暗号文を送信する手段を備え、
前記データベースサーバが、前記暗号文関係テーブルから決定的暗号ID暗号文を含むレコードから確率的暗号ID暗号文を射影し、前記アプリケーションサーバに確率的暗号ID暗号文を送信する手段を備え、
前記アプリケーションサーバが、前記決定的暗号文から取得した暗号鍵で確率的暗号ID暗号文を決定的復号し、前記データベースサーバに確率的暗号IDを送信する手段を備え、
前記データベースサーバが、前記確率的暗号テーブルから確率的暗号IDを含むレコードを選択し、前記アプリケーションサーバに当該レコードを送信する手段を備え、
前記アプリケーションサーバが、前記データベースサーバから受信したレコードから確率的暗号文を射影し、確率的暗号文を確率的復号し、前記レコードの確率的暗号文を平文に置換し、検索結果としてレコードを取得する手段を備えることを特徴とする。
【0012】
また、本発明に係る方法は、データベースサーバとアプリケーションサーバがネットワークを介して接続して構成され、前記データベースサーバのデータベースが確率的暗号テーブルと決定的暗号テーブルと暗号文関係テーブルとを記憶し、前記アプリケーションサーバのデータベースが暗号鍵を記憶するデータベース暗号化方法であって、
前記データベースへのデータ登録処理を行うために、
前記アプリケーションサーバが、前記データベースへの登録対象データを確率的暗号化と決定的暗号化し、前記データベースサーバに確率的暗号文5と決定的暗号文とを送信するステップを備え、
前記データベースサーバが、前記確率的暗号テーブルに確率的暗号文と確率的暗号IDを含むレコードを挿入し、前記決定的暗号テーブルに決定的暗号文と決定的暗号IDを含むレコードを挿入した後、前記アプリケーションサーバに確率的暗号IDと決定的暗号IDを送信するステップを備え、
アプリケーションサーバが、前記決定的暗号文から取得した暗号鍵で確率的暗号IDと決定的暗号IDを決定的暗号化し、前記データベースサーバに確率的暗号ID暗号文と決定的暗号ID暗号文を送信するステップを備え、
前記データベースサーバが、前記暗号文関係テーブルに確率的暗号ID暗号文と決定的暗号ID暗号文を含むレコードを挿入する手ステップを備えることを特徴とする。
【0013】
また、前記データベースのデータ完全一致検索処理として、
前記アプリケーションサーバが、
データを決定的暗号化して前記データベースサーバに決定的暗号文を送信するステップを備え、
前記データベースサーバが、前記決定的暗号テーブルから決定的暗号文を含むレコードから決定的暗号IDを射影し、アプリケーションサーバに決定的暗号IDを送信するステップを備え、
前記アプリケーションサーバが、前記決定的暗号文から取得した暗号鍵で決定的暗号IDを決定的暗号化して前記データベースサーバに決定的暗号ID暗号文を送信するステップを備え、
前記データベースサーバが、前記暗号文関係テーブルから決定的暗号ID暗号文を含むレコードから確率的暗号ID暗号文を射影し、前記アプリケーションサーバに確率的暗号ID暗号文を送信するステップを備え、
前記アプリケーションサーバが、前記決定的暗号文から取得した暗号鍵で確率的暗号ID暗号文を決定的復号し、前記データベースサーバに確率的暗号IDを送信するステップを備え、
前記データベースサーバが、前記確率的暗号テーブルから確率的暗号IDを含むレコードを選択し、前記アプリケーションサーバに当該レコードを送信するステップを備え、
前記アプリケーションサーバが、前記データベースサーバから受信したレコードから確率的暗号文を射影し、確率的暗号文を確率的復号し、レコードの確率的暗号文を平文に置換し、検索結果としてレコードを取得するステップを備えることを特徴とする。
【0014】
また、データベースのデータ登録処理として、
前記データベースサーバが、前記データベースのインデックス値登録処理を決定的暗号IDと決定的暗号文を入力として実行するステップを備え、
データベースのデータ部分一致検索処理として、
前記アプリケーションサーバが、検索範囲開始データと検索範囲終端データを決定的暗号化し、前記データベースサーバに検索範囲開始データ暗号文と検索範囲終端データ暗号文を送信するステップを備え、
前記データベースサーバが、前記データベースのインデックス値取得処理を検索範囲開始データ暗号文を入力として実行し、前記データベースのインデックス値取得処理を検索範囲終端データ暗号文を入力として実行し、前記決定的暗号テーブルからインデックス値が検索範囲開始インデックス値以上かつ検索範囲終端インデックス値未満であるレコードから決定的暗号IDと決定的暗号文を射影し、前記アプリケーションサーバに決定的暗号IDと決定的暗号文を送信するステップを備え、
前記アプリケーションサーバが、前記決定的暗号文を決定的復号し、平文のソート順番が検索範囲開始データと検索範囲終端データの間ならば、前記決定的暗号文から取得した暗号鍵で決定的暗号IDを決定的暗号化し、前記データベースサーバに決定的暗号ID暗号文を送信するステップを備え、
前記データベースサーバが、前記暗号文関係テーブルから決定的暗号ID暗号文を含むレコードから確率的暗号ID暗号文を射影し、前記アプリケーションサーバに確率的暗号ID暗号文を送信するステップを備え、
前記アプリケーションサーバが、前記決定的暗号文から取得した暗号鍵で確率的暗号ID暗号文を決定的復号し、前記データベースサーバに確率的暗号IDを送信するステップを備え、
前記データベースサーバが、前記確率的暗号テーブルから確率的暗号IDを含むレコードを選択し、前記アプリケーションサーバに当該レコードを送信するステップを備え、
前記アプリケーションサーバが、前記データベースサーバから受信したレコードから確率的暗号文を射影し、確率的暗号文を確率的復号し、前記レコードの確率的暗号文を平文に置換し、検索結果としてレコードを取得するステップを備えることを特徴とする。
【発明の効果】
【0015】
本発明によれば、確率的暗号テーブルの他に、決定的暗号テーブルと、両テーブル間の関係を暗号化して保持する暗号文関係テーブルを設け、決定的暗号テーブルで検索し、検索結果を暗号文関係テーブルで変換することで、確率的暗号テーブルでの検索結果を取得する。
これにより、データを確率的暗号化したデータベースでも、完全一致検索処理を高速に行なうことができる。
インデックス値を保持する決定的暗号テーブルを設け、この決定的暗号テーブルでインデックス値に基づいて決定的暗号文をバイナリサーチすることで、部分一致検索範囲を絞り込む。
これにより、データを暗号化したデータベースでも、部分一致検索処理を高速に行なうことができる。
検索結果を暗号文関係テーブルで変換する際に、検索結果の関係を変換することを、検索結果データの決定的暗号文から取得した暗号鍵で変換することで保証する。
これにより、不正者が任意の関係を変換できないため、不正者が任意のレコード間で同一データであることが分からないようにできる。
【図面の簡単な説明】
【0016】
【図1】本発明のデータベース暗号化システムの構成の一例を示す図である。
【図2】データベースサーバが記憶する確率的暗号テーブルの一例を示す図である。
【図3】データベースサーバが記憶する決定的暗号テーブルの一例を示す図である。
【図4】データベースサーバが記憶する暗号文関係テーブルの一例を示す図である。
【図5】データベースのデータ登録処理の一例を示す図である。
【図6】データベースのインデックス値登録処理の一例を示す図である。
【図7】データベースのインデックス値取得処理の一例を示す図である。
【図8】データベースのデータ完全一致検索処理の一例を示す図である。
【図9】データベースのデータ部分一致検索処理の一例を示す図である。
【図10】データを決定的暗号化したデータベースの一例を示す図である。
【図11】データを確率的暗号化したデータベースの一例を示す図である。
【発明を実施するための形態】
【0017】
以下、本発明のデータベース暗号化システムの構成の一例について、図1を参照しながら説明する。
図1において、本発明のデータベース暗号化システムは、データベースサーバ1とアプリケーションサーバ2がネットワーク3を介して接続して構成される。
データベースサーバ1は、中央演算処理装置4と主記憶装置6と補助記憶装置8とネットワーク通信装置12がデータバス8を介して接続して構成される。
また、アプリケーションサーバ2は、中央演算処理装置5と主記憶装置7と補助記憶装置9とネットワーク通信装置13がデータバス11を介して接続して構成される。
データベースサーバの補助記憶装置8には、確率的暗号テーブル81、決定的暗号テーブル82、暗号文関係テーブル83が設けられている。
また、アプリケーションサーバ2の補助記憶装置9には暗号鍵Kの記憶領域91が設けられている。
【0018】
ここで、本発明のデータベース暗号化システムで使用する暗号について説明する。
確率的暗号とは、IV(暗号利用モードの初期化ベクトル)またはSALT(平文に付加するランダムなビット列)が有る共通鍵暗号である。
確率的暗号化処理PEは、暗号鍵Kと平文Mを入力として、暗号文PE(K,M)を出力する。
確率的暗号化処理では、入力が同一の暗号鍵と平文であっても、IVまたはSALTの値が異なれば、出力は異なる暗号文になる。
確率的復号処理PDは、暗号鍵Kと暗号文Cを入力として、平文PD(K,C)を出力する。
決定的暗号とは、IVおよびSALTが無い共通鍵暗号である。
決定的暗号化処理DEは、暗号鍵Kと平文Mを入力として、暗号文DE(K,M)を出力する。
決定的暗号化処理では、入力が同一の暗号鍵と平文ならば、出力は同一の暗号文になる。
決定的復号処理DDは、暗号鍵Kと暗号文Cを入力として、平文DD(K,C)を出力する。
鍵付きセキュアハッシュ処理Hは、暗号鍵KとメッセージMを入力として、セキュアハッシュ値H(K,M)を出力する。
【0019】
例えば、セキュアハッシュ関数をSHA−256かつ共通鍵暗号をAES256ビットとすると、セキュアハッシュ値と暗号鍵のビット長が同じため、セキュアハッシュ値を暗号鍵にすることができる。
アプリケーションサーバ2が、暗号鍵Kを記憶する。
【0020】
データベースサーバ1が記憶する確率的暗号テーブル81の一例について、図2を参照しながら説明する。
確率的暗号テーブル81の必須カラムは、確率的暗号ID811と確率的暗号文812である。
確率的暗号ID811は、ユニーク制約のあるカラムである。
図2の確率的暗号テーブル81は、確率的暗号文カラムとして名前812とカード番号813を確率的暗号化した暗号文と、個人情報カラムとして年齢814を格納したテーブルである。
データベースサーバ1が記憶する決定的暗号テーブル82の一例について、図3を参照しながら説明する。
決定的暗号テーブル82のカラムは、決定的暗号ID821と決定的暗号文822とインデックス値823である。
決定的暗号ID821は、ユニーク制約のあるカラムである。
【0021】
図3の決定的暗号テーブル82は、決定的暗号文カラムとして名前822とカード番号824を決定的暗号化した暗号文と、インデックス値として名前822とカード番号824の昇順ソート順番の正整数値を格納したテーブルである。
データベースサーバ1が記憶する暗号文関係テーブル83の一例について、図4を参照しながら説明する。
暗号文関係テーブル83のカラムは、確率的暗号ID暗号文831と決定的暗号ID暗号文832である。
確率的暗号ID暗号文831は、確率的暗号テーブル81の確率的暗号ID811を決定的暗号化した暗号文である。
決定的暗号ID暗号文832は、決定的暗号テーブル82の決定的暗号ID821を決定的暗号化した暗号文である。
データベースのデータ登録処理の一例について、図5を参照しながら説明する。
ただし、アプリケーションサーバ2が、データM(例えば名前やカード番号に相当)と個人情報(例えば年齢に相当)を記憶しているものとする。
【0022】
図5の例は、データベースサーバ1が記憶するテーブルが図2〜4の状態であり、データM(名前=”HITACHI TARO”, カード番号=1111222222222222)と個人情報(年齢=35)についてデータ登録処理を実行する場合である。
まず、ステップ501において、アプリケーションサーバ2が、確率的暗号化処理を、暗号鍵KとデータMを入力として実行し、出力された確率的暗号文PC=PE(K,M)を取得し、また決定的暗号化処理を、暗号鍵KとデータMを入力として実行して、出力された決定的暗号文DC=DE(K,M)を取得して、データベースサーバ1に確率的暗号文812と決定的暗号文と個人情報822を送信する。
【0023】
ステップ502において、データベースサーバ1が、アプリケーションサーバ2から確率的暗号文と決定的暗号文と個人情報を受信して、確率的暗号テーブル81のユニーク制約を満たすように確率的暗号ID811をランダムに生成して、確率的暗号テーブル81に生成した確率的暗号ID811と受信した確率的暗号文812と個人情報814を含むレコードを挿入して、決定的暗号テーブル82に受信した決定的暗号文822を含むレコードが記憶されているならば、ステップ503を実行して、決定的暗号テーブル82に受信した決定的暗号文822を含むレコードが記憶されていないならば、ステップ504を実行する。
【0024】
ステップ503において、データベースサーバ1が、決定的暗号テーブル82から受信した決定的暗号文822を含むレコードを選択して、選択したレコードから決定的暗号IDを射影して(すなわち抽出して)、アプリケーションサーバ2に生成した確率的暗号ID811と射影した決定的暗号ID821を送信して、ステップ504を実行する。
【0025】
ステップ504において、データベースサーバ1が、決定的暗号テーブル82のユニーク制約を満たすように決定的暗号ID821をランダムに生成して、決定的暗号テーブル82に生成した決定的暗号ID821と受信した決定的暗号文822を含むレコードを挿入して、データベースのインデックス値登録処理を、生成した決定的暗号ID821と受信した決定的暗号文822を入力として実行して、アプリケーションサーバ2に生成した確率的暗号ID811と決定的暗号ID821を送信して、ステップ505を実行する。
【0026】
ステップ505において、アプリケーションサーバ2が、データベースサーバ1から確率的暗号ID811と決定的暗号ID821を受信して、鍵付きセキュアハッシュ処理を、暗号鍵Kと決定的暗号文DCを入力として実行して、出力されたセキュアハッシュ値KH=H(K,DC)を取得して、決定的暗号化処理を、暗号鍵KHと受信した確率的暗号IDを入力として実行して、出力された確率的暗号ID暗号文DE(KH,確率的暗号ID)を取得して、決定的暗号化処理を、暗号鍵KHと受信した決定的暗号IDを入力として実行して、出力された決定的暗号ID暗号文DE(KH,決定的暗号ID)を取得して、データベースサーバ1に確率的暗号ID暗号文と決定的暗号ID暗号文を送信する。
【0027】
ステップ506において、データベースサーバ1が、
アプリケーションサーバ2から確率的暗号ID暗号文と決定的暗号ID暗号文を受信して、暗号文関係テーブル83に受信した確率的暗号ID暗号文と決定的暗号ID暗号文を含むレコードを挿入する。
データベースのインデックス値登録処理の一例について、図6を参照しながら説明する。
ただし、決定的暗号IDと決定的暗号文を入力とする。
【0028】
図6の例は、図5のステップ504において、決定的暗号ID= DIDC981と決定的暗号文= DE(K, 1111222222222222)を入力としてインデックス値登録処理を実行する場合である。
ステップ601において、データベースサーバ1が、データベースのインデックス値取得処理を、決定的暗号文を入力として実行して、出力された登録インデックス値を取得する。
【0029】
ステップ602において、データベースサーバ1が、決定的暗号テーブル82からインデックス値が登録インデックス値以上であるレコードを選択して、選択したレコードのインデックス値をインクリメントして更新する。
【0030】
ステップ603において、データベースサーバ1が、決定的暗号テーブル82から決定的暗号ID821を含むレコードを選択して、選択したレコードのインデックス値を登録インデックス値に更新する。
【0031】
データベースのインデックス値取得処理の一例について、図7を参照しながら説明する。
ただし、決定的暗号文を入力として、インデックス値を出力とする。
ステップ701において、データベースサーバ1が、決定的暗号テーブル82にレコードが無いならば、出力インデックス値を1として、ステップ707を実行する。
ステップ702において、データベースサーバ1が、決定的暗号テーブル82から最大のインデックス値を取得して、下限インデックス値を1として、上限インデックス値を取得した最大インデックス値とする。
【0032】
ステップ703において、データベースサーバ1が、下限インデックス値が上限インデックス値以下ならば、中央インデックス値を下限インデックス値と上限インデックス値の平均の整数値として、下限インデックス値が上限インデックス値より大きいならば、出力インデックス値を下限インデックス値として、ステップ707を実行する。
【0033】
ステップ704において、データベースサーバ1が、決定的暗号テーブル82から中央インデックス値を含むレコードを選択して、選択したレコードから決定的暗号文822を射影して、アプリケーションサーバ2に入力決定的暗号文と射影した中央決定的暗号文を送信する。
【0034】
ステップ705において、アプリケーションサーバ2が、データベースサーバ1から入力決定的暗号文と中央決定的暗号文を受信して、決定的復号処理を、暗号鍵Kと入力決定的暗号文を入力として実行して、出力された入力平文=DD(K,入力決定的暗号文)を取得して、決定的復号処理を、暗号鍵Kと中央決定的暗号文を入力として実行して、出力された中央平文=DD(K,中央決定的暗号文)を取得して、入力平文と中央平文のソート順番を比較して、ソート順番比較結果として「同一平文」または「昇順」または「降順」を取得して、データベースサーバ1にソート順番比較結果を送信する。
ここで、入力決定的暗号文とは、バイナリサーチにおける検索したい値の暗号文 ということであり、また中央決定的暗号文とはバイナリサーチにおける中央の値の暗号文 ということである。
【0035】
例えば、平文が文字列の場合で、
入力平文「ABC」と中央平文「ABC」のソート順番比較結果は「同一平文」であり、
入力平文「ABC」と中央平文「ACC」のソート順番比較結果は「昇順」であり、
入力平文「ABC」と中央平文「ABB」のソート順番比較結果は「降順」である。
例えば、平文が数値の場合で、
入力平文「1000」と中央平文「1000」のソート順番比較結果は「同一平文」であり、
入力平文「1000」と中央平文「1001」のソート順番比較結果は「昇順」であり、
入力平文「1000」と中央平文「999」のソート順番比較結果は「降順」である。
ステップ706において、データベースサーバ1が、アプリケーションサーバ2からソート順番比較結果を受信して、ソート順番比較結果が「同一平文」ならば、出力インデックス値を中央インデックス値として、ステップ707を実行してソート順番比較結果が「昇順」ならば、上限インデックス値を中央インデックス値−1として、ステップ703を実行して、ソート順番比較結果が「降順」ならば、下限インデックス値を中央インデックス値+1として、ステップ703を実行する。
【0036】
ステップ707において、データベースサーバ1が、出力インデックス値を出力する。
データベースのインデックス値取得処理の例を、図6のステップ601において、決定的暗号文= DE(K, 1111222222222222)を入力として実行する場合で説明する。
1ステップ目に、ステップ701において、決定的暗号テーブルにレコードが有る場合なので、何も実行しない。
【0037】
2ステップ目に、ステップ702において、下限インデックス値=1、上限インデックス値=3。
3ステップ目に、ステップ703において、下限インデックス値1≦上限インデックス値3の場合なので、中央インデックス値=(下限インデックス値1+上限インデックス値3)/2=2。
4ステップ目に、ステップ704において、入力決定的暗号文=DE(K, 1111222222222222)と中央決定的暗号文=DE(K,1111333333333333)を送信。
【0038】
5ステップ目に、ステップ705において、入力平文=1111222222222222と中央平文=1111333333333333のソート順番を比較して、ソート順番比較結果「昇順」を送信。
6ステップ目に、ステップ706において、ソート順番比較結果が「昇順」の場合なので、上限インデックス値=中央インデックス値2−1=1。
7ステップ目に、ステップ703において、下限インデックス値1≦上限インデックス値1の場合なので、中央インデックス値=(下限インデックス値1+上限インデックス値1)/2=1。
【0039】
8ステップ目に、ステップ704において、入力決定的暗号文=DE(K, 1111222222222222)と中央決定的暗号文=DE(K,1111111111111111)を送信。
9ステップ目に、ステップ705において、入力平文=1111222222222222と中央平文=1111111111111111のソート順番を比較して、ソート順番比較結果「降順」を送信。
10ステップ目に、ステップ706において、ソート順番比較結果が「降順」の場合なので、下限インデックス値=中央インデックス値1+1=2。
11ステップ目に、ステップ703において、下限インデックス値2>上限インデックス値1の場合なので、出力インデックス値=下限インデックス値2。
12ステップ目に、ステップ707において、出力インデックス値2を出力する。
【0040】
データベースのデータ完全一致検索処理の一例について、図8を参照しながら説明する。
ただし、アプリケーションサーバ2が、データM(例えば名前やカード番号に相当)を記憶しているものとする。
図8の例は、データベースサーバ1が記憶するテーブルが図2〜4の状態であり、データM(名前=”HITACHI TARO”)についてデータ完全一致検索処理を実行する場合である。
ステップ801において、アプリケーションサーバ2が、決定的暗号化処理を、暗号鍵KとデータMを入力として実行して、出力された決定的暗号文DC=DE(K,M)を取得して、データベースサーバ1に決定的暗号文を送信する。
【0041】
ステップ802において、データベースサーバ1が、アプリケーションサーバ2から決定的暗号文を受信して、決定的暗号テーブル82から受信した決定的暗号文を含むレコードを選択して、選択したレコードから決定的暗号ID821を射影して、アプリケーションサーバ2に射影した決定的暗号ID821を送信する。
【0042】
ステップ803において、アプリケーションサーバ2が、データベースサーバ1から決定的暗号ID821を受信して、鍵付きセキュアハッシュ処理を、暗号鍵Kと決定的暗号文DCを入力として実行して、出力されたセキュアハッシュ値KH=H(K,DC)を取得して、決定的暗号化処理を、暗号鍵KHと受信した決定的暗号ID821を入力として実行して、出力された決定的暗号ID暗号文DE(KH,決定的暗号ID)を取得して、
データベースサーバ1に決定的暗号ID暗号文822を送信する。
【0043】
ステップ804において、データベースサーバ1が、アプリケーションサーバ2から決定的暗号ID暗号文を受信して、暗号文関係テーブル83から受信した決定的暗号ID暗号文を含むレコードを選択して、選択したレコードから確率的暗号ID暗号文を射影して、アプリケーションサーバ2に射影した確率的暗号ID暗号文を送信する。
【0044】
ステップ805において、アプリケーションサーバ2が、データベースサーバ1から確率的暗号ID暗号文を受信して、鍵付きセキュアハッシュ処理を、暗号鍵Kと決定的暗号文DCを入力として実行して、出力されたセキュアハッシュ値KH=H(K,DC)を取得して、決定的復号処理を、暗号鍵KHと受信した確率的暗号ID暗号文を入力として実行して、出力された確率的暗号ID=DD(KH,確率的暗号ID暗号文)を取得して、データベースサーバ1に確率的暗号IDを送信する。
【0045】
ステップ806において、データベースサーバ1が、アプリケーションサーバ2から確率的暗号IDを受信して、確率的暗号テーブル81から受信した確率的暗号ID811を含むレコードを選択して、アプリケーションサーバ2に選択したレコードを送信する。
【0046】
ステップ807において、アプリケーションサーバ2が、データベースサーバ1からレコードを受信して、受信したレコードから確率的暗号文を射影して、確率的復号処理を、暗号鍵Kと射影した確率的暗号文を入力として実行して、出力された平文M=PD(K,確率的暗号文)を取得して、受信したレコードの確率的暗号文を平文Mに置換して、データ完全一致検索処理の検索結果としてレコードを取得する。
【0047】
次に、データベースのデータ部分一致検索処理の一例について、図9を参照しながら説明する。ただし、アプリケーションサーバ2が、検索範囲開始データM1と検索範囲終端データM2(例えば名前やカード番号に相当)を記憶しているものとする。
図9の例は、データベースサーバ1が記憶するテーブルが図2〜4の状態であり、検索範囲開始データM1(カード番号=1000000000000000)と検索範囲終端データM2(カード番号=2000000000000000)についてデータ部分一致検索処理を実行する場合である。
データ部分一致検索とは、データが文字列の場合では文字列前方一致検索であり、データが数値の場合では数値範囲検索である。
【0048】
例えば、文字列「AAA」から始まるデータを検索する場合、検索範囲開始データM1は「AAA」、検索範囲終端データM2は「AAB」であり、数値「1000」以上「2000」未満のデータを検索する場合、検索範囲開始データM1は「1000」、検索範囲終端データM2は「2000」である。
ステップ901において、アプリケーションサーバ2が、決定的暗号化処理を、暗号鍵Kと検索範囲開始データM1を入力として実行して、出力された検索範囲開始データ暗号文DC1=DE(K,M1)を取得して、決定的暗号化処理を、暗号鍵Kと検索範囲終端データM2を入力として実行して、出力された検索範囲終端データ暗号文DC2=DE(K,M2)を取得して、データベースサーバ1に検索範囲開始データ暗号文と検索範囲終端データ暗号文を送信する。
【0049】
ステップ902において、データベースサーバ1が、アプリケーションサーバ2から検索範囲開始データ暗号文と検索範囲終端データ暗号文を受信して、データベースのインデックス値取得処理を、検索範囲開始データ暗号文を入力として実行して、出力された検索範囲開始インデックス値を取得して、データベースのインデックス値取得処理を、検索範囲終端データ暗号文を入力として実行して、出力された検索範囲終端インデックス値を取得して、決定的暗号テーブルからインデックス値が検索範囲開始インデックス値以上かつ検索範囲終端インデックス値未満であるレコードを選択して、選択したレコード毎にステップ903以降を実行する。
【0050】
ステップ903において、データベースサーバ1が、選択したレコードから決定的暗号ID821と決定的暗号文822を射影して、アプリケーションサーバ2に射影した決定的暗号ID821と決定的暗号文822を送信する。
ステップ904において、アプリケーションサーバ2が、データベースサーバ1から決定的暗号ID821と決定的暗号文DCを受信して、決定的復号処理を、暗号鍵Kと受信した決定的暗号文DCを入力として実行して、出力された平文M=PD(K,DC)を取得して、検索範囲開始データM1と平文Mのソート順番を比較して、ソート順番比較結果として「同一平文」または「昇順」を取得したならば、かつ、平文Mと検索範囲終端データM2のソート順番を比較して、ソート順番比較結果として「昇順」を取得したならば、鍵付きセキュアハッシュ処理を、暗号鍵Kと受信した決定的暗号文DCを入力として実行して、出力されたセキュアハッシュ値KH=H(K,DC)を取得して、決定的暗号化処理を、暗号鍵KHと受信した決定的暗号IDを入力として実行して、出力された決定的暗号ID暗号文DE(KH,決定的暗号ID)を取得して、データベースサーバ1に決定的暗号ID暗号文を送信する。
【0051】
ステップ905において、データベースサーバ1が、アプリケーションサーバ2から決定的暗号ID暗号文を受信して、暗号文関係テーブル83から受信した決定的暗号ID暗号文を含むレコードを選択して、選択したレコードから確率的暗号ID暗号文を射影して、アプリケーションサーバ2に射影した確率的暗号ID暗号文を送信する。
【0052】
ステップ906において、アプリケーションサーバ2が、データベースサーバ1から確率的暗号ID暗号文を受信して、鍵付きセキュアハッシュ処理を、暗号鍵Kと決定的暗号文DCを入力として実行して、出力されたセキュアハッシュ値KH=H(K,DC)を取得して、決定的復号処理を、暗号鍵KHと受信した確率的暗号ID暗号文を入力として実行して、出力された確率的暗号ID=DD(KH,確率的暗号ID暗号文)を取得して、データベースサーバ1に確率的暗号IDを送信する。
【0053】
ステップ907において、データベースサーバ1が、アプリケションサーバ2から確率的暗号IDを受信して、確率的暗号テーブル81から受信した確率的暗号ID811を含むレコードを選択して、アプリケーションサーバ2に選択したレコードを送信する。
ステップ908において、アプリケーションサーバ2が、データベースサーバ1からレコードを受信して、受信したレコードから確率的暗号文を射影して、確率的復号処理を、暗号鍵Kと射影した確率的暗号文を入力として実行して、出力された平文M=PD(K,確率的暗号文)を取得して、受信したレコードの確率的暗号文を平文Mに置換して、データ部分一致検索処理の検索結果としてレコードを取得する。
【符号の説明】
【0054】
1 データベースサーバ
2 アプリケーションサーバ
3 ネットワーク
4、5 中央演算処理装置
6,7 主記憶装置
8,9 補助記憶装置
12,13 ネットワーク通信装置
10,11 データバス
81 確率的暗号テーブル
82 決定的暗号テーブル
83 暗号文関係テーブル

【特許請求の範囲】
【請求項1】
データベースサーバとアプリケーションサーバがネットワークを介して接続して構成され、前記データベースサーバのデータベースが確率的暗号テーブルと決定的暗号テーブルと暗号文関係テーブルとを記憶し、前記アプリケーションサーバのデータベースが暗号鍵を記憶するデータベース暗号化システムであって、
前記データベースへのデータ登録処理を行うために、
前記アプリケーションサーバが、前記データベースへの登録対象データを確率的暗号化と決定的暗号化し、前記データベースサーバに確率的暗号文5と決定的暗号文とを送信する手段を備え、
前記データベースサーバが、前記確率的暗号テーブルに確率的暗号文と確率的暗号IDを含むレコードを挿入し、前記決定的暗号テーブルに決定的暗号文と決定的暗号IDを含むレコードを挿入した後、前記アプリケーションサーバに確率的暗号IDと決定的暗号IDを送信する手段を備え、
アプリケーションサーバが、前記決定的暗号文から取得した暗号鍵で確率的暗号IDと決定的暗号IDを決定的暗号化し、前記データベースサーバに確率的暗号ID暗号文と決定的暗号ID暗号文を送信する手段を備え、
前記データベースサーバが、前記暗号文関係テーブルに確率的暗号ID暗号文と決定的暗号ID暗号文を含むレコードを挿入する手段を備えることを特徴とするデータベース暗号化システム。
【請求項2】
前記データベースのデータ完全一致検索処理として、
前記アプリケーションサーバが、
データを決定的暗号化して前記データベースサーバに決定的暗号文を送信する手段を備え、
前記データベースサーバが、前記決定的暗号テーブルから決定的暗号文を含むレコードから決定的暗号IDを射影し、アプリケーションサーバに決定的暗号IDを送信する手段を備え、
前記アプリケーションサーバが、前記決定的暗号文から取得した暗号鍵で決定的暗号IDを決定的暗号化して前記データベースサーバに決定的暗号ID暗号文を送信する手段を備え、
前記データベースサーバが、前記暗号文関係テーブルから決定的暗号ID暗号文を含むレコードから確率的暗号ID暗号文を射影し、前記アプリケーションサーバに確率的暗号ID暗号文を送信する手段を備え、
前記アプリケーションサーバが、前記決定的暗号文から取得した暗号鍵で確率的暗号ID暗号文を決定的復号し、前記データベースサーバに確率的暗号IDを送信する手段を備え、
前記データベースサーバが、前記確率的暗号テーブルから確率的暗号IDを含むレコードを選択し、前記アプリケーションサーバに当該レコードを送信する手段を備え、
前記アプリケーションサーバが、前記データベースサーバから受信したレコードから確率的暗号文を射影し、確率的暗号文を確率的復号し、レコードの確率的暗号文を平文に置換し、検索結果としてレコードを取得する手段を備えることを特徴とする請求項1に記載のデータベース暗号化システム。
【請求項3】
データベースのデータ登録処理として、
前記データベースサーバが、前記データベースのインデックス値登録処理を決定的暗号IDと決定的暗号文を入力として実行する手段を備え、
データベースのデータ部分一致検索処理として、
前記アプリケーションサーバが、検索範囲開始データと検索範囲終端データを決定的暗号化し、前記データベースサーバに検索範囲開始データ暗号文と検索範囲終端データ暗号文を送信する手段を備え、
前記データベースサーバが、前記データベースのインデックス値取得処理を検索範囲開始データ暗号文を入力として実行し、前記データベースのインデックス値取得処理を検索範囲終端データ暗号文を入力として実行し、前記決定的暗号テーブルからインデックス値が検索範囲開始インデックス値以上かつ検索範囲終端インデックス値未満であるレコードから決定的暗号IDと決定的暗号文を射影し、前記アプリケーションサーバに決定的暗号IDと決定的暗号文を送信する手段を備え、
前記アプリケーションサーバが、前記決定的暗号文を決定的復号し、平文のソート順番が検索範囲開始データと検索範囲終端データの間ならば、前記決定的暗号文から取得した暗号鍵で決定的暗号IDを決定的暗号化し、前記データベースサーバに決定的暗号ID暗号文を送信する手段を備え、
前記データベースサーバが、前記暗号文関係テーブルから決定的暗号ID暗号文を含むレコードから確率的暗号ID暗号文を射影し、前記アプリケーションサーバに確率的暗号ID暗号文を送信する手段を備え、
前記アプリケーションサーバが、前記決定的暗号文から取得した暗号鍵で確率的暗号ID暗号文を決定的復号し、前記データベースサーバに確率的暗号IDを送信する手段を備え、
前記データベースサーバが、前記確率的暗号テーブルから確率的暗号IDを含むレコードを選択し、前記アプリケーションサーバに当該レコードを送信する手段を備え、
前記アプリケーションサーバが、前記データベースサーバから受信したレコードから確率的暗号文を射影し、確率的暗号文を確率的復号し、前記レコードの確率的暗号文を平文に置換し、検索結果としてレコードを取得する手段を備えることを特徴とする請求項1に記載のデータベース暗号化システム。
【請求項4】
データベースサーバとアプリケーションサーバがネットワークを介して接続して構成され、前記データベースサーバのデータベースが確率的暗号テーブルと決定的暗号テーブルと暗号文関係テーブルとを記憶し、前記アプリケーションサーバのデータベースが暗号鍵を記憶するデータベース暗号化方法であって、
前記データベースへのデータ登録処理を行うために、
前記アプリケーションサーバが、前記データベースへの登録対象データを確率的暗号化と決定的暗号化し、前記データベースサーバに確率的暗号文5と決定的暗号文とを送信するステップを備え、
前記データベースサーバが、前記確率的暗号テーブルに確率的暗号文と確率的暗号IDを含むレコードを挿入し、前記決定的暗号テーブルに決定的暗号文と決定的暗号IDを含むレコードを挿入した後、前記アプリケーションサーバに確率的暗号IDと決定的暗号IDを送信するステップを備え、
アプリケーションサーバが、前記決定的暗号文から取得した暗号鍵で確率的暗号IDと決定的暗号IDを決定的暗号化し、前記データベースサーバに確率的暗号ID暗号文と決定的暗号ID暗号文を送信するステップを備え、
前記データベースサーバが、前記暗号文関係テーブルに確率的暗号ID暗号文と決定的暗号ID暗号文を含むレコードを挿入する手ステップを備えることを特徴とするデータベース暗号化方法。
【請求項5】
前記データベースのデータ完全一致検索処理として、
前記アプリケーションサーバが、
データを決定的暗号化して前記データベースサーバに決定的暗号文を送信するステップを備え、
前記データベースサーバが、前記決定的暗号テーブルから決定的暗号文を含むレコードから決定的暗号IDを射影し、アプリケーションサーバに決定的暗号IDを送信するステップを備え、
前記アプリケーションサーバが、前記決定的暗号文から取得した暗号鍵で決定的暗号IDを決定的暗号化して前記データベースサーバに決定的暗号ID暗号文を送信するステップを備え、
前記データベースサーバが、前記暗号文関係テーブルから決定的暗号ID暗号文を含むレコードから確率的暗号ID暗号文を射影し、前記アプリケーションサーバに確率的暗号ID暗号文を送信するステップを備え、
前記アプリケーションサーバが、前記決定的暗号文から取得した暗号鍵で確率的暗号ID暗号文を決定的復号し、前記データベースサーバに確率的暗号IDを送信するステップを備え、
前記データベースサーバが、前記確率的暗号テーブルから確率的暗号IDを含むレコードを選択し、前記アプリケーションサーバに当該レコードを送信するステップを備え、
前記アプリケーションサーバが、前記データベースサーバから受信したレコードから確率的暗号文を射影し、確率的暗号文を確率的復号し、レコードの確率的暗号文を平文に置換し、検索結果としてレコードを取得するステップを備えることを特徴とする請求項4に記載のデータベース暗号化方法。
【請求項6】
データベースのデータ登録処理として、
前記データベースサーバが、前記データベースのインデックス値登録処理を決定的暗号IDと決定的暗号文を入力として実行するステップを備え、
データベースのデータ部分一致検索処理として、
前記アプリケーションサーバが、検索範囲開始データと検索範囲終端データを決定的暗号化し、前記データベースサーバに検索範囲開始データ暗号文と検索範囲終端データ暗号文を送信するステップを備え、
前記データベースサーバが、前記データベースのインデックス値取得処理を検索範囲開始データ暗号文を入力として実行し、前記データベースのインデックス値取得処理を検索範囲終端データ暗号文を入力として実行し、前記決定的暗号テーブルからインデックス値が検索範囲開始インデックス値以上かつ検索範囲終端インデックス値未満であるレコードから決定的暗号IDと決定的暗号文を射影し、前記アプリケーションサーバに決定的暗号IDと決定的暗号文を送信するステップを備え、
前記アプリケーションサーバが、前記決定的暗号文を決定的復号し、平文のソート順番が検索範囲開始データと検索範囲終端データの間ならば、前記決定的暗号文から取得した暗号鍵で決定的暗号IDを決定的暗号化し、前記データベースサーバに決定的暗号ID暗号文を送信するステップを備え、
前記データベースサーバが、前記暗号文関係テーブルから決定的暗号ID暗号文を含むレコードから確率的暗号ID暗号文を射影し、前記アプリケーションサーバに確率的暗号ID暗号文を送信するステップを備え、
前記アプリケーションサーバが、前記決定的暗号文から取得した暗号鍵で確率的暗号ID暗号文を決定的復号し、前記データベースサーバに確率的暗号IDを送信するステップを備え、
前記データベースサーバが、前記確率的暗号テーブルから確率的暗号IDを含むレコードを選択し、前記アプリケーションサーバに当該レコードを送信するステップを備え、
前記アプリケーションサーバが、前記データベースサーバから受信したレコードから確率的暗号文を射影し、確率的暗号文を確率的復号し、前記レコードの確率的暗号文を平文に置換し、検索結果としてレコードを取得するステップを備えることを特徴とする請求項1に記載のデータベース暗号化方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate


【公開番号】特開2011−198079(P2011−198079A)
【公開日】平成23年10月6日(2011.10.6)
【国際特許分類】
【出願番号】特願2010−64555(P2010−64555)
【出願日】平成22年3月19日(2010.3.19)
【出願人】(000233055)株式会社日立ソリューションズ (1,610)
【Fターム(参考)】