(57)【要約】【課題】同一の秘密情報を共有するクライアントの増加に伴って、情報が漏洩する可能性が高くなる。【解決手段】データ管理サーバはマスタ秘密鍵を用いて暗号化された管理用の秘匿データを格納するデータベースを管理し、検索クライアントは共通秘密鍵及びユーザ毎に割り当てられるユーザ秘密鍵を保持し、検索キーワードを含む検索指示を受け付けた場合、共通秘密鍵及びユーザ秘密鍵を用いて生成された出力用の秘匿検索キーワードを含む検索要求を送信し、データ管理サーバは、ユーザ秘密鍵が有効である場合、出力用の秘匿検索キーワードをマスタ秘密鍵を用いた暗号文に変換することによって、管理用の秘匿データを検索するための管理用の秘匿検索キーワードを生成し、管理用の秘匿検索キーワードに一致する管理用の秘匿データを検索し、管理用の秘匿データ及びユーザ秘密鍵を用いて出力用の秘匿データを生成する。【選択図】  図１５
2018097034.tif 000002
【特許請求の範囲】
【請求項１】
データ管理サーバ及び複数の検索クライアントを備える計算機システムであって、
前記データ管理サーバは、第１のマスタ秘密鍵を用いた確率的暗号化方式に基づいて暗号化された管理用の秘匿データを格納するデータベースを管理し、
前記複数の検索クライアントの各々は、共通秘密鍵、及び前記検索クライアントを使用するユーザ毎に割り当てられる検索用のユーザ秘密鍵を保持し、
前記検索クライアントは、
第１のユーザから検索キーワードを含む検索指示を受け付けた場合、前記共通秘密鍵及び前記第１のユーザの検索用のユーザ秘密鍵を用いて前記検索キーワードを暗号化することによって、出力用の秘匿検索キーワードを生成し、
前記出力用の秘匿検索キーワードを含む検索要求を前記データ管理サーバに送信し、
前記データ管理サーバから、前記第１のユーザの検索用のユーザ秘密鍵を用いて暗号化された第１の出力用の秘匿データを受信し、
前記第１のユーザの検索用のユーザ秘密鍵を用いて前記第１の出力用の秘匿データを復号することによって平文データを生成し、
前記データ管理サーバは、
前記検索要求を受信した場合、前記第１のユーザの検索用のユーザ秘密鍵が有効であるか否かを判定する照合処理を実行し、
前記第１のユーザの検索用のユーザ秘密鍵が有効であると判定された場合、前記出力用の秘匿検索キーワードを前記第１のマスタ秘密鍵を用いた暗号文に変換することによって、前記管理用の秘匿データを検索するための管理用の秘匿検索キーワードを生成し、
前記データベースを参照して、前記管理用の秘匿検索キーワードに一致する管理用の秘匿データを検索し、
検索された前記管理用の秘匿データを前記第１のユーザの検索用のユーザ秘密鍵を用いた暗号文に変換することによって前記第１の出力用の秘匿データを生成し、
前記検索クライアントに、前記第１の出力用の秘匿データを送信することを特徴とする計算機システム。
【請求項２】
請求項１に記載の計算機システムであって、
前記検索用のユーザ秘密鍵は、データの変換に使用する検索鍵を含み、
前記データ管理サーバは、有効な検索用のユーザ秘密鍵を管理する第１の鍵管理情報を保持し、
前記第１の鍵管理情報は、前記ユーザの識別情報、前記検索鍵、マスタ秘密鍵及び検索用のユーザ秘密鍵を用いて生成された二つの乱数ストリームの差分を表す変換用の差分鍵マスク、並びに、前記照合処理に使用する鍵照合情報から構成されるレコードを含み、
前記検索クライアントは、
前記出力用の秘匿検索キーワードを生成する場合、前記共通秘密鍵及び前記第１のユーザの検索用のユーザ秘密鍵を用いて第１の鍵照合情報を生成し、
前記第１のユーザの識別情報、前記出力用の秘匿検索キーワード、及び前記第１の鍵照合情報を含む検索要求を送信し、
前記データ管理サーバは、
前記照合処理では、前記第１の鍵管理情報を参照して、前記第１のユーザに対応するレコードに含まれる鍵照合情報と、前記検索要求に含まれる前記第１の鍵照合情報とが一致する場合、前記第１のユーザの検索用のユーザ秘密鍵が有効なものであると判定し、
前記第１のユーザに対応するレコードに含まれる変換用の差分鍵マスク及び検索鍵を用いて前記出力用の秘匿検索キーワードを変換することによって、前記管理用の秘匿検索キーワードを生成し、
前記第１のユーザに対応するレコードに含まれる変換用の差分鍵マスクを用いて前記管理用の秘匿データを変換することによって前記第１の出力用の秘匿データを生成することを特徴とする計算機システム。
【請求項３】
請求項２に記載の計算機システムであって、
前記共通秘密鍵及び前記第１のマスタ秘密鍵を保持する鍵管理サーバを備え、
前記鍵管理サーバは、
前記第１のユーザの追加指示を受け付けた場合、第１の検索鍵を含む前記第１のユーザの検索用のユーザ秘密鍵を生成し、
前記共通秘密鍵及び前記第１のユーザの検索用のユーザ秘密鍵を用いて、第２の鍵照合情報を生成し、
前記第１のマスタ秘密鍵及び前記第１のユーザの検索用のユーザ秘密鍵を用いて生成された二つの乱数ストリームの差分を表す第１の変換用の差分鍵マスクを生成し、
前記第１のユーザの識別情報、前記第２の鍵照合情報、前記第１の検索鍵、及び前記第１の変換用の差分鍵マスクを含むユーザの追加要求を前記データ管理サーバに送信し、
前記第１のユーザの識別情報及び前記第１のユーザの検索用のユーザ秘密鍵を含む鍵の設定要求を前記検索クライアントに送信し、
前記データ管理サーバは、前記ユーザの追加要求を受信した場合、前記第１のユーザの識別情報、前記第２の鍵照合情報、前記第１の検索鍵、及び前記第１の変換用の差分鍵マスクから構成されるレコードを前記第１の鍵管理情報に追加することを特徴とする計算機システム。
【請求項４】
請求項３に記載の計算機システムであって、
前記鍵管理サーバは、
前記ユーザの識別情報及び前記検索用のユーザ秘密鍵から構成されるレコードを含む第２の鍵管理情報を保持し、
前記第１のユーザの失効指示を受け付けた場合、前記第１のユーザの識別情報を含むユーザ失効要求を前記データ管理サーバに送信し、
前記第２の鍵管理情報を参照して、前記第１のユーザの識別情報に一致するレコードを検索し、当該レコードを削除し、
前記データ管理サーバは、前記ユーザ失効要求を受信した場合、前記第１の鍵管理情報を参照して、前記第１のユーザの識別情報に一致するレコードを検索し、当該レコードを削除することを特徴とする計算機システム。
【請求項５】
請求項４に記載の計算機システムであって、
前記鍵管理サーバは、
前記第１のユーザの検索用のユーザ秘密鍵の更新指示を受け付けた場合、第２の検索鍵を含む新たな第１のユーザの検索用のユーザ秘密鍵を生成し、
前記共通秘密鍵及び前記新たな第１のユーザの検索用のユーザ秘密鍵を用いて、第３の鍵照合情報を生成し、
前記第１のマスタ秘密鍵及び前記新たな第１のユーザの検索用のユーザ秘密鍵を用いて生成された二つの乱数ストリームの差分を表す第２の変換用の差分鍵マスクを生成し、
前記第１のユーザの識別情報、前記第３の鍵照合情報、前記第２の検索鍵、及び前記第２の変換用の差分鍵マスクを含むユーザ秘密鍵の更新要求を前記データ管理サーバに送信し、
前記第１のユーザの識別情報及び前記新たな第１のユーザの検索用のユーザ秘密鍵を含む鍵の更新要求を前記検索クライアントに送信し、
前記データ管理サーバは、
前記ユーザ秘密鍵の更新要求を受信した場合、前記第１の鍵管理情報を参照して、前記第１のユーザの識別情報に一致するレコードを検索し、
前記第３の鍵照合情報、前記第２の検索鍵、及び前記第２の変換用の差分鍵マスクを前記検索されたレコードに登録することを特徴とする計算機システム。
【請求項６】
請求項４に記載の計算機システムであって、
前記鍵管理サーバは、
マスタ秘密鍵の更新指示を受け付けた場合、第２のマスタ秘密鍵を生成し、
前記第１のマスタ秘密鍵及び前記第２のマスタ秘密鍵を用いて生成された二つの乱数ストリームの差分を表す更新用の差分鍵マスクを生成し、
前記更新用の差分鍵マスクを含む秘匿データの更新要求を前記データ管理サーバに送信し、
前記データ管理サーバは、
前記秘匿データの更新要求を受信した場合、前記更新用の差分鍵マスクを用いて、前記データベースに格納される前記管理用の秘匿データを、前記第２のマスタ秘密鍵を用いた確率的暗号化方式に基づいて暗号化された管理用の秘匿データに変換し、
前記更新用の差分鍵マスクを用いて、前記第１の鍵管理情報に含まれる各レコードの前記変換用の差分鍵マスクを、前記第２のマスタ秘密鍵に対応した変換用の差分鍵マスクに変換することを特徴とする計算機システム。
【請求項７】
請求項４に記載の計算機システムであって、
前記データ管理サーバに秘匿データを登録する複数の登録クライアントを備え、
前記複数の登録クライアントの各々は、前記共通秘密鍵、及び前記登録クライアントを使用するユーザ毎に割り当てられる登録用のユーザ秘密鍵を保持し、
前記登録クライアントは、
第２のユーザから第１のデータを含む登録指示を受け付けた場合、前記共通秘密鍵及び前記第２のユーザの登録用のユーザ秘密鍵を用いて前記第１のデータを暗号化することによって、第２の出力用の秘匿データを生成し、
前記共通秘密鍵及び前記第２のユーザの登録用のユーザ秘密鍵を用いて第４の鍵照合情報を生成し、
前記第２のユーザの識別情報、前記第２の出力用の秘匿データ、及び前記第４の鍵照合情報を含むデータの登録要求を前記データ管理サーバに送信し、
前記データ管理サーバは、
前記登録要求を受信した場合、前記第１の鍵管理情報を参照して、前記第２のユーザに対応するレコードに含まれる鍵照合情報と、前記検索要求に含まれる前記第４の鍵照合情報とが一致するか否かを判定し、
前記第２のユーザに対応するレコードに含まれる鍵照合情報と前記第４の鍵照合情報とが一致する場合、前記検索されたレコードに含まれる変換用の差分鍵マスクを用いて前記第２の出力用の秘匿データを変換することによって前記管理用の秘匿データに生成し、
前記データベースに生成された前記管理用の秘匿データを格納することを特徴とする計算機システム。
【請求項８】
データ管理サーバ及び複数の検索クライアントを備える計算機システムにおけるデータ管理方法であって、
前記データ管理サーバは、第１のマスタ秘密鍵を用いた確率的暗号化方式に基づいて暗号化された管理用の秘匿データを格納するデータベースを管理し、
前記複数の検索クライアントの各々は、共通秘密鍵、及び前記検索クライアントを使用するユーザ毎に割り当てられる検索用のユーザ秘密鍵を保持し、
前記データ管理方法は、
前記検索クライアントが、第１のユーザから検索キーワードを含む検索指示を受け付けた場合、前記共通秘密鍵及び前記第１のユーザの検索用のユーザ秘密鍵を用いて前記検索キーワードを暗号化することによって、出力用の秘匿検索キーワードを生成する第１のステップと、
前記検索クライアントが、前記出力用の秘匿検索キーワードを含む検索要求を前記データ管理サーバに送信する第２のステップと、
前記データ管理サーバが、前記検索要求を受信した場合、前記第１のユーザの検索用のユーザ秘密鍵が有効であるか否かを判定する照合処理を実行する第３のステップと、
前記データ管理サーバが、前記第１のユーザの検索用のユーザ秘密鍵が有効であると判定された場合、前記出力用の秘匿検索キーワードを前記第１のマスタ秘密鍵を用いた暗号文に変換することによって、前記管理用の秘匿データを検索するための管理用の秘匿検索キーワードを生成する第４のステップと、
前記データ管理サーバが、前記データベースを参照して、前記管理用の秘匿検索キーワードに一致する管理用の秘匿データを検索する第５のステップと、
前記データ管理サーバが、検索された前記管理用の秘匿データを前記第１のユーザの検索用のユーザ秘密鍵を用いた暗号文に変換することによって第１の出力用の秘匿データを生成する第６のステップと、
前記データ管理サーバが、前記検索クライアントに、前記第１の出力用の秘匿データを送信する第７のステップと、
前記検索クライアントが、前記第１のユーザの検索用のユーザ秘密鍵を用いて、前記データ管理サーバから受信した前記第１の出力用の秘匿データを復号することによって平文データを生成する第８のステップと、を含むことを特徴とするデータ管理方法。
【請求項９】
請求項８に記載のデータ管理方法であって、
前記検索用のユーザ秘密鍵は、データの変換に使用する検索鍵を含み、
前記データ管理サーバは、有効な検索用のユーザ秘密鍵を管理する第１の鍵管理情報を保持し、
前記第１の鍵管理情報は、前記ユーザの識別情報、前記検索鍵、マスタ秘密鍵及び検索用のユーザ秘密鍵を用いて生成された二つの乱数ストリームの差分を表す変換用の差分鍵マスク、並びに、前記照合処理に使用する鍵照合情報から構成されるレコードを含み、
前記第１のステップでは、前記検索クライアントが、前記共通秘密鍵及び前記第１のユーザの検索用のユーザ秘密鍵を用いて第１の鍵照合情報を生成し、
前記第２のステップでは、前記検索クライアントが、前記第１のユーザの識別情報、前記出力用の秘匿検索キーワード、及び前記第１の鍵照合情報を含む検索要求を送信し、
前記第３のステップでは、前記データ管理サーバが、前記第１の鍵管理情報の前記第１のユーザに対応するレコードに含まれる鍵照合情報と、前記検索要求に含まれる前記第１の鍵照合情報とが一致する場合に、前記第１のユーザの検索用のユーザ秘密鍵が有効なものであると判定し、
前記第４のステップでは、前記データ管理サーバが、前記第１のユーザに対応するレコードに含まれる変換用の差分鍵マスク及び検索鍵を用いて前記出力用の秘匿検索キーワードを変換することによって、前記管理用の秘匿検索キーワードを生成し、
前記第６のステップでは、前記データ管理サーバが、前記第１のユーザに対応するレコードに含まれる変換用の差分鍵マスクを用いて前記管理用の秘匿データを変換することによって前記第１の出力用の秘匿データを生成することを特徴とするデータ管理方法。
【請求項１０】
請求項９に記載のデータ管理方法であって、
前記計算機システムは、前記共通秘密鍵及び前記第１のマスタ秘密鍵を保持する鍵管理サーバを備え、
前記データ管理方法は、
前記鍵管理サーバが、前記第１のユーザの追加指示を受け付けた場合、第１の検索鍵を含む前記第１のユーザの検索用のユーザ秘密鍵を生成するステップと、
前記鍵管理サーバが、前記共通秘密鍵及び前記第１のユーザの検索用のユーザ秘密鍵を用いて、第２の鍵照合情報を生成するステップと、
前記鍵管理サーバが、前記第１のマスタ秘密鍵及び前記第１のユーザの検索用のユーザ秘密鍵を用いて生成された二つの乱数ストリームの差分を表す第１の変換用の差分鍵マスクを生成するステップと、
前記鍵管理サーバが、前記第１のユーザの識別情報、前記第２の鍵照合情報、前記第１の検索鍵、及び前記第１の変換用の差分鍵マスクを含むユーザの追加要求を前記データ管理サーバに送信するステップと、
前記データ管理サーバが、前記ユーザの追加要求を受信した場合、前記第１のユーザの識別情報、前記第２の鍵照合情報、前記第１の検索鍵、及び前記第１の変換用の差分鍵マスクから構成されるレコードを前記第１の鍵管理情報に追加するステップと、
前記鍵管理サーバが、前記第１のユーザの識別情報及び前記第１のユーザの検索用のユーザ秘密鍵を含む鍵の設定要求を前記検索クライアントに送信するステップと、を含むことを特徴とするデータ管理方法。
【請求項１１】
請求項１０に記載のデータ管理方法であって、
前記鍵管理サーバは、前記ユーザの識別情報及び前記検索用のユーザ秘密鍵から構成されるレコードを含む第２の鍵管理情報を保持し、
前記データ管理方法は、
前記鍵管理サーバが、前記第１のユーザの失効指示を受け付けた場合、前記第１のユーザの識別情報を含むユーザ失効要求を前記データ管理サーバに送信するステップと、
前記データ管理サーバが、前記ユーザ失効要求を受信した場合、前記第１の鍵管理情報を参照して、前記第１のユーザの識別情報に一致するレコードを検索し、当該レコードを削除するステップと、
前記鍵管理サーバが、前記第２の鍵管理情報を参照して、前記第１のユーザの識別情報に一致するレコードを検索し、当該レコードを削除するステップと、を含むことを特徴とするデータ管理方法。
【請求項１２】
請求項１１に記載のデータ管理方法であって、
前記鍵管理サーバが、前記第１のユーザの検索用のユーザ秘密鍵の更新指示を受け付けた場合、第２の検索鍵を含む新たな第１のユーザの検索用のユーザ秘密鍵を生成するステップと、
前記鍵管理サーバが、前記共通秘密鍵及び前記新たな第１のユーザの検索用のユーザ秘密鍵を用いて、第３の鍵照合情報を生成するステップと、
前記鍵管理サーバが、前記第１のマスタ秘密鍵及び前記新たな第１のユーザの検索用のユーザ秘密鍵を用いて生成された二つの乱数ストリームの差分を表す第２の変換用の差分鍵マスクを生成するステップと、
前記鍵管理サーバが、前記第１のユーザの識別情報、前記第３の鍵照合情報、前記第２の検索鍵、及び前記第２の変換用の差分鍵マスクを含むユーザ秘密鍵の更新要求を前記データ管理サーバに送信するステップと、
前記鍵管理サーバが、前記第１のユーザの識別情報及び前記新たな第１のユーザの検索用のユーザ秘密鍵を含む鍵の更新要求を前記検索クライアントに送信するステップと、
前記データ管理サーバが、前記ユーザ秘密鍵の更新要求を受信した場合、前記第１の鍵管理情報を参照して、前記第１のユーザの識別情報に一致するレコードを検索するステップと、
前記データ管理サーバが、前記第３の鍵照合情報、前記第２の検索鍵、及び前記第２の変換用の差分鍵マスクを前記検索されたレコードに登録するステップと、を含むことを特徴とするデータ管理方法。
【請求項１３】
請求項１１に記載のデータ管理方法であって、
前記鍵管理サーバが、マスタ秘密鍵の更新指示を受け付けた場合、第２のマスタ秘密鍵を生成するステップと、
前記鍵管理サーバが、前記第１のマスタ秘密鍵及び前記第２のマスタ秘密鍵を用いて生成された二つの乱数ストリームの差分を表す更新用の差分鍵マスクを生成するステップと、
前記鍵管理サーバが、前記更新用の差分鍵マスクを含む秘匿データの更新要求を前記データ管理サーバに送信するステップと、
前記データ管理サーバが、前記秘匿データの更新要求を受信した場合、前記更新用の差分鍵マスクを用いて、前記データベースに格納される前記管理用の秘匿データを、前記第２のマスタ秘密鍵を用いた確率的暗号化方式に基づいて暗号化された管理用の秘匿データに変換するステップと、
前記データ管理サーバが、前記更新用の差分鍵マスクを用いて、前記第１の鍵管理情報に含まれる各レコードの前記変換用の差分鍵マスクを、前記第２のマスタ秘密鍵に対応した変換用の差分鍵マスクに変換するステップと、を含むことを特徴とするデータ管理方法。
【請求項１４】
請求項１１に記載のデータ管理方法であって、
前記計算機システムは、前記データ管理サーバに秘匿データを登録する複数の登録クライアントを備え、
前記複数の登録クライアントの各々は、前記共通秘密鍵、及び前記登録クライアントを使用するユーザ毎に割り当てられる登録用のユーザ秘密鍵を保持し、
前記データ管理方法は、
前記登録クライアントが、第２のユーザから第１のデータを含む登録指示を受け付けた場合、前記共通秘密鍵及び前記第２のユーザの登録用のユーザ秘密鍵を用いて前記第１のデータを暗号化することによって、第２の出力用の秘匿データを生成するステップと、
前記登録クライアントが、前記共通秘密鍵及び前記第２のユーザの登録用のユーザ秘密鍵を用いて第４の鍵照合情報を生成するステップと、
前記登録クライアントが、前記第２のユーザの識別情報、前記第２の出力用の秘匿データ、及び前記第４の鍵照合情報を含むデータの登録要求を前記データ管理サーバに送信するステップと、
前記データ管理サーバが、前記登録要求を受信した場合、前記第１の鍵管理情報を参照して、前記第２のユーザに対応するレコードに含まれる鍵照合情報と、前記検索要求に含まれる前記第４の鍵照合情報とが一致するか否かを判定するステップと、
前記データ管理サーバが、前記第２のユーザに対応するレコードに含まれる鍵照合情報と前記第４の鍵照合情報とが一致する場合、前記検索されたレコードに含まれる変換用の差分鍵マスクを用いて前記第２の出力用の秘匿データを変換することによって前記管理用の秘匿データに生成するステップと、
前記データ管理サーバが、前記データベースに生成された前記管理用の秘匿データを格納するステップと、を含むことを特徴とするデータ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、暗号化されたデータの登録及び検索が可能なシステムに関する。
【背景技術】
【０００２】
システムの開発費用及びシステムの運用管理費の削減等を目的として、近年、クラウドサービスが利用されている。クラウドサービスでは、システムを管理する組織と、システムを利用する組織とが異なるため、情報漏えい等の防止、並びに、発生した事故の原因究明及び再発防止等の対策を立てにくい。そのため、データの流出の予防策として、暗号技術を活用し、データの機密性を事前に確保する必要がある。
【０００３】
前述の課題を解決する技術として特許文献１に記載の技術が知られている。特許文献１には、「検索可能暗号処理ステムは、データを預かるＤＢサーバと、ＤＢサーバにデータを預託する登録クライアントと、ＤＢサーバにデータを検索させる検索クライアントがネットワーク経由で連携し、登録クライアントは、ハッシュ値と準同型関数を用いたマスクによる確率的暗号化方式を用いて、暗号化したデータをサーバに預託し、検索クライアントは、検索クエリの暗号化に準同型関数を用いたマスクによる確率的暗号化を用い、ＤＢサーバにマスクを解除させずに、かつ、ＤＢサーバに検索に該当するデータの出現頻度が漏洩しないよう、検索クエリと該当しないデータを検索結果として出力させる。」ことが記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】国際公開第２０１２／０７７５４１号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に記載された技術では、登録クライアント及び検索クライアントが同一の秘密鍵を保持する。一般的に、同一の秘密鍵を共有するクライアント（ユーザ）、特に、検索クライアントの増加に伴って、情報が漏洩する可能性が高くなる。したがって、ＤＢサーバが保持する暗号化されたデータに使用する秘密鍵が漏洩した場合、悪意のある第三者によって暗号化されたデータが復号される危険性がある。
【０００６】
秘密鍵が漏洩した場合、前述した危険性に対応するためには、新たに秘密鍵を生成し、全てのクライアントに秘密鍵を再度配布する必要がある。このとき、秘密鍵の再配布に伴って、ＤＢサーバが保持するデータを新たな秘密鍵に対応したデータに変換する必要がある。すなわち、クライアントは、ＤＢサーバからデータを取得し、古い秘密鍵を用いてデータを復号し、さらに、新しい鍵を用いて暗号化したデータをＤＢサーバに登録する必要がある。
【０００７】
したがって、従来技術では秘密鍵の漏洩に伴う対策を迅速に行うことが難しい。本発明は、迅速に秘密鍵の漏洩に伴う対策を行うことが可能なシステム及び方法を提供する。
【課題を解決するための手段】
【０００８】
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、データ管理サーバ及び複数の検索クライアントを備える計算機システムであって、前記データ管理サーバは、第１のマスタ秘密鍵を用いた確率的暗号化方式に基づいて暗号化された管理用の秘匿データを格納するデータベースを管理し、前記複数の検索クライアントの各々は、共通秘密鍵、及び前記検索クライアントを使用するユーザ毎に割り当てられる検索用のユーザ秘密鍵を保持し、前記検索クライアントは、第１のユーザから検索キーワードを含む検索指示を受け付けた場合、前記共通秘密鍵及び前記第１のユーザの検索用のユーザ秘密鍵を用いて前記検索キーワードを暗号化することによって、出力用の秘匿検索キーワードを生成し、前記出力用の秘匿検索キーワードを含む検索要求を前記データ管理サーバに送信し、前記データ管理サーバから、前記第１のユーザの検索用のユーザ秘密鍵を用いて暗号化された第１の出力用の秘匿データを受信し、前記第１のユーザの検索用のユーザ秘密鍵を用いて前記第１の出力用の秘匿データを復号することによって平文データを生成し、前記データ管理サーバは、前記検索要求を受信した場合、前記第１のユーザの検索用のユーザ秘密鍵が有効であるか否かを判定する照合処理を実行し、前記第１のユーザの検索用のユーザ秘密鍵が有効であると判定された場合、前記出力用の秘匿検索キーワードを前記第１のマスタ秘密鍵を用いた暗号文に変換することによって、前記管理用の秘匿データを検索するための管理用の秘匿検索キーワードを生成し、前記データベースを参照して、前記管理用の秘匿検索キーワードに一致する管理用の秘匿データを検索し、検索された前記管理用の秘匿データを前記第１のユーザの検索用のユーザ秘密鍵を用いた暗号文に変換することによって前記第１の出力用の秘匿データを生成し、前記検索クライアントに、前記第１の出力用の秘匿データを送信することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、ユーザ秘密鍵が漏洩した場合、漏洩したユーザ秘密鍵の更新又は失効等の対策を行えばよく、他のユーザ秘密鍵及びデータベースに格納されるデータを更新する必要がない。したがって、迅速に秘密鍵の漏洩に伴う対策を行うことができる。前述した以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
【図面の簡単な説明】
【００１０】
【図１】実施例１の検索可能暗号システムの構成例を示す図である。
【図２】実施例１の検索可能暗号システムを構成する計算機のハードウェア構成の一例を示す図である。
【図３】実施例１の登録クライアントの機能構成の一例を示す図である。
【図４】実施例１の検索クライアントの機能構成の一例を示す図である。
【図５】実施例１のデータ管理サーバの機能構成の一例を示す図である。
【図６】実施例１の鍵管理サーバの機能構成の一例を示す図である。
【図７】実施例１のデータ管理サーバが保持する鍵管理情報の一例を示す図である。
【図８】実施例１の鍵管理サーバが保持する鍵管理情報の一例を示す図である。
【図９Ａ】実施例１の出力装置に表示される画面の一例を示す図である。
【図９Ｂ】実施例１の出力装置に表示される画面の一例を示す図である。
【図９Ｃ】実施例１の出力装置に表示される画面の一例を示す図である。
【図１０】実施例１のシステム内で実行されるユーザ追加処理の流れを示すシーケンス図である。
【図１１】実施例１の鍵管理サーバが実行する鍵バージョン生成処理の一例を説明するフローチャートである。
【図１２】実施例１の鍵管理サーバが実行する差分鍵マスク生成処理の一例を説明するフローチャートである。
【図１３】実施例１のシステム内で実行されるユーザ失効処理の流れを示すシーケンス図である。
【図１４】実施例１のシステム内で実行される秘匿データの登録処理の流れを示すシーケンス図である。
【図１５】実施例１のシステム内で実行される秘匿データの検索処理の流れを示すシーケンス図である。
【図１６】実施例１のシステム内で実行されるユーザ秘密鍵の更新処理の流れを示すシーケンス図である。
【図１７】実施例１のシステム内で実行されるマスタ秘密鍵の更新処理の流れを示すシーケンス図である。
【図１８】実施例１のシステム内で実行される鍵回復処理の流れを示すシーケンス図である。
【発明を実施するための形態】
【００１１】
「発明が解決しようとする課題」に記載した課題のほかに、以下のような課題がある。
【００１２】
従来技術では、特定のユーザからのデータベースへのアクセスを制限するためには、秘密鍵が漏洩した場合と同様に、新たに秘密鍵を生成し、特定のユーザ以外のユーザに再度秘密鍵を配布する必要がある。また、新たな秘密鍵に対応したデータに変換する必要がある。
【００１３】
従来技術では、ＤＢサーバにデータを登録する場合、ＤＢサーバは、受信した秘匿データが正しい秘密鍵を用いて生成されたデータであるか否かを判定できない。そのため、秘密鍵の設定ミスに起因して、検索不可能な秘匿データがデータ管理サーバに登録される可能性がある。このような秘匿データが登録された場合、検索クライアントがデータを取得できず、また、データ管理サーバの記憶領域の使用量の増大及びデータ検索速度の低下の原因となる。
【００１４】
また、従来技術では、ＤＢサーバは、不正な秘匿検索キーワードを受信した場合、検索を行うことができないためエラーを通知する。この場合、検索クライアントは、該当する秘匿データが存在しないと判定する可能性がある。
【００１５】
以下、本発明の実施形態について図面を用いて詳細に説明する。
【実施例１】
【００１６】
図１は、実施例１の検索可能暗号システムの構成例を示す図である。
【００１７】
検索可能暗号システムは、登録クライアント１０１、検索クライアント１０２、データ管理サーバ１０３、鍵管理サーバ１０４、及び管理クライアント１０５から構成される。システムを構成する各装置は、ネットワーク１１０を介して情報を送受信できるよう接続される。なお、ネットワーク１１０の種類としては、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）及びＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等が考えられる。また、ネットワーク１１０の接続方式は、有線又は無線のいずれでもよい。
【００１８】
登録クライアント１０１は、確率的暗号化方式にしたがって平文データから出力用の秘匿データを生成し、データ管理サーバ１０３に秘匿データ（管理用の秘匿データ）を登録する。ここで、確率的暗号化方式は、平文データから、同値関係及び大小関係が秘匿されたランダムな暗号化データを生成する暗号化のアルゴリズムである。確率的暗号化方式では、平文及び暗号文が一対多の対応関係を有する。
【００１９】
検索クライアント１０２は、確率的暗号化方式にしたがって検索キーワード（平文データ）から出力用の秘匿検索キーワードを生成し、出力用の秘匿検索キーワードを含む検索要求をデータ管理サーバ１０３に送信する。
【００２０】
データ管理サーバ１０３は、秘匿データ５３２（図５参照）を格納し、また、検索要求に対応する秘匿データ５３２を検索する。
【００２１】
本実施例のデータ管理サーバ１０３は、任意の秘密鍵を用いて生成された暗号化データを別の秘密鍵を用いて生成された暗号化データに変換する機能を有する。具体的には、データ管理サーバ１０３は、登録クライアント１０１から受信した出力用の秘匿データを秘匿データ５３２に変換し、データベース５０３（図５参照）に格納する。また、データ管理サーバ１０３は、データベース５０３に格納された秘匿データ５３２を出力用の秘匿データに変換し、検索クライアント１０２に送信する。また、データ管理サーバ１０３は、出力用の秘匿検索キーワードを、データベース５０３を検索可能な秘匿検索キーワード（管理用の秘匿検索キーワード）に変換する。
【００２２】
鍵管理サーバ１０４は、本システムにおいて使用する秘密鍵を生成し、各装置に生成した秘密鍵を送信する。
【００２３】
管理クライアント１０５は、鍵管理サーバ１０４に、ユーザの追加、ユーザの失効、及び秘密鍵の更新等の要求を送信する。なお、鍵管理サーバ１０４が管理クライアント１０５の機能を有してもよい。
【００２４】
ここで、登録クライアント１０１、検索クライアント１０２、データ管理サーバ１０３、鍵管理サーバ１０４、及び管理クライアント１０５のハードウェア構成について説明する。図２は、実施例１の検索可能暗号システムを構成する計算機のハードウェア構成の一例を示す図である。
【００２５】
計算機２００は、ＣＰＵ２０１、メモリ２０２、記憶装置２０３、ネットワークインタフェース２０４、及び入出力インタフェース２０５を有する。計算機２００を構成する各ハードウェアは、システムバス等の内部通信線を介して互いに接続される。なお、計算機２００は、ＣＤ及びＤＶＤ等の非一時的記憶媒体に対する読出処理及び書込処理を行えるドライブを有してもよい。
【００２６】
ＣＰＵ２０１は、メモリ２０２に格納されるプログラムを実行する。ＣＰＵ２０１がプログラムにしたがって処理を実行することによって、所定の機能を有するモジュールとして動作する。以下の説明では、モジュールを主語に説明する場合、ＣＰＵ２０１が当該モジュールを実現するプログラムを実行していることを示す。
【００２７】
メモリ２０２は、ＣＰＵ２０１が実行するプログラム及び当該プログラムによって用いられる情報を格納する。また、メモリ２０２は、プログラムが一時的に使用するワークエリア等の一時記憶領域を含む。
【００２８】
記憶装置２０３は、データを永続的に格納する。記憶装置２０３は、例えば、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）及びＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等が考えられる。
【００２９】
ネットワークインタフェース２０４は、ネットワークを介して他の装置と接続するためのインタフェースである。
【００３０】
入出力インタフェース２０５は、入力装置２０６及び出力装置２０７と接続するためのインタフェースである。なお、入力装置２０６は、キーボード、マウス、及びタッチパネル等を含み、出力装置２０７は、ディスプレイ及びタッチパネル等を含む。
【００３１】
なお、メモリ２０２に格納されるプログラム及び情報は、記憶装置２０３に格納されてもよい。この場合、ＣＰＵ２０１が、記憶装置２０３からプログラム及び情報を読み出し、メモリ２０２に格納し、メモリ２０２に格納されたプログラムを実行する。また、メモリ２０２に格納されるプログラムは、非一時的記憶媒体又はネットワークを介してインストールしてもよい。
【００３２】
図３は、実施例１の登録クライアント１０１の機能構成の一例を示す図である。
【００３３】
登録クライアント１０１は、通信モジュール３００及び制御モジュール３０１を有し、また、暗号化コンテキスト３０２、共通秘密鍵３０３、ユーザ秘密鍵３０４、及び平文データ３０５を保持する。
【００３４】
暗号化コンテキスト３０２は、暗号処理及び復号処理に用いる情報であり、暗号化アルゴリズム３２１、初期ベクトル３２２、及び検索タグ長３２３を含む。なお、出力用の秘匿データのソースとなるデータが１２８ビット以下に固定されている場合、初期ベクトル３２２は処理に用いなくてもよい。この場合、暗号化コンテキスト３０２には、初期ベクトル３２２が含まれなくてもよい。
【００３５】
共通秘密鍵３０３は、登録クライアント１０１及び検索クライアント１０２が共有し、暗号化処理及び復号処理に使用する秘密鍵である。共通秘密鍵３０３は、乱数マスク生成鍵３３１及びデータ暗号化鍵３３２を含む。本実施例では、共通秘密鍵３０３は更新されない。登録クライアント１０１は、一つの共通秘密鍵３０３を保持する。
【００３６】
ユーザ秘密鍵３０４は、登録クライアント１０１を使用するユーザに対して設定される秘密鍵であり、鍵マスク生成鍵３４１及び鍵マスク用ノンス３４２を含む。ユーザ秘密鍵３０４は、追加、削除、及び更新が可能な秘密鍵である。ユーザ秘密鍵３０４は登録クライアント１０１を使用するユーザに対して割り当てられる秘密鍵であるため、登録クライアント１０１は、一つ以上のユーザ秘密鍵３０４を保持する。
【００３７】
また、ユーザ秘密鍵３０４は、他のユーザ秘密鍵３０４と異なる値である。すなわち、各ユーザ秘密鍵３０４に含まれる鍵マスク生成鍵３４１及び鍵マスク用ノンス３４２の少なくともいずれか一方の値が異なる。また、ユーザ秘密鍵３０４に含まれる鍵マスク生成鍵３４１及び鍵マスク用ノンス３４２の少なくともいずれかの値は、ユーザ秘密鍵４０４（図４参照）に含まれる鍵マスク生成鍵４４１及び鍵マスク用ノンス４４２と異なる。
【００３８】
平文データ３０５は、入力装置２０６を介して入力されたデータであり、出力用の秘匿データのソースとなるデータである。なお、出力用の秘匿データは、ユーザ秘密鍵３０４を用いて生成されたデータであり、初期ベクトル３２２、暗号文本体、及び検索タグから構成される。
【００３９】
通信モジュール３００は、データの通信を制御する。
【００４０】
制御モジュール３０１は、全体処理モジュール３１１、暗号化モジュール３１２、擬似乱数生成モジュール３１４、不可逆変換モジュール３１５、準同型関数演算モジュール３１６、及び基本演算モジュール３１７を含む。
【００４１】
全体処理モジュール３１１は、登録クライアント１０１全体を制御する。具体的には、全体処理モジュール３１１は、データの入出力を制御し、また、暗号化処理及び復号処理を制御する。例えば、以下のような制御が行われる。
【００４２】
全体処理モジュール３１１は、入力装置２０６を介して受け付けた平文データをメモリ２０２の一時記憶領域に平文データ３０５として格納し、また、出力装置２０７を介して平文データ３０５を表示する。全体処理モジュール３１１は、出力用の秘匿データの生成及び送信を行うために、各種モジュールを制御する。
【００４３】
暗号化モジュール３１２は、暗号化処理を実行することによって、平文データ３０５から暗号化データを生成する。例えば、暗号化モジュール３１２は、全体処理モジュール３１１によって平文データ３０５及びデータ暗号化鍵３３２が入力された場合、暗号化データを生成する。なお、暗号化モジュール３１２は、標準的な暗号化アルゴリズムにしたがった暗号化処理を実行する。
【００４４】
擬似乱数生成モジュール３１４は、標準的な擬似乱数生成アルゴリズムにしたがって、擬似乱数を生成する。例えば、擬似乱数生成モジュール３１４は、温度、時間、及び電力量等の物理量から乱数を生成する。本実施例では、擬似乱数生成モジュール３１４は、全体処理モジュール３１１から入力された乱数マスク生成鍵３３１及び初期ベクトル３２２を用いて、擬似乱数を生成する。なお、乱数マスク生成鍵３３１及び初期ベクトル３２２の少なくともいずれか一方の値を変更することによって、異なる擬似乱数を生成できる。
【００４５】
不可逆変換モジュール３１５は、不可逆変換処理を実行して、入力されたデータを変換する。例えば、不可逆変換モジュール３１５は、全体処理モジュール３１１から入力されたデータを固定長が異なるデータに変換する。不可逆変換モジュール３１５は、標準的な暗号ハッシュ関数アルゴリズムであるＳＨＡ−２５６関数にしたがって、任意の長さの入力データを２５６ビットのデータに変換する。
【００４６】
準同型関数演算モジュール３１６は、準同型関数にデータを入力し、演算結果を出力する。ここで、準同型関数Ｆは、入力変数Ｘ、Ｙに対して式（１）を満たす。
【００４７】
【数１】
2018097034.tif 000003
【００４８】
ここで、ドット及びアスタリスクは、加算、乗算、及び排他的論理和等の演算を表す記号である。
【００４９】
排他的論理和に対応する演算記号ｘｏｒを用いると、式（１）は式（２）のように表される。
【００５０】
【数２】
2018097034.tif 000004
【００５１】
基本演算モジュール３１７は、加算、減算、比較演算、ＡＮＤ演算、ＯＲ演算、ＸＯＲ演算等の基本的な演算処理を実行する。例えば、基本演算モジュール３１７は、全体処理モジュール３１１から入力された二つのデータのビット毎のＸＯＲ演算、又は、二つのデータの一致又は大小関係を判定する比較演算を実行する。
【００５２】
本実施例では、暗号化モジュール３１２、擬似乱数生成モジュール３１４、不可逆変換モジュール３１５、準同型関数演算モジュール３１６、及び基本演算モジュール３１７を用いることによって、確率的暗号化方式の暗号化処理を実現している。
【００５３】
図４は、実施例１の検索クライアント１０２の機能構成の一例を示す図である。
【００５４】
検索クライアント１０２は、通信モジュール４００及び制御モジュール４０１を有し、また、暗号化コンテキスト４０２、共通秘密鍵４０３、ユーザ秘密鍵４０４、及び平文検索キーワード４０５を保持する。
【００５５】
暗号化コンテキスト４０２は、暗号処理及び復号処理に用いる情報であり、暗号化アルゴリズム４２１、初期ベクトル４２２、検索タグ長４２３、及び指定ブロック４２４を含む。なお、出力用の秘匿検索キーワードのソースとなるデータが１２８ビット以下に固定されている場合、初期ベクトル４２２は処理に用いなくてもよい。この場合、暗号化コンテキスト４０２には、初期ベクトル４２２が含まれなくてもよい。
【００５６】
共通秘密鍵４０３は、共通秘密鍵３０３と同一のものであり、乱数マスク生成鍵４３１及びデータ暗号化鍵４３２を含む。検索クライアント１０２は、一つの共通秘密鍵４０３を保持する。
【００５７】
ユーザ秘密鍵４０４は、検索クライアント１０２を使用するユーザに対して設定される秘密鍵であり、鍵マスク生成鍵４４１、鍵マスク用ノンス４４２、及び検索鍵４４３を含む。ユーザ秘密鍵４０４は、追加、削除、及び更新が可能な秘密鍵である。ユーザ秘密鍵４０４は検索クライアント１０２を使用するユーザに対して割り当てられる秘密鍵であるため、検索クライアント１０２は、一つ以上のユーザ秘密鍵４０４を保持する。
【００５８】
また、ユーザ秘密鍵４０４は、他のユーザ秘密鍵４０４と異なる値である。すなわち、各ユーザ秘密鍵４０４に含まれる鍵マスク生成鍵４４１及び鍵マスク用ノンス４４２の少なくともいずれか一方の値が異なり、また、各ユーザ秘密鍵４０４に含まれる検索鍵４４３は全て異なる。また、ユーザ秘密鍵４０４に含まれる鍵マスク生成鍵４４１及び鍵マスク用ノンス４４２の少なくともいずれかの値は、ユーザ秘密鍵３０４に含まれるに鍵マスク生成鍵３４１及び鍵マスク用ノンス３４２と異なる。
【００５９】
平文検索キーワード４０５は、入力装置２０６を介して入力されたデータであり、出力用の秘匿検索キーワードのソースとなるデータである。なお、出力用の秘匿検索キーワードは、ユーザ秘密鍵４０４を用いて生成されたデータであり、暗号文本体及び検索タグから構成される。
【００６０】
通信モジュール４００は、通信モジュール３００と同一のものである。
【００６１】
制御モジュール４０１は、全体処理モジュール４１１、暗号化モジュール４１２、復号モジュール４１３、擬似乱数生成モジュール４１４、不可逆変換モジュール４１５、準同型関数演算モジュール４１６、及び基本演算モジュール４１７を含む。
【００６２】
擬似乱数生成モジュール４１４、不可逆変換モジュール４１５、準同型関数演算モジュール４１６、及び基本演算モジュール４１７は、擬似乱数生成モジュール３１４、不可逆変換モジュール３１５、準同型関数演算モジュール３１６、及び基本演算モジュール３１７と同一のものである。
【００６３】
全体処理モジュール４１１は、検索クライアント１０２全体を制御する。具体的には、全体処理モジュール４１１は、データの入出力を制御し、また、暗号化処理及び復号処理を制御する。例えば、以下のような制御が行われる。
【００６４】
全体処理モジュール４１１は、入力装置２０６を介して受け付けた平文検索キーワードをメモリ２０２の一時記憶領域に平文検索キーワード４０５として格納し、また、出力装置２０７を介して平文検索キーワード４０５を表示する。全体処理モジュール４１１は、出力用の秘匿検索キーワードの生成及び送信を行うために、各種モジュールを制御する。全体処理モジュール３１１は、データ管理サーバ１０３から受信した平文データ５３１及び秘匿データ５３２をメモリ２０２の一時記憶領域に格納する。また、全体処理モジュール３１１は、秘匿データ５３２を復号するために、各種モジュールを制御し、また、出力装置２０７を介して復号された平文データを表示する。
【００６５】
暗号化モジュール４１２は、暗号化処理を実行することによって、平文検索キーワード４０５から出力用の秘匿検索キーワードを生成する。なお、暗号化モジュール４１２が実行する処理は、暗号化モジュール３１２と同様の処理である。
【００６６】
復号モジュール４１３は、復号処理を実行することによって、暗号化データから平文データを生成する。例えば、復号モジュール４１３は、全体処理モジュール４１１から秘匿データ５３２及びデータ暗号化鍵４３２が入力された場合、復号処理を実行し、平文データを生成する。
【００６７】
本実施例では、暗号化モジュール４１２、復号モジュール４１３、擬似乱数生成モジュール４１４、不可逆変換モジュール４１５、準同型関数演算モジュール４１６、及び基本演算モジュール４１７を用いることによって、確率的暗号化方式の暗号化処理及び復号処理を実現している。
【００６８】
図５は、実施例１のデータ管理サーバ１０３の機能構成の一例を示す図である。
【００６９】
データ管理サーバ１０３は、通信モジュール５００及び制御モジュール５０１を有し、また、暗号化コンテキスト５０２、データベース５０３、及び鍵管理情報５０５を保持する。
【００７０】
暗号化コンテキスト５０２は、暗号処理及び復号処理に用いる情報であり、暗号化アルゴリズム５２１、初期ベクトル５２２、検索タグ長５２３、及び指定ブロック５２４を含む。
【００７１】
データベース５０３は、登録クライアント１０１によって登録されたデータを格納する。本実施例のデータベース５０３には、平文データ５３１及び秘匿データ５３２が格納される。データベース５０３は、ＲＤＢ（Ｒｅｌａｔｉｏｎａｌ  Ｄａｔａｂａｓｅ）及びＫＶＳ（Ｋｅｙ  Ｖａｌｕｅ  Ｓｔｏｒｅ）等が考えられる。データベース５０３がＲＤＢの場合、一つのレコードに一つのデータ（平文データ５３１及び秘匿データ５３２）が格納される。なお、データベース５０３には、秘匿データ５３２のみが格納されてもよい。
【００７２】
データベース５０３に格納される秘匿データ５３２は、マスタ秘密鍵６０６（図６参照）を用いて暗号化されたデータに対応する。本実施例では、データ管理サーバ１０３がマスタ秘密鍵６０６を保持することなく、出力用の秘匿データと秘匿データ５３２との間の変換を実現する。
【００７３】
鍵管理情報５０５は、各ユーザ秘密鍵３０４、４０４に関する情報である。鍵管理情報５０５の詳細は図７を用いて説明する。
【００７４】
通信モジュール５００は、通信モジュール３００と同一のものである。
【００７５】
制御モジュール５０１は、全体処理モジュール５１１、復号モジュール５１３、不可逆変換モジュール５１５、準同型関数演算モジュール５１６、基本演算モジュール５１７、及びユーザ認証モジュール５１８を含む。
【００７６】
不可逆変換モジュール５１５、準同型関数演算モジュール５１６、及び基本演算モジュール５１７は、不可逆変換モジュール３１５、準同型関数演算モジュール３１６、及び基本演算モジュール３１７と同一のものである。また、復号モジュール５１３は、復号モジュール４１３と同一のものである。
【００７７】
全体処理モジュール５１１は、データ管理サーバ１０３全体を制御する。具体的には、全体処理モジュール５１１は、データの入出力を制御し、また、データの検索を制御する。例えば、以下のような制御が行われる。
【００７８】
全体処理モジュール５１１は、通信モジュール４００を介して受け付けた平文データ及び出力用の秘匿データをデータベース５０３に格納する。全体処理モジュール５１１は、出力用の秘匿検索キーワードの受信及びデータの検索を行うために、各種モジュールを制御する。全体処理モジュール３１１は、通信モジュール４００を介して受け付けた情報をメモリ２０２の一時記憶領域に格納し、また、出力装置２０７を介してデータを表示する。
【００７９】
ユーザ認証モジュール５１８は、ユーザの認証処理を実行する。例えば、ユーザ認証モジュール５１８は、ユーザＩＤ及びパスワードに基づく認証処理、又は生体認証方式の認証処理等を実行する。なお、本発明は、認証処理に限定されない。
【００８０】
図６は、実施例１の鍵管理サーバ１０４の機能構成の一例を示す図である。
【００８１】
鍵管理サーバ１０４は、通信モジュール６００及び制御モジュール６０１を有し、また、共通秘密鍵６０３、マスタ秘密鍵６０６、及び鍵管理情報６０５を保持する。
【００８２】
共通秘密鍵６０３は、共通秘密鍵３０３と同一のものであり、乱数マスク生成鍵６３１及びデータ暗号化鍵６３２を含む。
【００８３】
マスタ秘密鍵６０６は、データ管理サーバ１０３が管理する秘匿データ５３２の生成時の暗号化処理に使用する秘密鍵であり、鍵マスク生成鍵６６１及び鍵マスク用ノンス６６２を含む。本実施例では、秘匿データ５３２は、共通秘密鍵４０３及びマスタ秘密鍵６０６を用いて生成される。また、マスタ秘密鍵６０６は、ユーザ秘密鍵３０４、４０４と異なる値である。すなわち、マスタ秘密鍵６０６に含まれる鍵マスク生成鍵６６１及び鍵マスク用ノンス６６２の少なくともいずれかの値は、ユーザ秘密鍵３０４、４０４に含まれる鍵マスク生成鍵３４１、４４１及び鍵マスク用ノンス３４２、４４２と異なる。
【００８４】
鍵管理情報６０５は、各ユーザの秘密鍵に関する情報である。鍵管理情報６０５の詳細は図８を用いて説明する。
【００８５】
通信モジュール６００は、通信モジュール３００と同一のものである。
【００８６】
制御モジュール６０１は、全体処理モジュール６１１、擬似乱数生成モジュール６１４、不可逆変換モジュール６１５、基本演算モジュール４１７、ユーザ認証モジュール６１８、及び鍵生成モジュール６１９を含む。
【００８７】
擬似乱数生成モジュール６１４、不可逆変換モジュール６１５、及び基本演算モジュール４１７は、擬似乱数生成モジュール３１４、不可逆変換モジュール３１５、基本演算モジュール３１７と同一のものである。また、ユーザ認証モジュール６１８は、ユーザ認証モジュール５１８と同一のものである。
【００８８】
全体処理モジュール６１１は、鍵管理サーバ１０４全体を制御する。具体的には、全体処理モジュール６１１は、データの入出力を制御し、また、鍵の生成、削除、及び更新を制御する。例えば、以下のような制御が行われる。
【００８９】
全体処理モジュール６１１は、通信モジュール６００を介して各種要求を受け付ける。全体処理モジュール６１１は、鍵の生成、削除、更新、及び送信を行うために、各種モジュールを制御する。
【００９０】
鍵生成モジュール６１９は、標準的な鍵の生成アルゴリズムに基づいて、共通秘密鍵３０３、４０３、ユーザ秘密鍵３０４、４０４、及びマスタ秘密鍵６０６等の各種秘密鍵を生成する。なお、鍵生成モジュール６１９の代わりに、擬似乱数生成モジュール６１４が秘密鍵を生成してもよい。
【００９１】
図７は、実施例１のデータ管理サーバ１０３が保持する鍵管理情報５０５の一例を示す図である。
【００９２】
鍵管理情報５０５は、ユーザＩＤ７０１、差分鍵マスク７０２、検索鍵７０３、及び鍵バージョン７０４から構成されるレコードを含む。一つのレコードが一人のユーザに対応する。
【００９３】
ユーザＩＤ７０１は、ユーザを一意に識別するための識別情報を格納するカラムである。
【００９４】
差分鍵マスク７０２は、ユーザ秘密鍵３０４、４０４及びマスタ秘密鍵６０６から生成された差分鍵マスクを格納するカラムである。
【００９５】
検索鍵７０３は、ユーザ秘密鍵４０４に含まれる検索鍵４４３を格納するカラムである。なお、ユーザ秘密鍵３０４には検索鍵４４３が含まれていないため、ユーザ秘密鍵３０４に対応するレコードの検索鍵７０３は空欄となる。
【００９６】
鍵バージョン７０４は、ユーザ秘密鍵３０４、４０４のバージョンを示す鍵バージョンを格納するカラムである。本実施例では、鍵バージョンは、ユーザ秘密鍵３０４、４０４が有効なものであるか否かを判定するための鍵照合情報として用いられる。
【００９７】
図８は、実施例１の鍵管理サーバ１０４が保持する鍵管理情報６０５の一例を示す図である。
【００９８】
鍵管理情報６０５は、ユーザＩＤ８０１、鍵マスク生成鍵８０２、鍵マスク用ノンス８０３、及び検索鍵８０４から構成されるレコードを含む。一つのレコードが一人のユーザに対応する。
【００９９】
ユーザＩＤ８０１及び検索鍵８０４は、ユーザＩＤ７０１及び検索鍵７０３と同一のものである。なお、ユーザ秘密鍵３０４に対応するレコードの検索鍵８０４は、空欄となる。
【０１００】
鍵マスク生成鍵８０２は、ユーザ秘密鍵３０４、４０４に含まれる鍵マスク生成鍵３４１、４４１を格納するカラムである。
【０１０１】
鍵マスク用ノンス８０３は、ユーザ秘密鍵３０４、４０４に含まれる鍵マスク用ノンス３４２、４４２を格納するカラムである。
【０１０２】
図９Ａ、図９Ｂ、及び図９Ｃは、実施例１の出力装置２０７に表示される画面の一例を示す図である。
【０１０３】
図９Ａは、管理クライアント１０５の出力装置２０７に表示される管理画面９００の一例を示す。管理画面９００は、選択欄９０１、ユーザＩＤ入力欄９０２、及び実行ボタン９０３を含む。
【０１０４】
選択欄９０１は、鍵管理サーバ１０４に要求する処理の種別を選択するための欄である。選択欄９０１には、「ユーザ追加」、「ユーザ失効」、「ユーザ秘密鍵更新」、及び「マスタ秘密鍵更新」のいずれかを選択するためのラジオボタンを含む。
【０１０５】
なお、「ユーザ追加」は、登録クライアント１０１又は検索クライアント１０２を使用するユーザを追加するための処理であり、「ユーザ失効」は、ユーザを削除するための処理である。また、「ユーザ秘密鍵更新」は、特定のユーザ秘密鍵３０４、４０４を更新するための処理であり、「マスタ秘密鍵更新」はマスタ秘密鍵６０６を更新するための処理である。
【０１０６】
ユーザＩＤ入力欄９０２は、処理対象のユーザの識別情報を入力するための欄である。なお、「マスタ秘密鍵更新」を選択する場合、ユーザＩＤ入力欄９０２への入力は必要ない。
【０１０７】
実行ボタン９０３は、選択欄９０１に対応する処理の実行要求を送信するための操作ボタンである。
【０１０８】
管理クライアント１０５を使用する管理者は、入力装置２０６を用いて、選択欄９０１及びユーザＩＤ入力欄９０２を操作し、また、実行ボタン９０３を操作する。管理クライアント１０５は、実行ボタン９０３が操作された場合、選択欄９０１に対応する処理の実行要求を鍵管理サーバ１０４に送信する。
【０１０９】
図９Ｂは、登録クライアント１０１の出力装置２０７に表示される登録画面９１０の一例を示す。登録画面９１０は、入力欄９１１及び登録ボタン９１２を含む。
【０１１０】
入力欄９１１は、データ管理サーバ１０３に登録するデータに含める項目を設定するための欄である。本実施例の入力欄９１１には、氏名、生年月日、住所、及びメールアドレスを設定する入力欄を含む。
【０１１１】
登録ボタン９１２は、入力欄９１１に設定された項目を含むデータを登録するための操作ボタンである。
【０１１２】
登録クライアント１０１を使用するユーザは、入力装置２０６を用いて、入力欄９１１を操作し、また、登録ボタン９１２を操作する。登録クライアント１０１は、登録ボタン９１２が操作された場合、入力欄９１１の値を含む平文データ３０５を暗号化することによって出力用の秘匿データを生成し、生成された出力用の秘匿データを含む登録要求をデータ管理サーバ１０３に送信する。
【０１１３】
図９Ｃは、検索クライアント１０２の出力装置２０７に表示される検索画面９２０の一例を示す。検索画面９２０は、入力欄９２１及び検索ボタン９２２を含む。
【０１１４】
入力欄９２１は、データ管理サーバ１０３に登録されたデータを検索するための検索条件を設定するための欄である。本実施例の入力欄９２１には、氏名、生年月日、住所、及びメールアドレスを設定する入力欄を含む。ユーザは、少なくとも一つの入力欄に値を設定する。
【０１１５】
検索ボタン９２２は、入力欄９２１に設定された検索条件に一致するデータを検索するための操作ボタンである。
【０１１６】
検索クライアント１０２を使用するユーザは、入力装置２０６を用いて、入力欄９２１を操作し、また、検索ボタン９２２を操作する。検索クライアント１０２は、検索ボタン９２２が操作された場合、入力欄９２１の値を含む平文検索キーワード４０５を暗号化することによって出力用の秘匿検索キーワードを生成し、出力用の秘匿検索キーワードを含む検索要求をデータ管理サーバ１０３に送信する。なお、検索対象が平文データ５３１である場合、検索クライアント１０２は、平文検索キーワード４０５を含む検索要求をデータ管理サーバ１０３に送信する。
【０１１７】
次に、システム内で実行される処理について説明する。
【０１１８】
＜ユーザ追加処理＞
図１０は、実施例１のシステム内で実行されるユーザ追加処理の流れを示すシーケンス図である。ここでは、検索クライアント１０２及びユーザを追加する場合を一例として処理を説明する。
【０１１９】
管理クライアント１０５と鍵管理サーバ１０４との間で認証処理が完了した後、管理者は、管理画面９００を参照し、選択欄９０１の「ユーザ追加」のラジオボタンを操作し、また、ユーザＩＤ入力欄９０２に値を設定した後、実行ボタン９０３を操作する。
【０１２０】
管理クライアント１０５は、管理画面９００を介して管理者からユーザ追加指示を受け付けた場合、ユーザＩＤを含むユーザ追加要求を鍵管理サーバ１０４に送信する（ステップＳ１００１）。
【０１２１】
鍵管理サーバ１０４は、ユーザ追加要求を受信した場合、新規ユーザに割り当てるユーザ秘密鍵４０４を生成する（ステップＳ１００２）。具体的には、以下のような処理が実行される。
【０１２２】
全体処理モジュール６１１は、鍵生成モジュール６１９にユーザ秘密鍵４０４の生成を指示する。
【０１２３】
鍵生成モジュール６１９は、鍵マスク生成鍵４４１、鍵マスク用ノンス４４２、及び検索鍵４４３を生成することによって、ユーザ秘密鍵４０４を生成する。
【０１２４】
鍵生成モジュール６１９は、鍵管理情報６０５にレコードを追加し、追加されたレコードのユーザＩＤ８０１にユーザ追加要求に含まれるユーザＩＤを設定する。また、鍵生成モジュール６１９は、追加されたレコードの鍵マスク生成鍵８０２、鍵マスク用ノンス８０３、及び検索鍵８０４に、生成された鍵マスク生成鍵４４１、鍵マスク用ノンス４４２、及び検索鍵４４３を設定する。以上がステップＳ１００２の処理の説明である。
【０１２５】
鍵管理サーバ１０４は、鍵バージョン生成処理を実行し（ステップＳ１００３）、また、ユーザ秘密鍵４０４及びマスタ秘密鍵６０６を用いて、差分鍵マスク生成処理を実行する（ステップＳ１００４）。
【０１２６】
鍵バージョン生成処理の詳細は図１１を用いて説明する。また、差分鍵マスク生成処理の詳細は図１２を用いて説明する。
【０１２７】
鍵管理サーバ１０４は、ユーザＩＤ、鍵バージョン、差分鍵マスク、及び検索鍵４４３を含むユーザ追加要求をデータ管理サーバ１０３に送信する（ステップＳ１００５）。
【０１２８】
データ管理サーバ１０３は、ユーザ追加要求を受信した場合、鍵管理情報５０５を更新する（ステップＳ１００６）。
【０１２９】
具体的には、全体処理モジュール５１１は、鍵管理情報５０５にレコードを追加し、追加されたレコードのユーザＩＤ７０１、差分鍵マスク７０２、検索鍵７０３、及び鍵バージョン７０４に、ユーザ追加要求に含まれるユーザＩＤ、差分鍵マスク、検索鍵４４３、及び鍵バージョンを設定する。
【０１３０】
データ管理サーバ１０３は、鍵管理情報５０５の更新処理の成否を示す値を含む処理結果を鍵管理サーバ１０４に送信する（ステップＳ１００７）。
【０１３１】
鍵管理サーバ１０４は、鍵管理情報５０５の更新処理の失敗を示す値を含む処理結果を受信した場合、ステップＳ１００８の処理を実行せずに、ステップＳ１０１１に進む。ステップＳ１０１１では、鍵管理情報５０５の更新処理の失敗を示す値を含む処理結果が送信される。
【０１３２】
鍵管理サーバ１０４は、鍵管理情報５０５の更新処理の成功を示す値を含む処理結果を受信した場合、ユーザを追加する検索クライアント１０２に鍵設定要求を送信する（ステップＳ１００８）。なお、鍵管理サーバ１０４は、ユーザを追加する検索クライアント１０２を予め把握しているものとする。
【０１３３】
本実施例では、検索クライアント１０２も新規に追加されるため、全体処理モジュール６１１は、ユーザＩＤ、共通秘密鍵６０３、及びユーザ秘密鍵４０４を含む鍵設定要求を、検索クライアント１０２に送信する。なお、既存の検索クライアント１０２にユーザを追加する場合、共通秘密鍵６０３を送信する必要はないため、鍵設定要求には、共通秘密鍵６０３は含まれない。
【０１３４】
検索クライアント１０２は、鍵設定要求を受信した場合、鍵設定要求に含まれる秘密鍵を設定する（ステップＳ１００９）。
【０１３５】
具体的には、全体処理モジュール４１１は、メモリ２０２に共通秘密鍵４０３を格納する。また、全体処理モジュール４１１は、メモリ２０２にユーザＩＤとユーザ秘密鍵４０４を対応付けて格納する。
【０１３６】
検索クライアント１０２は、鍵の設定処理の成否を示す値を含む処理結果を鍵管理サーバ１０４に送信する（ステップＳ１０１０）。
【０１３７】
鍵管理サーバ１０４は、検索クライアント１０２から処理結果を受信した場合、管理クライアント１０５に処理結果を送信する（ステップＳ１０１１）。
【０１３８】
管理クライアント１０５は、出力装置２０７を介して処理結果を管理者に表示する（ステップＳ１０１２）。
【０１３９】
なお、登録クライアント１０１にユーザを登録する場合、ステップＳ１６０２では、検索鍵４４３を含まないユーザ秘密鍵３０４が生成される。この場合、鍵バージョン生成処理では、検索鍵４４３を含まないユーザ秘密鍵３０４を用いて処理が行われる。
【０１４０】
図１０で説明したように、本実施例では、ユーザ毎にユーザ秘密鍵３０４、４０４が生成される。後述するように、平文データ３０５はユーザ秘密鍵３０４を用いて暗号化され、平文検索キーワード４０５はユーザ秘密鍵４０４を用いて暗号化され、また、データ管理サーバ１０３から取得した秘匿データ５３２はユーザ秘密鍵４０４を用いて復号される。ユーザ毎に暗号化処理及び復号処理に用いる秘密鍵を割り当てることによって、ユーザ単位でデータ管理サーバ１０３へのアクセスを管理できる。これによって、秘密鍵の漏洩に伴うリスクを低減でき、また、秘密鍵が漏洩した場合に迅速な対応が可能となる。
【０１４１】
ここで、鍵バージョン生成処理及び差分鍵マスク生成処理について説明する。
【０１４２】
＜鍵バージョン生成処理＞
図１１は、実施例１の鍵管理サーバ１０４が実行する鍵バージョン生成処理の一例を説明するフローチャートである。
【０１４３】
まず、鍵バージョンについて説明する。鍵バージョンは、データの暗号化に使用されたユーザ秘密鍵及びノンスの集合から生成される値である。後述するように、データ管理サーバ１０３は、鍵バージョンを用いて、有効なユーザ秘密鍵３０４、４０４を用いて生成された秘匿データ及び秘匿検索キーワードであるか否かを判定する。すなわち、データ管理サーバ１０３は、ユーザ秘密鍵３０４、４０４そのものを取得することなく、ユーザ秘密鍵３０４、４０４が有効なものであるか否かを判定できる。
【０１４４】
全体処理モジュール６１１は、共通秘密鍵６０３及びユーザ秘密鍵３０４、４０４を連結したデータを不可逆変換モジュール６１５に入力し、鍵バージョンの生成を指示する（ステップＳ１１０１）。
【０１４５】
不可逆変換モジュール６１５は、全体処理モジュール６１１によって入力されたデータを変換することによって、鍵バージョンを生成する。
【０１４６】
＜差分鍵マスク生成処理＞
図１２は、実施例１の鍵管理サーバ１０４が実行する差分鍵マスク生成処理の一例を説明するフローチャートである。
【０１４７】
まず、差分鍵マスクについて説明する。差分鍵マスクは、二つの秘密鍵から独立に生成された二種類の乱数ストリームの差分を示す値である。後述するように、データ管理サーバ１０３は、第１の秘密鍵及び第２の秘密鍵から生成された差分鍵マスクを用いて、第１の秘密鍵を用いて生成された暗号化データと第２の秘密鍵を用いて生成された暗号化データとの間の変換を制御する。
【０１４８】
本実施例では、差分鍵マスク生成処理によって、マスタ秘密鍵６０６及びユーザ秘密鍵３０４、４０４から生成される変換用差分鍵マスクと、古いマスタ秘密鍵６０６及び新しいマスタ秘密鍵６０６から生成される更新用差分鍵マスクが算出される。
【０１４９】
例えば、変換用差分鍵マスクを用いることによって以下のような暗号化データの変換が可能となる。データ管理サーバ１０３は、出力用の秘匿データ及び出力用の秘匿検索キーワードを、マスタ秘密鍵６０６に対応した秘匿データ５３２及び秘匿検索キーワードに変換できる。また、データ管理サーバ１０３は、マスタ秘密鍵６０６に対応する秘匿データ５３２及び秘匿検索キーワードを、出力用の秘匿データ及び出力用の秘匿検索キーワードに変換できる。
【０１５０】
例えば、更新用差分鍵マスクを用いることによって以下のような暗号化データの変換が可能となる。データ管理サーバ１０３は、古いマスタ秘密鍵６０６に対応する秘匿データ５３２を新しいマスタ秘密鍵６０６に対応する秘匿データ５３２に変換できる。また、データ管理サーバ１０３は、古いマスタ秘密鍵６０６に対応する変換用差分鍵マスクを新しいマスタ秘密鍵６０６に対応する変換用差分鍵マスクに変換できる。
【０１５１】
図１２では、マスタ秘密鍵６０６及びユーザ秘密鍵３０４から生成される変換用差分鍵マスクの生成方法について説明する。
【０１５２】
全体処理モジュール６１１は、ユーザ秘密鍵３０４に含まれる鍵マスク生成鍵３４１及び鍵マスク用ノンス３４２を擬似乱数生成モジュール６１４に入力し、ユーザ秘密鍵３０４に対応する第１の鍵ストリームの生成を指示する（ステップＳ１２０１）。
【０１５３】
擬似乱数生成モジュール６１４は、出力用の秘匿データの生成時に生成される中間暗号文と同一サイズの第１の鍵ストリームを生成する。
【０１５４】
全体処理モジュール６１１は、マスタ秘密鍵６０６に含まれる鍵マスク生成鍵６６１及び鍵マスク用ノンス６６２を擬似乱数生成モジュール６１４に入力し、マスタ秘密鍵６０６に対応する第２の鍵ストリームの生成を指示する（ステップＳ１２０２）。
【０１５５】
擬似乱数生成モジュール６１４は、出力用の秘匿データの生成時に生成される中間暗号文と同一サイズの第２の鍵ストリームを生成する。
【０１５６】
全体処理モジュール６１１は、第１の鍵ストリーム及び第２の鍵ストリームを基本演算モジュール６１６に入力し、第１の鍵ストリーム及び第２の鍵ストリームの排他的論理和の演算を指示する（ステップＳ１２０３）。
【０１５７】
基本演算モジュール６１６は、式（３）にしたがって、第１の鍵ストリーム及び第２の鍵ストリームの排他的論理和を、変換用差分鍵マスクとして算出する。
【０１５８】
【数３】
2018097034.tif 000005
【０１５９】
ここで、Ｔ（Ａ）は、ユーザ秘密鍵３０４「Ａ」から生成された第１の鍵ストリームを示し、Ｔ（Ｍ）は、マスタ秘密鍵６０６「Ｍ」から生成された第２の鍵ストリームを示し、ＫＤ（Ｍ，Ａ）は変換用差分鍵マスクを示す。
【０１６０】
なお、ステップＳ１２０１及びステップＳ１２０２の処理の順番は入れ替えてもよい。また、更新用差分鍵マスクは、古いマスタ秘密鍵６０６に対応する第１の鍵ストリームＴ（Ｍ）及び新しいマスタ秘密鍵６０６に対応する第２の鍵ストリームＴ（Ｍ’）の排他的論理和から算出される。
【０１６１】
＜ユーザ失効処理＞
図１３は、実施例１のシステム内で実行されるユーザ失効処理の流れを示すシーケンス図である。
【０１６２】
管理クライアント１０５と鍵管理サーバ１０４との間で認証処理が完了した後、管理者は、管理画面９００を参照し、選択欄９０１の「ユーザ失効」のラジオボタンを操作し、また、ユーザＩＤ入力欄９０２に値を設定した後、実行ボタン９０３を操作する。
【０１６３】
管理クライアント１０５は、管理画面９００を介して管理者からユーザ失効指示を受け付けた場合、ユーザＩＤを含むユーザ失効要求を鍵管理サーバ１０４に送信する（ステップＳ１３０１）。
【０１６４】
鍵管理サーバ１０４は、ユーザ失効要求を受信した場合、当該ユーザ失効要求をデータ管理サーバ１０３に転送する（ステップＳ１３０２）。このとき、鍵管理サーバ１０４は、メモリの一時記憶領域にユーザ失効要求に含まれるユーザＩＤを格納する。
【０１６５】
データ管理サーバ１０３は、ユーザ失効要求を受信した場合、鍵管理情報５０５を更新し（ステップＳ１３０３）、鍵管理情報５０５の更新処理の成否を示す値を含む処理結果を鍵管理サーバ１０４に送信する（ステップＳ１３０４）。具体的には、以下のような処理が実行される。
【０１６６】
全体処理モジュール５１１は、鍵管理情報５０５を参照して、ユーザＩＤ７０１がユーザ失効要求に含まれるユーザＩＤに一致するレコードを検索する。
【０１６７】
レコードが存在する場合、全体処理モジュール５１１は、鍵管理情報５０５から検索されたレコードを削除する。また、全体処理モジュール５１１は、鍵管理情報５０５の更新処理の成功を示す値を含む処理結果を鍵管理サーバ１０４に送信する。
【０１６８】
レコードが存在しない場合、全体処理モジュール５１１は、鍵管理情報５０５の更新処理の失敗を示す値を含む処理結果を鍵管理サーバ１０４に送信する。以上がステップＳ１３０３及びステップＳ１３０４の処理の説明である。
【０１６９】
鍵管理サーバ１０４は、鍵管理情報５０５の更新処理の失敗を示す値を含む処理結果を受信した場合、ステップＳ１３０５の処理を実行せずに、ステップＳ１３０６に進む。ステップＳ１３０６では、鍵管理情報５０５の更新処理の失敗を示す値を含む処理結果が送信される。
【０１７０】
鍵管理サーバ１０４は、鍵管理情報５０５の更新処理の成功を示す値を含む処理結果を受信した場合、鍵管理情報６０５を更新する（ステップＳ１３０５）。
【０１７１】
全体処理モジュール６１１は、鍵管理情報６０５を参照して、ユーザＩＤ８０１が一時記憶領域に格納されるユーザＩＤに一致するレコードを検索し、検索されたレコードを削除する。
【０１７２】
鍵管理サーバ１０４は、鍵管理情報６０５の更新処理の成否を示す値を含む処理結果を管理クライアント１０５に送信する（ステップＳ１３０６）。
【０１７３】
管理クライアント１０５は、鍵管理サーバ１０４から処理結果を受信した場合、出力装置２０７を介して処理結果を管理者に表示する（ステップＳ１３０７）。
【０１７４】
図１３で説明したように、鍵管理情報５０５から特定のユーザのレコードを削除することによって、当該ユーザの操作権限を失効できる。このとき、他のユーザには影響を与えない。
【０１７５】
＜秘匿データの登録処理＞
図１４は、実施例１のシステム内で実行される秘匿データの登録処理の流れを示すシーケンス図である。
【０１７６】
登録クライアント１０１と鍵管理サーバ１０４との間で認証処理が完了した後、ユーザは、登録画面９１０を参照し、入力欄９１１を操作した後、登録ボタン９１２を操作する。
【０１７７】
登録クライアント１０１は、登録画面９１０を介してユーザからデータの登録指示を受け付けた場合、出力用の秘匿データを生成する（ステップＳ１４０１）。具体的には、以下のような処理が実行される。
【０１７８】
全体処理モジュール３１１は、平文データ３０５、暗号化コンテキスト３０２に含まれる初期ベクトル３２２、及び共通秘密鍵３０３に含まれるデータ暗号化鍵３３２を暗号化モジュール３１２に入力し、中間暗号文の生成を指示する。
【０１７９】
暗号化モジュール３１２は、初期ベクトル３２２及びデータ暗号化鍵３３２を用いて平文データ３０５を暗号化することによって、中間暗号文を生成する。
【０１８０】
全体処理モジュール３１１は、暗号化コンテキスト３０２に含まれる初期ベクトル３２２及び共通秘密鍵３０３に含まれる乱数マスク生成鍵３３１を擬似乱数生成モジュール３１４に入力し、乱数マスクの生成を指示する。
【０１８１】
擬似乱数生成モジュール３１４は、初期ベクトル３２２及び乱数マスク生成鍵３３１を用いて、乱数マスクを生成する。
【０１８２】
全体処理モジュール３１１は、ユーザ秘密鍵３０４に含まれる鍵マスク生成鍵３４１及び鍵マスク用ノンス３４２を擬似乱数生成モジュール３１４に入力し、鍵マスクの生成を指示する。
【０１８３】
擬似乱数生成モジュール３１４は、鍵マスク生成鍵３４１及び鍵マスク用ノンス３４２を用いて鍵マスクを生成する。
【０１８４】
全体処理モジュール３１１は、中間暗号文、乱数マスク、及び鍵マスクを基本演算モジュール３１７に入力し、排他的論理和の演算を指示する。
【０１８５】
基本演算モジュール３１７は、式（４）に示すように、中間暗号文、乱数マスク、及び鍵マスクの排他的論理和を算出することによって、暗号文本体を生成する。
【０１８６】
【数４】
2018097034.tif 000006
【０１８７】
ここで、Ｄ（Ａ）は、ユーザ秘密鍵３０４「Ａ」を用いて生成された暗号文本体を示し、Ｃは中間暗号文を示し、Ｒは乱数マスクを示し、Ｔ（Ａ）はユーザ秘密鍵３０４「Ａ」を用いて生成された鍵マスク（鍵ストリーム）を示す。
【０１８８】
全体処理モジュール３１１は、乱数マスクを準同型関数演算モジュール３１６に入力し、準同型関数の演算を指示する。
【０１８９】
準同型関数演算モジュール３１６は、乱数マスクを入力した準同型関数から第１の演算結果を出力する。
【０１９０】
全体処理モジュール３１１は、第１の演算結果を不可逆変換モジュール３１５に入力し、演算を指示する。
【０１９１】
不可逆変換モジュール３１５は、第１の演算結果を変換することによって第２の演算結果を出力する。
【０１９２】
全体処理モジュール３１１は、第２の演算結果から、暗号化コンテキスト３０２に含まれる検索タグ長３２３に示すビット長のデータを検索タグとして抽出する。
【０１９３】
全体処理モジュール３１１は、初期ベクトル３２２、暗号文本体、及び検索タグを結合することによって、出力用の秘匿データを生成する。以上がステップＳ１４０１の処理の説明である。
【０１９４】
次に、登録クライアント１０１は、鍵バージョン生成処理を実行する（ステップＳ１４０２）。
【０１９５】
登録クライアント１０１は、ユーザＩＤ、出力用の秘匿データ、及び鍵バージョンを含むデータ登録要求をデータ管理サーバ１０３に送信する（ステップＳ１４０３）。
【０１９６】
データ管理サーバ１０３は、データ登録要求を受信した場合、鍵管理情報５０５を用いて照合処理を実行する（ステップＳ１４０４）。具体的には、以下のような処理を実行する。
【０１９７】
全体処理モジュール５１１は、データ登録要求に含まれるユーザＩＤ、出力用の秘匿データ、及び鍵バージョンをメモリ２０２の一時記憶領域に格納する。全体処理モジュール５１１は、鍵管理情報５０５を参照して、ユーザＩＤ７０１がデータ登録要求に含まれるユーザＩＤに一致するレコードを検索する。
【０１９８】
レコードが存在しない場合、全体処理モジュール５１１は、照合失敗と判定し、照合失敗を示す値をメモリ２０２の一時記憶領域に格納し、ステップＳ１４０５及びステップＳ１４０６の処理を実行することなくステップＳ１４０７に進む。ステップＳ１４０７では、照合失敗を示す値を含む処理結果が送信される。
【０１９９】
レコードが存在する場合、全体処理モジュール５１１は、検索されたレコードの鍵バージョン７０４と、データ登録要求に含まれる鍵バージョンとが一致するか否かを判定する。
【０２００】
検索されたレコードの鍵バージョン７０４と、データ登録要求に含まれる鍵バージョンとが一致しない場合、全体処理モジュール５１１は、照合失敗と判定し、照合失敗を示す値をメモリ２０２の一時記憶領域に格納し、ステップＳ１４０５及びステップＳ１４０６の処理を実行することなくステップＳ１４０７に進む。ステップＳ１４０７では、照合失敗を示す値を含む処理結果が送信される。
【０２０１】
検索されたレコードの鍵バージョン７０４と、データ登録要求に含まれる鍵バージョンとが一致する場合、全体処理モジュール５１１は、照合成功と判定し、検索されたレコードの差分鍵マスク７０２及び検索鍵７０３の値を取得する。以上がステップＳ１４０４の処理の説明である。
【０２０２】
データ管理サーバ１０３は、マスタ秘密鍵６０６を用いて、出力用の秘匿データを秘匿データ５３２に変換する再暗号化処理を実行する（ステップＳ１４０５）。具体的には、以下のような処理が実行される。
【０２０３】
全体処理モジュール５１１は、出力用の秘匿データから暗号文本体を取得する。全体処理モジュール５１１は、暗号文本体及び差分鍵マスク７０２を基本演算モジュール５１７に入力し、排他的論理和の演算を指示する。
【０２０４】
基本演算モジュール５１７は、式（５）に示すように、暗号文本体及び差分鍵マスクの排他的論理和を算出することによって、新たな暗号文本体を生成する。
【０２０５】
【数５】
2018097034.tif 000007
【０２０６】
ここで、Ｄ（Ｍ）はマスタ秘密鍵６０６を用いて生成された暗号文本体を示し、ＫＤ（Ｍ，Ａ）は変換用差分鍵マスクを示す。
【０２０７】
式（５）は、式（３）及び式（４）を用いて式（６）のように変形できる。
【０２０８】
【数６】
2018097034.tif 000008
【０２０９】
式（６）は、式（４）のＴ（Ａ）をマスタ秘密鍵６０６「Ｍ」を用いて生成された鍵マスクＴ（Ｍ）に置き換えた式である。したがって、出力用の秘匿データの暗号文本体が共通秘密鍵３０３及びマスタ秘密鍵６０６を用いて生成された暗号文本体に変換されていることが分かる。
【０２１０】
全体処理モジュール５１１は、初期ベクトル３２２、新たな暗号文本体、及び検索タグを結合することによって、秘匿データ５３２を生成する。以上がステップＳ１４０５の処理の説明である。
【０２１１】
次に、データ管理サーバ１０３は、データベース５０３に秘匿データ５３２を格納し（ステップＳ１４０６）、登録クライアント１０１に処理結果を送信する（ステップＳ１４０７）。
【０２１２】
処理結果には、通常、成功を示す値が含まれる。ただし、照合処理が失敗した場合、データベース５０３に秘匿データ５３２を登録できない場合、又は、再暗号化処理が失敗した場合、処理結果には各処理の失敗を示す値が含まれる。
【０２１３】
登録クライアント１０１は、データ管理サーバ１０３から処理結果を受信した場合、出力装置２０７を介して処理結果をユーザに表示する（ステップＳ１４０８）。
【０２１４】
鍵管理情報５０５に登録されていないユーザが登録クライアント１０１を操作した場合、データ管理サーバ１０３は、出力用の秘匿データの登録を行わない。また、秘匿データ５３２の再暗号化処理では、データ管理サーバ１０３は、ユーザ秘密鍵３０４を用いて生成された出力用の秘匿データを復号することなく、マスタ秘密鍵６０６を用いた生成された秘匿データ５３２に変換できる。また、再暗号化処理では、共通秘密鍵３０３、ユーザ秘密鍵３０４、及びマスタ秘密鍵６０６はデータ管理サーバ１０３に知らされないため、データ管理サーバ１０３は秘匿データ５３２を平文データに復号できない。したがって、セキュリティの問題は発生しない。
【０２１５】
＜秘匿データの検索処理＞
図１５は、実施例１のシステム内で実行される秘匿データ５３２の検索処理の流れを示すシーケンス図である。
【０２１６】
検索クライアント１０２と鍵管理サーバ１０４との間で認証処理が完了した後、ユーザは、検索画面９２０を参照し、入力欄９２１を操作した後、検索ボタン９２２を操作する。
【０２１７】
検索クライアント１０２は、検索画面９２０を介してユーザからデータの検索指示を受け付けた場合、出力用の秘匿検索キーワードを生成する（ステップＳ１５０１）。具体的には、以下のような処理が実行される。
【０２１８】
全体処理モジュール４１１は、平文検索キーワード４０５、暗号化コンテキスト４０２に含まれる初期ベクトル４２２、及び共通秘密鍵４０３に含まれるデータ暗号化鍵４３２を暗号化モジュール４１２に入力し、中間暗号文の生成を指示する。
【０２１９】
暗号化モジュール４１２は、データ暗号化鍵４３２及び初期ベクトル４２２を用いて平文検索キーワード４０５を暗号化することによって、中間暗号文を生成する。
【０２２０】
全体処理モジュール４１１は、暗号化コンテキスト４０２に含まれる初期ベクトル４２２及び共通秘密鍵４０３に含まれる乱数マスク生成鍵４３１を擬似乱数生成モジュール４１４に入力し、乱数マスクの生成を指示する。
【０２２１】
擬似乱数生成モジュール４１４は、初期ベクトル４２２及び乱数マスク生成鍵４３１を用いて、乱数マスクを生成する。
【０２２２】
全体処理モジュール４１１は、ユーザ秘密鍵４０４に含まれる鍵マスク生成鍵４４１及び鍵マスク用ノンス４４２を擬似乱数生成モジュール４１４に入力し、鍵マスクの生成を指示する。
【０２２３】
擬似乱数生成モジュール３１４は、鍵マスク生成鍵４４１及び鍵マスク用ノンス４４２を用いて鍵マスクを生成する。
【０２２４】
全体処理モジュール３１１は、中間暗号文、乱数マスク、及び鍵マスクを基本演算モジュール４１７に入力し、排他的論理和の演算を指示する。
【０２２５】
基本演算モジュール４１７は、式（７）に示すように、中間暗号文、乱数マスク、及び鍵マスクの排他的論理和を算出することによって、暗号文本体を生成する。
【０２２６】
【数７】
2018097034.tif 000009
【０２２７】
ここで、Ｗ（Ｂ）は、ユーザ秘密鍵４０４「Ｂ」を用いて生成された暗号文本体を示し、Ｒ’は乱数マスクを示し、Ｔ（Ｂ）はユーザ秘密鍵４０４「Ｂ」を用いて生成された鍵マスクを示す。なお、検索クライアント１０２が生成する乱数マスクは、登録クライアント１０１が生成する乱数マスクとは異なる値であるため、Ｒ’と記載している。
【０２２８】
全体処理モジュール４１１は、乱数マスクを準同型関数演算モジュール４１６に入力し、準同型関数の演算を指示する。
【０２２９】
準同型関数演算モジュール４１６は、乱数マスクを入力した準同型関数から第３の演算結果を出力する。
【０２３０】
全体処理モジュール３１１は、第３の演算結果、暗号化コンテキスト４０２に含まれる初期ベクトル４２２、及びユーザ秘密鍵４０４に含まれる検索鍵４４３を暗号化モジュール４１２に入力し、演算を指示する。
【０２３１】
暗号化モジュール４１２は、第３の演算結果、初期ベクトル４２２、及び検索鍵４４３を用いた暗号化処理を実行し、実行結果を検索タグとして出力する。
【０２３２】
全体処理モジュール４１１は、暗号文本体及び検索タグを結合することによって、出力用の秘匿検索キーワードを生成する。以上がステップＳ１５０１の処理の説明である。
【０２３３】
次に、検索クライアント１０２は、鍵バージョン生成処理を実行する（ステップＳ１５０２）。
【０２３４】
検索クライアント１０２は、ユーザＩＤ、出力用の秘匿検索キーワード、及び鍵バージョンを含むデータ検索要求をデータ管理サーバ１０３に送信する（ステップＳ１５０３）。
【０２３５】
データ管理サーバ１０３は、データ検索要求を受信した場合、鍵管理情報５０５を用いて、照合処理を実行する（ステップＳ１５０４）。具体的には、以下のような処理を実行する。
【０２３６】
全体処理モジュール５１１は、データ検索要求に含まれるユーザＩＤ、出力用の秘匿検索キーワード、及び鍵バージョンをメモリ２０２の一時記憶領域に格納する。全体処理モジュール５１１は、鍵管理情報５０５を参照して、ユーザＩＤ７０１がデータ検索要求に含まれるユーザＩＤに一致するレコードを検索する。
【０２３７】
レコードが存在しない場合、全体処理モジュール５１１は、照合処理の失敗と判定し、照合処理の失敗を示す値をメモリ２０２の一時記憶領域に格納し、ステップＳ１５０５からステップＳ１５０７の処理を実行することなくステップＳ１５０８に進む。ステップＳ１５０８では、照合処理の失敗を示す値を含む処理結果が送信される。
【０２３８】
レコードが存在する場合、全体処理モジュール５１１は、検索されたレコードの鍵バージョン７０４と、データ検索要求に含まれる鍵バージョンとが一致するか否かを判定する。
【０２３９】
検索されたレコードの鍵バージョン７０４と、データ検索要求に含まれる鍵バージョンとが一致しない場合、全体処理モジュール５１１は、照合処理の失敗と判定し、照合処理の失敗を示す値をメモリ２０２の一時記憶領域に格納し、ステップＳ１５０５からステップＳ１５０７の処理を実行することなくステップＳ１５０８に進む。ステップＳ１５０８では、照合処理の失敗を示す値を含む処理結果が送信される。
【０２４０】
検索されたレコードの鍵バージョン７０４と、データ検索要求に含まれる鍵バージョンとが一致する場合、全体処理モジュール５１１は、照合処理の成功と判定し、検索されたレコードの差分鍵マスク７０２及び検索鍵７０３の値を取得する。以上がステップＳ１５０４の処理の説明である。
【０２４１】
データ管理サーバ１０３は、出力用の秘匿検索キーワードをマスタ秘密鍵６０６を用いて生成された秘匿検索キーワードに変換する再暗号化処理を実行する（ステップＳ１５０５）。具体的には、以下のような処理が実行される。
【０２４２】
全体処理モジュール５１１は、出力用の秘匿検索キーワードから暗号文本体を取得する。全体処理モジュール５１１は、暗号文本体及び差分鍵マスク７０２を基本演算モジュール５１７に入力し、排他的論理和の演算を指示する。
【０２４３】
基本演算モジュール５１７は、式（８）に示すように、暗号文本体及び変換用差分鍵マスクの排他的論理和を算出することによって、新たな暗号文本体を生成する。
【０２４４】
【数８】
2018097034.tif 000010
【０２４５】
ここで、Ｗ（Ｍ）はマスタ秘密鍵６０６「Ｍ」を用いて生成された暗号文本体を示し、ＫＤ（Ｍ，Ｂ）は変換用差分鍵マスクを示す。
【０２４６】
式（８）は、式（３）及び式（７）を用いて式（９）のように変形できる。
【０２４７】
【数９】
2018097034.tif 000011
【０２４８】
式（９）は、式（７）のＴ（Ｂ）をマスタ秘密鍵６０６「Ｍ」を用いて生成された鍵マスクＴ（Ｍ）に置き換えた式である。したがって、出力用の秘匿検索キーワードの暗号文本体が共通秘密鍵４０３及びマスタ秘密鍵６０６を用いて生成された暗号文本体に変換されていることが分かる。
【０２４９】
全体処理モジュール５１１は、検索鍵７０３及び検索タグを復号モジュール５１３に入力し、復号を指示する。
【０２５０】
復号モジュール５１３は、検索鍵７０３を用いて検索タグを復号する。
【０２５１】
全体処理モジュール５１１は、新たな暗号文本体及び復号された検索タグを結合することによって、秘匿検索キーワードを生成する。以上がステップＳ１５０５の処理の説明である。
【０２５２】
次に、データ管理サーバ１０３は、生成された秘匿検索キーワードを用いて、データベース５０３に格納される秘匿データ５３２を検索する（ステップＳ１５０６）。具体的には、以下のような処理が実行される。
【０２５３】
全体処理モジュール５１１は、ターゲット秘匿データ５３２を一つ選択する。
【０２５４】
全体処理モジュール５１１は、ターゲット秘匿データ５３２の暗号文本体及び秘匿検索キーワードの暗号文本体を基本演算モジュール５１７に入力し、排他的論理和の演算を指示する。
【０２５５】
基本演算モジュール５１７は、ターゲット秘匿データ５３２の暗号文本体及び暗号化キーワードの暗号文本体の排他的論理和Ｒ’’を算出する。当該排他的論理和は、式（６）及び式（９）から、乱数マスクＲ及び乱数マスクＲ’の排他的論理和となる。
【０２５６】
全体処理モジュール５１１は、排他的論理和Ｒ’’を準同型関数演算モジュール３１６に入力し、準同型関数の演算を指示する。
【０２５７】
準同型関数は式（２）の関係を満たすことから、準同型関数演算モジュール３１６は、乱数マスクＲを入力した準同型関数の演算結果（第１の演算結果）と、乱数マスクＲ’ を入力した準同型関数の演算結果（第３の演算結果）との排他的論理和Ｆ’’を、Ｒ’’の準同型関数の演算結果として算出する。排他的論理和Ｆ’’とステップＳ１５０５において生成された検索タグとの排他的論理和の演算結果として、第１の演算結果が出力される。
【０２５８】
全体処理モジュール５１１は、第１の演算結果を不可逆変換モジュール５１５に入力し、演算を指示する。
【０２５９】
不可逆変換モジュール３１５は、第１の演算結果を変換することによって第４の演算結果を出力する。全体処理モジュール５１１は、第４の演算結果から、暗号化コンテキスト５０２に含まれる検索タグ長５２３に示すビット長のデータを抽出する。
【０２６０】
全体処理モジュール５１１は、抽出されたデータ及びターゲット秘匿データ５３２の検索タグが一致するか否かを判定する。
【０２６１】
抽出されたデータ及びターゲット秘匿データ５３２の検索タグが一致した場合、全体処理モジュール５１１は、検索結果としてターゲット秘匿データ５３２をメモリ２０２の一時記憶領域に格納する。
【０２６２】
抽出されたデータ及びターゲット秘匿データ５３２の検索タグが一致しない場合、全体処理モジュール５１１は、別の秘匿データ５３２をターゲット秘匿データ５３２に選択し、同様の処理を実行する。
【０２６３】
なお、秘匿検索キーワードに一致する秘匿データ５３２が存在しない場合、全体処理モジュール５１１は、メモリ２０２の一時領域に検索処理の失敗を示す値を格納し、ステップＳ１５０６及びステップＳ１５０７の処理を実行せずに、ステップＳ１５０８に進む。ステップＳ１５０８では、検索処理に失敗を示す値を含む処理結果が送信される。以上がステップＳ１５０６の処理の説明である。
【０２６４】
次に、データ管理サーバ１０３は、検索された秘匿データ５３２をユーザ秘密鍵４０４を用いて生成された出力用の秘匿データに変換するための再暗号化処理を実行する（ステップＳ１５０７）。具体的には、以下のような処理が実行される。
【０２６５】
全体処理モジュール５１１は、検索された秘匿データ５３２から暗号文本体を取得する。全体処理モジュール５１１は、差分鍵マスク７０２及び暗号文本体を基本演算モジュール５１７に入力し、排他的論理和の演算を指示する。
【０２６６】
基本演算モジュール５１７は、式（１０）に示すように、暗号文本体及び差分鍵マスク７０２の排他的論理和を算出することによって、新たな暗号文本体を生成する。
【０２６７】
【数１０】
2018097034.tif 000012
【０２６８】
式（１０）は、式（３）及び式（４）を用いて式（１１）のように変形できる。
【０２６９】
【数１１】
2018097034.tif 000013
【０２７０】
式（１１）に示すように、マスタ秘密鍵６０６から生成された暗号文本体が共通秘密鍵４０３及びユーザ秘密鍵４０４を用いて生成された出力用の秘匿データに変換されていることが分かる。
【０２７１】
全体処理モジュール５１１は、初期ベクトル３２２、新たな暗号文本体、及び検索タグを結合することによって、出力用の秘匿データを生成する。全体処理モジュール５１１は、出力用の秘匿データを検索結果としてメモリ２０２に格納する。以上がステップＳ１５０７の処理の説明である。
【０２７２】
次に、データ管理サーバ１０３は、処理結果を検索クライアント１０２に送信する（ステップＳ１５０８）。
【０２７３】
検索クライアント１０２は、受信した処理結果が各処理の失敗を示す値を含む場合、ステップＳ１５０９の処理を実行せずに、ステップＳ１５１０に進む。
【０２７４】
検索クライアント１０２は、受信した検索結果が出力用の秘匿データを含む場合、出力用の秘匿データの復号処理を実行する（ステップＳ１５０９）。具体的には、以下のような処理が実行される。
【０２７５】
全体処理モジュール４１１は、出力用の秘匿データを、初期ベクトル３２２、暗号文本体、及び検索タグに分解する。
【０２７６】
全体処理モジュール４１１は、出力用の秘匿データに含まれる初期ベクトル３２２及び暗号文本体、並びに、共通秘密鍵４０３に含まれる乱数マスク生成鍵４３１を擬似乱数生成モジュール４１４に入力し、乱数マスクの生成を指示する。
【０２７７】
擬似乱数生成モジュール３１４は、乱数マスク生成鍵４３１及び初期ベクトル３２２を用いて、乱数マスクを生成する。
【０２７８】
全体処理モジュール４１１は、ユーザ秘密鍵４０４に含まれる鍵マスク生成鍵４４１及び鍵マスク用ノンス４４２を擬似乱数生成モジュール４１４に入力し、鍵マスクの生成を指示する。
【０２７９】
擬似乱数生成モジュール４１４は、鍵マスク生成鍵４４１及び鍵マスク用ノンス４４２を用いて鍵マスクを生成する。
【０２８０】
全体処理モジュール４１１は、暗号文本体、乱数マスク、及び鍵マスクを基本演算モジュール４１７に入力し、排他的論理和の演算を指示する。
【０２８１】
基本演算モジュール４１７は、暗号文本体、乱数マスク、及び鍵マスクの排他的論理和を算出することによって、中間暗号文を生成する。
【０２８２】
全体処理モジュール４１１は、中間暗号文、出力用の秘匿データに含まれる初期ベクトル３２２、及び共通秘密鍵４０３に含まれるデータ暗号化鍵４３２を復号モジュール４１３に入力し、中間暗号文の復号を指示する。
【０２８３】
復号モジュール４１３は、初期ベクトル３２２及びデータ暗号化鍵４３２を用いて中間暗号文を復号することによって、平文データ３０５を取得する。以上が、ステップＳ１５０９の処理の説明である。
【０２８４】
検索クライアント１０２は、出力装置２０７を介して処理結果をユーザに表示する（ステップＳ１５１０）。
【０２８５】
鍵管理情報５０５に登録されていないユーザが検索クライアント１０２を操作した場合、データ管理サーバ１０３は、秘匿データ５３２の検索を行わない。また、秘匿検索キーワードの再暗号化処理では、データ管理サーバ１０３は、ユーザ秘密鍵４０４を用いて生成された出力用の秘匿検索キーワードを復号することなく、マスタ秘密鍵６０６を用いた生成された秘匿検索キーワードに変換できる。これによって、どのユーザ秘密鍵３０４を用いてもデータベース５０３の検索が可能となる。また、秘匿検索キーワード及び秘匿データの再暗号化処理では、共通秘密鍵４０３、ユーザ秘密鍵４０４、及びマスタ秘密鍵６０６はデータ管理サーバ１０３に知らされないため、データ管理サーバ１０３は秘匿検索キーワード及び秘匿データ５３２を平文データに復号できない。したがって、セキュリティの問題は発生しない。
【０２８６】
＜ユーザ秘密鍵の更新処理＞
図１６は、実施例１のシステム内で実行されるユーザ秘密鍵の更新処理の流れを示すシーケンス図である。ここでは、登録クライアント１０１のユーザ秘密鍵３０４を更新する場合を一例として処理を説明する。
【０２８７】
管理クライアント１０５と鍵管理サーバ１０４との間で認証処理が完了した後、管理者は、管理画面９００を参照し、選択欄９０１の「ユーザ秘密鍵更新」のラジオボタンを操作し、また、ユーザＩＤ入力欄９０２に値を設定した後、実行ボタン９０３を操作する。
【０２８８】
管理クライアント１０５は、管理画面９００を介して管理者からユーザ秘密鍵の更新指示を受け付けた場合、ユーザＩＤを含むユーザ秘密鍵の更新要求を鍵管理サーバ１０４に送信する（ステップＳ１６０１）。
【０２８９】
鍵管理サーバ１０４は、ユーザ秘密鍵の更新要求を受信した場合、新たなユーザ秘密鍵３０４を生成する（ステップＳ１６０２）。ステップＳ１６０２の処理は、ステップＳ１００２の処理と同様であるため説明を省略する。
【０２９０】
鍵管理サーバ１０４は、鍵バージョン生成処理を実行し（ステップＳ１６０３）、また、新たなユーザ秘密鍵３０４及びマスタ秘密鍵６０６を用いて、差分鍵マスク生成処理を実行する（ステップＳ１６０４）。ここでは、変換用差分鍵マスクが生成される。なお、ステップＳ１６０３及びステップＳ１６０４の処理は、ステップＳ１００３及びステップＳ１００４の処理と同様であるため説明を省略する。
【０２９１】
鍵管理サーバ１０４は、ユーザＩＤ、鍵バージョン、差分鍵マスク、及び検索鍵を含むユーザ秘密鍵の更新要求をデータ管理サーバ１０３に送信する（ステップＳ１６０５）。
【０２９２】
データ管理サーバ１０３は、ユーザ秘密鍵の更新要求を受信した場合、鍵管理情報５０５を更新する（ステップＳ１６０６）。
【０２９３】
具体的には、全体処理モジュール５１１は、鍵管理情報５０５を参照して、ユーザＩＤ７０１がユーザ秘密鍵の更新要求に含まれるユーザＩＤに一致するレコードを検索する。全体処理モジュール５１１は、検索されたレコードの差分鍵マスク７０２、検索鍵７０３、及び鍵バージョン７０４に、ユーザ秘密鍵の更新要求に含まれる差分鍵マスク、検索鍵、及び鍵バージョンを設定する。
【０２９４】
データ管理サーバ１０３は、鍵管理情報５０５の更新処理の成否を示す値を含む処理結果を鍵管理サーバ１０４に送信する（ステップＳ１６０７）。
【０２９５】
鍵管理サーバ１０４は、鍵管理情報５０５の更新処理の失敗を示す値を含む処理結果を受信した場合、ステップＳ１６０８の処理を実行せずに、ステップＳ１６１１に進む。ステップＳ１６１１では、鍵管理情報５０５の更新処理の失敗を示す値を含む処理結果が送信される。
【０２９６】
鍵管理サーバ１０４は、鍵管理情報５０５の更新処理の成功を示す値を含む処理結果を受信した場合、新たなユーザ秘密鍵３０４を含む鍵更新要求を登録クライアント１０１に送信する（ステップＳ１６０８）。
【０２９７】
登録クライアント１０１は、鍵更新要求を受信した場合、現在のユーザ秘密鍵３０４を新たなユーザ秘密鍵３０４に更新し（ステップＳ１６０９）、鍵管理サーバ１０４に処理結果を送信する（ステップＳ１６１０）。
【０２９８】
鍵管理サーバ１０４は、登録クライアント１０１から処理結果を受信した場合、管理クライアント１０５に処理結果を送信する（ステップＳ１６１１）。
【０２９９】
管理クライアント１０５は、出力装置２０７を用いて処理結果を管理者に表示する（ステップＳ１６１２）。
【０３００】
なお、検索クライアント１０２のユーザ秘密鍵４０４を更新する場合も同様の処理が実行される。
【０３０１】
なお、図１６では、管理クライアント１０５からのユーザ秘密鍵の更新要求を送信を契機に、ユーザ秘密鍵の更新処理が開始されているが、実行契機はこれに限定されない。例えば、ユーザ秘密鍵３０４、４０４に有効期限を示す値を付加し、登録クライアント１０１及び検索クライアント１０２が、有効期限を経過したユーザ秘密鍵３０４、４０４の更新要求を鍵管理サーバ１０４に送信する。
【０３０２】
暗号化処理及び復号処理に使用するユーザ秘密鍵３０４、４０４を更新する場合、特定のユーザが使用するユーザ秘密鍵３０４、４０４のみが更新される。すなわち、共通秘密鍵３０３、４０３は更新されず、また、他のユーザ秘密鍵３０４、４０４も更新されない。また、データベース５０３には、マスタ秘密鍵６０６を用いて生成された秘匿データ５３２が格納されるため、ユーザ秘密鍵３０４、４０４の更新に伴って、データベース５０３に格納される秘匿データ５３２を更新する必要がない。したがって、秘密鍵の更新コストを削減できる。
【０３０３】
＜マスタ秘密鍵の更新処理＞
図１７は、実施例１のシステム内で実行されるマスタ秘密鍵の更新処理の流れを示すシーケンス図である。
【０３０４】
管理クライアント１０５と鍵管理サーバ１０４との間で認証処理が完了した後、管理者は、管理画面９００を参照し、選択欄９０１の「マスタ秘密鍵更新」のラジオボタンを操作した後、実行ボタン９０３を操作する。
【０３０５】
管理クライアント１０５は、管理画面９００を介して管理者からマスタ秘密鍵の更新指示を受け付けた場合、マスタ秘密鍵の更新要求を鍵管理サーバ１０４に送信する（ステップＳ１７０１）。
【０３０６】
鍵管理サーバ１０４は、マスタ秘密鍵の更新要求を受信した場合、新たなマスタ秘密鍵６０６を生成し、古いマスタ秘密鍵６０６を新たなマスタ秘密鍵６０６に更新する（ステップＳ１７０２）。このとき、鍵管理サーバ１０４は、メモリ２０２の一時記憶領域に古いマスタ秘密鍵６０６を格納する。
【０３０７】
鍵管理サーバ１０４は、新しいマスタ秘密鍵６０６及び古いマスタ秘密鍵６０６を用いて、差分鍵マスク生成処理を実行する（ステップＳ１７０３）。ここでは、更新用差分鍵マスクが生成される。
【０３０８】
鍵管理サーバ１０４は、データ管理サーバ１０３に、更新用差分鍵マスクを含む秘匿データの更新要求を送信する（ステップＳ１７０４）。
【０３０９】
データ管理サーバ１０３は、秘匿データの更新要求を受信した場合、秘匿データの更新要求に含まれる更新用差分鍵マスクを用いてデータベース５０３に格納される秘匿データ５３２の再暗号化処理を実行する（ステップＳ１７０５）。具体的には、以下のような処理が実行される。
【０３１０】
全体処理モジュール５１１は、ターゲット秘匿データ５３２を一つ選択する。全体処理モジュール５１１は、ターゲット秘匿データ５３２の暗号文本体を取得する。
【０３１１】
全体処理モジュール５１１は、暗号文本体及び更新用差分鍵マスクを基本演算モジュール５１７に入力し、排他的論理和の演算を指示する。
【０３１２】
基本演算モジュール５１７は、式（１２）に示すように、暗号文本体及び更新用差分鍵マスクの排他的論理和を算出する。
【０３１３】
【数１２】
2018097034.tif 000014
【０３１４】
ここで、Ｄ（Ｍ’）は新たなマスタ秘密鍵６０６「Ｍ’」に対応する暗号文本体を示し、ＫＤ（Ｍ，Ｍ’）はステップＳ１７０３において生成された更新用差分鍵マスクを示す。
【０３１５】
式（１２）は、式（３）及び式（４）を用いて式（１３）のように変形できる。
【０３１６】
【数１３】
2018097034.tif 000015
【０３１７】
全体処理モジュール５１１は、初期ベクトル３２２、新たな暗号文本体、及び検索タグを結合することによって、新たな秘匿データ５３２を生成する。
【０３１８】
全体処理モジュール５１１は、データベース５０３に格納される全ての秘匿データ５３２に対して同様の処理を実行する。以上がステップＳ１７０５の処理の説明である。
【０３１９】
データ管理サーバ１０３は、鍵管理情報５０５の各レコードの差分鍵マスク７０２を更新する（ステップＳ１７０６）。具体的には、以下のような処理が実行される。
【０３２０】
全体処理モジュール５１１は、鍵管理情報５０５のレコードの中からターゲットレコードを一つ選択する。
【０３２１】
全体処理モジュール５１１は、更新用差分鍵マスク及びターゲットレコードの差分鍵マスク７０２を基本演算モジュール５１７に入力し、排他的論理和の演算を指示する。
【０３２２】
基本演算モジュール５１７は、式（１４）に示すように、更新用差分鍵マスク及びターゲットレコードの差分鍵マスク７０２の排他的論理和を算出する。
【０３２３】
【数１４】
2018097034.tif 000016
【０３２４】
式（１４）は、式（３）を用いて式（１５）のように変形できる。
【０３２５】
【数１５】
2018097034.tif 000017
【０３２６】
次に、データ管理サーバ１０３は、鍵管理サーバ１０４に処理結果を送信する（ステップＳ１７０７）。
【０３２７】
鍵管理サーバ１０４は、データ管理サーバ１０３から処理結果を受信し、当該処理結果を管理クライアント１０５に送信する（ステップＳ１７０８）。
【０３２８】
鍵管理サーバ１０４は、鍵管理サーバ１０４から処理結果を受信した場合、出力装置２０７を用いて処理結果を管理者に表示する（ステップＳ１７０９）。
【０３２９】
マスタ秘密鍵６０６を更新する場合、鍵管理サーバ１０４及びデータ管理サーバ１０３間でのみデータの送受信が行われる。また、データ管理サーバ１０３は、秘匿データ５３２を復号することなく、新たなマスタ秘密鍵６０６に対応する秘匿データ５３２を生成できる。したがって、秘密鍵の更新コストを削減できる。
【０３３０】
＜鍵回復処理＞
図１８は、実施例１のシステム内で実行される鍵回復処理の流れを示すシーケンス図である。
【０３３１】
鍵回復処理は、鍵管理サーバ１０４に格納される鍵管理情報６０５が破損又は削除された場合に実行される処理である。なお、鍵管理サーバ１０４は、更新前のマスタ秘密鍵６０６を保持する。当該マスタ秘密鍵６０６は、記憶装置２０３に格納されたバックアップデータ等から取得してもよいし、管理者が入力装置２０６を介して入力してもよい。
【０３３２】
鍵管理サーバ１０４は、登録クライアント１０１にユーザ秘密鍵の取得要求を送信する（ステップＳ１８０１）。なお、登録クライアント１０１が複数存在する場合、鍵管理サーバ１０４は、各登録クライアント１０１にユーザ秘密鍵の取得要求を送信する。
【０３３３】
登録クライアント１０１は、ユーザ秘密鍵の取得要求を受信した場合、登録クライアント１０１が保持する共通秘密鍵３０３及びユーザ秘密鍵３０４を鍵管理サーバ１０４に送信する（ステップＳ１８０２）。なお、登録クライアント１０１は、ユーザ秘密鍵３０４に対応するユーザＩＤも合わせて送信する。
【０３３４】
鍵管理サーバ１０４は、共通秘密鍵３０３、並びに、ユーザＩＤ及びユーザ秘密鍵３０４を受信した場合、データ管理サーバ１０３にユーザＩＤを含む差分鍵マスクの取得要求を送信する（ステップＳ１８０３）。
【０３３５】
データ管理サーバ１０３は、差分鍵マスクの取得要求を受信した場合、鍵管理情報５０５から差分鍵マスクを取得し、取得した差分鍵マスクを含む処理結果を送信する（ステップＳ１８０４）。
【０３３６】
具体的には、全体処理モジュール５１１は、鍵管理情報５０５を参照し、ユーザＩＤ７０１が当該取得要求に含まれるユーザＩＤに一致するレコードを検索する。全体処理モジュール５１１は、検索されたレコードの差分鍵マスク７０２の値を含む検索結果を鍵管理サーバ１０４に送信する。
【０３３７】
鍵管理サーバ１０４は、データ管理サーバ１０３から処理結果を受信した場合、新たにマスタ秘密鍵６０６を生成する（ステップＳ１８０５）。
【０３３８】
鍵管理サーバ１０４は、取得したユーザ秘密鍵３０４及び新たなマスタ秘密鍵６０６を用いて、差分鍵マスク生成処理を実行する（ステップＳ１８０６）。ここでは、式（１６）に示すような変換用差分鍵マスクが生成される。
【０３３９】
【数１６】
2018097034.tif 000018
【０３４０】
ここで、Ｔ（Ｍ’）は、新たなマスタ秘密鍵６０６「Ｍ’」から生成される鍵マスク（鍵ストリーム）を示し、ＫＤ（Ｍ’，Ａ）は新たに生成される変換用差分鍵マスクを示す。
【０３４１】
鍵管理サーバ１０４は、古いマスタ秘密鍵６０６及び新たなマスタ秘密鍵６０６を用いて、差分鍵マスク生成処理を実行する（ステップＳ１８０７）。ここでは、式（１７）に示すような更新用差分鍵マスクが生成される。
【０３４２】
【数１７】
2018097034.tif 000019
【０３４３】
式（１５）は、式（３）及び式（１６）を用いて式（１８）のように変形できる。
【０３４４】
【数１８】
2018097034.tif 000020
【０３４５】
鍵管理サーバ１０４は、算出された更新用差分鍵マスクを含む秘匿データの更新要求をデータ管理サーバ１０３に送信する（ステップＳ１８０８）。
【０３４６】
データ管理サーバ１０３は、秘匿データの更新要求を受信した場合、秘匿データの更新要求に含まれる更新用差分鍵マスクを用いてデータベース５０３に格納される秘匿データ５３２の再暗号化処理を実行する（ステップＳ１８０９）。ステップＳ１８０９の処理は、ステップＳ１７０６の処理と同様の処理であるため説明を省略する。
【０３４７】
データ管理サーバ１０３は、鍵管理情報５０５の各レコードの差分鍵マスク７０２を更新する（ステップＳ１８１０）。ステップＳ１８１０の処理は、ステップＳ１７０６の処理と同様の処理であるため説明を省略する。
【０３４８】
データ管理サーバ１０３は、処理結果を鍵管理サーバ１０４に送信する（ステップＳ１８１１）。
【０３４９】
本発明では、各ユーザに設定されたユーザ秘密鍵３０４、４０４に基づいて、データベース５０３の操作を制御できる。これによって、高いセキュリティを実現できる。
【０３５０】
また、ユーザを登録又は削除する場合にはデータベース５０３を更新する必要がなく、また、他のユーザのユーザ秘密鍵３０４、４０４に影響を与えない。また、特定のユーザ秘密鍵３０４、４０４を更新する場合、データベース５０４及び他のユーザ秘密鍵３０４、４０４を更新する必要がない。また、マスタ秘密鍵６０６を更新する場合、ユーザ秘密鍵３０４、４０４を更新する必要がない。したがって、鍵の追加、削除、及び更新等の運用コストを削減できるため、迅速に秘密鍵の漏洩に伴う対策を行うことができる。また、柔軟の運用が可能となる。
【０３５１】
また、秘匿データ及び秘匿検索キーワードの変換処理では、データ管理サーバ１０３に共通秘密鍵３０３、４０３、ユーザ秘密鍵３０４、４０４、及びマスタ秘密鍵６０６を開示する必要がないため、高いセキュリティを実現できる。
【０３５２】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。また、例えば、上記した実施例は本発明を分かりやすく説明するために構成を詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、各実施例の構成の一部について、他の構成に追加、削除、置換することが可能である。
【０３５３】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、本発明は、実施例の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をコンピュータに提供し、そのコンピュータが備えるＣＰＵが記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、光ディスク、光磁気ディスク、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどが用いられる。
【０３５４】
また、本実施例に記載の機能を実現するプログラムコードは、例えば、アセンブラ、Ｃ／Ｃ＋＋、ｐｅｒｌ、Ｓｈｅｌｌ、ＰＨＰ、Ｊａｖａ（登録商標）等の広範囲のプログラム又はスクリプト言語で実装できる。
【０３５５】
さらに、実施例の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することによって、それをコンピュータのハードディスクやメモリ等の記憶手段又はＣＤ−ＲＷ、ＣＤ−Ｒ等の記憶媒体に格納し、コンピュータが備えるＣＰＵが当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしてもよい。
【０３５６】
上述の実施例において、制御線や情報線は、説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていてもよい。
【符号の説明】
【０３５７】
１０１  登録クライアント
１０２  検索クライアント
１０３  データ管理サーバ
１０４  鍵管理サーバ
１０５  管理クライアント
１１０  ネットワーク
２００  計算機
２０１  ＣＰＵ
２０２  メモリ
２０３  記憶装置
２０４  ネットワークインタフェース
２０５  入出力インタフェース
２０６  入力装置
２０７  出力装置
３００、４００、５００、６００  通信モジュール
３０１、４０１、５０１、６０１  制御モジュール
３０２、４０２、５０２  暗号化コンテキスト
３０３、４０３、６０３  共通秘密鍵
３０４、４０４  ユーザ秘密鍵
３０５  平文データ
３１１、４１１、５１１、６１１  全体処理モジュール
３１２、４１２  暗号化モジュール
３１４、４１４、６１４  擬似乱数生成モジュール
３１５、４１５、５１５、６１５  不可逆変換モジュール
３１６、４１６、５１６、６１６  準同型関数演算モジュール
３１７、４１７、５１７  基本演算モジュール
３２１、４２１、５２１  暗号化アルゴリズム
３２２、４２２、５２２  初期ベクトル
３２３、４２３、５２３  検索タグ長
３３１、４３１、６３１  乱数マスク生成鍵
３３２、４３２、６３２  データ暗号化鍵
３４１、４４１  鍵マスク生成鍵
３４２、４４２  鍵マスク用ノンス
３５２  秘匿データ
４０５  平文検索キーワード
４１３、５１３  復号モジュール
４２４、５２４  指定ブロック
４４３  検索鍵
５０３  データベース
５０５  鍵管理情報
５１８、６１８  ユーザ認証モジュール
５３１  平文データ
５３２  秘匿データ
６０５  鍵管理情報
６０６  マスタ秘密鍵
６１９  鍵生成モジュール
６６１  鍵マスク生成鍵
６６２  鍵マスク用ノンス
【図１】
2018097034.tif 000021
【図２】
2018097034.tif 000022
【図３】
2018097034.tif 000023
【図４】
2018097034.tif 000024
【図５】
2018097034.tif 000025
【図６】
2018097034.tif 000026
【図７】
2018097034.tif 000027
【図８】
2018097034.tif 000028
【図９Ａ】
2018097034.tif 000029
【図９Ｂ】
2018097034.tif 000030
【図９Ｃ】
2018097034.tif 000031
【図１０】
2018097034.tif 000032
【図１１】
2018097034.tif 000033
【図１２】
2018097034.tif 000034
【図１３】
2018097034.tif 000035
【図１４】
2018097034.tif 000036
【図１５】
2018097034.tif 000037
【図１６】
2018097034.tif 000038
【図１７】
2018097034.tif 000039
【図１８】
2018097034.tif 000040