(57)【要約】【課題】秘匿検索技術における利用者の鍵管理の手間や、鍵漏洩時の情報管理リスクを低減する。【解決手段】検索用のキーワードを一方向関数１１３Ａに適用して得た第２の情報と、乱数生成手段１１４により得られる第２の乱数との排他的論理和を算出し、当該算出結果である検索値と、データベース２２５における各登録値との排他的論理和を算出する処理と、検索値と各登録値との排他的論理和の算出結果を準同型関数に適用して得た値と、第２の乱数を準同型関数に適用して得た値との排他的論理和を算出し、当該算出結果を一方向関数１１３Ａに適用して得た値をキーに、データベース２２５における各登録値と対応付けされた一方向関数１１３Ａの出力値を検索し、検索結果を出力インターフェイスに出力する処理とを実行する情報処理装置２００から秘匿検索処理システム１０を構成する。【選択図】図１
2014119486.tif 000002
【特許請求の範囲】
【請求項１】
検索対象情報を一方向関数に適用して得られた第１の情報と第１の乱数との排他的論理和の値である登録値と、前記第１の乱数を所定の準同型関数に適用して得られる結果を前記一方向関数に適用した際の出力値とを対応付けて格納したデータベースを記憶する記憶部と、
入力インターフェイスで受け付けた検索用のキーワードを前記一方向関数に適用して得た第２の情報と、乱数生成手段により得られる第２の乱数との排他的論理和を算出し、当該算出結果である検索値と、前記データベースにおける各登録値との排他的論理和を算出する処理と、
前記検索値と前記各登録値との排他的論理和の算出結果を前記準同型関数に適用して得た値と、前記第２の乱数を前記準同型関数に適用して得た値との排他的論理和を算出し、当該算出結果を前記一方向関数に適用して得た値をキーに、前記データベースにおける各登録値と対応付けされた前記一方向関数の出力値を検索し、検索結果を出力インターフェイスに出力する処理とを実行する演算部と、
を備える情報処理装置を含むことを特徴とする秘匿検索処理システム。
【請求項２】
一方向関数および乱数生成手段を格納した記憶部と、
検索対象情報を前記一方向関数に適用して第１の情報を算出し、前記乱数生成手段により第１の乱数を生成し、前記第１の情報と前記第１の乱数との排他的論理和を算出し、当該算出結果である登録値を含む、前記データベースへの格納要求を前記情報処理装置に送信する処理と、
前記第１の乱数を所定の準同型関数に適用して得た結果を前記一方向関数に適用し、前記一方向関数の出力値を含む、前記登録値と対応付けた前記データベースへの格納要求を前記情報処理装置に送信する処理とを実行する演算部と、
を備える端末を更に含み、
前記情報処理装置の演算部は、
前記端末から前記登録値および前記出力値を受信して、記憶部のデータベースに格納する処理を更に実行するものである、
ことを特徴とする請求項１に記載の秘匿検索処理システム。
【請求項３】
前記端末の演算部は、
入力インターフェイスにて前記検索用のキーワードを受け付けて、当該受け付けたキーワードを前記一方向関数に適用して得た第２の情報と、前記乱数生成手段により得られる第２の乱数との排他的論理和を算出し、当該算出結果である検索値を前記情報処理装置に送信する処理と、
前記第２の乱数を前記準同型関数に適用して得た値を、前記情報処理装置に送信する処理とを更に実行するものであり、
前記情報処理装置の演算部は、
前記端末より前記検索値を受信し、当該検索値と、前記データベースにおける各登録値との排他的論理和を算出する処理と、
前記端末より、前記第２の乱数を前記準同型関数に適用して得た値を受信し、当該受信した値と、前記検索値と前記各登録値との排他的論理和の算出結果を前記準同型関数に適用して得た値との排他的論理和を算出し、当該算出結果を前記一方向関数に適用して得た値をキーに、前記データベースにおける各登録値と対応付けされた前記一方向関数の出力値を検索し、検索結果を前記端末に返信する処理とを実行するものである、
ことを特徴とする請求項２に記載の秘匿検索処理システム。
【請求項４】
前記端末の記憶部は、暗号化用の鍵を更に保持しており、
前記端末の演算部は、前記第２の乱数を前記準同型関数に適用して得た値を、前記鍵で暗号化し、当該暗号化結果を前記情報処理装置に送信する処理を更に実行するものであり、
前記情報処理装置の記憶部は、前記端末が保持する前記鍵と同じ鍵を保持しており、
前記情報処理装置の演算部は、
前記端末より受信した前記暗号化結果を前記鍵で復号化し、当該復号化した値と、前記検索値と前記各登録値との排他的論理和の算出結果を前記準同型関数に適用して得た値との排他的論理和を算出し、当該算出結果を前記一方向関数に適用して得た値をキーに、前記データベースにおける各登録値と対応付けされた前記一方向関数の出力値を検索し、検索結果を前記端末に返信する処理を更に実行するものである、
ことを特徴とする請求項３に記載の秘匿検索処理システム。
【請求項５】
前記端末の記憶部は、暗号化用の鍵を更に保持しており、
前記端末の演算部は、前記第２の乱数を前記準同型関数に適用して得た値を、前記鍵で暗号化し、当該暗号化結果を第１の情報処理装置に送信する処理を更に実行するものであり、
第１の情報処理装置の記憶部は、前記端末が保持する前記鍵と同じ鍵を保持しており、
前記第１の情報処理装置の演算部は、
前記端末より受信した前記暗号化結果を前記鍵で復号化し、当該復号化した値と、前記検索値と前記各登録値との排他的論理和の算出結果を前記準同型関数に適用して得た値との排他的論理和を算出し、当該算出結果を前記一方向関数に適用して得た値をキーにした検索要求を、第２の情報処理装置に送信し、第２の情報処理装置から返される検索結果を前記端末に返信する処理を実行するものであり、
第２の情報処理装置の記憶部は、前記データベースを格納しており、
前記第２の情報処理装置の演算部は、
前記第１の情報処理装置からの前記検索要求を受信し、前記キーによる、前記データベースにおける各登録値と対応付けされた前記一方向関数の出力値の検索を実行し、検索結果を前記第１の情報処理装置に返信する処理を実行するものである、
ことを特徴とする請求項３に記載の秘匿検索処理システム。
【請求項６】
記憶部において、検索対象情報を一方向関数に適用して得られた第１の情報と第１の乱数との排他的論理和の値である登録値と、前記第１の乱数を所定の準同型関数に適用して得られる結果を前記一方向関数に適用した際の出力値とを対応付けて格納したデータベースを記憶する情報処理装置が、
入力インターフェイスで受け付けた検索用のキーワードを前記一方向関数に適用して得た第２の情報と、乱数生成手段により得られる第２の乱数との排他的論理和を算出し、当該算出結果である検索値と、前記データベースにおける各登録値との排他的論理和を算出する処理と、
前記検索値と前記各登録値との排他的論理和の算出結果を前記準同型関数に適用して得た値と、前記第２の乱数を前記準同型関数に適用して得た値との排他的論理和を算出し、当該算出結果を前記一方向関数に適用して得た値をキーに、前記データベースにおける各登録値と対応付けされた前記一方向関数の出力値を検索し、検索結果を出力インターフェイスに出力する処理と、
を実行することを特徴とする秘匿検索処理方法。
【請求項７】
記憶部において、検索対象情報を一方向関数に適用して得られた第１の情報と第１の乱数との排他的論理和の値である登録値と、前記第１の乱数を所定の準同型関数に適用して得られる結果を前記一方向関数に適用した際の出力値とを対応付けて格納したデータベースを記憶する情報処理装置に、
入力インターフェイスで受け付けた検索用のキーワードを前記一方向関数に適用して得た第２の情報と、乱数生成手段により得られる第２の乱数との排他的論理和を算出し、当該算出結果である検索値と、前記データベースにおける各登録値との排他的論理和を算出する処理と、
前記検索値と前記各登録値との排他的論理和の算出結果を前記準同型関数に適用して得た値と、前記第２の乱数を前記準同型関数に適用して得た値との排他的論理和を算出し、当該算出結果を前記一方向関数に適用して得た値をキーに、前記データベースにおける各登録値と対応付けされた前記一方向関数の出力値を検索し、検索結果を出力インターフェイスに出力する処理と、
を実行させることを特徴とする秘匿検索処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、秘匿検索処理システム、秘匿検索処理方法、および秘匿検索処理プログラムに関するものであり、具体的には、秘匿検索技術における利用者の鍵管理の手間や、鍵漏洩時の情報管理リスクを低減する技術に関する。
【背景技術】
【０００２】
電子商取引等の普及により、ネットワークシステム上に個人情報を保持する機会が多くなっている。そのため、ネットワークを通じた情報漏えいなどの新たな情報管理リスクが顕在化している。一方、個人毎の医療や健康に関する様々な情報に加え、今後は遺伝子情報などの、より機微度の高い情報（センシティブ情報）もネットワークシステム上で管理されていくことが想定される。
【０００３】
こうした状況に対応する技術として、例えば、暗号化された情報に対するキーワード検索を行うことができる検索可能暗号技術（特許文献１参照）などが提案されている。また他にも、検索可能暗号技術を用いて、既存遺伝子情報やサンプル遺伝子情報の流出を防ぐとともに、有効な遺伝子情報の検索を行う技術（特許文献２参照）なども提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−１４７０７４号公報
【特許文献２】特開２０１２−７３６９３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら従来技術においては、検索対象データの暗号化等に用いる鍵を個人レベルで管理する必要がある等の煩雑さに加え、そうした鍵が外部に漏洩した場合の情報漏洩リスクを十分に回避出来ないという課題がある。
【０００６】
そこで本発明の目的は、秘匿検索技術における利用者の鍵管理の手間や、鍵漏洩時の情報管理リスクを低減する技術を提供することにある。
【課題を解決するための手段】
【０００７】
上記課題を解決する本発明の秘匿検索処理システムは、検索対象情報を一方向関数に適用して得られた第１の情報と第１の乱数との排他的論理和の値である登録値と、前記第１の乱数を所定の準同型関数に適用して得られる結果を前記一方向関数に適用した際の出力値とを対応付けて格納したデータベースを記憶する記憶部と、入力インターフェイスで受け付けた検索用のキーワードを前記一方向関数に適用して得た第２の情報と、乱数生成手段により得られる第２の乱数との排他的論理和を算出し、当該算出結果である検索値と、前記データベースにおける各登録値との排他的論理和を算出する処理と、前記検索値と前記各登録値との排他的論理和の算出結果を前記準同型関数に適用して得た値と、前記第２の乱数を前記準同型関数に適用して得た値との排他的論理和を算出し、当該算出結果を前記一方向関数に適用して得た値をキーに、前記データベースにおける各登録値と対応付けされた前記一方向関数の出力値を検索し、検索結果を出力インターフェイスに出力する処理とを実行する演算部と、を備える情報処理装置を含むことを特徴とする。
【０００８】
また、本発明の秘匿検索処理方法は、記憶部において、検索対象情報を一方向関数に適用して得られた第１の情報と第１の乱数との排他的論理和の値である登録値と、前記第１の乱数を所定の準同型関数に適用して得られる結果を前記一方向関数に適用した際の出力値とを対応付けて格納したデータベースを記憶する情報処理装置が、入力インターフェイスで受け付けた検索用のキーワードを前記一方向関数に適用して得た第２の情報と、乱数生成手段により得られる第２の乱数との排他的論理和を算出し、当該算出結果である検索値と、前記データベースにおける各登録値との排他的論理和を算出する処理と、前記検索値と前記各登録値との排他的論理和の算出結果を前記準同型関数に適用して得た値と、前記第２の乱数を前記準同型関数に適用して得た値との排他的論理和を算出し、当該算出結果を前記一方向関数に適用して得た値をキーに、前記データベースにおける各登録値と対応付けされた前記一方向関数の出力値を検索し、検索結果を出力インターフェイスに出力する処理と、を実行することを特徴とする。
【０００９】
また、本発明の秘匿検索処理プログラムは、記憶部において、検索対象情報を一方向関数に適用して得られた第１の情報と第１の乱数との排他的論理和の値である登録値と、前記第１の乱数を所定の準同型関数に適用して得られる結果を前記一方向関数に適用した際の出力値とを対応付けて格納したデータベースを記憶する情報処理装置に、入力インターフェイスで受け付けた検索用のキーワードを前記一方向関数に適用して得た第２の情報と、乱数生成手段により得られる第２の乱数との排他的論理和を算出し、当該算出結果である検索値と、前記データベースにおける各登録値との排他的論理和を算出する処理と、前記検索値と前記各登録値との排他的論理和の算出結果を前記準同型関数に適用して得た値と、前記第２の乱数を前記準同型関数に適用して得た値との排他的論理和を算出し、当該算出結果を前記一方向関数に適用して得た値をキーに、前記データベースにおける各登録値と対応付けされた前記一方向関数の出力値を検索し、検索結果を出力インターフェイスに出力する処理と、を実行させることを特徴とする。
【発明の効果】
【００１０】
本発明によれば、秘匿検索技術における利用者の鍵管理の手間や、鍵漏洩時の情報管理リスクを低減できる。
【図面の簡単な説明】
【００１１】
【図１】本実施形態の秘匿検索処理システムを示すネットワーク構成図である。
【図２Ａ】本実施形態の秘匿検索処理システムが含むクライアントの構成図である。
【図２Ｂ】本実施形態の秘匿検索処理システムが含むサーバの構成図である。
【図３Ａ】本実施形態における秘匿検索処理方法の処理例１を示すフロー図である。
【図３Ｂ】本実施形態における秘匿検索処理方法の処理概念例１を示す図である。
【図４Ａ】本実施形態における秘匿検索処理方法の処理例２を示すフロー図である。
【図４Ｂ】本実施形態における秘匿検索処理方法の処理概念例２を示す図である。
【図５】本実施形態における秘匿検索処理方法の処理例３を示すフロー図である。
【図６】本実施形態における秘匿検索処理方法の概念例３を示す図である。
【図７】秘匿検索処理システムの適用形態例１を示す図である。
【図８】秘匿検索処理システムの適用形態例２を示す図である。
【図９】秘匿検索処理システムの適用形態例３を示す図である。
【発明を実施するための形態】
【００１２】
−−−システム構成−−−
以下に本発明の実施形態について図面を用いて詳細に説明する。図１は、本実施形態の秘匿検索処理システム１０を示すネットワーク構成図である。図１に示す秘匿検索処理システム１０（以下、システム１０）は、秘匿検索技術における利用者の鍵管理の手間や、鍵漏洩時の情報管理リスクを低減可能なコンピュータシステムであり、クライアント１００およびサーバ２００から構成されている。こうしたシステム１０は、本出願人が開発している検索可能暗号処理の技術（特開２０１２−１２３６１４号公報）を踏まえつつ、更に、検索対象データの暗号化等に用いる鍵の管理負担軽減や外部漏洩時のリスク回避に関して特に優れた効果を奏すべく構成されている。
【００１３】
続いて、本実施形態のシステム１０を構成するクライアント１００およびサーバ２００がそれぞれ備える機能について説明する。以下に説明する各機能は、クライアント１００およびサーバ２００らが各々備えるプログラムをそれぞれ実行することで実装される機能と言える。なお、本実施形態では、システム１０をクライアント１００とサーバ２００とで構成する例を示しているが、サーバ２００がネットワーク１２０と接続せずにスタンドアロンで機能する形態も想定できる。その場合、クライアント１００における検索対象情報の登録や検索のための各種機能を全てサーバ２００が備えるか、或いは、サーバ２００の備えるインターフェイスを介してユーザからの指示を直接受けて必要な各種処理を実行する構成となる。
【００１４】
システム１０におけるクライアント１００は、データ登録部１１０、データ検索部１１１、送受信部１１２、鍵管理部１１３、および疑似乱数生成器１１４を備える。このうち、データ登録部１１０は、検索対象情報のデータをサーバ２００側に登録する際の、暗号化やＨａｓｈ化の処理を行う機能部である。より具体的には、データ登録部１１０は、検索対象情報を、一方向関数の１種であるハッシュ関数１１３Ａに適用して第１の情報を算出し、疑似乱数生成器１１４（乱数生成手段）により第１の乱数を生成し、第１の情報と第１の乱数との排他的論理和を算出し、当該算出結果である登録値を含む、データベース２２５への格納要求をサーバ２００（情報処理装置）に送信する。また、データ登録部１１０は、上述の第１の乱数を所定の準同型関数に適用して得た結果をハッシュ関数１１３Ａに適用し、ハッシュ関数１１３Ａの出力値を含む、登録値と対応付けたデータベース２２５への格納要求をサーバ２００に送信する。
【００１５】
なお、上述のハッシュ関数は、入力値の桁数が大きな場合であっても、一定サイズの値を出力する性質があるため、こうしたハッシュ関数を一方向関数として採用すれば、処理対象の値の桁数にばらつきがあっても出力値の桁数を揃えることが可能で、以降の処理が効率的に実行できるという利点がある。
【００１６】
また、データ検索部１１１は、サーバ２００に対する、データベース２２５におけるデータ検索のリクエスト文を生成する機能部である。より具体的には、データ検索部１１１は、入力部１０５にて検索用のキーワードを受け付けて、ここで受け付けたキーワードをハッシュ関数１１３Ａに適用して得た第２の情報と、疑似乱数生成器１１４により得られる第２の乱数との排他的論理和を算出し、この算出結果である検索値をサーバ２００に送信する。また、データ検索部１１１は、上述の第２の乱数を準同型関数に適用して得た値を鍵１１３Ｂで暗号化し、この暗号化結果をサーバ２００に送信する。
【００１７】
また、送受信部１１２は、インターネット等のネットワーク１２０を介してサーバ２００と情報の授受を行う機能部である。また、鍵管理部１１３は、検索対象情報のデータ登録時における不可逆な暗号化、及びＨａｓｈ化の処理、また、検索対象情報のデータ検索時のリクエスト文生成に用いる鍵の管理を行う機能部である。
【００１８】
他方、システム１０におけるサーバ２００は、データ登録部２１０、データ検索部２１１、送受信部２１２、および鍵管理部２１３を備える。また、記憶部２０１にはデータベース２２５を格納している。このうちデータ登録部２１０は、クライアント１００から送られてきた暗号文およびＨａｓｈ値を登録する機能部である。より具体的には、データ登録部２１０は、クライアント１００から上述の登録値および出力値を受信して、記憶部１０１のデータベース２２５に格納する処理を実行する。
【００１９】
また、データ検索部２１１は、クライアント１００から送受信部２１２を介して送られてきたリクエスト文を基にデータベース２２５内の情報の検索処理を行う機能部である。より具体的には、データ検索部２１１は、クライアント１００より上述の検索値を受信し、当該検索値と、データベース２２５における各登録値との排他的論理和を算出する。また、クライアント１００より、上述の第２の乱数を準同型関数に適用して得た値の暗号化結果を受信し、受信した暗号化結果を鍵１１３Ｂで復号化し、当該復号化した値と、上述の検索値と各登録値との排他的論理和の算出結果を準同型関数に適用して得た値との排他的論理和を算出し、当該算出結果をハッシュ関数１１３Ａに適用して得た値をキーに、データベース２２５における各登録値と対応付けされた上述のハッシュ関数１１３Ａの出力値を検索し、検索結果をクライアント１００に返信する。
【００２０】
また、送受信部２１２は、インターネット等のネットワーク１２０を介してクライアント１００との間で情報の授受を行う機能部である。また、鍵管理部２１３は、リクエスト文を復号化する際に使用する鍵の管理を行う機能部である。
【００２１】
また、データベース２２５は、クライアント１００のデータ登録部１１０から送受信部１１２、２１２を介し送られてきた、暗号化／Ｈａｓｈ化された情報を格納するデータベースである。より具体的には、クライアント１００において、検索対象情報をハッシュ関数１１３Ａに適用して得られた第１の情報と第１の乱数との排他的論理和の値である登録値と、第１の乱数を所定の準同型関数に適用して得られる結果をハッシュ関数１１３Ａに適用した際の出力値とを、サーバ２００がクライアント１００から受信し、登録値と出力値とを対応付けて格納したデータベースとなる。
【００２２】
なお、秘匿検索処理システム１０を構成する各装置のハードウェア構成は以下の如くとなる。クライアント１００は、図２Ａに示すように、ハードディスクドライブなど適宜な不揮発性記憶装置で構成される記憶部１０１、ＲＡＭなど揮発性記憶装置で構成されるメモリ１０３、記憶部１０１に保持されるプログラム１０２をメモリ１０３に読み出すなどして実行し装置自体の統括制御を行なうとともに各種判定、演算及び制御処理を行なうＣＰＵなどの演算部１０４、ユーザからのキー入力や音声入力を受け付ける入力部１０５、処理データの表示を行うディスプレイ等の出力部１０６、ネットワーク１２０と接続しサーバ２００との通信処理を担う通信部１０７、を備える。なお、記憶部１０１内には、本実施形態の秘匿検索処理システム１０の一部として必要な機能を実装する為のプログラム１０２の他に、ハッシュ関数１１３Ａ、鍵１１３Ｂ、および疑似乱数生成器１１４が少なくとも記憶されている。
【００２３】
また、サーバ２００もクライアント１００とほぼ同様の構成を備えており、図２Ｂに示すように、記憶部２０１、メモリ２０３、演算部２０４、入力部２０５、出力部２０６、通信部２０７を備える。なお、記憶部２０１内には、本実施形態の秘匿検索処理システム１０の一部として必要な機能を実装する為のプログラム２０２の他に、ハッシュ関数１１３Ａ、鍵１１３Ｂ、およびデータベース２２５が少なくとも記憶されている。ハッシュ関数１１３Ａおよび鍵１１３Ｂは、クライアント１００が備えるものと共通のものである。
【００２４】
−−−処理手順例１−−−
以下、本実施形態における秘匿検索処理方法の実際手順について図に基づき説明する。以下で説明する秘匿検索処理方法に対応する各種動作は、システム１０を構成するクライアント１００およびサーバ２００らがそれぞれメモリ等に読み出して実行するプログラムによって実現される。そして、このプログラムは、以下に説明される各種の動作を行うためのコードから構成されている。
【００２５】
図３Ａは本実施形態における秘匿検索処理方法の処理例１を示すフロー図であり、図３Ｂは本実施形態における秘匿検索処理方法の処理概念例１を示す図である。ここでは、システム１０における、検索対象情報のデータ登録フローの一形態を示す。
【００２６】
この場合、まず、クライアント１００のデータ登録部１１０は、ユーザが登録したい情報であるメッセージ「ｍｉ」を入力部１０５で受け付ける（Ｓ２０１）。また、データ登録部１１０は、入力部１０５で受け付けたメッセージ「ｍｉ」を、鍵管理部１１３にて管理されているハッシュ関数１１３Ａに適用してＨａｓｈ化し、情報「Ｃｉ」（第１の情報）を生成する（Ｓ２０２）。こうしたハッシュ関数１１３Ａ（Ｈａｓｈテーブルの概念も含む）などの、暗号化後のデータから元の平文データを復号することが不可能とされるアルゴリズムを利用することにより、鍵の漏洩懸念やそれに対応するためのセキュリティレベル確保の手間などを解消できる。
【００２７】
続いてデータ登録部１１０は、疑似乱数生成器１１４により、乱数「ｒｉ」（第１の乱数）を生成する（Ｓ２０３）。また、データ登録部１１０は、上述の情報「Ｃｉ」と乱数「ｒｉ」の排他的論理和を算出し（Ｓ２０４）、この算出結果である登録値を含む格納要求をサーバ２００に送信し、サーバ２００のデータベース２２５に登録する（Ｓ２０５）。このデータベース２２５への登録値の登録処理において、クライアント１００の送受信部１１２から送信された上述の登録値をサーバ２００の送受信部２１２が受信し、サーバ２００のデータ登録部２１０が、クライアント１００から得た上述の登録値をデータベース２２５へデータ格納することとなる。なお、疑似乱数生成器１１４の存在により、同じメッセージｍｉを投入した場合においても、データベース２２５に登録される情報が一致することはない。
【００２８】
次に、データ登録部１１０は、乱数「ｒｉ」を準同型関数「Ｆ」に適用し（Ｓ２０６）、これにより得た結果をハッシュ関数１１３Ａに適用してＨａｓｈ化する（Ｓ２０７）。また、データ登録部１１０は、ステップＳ２０７でＨａｓｈ化した値（出力値）を、上述の登録値（ステップＳ２０５で登録されたもの）と対応付ける形でのデータベース２２５への格納要求をサーバ２００に送信し、サーバ２００のデータベース２２５に登録する（Ｓ２０８）。このデータベース２２５への上述の出力値の登録処理において、クライアント１００の送受信部１１２から送信された上述の出力値をサーバ２００の送受信部２１２が受信し、サーバ２００のデータ登録部２１０が、クライアント１００から得た上述の出力値を上述の登録値と対応付けてデータベース２２５へデータ格納することとなる。
【００２９】
以上の各処理を経て、サーバ２００のデータベース２２５には、上述のステップＳ２０４で算出した情報「Ｃｉ」と乱数「ｒｉ」との排他的論理和と、ステップＳ２０７で算出した乱数「ｒｉ」を準同型関数で処理した値のＨａｓｈ値とが対応付けて登録されることとなる。
【００３０】
−−−処理手順例２−−−
次に、システム１０におけるデータ検索フローの一形態を示す。図４Ａは本実施形態における秘匿検索処理方法の処理例２を示すフロー図であり、図４Ｂは本実施形態における秘匿検索処理方法の処理概念例２を示す図である。この場合、クライアント１００のデータ検索部１１１は、ユーザが検索したいキーワード「ｍｉ’」を入力部１０５で受け付け（Ｓ３０１）、このキーワード「ｍｉ’」にハッシュ関数１１３Ａを適用してＨａｓｈ化し、情報「Ｃｉ’」（第２の情報）を生成する（Ｓ３０２）。
【００３１】
続いてデータ検索部１１１は、疑似乱数生成器１１４により、乱数「ｒｉ’」（第２の乱数）を生成する（Ｓ３０３）。この乱数「ｒｉ’」は、上述したステップＳ２０３で生成した乱数「ｒｉ」とは異なるものとである。
【００３２】
また、データ検索部１１１は、上述の情報「Ｃｉ’」と乱数「ｒｉ’」の排他的論理和を算出し（Ｓ３０４）、この算出結果である検索値を、送受信部１１２を介してサーバ２００のデータ検索部２１１に送信する（Ｓ３０５）。
【００３３】
次に、データ検索部１１１は、上述の乱数「ｒｉ’」を準同型関数「Ｆ」に適用し、Ｆ（ｒｉ’）を計算する（Ｓ３０６）。また、データ検索部１１１は、ステップＳ３０６の処理結果であるＦ（ｒｉ’）を、暗号化用の鍵であるＳｋ’１１３Ｂを用いて暗号化し（Ｓ３０７）、この暗号化結果を送受信部１１２を介してサーバ２００のデータ検索部２１１に送信する（Ｓ３０８）。
【００３４】
上述した、サーバ２００への検索値や暗号化結果の送信において、クライアント１００の送受信部１１２から送信された各データをサーバ２００の送受信部２１２が受信し、サーバ２００のデータ検索部２１１が処理することになる。
【００３５】
なお、上述のステップＳ３０７における、暗号化用の鍵たるＳｋ’１１３Ｂによる暗号化は、送信経路すなわちクライアント１００およびサーバ２００の間を結ぶネットワーク１２０の通信セキュリティを確保する目的で実行するものである。従って、クライアント１００のデータ検索部１１１からサーバ２００のデータ検索部２１１へ、Ｆ（ｒｉ’）がセキュアに送信される環境が確保されている場合、こうした暗号化処理を省略することも考えられる。或いは逆に、鍵ｓｋ’１１３Ｂとして秘密鍵を採用すれば、真正なクライアント１００しか保持し得ない秘密鍵を用いてサーバ２００との通信時における暗号化が実行される点を踏まえ、この秘密鍵の検証をもってクライアント１００のユーザ認証に代えることも可能であり、よりセキュリティ性がアップする。
【００３６】
以上の処理により、サーバ２００のデータ検索部２１１には、ステップＳ３０４において、クライアント１００で計算された排他的論理和の値（検索値）と、ステップＳ３０６において準同型関数を用いて計算された情報、Ｆ（ｒｉ’）を持つこととなる。
【００３７】
−−−処理手順例３−−−
次に、上述のステップＳ３０８以降の時点での、サーバ２００のデータ検索部２１１における、データ検索時の処理フローの一形態を示す。図５は本実施形態における秘匿検索処理方法の処理例３を示すフロー図であり、図６は本実施形態における秘匿検索処理方法の概念例３を示す図である。
【００３８】
この時点において、サーバ２００のデータベース２２５には、クライアント１００から受信し登録してある、メッセージ「ｍｉ」を暗号化した情報「Ｃｉ」と、例えばこの情報「Ｃｉ」を基に疑似乱数生成器１１４を通して生成された乱数「ｒｉ」との排他的論理和の値（登録値）が登録されている。また、このデータベース２２５において、乱数「ｒｉ」を準同型関数「Ｆ」に適用して得た結果Ｆ（ｒｉ）をＨａｓｈ化した値（出力値）が、上述の登録値と対応付けて格納されている。
【００３９】
ここで、サーバ２００のデータ検索部２１１は、クライアント１００より上述のステップＳ３０５で送信されてきた、情報「Ｃｉ’」と乱数「ｒｉ’」の排他的論理和、すなわち検索値２１（図６参照）を受信し（Ｓ４０１）、この検索値２１と、データベース２２５における各登録値２０（上述のステップＳ２０５の実行により蓄積されたもので、情報「Ｃｉ」と乱数「ｒｉ」の排他的論理和。図６参照）との排他的論理和２２を算出する（Ｓ４０２）。
【００４０】
より具体的な例を上げるとすれば、キーワード「ｍｉ’」が「ａｂｃ」である時、これをコード化した「１０１０１０・・・・０１」なる所定桁の値を、鍵であるｓｋ’１１３Ｂで暗号化した情報「Ｃｉ’」が、「１１１００・・・・１１」であったとする。また、乱数「ｒｉ’」が、情報「Ｃｉ’」と同桁の「００１１０・・・０１」であったとする。この時、情報「Ｃｉ’」と乱数「ｒｉ’」の排他的論理和、すなわち検索値２１は、「１１０１０・・・・１０」である。また、データベース２２５における登録値２０すなわち、情報「Ｃｉ」と乱数「ｒｉ」の排他的論理和が、上述の検索値２１と同桁の「１０１１０・・・・００」であったとする。この場合、検索値２１と登録値２０との排他的論理和２２は、「０１１００・・・・１０」となる。
【００４１】
なお、データベース２２５に登録されているメッセージ「ｍｉ」と、ユーザが検索したいキーワード「ｍｉ’」とが一致する場合、情報「Ｃｉ」と情報「Ｃｉ’」とは等しいという前提条件を踏まえると、排他的論理和の性質上、上述の登録値２０（登録時の排他的論理和）と検索値２１（検索時の排他的論理和）との排他的論理和は、登録時の乱数「ｒｉ」と検索時の乱数「ｒｉ’」の排他的論理和２２と等しいことになる。
【００４２】
また、データ検索部２１１は、上述のステップＳ４０２で算出した、検索値と各登録値との排他的論理和の算出結果２２を、準同型関数Ｆに適用し、その処理結果２３を得る（Ｓ４０３）。ここで、準同型関数Ｆの性質上、乱数「ｒｉ」と乱数「ｒｉ’」との排他的論理和を準同型関数Ｆで計算した値２３と、乱数「ｒｉ」を準同型関数Ｆで計算した値と乱数「ｒｉ’」を準同型関数Ｆで計算した値の排他的論理和の値２４とは等しくなる。
【００４３】
続いてデータ検索部２１１は、上述のステップＳ３０８でクライアント１００より送信された、乱数「ｒｉ’」を準同型関数Ｆに適用して得た値の暗号化結果２５を受信し（Ｓ４０４）、ここで受信した暗号化結果２５を暗号化用の鍵であるｓｋ’１１３Ｂで復号化し、復号結果２６としてＦ（ｒｉ’）を得る（Ｓ４０５）。
【００４４】
また、データ検索部２１１は、上述のステップＳ４０５で復号化した値２６と、上述のステップＳ４０３で得た処理結果２３との排他的論理和２７を算出する（Ｓ４０６）。準同型関数の性質上、乱数「ｒｉ」と乱数「ｒｉ’」の排他的論理和を準同型関数Ｆで計算した値２３と、乱数「ｒｉ’」を準同型関数Ｆで計算した値２６との排他的論理和を行えば、Ｆ（ｒｉ’）の項が消去され、排他的論理和２７としてＦ（ｒｉ）を導出できる。
【００４５】
またデータ検索部２１１は、この算出結果２７をハッシュ関数１１３Ａに適用してハッシュ値２８を得て（Ｓ４０７）、これをキーに、データベース２２５における各登録値と対応付けされた上述のハッシュ関数１１３Ａの出力値２９（ステップＳ２０８で蓄積されたもの）を検索し、互いに一致するか判定する（Ｓ４０８）。
【００４６】
この判定の結果、ステップＳ４０７で得たハッシュ値２８と、データベース２２５に登録されている出力値２９（ステップＳ２０８で登録されたもの）とで一致をみた場合（Ｓ４０８：Ｙｅｓ）、データ検索部２１１は、ユーザ指定の検索キーワードである「ｍｉ’」と一致する登録データ「ｍｉ」がデータベース２２５に存在する旨を示す検索結果をクライアント１００に返信し（Ｓ４０９）、処理を終了する。
【００４７】
他方、上述の判定の結果、ステップＳ４０７で得たハッシュ値２８と、データベース２２５に登録されている出力値２９（ステップＳ２０８で登録されたもの）とで一致をみなかった場合（Ｓ４０８：Ｎｏ）、データ検索部２１１は、ユーザ指定の検索キーワードである「ｍｉ’」と一致する登録データ「ｍｉ」がデータベース２２５に存在しない旨を示す検索結果をクライアント１００に返信し（Ｓ４１０）、処理を終了する。
【００４８】
続いて、本実施形態の秘匿検索処理システムの適用形態例について説明する。図７は秘匿検索処理システムの適用形態例１を示す図である。図７に示す例において、サーバ２００のデータベースとして、利用者のＤＮＡ情報が格納されたＤＮＡ情報データベース５０３を想定する。ここで、上述したように鍵Ｓｋ’１１３Ｂが復号不可能な性質を有する場合、サーバ２００からＤＮＡ情報が漏えいするリスクは大幅に低減できる。すなわち、ＤＮＡ情報データベース５０３における各情報に対する総当たり攻撃等を行って逐次全文検索を行わなければ、ＤＮＡ情報を取得することはできないことになり、鍵ｓｋ’１１３Ｂを用いたＤＮＡ情報の復号化が非常に困難となる。したがって、鍵ｓｋ’１１３Ｂが漏洩した場合や、事業者等に鍵ｓｋ’１１３Ｂを預ける場合等における鍵管理のリスクは大幅に低減される。
【００４９】
クライアント１００のアプリ５０２は、例えば、ＤＮＡの配列に応じた体質リスク情報を提供する機能を備えるものである。利用者５０１はアプリ５０２で提供される配列（検索したいキーワード「ｍｉ’」）が、ＤＮＡ情報データベース５０３に登録された利用者自身のＤＮＡ情報（登録された情報「ｍｉ」）の中に含まれるかどうか検索できる。アプリ５０２は、その検索結果が、「ｍｉ’」と「ｍｉ」とが一致するものであるか否かに応じて、利用者５０１の体質リスクを判定し、その判定結果を出力部１０６に表示するなどして利用者５０１に通知する。この際、クライアント１００は、利用者５０１のＤＮＡ情報ではなく、単にＤＮＡ情報データベース５０３における情報「ｍｉ’」の有無に基づく判定結果のみを取り扱い、また、サーバ２００は、クライアント１００からの要求に応じて、ＤＮＡ情報データベース５０３における情報「ｍｉ’」の有無を検知するのみであり、クライアント１００およびサーバ２００のいずれも、該当利用者５０１のＤＮＡ情報を一切感知せず、サービスを提供することが可能である。
【００５０】
なお、図８に示す例のように、ＤＮＡ情報の検索はアプリ５０２を通さない形で処理する形態とすれば、よりＤＮＡ情報の秘匿性が高まる。この場合、利用者５０１は、クライアント１００のアプリ５０２以外のアプリケーションを介してサーバ２００にアクセスし、所定のユーザ認証を経た上でクライアント１００によるサーバ２００でのＤＮＡ情報の検索を実行するものとする。
【００５１】
上述のサービスの運営に当たっては、利用者ごとのハッシュ関数１１３Ａを、データベース５０３の管理事業者以外の、他管理事業者のサーバが管理し、この他管理事業者のサーバが利用者毎に該当クライアント１００に提供するとしてもかまわない。この場合、ハッシュ関数１１３Ａの利用に際しパスワード認証などの適宜な認証手段を併用することにより、事業者内の悪意ある第三者からの攻撃（ハッシュ関数１１３Ａの盗用など）を防ぐことが好ましい。
【００５２】
図９は秘匿検索処理システムの適用形態例３を示す図である。この例の場合、サーバ２００（第２の情報処理装置）は、上述のデータベースを事業者間で共通利用する、共通利用者情報データベース６０３として保持している。個人情報管理のリスクをなくすためには、個人を特定できる情報と、それ以外の情報（それだけでは個人を特定できない情報）とが分離されていることが望ましいが、そうした構成とすれば、従来であれば、共通利用者情報データベース６０３において、個人を特定できる情報を利用した検索や認証は困難となっていた。
【００５３】
一方、本実施形態の図９に示すシステム構成の例では、他のサーバ３００（第１の情報処理装置）が、その記憶部において、クライアント１００が保持する鍵ｓｋ’１１３Ｂと同じ鍵（個人特定情報３０１）を保持しており、このサーバ３００は、クライアント１００のアプリ６０２より受信した暗号化結果（上述のステップＳ４０４で受信したもの）を鍵ｓｋ’１１３Ｂで復号化し、当該復号化した値と、上述のステップＳ４０３で得た値との排他的論理和を算出し、当該算出結果をハッシュ関数１１３Ａに適用して得た値をキーにした検索要求を、サーバ２００に送信するものとなる。なお、アプリ６０２は、上述したアプリ５０２と同様のアプリケーションであり、ＤＮＡの配列に応じた体質リスク情報を提供する機能を備えるものである。
【００５４】
他方、サーバ２００は、サーバ３００からの検索要求を受信し、上述のキーによる、共通利用者情報データベース６０３における登録値と対応付けされたハッシュ関数１１３Ａの出力値の検索を実行し、その検索結果をサーバ２００に返信する処理を実行することとなる。この場合、サーバ３００は、サーバ２００から返されてきた検索結果を、クライアント１００に返信する。クライアント１００のアプリ６０２は、上述の検索結果を受信し、これを出力部１０６に表示し、事業者６０１等の利用者に提示する。
【００５５】
こうした構成を採用すれば、個人情報のデータベースすなわち共通利用情報データベース６０３を保持するサーバ２００（第２の情報処理装置）の管理者と、クライアント１００からの検索要求に応じた検索処理を主導するサーバ３００（第１の情報処理装置）の管理者とが異なり、検索処理に必要となるハッシュ関数や鍵等の管理をサーバ３００のみにて行うこととなる。そのため、個人情報の検索、照合はサーバ３００のみ実行可能で、共通利用情報データベース６０３を保持するサーバ２００は、（該当個人を特定した形で）個人情報であるＤＮＡ情報等にアクセスすることは出来ない。従って、データベースや鍵、ハッシュ関数等の管理の手間がそれぞれ軽減され、個人情報の管理を良好なセキュリティ性の下で行いやすくなる。
【００５６】
なお、上述してきた各実施形態において、一方向関数としてハッシュ関数１１３Ａを採用した例を示した。ハッシュ関数１１３Ａを実施した各実施形態では、情報Ｃiはメッセージｍiのサイズによらず一定値であるため、メッセージｍiを復号不能な情報Ｃiに変換する以外に、データを圧縮する、という効果がある。また、各実施形態では、一方向関数として、ハッシュ関数１１３Ａ以外にも、その他の不可逆な暗号化方式を採用してもよい。すなわち、暗号化後のデータから暗号化前のデータを復号出来ない手段であればいずれの方式でもあっても採用できる。例えば、各種暗号化方式における鍵セットのうちの一方などを一方向関数として利用できる。また、鍵ｓｋ’１１３Ｂとしては、クライアント１００およびサーバ２００とで共通の鍵を用いる、すなわち共通鍵方式での鍵を用いた例を示しているが、ディジタル署名方式など暗号化に利用できる様々な手法を採用できる。また、既に述べているが、クライアント１００およびサーバ２００の間のネットワーク１２０が良好なセキュリティ性を備えている場合、鍵を利用しない、すなわち、Ｆ（ｒｉ’）の暗号化を行わない方式を採用することも想定できる。
【００５７】
以上、本発明を実施するための最良の形態などについて具体的に説明したが、本発明はこれに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。
【００５８】
こうした本実施形態によれば、検索対象情報をデータベースに登録する際、あるいは、登録する際と検索する際の、検索対象情報のための暗号化鍵として、復号不可能な鍵（例：一方向関数たるハッシュ関数）を用いることで、データベース内の情報を復号化出来ないようにする一方、検索可能な状態とする。これにより、暗号化した状態での検索を可能とすると共に、個人情報をセキュアに管理することが可能となる。
【００５９】
例えば、情報漏洩のリスクを低減するポリシー上、検索対象情報に関して個人を特定できる情報をデータセンター内に保持しておけない場合、従来であれば、このデータセンターにおいて、個人を特定する情報に基づいた情報照合を行うことは困難であり、照合結果としてデータの真正性は損なわれてしまう。他方、本実施形態の技術によれば、復号化不可能かつ検索可能な情報を管理し、検索、照合等の要求に応えることが可能であり、情報漏洩のリスクを回避しつつ、得られる情報の真正性を担保することができる。また、遺伝情報のような機微な情報を取り扱う場合、本実施形態のように復号不可能とすることで、情報漏洩のリスクをさらに低減させることが可能となる。
【００６０】
従って本実施形態によれば、秘匿検索技術における利用者の鍵管理の手間や、鍵漏洩時の情報管理リスクを低減可能となる。
【００６１】
本明細書の記載により、少なくとも次のことが明らかにされる。すなわち、秘匿検索処理システムにおいて、一方向関数および乱数生成手段を格納した記憶部と、検索対象情報を一方向関数に適用して第１の情報を算出し、乱数生成手段により第１の乱数を生成し、第１の情報と第１の乱数との排他的論理和を算出し、当該算出結果である登録値を含む、データベースへの格納要求を情報処理装置に送信する処理と、第１の乱数を所定の準同型関数に適用して得た結果を一方向関数に適用し、一方向関数の出力値を含む、登録値と対応付けたデータベースへの格納要求を情報処理装置に送信する処理とを実行する演算部と、を備える端末を更に含むものとしてもよい。この場合、情報処理装置の演算部は、端末から上述の登録値および出力値を受信して、記憶部のデータベースに格納する処理を更に実行するものとなる。
【００６２】
これによれば、ＤＮＡ情報などの個人情報を、ネットワーク上のサーバ（情報処理装置）にて管理する場合、ネットワークを介してクライアント（端末）から検索対象情報の登録処理を行うことが可能となり、情報管理の利便性がアップする。
【００６３】
また、秘匿検索処理システムにおいて、端末の演算部は、入力インターフェイスにて検索用のキーワードを受け付けて、当該受け付けたキーワードを一方向関数に適用して得た第２の情報と、乱数生成手段により得られる第２の乱数との排他的論理和を算出し、当該算出結果である検索値を情報処理装置に送信する処理と、第２の乱数を準同型関数に適用して得た値を、情報処理装置に送信する処理とを更に実行するものであるとしてもよい。この場合、情報処理装置の演算部は、端末より上述の検索値を受信し、当該検索値と、データベースにおける各登録値との排他的論理和を算出する処理と、端末より、上述の第２の乱数を準同型関数に適用して得た値を受信し、当該受信した値と、検索値と各登録値との排他的論理和の算出結果を準同型関数に適用して得た値との排他的論理和を算出し、当該算出結果を一方向関数に適用して得た値をキーに、データベースにおける各登録値と対応付けされた一方向関数の出力値を検索し、検索結果を端末に返信する処理とを実行するものとなる。
【００６４】
これによれば、ＤＮＡ情報などの個人情報を、ネットワーク上のサーバ（情報処理装置）にて管理する場合、ネットワークを介してクライアント（端末）から検索要求を行うことが可能となり、情報検索の利便性がアップする。
【００６５】
また、秘匿検索処理システムにおいて、端末の記憶部は、暗号化用の鍵を更に保持しており、端末の演算部は、第２の乱数を準同型関数に適用して得た値を、鍵で暗号化し、当該暗号化結果を情報処理装置に送信する処理を更に実行するものであるとしてもよい。この場合、情報処理装置の記憶部は、端末が保持する鍵と同じ鍵を保持しており、情報処理装置の演算部は、端末より受信した暗号化結果を鍵で復号化し、当該復号化した値と、検索値と各登録値との排他的論理和の算出結果を準同型関数に適用して得た値との排他的論理和を算出し、当該算出結果を一方向関数に適用して得た値をキーに、データベースにおける各登録値と対応付けされた一方向関数の出力値を検索し、検索結果を端末に返信する処理を更に実行するものとなる。
【００６６】
これによれば、ネットワーク上のサーバとクライアントとの間で、ＤＮＡ情報などの個人情報に関する処理データを授受する際、良好なセキュリティ性を確保することができる。
【００６７】
また、秘匿検索処理システムにおいて、端末の記憶部は、暗号化用の鍵を更に保持しており、端末の演算部は、第２の乱数を準同型関数に適用して得た値を、鍵で暗号化し、当該暗号化結果を第１の情報処理装置に送信する処理を更に実行するものであるとしてもよい。この場合、第１の情報処理装置の記憶部は、端末が保持する鍵と同じ鍵を保持しており、第１の情報処理装置の演算部は、端末より受信した暗号化結果を鍵で復号化し、当該復号化した値と、検索値と各登録値との排他的論理和の算出結果を準同型関数に適用して得た値との排他的論理和を算出し、当該算出結果を一方向関数に適用して得た値をキーにした検索要求を、第２の情報処理装置に送信し、第２の情報処理装置から返される検索結果を端末に返信する処理を実行するものとなる。また、第２の情報処理装置の記憶部は、上述のデータベースを格納しており、第２の情報処理装置の演算部は、第１の情報処理装置からの検索要求を受信し、上述のキーによる、データベースにおける各登録値と対応付けされた一方向関数の出力値の検索を実行し、検索結果を第１の情報処理装置に返信する処理を実行するものとなる。
【００６８】
これによれば、個人情報のデータベースを保持する第２の情報処理装置の管理者と、クライアントからの検索要求に応じた検索処理を主導する第１の情報処理装置の管理者とが異なり、検索処理に必要となるハッシュ関数等の一方向関数の管理を第１の情報処理装置のみにて行うこととなる。そのため、個人情報の検索、照合は第１の情報処理装置のみ実行可能で、データベースを保持する第２の情報処理装置は、（該当個人を特定した形で）個人情報にアクセスすることは出来ない。従って、データベースやハッシュ関数等の管理の手間がそれぞれ軽減され、個人情報の管理を良好なセキュリティ性の下で行いやすくなる。
【符号の説明】
【００６９】
１０    秘匿検索処理システム
１００  クライアント（端末）
１０１、２０１  記憶部
１０２、２０２  プログラム
１０３、２０３  メモリ
１０４、２０４  ＣＰＵ（演算部）
１０５、２０５  入力部（入力インターフェイス）
１０６、２０６  出力部（出力インターフェイス）
１０７、２０７  通信部
１１０  データ登録部
１１１  データ検索部
１１２  送受信部
１１３  鍵管理部
１１３Ａ  ハッシュ関数
１１３Ｂ  鍵
１１４  疑似乱数生成器
１２０  ネットワーク
２００  サーバ（情報処理装置）
２１０  データ登録部
２１１  データ検索部
２１２  送受信部
２１３  鍵管理部
２１３Ｂ  鍵
２２５  データベース
【図１】
2014119486.tif 000003
【図２Ａ】
2014119486.tif 000004
【図２Ｂ】
2014119486.tif 000005
【図３Ａ】
2014119486.tif 000006
【図３Ｂ】
2014119486.tif 000007
【図４Ａ】
2014119486.tif 000008
【図４Ｂ】
2014119486.tif 000009
【図５】
2014119486.tif 000010
【図６】
2014119486.tif 000011
【図７】
2014119486.tif 000012
【図８】
2014119486.tif 000013
【図９】
2014119486.tif 000014