WO2015107561A1 - 検索システム、検索方法および検索プログラム - Google Patents

検索システム、検索方法および検索プログラム Download PDF

Info

Publication number
WO2015107561A1
WO2015107561A1 PCT/JP2014/000103 JP2014000103W WO2015107561A1 WO 2015107561 A1 WO2015107561 A1 WO 2015107561A1 JP 2014000103 W JP2014000103 W JP 2014000103W WO 2015107561 A1 WO2015107561 A1 WO 2015107561A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
search
index
tag
unit
Prior art date
Application number
PCT/JP2014/000103
Other languages
English (en)
French (fr)
Inventor
貴人 平野
松田 規
伊藤 隆
充洋 服部
豊 川合
Original Assignee
三菱電機株式会社
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 三菱電機株式会社 filed Critical 三菱電機株式会社
Priority to PCT/JP2014/000103 priority Critical patent/WO2015107561A1/ja
Publication of WO2015107561A1 publication Critical patent/WO2015107561A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6272Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database by registering files or documents with a third party
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures

Abstract

 秘匿検索の検索結果の正当性を検証でき、かつ検索結果の改ざんを防止する。検索対象データと前記検索対象データの正当性の検証情報であるタグが設定される配列要素を有する索引データとを記憶する検索装置と、キーワードと、前記検索対象データのデータ名及び前記索引データに対応付けるラベルとに基づいて、前記索引データのいずれかの配列要素を指定する検索要求データを生成する検索要求データ生成部と、前記検索要求データ生成部により生成された前記検索要求データを前記検索装置に送信し、前記検索要求データにより指定される前記配列要素に設定されたデータ名の検索対象データと前記タグとを含んだ検索結果データを受信する検索結果データ受信部と、前記検索結果データ受信部により受信した前記検索結果データに含まれる前記検索対象データと前記タグとの組の正当性を検証するタグ検証部とを備えた検索端末装置とを備える。

Description

検索システム、検索方法および検索プログラム
 本発明は、例えば、秘匿検索を行なうための検索システム、検索方法および検索プログラムに関するものである。
 秘匿検索とは、暗号化データを暗号化したまま検索できる技術である。
 近年、クラウドサービス等の普及によりインターネット上でデータ管理が可能となった。しかし、インターネット上でのデータ管理には、預けたデータがコンピュータウィルスやデータセンタの管理者の不正によって漏洩する危険性がある、といったセキュリティ上の課題がある。秘匿検索はそのような課題を解決する技術の1つとして注目されている。
 秘匿検索は、大きく分けて、公開鍵暗号を利用した方式(例えば、非特許文献8と非特許文献9)と、共通鍵暗号(秘密鍵暗号または対称鍵暗号ともいう)を利用した方式(例えば、特許文献1、特許文献2、非特許文献1、非特許文献2、非特許文献3、非特許文献4、非特許文献5、非特許文献6、非特許文献7)との2種類が存在する。
 公開鍵暗号ベースの秘匿検索は、公開鍵を用いることでどのエンティティ(ユーザ端末)もデータセンタへデータが登録でき、また、その公開鍵に対応する秘密鍵を所持しているエンティティは、キーワード検索が可能な技術である。
 一方で、共通鍵暗号ベースの秘匿検索は、データ登録処理とキーワード検索処理は、秘密鍵を所持しているエンティティのみ実行可能な技術である。既存の共通鍵暗号ベースの秘匿検索方式は、データ登録処理とキーワード検索処理は、秘密鍵を所持しているエンティティに限られているものの、既存の公開鍵暗号ベースの方式と比べて検索処理が高速であることが知られている。特に、近年の共通鍵暗号ベースの秘匿検索では、索引と呼ばれる検索結果が暗号化されて保管されている情報を用いて高速化を達成している方式が多くある。
 索引を用いた既存の共通鍵暗号ベースの秘匿検索技術は、ほとんどが非特許文献1で公開されている方式を参考にしており、以下のような流れで処理が実行される。ただし、データの登録および検索をしたいエンティティ(以下、ユーザ、登録者または検索者とも呼ぶ)は、事前準備として秘密鍵を生成し、この秘密鍵を他人に漏らさないように厳重に管理することが求められる。
 はじめに、索引を利用する共通鍵暗号ベースの秘匿検索技術における一般的なデータ登録処理について述べる。
 まず、クラウドサービス等を利用してデータをデータセンタに預けたいユーザ(登録者)は、データ(初期)登録時に、登録したいデータのキーワードを決定して、各キーワードに対してヒットするデータのデータ名のリストを作成する(図14参照)。例えば、図14は、keyword-1が検索キーワードである場合、検索にヒットするデータのデータ名が、データ1、データ3、およびデータ5であることを示している。
 次に、ユーザは、秘密鍵を用いて索引を作成する。索引には、検索結果が暗号化されて保管されており、秘密鍵やそれに準じる情報を持っていなければ、有益な検索結果を引き出すことは困難である。なお、索引の生成方法や索引の構造は方式によって異なる。
 例えば、配列構造の索引を用意し、各キーワードの検索結果(または暗号化した検索結果)をランダムな(配列要素の)アドレスの記憶領域に格納する。このような処理により出来上がった配列が索引である。このランダムなアドレスは、擬似ランダム関数やSHA-1のようなハッシュ関数にキーワードと秘密鍵とを入力することで確定的に生成される乱数によって決定される。なお、確定的とは、入力する秘密鍵とキーワードとが同じであればいつも同じ値が生成される、といった意味である。この索引にはキーワードは格納されず検索結果のみが格納され、秘密鍵を持っているユーザのみがキーワードと検索結果とを結びつけることができる。
 最後に、ユーザは、登録したいデータをAES(Advanced Encryption Standard)やCamelliaなどの共通鍵暗号方式やRSA暗号方式などの公開鍵暗号方式を用いて暗号化し、索引と暗号化データとをデータセンタに登録する。
 次に、索引を利用する共通鍵暗号ベースの秘匿検索技術における一般的なキーワード検索処理について述べる。
 データセンタに預けた暗号化データを検索したいユーザ(検索者)は、検索したいキーワードと秘密鍵とを使って乱数(索引に対応するアドレス)を生成し、生成した乱数を含んだ検索クエリをデータセンタに送信する。なお、方式によっては、キーワードと秘密鍵とを使って乱数を生成することに加えて部分検索鍵も生成し、乱数と部分検索鍵とを含んだ検索クエリをデータセンタに送信する。
 次に、データセンタは、受け取った検索クエリ内の乱数に基づき索引内のあるアドレスの記憶領域から検索結果を引き出す。この検索結果が暗号化されていれば、検索クエリ内の部分検索鍵を用いて検索結果を復号する。その後、データセンタは、検索結果が示すデータ名に対応した(複数の)暗号化データを読み出し、検索クエリの返答として暗号化データをユーザへ送信する。
 最後に、ユーザは、秘密鍵を使って受け取った暗号化データを復号する。これにより、データを暗号化してデータセンタに保管したとしても、検索したキーワードにヒットしたデータを得ることができる。
 以上が、索引を利用する共通鍵暗号ベースの秘匿検索技術における一般的なデータ登録処理とキーワード検索処理である。
