(57)【特許請求の範囲】
【請求項１】
データベースサーバとアプリケーションサーバがネットワークを介して接続して構成され、前記データベースサーバのデータベースが確率的暗号テーブルと決定的暗号テーブルと暗号文関係テーブルとを記憶し、前記アプリケーションサーバのデータベースが暗号鍵を記憶するデータベース暗号化システムであって、
前記データベースへのデータ登録処理を行うために、
前記アプリケーションサーバが、前記データベースへの登録対象データを確率的暗号化と決定的暗号化し、前記データベースサーバに確率的暗号文と決定的暗号文とを送信する手段を備え、
前記データベースサーバが、前記確率的暗号テーブルに確率的暗号文と確率的暗号ＩＤを含むレコードを挿入し、前記決定的暗号テーブルに決定的暗号文と決定的暗号ＩＤを含むレコードを挿入した後、前記アプリケーションサーバに確率的暗号ＩＤと決定的暗号ＩＤを送信する手段を備え、
アプリケーションサーバが、前記決定的暗号文から取得した暗号鍵で確率的暗号ＩＤと決定的暗号ＩＤを決定的暗号化し、前記データベースサーバに確率的暗号ＩＤ暗号文と決定的暗号ＩＤ暗号文を送信する手段を備え、
前記データベースサーバが、前記暗号文関係テーブルに確率的暗号ＩＤ暗号文と決定的暗号ＩＤ暗号文を含むレコードを挿入する手段を備えることを特徴とするデータベース暗号化システム。
【請求項２】
前記データベースのデータ完全一致検索処理として、
前記アプリケーションサーバが、
データを決定的暗号化して前記データベースサーバに決定的暗号文を送信する手段を備え、
前記データベースサーバが、前記決定的暗号テーブルから決定的暗号文を含むレコードから決定的暗号ＩＤを射影し、アプリケーションサーバに決定的暗号ＩＤを送信する手段を備え、
前記アプリケーションサーバが、前記決定的暗号文から取得した暗号鍵で決定的暗号ＩＤを決定的暗号化して前記データベースサーバに決定的暗号ＩＤ暗号文を送信する手段を備え、
前記データベースサーバが、前記暗号文関係テーブルから決定的暗号ＩＤ暗号文を含むレコードから確率的暗号ＩＤ暗号文を射影し、前記アプリケーションサーバに確率的暗号ＩＤ暗号文を送信する手段を備え、
前記アプリケーションサーバが、前記決定的暗号文から取得した暗号鍵で確率的暗号ＩＤ暗号文を決定的復号し、前記データベースサーバに確率的暗号ＩＤを送信する手段を備え、
前記データベースサーバが、前記確率的暗号テーブルから確率的暗号ＩＤを含むレコードを選択し、前記アプリケーションサーバに当該レコードを送信する手段を備え、
前記アプリケーションサーバが、前記データベースサーバから受信したレコードから確率的暗号文を射影し、確率的暗号文を確率的復号し、レコードの確率的暗号文を平文に置換し、検索結果としてレコードを取得する手段を備えることを特徴とする請求項１に記載のデータベース暗号化システム。
【請求項３】
データベースのデータ登録処理として、
前記データベースサーバが、前記データベースのインデックス値登録処理を決定的暗号ＩＤと決定的暗号文を入力として実行する手段を備え、
データベースのデータ部分一致検索処理として、
前記アプリケーションサーバが、検索範囲開始データと検索範囲終端データを決定的暗号化し、前記データベースサーバに検索範囲開始データ暗号文と検索範囲終端データ暗号文を送信する手段を備え、
前記データベースサーバが、前記データベースのインデックス値取得処理を検索範囲開始データ暗号文を入力として実行し、前記データベースのインデックス値取得処理を検索範囲終端データ暗号文を入力として実行し、前記決定的暗号テーブルからインデックス値が検索範囲開始インデックス値以上かつ検索範囲終端インデックス値未満であるレコードから決定的暗号ＩＤと決定的暗号文を射影し、前記アプリケーションサーバに決定的暗号ＩＤと決定的暗号文を送信する手段を備え、
前記アプリケーションサーバが、前記決定的暗号文を決定的復号し、平文のソート順番が検索範囲開始データと検索範囲終端データの間ならば、前記決定的暗号文から取得した暗号鍵で決定的暗号ＩＤを決定的暗号化し、前記データベースサーバに決定的暗号ＩＤ暗号文を送信する手段を備え、
前記データベースサーバが、前記暗号文関係テーブルから決定的暗号ＩＤ暗号文を含むレコードから確率的暗号ＩＤ暗号文を射影し、前記アプリケーションサーバに確率的暗号ＩＤ暗号文を送信する手段を備え、
前記アプリケーションサーバが、前記決定的暗号文から取得した暗号鍵で確率的暗号ＩＤ暗号文を決定的復号し、前記データベースサーバに確率的暗号ＩＤを送信する手段を備え、
前記データベースサーバが、前記確率的暗号テーブルから確率的暗号ＩＤを含むレコードを選択し、前記アプリケーションサーバに当該レコードを送信する手段を備え、
前記アプリケーションサーバが、前記データベースサーバから受信したレコードから確率的暗号文を射影し、確率的暗号文を確率的復号し、前記レコードの確率的暗号文を平文に置換し、検索結果としてレコードを取得する手段を備えることを特徴とする請求項１に記載のデータベース暗号化システム。
【請求項４】
データベースサーバとアプリケーションサーバがネットワークを介して接続して構成され、前記データベースサーバのデータベースが確率的暗号テーブルと決定的暗号テーブルと暗号文関係テーブルとを記憶し、前記アプリケーションサーバのデータベースが暗号鍵を記憶するデータベース暗号化方法であって、
前記データベースへのデータ登録処理を行うために、
前記アプリケーションサーバが、前記データベースへの登録対象データを確率的暗号化と決定的暗号化し、前記データベースサーバに確率的暗号文と決定的暗号文とを送信するステップを備え、
前記データベースサーバが、前記確率的暗号テーブルに確率的暗号文と確率的暗号ＩＤを含むレコードを挿入し、前記決定的暗号テーブルに決定的暗号文と決定的暗号ＩＤを含むレコードを挿入した後、前記アプリケーションサーバに確率的暗号ＩＤと決定的暗号ＩＤを送信するステップを備え、
アプリケーションサーバが、前記決定的暗号文から取得した暗号鍵で確率的暗号ＩＤと決定的暗号ＩＤを決定的暗号化し、前記データベースサーバに確率的暗号ＩＤ暗号文と決定的暗号ＩＤ暗号文を送信するステップを備え、
前記データベースサーバが、前記暗号文関係テーブルに確率的暗号ＩＤ暗号文と決定的暗号ＩＤ暗号文を含むレコードを挿入するステップを備えることを特徴とするデータベース暗号化方法。
【請求項５】
前記データベースのデータ完全一致検索処理として、
前記アプリケーションサーバが、
データを決定的暗号化して前記データベースサーバに決定的暗号文を送信するステップを備え、
前記データベースサーバが、前記決定的暗号テーブルから決定的暗号文を含むレコードから決定的暗号ＩＤを射影し、アプリケーションサーバに決定的暗号ＩＤを送信するステップを備え、
前記アプリケーションサーバが、前記決定的暗号文から取得した暗号鍵で決定的暗号ＩＤを決定的暗号化して前記データベースサーバに決定的暗号ＩＤ暗号文を送信するステップを備え、
前記データベースサーバが、前記暗号文関係テーブルから決定的暗号ＩＤ暗号文を含むレコードから確率的暗号ＩＤ暗号文を射影し、前記アプリケーションサーバに確率的暗号ＩＤ暗号文を送信するステップを備え、
前記アプリケーションサーバが、前記決定的暗号文から取得した暗号鍵で確率的暗号ＩＤ暗号文を決定的復号し、前記データベースサーバに確率的暗号ＩＤを送信するステップを備え、
前記データベースサーバが、前記確率的暗号テーブルから確率的暗号ＩＤを含むレコードを選択し、前記アプリケーションサーバに当該レコードを送信するステップを備え、
前記アプリケーションサーバが、前記データベースサーバから受信したレコードから確率的暗号文を射影し、確率的暗号文を確率的復号し、レコードの確率的暗号文を平文に置換し、検索結果としてレコードを取得するステップを備えることを特徴とする請求項４に記載のデータベース暗号化方法。
【請求項６】
データベースのデータ登録処理として、
前記データベースサーバが、前記データベースのインデックス値登録処理を決定的暗号ＩＤと決定的暗号文を入力として実行するステップを備え、
データベースのデータ部分一致検索処理として、
前記アプリケーションサーバが、検索範囲開始データと検索範囲終端データを決定的暗号化し、前記データベースサーバに検索範囲開始データ暗号文と検索範囲終端データ暗号文を送信するステップを備え、
前記データベースサーバが、前記データベースのインデックス値取得処理を検索範囲開始データ暗号文を入力として実行し、前記データベースのインデックス値取得処理を検索範囲終端データ暗号文を入力として実行し、前記決定的暗号テーブルからインデックス値が検索範囲開始インデックス値以上かつ検索範囲終端インデックス値未満であるレコードから決定的暗号ＩＤと決定的暗号文を射影し、前記アプリケーションサーバに決定的暗号ＩＤと決定的暗号文を送信するステップを備え、
前記アプリケーションサーバが、前記決定的暗号文を決定的復号し、平文のソート順番が検索範囲開始データと検索範囲終端データの間ならば、前記決定的暗号文から取得した暗号鍵で決定的暗号ＩＤを決定的暗号化し、前記データベースサーバに決定的暗号ＩＤ暗号文を送信するステップを備え、
前記データベースサーバが、前記暗号文関係テーブルから決定的暗号ＩＤ暗号文を含むレコードから確率的暗号ＩＤ暗号文を射影し、前記アプリケーションサーバに確率的暗号ＩＤ暗号文を送信するステップを備え、
前記アプリケーションサーバが、前記決定的暗号文から取得した暗号鍵で確率的暗号ＩＤ暗号文を決定的復号し、前記データベースサーバに確率的暗号ＩＤを送信するステップを備え、
前記データベースサーバが、前記確率的暗号テーブルから確率的暗号ＩＤを含むレコードを選択し、前記アプリケーションサーバに当該レコードを送信するステップを備え、
前記アプリケーションサーバが、前記データベースサーバから受信したレコードから確率的暗号文を射影し、確率的暗号文を確率的復号し、前記レコードの確率的暗号文を平文に置換し、検索結果としてレコードを取得するステップを備えることを特徴とする請求項４に記載のデータベース暗号化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースのセキュリティを強化するデータベース暗号化システムに関する。
【背景技術】
【０００２】
データベースに格納されているデータは、データベース管理者による不正持ち出しや外部不正者によるＳＱＬインジェクション攻撃に晒されており、データ漏洩が問題になっている。
そこで、データベースのセキュリティ対策として、データを暗号化してデータベースに格納するデータベース暗号化システムがある。
【０００３】
図１０に、特許文献１などに記載されている、データを決定的暗号化したデータベースの一例を示す。
データを決定的暗号化した場合、同一データは同一暗号文として記憶されため、不正者はレコード間で同一データであることが分かるという問題点がある。
図１１に、データを確率的暗号化したデータベースの一例を示す。
データを確率的暗号化した場合、同一データでも異なる暗号文として記憶されるため、不正者はレコード間で同一データであることが分からないという利点がある。
【０００４】
なお、確率的暗号化はデータに対し乱数を付加して暗号化するものである。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−９９１５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
データを決定的暗号化した場合、完全一致検索データを１回だけ暗号化して探せるため、完全一致検索処理を高速に行なうことができる。データを確率的暗号化した場合、完全一致検索データをレコード毎に暗号化して探すため、完全一致検索処理を高速に行なうことができない。
したがって、データを確率的暗号化したデータベースでは、完全一致検索処理を高速に行なうことができないという課題がある。
【０００７】
データを暗号化した場合、部分一致検索データに対応する全ての完全一致検索データについて暗号化して探すことは、高速に行なうことができない。
例えば、部分一致検索文字列「AAA」から始まるデータを検索する場合、完全一致検索データ「AAAA...A」から「AAAZ...Z」までの莫大な数の完全一致検索データについて暗号化して探す必要があり、事実上不可能である。
したがって、データを暗号化したデータベースでは、部分一致検索処理を高速に行なうことができないという課題がある。
【０００８】
本発明の目的は、データを確率的暗号化したデータベースでも完全一致検索処理を高速に行なうことができ、またデータを暗号化したデータベースでも、部分一致検索処理を高速に行なうことができるデータベース暗号化システム及び方法を提供することにある。
【課題を解決するための手段】
【０００９】
上記目的を達成するために本発明に係るシステムは、データベースサーバとアプリケーションサーバがネットワークを介して接続して構成され、前記データベースサーバのデータベースが確率的暗号テーブルと決定的暗号テーブルと暗号文関係テーブルとを記憶し、前記アプリケーションサーバのデータベースが暗号鍵を記憶するデータベース暗号化システムであって、
前記データベースへのデータ登録処理を行うために、
前記アプリケーションサーバが、前記データベースへの登録対象データを確率的暗号化と決定的暗号化し、前記データベースサーバに確率的暗号文と決定的暗号文とを送信する手段を備え、
前記データベースサーバが、前記確率的暗号テーブルに確率的暗号文と確率的暗号ＩＤを含むレコードを挿入し、前記決定的暗号テーブルに決定的暗号文と決定的暗号ＩＤを含むレコードを挿入した後、前記アプリケーションサーバに確率的暗号ＩＤと決定的暗号ＩＤを送信する手段を備え、
アプリケーションサーバが、前記決定的暗号文から取得した暗号鍵で確率的暗号ＩＤと決定的暗号ＩＤを決定的暗号化し、前記データベースサーバに確率的暗号ＩＤ暗号文と決定的暗号ＩＤ暗号文を送信する手段を備え、
前記データベースサーバが、前記暗号文関係テーブルに確率的暗号ＩＤ暗号文と決定的暗号ＩＤ暗号文を含むレコードを挿入する手段を備えることを特徴とする。
【００１０】
また、前記データベースのデータ完全一致検索処理として、
前記アプリケーションサーバが、
データを決定的暗号化して前記データベースサーバに決定的暗号文を送信する手段を備え、
前記データベースサーバが、前記決定的暗号テーブルから決定的暗号文を含むレコードから決定的暗号ＩＤを射影し、アプリケーションサーバに決定的暗号ＩＤを送信する手段を備え、
前記アプリケーションサーバが、前記決定的暗号文から取得した暗号鍵で決定的暗号ＩＤを決定的暗号化して前記データベースサーバに決定的暗号ＩＤ暗号文を送信する手段を備え、
前記データベースサーバが、前記暗号文関係テーブルから決定的暗号ＩＤ暗号文を含むレコードから確率的暗号ＩＤ暗号文を射影し、前記アプリケーションサーバに確率的暗号ＩＤ暗号文を送信する手段を備え、
前記アプリケーションサーバが、前記決定的暗号文から取得した暗号鍵で確率的暗号ＩＤ暗号文を決定的復号し、前記データベースサーバに確率的暗号ＩＤを送信する手段を備え、
前記データベースサーバが、前記確率的暗号テーブルから確率的暗号ＩＤを含むレコードを選択し、前記アプリケーションサーバに当該レコードを送信する手段を備え、
前記アプリケーションサーバが、前記データベースサーバから受信したレコードから確率的暗号文を射影し、確率的暗号文を確率的復号し、レコードの確率的暗号文を平文に置換し、検索結果としてレコードを取得する手段を備えることを特徴とする。
【００１１】
また、データベースのデータ登録処理として、
前記データベースサーバが、前記データベースのインデックス値登録処理を決定的暗号ＩＤと決定的暗号文を入力として実行する手段を備え、
データベースのデータ部分一致検索処理として、
前記アプリケーションサーバが、検索範囲開始データと検索範囲終端データを決定的暗号化し、前記データベースサーバに検索範囲開始データ暗号文と検索範囲終端データ暗号文を送信する手段を備え、
前記データベースサーバが、前記データベースのインデックス値取得処理を検索範囲開始データ暗号文を入力として実行し、前記データベースのインデックス値取得処理を検索範囲終端データ暗号文を入力として実行し、前記決定的暗号テーブルからインデックス値が検索範囲開始インデックス値以上かつ検索範囲終端インデックス値未満であるレコードから決定的暗号ＩＤと決定的暗号文を射影し、前記アプリケーションサーバに決定的暗号ＩＤと決定的暗号文を送信する手段を備え、
前記アプリケーションサーバが、前記決定的暗号文を決定的復号し、平文のソート順番が検索範囲開始データと検索範囲終端データの間ならば、前記決定的暗号文から取得した暗号鍵で決定的暗号ＩＤを決定的暗号化し、前記データベースサーバに決定的暗号ＩＤ暗号文を送信する手段を備え、
前記データベースサーバが、前記暗号文関係テーブルから決定的暗号ＩＤ暗号文を含むレコードから確率的暗号ＩＤ暗号文を射影し、前記アプリケーションサーバに確率的暗号ＩＤ暗号文を送信する手段を備え、
前記アプリケーションサーバが、前記決定的暗号文から取得した暗号鍵で確率的暗号ＩＤ暗号文を決定的復号し、前記データベースサーバに確率的暗号ＩＤを送信する手段を備え、
前記データベースサーバが、前記確率的暗号テーブルから確率的暗号ＩＤを含むレコードを選択し、前記アプリケーションサーバに当該レコードを送信する手段を備え、
前記アプリケーションサーバが、前記データベースサーバから受信したレコードから確率的暗号文を射影し、確率的暗号文を確率的復号し、前記レコードの確率的暗号文を平文に置換し、検索結果としてレコードを取得する手段を備えることを特徴とする。
【００１２】
また、本発明に係る方法は、データベースサーバとアプリケーションサーバがネットワークを介して接続して構成され、前記データベースサーバのデータベースが確率的暗号テーブルと決定的暗号テーブルと暗号文関係テーブルとを記憶し、前記アプリケーションサーバのデータベースが暗号鍵を記憶するデータベース暗号化方法であって、
前記データベースへのデータ登録処理を行うために、
前記アプリケーションサーバが、前記データベースへの登録対象データを確率的暗号化と決定的暗号化し、前記データベースサーバに確率的暗号文と決定的暗号文とを送信するステップを備え、
前記データベースサーバが、前記確率的暗号テーブルに確率的暗号文と確率的暗号ＩＤを含むレコードを挿入し、前記決定的暗号テーブルに決定的暗号文と決定的暗号ＩＤを含むレコードを挿入した後、前記アプリケーションサーバに確率的暗号ＩＤと決定的暗号ＩＤを送信するステップを備え、
アプリケーションサーバが、前記決定的暗号文から取得した暗号鍵で確率的暗号ＩＤと決定的暗号ＩＤを決定的暗号化し、前記データベースサーバに確率的暗号ＩＤ暗号文と決定的暗号ＩＤ暗号文を送信するステップを備え、
前記データベースサーバが、前記暗号文関係テーブルに確率的暗号ＩＤ暗号文と決定的暗号ＩＤ暗号文を含むレコードを挿入するステップを備えることを特徴とする。
【００１３】
また、前記データベースのデータ完全一致検索処理として、
前記アプリケーションサーバが、
データを決定的暗号化して前記データベースサーバに決定的暗号文を送信するステップを備え、
前記データベースサーバが、前記決定的暗号テーブルから決定的暗号文を含むレコードから決定的暗号ＩＤを射影し、アプリケーションサーバに決定的暗号ＩＤを送信するステップを備え、
前記アプリケーションサーバが、前記決定的暗号文から取得した暗号鍵で決定的暗号ＩＤを決定的暗号化して前記データベースサーバに決定的暗号ＩＤ暗号文を送信するステップを備え、
前記データベースサーバが、前記暗号文関係テーブルから決定的暗号ＩＤ暗号文を含むレコードから確率的暗号ＩＤ暗号文を射影し、前記アプリケーションサーバに確率的暗号ＩＤ暗号文を送信するステップを備え、
前記アプリケーションサーバが、前記決定的暗号文から取得した暗号鍵で確率的暗号ＩＤ暗号文を決定的復号し、前記データベースサーバに確率的暗号ＩＤを送信するステップを備え、
前記データベースサーバが、前記確率的暗号テーブルから確率的暗号ＩＤを含むレコードを選択し、前記アプリケーションサーバに当該レコードを送信するステップを備え、
前記アプリケーションサーバが、前記データベースサーバから受信したレコードから確率的暗号文を射影し、確率的暗号文を確率的復号し、レコードの確率的暗号文を平文に置換し、検索結果としてレコードを取得するステップを備えることを特徴とする。
【００１４】
また、データベースのデータ登録処理として、
前記データベースサーバが、前記データベースのインデックス値登録処理を決定的暗号ＩＤと決定的暗号文を入力として実行するステップを備え、
データベースのデータ部分一致検索処理として、
前記アプリケーションサーバが、検索範囲開始データと検索範囲終端データを決定的暗号化し、前記データベースサーバに検索範囲開始データ暗号文と検索範囲終端データ暗号文を送信するステップを備え、
前記データベースサーバが、前記データベースのインデックス値取得処理を検索範囲開始データ暗号文を入力として実行し、前記データベースのインデックス値取得処理を検索範囲終端データ暗号文を入力として実行し、前記決定的暗号テーブルからインデックス値が検索範囲開始インデックス値以上かつ検索範囲終端インデックス値未満であるレコードから決定的暗号ＩＤと決定的暗号文を射影し、前記アプリケーションサーバに決定的暗号ＩＤと決定的暗号文を送信するステップを備え、
前記アプリケーションサーバが、前記決定的暗号文を決定的復号し、平文のソート順番が検索範囲開始データと検索範囲終端データの間ならば、前記決定的暗号文から取得した暗号鍵で決定的暗号ＩＤを決定的暗号化し、前記データベースサーバに決定的暗号ＩＤ暗号文を送信するステップを備え、
前記データベースサーバが、前記暗号文関係テーブルから決定的暗号ＩＤ暗号文を含むレコードから確率的暗号ＩＤ暗号文を射影し、前記アプリケーションサーバに確率的暗号ＩＤ暗号文を送信するステップを備え、
前記アプリケーションサーバが、前記決定的暗号文から取得した暗号鍵で確率的暗号ＩＤ暗号文を決定的復号し、前記データベースサーバに確率的暗号ＩＤを送信するステップを備え、
前記データベースサーバが、前記確率的暗号テーブルから確率的暗号ＩＤを含むレコードを選択し、前記アプリケーションサーバに当該レコードを送信するステップを備え、
前記アプリケーションサーバが、前記データベースサーバから受信したレコードから確率的暗号文を射影し、確率的暗号文を確率的復号し、前記レコードの確率的暗号文を平文に置換し、検索結果としてレコードを取得するステップを備えることを特徴とする。
【発明の効果】
【００１５】
本発明によれば、確率的暗号テーブルの他に、決定的暗号テーブルと、両テーブル間の関係を暗号化して保持する暗号文関係テーブルを設け、決定的暗号テーブルで検索し、検索結果を暗号文関係テーブルで変換することで、確率的暗号テーブルでの検索結果を取得する。
これにより、データを確率的暗号化したデータベースでも、完全一致検索処理を高速に行なうことができる。
インデックス値を保持する決定的暗号テーブルを設け、この決定的暗号テーブルでインデックス値に基づいて決定的暗号文をバイナリサーチすることで、部分一致検索範囲を絞り込む。
これにより、データを暗号化したデータベースでも、部分一致検索処理を高速に行なうことができる。
検索結果を暗号文関係テーブルで変換する際に、検索結果の関係を変換することを、検索結果データの決定的暗号文から取得した暗号鍵で変換することで保証する。
これにより、不正者が任意の関係を変換できないため、不正者が任意のレコード間で同一データであることが分からないようにできる。
【図面の簡単な説明】
【００１６】
【図１】本発明のデータベース暗号化システムの構成の一例を示す図である。
【図２】データベースサーバが記憶する確率的暗号テーブルの一例を示す図である。
【図３】データベースサーバが記憶する決定的暗号テーブルの一例を示す図である。
【図４】データベースサーバが記憶する暗号文関係テーブルの一例を示す図である。
【図５】データベースのデータ登録処理の一例を示す図である。
【図６】データベースのインデックス値登録処理の一例を示す図である。
【図７】データベースのインデックス値取得処理の一例を示す図である。
【図８】データベースのデータ完全一致検索処理の一例を示す図である。
【図９】データベースのデータ部分一致検索処理の一例を示す図である。
【図１０】データを決定的暗号化したデータベースの一例を示す図である。
【図１１】データを確率的暗号化したデータベースの一例を示す図である。
【発明を実施するための形態】
【００１７】
以下、本発明のデータベース暗号化システムの構成の一例について、図１を参照しながら説明する。
図１において、本発明のデータベース暗号化システムは、データベースサーバ１とアプリケーションサーバ２がネットワーク３を介して接続して構成される。
データベースサーバ１は、中央演算処理装置４と主記憶装置６と補助記憶装置８とネットワーク通信装置１２がデータバス８を介して接続して構成される。
また、アプリケーションサーバ２は、中央演算処理装置５と主記憶装置７と補助記憶装置９とネットワーク通信装置１３がデータバス１１を介して接続して構成される。
データベースサーバの補助記憶装置８には、確率的暗号テーブル８１、決定的暗号テーブル８２、暗号文関係テーブル８３が設けられている。
また、アプリケーションサーバ２の補助記憶装置９には暗号鍵Ｋの記憶領域９１が設けられている。
【００１８】
ここで、本発明のデータベース暗号化システムで使用する暗号について説明する。
確率的暗号とは、ＩＶ（暗号利用モードの初期化ベクトル）またはＳＡＬＴ（平文に付加するランダムなビット列）が有る共通鍵暗号である。
確率的暗号化処理ＰＥは、暗号鍵Ｋと平文Ｍを入力として、暗号文ＰＥ（Ｋ，Ｍ）を出力する。
確率的暗号化処理では、入力が同一の暗号鍵と平文であっても、ＩＶまたはＳＡＬＴの値が異なれば、出力は異なる暗号文になる。
確率的復号処理ＰＤは、暗号鍵Ｋと暗号文Ｃを入力として、平文ＰＤ（Ｋ，Ｃ）を出力する。
決定的暗号とは、ＩＶおよびＳＡＬＴが無い共通鍵暗号である。
決定的暗号化処理ＤＥは、暗号鍵Ｋと平文Ｍを入力として、暗号文ＤＥ（Ｋ，Ｍ）を出力する。
決定的暗号化処理では、入力が同一の暗号鍵と平文ならば、出力は同一の暗号文になる。
決定的復号処理ＤＤは、暗号鍵Ｋと暗号文Ｃを入力として、平文ＤＤ（Ｋ，Ｃ）を出力する。
鍵付きセキュアハッシュ処理Ｈは、暗号鍵ＫとメッセージＭを入力として、セキュアハッシュ値Ｈ（Ｋ，Ｍ）を出力する。
【００１９】
例えば、セキュアハッシュ関数をＳＨＡ−２５６かつ共通鍵暗号をＡＥＳ２５６ビットとすると、セキュアハッシュ値と暗号鍵のビット長が同じため、セキュアハッシュ値を暗号鍵にすることができる。
アプリケーションサーバ２が、暗号鍵Ｋを記憶する。
【００２０】
データベースサーバ１が記憶する確率的暗号テーブル８１の一例について、図２を参照しながら説明する。
確率的暗号テーブル８１の必須カラムは、確率的暗号ＩＤ８１１と確率的暗号文８１２である。
確率的暗号ＩＤ８１１は、ユニーク制約のあるカラムである。
図２の確率的暗号テーブル８１は、確率的暗号文カラムとして名前８１２とカード番号８１３を確率的暗号化した暗号文と、個人情報カラムとして年齢８１４を格納したテーブルである。
データベースサーバ１が記憶する決定的暗号テーブル８２の一例について、図３を参照しながら説明する。
決定的暗号テーブル８２のカラムは、決定的暗号ＩＤ８２１と決定的暗号文８２２とインデックス値８２３である。
決定的暗号ＩＤ８２１は、ユニーク制約のあるカラムである。
【００２１】
図３の決定的暗号テーブル８２は、決定的暗号文カラムとして名前８２２とカード番号８２４を決定的暗号化した暗号文と、インデックス値として名前８２２とカード番号８２４の昇順ソート順番の正整数値を格納したテーブルである。
データベースサーバ１が記憶する暗号文関係テーブル８３の一例について、図４を参照しながら説明する。
暗号文関係テーブル８３のカラムは、確率的暗号ＩＤ暗号文８３１と決定的暗号ＩＤ暗号文８３２である。
確率的暗号ＩＤ暗号文８３１は、確率的暗号テーブル８１の確率的暗号ＩＤ８１１を決定的暗号化した暗号文である。
決定的暗号ＩＤ暗号文８３２は、決定的暗号テーブル８２の決定的暗号ＩＤ８２１を決定的暗号化した暗号文である。
データベースのデータ登録処理の一例について、図５を参照しながら説明する。
ただし、アプリケーションサーバ２が、データＭ（例えば名前やカード番号に相当）と個人情報（例えば年齢に相当）を記憶しているものとする。
【００２２】
図５の例は、データベースサーバ１が記憶するテーブルが図２〜４の状態であり、データＭ（名前=”HITACHI TARO”, カード番号=1111222222222222）と個人情報（年齢=35）についてデータ登録処理を実行する場合である。
まず、ステップ５０１において、アプリケーションサーバ２が、確率的暗号化処理を、暗号鍵ＫとデータＭを入力として実行し、出力された確率的暗号文ＰＣ＝ＰＥ（Ｋ，Ｍ）を取得し、また決定的暗号化処理を、暗号鍵ＫとデータＭを入力として実行して、出力された決定的暗号文ＤＣ＝ＤＥ（Ｋ，Ｍ）を取得して、データベースサーバ１に確率的暗号文８１２と決定的暗号文と個人情報８２２を送信する。
【００２３】
ステップ５０２において、データベースサーバ１が、アプリケーションサーバ２から確率的暗号文と決定的暗号文と個人情報を受信して、確率的暗号テーブル８１のユニーク制約を満たすように確率的暗号ＩＤ８１１をランダムに生成して、確率的暗号テーブル８１に生成した確率的暗号ＩＤ８１１と受信した確率的暗号文８１２と個人情報８１４を含むレコードを挿入して、決定的暗号テーブル８２に受信した決定的暗号文８２２を含むレコードが記憶されているならば、ステップ５０３を実行して、決定的暗号テーブル８２に受信した決定的暗号文８２２を含むレコードが記憶されていないならば、ステップ５０４を実行する。
【００２４】
ステップ５０３において、データベースサーバ１が、決定的暗号テーブル８２から受信した決定的暗号文８２２を含むレコードを選択して、選択したレコードから決定的暗号ＩＤを射影して（すなわち抽出して）、アプリケーションサーバ２に生成した確率的暗号ＩＤ８１１と射影した決定的暗号ＩＤ８２１を送信して、ステップ５０４を実行する。
【００２５】
ステップ５０４において、データベースサーバ１が、決定的暗号テーブル８２のユニーク制約を満たすように決定的暗号ＩＤ８２１をランダムに生成して、決定的暗号テーブル８２に生成した決定的暗号ＩＤ８２１と受信した決定的暗号文８２２を含むレコードを挿入して、データベースのインデックス値登録処理を、生成した決定的暗号ＩＤ８２１と受信した決定的暗号文８２２を入力として実行して、アプリケーションサーバ２に生成した確率的暗号ＩＤ８１１と決定的暗号ＩＤ８２１を送信して、ステップ５０５を実行する。
【００２６】
ステップ５０５において、アプリケーションサーバ２が、データベースサーバ１から確率的暗号ＩＤ８１１と決定的暗号ＩＤ８２１を受信して、鍵付きセキュアハッシュ処理を、暗号鍵Ｋと決定的暗号文ＤＣを入力として実行して、出力されたセキュアハッシュ値ＫＨ＝Ｈ（Ｋ，ＤＣ）を取得して、決定的暗号化処理を、暗号鍵ＫＨと受信した確率的暗号ＩＤを入力として実行して、出力された確率的暗号ＩＤ暗号文ＤＥ（ＫＨ，確率的暗号ＩＤ）を取得して、決定的暗号化処理を、暗号鍵ＫＨと受信した決定的暗号ＩＤを入力として実行して、出力された決定的暗号ＩＤ暗号文ＤＥ（ＫＨ，決定的暗号ＩＤ）を取得して、データベースサーバ１に確率的暗号ＩＤ暗号文と決定的暗号ＩＤ暗号文を送信する。
【００２７】
ステップ５０６において、データベースサーバ１が、
アプリケーションサーバ２から確率的暗号ＩＤ暗号文と決定的暗号ＩＤ暗号文を受信して、暗号文関係テーブル８３に受信した確率的暗号ＩＤ暗号文と決定的暗号ＩＤ暗号文を含むレコードを挿入する。
データベースのインデックス値登録処理の一例について、図６を参照しながら説明する。
ただし、決定的暗号ＩＤと決定的暗号文を入力とする。
【００２８】
図６の例は、図５のステップ５０４において、決定的暗号ＩＤ= DIDC981と決定的暗号文= DE(K, 1111222222222222)を入力としてインデックス値登録処理を実行する場合である。
ステップ６０１において、データベースサーバ１が、データベースのインデックス値取得処理を、決定的暗号文を入力として実行して、出力された登録インデックス値を取得する。
【００２９】
ステップ６０２において、データベースサーバ１が、決定的暗号テーブル８２からインデックス値が登録インデックス値以上であるレコードを選択して、選択したレコードのインデックス値をインクリメントして更新する。
【００３０】
ステップ６０３において、データベースサーバ１が、決定的暗号テーブル８２から決定的暗号ＩＤ８２１を含むレコードを選択して、選択したレコードのインデックス値を登録インデックス値に更新する。
【００３１】
データベースのインデックス値取得処理の一例について、図７を参照しながら説明する。
ただし、決定的暗号文を入力として、インデックス値を出力とする。
ステップ７０１において、データベースサーバ１が、決定的暗号テーブル８２にレコードが無いならば、出力インデックス値を１として、ステップ７０７を実行する。
ステップ７０２において、データベースサーバ１が、決定的暗号テーブル８２から最大のインデックス値を取得して、下限インデックス値を１として、上限インデックス値を取得した最大インデックス値とする。
【００３２】
ステップ７０３において、データベースサーバ１が、下限インデックス値が上限インデックス値以下ならば、中央インデックス値を下限インデックス値と上限インデックス値の平均の整数値として、下限インデックス値が上限インデックス値より大きいならば、出力インデックス値を下限インデックス値として、ステップ７０７を実行する。
【００３３】
ステップ７０４において、データベースサーバ１が、決定的暗号テーブル８２から中央インデックス値を含むレコードを選択して、選択したレコードから決定的暗号文８２２を射影して、アプリケーションサーバ２に入力決定的暗号文と射影した中央決定的暗号文を送信する。
【００３４】
ステップ７０５において、アプリケーションサーバ２が、データベースサーバ１から入力決定的暗号文と中央決定的暗号文を受信して、決定的復号処理を、暗号鍵Ｋと入力決定的暗号文を入力として実行して、出力された入力平文＝ＤＤ（Ｋ，入力決定的暗号文）を取得して、決定的復号処理を、暗号鍵Ｋと中央決定的暗号文を入力として実行して、出力された中央平文＝ＤＤ（Ｋ，中央決定的暗号文）を取得して、入力平文と中央平文のソート順番を比較して、ソート順番比較結果として「同一平文」または「昇順」または「降順」を取得して、データベースサーバ１にソート順番比較結果を送信する。
ここで、入力決定的暗号文とは、バイナリサーチにおける検索したい値の暗号文                      ということであり、また中央決定的暗号文とはバイナリサーチにおける中央の値の暗号文                          ということである。
【００３５】
例えば、平文が文字列の場合で、
入力平文「ABC」と中央平文「ABC」のソート順番比較結果は「同一平文」であり、
入力平文「ABC」と中央平文「ACC」のソート順番比較結果は「昇順」であり、
入力平文「ABC」と中央平文「ABB」のソート順番比較結果は「降順」である。
例えば、平文が数値の場合で、
入力平文「1000」と中央平文「1000」のソート順番比較結果は「同一平文」であり、
入力平文「1000」と中央平文「1001」のソート順番比較結果は「昇順」であり、
入力平文「1000」と中央平文「999」のソート順番比較結果は「降順」である。
ステップ７０６において、データベースサーバ１が、アプリケーションサーバ２からソート順番比較結果を受信して、ソート順番比較結果が「同一平文」ならば、出力インデックス値を中央インデックス値として、ステップ７０７を実行してソート順番比較結果が「昇順」ならば、上限インデックス値を中央インデックス値−１として、ステップ７０３を実行して、ソート順番比較結果が「降順」ならば、下限インデックス値を中央インデックス値＋１として、ステップ７０３を実行する。
【００３６】
ステップ７０７において、データベースサーバ１が、出力インデックス値を出力する。
データベースのインデックス値取得処理の例を、図６のステップ６０１において、決定的暗号文= DE(K, 1111222222222222)を入力として実行する場合で説明する。
１ステップ目に、ステップ７０１において、決定的暗号テーブルにレコードが有る場合なので、何も実行しない。
【００３７】
２ステップ目に、ステップ７０２において、下限インデックス値＝１、上限インデックス値＝３。
３ステップ目に、ステップ７０３において、下限インデックス値１≦上限インデックス値３の場合なので、中央インデックス値＝（下限インデックス値１＋上限インデックス値３）／２＝２。
４ステップ目に、ステップ７０４において、入力決定的暗号文＝DE(K, 1111222222222222)と中央決定的暗号文＝DE(K,1111333333333333)を送信。
【００３８】
５ステップ目に、ステップ７０５において、入力平文＝1111222222222222と中央平文＝1111333333333333のソート順番を比較して、ソート順番比較結果「昇順」を送信。
６ステップ目に、ステップ７０６において、ソート順番比較結果が「昇順」の場合なので、上限インデックス値＝中央インデックス値２−１＝１。
７ステップ目に、ステップ７０３において、下限インデックス値１≦上限インデックス値１の場合なので、中央インデックス値＝（下限インデックス値１＋上限インデックス値１）／２＝１。
【００３９】
８ステップ目に、ステップ７０４において、入力決定的暗号文＝DE(K, 1111222222222222)と中央決定的暗号文＝DE(K,1111111111111111)を送信。
９ステップ目に、ステップ７０５において、入力平文＝1111222222222222と中央平文＝1111111111111111のソート順番を比較して、ソート順番比較結果「降順」を送信。
１０ステップ目に、ステップ７０６において、ソート順番比較結果が「降順」の場合なので、下限インデックス値＝中央インデックス値１＋１＝２。
１１ステップ目に、ステップ７０３において、下限インデックス値２＞上限インデックス値１の場合なので、出力インデックス値＝下限インデックス値２。
１２ステップ目に、ステップ７０７において、出力インデックス値２を出力する。
【００４０】
データベースのデータ完全一致検索処理の一例について、図８を参照しながら説明する。
ただし、アプリケーションサーバ２が、データＭ（例えば名前やカード番号に相当）を記憶しているものとする。
図８の例は、データベースサーバ１が記憶するテーブルが図２〜４の状態であり、データＭ（名前=”HITACHI TARO”）についてデータ完全一致検索処理を実行する場合である。
ステップ８０１において、アプリケーションサーバ２が、決定的暗号化処理を、暗号鍵ＫとデータＭを入力として実行して、出力された決定的暗号文ＤＣ＝ＤＥ（Ｋ，Ｍ）を取得して、データベースサーバ１に決定的暗号文を送信する。
【００４１】
ステップ８０２において、データベースサーバ１が、アプリケーションサーバ２から決定的暗号文を受信して、決定的暗号テーブル８２から受信した決定的暗号文を含むレコードを選択して、選択したレコードから決定的暗号ＩＤ８２１を射影して、アプリケーションサーバ２に射影した決定的暗号ＩＤ８２１を送信する。
【００４２】
ステップ８０３において、アプリケーションサーバ２が、データベースサーバ１から決定的暗号ＩＤ８２１を受信して、鍵付きセキュアハッシュ処理を、暗号鍵Ｋと決定的暗号文ＤＣを入力として実行して、出力されたセキュアハッシュ値ＫＨ＝Ｈ（Ｋ，ＤＣ）を取得して、決定的暗号化処理を、暗号鍵ＫＨと受信した決定的暗号ＩＤ８２１を入力として実行して、出力された決定的暗号ＩＤ暗号文ＤＥ（ＫＨ，決定的暗号ＩＤ）を取得して、
データベースサーバ１に決定的暗号ＩＤ暗号文８２２を送信する。
【００４３】
ステップ８０４において、データベースサーバ１が、アプリケーションサーバ２から決定的暗号ＩＤ暗号文を受信して、暗号文関係テーブル８３から受信した決定的暗号ＩＤ暗号文を含むレコードを選択して、選択したレコードから確率的暗号ＩＤ暗号文を射影して、アプリケーションサーバ２に射影した確率的暗号ＩＤ暗号文を送信する。
【００４４】
ステップ８０５において、アプリケーションサーバ２が、データベースサーバ１から確率的暗号ＩＤ暗号文を受信して、鍵付きセキュアハッシュ処理を、暗号鍵Ｋと決定的暗号文ＤＣを入力として実行して、出力されたセキュアハッシュ値ＫＨ＝Ｈ（Ｋ，ＤＣ）を取得して、決定的復号処理を、暗号鍵ＫＨと受信した確率的暗号ＩＤ暗号文を入力として実行して、出力された確率的暗号ＩＤ＝ＤＤ（ＫＨ，確率的暗号ＩＤ暗号文）を取得して、データベースサーバ１に確率的暗号ＩＤを送信する。
【００４５】
ステップ８０６において、データベースサーバ１が、アプリケーションサーバ２から確率的暗号ＩＤを受信して、確率的暗号テーブル８１から受信した確率的暗号ＩＤ８１１を含むレコードを選択して、アプリケーションサーバ２に選択したレコードを送信する。
【００４６】
ステップ８０７において、アプリケーションサーバ２が、データベースサーバ１からレコードを受信して、受信したレコードから確率的暗号文を射影して、確率的復号処理を、暗号鍵Ｋと射影した確率的暗号文を入力として実行して、出力された平文Ｍ＝ＰＤ（Ｋ，確率的暗号文）を取得して、受信したレコードの確率的暗号文を平文Ｍに置換して、データ完全一致検索処理の検索結果としてレコードを取得する。
【００４７】
次に、データベースのデータ部分一致検索処理の一例について、図９を参照しながら説明する。ただし、アプリケーションサーバ２が、検索範囲開始データＭ１と検索範囲終端データＭ２（例えば名前やカード番号に相当）を記憶しているものとする。
図９の例は、データベースサーバ１が記憶するテーブルが図２〜４の状態であり、検索範囲開始データＭ１（カード番号＝1000000000000000）と検索範囲終端データＭ２（カード番号＝2000000000000000）についてデータ部分一致検索処理を実行する場合である。
データ部分一致検索とは、データが文字列の場合では文字列前方一致検索であり、データが数値の場合では数値範囲検索である。
【００４８】
例えば、文字列「AAA」から始まるデータを検索する場合、検索範囲開始データＭ１は「AAA」、検索範囲終端データＭ２は「AAB」であり、数値「1000」以上「2000」未満のデータを検索する場合、検索範囲開始データＭ１は「1000」、検索範囲終端データＭ２は「2000」である。
ステップ９０１において、アプリケーションサーバ２が、決定的暗号化処理を、暗号鍵Ｋと検索範囲開始データＭ１を入力として実行して、出力された検索範囲開始データ暗号文ＤＣ１＝ＤＥ（Ｋ，Ｍ１）を取得して、決定的暗号化処理を、暗号鍵Ｋと検索範囲終端データＭ２を入力として実行して、出力された検索範囲終端データ暗号文ＤＣ２＝ＤＥ（Ｋ，Ｍ２）を取得して、データベースサーバ１に検索範囲開始データ暗号文と検索範囲終端データ暗号文を送信する。
【００４９】
ステップ９０２において、データベースサーバ１が、アプリケーションサーバ２から検索範囲開始データ暗号文と検索範囲終端データ暗号文を受信して、データベースのインデックス値取得処理を、検索範囲開始データ暗号文を入力として実行して、出力された検索範囲開始インデックス値を取得して、データベースのインデックス値取得処理を、検索範囲終端データ暗号文を入力として実行して、出力された検索範囲終端インデックス値を取得して、決定的暗号テーブルからインデックス値が検索範囲開始インデックス値以上かつ検索範囲終端インデックス値未満であるレコードを選択して、選択したレコード毎にステップ９０３以降を実行する。
【００５０】
ステップ９０３において、データベースサーバ１が、選択したレコードから決定的暗号ＩＤ８２１と決定的暗号文８２２を射影して、アプリケーションサーバ２に射影した決定的暗号ＩＤ８２１と決定的暗号文８２２を送信する。
ステップ９０４において、アプリケーションサーバ２が、データベースサーバ１から決定的暗号ＩＤ８２１と決定的暗号文ＤＣを受信して、決定的復号処理を、暗号鍵Ｋと受信した決定的暗号文ＤＣを入力として実行して、出力された平文Ｍ＝ＰＤ（Ｋ，ＤＣ）を取得して、検索範囲開始データＭ１と平文Ｍのソート順番を比較して、ソート順番比較結果として「同一平文」または「昇順」を取得したならば、かつ、平文Ｍと検索範囲終端データＭ２のソート順番を比較して、ソート順番比較結果として「昇順」を取得したならば、鍵付きセキュアハッシュ処理を、暗号鍵Ｋと受信した決定的暗号文ＤＣを入力として実行して、出力されたセキュアハッシュ値ＫＨ＝Ｈ（Ｋ，ＤＣ）を取得して、決定的暗号化処理を、暗号鍵ＫＨと受信した決定的暗号ＩＤを入力として実行して、出力された決定的暗号ＩＤ暗号文ＤＥ（ＫＨ，決定的暗号ＩＤ）を取得して、データベースサーバ１に決定的暗号ＩＤ暗号文を送信する。
【００５１】
ステップ９０５において、データベースサーバ１が、アプリケーションサーバ２から決定的暗号ＩＤ暗号文を受信して、暗号文関係テーブル８３から受信した決定的暗号ＩＤ暗号文を含むレコードを選択して、選択したレコードから確率的暗号ＩＤ暗号文を射影して、アプリケーションサーバ２に射影した確率的暗号ＩＤ暗号文を送信する。
【００５２】
ステップ９０６において、アプリケーションサーバ２が、データベースサーバ１から確率的暗号ＩＤ暗号文を受信して、鍵付きセキュアハッシュ処理を、暗号鍵Ｋと決定的暗号文ＤＣを入力として実行して、出力されたセキュアハッシュ値ＫＨ＝Ｈ（Ｋ，ＤＣ）を取得して、決定的復号処理を、暗号鍵ＫＨと受信した確率的暗号ＩＤ暗号文を入力として実行して、出力された確率的暗号ＩＤ＝ＤＤ（ＫＨ，確率的暗号ＩＤ暗号文）を取得して、データベースサーバ１に確率的暗号ＩＤを送信する。
【００５３】
ステップ９０７において、データベースサーバ１が、アプリケションサーバ２から確率的暗号ＩＤを受信して、確率的暗号テーブル８１から受信した確率的暗号ＩＤ８１１を含むレコードを選択して、アプリケーションサーバ２に選択したレコードを送信する。
ステップ９０８において、アプリケーションサーバ２が、データベースサーバ１からレコードを受信して、受信したレコードから確率的暗号文を射影して、確率的復号処理を、暗号鍵Ｋと射影した確率的暗号文を入力として実行して、出力された平文Ｍ＝ＰＤ（Ｋ，確率的暗号文）を取得して、受信したレコードの確率的暗号文を平文Ｍに置換して、データ部分一致検索処理の検索結果としてレコードを取得する。
【符号の説明】
【００５４】
１    データベースサーバ
２    アプリケーションサーバ
３    ネットワーク
４、５  中央演算処理装置
６，７  主記憶装置
８，９  補助記憶装置
１２，１３  ネットワーク通信装置
１０，１１  データバス
８１    確率的暗号テーブル
８２    決定的暗号テーブル
８３    暗号文関係テーブル
【図１】
0005411034.tif 000002
【図２】
0005411034.tif 000003
【図３】
0005411034.tif 000004
【図４】
0005411034.tif 000005
【図５】
0005411034.tif 000006
【図６】
0005411034.tif 000007
【図７】
0005411034.tif 000008
【図８】
0005411034.tif 000009
【図９】
0005411034.tif 000010
【図１０】
0005411034.tif 000011
【図１１】
0005411034.tif 000012