JP5667969B2 - 検索処理システムおよび部分一致検索方法 - Google Patents

検索処理システムおよび部分一致検索方法 Download PDF

Info

Publication number
JP5667969B2
JP5667969B2 JP2011281975A JP2011281975A JP5667969B2 JP 5667969 B2 JP5667969 B2 JP 5667969B2 JP 2011281975 A JP2011281975 A JP 2011281975A JP 2011281975 A JP2011281975 A JP 2011281975A JP 5667969 B2 JP5667969 B2 JP 5667969B2
Authority
JP
Japan
Prior art keywords
search
index
encrypted
token
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2011281975A
Other languages
English (en)
Other versions
JP2013130825A (ja
Inventor
雅之 吉野
雅之 吉野
尚宜 佐藤
尚宜 佐藤
健 長沼
健 長沼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2011281975A priority Critical patent/JP5667969B2/ja
Publication of JP2013130825A publication Critical patent/JP2013130825A/ja
Application granted granted Critical
Publication of JP5667969B2 publication Critical patent/JP5667969B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、サーバ/クライアントモデルにおいて、サーバが、クライアントの依頼に従って、暗号化データを復号せずに、預託された暗号化データに関する部分一致検索を高速に検索する、検索処理システムに関する。
情報システムの開発・運用管理費の効率化を目的に、近年、情報システムを自組織だけで維持するのではなく、他組織が提供する情報システムを部分的または全面的に利用する、クラウドコンピューティング(cloud computing、以下クラウドと略記する)と呼ばれる運用管理形態が脚光を浴びている。一方、クラウドにおいては、情報システムを管理する組織が、情報システムを利用する組織とは異なるため、情報漏えいの防止策や、事故発生後の原因究明、再発防止策等が自組織だけでは立てにくい。そのため、事前に、データの不正流出の予防策として、暗号技術を活用し、データの機密性を確保する必要がある。
サーバ/クライアントモデルにおいて、クライアントが、サーバにデータを預託しながら、自由にサーバからデータを引き出せる、暗号技術を利用した方法が知られている。例えば、非特許文献1や非特許文献2には、クライアントの依頼に従って、暗号化された検索用のインデックスを用いて、暗号化データを復号せずに検索する検索処理方法が記載されている。
吉野 雅之,長沼 健,佐藤 尚宜.DB向け検索可能暗号の検討(2), Inproceedings of The 2011 Symposium on Cryptography and Information Security(2011). Emily Shen,Elaine Shi, Brent Waters.Predicate privacy in encryption systems.In TCC,volume 5444 of Lecture Notes in Computer Science,pages 457−473(2009). Dan Boneh, Eu−Jin Goh,Kobbi Nissim, Evaluating 2−DNF Formulas on Ciphertexts,In TCC,Volume 3378 of Lecture Notes in Computer Science,pages 325−341(2005).
非特許文献1、非特許文献2の技術は共に、サーバに予め預託するデータ検索用のインデックスと、クライアントが検索時に送信する検索トークンの双方を確率的に暗号化し、安全性を高めている。しかしながら、非特許文献1の技術では、安全性が高い半面、データの完全一致検索処理のみを検索機能の対象としており、部分一致検索ができない。例えば、データ「abc」を検索する場合、その部分文字列である「ab」を検索トークンとしても、「abc」を検索できない。一方、非特許文献2の技術では、暗号文のデータサイズは、4つの素数の積(N=pqrs)で構成される、公開パラメータNに依存する。ここで、Nの素因子であるp,q,r,sはそれぞれが十分に大きな数でなければならない。暗号化可能なメッセージのデータサイズはNの素因子であるqのデータサイズに依存する為、非特許文献2の技術では、実際に暗号化できるメッセージの効率が低いことが課題として知られている。
(暗号化可能なメッセージの効率)=q/N=1/(prs)
そのため、高い安全性を実現しながら、部分一致検索を可能にし、更に暗号化可能なメッセージの効率が高い、暗号技術が必要とされている。
本発明の目的は、検索用のインデックスを暗号化したまま、部分一致検索を可能にするシステムおよび方法を提供することにある。
前記目的を達成するために、本発明は、データと登録処理プログラムと検索処理プログラムを記憶部に記憶する管理サーバと、管理サーバに暗号化データと登録依頼プログラムを登録する登録エージェントと、検索依頼プログラムを記憶部に記憶する検索エージェントとがネットワーク経由で連携する検索処理システムを提供する。
登録エージェントは、3つの素数(p、q、r)を生成し、これらの積から公開パラメータN(=pqr)を構成し、これらを位数(群を構成する要素である元aに対しa≡e(単位元)を満たす最小の整数n)とする双線形群上の元により、検索用のインデックスとデータを暗号化し、暗号化した検索用のインデックスは内部に2つの乱数情報の排除用データを保有し、その暗号化した検索用のインデックスを管理サーバに登録するよう依頼する。
検索エージェントは、双線形群上の元により、検索用のトークン(token,ソースコードや平文を構成する単語や記号からなる文字列)を暗号化し、暗号化した検索用のトークンは内部に2つの乱数情報の排除用データを保有し、その暗号化した検索用のトークンを用いた検索処理を管理サーバに依頼する。
管理サーバは、暗号化された検索用のインデックスとデータを記憶部に格納し、検索を依頼された際には、暗号化された検索用のインデックスと、検索用のトークンの内部にそれぞれ保有する乱数情報の排除用のデータを用い、検索用のトークンが検索用のインデックスに該当するかを判定し、該当する場合は、管理サーバの記憶部に格納された暗号化されたデータを検索エージェントに検索結果として送信し、検索エージェントはこれを復号して出力する。
登録エージェントは、検索用のインデックスを高速に暗号化できる。また、検索エージェントは、インデックスを暗号化したまま、その部分一致検索を管理サーバに委託できる。
第一実施形態において、検索処理委託システムの概略を例示する図である。 第一実施形態において、登録エージェントの機能の概略を例示する図である。 第一実施形態において、検索エージェントの機能の概略を例示する図である。 第一実施形態において、管理サーバの機能の概略を例示する図である。 コンピュータの概略構成を例示する図である。 第一実施形態において、登録エージェントと管理サーバがネットワーク400経由で実施する、暗号化データ134と暗号化インデックス135の登録処理の処理フローを例示する図である。 第一実施形態において、管理サーバの記憶部320に格納される、暗号化インデックス701と暗号化データ712を示すアドレス値702から構成される、インデックス・テーブル700を例示する図である。 第一実施形態において、管理サーバの記憶部320に格納される、暗号化データ712と暗号化データ712のアドレス711を示した、データ・テーブル710を例示する図である。 第一実施形態において、登録エージェントが秘密鍵151と公開パラメータを作成する処理フローを例示した図である。 第一実施形態において、登録エージェントが暗号化インデックス135を作成する処理フローを例示する図である。 第一実施形態において、検索エージェントと管理サーバがネットワーク400経由で実施する、暗号化トークン236による検索処理の処理フローを例示する図である。 第一実施形態において、検索エージェントが暗号化トークン236を作成する処理フローを例示する図である。 第一実施形態において、管理サーバが実施する検索処理の処理フローを例示する図である。 部分一致検索処理の処理概要を示す図である。 検索結果データ生成処理の概要を示す図である。
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態において、同一の部材には原則として同一の符号を付け、繰り返しの説明は省略する。
(実施の形態1)
(システム構成)
図1は、本発明の第一の実施の形態である検索処理システムの概略図である。図示するように、検索処理システムは、登録エージェント100と、検索エージェント200と、管理サーバ300とを備え、登録エージェント100と管理サーバ300、検索エージェント200と管理サーバ300は、ネットワーク400を介して相互に情報を送受信できるように設計されている。
本実施形態における登録エージェント100は、データと検索用のインデックス(以下、インデックスと呼ぶ)を管理サーバ300に送信し、受信結果を管理サーバから受信する送受信装置として機能し、検索エージェント200は、検索処理委託用のトークンを管理サーバ300に送信し、その検索結果を管理サーバ300から受信する送受信装置として機能し、管理サーバ300は、データを記憶し、また受信したトークンを用いてデータを検索する送受信装置として機能する。
図2は、登録エージェント100の機能概略図である。図示するように、登録エージェント100は、制御部110と、記憶部120と、入力部101と、出力部102と、通信部103とを備える。
記憶部120は、データ記憶部130と、鍵記憶部150と、プログラム記憶部160と、一時情報記憶部180とを備える。
データ記憶部130には、管理サーバ300に送信するデータである、送信文に関する情報が記憶される。本実施形態においては、入力部101を介して、受け付けた平文データ131に関する情報と、検索処理に用いる平文インデックス132に関する情報とを(暗号化後に)管理サーバ300に登録する、平文データ131に関する情報と、パラメータ137に関する情報が記憶される。また、インデックス暗号化部113が出力する暗号化インデックス135に関する情報と、データ暗号化部117が出力する暗号化データ134に関する情報も記憶される。
鍵記憶部150には、安全性の観点から登録エージェント100が秘密に管理すべき秘密鍵151に関する情報が記憶される。
プログラム記憶部160には、鍵生成、暗号化、復号などの暗号処理全般を含めた、暗号化データ134と暗号化インデックス135の登録処理に関するプログラムが記憶されている。暗号化データ134と暗号化インデックス135の登録処理については、図6を用い、後で詳しく説明する。
一時情報記憶部180には、制御部110などの処理に必要な情報が記憶される。
制御部110は、全体処理部111と、鍵設定部112と、インデックス暗号化部113と、エンコード部115と、乱数生成部116と、データ暗号化部117と、を備える。
全体処理部111は、プログラム記憶部160から、暗号化データ134と暗号化インデックス135の登録処理に関するプログラムをロードし、登録エージェント100における各モジュール間の制御を行い、さらに簡単な演算処理を実施する。例えば、全体処理部111は、入力部101を介して、入力を受け付けた情報を、データ記憶部130に、平文データ131や平文インデックス132として記憶する処理を行う。
また、本実施形態において、全体処理部111は、平文データ131を、出力部102に表示する処理を行う。
また、本実施形態において、全体処理部111は、データ記憶部130に記憶した平文データ131を読み込み、データ暗号化部117に入力し、出力されたデータを、データ記憶部130に、暗号化データ134として記憶する処理を行う。
また、本実施形態において、全体処理部111は、データ記憶部130に記憶した平文インデックス132を読み込み、インデックス暗号化部113に入力し、出力されたデータを、データ記憶部130に、暗号化インデックス135として、記憶する処理を行う。
また、本実施形態において、全体処理部111は、暗号化インデックス135と暗号化データ134を、通信部103を介して、管理サーバ300に送信し、受信結果を管理サーバ300から受信する処理を行う。
さらに、本実施形態において、全体処理部111は、管理サーバ300より、通信部103を介して受信した暗号化データ134を、一時情報記憶部180に記憶する処理と、出力部102に表示する処理を行う。
鍵設定部112は、秘密鍵151と公開パラメータを生成する処理を行う。例えば、本実施形態において、全体処理部111がセキュリティパラメータを入力し、鍵設定部112が秘密鍵151を出力する処理を行う。なお、全体処理部111はパラメータ137の一部として記憶されたセキュリティパラメータをロードしてもよいし、入力部101を経由して鍵設定部112に入力してもよい。
データ暗号化部117用の秘密鍵151の実現方法については、標準的な鍵生成アルゴリズム(AES(Advanced Encryption Standard)暗号、DES(Data Encryption Standard)暗号など)の実装により実現可能であるため、その詳細な説明は省く。
インデックス暗号化部113(と、検索エージェント200のトークン暗号化部213)が用いる秘密鍵151と公開パラメータの実現方法については、図8を用い、後で詳しく説明する。
インデックス暗号化部113は、エンコード部115と連携し、平文インデックス132を暗号化する処理を行う。平文インデックス132とは、平文データ131を検索する際にその平文データ131の特徴を指すデータ(文字列だけでなくバイナリデータ列でもよい)である。例えば、文字列の場合、平文データ“Tom is cryptographic researcher”から、その特徴的な文字列である“Tom”や“researcher”を平文インデックスとすればよい。もちろん、平文インデックス132はデータ内の完全な単語でなくてもよく、上記の場合、例えば、“res(researcherの一部)”を平文インデックス132としてもよい。また、平文データ131内に含まれていないデータを平文インデックス132としてもよく、上記の場合、例えば文字列“cryptography”を平文インデックス132としてよい。
本実施形態においては、全体処理部111が平文インデックス132と秘密鍵151をインデックス暗号化部113に入力し、インデックス暗号化部113は暗号化インデックス135を出力する処理を行う。暗号化インデックス135の実現方法については、図9を用い、後で詳しく説明する。
エンコード部115は、入力された平文インデックス132を、固定長のデータに変換する処理を行う。本実施形態において、全体処理部111がエンコード部115に平文インデックス132を入力し、エンコード部115は入力された平文データ131をnlog2<q>ビットのインデックス・ベクトルに変換し、出力する処理を行う。ただし、<>は小数点第一位の切り上げを意味する。インデックス・ベクトルはlog2<q>ビットの要素データ(x1、x2、・・・・、xn)毎にn分割されている。また、それぞれの要素データは平文インデックス132を構成する文字列に含まれる各文字に対応した値であり、0以上q未満の整数で表わされる。エンコード部115の実現方法については、例えば、任意長の入力データを、固定長のデータへ変換する、標準的な暗号ハッシュ関数アルゴリズム(SHA−1、SHA−2など)の実装により実現可能であるため、その詳細な説明は省く。
乱数生成部116は、擬似乱数を出力する処理を行う。例えば、乱数生成部116は、温度、時間、電力量、等の物理現象から、乱数を出力する。本実施形態において、乱数生成部116は、全体処理部111から出力命令を受け、乱数を出力する。乱数生成部116の実現方法については、標準的な乱数生成器により実現可能であるため、その詳細な説明は省く。
なお、乱数生成部116の実現にあたって、乱数生成器の代わりに、擬似乱数生成器を用いてもよい。例えば、全体処理部111が秘密鍵151を擬似乱数生成器に入力し、擬似乱数生成器が擬似乱数(乱数列のように見えるが、確定的な計算によって求められる数列に含まれる数)を出力するようにしてもよい。
データ暗号化部117は、入力された平文データ131を暗号化する処理を行う。例えば、本実施形態において、全体処理部111が平文データ131と秘密鍵151をデータ暗号化部117に入力し、データ暗号化部117は暗号化データ134を出力する処理を行う。なお、データ暗号化部117の実現方法については、一般的な暗号化アルゴリズム(AES暗号、DES暗号など)の実装により実現可能であるため、その詳細な説明は省く。
図3は、検索エージェント200の機能概略図である。図示するように、検索エージェント200は、制御部210と、記憶部220と、入力部201と、出力部202と、通信部203とを備える。
記憶部220は、データ記憶部230と、鍵記憶部250と、プログラム記憶部260と、一時情報記憶部280とを備える。
データ記憶部230には、管理サーバ300に送信するデータである送信文に関する情報が記憶される。本実施形態において、入力部201を介して受け付けた平文トークン233に関する情報と、パラメータ237に関する情報が記憶される。また、トークン暗号化部213が出力する暗号化トークン236に関する情報と、ネットワーク400経由で管理サーバ300から送信された暗号化データ712と、データ復号部218が出力する平文データ231に関する情報も記憶される。
鍵記憶部250には、安全性の観点から検索エージェント200が秘密に管理すべき秘密鍵251に関する情報が記憶される。
プログラム記憶部260には、鍵生成、暗号化、復号などの暗号処理全般を含めた、暗号化トークン236による検索処理に関するプログラムが記憶されている。暗号化トークン236による検索処理については、図10を用い、後で詳しく説明する。
一時情報記憶部280には、制御部210などの処理に必要な情報が記憶される。
制御部210は、全体処理部211と、トークン暗号化部213と、エンコード部215と、乱数生成部216と、データ復号部218とを備える。
全体処理部211は、プログラム記憶部260から、暗号化トークン236による検索処理に関するプログラムをロードし、検索エージェント200における各モジュール間の制御を行い、さらに簡単な演算処理を実施する。例えば、全体処理部211は、入力部201を介して、入力を受け付けた情報を、データ記憶部230に、平文トークン233として記憶する処理を行う。
また、本実施形態において、全体処理部211は、平文トークン233を、出力部202に表示する処理を行う。
また、本実施形態において、全体処理部211は、データ記憶部230に記憶した平文トークン233を読み込み、トークン暗号化部213に入力し、出力されたデータを、データ記憶部230に、暗号化トークン236として記憶する処理を行う。
また、本実施形態において、全体処理部211は、暗号化トークン236を、通信部203を介して管理サーバ300に送信し、データの検索結果を管理サーバ300から受信する処理を行う。なお、データの検索結果の一部を、暗号化データ234として、データ記憶部230に記憶する処理を行う。
また、本実施形態において、全体処理部211は、データ記憶部230に記憶した暗号化データ231を読み込み、データ復号部218に入力し、出力されたデータを、データ記憶部230に、平文データ231として一時情報記憶部280に記憶する処理と、出力部202に表示する処理を行う。
トークン暗号化部213は、エンコード部215と連携し、平文トークン233を暗号化する処理を行う。平文トークン233とは、データ(文字列だけでなくバイナリデータ列でもよい)である。平文トークン233は、“researcher”等の完全な単語でもよく、また、“res”(researcherの一部)のように部分文字列を平文トークン233としてもよい。さらに、平文トークン233にはワイルドカード“*”を用いてもよく、例えば“researcher”の代わりに“re*earch*r”としてもよい。
本実施形態において、全体処理部211が平文トークン233と秘密鍵251をトークン暗号化部213に入力し、トークン暗号化部213は暗号化トークン236を出力する処理を行う。暗号化トークン236の実現方法については、図11を用い、後で詳しく説明する。
エンコード部215は、入力された平文トークン233を、固定長のデータに変換する処理を行う。本実施形態において、全体処理部211がエンコード部215に平文トークン233を入力し、エンコード部215は入力された平文トークン233をnlog2<q>ビットのトークン・ベクトルに変換し、出力する処理を行う。ただし、<>は小数点第一位の切り上げを意味する。
エンコード部215の実現方法については、例えば、任意長の入力データを、固定長のデータへ変換する、標準的な暗号ハッシュ関数アルゴリズム(SHA−1、SHA−2など)の実装により、エンコード部215が実現可能であるため、その詳細な説明は省く。
乱数生成部216は、擬似乱数を出力する処理を行う。例えば、乱数生成部216は、温度、時間、電力量、等の物理現象に関する情報から、乱数を出力する。本実施形態において、乱数生成部216は、全体処理部211から出力命令を受け、乱数を出力する。乱数生成部216の実現方法については、標準的な乱数生成器により実現可能であるため、その詳細な説明は省く。
なお、乱数生成部216の実現にあたって、乱数生成器の代わりに、擬似乱数生成器を用いてもよい。例えば、全体処理部211が秘密鍵251を擬似乱数生成器に入力し、擬似乱数生成器が擬似乱数(乱数列のように見えるが、確定的な計算によって求められる数列に含まれる数)を出力するようにしてもよい。
データ復号部218は、入力された暗号化データ234を復号する処理を行う。例えば、本実施形態において、全体処理部211が暗号化データ234と秘密鍵251をデータ復号部218に入力し、データ復号部218は平文データ231を出力する処理を行う。なお、データ復号部218の実現方法については、一般的な暗号化アルゴリズム(AES暗号、DES暗号など)の実装により実現可能であるため、その詳細な説明は省く。
図4は、管理サーバ300の機能概略図である。図示するように、管理サーバ300は、制御部310と、記憶部320と、入力部301と、出力部302と、通信部303とを備える。
記憶部320は、プログラム記憶部360と、データ記憶部330と、一時情報記憶部380とを備える。
データ記憶部330には、通信部303を介して、登録エージェント100から受信したデータに関する情報が記憶される。本実施形態において、通信部303を介して、受信した暗号化データ134と暗号化インデックス135に関する情報が記憶される。また、パラメータ337に関する情報が記憶される。また、通信部303を介して、検索エージェント200から受信したデータに関する情報が、記憶される。本実施形態において、通信部303を介して、受信した暗号化トークン236に関する情報が一時的に記憶される。
プログラム記憶部360には、暗号化データ検索処理に関するプログラムが記憶されている。暗号化データ検索処理については、図12を用い、後で詳しく説明する。
一時情報記憶部380には、制御部310での処理で必要となる情報が記憶される。
制御部310は、全体処理部311と、検索部312とを備える。
全体処理部311は、プログラム記憶部360から、暗号化データ検索処理に関するプログラムをロードし、管理サーバ300における各モジュール間の制御を行い、さらに簡単な演算処理を実施する。例えば、全体処理部311は、通信部303を介して、暗号化データ134、暗号化インデックス135を登録エージェント100から受信し、データ記憶部330に、記憶する処理を行う。暗号化データ134と暗号化インデックス135の保管方法については、図7Aと図7Bを用い、後で詳しく説明する。
また、本実施形態において、全体処理部311は、通信部303を介して、暗号化トークン236を、検索エージェント200から受信し、暗号化トークン336として、データ記憶部330に記憶する処理を行う。
また、本実施形態において、全体処理部311は、暗号化トークン336と暗号化インデックス701を検索部312に入力し、検索部312が出力したデータを、通信部303を介して、検索エージェント200へ送信する処理を行う。
さらに、全体処理部311は、検索エージェント200または登録エージェント100より、通信部303を介して受信したデータに関する情報を、一時情報記憶部380に記憶する処理と、出力部302に表示する処理を行う。
以上に示した登録エージェント100、検索エージェント200、管理サーバ300は、例えば、図5(コンピュータの概略図)に示すような、CPU501と、メモリ502と、HDD等の外部記憶装置503と、CDやDVD等の可搬性を有する記憶媒体508に対して情報を読み書きする読書装置507と、キーボードやマウス等の入力装置506と、ディスプレイ等の出力装置505と、通信ネットワークに接続するためのNIC等の通信装置504と、これらを連結するシステムバス等の内部通信線(システムバスという)と、を備えた一般的なコンピュータで実現できる。
例えば、記憶部120、220、320は、CPU501がメモリ502または外部記憶装置503を利用することにより実現可能であり、制御部110、210、310と制御部110、210、310に含まれる各処理部は、外部記憶装置503に記憶されている所定のプログラムをメモリ502にロードしてCPU501で実行することで実現可能であり、入力部101、201、301は、CPU501が入力装置506を利用することで実現可能であり、出力部102、202、302は、CPU501が出力装置505を利用することで実現可能であり、通信部103、203、303は、CPU501が通信装置504を利用することで実現可能である。
この所定のプログラムは、読書装置507を介して記憶媒体508から、あるいは、通信装置504を介してネットワーク400から、外部記憶装置503に記憶(ダウンロード)され、それから、メモリ502上にロードされて、CPU501により実行されるようにしてもよい。また、読書装置507を介して、記憶媒体508から、あるいは通信装置504を介してネットワーク400から、メモリ502上に直接ロードされ、CPU501により実行されるようにしてもよい。
(処理手順)
図13を用いて本実施例の部分一致検索処理の概要を説明する。
登録エージェント100は、所望のデータ及びそのデータに関するインデックスを管理サーバ300に登録する利用者が入力した公開パラメータN(整数)を素因数分解して3つの素数p、q、rを得る。これらの素数を用いて、管理サーバ300に登録するデータ及びインデックスをそれぞれ暗号化し、暗号化されたデータ及びインデックスを管理サーバ300に送信する。管理サーバ300は、暗号化されたデータ及びインデックスを互いに関連付けて記憶部320に格納する。
検索エージェント200は、データ検索の利用者から、部分文字列からなる検索用トークンを受け取り、上記の公開パラメータから生成した3つの素数を用いて、トークンを暗号化して管理サーバ300に送信する。なお、検索用トークンの平文にはワイルドカードが含まれていてもよく、ワイルドカードを考慮した暗号化が行われる。
管理サーバ300は、検索エージェント200から受け取った暗号化されたトークンと暗号化されたインデックスとの照合を、双線形写像を用いて実行することによって検索を行い、照合が成功すれば、暗号化されたインデックスと関連付けられた暗号化データを検索して、検索結果を検索エージェント200に送信する。
検索エージェント200は、管理サーバ300から受信した暗号化されたデータを、上記の公開パラメータから生成した3つの素数を用いて、複号化して平文の検索結果を出力してデータ検索の利用者に提示する。
図6は、本実施形態において、ネットワーク400を経由し、登録エージェント100が送信した暗号化インデックス135を、管理サーバ300が、記憶部320へ登録する処理を示すシーケンス図である。
登録エージェント100の全体処理部111は、平文データ131をロードし、データ暗号化部117へ入力する、また、全体処理部111は、平文インデックス132をロードし、インデックス暗号化部113へ入力する(S601)。
登録エージェント100のデータ暗号化部117は、記憶部120に格納された秘密鍵151をロードし、平文データ131を暗号化データ134に変換する。なお、変換方法については、標準的な暗号化アルゴリズム(AES暗号、DES暗号など)の実装により、実現可能であるため、その詳細な説明は省く。また、登録エージェント100のインデックス暗号化部113は、記憶部120に格納された秘密鍵151とパラメータ137をロードし、平文インデックス132を暗号化インデックス135に変換する。なお、変換方法については、図9を用い、後で詳しく説明する(S602)。
登録エージェント100の通信部は、データ暗号化部117より出力された暗号化データ134と、インデックス暗号化部113より出力された暗号化インデックス135を、ネットワーク400を経由し、管理サーバ300へ送信する処理を行う(S603)。
管理サーバ300の通信部303から、ネットワーク400を経由し、登録エージェント100が送信した暗号化データ134と暗号化インデックス135を受信する処理を行う(S604)。
管理サーバ300の全体処理部311は、暗号化データ134と暗号化インデックス135を記憶部320へ格納する。格納にあたっては、図7Bに示すように、暗号化データ134(701)はデータ・テーブルの一部(図7BのE1、E2、E3それぞれが暗号化データ134に該当する)として格納される。また、送信された暗号化インデックス135は、共に送信された暗号化データ134を格納した記憶部320のアドレス(仮想アドレスまたは物理アドレス)と関連付けられて、インデックス・テーブルの一部として格納される(図7AのI1、I2、I3、I4、I5がそれぞれ暗号化インデックス701(135)に該当する。また、address 1は暗号化データE1のアドレスを示す値であり、同様に、address 2は暗号化データE2のアドレスを示す値、address 3は暗号化データE3のアドレスを示す値である。)(S605) 。
管理サーバ300は、暗号化データ134と暗号化インデックス135の記憶部320への格納処理を終えた場合、「登録成功」とし、通信部303から、ネットワーク400を経由し、「登録成功」を示すデータを登録エージェント100へ送信する処理を行う。また、記憶容量の制限等を理由に、暗号化データ134または暗号化インデックス135の記憶部320への格納処理が終了できなかった場合、「登録失敗」とし、通信部303から、ネットワーク400を経由し、「登録失敗」を示すデータを登録エージェント100へ送信する処理を行う(S606)。
登録エージェント100の通信部103から、ネットワーク400を経由し、管理サーバ300が送信した「登録成功」または「登録失敗」を示すデータを受信する処理を行う(S607)。
上記の処理(S601からS607)により、登録エージェント100は、ネットワーク400経由で、管理サーバ300に暗号化データ134と暗号化インデックス135の記憶部120への格納を指示し、その処理結果を確認できる。
なお、上記の処理手順は、固定されたものではなく、処理手順を変更して実施してもかまわない。例えば、登録エージェント100は、暗号化データ134を作成、送信後に、暗号化インデックス135を作成、送信するようにS602とS603を変更してもよい。また、管理サーバ300も、暗号化データ134と暗号化インデックス135の受信、記憶処理を個別に実施してもよい。同様に、他の処理内容を変更してもよい。例えば、登録エージェント100は複数の暗号化データ134と暗号化インデックス135の作成、送信処理を一括で実施してもよい。また、管理サーバ300も、複数の暗号化データ134と暗号化インデックス135の受信、記憶処理を一括で実施してもかまわない。
図14を用いて本実施例の検索結果データ生成処理の概要を説明する。
本実施例では、インデックスの暗号化とトークンの暗号化をそれぞれ強化するため、互いに、相手の(暗号化のための)因子によって自身の暗号化データを撹乱する。即ち、登録エージェント100で行われるインデックスの暗号化と検索エージェント200で行われるトークンの暗号化といったそれぞれ独立して行われる暗号化で使用される因子によって、互いに相手の暗号化データを撹乱することにより、暗号化のプロセスが自身の中で閉じないようにすることで暗号化の秘匿性を高めている。
図14に示した種々の記号の詳細な説明は後述する。
(1)暗号化のための因子及び情報の生成
まず、図14の左側に示すように、後述する図8、9及び11の処理では、(a)群Gpによってインデックスを暗号化するための因子が生成され、(b)群Gqによって暗号化インデックスの元となる情報が生成され、(c)トークンの文字列をベクトル化したトークン・ベクトルに直交するベクトルと群Gqによって暗号化トークンの元となる情報が生成され、(d)群Grによってトークンを暗号化するための因子が生成される。
これらの因子又は情報は、インデックス又はトークンに関するものに大きく分けられるが、上記(a)のインデックスに関する因子の一部({gpvk}、(gpΣvkpk))はトークンの暗号化に対する撹乱の因子であり、上記(d)のトークンに関する因子の一部({gruk}、(grΣukrk))はインデックスの暗号化に対する撹乱の因子である。
(2)暗号化インデックス及びトークンの生成
次に、図14の中央に示すように、後述する図9の処理では、上記(a)と(b)で生成されたインデックスに関する因子又は情報、及び上記(d)のトークンに関して生成された撹乱の因子を用いて、平文インデックスを暗号化した暗号化インデックスを生成する。同様に、後述する図11の処理では、上記(c)と(d)で生成されたトークンに関する因子又は情報、及び上記(a)のインデックスに関して生成された撹乱の因子を用いて、平文トークンを暗号化した暗号化トークンを生成する。さらに、上記の暗号化インデックス及び暗号化トークンの生成処理と同様に、インデックス及びトークンについて、後の処理で、それぞれの暗号化を解除するための因子も生成する。
これら暗号化解除用の因子の一部には、上記と同様に、相手の暗号化を撹乱する因子が含まれる。従って、図14では、互いに相手の暗号化を撹乱する因子に関しては、インデックス側からの矢印の一部とトークン側からの矢印の一部とが互いに交差し、暗号化インデックスと暗号化トークンのそれぞれに合流している。
(3)検索結果データの生成
最後に、図14の右側に示すように、後述する図12の処理では、上記の(2)で生成した暗号化インデックス、暗号化トークン、及びそれぞれの暗号化解除用の因子を用いて、暗号化されたインデックスとトークンとの照合が成功したかどうかを判定するための検索結果データを生成する。
図14の破線の矢印は、上記(1)で生成された因子の逆元を用いて上記(2)の処理を行うことを示し、太い矢印は、{*}で示すデータ列の各データを掛け合わせること(乗積)を示す。図14の右上には、上記の(1)で因子や情報を生成する際に用いられる各種乱数の定義域(公開パラメータN(整数)を素因数分解して3つの素数p、q、rに関係する)及び、群Gpと群Grにそれぞれ関連する乱数の対応関係を示す。また、図14の下段には、上記の(2)で生成される中間データ(暗号化インデックス及びトークン、暗号化解除用の因子、及び暗号化撹乱の因子)の詳細を示す。
図8は、登録エージェント100の秘密鍵と公開パラメータの生成処理を示すシーケンス図である。登録エージェント100において、全体処理部111は、鍵設定部112に、鍵の生成を指示する。
鍵設定部112は、記憶部120に記憶されたパラメータ137を読み込む(S801)。パラメータ137には、暗号鍵の長さに関するパラメータN−lengthや、暗号文の種類に関するパラメータn−kindsが記載されている。
まず、鍵設定部112は素数pを生成する。素数の生成方法については、標準的な素数生成アルゴリズム(RSA暗号の鍵生成方法など)の実装により、実現できるため、その詳細な説明は省く。次に、位数をpとする、乗算に関する群Gpを生成する。ただし、位数とは、ある群に所属する異なる値を有するデータ(以降、元と呼ぶ)の数である。言い換えると、群Gpにおける異なるバイナリ値を有する元はたかだかp個である。簡単のため、本実施形態において、群Gp上の元は0以上p未満の整数値を持つデータとする。
同様の処理を、素数qと素数rにて行う。即ち、鍵設定部112は、素数q、素数rを生成し、位数をqとする乗算に関する群Gqと、位数をrとする乗算に関する群Grを生成する。また、本実施形態において、群Gq上の元は0以上q未満、群Gr上の元は0以上r未満、の整数値を持つデータとする(S802)。
例えば、群Gp上の元gpは、gp≡1 (但し、pは位数(order))という合同式によって生成される任意のgpである。群Gq上の元gq、及び群Gr上の元grについてもそれぞれ素数q及びrを用いて同様に生成される。
ここで、上記の各群の名称と役割を説明する。
Gp(トークン・ベクトル撹乱群):群Gqの元に埋め込まれた平文情報(トークン・ベクトル)を撹乱する為の群
Gq(平文情報エンコード群):平文情報が(インデックス・ベクトルとトークン・ベクトルとして)埋め込まれる群
Gr(インデックス・ベクトル撹乱群):群Gqの元に埋め込まれた平文情報(インデックス・ベクトル)を撹乱する為の群
上記のGp及びGrの名称及び役割は、互いに相手の暗号化を撹乱させる機能に基づいているが、図14の説明で述べたように、自身のインデックス又はトークンの暗号化にも関連する。
鍵設定部112は、素数p、q、rの積からなる、整数N(=pqr)を生成する。この時、整数Nは鍵長パラメータN−length以上の数である。次に、位数をNとする、乗算に関し、双線形性写像を有する群GNを生成する。双線形写像とは、GN上の2つの元を入力とし、別のGN’上の元へ射影する写像e(e:GN×GN→GN’)であり、下記の2条件を満たす写像を指す。
条件1:e(g、h)が群GN’上の元であること
条件2:次式の数1を満たすこと
(数1)e(g、h)=e(g、h)ab
ただし、元g、元hは群GN上の任意の値である。また、a、bは任意の整数であり、gとは群GN上で元gをa乗し、hとは群GN上で元hをb乗した値である。また、群GN上の元から、群Gp上、群Gq上、群Gr上の各元への写像(以降、対応写像と呼ぶ)を生成する。例えば、群GN上の元g、hから群Gp上の元e(g、h)を生成する。合成数Nを位数とする群GNの生成手順と、群Gp、群Gq、群Grとの関係の詳細については、例えば非特許文献3に記載されているので、詳細な説明は省く(S803)。
ここで、数1の関係式の導出について説明する。写像e(g、h)において、e(xy、z)=e(x、z)e(y、z)の関係が成り立てば、mが整数の時、この関係を繰り返し適用すると、xに関してe(x、z)=e(x、z)が成り立ち、zに関しても同様に成り立つので、e(g、h)=e(g、h=[e(g、h)=e(g、h)abとなって、数1の関係が成り立つ。
なお、f(xy)=f(x)f(y)の関係を満たすf(x)はf(x)=xと表される。但し、k=f(1)′。(y=1+Δ/xとし、f(1)=1を用いて差分方程式を作り、Δ→0として微分方程式を作って解く。)
鍵設定部112は、群Gp上の元gpをランダムに作成する。ランダムに元gpを作成するには、鍵設定部112は0以上p未満の乱数(整数)の生成を全体処理部111に依頼し、全体処理部111は乱数生成部116に0以上p未満の乱数を作成させ、作成した乱数を鍵設定部112に入力し、鍵設定部112は入力された乱数を群Gp上の元gpを作成すればよい。同様に、鍵設定部112は、群Gq上の元gqと、群Gr上の元grをランダムに作成する。
鍵設定部112は、暗号文の種類パラメータn−kindsの数(以降、nとする)に従い、以下の処理を行う。
鍵設定部112は、0以上p未満の乱数p1を作成し、群Gp上の元gpをp1乗した、群Gp上の元であるgpp1を作成する。乱数p1を作成するには、鍵設定部112は0以上p未満の乱数(整数)の生成を全体処理部111に依頼し、全体処理部111は乱数生成部116に0以上p未満の乱数を作成させ、作成した乱数を鍵設定部112に乱数p1として入力し、鍵設定部112は群Gp上の元gpのp1乗を計算すればよい。同様に、0以上p未満の乱数p2を作成し、群Gp上の元gpをp2乗した、群Gp上の元であるgpp2を作成する。この処理をn回くり返し、gpp1、・・・、gppnを作成する。
さらに、0以上r未満の乱数r1、r2、・・・、rnを作成し、群Gr上の元grr1、・・・、grrnを作成する(S804)。
鍵処理部は、写像e、群GN、群GN’、元gp、元gpp1、・・・、元gppnと、元gp、元gqq1、・・・、元gqqnと、元gr、元grr1、・・・、元grrnを公開パラメータとして、元gqと対応写像を秘密鍵として出力する。全体処理部111は、鍵処理部が出力した公開パラメータをパラメータ137の一部として記憶部120へ保存し、秘密鍵は鍵記憶部150へ、元gq、素数p、素数q、素数rを秘密鍵151として保存する(S805)。
上記の処理(S801からS805)により、登録エージェント100は、暗号化インデックス135と暗号化トークン236の作成に要する、秘密鍵151と公開パラメータを作成し、それらを記憶部120へ格納できる。
なお、上記の処理手順は、固定されたものではなく、処理手順を変更して実施してもかまわない。例えば、登録エージェント100は、素数p、素数q、素数rに関する処理を逐次的に実施するようにS802からS805を変更して構わない。例えば、素数pを生成後、pを位数とする群Gpを生成し、群Gp上の元gp、gpp1、・・・、gppnを作成し、記憶部120に格納した後に、同様に、素数qに関する処理、と素数rに関する処理を実施しても構わない。同様に、他の処理内容を変更してもよい。
なお、上記の処理では、GN上の2つの元を入力とし、別のGN’上の元へ射影する双線形写像e(e:GN×GN→GN’)を用いたが、異なる性質の双線形写像e’(e’:GN1×GN2→GN3、ただし、GN1、GN2、GN3はそれぞれ異なる位数を有する)でも、同様に実現できる。
なお、上記の処理では、乗法に関する群を生成したが、楕円曲線上の加法群など、他の群でも同様に実現できる。
図9は、登録エージェント100の暗号化データ134と暗号化インデックス135の登録処理における、完全一致検索に対する、暗号化インデックス135を実現する処理を示すシーケンス図である。図9の処理フローでは、検索用の平文インデックス132を変換するだけでなく、管理サーバ300向けに作成した2種類の検索用のデータ(IDn+1、IDn+2)を含めて、暗号化インデックス135を作成する(非特許文献2の技術とは異なり、本発明では、検索用のデータが2種類あるため、公開パラメータNは3つの素数の積で済む)。平文インデックス132の確率的な暗号化(同一値の平文インデックス132を入力すると、毎回、異なる暗号化インデックス135が作成される)を実現し、暗号化インデックス135に対する高い安全性を実現する。
まず、全体処理部111は、エンコード部115に平文インデックス132を入力し、エンコード部115から出力されたnlog2<q>ビットのインデックス・ベクトルを出力する処理を行う。ただし、<>は小数点第一位の切り上げを意味する。インデックス・ベクトルはlog2<q>ビット毎の要素データ(x1、x2、・・・・、xn)にn分割されている。インデックスを構成する文字列C1C2・・・Cnの各Ckに対応する整数がxkである。また、それぞれの要素データは0以上q未満の整数で表わされる。全体処理部111は、インデックス暗号化部113に、インデックス・ベクトルの暗号化を指示する。
インデックス暗号化部113は、記憶部120に記憶されたパラメータ137を読み込む(S901)。パラメータ137には、暗号鍵の長さに関するパラメータN−lengthや、暗号文の種類に関するパラメータn−kinds、公開パラメータである、写像e、群GN、群GN’、元gp、元gpp1、・・・、元gppnと、元gr、元grr1、・・・、元grrnが記憶されている。秘密鍵151としては、元gq、素数p、素数q、素数rが記憶されている。
インデックス暗号化部113は、0以上p未満の乱数sを作成し、S804で生成した元gp、元gpp1、・・・、元gppnをs乗した、元gp、元gpsp1、・・・、元gpspnを作成する。なお、乱数sを作成するには、鍵設定部112は0以上p未満の乱数(整数)の生成を全体処理部111に依頼し、全体処理部111は乱数生成部116に0以上p未満の乱数を作成させ、作成した乱数を鍵設定部112に乱数sとして入力し、鍵設定部112は群Gp上の元gp、元gpp1、・・・、元gppnのs乗を計算すればよい(S902)。
同様に、インデックス暗号化部113は、0以上r未満の乱数u1、乱数u2、・・・、乱数unを作成し、元grから、元gru1、・・・、元grunを作成する(S903)。
インデックス暗号化部113は、S903で作成した乱数u1、乱数u2、・・・、乱数unを用い、S804で生成した元grr1、・・・、元grrnをそれぞれu1,u2,・・・un乗して、それぞれ元gru1r1、・・・、元grunrnを作成する。さらに、各元の積であるgru1r1+・・・+unrnを計算する。この処理は、検索に関わるインデックス・ベクトル内の要素データに関連している。即ち、インデックス・ベクトルとの完全一致検索のみを依頼する場合、gru1r1+・・・+unrnを作成すればよい。また、インデックス・ベクトルの一部との部分検索を可能にする場合、例えば、インデックス・ベクトルの1番目から(n−1)番目の要素データとの対応(n番目を無視したい場合)をとる場合は、gru1r1+・・・+u(n−1)r(n−1)を作成すればよく、インデックス・ベクトルの1番目と3番目と5番目の要素データのみと対応(他は無視したい場合)をとる場合は、gru1r1+u3r3+u5r5を作成すればよい。なお、積の計算は、次式の数2に示すように、乗算で処理可能である(S904)。
(数2)gru1r1+・・・+unrn=gru1r1gru2r2・・・grunrn
インデックス暗号化部113は、要素データ(x1、x2、・・・・、xn)を用い、元gqから、それぞれgqx1、gqx2、・・・、gqxnを作成する(S905)。
インデックス暗号化部113は、各元の積である、gqx1gpsp1gru1、gqx2gpsp2gru2、・・・、gqxngpspngrun、を計算し、対応写像を用いて、GN上の元へ移したデータを、それぞれID(gqx1gpsp1gru1に対応)、ID(gqx2gpsp2gru2に対応)、・・・IDn(gqxngpspngrunに対応)とする(S906)。
インデックス暗号化部113は、gpをIDn+1、gru1r1+・・・+unrnをIDn+2とし、ID、ID、・・・、IDn+2までを一組のデータとして、出力する。全体処理部111は、出力されたデータを暗号化インデックス135として、記憶部120に保存する(S907)。なお、公開パラメータNに4つの素数の積(N=pqrs)を要する非特許文献2の技術と異なり、本発明で公開パラメータNが3つの素数の積(N=pqr)でよいのは、検索用のデータが2種類(IDn+1、IDn+2)存在するからである。
ここで、中間データであるIDk、TDk、Uk(k=1〜n、n+1、n+2)の名称と役割を説明する。これらのデータの関連は図14に示した。
(1)インデックス関連
IDk(インデックス・ベクトル表現インデックス):
平文情報(インデックス・ベクトル)埋め込み用の暗号化インデックスの一部
IDn+1(トークン・ベクトル撹乱群の削除用インデックス):
「トークン・ベクトル撹乱群の削除用トークン」と連携し、暗号化トークンからトークン・ベクトル撹乱群Gpの元を削除する、暗号化イ ンデックスの一部
IDn+2(インデックス・ベクトル撹乱群の削除用インデックス):
「インデックス・ベクトル撹乱群の削除用トークン」と連携し、暗号化インデックスからインデックス・ベクトル撹乱群Grの元を削除する、暗号化インデックスの一部
(2)トークン関連
TDk(インデックス・ベクトル表現トークン):
平文情報(トークン・ベクトル)埋め込み用の暗号化トークンの一部
TDn+1(トークン・ベクトル撹乱群の削除用トークン):
「トークン・ベクトル撹乱群の削除用インデックス」と連携し、暗号化トークンからトークン・ベクトル撹乱群Gpの元を削除する、暗号 化トークンの一部
TDn+2(インデックス・ベクトル撹乱群の削除用トークン):
「インデックス・ベクトル撹乱群の削除用インデックス」と連携し、暗号化インデックスからインデックス・ベクトル撹乱群Grの元を削 除する、暗号化トークンの一部
(3)検索結果データ関連
Uk(要素間照合データ):
「インデックス・ベクトル表現インデックス」と「インデックス・ベクトル表現トークン」の積。インデックス・ベクトルとトークン・ベ クトルの各要素の照合結果。(x_k z_k)を含む。
n+1(トークン・ベクトル撹乱群の解除用データ):
「要素間照合データ」から、トークン・ベクトル撹乱群Gpによる、撹乱情報を取り除く。
n+2(インデックス・ベクトル撹乱群の解除用データ):
「要素間照合データ」から、インデックス・ベクトル撹乱群Grによる、撹乱情報を取り除く。
上記の処理(S901からS907)により、登録エージェント100は、記憶部120に格納された秘密鍵151と公開パラメータに基づき、暗号化インデックス135を作成できる。特に、インデックス・ベクトル(x1、x2、・・・、xn)は秘密鍵151であるgqの指数として扱われる上、更に十分に乱数性が高いGpとGqの元に挟まれているので(例えば、IDは、gqx1gpsp1gru1であり、公開パラメータgpp1を乱数s乗したgpsp1と、公開パラメータgrを乱数u1乗したgru1とによって撹乱されている)、値が同じインデックス・ベクトルに対しても、毎回発生する乱数が異なるので、異なる値の暗号化インデックス135作成されるため、暗号化インデックス135には高い安全性が期待できる。
また、3つの素数の積で構成された公開パラメータNを暗号化インデックス135の作成に用いたため、暗号化の対象であるメッセージも、非特許文献2の技術に比べ利用効率が高い。
(暗号化可能なメッセージの効率)=q/N=1/pr(>1/(pqr))
更に、S905の処理において、暗号化インデックス135に取り込むインデックス・ベクトルの要素データを選択することにより、完全一致検索だけでなく、部分一致検索用の暗号化インデックス135を作成できる。また、暗号化インデックス135は、ID・・・IDn+2だけで構成する必要はなく、特に部分一致検索用にその構成数を増やしてもよい。
なお、上記の処理手順は、固定されたものではなく、処理手順を変更して実施してもかまわない。例えば、S901の後にS903とS904を実施、S904の後にS902を実施してもよい。また、S905をS902、S903、S904より先に実施してもよい。
なお、上記の処理では、乗法に関する群を生成したが、楕円曲線上の加法群など、他の群でも同様に実現できる。
図10は、本実施形態において、ネットワーク400を経由し、検索エージェント200が送信した暗号化トークン236を元に、管理サーバ300が、暗号化データ712を検索する処理を示すシーケンス図である。
検索エージェント200の全体処理部211は、平文データ231をロードし、トークン暗号化部213へ入力する(S1001)。
検索エージェント200のトークン暗号化部213は、記憶部220に格納された秘密鍵251とパラメータ237をロードし、平文トークン233を暗号化トークン236に変換する。なお、変換方法については、図11を用い、後で詳しく説明する(S1002)。
検索エージェント200の通信部は、トークン暗号化部213より出力された暗号化トークン236を、ネットワーク400を経由し、管理サーバ300へ送信する処理を行う(S1003)。
管理サーバ300の通信部303から、ネットワーク400を経由し、検索エージェント200が送信した暗号化トークン236を受信する処理を行う(S1004)。
管理サーバ300の全体処理部311は、受信した暗号化トークン236と、ロードする暗号化インデックス701の番号を検索部312に入力する(S1005)。例えば、記憶部320に格納された暗号化インデックス701を網羅的に検索する場合、全体処理部311は、予めインデックス・テーブルに格納された暗号化インデックス701に番号を割り当てておき(例えば1から1000まで等)、検索部312に1から1000までの処理を逐次的に入力すればよい。
管理サーバ300の検索部312は検索結果に関するデータを出力する(S1006)。なお、検索部312の処理については、図12を用い、後で詳しく説明する。
管理サーバ300の全体処理部311は、検索結果が1である(暗号化トークン236と暗号化インデックス701が関連する)場合、図7Aに示すインデックス・テーブルから、該当した暗号化インデックス701に関連するアドレスをロードし(例えば、図7Aのインデックス・テーブルにおいて、暗号化インデックスI1(701)が該当した場合、全体処理部311はaddress 1をロードする)、そのアドレスに記憶される暗号化データ712をロードする(例えば、図7Bのデータ・テーブルにおいては、全体処理部311はaddress 1に記憶される暗号化データE1をロードする)。全体処理部311は、ロードした暗号化データ712を検索結果の一部として、記憶部320に保存する(S1007)。
管理サーバ300の検索部312は、S1005からS1007までの処理を、全体処理部311が停止させるまで処理を繰り返す(S1008)。
管理サーバ300は、検索結果の一部として、ロードした全ての暗号化データ712を通信部303から、ネットワーク400を経由し、検索エージェント200へ送信する処理を行う。なお、暗号化データ712をロードしなかった場合、「該当なし」とし、通信部303から、ネットワーク400を経由し、「該当なし」を示すデータを検索エージェント200へ送信する処理を行う(S1009)。
検索エージェント200の通信部203から、ネットワーク400を経由し、管理サーバ300が送信した暗号化データ712または「該当なし」を示すデータを受信する処理を行う(S1010)。
検索エージェント200が暗号化データ712を受信した場合、全体処理部211は、データ復号部218へ暗号化データ712を入力し、データ復号部218は、記憶部220に格納された秘密鍵251をロードし、暗号化データ712を平文データ231に変換する。なお、変換方法については、標準的な復号アルゴリズム(AES暗号、DES暗号など)の実装により、実現可能であるため、その詳細な説明は省く(S1011)。
検索エージェント200の全体処理部211は、データ復号部218が出力した平文データ231を、記憶部220へ格納する(S1012)。
上記の処理(S1001からS1012)により、検索エージェント200は、ネットワーク400経由で、管理サーバ300に暗号化データ712の検索を指示し、その検索結果を確認できる。
なお、上記の処理手順は、固定されたものではなく、処理手順または処理内容を変更して実施してもかまわない。例えば、管理サーバ300は複数の暗号化インデックス701に対する検索処理を一括で実施し(S1005からS1007)、さらに繰り返し処理を省くようにしてもよい(S1008)。また、管理サーバ300も、1件の暗号化インデックス701の検索毎に、検索結果を作成(S1007)、送信(S1009)してもよく、さらに複数件ごとにまとめてもかまわない。
図11は、検索エージェント200の暗号化トークン236による検索処理における、暗号化トークン236を生成する処理を示すシーケンス図である。
図11の処理フローでは、検索用の平文トークン233を変換するだけでなく、管理サーバ300向けに作成した2種類の検索用データを含め、暗号化トークン236を作成する(非特許文献2の技術とは異なり、本発明では、検索用のデータが2種類あるため、公開パラメータNは3つの素数の積で済む)。平文トークン233の確率的な暗号化(同一値の平文トークン233を入力すると、毎回、異なる暗号化トークン236が作成される)を実現し、暗号化トークン236に対する高い安全性を実現する。
全体処理部211は、トークン暗号化部213に、トークン・ベクトルの暗号化を指示する。
トークン暗号化部213は、記憶部220に記憶されたパラメータ237と秘密鍵251を読み込む(S1101)。パラメータ237には、暗号鍵の長さに関するパラメータN−lengthや、暗号文の種類に関するパラメータn−kinds、公開パラメータである、写像e、群GN、群GN’、元gp、元gpp1、・・・、元gppn、元gr、元grr1、・・・、元grrnが記憶されている。秘密鍵251としては、元gq、素数p、素数q、素数rが記憶されている。
全体処理部211は、エンコード部215に平文トークン233を入力し、エンコード部215から出力されたnlog2<q>ビットのトークン・ベクトルを出力する処理を行う。ただし、<>は小数点第一位の切り上げを意味する。トークン・ベクトルはlog2<q>ビット毎の要素データ(y1、y2、・・・・、yn)にn分割されている。トークンを構成する文字列C1C2・・・Cnの各Ckに対応する整数がykである。また、それぞれの要素データは0以上q未満の整数で表わされる。全体処理部211は、トークン・ベクトルと内積をとると、その値がGN上で0と等しくなる直交ベクトルを作成する。この直交ベクトルも、log2<q>ビット毎の要素データ(z1、z2、・・・・、zn)にn分割されており、それぞれの要素データは0以上q未満の整数で表わされる。
直交ベクトルの作成では、次式の数3を満たすよう、0以上q未満の整数をそれぞれ、z1、z2、・・・znに設定すればよい。
(数3)y1z1+・・・+ynzn=kq(kは任意の整数)
上記の数3は、y1z1+・・・+ynzn≡0(mod q)と等価である。
具体的には、全体処理部211は乱数生成部216に0以上q未満の乱数を作成させ、作成した乱数を、それぞれz1、z2、z(n−1)と設定する。また、数3を満たすznの値は(連立一次方程式を解くことにより)一意に求まるので、その値をznに設定する(S1102)。
数3で示されるy1z1+・・・+ynzn=0を満たす直交ベクトル(z1、z2、・・・・、zn)は、例えば、以下の手順により求められる。元のベクトル{yk}をベースとして直交ベクトルの成分を求めると、直交ベクトル{zk}は、z1=y1−yn/y1,zk=yk−(y(k−1))/yk(k=2〜n)と表される。特に、yk>y(k−1)(k=2〜n)の場合は、zk>0(k=2〜n)、z1<0となる。さらに、{zk}のそれぞれを整数化するために、{yk}の最小公倍数Mを掛けても直交条件は満たされる。
z1<0となるz1を正の値にするため、z1′=z1+Δ(>0)とおくと(|z1|<Δ)、直交条件は、y1z1′+y2z2+・・・・+ynzn=y1Δ(=kqとおく)となる。z1′=w(>0)とすると、Δ=w−z1=w+|z1|=w+(yn/y1)−y1。
なお、平文トークン233にワイルドカード“*”が含まれていた場合は、該当するトークン・ベクトルの要素データは無視して、作成する。例えば、平文トークン233に“abced”の代わりに“a*b*e”と入力された(かつn=5の)場合、平文トークン233がトークン・ベクトルの要素データに1文字毎にエンコードされる場合、次式の数4を元に直交ベクトル(z1、z2、z3、z4、z5)を作成する。
(数4)y1z1+y2z2+y3z3+y4z4+y5z5=kq(kは任意の整数)
一方、平文トークンがワイルドカードを含む“a*b*e”の場合には“*”が入力された2番目と4番目にはワイルドカードが入力されているので、次式の数5に基づいて直交ベクトル(z1、*、z3、*、z5)を求める。
(数5)y1z1+y3z3+y5z5=kq(kは任意の整数)
数5は、数3の式において、ワイルドカードに対応する要素データz2、z4をそれぞれ0としたものである。
S1103では、トークン暗号化部213は、0以上r未満の乱数tを作成し、S804で生成した元gr、元grr1、・・・、元grrnをt乗した、元gr、元grtr1、・・・、元grtrnを作成する。なお、乱数tを作成するには、トークン暗号化部213は0以上r未満の乱数(整数)の生成を全体処理部211に依頼し、全体処理部211は乱数生成部216に0以上r未満の乱数を作成させ、作成した乱数をトークン暗号化部213に乱数tとして入力し、トークン暗号化部213は群Gp上の元gr、元grr1、・・・、元grrnのt乗を計算すればよい(S1103)。
同様に、トークン暗号化部213は、0以上r未満の乱数v1、乱数v2、・・・、乱数vnを作成し、元gpから、元gpv1、・・・、元gpvnを作成する(S1104)。
トークン暗号化部213は、S1104で作成した乱数v1、乱数v2、・・・、乱数vnを用い、S804で生成した元gpp1、・・・、元gppnをそれぞれV1,V2,・・・・Vn乗して、各元gpv1p1、・・・、元gpvnpnを作成する。さらに、それぞれの元の積であるgpv1p1+・・・+vnpnを計算する。この処理は、検索に関わるトークン・ベクトル内の要素データに関連している。即ち、トークン・ベクトルとの完全一致検索のみを依頼する場合、gpv1p1+・・・+vnpnを作成すればよい。また、トークン・ベクトルの一部との部分検索を可能にする場合、例えば、トークン・ベクトルの1番目から(n−1)番目の要素データとの対応(n番目の要素データがワイルドカード)をとる場合は、gpv1p1+・・・+v(n−1)p(n−1)を作成すればよく、トークン・ベクトルの1番目と3番目と5番目の要素データのみと対応(他の要素データはワイルドカード)をとる場合は、gpv1p1+v3p3+v5p5を作成すればよい。即ち、トークン・ベクトル内の要素データのうち、ワイルドカードに対応する乱数pk、即ちp2及びp4の値を0に設定する。なお、積の計算は、次式の数6に示すように、乗算で処理可能である(S1105)。
(数6)grv1p1+・・・+vnpn=grv1p1grv2p2・・・grvnpn
トークン暗号化部213は、直交ベクトルの要素データ(z1、z2、・・・・zn)を用い、元gqから、それぞれgqz1、gqz2、・・・、gqznを作成する(S1106)。
トークン暗号化部213は、各元の積である、gqz1gpv1grtr1、gqz2gpv2grtr2、・・・、gqzngpvngrtrn、を計算し、対応写像を用いて、GN上の元へ移したデータを、それぞれTD(gqz1gpv1grtr1に対応)、TD(gqz2gpv2grtr2に対応)、・・・TD(gqzngpvngrtrnに対応)とする(S1107)。
なお、公開パラメータNが4つの素数の積(N=pqrs)であり、インデックスとトークンを撹乱する為に、3つの群(Gp,Gr,Gs)が利用可能な非特許文献2の開示技術とは異なり、本発明では、公開パラメータNを3つの素数の積(N=pqr)にしたため、インデックスとトークンを撹乱する為に、2つの群 (Gp,Gr)しか、利用できない。そこで、S1107で示したように、トークン・ベクトル撹乱群の削除用トークンと、インデックス・ベクトル撹乱群の削除用トークンを作成し、それらの撹乱情報の削除を可能にした。
S1107も、S1105同様、検索に関わるトークン・ベクトル内の要素データに関連している。即ち、トークン・ベクトルとの完全一致検索のみを依頼する場合は、全てのTD、TD、・・・、TDを作成すればよいが、トークン・ベクトルの部分一致検索の場合、例えば、トークン・ベクトルの1番目から(n−1)番目の要素データとの対応(n番目の要素データがワイルドカード)をとる場合は、TD、TD、・・・、TDn−1を作成すればよく、ワイルドカードを含む上記の例では、トークン・ベクトルの1番目と3番目と5番目の要素データのみと対応(他の要素データはワイルドカード)をとる場合は、TD、TD、TDを作成すればよい。さらに、検索用のデータとして、TD及びTDを作成する。
トークン暗号化部213は、gpv1p1+・・・+vnpnの逆元gp−(v1p1+・・・+vnpn)を計算し、これをTDn+1とし、grの逆元gr−tをTDn+2とし、TD、TD、・・・、TDn+2までを一組のデータとして、出力する。全体処理部211は、出力されたデータを暗号化トークン236として、記憶部220に保存する。更に、作成した(ワイルドカードの番号を抜いた)TDの添え字番号も、暗号化トークン236として記憶部220に保存する(S1108)。
上記の処理(S1101からS1108)により、検索エージェント200は、記憶部220に格納された秘密鍵251と公開パラメータに基づき、暗号化トークン236を作成できる。特に、トークン・ベクトル(z1、z2、・・・、zn)は秘密鍵251であるgqの指数として扱われる上、更に十分に乱数性が高い群Gpと群Gqの元に挟まれているので(例えば、TDは、gqz1gpv1grtr1であり、公開パラメータgpを乱数v1乗したgpv1と、公開パラメータgrr1を乱数t乗したgrtr1とによって撹乱されている)、値が同じトークン・ベクトルに対しても、毎回発生する乱数が異なるので、異なる値の暗号化トークン236が作成されるため、暗号化トークン236には高い安全性が期待できる。また、3つの素数の積で構成された公開パラメータNを暗号化トークン236の作成に用いるため、暗号化の対象であるメッセージの利用効率も、非特許文献2の技術に比べ、高い。
(暗号化可能なメッセージの効率)=q/N=1/pr(>1/(pqr))
更に、S1105の処理において、暗号化トークン236に取り込むトークン・ベクトルの要素データを選択することにより、完全一致検索だけでなく、部分一致検索用の暗号化トークン236を作成できる。また、暗号化トークン236は、TD・・・TDn+2だけで構成する必要はなく、特に部分一致検索用にその構成数を増やしてもよい。
なお、上記の処理手順は、固定されたものではなく、処理手順を変更して実施してもかまわない。例えば、登録エージェント100は、S1103、S1104、S1105の順序を変更し、暗号化トークン236を作成してもよい。
図12は、管理サーバ300の暗号化データを検索する処理を示す、シーケンス図である。管理サーバ300において、全体処理部311は、検索部312に、暗号化トークン336と、暗号化インデックス701の番号を入力し、暗号化データ712の検索処理を指示する。検索では、管理サーバ300向けに作成された暗号化インデックス701と暗号化トークン336の2種類の検索用データ(IDn+1(=gp)、IDn+2(=grΣukrk)、TDn+1(=gp−Σvkpk)、TDn+2(=gr−t))を活用し、暗号化インデックス701と暗号化トークン336における乱数情報(群Gpの元と群Grの元)を排除する。
(非特許文献2の技術とは異なり、本発明では、検索用のデータが2種類あるため、公開パラメータNが3つの素数の積でも、部分検索が可能である)。
検索部312は、記憶部320に記憶されたパラメータを読み込む(S1201)。パラメータ337には、暗号鍵の長さに関するパラメータN−lengthや、暗号文の種類に関するパラメータn−kinds、双線形写像などが記載されている。
検索部は、入力された暗号化インデックス701の番号を元に、記憶部320に格納されたインデックス・テーブルから暗号化インデックス701を読み込む(S1202)。
以降、管理サーバ300は暗号化インデックス701と暗号化トークン336の照合処理を行う。
まず、検索部312は暗号化トークン336から、TDの添え字番号を抜き出す(S1203)。以降では、簡単のため、TDの添え字番号が1からn+2まで全て存在する場合を紹介する。
検索部312は暗号化インデックス701からID(元gqx1gpsp1gru1に対応)、暗号化トークン336からTD(元gqz1gpv1grtr1に対応)を取り出す。次式の数7に従い、IDとTDの双線形写像を計算し、これをUとする。
(数7)U=e(gqx1gpsp1gru1、gqz1gpv1grtr1
=e(gp、gp)sp1v1e(gq、gq)x1z1e(gr、gr)u1tr1
ここで、数7の関係式の導出について説明する。
数1に関連したe(xy、z)=e(x、z)e(y、z)の関係を用いると、2つの変数x、yを含む場合に、
e(xm1n1,xm2n2)=e(xm1,xm2n2)e(yn1,xm2n2
=e(xm1,xm2)e(xm1,yn2)e(yn1,xm2)e(yn1,yn2
=e(x,x)m1m2e(x,y)m1n2e(y,x)n1m2e(y,y)n1n2となる。特に、x∈X、y∈Y、かつX≠Yの場合(xとyが異なる群に属する場合)にe(x,y)=e(y,x)=1とすると、e(xm1n1,xm2n2)=e(x,x)m1m2e(y,y)n1n2となる。さらに変数が増えた場合、上記の関係を繰り返し適用すると、数7の関係式が得られる。なお、e(xy、z)=e(x、z)e(y、z)の関係において、変数及びe(xy、z)等の対数によって上記の関係を整理すると、上記の関係が2つの変数に対する線形写像(双線形写像)であることが示される。
次に、検索部312は、暗号化インデックス701からID(元gqx2gpsp2gru2に対応)、暗号化トークン336からTD(元gqz2gpv2grtr2に対応)を取り出し、同様に双線形写像を計算し、Uを作成する。この手順を暗号化インデックス701のID、ID、・・・Dn+2、及び暗号化トークン336のTD、TD、・・・TD、TDn+1、TDn+2についてUk=e(IDk,TDk)(k=1〜n,n+1,n+2)の処理を行い、中間データU、U、・・・、U、Un+1、Un+2を作成する。(S1204)
次に、管理サーバ300は、中間データU1、U2、・・・Un、Un+1、Un+2の積を計算し、これを検索結果データvとする(S1205)。以降、Un+1とUn+2は、それぞれ双線形写像U1、U2、・・・Unにおける群Gpの元と、群Grの元からなる乱数情報の排除に用いられる。暗号化インデックス701と暗号化トークン336に、検索用のデータが2種類(IDn+1、IDn+2、TDn+1、TDn+2)存在するため、これら乱数情報の排除用のデータUn+1、Un+2が作成できる。
(数8)v=U・・・Un+2
=e(gp、gp)sp1v1e(gq、gq)x1z1e(gr、gr)u1tr1
e(gp、gp)sp2v2e(gq、gq)x2z2e(gr、gr)u2tr2
・・・・・・・・・・・・・・
・・・・・・・・・・・・・・
e(gp、gp)spnvne(gq、gq)xnzne(gr、gr)untrn
e(gp、gp)−sΣvkpke(gr、gr)−tΣukrk
=e(gp、gp)sΣpkvke(gr、gr)tΣukrk
e(gq、gq)(x1z1+x2z2+・・・+xnzn)
e(gp、gp)−sΣpkvke(gr、gr)−tΣukrk
=e(gq、gq)(x1z1+x2z2+・・・+xnzn)
上記の数8の右辺の第3式は、模式的に、(インデックスの撹乱因子)・(トークンの撹乱因子)・(インデックス・ベクトルとトークン・ベクトルの直交ベクトルとの内積)・(インデックスの撹乱削除因子)・(トークンの撹乱削除因子)のように、複数の因子の積として表され、インデックス及びトークンのそれぞれの撹乱因子とその削除因子とが相殺されて(インデックス・ベクトルとトークン・ベクトルの直交ベクトルとの内積)のみが残り、数8の右辺の第4式が得られる。
ここで、x1z1+・・・+xnzn=kq(kは任意の整数)
が成立すれば、次式の数9より、群GN上の単位元1を得る。
(数9)v=e(gq、gq)=1
また、x1z1+・・・+xnzn=kq(kは任意の整数)が成立しない時、数9は成立しえない。従って、平文インデックス132と平文トークン233が等しければ、エンコードされたインデックス・ベクトルとトークン・ベクトルは等しく、更にインデックス・ベクトルと直交ベクトルで数9が成立するので、数9の成立、未成立で評価できる。
検索部312は、全体処理部311へ検索結果データvを出力する(S1206)。
全体処理部311は、検索結果データvの値が1である場合、記憶部320から、暗号化インデックス701に関連付けられたアドレスをロードする(S1207)。
全体処理部311は、ロードしたアドレスから、該当する暗号化データ712をロードし、これを検索結果の一部として、記憶部320に保存する(S1208)。
上記の処理(S1201からS1208)により、管理サーバ300は、記憶部320に格納された公開パラメータに基づき、暗号化トークン336に関連する暗号化インデックス701を発見でき、その暗号化インデックス701に関連する暗号化データ712を含めた検索結果を作成できる。
なお、上記の処理手順は、固定されたものではなく、処理手順や処理内容を変更して実施してもかまわない。例えば、管理サーバ300は中間データU、・・・、Un+2の作成処理を一括で実施してもよい(S1204)。また、複数件の暗号化インデックス701の検索毎に、検索結果データvを作成し(S1205)、出力(S1206)してもよい。S1204、S1205では、TDの添え字番号が1からn+2まで全て存在する完全一致検索の場合を紹介した。同様に、例えば、1から(n−1)番とn+1番とn+2番が記憶されている場合、U・・・Un―1n+1n+2を検索結果vとすればよく、1番と3番と5番とn+1番とn+2番が記憶されている場合は、Un+1n+2を検索結果vとすれば、部分一致検索が実施できる。
なお、上記の処理では、GN上の2つの元を入力とし、別のGN’上の元へ射影する双線形写像e(e:GN×GN→GN’)を用いたが、異なる性質の双線形写像e’(e’:GN1×GN2→GN3、ただし、GN1、GN2、GN3はそれぞれ異なる位数を有する)でも、同様に実現できる。
なお、上記の処理では、乗法に関する群を用いたが、楕円曲線上の加法群など、他の群でも同様に実現できる。
(実施の形態2)
本発明の第一の実施形態と異なり、第二の実施の形態では、検索処理システムは、登録エージェント100と、管理サーバ300で構成される。登録エージェント100と管理サーバ300は、ネットワーク400を介して相互に情報を送受信できるように設計されている。
本実施形態における登録エージェント100は、データと検索用のインデックス(以下、インデックスと呼ぶ)を管理サーバ300に送信し、受信結果を管理サーバ300から受信する送受信装置として機能する。また、登録エージェント100は、検索処理委託用のトークンを管理サーバ300に送信し、その検索結果を管理サーバ300から受信する送受信装置として機能し、管理サーバ300は、データを記憶し、また受信したトークンを用いて、データを検索する送受信装置として機能する。
この時、管理サーバ300の機能は第一の実施の形態と同様である。また、登録エージェント100の機能は、第一の実施の形態が示す登録エージェント100の機能に加え、検索エージェント200の機能も備える。即ち、第一の実施の形態が示す登録エージェント100に対し、更に制御部110にトークン暗号化部213、記憶部120に平文トークン233と暗号化トークン236を格納し、更にプログラム記憶部160には、暗号化トークン236による検索処理に関するプログラムを記憶する。
第二の実施の形態における管理サーバ300の処理内容は、第一の実施の形態と同様であり、この説明を省く。また、第二の実施の形態における登録エージェント100の処理内容は、第一の実施の形態における登録エージェント100と検索エージェント200の処理内容を兼ねるものであり、同様に、その説明を省く。
100:登録エージェント、200:検索エージェント、300:管理サーバ
400:ネットワーク、500:コンピュータ、101、201、301:入力部、102、202、302:出力部、103、203、303:通信部、110、210、310:制御部、111、211、311:全体処理部、112:鍵設定部、113:インデックス暗号化部、115、215:エンコード部、116、216:乱数生成部、117データ暗号化部、213:トークン暗号化部、218:データ復号部、312:検索部、120、220、320:記憶部、
130、230、330:データ記憶部、131、231:平文データ、132:平文インデックス、134、234:暗号化データ、135:暗号化インデックス、137、237、337:パラメータ、233:平文トークン、236、336:暗号化トークン、331:暗号化データ・テーブル、332:暗号化インデックス・テーブル、150、250:鍵記憶部、151、251:秘密鍵、160、260、360:プログラム記憶部、180、280、380:一時情報記憶部、501:CPU(Central Processing Unit)、502:メモリ、503:外部記憶装置、508:記憶媒体、507:読書装置、506:入力装置、505:出力装置、504:通信装置、509:内部通信線、700:インデックス・テーブル、701:暗号化インデックス、702:アドレス値、710:データ・テーブル、711:アドレス、712:暗号化データ

Claims (14)

  1. 登録処理プログラムと検索処理プログラムを記憶部に記憶する管理サーバと、登録依頼プログラムを記憶部に記憶する登録エージェントと、検索依頼プログラムを記憶部に記憶する検索エージェントと、がネットワーク経由で連携する検索処理システムであって、
    前記登録エージェントは、3つの素数(p、q、r)を生成し、これらの積から公開パラメータN(=pqr)を構成し、qを位数とする群の元を秘密鍵として記憶する鍵記憶部と、pとqを位数とする群の元を公開パラメータとして記憶するデータ記憶部と、を備え、
    前記登録エージェントは、検索用の平文インデックスを記秘密鍵と記公開パラメータとを用いて確率的な暗号処理により、部分一致検索用の暗号化インデックスへ変換し、この暗号化インデックスを前記管理サーバの前記記憶部へ登録し、
    前記検索エージェントは、検索用の平文トークンを記秘密鍵と記公開パラメータとを用いて確率的な暗号処理により、部分一致検索用の暗号化トークンへ変換し、この暗号化トークンを前記管理サーバの前記記憶部へ前記ネットワーク経由で送信し、
    前記管理サーバは、受信した暗号化トークンが、前記記憶部に格納された前記暗号化インデックスに該当するかを、前記暗号化トークンと前記暗号化インデックスを双線形写像することによって得られる検索結果データを用いて判定すること、
    を特徴とする検索処理システム
  2. 請求項1記載の検索処理システムであって、
    前記暗号化インデックスは、暗号化された平文インデックスの情報と、2つの乱数情報の排除用のデータと、から構成され、
    前記暗号化トークンは、暗号化された平文トークンの情報と、2つの乱数情報の排除用のデータと、から構成され、
    前記管理サーバは、前記暗号化インデックスと前記暗号化トークンがそれぞれ保有する前記乱数情報の排除用のデータを用い、暗号化された平文インデックスの情報と暗号化された平文トークンの情報との照合の有無を示す情報を抽出し、前記暗号化トークンが前記暗号化インデックスに該当するかを判定すること、
    を特徴とする検索処理システム
  3. 請求項2記載の検索処理システムであって、
    前記平文インデックスから、前記暗号化インデックスへの変換は、群Gqの元の指数に前記平文インデックスに関する情報を埋め込み、さらに公開パラメータとして前記検索エージェントの前記記憶部に記憶された群Gpの元と群Grの元を、群Gqの元に掛け合わせていること、
    を特徴とする検索処理システム。
  4. 請求項3記載の検索処理システムであって、
    前記平文トークンから、前記暗号化トークンへの変換は、双線形群Gqの元の指数に前記平文トークンのデータ情報を埋め込み、さらに公開パラメータとして前記検索エージェントの前記記憶部に記憶された双線形群Gpの元と双線形群Grの元を、双線形群Gqの元に掛け合わせていること、
    を特徴とする検索処理システム。
  5. 請求項4記載の検索処理システムであって、
    前記検索エージェントは、前記平文トークンに対応するトークン・ベクトルに直交する直交ベクトルを作成し、前記平文インデックスに対応するインデックス・ベクトルとの内積を作成すること、
    を特徴とする検索処理システム。
  6. 請求項5記載の検索処理システムであって、
    前記登録エージェントは、前記平文インデックスを部分一致検索用の前記暗号化インデックスに変換する、インデックス暗号化部を備え、
    前記検索エージェントは、ワイルドカードが入力された前記平文トークンを、前記ワイルドカードに対応する部分を間引いた前記暗号化トークンに変換し、
    録サーバは、前記暗号化インデックスを前記管理サーバの前記記憶部に格納し、格納した上記暗号化インデックスを前記暗号化トークンが該当するかを判断すること、
    を特徴とする検索処理システム。
  7. 請求項6記載の検索処理システムであって、
    前記登録サーバは、暗号化したデータを前記管理サーバの前記記憶部への登録を依頼し、
    前記管理サーバは、前記暗号化したデータを記管理サーバの前記記憶部へ記憶し、
    前記暗号化インデックスは、記憶した前記暗号化したデータのアドレス値と関連付けた状態で前記記憶部へ記憶されること、
    を特徴とする検索処理システム
  8. 請求項7記載の検索処理システムであって、
    前記管理サーバは、前記暗号化トークンが前記暗号化インデックスに該当するかを判定し、該当すると判定した場合には、前記暗号化インデックスに関連付けられたアドレス値に記憶されている、前記暗号化されたデータを前記記憶部からロードし、前記暗号化されたデータを検索結果の一部とすること、
    を特徴とする検索処理システム
  9. 請求項8記載の検索処理システムであって、
    前記検索エージェントは、前記管理サーバから受信した前記検索結果を復号し、前記暗号化されたデータを抽出すること、
    を特徴とする検索処理システム
  10. データを登録するための登録エージェントと、前記データを検索するための検索エージェントと、前記データを管理するための管理サーバとがネットワークを介して接続された検索処理システムにおける部分一致検索方法であって、
    前記登録エージェントは、
    所望のデータ及び前記データに関するインデックスを前記管理サーバに登録する利用者が入力した公開パラメータである整数Nを素因数分解して3つの素数を取得し、
    前記素数を用いて、前記管理サーバに登録するデータ及びインデックスを確率的な暗号処理により暗号化し、
    号化されたデータ及び部分一致検索用インデックスを前記管理サーバに送信し、
    前記管理サーバは、
    前記暗号化されたデータ及び部分一致検索用インデックスを互いに関連付けて記憶部に格納し、
    前記検索エージェントは、
    データ検索の利用者が入力した文字列の一部である部分文字列からなる検索用トークンを受け取り、
    前記公開パラメータから生成した3つの前記素数を用いて、前記検索用トークンを確率的な暗号処理により暗号化して前記管理サーバに送信し、
    前記管理サーバは、
    前記検索エージェントから受け取った暗号化されたトークンと前記暗号化された部分一致検索用インデックスとの照合を、双線形写像を用いて実行することによって検索を行い、
    前記照合が成功すれば、前記暗号化されたインデックスと関連付けられた前記暗号化されたデータを検索し、前記検索された暗号化データを前記検索エージェントに送信し、
    前記検索エージェントは、
    前記管理サーバから受信した前記暗号化されたデータを、前記公開パラメータから生成した3つの前記素数を用いて、複号化して平文の検索結果を出力して前記データ検索の利用者に提示する、
    ことを特徴とする部分一致検索方法。
  11. 前記検索用トークンの平文にワイルドカードが含まれている場合は、前記ワイルドカードに対応した部分を間引いて、前記暗号化されたトークンを生成することを特徴とする請求項10記載の部分一致検索方法。
  12. 前記部分一致検索方法において、
    前記公開パラメータを素因数分解して第1、第2及び第3の素数を取得し、
    前記第1の素数に基づいて生成される第1の群によって、前記インデックスを暗号化するための第1の因子を生成し、
    前記第2の素数に基づいて生成される第2の群によって、前記暗号化されたインデックスの元となる第1の情報を生成し、
    前記検索用トークンの文字列をベクトル化したトークン・ベクトルに直交するベクトルと前記第2の群によって前記暗号化されたトークンの元となる第2の情報を生成し、
    前記第3の素数に基づいて生成される第3の群によって前記トークンを暗号化するための第2の因子を生成する、
    ことを特徴とする請求項10記載の部分一致検索方法。
  13. 前記部分一致検索方法は、さらに、
    前記第1の因子、前記第1の情報、及び前記第2の因子に関連して生成された第1の撹乱の因子を用いて、前記インデックスを暗号化した前記暗号化されたインデックスを生成し、
    前記第2の情報、前記第2の因子、及び前記第1の因子に関連して生成された第2の撹乱の因子を用いて、前記検索用トークンを暗号化した前記暗号化されたトークンを生成し、
    前記インデックス及び前記検索用トークンについて、それぞれの暗号化を解除するための暗号化解除因子を生成する、
    ことを特徴とする請求項12記載の部分一致検索方法。
  14. 前記部分一致検索方法は、さらに、
    前記生成した暗号化されたインデックス、暗号化されたトークン、及びそれぞれの前記暗号化解除因子を用いて、前記暗号化されたインデックスと前記暗号化されたトークンとの照合が成功したかどうかを判定するための検索結果データを生成する、
    ことを特徴とする請求項13記載の部分一致検索方法。
JP2011281975A 2011-12-22 2011-12-22 検索処理システムおよび部分一致検索方法 Active JP5667969B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011281975A JP5667969B2 (ja) 2011-12-22 2011-12-22 検索処理システムおよび部分一致検索方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011281975A JP5667969B2 (ja) 2011-12-22 2011-12-22 検索処理システムおよび部分一致検索方法

Publications (2)

Publication Number Publication Date
JP2013130825A JP2013130825A (ja) 2013-07-04
JP5667969B2 true JP5667969B2 (ja) 2015-02-12

Family

ID=48908391

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011281975A Active JP5667969B2 (ja) 2011-12-22 2011-12-22 検索処理システムおよび部分一致検索方法

Country Status (1)

Country Link
JP (1) JP5667969B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6208586B2 (ja) 2014-01-16 2017-10-04 株式会社日立製作所 検索可能暗号処理システムおよび検索可能暗号処理方法
JP6260442B2 (ja) * 2014-05-02 2018-01-17 富士通株式会社 情報処理方法及びプログラム
WO2016129390A1 (ja) 2015-02-10 2016-08-18 株式会社RNAi 端末装置、データベースサーバおよび計算システム
JP6289768B2 (ja) 2016-01-18 2018-03-07 三菱電機株式会社 暗号化装置、暗号化プログラム及び暗号化方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5274271B2 (ja) * 2009-01-16 2013-08-28 三菱電機株式会社 検索システム及び索引暗号化装置及び検索暗号化装置及び検索装置及びコンピュータプログラム及び検索方法
US8615668B2 (en) * 2010-01-15 2013-12-24 Mitsubishi Electric Corporation Confidential search system and cryptographic processing system
JP5432736B2 (ja) * 2010-01-18 2014-03-05 日本電信電話株式会社 暗号化された情報のためのキーワード検索システム、キーワード検索方法、検索要求装置、検索代行装置、プログラム、記録媒体

Also Published As

Publication number Publication date
JP2013130825A (ja) 2013-07-04

Similar Documents

Publication Publication Date Title
Zhu et al. Cooperative provable data possession for integrity verification in multicloud storage
JP5412414B2 (ja) 検索可能暗号処理システム
Jayapandian et al. Secure and efficient online data storage and sharing over cloud environment using probabilistic with homomorphic encryption
CN110637441A (zh) 应用于数据重复数据删除的加密密钥生成
JP5432736B2 (ja) 暗号化された情報のためのキーワード検索システム、キーワード検索方法、検索要求装置、検索代行装置、プログラム、記録媒体
CN110750797B (zh) 基于组合加密的云数据库加密方法
CN108111587B (zh) 一种基于时间释放的云存储搜索方法
JP6961324B2 (ja) 検索可能暗号処理システム
Tuo et al. An effective fuzzy keyword search scheme in cloud computing
JP5667969B2 (ja) 検索処理システムおよび部分一致検索方法
Ma et al. CP‐ABE‐Based Secure and Verifiable Data Deletion in Cloud
JPWO2016148281A1 (ja) 秘匿文字列計算システム及び方法と装置並びにプログラム
Gang et al. Secure image deduplication in cloud storage
Hong et al. Constructing conditional PKEET with verification mechanism for data privacy protection in intelligent systems
KR100951034B1 (ko) 암호문 크기를 줄이기 위한 공개키 기반의 검색가능암호문생성 방법과, 그에 따른 공개키 기반의 데이터 검색 방법
Cheon et al. Limits of Polynomial Packings for Z pk and F pk
JP5486519B2 (ja) 検索システム、判定装置、ベクトル構成装置、その方法及びプログラム
JP6532843B2 (ja) 秘匿計算システム、第一秘匿計算装置、第二秘匿計算装置、秘匿回路生成方法、秘匿回路評価方法、プログラム
JP4528114B2 (ja) 鍵生成装置、暗号化装置、検査装置、復号化装置並びに鍵生成プログラム、暗号化プログラム、検査プログラム、復号化プログラム
JP6693503B2 (ja) 秘匿検索システム、サーバ装置、秘匿検索方法、検索方法、およびプログラム
Zhang et al. Token-leakage tolerant and vector obfuscated IPE and application in privacy-preserving two-party point/polynomial evaluations
Xu et al. Intrusion-resilient public auditing protocol for data storage in cloud computing
Al Etaiwi et al. Structured encryption algorithm for text cryptography
Martin et al. Efran (O):" Efficient Scalar Homomorphic Scheme on MapReduce for Data Privacy Preserving"
Hariss et al. Cloud assisted privacy preserving using homomorphic encryption

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130924

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140731

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140902

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20140908

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141030

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20141125

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141215

R150 Certificate of patent or registration of utility model

Ref document number: 5667969

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150