特開2013-152520号公報 WO2013/084957号公報
R.Curtmola,J.Garay,S.Kamara,and R.Ostrovsky."Searchable Symmetric Encryption:Improved Definitions and Efficient Constructions".ACM CCS 2006,ACM,2006. S.Kamara,C.Papamanthou,and T.Roeder."Dynamic Searcable Symmetric Encryption".ACM CCS 2011,ACM,2011. K.Kurosawa and Y.Ohtaki."UC-Secure Searchable Symmetric Encryption".FC 2012,Lecuture Notes in Computer Science 7397,Springer,2012. 岩波、尾形. "ドキュメント追加後も安全で効率的な検索可能暗号".暗号と情報セキュリティシンポジウム(SCIS2013),2013. S.Kamara and C. Papamanthou."Parallel and Dynamic Searchable Symmetric Encryption".FC 2013,Lecture Notes in Computer Science 7859,Springer,2013. 尾形、金岡、松尾. "Searchable Symmetric Encryptionはどこまで安全にすべきか?".暗号と情報セキュリティシンポジウム(SCIS2011),2011. K.Kurosawa and Y.Ohtaki."How to Update Documents Verifiably in Searchable Symmetric Encryption".CANS 2013,Lecture Notes in Computer Science 8257,Springer,2013. D.Boneh,G.D.Crescenzo,R.Ostrovsky,and G.Persiano."Public Key Encryption with Keyword Search".EUROCRYPT 2004,Lecture Notes in Computer Science 3027,Springer,2004. M.Bellare,A.Boldyreva,and A.O’Neill."Deterministic and Efficiently Searchable Encryption".CRYPTO 2007,Lecture Notes in Computer Science 4622,Springer,2007.
 共通鍵暗号ベースの秘匿検索を実際に運用する上では、次のようなことが少なくとも求められる:(1)データ登録処理とキーワード検索処理は、1度のみならず何度も実行されることがあるため、効率的にそれらの処理を実行できること。(2)キーワード検索処理時に、データセンタから返ってきた検索結果が本当に正しい検索結果であるか検証できること。
 (1)の要件については、例えば、データ登録処理を実行してデータや索引を追加しても、追加の度に極端に処理効率が落ちることやデータや鍵の管理負荷が極端に高くならないことが実運用上では求められる。
 (2)の要件については、例えば、データセンタの管理者が悪意を持ってデータセンタ内の検索処理基盤に不正なコード等を追加することや、データセンタがマルウェアなどに感染してしまうことで、ユーザは誤った検索結果(検索にヒットしていない暗号化データ)を得ることや、検索結果があるにも関わらず検索にヒットしたデータはなかったという結果が返ってくるといった状況が起こり得る。すなわち、可用性や完全性に対するリスクが現実的には存在するため、正しい検索結果か検証できることが現実的には求められる。
 非特許文献1をはじめとした索引を利用する既存の多くの共通鍵暗号ベースの秘匿検索方式では、データや索引を追加登録するときは、秘密鍵を新たに生成する必要があった。これは、同じ秘密鍵を使い続けて索引を生成すると、以前に用いた検索クエリが新しい索引に適用できてしまうことや、索引どうしを比較することで、思わぬ頻度分析攻撃やその他の攻撃を受けてしまうといった危険性があったからである。つまり、従来方式の多くは、安全性を落とさないようにデータや索引を追加登録する度に秘密鍵を生成するため、鍵管理負荷が高くなり、(1)の要件が満たせていなかった。
 上記に加えて、非特許文献1をはじめとした従来方式の多くは、正しい検索結果か検証できる機能をもっていなかった。よって、(2)の要件が満たせていなかった。
 一方で、(1)と(2)の要件を検討した秘匿検索方式がいくつかあるが、(1)と(2)の要件を同時に満たせている方式は、現在までに知られていない。以下、その詳細を述べる。
 非特許文献6では、データや索引の追加登録時に秘密鍵を生成しない方法が開示されているが、上記のような頻度分析攻撃などを受ける可能性があるため、データの追加登録の度に安全性が落ちるといった問題がある。また、検索結果を検証できるような機能を持っていないため(2)の要件は満たせていない。
 特許文献1、特許文献2、非特許文献4では、データや索引の追加登録時に秘密鍵を生成しなくても安全性を落とさないような方法が開示されているため、(1)の要件は満たせていると考えられる。しかしながら、検索結果を検証できるような機能を持っていないため、(2)の要件は満たせていない。
 非特許文献2、非特許文献5、非特許文献7のデータ追加登録処理は、索引を新たに作成せず、部分的に索引を更新するようなデータを作成することで、秘密鍵を生成しなくてもデータを追加できるような方法が開示されている。しかしながら、非特許文献2、非特許文献5は、索引を更新できる(データを追加登録できる)回数が最初の索引の生成時に決まってしまうため、その回数を超えたときは新たに索引を生成しなくてはならず、運用を続けていくと(1)の要件を満たすことが困難となる。また、非特許文献7は、データを追加する度にある秘密情報を更新しなくてはならず、秘密情報を秘密に保持しつつも必要があればすぐに更新できるようにしなくてはならないため、管理負荷が高いといった課題があり、(1)の要件を十分に満たせていなかった。なお、非特許文献2、非特許文献5については、検索結果を検証できるような機能を持っていないため(2)の要件も満たせていない。
 非特許文献3、非特許文献7では、メッセージ認証子や暗号学的Accumulatorと呼ばれる暗号技術を用いて検索結果に対する署名を生成して(2)の要件を達成していたが、現状は索引に応じた署名が生成できないといった課題がある。さらに言えば、同じ秘密鍵を用いて索引を生成し、かつ検索結果に対する署名を生成すると、生成した検索結果の署名が他の索引にも適用でき、検索結果を改ざんできてしまう危険性がある。よって、索引を追加すると、(2)の要件を満たすことが困難となってしまう。
 本発明は、上記のような課題を解決するためになされたもので、秘匿検索の検索結果の正当性を検証でき、かつ検索結果の改ざんを防止することを目的とする。
 上記で述べた課題を解決するため、本発明の検索システムは、検索対象データと前記検索対象データの正当性の検証情報であるタグが設定される配列要素を有する索引データとを記憶する検索装置と、キーワードと、前記検索対象データのデータ名及び前記索引データに対応付けるラベルとに基づいて、前記索引データのいずれかの配列要素を指定する検索要求データを生成する検索要求データ生成部と、前記検索要求データ生成部により生成された前記検索要求データを前記検索装置に送信し、前記検索要求データにより指定される前記配列要素に設定されたデータ名の検索対象データと前記タグとを含んだ検索結果データを受信する検索結果データ受信部と、前記検索結果データ受信部により受信した前記検索結果データに含まれる前記検索対象データと前記タグとの組の正当性を検証するタグ検証部とを備えた検索端末装置とを備えることとしたものである。
 本発明によれば、索引毎に、検索対象データと正当性検証用のタグとを対応付けて記憶し、検索処理において、検索結果の各データに対応するタグが正当か否かを、メッセージ認証を用いて検証することにより、データセンタから返ってきた検索結果が本当に正しい検索結果か検証でき、高い安全性を達成できる。さらに、検索結果の検証では、索引に応じた署名を用いるため、生成した検索結果の署名が他の索引に適用できず、検索結果の改ざんを防止することができる。
