(57)【特許請求の範囲】
【請求項１】
準同型暗号により暗号化された保管データである保管暗号化データと、前記保管データの検索に用いる検索データであって前記準同型暗号により暗号化された検索データである検索暗号化データとを準同型演算することにより、前記保管データと前記検索データとの類似度が前記準同型暗号により暗号化された暗号化類似度を算出する暗号化類似度計算部と、
前記暗号化類似度と前記類似度の閾値とを用いて前記類似度に類似する複数の平文の各々が前記準同型暗号により暗号化された複数の類似暗号文を生成し、生成した前記複数の類似暗号文を用いて前記類似度が前記閾値以内であるか否かを表す暗号化検索結果を生成し、生成した前記暗号化検索結果を送信する暗号化結果送信部と
を有する管理装置と、
前記管理装置から送信された前記暗号化検索結果を復号し、復号した前記暗号化検索結果を検索結果として出力する復号部と、
前記検索結果に基づいて、前記類似度が前記閾値以内であるか否かを表す検索結果情報を出力する出力部と
を有する検索装置と
を備える秘匿検索システム。
【請求項２】
前記暗号化結果送信部は、
前記複数の類似暗号文を生成する類似暗号文生成部であって、前記類似度が前記閾値以内の場合には少なくとも１つは０となる前記複数の平文の各々が前記準同型暗号により暗号化された前記複数の類似暗号文を生成する類似暗号文生成部と、
前記複数の類似暗号文の複数の平文をランダム化し、ランダム化された前記複数の平文の各々が前記準同型暗号により暗号化されたランダム暗号文の集合を生成する平文ランダム化部と、
前記平文ランダム化部により生成された前記ランダム暗号文の集合を用いて、前記暗号化検索結果を生成し、生成した前記暗号化検索結果を送信する結果送信部と
を有する請求項１に記載の秘匿検索システム。
【請求項３】
前記平文ランダム化部は、
前記複数の平文のうち値が０の平文を０とすると共に前記複数の平文のうち値が０ではない平文をランダム化し、ランダム化された前記複数の平文の各々が前記準同型暗号により暗号化された前記ランダム暗号文の集合を生成し、
前記出力部は、
前記検索結果に基づいて、前記複数の平文に値が０の平文があるか否かを判定し、値が０の平文があると判定した場合に前記類似度が前記閾値以内であることを表す前記検索結果情報を出力し、前記複数の平文に値が０の平文がないと判定した場合に前記類似度が前記閾値より大きいことを表す前記検索結果情報を出力する請求項２に記載の秘匿検索システム。
【請求項４】
前記類似暗号文生成部は、
前記類似度が前記閾値以内の場合に、先頭から前記類似度の値番目の平文が０となる前記複数の平文の各々が前記準同型暗号により暗号化された前記複数の類似暗号文を生成し、
前記出力部は、
前記複数の平文の中に値が０の平文があると判定した場合に、前記複数の平文における前記値が０の平文の順番を取得し、前記順番を前記類似度と特定し、特定した前記類似度を出力する請求項３に記載の秘匿検索システム。
【請求項５】
前記結果送信部は、
前記平文ランダム化部により生成された前記ランダム暗号文の集合を攪乱し、攪乱した前記ランダム暗号文の集合を攪乱ランダム暗号文として生成する暗号文攪乱部と、
前記暗号文攪乱部により生成された前記攪乱ランダム暗号文の集合を前記暗号化検索結果として送信する送信部と
を備え、
前記出力部は、
前記複数の平文に値が０の平文があるか否かを判定し、値が０の平文があると判定した場合に前記類似度が前記閾値以内であることを表す前記検索結果情報を出力し、前記複数の平文に値が０の平文がないと判定した場合に前記類似度が前記閾値より大きいことを表す前記検索結果情報を出力する請求項２または３に記載の秘匿検索システム。
【請求項６】
前記暗号文攪乱部は、
前記ランダム暗号文の集合において、前記ランダム暗号文の集合における前記ランダム暗号文の順序を変更することにより前記ランダム暗号文の集合を攪乱し、順序を変更した前記ランダム暗号文の集合を攪乱ランダム暗号文として生成する請求項５に記載の秘匿検索システム。
【請求項７】
前記暗号文攪乱部は、
前記ランダム暗号文の集合における２つのランダム暗号文において、一方のランダム暗号文の成分と他方のランダム暗号文の成分とを交換することにより前記ランダム暗号文の集合を攪乱し、攪乱した前記ランダム暗号文の集合を前記攪乱ランダム暗号文として生成する請求項５に記載の秘匿検索システム。
【請求項８】
前記暗号文攪乱部は、
前記ランダム暗号文の集合に含まれる全てのランダム暗号文を準同型乗算により結合することにより前記ランダム暗号文の集合を攪乱し、前記ランダム暗号文の集合を結合した１つの結合暗号文を前記攪乱ランダム暗号文として生成する請求項５に記載の秘匿検索システム。
【請求項９】
準同型暗号により暗号化された保管データである保管暗号化データと、前記保管データの検索に用いる検索データであって前記準同型暗号により暗号化された検索データである検索暗号化データとを準同型演算することにより、前記保管データと前記検索データとの類似度が前記準同型暗号により暗号化された暗号化類似度を算出する暗号化類似度計算部と、
前記類似度に類似する複数の平文であって、前記類似度が閾値以内の場合には少なくとも１つは０となる前記複数の平文の各々が前記準同型暗号により暗号化された複数の類似暗号文を生成する類似暗号文生成部と、
前記複数の類似暗号文の複数の平文をランダム化し、ランダム化された前記複数の平文の各々が前記準同型暗号により暗号化されたランダム暗号文の集合を生成する平文ランダム化部と、
前記平文ランダム化部により生成された前記ランダム暗号文の集合を用いて、前記類似度が前記閾値以内であるか否かを表す暗号化検索結果を生成し、生成した前記暗号化検索結果を送信する結果送信部と
を備える管理装置。
【請求項１０】
準同型暗号により暗号化された保管データを保管暗号化データとして保管する管理装置と、検索データを用いて前記保管データを検索する検索装置とを有する秘匿検索システムの秘匿検索方法において、
前記管理装置の暗号化類似度計算部が、前記保管暗号化データと前記検索データが前記準同型暗号により暗号化された検索暗号化データを準同型演算することにより、前記保管データと前記検索データとの類似度が前記準同型暗号により暗号化された暗号化類似度を算出し、
前記管理装置の暗号化結果送信部が、前記暗号化類似度と前記類似度の閾値とを用いて、前記類似度に類似する複数の平文の各々が前記準同型暗号により暗号化された複数の類似暗号文を生成し、生成した前記複数の類似暗号文を用いて前記類似度が前記閾値以内であるか否かを表す暗号化検索結果を生成し、生成した前記暗号化検索結果を送信し、
前記検索装置の復号部が、前記管理装置から送信された前記暗号化検索結果を復号し、復号した前記暗号化検索結果を検索結果として出力し、
前記検索装置の出力部が、前記検索結果に基づいて、前記類似度が前記閾値以内であるか否かを表す検索結果情報を出力する秘匿検索方法。
【請求項１１】
準同型暗号により暗号化された保管データを保管暗号化データとして保管する管理装置の秘匿検索プログラムにおいて、
前記保管暗号化データと、前記保管データの検索に用いる検索データであって前記準同型暗号により暗号化された検索データである検索暗号化データとを準同型演算することにより、前記保管データと前記検索データとの類似度が前記準同型暗号により暗号化された暗号化類似度を算出する暗号化類似度算出処理と、
前記類似度に類似する複数の平文であって、前記類似度が閾値以内の場合には少なくとも１つは０となる前記複数の平文の各々が前記準同型暗号により暗号化された複数の類似暗号文を生成する類似暗号文生成処理と、
前記複数の類似暗号文の複数の平文をランダム化し、ランダム化された前記複数の平文の各々が前記準同型暗号により暗号化されたランダム暗号文の集合を生成する平文ランダム化処理と、
前記平文ランダム化処理により生成された前記ランダム暗号文の集合を用いて、前記類似度が前記閾値以内であるか否かを表す暗号化検索結果を生成し、生成した前記暗号化検索結果を送信する結果送信処理と
をコンピュータに実行させる備える秘匿検索プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、秘匿検索システム、管理装置、秘匿検索方法及び秘匿検索プログラムに関する。
【背景技術】
【０００２】
秘匿検索とは、検索対象データと検索内容とを暗号化したまま検索できる技術である。
近年、クラウドサービス等の普及により、インターネット上でのデータ管理が可能となった。しかし、インターネット上でのデータ管理には、データ管理の委託先であるクラウドのサーバがコンピュータウィルス等のマルウェアに感染すること、あるいは、サーバの管理者が不正を働くことなどによって、預けたデータが外部に漏洩する危険性がある。もしサーバに預けたデータが個人情報あるいは企業機密データであった場合、この漏洩は非常に問題である。【０００３】
このようなセキュリティの脅威を回避する方法として暗号化技術がある。しかし、単純にデータを暗号化してサーバに保管するとデータの検索ができなくなるといった問題が生じる。このような問題を回避するために、従来では、検索を行うときにサーバ上に保管された暗号化データを一旦復号してから検索を行うという手法がとられてきた。しかし、データがサーバ内で一定期間平文に戻ってしまうため、セキュリティ対策として十分とはいえない。そこで、データを暗号化したまま検索可能な暗号技術である秘匿検索技術が考案され、秘匿検索技術の具体的な手法が近年多く開示されている。【０００４】
非特許文献１には、秘匿検索技術における検索機能として、単純な検索である完全一致検索ができる方式が開示されている。
また、特許文献１、特許文献２、特許文献３、及び非特許文献２には、より柔軟な検索である類似度検索ができる方式が開示されている。ここから以降、類似度検索ができる秘匿検索技術を秘匿類似度検索技術と呼ぶ。特許文献１及び非特許文献２では、暗号化したまま演算が可能な準同型暗号と呼ばれる特殊な暗号技術を用いてハミング距離を効率良く計算する秘匿類似度検索技術を開示している。
また、非特許文献３、非特許文献４、非特許文献５、非特許文献６においても準同型暗号について開示されている。【０００５】
秘匿類似度検索技術では、データ登録者がサーバに保管した暗号化データと、データ検索者が検索したいデータの暗号文とから、それぞれを復号することなく秘匿したまま、それぞれの平文の間の類似度を計算することができる。ここから以降、データ登録者がサーバに保管した暗号化データを保管暗号化データと呼ぶ。また、データ検索者が検索したいデータの暗号文を検索暗号化データと呼ぶ。また、平文の間の類似度の具体例としては、保管暗号化データの平文と検索暗号化データの平文とのユークリッド２乗距離などである。
サーバは、データ検索者から検索の要求、すなわち類似度計算の要求があれば、類似度を秘匿したまま計算し、その計算結果をデータ検索者に送信する。その後、データ検索者は復号することで類似度を知ることができる。このように、秘匿類似度検索技術は、検索としてのみならず、秘匿分析技術としての側面を持っている。
具体例として、データ登録者を患者、データ検索者を分析者としたとき、秘匿類似度検索技術は、患者のプライバシを保ったまま、すなわち患者の個人データを公開することなく、暗号化したまま分析できる。このため、患者は安心してデータ分析者に分析を依頼することができる。よって、このような秘匿類似度検索技術はプライバシ保護の観点からも非常に有用である。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１５−０３１９３５号公報
【特許文献２】特開２０１３−１０５２０７号公報
【特許文献３】国際公開第２０１３／０３８６９８号
【非特許文献】
【０００７】
【非特許文献１】Ｄ．  Ｂｏｎｅｈ，  Ｇ．  Ｄ．  Ｃｒｅｓｃｅｎｚｏ，  Ｒ．  Ｏｓｔｒｏｖｓｋｙ，  ａｎｄ  Ｇ．  Ｐｅｒｓｉａｎｏ，  “Ｐｕｂｌｉｃ  Ｋｅｙ  Ｅｎｃｒｙｐｔｉｏｎ  ｗｉｔｈ  Ｋｅｙｗｏｒｄ  Ｓｅａｒｃｈ”，  ＥＵＲＯＣＲＹＰＴ  ２００４，  Ｌｅｃｔｕｒｅ  Ｎｏｔｅｓ  ｉｎ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ  ３０２７，  Ｓｐｒｉｎｇｅｒ，  ２００４．
【非特許文献２】小暮，安田，下山，小柴，横山．“準同型暗号を用いた秘匿検索”，第３１回  暗号と情報セキュリティシンポジウム（ＳＣＩＳ２０１４），１Ｄ３−５，２０１４．
【非特許文献３】Ｃ．  Ｇｅｎｔｒｙ，  “Ｆｕｌｌｙ  Ｈｏｍｏｍｏｒｐｈｉｃ  Ｅｎｃｒｙｐｔｉｏｎ  Ｕｓｉｎｇ  Ｉｄｅａｌ  Ｌａｔｔｉｃｅｓ”，  ＡＣＭ  Ｓｙｍｐｏｓｉｕｍ  ｏｎ  Ｔｈｅｏｒｙ  ｏｆ  Ｃｏｍｐｕｔｉｎｇ，  ｐ．１６９−１７８，  ２００９．
【非特許文献４】Ｄ．  Ｂｏｎｅｈ，  Ｅ−Ｊ．  Ｇｏｈ，  ａｎｄ  Ｋ．  Ｎｉｓｓｉｍ，  “Ｅｖａｌｕａｔｉｎｇ  ２−ＤＮＦ  Ｆｏｒｍｕｌａｓ  ｏｎ  Ｃｉｐｈｅｒｔｅｘｔｓ”，  ＴＣＣ  ２００５，  Ｌｅｃｔｕｒｅ  Ｎｏｔｅｓ  ｉｎ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ  ３３７８，  Ｓｐｒｉｎｇｅｒ，  ２００５．
【非特許文献５】Ｐ．  Ｐａｉｌｌｉｅｒ，“Ｐｕｂｌｉｃ−Ｋｅｙ  Ｃｒｙｐｔｏｓｙｓｔｅｍｓ  Ｂａｓｅｄ  ｏｎ  Ｃｏｍｐｏｓｉｔｅ  Ｄｅｇｒｅｅ  Ｒｅｓｉｄｕｏｓｉｔｙ  Ｃｌａｓｓｅｓ”，  Ｅｕｒｏｃｒｙｐｔ  １９９９，  Ｌｅｃｔｕｒｅ  Ｎｏｔｅｓ  ｉｎ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ  １５９２，  Ｓｐｒｉｎｇｅｒ，  １９９９．
【非特許文献６】Ｄ．  Ｃａｔａｌａｎｏ  ａｎｄ  Ｄ．  Ｆｉｏｒｅ，  “Ｂｏｏｓｔｉｎｇ  Ｌｉｎｅａｒｌｙ−Ｈｏｍｏｍｏｒｐｈｉｃ  Ｅｎｃｒｙｐｔｉｏｎ  ｔｏ  Ｅｖａｌｕａｔｅ  Ｄｅｇｒｅｅ−２  Ｆｕｎｃｔｉｏｎｓ  ｏｎ  Ｅｎｃｒｙｐｔｅｄ  Ｄａｔａ”，  ＩＡＣＲ  Ｃｒｙｐｔｏｌｏｇｙ  ｅＰｒｉｎｔ  Ａｒｃｈｉｖｅ：  Ｒｅｐｏｒｔ  ２０１４／８１３．
【発明の概要】
【発明が解決しようとする課題】
【０００８】
既存の秘匿類似度検索技術の課題について説明する。
特許文献１及び非特許文献２では、暗号化したまま演算が可能な準同型暗号と呼ばれる特殊な暗号技術を用いてハミング距離を効率良く計算する秘匿類似度検索技術を開示している。ここで開示された方法では、データ検索者がデータ検索を行った結果、保管暗号化データの平文と検索暗号化データの平文との類似度を、データ検索者は平文で知ることができる。なお、サーバ上ではこの類似度の値が一切現れない。このとき、データ検索者は、検索暗号化データの平文と類似度との２つのデータから、保管暗号化データの平文を推測できる可能性がある。【０００９】
具体例で説明する。保管暗号化データの平文を（０，０，０，１，１）、検索暗号化データの平文を（０，０，０）とすると、データ検索者は検索結果の類似度、すなわちハミング距離として（０，１，２）を得ることができる。具体的には、（０，０，０，１，１）を（０，０，０）で検索する場合、（０，０，０，１，１）の最初の３成分である（０，０，０）と（０，０，０）とのハミング距離（＝０）、（０，０，０，１，１）の次の３成分である（０，０，１）と（０，０，０）とのハミング距離（＝１）、（０，０，０，１，１）の次の３成分である（０，１，１）と（０，０，０）とのハミング距離（＝２）をデータ検索者は得ることができる。
一方で、データ検索者は、検索暗号化データの平文が（０，０，０）であり、この平文（０，０，０）と保管暗号化データの平文とのハミング距離として（０，１，２）が得られたとする。このとき、データ検索者は、この保管暗号化データの平文を（０，０，０，１，１）と簡単に特定することができる。【００１０】
上述したように、データ登録者を患者、データ検索者を分析者としたとき、分析者は検索データと類似度から患者のデータを推測できる可能性がある。このため、特許文献１及び非特許文献２で開示された方法を用いても、患者のプライバシを保てないという課題がある。【００１１】
特許文献２では、保管暗号化データの平文に関するハッシュ値と、保管暗号化データとを関連付けて保管する平文の補助情報を使った秘匿類似度検索技術が開示されている。しかしながら、この平文の補助情報は保管暗号化データの平文の直接的な部分情報であるため、この補助情報から保管暗号化データの平文を推測される可能性がある。よって、特許文献２の方法を用いても十分な安全性を達成できないという課題がある。【００１２】
特許文献３では、データ検索者に対して、類似度そのものを公開せず、類似度が閾値以内の場合のみ類似度を公開する、もしくは類似度が閾値以内か否かのみを公開する方式の秘匿類似度検索技術が開示されている。しかしながら、特許文献３においてサーバが行う類似度計算処理は、登録データの平文を使って処理するものである。このため、保管されているデータは暗号化されていないことが前提である。つまり、サーバは第三者のものではなく、データ登録者の所有物として考えられる。よって、データ登録者がサーバを所持していない状態では、プライバシを保護したまま外部に分析を依頼することはできないという課題がある。【００１３】
本発明は、平文情報を一切用いることなく、保管暗号化データと検索暗号化データとから類似度計算ができ、かつ、類似度が閾値以内か否かを表す情報を出力する秘匿検索システムを提供することを目的とする。
【課題を解決するための手段】
【００１４】
本発明に係る秘匿検索システムは、
準同型暗号により暗号化された保管データである保管暗号化データと、前記保管データの検索に用いる検索データであって前記準同型暗号により暗号化された検索データである検索暗号化データとを準同型演算することにより、前記保管データと前記検索データとの類似度が前記準同型暗号により暗号化された暗号化類似度を算出する暗号化類似度計算部と、
前記暗号化類似度を用いて前記類似度が閾値以内であるか否かを表す暗号化検索結果を生成し、生成した前記暗号化検索結果を送信する暗号化結果送信部と
を有する管理装置と、
前記管理装置から送信された前記暗号化検索結果を復号し、復号した前記暗号化検索結果を検索結果として出力する復号部と、
前記検索結果に基づいて、前記類似度が前記閾値以内であるか否かを表す検索結果情報を出力する出力部と
を有する検索装置と
を備える。
【発明の効果】
【００１５】
本発明に係る秘匿検索システムは、保管暗号化データと検索暗号化データとを準同型演算することにより、平文である保管データと検索データとを用いることなく、保管データと検索データとの類似度が暗号化された暗号化類似度を算出する暗号化類似度計算部と、暗号化類似度を用いて類似度が閾値以内であるか否かを表す暗号化検索結果を生成し、生成した暗号化検索結果を送信する暗号化結果送信部とを有する管理装置を備える。また、本発明に係る秘匿検索システムは、管理装置から受信した暗号化検索結果を復号し、検索結果として出力する復号部と、検索結果に基づいて、類似度が閾値以内であるか否かを表す検索結果情報を出力する出力部とを有する検索装置を備える。よって、本発明に係る秘匿検索システムによれば、平文を用いることなく、保管暗号化データと検索暗号化データとから暗号化された暗号化類似度を算出すると共に、類似度そのものを出力することなく、類似度が閾値以内か否かを表す検索結果情報を出力することができるので、より安全性が高い秘匿検索システムを提供することができる。
【図面の簡単な説明】
【００１６】
【図１】実施の形態１に係る秘匿検索システム１００のシステム構成図。
【図２】実施の形態１に係る鍵生成装置２００のブロック構成図。
【図３】実施の形態１に係る登録装置３００のブロック構成図。
【図４】実施の形態１に係る検索装置４００のブロック構成図。
【図５】実施の形態１に係る管理装置５００のブロック構成図。
【図６】実施の形態１に係る秘匿検索システム１００の秘匿検索方法９１００、秘匿検索プログラム９２００の秘匿検索処理Ｓ１００の流れを示すフロー図である。
【図７】実施の形態１に係る秘匿検索システム１００の鍵生成処理Ｓ１１０を示すフローチャート。
【図８】実施の形態１に係る秘匿検索システム１００の登録処理Ｓ１２０を示すフローチャート。
【図９】実施の形態１に係る秘匿検索システム１００の検索処理Ｓ１３０を示すフローチャート。
【図１０】実施の形態１に係る秘匿検索システム１００の削除処理Ｓ１４０を示すフローチャート。
【図１１】実施の形態２に係る管理装置５００ａのブロック構成図。
【図１２】実施の形態２における秘匿検索システム１００の検索処理Ｓ１３０ａを示すフローチャート。
【図１３】実施の形態３における秘匿検索システム１００の検索処理Ｓ１３０ｂを示すフローチャート。
【図１４】実施の形態４における秘匿検索システム１００の検索処理Ｓ１３０ｃを示すフローチャート。
【図１５】鍵生成装置２００と登録装置３００と検索装置４００と管理装置５００，５００ａとの各装置のハードウェア構成図。
【発明を実施するための形態】
【００１７】
以下、実施の形態について、図を用いて説明する。なお、各図中、互いに同一又は相当する構成部には、同一符号を付している。実施の形態の説明において、互いに同一又は相当する構成部については、その説明を適宜省略又は簡略化する。
【００１８】
実施の形態１．
本実施の形態では、暗号技術の一つである準同型暗号を用いた秘匿類似度検索技術について説明する。
まずは、準同型暗号とその応用について説明する。
準同型暗号は、暗号化データを復号することなく暗号化したまま四則演算が行える暗号技術である。
【００１９】
平文ｘと平文ｙに対して、準同型暗号を用いて暗号化したそれぞれの暗号文をＥ（ｘ）とＥ（ｙ）と書くことにする。
準同型暗号では、Ｅ（ｘ）とＥ（ｙ）に対して演算を行うと、平文がｘ＋ｙの暗号文Ｅ（ｘ＋ｙ）を得ることができる。これを準同型加算と呼び、本実施の形態ではこの演算を◇と表わし、Ｅ（ｘ）◇Ｅ（ｙ）＝Ｅ（ｘ＋ｙ）と書くことにする。
また、Ｅ（ｘ）とＥ（ｙ）に対して演算を行うと、平文がｘ−ｙの暗号文Ｅ（ｘ−ｙ）を得ることができる。これを準同型減算と呼び、本実施の形態ではこの演算を◆と表わし、Ｅ（ｘ）◆Ｅ（ｙ）＝Ｅ（ｘ−ｙ）と書くことにする。
また、Ｅ（ｘ）とＥ（ｙ）に対して演算を行うと、平文がｘ×ｙの暗号文Ｅ（ｘ×ｙ）を得ることができる。これを準同型乗算と呼び、本実施の形態ではこの演算を□と表わし、Ｅ（ｘ）□Ｅ（ｙ）＝Ｅ（ｘ×ｙ）と書くことにする。
また、Ｅ（ｘ）とＥ（ｙ）に対して演算を行うと、平文がｘ／ｙの暗号文Ｅ（ｘ／ｙ）を得ることができる。これを準同型除算と呼び、本明細書ではこの演算を■と表わし、Ｅ（ｘ）■Ｅ（ｙ）＝Ｅ（ｘ／ｙ）と書くことにする。
なお、準同型暗号の中には、準同型加算及び準同型減算しかできないものと、準同型加算及び準同型減算の回数制限はないが準同型乗算及び準同型除算の回数制限があるものとがある。また、準同型加算及び準同型減算と、準同型乗算及び準同型除算共に回数制限がないものがある。
【００２０】
準同型暗号の応用の具体例として、サーバに保管された保管暗号化データとデータ検索者の検索暗号化データとから、暗号化したまま類似度の暗号文を計算することができる。以下の説明では、類似度の暗号文を暗号化類似度という場合がある。
まず、具体例１について説明する。具体例１の準同型暗号を用いて、（ｘ１，ｘ２）と（ｙ１，ｙ２）の間のユークリッド２乗距離の暗号文、すなわち暗号化類似度を暗号化したまま求める例について説明する。なお、（ｘ１，ｘ２）と（ｙ１，ｙ２）の間のユークリッド２乗距離は、（ｘ１−ｙ１）×（ｘ１−ｙ１）＋（ｘ２−ｙ２）×（ｘ２−ｙ２）と計算して求めることができる。ただし、ｘ１，ｘ２，ｙ１，ｙ２は、整数とする。
ここで、保管暗号化データをＥ（ｘ１，ｘ２）＝（Ｅ（ｘ１），Ｅ（ｘ２））、検索暗号化データをＥ（ｙ１，ｙ２）＝（Ｅ（ｙ１），Ｅ（ｙ２））とする。すなわち、それぞれの暗号文は、各平文の暗号文を成分に持つベクトルである。
このとき、暗号化ユークリッド２乗距離を計算するためには、まず、Ｔ１＝Ｅ（ｘ１−ｙ１）＝Ｅ（ｘ１）◆Ｅ（ｙ１）及びＴ２＝Ｅ（ｘ２−ｙ２）＝Ｅ（ｘ２）◆Ｅ（ｙ２）を計算する。その後、Ｔ３＝Ｔ１□Ｔ１＝Ｅ（（ｘ１−ｙ１）２）及びＴ４＝Ｔ２□Ｔ２＝Ｅ（（ｘ２−ｙ２）２）を計算する。最後に、Ｔ３◇Ｔ４＝Ｅ（（ｘ１−ｙ１）２＋（ｘ２−ｙ２）２）を計算すればよい。
【００２１】
次に、具体例２について説明する。具体例２では、保管暗号化データＥ（ｘ１，ｘ２，ｘ３）と検索暗号化データＥ（ｙ１，ｙ２）との暗号化類似度を求める例について説明する。具体例２の準同型暗号は、上述した具体例１の準同型暗号とは異なり、平文のベクトルを一括で暗号化でき、１つの暗号文で表現できる。
【００２２】
具体例２の１つ目の例では、類似度としてハミング距離を用いており、（ｘ１，ｘ２）と（ｙ１，ｙ２）とのハミング距離をＳ１、（ｘ２，ｘ３）と（ｙ１，ｙ２）のハミング距離をＳ２としている。具体例２の１つ目の例は、保管暗号化データＥ（ｘ１，ｘ２，ｘ３）と検索暗号化データＥ（ｙ１，ｙ２）から、Ｅ（Ｓ１，Ｓ２）を効率良く計算する方法である。なお、（ｘ１，ｘ２）と（ｙ１，ｙ２）の間のハミング距離は、ユークリッド２乗距離の計算方法と同様に、（ｘ１−ｙ１）×（ｘ１−ｙ１）＋（ｘ２−ｙ２）×（ｘ２−ｙ２）と計算して求めることができる。ただし、ｘ１，ｘ２，ｙ１，ｙ２は、０または１の整数とする。
また、具体例２の２つ目の例では、準同型加算及び準同型減算しかできない準同型暗号方式を用いて、保管されている平文データと検索暗号化データの平文との暗号化Ｔｖｅｒｓｋｙ係数、すなわち暗号化類似度を計算する。さらに、計算した暗号化類似度から、復号後の平文の類似度がある閾値以内か否かだけがわかるような暗号文、すなわち暗号化検索結果を生成している。しかし、この具体例２の２つ目の例では、保管されている平文データと検索暗号化データの平文との暗号化類似度を求める方式であるため、セキュリティ上の安全性が低い。
【００２３】
＊＊＊構成の説明＊＊＊
以下、本実施の形態の概要について説明する。
図１は、本実施の形態に係る秘匿検索システム１００のシステム構成を示す図である。
図１に示すように、秘匿検索システム１００は、鍵生成装置２００と、複数の登録装置３００と、複数の検索装置４００と、管理装置５００とを備える。管理装置５００ａについては実施の形態２で説明する。
秘匿検索システム１００では、鍵生成装置２００と、複数の登録装置３００と、複数の検索装置４００と、管理装置５００とのそれぞれがネットワーク１０１を経由して接続される。
ネットワーク１０１は、鍵生成装置２００と、複数の登録装置３００と、複数の検索装置４００と、管理装置５００とを接続する通信路である。ネットワーク１０１は、具体的には、インターネット、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）であり、他の種類のネットワークが用いられてもよい。
【００２４】
鍵生成装置２００は、準同型暗号の公開鍵及び秘密鍵のペアを作成し、ネットワーク１０１を介して、複数の登録装置３００と、複数の検索装置４００と、管理装置５００とに公開鍵及び秘密鍵を送信する。なお、公開鍵及び秘密鍵は、ネットワーク１０１を介さず、郵送などで直接的に、複数の登録装置３００と、複数の検索装置４００と、管理装置５００とに送信してもよい。鍵生成装置２００は、複数の登録装置３００と、管理装置５００とには公開鍵のみを送付する。鍵生成装置２００は、複数の検索装置４００には公開鍵及び秘密鍵を送付する。
【００２５】
登録装置３００は、具体的には、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）である。登録装置３００は、保管暗号化データを管理装置５００に登録する登録端末として動作するコンピュータである。
登録装置３００は、暗号化装置及び登録装置として機能する。すなわち、登録装置３００は、保管暗号化データを生成し、保管暗号化データの保管を管理装置５００に要求する。
また、登録装置３００は、削除要求装置として機能する。すなわち、登録装置３００は、管理装置５００に対して、保管されている保管暗号化データの削除を要求する。
【００２６】
検索装置４００は、具体的には、ＰＣである。検索装置４００は、検索暗号化データを管理装置５００に送信し、その後管理装置５００から暗号化検索結果を受信する。そして、検索装置４００は、受信した暗号化検索結果を復号する端末として動作するコンピュータである。
検索装置４００は、検索要求装置として機能する。すなわち、検索装置４００は、検索暗号化データを管理装置５００に送信し、保管暗号化データと検索暗号化データとに関する暗号化類似度の計算を要求する。
検索装置４００は、復号装置として機能する。すなわち、検索装置４００は、管理装置５００から返信される暗号化検索結果を復号する。
【００２７】
管理装置５００は、登録装置３００によって作成された保管暗号化データを保管する大容量の記録媒体を持つ装置である。
管理装置５００は、保管装置として機能する。すなわち、管理装置５００は、登録装置３００から保管暗号化データの保管の要求があれば、保管暗号化データを保管する。
管理装置５００は、検索実行装置として機能する。すなわち、管理装置５００は、検索装置４００からの検索の要求があれば、保管暗号化データと検索暗号化データとから暗号化類似度を計算し、その後暗号化類似度から暗号化検索結果を計算し、暗号化検索結果を検索装置４００に送信する。
管理装置５００は、削除装置として機能する。すなわち、管理装置５００は、登録装置３００から保管暗号化データの削除の要求があれば、保管している保管暗号化データを削除する。
【００２８】
なお、同じＰＣ内に、鍵生成装置２００と登録装置３００と検索装置４００との少なくとも２つが同時に含まれていてもよい。
保管暗号化データ及び検索暗号化データは、いずれも暗号化されている。また、暗号化類似度及び暗号化検索結果も暗号化されている。検索装置４００以外の秘密鍵ＳＫを持たない装置では、保管暗号化データ、検索暗号化データ、暗号化類似度、暗号化検索結果から有益な情報を得ることはできない。
【００２９】
以下、本実施の形態の構成について詳細に説明する。
図１に示したように、秘匿検索システム１００は、鍵生成装置２００と、登録装置３００と、検索装置４００と、管理装置５００とを備える。以下では、鍵生成装置２００の構成、登録装置３００の構成、検索装置４００の構成、管理装置５００の構成について順番に説明する。
【００３０】
図２は、本実施の形態に係る鍵生成装置２００のブロック構成を示す図である。
図２に示すように、鍵生成装置２００は、鍵生成部２０１と、鍵送信部２０２とを備える。また、図示していないが、鍵生成装置２００は、鍵生成装置２００の各部で使用されるデータを記憶する記録媒体を備える。
【００３１】
鍵生成部２０１は、データを暗号化及び復号するための準同型暗号の公開鍵ＰＫと秘密鍵ＳＫとを生成する。秘密鍵ＳＫは検索装置４００に保管される秘密情報であるため、厳重に生成される。なお、本実施の形態では、公開鍵暗号系の準同型暗号を用いて説明しているが、共通鍵暗号系の準同型暗号を用いてもよい。このとき、鍵生成部２０１は、秘密鍵ＳＫ＝公開鍵ＰＫのみを生成する。この秘密鍵ＳＫは、登録装置３００と、検索装置４００と、管理装置５００とに厳重に保管される。
【００３２】
鍵送信部２０２は、鍵生成部２０１で生成された公開鍵ＰＫを、登録装置３００と、管理装置５００とに送信する。また、鍵送信部２０２は、鍵生成部２０１で生成された公開鍵ＰＫと秘密鍵ＳＫのペアを検索装置４００へ送信する。
【００３３】
図３は、本実施の形態に係る登録装置３００のブロック構成を示す図である。
図３に示すように、登録装置３００は、鍵受信部３０１と、鍵保管部３０２と、入力部３０３と、暗号化部３０４と、データ送信部３０５とを備える。図示していないが、登録装置３００は、登録装置３００の各部で使用されるデータを記憶する記録媒体を備える。
【００３４】
鍵受信部３０１は、鍵生成装置２００から送信されてきた公開鍵ＰＫを受信する。
鍵保管部３０２は、鍵受信部３０１により受信された公開鍵ＰＫを保管する。
入力部３０３は、データ登録者から入力された保管データ６１０を受け取る。なお、本実施の形態では、保管データ６１０としてベクトル（ｘ１，ｘ２，・・・，ｘｋ）（ｋは、ｋ≧１となる整数）をデータ登録者から受け取ったものとして説明する。
また、入力部３０３は、データ登録者から、保管データ６１０と同時に、その保管データ６１０に関する保管データ識別子を受けとってもよい。保管データ識別子は、具体的には、保管暗号化データ名、登録した時刻、データ登録者の名前など、保管データを識別できる情報であればよい。
また、入力部３０３は、データ登録者から、管理装置５００に保管された保管暗号化データのうち、削除したい保管暗号化データを識別する削除対象データ識別子を受け取る。削除対象データ識別子は、具体的には、保管暗号化データ名、登録した時刻、データ登録者の名前など、保管データを識別できるもの情報であればよい。
【００３５】
暗号化部３０４は、鍵保管部３０２から公開鍵ＰＫを読み出し、入力部３０３から受け取った保管データ（ｘ１，ｘ２，・・・，ｘｋ）に対して公開鍵ＰＫを用いて暗号化し、保管暗号化データ６２０を作成する。なお、本実施の形態では、保管暗号化データ６２０をＥ（ＰＫ，ｘ１，ｘ２，・・・，ｘｋ）と表わすことにする。
なお、上述した具体例２の準同型暗号のように、ベクトルを一括で暗号化できる準同型暗号を用いた場合は、Ｅ（ＰＫ，ｘ１，ｘ２，・・・，ｘｋ）は１つの暗号化とみなすことができる。一方で、上述した具体例１の準同型暗号を用いた場合は、ベクトル成分毎に暗号化する必要がある。よって、具体例１の準同型暗号を用いた場合は、Ｅ（ＰＫ，ｘ１，ｘ２，・・・，ｘｋ）は、各ベクトル成分の暗号文のベクトル（Ｅ（ＰＫ，ｘ１），Ｅ（ＰＫ，ｘ２），・・・，Ｅ（ＰＫ，ｘｋ））とみなされる。
【００３６】
データ送信部３０５は、暗号化部３０４から受け取った保管暗号化データＥ（ＰＫ，ｘ１，ｘ２，・・・，ｘｋ）を管理装置５００へ送信する。もし、データ登録者から保管データと同時に保管データ識別子も入力されていた場合は、保管暗号化データと保管データ識別子との両方を管理装置５００へ送信する。
また、データ送信部３０５は、入力部３０３から受け取った削除対象データ識別子を管理装置５００へ送信する。
【００３７】
図４は、本実施の形態に係る検索装置４００のブロック構成を示す図である。
図４に示すように、検索装置４００は、受信部４０１と、鍵保管部４０２と、入力部４０３と、暗号化部４０４と、検索データ送信部４０５と、復号部４０６と、出力部４０７とを備える。図示していないが、検索装置４００は、検索装置４００の各部で使用されるデータを記憶する記録媒体を備える。
【００３８】
受信部４０１は、鍵生成装置２００から送信されてきた公開鍵ＰＫと秘密鍵ＳＫとのペアを受信する。また、受信部４０１は、管理装置５００から暗号化検索結果５００１を受信する。なお、暗号化検索結果５００１は、類似度計算の内容によって、１つの暗号文もしくは複数の暗号文である場合がある。暗号化検索結果５００１は、保管データと検索データとの類似度が閾値以内であるか否かを表す情報である。ただし、暗号化検索結果５００１は、保管データと検索データとの類似度が閾値以内であるか否かを表す情報が暗号化されたものであり、類似度の値そのものは含まれない。
【００３９】
鍵保管部４０２は、受信部４０１から受け取った公開鍵ＰＫと秘密鍵ＳＫとのペアを保管する。
【００４０】
入力部４０３は、データ検索者から入力された検索データ７１０を受け取る。なお、本実施の形態では、検索データ７１０としてベクトル（ｙ１，ｙ２，・・・，ｙｍ）（ｍは、ｍ≧１となる整数）をデータ検索者から受け取ったとして説明する。ここで、検索データの長さｍは保管データの長さｎと同じでも、もしくは異なっていてもよい。このｍの値は、データ検索者がどのような類似度計算したいかに依存して決定される。
また、入力部４０３は、データ検索者から、検索データ７１０と共に、その検索データ７１０により検索する保管暗号化データ６２０を指定する検索対象データ識別子を受けとってもよい。検索データ７１０により検索する保管暗号化データとは、検索データ７１０により類似度を算出する対象の保管暗号化データのことである。検索対象データ識別子としては、具体的には、保管暗号化データ名、登録した時刻、データ登録者の名前など、保管暗号化データを特定できる情報であればよい。
【００４１】
暗号化部４０４は、鍵保管部４０２から公開鍵ＰＫを読み出し、入力部４０３から受け取った検索データ７１０、すなわちベクトル（ｙ１，ｙ２，・・・，ｙｍ）に対して公開鍵ＰＫを用いて暗号化し、検索暗号化データ７２０を作成する。本実施の形態では、検索暗号化データをＥ（ＰＫ，ｙ１，ｙ２，・・・，ｙｍ）と表わすことにする。
検索データ送信部４０５は、暗号化部４０４から受け取った検索暗号化データ７２０、すなわちＥ（ＰＫ，ｙ１，ｙ２，・・・，ｙｍ）を管理装置５００へ送信する。もし、データ検索者から検索データ７１０と共に検索対象データ識別子が入力されていた場合は、検索データ送信部４０５は、検索暗号化データ７２０と検索対象データ識別子との両方を管理装置５００へ送信する。
【００４２】
復号部４０６は、管理装置５００から送信された暗号化検索結果５００１を復号し、復号した暗号化検索結果５００１を検索結果４０６１として出力する。
復号部４０６は、鍵保管部４０２から秘密鍵ＳＫを読み出し、受信部４０１から受け取った暗号化検索結果５００１を復号して、検索結果４０６１を抽出する。
【００４３】
出力部４０７は、検索結果４０６１に基づいて、類似度が閾値θ以内であるか否かを表す検索結果情報４０７１を出力する。
出力部４０７は、復号部４０６から受け取った検索結果４０６１をそのままデータ検索者に対して出力してもよい。
【００４４】
図５は、本実施の形態に係る管理装置５００のブロック構成を示す図である。
図５に示すように、管理装置５００は、データ受信部５０１と、鍵保管部５０２と、データ保管部５０３と、暗号化類似度計算部５０４と、暗号化結果送信部５０５と、閾値保管部５０６とを備える。暗号化結果送信部５０５は、類似暗号文生成部５０５１と、平文ランダム化部５０５２と、結果送信部５０５３とを備える。
図示していないが、管理装置５００は、管理装置５００の各部で使用されるデータを記憶する記録媒体を備える。
【００４５】
データ受信部５０１は、鍵生成装置２００から送信されてきた公開鍵ＰＫを受信する。
また、データ受信部５０１は、保管データ６１０の検索に用いる検索データ７１０であって準同型暗号により暗号化された検索データ７１０である検索暗号化データ７２０を受信する。
データ受信部５０１は、登録装置３００から送られてきた保管暗号化データ６２０、すなわちＥ（ＰＫ，ｘ１，ｘ２，・・・，ｘｋ）を受信する。データ受信部５０１は、保管暗号化データＥ（ＰＫ，ｘ１，ｘ２，・・・，ｘｋ）に加え、登録装置３００から保管データ識別子及び削除対象データ識別子を受信する場合もある。また、データ受信部５０１は、上述したように、検索暗号化データＥ（ＰＫ，ｙ１，ｙ２，・・・，ｙｍ）に加え、検索装置４００から送信されてきた検索対象データ識別子を受信する場合もある。
鍵保管部５０２は、データ受信部５０１から受け取った公開鍵ＰＫを保管する。
【００４６】
データ保管部５０３は、準同型暗号により暗号化された保管データ６１０を保管暗号化データ６２０として保管する。
データ保管部５０３は、データ受信部５０１から受け取った保管暗号化データＥ（ＰＫ，ｘ１，ｘ２，・・・，ｘｋ）と保管データ識別子とを対応付けて保管する。もし保管データ識別子がなかった場合は、データ保管部５０３は、保管データ識別子としてデータ登録者名あるいは登録時刻などから保管データ識別子を生成して、保管暗号化データと対応付けて保管する。
また、データ保管部５０３は、データ受信部５０１から受け取った削除対象データ識別子に基づき、保管している保管暗号化データを削除する。
【００４７】
暗号化類似度計算部５０４は、準同型暗号により暗号化された保管データである保管暗号化データ６２０と、保管データの検索に用いる検索データであって準同型暗号により暗号化された検索データである検索暗号化データ７２０とを準同型演算することにより、保管データと検索データとの類似度が準同型暗号により暗号化された暗号化類似度５０４１を算出する。
暗号化類似度計算部５０４は、データ受信部５０１から検索暗号化データＥ（ＰＫ，ｙ１，ｙ２，・・・，ｙｍ）と検索対象データ識別子を受け取る。また、暗号化類似度計算部５０４は、鍵保管部５０２から公開鍵ＰＫを読み出す。そして、暗号化類似度計算部５０４は、検索対象データ識別子に基づき、データ保管部５０３から保管暗号化データＥ（ＰＫ，ｘ１，ｘ２，・・・，ｘｋ）を読み出す。もし、検索対象データ識別子がなかった場合は、データ保管部５０３からすべての保管暗号化データ６２０を読み出す。
そして、暗号化類似度計算部５０４は、公開鍵ＰＫと、各保管暗号化データ６２０と、検索暗号化データ７２０とを用いて、準同型演算を行って暗号化類似度５０４１を計算する。ここで、保管暗号化データＥ（ＰＫ，ｘ１，ｘ２，・・・，ｘｋ）と検索暗号化データＥ（ＰＫ，ｙ１，ｙ２，・・・，ｙｍ）との暗号化類似度５０４１をＥ（ＰＫ，Ｓ１，Ｓ２，・・・，Ｓｎ）と表わすことにする。
【００４８】
上述したように、具体例１の準同型暗号を用いて、（ｘ１，ｘ２）と（ｙ１，ｙ２）（ｋ＝ｍ＝２）の間のユークリッド２乗距離を求める場合は、ｎ＝１で、Ｓ１を（ｘ１，ｘ２）と（ｙ１，ｙ２）のユークリッド２乗距離と考える。また、具体例２の準同型暗号を用いて、（ｘ１，ｘ２，ｘ３）（ｋ＝３）と（ｙ１，ｙ２）（ｍ＝２）のハミング距離に関する類似度を求める場合は、ｎ＝２で、Ｓ１を（ｘ１，ｘ２）と（ｙ１，ｙ２）のハミング距離、Ｓ２を（ｘ２，ｘ３）と（ｙ１，ｙ２）のハミング距離と考える。
【００４９】
暗号化結果送信部５０５は、暗号化類似度５０４１を用いて類似度が閾値以内であるか否かを表す暗号化検索結果５００１を生成し、生成した暗号化検索結果５００１を送信する。
【００５０】
類似暗号文生成部５０５１は、類似度に類似する複数の平文であって、類似度が閾値以内の場合には少なくとも１つは０となる複数の平文の各々が準同型暗号により暗号化された複数の類似暗号文５０５１０を生成する。
類似暗号文生成部５０５１は、鍵保管部５０２から公開鍵ＰＫを読み出し、閾値保管部５０６から閾値θを読み出す。類似暗号文生成部５０５１は、公開鍵ＰＫと閾値θとに基づいて、準同型演算を用いて、暗号化類似度計算部５０４から受け取った暗号化類似度５０４１の平文（Ｓ１，Ｓ２，・・・，Ｓｎ）と近い値を持つ暗号文を複数生成する。この生成された暗号文を類似暗号文５０５１０と呼ぶことにし、各類似暗号文をＥ（ＰＫ，ＡＳ１，ＡＳ２，・・・，ＡＳｎ）と表わすことにする。
【００５１】
閾値保管部５０６は、閾値θを保管する。ただし、θは１以上の整数とする。なお、この閾値θの設定は、鍵生成装置２００が決定してもよいし、登録装置３００のデータ登録者が決めてもよい。もしくは閾値θは、システムで事前に決められている値を使ってもよい。また、閾値は唯一つでなく、計算する類似度に応じて複数あってもよい。
【００５２】
平文ランダム化部５０５２は、複数の類似暗号文５０５１０の複数の平文をランダム化し、ランダム化された複数の平文の各々が準同型暗号により暗号化されたランダム暗号文の集合を生成する。
平文ランダム化部５０５２は、鍵保管部５０２に保管されている公開鍵ＰＫを読み出し、類似暗号文生成部５０５１から受け取った各類似暗号文Ｅ（ＰＫ，ＡＳ１，ＡＳ２，・・・，ＡＳｎ）の平文（ＡＳ１，ＡＳ２，・・・，ＡＳｎ）の各成分をランダム化する。平文ランダム化部５０５２は、各類似暗号文Ｅ（ＰＫ，ＡＳ１，ＡＳ２，・・・，ＡＳｎ）の平文（ＡＳ１，ＡＳ２，・・・，ＡＳｎ）の各成分をランダム化したランダム暗号文５０５２０を生成する。ここで、ランダム暗号文５０５２０をＥ（ＰＫ，Ｒ１，．．．，Ｒｎ）と表す。
【００５３】
平文ランダム化部５０５２は、複数の平文のうち値が０の平文を０とすると共に複数の平文のうち値が０ではない平文をランダム化し、ランダム化された複数の平文の各々が準同型暗号により暗号化されたランダム暗号文５０５２０の集合を生成する。
すなわち、平文ランダム化部５０５２は、０でない複数の乱数と準同型演算を用いて、平文が０以外の暗号文を平文がランダムとなるように暗号文を変換し、また平文が０の暗号文を平文が０のまま変化しないように暗号文を変換するような特殊なランダム化処理を行う。よって、ランダム暗号文Ｅ（ＰＫ，Ｒ１，．．．，Ｒｎ）は各零保存ランダム暗号文Ｅ（ＰＫ，Ｒ１，．．．，Ｒｎ）とも称される。
【００５４】
結果送信部５０５３は、平文ランダム化部５０５２により生成されたランダム暗号文５０５２０の集合を用いて、暗号化検索結果５００１を生成し、生成した暗号化検索結果５００１を送信する。結果送信部５０５３は、平文ランダム化部５０５２から受け取ったランダム暗号文５０５２０の集合を、暗号化検索結果５００１として検索装置４００へ送信する。
【００５５】
＊＊＊動作の説明＊＊＊
図６は、本実施の形態に係る秘匿検索システム１００の秘匿検索方法９１００、秘匿検索プログラム９２００の秘匿検索処理Ｓ１００の流れを示すフロー図である。
秘匿検索処理Ｓ１００は、鍵生成処理Ｓ１１０と、登録処理Ｓ１２０と、検索処理Ｓ１３０を有する。
鍵生成処理Ｓ１１０は、鍵生成装置２００により鍵を生成して各装置に保管する。
登録処理Ｓ１２０は、保管データを暗号化して保管暗号化データとして管理装置５００に保管する。
検索処理Ｓ１３０は、検索装置からの要求により、検索暗号化データと保管暗号化データとにおける暗号化類似度を算出し、検索データと保管データとの類似度が閾値以内か否かを表す暗号化検索結果を、平文情報を用いることなく生成する。
【００５６】
図７は、本実施の形態に係る秘匿検索システム１００の鍵生成処理Ｓ１１０を示すフローチャートである。
図７のＳ６０１からＳ６０８は、鍵生成装置２００と、登録装置３００と、検索装置４００と、管理装置５００とが実行する処理である。Ｓ６０１からＳ６０２は鍵生成装置２００によって実行される。Ｓ６０３からＳ６０４は登録装置３００によって実行される。Ｓ６０５からＳ６０６は検索装置４００によって実行される。Ｓ６０７からＳ６０８は管理装置５００によって実行される。
【００５７】
＜鍵生成装置２００の処理＞
Ｓ６０１において、鍵生成部２０１は、データの暗号化及び復号をするための準同型暗号の公開鍵ＰＫとその秘密鍵ＳＫとを生成する。なお、ここでは公開鍵暗号系の準同型暗号を用いて説明するが、共通鍵暗号系の準同型暗号を用いてもよい。その場合は、鍵生成部２０１は、公開鍵ＰＫを秘密鍵ＳＫとして設定して、公開鍵暗号系の場合と同じように以降の処理を実施すればよい。
Ｓ６０２において、鍵送信部２０２は、Ｓ６０１で生成した公開鍵ＰＫを、登録装置３００と管理装置５００へ送信する。また、鍵送信部２０２は、Ｓ６０１で生成した公開鍵ＰＫと秘密鍵ＳＫのペアを検索装置４００へ送信する。
【００５８】
＜登録装置３００の処理＞
Ｓ６０３において、鍵受信部３０１は、Ｓ６０２で送信された公開鍵ＰＫを受信する。
Ｓ６０４において、鍵保管部３０２は、Ｓ６０３で受信した公開鍵ＰＫを記憶媒体に保管する。
【００５９】
＜検索装置４００の処理＞
Ｓ６０５において、受信部４０１は、Ｓ６０２で送信された公開鍵ＰＫと秘密鍵ＳＫとのペアを受信する。
Ｓ６０６において、鍵保管部４０２は、Ｓ６０５で受信した公開鍵ＰＫと秘密鍵ＳＫのペアを記憶媒体に保管する。なお、秘密鍵ＳＫは秘密情報であるため、検索装置４００及び検索装置４００を用いるデータ検索者以外に公開しないように厳重に保管する。
【００６０】
＜管理装置５００の処理＞
Ｓ６０７において、データ受信部５０１は、Ｓ６０２で送信された公開鍵ＰＫを受信する。
Ｓ６０８において、鍵保管部５０２は、Ｓ６０７で受信した公開鍵ＰＫを記憶媒体に保管する。
以上で、秘匿検索システム１００の鍵生成保管処理は終了する。
もし、公開鍵ＰＫ＝秘密鍵ＳＫの場合は、公開鍵ＰＫも秘密情報となるため、鍵保管部３０２、鍵保管部４０２、鍵保管部５０２ともに、公開鍵ＰＫを厳重に保管する。
以上により、秘匿検索システム１００の鍵生成処理Ｓ１１０は終了する。
【００６１】
図８は、本実施の形態に係る秘匿検索システム１００の登録処理Ｓ１２０を示すフローチャートである。
図８のＳ７０１からＳ７０５は、登録装置３００と管理装置５００が実行する処理である。Ｓ７０１からＳ７０３は登録装置３００によって実行される処理である。Ｓ７０４からＳ７０５は管理装置５００によって実行される処理である。
【００６２】
＜登録装置３００の処理＞
Ｓ７０１において、入力部３０３は、データ登録者から入力された保管データ（ｘ１，ｘ２，・・・，ｘｋ）（ｋ≧１）を受け取る。入力部３０３は、データ登録者から保管データと共に、その保管データに関する保管データ識別子も受けとってもよい。
Ｓ７０２において、暗号化部３０４は、鍵保管部３０２に保管されている公開鍵ＰＫを用いて、Ｓ７０１で入力された保管データ（ｘ１，ｘ２，・・・，ｘｋ）を暗号化して、保管暗号化データＥ（ＰＫ，ｘ１，ｘ２，・・・，ｘｋ）を生成する。
Ｓ７０３において、データ送信部３０５は、Ｓ７０２で生成した保管暗号化データＥ（ＰＫ，ｘ１，ｘ２，・・・，ｘｋ）を管理装置５００へ送信する。もし、Ｓ７０２で保管データ識別子も入力されていれば、保管データ識別子も同時に送付する。
【００６３】
＜管理装置５００の処理＞
Ｓ７０４において、データ受信部５０１は、Ｓ７０３で送信された保管暗号化データＥ（ＰＫ，ｘ１，ｘ２，・・・，ｘｋ）を受信する。もし、Ｓ７０４で保管データ識別子も送信されていたら、保管データ識別子も受信する。
Ｓ７０５において、データ保管部５０３は、Ｓ７０４で受信した保管暗号化データＥ（ＰＫ，ｘ１，ｘ２，・・・，ｘｋ）を保管する。もし、Ｓ７０４で保管データ識別子も受信されていれば、その保管暗号化データと関連付けて保管する。
以上により、秘匿検索システム１００の登録処理Ｓ１２０は終了する。
【００６４】
図９は、本実施の形態に係る秘匿検索システム１００の検索処理Ｓ１３０を示すフローチャートである。
図９のＳ８０１からＳ８１２は、検索装置４００と管理装置５００が実行する処理である。Ｓ８０１からＳ８０３及びＳ８１０からＳ８１２は検索装置４００によって実行される処理である。Ｓ８０４からＳ８０９は管理装置５００によって実行される処理である。
【００６５】
＜検索装置４００の処理＞
Ｓ８０１において、入力部４０３は、データ検索者から入力された検索データ（ｙ１，ｙ２，・・・，ｙｍ）を受け取る。入力部４０３は、データ検索者から検索データと同時に、検索を行いたい保管暗号化データを示す検索対象データ識別子も受けとってもよい。
Ｓ８０２において、暗号化部４０４は、鍵保管部４０２に保管されている公開鍵ＰＫを用いて、Ｓ８０１で入力された検索データ（ｙ１，ｙ２，・・・，ｙｍ）を暗号化して、検索暗号化データＥ（ＰＫ，ｙ１，ｙ２，・・・，ｙｍ）を生成する。
Ｓ８０３において、検索データ送信部４０５は、Ｓ８０２で生成した検索暗号化データＥ（ＰＫ，ｙ１，ｙ２，・・・，ｙｍ）を管理装置５００へ送信する。もし、Ｓ８０１で検索対象データ識別子も入力されていれば、検索対象データ識別子も同時に送付する。
【００６６】
＜管理装置５００の処理＞
上述したように、管理装置５００は、準同型暗号により暗号化された保管データ６１０を保管暗号化データ６２０として保管する。
【００６７】
＜データ受信処理Ｓ８０４＞
データ受信部５０１は、保管データ６１０の検索に用いる検索データ７１０であって準同型暗号により暗号化された検索データ７１０である検索暗号化データ７２０を受信するデータ受信処理Ｓ８０４を実行する。
データ受信処理Ｓ８０４において、データ受信部５０１は、Ｓ８０３で送信された検索暗号化データＥ（ＰＫ，ｙ１，ｙ２，・・・，ｙｍ）を受信する。もし、Ｓ８０３で検索対象データ識別子も送信されていたら、検索対象データ識別子も受信する。
【００６８】
Ｓ８０５において、暗号化類似度計算部５０４は、データ保管部５０３から保管暗号化データＥ（ＰＫ，ｘ１，ｘ２，・・・，ｘｋ）を読み出す。なお、暗号化類似度計算部５０４は、Ｓ８０４で検索対象データ識別子も受信していた場合は、受信した検索対象データ識別子に基づき、対象の保管暗号化データを読み出す。暗号化類似度計算部５０４は、Ｓ８０４で検索対象データ識別子を受信していなかった場合は、すべての保管暗号化データを読み出す。
【００６９】
＜暗号化類似度算出処理Ｓ８０６＞
暗号化類似度計算部５０４は、保管暗号化データ６２０と検索暗号化データ７２０とを準同型演算することにより、保管データ６１０と検索データ７１０との類似度が準同型暗号により暗号化された暗号化類似度５０４１を算出する暗号化類似度算出処理Ｓ８０６を実行する。
暗号化類似度算出処理Ｓ８０６において、暗号化類似度計算部５０４は、鍵保管部５０２に保管されている公開鍵ＰＫを用いて、Ｓ８０５で読み出した各保管暗号化データＥ（ＰＫ，ｘ１，ｘ２，・・・，ｘｋ）とＳ８０４で受信した検索暗号化データＥ（ＰＫ，ｙ１，ｙ２，・・・，ｙｍ）との間で準同型演算を行い、暗号化類似度Ｅ（ＰＫ，Ｓ１，Ｓ２，・・・，Ｓｎ）を計算する。
例えば、暗号化類似度計算部５０４は、上述した具体例１の準同型暗号を用いて、ユークリッド２乗距離を計算することにより暗号化類似度Ｅ（ＰＫ，Ｓ１，Ｓ２，・・・，Ｓｎ）を算出する。
また、例えば、暗号化類似度計算部５０４は、上述した具体例２の準同型暗号を用いて、ハミング距離を計算することにより暗号化類似度Ｅ（ＰＫ，Ｓ１，Ｓ２，・・・，Ｓｎ）を算出する。
【００７０】
＜類似暗号文生成処理Ｓ８０７＞
類似暗号文生成部５０５１は、類似度に類似する複数の平文であって類似度が閾値以内の場合には少なくとも１つは０となる複数の平文の各々が、準同型暗号により暗号化された複数の類似暗号文を生成する類似暗号文生成処理Ｓ８０７を実行する。
類似暗号文生成処理Ｓ８０７において、類似暗号文生成部５０５１は、鍵保管部５０２から公開鍵ＰＫを読み出し、閾値保管部５０６から閾値θを読み出す。類似暗号文生成部５０５１は、公開鍵ＰＫと閾値θとに基づいて、準同型演算を用いて、暗号化類似度計算部５０４から受け取った暗号化類似度５０４１の平文（Ｓ１，Ｓ２，・・・，Ｓｎ）と近い値を持つ暗号文を複数生成する。ここで生成された複数の暗号文の各々は、類似暗号文Ｅ（ＰＫ，ＡＳ１，ＡＳ２，・・・，ＡＳｎ）である。
具体的には、類似暗号文生成部５０５１は、鍵保管部５０２に保管されている公開鍵ＰＫと、閾値保管部５０６に保管されている閾値θとを用いて、類似暗号文５０５１０をθ＋１個生成する。ここで、生成された類似暗号文５０５１０の集合を｛ｃ０，ｃ１，・・・，ｃθ｝と表し、各ｃをＥ（ＰＫ，ＡＳ１，ＡＳ２，・・・，ＡＳｎ）と表わす。また、類似暗号文の集合内の暗号文は、ｃ０，ｃ１，・・・，ｃθの順で並んでいるものとする。
【００７１】
具体的な類似暗号文の生成方法について説明する。準同型加算を用いて、ｃ０＝Ｅ（ＰＫ，Ｓ１，Ｓ２，・・・，Ｓｎ），ｃ１＝Ｅ（ＰＫ，−１＋Ｓ１，−１＋Ｓ２，・・・，−１＋Ｓｎ），・・・，ｃθ＝Ｅ（ＰＫ，−θ＋Ｓ１，−θ＋Ｓ２，・・・，−θ＋Ｓｎ）として生成する。
【００７２】
類似暗号文生成処理Ｓ８０７は、暗号化類似度Ｅ（ＰＫ，Ｓ１，Ｓ２，・・・，Ｓｎ）の中に類似度がθ以内の平文Ｓｉがあれば、準同型演算で暗号文を変換して、平文として０が現れるような類似暗号文を１つでも生成する処理である。
ここでは、０番目の類似暗号文は暗号化類似度から０を引いた値、１番目の類似暗号文は暗号化類似度から１を引いた値、・・・、θ番目の類似暗号文は暗号化類似度からθを引いた値である。すなわち、類似暗号文生成部５０５１は、類似度が閾値θ以内の場合に、先頭から類似度の値番目の平文が０となる複数の平文の各々が準同型暗号により暗号化された複数の類似暗号文を生成することになる。
【００７３】
＜平文ランダム化処理Ｓ８０８＞
平文ランダム化部５０５２は、複数の類似暗号文５０５１０の複数の平文をランダム化し、ランダム化された複数の平文の各々が準同型暗号により暗号化されたランダム暗号文５０５２０の集合を生成する平文ランダム化処理Ｓ８０８を実行する。
平文ランダム化処理Ｓ８０８において、平文ランダム化部５０５２は、鍵保管部５０２に保管されている公開鍵ＰＫを用いて、類似暗号文生成処理Ｓ８０７で生成した類似暗号文の集合の各類似暗号文ｃに対して平文のランダム化を行う。平文ランダム化部５０５２は、各類似暗号文ｃに対して平文のランダム化を行った結果、ランダム暗号文をθ＋１個生成する。ここで、生成されたランダム暗号文の集合を｛Ｃ０，Ｃ１，・・・，Ｃθ｝と表し、各ランダム暗号文ＣをＥ（ＰＫ，Ｒ１，．．．，Ｒｎ）と表わす。また、ランダム暗号文の集合内の暗号文は、Ｃ０，Ｃ１，・・・，Ｃθの順で並んでいるものとする。
【００７４】
なお、このランダム化は、上述した通り、準同型演算を用いて、平文が０以外の類似暗号文を平文がランダムとなるように類似暗号文を変換し、また平文が０の類似暗号文を平文が０のまま変化しないように類似暗号文を変換するような特殊なランダム化処理である。
【００７５】
具体的には、まず、０ではない乱数ｒｉ（ｉは、０≦ｉ≦θを満たす整数）を生成する。その後、各類似暗号文ｃ＝Ｅ（ＰＫ，ＡＳ１，ＡＳ２，・・・，ＡＳｎ）に対して、準同型演算を用いて、Ｃ＝Ｅ（ＰＫ，Ｒ１，Ｒ２，・・・，Ｒｎ）＝Ｅ（ＰＫ，ｒ１×ＡＳ１，ｒ２×ＡＳ２，・・・，ｒｎ×ＡＳｎ）を計算する。なお、ＡＳｉが０であれば、乱数ｒｉを乗じても０のままである。
もし、暗号化類似度Ｅ（ＰＫ，Ｓ１，Ｓ２，・・・，Ｓｎ）の中に類似度がθ以内の平文Ｓｉがあれば、類似暗号文生成処理Ｓ８０７で準同型演算を用いて暗号文を変換した結果、平文として０となる、すなわちＡＳｉ＝０となる暗号文を生成される。よって、平文ランダム化部５０５２によるランダム化を行ってもＲｉ（＝ｒｉ×ＡＳｉ）が０のまま保存される。Ｒｉ（＝ｒｉ×ＡＳｉ）が０のまま保存された場合は、ランダム暗号文Ｅを復号すると０が現れる。
対偶をとると、０ではない平文しか現れなかった場合、すなわち復号しても０が現れなかった場合は、類似度Ｓｉの値は分からずに、類似度Ｓｉが閾値以内ではなかったことのみが分かる。
【００７６】
＜結果送信処理Ｓ８０９＞
結果送信部５０５３は、平文ランダム化処理Ｓ８０８により生成されたランダム暗号文５０５２０の集合を用いて、類似度が閾値θ以内であるか否かを表す暗号化検索結果５００１を生成し、生成した暗号化検索結果５００１を送信する結果送信処理Ｓ８０９を実行する。
結果送信部５０５３は、平文ランダム化処理Ｓ８０８により生成されたランダム暗号文の集合｛Ｃ０，Ｃ１，・・・，Ｃθ｝を暗号化検索結果５００１として検索装置４００に送信する。
【００７７】
＜検索装置４００の処理＞
Ｓ８１０において、受信部４０１は、結果送信処理Ｓ８０９で送信された暗号化検索結果５００１、すなわちランダム暗号文の集合｛Ｃ０，Ｃ１，・・・，Ｃθ｝を受信する。
【００７８】
Ｓ８１１において、復号部４０６は、鍵保管部４０２に保管されている秘密鍵ＳＫを用いて、結果送信処理Ｓ８０９で受信した暗号化検索結果｛Ｃ０，Ｃ１，・・・，Ｃθ｝を復号して、検索結果４０６１を得る。
【００７９】
Ｓ８１２において、出力部４０７は、検索結果４０６１に基づいて、複数の平文に値が０の平文があるか否かを判定し、値が０の平文があると判定した場合に類似度が閾値θ以内であることを示す検索結果情報４０７１を出力する。また、出力部４０７は、複数の平文に値が０の平文がないと判定した場合に類似度が閾値θより大きいことを示す検索結果情報４０７１を出力する。
また、出力部４０７は、複数の平文の中に値が０の平文があると判定した場合に、複数の平文における値が０の平文の順番を取得する。出力部４０７は、取得した順番を類似度と特定し、特定した類似度を出力してもよい。
Ｓ８１２により、秘匿検索システム１００の検索処理は終了する。
【００８０】
＜検索処理の具体例１０の説明＞
ここで、上述した具体例１の準同型暗号に基づき、本実施の形態の検索処理Ｓ１３０の具体例１０について説明する。ここでは、保管データを（０，０，１）、検索データを（０，０，０）、θ＝１として説明する。このときの保管データと検索データとのユークリッド２乗距離は１である。本実施の形態では、データ検索者に保管データと検索データの類似度が１であることを伝えたい。
【００８１】
Ｓ８０１では、入力部４０３は、（０，０，０）をデータ検索者の検索データとして受け取る。
Ｓ８０２では、暗号化部４０４は、公開鍵ＰＫを用いて、検索暗号化データＥ（ＰＫ，０，０，０）＝（Ｅ（ＰＫ，０），Ｅ（ＰＫ，０），Ｅ（ＰＫ，０））を計算する。
Ｓ８０３では、検索データ送信部４０５は、検索暗号化データＥ（ＰＫ，０，０，０）を管理装置５００へ送信する
Ｓ８０４では、データ受信部５０１は、検索暗号化データＥ（ＰＫ，０，０，０）を受信する。
【００８２】
Ｓ８０５では、暗号化類似度計算部５０４は、保管暗号化データＥ（ＰＫ，０，０，１）＝（Ｅ（ＰＫ，０），Ｅ（ＰＫ，０），Ｅ（ＰＫ，１））を読み出す。
Ｓ８０６では、暗号化類似度計算部５０４は、暗号化類似度Ｅ（ＰＫ，１）を計算する。
【００８３】
Ｓ８０７では、類似暗号文生成部５０５１は、準同型減算を行って、Ｅ（ＰＫ，１）から２個の暗号文Ｅ（ＰＫ，１−０）＝Ｅ（ＰＫ，１）及びＥ（ＰＫ，１−１）＝Ｅ（ＰＫ，０）を生成する。つまり、｛ｃ０，ｃ１｝＝｛Ｅ（ＰＫ，１），Ｅ（ＰＫ，０）｝を生成する。
【００８４】
Ｓ８０８では、平文ランダム化部５０５２は、０でない乱数ｒ０とｒ１を生成し、準同型加算を行って、次の式１及び式２のように｛Ｃ０，Ｃ１｝を計算する。
式１：Ｃ０＝Ｅ（ＰＫ，Ｒ０）＝ｒ０×ｃ０＝Ｅ（ＰＫ，１）◇・・・◇Ｅ（ＰＫ，１）＝Ｅ（ＰＫ，ｒ０）
式２：Ｃ１＝Ｅ（ＰＫ，Ｒ１）＝ｒ１×ｃ１＝Ｅ（ＰＫ，０）◇・・・◇Ｅ（ＰＫ，０）＝Ｅ（ＰＫ，０）
【００８５】
Ｓ８０９では、結果送信部５０５３は、｛Ｅ（ＰＫ，ｒ０），Ｅ（ＰＫ，０）｝を送信する。
Ｓ８１０では、受信部４０１は、｛Ｅ（ＰＫ，ｒ０），Ｅ（ＰＫ，０）｝を受信する。
Ｓ８１１では、復号部４０６は、秘密鍵ＳＫを用いて、Ｅ（ＰＫ，ｒ０）とＥ（ＰＫ，０）を復号して、平文としてｒ０と０を得る。
Ｓ８１２では、出力部４０７は、復号して０が現れたので、保管暗号化データの平文（０，０，１）と検索データ（０，０，０）の類似度（ユークリッド２乗距離）が１であることを表す検索結果情報４０７１を表示装置等に表示する。データ検索者は、表示された検索結果情報４０７１から、類似度（ユークリッド２乗距離）が１であることが分かる。
【００８６】
＜検索処理の具体例２０の説明＞
次に、検索処理の具体例１０とは異なる例として、検索処理の具体例２０について説明する。ここでは、保管データを（０，１，１）、検索データを（０，０，０）、θ＝１を説明する。このとき、保管データ（０，１，１）と検索データ（０，０，０）とのユークリッド２乗距離は２である。本実施の形態では、類似度が閾値θ以上であるため、データ検索者には、保管データと検索データの類似度は閾値より大きいという事実のみを伝えたい。
【００８７】
Ｓ８０１からＳ８０５の処理は省略する。
Ｓ８０６では、暗号化類似度計算部５０４は、暗号化類似度としてＥ（ＰＫ，２）を計算する。
Ｓ８０７では、平文ランダム化部５０５２は、Ｅ（ＰＫ，２−０）＝Ｅ（ＰＫ，２）及びＥ（ＰＫ，２−１）＝Ｅ（ＰＫ，１）を生成する。
Ｓ８０８では、平文ランダム化部５０５２は、乱数ｒ０とｒ１を生成し、準同型加算を行って、Ｃ０＝Ｅ（ＰＫ，Ｒ０）＝Ｅ（ＰＫ，２×ｒ０）とＣ１＝Ｅ（ＰＫ，Ｒ１）＝Ｅ（ＰＫ，ｒ１）を生成する。
【００８８】
Ｓ８０９では、結果送信部５０５３は、｛Ｅ（ＰＫ，２×ｒ０），Ｅ（ＰＫ，ｒ１）｝を送信する。
Ｓ８１０では、受信部４０１は、｛Ｅ（ＰＫ，２×ｒ０），Ｅ（ＰＫ，ｒ１）｝を受信する。
Ｓ８１１では、復号部４０６は、秘密鍵ＳＫを用いて、Ｅ（ＰＫ，２×ｒ０）とＥ（ＰＫ，ｒ１）とを復号して、平文として２×ｒ０とｒ１を得る。
Ｓ８１２では、出力部４０７は、復号しても０が現れないため、保管暗号化データの平文（０，１，１）と検索データ（０，０，０）の類似度（ユークリッド２乗距離）が閾値θより大きいことを表す検索結果情報４０７１を表示する。このとき、類似度そのものの値（＝２）は検索処理の過程で現れず、表示されない。よって、データ検索者は復号しても乱数２×ｒ０及びｒ１しか得ることができない。したがって、データ検索者は、保管データと検索データの類似度は閾値１より大きいという事実のみがわかる。
【００８９】
なお、上記の例は類似度としてユークリッド２乗距離を用いて説明したが、他の類似度の指標を用いてもよい。具体的には、ＬｐノルムあるいはＴｖｅｒｓｋｙ係数などでも、本実施の形態で説明したような方法を用いて、保管データと検索データをともに暗号化したまま実行できる。
【００９０】
図１０は、本実施の形態に係る秘匿検索システム１００の削除処理Ｓ１４０を示すフローチャートである。
図１０のＳ９０１からＳ９０４は、登録装置３００と管理装置５００とが実行する処理である。Ｓ９０１からＳ９０２は登録装置３００によって実行される処理である。Ｓ９０３からＳ９０４は管理装置５００によって実行される処理である。
【００９１】
＜登録装置３００の処理＞
Ｓ９０１において、入力部３０３は、データ登録者から削除したい保管暗号化データについての削除対象データ識別子を受け取る。上述のように、削除対象データ識別子は、削除対象の保管データを識別できる情報であれば何でもよい。
Ｓ９０２において、データ送信部３０５は、Ｓ９０１で入力された削除対象データ識別子を管理装置５００へ送信する。
【００９２】
＜管理処理５００の処理＞
Ｓ９０３において、データ受信部５０１は、Ｓ９０２で登録装置３００から送信されてきた削除対象データ識別子を受信する。
Ｓ９０４において、データ保管部５０３は、Ｓ９０３で受信した削除対象データ識別子に基づき、保管している保管暗号化データを削除する。
Ｓ９０４により、秘匿検索システム１００の削除処理は終了する。
【００９３】
＊＊＊本実施の形態に係る効果の説明＊＊＊
本実施の形態は、以下のような効果を奏する。
本実施の形態に係る秘匿検索システム１００によれば、保管データを暗号化して保管しているので、たとえ管理装置５００から保管暗号化データが漏洩しても、保管データの中身そのものを知られることはない。
また、本実施の形態に係る秘匿検索システム１００によれば、検索データのみならず保管データも暗号化したまま処理ができるため、より安全性が高い秘匿類似度検索を達成できる。
また、本実施の形態に係る秘匿検索システム１００によれば、公開鍵暗号を用いても秘匿類似度検索を達成できるため、データ登録者とデータ検索者との間で秘密鍵を共有することがなく、データ登録者とデータ検索者との役割を分離することができる。
【００９４】
また、本実施の形態に係る秘匿検索システム１００によれば、検索装置の出力部は、類似度がある閾値以内であれば類似度の正確な値を出力し、類似度が閾値を超えれば閾値を超えたという情報のみ出力する。したがって、データ検索者は、類似度が閾値を超えている場合に類似度の正確な値を知ることができず、類似度から保管暗号化データの平文を推測することはできない。
【００９５】
また、本実施の形態に係る秘匿検索システム１００では、類似暗号文をいくつか生成し、それらの類似暗号文に対して特殊なランダム化をすることにより、類似度がある閾値以内であれば類似度の正確な値を出力し、類似度が閾値を超えれば閾値を超えたという情報のみ出力することができる。
また、本実施の形態に係る秘匿検索システム１００では、管理装置は保管データと検索データとをともに暗号化したまま類似度の暗号文を計算でき、またその暗号文を攪乱することにより、類似度が閾値以内か否かのみの情報のみを出力することができる。
【００９６】
以上のように、本実施の形態に係る秘匿検索システム１００によれば、平文情報を一切用いることなく、保管暗号化データと検索暗号化データとから類似度計算ができる。さらに、本実施の形態に係る秘匿検索システム１００によれば、データ検索者に対して、類似度そのものを公開せず、類似度が閾値以内であれば公開する、もしくは閾値以内か否かのみを公開できる。
【００９７】
＊＊＊他の構成＊＊＊
秘匿検索システム１００は、複数の鍵生成装置２００を備えていてもよい。また、秘匿検索システム１００は、１つの登録装置３００のみを備えていてもよい。また、秘匿検索システム１００は、１つの検索装置４００のみを備えていてもよい。秘匿検索システム１００は、複数の管理装置５００を備えていてもよい。
【００９８】
鍵生成装置２００と、複数の登録装置３００と、複数の検索装置４００と、管理装置５００とのそれぞれは、ネットワーク１０１を経由して接続されずに、同じ企業内に敷設されたＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）内に設置されていてもよい。
【００９９】
同じＰＣ内に、鍵生成装置２００と登録装置３００と検索装置４００との少なくとも２つが同時に含まれている構成でも構わない。
【０１００】
実施の形態２．
本実施の形態では、主に、実施の形態１と異なる点について説明する。
実施の形態１に係る秘匿検索システム１００では、保管データと検索データとの類似度が閾値以内であれば、データ検索者が類似度そのものを知ることができた。しかし、本実施の形態では、類似度が閾値以内であっても、データ検索者は類似度が閾値以内であったことのみしか知ることができないようにすることを目的とする秘匿検索システム１００について説明する。
【０１０１】
＊＊＊構成の説明＊＊＊
図１１は、本実施の形態に係る管理装置５００の構成を示すブロック図である。
本実施の形態において、実施の形態１で説明した構成部と同様の機能を有する構成部には同一の符号を付し、その説明を省略する。
【０１０２】
本実施の形態では、結果送信部５０５３は、暗号文攪乱部５０５３１と、送信部５０５３２とを備える。
暗号文攪乱部５０５３１は、平文ランダム化部５０５２により生成されたランダム暗号文５０５２０の集合を攪乱し、攪乱したランダム暗号文５０５２０の集合を攪乱ランダム暗号文５００２として生成する。
具体的には、暗号文攪乱部５０５３１は、ランダム暗号文５０５２０の集合において、ランダム暗号文５０５２０の集合におけるランダム暗号文５０５２０の順序を変更することによりランダム暗号文５０５２０の集合を攪乱する。暗号文攪乱部５０５３１は、順序を変更したランダム暗号文５０５２０の集合を攪乱ランダム暗号文５００２として生成する。
【０１０３】
暗号文攪乱部５０５３１は、鍵保管部５０２に保管されている公開鍵ＰＫを読み出し、平文ランダム化部５０５２から受け取ったランダム暗号文Ｅ（ＰＫ，Ｒ１，．．．，Ｒｎ）に対して、攪乱処理を行って攪乱ランダム暗号文５００２を生成する。攪乱ランダム暗号文５００２は１つの場合もあるし、複数の場合もある。
なお、暗号文攪乱部５０５３１の処理は、暗号化検索結果を復号しても類似度そのものが現れないようにするために実行される。つまり、類似度がある閾値以内か否かのみがわかるような暗号文に変換するための最終処理である。具体的には、ランダム暗号文５０５２０の集合の各ランダム暗号文の順番、すなわち順序をランダムに置換すること、あるいは、ランダム暗号文間の成分をランダムに交換すること、あるいは、準同型演算を行ってランダム暗号文を１つの暗号文に結合することなどを行う。これらの具体的処理については後述する。
【０１０４】
送信部５０５３２は、暗号文攪乱部５０５３１により生成された攪乱ランダム暗号文５００２の集合を暗号化検索結果５００１として検索装置４００に送信する。
検索装置４００の出力部４０７は、複数の平文に値が０の平文があるか否かを判定し、値が０の平文があると判定した場合に類似度が閾値θ以内であることを表す検索結果情報４０７１を出力する。また、検索装置４００の出力部４０７は、複数の平文に値が０の平文がないと判定した場合には類似度が閾値θより大きいことを表す検索結果情報４０７１を出力する。
【０１０５】
＊＊＊動作の説明＊＊＊
図１２は、本実施の形態における秘匿検索システム１００の検索処理Ｓ１３０ａを示すフローチャートである。
本実施の形態では、置換関数π：｛０，１，・・・，θ｝→｛０，１，・・・，θ｝を用いて検索処理を実行することにより、類似度を知られることを困難とし、安全性をより向上させる秘匿検索システム１００について説明する。
本実施の形態の秘匿検索システム１００の動作において、実施の形態１と異なる点は検索処理の一部のみである。
【０１０６】
図１２のＳ１００１からＳ１０１３は、検索装置４００と管理装置５００が実行する処理である。Ｓ１００１からＳ１００３及びＳ１０１１からＳ１０１３は検索装置４００によって実行される処理である。Ｓ１００４からＳ１０１０は管理装置５００によって実行される処理である。
なお、本実施の形態の検索処理Ｓ１３０ａにおけるＳ１００１からＳ１００８は、実施の形態１のＳ８０１からＳ８０８と同様の処理であるため、ここでは説明を省略する。
【０１０７】
＜管理装置５００の処理＞
Ｓ１００９において、暗号文攪乱部５０５３１は、Ｓ１００８で生成したランダム暗号文の集合｛Ｃ０，Ｃ１，・・・，Ｃθ｝に対して、ランダム暗号文の順序変更をランダムに行い、攪乱ランダム暗号文の集合を生成する。なお、この順序変更を行った結果は、置換関数π：｛０，１，・・・，θ｝→｛０，１，・・・，θ｝を用いて、｛Ｃπ（０），Ｃπ（１），・・・，Ｃπ（θ）｝と表わすことができ、攪乱ランダム暗号文の順番もこのように並んでいるとする。なお、もしπ（ｉ）＝π（ｊ）ならばｉ＝ｊである。
【０１０８】
Ｓ１０１０において、送信部５０５３２は、Ｓ１００９で生成した攪乱ランダム暗号文の集合｛Ｃπ（１），Ｃπ（２），・・・，Ｃπ（θ）｝を暗号化検索結果５００１として検索装置４００へ送信する。
【０１０９】
＜検索装置４００の処理＞
Ｓ１０１１において、受信部４０１は、Ｓ１０１０で送信された暗号化検索結果｛Ｃπ（１），Ｃπ（２），・・・，Ｃπ（θ）｝を受信する。
Ｓ１０１２において、復号部４０６は、鍵保管部４０２に保管されている秘密鍵ＳＫを用いて、Ｓ１０１１で受信した暗号化検索結果｛Ｃπ（１），Ｃπ（２），・・・，Ｃπ（θ）｝を復号して、検索結果４０６１を得る。
Ｓ１０１３において、出力部４０７は、Ｓ１０１２で得られた検索結果を判定した結果に基づき、データ検索者に対して検索結果情報４０７１を出力する。
出力部４０７は、検索結果４０６１を用いて、攪乱ランダム暗号文の複数の平文に、０の平文があるか否かを判定し、０の平文があると判定した場合に類似度が閾値θ以内であることを表す検索結果情報４０７１を出力する。また、出力部４０７は、攪乱ランダム暗号文の複数の平文に、０の平文がないと判定した場合には類似度が閾値θより大きいことを表す検索結果情報４０７１を出力する。
Ｓ１０１３により、秘匿検索システム１００の検索処理は終了する。
【０１１０】
＜検索処理の具体例３０の説明＞
ここで、上述した具体例１の準同型暗号に基づき、本実施の形態の検索処理の具体例３０について説明する。ここでは、保管データを（０，０，１）、検索データを（０，０，０）、θ＝１として説明する。このときの保管データを（０，０，１）と検索データを（０，０，０）のユークリッド２乗距離は１である。本実施の形態では、データ検索者に、保管データと検索データの類似度が１以内であることのみを伝えたい。
【０１１１】
Ｓ１００６では、暗号化類似度計算部５０４は、暗号化類似度Ｅ（ＰＫ，１）を計算する。
Ｓ１００７では、類似暗号文生成部５０５１は、準同型減算を行って、Ｅ（ＰＫ，１）から２個の暗号文Ｅ（ＰＫ，１−０）＝Ｅ（ＰＫ，１）とＥ（ＰＫ，１−１）＝Ｅ（ＰＫ，０）を生成する。つまり、｛ｃ０，ｃ１｝＝｛Ｅ（ＰＫ，１），Ｅ（ＰＫ，０）｝を生成する。
【０１１２】
Ｓ１００８では、平文ランダム化部５０５２は、０でない乱数ｒ０とｒ１を生成し、準同型加算を行って、次の式３及び式４のように｛Ｃ０，Ｃ１｝を計算する。
式３：Ｃ０＝Ｅ（ＰＫ，Ｒ０）＝ｒ０×ｃ０＝Ｅ（ＰＫ，１）◇・・・◇Ｅ（ＰＫ，１）＝Ｅ（ＰＫ，ｒ０）
式４：Ｃ１＝Ｅ（ＰＫ，Ｒ１）＝ｒ１×ｃ１＝Ｅ（ＰＫ，０）◇・・・◇Ｅ（ＰＫ，０）＝Ｅ（ＰＫ，０）。
【０１１３】
Ｓ１００９では、暗号文攪乱部５０５３１は、置換πをランダムに決める。ここでは、π（０）＝１，π（１）＝０となるようなπを選んだとする。この時、｛Ｃ０，Ｃ１｝＝｛Ｅ（ＰＫ，ｒ０），Ｅ（ＰＫ，０）｝は｛Ｃπ（０），Ｃπ（１）｝＝｛Ｃ１，Ｃ０｝＝｛Ｅ（ＰＫ，０），Ｅ（ＰＫ，ｒ０）｝と順序が変更される。
Ｓ１０１０では、結果送信部５０５３は、｛Ｅ（ＰＫ，０），Ｅ（ＰＫ，ｒ０）｝を送信する。
【０１１４】
Ｓ１０１１では、受信部４０１は、｛Ｅ（ＰＫ，０），Ｅ（ＰＫ，ｒ０）｝を受信する。
Ｓ１０１２では、復号部４０６は、秘密鍵ＳＫを用いて、Ｅ（ＰＫ，０）とＥ（ＰＫ，ｒ０）を復号して、平文として０と乱数ｒ０を得る。
Ｓ１０１３では、出力部４０７は、復号して０が現れたので、保管暗号化データの平文（０，０，１）と検索データ（０，０，０）の類似度、すなわちユークリッド２乗距離が閾値θ以内、すなわち１以内であるという事実を表す検索結果情報４０７１を出力する。
【０１１５】
ここで、Ｓ１００９で暗号文攪乱部５０５３１により順序変更が実行されない場合、０番目の暗号文は暗号化類似度から０を引いた値、１番目の暗号文は暗号化類似度から１を引いた値、・・・、θ番目の暗号文は暗号化類似度からθを引いた値、であるとデータ検索者はいつも知ることになる。よって、復号してｊ番目に０が現れたとすると、データ検索者は類似度がｊであることが簡単にわかる。よって、Ｓ１００９で暗号文攪乱部５０５３１による順序変更を行うことにより、保管データと検索データとの類似度が閾値以内か否かだけを表す情報に変換することができる。
【０１１６】
＊＊＊本実施の形態に係る効果の説明＊＊＊
以上のように、本実施の形態に係る秘匿検索システム１００によれば、実施の形態１と同様な効果を得ることに加えて、データ検索者は、検索結果から、保管データと検索データの類似度が閾値以内か否かのみしか知ることができないため、より安全性が向上する。
【０１１７】
実施の形態３．
本実施の形態では、主に、実施の形態１，２と異なる点について説明する。
本実施の形態では、実施の形態２と同様の目的を達成するための秘匿検索方法であって実施の形態２とは異なる秘匿検索方法について説明する。
本実施の形態では、実施の形態２と同様に置換関数π：｛０，１，・・・，θ｝→｛０，１，・・・，θ｝を用いて、実施の形態２と同様に秘匿検索システムの安全性を向上させる方法について説明する。
本実施の形態の秘匿検索システムは実施の形態２とほぼ同じであり、検索処理の一部のみ異なっている。
【０１１８】
＊＊＊構成の説明＊＊＊
本実施の形態に係る秘匿検索システム１００の構成は、実施の形態２で説明したものと同様である。
本実施の形態において、実施の形態２で説明した構成部と同様の機能を有する構成部には同一の符号を付し、その説明を省略する。
【０１１９】
本実施の形態に係る暗号文攪乱部５０５３１は、ランダム暗号文５０５２０の集合における２つのランダム暗号文において、一方のランダム暗号文の成分と他方のランダム暗号文の成分とを交換することによりランダム暗号文５０５２０の集合を攪乱する。暗号文攪乱部５０５３１は、攪乱したランダム暗号文５０５２０の集合を攪乱ランダム暗号文５００２として生成する。
【０１２０】
＊＊＊動作の説明＊＊＊
図１３は、本実施の形態における秘匿検索システム１００の検索処理Ｓ１３０ｂを示すフローチャートである。
図１３のＳ１１０１からＳ１１１３は、検索装置４００と管理装置５００が実行する処理である。Ｓ１１０１からＳ１１０３及びＳ１１１１からＳ１１１３は検索装置４００によって実行される処理である。Ｓ１１０４からＳ１１１０は管理装置５００によって実行される処理である。
なお、本検索処理におけるＳ１１０１からＳ１１０８は、実施の形態２のＳ１００１からＳ１００８と同様の処理であるため、ここでは説明を省略する。
【０１２１】
＜管理装置５００の処理＞
Ｓ１１０９において、暗号文攪乱部５０５３１は、Ｓ１１０８で生成したランダム暗号文の集合｛Ｃ０，Ｃ１，・・・，Ｃθ｝に対して、あるランダム暗号文Ｃｉ＝Ｅ（ＰＫ，Ｒｉ１，Ｒｉ２，・・・，Ｒｉｎ）の平文（Ｒｉ１，Ｒｉ２，・・・，Ｒｉｎ）と、あるランダム暗号文Ｃｊ＝Ｅ（ＰＫ，Ｒｊ１，Ｒｊ２，・・・，Ｒｊｎ）の平文（Ｒｊ１，Ｒｊ２，・・・，Ｒｊｎ）の同じ位置の成分をランダムに交換する。暗号文攪乱部５０５３１は、このような交換を繰り返すことで攪乱ランダム暗号文の集合｛ＲＣ１，ＲＣ２，・・・，ＲＣｎ｝を生成する。
具体的には、暗号文攪乱部５０５３１は、ＣｉのＲｉ１とＣｊのＲｊ１のみを交換して新しい暗号文ＲＣｉ＝Ｅ（ＰＫ，Ｒｊ１，Ｒｉ２，・・・，Ｒｉｎ）及びＲＣｊ＝Ｅ（ＰＫ，Ｒｉ１，Ｒｊ２，・・・，Ｒｊｎ）を生成する。暗号文攪乱部５０５３１は、このような処理を繰り返して、攪乱ランダム暗号文｛ＲＣ１，ＲＣ２，・・・，ＲＣｎ｝を生成する。
【０１２２】
Ｓ１１１０において、送信部５０５３２は、Ｓ１１０９で生成した攪乱ランダム暗号文の集合｛ＲＣ１，ＲＣ２，・・・，ＲＣｎ｝を暗号化検索結果５００１として検索装置４００へ送信する。
【０１２３】
＜検索装置４００の処理＞
Ｓ１１１１において、受信部４０１は、Ｓ１１１０で送信された暗号化検索結果｛ＲＣ１，ＲＣ２，・・・，ＲＣｎ｝を受信する。
Ｓ１１１２において、復号部４０６は、鍵保管部４０２に保管されている秘密鍵ＳＫを用いて、Ｓ１０１１で受信した暗号化検索結果｛ＲＣ１，ＲＣ２，・・・，ＲＣｎ｝を復号して、検索結果４０６１を得る。
Ｓ１１１３において、出力部４０７は、Ｓ１１１２で得られた検索結果４０６１に基づき、検索結果情報４０７１を出力する。
Ｓ１１１３により、秘匿検索システム１００の検索処理Ｓ１３０ｂは終了する。
【０１２４】
＜検索処理の具体例４０の説明＞
ここで、上述した具体例１の準同型暗号に基づき、本実施の形態の検索処理Ｓ１３０ｂの具体例４０について説明する。ここでは、保管データを（０，１，２）、検索データを（０，０，０）、θ＝２として説明する。このとき、保管データ（０，１，２）と検索データ（０，０，０）とのユークリッド２乗距離は１０である。また、３＝１０と２進数表現すれば、保管データ（０，１，２）と検索データ（０，０，０）のハミング距離は２である。ここでＳ１＝１０，Ｓ２＝２とおく。本実施の形態では、データ検索者に対して、保管データと検索データの類似度として、ユークリッド２乗距離は２より大きく、ハミング距離が２以内であることを伝えたい。
【０１２５】
Ｓ１１０６では、暗号化類似度計算部５０４は、暗号化類似度Ｅ（ＰＫ，Ｓ１，Ｓ２）＝（Ｅ（ＰＫ，１０），Ｅ（ＰＫ，２））を計算する。
Ｓ１１０７では、類似暗号文生成部５０５１は、準同型減算を行って、Ｅ（ＰＫ，Ｓ１，Ｓ２）＝（Ｅ（ＰＫ，１０），Ｅ（ＰＫ，２））からＥ（ＰＫ，１０，２）＝（Ｅ（ＰＫ，１０），Ｅ（ＰＫ，２）），Ｅ（ＰＫ，９，１）＝（Ｅ（ＰＫ，９），Ｅ（ＰＫ，１）），Ｅ（ＰＫ，８，０）＝（Ｅ（ＰＫ，８），Ｅ（ＰＫ，０））を生成する。つまり、｛ｃ０，ｃ１，ｃ２｝＝｛Ｅ（ＰＫ，１０，２），Ｅ（ＰＫ，９，１），Ｅ（ＰＫ，８，０）｝を生成する。
【０１２６】
Ｓ１１０８では、平文ランダム化部５０５２は、０でない乱数を生成し、準同型加算を行って、次のように｛Ｃ０，Ｃ１，Ｃ２｝を計算する。
Ｃ０＝Ｅ（ＰＫ，Ｒ０，Ｒ１）
Ｃ１＝Ｅ（ＰＫ，Ｒ２，Ｒ３）
Ｃ２＝Ｅ（ＰＫ，Ｒ４，０）
ただし、Ｒ０，Ｒ１，Ｒ２，Ｒ３，Ｒ４は乱数である。
【０１２７】
Ｓ１１０９では、暗号文攪乱部５０５３１は、１番目の成分をランダムに置換するπ１と、２番目の成分をランダムに置換するπ２として、π１（１）＝２，π１（２）＝１，π１（３）＝３，及びπ２（１）＝３，π２（２）＝２，π１（３）＝２を選んだとする。この時、｛ＲＣ０，ＲＣ１，ＲＣ２｝＝｛Ｅ（ＰＫ，Ｒ２，０），Ｅ（ＰＫ，Ｒ０，Ｒ１），Ｅ（ＰＫ，Ｒ４，Ｒ３）｝となる。この暗号文同士の成分の交換は暗号文を単純入れ替えればよいため、簡単に実行可能である。
【０１２８】
Ｓ１１１０では、結果送信部５０５３は、｛Ｅ（ＰＫ，Ｒ２，０），Ｅ（ＰＫ，Ｒ０，Ｒ１），Ｅ（ＰＫ，Ｒ４，Ｒ３）｝を送信する。
Ｓ１１１１では、受信部４０１は、｛Ｅ（ＰＫ，Ｒ２，０），Ｅ（ＰＫ，Ｒ０，Ｒ１），Ｅ（ＰＫ，Ｒ４，Ｒ３）｝を受信する。
Ｓ１１１２では、復号部４０６は、秘密鍵ＳＫを用いて、Ｅ（ＰＫ，Ｒ２，０），Ｅ（ＰＫ，Ｒ０，Ｒ１），Ｅ（ＰＫ，Ｒ４，Ｒ３）を復号する。復号部４０６は、Ｓ１に関する平文としてＲ２、Ｒ０、Ｒ４を得て、Ｓ２に関する平文として０、Ｒ１、Ｒ３を得る。
【０１２９】
Ｓ１１１３では、出力部４０７は、Ｓ１に関する平文として０が現われなかったので、保管データと検索データのユークリッド２乗距離に関する類似度が閾値より大きい、すなわち２より大きいことを表す検索結果情報４０７１を出力する。また、出力部４０７は、Ｓ２に関する平文として０が現れたので、保管データと検索データのハミング距離に関する類似度が閾値以内、すなわち２以内であることを表す検索結果情報４０７１を出力する。
【０１３０】
＊＊＊本実施の形態に係る効果の説明＊＊＊
以上のように、本実施の形態に係る秘匿検索システム１００によれば、実施の形態１と同様な効果を得ることに加えて、データ検索者は、検索結果から、保管データと検索データの類似度が閾値以内か否かのみしかわからないため、より安全性を向上できる。
また、本実施の形態では、実施の形態２とは異なる攪乱手法を用いて、実施の形態２と同様な効果を得ることができる。
【０１３１】
実施の形態４．
本実施の形態では、主に、実施の形態１から３と異なる点について説明する。
本実施の形態では、実施の形態２，３と同様の目的を達成するための秘匿検索方法であって実施の形態２，３とは異なる手法を用いた秘匿検索方法について説明する。
また、本実施の形態に係る秘匿検索システムでは、実施の形態１から３に比べて、暗号化検索結果のサイズを小さくできるという利点を持つ。一方で、本実施の形態に係る秘匿検索システムでは、準同型乗算がθ＋１回できる準同型暗号を用いることが必要となる。
本実施の形態の秘匿検索システムは実施の形態３とほぼ同じであり、検索処理の一部のみ異なっている。
【０１３２】
＊＊＊構成の説明＊＊＊
本実施の形態に係る秘匿検索システム１００の構成は、実施の形態２で説明したものと同様である。
本実施の形態において、実施の形態２で説明した構成部と同様の機能を有する構成部には同一の符号を付し、その説明を省略する。
【０１３３】
暗号文攪乱部５０５３１は、ランダム暗号文５０５２０の集合に含まれる全てのランダム暗号文を準同型乗算により結合することによりランダム暗号文５０５２０の集合を攪乱する。暗号文攪乱部５０５３１は、ランダム暗号文５０５２０の集合を結合した１つの結合暗号文を攪乱ランダム暗号文５００２として生成する。
【０１３４】
＊＊＊動作の説明＊＊＊
図１４は、本実施の形態における秘匿検索システム１００の検索処理Ｓ１３０ｃを示すフローチャートである。
図１４のＳ１２０１からＳ１２１３は、検索装置４００と管理装置５００が実行する処理である。Ｓ１２０１からＳ１２０３及びＳ１２１１からＳ１２１３は検索装置４００によって実行される処理である。Ｓ１２０４からＳ１２１０は管理装置５００によって実行される処理である。
なお、本実施の形態の検索処理Ｓ１３０ｃにおけるＳ１２０１からＳ１２０８は、実施の形態３のＳ１１０１からＳ１１０８と同様の処理であるため、ここでは説明を省略する。
【０１３５】
Ｓ１２０９において、暗号文攪乱部５０５３１は、鍵保管部５０２に保管されている公開鍵ＰＫを用いて、Ｓ１２０８で生成したランダム暗号文の集合｛Ｃ０，Ｃ１，・・・，Ｃθ｝に対して、結合暗号文ＣＣ＝Ｃ０◇Ｃ１◇・・・◇Ｃθ＝Ｅ（ＰＫ，Ｚ１，Ｚ２，・・・，Ｚｎ）を計算する。ただし、Ｃｉ＝Ｅ（ＰＫ，Ｒｉ１，Ｒｉ２，・・・，Ｒｉｎ）（ｉは０≦ｉ≦θを満たす整数）、Ｚｊ＝Ｒ０ｊ×Ｒ１ｊ×・・・×Ｒθｊ（ｉは０≦ｉ≦θを満たす整数）とする。
ここで、もしＲｉｊ＝０となる（ｉ，ｊ）があれば、Ｚｊ＝Ｒ０ｊ×Ｒ１ｊ×・・・×Ｒθｊ＝０となることに注意する。
【０１３６】
Ｓ１２１０において、結果送信部５０５３は、Ｓ１２０９で生成した結合暗号文ＣＣを暗号化検索結果５００１として検索装置４００へ送信する。
【０１３７】
Ｓ１２１１において、受信部４０１は、Ｓ１２１０で送信された暗号化検索結果ＣＣを受信する。
Ｓ１２１２において、復号部４０６は、鍵保管部４０２に保管されている秘密鍵ＳＫを用いて、Ｓ１２１１で受信した暗号化検索結果ＣＣを復号して、検索結果Ｚ１，Ｚ２，・・・，Ｚｎを得る。
Ｓ１２１３において、出力部４０７は、Ｓ１２１２で得られた検索結果を出力する。
【０１３８】
ここで、準同型乗算がθ＋１回できる準同型暗号に基づき、本実施の形態に係る検索処理Ｓ１３０ｃの例を説明する。ここでは、保管データを（０，１，２）、検索データを（０，０，０）、θ＝２として説明する。このとき、保管データ（０，１，２）と検索データ（０，０，０）とのユークリッド２乗距離は１０である。また、３＝１０と２進数表現すれば、保管データ（０，１，２）と検索データ（０，０，０）とのハミング距離は２である。ここでＳ１＝１０，Ｓ２＝２とおく。本実施の形態では、データ検索者に対して、保管データと検索データの類似度として、ユークリッド２乗距離は２より大きく、ハミング距離が２以内であることを伝えたい。
【０１３９】
Ｓ１２０６では、暗号化類似度計算部５０４は、暗号化類似度Ｅ（ＰＫ，Ｓ１，Ｓ２）＝（Ｅ（ＰＫ，１０），Ｅ（ＰＫ，２））を計算する。
Ｓ１２０７では、類似暗号文生成部５０５１は、準同型減算を行って、Ｅ（ＰＫ，Ｓ１，Ｓ２）＝（Ｅ（ＰＫ，１０），Ｅ（ＰＫ，２））からＥ（ＰＫ，１０，２）＝（Ｅ（ＰＫ，１０），Ｅ（ＰＫ，２）），Ｅ（ＰＫ，９，１）＝（Ｅ（ＰＫ，９），Ｅ（ＰＫ，１）），Ｅ（ＰＫ，８，０）＝（Ｅ（ＰＫ，８），Ｅ（ＰＫ，０））を生成し、｛ｃ０，ｃ１，ｃ２｝＝｛Ｅ（ＰＫ，１０，２），Ｅ（ＰＫ，９，１），Ｅ（ＰＫ，８，０）｝とおく。
Ｓ１２０８では、平文ランダム化部５０５２は、０でない乱数を生成し、準同型加算を行って、次のように｛Ｃ０，Ｃ１，Ｃ２｝を計算する。
Ｃ０＝Ｅ（ＰＫ，Ｒ０，Ｒ１）
Ｃ１＝Ｅ（ＰＫ，Ｒ２，Ｒ３）
Ｃ２＝Ｅ（ＰＫ，Ｒ４，０）
ただし、Ｒ０，Ｒ１，Ｒ２，Ｒ３，Ｒ４は乱数である。
【０１４０】
Ｓ１２０９では、暗号文攪乱部５０５３１は、準同型乗算を行って、結合暗号文ＣＣ＝Ｅ（ＰＫ，Ｒ０×Ｒ２×Ｒ４，Ｒ１×Ｒ３×０）＝Ｅ（ＰＫ，Ｒ，０）を計算する。ただし、Ｒ＝Ｒ０×Ｒ２×Ｒ４とする。
【０１４１】
Ｓ１２１０では、送信部５０５３２は、ＣＣ＝Ｅ（ＰＫ，Ｒ，０）を送信する。
Ｓ１２１１では、受信部４０１は、Ｅ（ＰＫ，Ｒ，０）を受信する。
Ｓ１２１２では、復号部４０６は、秘密鍵ＳＫを用いて、Ｅ（ＰＫ，Ｒ，０）を復号して、Ｓ１に関する平文としてＲを得て、Ｓ２に関する平文として０を得る。
Ｓ１２１３では、出力部４０７は、Ｓ１に関する平文として乱数Ｒが現れたので、保管データと検索データのユークリッド２乗距離に関する類似度が閾値より大きい、すなわち２より大きいことを表す検索結果情報４０７１を出力する。また、出力部４０７は、Ｓ２に関する平文として０が現れたので、保管データと検索データのハミング距離に関する類似度が閾値以内、すなわち２以内であることを表す検索結果情報４０７１を出力する。
【０１４２】
＊＊＊本実施の形態に係る効果の説明＊＊＊
以上のように、本実施の形態に係る秘匿検索システム１００によれば、実施の形態２及び実施の形態３と同様な効果を得ることに加えて、準同型演算を用いて暗号文を結合するといった攪乱手法を用いて、実施の形態１から３と比べて暗号化検索結果のサイズを小さくすることが可能である。
【０１４３】
＊＊＊ハードウェア構成例の説明＊＊＊
最後に、図１５を用いて、鍵生成装置２００と登録装置３００と検索装置４００と管理装置５００，５００ａとの各装置のハードウェア構成の一例について説明する。
鍵生成装置２００と登録装置３００と検索装置４００と管理装置５００，５００ａとの各装置はコンピュータである。
鍵生成装置２００と登録装置３００と検索装置４００と管理装置５００，５００ａとの各装置は、プロセッサ９０１、補助記憶装置９０２、メモリ９０３、通信装置９０４、入力インタフェース９０５、ディスプレイインタフェース９０６といったハードウェアを備える。
プロセッサ９０１は、信号線９１０を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
【０１４４】
入力インタフェース９０５は、入力装置９０７に接続されている。
ディスプレイインタフェース９０６は、ディスプレイ９０８に接続されている。
【０１４５】
プロセッサ９０１は、プロセッシングを行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）である。
プロセッサ９０１は、具体例は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。
補助記憶装置９０２は、具体例は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュメモリ、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）である。
メモリ９０３は、具体例は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。
【０１４６】
通信装置９０４は、データを受信するレシーバー９０４１及びデータを送信するトランスミッター９０４２を含む。
通信装置９０４は、具体例は、通信チップ又はＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）である。
【０１４７】
入力インタフェース９０５は、入力装置９０７のケーブル９１１が接続されるポートである。
入力インタフェース９０５は、具体例は、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）端子である。
ディスプレイインタフェース９０６は、ディスプレイ９０８のケーブル９１２が接続されるポートである。
ディスプレイインタフェース９０６は、具体例は、ＵＳＢ端子又はＨＤＭＩ（登録商標）（Ｈｉｇｈ  Ｄｅｆｉｎｉｔｉｏｎ  Ｍｕｌｔｉｍｅｄｉａ  Ｉｎｔｅｒｆａｃｅ）端子である。
入力装置９０７は、具体例は、マウス、キーボード又はタッチパネルである。
ディスプレイ９０８は、具体例は、ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）である。
【０１４８】
コンピュータが鍵生成装置２００の場合は、補助記憶装置９０２には、図２に示す鍵生成部及び鍵送信部の機能を実現するプログラムが記憶されている。
また、コンピュータが登録装置３００の場合は、補助記憶装置９０２には、図３に示す入力部、暗号化部、データ送信部、鍵受信部、鍵保管部の機能を実現するプログラムが記憶されている。
また、コンピュータが検索装置４００の場合は、補助記憶装置９０２には、図４に示す受信部、入力部、暗号化部、鍵保管部、検索データ送信部、復号部、出力部の機能を実現するプログラムが記憶されている。
また、コンピュータが管理装置５００の場合は、補助記憶装置９０２には、図５に示すデータ受信部、データ保管部、閾値保管部、鍵保管部、暗号化類似度計算部、類似暗号文生成部、平文ランダム化部、結果送信部の機能を実現するプログラムが記憶されている。
また、コンピュータが管理装置５００ａの場合は、補助記憶装置９０２には、図１１に示すデータ受信部、データ保管部、閾値保管部、鍵保管部、暗号化類似度計算部、類似暗号文生成部、平文ランダム化部、暗号文攪乱部、送信部の機能を実現するプログラムが記憶されている。
以下において、鍵生成装置２００と登録装置３００と検索装置４００と管理装置５００，５００ａとの各装置において列挙した構成部を、装置毎にまとめて「部」と表記する。
【０１４９】
なお、登録装置３００の入力部３０３、検索装置４００の入力部４０３は、入力インタフェース９０５及び入力装置９０７により実現されていてもよい。
また、検索装置４００の出力部４０７は、ディスプレイインタフェース９０６及びディスプレイ９０８により実現されていてもよい。
また、鍵生成装置２００の鍵送信部２０２、検索装置４００の検索データ送信部４０５、管理装置５００の結果送信部５０５３、管理装置５００ａの送信部５０５３２は、通信装置９０４により実現されていてもよい。
また、検索装置４００の受信部４０１、管理装置５００，５００ａのデータ受信部５０１は、通信装置９０４により実現されていてもよい。
また、登録装置３００の鍵保管部３０２、検索装置４００の鍵保管部４０２は、補助記憶装置９０２により実現されていてもよい。また、管理装置５００のデータ保管部５０３、鍵保管部５０２、閾値保管部５０６についても、補助記憶装置９０２により実現されていてもよい。
【０１５０】
「部」の機能を実現するプログラムは、１つのプログラムであってもよいし、複数のプログラムから構成されていてもよい。
このプログラムは、メモリ９０３にロードされ、プロセッサ９０１に読み込まれ、プロセッサ９０１によって実行される。
【０１５１】
更に、補助記憶装置９０２には、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）も記憶されている。
そして、ＯＳの少なくとも一部がメモリ９０３にロードされ、プロセッサ９０１はＯＳを実行しながら、「部」の機能を実現するプログラムを実行する。
図１５では、１つのプロセッサ９０１が図示されているが、鍵生成装置２００と登録装置３００と検索装置４００と管理装置５００，５００ａとの各装置が複数のプロセッサ９０１を備えていてもよい。
そして、複数のプロセッサ９０１が「部」の機能を実現するプログラムを連携して実行してもよい。
また、「部」の処理の結果を示す情報とデータと信号値と変数値との少なくともいずれかが、メモリ９０３、補助記憶装置９０２、又は、プロセッサ９０１内のレジスタ又はキャッシュメモリに記憶される。
また、「部」の機能を実現するプログラムは、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ（登録商標）ディスク、ＤＶＤ等の記憶媒体に記憶される。
【０１５２】
「部」を「プロセッシングサーキットリー」で提供してもよい。
また、「部」を「回路」又は「工程」又は「手順」又は「処理」に読み替えてもよい。
「回路」及び「プロセッシングサーキットリー」は、プロセッサ９０１だけでなく、ロジックＩＣ又はＧＡ（Ｇａｔｅ  Ａｒｒａｙ）又はＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）又はＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）といった他の種類の処理回路をも包含する概念である。
【０１５３】
なお、プログラムプロダクトと称されるものは、「部」として説明している機能を実現するプログラムが記録された記憶媒体及び記憶装置であり、見た目の形式に関わらず、コンピュータ読み取り可能なプログラムをロードしているものである。
【０１５４】
上記の実施の形態では、鍵生成装置２００と登録装置３００と検索装置４００と管理装置５００，５００ａとの各装置において、「部」の各々が独立した機能ブロックとして各装置を構成している。しかし、各装置は、上記のような構成でなくてもよく、各装置の構成は任意である。各装置の機能ブロックは、上記の実施の形態で説明した機能を実現することができれば、任意である。これらの機能ブロックを、他のどのような組み合わせ、あるいは任意のブロック構成で、鍵生成装置２００と登録装置３００と検索装置４００と管理装置５００，５００ａとの各装置を構成しても構わない。
また、鍵生成装置２００と登録装置３００と検索装置４００と管理装置５００，５００ａとの各装置は、１つの装置でなく、複数の装置から構成されたシステムでもよい。
【０１５５】
また、実施の形態１から４について説明したが、これらの４つの実施の形態のうち、複数を部分的に組み合わせて実施しても構わない。あるいは、これらの４つの実施の形態のうち、１つの実施の形態を部分的に実施しても構わない。その他、これらの４つの実施の形態を、全体としてあるいは部分的に、どのように組み合わせて実施しても構わない。
なお、上記の実施の形態は、本質的に好ましい例示であって、本発明、その適用物及び用途の範囲を制限することを意図するものではなく、必要に応じて種々の変更が可能である。
【符号の説明】
【０１５６】
１００  秘匿検索システム、１０１  ネットワーク、２００  鍵生成装置、２０１  鍵生成部、２０２  鍵送信部、３００  登録装置、３０１  鍵受信部、３０２  鍵保管部、３０３  入力部、３０４  暗号化部、３０５  データ送信部、４００  検索装置、４０１  受信部、４０２  鍵保管部、４０３  入力部、４０４  暗号化部、４０５  検索データ送信部、４０６  復号部、４０６１  検索結果、４０７  出力部、４０７１  検索結果情報、５００，５００ａ  管理装置、５００１  暗号化検索結果、５００２  攪乱ランダム暗号文、５０１  データ受信部、５０２  鍵保管部、５０３  データ保管部、５０４  暗号化類似度計算部、５０４１  暗号化類似度、５０５  暗号化結果送信部、５０５１  類似暗号文生成部、５０５１０  類似暗号文、５０５２  平文ランダム化部、５０５２０  ランダム暗号文、５０５３  結果送信部、５０５３１  暗号文攪乱部、５０５３２  送信部、５０６  閾値保管部、θ  閾値、６１０  保管データ、６２０  保管暗号化データ、７１０  検索データ、７２０  検索暗号化データ、９０１  プロセッサ、９０２  補助記憶装置、９０３  メモリ、９０４  通信装置、９０５  入力インタフェース、９０６  ディスプレイインタフェース、９０７  入力装置、９０８  ディスプレイ、９１０  信号線、９１１，９１２  ケーブル、９０４１  レシーバー、９０４２  トランスミッター、９１００  秘匿検索方法、９２００  秘匿検索プログラム、Ｓ１００  秘匿検索処理、Ｓ１１０  鍵生成処理、Ｓ１２０  登録処理、Ｓ１３０，Ｓ１３０ａ，Ｓ１３０ｂ，Ｓ１３０ｃ  検索処理、Ｓ８０６  暗号化類似度算出処理、Ｓ８０７  類似暗号文生成処理、Ｓ８０８  平文ランダム化処理、Ｓ８０９  結果送信処理、ＰＫ  公開鍵、ＳＫ  秘密鍵。
【要約】
準同型暗号により暗号化された保管データである保管暗号化データ（６２０）と、保管データの検索に用いる検索データであって準同型暗号により暗号化された検索データである検索暗号化データ（７２０）とを準同型演算することにより、保管データと検索データとの類似度が準同型暗号により暗号化された暗号化類似度（５０４１）を算出する暗号化類似度計算部（５０４）と、暗号化類似度（５０４１）を用いて類似度が閾値θ以内であるか否かを表す暗号化検索結果（５００１）を生成し、検索装置に送信する暗号化結果送信部（５０５）とを有する。【図１】
0005985123.tif 000002
【図２】
0005985123.tif 000003
【図３】
0005985123.tif 000004
【図４】
0005985123.tif 000005
【図５】
0005985123.tif 000006
【図６】
0005985123.tif 000007
【図７】
0005985123.tif 000008
【図８】
0005985123.tif 000009
【図９】
0005985123.tif 000010
【図１０】
0005985123.tif 000011
【図１１】
0005985123.tif 000012
【図１２】
0005985123.tif 000013
【図１３】
0005985123.tif 000014
【図１４】
0005985123.tif 000015
【図１５】
0005985123.tif 000016