実施の形態1における秘匿検索システム100の構成図である。 実施の形態1におけるアクセス端末201の機能構成図である。 実施の形態1におけるデータセンタ301の機能構成図である。 実施の形態1における秘匿検索システム100の初期設定処理(概要)を示すフローチャートである。 実施の形態1における秘匿検索システム100のデータ登録処理(概要)を示すフローチャートである。 実施の形態1における秘匿検索システム100の検索処理(概要)を示すフローチャートである。 実施の形態1における秘匿検索システム100のデータ削除処理(概要)を示すフローチャートである。 実施の形態1における秘匿検索システム100のラベル付き索引削除処理(概要)を示すフローチャートである。 実施の形態1における秘匿検索システム100初期設定処理(具体例)を示すフローチャートである。 実施の形態1における秘匿検索システム100のデータ登録処理(具体例)を示すフローチャートである。 実施の形態1における秘匿検索システム100の検索処理(具体例)を示すフローチャートである。 実施の形態1における秘匿検索システム100のデータ削除処理(具体例)を示すフローチャートである。 実施の形態1における秘匿検索システム100の索引削除処理(具体例)を示すフローチャートである。 検索にヒットするデータのデータ名のリストの一例である。 実施の形態1におけるラベル管理部204の管理テーブルを示す図である。 実施の形態1におけるアクセス端末201およびデータセンタ301のハードウェア資源の一例を示す図である。
実施の形態1.
 索引に対応付けるラベルとメッセージ認証を用いることによって秘匿検索を容易にし、かつ検索結果の検証が可能な秘匿検索システムについて説明する。
 図1は、実施の形態1における秘匿検索システム100の構成図である。
 実施の形態1における秘匿検索システム100の構成について、図1に基づいて説明する。
 秘匿検索システム100は、データセンタ301と複数のアクセス端末201aからmとを備える。
 データセンタ301とアクセス端末201a-mは、社内LAN102やネットワーク101を介して通信を行なう。
 アクセス端末201は、企業内のユーザが利用するPC(パーソナルコンピュータ)である。アクセス端末201は、登録装置、更新装置、削除装置、検索要求装置、検証装置、暗号化装置または復号装置として機能する。
 アクセス端末201は、後述する暗号化データやラベル付き索引を生成してデータセンタ301に保管を依頼する。
 アクセス端末201は、後述するラベル付き検索クエリをデータセンタ301に送信してデータの検索を依頼し、データセンタ301から送られてくるタグを検証し、暗号化データを復号する。
 アクセス端末201は、データセンタ301に対してラベル付き索引の更新、暗号化データの追加登録、暗号化データの削除、またはラベル付き索引の削除を更新情報によって依頼する。
 データセンタ301は、アクセス端末201によって作成された暗号化データやラベル付き索引を保管する大容量の記憶装置を持つとともに、アクセス端末201の更新情報をもとにラベル付き索引などを更新するサーバである。データセンタ301は、暗号化データ保管装置、索引保管装置、索引更新装置または検索装置として機能する。
 データセンタ301は、ラベル付き検索クエリに基づいてラベル付き索引から検索結果情報とタグを得るとともに、検索結果情報が示す暗号化データとタグをアクセス端末201に送信する。
 また、データセンタ301は、ラベル付き索引や暗号化データの削除依頼があれば保管しているラベル付き索引や暗号化データを削除する。 
 データ、ラベル付き索引、ラベル付き検索クエリは、全て暗号化されているため、データセンタ301ではそれらの中身を閲覧することができない。
 また、アクセス端末201によって作成される更新情報は暗号化されるため、データセンタ301は、ラベル付き索引に対してどのような情報の更新がなされたのか知ることはできない。
 アクセス端末201a-mは、検索対象のデータをデータセンタ301に登録する登録端末、または、データセンタ301に対してデータ検索を要求する検索端末として動作するコンピュータである。
 アクセス端末201a-mは、社内LAN102(ネットワークの一例)に接続し、情報を共有する。
 ネットワーク101は、社内LAN102とデータセンタ301とを接続する通信路である。インターネットはネットワーク101の一例である。
 社内LAN102は、企業内に施設された通信路であり、企業内で利用される様々なサーバやパソコンが接続される。なお、複数の建物にオフィスを持つ場合は、ルータや専用線などを介して複雑な通信路構成となる。
 図2は、実施の形態1におけるアクセス端末201の機能構成図である。
 実施の形態1におけるアクセス端末201の機能構成について、図2に基づいて説明する。
 アクセス端末201は、秘密鍵生成部202、秘密鍵管理部203、ラベル管理部204、キーワード設定部205(検索対象データ記憶部の一例)、データ暗号化部206、ラベル付き部分索引生成部207(索引データ生成部の一例)、タグ生成部208、データ削除要求生成部209、索引削除要求生成部210、ラベル付き検索クエリ生成部211(検索要求データ生成部の一例)、端末側データ送受信部212(検索結果データ受信部、検索対象データ登録部の一例)、タグ検証部213、データ復号部214を備える。
 アクセス端末201は、アクセス端末201で使用するデータを記憶する記憶部(記憶装置)(図示省略)を備える。
 秘密鍵生成部202は、データを暗号化するための共通鍵暗号方式の暗号化鍵(復号鍵)、索引を生成するための索引鍵(検索鍵)、メッセージ認証子を生成するための署名鍵(検証鍵)を生成する。なお、暗号化鍵、索引鍵、署名鍵は本秘匿検索システムの秘密鍵であって、データの登録・追加・削除やキーワード検索を行なうユーザ以外には開示しないように厳重に管理する。
 なお、実施の形態では共通鍵暗号方式を用いる場合を例にして説明するが、RSA暗号方式などの公開鍵暗号方式を用いてもよい。公開鍵暗号方式において、暗号化に用いる公開鍵は公にしてもよいが、復号に用いる秘密鍵は厳重に管理する。
 秘密鍵管理部203は、秘密鍵生成部202で生成された暗号化鍵、索引鍵、署名鍵をアクセス端末の記憶装置に記憶する。
 ラベル管理部204は、登録データ、削除データ名、索引削除要求、キーワードと同時に入力されるラベルに基づいて、ラベル付き索引に付けるラベル情報を生成するとともに、入力されたラベルとラベル情報とを一緒に管理する。ラベル、ラベル情報、ラベル付き(部分)索引、ラベル付き検索クエリについては後述する。
 ラベル管理部204は、ラベル付き部分索引生成部207でラベル付き部分索引の生成時に設定されるパラメータをラベル情報と一緒に管理することや、必要に応じてデータ削除要求生成部209や削除要求生成部210から送られてくるパラメータ更新情報に基づきパラメータを更新する。パラメータについては後述する。
 ラベル管理部204は、ラベル付き部分索引生成時、または更新時に、キーワード設定部205で生成されるキーワードをラベル情報と一緒に管理する。
 ラベルやラベル情報は厳重に管理する必要はない。例えば、ラベル付き部分索引生成部207で生成されるラベル付き部分索引やラベル付き検索クエリ生成部211で作成されるラベル付き検索クエリは、ラベルやラベル情報を知っていても秘密鍵を知らなければ誰にも作成することができない。
 ラベル情報は、ビット列や文字列であれば何でもよい。例えば、データ登録やデータ追加時に同時入力するラベル情報は、索引に付けたいラベル名や日付などでもよい。また、データ削除や索引削除時に削除データ名や索引名と同時に入力されるラベル情報は、削除データの検索結果情報が埋め込まれているラベル付き索引のラベルでもよい。検索時にキーワードと同時に入力するラベル情報であれば、検索したいラベル付き索引のラベル名やそのラベルの生成時に用いたラベル情報でもよい。
 ラベル情報は、必ずしも登録データ、削除データ名、索引削除要求、キーワードと同時に入力することを必要とせず、ラベル管理部204が自動的にラベル情報を生成してもよい。例えば、登録データのラベル情報が空であれば、ラベル管理部204が保管しているラベル数に応じてラベル名を自動的に生成し、ラベル付き部分索引を作成してもよい。例えば、現在までにn個のラベルが保管されている場合、次のラベル名を「n+1」とする。また、削除データ名や索引削除要求のラベル情報が空であれば、ラベルの生成時に登録データまたは追加データのデータ名をラベルと一緒に管理し、削除データのデータ名に対応するラベルを自動的に読み出してもよい。また、キーワードのラベル情報が空であれば、今までに作られた全てのラベル付き索引に対するラベル情報を自動的に読み出して、検索を行なってもよい。
 キーワード設定部205は、複数の登録データまたは追加データからキーワードを自動的に抽出するとともに、抽出した各キーワードに対して検索結果情報を作成する。もしくは、キーワードは、登録データまたは追加データから自動的に抽出せず、登録データまたは追加データと同時に各データに対応するキーワードもユーザから入力するようにして、そのデータと対応するキーワードの組み合わせから直接的に検索結果情報を作成してもよい。また、キーワード設定部205は、必要があれば、データの登録・追加時にどのようなキーワードが使われたかを表すキーワード情報をラベル管理部204に送る。
 データ暗号化部206は、秘密鍵管理部203に記憶されている暗号化鍵を用いて、キーワード設定部205から受け取った登録データまたは追加データを暗号化する。
 ラベル付き部分索引生成部207は、秘密鍵管理部203に記憶されている索引鍵とラベル管理部204で管理されているラベル情報を用いて、キーワード設定部205で生成された検索結果情報に基づきラベル付き部分索引を生成する。
 ラベル付き部分索引生成部207は、必要があれば、ラベル付き部分索引の生成時に用いたパラメータをラベル管理部204に送る。
 タグ生成部208は、秘密鍵管理部203に記憶されている署名鍵と、データ暗号化部206から受け取った暗号化データと、ラベル付き部分索引生成部207から受け取ったラベル付き部分索引を用いて、検索結果と暗号化データのペアに関するタグを生成し、このタグが付与されたラベル付き索引を生成する。次に、タグ生成部208は、暗号化データとラベル付き索引を端末側データ送受信部212に送る。
 データ削除要求生成部209は、削除データ名と、必要であればラベル管理部204で管理されているラベルを用いて、データ削除情報を生成する。データ削除情報は、データセンタ301に登録されている暗号化データを削除するための情報である。データ削除要求生成部209は、生成したデータ削除情報を、端末側データ送受信部212に送る。また、データ削除要求生成部209は、必要であればラベル管理部204にパラメータ更新情報を送る。
 索引削除要求生成部210は、索引削除要求と、必要であればラベル管理部204で管理されているラベルを用いて、索引削除情報を生成する。索引削除情報は、データセンタ301に登録されているラベル付き索引および対応する暗号化データを削除するための情報である。索引削除要求生成部210は、生成した索引削除情報を、端末側データ送受信部212に送る。また、索引削除要求生成部210は、必要であればラベル管理部204にパラメータ更新情報を送る。
 ラベル付き検索クエリ生成部211は、キーワードと秘密鍵管理部203に記憶されている索引鍵(検索鍵)とラベル管理部204で管理されているラベルとパラメータ情報とを用いて、検索キーワードに関するラベル付き検索クエリを生成する。ラベル付き検索クエリはユーザが指定したラベル付き索引に対してのみ検索可能な情報であって、指定されていないラベル付き索引に対する検索はできない。つまり、索引と検索クエリとに埋め込まれたラベルが同じであるときに限り、検索が可能な仕組みである。なお、ラベル付き検索クエリから検索キーワードは漏れない。ラベル付き検索クエリ生成部211は、生成したラベル付き検索クエリを、端末側データ送受信部212に送る。また、ラベル付き検索クエリ生成部211は、ラベル付き検索クエリとパラメータ情報とを、タグ検証部213に送る。
 端末側データ送受信部212は、タグ生成部208から送られてくる暗号化データとラベル付き索引と、データ削除要求生成部209から送られてくるデータ削除情報と、索引削除要求生成部210で生成される索引削除情報と、ラベル付き検索クエリ生成部211から送られてくるラベル付き検索クエリとをデータセンタ301へ送信する。また、端末側データ送受信部212は、データセンタ301から暗号化データとタグを受信し、タグ検証部213へ送る。
 タグ検証部213は、ラベル付き検索クエリ生成部211からラベル付き検索クエリとパラメータ情報、端末側データ送受信部212から暗号化データとタグを受け取って、秘密鍵管理部に保管されている署名鍵(検証鍵)を用いて、タグを検証する。もし検証に成功したら、暗号化鍵(復号鍵)と暗号化データをデータ復号部214へ送る。もし検証に失敗したら、ユーザにエラーを返す。
 データ復号部214は、タグ検証部213から受け取った暗号化鍵(復号鍵)と暗号化データを受け取り、暗号化鍵(復号鍵)を用いて暗号化データを復号する。
 図3は、実施の形態1におけるデータセンタ301の機能構成図である。
 実施の形態1におけるデータセンタ301の機能構成について、図3に基づいて説明する。
 データセンタ301は、センタ側データ送受信部302(検索要求データ入力部、検索結果データ出力部の一例)、暗号化データ保管部303(検索対象データ記憶部の一例)、ラベル付き索引保管部304(索引データ記憶部の一例)、検索処理部305(データ検索部の一例)、ラベル付き索引更新部306を備える。また、データセンタ301は、データセンタ301で使用するデータを記憶する記憶部(記憶装置)(図示省略)を備える。
 センタ側データ送受信部302は、アクセス端末201から暗号化データ、ラベル付き索引、データ削除情報、索引削除情報、ラベル付き検索クエリを受信する。また、センタ側データ送受信部302は、検索処理部305の検索によって得られる暗号化データとタグのペアをアクセス端末201に送信する。
 暗号化データ保管部303は、センタ側データ送受信部302から送られてきた暗号化データを記憶装置に記憶する。暗号化データ保管部303は、検索処理部305から(複数の)データ名が送られてきた場合に、記憶装置からそのデータ名に対応した暗号化データを取り出し、その暗号化データを検索処理部305に送る。また、暗号化データ保管部303は、ラベル付き索引更新部306から送られてきた削除データ名に対応する暗号化データを記憶装置から削除する。
 ラベル付き索引保管部304は、センタ側データ送受信部302から送られてきたラベル付き索引を記憶装置に記憶する。ラベル付き索引保管部304は、検索処理部305から索引名を受け取り、その索引名に対応したラベル付き索引を記憶装置から読み出し、読み出したラベル付き索引を検索処理部305に送る。また、ラベル付き索引保管部304は、ラベル付き索引更新部306から索引名を受け取り、その索引名に対応したラベル付き索引を記憶装置から読み出し、読み出したラベル付き索引をラベル付き索引更新部306に送る。また、ラベル付き索引保管部304は、ラベル付き索引更新部306から受け取ったラベル付き更新索引を記憶装置に記憶する。また、ラベル付き索引保管部304は、ラベル付き索引更新部306から削除索引名を受け取り、その索引名に対応したラベル付き索引を記憶装置から削除する。
 検索処理部305は、ラベル付き索引保管部304から送られてきたラベル付き索引を受け取り、ラベル付き索引保管部304に索引名を送る。検索処理部305は、ラベル付き索引保管部304から送られてきたラベル付き索引と、センタ側データ送受信部302から送られてきたラベル付き検索クエリを用いて検索処理を行ない、検索結果情報とタグを得る。なお、検索処理から得られる情報は検索結果情報とタグのみであり、それらの情報から検索キーワードに関する情報は漏洩しない。次に、検索処理部305は、検索結果情報が示すデータ名を暗号化データ保管部303に送り、暗号化データ保管部303から対応する暗号化データを受け取る。検索処理部305は、暗号化データ保管部303から送られてきた暗号化データとそれに対応するタグのペアをセンタ側データ送受信部302に送る。
 ラベル付き索引更新部306は、センタ側データ送受信部302から送られてきたデータ削除情報に基づき、暗号化データ保管部303に削除データ名を送る。また、ラベル付き索引更新部306は、センタ側データ送受信部302から送られてきた索引削除情報に基づき、ラベル付き索引保管部304に削除索引名を送る。
 次に、秘匿検索システム100の処理の概要について説明する。
 図4は、実施の形態1における秘匿検索システム100の初期設定処理(概要)を示すフローチャートである。
 実施の形態1における秘匿検索システム100の初期設定処理(概要)について、図4に基づいて説明する。
 秘匿検索システム100の初期設定処理は、検索対象のデータを登録する登録処理やデータの検索処理を実行する前にアクセス端末201によって実行される。
 ステップS101において、秘密鍵生成部202は、データを暗号化するための共通鍵暗号方式(AES、Camellia(登録商標)など)の暗号化鍵(復号鍵)を生成する。共通鍵暗号方式の暗号化鍵はデータの暗号化および暗号化されたデータの復号に用いられる。秘匿検索システム100で利用する共通鍵暗号方式はここで決めても構わないし、予め決めておいても構わない。以下、S101で選択した共通鍵暗号方式(または、予め決められた共通鍵暗号方式)を単に「共通鍵暗号方式」という。
 ステップS102において、秘密鍵生成部202は、共通鍵暗号方式の暗号化鍵(復号鍵)を生成する。共通鍵暗号方式の暗号化鍵は、データの暗号化および暗号化されたデータの復号に用いられる。
 ステップS103において、秘密鍵生成部202は、ラベル付き索引やラベル付き検索クエリを生成するための索引鍵(検索鍵)を生成する。
 ステップS104において、秘密鍵生成部202は、タグを生成するためのメッセージ認証子方式を選択し、方式の署名鍵(検証鍵)を生成する。なお、メッセージ認証方式は予め決めておいても構わない。
 ステップS105において、秘密鍵管理部203は、S101で生成された暗号化鍵とS102で生成した索引鍵とS103で生成した署名鍵とを記憶装置(記憶部)を用いて記憶する。S105により、秘匿検索システム100の初期設定処理は終了する。
 図5は、実施の形態1における秘匿検索システム100のデータ登録処理(概要)を示すフローチャートである。
 実施の形態1における秘匿検索システム100のデータ登録処理(概要)について、図5に基づいて説明する。
 秘匿検索システム100のデータ登録処理において、検索対象の暗号化データと検索対象のデータを検索するためのラベル付き索引とが生成され、生成された検索対象の暗号化データとラベル付き索引とがデータセンタ301に登録される。
 秘匿検索システム100のデータ登録処理のうち、S201からS211はアクセス端末201によって実行され、S212はデータセンタ301によって実行される。
 ステップS201において、ユーザは、入力装置(キーボード、マウス、記憶装置など)を用いてアクセス端末201に登録データとラベル情報とを指定し、アクセス端末201のキーワード設定部205は指定された登録データとラベル情報とを入力装置から入力する。
 登録データは、検索対象の平文データ(暗号化していないデータ)である。
 ラベル情報は、ラベル付き索引の生成に使用するラベルを生成するための情報(日付、ラベル名、索引名、複数の登録データの共通キーワードなど)であり、文字列、記号列またはビット列などで表される。
 ステップS202において、ラベル管理部204は、S201で入力されたラベル情報に基づいてラベルを生成し、生成したラベルとS201で入力されたラベル情報とを対応付けて記憶装置を用いて記憶する。例えば、ラベル管理部204は、ラベル情報をそのままラベルとして使用し、またはラベル情報として入力された文字列をビット列に変換する。また、ラベル管理部204は、(ラベル情報のビット数が所定値より大きい場合)ラベル情報を入力にして所定のハッシュ関数を演算し、ラベル情報のハッシュ値をラベルとして算出してもよい。また、S201でユーザがラベル情報を指定せず、ラベル管理部204がラベルを自動的に生成(例えば、日付、通し番号、乱数値などを使用)してもよい。
 ステップS203において、キーワード設定部205は、S201で入力された登録データに関連付ける1つ以上のキーワードを生成する。
 例えば、キーワード設定部205は、登録データからキーワード(例えば、所定の名詞)を抽出する。また、ユーザがアクセス端末201にキーワードを指定してもよいし、予め決定されたデータ(またはデータ名)とキーワードとを記憶しておいてもよい。
 ステップS204において、キーワード設定部205は、S203で生成したキーワード別に検索結果情報を生成する。検索結果情報は、登録データのデータ名を示す情報である(例えば、図14参照)。
 ステップS205において、キーワード設定部205は、S203で生成したキーワードの情報をラベル情報に対応付けてラベル管理部204に記憶する。なお、このキーワード情報は、検索処理時の補助情報として用いること(例えば、検索時にキーワードそのものを入力せず、あるリストから選択するなど)を想定しており、必ずしも記憶する必要はない。
 ステップS206において、データ暗号化部206は、秘密鍵管理部203に記憶されている暗号化鍵を用いて、S201で入力された登録データを暗号化して暗号化データを生成する。
 ステップS207において、ラベル付き部分索引生成部207は、秘密鍵管理部203に記憶されている索引鍵とS202で生成されたラベルとを用いて、S204で生成された検索結果情報を暗号化してラベル付き部分索引を生成する。
 ステップS208において、ラベル付き部分索引生成部207は、S206で使用したパラメータ(例えば、後述のネーム集合)をラベル情報に対応付けてラベル管理部204に記憶する。
 ステップS209において、タグ生成部208は、秘密鍵管理部203に記憶されている署名鍵を用いて、S206で生成された暗号化データとS207で生成されたラベル付き部分索引のペアに対して署名鍵を用いてタグを生成し、ラベル付き索引を生成する。
 ステップS210において、端末側データ送受信部212は、S206で生成された暗号化データとS209で生成されたラベル付き索引とをデータセンタ301に送信する。
 ステップS210において、データセンタ301のセンタ側データ送受信部302は、S210で送信された各暗号化データとラベル付き索引とを受信する。その後、暗号化データ保管部303は、各暗号化データを記憶装置を用いて記憶し、ラベル付き索引保管部304は、ラベル付き索引を記憶装置を用いて記憶する。
 S211により、秘匿検索システム100のデータ登録処理は終了する。
 登録データおよびラベル付き索引が暗号化されるため、登録データおよびキーワードは秘匿される。
 なお、データの追加登録を行なうときは、上記と同様な手順を行なうことで達成できる。
 図6は、実施の形態1における秘匿検索システム100の検索処理(概要)を示すフローチャートである。
 実施の形態1における秘匿検索システム100の検索処理(概要)について、図6に基づいて説明する。
 秘匿検索システム100の検索処理のうち、S301からS304、およびS309からS311は、アクセス端末201によって実行され、S305からS308は、データセンタ301によって実行される。
 ステップS301において、ユーザは、入力装置を用いてアクセス端末201に検索キーワードとラベル情報とを指定し、アクセス端末201のラベル付き検索クエリ生成部211は、指定された検索キーワードとラベル情報とを入力装置から入力する。
 ステップS302において、ラベル管理部204は、S301で入力されたラベル情報と対応付けられたラベルなどのパラメータを読み出す。ただし、S301でユーザがラベルを指定してもよい。
 ステップS303において、ラベル付き検索クエリ生成部211は、秘密鍵管理部203に記憶されている索引鍵とS302で読み出されたラベルとを用いて、S301で入力された検索キーワードを暗号化してラベル付き検索クエリを生成する。
 ラベル付き検索クエリは、ラベルを用いて生成する検索要求データである。実施の形態において、ラベル付き検索クエリは、ラベル付き索引に含まれる少なくともいずれかの検索結果情報を指定する。また、ラベル付き検索クエリは、検索を実施するラベル付き索引の索引名を含む。
 ステップS304において、端末側データ送受信部212は、S303で生成されたラベル付き検索クエリをデータセンタ301に送信する。
 ステップS305において、データセンタ301のセンタ側データ送受信部302は、S304で送信されたラベル付き検索クエリを受信し、検索処理部305は、受信されたラベル付き検索クエリに基づいてラベル付き索引をラベル付き索引保管部304から読み出す。ただし、検索処理部305は、ラベル付き索引保管部304に記憶されている全てのラベル付き索引を読み出しても構わない。
 ステップS306において、検索処理部305は、S305で受信されたラベル付き検索クエリに基づいてS305で読み出したラベル付き索引から検索結果情報(データ名)とタグを取得する。
 ステップS307において、検索処理部305は、S306で取得した検索結果情報に含まれるデータ名で識別される暗号化データを暗号化データ保管部303から読み出す。
 ステップS308において、センタ側データ送受信部302は、S307で読み出された暗号化データとS306で取得した暗号化データに対応するタグとをアクセス端末201に送信する。
 ステップS309において、アクセス端末201の端末側データ送受信部212は、S308で送信された暗号化データとタグとを受信する。
 その後、データ検証部213は、秘密鍵管理部203に記憶されている署名鍵とS302で読み出されたパラメータとS303で生成されたラベル付き検索クエリと受信された暗号化データとを用いて、受信されたタグを検証する。もし検証結果が受理と判定された場合はステップS310に移る。もし検証結果が拒否と判定された場合はステップS311に移る。
 ステップS310において、データ復号部214は、受信された暗号化データを秘密鍵管理部203に記憶されている暗号化鍵を用いて復号し、復号して得られる平文データを出力装置(ディスプレイ、プリンタなど)に出力する。
 ステップS311において、タグ検証部214は、エラーが起きていることを示す情報を出力装置(ディスプレイ、プリンタなど)に出力する。
 S310またはS311により、秘匿検索システム100の検索処理は終了する。
 図7は、実施の形態1における秘匿検索システム100のデータ削除処理(概要)を示すフローチャートである。
 実施の形態1における秘匿検索システム100のデータ削除処理(概要)について、図7に基づいて説明する。
 秘匿検索システム100のデータ削除処理は、一部の登録データをデータセンタ301から削除する処理である。
 秘匿検索システム100のデータ削除処理のうち、S401からS405は、アクセス端末201によって実行され、S406からS409は、データセンタ301によって実行される。
 ステップS401において、ユーザは、入力装置を用いてアクセス端末201に削除データ名とラベル情報とを指定し、アクセス端末201のデータ削除要求生成部209は削除データ名を入力装置から入力する。
 ステップS402において、ラベル管理部204は、S401で入力されたラベル情報と対応付けられたラベルと索引名などのパラメータを読み出す。ただし、S401でユーザがラベルを指定してもよい。
 ステップS403において、データ削除要求生成部209は、S401で入力された削除データ名とS402で読み出したパラメータから、ラベルと索引名とを含んだデータ削除情報を生成する。
 ステップS404において、データ削除要求生成部209は、S403で作成したデータ削除情報に基づきパラメータ更新情報を生成する。その後、ラベル管理部204は、生成されたパラメータ更新情報に基づいて保管されているパラメータ情報を更新する。
 ステップS405において、端末側データ送受信部212は、S402で生成されたデータ削除情報をデータセンタ301に送信する。
 ステップS406において、センタ側データ送受信部302は、S405で送信されたデータ削除情報を受信する。ラベル付き索引更新部306は、受信したデータ削除情報に基づいてラベル付き更新保管部304からラベル付き索引を読み出す。
 ステップS407において、ラベル付き索引更新部306は、S406で読み出したラベル付き索引を、S406で受信した削除要求情報に基づいて更新する。
 ステップS408において、ラベル付き索引保管部304は、S407で更新したラベル付き索引を保管する。
 ステップS409において、暗号化データ保管部303は、S406で受信した削除要求情報に基づいて暗号化データを削除する。S409により、秘匿検索システム100のデータ削除処理は終了する。
 図8は、実施の形態1における秘匿検索システム100のラベル付き索引削除処理(概要)を示すフローチャートである。
 実施の形態1における秘匿検索システム100のラベル付き索引削除処理(概要)について、図8に基づいて説明する。
 秘匿検索システム100の索引削除処理は、一部のラベル付き索引をデータセンタ301から削除する処理である。
 秘匿検索システム100のラベル付き索引削除処理のうち、S501からS505はアクセス端末201によって実行され、S506はデータセンタ301によって実行される。
 ステップS501において、ユーザは、入力装置を用いてアクセス端末201に索引削除を要求し、アクセス端末201の索引削除要求生成部210は、索引削除要求を入力装置から入力する。
 ステップS502において、ラベル管理部204は、S501で入力されたラベル情報に対応付けられたラベルと削除索引名などのパラメータを読み出す。ただし、S501でユーザがラベルを指定してもよい。
 ステップS503において、索引削除要求生成部210は、S501で入力された索引削除要求とS502で読み出したパラメータから、ラベルと削除索引名とを含んだ索引削除情報を生成する。
 ステップS504において、索引削除要求生成部210は、S503で作成した索引削除情報に基づきパラメータ更新情報を生成する。その後、ラベル管理部204は、生成されたパラメータ更新情報に基づいて保管されているパラメータ情報を更新する。
 ステップS505において、端末側データ送受信部212は、S503で生成された索引削除情報をデータセンタ301に送信する。
 ステップS506において、センタ側データ送受信部302は、S505で送信された索引削除情報を受信する。ラベル付き索引更新部306は、受信した索引削除情報から削除索引名を読み出し、ラベル付き索引保管部304からラベル付き索引を読み出して記憶装置から削除する。また、ラベル付き索引更新部306は、読み出したラベル付き索引から削除データ名を読み出し、読み出した削除データ名で識別される暗号化データを暗号化データ保管部303から削除する。S506により、秘匿検索システム100のラベル付き索引削除処理は終了する。
 なお、データ削除処理(図7)と索引削除処理(図8)とは同時に実行しても構わない。例えば、削除要求情報に削除データ名と削除索引名との両方を含めることも可能である。
 また、図4から図8の各処理は、フローチャート通りの処理でなくても構わない。例えば、フローチャートが示す処理順序を変更しても構わない。
 次に、秘匿検索システム100の処理の詳細(具体例)について説明する。
 まず、以下の説明で使用する項目や記号の一部について説明する。
 データDiおよびその暗号化データCのデータ名を「id」と記す。ただし、データ名idは単なる識別子であり、データDの中身を表すものではない。つまり、データ名idによってデータDiの内容は知得されないものとする。
 データ名idのビット長をxとする。もし、データ名idのビット長がxより短い場合、例えば0をパディングすることでデータ名idをxビットにする。
 ラベルlabelの(最大の)ビット長をyとし、キーワードwの(最大の)ビット長をzとする。
 暗号化鍵EKのビット長をk、索引鍵IKのビット長をk、署名鍵SKのビット長をkとする。
 共通鍵暗号方式の暗号化関数Encは、kビットの鍵EKとビット長がMのデータとを入力値として、ビット長がMのデータを出力する。共通鍵暗号方式の復号関数Decは、kビットの鍵EKとビット長がMのデータ(暗号化データ)とを入力値として、ビット長がMのデータ(平文)を出力する。
 関数πは、入力値に基づいて入力値と同じサイズの乱数値を算出するためのものである。関数πは「疑似ランダム置換」ともいう。ただし、入力値が同じであれば、出力値はいつも同じである。つまり、関数πは、いわゆる、確定的な関数である。
 関数πは、kビットの整数(鍵)と(1+y+z+v)ビットの整数の2つとを入力値として、(1+y+z+v)ビットの整数を返す。すなわち、関数π(K,n)は、kビットの索引鍵IKと0から21+y+z+v -1の整数とを入力にして、0から21+y+z+v -1の整数のうちランダムな値を出力する。ただし、vは整数で、1つのラベル付き索引に含めることが可能な最大登録データ数に関するパラメータである。
 メッセージ認証子方式の署名関数MACは、kビットの鍵SKと任意ビット長のデータとを入力値として、ビット長がTのデータを出力する。メッセージ認証子方式の検証関数Verifyは、kビットの鍵SKと任意ビット長のデータとを入力値として、0か1の値を出力する。
 ラベル付き索引Iは、配列構造のデータであり、1つ以上の配列要素を有する。ラベル付き索引Iの1つの配列要素に設定できる値の最大サイズは(y+T)ビットである。
 ラベル付き索引Iの配列要素I[a]を識別する値aを「アドレス」という。
 ラベル付き索引Iの配列要素の最大数は、(1+x+y+M)ビットで表すことができる数である。
 ラベル付き索引Iの配列要素のうち、使用される配列要素(値が設定される配列要素)にだけ記憶領域を確保する。つまり、ラベル付き索引Iのアドレス空間は非常に大きなサイズ(指数サイズ)であるが、多項式程度のアドレス空間しか利用せず、かつ利用していないアドレス空間には何も設定しない。このため、ラベル付き索引Iの実質的なサイズは現実的サイズ(多項式サイズ)に抑えられる。
 「#X」はXの要素数を意味し、「X∥Y」はビット列Xとビット列Yとの結合(連結)を意味する。その他の記号については、一般的に使用される数学の記号と同様の意味である。
 図9は、実施の形態1における秘匿検索システム100初期設定処理(具体例)を示すフローチャートである。
 実施の形態1における秘匿検索システム100の初期設定処理(具体例)について、図9に基づいて説明する。
 なお、図9のフローチャートは、図4に示したフローチャートに対応している。
 S601はS101に対応し、S602はS102に対応し、S603はS103に対応し、S604はS104に対応する処理である。S601からS604の処理にS101からS104で説明した事項を適用しても構わない。
 ステップS601において、秘密鍵生成部202は、共通鍵暗号方式のkビットの暗号化鍵EKをランダムに生成する。kは任意の整数値である。
 ステップS602において、秘密鍵生成部202は、kビットの乱数IKを生成する。kは任意の整数値である。以下、ステップS602で生成した乱数Kを「索引鍵IK」という。
 ステップS603において、秘密鍵生成部202は、メッセージ認証方式のkビットの署名鍵SKをランダムに生成する。kは任意の整数値である。
 ステップS604において、秘密鍵管理部203は、S601で生成された暗号化鍵EKとS602で生成された索引鍵KとS603で生成された署名鍵SKとを記憶する。S604により、秘匿検索システム100の初期化処理(具体例)は終了する。
 図10は、実施の形態1における秘匿検索システム100のデータ登録処理(具体例)を示すフローチャートである。
 実施の形態1における秘匿検索システム100のデータ登録処理(具体例)について、図10に基づいて説明する。
 図10のフローチャートは図5に示したフローチャートに対応している。
 S701はS201に対応し、S702はS202に対応し、S703はS203とS205に対応し、S704はS204に対応し、S705はS206に対応し、S706とS907はS207に対応し、S708はS208に対応し、S709とS710はS209とS210とに対応し、S711はS211とS212とに対応する処理である。S701からS711の処理にS201からS212で説明した事項を適用しても構わない。
 ステップS701において、ユーザは、入力装置を用いてアクセス端末201にデータ集合D={D,…,D}とラベル情報dとを指定し、アクセス端末201のキーワード設定部205は指定されたデータ集合Dとラベル情報dとを入力装置から入力する。
 データ集合Dは、1つ以上の登録データD(平文データ)を含む(添え字iは1以上の整数。以下同様)。以下、データ集合D内のデータ数を「n」とする。
 ステップS702において、ラベル管理部204は、S701で入力されたラベル情報dに基づいてラベルlabelと索引名idとを生成し、生成したラベルlabelと索引名idとラベル情報dとを対応付けて記憶する。
 ステップS703において、キーワード設定部205は、S701で入力されたデータ集合Dに関連するキーワード集合W={w,…,w}を生成し、生成したキーワード集合Wをラベル情報dに対応付けてラベル管理部204に記憶する。キーワード集合Wの生成方法は、S203と同様である。
 キーワード集合Wは、1つ以上のキーワードwを含む。以下、キーワード集合W内のキーワード数を「q」とする。キーワードwは、データ集合Dの少なくともいずれかの登録データDに関連する(添え字jは1以上の整数。以下同様)。
 ステップS704において、キーワード設定部205は、S703で生成したキーワード集合Wに含まれるキーワードw別に検索結果情報(w,D(w))を生成する。検索結果情報のD(w)は、キーワードwに関連する1つ以上のデータDのデータ名idを含み、{ids(1),…,ids(m)}のような集合で表わされる。ただし、mは1以上の整数で、またs(1),…, s(m)は、1からnの互いに異なる整数である。
 ステップS705において、データ暗号化部206は、秘密鍵管理部203から暗号化鍵EKを読み出す。データ暗号化部206は、暗号化関数Encと秘密鍵管理部203から読み出した暗号化鍵EKとを用いて、S701で入力されたデータ集合D={D,…,D}を暗号化する。以下、登録データDを暗号化した暗号化データを「C」と記す。データ集合Dの暗号化は、1≦i≦nに対して、C=Enc(EK,D)で表される。
 ステップS706において、ラベル付き部分索引生成部207は、秘密鍵管理部203から索引鍵IKを読み出す。
 ラベル付き部分索引生成部207は、S704で生成された各w ∈ Wに対する検索結果情報の D(w) ={ids(1), …,ids(m)}から得られる集合{s(1),…, s(m)}に基づき、秘密鍵管理部203から読み出した索引鍵IKとS702で生成したラベルlabelとを用いて、ラベル付き索引Iを、I [π(IK, 0∥label∥w∥s(i)) ] = (ids(i), ⊥)(1 ≦ i ≦ m)、及びI [π(IK, 1∥label∥w∥s(j)) ] = (dummy, ⊥) (1 ≦ j ≦ m)と設定する。
 ただし、dummyは、ビット長がxの特殊な文字列で、対応するデータはないといったことを表す文字列である。後述する検索処理の中で検索結果としてdummyと返ってきた場合は、検索にヒットするデータはなかったということを意味する。
 また、⊥は、ビット長がCの特殊な記号で、後のステップでこの記号はある値に置き換えられる。このため、⊥が入ったこのラベル付き索引Iをラベル付き部分索引と呼ぶ。
 ステップS707において、ラベル付き部分索引生成部207は、S705で生成された各w ∈ Wに対する検索結果情報の D(w) ={ids(1),…,ids(m)}から得られる集合{ids(1),…,ids(m)}=N\{ids(1),…,ids(m)}に基づき、秘密鍵管理部203から読み出した索引鍵IKと、S702で生成したラベルlabelとを用いて、ラベル付き索引Iを、I [π(IK, 0∥label∥w∥s(j)) ] = (dummy, ⊥)(m+1≦j≦n)、及びI [π(IK, 1∥label∥w∥s(i)) ] = (ids(i), ⊥) (m+1≦i≦n)と設定する。
 ただし、s(m+1), …, s(n)は、互いに異なる1からnの整数で、またs(1), …, s(m)と異なる値をとる。また、Nは、集合{1, …, n}を意味し、ネーム集合と呼ぶ。また、「\」は、集合に対する演算子であり、左項の集合の要素から右項の集合の要素を除く演算を行なう。
 ステップS708において、ラベル付き部分索引生成部207は、データ集合D内のデータ数nに対するネーム集合N={1, …, n}をラベル管理部204に記憶されているラベル情報dに対応付けて記憶する。
 ステップS709において、タグ生成部208は、秘密鍵管理部203から署名鍵SKを読み出す。次に、タグ生成部208は、秘密鍵管理部203から読み出した署名鍵SKとS707で生成されたラベル付き部分索引Iを用いて、各I[addr] = (id, ⊥)に対して、tag = MAC(SK, addr, C) としてI[addr] = (id, tag)と更新する。
 ステップS710において、タグ生成部208は、秘密鍵管理部203から読み出した署名鍵SKとS709で更新されたラベル付き部分索引Iを用いて、各I[addr] = (dummy, ⊥)に対して、tag = MAC(SK, addr, C) としてI[addr] = (dummy, tag)と更新する。このとき、この更新されたラベル付き部分索引Iをラベル付き索引と呼ぶ。
 ステップS711において、端末側データ送受信部212は、S906で生成された暗号化データ集合C={C,…,C}と、S707からS710で生成されたラベル付き索引Iとをデータセンタ301に送信する。
 データセンタ301のセンタ側データ送受信部302は、暗号化データ集合Cとラベル付き索引Iとを受信し、暗号化データ保管部303は暗号化データ集合Cを記憶し、ラベル付き索引保管部304はラベル付き索引Iを記憶する。ラベル付き索引名は「id」である。
 図11は、実施の形態1における秘匿検索システム100の検索処理(具体例)を示すフローチャートである。
 実施の形態1における秘匿検索システム100の検索処理(具体例)について、図11に基づいて説明する。
 図11のフローチャートは、図6に示したフローチャートに対応している。
 S801はS301に対応し、S802はS302に対応し、S803はS303に対応し、S804はS304に対応し、S805はS305とS306とに対応し、S806はS307とS308とに対応し、S808はS309に対応し、S809はS310に対応し、S810はS311に対応する処理である。S801からS810の処理にS301からS311で説明した事項を適用しても構わない。
 ステップS801において、ユーザは、入力装置を用いてアクセス端末201に検索キーワードwとラベル情報d’とを指定し、アクセス端末201のラベル付き検索クエリ生成部211は、指定されたキーワードwとラベル情報d’とを入力装置から入力する。
 ステップS802において、ラベル管理部204は、S801で入力されたラベル情報dに対応付けられたパラメータのラベルlabelとラベル付き索引名idI’とネーム集合N’とを読み出す。
 ステップS803において、ラベル付き検索クエリ生成部211は、秘密鍵管理部203から索引鍵IKを読み出す。次に、ラベル付き検索クエリ生成部211は、秘密鍵管理部203から読み出した索引鍵IKと、S802で読み出したラベルlabelとネーム集合N’とを用いて、以下のアドレスaを算出する。
 アドレスaは、N’={n, …, n}に対して、a=π(IK,0∥label’∥w∥n)で表される。アドレスaは、ラベル付き索引I’の配列要素を指定する値である。
 ステップS804において、ラベル付き検索クエリ生成部211は、S803で算出したa=(a,…,a)とS802で読み出した索引名idI’とを含んだ検索クエリQ(ラベル付き検索クエリ)を生成し、Qをデータセンタ301に送信する。
 ステップS805において、データセンタ301のセンタ側データ送受信部302は、S804で送信されたラベル付き検索クエリQを受信する。
 検索処理部305は、ラベル付き索引保管部304からラベル付き検索クエリQに含まれている索引名idI’で識別されるラベル付き索引I’を読み出す。
 検索処理部305は、読み出したラベル付き索引I’と検索クエリQ=(a, …, a)に基づいて、I’[a]から (Id, Tag) (1≦i≦k)のペアを抽出する。
 ステップS806において、検索処理部305は、S805で抽出した各データ名Id, …, Idで識別される暗号化データC’, …, C’を暗号化データ保管部303から読み出し、読み出した各暗号化データC’とS805で抽出したTagt(i)を含んだ検索結果データ(Ct(i)’, Tagt(i) )(1≦i≦k)を生成する。ただし、ある整数jでIdがdummyの場合は、C’をdummyとする。
 センタ側データ送受信部302は、検索処理部305によって生成された検索結果データをアクセス端末201に送信する。
 ステップS807において、アクセス端末201の端末側データ送受信部212は、S806で生成された検索結果データを受信する。
 タグ検証部213は、秘密鍵管理部203から署名鍵を読み出し、S804で生成されたラベル付き検索クエリQと受信した検索結果データ(C’, Tag)とを用いて、1 ≦ i ≦ k に対してb=Verify(SK,a,C’,Tag)を計算する。
 ステップS808において、タグ検証部213は、S807で計算した全てのbiが1(受理)であるかを判定する。もし全てのbiが1であれば、S809へ進む。もしそうでなければ(すわなち、あるbiで0となっていれば)、S810へ進む。
 ステップS809において、データ復号部214は、復号関数Decと秘密鍵管理部203から読み出した暗号化鍵EKとを用いて、受信された検索結果データに含まれる各暗号化データC’を復号する。暗号化データC’を復号することにより、暗号化前のデータD’が得られる。なお、暗号化データC’の復号は、D’=Dec(EK,C’)で表される。データ復号部212は、復号により得られた各データD’を出力装置に出力する。ただし、ある整数jでC’がdummyの場合は何もしない。
 ステップS810において、タグ検証部213は、エラーが起きていることを出力装置に出力する。
 S809またはS810により、秘匿検索システム100の検索処理(具体例)は終了する。
 ただし、S805において、ユーザから指定されたラベル付き索引Iだけを検索する代わりに、データセンタ301に保管されている全てのラベル付き索引Iを検索してもよい。
 この場合、S802において、ラベル管理部204は、全てのラベル情報に対応するラベルと索引名とネーム集合を読み出す。S803において、ラベル付き検索クエリ生成部211は、全てのラベル情報に対するアドレスを生成する。S805において、検索処理部305は、読み出した全てのラベル付き索引と検索クエリ検索を行なう。S808において、タグ検証部213は、全ての検証が受理するかを判定する。
 図12は、実施の形態1における秘匿検索システム100のデータ削除処理(具体例)を示すフローチャートである。
 実施の形態1における秘匿検索システム100のデータ削除処理(具体例)について、図12に基づいて説明する。
 図12のフローチャートは図7に示したフローチャートに対応している。
 S901はS401に対応し、S902はS402に対応し、S903はS404に対応し、S904はS403とS405とに対応し、S905はS406からS409に対応する処理である。S901からS905の処理にS401からS409で説明した事項を適用しても構わない。
 ステップS901において、ユーザは、入力装置を用いてアクセス端末201に削除データ名id’’u(1),…, id’’u(l)とラベル情報d’’とを入力し、アクセス端末201のデータ削除要求生成部209は、指定された削除データ名id’’u(1),…, id’’u(l)とラベル情報d’’とを入力装置から入力する。
 ステップS902において、ラベル管理部204は、S901で入力されたラベル情報d’’に対応付けられた索引名idI’’とネーム集合N’’とを読み出す。
 ステップS903において、データ削除要求生成部209は、削除データ名id’’u(1), …, id’’u(l)から、S902で読み出したネーム集合N’’をN’’=N’’\ {u(1), …, u(l)}として更新する。
 ラベル管理部204は、ラベル情報d’’に対応付けて更新したネーム集合N’’を保管する。
 ステップS904において、データ削除要求生成部209は、削除データ名id’’u(1), …, id’’u(l)と索引名idI’’とを含むデータ削除情報を生成する。
 端末側データ送受信部213は、生成したデータ削除情報をデータセンタ301に送信する。
 ステップS905において、データセンタ301のセンタ側データ送受信部302は、S904で送信されたデータ削除情報を受信する。
 ラベル付き索引更新部306は、受信されたデータ削除情報に含まれる削除データ名id’’u(1), …, id’’u(l)を読み出し、その削除データ名で識別される暗号化データ{C’’u(1), …, C’’u(l)}を暗号化データ保管部303から削除する。S905により、ラベル付き索引のデータ削除処理(具体例)は終了する。
 図13は、実施の形態1における秘匿検索システム100の索引削除処理(具体例)を示すフローチャートである。
 実施の形態1における秘匿検索システム100の索引削除処理(具体例)について、図13に基づいて説明する。
 図13のフローチャートは図8に示したフローチャートに対応している。
 S1001はS501に対応し、S1002はS502に対応し、S1003はS504に対応し、S1004はS503とS505とに対応し、S1005とS1006はS506に対応する処理である。S1001からS1006の処理にS501からS506で説明した事項を適用しても構わない。
 ステップS1001において、ユーザは、入力装置を用いてアクセス端末201に索引削除要求とラベル情報d’’’とを入力とを指定し、アクセス端末201のデータ削除要求生成部209は、指定された索引削除要求とラベル情報d’’’とを入力装置から入力する。
 ステップS1002において、ラベル管理部204は、S1001で入力されたラベル情報d’’’に対応付けられた索引名idI’’’を読み出す。
 ステップS1003において、ラベル管理部204は、ラベル情報d’’’とそれに対応付けられて保管されているパラメータ情報を削除する。
 ステップS1004において、索引削除要求生成部210は、索引名idI’’’を含む索引削除情報を生成する。
 端末側データ送受信部213は、生成した索引削除情報をデータセンタ301に送信する。
 ステップS1005において、データセンタ301のセンタ側データ送受信部302は、S1004で送信された索引削除情報を受信する。
 ラベル付き索引更新部306は、索引削除情報から索引名idI’’’を読み出し、索引名idI’’’で識別されるラベル付き索引I’’’をラベル付き索引保管部304から読み出し、I’’’に含まれている全てのデータ名id’’’を読み出して、データ名id’’’で識別される暗号化データC’’’を暗号化データ保管部303から削除する。
 ステップS1006において、ラベル付き索引更新部306は、S1005で読み出したラベル付き索引I’’’をラベル付き索引保管部304から削除する。S1006により、ラベル付き索引の削除更新処理(具体例)は終了する。
 図15は、実施の形態1におけるラベル管理部204の管理テーブルを示す図である。例えば、ラベル管理部204は、図15に示すような管理テーブルで各種パラメータ情報を管理する。
 図15に示す管理テーブルは、ラベル情報にパラメータ情報を対応付けている。具体的なパラメータとしては、ラベル、索引名、ネーム集合、キーワード集合であり、ラベル情報と対応付けて管理されている。
 図16は、実施の形態1におけるアクセス端末201およびデータセンタ301のハードウェア資源の一例を示す図である。
 図16において、アクセス端末201およびデータセンタ301(コンピュータの一例)は、CPU901(Central Processing Unit)を備えている。CPU901は、バス902を介してROM903、RAM904、通信ボード905、ディスプレイ911(表示装置)、キーボード912、マウス913、ドライブ914、磁気ディスク装置920などのハードウェアデバイスと接続され、これらのハードウェアデバイスを制御する。ドライブ914は、FD(Flexible Disk Drive)、CD(Compact Disc)、DVD(Digital Versatile Disc)などの記憶媒体を読み書きする装置である。
 ROM903、RAM904、磁気ディスク装置920およびドライブ914は記憶装置の一例である。キーボード912、マウス913および通信ボード905は入力装置の一例である。ディスプレイ911および通信ボード905は出力装置の一例である。
 通信ボード905は、有線または無線で、LAN(Local Area Network)、インターネット、電話回線などの通信網に接続している。
 磁気ディスク装置920には、OS921(オペレーティングシステム)、プログラム群922、ファイル群923が記憶されている。
 プログラム群922には、実施の形態において「~部」として説明する機能を実行するプログラムが含まれる。プログラム(例えば、データ検索プログラム、データ登録プログラム)は、CPU901により読み出され実行される。すなわち、プログラムは、「~部」としてコンピュータを機能させるものであり、また「~部」の手順や方法をコンピュータに実行させるものである。
 ファイル群923には、実施の形態において説明する「~部」で使用される各種データ(入力、出力、判定結果、計算結果、処理結果など)が含まれる。
 実施の形態において構成図およびフローチャートに含まれている矢印は主としてデータや信号の入出力を示す。
 フローチャートなどに基づいて説明する実施の形態の処理は、CPU901、記憶装置、入力装置、出力装置などのハードウェアを用いて実行される。
 実施の形態において「~部」として説明するものは「~回路」、「~装置」、「~機器」であってもよく、また「~ステップ」、「~手順」、「~処理」であってもよい。すなわち、「~部」として説明するものは、ファームウェア、ソフトウェア、ハードウェアまたはこれらの組み合わせのいずれで実装されても構わない。
 実施の形態1における秘匿検索システム100は、例えば、以下のような効果を奏する。
 秘匿検索システム100は、検索処理において、データセンタ301から返ってきた検索結果が本当に正しい検索結果か検証できる。つまり、データセンタの管理者による不正な検索結果の改ざんや、マルウェアなどに感染することによって検索結果が改ざんされたとしても、そのことを検知できるため、秘匿検索システム100は高い安全性を達成できる。さらに、検索結果の検証では、索引に応じた署名を用いるため、生成した検索結果の署名が他の索引に適用できず、検索結果の改ざんを防止することができる。
 秘匿検索システム100は、索引数が増えたとしても秘密鍵の数が増えず、かつ共通鍵暗号をベースとして構成されているため、データ登録処理やキーワード検索処理が効率的に実施できる。
 秘匿検索システム100は、キーワードを暗号化したまま検索できるため、検索したキーワード情報が漏れず、高い安全性を達成できる。
 秘匿検索システム100は、データを追加・削除するためにラベル付き索引を更新する場合、すでに登録されているデータに関する情報を一切復元(復号)せずにラベル付き索引を更新できるため、効率的でありかつ安全性が高い。
 特許文献2および非特許文献1から7では、登録・追加データに関連付けることが可能なキーワード、および検索できるキーワードが予め決められている。一方で、秘匿検索システム100では、そのようなキーワードの制限がないため、柔軟にキーワードを関連付けることができる。
100 秘匿検索システム、101 ネットワーク、102 社内LAN、201 アクセス端末、202 秘密鍵生成部、203 秘密鍵管理部、204 ラベル管理部、205 キーワード設定部、206 データ暗号化部、207 ラベル付き部分索引生成部、208 タグ生成部、209 データ削除要求生成部、210 索引削除要求生成部、211 ラベル付き検索クエリ生成部、212 端末側データ送受信部、213 タグ検証部、301 データセンタ、302 センタ側データ送受信部、303 暗号化データ保管部、304 ラベル付き索引保管部、305 検索処理部、306 ラベル付き索引更新部、901 CPU、902 バス、903 ROM、904 RAM、905 通信ボード、911 ディスプレイ、912 キーボード、913 マウス、914 ドライブ、920 磁気ディスク装置、921 OS、922 プログラム群、923 ファイル群。

Claims (12)

  1. 検索対象データと前記検索対象データの正当性の検証情報であるタグが設定される配列要素を有する索引データとを記憶する検索装置と、
     キーワードと、前記検索対象データのデータ名及び前記索引データに対応付けるラベルとに基づいて、前記索引データのいずれかの配列要素を指定する検索要求データを生成する検索要求データ生成部と、
     前記検索要求データ生成部により生成された前記検索要求データを前記検索装置に送信し、前記検索要求データにより指定される前記配列要素に設定されたデータ名の検索対象データと前記タグとを含んだ検索結果データを受信する検索結果データ受信部と、
     前記検索結果データ受信部により受信した前記検索結果データに含まれる前記検索対象データと前記タグとの組の正当性を検証するタグ検証部とを備えた検索端末装置と
    を備えた検索システム。
  2. 前記検索端末装置の前記タグ検証部は、前記キーワードと前記索引データに対応付けられた前記ラベルとの組に対するメッセージ認証により生成された前記タグを検証する請求項1記載の検索システム。
  3. 前記検索装置は、
     検索対象データを記憶する検索対象データ記憶部と、
     配列要素を有する索引データであって、前記索引データに対応付けるラベルと前記検索対象データに関連するキーワードとに基づいて定まる配列要素に、前記キーワードに関連する検索対象データのデータ名と前記検索対象データの正当性の検証情報であるタグとが設定された索引データを記憶する索引データ記憶部と、
     特定のラベルと特定のキーワードとに基づいて定まる配列要素を指定する検索要求データが入力され、前記検索要求データが指定する配列要素から前記データ名と前記タグとを取得し、取得したデータ名の検索対象データを前記検索対象データ記憶部から取得するデータ検索部と、
     前記データ検索部によって取得された前記検索対象データと前記タグとを含んだ検索結果データを出力する検索結果データ出力部と
    を備えた請求項1記載の検索システム。
  4. 前記検索装置の前記索引データ記憶部は、前記キーワードと前記索引データに対応付けられた前記ラベルとの組に対するメッセージ認証により生成された前記タグが前記配列要素に設定された請求項3記載の検索システム。
  5. 前記検索端末装置は、
     検索対象データと、前記検索対象データに関連するキーワードとを記憶する検索対象データ記憶部と、
     配列要素を有する索引データであって、前記索引データに対応付けるラベルと前記キーワードとに基づいて前記検索対象データのデータ名を設定する配列要素を決定し、決定した配列要素に前記検索対象データのデータ名を設定する索引データ生成部と、
     前記検索対象データの正当性の検証情報であるタグを生成し、前記索引データ生成部により前記検索対象データのデータ名が設定された前記配列要素に前記タグを設定するタグ生成部と、
     前記検索対象データと前記タグ生成部により前記タグが設定された前記索引データとを、前記索引データを用いて前記検索対象データの検索を行わせる検索装置に送信することによって、前記検索装置に前記検索対象データと前記索引データとを記憶させる検索対象データ登録部と
    を備えた請求項1記載の検索システム。
  6. 前記検索端末装置の前記タグ生成部は、前記キーワードと前記索引データに対応付けられた前記ラベルとの組に対するメッセージ認証により前記タグを生成する請求項5記載の検索システム。
  7. 検索装置と、検索要求データ生成部と検索結果データ受信部とタグ検証部とを備える検索端末装置とを備える検索システムが実行する検索方法であって、
     検索装置が、検索対象データと前記検索対象データの正当性の検証情報であるタグが設定される配列要素を有する索引データとを記憶する記憶ステップと、
     前記検索要求データ生成部が、キーワードと、前記検索対象データのデータ名及び前記索引データに対応付けるラベルとに基づいて、前記索引データのいずれかの配列要素を指定する検索要求データを生成する検索要求データ生成ステップと、
     前記検索結果データ受信部が、前記検索要求データ生成ステップにより生成された前記検索要求データを前記検索装置に送信し、前記検索要求データにより指定される前記配列要素に設定されたデータ名の検索対象データと前記タグとを含んだ検索結果データを受信する検索結果データ受信ステップと、
     前記タグ検証部が、前記検索結果データ受信ステップにより受信した前記検索結果データに含まれる前記検索対象データと前記タグとの組の正当性を検証するタグ検証ステップと
    を備えた検索方法。
  8. 検索装置と、検索要求データ生成部と検索結果データ受信部とタグ検証部とを備える検索端末装置とを備える検索システムが実行する検索方法であって、
     検索装置が、検索対象データと前記検索対象データの正当性の検証情報であるタグが設定される配列要素を有する索引データとを記憶する記憶ステップと、
     前記検索要求データ生成部が、キーワードと、前記検索対象データのデータ名及び前記索引データに対応付けるラベルとに基づいて、前記索引データのいずれかの配列要素を指定する検索要求データを生成する検索要求データ生成ステップと、
     前記検索結果データ受信部が、前記検索要求データ生成ステップにより生成された前記検索要求データを前記検索装置に送信し、前記検索要求データにより指定される前記配列要素に設定されたデータ名の検索対象データと前記タグとを含んだ検索結果データを受信する検索結果データ受信ステップと、
     前記タグ検証部が、前記検索結果データ受信ステップにより受信した前記検索結果データに含まれる前記検索対象データと前記タグとの組の正当性を検証するタグ検証ステップと
    を備えた検索方法をコンピュータに実行させるための検索プログラム。
  9. 検索対象データ記憶部と索引データ記憶部とデータ検索部と検索結果データ出力部とを備える検索装置が実行する検索方法であって、
     前記検索対象データ記憶部が、検索対象データを記憶する検索対象データ記憶ステップと、
     前記索引データ記憶部が、配列要素を有する索引データであって、前記索引データに対応付けるラベルと前記検索対象データに関連するキーワードとに基づいて定まる配列要素に、前記キーワードに関連する検索対象データのデータ名と前記検索対象データの正当性の検証情報であるタグとが設定された索引データを記憶する索引データ記憶ステップと、
     前記データ検索部が、特定のラベルと特定のキーワードとに基づいて定まる配列要素を指定する検索要求データが入力され、前記検索要求データが指定する配列要素から前記データ名と前記タグとを取得し、取得したデータ名の検索対象データを前記検索対象データ記憶部から取得するデータ検索ステップと、
     前記検索結果データ出力部が、前記データ検索ステップによって取得された前記検索対象データと前記タグとを含んだ検索結果データを出力する検索結果データ出力ステップと
    を備えた請求項7記載の検索方法。
  10. 検索対象データ記憶部と索引データ記憶部とデータ検索部と検索結果データ出力部とを備える検索装置が実行する検索方法であって、
     前記検索対象データ記憶部が、検索対象データを記憶する検索対象データ記憶ステップと、
     前記索引データ記憶部が、配列要素を有する索引データであって、前記索引データに対応付けるラベルと前記検索対象データに関連するキーワードとに基づいて定まる配列要素に、前記キーワードに関連する検索対象データのデータ名と前記検索対象データの正当性の検証情報であるタグとが設定された索引データを記憶する索引データ記憶ステップと、
     前記データ検索部が、特定のラベルと特定のキーワードとに基づいて定まる配列要素を指定する検索要求データが入力され、前記検索要求データが指定する配列要素から前記データ名と前記タグとを取得し、取得したデータ名の検索対象データを前記検索対象データ記憶部から取得するデータ検索ステップと、
     前記検索結果データ出力部が、前記データ検索ステップによって取得された前記検索対象データと前記タグとを含んだ検索結果データを出力する検索結果データ出力ステップと
    を備えた請求項7記載の検索方法をコンピュータに実行させるための検索プログラム。
  11. 検索対象データ記憶部と索引データ生成部とタグ生成部と検索対象データ登録部とを備えるデータ登録装置が実行する検索方法であって、
     前記検索対象データ記憶部が、検索対象データと、前記検索対象データに関連するキーワードとを記憶する検索対象データ記憶ステップと、
     前記索引データ生成部が、配列要素を有する索引データであって、前記索引データに対応付けるラベルと前記キーワードとに基づいて前記検索対象データのデータ名を設定する配列要素を決定し、決定した配列要素に前記検索対象データのデータ名を設定する索引データ生成ステップと、
     前記タグ生成部が、前記検索対象データの正当性の検証情報であるタグを生成し、前記索引データ生成ステップにより前記検索対象データのデータ名が設定された前記配列要素に前記タグを設定するタグ生成ステップと、
     前記検索対象データ登録部が、前記検索対象データと前記タグ生成ステップにより前記タグが設定された前記索引データとを、前記索引データを用いて前記検索対象データの検索を行わせる検索装置に送信することによって、前記検索装置に前記検索対象データと前記索引データとを記憶させる検索対象データ登録ステップと
    を備えた請求項7記載の検索方法。
  12. 検索対象データ記憶部と索引データ生成部とタグ生成部と検索対象データ登録部とを備えるデータ登録装置が実行する検索方法であって、
     前記検索対象データ記憶部が、検索対象データと、前記検索対象データに関連するキーワードとを記憶する検索対象データ記憶ステップと、
     前記索引データ生成部が、配列要素を有する索引データであって、前記索引データに対応付けるラベルと前記キーワードとに基づいて前記検索対象データのデータ名を設定する配列要素を決定し、決定した配列要素に前記検索対象データのデータ名を設定する索引データ生成ステップと、
     前記タグ生成部が、前記検索対象データの正当性の検証情報であるタグを生成し、前記索引データ生成ステップにより前記検索対象データのデータ名が設定された前記配列要素に前記タグを設定するタグ生成ステップと、
     前記検索対象データ登録部が、前記検索対象データと前記タグ生成ステップにより前記タグが設定された前記索引データとを、前記索引データを用いて前記検索対象データの検索を行わせる検索装置に送信することによって、前記検索装置に前記検索対象データと前記索引データとを記憶させる検索対象データ登録ステップと
    を備えた請求項7記載の検索方法をコンピュータに実行させるための検索プログラム。
PCT/JP2014/000103 2014-01-14 2014-01-14 検索システム、検索方法および検索プログラム WO2015107561A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/000103 WO2015107561A1 (ja) 2014-01-14 2014-01-14 検索システム、検索方法および検索プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/000103 WO2015107561A1 (ja) 2014-01-14 2014-01-14 検索システム、検索方法および検索プログラム

Publications (1)

Publication Number Publication Date
WO2015107561A1 true WO2015107561A1 (ja) 2015-07-23

Family

ID=53542493

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2014/000103 WO2015107561A1 (ja) 2014-01-14 2014-01-14 検索システム、検索方法および検索プログラム

Country Status (1)

Country Link
WO (1) WO2015107561A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021039143A (ja) * 2019-08-30 2021-03-11 株式会社日立製作所 秘匿情報処理システム及び秘匿情報処理方法
CN113535803A (zh) * 2021-06-15 2021-10-22 复旦大学 一种基于关键字索引的区块链高效检索及可靠性验证方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013152520A (ja) * 2012-01-24 2013-08-08 Mitsubishi Electric Corp 検索装置、検索端末装置、データ登録装置、検索方法、検索プログラム、データ登録方法およびデータ登録プログラム
JP2013161154A (ja) * 2012-02-02 2013-08-19 Ibaraki Univ 検索システム、検索方法および検索プログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013152520A (ja) * 2012-01-24 2013-08-08 Mitsubishi Electric Corp 検索装置、検索端末装置、データ登録装置、検索方法、検索プログラム、データ登録方法およびデータ登録プログラム
JP2013161154A (ja) * 2012-02-02 2013-08-19 Ibaraki Univ 検索システム、検索方法および検索プログラム

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
KAORU KUROSAWA ET AL.: "How to Update Documents Verifiably in Searchable Symmetric Encryption", ADVANCES IN COMMUNICATION NETWORKING, November 2013 (2013-11-01), XP047044635, Retrieved from the Internet <URL:http://www.ic.unicamp.br/cans2013/program.php> [retrieved on 20140212] *
KAORU KUROSAWA ET AL.: "How to Update Documents Verifiably in Searchable Symmetric Encryption", LECTURE NOTES IN COMPUTER SCIENCE, vol. 8257, 2013, pages 309 - 328, XP055213026 *
KAORU KUROSAWA ET AL.: "UC-Secure Searchable Symmetric Encryption", FINANCIAL CRYPTOGRAPHY AND DATA SECURITY, vol. 7397, March 2012 (2012-03-01), SPRINGER BERLIN, pages 285 - 298, XP047013838, ISBN: 978-3-642-32945-6, Retrieved from the Internet <URL:http://fcl2.ifca.ai/program.html> [retrieved on 20140212] *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2021039143A (ja) * 2019-08-30 2021-03-11 株式会社日立製作所 秘匿情報処理システム及び秘匿情報処理方法
JP7249248B2 (ja) 2019-08-30 2023-03-30 株式会社日立製作所 秘匿情報処理システム及び秘匿情報処理方法
CN113535803A (zh) * 2021-06-15 2021-10-22 复旦大学 一种基于关键字索引的区块链高效检索及可靠性验证方法

Similar Documents

Publication Publication Date Title
JP6234605B2 (ja) サーバ装置及び検索システム及び端末装置及び検索方法及びサーバプログラム及び端末プログラム
JP5420085B2 (ja) データ処理装置及びデータ保管装置
Michalas The lord of the shares: Combining attribute-based encryption and searchable encryption for flexible data sharing
KR102185350B1 (ko) 네트워크 노드 및 네트워크 노드의 동작 방법
JP5606642B2 (ja) データ検索装置、データ検索方法、データ検索プログラム、データ登録装置、データ登録方法、データ登録プログラムおよび情報処理装置
JP5985123B1 (ja) 秘匿検索システム、管理装置、秘匿検索方法及び秘匿検索プログラム
JP5084817B2 (ja) 暗号文の索引付けおよび検索方法と装置
US20130028419A1 (en) System and a method for use in a symmetric key cryptographic communications
JP6239213B1 (ja) 秘匿検索システム、秘匿検索方法及び秘匿検索プログラム
JP6770075B2 (ja) 暗号化メッセージ検索方法、メッセージ送受信システム、端末、プログラム
JP6049914B2 (ja) 暗号システム、鍵生成装置及び再暗号化装置
KR101648364B1 (ko) 대칭키 암호화와 비대칭키 이중 암호화를 복합적으로 적용한 암/복호화 속도개선 방법
JP5670365B2 (ja) 暗号文検索システム、検索情報生成装置、検索実行装置、検索要求装置、暗号文検索方法、検索情報生成方法、検索実行方法、検索要求方法、およびプログラム
JP6599066B1 (ja) 登録装置、サーバ装置、秘匿検索システム、秘匿検索方法、登録プログラムおよびサーバプログラム
WO2018043573A1 (ja) 鍵交換方法、鍵交換システム
JP6289768B2 (ja) 暗号化装置、暗号化プログラム及び暗号化方法
CN110062941B (zh) 消息发送系统及方法、通信终端、服务器装置、记录介质
WO2015107561A1 (ja) 検索システム、検索方法および検索プログラム
JP5799635B2 (ja) 暗号データ検索システム、装置、方法及びプログラム
JP2019125956A (ja) 鍵交換方法、鍵交換システム、鍵交換サーバ装置、通信装置、プログラム
WO2022233394A1 (en) Device, method and system for asynchronous messaging
JP2016134722A (ja) 鍵共有装置、鍵共有システム、鍵共有方法、プログラム
Arvin S. Lat et al. SOUL System: secure online USB login system
JP2011130021A (ja) 証跡管理方法
JP2011135401A (ja) プログラム、電子機器、サーバシステム及び情報提供システム

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 14879102

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

NENP Non-entry into the national phase

Ref country code: JP

122 Ep: pct application non-entry in european phase

Ref document number: 14879102

Country of ref document: EP

Kind code of ref document: A1